diff --git a/2D_Stage/configs/infer.yaml b/2D_Stage/configs/infer.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a135027fa140e69852b3b1d42cc9db4f61f00f52
--- /dev/null
+++ b/2D_Stage/configs/infer.yaml
@@ -0,0 +1,24 @@
+pretrained_model_path: "stabilityai/stable-diffusion-2-1"
+image_encoder_path: "./models/image_encoder"
+ckpt_dir: "./models/checkpoint"
+
+validation:
+ guidance_scale: 5.0
+ use_inv_latent: False
+ video_length: 4
+
+use_pose_guider: True
+use_noise: False
+use_shifted_noise: False
+unet_condition_type: image
+
+unet_from_pretrained_kwargs:
+ camera_embedding_type: 'e_de_da_sincos'
+ projection_class_embeddings_input_dim: 10 # modify
+ joint_attention: false # modify
+ num_views: 4
+ sample_size: 96
+ zero_init_conv_in: false
+ zero_init_camera_projection: false
+ in_channels: 4
+ use_safetensors: true
\ No newline at end of file
diff --git a/2D_Stage/input.png b/2D_Stage/input.png
new file mode 100644
index 0000000000000000000000000000000000000000..329ef432ee1dc95f57950f327bd3fbfb430dc714
Binary files /dev/null and b/2D_Stage/input.png differ
diff --git a/2D_Stage/material/examples/1.png b/2D_Stage/material/examples/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..efc27a5863923e12aff7cc978edab5f8d6cfc6d5
Binary files /dev/null and b/2D_Stage/material/examples/1.png differ
diff --git a/2D_Stage/material/examples/2.png b/2D_Stage/material/examples/2.png
new file mode 100644
index 0000000000000000000000000000000000000000..c42d98c4fcbe5fe6e636c35d3b64f2cafb345446
Binary files /dev/null and b/2D_Stage/material/examples/2.png differ
diff --git a/2D_Stage/material/examples/3.png b/2D_Stage/material/examples/3.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3d2156b5cc8edf9432ec11212c6c26c57e3affa
Binary files /dev/null and b/2D_Stage/material/examples/3.png differ
diff --git a/2D_Stage/material/examples/4.png b/2D_Stage/material/examples/4.png
new file mode 100644
index 0000000000000000000000000000000000000000..47f6ac2c9e3bc2e2f36014060e15d78e123dcc67
Binary files /dev/null and b/2D_Stage/material/examples/4.png differ
diff --git a/2D_Stage/material/examples/5.png b/2D_Stage/material/examples/5.png
new file mode 100644
index 0000000000000000000000000000000000000000..5164db8ebe81c50927a97d3d0e4d3a7b080be9ca
Binary files /dev/null and b/2D_Stage/material/examples/5.png differ
diff --git a/2D_Stage/material/examples/6.png b/2D_Stage/material/examples/6.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba5dc79b7d3283af18f57e3686836762e2aa03da
Binary files /dev/null and b/2D_Stage/material/examples/6.png differ
diff --git a/2D_Stage/material/examples/7.png b/2D_Stage/material/examples/7.png
new file mode 100644
index 0000000000000000000000000000000000000000..6bd50b599e9a989ade614e808f40bb75aba53157
Binary files /dev/null and b/2D_Stage/material/examples/7.png differ
diff --git a/2D_Stage/material/examples/8.png b/2D_Stage/material/examples/8.png
new file mode 100644
index 0000000000000000000000000000000000000000..b942557f07631bb6b9d99cd6e94b2cab6720caa4
Binary files /dev/null and b/2D_Stage/material/examples/8.png differ
diff --git a/2D_Stage/material/pose.json b/2D_Stage/material/pose.json
new file mode 100644
index 0000000000000000000000000000000000000000..40ed1ce28aa4cd809afd2d1f637887ed88b6c5fd
--- /dev/null
+++ b/2D_Stage/material/pose.json
@@ -0,0 +1,38 @@
+[
+ [
+ [
+ 0, 0, -1, 0,
+ 0, 1, 0, 0,
+ 1, 0, 0, 0,
+ 1.5, 0, 0, 1
+ ],
+ "pose0.png"
+ ],
+ [
+ [
+ 0, 0, 1, 0,
+ 0, 1, 0, 0,
+ -1, 0, 0, 0,
+ -1.5, 0, 0, 1
+ ],
+ "pose1.png"
+ ],
+ [
+ [
+ 0, 0, 1, 0,
+ 0, 1, 0, 0,
+ -1, 0, 0, 0,
+ -1.5, 0, 0, 1
+ ],
+ "pose2.png"
+ ],
+ [
+ [
+ -1, 0, 0, 0,
+ 0, 1, 0, 0,
+ 0, 0, -1, 0,
+ 0, 0, -1.5, 1
+ ],
+ "pose3.png"
+ ]
+]
\ No newline at end of file
diff --git a/2D_Stage/material/pose0.png b/2D_Stage/material/pose0.png
new file mode 100644
index 0000000000000000000000000000000000000000..7e044b3aaf9fce856e4a8fa50dc86fdc90fa41ac
Binary files /dev/null and b/2D_Stage/material/pose0.png differ
diff --git a/2D_Stage/material/pose1.png b/2D_Stage/material/pose1.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd4093ce11b6f950853bb77ed95d6605db476784
Binary files /dev/null and b/2D_Stage/material/pose1.png differ
diff --git a/2D_Stage/material/pose2.png b/2D_Stage/material/pose2.png
new file mode 100644
index 0000000000000000000000000000000000000000..537d77bf217ac5ba9522062d3348e4cb0161883e
Binary files /dev/null and b/2D_Stage/material/pose2.png differ
diff --git a/2D_Stage/material/pose3.png b/2D_Stage/material/pose3.png
new file mode 100644
index 0000000000000000000000000000000000000000..c562d5f9f5db7d26818a3fc4512e2d168157cded
Binary files /dev/null and b/2D_Stage/material/pose3.png differ
diff --git a/2D_Stage/tuneavideo/__pycache__/util.cpython-310.pyc b/2D_Stage/tuneavideo/__pycache__/util.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5953ac0fa4fe24c914fadd38bfdcde2d4389870e
Binary files /dev/null and b/2D_Stage/tuneavideo/__pycache__/util.cpython-310.pyc differ
diff --git a/2D_Stage/tuneavideo/models/PoseGuider.py b/2D_Stage/tuneavideo/models/PoseGuider.py
new file mode 100644
index 0000000000000000000000000000000000000000..7d0e1e2b3843fa89272788c8ef9ac45ae7ac3fc9
--- /dev/null
+++ b/2D_Stage/tuneavideo/models/PoseGuider.py
@@ -0,0 +1,59 @@
+import os
+import torch
+import torch.nn as nn
+import torch.nn.init as init
+from einops import rearrange
+
+class PoseGuider(nn.Module):
+ def __init__(self, noise_latent_channels=4):
+ super(PoseGuider, self).__init__()
+
+ self.conv_layers = nn.Sequential(
+ nn.Conv2d(in_channels=3, out_channels=16, kernel_size=4, stride=2, padding=1),
+ nn.ReLU(),
+ nn.Conv2d(in_channels=16, out_channels=32, kernel_size=4, stride=2, padding=1),
+ nn.ReLU(),
+ nn.Conv2d(in_channels=32, out_channels=64, kernel_size=4, stride=2, padding=1),
+ nn.ReLU(),
+ nn.Conv2d(in_channels=64, out_channels=128, kernel_size=3, stride=1, padding=1),
+ nn.ReLU()
+ )
+
+ # Final projection layer
+ self.final_proj = nn.Conv2d(in_channels=128, out_channels=noise_latent_channels, kernel_size=1)
+
+ # Initialize layers
+ self._initialize_weights()
+
+ def _initialize_weights(self):
+ # Initialize weights with Gaussian distribution and zero out the final layer
+ for m in self.conv_layers:
+ if isinstance(m, nn.Conv2d):
+ init.normal_(m.weight, mean=0.0, std=0.02)
+ if m.bias is not None:
+ init.zeros_(m.bias)
+
+ init.zeros_(self.final_proj.weight)
+ if self.final_proj.bias is not None:
+ init.zeros_(self.final_proj.bias)
+
+ def forward(self, pose_image):
+ x = self.conv_layers(pose_image)
+ x = self.final_proj(x)
+
+ return x
+
+ @classmethod
+ def from_pretrained(pretrained_model_path):
+ if not os.path.exists(pretrained_model_path):
+ print(f"There is no model file in {pretrained_model_path}")
+ print(f"loaded PoseGuider's pretrained weights from {pretrained_model_path} ...")
+
+ state_dict = torch.load(pretrained_model_path, map_location="cpu")
+ model = PoseGuider(noise_latent_channels=4)
+ m, u = model.load_state_dict(state_dict, strict=False)
+ print(f"### missing keys: {len(m)}; \n### unexpected keys: {len(u)};")
+ params = [p.numel() if "temporal" in n else 0 for n, p in model.named_parameters()]
+ print(f"### PoseGuider's Parameters: {sum(params) / 1e6} M")
+
+ return model
diff --git a/2D_Stage/tuneavideo/models/__pycache__/PoseGuider.cpython-310.pyc b/2D_Stage/tuneavideo/models/__pycache__/PoseGuider.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e320dc682997f9b86cda21f13f98938fd79f952e
Binary files /dev/null and b/2D_Stage/tuneavideo/models/__pycache__/PoseGuider.cpython-310.pyc differ
diff --git a/2D_Stage/tuneavideo/models/__pycache__/refunet.cpython-310.pyc b/2D_Stage/tuneavideo/models/__pycache__/refunet.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..31248644f40de894f31e3fed15cba48159d1a219
Binary files /dev/null and b/2D_Stage/tuneavideo/models/__pycache__/refunet.cpython-310.pyc differ
diff --git a/2D_Stage/tuneavideo/models/__pycache__/resnet.cpython-310.pyc b/2D_Stage/tuneavideo/models/__pycache__/resnet.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0a79b133ac5b4194b65e50ebb8ca3c61728a754a
Binary files /dev/null and b/2D_Stage/tuneavideo/models/__pycache__/resnet.cpython-310.pyc differ
diff --git a/2D_Stage/tuneavideo/models/__pycache__/transformer_mv2d.cpython-310.pyc b/2D_Stage/tuneavideo/models/__pycache__/transformer_mv2d.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..bbe7819084cd8956c182630ceffeb6b182539c37
Binary files /dev/null and b/2D_Stage/tuneavideo/models/__pycache__/transformer_mv2d.cpython-310.pyc differ
diff --git a/2D_Stage/tuneavideo/models/__pycache__/unet.cpython-310.pyc b/2D_Stage/tuneavideo/models/__pycache__/unet.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..21121a4b52a1a82cb15b9216ea7daecba9346466
Binary files /dev/null and b/2D_Stage/tuneavideo/models/__pycache__/unet.cpython-310.pyc differ
diff --git a/2D_Stage/tuneavideo/models/__pycache__/unet_blocks.cpython-310.pyc b/2D_Stage/tuneavideo/models/__pycache__/unet_blocks.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..00e989a6cf04bb6d897adbc2b1c9c61c89c510dd
Binary files /dev/null and b/2D_Stage/tuneavideo/models/__pycache__/unet_blocks.cpython-310.pyc differ
diff --git a/2D_Stage/tuneavideo/models/__pycache__/unet_mv2d_blocks.cpython-310.pyc b/2D_Stage/tuneavideo/models/__pycache__/unet_mv2d_blocks.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..aa48d7794254d516d67600ec263a38c7a4fdf1ab
Binary files /dev/null and b/2D_Stage/tuneavideo/models/__pycache__/unet_mv2d_blocks.cpython-310.pyc differ
diff --git a/2D_Stage/tuneavideo/models/__pycache__/unet_mv2d_condition.cpython-310.pyc b/2D_Stage/tuneavideo/models/__pycache__/unet_mv2d_condition.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..72bfc1d6a187c50c5b78da649390861e03357209
Binary files /dev/null and b/2D_Stage/tuneavideo/models/__pycache__/unet_mv2d_condition.cpython-310.pyc differ
diff --git a/2D_Stage/tuneavideo/models/__pycache__/unet_mv2d_ref.cpython-310.pyc b/2D_Stage/tuneavideo/models/__pycache__/unet_mv2d_ref.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..327665cc375fe7eb8caffce7b453205605887549
Binary files /dev/null and b/2D_Stage/tuneavideo/models/__pycache__/unet_mv2d_ref.cpython-310.pyc differ
diff --git a/2D_Stage/tuneavideo/models/attention.py b/2D_Stage/tuneavideo/models/attention.py
new file mode 100644
index 0000000000000000000000000000000000000000..e4be16c609d63b2d2f9541e124c03cb572dfc736
--- /dev/null
+++ b/2D_Stage/tuneavideo/models/attention.py
@@ -0,0 +1,344 @@
+# Adapted from https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention.py
+
+from dataclasses import dataclass
+from typing import Optional
+
+import torch
+import torch.nn.functional as F
+from torch import nn
+
+from diffusers.configuration_utils import ConfigMixin, register_to_config
+from diffusers import ModelMixin
+from diffusers.utils import BaseOutput
+from diffusers.utils.import_utils import is_xformers_available
+from diffusers.models.attention import CrossAttention, FeedForward, AdaLayerNorm
+
+from einops import rearrange, repeat
+
+
+@dataclass
+class Transformer3DModelOutput(BaseOutput):
+ sample: torch.FloatTensor
+
+
+if is_xformers_available():
+ import xformers
+ import xformers.ops
+else:
+ xformers = None
+
+
+class Transformer3DModel(ModelMixin, ConfigMixin):
+ @register_to_config
+ def __init__(
+ self,
+ num_attention_heads: int = 16,
+ attention_head_dim: int = 88,
+ in_channels: Optional[int] = None,
+ num_layers: int = 1,
+ dropout: float = 0.0,
+ norm_num_groups: int = 32,
+ cross_attention_dim: Optional[int] = None,
+ attention_bias: bool = False,
+ activation_fn: str = "geglu",
+ num_embeds_ada_norm: Optional[int] = None,
+ use_linear_projection: bool = False,
+ only_cross_attention: bool = False,
+ upcast_attention: bool = False,
+ use_attn_temp: bool = False,
+ ):
+ super().__init__()
+ self.use_linear_projection = use_linear_projection
+ self.num_attention_heads = num_attention_heads
+ self.attention_head_dim = attention_head_dim
+ inner_dim = num_attention_heads * attention_head_dim
+
+ # Define input layers
+ self.in_channels = in_channels
+
+ self.norm = torch.nn.GroupNorm(num_groups=norm_num_groups, num_channels=in_channels, eps=1e-6, affine=True)
+ if use_linear_projection:
+ self.proj_in = nn.Linear(in_channels, inner_dim)
+ else:
+ self.proj_in = nn.Conv2d(in_channels, inner_dim, kernel_size=1, stride=1, padding=0)
+
+ # Define transformers blocks
+ self.transformer_blocks = nn.ModuleList(
+ [
+ BasicTransformerBlock(
+ inner_dim,
+ num_attention_heads,
+ attention_head_dim,
+ dropout=dropout,
+ cross_attention_dim=cross_attention_dim,
+ activation_fn=activation_fn,
+ num_embeds_ada_norm=num_embeds_ada_norm,
+ attention_bias=attention_bias,
+ only_cross_attention=only_cross_attention,
+ upcast_attention=upcast_attention,
+ use_attn_temp = use_attn_temp,
+ )
+ for d in range(num_layers)
+ ]
+ )
+
+ # 4. Define output layers
+ if use_linear_projection:
+ self.proj_out = nn.Linear(in_channels, inner_dim)
+ else:
+ self.proj_out = nn.Conv2d(inner_dim, in_channels, kernel_size=1, stride=1, padding=0)
+
+ def forward(self, hidden_states, encoder_hidden_states=None, timestep=None, return_dict: bool = True):
+ # Input
+ assert hidden_states.dim() == 5, f"Expected hidden_states to have ndim=5, but got ndim={hidden_states.dim()}."
+ video_length = hidden_states.shape[2]
+ hidden_states = rearrange(hidden_states, "b c f h w -> (b f) c h w")
+ encoder_hidden_states = repeat(encoder_hidden_states, 'b n c -> (b f) n c', f=video_length)
+
+ batch, channel, height, weight = hidden_states.shape
+ residual = hidden_states
+
+ hidden_states = self.norm(hidden_states)
+ if not self.use_linear_projection:
+ hidden_states = self.proj_in(hidden_states)
+ inner_dim = hidden_states.shape[1]
+ hidden_states = hidden_states.permute(0, 2, 3, 1).reshape(batch, height * weight, inner_dim)
+ else:
+ inner_dim = hidden_states.shape[1]
+ hidden_states = hidden_states.permute(0, 2, 3, 1).reshape(batch, height * weight, inner_dim)
+ hidden_states = self.proj_in(hidden_states)
+
+ # Blocks
+ for block in self.transformer_blocks:
+ hidden_states = block(
+ hidden_states,
+ encoder_hidden_states=encoder_hidden_states,
+ timestep=timestep,
+ video_length=video_length
+ )
+
+ # Output
+ if not self.use_linear_projection:
+ hidden_states = (
+ hidden_states.reshape(batch, height, weight, inner_dim).permute(0, 3, 1, 2).contiguous()
+ )
+ hidden_states = self.proj_out(hidden_states)
+ else:
+ hidden_states = self.proj_out(hidden_states)
+ hidden_states = (
+ hidden_states.reshape(batch, height, weight, inner_dim).permute(0, 3, 1, 2).contiguous()
+ )
+
+ output = hidden_states + residual
+
+ output = rearrange(output, "(b f) c h w -> b c f h w", f=video_length)
+ if not return_dict:
+ return (output,)
+
+ return Transformer3DModelOutput(sample=output)
+
+
+class BasicTransformerBlock(nn.Module):
+ def __init__(
+ self,
+ dim: int,
+ num_attention_heads: int,
+ attention_head_dim: int,
+ dropout=0.0,
+ cross_attention_dim: Optional[int] = None,
+ activation_fn: str = "geglu",
+ num_embeds_ada_norm: Optional[int] = None,
+ attention_bias: bool = False,
+ only_cross_attention: bool = False,
+ upcast_attention: bool = False,
+ use_attn_temp: bool = False
+ ):
+ super().__init__()
+ self.only_cross_attention = only_cross_attention
+ self.use_ada_layer_norm = num_embeds_ada_norm is not None
+ self.use_attn_temp = use_attn_temp
+ # SC-Attn
+ self.attn1 = SparseCausalAttention(
+ query_dim=dim,
+ heads=num_attention_heads,
+ dim_head=attention_head_dim,
+ dropout=dropout,
+ bias=attention_bias,
+ cross_attention_dim=cross_attention_dim if only_cross_attention else None,
+ upcast_attention=upcast_attention,
+ )
+ self.norm1 = AdaLayerNorm(dim, num_embeds_ada_norm) if self.use_ada_layer_norm else nn.LayerNorm(dim)
+
+ # Cross-Attn
+ if cross_attention_dim is not None:
+ self.attn2 = CrossAttention(
+ query_dim=dim,
+ cross_attention_dim=cross_attention_dim,
+ heads=num_attention_heads,
+ dim_head=attention_head_dim,
+ dropout=dropout,
+ bias=attention_bias,
+ upcast_attention=upcast_attention,
+ )
+ else:
+ self.attn2 = None
+
+ if cross_attention_dim is not None:
+ self.norm2 = AdaLayerNorm(dim, num_embeds_ada_norm) if self.use_ada_layer_norm else nn.LayerNorm(dim)
+ else:
+ self.norm2 = None
+
+ # Feed-forward
+ self.ff = FeedForward(dim, dropout=dropout, activation_fn=activation_fn)
+ self.norm3 = nn.LayerNorm(dim)
+
+ # Temp-Attn
+ if self.use_attn_temp:
+ self.attn_temp = CrossAttention(
+ query_dim=dim,
+ heads=num_attention_heads,
+ dim_head=attention_head_dim,
+ dropout=dropout,
+ bias=attention_bias,
+ upcast_attention=upcast_attention,
+ )
+ nn.init.zeros_(self.attn_temp.to_out[0].weight.data)
+ self.norm_temp = AdaLayerNorm(dim, num_embeds_ada_norm) if self.use_ada_layer_norm else nn.LayerNorm(dim)
+
+ def set_use_memory_efficient_attention_xformers(self, use_memory_efficient_attention_xformers: bool):
+ if not is_xformers_available():
+ print("Here is how to install it")
+ raise ModuleNotFoundError(
+ "Refer to https://github.com/facebookresearch/xformers for more information on how to install"
+ " xformers",
+ name="xformers",
+ )
+ elif not torch.cuda.is_available():
+ raise ValueError(
+ "torch.cuda.is_available() should be True but is False. xformers' memory efficient attention is only"
+ " available for GPU "
+ )
+ else:
+ try:
+ # Make sure we can run the memory efficient attention
+ _ = xformers.ops.memory_efficient_attention(
+ torch.randn((1, 2, 40), device="cuda"),
+ torch.randn((1, 2, 40), device="cuda"),
+ torch.randn((1, 2, 40), device="cuda"),
+ )
+ except Exception as e:
+ raise e
+ self.attn1._use_memory_efficient_attention_xformers = use_memory_efficient_attention_xformers
+ if self.attn2 is not None:
+ self.attn2._use_memory_efficient_attention_xformers = use_memory_efficient_attention_xformers
+ #self.attn_temp._use_memory_efficient_attention_xformers = use_memory_efficient_attention_xformers
+
+ def forward(self, hidden_states, encoder_hidden_states=None, timestep=None, attention_mask=None, video_length=None):
+ # SparseCausal-Attention
+ norm_hidden_states = (
+ self.norm1(hidden_states, timestep) if self.use_ada_layer_norm else self.norm1(hidden_states)
+ )
+
+ if self.only_cross_attention:
+ hidden_states = (
+ self.attn1(norm_hidden_states, encoder_hidden_states, attention_mask=attention_mask) + hidden_states
+ )
+ else:
+ hidden_states = self.attn1(norm_hidden_states, attention_mask=attention_mask, video_length=video_length) + hidden_states
+
+ if self.attn2 is not None:
+ # Cross-Attention
+ norm_hidden_states = (
+ self.norm2(hidden_states, timestep) if self.use_ada_layer_norm else self.norm2(hidden_states)
+ )
+ hidden_states = (
+ self.attn2(
+ norm_hidden_states, encoder_hidden_states=encoder_hidden_states, attention_mask=attention_mask
+ )
+ + hidden_states
+ )
+
+ # Feed-forward
+ hidden_states = self.ff(self.norm3(hidden_states)) + hidden_states
+
+ # Temporal-Attention
+ if self.use_attn_temp:
+ d = hidden_states.shape[1]
+ hidden_states = rearrange(hidden_states, "(b f) d c -> (b d) f c", f=video_length)
+ norm_hidden_states = (
+ self.norm_temp(hidden_states, timestep) if self.use_ada_layer_norm else self.norm_temp(hidden_states)
+ )
+ hidden_states = self.attn_temp(norm_hidden_states) + hidden_states
+ hidden_states = rearrange(hidden_states, "(b d) f c -> (b f) d c", d=d)
+
+ return hidden_states
+
+
+class SparseCausalAttention(CrossAttention):
+ def forward(self, hidden_states, encoder_hidden_states=None, attention_mask=None, video_length=None, use_full_attn=True):
+ batch_size, sequence_length, _ = hidden_states.shape
+
+ encoder_hidden_states = encoder_hidden_states
+
+ if self.group_norm is not None:
+ hidden_states = self.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2)
+
+ query = self.to_q(hidden_states)
+ # query = rearrange(query, "(b f) d c -> b (f d) c", f=video_length)
+ dim = query.shape[-1]
+ query = self.reshape_heads_to_batch_dim(query)
+
+ if self.added_kv_proj_dim is not None:
+ raise NotImplementedError
+
+ encoder_hidden_states = encoder_hidden_states if encoder_hidden_states is not None else hidden_states
+ key = self.to_k(encoder_hidden_states)
+ value = self.to_v(encoder_hidden_states)
+
+ former_frame_index = torch.arange(video_length) - 1
+ former_frame_index[0] = 0
+
+ key = rearrange(key, "(b f) d c -> b f d c", f=video_length)
+ if not use_full_attn:
+ key = torch.cat([key[:, [0] * video_length], key[:, former_frame_index]], dim=2)
+ else:
+ # key = torch.cat([key[:, [0] * video_length], key[:, [1] * video_length], key[:, [2] * video_length], key[:, [3] * video_length]], dim=2)
+ key_video_length = [key[:, [i] * video_length] for i in range(video_length)]
+ key = torch.cat(key_video_length, dim=2)
+ key = rearrange(key, "b f d c -> (b f) d c")
+
+ value = rearrange(value, "(b f) d c -> b f d c", f=video_length)
+ if not use_full_attn:
+ value = torch.cat([value[:, [0] * video_length], value[:, former_frame_index]], dim=2)
+ else:
+ # value = torch.cat([value[:, [0] * video_length], value[:, [1] * video_length], value[:, [2] * video_length], value[:, [3] * video_length]], dim=2)
+ value_video_length = [value[:, [i] * video_length] for i in range(video_length)]
+ value = torch.cat(value_video_length, dim=2)
+ value = rearrange(value, "b f d c -> (b f) d c")
+
+ key = self.reshape_heads_to_batch_dim(key)
+ value = self.reshape_heads_to_batch_dim(value)
+
+ if attention_mask is not None:
+ if attention_mask.shape[-1] != query.shape[1]:
+ target_length = query.shape[1]
+ attention_mask = F.pad(attention_mask, (0, target_length), value=0.0)
+ attention_mask = attention_mask.repeat_interleave(self.heads, dim=0)
+
+ # attention, what we cannot get enough of
+ if self._use_memory_efficient_attention_xformers:
+ hidden_states = self._memory_efficient_attention_xformers(query, key, value, attention_mask)
+ # Some versions of xformers return output in fp32, cast it back to the dtype of the input
+ hidden_states = hidden_states.to(query.dtype)
+ else:
+ if self._slice_size is None or query.shape[0] // self._slice_size == 1:
+ hidden_states = self._attention(query, key, value, attention_mask)
+ else:
+ hidden_states = self._sliced_attention(query, key, value, sequence_length, dim, attention_mask)
+
+ # linear proj
+ hidden_states = self.to_out[0](hidden_states)
+
+ # dropout
+ hidden_states = self.to_out[1](hidden_states)
+ return hidden_states
diff --git a/2D_Stage/tuneavideo/models/imageproj.py b/2D_Stage/tuneavideo/models/imageproj.py
new file mode 100644
index 0000000000000000000000000000000000000000..63e20527154594ef7a207b81c6520af2b07b8e50
--- /dev/null
+++ b/2D_Stage/tuneavideo/models/imageproj.py
@@ -0,0 +1,118 @@
+# modified from https://github.com/mlfoundations/open_flamingo/blob/main/open_flamingo/src/helpers.py
+import math
+
+import torch
+import torch.nn as nn
+
+# FFN
+def FeedForward(dim, mult=4):
+ inner_dim = int(dim * mult)
+ return nn.Sequential(
+ nn.LayerNorm(dim),
+ nn.Linear(dim, inner_dim, bias=False),
+ nn.GELU(),
+ nn.Linear(inner_dim, dim, bias=False),
+ )
+
+def reshape_tensor(x, heads):
+ bs, length, width = x.shape
+ #(bs, length, width) --> (bs, length, n_heads, dim_per_head)
+ x = x.view(bs, length, heads, -1)
+ # (bs, length, n_heads, dim_per_head) --> (bs, n_heads, length, dim_per_head)
+ x = x.transpose(1, 2)
+ # (bs, n_heads, length, dim_per_head) --> (bs*n_heads, length, dim_per_head)
+ x = x.reshape(bs, heads, length, -1)
+ return x
+
+
+class PerceiverAttention(nn.Module):
+ def __init__(self, *, dim, dim_head=64, heads=8):
+ super().__init__()
+ self.scale = dim_head**-0.5
+ self.dim_head = dim_head
+ self.heads = heads
+ inner_dim = dim_head * heads
+
+ self.norm1 = nn.LayerNorm(dim)
+ self.norm2 = nn.LayerNorm(dim)
+
+ self.to_q = nn.Linear(dim, inner_dim, bias=False)
+ self.to_kv = nn.Linear(dim, inner_dim * 2, bias=False)
+ self.to_out = nn.Linear(inner_dim, dim, bias=False)
+
+
+ def forward(self, x, latents):
+ """
+ Args:
+ x (torch.Tensor): image features
+ shape (b, n1, D)
+ latent (torch.Tensor): latent features
+ shape (b, n2, D)
+ """
+ x = self.norm1(x)
+ latents = self.norm2(latents)
+
+ b, l, _ = latents.shape
+
+ q = self.to_q(latents)
+ kv_input = torch.cat((x, latents), dim=-2)
+ k, v = self.to_kv(kv_input).chunk(2, dim=-1)
+
+ q = reshape_tensor(q, self.heads)
+ k = reshape_tensor(k, self.heads)
+ v = reshape_tensor(v, self.heads)
+
+ # attention
+ scale = 1 / math.sqrt(math.sqrt(self.dim_head))
+ weight = (q * scale) @ (k * scale).transpose(-2, -1) # More stable with f16 than dividing afterwards
+ weight = torch.softmax(weight.float(), dim=-1).type(weight.dtype)
+ out = weight @ v
+
+ out = out.permute(0, 2, 1, 3).reshape(b, l, -1)
+
+ return self.to_out(out)
+
+class Resampler(nn.Module):
+ def __init__(
+ self,
+ dim=1024,
+ depth=8,
+ dim_head=64,
+ heads=16,
+ num_queries=8,
+ embedding_dim=768,
+ output_dim=1024,
+ ff_mult=4,
+ ):
+ super().__init__()
+
+ self.latents = nn.Parameter(torch.randn(1, num_queries, dim) / dim**0.5)
+
+ self.proj_in = nn.Linear(embedding_dim, dim)
+
+ self.proj_out = nn.Linear(dim, output_dim)
+ self.norm_out = nn.LayerNorm(output_dim)
+
+ self.layers = nn.ModuleList([])
+ for _ in range(depth):
+ self.layers.append(
+ nn.ModuleList(
+ [
+ PerceiverAttention(dim=dim, dim_head=dim_head, heads=heads),
+ FeedForward(dim=dim, mult=ff_mult),
+ ]
+ )
+ )
+
+ def forward(self, x):
+
+ latents = self.latents.repeat(x.size(0), 1, 1)
+
+ x = self.proj_in(x)
+
+ for attn, ff in self.layers:
+ latents = attn(x, latents) + latents
+ latents = ff(latents) + latents
+
+ latents = self.proj_out(latents)
+ return self.norm_out(latents)
\ No newline at end of file
diff --git a/2D_Stage/tuneavideo/models/refunet.py b/2D_Stage/tuneavideo/models/refunet.py
new file mode 100644
index 0000000000000000000000000000000000000000..8808e3243eddd47ddaab63f35b56edff4ebd75ee
--- /dev/null
+++ b/2D_Stage/tuneavideo/models/refunet.py
@@ -0,0 +1,125 @@
+import torch
+from einops import rearrange
+from typing import Any, Dict, Optional
+from diffusers.utils.import_utils import is_xformers_available
+from tuneavideo.models.transformer_mv2d import XFormersMVAttnProcessor, MVAttnProcessor
+class ReferenceOnlyAttnProc(torch.nn.Module):
+ def __init__(
+ self,
+ chained_proc,
+ enabled=False,
+ name=None
+ ) -> None:
+ super().__init__()
+ self.enabled = enabled
+ self.chained_proc = chained_proc
+ self.name = name
+
+ def __call__(
+ self, attn, hidden_states, encoder_hidden_states=None, attention_mask=None,
+ mode="w", ref_dict: dict = None, is_cfg_guidance = False,num_views=4,
+ multiview_attention=True,
+ cross_domain_attention=False,
+ ) -> Any:
+ if encoder_hidden_states is None:
+ encoder_hidden_states = hidden_states
+ # print(self.enabled)
+ if self.enabled:
+ if mode == 'w':
+ ref_dict[self.name] = encoder_hidden_states
+ res = self.chained_proc(attn, hidden_states, encoder_hidden_states, attention_mask, num_views=1,
+ multiview_attention=False,
+ cross_domain_attention=False,)
+ elif mode == 'r':
+ encoder_hidden_states = rearrange(encoder_hidden_states, '(b t) d c-> b (t d) c', t=num_views)
+ if self.name in ref_dict:
+ encoder_hidden_states = torch.cat([encoder_hidden_states, ref_dict.pop(self.name)], dim=1).unsqueeze(1).repeat(1,num_views,1,1).flatten(0,1)
+ res = self.chained_proc(attn, hidden_states, encoder_hidden_states, attention_mask, num_views=num_views,
+ multiview_attention=False,
+ cross_domain_attention=False,)
+ elif mode == 'm':
+ encoder_hidden_states = torch.cat([encoder_hidden_states, ref_dict[self.name]], dim=1)
+ elif mode == 'n':
+ encoder_hidden_states = rearrange(encoder_hidden_states, '(b t) d c-> b (t d) c', t=num_views)
+ encoder_hidden_states = torch.cat([encoder_hidden_states], dim=1).unsqueeze(1).repeat(1,num_views,1,1).flatten(0,1)
+ res = self.chained_proc(attn, hidden_states, encoder_hidden_states, attention_mask, num_views=num_views,
+ multiview_attention=False,
+ cross_domain_attention=False,)
+ else:
+ assert False, mode
+ else:
+ res = self.chained_proc(attn, hidden_states, encoder_hidden_states, attention_mask)
+ return res
+
+class RefOnlyNoisedUNet(torch.nn.Module):
+ def __init__(self, unet, train_sched, val_sched) -> None:
+ super().__init__()
+ self.unet = unet
+ self.train_sched = train_sched
+ self.val_sched = val_sched
+
+ unet_lora_attn_procs = dict()
+ for name, _ in unet.attn_processors.items():
+ if is_xformers_available():
+ default_attn_proc = XFormersMVAttnProcessor()
+ else:
+ default_attn_proc = MVAttnProcessor()
+ unet_lora_attn_procs[name] = ReferenceOnlyAttnProc(
+ default_attn_proc, enabled=name.endswith("attn1.processor"), name=name)
+
+ self.unet.set_attn_processor(unet_lora_attn_procs)
+
+ def __getattr__(self, name: str):
+ try:
+ return super().__getattr__(name)
+ except AttributeError:
+ return getattr(self.unet, name)
+
+ def forward_cond(self, noisy_cond_lat, timestep, encoder_hidden_states, class_labels, ref_dict, is_cfg_guidance, **kwargs):
+ if is_cfg_guidance:
+ encoder_hidden_states = encoder_hidden_states[1:]
+ class_labels = class_labels[1:]
+ self.unet(
+ noisy_cond_lat, timestep,
+ encoder_hidden_states=encoder_hidden_states,
+ class_labels=class_labels,
+ cross_attention_kwargs=dict(mode="w", ref_dict=ref_dict),
+ **kwargs
+ )
+
+ def forward(
+ self, sample, timestep, encoder_hidden_states, class_labels=None,
+ *args, cross_attention_kwargs,
+ down_block_res_samples=None, mid_block_res_sample=None,
+ **kwargs
+ ):
+ cond_lat = cross_attention_kwargs['cond_lat']
+ is_cfg_guidance = cross_attention_kwargs.get('is_cfg_guidance', False)
+ noise = torch.randn_like(cond_lat)
+ if self.training:
+ noisy_cond_lat = self.train_sched.add_noise(cond_lat, noise, timestep)
+ noisy_cond_lat = self.train_sched.scale_model_input(noisy_cond_lat, timestep)
+ else:
+ noisy_cond_lat = self.val_sched.add_noise(cond_lat, noise, timestep.reshape(-1))
+ noisy_cond_lat = self.val_sched.scale_model_input(noisy_cond_lat, timestep.reshape(-1))
+ ref_dict = {}
+ self.forward_cond(
+ noisy_cond_lat, timestep,
+ encoder_hidden_states, class_labels,
+ ref_dict, is_cfg_guidance, **kwargs
+ )
+ weight_dtype = self.unet.dtype
+ return self.unet(
+ sample, timestep,
+ encoder_hidden_states, *args,
+ class_labels=class_labels,
+ cross_attention_kwargs=dict(mode="r", ref_dict=ref_dict, is_cfg_guidance=is_cfg_guidance),
+ down_block_additional_residuals=[
+ sample.to(dtype=weight_dtype) for sample in down_block_res_samples
+ ] if down_block_res_samples is not None else None,
+ mid_block_additional_residual=(
+ mid_block_res_sample.to(dtype=weight_dtype)
+ if mid_block_res_sample is not None else None
+ ),
+ **kwargs
+ )
\ No newline at end of file
diff --git a/2D_Stage/tuneavideo/models/resnet.py b/2D_Stage/tuneavideo/models/resnet.py
new file mode 100644
index 0000000000000000000000000000000000000000..9b8b0fc2737f3335ea4e313568c1890326900f01
--- /dev/null
+++ b/2D_Stage/tuneavideo/models/resnet.py
@@ -0,0 +1,210 @@
+# Adapted from https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/resnet.py
+
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+
+from einops import rearrange
+
+
+class InflatedConv3d(nn.Conv2d):
+ def forward(self, x):
+ video_length = x.shape[2]
+
+ x = rearrange(x, "b c f h w -> (b f) c h w")
+ x = super().forward(x)
+ x = rearrange(x, "(b f) c h w -> b c f h w", f=video_length)
+
+ return x
+
+
+class Upsample3D(nn.Module):
+ def __init__(self, channels, use_conv=False, use_conv_transpose=False, out_channels=None, name="conv"):
+ super().__init__()
+ self.channels = channels
+ self.out_channels = out_channels or channels
+ self.use_conv = use_conv
+ self.use_conv_transpose = use_conv_transpose
+ self.name = name
+
+ conv = None
+ if use_conv_transpose:
+ raise NotImplementedError
+ elif use_conv:
+ conv = InflatedConv3d(self.channels, self.out_channels, 3, padding=1)
+
+ if name == "conv":
+ self.conv = conv
+ else:
+ self.Conv2d_0 = conv
+
+ def forward(self, hidden_states, output_size=None):
+ assert hidden_states.shape[1] == self.channels
+
+ if self.use_conv_transpose:
+ raise NotImplementedError
+
+ # Cast to float32 to as 'upsample_nearest2d_out_frame' op does not support bfloat16
+ dtype = hidden_states.dtype
+ if dtype == torch.bfloat16:
+ hidden_states = hidden_states.to(torch.float32)
+
+ # upsample_nearest_nhwc fails with large batch sizes. see https://github.com/huggingface/diffusers/issues/984
+ if hidden_states.shape[0] >= 64:
+ hidden_states = hidden_states.contiguous()
+
+ # if `output_size` is passed we force the interpolation output
+ # size and do not make use of `scale_factor=2`
+ if output_size is None:
+ hidden_states = F.interpolate(hidden_states, scale_factor=[1.0, 2.0, 2.0], mode="nearest")
+ else:
+ hidden_states = F.interpolate(hidden_states, size=output_size, mode="nearest")
+
+ # If the input is bfloat16, we cast back to bfloat16
+ if dtype == torch.bfloat16:
+ hidden_states = hidden_states.to(dtype)
+
+ if self.use_conv:
+ if self.name == "conv":
+ hidden_states = self.conv(hidden_states)
+ else:
+ hidden_states = self.Conv2d_0(hidden_states)
+
+ return hidden_states
+
+
+class Downsample3D(nn.Module):
+ def __init__(self, channels, use_conv=False, out_channels=None, padding=1, name="conv"):
+ super().__init__()
+ self.channels = channels
+ self.out_channels = out_channels or channels
+ self.use_conv = use_conv
+ self.padding = padding
+ stride = 2
+ self.name = name
+
+ if use_conv:
+ conv = InflatedConv3d(self.channels, self.out_channels, 3, stride=stride, padding=padding)
+ else:
+ raise NotImplementedError
+
+ if name == "conv":
+ self.Conv2d_0 = conv
+ self.conv = conv
+ elif name == "Conv2d_0":
+ self.conv = conv
+ else:
+ self.conv = conv
+
+ def forward(self, hidden_states):
+ assert hidden_states.shape[1] == self.channels
+ if self.use_conv and self.padding == 0:
+ raise NotImplementedError
+
+ assert hidden_states.shape[1] == self.channels
+ hidden_states = self.conv(hidden_states)
+
+ return hidden_states
+
+
+class ResnetBlock3D(nn.Module):
+ def __init__(
+ self,
+ *,
+ in_channels,
+ out_channels=None,
+ conv_shortcut=False,
+ dropout=0.0,
+ temb_channels=512,
+ groups=32,
+ groups_out=None,
+ pre_norm=True,
+ eps=1e-6,
+ non_linearity="swish",
+ time_embedding_norm="default",
+ output_scale_factor=1.0,
+ use_in_shortcut=None,
+ ):
+ super().__init__()
+ self.pre_norm = pre_norm
+ self.pre_norm = True
+ self.in_channels = in_channels
+ out_channels = in_channels if out_channels is None else out_channels
+ self.out_channels = out_channels
+ self.use_conv_shortcut = conv_shortcut
+ self.time_embedding_norm = time_embedding_norm
+ self.output_scale_factor = output_scale_factor
+
+ if groups_out is None:
+ groups_out = groups
+
+ self.norm1 = torch.nn.GroupNorm(num_groups=groups, num_channels=in_channels, eps=eps, affine=True)
+
+ self.conv1 = InflatedConv3d(in_channels, out_channels, kernel_size=3, stride=1, padding=1)
+
+ if temb_channels is not None:
+ if self.time_embedding_norm == "default":
+ time_emb_proj_out_channels = out_channels
+ elif self.time_embedding_norm == "scale_shift":
+ time_emb_proj_out_channels = out_channels * 2
+ else:
+ raise ValueError(f"unknown time_embedding_norm : {self.time_embedding_norm} ")
+
+ self.time_emb_proj = torch.nn.Linear(temb_channels, time_emb_proj_out_channels)
+ else:
+ self.time_emb_proj = None
+
+ self.norm2 = torch.nn.GroupNorm(num_groups=groups_out, num_channels=out_channels, eps=eps, affine=True)
+ self.dropout = torch.nn.Dropout(dropout)
+ self.conv2 = InflatedConv3d(out_channels, out_channels, kernel_size=3, stride=1, padding=1)
+
+ if non_linearity == "swish":
+ self.nonlinearity = lambda x: F.silu(x)
+ elif non_linearity == "mish":
+ self.nonlinearity = Mish()
+ elif non_linearity == "silu":
+ self.nonlinearity = nn.SiLU()
+
+ self.use_in_shortcut = self.in_channels != self.out_channels if use_in_shortcut is None else use_in_shortcut
+
+ self.conv_shortcut = None
+ if self.use_in_shortcut:
+ self.conv_shortcut = InflatedConv3d(in_channels, out_channels, kernel_size=1, stride=1, padding=0)
+
+ def forward(self, input_tensor, temb):
+ hidden_states = input_tensor
+
+ hidden_states = self.norm1(hidden_states)
+ hidden_states = self.nonlinearity(hidden_states)
+
+ hidden_states = self.conv1(hidden_states)
+
+ if temb is not None:
+ # temb = self.time_emb_proj(self.nonlinearity(temb))[:, :, None, None, None]
+ temb = self.time_emb_proj(self.nonlinearity(temb))[:, :, :, None, None].permute(0,2,1,3,4)
+
+ if temb is not None and self.time_embedding_norm == "default":
+ hidden_states = hidden_states + temb
+
+ hidden_states = self.norm2(hidden_states)
+
+ if temb is not None and self.time_embedding_norm == "scale_shift":
+ scale, shift = torch.chunk(temb, 2, dim=1)
+ hidden_states = hidden_states * (1 + scale) + shift
+
+ hidden_states = self.nonlinearity(hidden_states)
+
+ hidden_states = self.dropout(hidden_states)
+ hidden_states = self.conv2(hidden_states)
+
+ if self.conv_shortcut is not None:
+ input_tensor = self.conv_shortcut(input_tensor)
+
+ output_tensor = (input_tensor + hidden_states) / self.output_scale_factor
+
+ return output_tensor
+
+
+class Mish(torch.nn.Module):
+ def forward(self, hidden_states):
+ return hidden_states * torch.tanh(torch.nn.functional.softplus(hidden_states))
\ No newline at end of file
diff --git a/2D_Stage/tuneavideo/models/transformer_mv2d.py b/2D_Stage/tuneavideo/models/transformer_mv2d.py
new file mode 100644
index 0000000000000000000000000000000000000000..bf9ca74289ce6f991ac151131d8b01c85c2fa510
--- /dev/null
+++ b/2D_Stage/tuneavideo/models/transformer_mv2d.py
@@ -0,0 +1,1010 @@
+# Copyright 2023 The HuggingFace Team. All rights reserved.
+#
+# 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 dataclasses import dataclass
+from typing import Any, Dict, Optional
+
+import torch
+import torch.nn.functional as F
+from torch import nn
+
+from diffusers.configuration_utils import ConfigMixin, register_to_config
+from diffusers.models.embeddings import ImagePositionalEmbeddings
+from diffusers.utils import BaseOutput, deprecate
+try:
+ from diffusers.utils import maybe_allow_in_graph
+except:
+ from diffusers.utils.torch_utils import maybe_allow_in_graph
+from diffusers.models.attention import FeedForward, AdaLayerNorm, AdaLayerNormZero, Attention
+from diffusers.models.embeddings import PatchEmbed
+from diffusers.models.lora import LoRACompatibleConv, LoRACompatibleLinear
+from diffusers.models.modeling_utils import ModelMixin
+from diffusers.utils.import_utils import is_xformers_available
+
+from einops import rearrange
+import pdb
+import random
+
+
+if is_xformers_available():
+ import xformers
+ import xformers.ops
+else:
+ xformers = None
+
+
+@dataclass
+class TransformerMV2DModelOutput(BaseOutput):
+ """
+ The output of [`Transformer2DModel`].
+
+ Args:
+ sample (`torch.FloatTensor` of shape `(batch_size, num_channels, height, width)` or `(batch size, num_vector_embeds - 1, num_latent_pixels)` if [`Transformer2DModel`] is discrete):
+ The hidden states output conditioned on the `encoder_hidden_states` input. If discrete, returns probability
+ distributions for the unnoised latent pixels.
+ """
+
+ sample: torch.FloatTensor
+
+
+class TransformerMV2DModel(ModelMixin, ConfigMixin):
+ """
+ A 2D Transformer model for image-like data.
+
+ Parameters:
+ num_attention_heads (`int`, *optional*, defaults to 16): The number of heads to use for multi-head attention.
+ attention_head_dim (`int`, *optional*, defaults to 88): The number of channels in each head.
+ in_channels (`int`, *optional*):
+ The number of channels in the input and output (specify if the input is **continuous**).
+ num_layers (`int`, *optional*, defaults to 1): The number of layers of Transformer blocks to use.
+ dropout (`float`, *optional*, defaults to 0.0): The dropout probability to use.
+ cross_attention_dim (`int`, *optional*): The number of `encoder_hidden_states` dimensions to use.
+ sample_size (`int`, *optional*): The width of the latent images (specify if the input is **discrete**).
+ This is fixed during training since it is used to learn a number of position embeddings.
+ num_vector_embeds (`int`, *optional*):
+ The number of classes of the vector embeddings of the latent pixels (specify if the input is **discrete**).
+ Includes the class for the masked latent pixel.
+ activation_fn (`str`, *optional*, defaults to `"geglu"`): Activation function to use in feed-forward.
+ num_embeds_ada_norm ( `int`, *optional*):
+ The number of diffusion steps used during training. Pass if at least one of the norm_layers is
+ `AdaLayerNorm`. This is fixed during training since it is used to learn a number of embeddings that are
+ added to the hidden states.
+
+ During inference, you can denoise for up to but not more steps than `num_embeds_ada_norm`.
+ attention_bias (`bool`, *optional*):
+ Configure if the `TransformerBlocks` attention should contain a bias parameter.
+ """
+
+ @register_to_config
+ def __init__(
+ self,
+ num_attention_heads: int = 16,
+ attention_head_dim: int = 88,
+ in_channels: Optional[int] = None,
+ out_channels: Optional[int] = None,
+ num_layers: int = 1,
+ dropout: float = 0.0,
+ norm_num_groups: int = 32,
+ cross_attention_dim: Optional[int] = None,
+ attention_bias: bool = False,
+ sample_size: Optional[int] = None,
+ num_vector_embeds: Optional[int] = None,
+ patch_size: Optional[int] = None,
+ activation_fn: str = "geglu",
+ num_embeds_ada_norm: Optional[int] = None,
+ use_linear_projection: bool = False,
+ only_cross_attention: bool = False,
+ upcast_attention: bool = False,
+ norm_type: str = "layer_norm",
+ norm_elementwise_affine: bool = True,
+ num_views: int = 1,
+ joint_attention: bool=False,
+ joint_attention_twice: bool=False,
+ multiview_attention: bool=True,
+ cross_domain_attention: bool=False
+ ):
+ super().__init__()
+ self.use_linear_projection = use_linear_projection
+ self.num_attention_heads = num_attention_heads
+ self.attention_head_dim = attention_head_dim
+ inner_dim = num_attention_heads * attention_head_dim
+
+ # 1. Transformer2DModel can process both standard continuous images of shape `(batch_size, num_channels, width, height)` as well as quantized image embeddings of shape `(batch_size, num_image_vectors)`
+ # Define whether input is continuous or discrete depending on configuration
+ self.is_input_continuous = (in_channels is not None) and (patch_size is None)
+ self.is_input_vectorized = num_vector_embeds is not None
+ self.is_input_patches = in_channels is not None and patch_size is not None
+
+ if norm_type == "layer_norm" and num_embeds_ada_norm is not None:
+ deprecation_message = (
+ f"The configuration file of this model: {self.__class__} is outdated. `norm_type` is either not set or"
+ " incorrectly set to `'layer_norm'`.Make sure to set `norm_type` to `'ada_norm'` in the config."
+ " Please make sure to update the config accordingly as leaving `norm_type` might led to incorrect"
+ " results in future versions. If you have downloaded this checkpoint from the Hugging Face Hub, it"
+ " would be very nice if you could open a Pull request for the `transformer/config.json` file"
+ )
+ deprecate("norm_type!=num_embeds_ada_norm", "1.0.0", deprecation_message, standard_warn=False)
+ norm_type = "ada_norm"
+
+ if self.is_input_continuous and self.is_input_vectorized:
+ raise ValueError(
+ f"Cannot define both `in_channels`: {in_channels} and `num_vector_embeds`: {num_vector_embeds}. Make"
+ " sure that either `in_channels` or `num_vector_embeds` is None."
+ )
+ elif self.is_input_vectorized and self.is_input_patches:
+ raise ValueError(
+ f"Cannot define both `num_vector_embeds`: {num_vector_embeds} and `patch_size`: {patch_size}. Make"
+ " sure that either `num_vector_embeds` or `num_patches` is None."
+ )
+ elif not self.is_input_continuous and not self.is_input_vectorized and not self.is_input_patches:
+ raise ValueError(
+ f"Has to define `in_channels`: {in_channels}, `num_vector_embeds`: {num_vector_embeds}, or patch_size:"
+ f" {patch_size}. Make sure that `in_channels`, `num_vector_embeds` or `num_patches` is not None."
+ )
+
+ # 2. Define input layers
+ if self.is_input_continuous:
+ self.in_channels = in_channels
+
+ self.norm = torch.nn.GroupNorm(num_groups=norm_num_groups, num_channels=in_channels, eps=1e-6, affine=True)
+ if use_linear_projection:
+ self.proj_in = LoRACompatibleLinear(in_channels, inner_dim)
+ else:
+ self.proj_in = LoRACompatibleConv(in_channels, inner_dim, kernel_size=1, stride=1, padding=0)
+ elif self.is_input_vectorized:
+ assert sample_size is not None, "Transformer2DModel over discrete input must provide sample_size"
+ assert num_vector_embeds is not None, "Transformer2DModel over discrete input must provide num_embed"
+
+ self.height = sample_size
+ self.width = sample_size
+ self.num_vector_embeds = num_vector_embeds
+ self.num_latent_pixels = self.height * self.width
+
+ self.latent_image_embedding = ImagePositionalEmbeddings(
+ num_embed=num_vector_embeds, embed_dim=inner_dim, height=self.height, width=self.width
+ )
+ elif self.is_input_patches:
+ assert sample_size is not None, "Transformer2DModel over patched input must provide sample_size"
+
+ self.height = sample_size
+ self.width = sample_size
+
+ self.patch_size = patch_size
+ self.pos_embed = PatchEmbed(
+ height=sample_size,
+ width=sample_size,
+ patch_size=patch_size,
+ in_channels=in_channels,
+ embed_dim=inner_dim,
+ )
+
+ # 3. Define transformers blocks
+ self.transformer_blocks = nn.ModuleList(
+ [
+ BasicMVTransformerBlock(
+ inner_dim,
+ num_attention_heads,
+ attention_head_dim,
+ dropout=dropout,
+ cross_attention_dim=cross_attention_dim,
+ activation_fn=activation_fn,
+ num_embeds_ada_norm=num_embeds_ada_norm,
+ attention_bias=attention_bias,
+ only_cross_attention=only_cross_attention,
+ upcast_attention=upcast_attention,
+ norm_type=norm_type,
+ norm_elementwise_affine=norm_elementwise_affine,
+ num_views=num_views,
+ joint_attention=joint_attention,
+ joint_attention_twice=joint_attention_twice,
+ multiview_attention=multiview_attention,
+ cross_domain_attention=cross_domain_attention
+ )
+ for d in range(num_layers)
+ ]
+ )
+
+ # 4. Define output layers
+ self.out_channels = in_channels if out_channels is None else out_channels
+ if self.is_input_continuous:
+ # TODO: should use out_channels for continuous projections
+ if use_linear_projection:
+ self.proj_out = LoRACompatibleLinear(inner_dim, in_channels)
+ else:
+ self.proj_out = LoRACompatibleConv(inner_dim, in_channels, kernel_size=1, stride=1, padding=0)
+ elif self.is_input_vectorized:
+ self.norm_out = nn.LayerNorm(inner_dim)
+ self.out = nn.Linear(inner_dim, self.num_vector_embeds - 1)
+ elif self.is_input_patches:
+ self.norm_out = nn.LayerNorm(inner_dim, elementwise_affine=False, eps=1e-6)
+ self.proj_out_1 = nn.Linear(inner_dim, 2 * inner_dim)
+ self.proj_out_2 = nn.Linear(inner_dim, patch_size * patch_size * self.out_channels)
+
+ def forward(
+ self,
+ hidden_states: torch.Tensor,
+ encoder_hidden_states: Optional[torch.Tensor] = None,
+ timestep: Optional[torch.LongTensor] = None,
+ class_labels: Optional[torch.LongTensor] = None,
+ cross_attention_kwargs: Dict[str, Any] = None,
+ attention_mask: Optional[torch.Tensor] = None,
+ encoder_attention_mask: Optional[torch.Tensor] = None,
+ return_dict: bool = True,
+ ):
+ """
+ The [`Transformer2DModel`] forward method.
+
+ Args:
+ hidden_states (`torch.LongTensor` of shape `(batch size, num latent pixels)` if discrete, `torch.FloatTensor` of shape `(batch size, channel, height, width)` if continuous):
+ Input `hidden_states`.
+ encoder_hidden_states ( `torch.FloatTensor` of shape `(batch size, sequence len, embed dims)`, *optional*):
+ Conditional embeddings for cross attention layer. If not given, cross-attention defaults to
+ self-attention.
+ timestep ( `torch.LongTensor`, *optional*):
+ Used to indicate denoising step. Optional timestep to be applied as an embedding in `AdaLayerNorm`.
+ class_labels ( `torch.LongTensor` of shape `(batch size, num classes)`, *optional*):
+ Used to indicate class labels conditioning. Optional class labels to be applied as an embedding in
+ `AdaLayerZeroNorm`.
+ encoder_attention_mask ( `torch.Tensor`, *optional*):
+ Cross-attention mask applied to `encoder_hidden_states`. Two formats supported:
+
+ * Mask `(batch, sequence_length)` True = keep, False = discard.
+ * Bias `(batch, 1, sequence_length)` 0 = keep, -10000 = discard.
+
+ If `ndim == 2`: will be interpreted as a mask, then converted into a bias consistent with the format
+ above. This bias will be added to the cross-attention scores.
+ return_dict (`bool`, *optional*, defaults to `True`):
+ Whether or not to return a [`~models.unet_2d_condition.UNet2DConditionOutput`] instead of a plain
+ tuple.
+
+ Returns:
+ If `return_dict` is True, an [`~models.transformer_2d.Transformer2DModelOutput`] is returned, otherwise a
+ `tuple` where the first element is the sample tensor.
+ """
+ # ensure attention_mask is a bias, and give it a singleton query_tokens dimension.
+ # we may have done this conversion already, e.g. if we came here via UNet2DConditionModel#forward.
+ # we can tell by counting dims; if ndim == 2: it's a mask rather than a bias.
+ # expects mask of shape:
+ # [batch, key_tokens]
+ # adds singleton query_tokens dimension:
+ # [batch, 1, key_tokens]
+ # this helps to broadcast it as a bias over attention scores, which will be in one of the following shapes:
+ # [batch, heads, query_tokens, key_tokens] (e.g. torch sdp attn)
+ # [batch * heads, query_tokens, key_tokens] (e.g. xformers or classic attn)
+ if attention_mask is not None and attention_mask.ndim == 2:
+ # assume that mask is expressed as:
+ # (1 = keep, 0 = discard)
+ # convert mask into a bias that can be added to attention scores:
+ # (keep = +0, discard = -10000.0)
+ attention_mask = (1 - attention_mask.to(hidden_states.dtype)) * -10000.0
+ attention_mask = attention_mask.unsqueeze(1)
+
+ # convert encoder_attention_mask to a bias the same way we do for attention_mask
+ if encoder_attention_mask is not None and encoder_attention_mask.ndim == 2:
+ encoder_attention_mask = (1 - encoder_attention_mask.to(hidden_states.dtype)) * -10000.0
+ encoder_attention_mask = encoder_attention_mask.unsqueeze(1)
+
+ # 1. Input
+ if self.is_input_continuous:
+ batch, _, height, width = hidden_states.shape
+ residual = hidden_states
+
+ hidden_states = self.norm(hidden_states)
+ if not self.use_linear_projection:
+ hidden_states = self.proj_in(hidden_states)
+ inner_dim = hidden_states.shape[1]
+ hidden_states = hidden_states.permute(0, 2, 3, 1).reshape(batch, height * width, inner_dim)
+ else:
+ inner_dim = hidden_states.shape[1]
+ hidden_states = hidden_states.permute(0, 2, 3, 1).reshape(batch, height * width, inner_dim)
+ hidden_states = self.proj_in(hidden_states)
+ elif self.is_input_vectorized:
+ hidden_states = self.latent_image_embedding(hidden_states)
+ elif self.is_input_patches:
+ hidden_states = self.pos_embed(hidden_states)
+
+ # 2. Blocks
+ for block in self.transformer_blocks:
+ hidden_states = block(
+ hidden_states,
+ attention_mask=attention_mask,
+ encoder_hidden_states=encoder_hidden_states,
+ encoder_attention_mask=encoder_attention_mask,
+ timestep=timestep,
+ cross_attention_kwargs=cross_attention_kwargs,
+ class_labels=class_labels,
+ )
+
+ # 3. Output
+ if self.is_input_continuous:
+ if not self.use_linear_projection:
+ hidden_states = hidden_states.reshape(batch, height, width, inner_dim).permute(0, 3, 1, 2).contiguous()
+ hidden_states = self.proj_out(hidden_states)
+ else:
+ hidden_states = self.proj_out(hidden_states)
+ hidden_states = hidden_states.reshape(batch, height, width, inner_dim).permute(0, 3, 1, 2).contiguous()
+
+ output = hidden_states + residual
+ elif self.is_input_vectorized:
+ hidden_states = self.norm_out(hidden_states)
+ logits = self.out(hidden_states)
+ # (batch, self.num_vector_embeds - 1, self.num_latent_pixels)
+ logits = logits.permute(0, 2, 1)
+
+ # log(p(x_0))
+ output = F.log_softmax(logits.double(), dim=1).float()
+ elif self.is_input_patches:
+ # TODO: cleanup!
+ conditioning = self.transformer_blocks[0].norm1.emb(
+ timestep, class_labels, hidden_dtype=hidden_states.dtype
+ )
+ shift, scale = self.proj_out_1(F.silu(conditioning)).chunk(2, dim=1)
+ hidden_states = self.norm_out(hidden_states) * (1 + scale[:, None]) + shift[:, None]
+ hidden_states = self.proj_out_2(hidden_states)
+
+ # unpatchify
+ height = width = int(hidden_states.shape[1] ** 0.5)
+ hidden_states = hidden_states.reshape(
+ shape=(-1, height, width, self.patch_size, self.patch_size, self.out_channels)
+ )
+ hidden_states = torch.einsum("nhwpqc->nchpwq", hidden_states)
+ output = hidden_states.reshape(
+ shape=(-1, self.out_channels, height * self.patch_size, width * self.patch_size)
+ )
+
+ if not return_dict:
+ return (output,)
+
+ return TransformerMV2DModelOutput(sample=output)
+
+
+@maybe_allow_in_graph
+class BasicMVTransformerBlock(nn.Module):
+ r"""
+ A basic Transformer block.
+
+ Parameters:
+ dim (`int`): The number of channels in the input and output.
+ num_attention_heads (`int`): The number of heads to use for multi-head attention.
+ attention_head_dim (`int`): The number of channels in each head.
+ dropout (`float`, *optional*, defaults to 0.0): The dropout probability to use.
+ cross_attention_dim (`int`, *optional*): The size of the encoder_hidden_states vector for cross attention.
+ only_cross_attention (`bool`, *optional*):
+ Whether to use only cross-attention layers. In this case two cross attention layers are used.
+ double_self_attention (`bool`, *optional*):
+ Whether to use two self-attention layers. In this case no cross attention layers are used.
+ activation_fn (`str`, *optional*, defaults to `"geglu"`): Activation function to be used in feed-forward.
+ num_embeds_ada_norm (:
+ obj: `int`, *optional*): The number of diffusion steps used during training. See `Transformer2DModel`.
+ attention_bias (:
+ obj: `bool`, *optional*, defaults to `False`): Configure if the attentions should contain a bias parameter.
+ """
+
+ def __init__(
+ self,
+ dim: int,
+ num_attention_heads: int,
+ attention_head_dim: int,
+ dropout=0.0,
+ cross_attention_dim: Optional[int] = None,
+ activation_fn: str = "geglu",
+ num_embeds_ada_norm: Optional[int] = None,
+ attention_bias: bool = False,
+ only_cross_attention: bool = False,
+ double_self_attention: bool = False,
+ upcast_attention: bool = False,
+ norm_elementwise_affine: bool = True,
+ norm_type: str = "layer_norm",
+ final_dropout: bool = False,
+ num_views: int = 1,
+ joint_attention: bool = False,
+ joint_attention_twice: bool = False,
+ multiview_attention: bool = True,
+ cross_domain_attention: bool = False
+ ):
+ super().__init__()
+ self.only_cross_attention = only_cross_attention
+
+ self.use_ada_layer_norm_zero = (num_embeds_ada_norm is not None) and norm_type == "ada_norm_zero"
+ self.use_ada_layer_norm = (num_embeds_ada_norm is not None) and norm_type == "ada_norm"
+
+ if norm_type in ("ada_norm", "ada_norm_zero") and num_embeds_ada_norm is None:
+ raise ValueError(
+ f"`norm_type` is set to {norm_type}, but `num_embeds_ada_norm` is not defined. Please make sure to"
+ f" define `num_embeds_ada_norm` if setting `norm_type` to {norm_type}."
+ )
+
+ # Define 3 blocks. Each block has its own normalization layer.
+ # 1. Self-Attn
+ if self.use_ada_layer_norm:
+ self.norm1 = AdaLayerNorm(dim, num_embeds_ada_norm)
+ elif self.use_ada_layer_norm_zero:
+ self.norm1 = AdaLayerNormZero(dim, num_embeds_ada_norm)
+ else:
+ self.norm1 = nn.LayerNorm(dim, elementwise_affine=norm_elementwise_affine)
+
+ self.multiview_attention = multiview_attention
+ self.cross_domain_attention = cross_domain_attention
+ # import pdb;pdb.set_trace()
+ self.attn1 = CustomAttention(
+ query_dim=dim,
+ heads=num_attention_heads,
+ dim_head=attention_head_dim,
+ dropout=dropout,
+ bias=attention_bias,
+ cross_attention_dim=cross_attention_dim if only_cross_attention else None,
+ upcast_attention=upcast_attention,
+ processor=MVAttnProcessor()
+ )
+
+ # 2. Cross-Attn
+ if cross_attention_dim is not None or double_self_attention:
+ # We currently only use AdaLayerNormZero for self attention where there will only be one attention block.
+ # I.e. the number of returned modulation chunks from AdaLayerZero would not make sense if returned during
+ # the second cross attention block.
+ self.norm2 = (
+ AdaLayerNorm(dim, num_embeds_ada_norm)
+ if self.use_ada_layer_norm
+ else nn.LayerNorm(dim, elementwise_affine=norm_elementwise_affine)
+ )
+ self.attn2 = Attention(
+ query_dim=dim,
+ cross_attention_dim=cross_attention_dim if not double_self_attention else None,
+ heads=num_attention_heads,
+ dim_head=attention_head_dim,
+ dropout=dropout,
+ bias=attention_bias,
+ upcast_attention=upcast_attention,
+ ) # is self-attn if encoder_hidden_states is none
+ else:
+ self.norm2 = None
+ self.attn2 = None
+
+ # 3. Feed-forward
+ self.norm3 = nn.LayerNorm(dim, elementwise_affine=norm_elementwise_affine)
+ self.ff = FeedForward(dim, dropout=dropout, activation_fn=activation_fn, final_dropout=final_dropout)
+
+ # let chunk size default to None
+ self._chunk_size = None
+ self._chunk_dim = 0
+
+ self.num_views = num_views
+
+ self.joint_attention = joint_attention
+
+ if self.joint_attention:
+ # Joint task -Attn
+ self.attn_joint = CustomJointAttention(
+ query_dim=dim,
+ heads=num_attention_heads,
+ dim_head=attention_head_dim,
+ dropout=dropout,
+ bias=attention_bias,
+ cross_attention_dim=cross_attention_dim if only_cross_attention else None,
+ upcast_attention=upcast_attention,
+ processor=JointAttnProcessor()
+ )
+ nn.init.zeros_(self.attn_joint.to_out[0].weight.data)
+ self.norm_joint = AdaLayerNorm(dim, num_embeds_ada_norm) if self.use_ada_layer_norm else nn.LayerNorm(dim)
+
+
+ self.joint_attention_twice = joint_attention_twice
+
+ if self.joint_attention_twice:
+ print("joint twice")
+ # Joint task -Attn
+ self.attn_joint_twice = CustomJointAttention(
+ query_dim=dim,
+ heads=num_attention_heads,
+ dim_head=attention_head_dim,
+ dropout=dropout,
+ bias=attention_bias,
+ cross_attention_dim=cross_attention_dim if only_cross_attention else None,
+ upcast_attention=upcast_attention,
+ processor=JointAttnProcessor()
+ )
+ nn.init.zeros_(self.attn_joint_twice.to_out[0].weight.data)
+ self.norm_joint_twice = AdaLayerNorm(dim, num_embeds_ada_norm) if self.use_ada_layer_norm else nn.LayerNorm(dim)
+
+ def set_chunk_feed_forward(self, chunk_size: Optional[int], dim: int):
+ # Sets chunk feed-forward
+ self._chunk_size = chunk_size
+ self._chunk_dim = dim
+
+ def forward(
+ self,
+ hidden_states: torch.FloatTensor,
+ attention_mask: Optional[torch.FloatTensor] = None,
+ encoder_hidden_states: Optional[torch.FloatTensor] = None,
+ encoder_attention_mask: Optional[torch.FloatTensor] = None,
+ timestep: Optional[torch.LongTensor] = None,
+ cross_attention_kwargs: Dict[str, Any] = None,
+ class_labels: Optional[torch.LongTensor] = None,
+ ):
+ assert attention_mask is None # not supported yet
+ # Notice that normalization is always applied before the real computation in the following blocks.
+ # 1. Self-Attention
+ if self.use_ada_layer_norm:
+ norm_hidden_states = self.norm1(hidden_states, timestep)
+ elif self.use_ada_layer_norm_zero:
+ norm_hidden_states, gate_msa, shift_mlp, scale_mlp, gate_mlp = self.norm1(
+ hidden_states, timestep, class_labels, hidden_dtype=hidden_states.dtype
+ )
+ else:
+ norm_hidden_states = self.norm1(hidden_states)
+
+ cross_attention_kwargs = cross_attention_kwargs if cross_attention_kwargs is not None else {}
+ attn_output = self.attn1(
+ norm_hidden_states,
+ encoder_hidden_states=encoder_hidden_states if self.only_cross_attention else None,
+ attention_mask=attention_mask,
+ num_views=self.num_views,
+ multiview_attention=self.multiview_attention,
+ cross_domain_attention=self.cross_domain_attention,
+ **cross_attention_kwargs,
+ )
+
+
+ if self.use_ada_layer_norm_zero:
+ attn_output = gate_msa.unsqueeze(1) * attn_output
+ hidden_states = attn_output + hidden_states
+
+ # joint attention twice
+ if self.joint_attention_twice:
+ norm_hidden_states = (
+ self.norm_joint_twice(hidden_states, timestep) if self.use_ada_layer_norm else self.norm_joint_twice(hidden_states)
+ )
+ hidden_states = self.attn_joint_twice(norm_hidden_states) + hidden_states
+
+ # 2. Cross-Attention
+ if self.attn2 is not None:
+ norm_hidden_states = (
+ self.norm2(hidden_states, timestep) if self.use_ada_layer_norm else self.norm2(hidden_states)
+ )
+ attn_output = self.attn2(
+ norm_hidden_states,
+ encoder_hidden_states=encoder_hidden_states,
+ attention_mask=encoder_attention_mask,
+ **cross_attention_kwargs,
+ )
+ hidden_states = attn_output + hidden_states
+
+ # 3. Feed-forward
+ norm_hidden_states = self.norm3(hidden_states)
+
+ if self.use_ada_layer_norm_zero:
+ norm_hidden_states = norm_hidden_states * (1 + scale_mlp[:, None]) + shift_mlp[:, None]
+
+ if self._chunk_size is not None:
+ # "feed_forward_chunk_size" can be used to save memory
+ if norm_hidden_states.shape[self._chunk_dim] % self._chunk_size != 0:
+ raise ValueError(
+ f"`hidden_states` dimension to be chunked: {norm_hidden_states.shape[self._chunk_dim]} has to be divisible by chunk size: {self._chunk_size}. Make sure to set an appropriate `chunk_size` when calling `unet.enable_forward_chunking`."
+ )
+
+ num_chunks = norm_hidden_states.shape[self._chunk_dim] // self._chunk_size
+ ff_output = torch.cat(
+ [self.ff(hid_slice) for hid_slice in norm_hidden_states.chunk(num_chunks, dim=self._chunk_dim)],
+ dim=self._chunk_dim,
+ )
+ else:
+ ff_output = self.ff(norm_hidden_states)
+
+ if self.use_ada_layer_norm_zero:
+ ff_output = gate_mlp.unsqueeze(1) * ff_output
+
+ hidden_states = ff_output + hidden_states
+
+ if self.joint_attention:
+ norm_hidden_states = (
+ self.norm_joint(hidden_states, timestep) if self.use_ada_layer_norm else self.norm_joint(hidden_states)
+ )
+ hidden_states = self.attn_joint(norm_hidden_states) + hidden_states
+
+ return hidden_states
+
+
+class CustomAttention(Attention):
+ def set_use_memory_efficient_attention_xformers(
+ self, use_memory_efficient_attention_xformers: bool, *args, **kwargs
+ ):
+ processor = XFormersMVAttnProcessor()
+ self.set_processor(processor)
+ # print("using xformers attention processor")
+
+
+class CustomJointAttention(Attention):
+ def set_use_memory_efficient_attention_xformers(
+ self, use_memory_efficient_attention_xformers: bool, *args, **kwargs
+ ):
+ processor = XFormersJointAttnProcessor()
+ self.set_processor(processor)
+ # print("using xformers attention processor")
+
+class MVAttnProcessor:
+ r"""
+ Default processor for performing attention-related computations.
+ """
+
+ def __call__(
+ self,
+ attn: Attention,
+ hidden_states,
+ encoder_hidden_states=None,
+ attention_mask=None,
+ temb=None,
+ num_views=1,
+ multiview_attention=True
+ ):
+ residual = hidden_states
+
+ if attn.spatial_norm is not None:
+ hidden_states = attn.spatial_norm(hidden_states, temb)
+
+ input_ndim = hidden_states.ndim
+
+ if input_ndim == 4:
+ batch_size, channel, height, width = hidden_states.shape
+ hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2)
+
+ batch_size, sequence_length, _ = (
+ hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape
+ )
+ attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size)
+
+ if attn.group_norm is not None:
+ hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2)
+
+ query = attn.to_q(hidden_states)
+
+ if encoder_hidden_states is None:
+ encoder_hidden_states = hidden_states
+ elif attn.norm_cross:
+ encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states)
+
+ key = attn.to_k(encoder_hidden_states)
+ value = attn.to_v(encoder_hidden_states)
+
+ # print('query', query.shape, 'key', key.shape, 'value', value.shape)
+ #([bx4, 1024, 320]) key torch.Size([bx4, 1024, 320]) value torch.Size([bx4, 1024, 320])
+ # pdb.set_trace()
+ # multi-view self-attention
+ if multiview_attention:
+ if num_views <= 6:
+ # after use xformer; possible to train with 6 views
+ # key = rearrange(key, "(b t) d c -> b (t d) c", t=num_views).repeat_interleave(num_views, dim=0)
+ # value = rearrange(value, "(b t) d c -> b (t d) c", t=num_views).repeat_interleave(num_views, dim=0)
+ key = rearrange(key, '(b t) d c-> b (t d) c', t=num_views).unsqueeze(1).repeat(1,num_views,1,1).flatten(0,1)
+ value = rearrange(value, '(b t) d c-> b (t d) c', t=num_views).unsqueeze(1).repeat(1,num_views,1,1).flatten(0,1)
+
+ else:# apply sparse attention
+ pass
+ # print("use sparse attention")
+ # # seems that the sparse random sampling cause problems
+ # # don't use random sampling, just fix the indexes
+ # onekey = rearrange(key, "(b t) d c -> b t d c", t=num_views)
+ # onevalue = rearrange(value, "(b t) d c -> b t d c", t=num_views)
+ # allkeys = []
+ # allvalues = []
+ # all_indexes = {
+ # 0 : [0, 2, 3, 4],
+ # 1: [0, 1, 3, 5],
+ # 2: [0, 2, 3, 4],
+ # 3: [0, 2, 3, 4],
+ # 4: [0, 2, 3, 4],
+ # 5: [0, 1, 3, 5]
+ # }
+ # for jj in range(num_views):
+ # # valid_index = [x for x in range(0, num_views) if x!= jj]
+ # # indexes = random.sample(valid_index, 3) + [jj] + [0]
+ # indexes = all_indexes[jj]
+
+ # indexes = torch.tensor(indexes).long().to(key.device)
+ # allkeys.append(onekey[:, indexes])
+ # allvalues.append(onevalue[:, indexes])
+ # keys = torch.stack(allkeys, dim=1) # checked, should be dim=1
+ # values = torch.stack(allvalues, dim=1)
+ # key = rearrange(keys, 'b t f d c -> (b t) (f d) c')
+ # value = rearrange(values, 'b t f d c -> (b t) (f d) c')
+
+
+ query = attn.head_to_batch_dim(query).contiguous()
+ key = attn.head_to_batch_dim(key).contiguous()
+ value = attn.head_to_batch_dim(value).contiguous()
+
+ attention_probs = attn.get_attention_scores(query, key, attention_mask)
+ hidden_states = torch.bmm(attention_probs, value)
+ hidden_states = attn.batch_to_head_dim(hidden_states)
+
+ # linear proj
+ hidden_states = attn.to_out[0](hidden_states)
+ # dropout
+ hidden_states = attn.to_out[1](hidden_states)
+
+ if input_ndim == 4:
+ hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width)
+
+ if attn.residual_connection:
+ hidden_states = hidden_states + residual
+
+ hidden_states = hidden_states / attn.rescale_output_factor
+
+ return hidden_states
+
+
+class XFormersMVAttnProcessor:
+ r"""
+ Default processor for performing attention-related computations.
+ """
+
+ def __call__(
+ self,
+ attn: Attention,
+ hidden_states,
+ encoder_hidden_states=None,
+ attention_mask=None,
+ temb=None,
+ num_views=1.,
+ multiview_attention=True,
+ cross_domain_attention=False,
+ ):
+ residual = hidden_states
+
+ if attn.spatial_norm is not None:
+ hidden_states = attn.spatial_norm(hidden_states, temb)
+
+ input_ndim = hidden_states.ndim
+
+ if input_ndim == 4:
+ batch_size, channel, height, width = hidden_states.shape
+ hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2)
+
+ batch_size, sequence_length, _ = (
+ hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape
+ )
+ attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size)
+
+ # from yuancheng; here attention_mask is None
+ if attention_mask is not None:
+ # expand our mask's singleton query_tokens dimension:
+ # [batch*heads, 1, key_tokens] ->
+ # [batch*heads, query_tokens, key_tokens]
+ # so that it can be added as a bias onto the attention scores that xformers computes:
+ # [batch*heads, query_tokens, key_tokens]
+ # we do this explicitly because xformers doesn't broadcast the singleton dimension for us.
+ _, query_tokens, _ = hidden_states.shape
+ attention_mask = attention_mask.expand(-1, query_tokens, -1)
+
+ if attn.group_norm is not None:
+ hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2)
+
+ query = attn.to_q(hidden_states)
+
+ if encoder_hidden_states is None:
+ encoder_hidden_states = hidden_states
+ elif attn.norm_cross:
+ encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states)
+
+ key_raw = attn.to_k(encoder_hidden_states)
+ value_raw = attn.to_v(encoder_hidden_states)
+
+ # print('query', query.shape, 'key', key.shape, 'value', value.shape)
+ #([bx4, 1024, 320]) key torch.Size([bx4, 1024, 320]) value torch.Size([bx4, 1024, 320])
+ # pdb.set_trace()
+ # multi-view self-attention
+ if multiview_attention:
+ key = rearrange(key_raw, "(b t) d c -> b (t d) c", t=num_views).repeat_interleave(num_views, dim=0)
+ value = rearrange(value_raw, "(b t) d c -> b (t d) c", t=num_views).repeat_interleave(num_views, dim=0)
+
+ if cross_domain_attention:
+ # memory efficient, cross domain attention
+ key_0, key_1 = torch.chunk(key_raw, dim=0, chunks=2) # keys shape (b t) d c
+ value_0, value_1 = torch.chunk(value_raw, dim=0, chunks=2)
+ key_cross = torch.concat([key_1, key_0], dim=0)
+ value_cross = torch.concat([value_1, value_0], dim=0) # shape (b t) d c
+ key = torch.cat([key, key_cross], dim=1)
+ value = torch.cat([value, value_cross], dim=1) # shape (b t) (t+1 d) c
+ else:
+ # print("don't use multiview attention.")
+ key = key_raw
+ value = value_raw
+
+ query = attn.head_to_batch_dim(query)
+ key = attn.head_to_batch_dim(key)
+ value = attn.head_to_batch_dim(value)
+
+ hidden_states = xformers.ops.memory_efficient_attention(query, key, value, attn_bias=attention_mask)
+ hidden_states = attn.batch_to_head_dim(hidden_states)
+
+ # linear proj
+ hidden_states = attn.to_out[0](hidden_states)
+ # dropout
+ hidden_states = attn.to_out[1](hidden_states)
+
+ if input_ndim == 4:
+ hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width)
+
+ if attn.residual_connection:
+ hidden_states = hidden_states + residual
+
+ hidden_states = hidden_states / attn.rescale_output_factor
+
+ return hidden_states
+
+
+
+class XFormersJointAttnProcessor:
+ r"""
+ Default processor for performing attention-related computations.
+ """
+
+ def __call__(
+ self,
+ attn: Attention,
+ hidden_states,
+ encoder_hidden_states=None,
+ attention_mask=None,
+ temb=None,
+ num_tasks=2
+ ):
+
+ residual = hidden_states
+
+ if attn.spatial_norm is not None:
+ hidden_states = attn.spatial_norm(hidden_states, temb)
+
+ input_ndim = hidden_states.ndim
+
+ if input_ndim == 4:
+ batch_size, channel, height, width = hidden_states.shape
+ hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2)
+
+ batch_size, sequence_length, _ = (
+ hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape
+ )
+ attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size)
+
+ # from yuancheng; here attention_mask is None
+ if attention_mask is not None:
+ # expand our mask's singleton query_tokens dimension:
+ # [batch*heads, 1, key_tokens] ->
+ # [batch*heads, query_tokens, key_tokens]
+ # so that it can be added as a bias onto the attention scores that xformers computes:
+ # [batch*heads, query_tokens, key_tokens]
+ # we do this explicitly because xformers doesn't broadcast the singleton dimension for us.
+ _, query_tokens, _ = hidden_states.shape
+ attention_mask = attention_mask.expand(-1, query_tokens, -1)
+
+ if attn.group_norm is not None:
+ hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2)
+
+ query = attn.to_q(hidden_states)
+
+ if encoder_hidden_states is None:
+ encoder_hidden_states = hidden_states
+ elif attn.norm_cross:
+ encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states)
+
+ key = attn.to_k(encoder_hidden_states)
+ value = attn.to_v(encoder_hidden_states)
+
+ assert num_tasks == 2 # only support two tasks now
+
+ key_0, key_1 = torch.chunk(key, dim=0, chunks=2) # keys shape (b t) d c
+ value_0, value_1 = torch.chunk(value, dim=0, chunks=2)
+ key = torch.cat([key_0, key_1], dim=1) # (b t) 2d c
+ value = torch.cat([value_0, value_1], dim=1) # (b t) 2d c
+ key = torch.cat([key]*2, dim=0) # ( 2 b t) 2d c
+ value = torch.cat([value]*2, dim=0) # (2 b t) 2d c
+
+
+ query = attn.head_to_batch_dim(query).contiguous()
+ key = attn.head_to_batch_dim(key).contiguous()
+ value = attn.head_to_batch_dim(value).contiguous()
+
+ hidden_states = xformers.ops.memory_efficient_attention(query, key, value, attn_bias=attention_mask)
+ hidden_states = attn.batch_to_head_dim(hidden_states)
+
+ # linear proj
+ hidden_states = attn.to_out[0](hidden_states)
+ # dropout
+ hidden_states = attn.to_out[1](hidden_states)
+
+ if input_ndim == 4:
+ hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width)
+
+ if attn.residual_connection:
+ hidden_states = hidden_states + residual
+
+ hidden_states = hidden_states / attn.rescale_output_factor
+
+ return hidden_states
+
+
+class JointAttnProcessor:
+ r"""
+ Default processor for performing attention-related computations.
+ """
+
+ def __call__(
+ self,
+ attn: Attention,
+ hidden_states,
+ encoder_hidden_states=None,
+ attention_mask=None,
+ temb=None,
+ num_tasks=2
+ ):
+
+ residual = hidden_states
+
+ if attn.spatial_norm is not None:
+ hidden_states = attn.spatial_norm(hidden_states, temb)
+
+ input_ndim = hidden_states.ndim
+
+ if input_ndim == 4:
+ batch_size, channel, height, width = hidden_states.shape
+ hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2)
+
+ batch_size, sequence_length, _ = (
+ hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape
+ )
+ attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size)
+
+
+ if attn.group_norm is not None:
+ hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2)
+
+ query = attn.to_q(hidden_states)
+
+ if encoder_hidden_states is None:
+ encoder_hidden_states = hidden_states
+ elif attn.norm_cross:
+ encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states)
+
+ key = attn.to_k(encoder_hidden_states)
+ value = attn.to_v(encoder_hidden_states)
+
+ assert num_tasks == 2 # only support two tasks now
+
+ key_0, key_1 = torch.chunk(key, dim=0, chunks=2) # keys shape (b t) d c
+ value_0, value_1 = torch.chunk(value, dim=0, chunks=2)
+ key = torch.cat([key_0, key_1], dim=1) # (b t) 2d c
+ value = torch.cat([value_0, value_1], dim=1) # (b t) 2d c
+ key = torch.cat([key]*2, dim=0) # ( 2 b t) 2d c
+ value = torch.cat([value]*2, dim=0) # (2 b t) 2d c
+
+
+ query = attn.head_to_batch_dim(query).contiguous()
+ key = attn.head_to_batch_dim(key).contiguous()
+ value = attn.head_to_batch_dim(value).contiguous()
+
+ attention_probs = attn.get_attention_scores(query, key, attention_mask)
+ hidden_states = torch.bmm(attention_probs, value)
+ hidden_states = attn.batch_to_head_dim(hidden_states)
+
+ # linear proj
+ hidden_states = attn.to_out[0](hidden_states)
+ # dropout
+ hidden_states = attn.to_out[1](hidden_states)
+
+ if input_ndim == 4:
+ hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width)
+
+ if attn.residual_connection:
+ hidden_states = hidden_states + residual
+
+ hidden_states = hidden_states / attn.rescale_output_factor
+
+ return hidden_states
\ No newline at end of file
diff --git a/2D_Stage/tuneavideo/models/unet.py b/2D_Stage/tuneavideo/models/unet.py
new file mode 100644
index 0000000000000000000000000000000000000000..fa156afe8f0f179cd5d4b2aef569073eafeb690c
--- /dev/null
+++ b/2D_Stage/tuneavideo/models/unet.py
@@ -0,0 +1,497 @@
+# Adapted from https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/unet_2d_condition.py
+
+from dataclasses import dataclass
+from typing import List, Optional, Tuple, Union
+
+import os
+import json
+
+import torch
+import torch.nn as nn
+import torch.utils.checkpoint
+
+from diffusers.configuration_utils import ConfigMixin, register_to_config
+from diffusers import ModelMixin
+from diffusers.utils import BaseOutput, logging
+from diffusers.models.embeddings import TimestepEmbedding, Timesteps
+from .unet_blocks import (
+ CrossAttnDownBlock3D,
+ CrossAttnUpBlock3D,
+ DownBlock3D,
+ UNetMidBlock3DCrossAttn,
+ UpBlock3D,
+ get_down_block,
+ get_up_block,
+)
+from .resnet import InflatedConv3d
+
+
+logger = logging.get_logger(__name__) # pylint: disable=invalid-name
+
+
+@dataclass
+class UNet3DConditionOutput(BaseOutput):
+ sample: torch.FloatTensor
+
+
+class UNet3DConditionModel(ModelMixin, ConfigMixin):
+ _supports_gradient_checkpointing = True
+
+ @register_to_config
+ def __init__(
+ self,
+ sample_size: Optional[int] = None,
+ in_channels: int = 4,
+ out_channels: int = 4,
+ center_input_sample: bool = False,
+ flip_sin_to_cos: bool = True,
+ freq_shift: int = 0,
+ down_block_types: Tuple[str] = (
+ "CrossAttnDownBlock3D",
+ "CrossAttnDownBlock3D",
+ "CrossAttnDownBlock3D",
+ "DownBlock3D",
+ ),
+ mid_block_type: str = "UNetMidBlock3DCrossAttn",
+ up_block_types: Tuple[str] = (
+ "UpBlock3D",
+ "CrossAttnUpBlock3D",
+ "CrossAttnUpBlock3D",
+ "CrossAttnUpBlock3D"
+ ),
+ only_cross_attention: Union[bool, Tuple[bool]] = False,
+ block_out_channels: Tuple[int] = (320, 640, 1280, 1280),
+ layers_per_block: int = 2,
+ downsample_padding: int = 1,
+ mid_block_scale_factor: float = 1,
+ act_fn: str = "silu",
+ norm_num_groups: int = 32,
+ norm_eps: float = 1e-5,
+ cross_attention_dim: int = 1280,
+ attention_head_dim: Union[int, Tuple[int]] = 8,
+ dual_cross_attention: bool = False,
+ use_linear_projection: bool = False,
+ class_embed_type: Optional[str] = None,
+ num_class_embeds: Optional[int] = None,
+ upcast_attention: bool = False,
+ resnet_time_scale_shift: str = "default",
+ use_attn_temp: bool = False,
+ camera_input_dim: int = 12,
+ camera_hidden_dim: int = 320,
+ camera_output_dim: int = 1280,
+ ):
+ super().__init__()
+
+ self.sample_size = sample_size
+ time_embed_dim = block_out_channels[0] * 4
+
+ # input
+ self.conv_in = InflatedConv3d(in_channels, block_out_channels[0], kernel_size=3, padding=(1, 1))
+
+ # time
+ self.time_proj = Timesteps(block_out_channels[0], flip_sin_to_cos, freq_shift)
+ timestep_input_dim = block_out_channels[0]
+
+ self.time_embedding = TimestepEmbedding(timestep_input_dim, time_embed_dim)
+
+ # class embedding
+ if class_embed_type is None and num_class_embeds is not None:
+ self.class_embedding = nn.Embedding(num_class_embeds, time_embed_dim)
+ elif class_embed_type == "timestep":
+ self.class_embedding = TimestepEmbedding(timestep_input_dim, time_embed_dim)
+ elif class_embed_type == "identity":
+ self.class_embedding = nn.Identity(time_embed_dim, time_embed_dim)
+ else:
+ self.class_embedding = None
+
+ # camera metrix
+ # def init_linear(l, stddev):
+ # nn.init.normal_(l.weight, std=stddev)
+ # if l.bias is not None:
+ # nn.init.constant_(l.bias, 0.0)
+ # self.camera_embedding_1 = nn.Linear(camera_input_dim, camera_hidden_dim)
+ # self.camera_embedding_2 = nn.Linear(camera_hidden_dim, camera_output_dim)
+ # init_linear(self.camera_embedding_1, 0.25)
+ # init_linear(self.camera_embedding_2, 0.25)
+
+ self.camera_embedding = nn.Sequential(
+ nn.Linear(camera_input_dim, time_embed_dim),
+ nn.SiLU(),
+ nn.Linear(time_embed_dim, time_embed_dim),
+ )
+
+ self.down_blocks = nn.ModuleList([])
+ self.mid_block = None
+ self.up_blocks = nn.ModuleList([])
+
+ if isinstance(only_cross_attention, bool):
+ only_cross_attention = [only_cross_attention] * len(down_block_types)
+
+ if isinstance(attention_head_dim, int):
+ attention_head_dim = (attention_head_dim,) * len(down_block_types)
+
+ # down
+ output_channel = block_out_channels[0]
+ for i, down_block_type in enumerate(down_block_types):
+ input_channel = output_channel
+ output_channel = block_out_channels[i]
+ is_final_block = i == len(block_out_channels) - 1
+
+ down_block = get_down_block(
+ down_block_type,
+ num_layers=layers_per_block,
+ in_channels=input_channel,
+ out_channels=output_channel,
+ temb_channels=time_embed_dim,
+ add_downsample=not is_final_block,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ resnet_groups=norm_num_groups,
+ cross_attention_dim=cross_attention_dim,
+ attn_num_head_channels=attention_head_dim[i],
+ downsample_padding=downsample_padding,
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention[i],
+ upcast_attention=upcast_attention,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ use_attn_temp=use_attn_temp
+ )
+ self.down_blocks.append(down_block)
+
+ # mid
+ if mid_block_type == "UNetMidBlock3DCrossAttn":
+ self.mid_block = UNetMidBlock3DCrossAttn(
+ in_channels=block_out_channels[-1],
+ temb_channels=time_embed_dim,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ output_scale_factor=mid_block_scale_factor,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ cross_attention_dim=cross_attention_dim,
+ attn_num_head_channels=attention_head_dim[-1],
+ resnet_groups=norm_num_groups,
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ upcast_attention=upcast_attention,
+ )
+ else:
+ raise ValueError(f"unknown mid_block_type : {mid_block_type}")
+
+ # count how many layers upsample the videos
+ self.num_upsamplers = 0
+
+ # up
+ reversed_block_out_channels = list(reversed(block_out_channels))
+ reversed_attention_head_dim = list(reversed(attention_head_dim))
+ only_cross_attention = list(reversed(only_cross_attention))
+ output_channel = reversed_block_out_channels[0]
+ for i, up_block_type in enumerate(up_block_types):
+ is_final_block = i == len(block_out_channels) - 1
+
+ prev_output_channel = output_channel
+ output_channel = reversed_block_out_channels[i]
+ input_channel = reversed_block_out_channels[min(i + 1, len(block_out_channels) - 1)]
+
+ # add upsample block for all BUT final layer
+ if not is_final_block:
+ add_upsample = True
+ self.num_upsamplers += 1
+ else:
+ add_upsample = False
+
+ up_block = get_up_block(
+ up_block_type,
+ num_layers=layers_per_block + 1,
+ in_channels=input_channel,
+ out_channels=output_channel,
+ prev_output_channel=prev_output_channel,
+ temb_channels=time_embed_dim,
+ add_upsample=add_upsample,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ resnet_groups=norm_num_groups,
+ cross_attention_dim=cross_attention_dim,
+ attn_num_head_channels=reversed_attention_head_dim[i],
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention[i],
+ upcast_attention=upcast_attention,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ use_attn_temp=use_attn_temp,
+ )
+ self.up_blocks.append(up_block)
+ prev_output_channel = output_channel
+
+ # out
+ self.conv_norm_out = nn.GroupNorm(num_channels=block_out_channels[0], num_groups=norm_num_groups, eps=norm_eps)
+ self.conv_act = nn.SiLU()
+ self.conv_out = InflatedConv3d(block_out_channels[0], out_channels, kernel_size=3, padding=1)
+
+ def set_attention_slice(self, slice_size):
+ r"""
+ Enable sliced attention computation.
+
+ When this option is enabled, the attention module will split the input tensor in slices, to compute attention
+ in several steps. This is useful to save some memory in exchange for a small speed decrease.
+
+ Args:
+ slice_size (`str` or `int` or `list(int)`, *optional*, defaults to `"auto"`):
+ When `"auto"`, halves the input to the attention heads, so attention will be computed in two steps. If
+ `"max"`, maxium amount of memory will be saved by running only one slice at a time. If a number is
+ provided, uses as many slices as `attention_head_dim // slice_size`. In this case, `attention_head_dim`
+ must be a multiple of `slice_size`.
+ """
+ sliceable_head_dims = []
+
+ def fn_recursive_retrieve_slicable_dims(module: torch.nn.Module):
+ if hasattr(module, "set_attention_slice"):
+ sliceable_head_dims.append(module.sliceable_head_dim)
+
+ for child in module.children():
+ fn_recursive_retrieve_slicable_dims(child)
+
+ # retrieve number of attention layers
+ for module in self.children():
+ fn_recursive_retrieve_slicable_dims(module)
+
+ num_slicable_layers = len(sliceable_head_dims)
+
+ if slice_size == "auto":
+ # half the attention head size is usually a good trade-off between
+ # speed and memory
+ slice_size = [dim // 2 for dim in sliceable_head_dims]
+ elif slice_size == "max":
+ # make smallest slice possible
+ slice_size = num_slicable_layers * [1]
+
+ slice_size = num_slicable_layers * [slice_size] if not isinstance(slice_size, list) else slice_size
+
+ if len(slice_size) != len(sliceable_head_dims):
+ raise ValueError(
+ f"You have provided {len(slice_size)}, but {self.config} has {len(sliceable_head_dims)} different"
+ f" attention layers. Make sure to match `len(slice_size)` to be {len(sliceable_head_dims)}."
+ )
+
+ for i in range(len(slice_size)):
+ size = slice_size[i]
+ dim = sliceable_head_dims[i]
+ if size is not None and size > dim:
+ raise ValueError(f"size {size} has to be smaller or equal to {dim}.")
+
+ # Recursively walk through all the children.
+ # Any children which exposes the set_attention_slice method
+ # gets the message
+ def fn_recursive_set_attention_slice(module: torch.nn.Module, slice_size: List[int]):
+ if hasattr(module, "set_attention_slice"):
+ module.set_attention_slice(slice_size.pop())
+
+ for child in module.children():
+ fn_recursive_set_attention_slice(child, slice_size)
+
+ reversed_slice_size = list(reversed(slice_size))
+ for module in self.children():
+ fn_recursive_set_attention_slice(module, reversed_slice_size)
+
+ def _set_gradient_checkpointing(self, module, value=False):
+ if isinstance(module, (CrossAttnDownBlock3D, DownBlock3D, CrossAttnUpBlock3D, UpBlock3D)):
+ module.gradient_checkpointing = value
+
+ def forward(
+ self,
+ sample: torch.FloatTensor,
+ timestep: Union[torch.Tensor, float, int],
+ encoder_hidden_states: torch.Tensor,
+ camera_matrixs: Optional[torch.Tensor] = None,
+ class_labels: Optional[torch.Tensor] = None,
+ attention_mask: Optional[torch.Tensor] = None,
+ return_dict: bool = True,
+ ) -> Union[UNet3DConditionOutput, Tuple]:
+ r"""
+ Args:
+ sample (`torch.FloatTensor`): (batch, channel, height, width) noisy inputs tensor
+ timestep (`torch.FloatTensor` or `float` or `int`): (batch) timesteps
+ encoder_hidden_states (`torch.FloatTensor`): (batch, sequence_length, feature_dim) encoder hidden states
+ return_dict (`bool`, *optional*, defaults to `True`):
+ Whether or not to return a [`models.unet_2d_condition.UNet2DConditionOutput`] instead of a plain tuple.
+
+ Returns:
+ [`~models.unet_2d_condition.UNet2DConditionOutput`] or `tuple`:
+ [`~models.unet_2d_condition.UNet2DConditionOutput`] if `return_dict` is True, otherwise a `tuple`. When
+ returning a tuple, the first element is the sample tensor.
+ """
+ # By default samples have to be AT least a multiple of the overall upsampling factor.
+ # The overall upsampling factor is equal to 2 ** (# num of upsampling layears).
+ # However, the upsampling interpolation output size can be forced to fit any upsampling size
+ # on the fly if necessary.
+ default_overall_up_factor = 2**self.num_upsamplers
+
+ # upsample size should be forwarded when sample is not a multiple of `default_overall_up_factor`
+ forward_upsample_size = False
+ upsample_size = None
+
+ if any(s % default_overall_up_factor != 0 for s in sample.shape[-2:]):
+ logger.info("Forward upsample size to force interpolation output size.")
+ forward_upsample_size = True
+
+ # prepare attention_mask
+ if attention_mask is not None:
+ attention_mask = (1 - attention_mask.to(sample.dtype)) * -10000.0
+ attention_mask = attention_mask.unsqueeze(1)
+
+ # center input if necessary
+ if self.config.center_input_sample:
+ sample = 2 * sample - 1.0
+ # time
+ timesteps = timestep
+ if not torch.is_tensor(timesteps):
+ # This would be a good case for the `match` statement (Python 3.10+)
+ is_mps = sample.device.type == "mps"
+ if isinstance(timestep, float):
+ dtype = torch.float32 if is_mps else torch.float64
+ else:
+ dtype = torch.int32 if is_mps else torch.int64
+ timesteps = torch.tensor([timesteps], dtype=dtype, device=sample.device)
+ elif len(timesteps.shape) == 0:
+ timesteps = timesteps[None].to(sample.device)
+
+ # broadcast to batch dimension in a way that's compatible with ONNX/Core ML
+ timesteps = timesteps.expand(sample.shape[0])
+
+ t_emb = self.time_proj(timesteps)
+
+ # timesteps does not contain any weights and will always return f32 tensors
+ # but time_embedding might actually be running in fp16. so we need to cast here.
+ # there might be better ways to encapsulate this.
+ t_emb = t_emb.to(dtype=self.dtype)
+ emb = self.time_embedding(t_emb) #torch.Size([32, 1280])
+ emb = torch.unsqueeze(emb, 1)
+ if camera_matrixs is not None:
+ # came emb
+ cam_emb = self.camera_embedding(camera_matrixs)
+ # cam_emb = self.camera_embedding_2(cam_emb)
+ emb = emb.repeat(1,cam_emb.shape[1],1) #torch.Size([32, 4, 1280])
+ emb = emb + cam_emb
+
+ # import pdb;pdb.set_trace()
+ if self.class_embedding is not None:
+ # if class_labels is None:
+ # raise ValueError("class_labels should be provided when num_class_embeds > 0")
+ if class_labels is not None:
+
+ if self.config.class_embed_type == "timestep":
+ class_labels = self.time_proj(class_labels)
+
+ class_emb = self.class_embedding(class_labels)
+ emb = emb + class_emb
+
+ # pre-process
+ sample = self.conv_in(sample)
+
+ # down
+ down_block_res_samples = (sample,)
+ for downsample_block in self.down_blocks:
+ if hasattr(downsample_block, "has_cross_attention") and downsample_block.has_cross_attention:
+ sample, res_samples = downsample_block(
+ hidden_states=sample,
+ temb=emb,
+ encoder_hidden_states=encoder_hidden_states,
+ attention_mask=attention_mask,
+ )
+ else:
+ sample, res_samples = downsample_block(hidden_states=sample, temb=emb)
+
+ down_block_res_samples += res_samples
+
+ # mid
+ sample = self.mid_block(
+ sample, emb, encoder_hidden_states=encoder_hidden_states, attention_mask=attention_mask
+ )
+
+ # up
+ for i, upsample_block in enumerate(self.up_blocks):
+ is_final_block = i == len(self.up_blocks) - 1
+
+ res_samples = down_block_res_samples[-len(upsample_block.resnets) :]
+ down_block_res_samples = down_block_res_samples[: -len(upsample_block.resnets)]
+
+ # if we have not reached the final block and need to forward the
+ # upsample size, we do it here
+ if not is_final_block and forward_upsample_size:
+ upsample_size = down_block_res_samples[-1].shape[2:]
+
+ if hasattr(upsample_block, "has_cross_attention") and upsample_block.has_cross_attention:
+ sample = upsample_block(
+ hidden_states=sample,
+ temb=emb,
+ res_hidden_states_tuple=res_samples,
+ encoder_hidden_states=encoder_hidden_states,
+ upsample_size=upsample_size,
+ attention_mask=attention_mask,
+ )
+ else:
+ sample = upsample_block(
+ hidden_states=sample, temb=emb, res_hidden_states_tuple=res_samples, upsample_size=upsample_size
+ )
+ # post-process
+ sample = self.conv_norm_out(sample)
+ sample = self.conv_act(sample)
+ sample = self.conv_out(sample)
+
+ if not return_dict:
+ return (sample,)
+
+ return UNet3DConditionOutput(sample=sample)
+
+ @classmethod
+ def from_pretrained_2d(cls, pretrained_model_path, subfolder=None):
+ if subfolder is not None:
+ pretrained_model_path = os.path.join(pretrained_model_path, subfolder)
+
+ config_file = os.path.join(pretrained_model_path, 'config.json')
+ if not os.path.isfile(config_file):
+ raise RuntimeError(f"{config_file} does not exist")
+ with open(config_file, "r") as f:
+ config = json.load(f)
+ config["_class_name"] = cls.__name__
+ config["down_block_types"] = [
+ "CrossAttnDownBlock3D",
+ "CrossAttnDownBlock3D",
+ "CrossAttnDownBlock3D",
+ "DownBlock3D"
+ ]
+ config["up_block_types"] = [
+ "UpBlock3D",
+ "CrossAttnUpBlock3D",
+ "CrossAttnUpBlock3D",
+ "CrossAttnUpBlock3D"
+ ]
+
+ from diffusers.utils import WEIGHTS_NAME, SAFETENSORS_WEIGHTS_NAME
+ # model = cls.from_config(config)
+ # model_file = os.path.join(pretrained_model_path, WEIGHTS_NAME)
+ # if not os.path.isfile(model_file):
+ # raise RuntimeError(f"{model_file} does not exist")
+ # state_dict = torch.load(model_file, map_location="cpu")
+
+ import safetensors
+ model = cls.from_config(config)
+ model_file = os.path.join(pretrained_model_path, WEIGHTS_NAME)
+ if not os.path.isfile(model_file):
+ model_file = os.path.join(pretrained_model_path, SAFETENSORS_WEIGHTS_NAME)
+ if not os.path.isfile(model_file):
+ raise RuntimeError(f"{model_file} does not exist")
+ else:
+ state_dict = safetensors.torch.load_file(model_file, device="cpu")
+ else:
+ state_dict = torch.load(model_file, map_location="cpu")
+
+ for k, v in model.state_dict().items():
+ if '_temp.' in k or 'camera_embedding' in k or 'class_embedding' in k:
+ state_dict.update({k: v})
+ for k in list(state_dict.keys()):
+ if 'camera_embedding_' in k:
+ v = state_dict.pop(k)
+ model.load_state_dict(state_dict)
+
+ return model
\ No newline at end of file
diff --git a/2D_Stage/tuneavideo/models/unet_blocks.py b/2D_Stage/tuneavideo/models/unet_blocks.py
new file mode 100644
index 0000000000000000000000000000000000000000..ac9b78d42fbd35261c23775e54cfa88f6507925d
--- /dev/null
+++ b/2D_Stage/tuneavideo/models/unet_blocks.py
@@ -0,0 +1,596 @@
+# Adapted from https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/unet_2d_blocks.py
+
+import torch
+from torch import nn
+
+# from .attention import Transformer3DModel
+from .resnet import Downsample3D, ResnetBlock3D, Upsample3D
+
+
+def get_down_block(
+ down_block_type,
+ num_layers,
+ in_channels,
+ out_channels,
+ temb_channels,
+ add_downsample,
+ resnet_eps,
+ resnet_act_fn,
+ attn_num_head_channels,
+ resnet_groups=None,
+ cross_attention_dim=None,
+ downsample_padding=None,
+ dual_cross_attention=False,
+ use_linear_projection=False,
+ only_cross_attention=False,
+ upcast_attention=False,
+ resnet_time_scale_shift="default",
+ use_attn_temp=False,
+):
+ down_block_type = down_block_type[7:] if down_block_type.startswith("UNetRes") else down_block_type
+ if down_block_type == "DownBlock3D":
+ return DownBlock3D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ add_downsample=add_downsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ downsample_padding=downsample_padding,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ )
+ elif down_block_type == "CrossAttnDownBlock3D":
+ if cross_attention_dim is None:
+ raise ValueError("cross_attention_dim must be specified for CrossAttnDownBlock3D")
+ return CrossAttnDownBlock3D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ add_downsample=add_downsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ downsample_padding=downsample_padding,
+ cross_attention_dim=cross_attention_dim,
+ attn_num_head_channels=attn_num_head_channels,
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention,
+ upcast_attention=upcast_attention,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ use_attn_temp=use_attn_temp,
+ )
+ raise ValueError(f"{down_block_type} does not exist.")
+
+
+def get_up_block(
+ up_block_type,
+ num_layers,
+ in_channels,
+ out_channels,
+ prev_output_channel,
+ temb_channels,
+ add_upsample,
+ resnet_eps,
+ resnet_act_fn,
+ attn_num_head_channels,
+ resnet_groups=None,
+ cross_attention_dim=None,
+ dual_cross_attention=False,
+ use_linear_projection=False,
+ only_cross_attention=False,
+ upcast_attention=False,
+ resnet_time_scale_shift="default",
+ use_attn_temp=False,
+):
+ up_block_type = up_block_type[7:] if up_block_type.startswith("UNetRes") else up_block_type
+ if up_block_type == "UpBlock3D":
+ return UpBlock3D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ prev_output_channel=prev_output_channel,
+ temb_channels=temb_channels,
+ add_upsample=add_upsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ )
+ elif up_block_type == "CrossAttnUpBlock3D":
+ if cross_attention_dim is None:
+ raise ValueError("cross_attention_dim must be specified for CrossAttnUpBlock3D")
+ return CrossAttnUpBlock3D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ prev_output_channel=prev_output_channel,
+ temb_channels=temb_channels,
+ add_upsample=add_upsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ cross_attention_dim=cross_attention_dim,
+ attn_num_head_channels=attn_num_head_channels,
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention,
+ upcast_attention=upcast_attention,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ use_attn_temp=use_attn_temp,
+ )
+ raise ValueError(f"{up_block_type} does not exist.")
+
+
+class UNetMidBlock3DCrossAttn(nn.Module):
+ def __init__(
+ self,
+ in_channels: int,
+ temb_channels: int,
+ dropout: float = 0.0,
+ num_layers: int = 1,
+ resnet_eps: float = 1e-6,
+ resnet_time_scale_shift: str = "default",
+ resnet_act_fn: str = "swish",
+ resnet_groups: int = 32,
+ resnet_pre_norm: bool = True,
+ attn_num_head_channels=1,
+ output_scale_factor=1.0,
+ cross_attention_dim=1280,
+ dual_cross_attention=False,
+ use_linear_projection=False,
+ upcast_attention=False,
+ ):
+ super().__init__()
+
+ self.has_cross_attention = True
+ self.attn_num_head_channels = attn_num_head_channels
+ resnet_groups = resnet_groups if resnet_groups is not None else min(in_channels // 4, 32)
+
+ # there is always at least one resnet
+ resnets = [
+ ResnetBlock3D(
+ in_channels=in_channels,
+ out_channels=in_channels,
+ temb_channels=temb_channels,
+ eps=resnet_eps,
+ groups=resnet_groups,
+ dropout=dropout,
+ time_embedding_norm=resnet_time_scale_shift,
+ non_linearity=resnet_act_fn,
+ output_scale_factor=output_scale_factor,
+ pre_norm=resnet_pre_norm,
+ )
+ ]
+ attentions = []
+
+ for _ in range(num_layers):
+ if dual_cross_attention:
+ raise NotImplementedError
+ attentions.append(
+ Transformer3DModel(
+ attn_num_head_channels,
+ in_channels // attn_num_head_channels,
+ in_channels=in_channels,
+ num_layers=1,
+ cross_attention_dim=cross_attention_dim,
+ norm_num_groups=resnet_groups,
+ use_linear_projection=use_linear_projection,
+ upcast_attention=upcast_attention,
+ )
+ )
+ resnets.append(
+ ResnetBlock3D(
+ in_channels=in_channels,
+ out_channels=in_channels,
+ temb_channels=temb_channels,
+ eps=resnet_eps,
+ groups=resnet_groups,
+ dropout=dropout,
+ time_embedding_norm=resnet_time_scale_shift,
+ non_linearity=resnet_act_fn,
+ output_scale_factor=output_scale_factor,
+ pre_norm=resnet_pre_norm,
+ )
+ )
+
+ self.attentions = nn.ModuleList(attentions)
+ self.resnets = nn.ModuleList(resnets)
+
+ def forward(self, hidden_states, temb=None, encoder_hidden_states=None, attention_mask=None):
+ hidden_states = self.resnets[0](hidden_states, temb)
+ for attn, resnet in zip(self.attentions, self.resnets[1:]):
+ hidden_states = attn(hidden_states, encoder_hidden_states=encoder_hidden_states).sample
+ hidden_states = resnet(hidden_states, temb)
+
+ return hidden_states
+
+
+class CrossAttnDownBlock3D(nn.Module):
+ def __init__(
+ self,
+ in_channels: int,
+ out_channels: int,
+ temb_channels: int,
+ dropout: float = 0.0,
+ num_layers: int = 1,
+ resnet_eps: float = 1e-6,
+ resnet_time_scale_shift: str = "default",
+ resnet_act_fn: str = "swish",
+ resnet_groups: int = 32,
+ resnet_pre_norm: bool = True,
+ attn_num_head_channels=1,
+ cross_attention_dim=1280,
+ output_scale_factor=1.0,
+ downsample_padding=1,
+ add_downsample=True,
+ dual_cross_attention=False,
+ use_linear_projection=False,
+ only_cross_attention=False,
+ upcast_attention=False,
+ use_attn_temp=False,
+ ):
+ super().__init__()
+ resnets = []
+ attentions = []
+
+ self.has_cross_attention = True
+ self.attn_num_head_channels = attn_num_head_channels
+
+ for i in range(num_layers):
+ in_channels = in_channels if i == 0 else out_channels
+ resnets.append(
+ ResnetBlock3D(
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ eps=resnet_eps,
+ groups=resnet_groups,
+ dropout=dropout,
+ time_embedding_norm=resnet_time_scale_shift,
+ non_linearity=resnet_act_fn,
+ output_scale_factor=output_scale_factor,
+ pre_norm=resnet_pre_norm,
+ )
+ )
+ if dual_cross_attention:
+ raise NotImplementedError
+ attentions.append(
+ Transformer3DModel(
+ attn_num_head_channels,
+ out_channels // attn_num_head_channels,
+ in_channels=out_channels,
+ num_layers=1,
+ cross_attention_dim=cross_attention_dim,
+ norm_num_groups=resnet_groups,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention,
+ upcast_attention=upcast_attention,
+ use_attn_temp=use_attn_temp,
+ )
+ )
+ self.attentions = nn.ModuleList(attentions)
+ self.resnets = nn.ModuleList(resnets)
+
+ if add_downsample:
+ self.downsamplers = nn.ModuleList(
+ [
+ Downsample3D(
+ out_channels, use_conv=True, out_channels=out_channels, padding=downsample_padding, name="op"
+ )
+ ]
+ )
+ else:
+ self.downsamplers = None
+
+ self.gradient_checkpointing = False
+
+ def forward(self, hidden_states, temb=None, encoder_hidden_states=None, attention_mask=None):
+ output_states = ()
+
+ for resnet, attn in zip(self.resnets, self.attentions):
+ if self.training and self.gradient_checkpointing:
+
+ def create_custom_forward(module, return_dict=None):
+ def custom_forward(*inputs):
+ if return_dict is not None:
+ return module(*inputs, return_dict=return_dict)
+ else:
+ return module(*inputs)
+
+ return custom_forward
+
+ hidden_states = torch.utils.checkpoint.checkpoint(create_custom_forward(resnet), hidden_states, temb)
+ hidden_states = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(attn, return_dict=False),
+ hidden_states,
+ encoder_hidden_states,
+ )[0]
+ else:
+ hidden_states = resnet(hidden_states, temb)
+ hidden_states = attn(hidden_states, encoder_hidden_states=encoder_hidden_states).sample
+
+ output_states += (hidden_states,)
+
+ if self.downsamplers is not None:
+ for downsampler in self.downsamplers:
+ hidden_states = downsampler(hidden_states)
+
+ output_states += (hidden_states,)
+
+ return hidden_states, output_states
+
+
+class DownBlock3D(nn.Module):
+ def __init__(
+ self,
+ in_channels: int,
+ out_channels: int,
+ temb_channels: int,
+ dropout: float = 0.0,
+ num_layers: int = 1,
+ resnet_eps: float = 1e-6,
+ resnet_time_scale_shift: str = "default",
+ resnet_act_fn: str = "swish",
+ resnet_groups: int = 32,
+ resnet_pre_norm: bool = True,
+ output_scale_factor=1.0,
+ add_downsample=True,
+ downsample_padding=1,
+ ):
+ super().__init__()
+ resnets = []
+
+ for i in range(num_layers):
+ in_channels = in_channels if i == 0 else out_channels
+ resnets.append(
+ ResnetBlock3D(
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ eps=resnet_eps,
+ groups=resnet_groups,
+ dropout=dropout,
+ time_embedding_norm=resnet_time_scale_shift,
+ non_linearity=resnet_act_fn,
+ output_scale_factor=output_scale_factor,
+ pre_norm=resnet_pre_norm,
+ )
+ )
+
+ self.resnets = nn.ModuleList(resnets)
+
+ if add_downsample:
+ self.downsamplers = nn.ModuleList(
+ [
+ Downsample3D(
+ out_channels, use_conv=True, out_channels=out_channels, padding=downsample_padding, name="op"
+ )
+ ]
+ )
+ else:
+ self.downsamplers = None
+
+ self.gradient_checkpointing = False
+
+ def forward(self, hidden_states, temb=None):
+ output_states = ()
+
+ for resnet in self.resnets:
+ if self.training and self.gradient_checkpointing:
+
+ def create_custom_forward(module):
+ def custom_forward(*inputs):
+ return module(*inputs)
+
+ return custom_forward
+
+ hidden_states = torch.utils.checkpoint.checkpoint(create_custom_forward(resnet), hidden_states, temb)
+ else:
+ hidden_states = resnet(hidden_states, temb)
+
+ output_states += (hidden_states,)
+
+ if self.downsamplers is not None:
+ for downsampler in self.downsamplers:
+ hidden_states = downsampler(hidden_states)
+
+ output_states += (hidden_states,)
+
+ return hidden_states, output_states
+
+
+class CrossAttnUpBlock3D(nn.Module):
+ def __init__(
+ self,
+ in_channels: int,
+ out_channels: int,
+ prev_output_channel: int,
+ temb_channels: int,
+ dropout: float = 0.0,
+ num_layers: int = 1,
+ resnet_eps: float = 1e-6,
+ resnet_time_scale_shift: str = "default",
+ resnet_act_fn: str = "swish",
+ resnet_groups: int = 32,
+ resnet_pre_norm: bool = True,
+ attn_num_head_channels=1,
+ cross_attention_dim=1280,
+ output_scale_factor=1.0,
+ add_upsample=True,
+ dual_cross_attention=False,
+ use_linear_projection=False,
+ only_cross_attention=False,
+ upcast_attention=False,
+ use_attn_temp=False,
+ ):
+ super().__init__()
+ resnets = []
+ attentions = []
+
+ self.has_cross_attention = True
+ self.attn_num_head_channels = attn_num_head_channels
+
+ for i in range(num_layers):
+ res_skip_channels = in_channels if (i == num_layers - 1) else out_channels
+ resnet_in_channels = prev_output_channel if i == 0 else out_channels
+
+ resnets.append(
+ ResnetBlock3D(
+ in_channels=resnet_in_channels + res_skip_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ eps=resnet_eps,
+ groups=resnet_groups,
+ dropout=dropout,
+ time_embedding_norm=resnet_time_scale_shift,
+ non_linearity=resnet_act_fn,
+ output_scale_factor=output_scale_factor,
+ pre_norm=resnet_pre_norm,
+ )
+ )
+ if dual_cross_attention:
+ raise NotImplementedError
+ attentions.append(
+ Transformer3DModel(
+ attn_num_head_channels,
+ out_channels // attn_num_head_channels,
+ in_channels=out_channels,
+ num_layers=1,
+ cross_attention_dim=cross_attention_dim,
+ norm_num_groups=resnet_groups,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention,
+ upcast_attention=upcast_attention,
+ use_attn_temp=use_attn_temp,
+ )
+ )
+
+ self.attentions = nn.ModuleList(attentions)
+ self.resnets = nn.ModuleList(resnets)
+
+ if add_upsample:
+ self.upsamplers = nn.ModuleList([Upsample3D(out_channels, use_conv=True, out_channels=out_channels)])
+ else:
+ self.upsamplers = None
+
+ self.gradient_checkpointing = False
+
+ def forward(
+ self,
+ hidden_states,
+ res_hidden_states_tuple,
+ temb=None,
+ encoder_hidden_states=None,
+ upsample_size=None,
+ attention_mask=None,
+ ):
+ for resnet, attn in zip(self.resnets, self.attentions):
+ # pop res hidden states
+ res_hidden_states = res_hidden_states_tuple[-1]
+ res_hidden_states_tuple = res_hidden_states_tuple[:-1]
+ hidden_states = torch.cat([hidden_states, res_hidden_states], dim=1)
+
+ if self.training and self.gradient_checkpointing:
+
+ def create_custom_forward(module, return_dict=None):
+ def custom_forward(*inputs):
+ if return_dict is not None:
+ return module(*inputs, return_dict=return_dict)
+ else:
+ return module(*inputs)
+
+ return custom_forward
+
+ hidden_states = torch.utils.checkpoint.checkpoint(create_custom_forward(resnet), hidden_states, temb)
+ hidden_states = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(attn, return_dict=False),
+ hidden_states,
+ encoder_hidden_states,
+ )[0]
+ else:
+ hidden_states = resnet(hidden_states, temb)
+ hidden_states = attn(hidden_states, encoder_hidden_states=encoder_hidden_states).sample
+
+ if self.upsamplers is not None:
+ for upsampler in self.upsamplers:
+ hidden_states = upsampler(hidden_states, upsample_size)
+
+ return hidden_states
+
+
+class UpBlock3D(nn.Module):
+ def __init__(
+ self,
+ in_channels: int,
+ prev_output_channel: int,
+ out_channels: int,
+ temb_channels: int,
+ dropout: float = 0.0,
+ num_layers: int = 1,
+ resnet_eps: float = 1e-6,
+ resnet_time_scale_shift: str = "default",
+ resnet_act_fn: str = "swish",
+ resnet_groups: int = 32,
+ resnet_pre_norm: bool = True,
+ output_scale_factor=1.0,
+ add_upsample=True,
+ ):
+ super().__init__()
+ resnets = []
+
+ for i in range(num_layers):
+ res_skip_channels = in_channels if (i == num_layers - 1) else out_channels
+ resnet_in_channels = prev_output_channel if i == 0 else out_channels
+
+ resnets.append(
+ ResnetBlock3D(
+ in_channels=resnet_in_channels + res_skip_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ eps=resnet_eps,
+ groups=resnet_groups,
+ dropout=dropout,
+ time_embedding_norm=resnet_time_scale_shift,
+ non_linearity=resnet_act_fn,
+ output_scale_factor=output_scale_factor,
+ pre_norm=resnet_pre_norm,
+ )
+ )
+
+ self.resnets = nn.ModuleList(resnets)
+
+ if add_upsample:
+ self.upsamplers = nn.ModuleList([Upsample3D(out_channels, use_conv=True, out_channels=out_channels)])
+ else:
+ self.upsamplers = None
+
+ self.gradient_checkpointing = False
+
+ def forward(self, hidden_states, res_hidden_states_tuple, temb=None, upsample_size=None):
+ for resnet in self.resnets:
+ # pop res hidden states
+ res_hidden_states = res_hidden_states_tuple[-1]
+ res_hidden_states_tuple = res_hidden_states_tuple[:-1]
+ hidden_states = torch.cat([hidden_states, res_hidden_states], dim=1)
+
+ if self.training and self.gradient_checkpointing:
+
+ def create_custom_forward(module):
+ def custom_forward(*inputs):
+ return module(*inputs)
+
+ return custom_forward
+
+ hidden_states = torch.utils.checkpoint.checkpoint(create_custom_forward(resnet), hidden_states, temb)
+ else:
+ hidden_states = resnet(hidden_states, temb)
+
+ if self.upsamplers is not None:
+ for upsampler in self.upsamplers:
+ hidden_states = upsampler(hidden_states, upsample_size)
+
+ return hidden_states
diff --git a/2D_Stage/tuneavideo/models/unet_mv2d_blocks.py b/2D_Stage/tuneavideo/models/unet_mv2d_blocks.py
new file mode 100644
index 0000000000000000000000000000000000000000..009c774337feb5f5d94a7958174400a150e351f3
--- /dev/null
+++ b/2D_Stage/tuneavideo/models/unet_mv2d_blocks.py
@@ -0,0 +1,926 @@
+# Copyright 2023 The HuggingFace Team. All rights reserved.
+#
+# 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 typing import Any, Dict, Optional, Tuple
+
+import numpy as np
+import torch
+import torch.nn.functional as F
+from torch import nn
+
+from diffusers.utils import is_torch_version, logging
+# from diffusers.models.attention import AdaGroupNorm
+from diffusers.models.attention_processor import Attention, AttnAddedKVProcessor, AttnAddedKVProcessor2_0
+from diffusers.models.dual_transformer_2d import DualTransformer2DModel
+from diffusers.models.resnet import Downsample2D, FirDownsample2D, FirUpsample2D, KDownsample2D, KUpsample2D, ResnetBlock2D, Upsample2D
+from tuneavideo.models.transformer_mv2d import TransformerMV2DModel
+
+from diffusers.models.unet_2d_blocks import DownBlock2D, ResnetDownsampleBlock2D, AttnDownBlock2D, CrossAttnDownBlock2D, SimpleCrossAttnDownBlock2D, SkipDownBlock2D, AttnSkipDownBlock2D, DownEncoderBlock2D, AttnDownEncoderBlock2D, KDownBlock2D, KCrossAttnDownBlock2D
+from diffusers.models.unet_2d_blocks import UpBlock2D, ResnetUpsampleBlock2D, CrossAttnUpBlock2D, SimpleCrossAttnUpBlock2D, AttnUpBlock2D, SkipUpBlock2D, AttnSkipUpBlock2D, UpDecoderBlock2D, AttnUpDecoderBlock2D, KUpBlock2D, KCrossAttnUpBlock2D
+
+
+logger = logging.get_logger(__name__) # pylint: disable=invalid-name
+
+
+def get_down_block(
+ down_block_type,
+ num_layers,
+ in_channels,
+ out_channels,
+ temb_channels,
+ add_downsample,
+ resnet_eps,
+ resnet_act_fn,
+ transformer_layers_per_block=1,
+ num_attention_heads=None,
+ resnet_groups=None,
+ cross_attention_dim=None,
+ downsample_padding=None,
+ dual_cross_attention=False,
+ use_linear_projection=False,
+ only_cross_attention=False,
+ upcast_attention=False,
+ resnet_time_scale_shift="default",
+ resnet_skip_time_act=False,
+ resnet_out_scale_factor=1.0,
+ cross_attention_norm=None,
+ attention_head_dim=None,
+ downsample_type=None,
+ num_views=1,
+ joint_attention: bool = False,
+ joint_attention_twice: bool = False,
+ multiview_attention: bool = True,
+ cross_domain_attention: bool=False
+):
+ # If attn head dim is not defined, we default it to the number of heads
+ if attention_head_dim is None:
+ logger.warn(
+ f"It is recommended to provide `attention_head_dim` when calling `get_down_block`. Defaulting `attention_head_dim` to {num_attention_heads}."
+ )
+ attention_head_dim = num_attention_heads
+
+ down_block_type = down_block_type[7:] if down_block_type.startswith("UNetRes") else down_block_type
+ if down_block_type == "DownBlock2D":
+ return DownBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ add_downsample=add_downsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ downsample_padding=downsample_padding,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ )
+ elif down_block_type == "ResnetDownsampleBlock2D":
+ return ResnetDownsampleBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ add_downsample=add_downsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ skip_time_act=resnet_skip_time_act,
+ output_scale_factor=resnet_out_scale_factor,
+ )
+ elif down_block_type == "AttnDownBlock2D":
+ if add_downsample is False:
+ downsample_type = None
+ else:
+ downsample_type = downsample_type or "conv" # default to 'conv'
+ return AttnDownBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ downsample_padding=downsample_padding,
+ attention_head_dim=attention_head_dim,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ downsample_type=downsample_type,
+ )
+ elif down_block_type == "CrossAttnDownBlock2D":
+ if cross_attention_dim is None:
+ raise ValueError("cross_attention_dim must be specified for CrossAttnDownBlock2D")
+ return CrossAttnDownBlock2D(
+ num_layers=num_layers,
+ transformer_layers_per_block=transformer_layers_per_block,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ add_downsample=add_downsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ downsample_padding=downsample_padding,
+ cross_attention_dim=cross_attention_dim,
+ num_attention_heads=num_attention_heads,
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention,
+ upcast_attention=upcast_attention,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ )
+ # custom MV2D attention block
+ elif down_block_type == "CrossAttnDownBlockMV2D":
+ if cross_attention_dim is None:
+ raise ValueError("cross_attention_dim must be specified for CrossAttnDownBlockMV2D")
+ return CrossAttnDownBlockMV2D(
+ num_layers=num_layers,
+ transformer_layers_per_block=transformer_layers_per_block,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ add_downsample=add_downsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ downsample_padding=downsample_padding,
+ cross_attention_dim=cross_attention_dim,
+ num_attention_heads=num_attention_heads,
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention,
+ upcast_attention=upcast_attention,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ num_views=num_views,
+ joint_attention=joint_attention,
+ joint_attention_twice=joint_attention_twice,
+ multiview_attention=multiview_attention,
+ cross_domain_attention=cross_domain_attention
+ )
+ elif down_block_type == "SimpleCrossAttnDownBlock2D":
+ if cross_attention_dim is None:
+ raise ValueError("cross_attention_dim must be specified for SimpleCrossAttnDownBlock2D")
+ return SimpleCrossAttnDownBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ add_downsample=add_downsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ cross_attention_dim=cross_attention_dim,
+ attention_head_dim=attention_head_dim,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ skip_time_act=resnet_skip_time_act,
+ output_scale_factor=resnet_out_scale_factor,
+ only_cross_attention=only_cross_attention,
+ cross_attention_norm=cross_attention_norm,
+ )
+ elif down_block_type == "SkipDownBlock2D":
+ return SkipDownBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ add_downsample=add_downsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ downsample_padding=downsample_padding,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ )
+ elif down_block_type == "AttnSkipDownBlock2D":
+ return AttnSkipDownBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ add_downsample=add_downsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ attention_head_dim=attention_head_dim,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ )
+ elif down_block_type == "DownEncoderBlock2D":
+ return DownEncoderBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ add_downsample=add_downsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ downsample_padding=downsample_padding,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ )
+ elif down_block_type == "AttnDownEncoderBlock2D":
+ return AttnDownEncoderBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ add_downsample=add_downsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ downsample_padding=downsample_padding,
+ attention_head_dim=attention_head_dim,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ )
+ elif down_block_type == "KDownBlock2D":
+ return KDownBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ add_downsample=add_downsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ )
+ elif down_block_type == "KCrossAttnDownBlock2D":
+ return KCrossAttnDownBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ add_downsample=add_downsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ cross_attention_dim=cross_attention_dim,
+ attention_head_dim=attention_head_dim,
+ add_self_attention=True if not add_downsample else False,
+ )
+ raise ValueError(f"{down_block_type} does not exist.")
+
+
+def get_up_block(
+ up_block_type,
+ num_layers,
+ in_channels,
+ out_channels,
+ prev_output_channel,
+ temb_channels,
+ add_upsample,
+ resnet_eps,
+ resnet_act_fn,
+ transformer_layers_per_block=1,
+ num_attention_heads=None,
+ resnet_groups=None,
+ cross_attention_dim=None,
+ dual_cross_attention=False,
+ use_linear_projection=False,
+ only_cross_attention=False,
+ upcast_attention=False,
+ resnet_time_scale_shift="default",
+ resnet_skip_time_act=False,
+ resnet_out_scale_factor=1.0,
+ cross_attention_norm=None,
+ attention_head_dim=None,
+ upsample_type=None,
+ num_views=1,
+ joint_attention: bool = False,
+ joint_attention_twice: bool = False,
+ multiview_attention: bool = True,
+ cross_domain_attention: bool=False
+):
+ # If attn head dim is not defined, we default it to the number of heads
+ if attention_head_dim is None:
+ logger.warn(
+ f"It is recommended to provide `attention_head_dim` when calling `get_up_block`. Defaulting `attention_head_dim` to {num_attention_heads}."
+ )
+ attention_head_dim = num_attention_heads
+
+ up_block_type = up_block_type[7:] if up_block_type.startswith("UNetRes") else up_block_type
+ if up_block_type == "UpBlock2D":
+ return UpBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ prev_output_channel=prev_output_channel,
+ temb_channels=temb_channels,
+ add_upsample=add_upsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ )
+ elif up_block_type == "ResnetUpsampleBlock2D":
+ return ResnetUpsampleBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ prev_output_channel=prev_output_channel,
+ temb_channels=temb_channels,
+ add_upsample=add_upsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ skip_time_act=resnet_skip_time_act,
+ output_scale_factor=resnet_out_scale_factor,
+ )
+ elif up_block_type == "CrossAttnUpBlock2D":
+ if cross_attention_dim is None:
+ raise ValueError("cross_attention_dim must be specified for CrossAttnUpBlock2D")
+ return CrossAttnUpBlock2D(
+ num_layers=num_layers,
+ transformer_layers_per_block=transformer_layers_per_block,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ prev_output_channel=prev_output_channel,
+ temb_channels=temb_channels,
+ add_upsample=add_upsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ cross_attention_dim=cross_attention_dim,
+ num_attention_heads=num_attention_heads,
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention,
+ upcast_attention=upcast_attention,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ )
+ # custom MV2D attention block
+ elif up_block_type == "CrossAttnUpBlockMV2D":
+ if cross_attention_dim is None:
+ raise ValueError("cross_attention_dim must be specified for CrossAttnUpBlockMV2D")
+ return CrossAttnUpBlockMV2D(
+ num_layers=num_layers,
+ transformer_layers_per_block=transformer_layers_per_block,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ prev_output_channel=prev_output_channel,
+ temb_channels=temb_channels,
+ add_upsample=add_upsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ cross_attention_dim=cross_attention_dim,
+ num_attention_heads=num_attention_heads,
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention,
+ upcast_attention=upcast_attention,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ num_views=num_views,
+ joint_attention=joint_attention,
+ joint_attention_twice=joint_attention_twice,
+ multiview_attention=multiview_attention,
+ cross_domain_attention=cross_domain_attention
+ )
+ elif up_block_type == "SimpleCrossAttnUpBlock2D":
+ if cross_attention_dim is None:
+ raise ValueError("cross_attention_dim must be specified for SimpleCrossAttnUpBlock2D")
+ return SimpleCrossAttnUpBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ prev_output_channel=prev_output_channel,
+ temb_channels=temb_channels,
+ add_upsample=add_upsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ cross_attention_dim=cross_attention_dim,
+ attention_head_dim=attention_head_dim,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ skip_time_act=resnet_skip_time_act,
+ output_scale_factor=resnet_out_scale_factor,
+ only_cross_attention=only_cross_attention,
+ cross_attention_norm=cross_attention_norm,
+ )
+ elif up_block_type == "AttnUpBlock2D":
+ if add_upsample is False:
+ upsample_type = None
+ else:
+ upsample_type = upsample_type or "conv" # default to 'conv'
+
+ return AttnUpBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ prev_output_channel=prev_output_channel,
+ temb_channels=temb_channels,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ attention_head_dim=attention_head_dim,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ upsample_type=upsample_type,
+ )
+ elif up_block_type == "SkipUpBlock2D":
+ return SkipUpBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ prev_output_channel=prev_output_channel,
+ temb_channels=temb_channels,
+ add_upsample=add_upsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ )
+ elif up_block_type == "AttnSkipUpBlock2D":
+ return AttnSkipUpBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ prev_output_channel=prev_output_channel,
+ temb_channels=temb_channels,
+ add_upsample=add_upsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ attention_head_dim=attention_head_dim,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ )
+ elif up_block_type == "UpDecoderBlock2D":
+ return UpDecoderBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ add_upsample=add_upsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ temb_channels=temb_channels,
+ )
+ elif up_block_type == "AttnUpDecoderBlock2D":
+ return AttnUpDecoderBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ add_upsample=add_upsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ resnet_groups=resnet_groups,
+ attention_head_dim=attention_head_dim,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ temb_channels=temb_channels,
+ )
+ elif up_block_type == "KUpBlock2D":
+ return KUpBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ add_upsample=add_upsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ )
+ elif up_block_type == "KCrossAttnUpBlock2D":
+ return KCrossAttnUpBlock2D(
+ num_layers=num_layers,
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ add_upsample=add_upsample,
+ resnet_eps=resnet_eps,
+ resnet_act_fn=resnet_act_fn,
+ cross_attention_dim=cross_attention_dim,
+ attention_head_dim=attention_head_dim,
+ )
+
+ raise ValueError(f"{up_block_type} does not exist.")
+
+
+class UNetMidBlockMV2DCrossAttn(nn.Module):
+ def __init__(
+ self,
+ in_channels: int,
+ temb_channels: int,
+ dropout: float = 0.0,
+ num_layers: int = 1,
+ transformer_layers_per_block: int = 1,
+ resnet_eps: float = 1e-6,
+ resnet_time_scale_shift: str = "default",
+ resnet_act_fn: str = "swish",
+ resnet_groups: int = 32,
+ resnet_pre_norm: bool = True,
+ num_attention_heads=1,
+ output_scale_factor=1.0,
+ cross_attention_dim=1280,
+ dual_cross_attention=False,
+ use_linear_projection=False,
+ upcast_attention=False,
+ num_views: int = 1,
+ joint_attention: bool = False,
+ joint_attention_twice: bool = False,
+ multiview_attention: bool = True,
+ cross_domain_attention: bool=False
+ ):
+ super().__init__()
+
+ self.has_cross_attention = True
+ self.num_attention_heads = num_attention_heads
+ resnet_groups = resnet_groups if resnet_groups is not None else min(in_channels // 4, 32)
+
+ # there is always at least one resnet
+ resnets = [
+ ResnetBlock2D(
+ in_channels=in_channels,
+ out_channels=in_channels,
+ temb_channels=temb_channels,
+ eps=resnet_eps,
+ groups=resnet_groups,
+ dropout=dropout,
+ time_embedding_norm=resnet_time_scale_shift,
+ non_linearity=resnet_act_fn,
+ output_scale_factor=output_scale_factor,
+ pre_norm=resnet_pre_norm,
+ )
+ ]
+ attentions = []
+
+ for _ in range(num_layers):
+ if not dual_cross_attention:
+ attentions.append(
+ TransformerMV2DModel(
+ num_attention_heads,
+ in_channels // num_attention_heads,
+ in_channels=in_channels,
+ num_layers=transformer_layers_per_block,
+ cross_attention_dim=cross_attention_dim,
+ norm_num_groups=resnet_groups,
+ use_linear_projection=use_linear_projection,
+ upcast_attention=upcast_attention,
+ num_views=num_views,
+ joint_attention=joint_attention,
+ joint_attention_twice=joint_attention_twice,
+ multiview_attention=multiview_attention,
+ cross_domain_attention=cross_domain_attention
+ )
+ )
+ else:
+ raise NotImplementedError
+ resnets.append(
+ ResnetBlock2D(
+ in_channels=in_channels,
+ out_channels=in_channels,
+ temb_channels=temb_channels,
+ eps=resnet_eps,
+ groups=resnet_groups,
+ dropout=dropout,
+ time_embedding_norm=resnet_time_scale_shift,
+ non_linearity=resnet_act_fn,
+ output_scale_factor=output_scale_factor,
+ pre_norm=resnet_pre_norm,
+ )
+ )
+
+ self.attentions = nn.ModuleList(attentions)
+ self.resnets = nn.ModuleList(resnets)
+
+ def forward(
+ self,
+ hidden_states: torch.FloatTensor,
+ temb: Optional[torch.FloatTensor] = None,
+ encoder_hidden_states: Optional[torch.FloatTensor] = None,
+ attention_mask: Optional[torch.FloatTensor] = None,
+ cross_attention_kwargs: Optional[Dict[str, Any]] = None,
+ encoder_attention_mask: Optional[torch.FloatTensor] = None,
+ ) -> torch.FloatTensor:
+ hidden_states = self.resnets[0](hidden_states, temb)
+ for attn, resnet in zip(self.attentions, self.resnets[1:]):
+ hidden_states = attn(
+ hidden_states,
+ encoder_hidden_states=encoder_hidden_states,
+ cross_attention_kwargs=cross_attention_kwargs,
+ attention_mask=attention_mask,
+ encoder_attention_mask=encoder_attention_mask,
+ return_dict=False,
+ )[0]
+ hidden_states = resnet(hidden_states, temb)
+
+ return hidden_states
+
+
+class CrossAttnUpBlockMV2D(nn.Module):
+ def __init__(
+ self,
+ in_channels: int,
+ out_channels: int,
+ prev_output_channel: int,
+ temb_channels: int,
+ dropout: float = 0.0,
+ num_layers: int = 1,
+ transformer_layers_per_block: int = 1,
+ resnet_eps: float = 1e-6,
+ resnet_time_scale_shift: str = "default",
+ resnet_act_fn: str = "swish",
+ resnet_groups: int = 32,
+ resnet_pre_norm: bool = True,
+ num_attention_heads=1,
+ cross_attention_dim=1280,
+ output_scale_factor=1.0,
+ add_upsample=True,
+ dual_cross_attention=False,
+ use_linear_projection=False,
+ only_cross_attention=False,
+ upcast_attention=False,
+ num_views: int = 1,
+ joint_attention: bool = False,
+ joint_attention_twice: bool = False,
+ multiview_attention: bool = True,
+ cross_domain_attention: bool=False
+ ):
+ super().__init__()
+ resnets = []
+ attentions = []
+
+ self.has_cross_attention = True
+ self.num_attention_heads = num_attention_heads
+
+ for i in range(num_layers):
+ res_skip_channels = in_channels if (i == num_layers - 1) else out_channels
+ resnet_in_channels = prev_output_channel if i == 0 else out_channels
+
+ resnets.append(
+ ResnetBlock2D(
+ in_channels=resnet_in_channels + res_skip_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ eps=resnet_eps,
+ groups=resnet_groups,
+ dropout=dropout,
+ time_embedding_norm=resnet_time_scale_shift,
+ non_linearity=resnet_act_fn,
+ output_scale_factor=output_scale_factor,
+ pre_norm=resnet_pre_norm,
+ )
+ )
+ if not dual_cross_attention:
+ attentions.append(
+ TransformerMV2DModel(
+ num_attention_heads,
+ out_channels // num_attention_heads,
+ in_channels=out_channels,
+ num_layers=transformer_layers_per_block,
+ cross_attention_dim=cross_attention_dim,
+ norm_num_groups=resnet_groups,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention,
+ upcast_attention=upcast_attention,
+ num_views=num_views,
+ joint_attention=joint_attention,
+ joint_attention_twice=joint_attention_twice,
+ multiview_attention=multiview_attention,
+ cross_domain_attention=cross_domain_attention
+ )
+ )
+ else:
+ raise NotImplementedError
+ self.attentions = nn.ModuleList(attentions)
+ self.resnets = nn.ModuleList(resnets)
+
+ if add_upsample:
+ self.upsamplers = nn.ModuleList([Upsample2D(out_channels, use_conv=True, out_channels=out_channels)])
+ else:
+ self.upsamplers = None
+ if num_views == 4:
+ self.gradient_checkpointing = False
+ else:
+ self.gradient_checkpointing = False
+
+ def forward(
+ self,
+ hidden_states: torch.FloatTensor,
+ res_hidden_states_tuple: Tuple[torch.FloatTensor, ...],
+ temb: Optional[torch.FloatTensor] = None,
+ encoder_hidden_states: Optional[torch.FloatTensor] = None,
+ cross_attention_kwargs: Optional[Dict[str, Any]] = None,
+ upsample_size: Optional[int] = None,
+ attention_mask: Optional[torch.FloatTensor] = None,
+ encoder_attention_mask: Optional[torch.FloatTensor] = None,
+ ):
+ for resnet, attn in zip(self.resnets, self.attentions):
+ # pop res hidden states
+ res_hidden_states = res_hidden_states_tuple[-1]
+ res_hidden_states_tuple = res_hidden_states_tuple[:-1]
+ hidden_states = torch.cat([hidden_states, res_hidden_states], dim=1)
+
+ if self.training and self.gradient_checkpointing:
+
+ def create_custom_forward(module, return_dict=None):
+ def custom_forward(*inputs):
+ if return_dict is not None:
+ return module(*inputs, return_dict=return_dict)
+ else:
+ return module(*inputs)
+
+ return custom_forward
+
+ ckpt_kwargs: Dict[str, Any] = {"use_reentrant": False} if is_torch_version(">=", "1.11.0") else {}
+ hidden_states = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(resnet),
+ hidden_states,
+ temb,
+ **ckpt_kwargs,
+ )
+ hidden_states = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(attn, return_dict=False),
+ hidden_states,
+ encoder_hidden_states,
+ None, # timestep
+ None, # class_labels
+ cross_attention_kwargs,
+ attention_mask,
+ encoder_attention_mask,
+ **ckpt_kwargs,
+ )[0]
+ # hidden_states = attn(
+ # hidden_states,
+ # encoder_hidden_states=encoder_hidden_states,
+ # cross_attention_kwargs=cross_attention_kwargs,
+ # attention_mask=attention_mask,
+ # encoder_attention_mask=encoder_attention_mask,
+ # return_dict=False,
+ # )[0]
+ else:
+ hidden_states = resnet(hidden_states, temb)
+ hidden_states = attn(
+ hidden_states,
+ encoder_hidden_states=encoder_hidden_states,
+ cross_attention_kwargs=cross_attention_kwargs,
+ attention_mask=attention_mask,
+ encoder_attention_mask=encoder_attention_mask,
+ return_dict=False,
+ )[0]
+
+ if self.upsamplers is not None:
+ for upsampler in self.upsamplers:
+ hidden_states = upsampler(hidden_states, upsample_size)
+
+ return hidden_states
+
+
+class CrossAttnDownBlockMV2D(nn.Module):
+ def __init__(
+ self,
+ in_channels: int,
+ out_channels: int,
+ temb_channels: int,
+ dropout: float = 0.0,
+ num_layers: int = 1,
+ transformer_layers_per_block: int = 1,
+ resnet_eps: float = 1e-6,
+ resnet_time_scale_shift: str = "default",
+ resnet_act_fn: str = "swish",
+ resnet_groups: int = 32,
+ resnet_pre_norm: bool = True,
+ num_attention_heads=1,
+ cross_attention_dim=1280,
+ output_scale_factor=1.0,
+ downsample_padding=1,
+ add_downsample=True,
+ dual_cross_attention=False,
+ use_linear_projection=False,
+ only_cross_attention=False,
+ upcast_attention=False,
+ num_views: int = 1,
+ joint_attention: bool = False,
+ joint_attention_twice: bool = False,
+ multiview_attention: bool = True,
+ cross_domain_attention: bool=False
+ ):
+ super().__init__()
+ resnets = []
+ attentions = []
+
+ self.has_cross_attention = True
+ self.num_attention_heads = num_attention_heads
+
+ for i in range(num_layers):
+ in_channels = in_channels if i == 0 else out_channels
+ resnets.append(
+ ResnetBlock2D(
+ in_channels=in_channels,
+ out_channels=out_channels,
+ temb_channels=temb_channels,
+ eps=resnet_eps,
+ groups=resnet_groups,
+ dropout=dropout,
+ time_embedding_norm=resnet_time_scale_shift,
+ non_linearity=resnet_act_fn,
+ output_scale_factor=output_scale_factor,
+ pre_norm=resnet_pre_norm,
+ )
+ )
+ if not dual_cross_attention:
+ attentions.append(
+ TransformerMV2DModel(
+ num_attention_heads,
+ out_channels // num_attention_heads,
+ in_channels=out_channels,
+ num_layers=transformer_layers_per_block,
+ cross_attention_dim=cross_attention_dim,
+ norm_num_groups=resnet_groups,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention,
+ upcast_attention=upcast_attention,
+ num_views=num_views,
+ joint_attention=joint_attention,
+ joint_attention_twice=joint_attention_twice,
+ multiview_attention=multiview_attention,
+ cross_domain_attention=cross_domain_attention
+ )
+ )
+ else:
+ raise NotImplementedError
+ self.attentions = nn.ModuleList(attentions)
+ self.resnets = nn.ModuleList(resnets)
+
+ if add_downsample:
+ self.downsamplers = nn.ModuleList(
+ [
+ Downsample2D(
+ out_channels, use_conv=True, out_channels=out_channels, padding=downsample_padding, name="op"
+ )
+ ]
+ )
+ else:
+ self.downsamplers = None
+ if num_views == 4:
+ self.gradient_checkpointing = False
+ else:
+ self.gradient_checkpointing = False
+
+ def forward(
+ self,
+ hidden_states: torch.FloatTensor,
+ temb: Optional[torch.FloatTensor] = None,
+ encoder_hidden_states: Optional[torch.FloatTensor] = None,
+ attention_mask: Optional[torch.FloatTensor] = None,
+ cross_attention_kwargs: Optional[Dict[str, Any]] = None,
+ encoder_attention_mask: Optional[torch.FloatTensor] = None,
+ additional_residuals=None,
+ ):
+ output_states = ()
+
+ blocks = list(zip(self.resnets, self.attentions))
+
+ for i, (resnet, attn) in enumerate(blocks):
+ if self.training and self.gradient_checkpointing:
+
+ def create_custom_forward(module, return_dict=None):
+ def custom_forward(*inputs):
+ if return_dict is not None:
+ return module(*inputs, return_dict=return_dict)
+ else:
+ return module(*inputs)
+
+ return custom_forward
+
+ ckpt_kwargs: Dict[str, Any] = {"use_reentrant": False} if is_torch_version(">=", "1.11.0") else {}
+ hidden_states = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(resnet),
+ hidden_states,
+ temb,
+ **ckpt_kwargs,
+ )
+ hidden_states = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(attn, return_dict=False),
+ hidden_states,
+ encoder_hidden_states,
+ None, # timestep
+ None, # class_labels
+ cross_attention_kwargs,
+ attention_mask,
+ encoder_attention_mask,
+ **ckpt_kwargs,
+ )[0]
+ else:
+ # import ipdb
+ # ipdb.set_trace()
+ hidden_states = resnet(hidden_states, temb)
+ hidden_states = attn(
+ hidden_states,
+ encoder_hidden_states=encoder_hidden_states,
+ cross_attention_kwargs=cross_attention_kwargs,
+ attention_mask=attention_mask,
+ encoder_attention_mask=encoder_attention_mask,
+ return_dict=False,
+ )[0]
+
+ # apply additional residuals to the output of the last pair of resnet and attention blocks
+ if i == len(blocks) - 1 and additional_residuals is not None:
+ hidden_states = hidden_states + additional_residuals
+
+ output_states = output_states + (hidden_states,)
+
+ if self.downsamplers is not None:
+ for downsampler in self.downsamplers:
+ hidden_states = downsampler(hidden_states)
+
+ output_states = output_states + (hidden_states,)
+
+ return hidden_states, output_states
+
diff --git a/2D_Stage/tuneavideo/models/unet_mv2d_condition.py b/2D_Stage/tuneavideo/models/unet_mv2d_condition.py
new file mode 100644
index 0000000000000000000000000000000000000000..c719b84c6b8cc1cdbcf81d449511e05eede20d92
--- /dev/null
+++ b/2D_Stage/tuneavideo/models/unet_mv2d_condition.py
@@ -0,0 +1,1509 @@
+# Copyright 2023 The HuggingFace Team. All rights reserved.
+#
+# 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 dataclasses import dataclass
+from typing import Any, Dict, List, Optional, Tuple, Union
+import os
+
+import torch
+import torch.nn as nn
+import torch.utils.checkpoint
+from einops import rearrange
+
+
+from diffusers.configuration_utils import ConfigMixin, register_to_config
+from diffusers.loaders import UNet2DConditionLoadersMixin
+from diffusers.utils import BaseOutput, logging
+from diffusers.models.activations import get_activation
+from diffusers.models.attention_processor import AttentionProcessor, AttnProcessor
+from diffusers.models.embeddings import (
+ GaussianFourierProjection,
+ ImageHintTimeEmbedding,
+ ImageProjection,
+ ImageTimeEmbedding,
+ TextImageProjection,
+ TextImageTimeEmbedding,
+ TextTimeEmbedding,
+ TimestepEmbedding,
+ Timesteps,
+)
+from diffusers.models.modeling_utils import ModelMixin, load_state_dict, _load_state_dict_into_model
+from diffusers.models.unet_2d_blocks import (
+ CrossAttnDownBlock2D,
+ CrossAttnUpBlock2D,
+ DownBlock2D,
+ UNetMidBlock2DCrossAttn,
+ UNetMidBlock2DSimpleCrossAttn,
+ UpBlock2D,
+)
+from diffusers.utils import (
+ CONFIG_NAME,
+ DIFFUSERS_CACHE,
+ FLAX_WEIGHTS_NAME,
+ HF_HUB_OFFLINE,
+ SAFETENSORS_WEIGHTS_NAME,
+ WEIGHTS_NAME,
+ _add_variant,
+ _get_model_file,
+ deprecate,
+ is_accelerate_available,
+ is_torch_version,
+ logging,
+)
+from diffusers import __version__
+from tuneavideo.models.unet_mv2d_blocks import (
+ CrossAttnDownBlockMV2D,
+ CrossAttnUpBlockMV2D,
+ UNetMidBlockMV2DCrossAttn,
+ get_down_block,
+ get_up_block,
+)
+from diffusers.models.attention_processor import Attention, AttnProcessor
+from diffusers.utils.import_utils import is_xformers_available
+from tuneavideo.models.transformer_mv2d import XFormersMVAttnProcessor, MVAttnProcessor
+from tuneavideo.models.refunet import ReferenceOnlyAttnProc
+
+logger = logging.get_logger(__name__) # pylint: disable=invalid-name
+
+
+@dataclass
+class UNetMV2DConditionOutput(BaseOutput):
+ """
+ The output of [`UNet2DConditionModel`].
+
+ Args:
+ sample (`torch.FloatTensor` of shape `(batch_size, num_channels, height, width)`):
+ The hidden states output conditioned on `encoder_hidden_states` input. Output of last layer of model.
+ """
+
+ sample: torch.FloatTensor = None
+
+class UNetMV2DConditionModel(ModelMixin, ConfigMixin, UNet2DConditionLoadersMixin):
+ r"""
+ A conditional 2D UNet model that takes a noisy sample, conditional state, and a timestep and returns a sample
+ shaped output.
+
+ This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented
+ for all models (such as downloading or saving).
+
+ Parameters:
+ sample_size (`int` or `Tuple[int, int]`, *optional*, defaults to `None`):
+ Height and width of input/output sample.
+ in_channels (`int`, *optional*, defaults to 4): Number of channels in the input sample.
+ out_channels (`int`, *optional*, defaults to 4): Number of channels in the output.
+ center_input_sample (`bool`, *optional*, defaults to `False`): Whether to center the input sample.
+ flip_sin_to_cos (`bool`, *optional*, defaults to `False`):
+ Whether to flip the sin to cos in the time embedding.
+ freq_shift (`int`, *optional*, defaults to 0): The frequency shift to apply to the time embedding.
+ down_block_types (`Tuple[str]`, *optional*, defaults to `("CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "DownBlock2D")`):
+ The tuple of downsample blocks to use.
+ mid_block_type (`str`, *optional*, defaults to `"UNetMidBlock2DCrossAttn"`):
+ Block type for middle of UNet, it can be either `UNetMidBlock2DCrossAttn` or
+ `UNetMidBlock2DSimpleCrossAttn`. If `None`, the mid block layer is skipped.
+ up_block_types (`Tuple[str]`, *optional*, defaults to `("UpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D")`):
+ The tuple of upsample blocks to use.
+ only_cross_attention(`bool` or `Tuple[bool]`, *optional*, default to `False`):
+ Whether to include self-attention in the basic transformer blocks, see
+ [`~models.attention.BasicTransformerBlock`].
+ block_out_channels (`Tuple[int]`, *optional*, defaults to `(320, 640, 1280, 1280)`):
+ The tuple of output channels for each block.
+ layers_per_block (`int`, *optional*, defaults to 2): The number of layers per block.
+ downsample_padding (`int`, *optional*, defaults to 1): The padding to use for the downsampling convolution.
+ mid_block_scale_factor (`float`, *optional*, defaults to 1.0): The scale factor to use for the mid block.
+ act_fn (`str`, *optional*, defaults to `"silu"`): The activation function to use.
+ norm_num_groups (`int`, *optional*, defaults to 32): The number of groups to use for the normalization.
+ If `None`, normalization and activation layers is skipped in post-processing.
+ norm_eps (`float`, *optional*, defaults to 1e-5): The epsilon to use for the normalization.
+ cross_attention_dim (`int` or `Tuple[int]`, *optional*, defaults to 1280):
+ The dimension of the cross attention features.
+ transformer_layers_per_block (`int` or `Tuple[int]`, *optional*, defaults to 1):
+ The number of transformer blocks of type [`~models.attention.BasicTransformerBlock`]. Only relevant for
+ [`~models.unet_2d_blocks.CrossAttnDownBlock2D`], [`~models.unet_2d_blocks.CrossAttnUpBlock2D`],
+ [`~models.unet_2d_blocks.UNetMidBlock2DCrossAttn`].
+ encoder_hid_dim (`int`, *optional*, defaults to None):
+ If `encoder_hid_dim_type` is defined, `encoder_hidden_states` will be projected from `encoder_hid_dim`
+ dimension to `cross_attention_dim`.
+ encoder_hid_dim_type (`str`, *optional*, defaults to `None`):
+ If given, the `encoder_hidden_states` and potentially other embeddings are down-projected to text
+ embeddings of dimension `cross_attention` according to `encoder_hid_dim_type`.
+ attention_head_dim (`int`, *optional*, defaults to 8): The dimension of the attention heads.
+ num_attention_heads (`int`, *optional*):
+ The number of attention heads. If not defined, defaults to `attention_head_dim`
+ resnet_time_scale_shift (`str`, *optional*, defaults to `"default"`): Time scale shift config
+ for ResNet blocks (see [`~models.resnet.ResnetBlock2D`]). Choose from `default` or `scale_shift`.
+ class_embed_type (`str`, *optional*, defaults to `None`):
+ The type of class embedding to use which is ultimately summed with the time embeddings. Choose from `None`,
+ `"timestep"`, `"identity"`, `"projection"`, or `"simple_projection"`.
+ addition_embed_type (`str`, *optional*, defaults to `None`):
+ Configures an optional embedding which will be summed with the time embeddings. Choose from `None` or
+ "text". "text" will use the `TextTimeEmbedding` layer.
+ addition_time_embed_dim: (`int`, *optional*, defaults to `None`):
+ Dimension for the timestep embeddings.
+ num_class_embeds (`int`, *optional*, defaults to `None`):
+ Input dimension of the learnable embedding matrix to be projected to `time_embed_dim`, when performing
+ class conditioning with `class_embed_type` equal to `None`.
+ time_embedding_type (`str`, *optional*, defaults to `positional`):
+ The type of position embedding to use for timesteps. Choose from `positional` or `fourier`.
+ time_embedding_dim (`int`, *optional*, defaults to `None`):
+ An optional override for the dimension of the projected time embedding.
+ time_embedding_act_fn (`str`, *optional*, defaults to `None`):
+ Optional activation function to use only once on the time embeddings before they are passed to the rest of
+ the UNet. Choose from `silu`, `mish`, `gelu`, and `swish`.
+ timestep_post_act (`str`, *optional*, defaults to `None`):
+ The second activation function to use in timestep embedding. Choose from `silu`, `mish` and `gelu`.
+ time_cond_proj_dim (`int`, *optional*, defaults to `None`):
+ The dimension of `cond_proj` layer in the timestep embedding.
+ conv_in_kernel (`int`, *optional*, default to `3`): The kernel size of `conv_in` layer.
+ conv_out_kernel (`int`, *optional*, default to `3`): The kernel size of `conv_out` layer.
+ projection_class_embeddings_input_dim (`int`, *optional*): The dimension of the `class_labels` input when
+ `class_embed_type="projection"`. Required when `class_embed_type="projection"`.
+ class_embeddings_concat (`bool`, *optional*, defaults to `False`): Whether to concatenate the time
+ embeddings with the class embeddings.
+ mid_block_only_cross_attention (`bool`, *optional*, defaults to `None`):
+ Whether to use cross attention with the mid block when using the `UNetMidBlock2DSimpleCrossAttn`. If
+ `only_cross_attention` is given as a single boolean and `mid_block_only_cross_attention` is `None`, the
+ `only_cross_attention` value is used as the value for `mid_block_only_cross_attention`. Default to `False`
+ otherwise.
+ """
+
+ _supports_gradient_checkpointing = True
+
+ @register_to_config
+ def __init__(
+ self,
+ sample_size: Optional[int] = None,
+ in_channels: int = 4,
+ out_channels: int = 4,
+ center_input_sample: bool = False,
+ flip_sin_to_cos: bool = True,
+ freq_shift: int = 0,
+ down_block_types: Tuple[str] = (
+ "CrossAttnDownBlockMV2D",
+ "CrossAttnDownBlockMV2D",
+ "CrossAttnDownBlockMV2D",
+ "DownBlock2D",
+ ),
+ mid_block_type: Optional[str] = "UNetMidBlockMV2DCrossAttn",
+ up_block_types: Tuple[str] = ("UpBlock2D", "CrossAttnUpBlockMV2D", "CrossAttnUpBlockMV2D", "CrossAttnUpBlockMV2D"),
+ only_cross_attention: Union[bool, Tuple[bool]] = False,
+ block_out_channels: Tuple[int] = (320, 640, 1280, 1280),
+ layers_per_block: Union[int, Tuple[int]] = 2,
+ downsample_padding: int = 1,
+ mid_block_scale_factor: float = 1,
+ act_fn: str = "silu",
+ norm_num_groups: Optional[int] = 32,
+ norm_eps: float = 1e-5,
+ cross_attention_dim: Union[int, Tuple[int]] = 1280,
+ transformer_layers_per_block: Union[int, Tuple[int]] = 1,
+ encoder_hid_dim: Optional[int] = None,
+ encoder_hid_dim_type: Optional[str] = None,
+ attention_head_dim: Union[int, Tuple[int]] = 8,
+ num_attention_heads: Optional[Union[int, Tuple[int]]] = None,
+ dual_cross_attention: bool = False,
+ use_linear_projection: bool = False,
+ class_embed_type: Optional[str] = None,
+ addition_embed_type: Optional[str] = None,
+ addition_time_embed_dim: Optional[int] = None,
+ num_class_embeds: Optional[int] = None,
+ upcast_attention: bool = False,
+ resnet_time_scale_shift: str = "default",
+ resnet_skip_time_act: bool = False,
+ resnet_out_scale_factor: int = 1.0,
+ time_embedding_type: str = "positional",
+ time_embedding_dim: Optional[int] = None,
+ time_embedding_act_fn: Optional[str] = None,
+ timestep_post_act: Optional[str] = None,
+ time_cond_proj_dim: Optional[int] = None,
+ conv_in_kernel: int = 3,
+ conv_out_kernel: int = 3,
+ projection_class_embeddings_input_dim: Optional[int] = None,
+ class_embeddings_concat: bool = False,
+ mid_block_only_cross_attention: Optional[bool] = None,
+ cross_attention_norm: Optional[str] = None,
+ addition_embed_type_num_heads=64,
+ num_views: int = 1,
+ joint_attention: bool = False,
+ joint_attention_twice: bool = False,
+ multiview_attention: bool = True,
+ cross_domain_attention: bool = False,
+ camera_input_dim: int = 12,
+ camera_hidden_dim: int = 320,
+ camera_output_dim: int = 1280,
+
+ ):
+ super().__init__()
+
+ self.sample_size = sample_size
+
+ if num_attention_heads is not None:
+ raise ValueError(
+ "At the moment it is not possible to define the number of attention heads via `num_attention_heads` because of a naming issue as described in https://github.com/huggingface/diffusers/issues/2011#issuecomment-1547958131. Passing `num_attention_heads` will only be supported in diffusers v0.19."
+ )
+
+ # If `num_attention_heads` is not defined (which is the case for most models)
+ # it will default to `attention_head_dim`. This looks weird upon first reading it and it is.
+ # The reason for this behavior is to correct for incorrectly named variables that were introduced
+ # when this library was created. The incorrect naming was only discovered much later in https://github.com/huggingface/diffusers/issues/2011#issuecomment-1547958131
+ # Changing `attention_head_dim` to `num_attention_heads` for 40,000+ configurations is too backwards breaking
+ # which is why we correct for the naming here.
+ num_attention_heads = num_attention_heads or attention_head_dim
+
+ # Check inputs
+ if len(down_block_types) != len(up_block_types):
+ raise ValueError(
+ f"Must provide the same number of `down_block_types` as `up_block_types`. `down_block_types`: {down_block_types}. `up_block_types`: {up_block_types}."
+ )
+
+ if len(block_out_channels) != len(down_block_types):
+ raise ValueError(
+ f"Must provide the same number of `block_out_channels` as `down_block_types`. `block_out_channels`: {block_out_channels}. `down_block_types`: {down_block_types}."
+ )
+
+ if not isinstance(only_cross_attention, bool) and len(only_cross_attention) != len(down_block_types):
+ raise ValueError(
+ f"Must provide the same number of `only_cross_attention` as `down_block_types`. `only_cross_attention`: {only_cross_attention}. `down_block_types`: {down_block_types}."
+ )
+
+ if not isinstance(num_attention_heads, int) and len(num_attention_heads) != len(down_block_types):
+ raise ValueError(
+ f"Must provide the same number of `num_attention_heads` as `down_block_types`. `num_attention_heads`: {num_attention_heads}. `down_block_types`: {down_block_types}."
+ )
+
+ if not isinstance(attention_head_dim, int) and len(attention_head_dim) != len(down_block_types):
+ raise ValueError(
+ f"Must provide the same number of `attention_head_dim` as `down_block_types`. `attention_head_dim`: {attention_head_dim}. `down_block_types`: {down_block_types}."
+ )
+
+ if isinstance(cross_attention_dim, list) and len(cross_attention_dim) != len(down_block_types):
+ raise ValueError(
+ f"Must provide the same number of `cross_attention_dim` as `down_block_types`. `cross_attention_dim`: {cross_attention_dim}. `down_block_types`: {down_block_types}."
+ )
+
+ if not isinstance(layers_per_block, int) and len(layers_per_block) != len(down_block_types):
+ raise ValueError(
+ f"Must provide the same number of `layers_per_block` as `down_block_types`. `layers_per_block`: {layers_per_block}. `down_block_types`: {down_block_types}."
+ )
+
+ # input
+ conv_in_padding = (conv_in_kernel - 1) // 2
+ self.conv_in = nn.Conv2d(
+ in_channels, block_out_channels[0], kernel_size=conv_in_kernel, padding=conv_in_padding
+ )
+
+ # time
+ if time_embedding_type == "fourier":
+ time_embed_dim = time_embedding_dim or block_out_channels[0] * 2
+ if time_embed_dim % 2 != 0:
+ raise ValueError(f"`time_embed_dim` should be divisible by 2, but is {time_embed_dim}.")
+ self.time_proj = GaussianFourierProjection(
+ time_embed_dim // 2, set_W_to_weight=False, log=False, flip_sin_to_cos=flip_sin_to_cos
+ )
+ timestep_input_dim = time_embed_dim
+ elif time_embedding_type == "positional":
+ time_embed_dim = time_embedding_dim or block_out_channels[0] * 4
+
+ self.time_proj = Timesteps(block_out_channels[0], flip_sin_to_cos, freq_shift)
+ timestep_input_dim = block_out_channels[0]
+ else:
+ raise ValueError(
+ f"{time_embedding_type} does not exist. Please make sure to use one of `fourier` or `positional`."
+ )
+
+ self.time_embedding = TimestepEmbedding(
+ timestep_input_dim,
+ time_embed_dim,
+ act_fn=act_fn,
+ post_act_fn=timestep_post_act,
+ cond_proj_dim=time_cond_proj_dim,
+ )
+
+ if encoder_hid_dim_type is None and encoder_hid_dim is not None:
+ encoder_hid_dim_type = "text_proj"
+ self.register_to_config(encoder_hid_dim_type=encoder_hid_dim_type)
+ logger.info("encoder_hid_dim_type defaults to 'text_proj' as `encoder_hid_dim` is defined.")
+
+ if encoder_hid_dim is None and encoder_hid_dim_type is not None:
+ raise ValueError(
+ f"`encoder_hid_dim` has to be defined when `encoder_hid_dim_type` is set to {encoder_hid_dim_type}."
+ )
+
+ if encoder_hid_dim_type == "text_proj":
+ self.encoder_hid_proj = nn.Linear(encoder_hid_dim, cross_attention_dim)
+ elif encoder_hid_dim_type == "text_image_proj":
+ # image_embed_dim DOESN'T have to be `cross_attention_dim`. To not clutter the __init__ too much
+ # they are set to `cross_attention_dim` here as this is exactly the required dimension for the currently only use
+ # case when `addition_embed_type == "text_image_proj"` (Kadinsky 2.1)`
+ self.encoder_hid_proj = TextImageProjection(
+ text_embed_dim=encoder_hid_dim,
+ image_embed_dim=cross_attention_dim,
+ cross_attention_dim=cross_attention_dim,
+ )
+ elif encoder_hid_dim_type == "image_proj":
+ # Kandinsky 2.2
+ self.encoder_hid_proj = ImageProjection(
+ image_embed_dim=encoder_hid_dim,
+ cross_attention_dim=cross_attention_dim,
+ )
+ elif encoder_hid_dim_type is not None:
+ raise ValueError(
+ f"encoder_hid_dim_type: {encoder_hid_dim_type} must be None, 'text_proj' or 'text_image_proj'."
+ )
+ else:
+ self.encoder_hid_proj = None
+
+ # class embedding
+ if class_embed_type is None and num_class_embeds is not None:
+ self.class_embedding = nn.Embedding(num_class_embeds, time_embed_dim)
+ elif class_embed_type == "timestep":
+ self.class_embedding = TimestepEmbedding(timestep_input_dim, time_embed_dim, act_fn=act_fn)
+ elif class_embed_type == "identity":
+ self.class_embedding = nn.Identity(time_embed_dim, time_embed_dim)
+ elif class_embed_type == "projection":
+ if projection_class_embeddings_input_dim is None:
+ raise ValueError(
+ "`class_embed_type`: 'projection' requires `projection_class_embeddings_input_dim` be set"
+ )
+ # The projection `class_embed_type` is the same as the timestep `class_embed_type` except
+ # 1. the `class_labels` inputs are not first converted to sinusoidal embeddings
+ # 2. it projects from an arbitrary input dimension.
+ #
+ # Note that `TimestepEmbedding` is quite general, being mainly linear layers and activations.
+ # When used for embedding actual timesteps, the timesteps are first converted to sinusoidal embeddings.
+ # As a result, `TimestepEmbedding` can be passed arbitrary vectors.
+ self.class_embedding = TimestepEmbedding(projection_class_embeddings_input_dim, time_embed_dim)
+ elif class_embed_type == "simple_projection":
+ if projection_class_embeddings_input_dim is None:
+ raise ValueError(
+ "`class_embed_type`: 'simple_projection' requires `projection_class_embeddings_input_dim` be set"
+ )
+ self.class_embedding = nn.Linear(projection_class_embeddings_input_dim, time_embed_dim)
+ else:
+ self.class_embedding = None
+
+ if addition_embed_type == "text":
+ if encoder_hid_dim is not None:
+ text_time_embedding_from_dim = encoder_hid_dim
+ else:
+ text_time_embedding_from_dim = cross_attention_dim
+
+ self.add_embedding = TextTimeEmbedding(
+ text_time_embedding_from_dim, time_embed_dim, num_heads=addition_embed_type_num_heads
+ )
+ elif addition_embed_type == "text_image":
+ # text_embed_dim and image_embed_dim DON'T have to be `cross_attention_dim`. To not clutter the __init__ too much
+ # they are set to `cross_attention_dim` here as this is exactly the required dimension for the currently only use
+ # case when `addition_embed_type == "text_image"` (Kadinsky 2.1)`
+ self.add_embedding = TextImageTimeEmbedding(
+ text_embed_dim=cross_attention_dim, image_embed_dim=cross_attention_dim, time_embed_dim=time_embed_dim
+ )
+ elif addition_embed_type == "text_time":
+ self.add_time_proj = Timesteps(addition_time_embed_dim, flip_sin_to_cos, freq_shift)
+ self.add_embedding = TimestepEmbedding(projection_class_embeddings_input_dim, time_embed_dim)
+ elif addition_embed_type == "image":
+ # Kandinsky 2.2
+ self.add_embedding = ImageTimeEmbedding(image_embed_dim=encoder_hid_dim, time_embed_dim=time_embed_dim)
+ elif addition_embed_type == "image_hint":
+ # Kandinsky 2.2 ControlNet
+ self.add_embedding = ImageHintTimeEmbedding(image_embed_dim=encoder_hid_dim, time_embed_dim=time_embed_dim)
+ elif addition_embed_type is not None:
+ raise ValueError(f"addition_embed_type: {addition_embed_type} must be None, 'text' or 'text_image'.")
+
+ if time_embedding_act_fn is None:
+ self.time_embed_act = None
+ else:
+ self.time_embed_act = get_activation(time_embedding_act_fn)
+
+ self.camera_embedding = nn.Sequential(
+ nn.Linear(camera_input_dim, time_embed_dim),
+ nn.SiLU(),
+ nn.Linear(time_embed_dim, time_embed_dim),
+ )
+
+ self.down_blocks = nn.ModuleList([])
+ self.up_blocks = nn.ModuleList([])
+
+ if isinstance(only_cross_attention, bool):
+ if mid_block_only_cross_attention is None:
+ mid_block_only_cross_attention = only_cross_attention
+
+ only_cross_attention = [only_cross_attention] * len(down_block_types)
+
+ if mid_block_only_cross_attention is None:
+ mid_block_only_cross_attention = False
+
+ if isinstance(num_attention_heads, int):
+ num_attention_heads = (num_attention_heads,) * len(down_block_types)
+
+ if isinstance(attention_head_dim, int):
+ attention_head_dim = (attention_head_dim,) * len(down_block_types)
+
+ if isinstance(cross_attention_dim, int):
+ cross_attention_dim = (cross_attention_dim,) * len(down_block_types)
+
+ if isinstance(layers_per_block, int):
+ layers_per_block = [layers_per_block] * len(down_block_types)
+
+ if isinstance(transformer_layers_per_block, int):
+ transformer_layers_per_block = [transformer_layers_per_block] * len(down_block_types)
+
+ if class_embeddings_concat:
+ # The time embeddings are concatenated with the class embeddings. The dimension of the
+ # time embeddings passed to the down, middle, and up blocks is twice the dimension of the
+ # regular time embeddings
+ blocks_time_embed_dim = time_embed_dim * 2
+ else:
+ blocks_time_embed_dim = time_embed_dim
+
+ # down
+ output_channel = block_out_channels[0]
+ for i, down_block_type in enumerate(down_block_types):
+ input_channel = output_channel
+ output_channel = block_out_channels[i]
+ is_final_block = i == len(block_out_channels) - 1
+
+ down_block = get_down_block(
+ down_block_type,
+ num_layers=layers_per_block[i],
+ transformer_layers_per_block=transformer_layers_per_block[i],
+ in_channels=input_channel,
+ out_channels=output_channel,
+ temb_channels=blocks_time_embed_dim,
+ add_downsample=not is_final_block,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ resnet_groups=norm_num_groups,
+ cross_attention_dim=cross_attention_dim[i],
+ num_attention_heads=num_attention_heads[i],
+ downsample_padding=downsample_padding,
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention[i],
+ upcast_attention=upcast_attention,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ resnet_skip_time_act=resnet_skip_time_act,
+ resnet_out_scale_factor=resnet_out_scale_factor,
+ cross_attention_norm=cross_attention_norm,
+ attention_head_dim=attention_head_dim[i] if attention_head_dim[i] is not None else output_channel,
+ num_views=num_views,
+ joint_attention=joint_attention,
+ joint_attention_twice=joint_attention_twice,
+ multiview_attention=multiview_attention,
+ cross_domain_attention=cross_domain_attention
+ )
+ self.down_blocks.append(down_block)
+
+ # mid
+ if mid_block_type == "UNetMidBlock2DCrossAttn":
+ self.mid_block = UNetMidBlock2DCrossAttn(
+ transformer_layers_per_block=transformer_layers_per_block[-1],
+ in_channels=block_out_channels[-1],
+ temb_channels=blocks_time_embed_dim,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ output_scale_factor=mid_block_scale_factor,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ cross_attention_dim=cross_attention_dim[-1],
+ num_attention_heads=num_attention_heads[-1],
+ resnet_groups=norm_num_groups,
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ upcast_attention=upcast_attention,
+ )
+ # custom MV2D attention block
+ elif mid_block_type == "UNetMidBlockMV2DCrossAttn":
+ self.mid_block = UNetMidBlockMV2DCrossAttn(
+ transformer_layers_per_block=transformer_layers_per_block[-1],
+ in_channels=block_out_channels[-1],
+ temb_channels=blocks_time_embed_dim,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ output_scale_factor=mid_block_scale_factor,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ cross_attention_dim=cross_attention_dim[-1],
+ num_attention_heads=num_attention_heads[-1],
+ resnet_groups=norm_num_groups,
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ upcast_attention=upcast_attention,
+ num_views=num_views,
+ joint_attention=joint_attention,
+ joint_attention_twice=joint_attention_twice,
+ multiview_attention=multiview_attention,
+ cross_domain_attention=cross_domain_attention
+ )
+ elif mid_block_type == "UNetMidBlock2DSimpleCrossAttn":
+ self.mid_block = UNetMidBlock2DSimpleCrossAttn(
+ in_channels=block_out_channels[-1],
+ temb_channels=blocks_time_embed_dim,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ output_scale_factor=mid_block_scale_factor,
+ cross_attention_dim=cross_attention_dim[-1],
+ attention_head_dim=attention_head_dim[-1],
+ resnet_groups=norm_num_groups,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ skip_time_act=resnet_skip_time_act,
+ only_cross_attention=mid_block_only_cross_attention,
+ cross_attention_norm=cross_attention_norm,
+ )
+ elif mid_block_type is None:
+ self.mid_block = None
+ else:
+ raise ValueError(f"unknown mid_block_type : {mid_block_type}")
+
+ # count how many layers upsample the images
+ self.num_upsamplers = 0
+
+ # up
+ reversed_block_out_channels = list(reversed(block_out_channels))
+ reversed_num_attention_heads = list(reversed(num_attention_heads))
+ reversed_layers_per_block = list(reversed(layers_per_block))
+ reversed_cross_attention_dim = list(reversed(cross_attention_dim))
+ reversed_transformer_layers_per_block = list(reversed(transformer_layers_per_block))
+ only_cross_attention = list(reversed(only_cross_attention))
+
+ output_channel = reversed_block_out_channels[0]
+ for i, up_block_type in enumerate(up_block_types):
+ is_final_block = i == len(block_out_channels) - 1
+
+ prev_output_channel = output_channel
+ output_channel = reversed_block_out_channels[i]
+ input_channel = reversed_block_out_channels[min(i + 1, len(block_out_channels) - 1)]
+
+ # add upsample block for all BUT final layer
+ if not is_final_block:
+ add_upsample = True
+ self.num_upsamplers += 1
+ else:
+ add_upsample = False
+
+ up_block = get_up_block(
+ up_block_type,
+ num_layers=reversed_layers_per_block[i] + 1,
+ transformer_layers_per_block=reversed_transformer_layers_per_block[i],
+ in_channels=input_channel,
+ out_channels=output_channel,
+ prev_output_channel=prev_output_channel,
+ temb_channels=blocks_time_embed_dim,
+ add_upsample=add_upsample,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ resnet_groups=norm_num_groups,
+ cross_attention_dim=reversed_cross_attention_dim[i],
+ num_attention_heads=reversed_num_attention_heads[i],
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention[i],
+ upcast_attention=upcast_attention,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ resnet_skip_time_act=resnet_skip_time_act,
+ resnet_out_scale_factor=resnet_out_scale_factor,
+ cross_attention_norm=cross_attention_norm,
+ attention_head_dim=attention_head_dim[i] if attention_head_dim[i] is not None else output_channel,
+ num_views=num_views,
+ joint_attention=joint_attention,
+ joint_attention_twice=joint_attention_twice,
+ multiview_attention=multiview_attention,
+ cross_domain_attention=cross_domain_attention
+ )
+ self.up_blocks.append(up_block)
+ prev_output_channel = output_channel
+
+ # out
+ if norm_num_groups is not None:
+ self.conv_norm_out = nn.GroupNorm(
+ num_channels=block_out_channels[0], num_groups=norm_num_groups, eps=norm_eps
+ )
+
+ self.conv_act = get_activation(act_fn)
+
+ else:
+ self.conv_norm_out = None
+ self.conv_act = None
+
+ conv_out_padding = (conv_out_kernel - 1) // 2
+ self.conv_out = nn.Conv2d(
+ block_out_channels[0], out_channels, kernel_size=conv_out_kernel, padding=conv_out_padding
+ )
+
+ @property
+ def attn_processors(self) -> Dict[str, AttentionProcessor]:
+ r"""
+ Returns:
+ `dict` of attention processors: A dictionary containing all attention processors used in the model with
+ indexed by its weight name.
+ """
+ # set recursively
+ processors = {}
+
+ def fn_recursive_add_processors(name: str, module: torch.nn.Module, processors: Dict[str, AttentionProcessor]):
+ if hasattr(module, "set_processor"):
+ processors[f"{name}.processor"] = module.processor
+
+ for sub_name, child in module.named_children():
+ fn_recursive_add_processors(f"{name}.{sub_name}", child, processors)
+
+ return processors
+
+ for name, module in self.named_children():
+ fn_recursive_add_processors(name, module, processors)
+
+ return processors
+
+ def set_attn_processor(self, processor: Union[AttentionProcessor, Dict[str, AttentionProcessor]]):
+ r"""
+ Sets the attention processor to use to compute attention.
+
+ Parameters:
+ processor (`dict` of `AttentionProcessor` or only `AttentionProcessor`):
+ The instantiated processor class or a dictionary of processor classes that will be set as the processor
+ for **all** `Attention` layers.
+
+ If `processor` is a dict, the key needs to define the path to the corresponding cross attention
+ processor. This is strongly recommended when setting trainable attention processors.
+
+ """
+ count = len(self.attn_processors.keys())
+
+ if isinstance(processor, dict) and len(processor) != count:
+ raise ValueError(
+ f"A dict of processors was passed, but the number of processors {len(processor)} does not match the"
+ f" number of attention layers: {count}. Please make sure to pass {count} processor classes."
+ )
+
+ def fn_recursive_attn_processor(name: str, module: torch.nn.Module, processor):
+ if hasattr(module, "set_processor"):
+ if not isinstance(processor, dict):
+ module.set_processor(processor)
+ else:
+ module.set_processor(processor.pop(f"{name}.processor"))
+
+ for sub_name, child in module.named_children():
+ fn_recursive_attn_processor(f"{name}.{sub_name}", child, processor)
+
+ for name, module in self.named_children():
+ fn_recursive_attn_processor(name, module, processor)
+
+ def set_default_attn_processor(self):
+ """
+ Disables custom attention processors and sets the default attention implementation.
+ """
+ self.set_attn_processor(AttnProcessor())
+
+ def set_attention_slice(self, slice_size):
+ r"""
+ Enable sliced attention computation.
+
+ When this option is enabled, the attention module splits the input tensor in slices to compute attention in
+ several steps. This is useful for saving some memory in exchange for a small decrease in speed.
+
+ Args:
+ slice_size (`str` or `int` or `list(int)`, *optional*, defaults to `"auto"`):
+ When `"auto"`, input to the attention heads is halved, so attention is computed in two steps. If
+ `"max"`, maximum amount of memory is saved by running only one slice at a time. If a number is
+ provided, uses as many slices as `attention_head_dim // slice_size`. In this case, `attention_head_dim`
+ must be a multiple of `slice_size`.
+ """
+ sliceable_head_dims = []
+
+ def fn_recursive_retrieve_sliceable_dims(module: torch.nn.Module):
+ if hasattr(module, "set_attention_slice"):
+ sliceable_head_dims.append(module.sliceable_head_dim)
+
+ for child in module.children():
+ fn_recursive_retrieve_sliceable_dims(child)
+
+ # retrieve number of attention layers
+ for module in self.children():
+ fn_recursive_retrieve_sliceable_dims(module)
+
+ num_sliceable_layers = len(sliceable_head_dims)
+
+ if slice_size == "auto":
+ # half the attention head size is usually a good trade-off between
+ # speed and memory
+ slice_size = [dim // 2 for dim in sliceable_head_dims]
+ elif slice_size == "max":
+ # make smallest slice possible
+ slice_size = num_sliceable_layers * [1]
+
+ slice_size = num_sliceable_layers * [slice_size] if not isinstance(slice_size, list) else slice_size
+
+ if len(slice_size) != len(sliceable_head_dims):
+ raise ValueError(
+ f"You have provided {len(slice_size)}, but {self.config} has {len(sliceable_head_dims)} different"
+ f" attention layers. Make sure to match `len(slice_size)` to be {len(sliceable_head_dims)}."
+ )
+
+ for i in range(len(slice_size)):
+ size = slice_size[i]
+ dim = sliceable_head_dims[i]
+ if size is not None and size > dim:
+ raise ValueError(f"size {size} has to be smaller or equal to {dim}.")
+
+ # Recursively walk through all the children.
+ # Any children which exposes the set_attention_slice method
+ # gets the message
+ def fn_recursive_set_attention_slice(module: torch.nn.Module, slice_size: List[int]):
+ if hasattr(module, "set_attention_slice"):
+ module.set_attention_slice(slice_size.pop())
+
+ for child in module.children():
+ fn_recursive_set_attention_slice(child, slice_size)
+
+ reversed_slice_size = list(reversed(slice_size))
+ for module in self.children():
+ fn_recursive_set_attention_slice(module, reversed_slice_size)
+
+ # def _set_gradient_checkpointing(self, module, value=False):
+ # if isinstance(module, (CrossAttnDownBlock2D, CrossAttnDownBlockMV2D, DownBlock2D, CrossAttnUpBlock2D, CrossAttnUpBlockMV2D, UpBlock2D)):
+ # module.gradient_checkpointing = value
+
+ def forward(
+ self,
+ sample: torch.FloatTensor,
+ timestep: Union[torch.Tensor, float, int],
+ encoder_hidden_states: torch.Tensor,
+ camera_matrixs: Optional[torch.Tensor] = None,
+ class_labels: Optional[torch.Tensor] = None,
+ timestep_cond: Optional[torch.Tensor] = None,
+ attention_mask: Optional[torch.Tensor] = None,
+ cross_attention_kwargs: Optional[Dict[str, Any]] = None,
+ added_cond_kwargs: Optional[Dict[str, torch.Tensor]] = None,
+ down_block_additional_residuals: Optional[Tuple[torch.Tensor]] = None,
+ mid_block_additional_residual: Optional[torch.Tensor] = None,
+ encoder_attention_mask: Optional[torch.Tensor] = None,
+ return_dict: bool = True,
+ ) -> Union[UNetMV2DConditionOutput, Tuple]:
+ r"""
+ The [`UNet2DConditionModel`] forward method.
+
+ Args:
+ sample (`torch.FloatTensor`):
+ The noisy input tensor with the following shape `(batch, channel, height, width)`.
+ timestep (`torch.FloatTensor` or `float` or `int`): The number of timesteps to denoise an input.
+ encoder_hidden_states (`torch.FloatTensor`):
+ The encoder hidden states with shape `(batch, sequence_length, feature_dim)`.
+ encoder_attention_mask (`torch.Tensor`):
+ A cross-attention mask of shape `(batch, sequence_length)` is applied to `encoder_hidden_states`. If
+ `True` the mask is kept, otherwise if `False` it is discarded. Mask will be converted into a bias,
+ which adds large negative values to the attention scores corresponding to "discard" tokens.
+ return_dict (`bool`, *optional*, defaults to `True`):
+ Whether or not to return a [`~models.unet_2d_condition.UNet2DConditionOutput`] instead of a plain
+ tuple.
+ cross_attention_kwargs (`dict`, *optional*):
+ A kwargs dictionary that if specified is passed along to the [`AttnProcessor`].
+ added_cond_kwargs: (`dict`, *optional*):
+ A kwargs dictionary containin additional embeddings that if specified are added to the embeddings that
+ are passed along to the UNet blocks.
+
+ Returns:
+ [`~models.unet_2d_condition.UNet2DConditionOutput`] or `tuple`:
+ If `return_dict` is True, an [`~models.unet_2d_condition.UNet2DConditionOutput`] is returned, otherwise
+ a `tuple` is returned where the first element is the sample tensor.
+ """
+ # By default samples have to be AT least a multiple of the overall upsampling factor.
+ # The overall upsampling factor is equal to 2 ** (# num of upsampling layers).
+ # However, the upsampling interpolation output size can be forced to fit any upsampling size
+ # on the fly if necessary.
+ default_overall_up_factor = 2**self.num_upsamplers
+
+ # upsample size should be forwarded when sample is not a multiple of `default_overall_up_factor`
+ forward_upsample_size = False
+ upsample_size = None
+
+ if any(s % default_overall_up_factor != 0 for s in sample.shape[-2:]):
+ logger.info("Forward upsample size to force interpolation output size.")
+ forward_upsample_size = True
+
+ # ensure attention_mask is a bias, and give it a singleton query_tokens dimension
+ # expects mask of shape:
+ # [batch, key_tokens]
+ # adds singleton query_tokens dimension:
+ # [batch, 1, key_tokens]
+ # this helps to broadcast it as a bias over attention scores, which will be in one of the following shapes:
+ # [batch, heads, query_tokens, key_tokens] (e.g. torch sdp attn)
+ # [batch * heads, query_tokens, key_tokens] (e.g. xformers or classic attn)
+ if attention_mask is not None:
+ # assume that mask is expressed as:
+ # (1 = keep, 0 = discard)
+ # convert mask into a bias that can be added to attention scores:
+ # (keep = +0, discard = -10000.0)
+ attention_mask = (1 - attention_mask.to(sample.dtype)) * -10000.0
+ attention_mask = attention_mask.unsqueeze(1)
+
+ # convert encoder_attention_mask to a bias the same way we do for attention_mask
+ if encoder_attention_mask is not None:
+ encoder_attention_mask = (1 - encoder_attention_mask.to(sample.dtype)) * -10000.0
+ encoder_attention_mask = encoder_attention_mask.unsqueeze(1)
+
+ # 0. center input if necessary
+ if self.config.center_input_sample:
+ sample = 2 * sample - 1.0
+
+ # 1. time
+ timesteps = timestep
+ if not torch.is_tensor(timesteps):
+ # TODO: this requires sync between CPU and GPU. So try to pass timesteps as tensors if you can
+ # This would be a good case for the `match` statement (Python 3.10+)
+ is_mps = sample.device.type == "mps"
+ if isinstance(timestep, float):
+ dtype = torch.float32 if is_mps else torch.float64
+ else:
+ dtype = torch.int32 if is_mps else torch.int64
+ timesteps = torch.tensor([timesteps], dtype=dtype, device=sample.device)
+ elif len(timesteps.shape) == 0:
+ timesteps = timesteps[None].to(sample.device)
+
+ # broadcast to batch dimension in a way that's compatible with ONNX/Core ML
+ timesteps = timesteps.expand(sample.shape[0])
+
+ t_emb = self.time_proj(timesteps)
+
+ # `Timesteps` does not contain any weights and will always return f32 tensors
+ # but time_embedding might actually be running in fp16. so we need to cast here.
+ # there might be better ways to encapsulate this.
+ t_emb = t_emb.to(dtype=sample.dtype)
+ emb = self.time_embedding(t_emb, timestep_cond)
+
+ # import pdb; pdb.set_trace()
+ if camera_matrixs is not None:
+ emb = torch.unsqueeze(emb, 1)
+ # came emb
+ cam_emb = self.camera_embedding(camera_matrixs)
+ # cam_emb = self.camera_embedding_2(cam_emb)
+ # import ipdb
+ # ipdb.set_trace()
+ emb = emb.repeat(1,cam_emb.shape[1],1) #torch.Size([32, 4, 1280])
+ emb = emb + cam_emb
+ emb = rearrange(emb, "b f c -> (b f) c", f=emb.shape[1])
+
+ aug_emb = None
+
+ if self.class_embedding is not None and class_labels is not None:
+ if class_labels is None:
+ raise ValueError("class_labels should be provided when num_class_embeds > 0")
+
+ if self.config.class_embed_type == "timestep":
+ class_labels = self.time_proj(class_labels)
+
+ # `Timesteps` does not contain any weights and will always return f32 tensors
+ # there might be better ways to encapsulate this.
+ class_labels = class_labels.to(dtype=sample.dtype)
+
+ class_emb = self.class_embedding(class_labels).to(dtype=sample.dtype)
+
+ if self.config.class_embeddings_concat:
+ emb = torch.cat([emb, class_emb], dim=-1)
+ else:
+ emb = emb + class_emb
+
+ if self.config.addition_embed_type == "text":
+ aug_emb = self.add_embedding(encoder_hidden_states)
+ elif self.config.addition_embed_type == "text_image":
+ # Kandinsky 2.1 - style
+ if "image_embeds" not in added_cond_kwargs:
+ raise ValueError(
+ f"{self.__class__} has the config param `addition_embed_type` set to 'text_image' which requires the keyword argument `image_embeds` to be passed in `added_cond_kwargs`"
+ )
+
+ image_embs = added_cond_kwargs.get("image_embeds")
+ text_embs = added_cond_kwargs.get("text_embeds", encoder_hidden_states)
+ aug_emb = self.add_embedding(text_embs, image_embs)
+ elif self.config.addition_embed_type == "text_time":
+ # SDXL - style
+ if "text_embeds" not in added_cond_kwargs:
+ raise ValueError(
+ f"{self.__class__} has the config param `addition_embed_type` set to 'text_time' which requires the keyword argument `text_embeds` to be passed in `added_cond_kwargs`"
+ )
+ text_embeds = added_cond_kwargs.get("text_embeds")
+ if "time_ids" not in added_cond_kwargs:
+ raise ValueError(
+ f"{self.__class__} has the config param `addition_embed_type` set to 'text_time' which requires the keyword argument `time_ids` to be passed in `added_cond_kwargs`"
+ )
+ time_ids = added_cond_kwargs.get("time_ids")
+ time_embeds = self.add_time_proj(time_ids.flatten())
+ time_embeds = time_embeds.reshape((text_embeds.shape[0], -1))
+
+ add_embeds = torch.concat([text_embeds, time_embeds], dim=-1)
+ add_embeds = add_embeds.to(emb.dtype)
+ aug_emb = self.add_embedding(add_embeds)
+ elif self.config.addition_embed_type == "image":
+ # Kandinsky 2.2 - style
+ if "image_embeds" not in added_cond_kwargs:
+ raise ValueError(
+ f"{self.__class__} has the config param `addition_embed_type` set to 'image' which requires the keyword argument `image_embeds` to be passed in `added_cond_kwargs`"
+ )
+ image_embs = added_cond_kwargs.get("image_embeds")
+ aug_emb = self.add_embedding(image_embs)
+ elif self.config.addition_embed_type == "image_hint":
+ # Kandinsky 2.2 - style
+ if "image_embeds" not in added_cond_kwargs or "hint" not in added_cond_kwargs:
+ raise ValueError(
+ f"{self.__class__} has the config param `addition_embed_type` set to 'image_hint' which requires the keyword arguments `image_embeds` and `hint` to be passed in `added_cond_kwargs`"
+ )
+ image_embs = added_cond_kwargs.get("image_embeds")
+ hint = added_cond_kwargs.get("hint")
+ aug_emb, hint = self.add_embedding(image_embs, hint)
+ sample = torch.cat([sample, hint], dim=1)
+
+ emb = emb + aug_emb if aug_emb is not None else emb
+
+ if self.time_embed_act is not None:
+ emb = self.time_embed_act(emb)
+
+ if self.encoder_hid_proj is not None and self.config.encoder_hid_dim_type == "text_proj":
+ encoder_hidden_states = self.encoder_hid_proj(encoder_hidden_states)
+ elif self.encoder_hid_proj is not None and self.config.encoder_hid_dim_type == "text_image_proj":
+ # Kadinsky 2.1 - style
+ if "image_embeds" not in added_cond_kwargs:
+ raise ValueError(
+ f"{self.__class__} has the config param `encoder_hid_dim_type` set to 'text_image_proj' which requires the keyword argument `image_embeds` to be passed in `added_conditions`"
+ )
+
+ image_embeds = added_cond_kwargs.get("image_embeds")
+ encoder_hidden_states = self.encoder_hid_proj(encoder_hidden_states, image_embeds)
+ elif self.encoder_hid_proj is not None and self.config.encoder_hid_dim_type == "image_proj":
+ # Kandinsky 2.2 - style
+ if "image_embeds" not in added_cond_kwargs:
+ raise ValueError(
+ f"{self.__class__} has the config param `encoder_hid_dim_type` set to 'image_proj' which requires the keyword argument `image_embeds` to be passed in `added_conditions`"
+ )
+ image_embeds = added_cond_kwargs.get("image_embeds")
+ encoder_hidden_states = self.encoder_hid_proj(image_embeds)
+ # 2. pre-process
+ sample = rearrange(sample, "b c f h w -> (b f) c h w", f=sample.shape[2])
+ sample = self.conv_in(sample)
+ # 3. down
+
+ is_controlnet = mid_block_additional_residual is not None and down_block_additional_residuals is not None
+ is_adapter = mid_block_additional_residual is None and down_block_additional_residuals is not None
+
+ down_block_res_samples = (sample,)
+ for downsample_block in self.down_blocks:
+ if hasattr(downsample_block, "has_cross_attention") and downsample_block.has_cross_attention:
+ # For t2i-adapter CrossAttnDownBlock2D
+ additional_residuals = {}
+ if is_adapter and len(down_block_additional_residuals) > 0:
+ additional_residuals["additional_residuals"] = down_block_additional_residuals.pop(0)
+
+ sample, res_samples = downsample_block(
+ hidden_states=sample,
+ temb=emb,
+ encoder_hidden_states=encoder_hidden_states,
+ attention_mask=attention_mask,
+ cross_attention_kwargs=cross_attention_kwargs,
+ encoder_attention_mask=encoder_attention_mask,
+ **additional_residuals,
+ )
+ else:
+ sample, res_samples = downsample_block(hidden_states=sample, temb=emb)
+
+ if is_adapter and len(down_block_additional_residuals) > 0:
+ sample += down_block_additional_residuals.pop(0)
+
+ down_block_res_samples += res_samples
+
+ if is_controlnet:
+ new_down_block_res_samples = ()
+
+ for down_block_res_sample, down_block_additional_residual in zip(
+ down_block_res_samples, down_block_additional_residuals
+ ):
+ down_block_res_sample = down_block_res_sample + down_block_additional_residual
+ new_down_block_res_samples = new_down_block_res_samples + (down_block_res_sample,)
+
+ down_block_res_samples = new_down_block_res_samples
+ # print("after down: ", sample.mean(), emb.mean())
+ # 4. mid
+ if self.mid_block is not None:
+ sample = self.mid_block(
+ sample,
+ emb,
+ encoder_hidden_states=encoder_hidden_states,
+ attention_mask=attention_mask,
+ cross_attention_kwargs=cross_attention_kwargs,
+ encoder_attention_mask=encoder_attention_mask,
+ )
+
+ if is_controlnet:
+ sample = sample + mid_block_additional_residual
+
+ # 5. up
+ for i, upsample_block in enumerate(self.up_blocks):
+ is_final_block = i == len(self.up_blocks) - 1
+
+ res_samples = down_block_res_samples[-len(upsample_block.resnets) :]
+ down_block_res_samples = down_block_res_samples[: -len(upsample_block.resnets)]
+
+ # if we have not reached the final block and need to forward the
+ # upsample size, we do it here
+ if not is_final_block and forward_upsample_size:
+ upsample_size = down_block_res_samples[-1].shape[2:]
+
+ if hasattr(upsample_block, "has_cross_attention") and upsample_block.has_cross_attention:
+ sample = upsample_block(
+ hidden_states=sample,
+ temb=emb,
+ res_hidden_states_tuple=res_samples,
+ encoder_hidden_states=encoder_hidden_states,
+ cross_attention_kwargs=cross_attention_kwargs,
+ upsample_size=upsample_size,
+ attention_mask=attention_mask,
+ encoder_attention_mask=encoder_attention_mask,
+ )
+ else:
+ sample = upsample_block(
+ hidden_states=sample, temb=emb, res_hidden_states_tuple=res_samples, upsample_size=upsample_size
+ )
+
+ # 6. post-process
+ if self.conv_norm_out:
+ sample = self.conv_norm_out(sample)
+ sample = self.conv_act(sample)
+ sample = self.conv_out(sample)
+
+ if not return_dict:
+ return (sample,)
+
+ return UNetMV2DConditionOutput(sample=sample)
+
+ @classmethod
+ def from_pretrained_2d(
+ cls, pretrained_model_name_or_path: Optional[Union[str, os.PathLike]],
+ camera_embedding_type: str, num_views: int, sample_size: int,
+ zero_init_conv_in: bool = True, zero_init_camera_projection: bool = False,
+ projection_class_embeddings_input_dim: int=6, joint_attention: bool = False,
+ joint_attention_twice: bool = False, multiview_attention: bool = True,
+ cross_domain_attention: bool = False,
+ in_channels: int = 8, out_channels: int = 4, local_crossattn=False,
+ **kwargs
+ ):
+ r"""
+ Instantiate a pretrained PyTorch model from a pretrained model configuration.
+
+ The model is set in evaluation mode - `model.eval()` - by default, and dropout modules are deactivated. To
+ train the model, set it back in training mode with `model.train()`.
+
+ Parameters:
+ pretrained_model_name_or_path (`str` or `os.PathLike`, *optional*):
+ Can be either:
+
+ - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on
+ the Hub.
+ - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved
+ with [`~ModelMixin.save_pretrained`].
+
+ cache_dir (`Union[str, os.PathLike]`, *optional*):
+ Path to a directory where a downloaded pretrained model configuration is cached if the standard cache
+ is not used.
+ torch_dtype (`str` or `torch.dtype`, *optional*):
+ Override the default `torch.dtype` and load the model with another dtype. If `"auto"` is passed, the
+ dtype is automatically derived from the model's weights.
+ force_download (`bool`, *optional*, defaults to `False`):
+ Whether or not to force the (re-)download of the model weights and configuration files, overriding the
+ cached versions if they exist.
+ resume_download (`bool`, *optional*, defaults to `False`):
+ Whether or not to resume downloading the model weights and configuration files. If set to `False`, any
+ incompletely downloaded files are deleted.
+ proxies (`Dict[str, str]`, *optional*):
+ A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128',
+ 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request.
+ output_loading_info (`bool`, *optional*, defaults to `False`):
+ Whether or not to also return a dictionary containing missing keys, unexpected keys and error messages.
+ local_files_only(`bool`, *optional*, defaults to `False`):
+ Whether to only load local model weights and configuration files or not. If set to `True`, the model
+ won't be downloaded from the Hub.
+ use_auth_token (`str` or *bool*, *optional*):
+ The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from
+ `diffusers-cli login` (stored in `~/.huggingface`) is used.
+ revision (`str`, *optional*, defaults to `"main"`):
+ The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier
+ allowed by Git.
+ from_flax (`bool`, *optional*, defaults to `False`):
+ Load the model weights from a Flax checkpoint save file.
+ subfolder (`str`, *optional*, defaults to `""`):
+ The subfolder location of a model file within a larger model repository on the Hub or locally.
+ mirror (`str`, *optional*):
+ Mirror source to resolve accessibility issues if you're downloading a model in China. We do not
+ guarantee the timeliness or safety of the source, and you should refer to the mirror site for more
+ information.
+ device_map (`str` or `Dict[str, Union[int, str, torch.device]]`, *optional*):
+ A map that specifies where each submodule should go. It doesn't need to be defined for each
+ parameter/buffer name; once a given module name is inside, every submodule of it will be sent to the
+ same device.
+
+ Set `device_map="auto"` to have 🤗 Accelerate automatically compute the most optimized `device_map`. For
+ more information about each option see [designing a device
+ map](https://hf.co/docs/accelerate/main/en/usage_guides/big_modeling#designing-a-device-map).
+ max_memory (`Dict`, *optional*):
+ A dictionary device identifier for the maximum memory. Will default to the maximum memory available for
+ each GPU and the available CPU RAM if unset.
+ offload_folder (`str` or `os.PathLike`, *optional*):
+ The path to offload weights if `device_map` contains the value `"disk"`.
+ offload_state_dict (`bool`, *optional*):
+ If `True`, temporarily offloads the CPU state dict to the hard drive to avoid running out of CPU RAM if
+ the weight of the CPU state dict + the biggest shard of the checkpoint does not fit. Defaults to `True`
+ when there is some disk offload.
+ low_cpu_mem_usage (`bool`, *optional*, defaults to `True` if torch version >= 1.9.0 else `False`):
+ Speed up model loading only loading the pretrained weights and not initializing the weights. This also
+ tries to not use more than 1x model size in CPU memory (including peak memory) while loading the model.
+ Only supported for PyTorch >= 1.9.0. If you are using an older version of PyTorch, setting this
+ argument to `True` will raise an error.
+ variant (`str`, *optional*):
+ Load weights from a specified `variant` filename such as `"fp16"` or `"ema"`. This is ignored when
+ loading `from_flax`.
+ use_safetensors (`bool`, *optional*, defaults to `None`):
+ If set to `None`, the `safetensors` weights are downloaded if they're available **and** if the
+ `safetensors` library is installed. If set to `True`, the model is forcibly loaded from `safetensors`
+ weights. If set to `False`, `safetensors` weights are not loaded.
+
+
+
+ To use private or [gated models](https://huggingface.co/docs/hub/models-gated#gated-models), log-in with
+ `huggingface-cli login`. You can also activate the special
+ ["offline-mode"](https://huggingface.co/diffusers/installation.html#offline-mode) to use this method in a
+ firewalled environment.
+
+
+
+ Example:
+
+ ```py
+ from diffusers import UNet2DConditionModel
+
+ unet = UNet2DConditionModel.from_pretrained("runwayml/stable-diffusion-v1-5", subfolder="unet")
+ ```
+
+ If you get the error message below, you need to finetune the weights for your downstream task:
+
+ ```bash
+ Some weights of UNet2DConditionModel were not initialized from the model checkpoint at runwayml/stable-diffusion-v1-5 and are newly initialized because the shapes did not match:
+ - conv_in.weight: found shape torch.Size([320, 4, 3, 3]) in the checkpoint and torch.Size([320, 9, 3, 3]) in the model instantiated
+ You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.
+ ```
+ """
+ cache_dir = kwargs.pop("cache_dir", DIFFUSERS_CACHE)
+ ignore_mismatched_sizes = kwargs.pop("ignore_mismatched_sizes", False)
+ force_download = kwargs.pop("force_download", False)
+ from_flax = kwargs.pop("from_flax", False)
+ resume_download = kwargs.pop("resume_download", False)
+ proxies = kwargs.pop("proxies", None)
+ output_loading_info = kwargs.pop("output_loading_info", False)
+ local_files_only = kwargs.pop("local_files_only", HF_HUB_OFFLINE)
+ use_auth_token = kwargs.pop("use_auth_token", None)
+ revision = kwargs.pop("revision", None)
+ torch_dtype = kwargs.pop("torch_dtype", None)
+ subfolder = kwargs.pop("subfolder", None)
+ device_map = kwargs.pop("device_map", None)
+ max_memory = kwargs.pop("max_memory", None)
+ offload_folder = kwargs.pop("offload_folder", None)
+ offload_state_dict = kwargs.pop("offload_state_dict", False)
+ variant = kwargs.pop("variant", None)
+ use_safetensors = kwargs.pop("use_safetensors", None)
+
+ # if use_safetensors and not is_safetensors_available():
+ # raise ValueError(
+ # "`use_safetensors`=True but safetensors is not installed. Please install safetensors with `pip install safetensors"
+ # )
+
+ allow_pickle = False
+ if use_safetensors is None:
+ # use_safetensors = is_safetensors_available()
+ use_safetensors = False
+ allow_pickle = True
+
+ if device_map is not None and not is_accelerate_available():
+ raise NotImplementedError(
+ "Loading and dispatching requires `accelerate`. Please make sure to install accelerate or set"
+ " `device_map=None`. You can install accelerate with `pip install accelerate`."
+ )
+
+ # Check if we can handle device_map and dispatching the weights
+ if device_map is not None and not is_torch_version(">=", "1.9.0"):
+ raise NotImplementedError(
+ "Loading and dispatching requires torch >= 1.9.0. Please either update your PyTorch version or set"
+ " `device_map=None`."
+ )
+
+ # Load config if we don't provide a configuration
+ config_path = pretrained_model_name_or_path
+
+ user_agent = {
+ "diffusers": __version__,
+ "file_type": "model",
+ "framework": "pytorch",
+ }
+
+ # load config
+ config, unused_kwargs, commit_hash = cls.load_config(
+ config_path,
+ cache_dir=cache_dir,
+ return_unused_kwargs=True,
+ return_commit_hash=True,
+ force_download=force_download,
+ resume_download=resume_download,
+ proxies=proxies,
+ local_files_only=local_files_only,
+ use_auth_token=use_auth_token,
+ revision=revision,
+ subfolder=subfolder,
+ device_map=device_map,
+ max_memory=max_memory,
+ offload_folder=offload_folder,
+ offload_state_dict=offload_state_dict,
+ user_agent=user_agent,
+ **kwargs,
+ )
+
+ # modify config
+ config["_class_name"] = cls.__name__
+ config['in_channels'] = in_channels
+ config['out_channels'] = out_channels
+ config['sample_size'] = sample_size # training resolution
+ config['num_views'] = num_views
+ config['joint_attention'] = joint_attention
+ config['joint_attention_twice'] = joint_attention_twice
+ config['multiview_attention'] = multiview_attention
+ config['cross_domain_attention'] = cross_domain_attention
+ config["down_block_types"] = [
+ "CrossAttnDownBlockMV2D",
+ "CrossAttnDownBlockMV2D",
+ "CrossAttnDownBlockMV2D",
+ "DownBlock2D"
+ ]
+ config['mid_block_type'] = "UNetMidBlockMV2DCrossAttn"
+ config["up_block_types"] = [
+ "UpBlock2D",
+ "CrossAttnUpBlockMV2D",
+ "CrossAttnUpBlockMV2D",
+ "CrossAttnUpBlockMV2D"
+ ]
+ config['class_embed_type'] = 'projection'
+ if camera_embedding_type == 'e_de_da_sincos':
+ config['projection_class_embeddings_input_dim'] = projection_class_embeddings_input_dim # default 6
+ else:
+ raise NotImplementedError
+
+ # load model
+ model_file = None
+ if from_flax:
+ raise NotImplementedError
+ else:
+ if use_safetensors:
+ try:
+ model_file = _get_model_file(
+ pretrained_model_name_or_path,
+ weights_name=_add_variant(SAFETENSORS_WEIGHTS_NAME, variant),
+ cache_dir=cache_dir,
+ force_download=force_download,
+ resume_download=resume_download,
+ proxies=proxies,
+ local_files_only=local_files_only,
+ use_auth_token=use_auth_token,
+ revision=revision,
+ subfolder=subfolder,
+ user_agent=user_agent,
+ commit_hash=commit_hash,
+ )
+ except IOError as e:
+ if not allow_pickle:
+ raise e
+ pass
+ if model_file is None:
+ model_file = _get_model_file(
+ pretrained_model_name_or_path,
+ weights_name=_add_variant(WEIGHTS_NAME, variant),
+ cache_dir=cache_dir,
+ force_download=force_download,
+ resume_download=resume_download,
+ proxies=proxies,
+ local_files_only=local_files_only,
+ use_auth_token=use_auth_token,
+ revision=revision,
+ subfolder=subfolder,
+ user_agent=user_agent,
+ commit_hash=commit_hash,
+ )
+
+ model = cls.from_config(config, **unused_kwargs)
+ if local_crossattn:
+ unet_lora_attn_procs = dict()
+ for name, _ in model.attn_processors.items():
+ if not name.endswith("attn1.processor"):
+ default_attn_proc = AttnProcessor()
+ elif is_xformers_available():
+ default_attn_proc = XFormersMVAttnProcessor()
+ else:
+ default_attn_proc = MVAttnProcessor()
+ unet_lora_attn_procs[name] = ReferenceOnlyAttnProc(
+ default_attn_proc, enabled=name.endswith("attn1.processor"), name=name
+ )
+ model.set_attn_processor(unet_lora_attn_procs)
+ state_dict = load_state_dict(model_file, variant=variant)
+ model._convert_deprecated_attention_blocks(state_dict)
+
+ conv_in_weight = state_dict['conv_in.weight']
+ conv_out_weight = state_dict['conv_out.weight']
+ model, missing_keys, unexpected_keys, mismatched_keys, error_msgs = cls._load_pretrained_model_2d(
+ model,
+ state_dict,
+ model_file,
+ pretrained_model_name_or_path,
+ ignore_mismatched_sizes=True,
+ )
+ if any([key == 'conv_in.weight' for key, _, _ in mismatched_keys]):
+ # initialize from the original SD structure
+ model.conv_in.weight.data[:,:4] = conv_in_weight
+
+ # whether to place all zero to new layers?
+ if zero_init_conv_in:
+ model.conv_in.weight.data[:,4:] = 0.
+
+ if any([key == 'conv_out.weight' for key, _, _ in mismatched_keys]):
+ # initialize from the original SD structure
+ model.conv_out.weight.data[:,:4] = conv_out_weight
+ if out_channels == 8: # copy for the last 4 channels
+ model.conv_out.weight.data[:, 4:] = conv_out_weight
+
+ if zero_init_camera_projection:
+ for p in model.class_embedding.parameters():
+ torch.nn.init.zeros_(p)
+
+ loading_info = {
+ "missing_keys": missing_keys,
+ "unexpected_keys": unexpected_keys,
+ "mismatched_keys": mismatched_keys,
+ "error_msgs": error_msgs,
+ }
+
+ if torch_dtype is not None and not isinstance(torch_dtype, torch.dtype):
+ raise ValueError(
+ f"{torch_dtype} needs to be of type `torch.dtype`, e.g. `torch.float16`, but is {type(torch_dtype)}."
+ )
+ elif torch_dtype is not None:
+ model = model.to(torch_dtype)
+
+ model.register_to_config(_name_or_path=pretrained_model_name_or_path)
+
+ # Set model in evaluation mode to deactivate DropOut modules by default
+ model.eval()
+ if output_loading_info:
+ return model, loading_info
+
+ return model
+
+ @classmethod
+ def _load_pretrained_model_2d(
+ cls,
+ model,
+ state_dict,
+ resolved_archive_file,
+ pretrained_model_name_or_path,
+ ignore_mismatched_sizes=False,
+ ):
+ # Retrieve missing & unexpected_keys
+ model_state_dict = model.state_dict()
+ loaded_keys = list(state_dict.keys())
+
+ expected_keys = list(model_state_dict.keys())
+
+ original_loaded_keys = loaded_keys
+
+ missing_keys = list(set(expected_keys) - set(loaded_keys))
+ unexpected_keys = list(set(loaded_keys) - set(expected_keys))
+
+ # Make sure we are able to load base models as well as derived models (with heads)
+ model_to_load = model
+
+ def _find_mismatched_keys(
+ state_dict,
+ model_state_dict,
+ loaded_keys,
+ ignore_mismatched_sizes,
+ ):
+ mismatched_keys = []
+ if ignore_mismatched_sizes:
+ for checkpoint_key in loaded_keys:
+ model_key = checkpoint_key
+
+ if (
+ model_key in model_state_dict
+ and state_dict[checkpoint_key].shape != model_state_dict[model_key].shape
+ ):
+ mismatched_keys.append(
+ (checkpoint_key, state_dict[checkpoint_key].shape, model_state_dict[model_key].shape)
+ )
+ del state_dict[checkpoint_key]
+ return mismatched_keys
+
+ if state_dict is not None:
+ # Whole checkpoint
+ mismatched_keys = _find_mismatched_keys(
+ state_dict,
+ model_state_dict,
+ original_loaded_keys,
+ ignore_mismatched_sizes,
+ )
+ error_msgs = _load_state_dict_into_model(model_to_load, state_dict)
+
+ if len(error_msgs) > 0:
+ error_msg = "\n\t".join(error_msgs)
+ if "size mismatch" in error_msg:
+ error_msg += (
+ "\n\tYou may consider adding `ignore_mismatched_sizes=True` in the model `from_pretrained` method."
+ )
+ raise RuntimeError(f"Error(s) in loading state_dict for {model.__class__.__name__}:\n\t{error_msg}")
+
+ if len(unexpected_keys) > 0:
+ logger.warning(
+ f"Some weights of the model checkpoint at {pretrained_model_name_or_path} were not used when"
+ f" initializing {model.__class__.__name__}: {unexpected_keys}\n- This IS expected if you are"
+ f" initializing {model.__class__.__name__} from the checkpoint of a model trained on another task"
+ " or with another architecture (e.g. initializing a BertForSequenceClassification model from a"
+ " BertForPreTraining model).\n- This IS NOT expected if you are initializing"
+ f" {model.__class__.__name__} from the checkpoint of a model that you expect to be exactly"
+ " identical (initializing a BertForSequenceClassification model from a"
+ " BertForSequenceClassification model)."
+ )
+ else:
+ logger.info(f"All model checkpoint weights were used when initializing {model.__class__.__name__}.\n")
+ if len(missing_keys) > 0:
+ logger.warning(
+ f"Some weights of {model.__class__.__name__} were not initialized from the model checkpoint at"
+ f" {pretrained_model_name_or_path} and are newly initialized: {missing_keys}\nYou should probably"
+ " TRAIN this model on a down-stream task to be able to use it for predictions and inference."
+ )
+ elif len(mismatched_keys) == 0:
+ logger.info(
+ f"All the weights of {model.__class__.__name__} were initialized from the model checkpoint at"
+ f" {pretrained_model_name_or_path}.\nIf your task is similar to the task the model of the"
+ f" checkpoint was trained on, you can already use {model.__class__.__name__} for predictions"
+ " without further training."
+ )
+ if len(mismatched_keys) > 0:
+ mismatched_warning = "\n".join(
+ [
+ f"- {key}: found shape {shape1} in the checkpoint and {shape2} in the model instantiated"
+ for key, shape1, shape2 in mismatched_keys
+ ]
+ )
+ logger.warning(
+ f"Some weights of {model.__class__.__name__} were not initialized from the model checkpoint at"
+ f" {pretrained_model_name_or_path} and are newly initialized because the shapes did not"
+ f" match:\n{mismatched_warning}\nYou should probably TRAIN this model on a down-stream task to be"
+ " able to use it for predictions and inference."
+ )
+
+ return model, missing_keys, unexpected_keys, mismatched_keys, error_msgs
+
diff --git a/2D_Stage/tuneavideo/models/unet_mv2d_ref.py b/2D_Stage/tuneavideo/models/unet_mv2d_ref.py
new file mode 100644
index 0000000000000000000000000000000000000000..add370667c096523d47d77c3313e86ab2ab730e7
--- /dev/null
+++ b/2D_Stage/tuneavideo/models/unet_mv2d_ref.py
@@ -0,0 +1,1570 @@
+# Copyright 2023 The HuggingFace Team. All rights reserved.
+#
+# 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 dataclasses import dataclass
+from typing import Any, Dict, List, Optional, Tuple, Union
+import os
+
+import torch
+import torch.nn as nn
+import torch.utils.checkpoint
+from einops import rearrange
+
+
+from diffusers.configuration_utils import ConfigMixin, register_to_config
+from diffusers.loaders import UNet2DConditionLoadersMixin
+from diffusers.utils import BaseOutput, logging
+from diffusers.models.activations import get_activation
+from diffusers.models.attention_processor import AttentionProcessor, AttnProcessor
+from diffusers.models.embeddings import (
+ GaussianFourierProjection,
+ ImageHintTimeEmbedding,
+ ImageProjection,
+ ImageTimeEmbedding,
+ TextImageProjection,
+ TextImageTimeEmbedding,
+ TextTimeEmbedding,
+ TimestepEmbedding,
+ Timesteps,
+)
+from diffusers.models.lora import LoRALinearLayer
+
+from diffusers.models.modeling_utils import ModelMixin, load_state_dict, _load_state_dict_into_model
+from diffusers.models.unet_2d_blocks import (
+ CrossAttnDownBlock2D,
+ CrossAttnUpBlock2D,
+ DownBlock2D,
+ UNetMidBlock2DCrossAttn,
+ UNetMidBlock2DSimpleCrossAttn,
+ UpBlock2D,
+)
+from diffusers.utils import (
+ CONFIG_NAME,
+ DIFFUSERS_CACHE,
+ FLAX_WEIGHTS_NAME,
+ HF_HUB_OFFLINE,
+ SAFETENSORS_WEIGHTS_NAME,
+ WEIGHTS_NAME,
+ _add_variant,
+ _get_model_file,
+ deprecate,
+ is_accelerate_available,
+ is_torch_version,
+ logging,
+)
+from diffusers import __version__
+from tuneavideo.models.unet_mv2d_blocks import (
+ CrossAttnDownBlockMV2D,
+ CrossAttnUpBlockMV2D,
+ UNetMidBlockMV2DCrossAttn,
+ get_down_block,
+ get_up_block,
+)
+from diffusers.models.attention_processor import Attention, AttnProcessor
+from diffusers.utils.import_utils import is_xformers_available
+from tuneavideo.models.transformer_mv2d import XFormersMVAttnProcessor, MVAttnProcessor
+from tuneavideo.models.refunet import ReferenceOnlyAttnProc
+
+logger = logging.get_logger(__name__) # pylint: disable=invalid-name
+
+
+@dataclass
+class UNetMV2DRefOutput(BaseOutput):
+ """
+ The output of [`UNet2DConditionModel`].
+
+ Args:
+ sample (`torch.FloatTensor` of shape `(batch_size, num_channels, height, width)`):
+ The hidden states output conditioned on `encoder_hidden_states` input. Output of last layer of model.
+ """
+
+ sample: torch.FloatTensor = None
+
+class Identity(torch.nn.Module):
+ r"""A placeholder identity operator that is argument-insensitive.
+
+ Args:
+ args: any argument (unused)
+ kwargs: any keyword argument (unused)
+
+ Shape:
+ - Input: :math:`(*)`, where :math:`*` means any number of dimensions.
+ - Output: :math:`(*)`, same shape as the input.
+
+ Examples::
+
+ >>> m = nn.Identity(54, unused_argument1=0.1, unused_argument2=False)
+ >>> input = torch.randn(128, 20)
+ >>> output = m(input)
+ >>> print(output.size())
+ torch.Size([128, 20])
+
+ """
+ def __init__(self, scale=None, *args, **kwargs) -> None:
+ super(Identity, self).__init__()
+
+ def forward(self, input, *args, **kwargs):
+ return input
+
+
+
+class _LoRACompatibleLinear(nn.Module):
+ """
+ A Linear layer that can be used with LoRA.
+ """
+
+ def __init__(self, *args, lora_layer: Optional[LoRALinearLayer] = None, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.lora_layer = lora_layer
+
+ def set_lora_layer(self, lora_layer: Optional[LoRALinearLayer]):
+ self.lora_layer = lora_layer
+
+ def _fuse_lora(self):
+ pass
+
+ def _unfuse_lora(self):
+ pass
+
+ def forward(self, hidden_states, scale=None, lora_scale: int = 1):
+ return hidden_states
+
+class UNetMV2DRefModel(ModelMixin, ConfigMixin, UNet2DConditionLoadersMixin):
+ r"""
+ A conditional 2D UNet model that takes a noisy sample, conditional state, and a timestep and returns a sample
+ shaped output.
+
+ This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented
+ for all models (such as downloading or saving).
+
+ Parameters:
+ sample_size (`int` or `Tuple[int, int]`, *optional*, defaults to `None`):
+ Height and width of input/output sample.
+ in_channels (`int`, *optional*, defaults to 4): Number of channels in the input sample.
+ out_channels (`int`, *optional*, defaults to 4): Number of channels in the output.
+ center_input_sample (`bool`, *optional*, defaults to `False`): Whether to center the input sample.
+ flip_sin_to_cos (`bool`, *optional*, defaults to `False`):
+ Whether to flip the sin to cos in the time embedding.
+ freq_shift (`int`, *optional*, defaults to 0): The frequency shift to apply to the time embedding.
+ down_block_types (`Tuple[str]`, *optional*, defaults to `("CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "DownBlock2D")`):
+ The tuple of downsample blocks to use.
+ mid_block_type (`str`, *optional*, defaults to `"UNetMidBlock2DCrossAttn"`):
+ Block type for middle of UNet, it can be either `UNetMidBlock2DCrossAttn` or
+ `UNetMidBlock2DSimpleCrossAttn`. If `None`, the mid block layer is skipped.
+ up_block_types (`Tuple[str]`, *optional*, defaults to `("UpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D", "CrossAttnUpBlock2D")`):
+ The tuple of upsample blocks to use.
+ only_cross_attention(`bool` or `Tuple[bool]`, *optional*, default to `False`):
+ Whether to include self-attention in the basic transformer blocks, see
+ [`~models.attention.BasicTransformerBlock`].
+ block_out_channels (`Tuple[int]`, *optional*, defaults to `(320, 640, 1280, 1280)`):
+ The tuple of output channels for each block.
+ layers_per_block (`int`, *optional*, defaults to 2): The number of layers per block.
+ downsample_padding (`int`, *optional*, defaults to 1): The padding to use for the downsampling convolution.
+ mid_block_scale_factor (`float`, *optional*, defaults to 1.0): The scale factor to use for the mid block.
+ act_fn (`str`, *optional*, defaults to `"silu"`): The activation function to use.
+ norm_num_groups (`int`, *optional*, defaults to 32): The number of groups to use for the normalization.
+ If `None`, normalization and activation layers is skipped in post-processing.
+ norm_eps (`float`, *optional*, defaults to 1e-5): The epsilon to use for the normalization.
+ cross_attention_dim (`int` or `Tuple[int]`, *optional*, defaults to 1280):
+ The dimension of the cross attention features.
+ transformer_layers_per_block (`int` or `Tuple[int]`, *optional*, defaults to 1):
+ The number of transformer blocks of type [`~models.attention.BasicTransformerBlock`]. Only relevant for
+ [`~models.unet_2d_blocks.CrossAttnDownBlock2D`], [`~models.unet_2d_blocks.CrossAttnUpBlock2D`],
+ [`~models.unet_2d_blocks.UNetMidBlock2DCrossAttn`].
+ encoder_hid_dim (`int`, *optional*, defaults to None):
+ If `encoder_hid_dim_type` is defined, `encoder_hidden_states` will be projected from `encoder_hid_dim`
+ dimension to `cross_attention_dim`.
+ encoder_hid_dim_type (`str`, *optional*, defaults to `None`):
+ If given, the `encoder_hidden_states` and potentially other embeddings are down-projected to text
+ embeddings of dimension `cross_attention` according to `encoder_hid_dim_type`.
+ attention_head_dim (`int`, *optional*, defaults to 8): The dimension of the attention heads.
+ num_attention_heads (`int`, *optional*):
+ The number of attention heads. If not defined, defaults to `attention_head_dim`
+ resnet_time_scale_shift (`str`, *optional*, defaults to `"default"`): Time scale shift config
+ for ResNet blocks (see [`~models.resnet.ResnetBlock2D`]). Choose from `default` or `scale_shift`.
+ class_embed_type (`str`, *optional*, defaults to `None`):
+ The type of class embedding to use which is ultimately summed with the time embeddings. Choose from `None`,
+ `"timestep"`, `"identity"`, `"projection"`, or `"simple_projection"`.
+ addition_embed_type (`str`, *optional*, defaults to `None`):
+ Configures an optional embedding which will be summed with the time embeddings. Choose from `None` or
+ "text". "text" will use the `TextTimeEmbedding` layer.
+ addition_time_embed_dim: (`int`, *optional*, defaults to `None`):
+ Dimension for the timestep embeddings.
+ num_class_embeds (`int`, *optional*, defaults to `None`):
+ Input dimension of the learnable embedding matrix to be projected to `time_embed_dim`, when performing
+ class conditioning with `class_embed_type` equal to `None`.
+ time_embedding_type (`str`, *optional*, defaults to `positional`):
+ The type of position embedding to use for timesteps. Choose from `positional` or `fourier`.
+ time_embedding_dim (`int`, *optional*, defaults to `None`):
+ An optional override for the dimension of the projected time embedding.
+ time_embedding_act_fn (`str`, *optional*, defaults to `None`):
+ Optional activation function to use only once on the time embeddings before they are passed to the rest of
+ the UNet. Choose from `silu`, `mish`, `gelu`, and `swish`.
+ timestep_post_act (`str`, *optional*, defaults to `None`):
+ The second activation function to use in timestep embedding. Choose from `silu`, `mish` and `gelu`.
+ time_cond_proj_dim (`int`, *optional*, defaults to `None`):
+ The dimension of `cond_proj` layer in the timestep embedding.
+ conv_in_kernel (`int`, *optional*, default to `3`): The kernel size of `conv_in` layer.
+ conv_out_kernel (`int`, *optional*, default to `3`): The kernel size of `conv_out` layer.
+ projection_class_embeddings_input_dim (`int`, *optional*): The dimension of the `class_labels` input when
+ `class_embed_type="projection"`. Required when `class_embed_type="projection"`.
+ class_embeddings_concat (`bool`, *optional*, defaults to `False`): Whether to concatenate the time
+ embeddings with the class embeddings.
+ mid_block_only_cross_attention (`bool`, *optional*, defaults to `None`):
+ Whether to use cross attention with the mid block when using the `UNetMidBlock2DSimpleCrossAttn`. If
+ `only_cross_attention` is given as a single boolean and `mid_block_only_cross_attention` is `None`, the
+ `only_cross_attention` value is used as the value for `mid_block_only_cross_attention`. Default to `False`
+ otherwise.
+ """
+
+ _supports_gradient_checkpointing = True
+
+ @register_to_config
+ def __init__(
+ self,
+ sample_size: Optional[int] = None,
+ in_channels: int = 4,
+ out_channels: int = 4,
+ center_input_sample: bool = False,
+ flip_sin_to_cos: bool = True,
+ freq_shift: int = 0,
+ down_block_types: Tuple[str] = (
+ "CrossAttnDownBlockMV2D",
+ "CrossAttnDownBlockMV2D",
+ "CrossAttnDownBlockMV2D",
+ "DownBlock2D",
+ ),
+ mid_block_type: Optional[str] = "UNetMidBlockMV2DCrossAttn",
+ up_block_types: Tuple[str] = ("UpBlock2D", "CrossAttnUpBlockMV2D", "CrossAttnUpBlockMV2D", "CrossAttnUpBlockMV2D"),
+ only_cross_attention: Union[bool, Tuple[bool]] = False,
+ block_out_channels: Tuple[int] = (320, 640, 1280, 1280),
+ layers_per_block: Union[int, Tuple[int]] = 2,
+ downsample_padding: int = 1,
+ mid_block_scale_factor: float = 1,
+ act_fn: str = "silu",
+ norm_num_groups: Optional[int] = 32,
+ norm_eps: float = 1e-5,
+ cross_attention_dim: Union[int, Tuple[int]] = 1280,
+ transformer_layers_per_block: Union[int, Tuple[int]] = 1,
+ encoder_hid_dim: Optional[int] = None,
+ encoder_hid_dim_type: Optional[str] = None,
+ attention_head_dim: Union[int, Tuple[int]] = 8,
+ num_attention_heads: Optional[Union[int, Tuple[int]]] = None,
+ dual_cross_attention: bool = False,
+ use_linear_projection: bool = False,
+ class_embed_type: Optional[str] = None,
+ addition_embed_type: Optional[str] = None,
+ addition_time_embed_dim: Optional[int] = None,
+ num_class_embeds: Optional[int] = None,
+ upcast_attention: bool = False,
+ resnet_time_scale_shift: str = "default",
+ resnet_skip_time_act: bool = False,
+ resnet_out_scale_factor: int = 1.0,
+ time_embedding_type: str = "positional",
+ time_embedding_dim: Optional[int] = None,
+ time_embedding_act_fn: Optional[str] = None,
+ timestep_post_act: Optional[str] = None,
+ time_cond_proj_dim: Optional[int] = None,
+ conv_in_kernel: int = 3,
+ conv_out_kernel: int = 3,
+ projection_class_embeddings_input_dim: Optional[int] = None,
+ class_embeddings_concat: bool = False,
+ mid_block_only_cross_attention: Optional[bool] = None,
+ cross_attention_norm: Optional[str] = None,
+ addition_embed_type_num_heads=64,
+ num_views: int = 1,
+ joint_attention: bool = False,
+ joint_attention_twice: bool = False,
+ multiview_attention: bool = True,
+ cross_domain_attention: bool = False,
+ camera_input_dim: int = 12,
+ camera_hidden_dim: int = 320,
+ camera_output_dim: int = 1280,
+
+ ):
+ super().__init__()
+
+ self.sample_size = sample_size
+
+ if num_attention_heads is not None:
+ raise ValueError(
+ "At the moment it is not possible to define the number of attention heads via `num_attention_heads` because of a naming issue as described in https://github.com/huggingface/diffusers/issues/2011#issuecomment-1547958131. Passing `num_attention_heads` will only be supported in diffusers v0.19."
+ )
+
+ # If `num_attention_heads` is not defined (which is the case for most models)
+ # it will default to `attention_head_dim`. This looks weird upon first reading it and it is.
+ # The reason for this behavior is to correct for incorrectly named variables that were introduced
+ # when this library was created. The incorrect naming was only discovered much later in https://github.com/huggingface/diffusers/issues/2011#issuecomment-1547958131
+ # Changing `attention_head_dim` to `num_attention_heads` for 40,000+ configurations is too backwards breaking
+ # which is why we correct for the naming here.
+ num_attention_heads = num_attention_heads or attention_head_dim
+
+ # Check inputs
+ if len(down_block_types) != len(up_block_types):
+ raise ValueError(
+ f"Must provide the same number of `down_block_types` as `up_block_types`. `down_block_types`: {down_block_types}. `up_block_types`: {up_block_types}."
+ )
+
+ if len(block_out_channels) != len(down_block_types):
+ raise ValueError(
+ f"Must provide the same number of `block_out_channels` as `down_block_types`. `block_out_channels`: {block_out_channels}. `down_block_types`: {down_block_types}."
+ )
+
+ if not isinstance(only_cross_attention, bool) and len(only_cross_attention) != len(down_block_types):
+ raise ValueError(
+ f"Must provide the same number of `only_cross_attention` as `down_block_types`. `only_cross_attention`: {only_cross_attention}. `down_block_types`: {down_block_types}."
+ )
+
+ if not isinstance(num_attention_heads, int) and len(num_attention_heads) != len(down_block_types):
+ raise ValueError(
+ f"Must provide the same number of `num_attention_heads` as `down_block_types`. `num_attention_heads`: {num_attention_heads}. `down_block_types`: {down_block_types}."
+ )
+
+ if not isinstance(attention_head_dim, int) and len(attention_head_dim) != len(down_block_types):
+ raise ValueError(
+ f"Must provide the same number of `attention_head_dim` as `down_block_types`. `attention_head_dim`: {attention_head_dim}. `down_block_types`: {down_block_types}."
+ )
+
+ if isinstance(cross_attention_dim, list) and len(cross_attention_dim) != len(down_block_types):
+ raise ValueError(
+ f"Must provide the same number of `cross_attention_dim` as `down_block_types`. `cross_attention_dim`: {cross_attention_dim}. `down_block_types`: {down_block_types}."
+ )
+
+ if not isinstance(layers_per_block, int) and len(layers_per_block) != len(down_block_types):
+ raise ValueError(
+ f"Must provide the same number of `layers_per_block` as `down_block_types`. `layers_per_block`: {layers_per_block}. `down_block_types`: {down_block_types}."
+ )
+
+ # input
+ conv_in_padding = (conv_in_kernel - 1) // 2
+ self.conv_in = nn.Conv2d(
+ in_channels, block_out_channels[0], kernel_size=conv_in_kernel, padding=conv_in_padding
+ )
+
+ # time
+ if time_embedding_type == "fourier":
+ time_embed_dim = time_embedding_dim or block_out_channels[0] * 2
+ if time_embed_dim % 2 != 0:
+ raise ValueError(f"`time_embed_dim` should be divisible by 2, but is {time_embed_dim}.")
+ self.time_proj = GaussianFourierProjection(
+ time_embed_dim // 2, set_W_to_weight=False, log=False, flip_sin_to_cos=flip_sin_to_cos
+ )
+ timestep_input_dim = time_embed_dim
+ elif time_embedding_type == "positional":
+ time_embed_dim = time_embedding_dim or block_out_channels[0] * 4
+
+ self.time_proj = Timesteps(block_out_channels[0], flip_sin_to_cos, freq_shift)
+ timestep_input_dim = block_out_channels[0]
+ else:
+ raise ValueError(
+ f"{time_embedding_type} does not exist. Please make sure to use one of `fourier` or `positional`."
+ )
+
+ self.time_embedding = TimestepEmbedding(
+ timestep_input_dim,
+ time_embed_dim,
+ act_fn=act_fn,
+ post_act_fn=timestep_post_act,
+ cond_proj_dim=time_cond_proj_dim,
+ )
+
+ if encoder_hid_dim_type is None and encoder_hid_dim is not None:
+ encoder_hid_dim_type = "text_proj"
+ self.register_to_config(encoder_hid_dim_type=encoder_hid_dim_type)
+ logger.info("encoder_hid_dim_type defaults to 'text_proj' as `encoder_hid_dim` is defined.")
+
+ if encoder_hid_dim is None and encoder_hid_dim_type is not None:
+ raise ValueError(
+ f"`encoder_hid_dim` has to be defined when `encoder_hid_dim_type` is set to {encoder_hid_dim_type}."
+ )
+
+ if encoder_hid_dim_type == "text_proj":
+ self.encoder_hid_proj = nn.Linear(encoder_hid_dim, cross_attention_dim)
+ elif encoder_hid_dim_type == "text_image_proj":
+ # image_embed_dim DOESN'T have to be `cross_attention_dim`. To not clutter the __init__ too much
+ # they are set to `cross_attention_dim` here as this is exactly the required dimension for the currently only use
+ # case when `addition_embed_type == "text_image_proj"` (Kadinsky 2.1)`
+ self.encoder_hid_proj = TextImageProjection(
+ text_embed_dim=encoder_hid_dim,
+ image_embed_dim=cross_attention_dim,
+ cross_attention_dim=cross_attention_dim,
+ )
+ elif encoder_hid_dim_type == "image_proj":
+ # Kandinsky 2.2
+ self.encoder_hid_proj = ImageProjection(
+ image_embed_dim=encoder_hid_dim,
+ cross_attention_dim=cross_attention_dim,
+ )
+ elif encoder_hid_dim_type is not None:
+ raise ValueError(
+ f"encoder_hid_dim_type: {encoder_hid_dim_type} must be None, 'text_proj' or 'text_image_proj'."
+ )
+ else:
+ self.encoder_hid_proj = None
+
+ # class embedding
+ if class_embed_type is None and num_class_embeds is not None:
+ self.class_embedding = nn.Embedding(num_class_embeds, time_embed_dim)
+ elif class_embed_type == "timestep":
+ self.class_embedding = TimestepEmbedding(timestep_input_dim, time_embed_dim, act_fn=act_fn)
+ elif class_embed_type == "identity":
+ self.class_embedding = nn.Identity(time_embed_dim, time_embed_dim)
+ elif class_embed_type == "projection":
+ if projection_class_embeddings_input_dim is None:
+ raise ValueError(
+ "`class_embed_type`: 'projection' requires `projection_class_embeddings_input_dim` be set"
+ )
+ # The projection `class_embed_type` is the same as the timestep `class_embed_type` except
+ # 1. the `class_labels` inputs are not first converted to sinusoidal embeddings
+ # 2. it projects from an arbitrary input dimension.
+ #
+ # Note that `TimestepEmbedding` is quite general, being mainly linear layers and activations.
+ # When used for embedding actual timesteps, the timesteps are first converted to sinusoidal embeddings.
+ # As a result, `TimestepEmbedding` can be passed arbitrary vectors.
+ self.class_embedding = TimestepEmbedding(projection_class_embeddings_input_dim, time_embed_dim)
+ elif class_embed_type == "simple_projection":
+ if projection_class_embeddings_input_dim is None:
+ raise ValueError(
+ "`class_embed_type`: 'simple_projection' requires `projection_class_embeddings_input_dim` be set"
+ )
+ self.class_embedding = nn.Linear(projection_class_embeddings_input_dim, time_embed_dim)
+ else:
+ self.class_embedding = None
+
+ if addition_embed_type == "text":
+ if encoder_hid_dim is not None:
+ text_time_embedding_from_dim = encoder_hid_dim
+ else:
+ text_time_embedding_from_dim = cross_attention_dim
+
+ self.add_embedding = TextTimeEmbedding(
+ text_time_embedding_from_dim, time_embed_dim, num_heads=addition_embed_type_num_heads
+ )
+ elif addition_embed_type == "text_image":
+ # text_embed_dim and image_embed_dim DON'T have to be `cross_attention_dim`. To not clutter the __init__ too much
+ # they are set to `cross_attention_dim` here as this is exactly the required dimension for the currently only use
+ # case when `addition_embed_type == "text_image"` (Kadinsky 2.1)`
+ self.add_embedding = TextImageTimeEmbedding(
+ text_embed_dim=cross_attention_dim, image_embed_dim=cross_attention_dim, time_embed_dim=time_embed_dim
+ )
+ elif addition_embed_type == "text_time":
+ self.add_time_proj = Timesteps(addition_time_embed_dim, flip_sin_to_cos, freq_shift)
+ self.add_embedding = TimestepEmbedding(projection_class_embeddings_input_dim, time_embed_dim)
+ elif addition_embed_type == "image":
+ # Kandinsky 2.2
+ self.add_embedding = ImageTimeEmbedding(image_embed_dim=encoder_hid_dim, time_embed_dim=time_embed_dim)
+ elif addition_embed_type == "image_hint":
+ # Kandinsky 2.2 ControlNet
+ self.add_embedding = ImageHintTimeEmbedding(image_embed_dim=encoder_hid_dim, time_embed_dim=time_embed_dim)
+ elif addition_embed_type is not None:
+ raise ValueError(f"addition_embed_type: {addition_embed_type} must be None, 'text' or 'text_image'.")
+
+ if time_embedding_act_fn is None:
+ self.time_embed_act = None
+ else:
+ self.time_embed_act = get_activation(time_embedding_act_fn)
+
+ self.camera_embedding = nn.Sequential(
+ nn.Linear(camera_input_dim, time_embed_dim),
+ nn.SiLU(),
+ nn.Linear(time_embed_dim, time_embed_dim),
+ )
+
+ self.down_blocks = nn.ModuleList([])
+ self.up_blocks = nn.ModuleList([])
+
+ if isinstance(only_cross_attention, bool):
+ if mid_block_only_cross_attention is None:
+ mid_block_only_cross_attention = only_cross_attention
+
+ only_cross_attention = [only_cross_attention] * len(down_block_types)
+
+ if mid_block_only_cross_attention is None:
+ mid_block_only_cross_attention = False
+
+ if isinstance(num_attention_heads, int):
+ num_attention_heads = (num_attention_heads,) * len(down_block_types)
+
+ if isinstance(attention_head_dim, int):
+ attention_head_dim = (attention_head_dim,) * len(down_block_types)
+
+ if isinstance(cross_attention_dim, int):
+ cross_attention_dim = (cross_attention_dim,) * len(down_block_types)
+
+ if isinstance(layers_per_block, int):
+ layers_per_block = [layers_per_block] * len(down_block_types)
+
+ if isinstance(transformer_layers_per_block, int):
+ transformer_layers_per_block = [transformer_layers_per_block] * len(down_block_types)
+
+ if class_embeddings_concat:
+ # The time embeddings are concatenated with the class embeddings. The dimension of the
+ # time embeddings passed to the down, middle, and up blocks is twice the dimension of the
+ # regular time embeddings
+ blocks_time_embed_dim = time_embed_dim * 2
+ else:
+ blocks_time_embed_dim = time_embed_dim
+
+ # down
+ output_channel = block_out_channels[0]
+ for i, down_block_type in enumerate(down_block_types):
+ input_channel = output_channel
+ output_channel = block_out_channels[i]
+ is_final_block = i == len(block_out_channels) - 1
+
+ down_block = get_down_block(
+ down_block_type,
+ num_layers=layers_per_block[i],
+ transformer_layers_per_block=transformer_layers_per_block[i],
+ in_channels=input_channel,
+ out_channels=output_channel,
+ temb_channels=blocks_time_embed_dim,
+ add_downsample=not is_final_block,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ resnet_groups=norm_num_groups,
+ cross_attention_dim=cross_attention_dim[i],
+ num_attention_heads=num_attention_heads[i],
+ downsample_padding=downsample_padding,
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention[i],
+ upcast_attention=upcast_attention,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ resnet_skip_time_act=resnet_skip_time_act,
+ resnet_out_scale_factor=resnet_out_scale_factor,
+ cross_attention_norm=cross_attention_norm,
+ attention_head_dim=attention_head_dim[i] if attention_head_dim[i] is not None else output_channel,
+ num_views=num_views,
+ joint_attention=joint_attention,
+ joint_attention_twice=joint_attention_twice,
+ multiview_attention=multiview_attention,
+ cross_domain_attention=cross_domain_attention
+ )
+ self.down_blocks.append(down_block)
+
+ # mid
+ if mid_block_type == "UNetMidBlock2DCrossAttn":
+ self.mid_block = UNetMidBlock2DCrossAttn(
+ transformer_layers_per_block=transformer_layers_per_block[-1],
+ in_channels=block_out_channels[-1],
+ temb_channels=blocks_time_embed_dim,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ output_scale_factor=mid_block_scale_factor,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ cross_attention_dim=cross_attention_dim[-1],
+ num_attention_heads=num_attention_heads[-1],
+ resnet_groups=norm_num_groups,
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ upcast_attention=upcast_attention,
+ )
+ # custom MV2D attention block
+ elif mid_block_type == "UNetMidBlockMV2DCrossAttn":
+ self.mid_block = UNetMidBlockMV2DCrossAttn(
+ transformer_layers_per_block=transformer_layers_per_block[-1],
+ in_channels=block_out_channels[-1],
+ temb_channels=blocks_time_embed_dim,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ output_scale_factor=mid_block_scale_factor,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ cross_attention_dim=cross_attention_dim[-1],
+ num_attention_heads=num_attention_heads[-1],
+ resnet_groups=norm_num_groups,
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ upcast_attention=upcast_attention,
+ num_views=num_views,
+ joint_attention=joint_attention,
+ joint_attention_twice=joint_attention_twice,
+ multiview_attention=multiview_attention,
+ cross_domain_attention=cross_domain_attention
+ )
+ elif mid_block_type == "UNetMidBlock2DSimpleCrossAttn":
+ self.mid_block = UNetMidBlock2DSimpleCrossAttn(
+ in_channels=block_out_channels[-1],
+ temb_channels=blocks_time_embed_dim,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ output_scale_factor=mid_block_scale_factor,
+ cross_attention_dim=cross_attention_dim[-1],
+ attention_head_dim=attention_head_dim[-1],
+ resnet_groups=norm_num_groups,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ skip_time_act=resnet_skip_time_act,
+ only_cross_attention=mid_block_only_cross_attention,
+ cross_attention_norm=cross_attention_norm,
+ )
+ elif mid_block_type is None:
+ self.mid_block = None
+ else:
+ raise ValueError(f"unknown mid_block_type : {mid_block_type}")
+
+ # count how many layers upsample the images
+ self.num_upsamplers = 0
+
+ # up
+ reversed_block_out_channels = list(reversed(block_out_channels))
+ reversed_num_attention_heads = list(reversed(num_attention_heads))
+ reversed_layers_per_block = list(reversed(layers_per_block))
+ reversed_cross_attention_dim = list(reversed(cross_attention_dim))
+ reversed_transformer_layers_per_block = list(reversed(transformer_layers_per_block))
+ only_cross_attention = list(reversed(only_cross_attention))
+
+ output_channel = reversed_block_out_channels[0]
+ for i, up_block_type in enumerate(up_block_types):
+ is_final_block = i == len(block_out_channels) - 1
+
+ prev_output_channel = output_channel
+ output_channel = reversed_block_out_channels[i]
+ input_channel = reversed_block_out_channels[min(i + 1, len(block_out_channels) - 1)]
+
+ # add upsample block for all BUT final layer
+ if not is_final_block:
+ add_upsample = True
+ self.num_upsamplers += 1
+ else:
+ add_upsample = False
+
+ up_block = get_up_block(
+ up_block_type,
+ num_layers=reversed_layers_per_block[i] + 1,
+ transformer_layers_per_block=reversed_transformer_layers_per_block[i],
+ in_channels=input_channel,
+ out_channels=output_channel,
+ prev_output_channel=prev_output_channel,
+ temb_channels=blocks_time_embed_dim,
+ add_upsample=add_upsample,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ resnet_groups=norm_num_groups,
+ cross_attention_dim=reversed_cross_attention_dim[i],
+ num_attention_heads=reversed_num_attention_heads[i],
+ dual_cross_attention=dual_cross_attention,
+ use_linear_projection=use_linear_projection,
+ only_cross_attention=only_cross_attention[i],
+ upcast_attention=upcast_attention,
+ resnet_time_scale_shift=resnet_time_scale_shift,
+ resnet_skip_time_act=resnet_skip_time_act,
+ resnet_out_scale_factor=resnet_out_scale_factor,
+ cross_attention_norm=cross_attention_norm,
+ attention_head_dim=attention_head_dim[i] if attention_head_dim[i] is not None else output_channel,
+ num_views=num_views,
+ joint_attention=joint_attention,
+ joint_attention_twice=joint_attention_twice,
+ multiview_attention=multiview_attention,
+ cross_domain_attention=cross_domain_attention
+ )
+ self.up_blocks.append(up_block)
+ prev_output_channel = output_channel
+
+ # out
+ # if norm_num_groups is not None:
+ # self.conv_norm_out = nn.GroupNorm(
+ # num_channels=block_out_channels[0], num_groups=norm_num_groups, eps=norm_eps
+ # )
+
+ # self.conv_act = get_activation(act_fn)
+
+ # else:
+ # self.conv_norm_out = None
+ # self.conv_act = None
+
+ # conv_out_padding = (conv_out_kernel - 1) // 2
+ # self.conv_out = nn.Conv2d(
+ # block_out_channels[0], out_channels, kernel_size=conv_out_kernel, padding=conv_out_padding
+ # )
+
+ self.up_blocks[3].attentions[2].transformer_blocks[0].attn1.to_q = _LoRACompatibleLinear()
+ self.up_blocks[3].attentions[2].transformer_blocks[0].attn1.to_k = _LoRACompatibleLinear()
+ self.up_blocks[3].attentions[2].transformer_blocks[0].attn1.to_v = _LoRACompatibleLinear()
+ self.up_blocks[3].attentions[2].transformer_blocks[0].attn1.to_out = nn.ModuleList([Identity(), Identity()])
+ self.up_blocks[3].attentions[2].transformer_blocks[0].norm2 = Identity()
+ self.up_blocks[3].attentions[2].transformer_blocks[0].attn2 = None
+ self.up_blocks[3].attentions[2].transformer_blocks[0].norm3 = Identity()
+ self.up_blocks[3].attentions[2].transformer_blocks[0].ff = Identity()
+ self.up_blocks[3].attentions[2].proj_out = Identity()
+
+ @property
+ def attn_processors(self) -> Dict[str, AttentionProcessor]:
+ r"""
+ Returns:
+ `dict` of attention processors: A dictionary containing all attention processors used in the model with
+ indexed by its weight name.
+ """
+ # set recursively
+ processors = {}
+
+ def fn_recursive_add_processors(name: str, module: torch.nn.Module, processors: Dict[str, AttentionProcessor]):
+ if hasattr(module, "set_processor"):
+ processors[f"{name}.processor"] = module.processor
+
+ for sub_name, child in module.named_children():
+ fn_recursive_add_processors(f"{name}.{sub_name}", child, processors)
+
+ return processors
+
+ for name, module in self.named_children():
+ fn_recursive_add_processors(name, module, processors)
+
+ return processors
+
+ def set_attn_processor(self, processor: Union[AttentionProcessor, Dict[str, AttentionProcessor]]):
+ r"""
+ Sets the attention processor to use to compute attention.
+
+ Parameters:
+ processor (`dict` of `AttentionProcessor` or only `AttentionProcessor`):
+ The instantiated processor class or a dictionary of processor classes that will be set as the processor
+ for **all** `Attention` layers.
+
+ If `processor` is a dict, the key needs to define the path to the corresponding cross attention
+ processor. This is strongly recommended when setting trainable attention processors.
+
+ """
+ count = len(self.attn_processors.keys())
+
+ if isinstance(processor, dict) and len(processor) != count:
+ raise ValueError(
+ f"A dict of processors was passed, but the number of processors {len(processor)} does not match the"
+ f" number of attention layers: {count}. Please make sure to pass {count} processor classes."
+ )
+
+ def fn_recursive_attn_processor(name: str, module: torch.nn.Module, processor):
+ if hasattr(module, "set_processor"):
+ if not isinstance(processor, dict):
+ module.set_processor(processor)
+ else:
+ module.set_processor(processor.pop(f"{name}.processor"))
+
+ for sub_name, child in module.named_children():
+ fn_recursive_attn_processor(f"{name}.{sub_name}", child, processor)
+
+ for name, module in self.named_children():
+ fn_recursive_attn_processor(name, module, processor)
+
+ def set_default_attn_processor(self):
+ """
+ Disables custom attention processors and sets the default attention implementation.
+ """
+ self.set_attn_processor(AttnProcessor())
+
+ def set_attention_slice(self, slice_size):
+ r"""
+ Enable sliced attention computation.
+
+ When this option is enabled, the attention module splits the input tensor in slices to compute attention in
+ several steps. This is useful for saving some memory in exchange for a small decrease in speed.
+
+ Args:
+ slice_size (`str` or `int` or `list(int)`, *optional*, defaults to `"auto"`):
+ When `"auto"`, input to the attention heads is halved, so attention is computed in two steps. If
+ `"max"`, maximum amount of memory is saved by running only one slice at a time. If a number is
+ provided, uses as many slices as `attention_head_dim // slice_size`. In this case, `attention_head_dim`
+ must be a multiple of `slice_size`.
+ """
+ sliceable_head_dims = []
+
+ def fn_recursive_retrieve_sliceable_dims(module: torch.nn.Module):
+ if hasattr(module, "set_attention_slice"):
+ sliceable_head_dims.append(module.sliceable_head_dim)
+
+ for child in module.children():
+ fn_recursive_retrieve_sliceable_dims(child)
+
+ # retrieve number of attention layers
+ for module in self.children():
+ fn_recursive_retrieve_sliceable_dims(module)
+
+ num_sliceable_layers = len(sliceable_head_dims)
+
+ if slice_size == "auto":
+ # half the attention head size is usually a good trade-off between
+ # speed and memory
+ slice_size = [dim // 2 for dim in sliceable_head_dims]
+ elif slice_size == "max":
+ # make smallest slice possible
+ slice_size = num_sliceable_layers * [1]
+
+ slice_size = num_sliceable_layers * [slice_size] if not isinstance(slice_size, list) else slice_size
+
+ if len(slice_size) != len(sliceable_head_dims):
+ raise ValueError(
+ f"You have provided {len(slice_size)}, but {self.config} has {len(sliceable_head_dims)} different"
+ f" attention layers. Make sure to match `len(slice_size)` to be {len(sliceable_head_dims)}."
+ )
+
+ for i in range(len(slice_size)):
+ size = slice_size[i]
+ dim = sliceable_head_dims[i]
+ if size is not None and size > dim:
+ raise ValueError(f"size {size} has to be smaller or equal to {dim}.")
+
+ # Recursively walk through all the children.
+ # Any children which exposes the set_attention_slice method
+ # gets the message
+ def fn_recursive_set_attention_slice(module: torch.nn.Module, slice_size: List[int]):
+ if hasattr(module, "set_attention_slice"):
+ module.set_attention_slice(slice_size.pop())
+
+ for child in module.children():
+ fn_recursive_set_attention_slice(child, slice_size)
+
+ reversed_slice_size = list(reversed(slice_size))
+ for module in self.children():
+ fn_recursive_set_attention_slice(module, reversed_slice_size)
+
+ def _set_gradient_checkpointing(self, module, value=False):
+ if isinstance(module, (CrossAttnDownBlock2D, CrossAttnDownBlockMV2D, DownBlock2D, CrossAttnUpBlock2D, CrossAttnUpBlockMV2D, UpBlock2D)):
+ module.gradient_checkpointing = value
+
+ def forward(
+ self,
+ sample: torch.FloatTensor,
+ timestep: Union[torch.Tensor, float, int],
+ encoder_hidden_states: torch.Tensor,
+ camera_matrixs: Optional[torch.Tensor] = None,
+ class_labels: Optional[torch.Tensor] = None,
+ timestep_cond: Optional[torch.Tensor] = None,
+ attention_mask: Optional[torch.Tensor] = None,
+ cross_attention_kwargs: Optional[Dict[str, Any]] = None,
+ added_cond_kwargs: Optional[Dict[str, torch.Tensor]] = None,
+ down_block_additional_residuals: Optional[Tuple[torch.Tensor]] = None,
+ mid_block_additional_residual: Optional[torch.Tensor] = None,
+ encoder_attention_mask: Optional[torch.Tensor] = None,
+ return_dict: bool = True,
+ ) -> Union[UNetMV2DRefOutput, Tuple]:
+ r"""
+ The [`UNet2DConditionModel`] forward method.
+
+ Args:
+ sample (`torch.FloatTensor`):
+ The noisy input tensor with the following shape `(batch, channel, height, width)`.
+ timestep (`torch.FloatTensor` or `float` or `int`): The number of timesteps to denoise an input.
+ encoder_hidden_states (`torch.FloatTensor`):
+ The encoder hidden states with shape `(batch, sequence_length, feature_dim)`.
+ encoder_attention_mask (`torch.Tensor`):
+ A cross-attention mask of shape `(batch, sequence_length)` is applied to `encoder_hidden_states`. If
+ `True` the mask is kept, otherwise if `False` it is discarded. Mask will be converted into a bias,
+ which adds large negative values to the attention scores corresponding to "discard" tokens.
+ return_dict (`bool`, *optional*, defaults to `True`):
+ Whether or not to return a [`~models.unet_2d_condition.UNet2DConditionOutput`] instead of a plain
+ tuple.
+ cross_attention_kwargs (`dict`, *optional*):
+ A kwargs dictionary that if specified is passed along to the [`AttnProcessor`].
+ added_cond_kwargs: (`dict`, *optional*):
+ A kwargs dictionary containin additional embeddings that if specified are added to the embeddings that
+ are passed along to the UNet blocks.
+
+ Returns:
+ [`~models.unet_2d_condition.UNet2DConditionOutput`] or `tuple`:
+ If `return_dict` is True, an [`~models.unet_2d_condition.UNet2DConditionOutput`] is returned, otherwise
+ a `tuple` is returned where the first element is the sample tensor.
+ """
+ # By default samples have to be AT least a multiple of the overall upsampling factor.
+ # The overall upsampling factor is equal to 2 ** (# num of upsampling layers).
+ # However, the upsampling interpolation output size can be forced to fit any upsampling size
+ # on the fly if necessary.
+ default_overall_up_factor = 2**self.num_upsamplers
+
+ # upsample size should be forwarded when sample is not a multiple of `default_overall_up_factor`
+ forward_upsample_size = False
+ upsample_size = None
+
+ if any(s % default_overall_up_factor != 0 for s in sample.shape[-2:]):
+ logger.info("Forward upsample size to force interpolation output size.")
+ forward_upsample_size = True
+
+ # ensure attention_mask is a bias, and give it a singleton query_tokens dimension
+ # expects mask of shape:
+ # [batch, key_tokens]
+ # adds singleton query_tokens dimension:
+ # [batch, 1, key_tokens]
+ # this helps to broadcast it as a bias over attention scores, which will be in one of the following shapes:
+ # [batch, heads, query_tokens, key_tokens] (e.g. torch sdp attn)
+ # [batch * heads, query_tokens, key_tokens] (e.g. xformers or classic attn)
+ if attention_mask is not None:
+ # assume that mask is expressed as:
+ # (1 = keep, 0 = discard)
+ # convert mask into a bias that can be added to attention scores:
+ # (keep = +0, discard = -10000.0)
+ attention_mask = (1 - attention_mask.to(sample.dtype)) * -10000.0
+ attention_mask = attention_mask.unsqueeze(1)
+
+ # convert encoder_attention_mask to a bias the same way we do for attention_mask
+ if encoder_attention_mask is not None:
+ encoder_attention_mask = (1 - encoder_attention_mask.to(sample.dtype)) * -10000.0
+ encoder_attention_mask = encoder_attention_mask.unsqueeze(1)
+
+ # 0. center input if necessary
+ if self.config.center_input_sample:
+ sample = 2 * sample - 1.0
+
+ # 1. time
+ timesteps = timestep
+ if not torch.is_tensor(timesteps):
+ # TODO: this requires sync between CPU and GPU. So try to pass timesteps as tensors if you can
+ # This would be a good case for the `match` statement (Python 3.10+)
+ is_mps = sample.device.type == "mps"
+ if isinstance(timestep, float):
+ dtype = torch.float32 if is_mps else torch.float64
+ else:
+ dtype = torch.int32 if is_mps else torch.int64
+ timesteps = torch.tensor([timesteps], dtype=dtype, device=sample.device)
+ elif len(timesteps.shape) == 0:
+ timesteps = timesteps[None].to(sample.device)
+
+ # broadcast to batch dimension in a way that's compatible with ONNX/Core ML
+ timesteps = timesteps.expand(sample.shape[0])
+
+ t_emb = self.time_proj(timesteps)
+
+ # `Timesteps` does not contain any weights and will always return f32 tensors
+ # but time_embedding might actually be running in fp16. so we need to cast here.
+ # there might be better ways to encapsulate this.
+ t_emb = t_emb.to(dtype=sample.dtype)
+ emb = self.time_embedding(t_emb, timestep_cond)
+
+ # import pdb; pdb.set_trace()
+ if camera_matrixs is not None:
+ emb = torch.unsqueeze(emb, 1)
+ # came emb
+ cam_emb = self.camera_embedding(camera_matrixs)
+ # cam_emb = self.camera_embedding_2(cam_emb)
+ emb = emb.repeat(1,cam_emb.shape[1],1) #torch.Size([32, 4, 1280])
+ emb = emb + cam_emb
+ emb = rearrange(emb, "b f c -> (b f) c", f=emb.shape[1])
+
+ aug_emb = None
+
+ if self.class_embedding is not None and class_labels is not None:
+ if class_labels is None:
+ raise ValueError("class_labels should be provided when num_class_embeds > 0")
+
+ if self.config.class_embed_type == "timestep":
+ class_labels = self.time_proj(class_labels)
+
+ # `Timesteps` does not contain any weights and will always return f32 tensors
+ # there might be better ways to encapsulate this.
+ class_labels = class_labels.to(dtype=sample.dtype)
+
+ class_emb = self.class_embedding(class_labels).to(dtype=sample.dtype)
+
+ if self.config.class_embeddings_concat:
+ emb = torch.cat([emb, class_emb], dim=-1)
+ else:
+ emb = emb + class_emb
+
+ if self.config.addition_embed_type == "text":
+ aug_emb = self.add_embedding(encoder_hidden_states)
+ elif self.config.addition_embed_type == "text_image":
+ # Kandinsky 2.1 - style
+ if "image_embeds" not in added_cond_kwargs:
+ raise ValueError(
+ f"{self.__class__} has the config param `addition_embed_type` set to 'text_image' which requires the keyword argument `image_embeds` to be passed in `added_cond_kwargs`"
+ )
+
+ image_embs = added_cond_kwargs.get("image_embeds")
+ text_embs = added_cond_kwargs.get("text_embeds", encoder_hidden_states)
+ aug_emb = self.add_embedding(text_embs, image_embs)
+ elif self.config.addition_embed_type == "text_time":
+ # SDXL - style
+ if "text_embeds" not in added_cond_kwargs:
+ raise ValueError(
+ f"{self.__class__} has the config param `addition_embed_type` set to 'text_time' which requires the keyword argument `text_embeds` to be passed in `added_cond_kwargs`"
+ )
+ text_embeds = added_cond_kwargs.get("text_embeds")
+ if "time_ids" not in added_cond_kwargs:
+ raise ValueError(
+ f"{self.__class__} has the config param `addition_embed_type` set to 'text_time' which requires the keyword argument `time_ids` to be passed in `added_cond_kwargs`"
+ )
+ time_ids = added_cond_kwargs.get("time_ids")
+ time_embeds = self.add_time_proj(time_ids.flatten())
+ time_embeds = time_embeds.reshape((text_embeds.shape[0], -1))
+
+ add_embeds = torch.concat([text_embeds, time_embeds], dim=-1)
+ add_embeds = add_embeds.to(emb.dtype)
+ aug_emb = self.add_embedding(add_embeds)
+ elif self.config.addition_embed_type == "image":
+ # Kandinsky 2.2 - style
+ if "image_embeds" not in added_cond_kwargs:
+ raise ValueError(
+ f"{self.__class__} has the config param `addition_embed_type` set to 'image' which requires the keyword argument `image_embeds` to be passed in `added_cond_kwargs`"
+ )
+ image_embs = added_cond_kwargs.get("image_embeds")
+ aug_emb = self.add_embedding(image_embs)
+ elif self.config.addition_embed_type == "image_hint":
+ # Kandinsky 2.2 - style
+ if "image_embeds" not in added_cond_kwargs or "hint" not in added_cond_kwargs:
+ raise ValueError(
+ f"{self.__class__} has the config param `addition_embed_type` set to 'image_hint' which requires the keyword arguments `image_embeds` and `hint` to be passed in `added_cond_kwargs`"
+ )
+ image_embs = added_cond_kwargs.get("image_embeds")
+ hint = added_cond_kwargs.get("hint")
+ aug_emb, hint = self.add_embedding(image_embs, hint)
+ sample = torch.cat([sample, hint], dim=1)
+
+ emb = emb + aug_emb if aug_emb is not None else emb
+
+ if self.time_embed_act is not None:
+ emb = self.time_embed_act(emb)
+
+ if self.encoder_hid_proj is not None and self.config.encoder_hid_dim_type == "text_proj":
+ encoder_hidden_states = self.encoder_hid_proj(encoder_hidden_states)
+ elif self.encoder_hid_proj is not None and self.config.encoder_hid_dim_type == "text_image_proj":
+ # Kadinsky 2.1 - style
+ if "image_embeds" not in added_cond_kwargs:
+ raise ValueError(
+ f"{self.__class__} has the config param `encoder_hid_dim_type` set to 'text_image_proj' which requires the keyword argument `image_embeds` to be passed in `added_conditions`"
+ )
+
+ image_embeds = added_cond_kwargs.get("image_embeds")
+ encoder_hidden_states = self.encoder_hid_proj(encoder_hidden_states, image_embeds)
+ elif self.encoder_hid_proj is not None and self.config.encoder_hid_dim_type == "image_proj":
+ # Kandinsky 2.2 - style
+ if "image_embeds" not in added_cond_kwargs:
+ raise ValueError(
+ f"{self.__class__} has the config param `encoder_hid_dim_type` set to 'image_proj' which requires the keyword argument `image_embeds` to be passed in `added_conditions`"
+ )
+ image_embeds = added_cond_kwargs.get("image_embeds")
+ encoder_hidden_states = self.encoder_hid_proj(image_embeds)
+ # 2. pre-process
+ sample = rearrange(sample, "b c f h w -> (b f) c h w", f=sample.shape[2])
+ sample = self.conv_in(sample)
+ # 3. down
+
+ is_controlnet = mid_block_additional_residual is not None and down_block_additional_residuals is not None
+ is_adapter = mid_block_additional_residual is None and down_block_additional_residuals is not None
+
+ down_block_res_samples = (sample,)
+ for downsample_block in self.down_blocks:
+ if hasattr(downsample_block, "has_cross_attention") and downsample_block.has_cross_attention:
+ # For t2i-adapter CrossAttnDownBlock2D
+ additional_residuals = {}
+ if is_adapter and len(down_block_additional_residuals) > 0:
+ additional_residuals["additional_residuals"] = down_block_additional_residuals.pop(0)
+
+ sample, res_samples = downsample_block(
+ hidden_states=sample,
+ temb=emb,
+ encoder_hidden_states=encoder_hidden_states,
+ attention_mask=attention_mask,
+ cross_attention_kwargs=cross_attention_kwargs,
+ encoder_attention_mask=encoder_attention_mask,
+ **additional_residuals,
+ )
+ else:
+ sample, res_samples = downsample_block(hidden_states=sample, temb=emb)
+
+ if is_adapter and len(down_block_additional_residuals) > 0:
+ sample += down_block_additional_residuals.pop(0)
+
+ down_block_res_samples += res_samples
+
+ if is_controlnet:
+ new_down_block_res_samples = ()
+
+ for down_block_res_sample, down_block_additional_residual in zip(
+ down_block_res_samples, down_block_additional_residuals
+ ):
+ down_block_res_sample = down_block_res_sample + down_block_additional_residual
+ new_down_block_res_samples = new_down_block_res_samples + (down_block_res_sample,)
+
+ down_block_res_samples = new_down_block_res_samples
+ # print("after down: ", sample.mean(), emb.mean())
+
+ # 4. mid
+ if self.mid_block is not None:
+ sample = self.mid_block(
+ sample,
+ emb,
+ encoder_hidden_states=encoder_hidden_states,
+ attention_mask=attention_mask,
+ cross_attention_kwargs=cross_attention_kwargs,
+ encoder_attention_mask=encoder_attention_mask,
+ )
+
+ if is_controlnet:
+ sample = sample + mid_block_additional_residual
+
+ # print("after mid: ", sample.mean())
+ # 5. up
+ for i, upsample_block in enumerate(self.up_blocks):
+ is_final_block = i == len(self.up_blocks) - 1
+
+ res_samples = down_block_res_samples[-len(upsample_block.resnets) :]
+ down_block_res_samples = down_block_res_samples[: -len(upsample_block.resnets)]
+
+ # if we have not reached the final block and need to forward the
+ # upsample size, we do it here
+ if not is_final_block and forward_upsample_size:
+ upsample_size = down_block_res_samples[-1].shape[2:]
+
+ if hasattr(upsample_block, "has_cross_attention") and upsample_block.has_cross_attention:
+ sample = upsample_block(
+ hidden_states=sample,
+ temb=emb,
+ res_hidden_states_tuple=res_samples,
+ encoder_hidden_states=encoder_hidden_states,
+ cross_attention_kwargs=cross_attention_kwargs,
+ upsample_size=upsample_size,
+ attention_mask=attention_mask,
+ encoder_attention_mask=encoder_attention_mask,
+ )
+ else:
+ sample = upsample_block(
+ hidden_states=sample, temb=emb, res_hidden_states_tuple=res_samples, upsample_size=upsample_size
+ )
+
+ # 6. post-process
+ # if self.conv_norm_out:
+ # sample = self.conv_norm_out(sample)
+ # sample = self.conv_act(sample)
+ # sample = self.conv_out(sample)
+
+ if not return_dict:
+ return (sample,)
+
+ return UNetMV2DRefOutput(sample=sample)
+
+ @classmethod
+ def from_pretrained_2d(
+ cls, pretrained_model_name_or_path: Optional[Union[str, os.PathLike]],
+ camera_embedding_type: str, num_views: int, sample_size: int,
+ zero_init_conv_in: bool = True, zero_init_camera_projection: bool = False,
+ projection_class_embeddings_input_dim: int=6, joint_attention: bool = False,
+ joint_attention_twice: bool = False, multiview_attention: bool = True,
+ cross_domain_attention: bool = False,
+ in_channels: int = 8, out_channels: int = 4, local_crossattn=False,
+ **kwargs
+ ):
+ r"""
+ Instantiate a pretrained PyTorch model from a pretrained model configuration.
+
+ The model is set in evaluation mode - `model.eval()` - by default, and dropout modules are deactivated. To
+ train the model, set it back in training mode with `model.train()`.
+
+ Parameters:
+ pretrained_model_name_or_path (`str` or `os.PathLike`, *optional*):
+ Can be either:
+
+ - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on
+ the Hub.
+ - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved
+ with [`~ModelMixin.save_pretrained`].
+
+ cache_dir (`Union[str, os.PathLike]`, *optional*):
+ Path to a directory where a downloaded pretrained model configuration is cached if the standard cache
+ is not used.
+ torch_dtype (`str` or `torch.dtype`, *optional*):
+ Override the default `torch.dtype` and load the model with another dtype. If `"auto"` is passed, the
+ dtype is automatically derived from the model's weights.
+ force_download (`bool`, *optional*, defaults to `False`):
+ Whether or not to force the (re-)download of the model weights and configuration files, overriding the
+ cached versions if they exist.
+ resume_download (`bool`, *optional*, defaults to `False`):
+ Whether or not to resume downloading the model weights and configuration files. If set to `False`, any
+ incompletely downloaded files are deleted.
+ proxies (`Dict[str, str]`, *optional*):
+ A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128',
+ 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request.
+ output_loading_info (`bool`, *optional*, defaults to `False`):
+ Whether or not to also return a dictionary containing missing keys, unexpected keys and error messages.
+ local_files_only(`bool`, *optional*, defaults to `False`):
+ Whether to only load local model weights and configuration files or not. If set to `True`, the model
+ won't be downloaded from the Hub.
+ use_auth_token (`str` or *bool*, *optional*):
+ The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from
+ `diffusers-cli login` (stored in `~/.huggingface`) is used.
+ revision (`str`, *optional*, defaults to `"main"`):
+ The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier
+ allowed by Git.
+ from_flax (`bool`, *optional*, defaults to `False`):
+ Load the model weights from a Flax checkpoint save file.
+ subfolder (`str`, *optional*, defaults to `""`):
+ The subfolder location of a model file within a larger model repository on the Hub or locally.
+ mirror (`str`, *optional*):
+ Mirror source to resolve accessibility issues if you're downloading a model in China. We do not
+ guarantee the timeliness or safety of the source, and you should refer to the mirror site for more
+ information.
+ device_map (`str` or `Dict[str, Union[int, str, torch.device]]`, *optional*):
+ A map that specifies where each submodule should go. It doesn't need to be defined for each
+ parameter/buffer name; once a given module name is inside, every submodule of it will be sent to the
+ same device.
+
+ Set `device_map="auto"` to have 🤗 Accelerate automatically compute the most optimized `device_map`. For
+ more information about each option see [designing a device
+ map](https://hf.co/docs/accelerate/main/en/usage_guides/big_modeling#designing-a-device-map).
+ max_memory (`Dict`, *optional*):
+ A dictionary device identifier for the maximum memory. Will default to the maximum memory available for
+ each GPU and the available CPU RAM if unset.
+ offload_folder (`str` or `os.PathLike`, *optional*):
+ The path to offload weights if `device_map` contains the value `"disk"`.
+ offload_state_dict (`bool`, *optional*):
+ If `True`, temporarily offloads the CPU state dict to the hard drive to avoid running out of CPU RAM if
+ the weight of the CPU state dict + the biggest shard of the checkpoint does not fit. Defaults to `True`
+ when there is some disk offload.
+ low_cpu_mem_usage (`bool`, *optional*, defaults to `True` if torch version >= 1.9.0 else `False`):
+ Speed up model loading only loading the pretrained weights and not initializing the weights. This also
+ tries to not use more than 1x model size in CPU memory (including peak memory) while loading the model.
+ Only supported for PyTorch >= 1.9.0. If you are using an older version of PyTorch, setting this
+ argument to `True` will raise an error.
+ variant (`str`, *optional*):
+ Load weights from a specified `variant` filename such as `"fp16"` or `"ema"`. This is ignored when
+ loading `from_flax`.
+ use_safetensors (`bool`, *optional*, defaults to `None`):
+ If set to `None`, the `safetensors` weights are downloaded if they're available **and** if the
+ `safetensors` library is installed. If set to `True`, the model is forcibly loaded from `safetensors`
+ weights. If set to `False`, `safetensors` weights are not loaded.
+
+
+
+ To use private or [gated models](https://huggingface.co/docs/hub/models-gated#gated-models), log-in with
+ `huggingface-cli login`. You can also activate the special
+ ["offline-mode"](https://huggingface.co/diffusers/installation.html#offline-mode) to use this method in a
+ firewalled environment.
+
+
+
+ Example:
+
+ ```py
+ from diffusers import UNet2DConditionModel
+
+ unet = UNet2DConditionModel.from_pretrained("runwayml/stable-diffusion-v1-5", subfolder="unet")
+ ```
+
+ If you get the error message below, you need to finetune the weights for your downstream task:
+
+ ```bash
+ Some weights of UNet2DConditionModel were not initialized from the model checkpoint at runwayml/stable-diffusion-v1-5 and are newly initialized because the shapes did not match:
+ - conv_in.weight: found shape torch.Size([320, 4, 3, 3]) in the checkpoint and torch.Size([320, 9, 3, 3]) in the model instantiated
+ You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.
+ ```
+ """
+ cache_dir = kwargs.pop("cache_dir", DIFFUSERS_CACHE)
+ ignore_mismatched_sizes = kwargs.pop("ignore_mismatched_sizes", False)
+ force_download = kwargs.pop("force_download", False)
+ from_flax = kwargs.pop("from_flax", False)
+ resume_download = kwargs.pop("resume_download", False)
+ proxies = kwargs.pop("proxies", None)
+ output_loading_info = kwargs.pop("output_loading_info", False)
+ local_files_only = kwargs.pop("local_files_only", HF_HUB_OFFLINE)
+ use_auth_token = kwargs.pop("use_auth_token", None)
+ revision = kwargs.pop("revision", None)
+ torch_dtype = kwargs.pop("torch_dtype", None)
+ subfolder = kwargs.pop("subfolder", None)
+ device_map = kwargs.pop("device_map", None)
+ max_memory = kwargs.pop("max_memory", None)
+ offload_folder = kwargs.pop("offload_folder", None)
+ offload_state_dict = kwargs.pop("offload_state_dict", False)
+ variant = kwargs.pop("variant", None)
+ use_safetensors = kwargs.pop("use_safetensors", None)
+
+ # if use_safetensors and not is_safetensors_available():
+ # raise ValueError(
+ # "`use_safetensors`=True but safetensors is not installed. Please install safetensors with `pip install safetensors"
+ # )
+
+ allow_pickle = False
+ if use_safetensors is None:
+ # use_safetensors = is_safetensors_available()
+ use_safetensors = False
+ allow_pickle = True
+
+ if device_map is not None and not is_accelerate_available():
+ raise NotImplementedError(
+ "Loading and dispatching requires `accelerate`. Please make sure to install accelerate or set"
+ " `device_map=None`. You can install accelerate with `pip install accelerate`."
+ )
+
+ # Check if we can handle device_map and dispatching the weights
+ if device_map is not None and not is_torch_version(">=", "1.9.0"):
+ raise NotImplementedError(
+ "Loading and dispatching requires torch >= 1.9.0. Please either update your PyTorch version or set"
+ " `device_map=None`."
+ )
+
+ # Load config if we don't provide a configuration
+ config_path = pretrained_model_name_or_path
+
+ user_agent = {
+ "diffusers": __version__,
+ "file_type": "model",
+ "framework": "pytorch",
+ }
+
+ # load config
+ config, unused_kwargs, commit_hash = cls.load_config(
+ config_path,
+ cache_dir=cache_dir,
+ return_unused_kwargs=True,
+ return_commit_hash=True,
+ force_download=force_download,
+ resume_download=resume_download,
+ proxies=proxies,
+ local_files_only=local_files_only,
+ use_auth_token=use_auth_token,
+ revision=revision,
+ subfolder=subfolder,
+ device_map=device_map,
+ max_memory=max_memory,
+ offload_folder=offload_folder,
+ offload_state_dict=offload_state_dict,
+ user_agent=user_agent,
+ **kwargs,
+ )
+
+ # modify config
+ config["_class_name"] = cls.__name__
+ config['in_channels'] = in_channels
+ config['out_channels'] = out_channels
+ config['sample_size'] = sample_size # training resolution
+ config['num_views'] = num_views
+ config['joint_attention'] = joint_attention
+ config['joint_attention_twice'] = joint_attention_twice
+ config['multiview_attention'] = multiview_attention
+ config['cross_domain_attention'] = cross_domain_attention
+ config["down_block_types"] = [
+ "CrossAttnDownBlockMV2D",
+ "CrossAttnDownBlockMV2D",
+ "CrossAttnDownBlockMV2D",
+ "DownBlock2D"
+ ]
+ config['mid_block_type'] = "UNetMidBlockMV2DCrossAttn"
+ config["up_block_types"] = [
+ "UpBlock2D",
+ "CrossAttnUpBlockMV2D",
+ "CrossAttnUpBlockMV2D",
+ "CrossAttnUpBlockMV2D"
+ ]
+ config['class_embed_type'] = 'projection'
+ if camera_embedding_type == 'e_de_da_sincos':
+ config['projection_class_embeddings_input_dim'] = projection_class_embeddings_input_dim # default 6
+ else:
+ raise NotImplementedError
+
+ # load model
+ model_file = None
+ if from_flax:
+ raise NotImplementedError
+ else:
+ if use_safetensors:
+ try:
+ model_file = _get_model_file(
+ pretrained_model_name_or_path,
+ weights_name=_add_variant(SAFETENSORS_WEIGHTS_NAME, variant),
+ cache_dir=cache_dir,
+ force_download=force_download,
+ resume_download=resume_download,
+ proxies=proxies,
+ local_files_only=local_files_only,
+ use_auth_token=use_auth_token,
+ revision=revision,
+ subfolder=subfolder,
+ user_agent=user_agent,
+ commit_hash=commit_hash,
+ )
+ except IOError as e:
+ if not allow_pickle:
+ raise e
+ pass
+ if model_file is None:
+ model_file = _get_model_file(
+ pretrained_model_name_or_path,
+ weights_name=_add_variant(WEIGHTS_NAME, variant),
+ cache_dir=cache_dir,
+ force_download=force_download,
+ resume_download=resume_download,
+ proxies=proxies,
+ local_files_only=local_files_only,
+ use_auth_token=use_auth_token,
+ revision=revision,
+ subfolder=subfolder,
+ user_agent=user_agent,
+ commit_hash=commit_hash,
+ )
+
+ model = cls.from_config(config, **unused_kwargs)
+ if local_crossattn:
+ unet_lora_attn_procs = dict()
+ for name, _ in model.attn_processors.items():
+ if not name.endswith("attn1.processor"):
+ default_attn_proc = AttnProcessor()
+ elif is_xformers_available():
+ default_attn_proc = XFormersMVAttnProcessor()
+ else:
+ default_attn_proc = MVAttnProcessor()
+ unet_lora_attn_procs[name] = ReferenceOnlyAttnProc(
+ default_attn_proc, enabled=name.endswith("attn1.processor"), name=name
+ )
+ model.set_attn_processor(unet_lora_attn_procs)
+ state_dict = load_state_dict(model_file, variant=variant)
+ model._convert_deprecated_attention_blocks(state_dict)
+
+ conv_in_weight = state_dict['conv_in.weight']
+ conv_out_weight = state_dict['conv_out.weight']
+ model, missing_keys, unexpected_keys, mismatched_keys, error_msgs = cls._load_pretrained_model_2d(
+ model,
+ state_dict,
+ model_file,
+ pretrained_model_name_or_path,
+ ignore_mismatched_sizes=True,
+ )
+ if any([key == 'conv_in.weight' for key, _, _ in mismatched_keys]):
+ # initialize from the original SD structure
+ model.conv_in.weight.data[:,:4] = conv_in_weight
+
+ # whether to place all zero to new layers?
+ if zero_init_conv_in:
+ model.conv_in.weight.data[:,4:] = 0.
+
+ if any([key == 'conv_out.weight' for key, _, _ in mismatched_keys]):
+ # initialize from the original SD structure
+ model.conv_out.weight.data[:,:4] = conv_out_weight
+ if out_channels == 8: # copy for the last 4 channels
+ model.conv_out.weight.data[:, 4:] = conv_out_weight
+
+ if zero_init_camera_projection:
+ for p in model.class_embedding.parameters():
+ torch.nn.init.zeros_(p)
+
+ loading_info = {
+ "missing_keys": missing_keys,
+ "unexpected_keys": unexpected_keys,
+ "mismatched_keys": mismatched_keys,
+ "error_msgs": error_msgs,
+ }
+
+ if torch_dtype is not None and not isinstance(torch_dtype, torch.dtype):
+ raise ValueError(
+ f"{torch_dtype} needs to be of type `torch.dtype`, e.g. `torch.float16`, but is {type(torch_dtype)}."
+ )
+ elif torch_dtype is not None:
+ model = model.to(torch_dtype)
+
+ model.register_to_config(_name_or_path=pretrained_model_name_or_path)
+
+ # Set model in evaluation mode to deactivate DropOut modules by default
+ model.eval()
+ if output_loading_info:
+ return model, loading_info
+
+ return model
+
+ @classmethod
+ def _load_pretrained_model_2d(
+ cls,
+ model,
+ state_dict,
+ resolved_archive_file,
+ pretrained_model_name_or_path,
+ ignore_mismatched_sizes=False,
+ ):
+ # Retrieve missing & unexpected_keys
+ model_state_dict = model.state_dict()
+ loaded_keys = list(state_dict.keys())
+
+ expected_keys = list(model_state_dict.keys())
+
+ original_loaded_keys = loaded_keys
+
+ missing_keys = list(set(expected_keys) - set(loaded_keys))
+ unexpected_keys = list(set(loaded_keys) - set(expected_keys))
+
+ # Make sure we are able to load base models as well as derived models (with heads)
+ model_to_load = model
+
+ def _find_mismatched_keys(
+ state_dict,
+ model_state_dict,
+ loaded_keys,
+ ignore_mismatched_sizes,
+ ):
+ mismatched_keys = []
+ if ignore_mismatched_sizes:
+ for checkpoint_key in loaded_keys:
+ model_key = checkpoint_key
+
+ if (
+ model_key in model_state_dict
+ and state_dict[checkpoint_key].shape != model_state_dict[model_key].shape
+ ):
+ mismatched_keys.append(
+ (checkpoint_key, state_dict[checkpoint_key].shape, model_state_dict[model_key].shape)
+ )
+ del state_dict[checkpoint_key]
+ return mismatched_keys
+
+ if state_dict is not None:
+ # Whole checkpoint
+ mismatched_keys = _find_mismatched_keys(
+ state_dict,
+ model_state_dict,
+ original_loaded_keys,
+ ignore_mismatched_sizes,
+ )
+ error_msgs = _load_state_dict_into_model(model_to_load, state_dict)
+
+ if len(error_msgs) > 0:
+ error_msg = "\n\t".join(error_msgs)
+ if "size mismatch" in error_msg:
+ error_msg += (
+ "\n\tYou may consider adding `ignore_mismatched_sizes=True` in the model `from_pretrained` method."
+ )
+ raise RuntimeError(f"Error(s) in loading state_dict for {model.__class__.__name__}:\n\t{error_msg}")
+
+ if len(unexpected_keys) > 0:
+ logger.warning(
+ f"Some weights of the model checkpoint at {pretrained_model_name_or_path} were not used when"
+ f" initializing {model.__class__.__name__}: {unexpected_keys}\n- This IS expected if you are"
+ f" initializing {model.__class__.__name__} from the checkpoint of a model trained on another task"
+ " or with another architecture (e.g. initializing a BertForSequenceClassification model from a"
+ " BertForPreTraining model).\n- This IS NOT expected if you are initializing"
+ f" {model.__class__.__name__} from the checkpoint of a model that you expect to be exactly"
+ " identical (initializing a BertForSequenceClassification model from a"
+ " BertForSequenceClassification model)."
+ )
+ else:
+ logger.info(f"All model checkpoint weights were used when initializing {model.__class__.__name__}.\n")
+ if len(missing_keys) > 0:
+ logger.warning(
+ f"Some weights of {model.__class__.__name__} were not initialized from the model checkpoint at"
+ f" {pretrained_model_name_or_path} and are newly initialized: {missing_keys}\nYou should probably"
+ " TRAIN this model on a down-stream task to be able to use it for predictions and inference."
+ )
+ elif len(mismatched_keys) == 0:
+ logger.info(
+ f"All the weights of {model.__class__.__name__} were initialized from the model checkpoint at"
+ f" {pretrained_model_name_or_path}.\nIf your task is similar to the task the model of the"
+ f" checkpoint was trained on, you can already use {model.__class__.__name__} for predictions"
+ " without further training."
+ )
+ if len(mismatched_keys) > 0:
+ mismatched_warning = "\n".join(
+ [
+ f"- {key}: found shape {shape1} in the checkpoint and {shape2} in the model instantiated"
+ for key, shape1, shape2 in mismatched_keys
+ ]
+ )
+ logger.warning(
+ f"Some weights of {model.__class__.__name__} were not initialized from the model checkpoint at"
+ f" {pretrained_model_name_or_path} and are newly initialized because the shapes did not"
+ f" match:\n{mismatched_warning}\nYou should probably TRAIN this model on a down-stream task to be"
+ " able to use it for predictions and inference."
+ )
+
+ return model, missing_keys, unexpected_keys, mismatched_keys, error_msgs
+
diff --git a/2D_Stage/tuneavideo/pipelines/__pycache__/pipeline_tuneavideo.cpython-310.pyc b/2D_Stage/tuneavideo/pipelines/__pycache__/pipeline_tuneavideo.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..fcd640fcb1172290f0d4cd4cd4674193a3d69f2f
Binary files /dev/null and b/2D_Stage/tuneavideo/pipelines/__pycache__/pipeline_tuneavideo.cpython-310.pyc differ
diff --git a/2D_Stage/tuneavideo/pipelines/pipeline_tuneavideo.py b/2D_Stage/tuneavideo/pipelines/pipeline_tuneavideo.py
new file mode 100644
index 0000000000000000000000000000000000000000..9091ec1bafe1518efc9d1b2fea058875e7a61db3
--- /dev/null
+++ b/2D_Stage/tuneavideo/pipelines/pipeline_tuneavideo.py
@@ -0,0 +1,585 @@
+# Adapted from https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py
+
+import tqdm
+
+import inspect
+from typing import Callable, List, Optional, Union
+from dataclasses import dataclass
+
+import numpy as np
+import torch
+
+from diffusers.utils import is_accelerate_available
+from packaging import version
+from transformers import CLIPTextModel, CLIPTokenizer
+import torchvision.transforms.functional as TF
+
+from diffusers.configuration_utils import FrozenDict
+from diffusers.models import AutoencoderKL
+from diffusers import DiffusionPipeline
+from diffusers.schedulers import (
+ DDIMScheduler,
+ DPMSolverMultistepScheduler,
+ EulerAncestralDiscreteScheduler,
+ EulerDiscreteScheduler,
+ LMSDiscreteScheduler,
+ PNDMScheduler,
+)
+from diffusers.utils import deprecate, logging, BaseOutput
+
+from einops import rearrange
+
+from ..models.unet import UNet3DConditionModel
+from torchvision.transforms import InterpolationMode
+
+import ipdb
+
+logger = logging.get_logger(__name__) # pylint: disable=invalid-name
+
+
+@dataclass
+class TuneAVideoPipelineOutput(BaseOutput):
+ videos: Union[torch.Tensor, np.ndarray]
+
+
+class TuneAVideoPipeline(DiffusionPipeline):
+ _optional_components = []
+
+ def __init__(
+ self,
+ vae: AutoencoderKL,
+ text_encoder: CLIPTextModel,
+ tokenizer: CLIPTokenizer,
+ unet: UNet3DConditionModel,
+
+ scheduler: Union[
+ DDIMScheduler,
+ PNDMScheduler,
+ LMSDiscreteScheduler,
+ EulerDiscreteScheduler,
+ EulerAncestralDiscreteScheduler,
+ DPMSolverMultistepScheduler,
+ ],
+ ref_unet = None,
+ feature_extractor=None,
+ image_encoder=None
+ ):
+ super().__init__()
+ self.ref_unet = ref_unet
+ self.feature_extractor = feature_extractor
+ self.image_encoder = image_encoder
+
+ if hasattr(scheduler.config, "steps_offset") and scheduler.config.steps_offset != 1:
+ deprecation_message = (
+ f"The configuration file of this scheduler: {scheduler} is outdated. `steps_offset`"
+ f" should be set to 1 instead of {scheduler.config.steps_offset}. Please make sure "
+ "to update the config accordingly as leaving `steps_offset` might led to incorrect results"
+ " in future versions. If you have downloaded this checkpoint from the Hugging Face Hub,"
+ " it would be very nice if you could open a Pull request for the `scheduler/scheduler_config.json`"
+ " file"
+ )
+ deprecate("steps_offset!=1", "1.0.0", deprecation_message, standard_warn=False)
+ new_config = dict(scheduler.config)
+ new_config["steps_offset"] = 1
+ scheduler._internal_dict = FrozenDict(new_config)
+
+ if hasattr(scheduler.config, "clip_sample") and scheduler.config.clip_sample is True:
+ deprecation_message = (
+ f"The configuration file of this scheduler: {scheduler} has not set the configuration `clip_sample`."
+ " `clip_sample` should be set to False in the configuration file. Please make sure to update the"
+ " config accordingly as not setting `clip_sample` in the config might lead to incorrect results in"
+ " future versions. If you have downloaded this checkpoint from the Hugging Face Hub, it would be very"
+ " nice if you could open a Pull request for the `scheduler/scheduler_config.json` file"
+ )
+ deprecate("clip_sample not set", "1.0.0", deprecation_message, standard_warn=False)
+ new_config = dict(scheduler.config)
+ new_config["clip_sample"] = False
+ scheduler._internal_dict = FrozenDict(new_config)
+
+ is_unet_version_less_0_9_0 = hasattr(unet.config, "_diffusers_version") and version.parse(
+ version.parse(unet.config._diffusers_version).base_version
+ ) < version.parse("0.9.0.dev0")
+ is_unet_sample_size_less_64 = hasattr(unet.config, "sample_size") and unet.config.sample_size < 64
+ if is_unet_version_less_0_9_0 and is_unet_sample_size_less_64:
+ deprecation_message = (
+ "The configuration file of the unet has set the default `sample_size` to smaller than"
+ " 64 which seems highly unlikely. If your checkpoint is a fine-tuned version of any of the"
+ " following: \n- CompVis/stable-diffusion-v1-4 \n- CompVis/stable-diffusion-v1-3 \n-"
+ " CompVis/stable-diffusion-v1-2 \n- CompVis/stable-diffusion-v1-1 \n- runwayml/stable-diffusion-v1-5"
+ " \n- runwayml/stable-diffusion-inpainting \n you should change 'sample_size' to 64 in the"
+ " configuration file. Please make sure to update the config accordingly as leaving `sample_size=32`"
+ " in the config might lead to incorrect results in future versions. If you have downloaded this"
+ " checkpoint from the Hugging Face Hub, it would be very nice if you could open a Pull request for"
+ " the `unet/config.json` file"
+ )
+ deprecate("sample_size<64", "1.0.0", deprecation_message, standard_warn=False)
+ new_config = dict(unet.config)
+ new_config["sample_size"] = 64
+ unet._internal_dict = FrozenDict(new_config)
+
+ self.register_modules(
+ vae=vae,
+ text_encoder=text_encoder,
+ tokenizer=tokenizer,
+ unet=unet,
+ scheduler=scheduler,
+ )
+ self.vae_scale_factor = 2 ** (len(self.vae.config.block_out_channels) - 1)
+
+ def enable_vae_slicing(self):
+ self.vae.enable_slicing()
+
+ def disable_vae_slicing(self):
+ self.vae.disable_slicing()
+
+ def enable_sequential_cpu_offload(self, gpu_id=0):
+ if is_accelerate_available():
+ from accelerate import cpu_offload
+ else:
+ raise ImportError("Please install accelerate via `pip install accelerate`")
+
+ device = torch.device(f"cuda:{gpu_id}")
+
+ for cpu_offloaded_model in [self.unet, self.text_encoder, self.vae]:
+ if cpu_offloaded_model is not None:
+ cpu_offload(cpu_offloaded_model, device)
+
+
+ @property
+ def _execution_device(self):
+ if self.device != torch.device("meta") or not hasattr(self.unet, "_hf_hook"):
+ return self.device
+ for module in self.unet.modules():
+ if (
+ hasattr(module, "_hf_hook")
+ and hasattr(module._hf_hook, "execution_device")
+ and module._hf_hook.execution_device is not None
+ ):
+ return torch.device(module._hf_hook.execution_device)
+ return self.device
+
+ def _encode_image(self, image_pil, device, num_images_per_prompt, do_classifier_free_guidance, img_proj=None):
+ dtype = next(self.image_encoder.parameters()).dtype
+
+ # image_pt = self.feature_extractor(images=image_pil, return_tensors="pt").pixel_values
+ # image_pt = image_pt.to(device=device, dtype=dtype)
+ # image_embeddings = self.image_encoder(image_pt).image_embeds
+ # image_embeddings = image_embeddings.unsqueeze(1)
+
+ # # image encoding
+ clip_image_mean = torch.as_tensor(self.feature_extractor.image_mean)[:,None,None].to(device, dtype=torch.float32)
+ clip_image_std = torch.as_tensor(self.feature_extractor.image_std)[:,None,None].to(device, dtype=torch.float32)
+ imgs_in_proc = TF.resize(image_pil, (self.feature_extractor.crop_size['height'], self.feature_extractor.crop_size['width']), interpolation=InterpolationMode.BICUBIC)
+ # do the normalization in float32 to preserve precision
+ imgs_in_proc = ((imgs_in_proc.float() - clip_image_mean) / clip_image_std).to(dtype)
+ if img_proj is None:
+ # (B*Nv, 1, 768)
+ image_embeddings = self.image_encoder(imgs_in_proc).image_embeds.unsqueeze(1)
+ # duplicate image embeddings for each generation per prompt, using mps friendly method
+ # Note: repeat differently from official pipelines
+ # B1B2B3B4 -> B1B2B3B4B1B2B3B4
+ bs_embed, seq_len, _ = image_embeddings.shape
+ image_embeddings = image_embeddings.repeat(num_images_per_prompt, 1, 1)
+ if do_classifier_free_guidance:
+ negative_prompt_embeds = torch.zeros_like(image_embeddings)
+
+ # For classifier free guidance, we need to do two forward passes.
+ # Here we concatenate the unconditional and text embeddings into a single batch
+ # to avoid doing two forward passes
+ image_embeddings = torch.cat([negative_prompt_embeds, image_embeddings])
+ else:
+ if do_classifier_free_guidance:
+ negative_image_proc = torch.zeros_like(imgs_in_proc)
+
+ # For classifier free guidance, we need to do two forward passes.
+ # Here we concatenate the unconditional and text embeddings into a single batch
+ # to avoid doing two forward passes
+ imgs_in_proc = torch.cat([negative_image_proc, imgs_in_proc])
+
+ image_embeds = image_encoder(imgs_in_proc, output_hidden_states=True).hidden_states[-2]
+ image_embeddings = img_proj(image_embeds)
+
+ # image_embeddings_unet = rearrange(image_embeddings_unet, 'B Nv d c -> (B Nv) d c')
+
+ # image_pt = torch.stack([TF.to_tensor(img) for img in image_pil], dim=0).to(device)
+ # image_pil = image_pil * 2.0 - 1.0
+ image_latents = self.vae.encode(image_pil* 2.0 - 1.0).latent_dist.mode() * self.vae.config.scaling_factor
+
+ # Note: repeat differently from official pipelines
+ # B1B2B3B4 -> B1B2B3B4B1B2B3B4
+ image_latents = image_latents.repeat(num_images_per_prompt, 1, 1, 1)
+
+ # if do_classifier_free_guidance:
+ # image_latents = torch.cat([torch.zeros_like(image_latents), image_latents])
+
+ return image_embeddings, image_latents
+
+ def _encode_prompt(self, prompt, device, num_videos_per_prompt, do_classifier_free_guidance, negative_prompt):
+ batch_size = len(prompt) if isinstance(prompt, list) else 1
+
+ text_inputs = self.tokenizer(
+ prompt,
+ padding="max_length",
+ max_length=self.tokenizer.model_max_length,
+ truncation=True,
+ return_tensors="pt",
+ )
+ text_input_ids = text_inputs.input_ids
+ untruncated_ids = self.tokenizer(prompt, padding="longest", return_tensors="pt").input_ids
+
+ if untruncated_ids.shape[-1] >= text_input_ids.shape[-1] and not torch.equal(text_input_ids, untruncated_ids):
+ removed_text = self.tokenizer.batch_decode(untruncated_ids[:, self.tokenizer.model_max_length - 1 : -1])
+ logger.warning(
+ "The following part of your input was truncated because CLIP can only handle sequences up to"
+ f" {self.tokenizer.model_max_length} tokens: {removed_text}"
+ )
+
+ if hasattr(self.text_encoder.config, "use_attention_mask") and self.text_encoder.config.use_attention_mask:
+ attention_mask = text_inputs.attention_mask.to(device)
+ else:
+ attention_mask = None
+
+ text_embeddings = self.text_encoder(
+ text_input_ids.to(device),
+ attention_mask=attention_mask,
+ )
+ text_embeddings = text_embeddings[0]
+
+ # duplicate text embeddings for each generation per prompt, using mps friendly method
+ bs_embed, seq_len, _ = text_embeddings.shape
+ text_embeddings = text_embeddings.repeat(1, num_videos_per_prompt, 1)
+ text_embeddings = text_embeddings.view(bs_embed * num_videos_per_prompt, seq_len, -1)
+
+ # get unconditional embeddings for classifier free guidance
+ if do_classifier_free_guidance:
+ uncond_tokens: List[str]
+ if negative_prompt is None:
+ uncond_tokens = [""] * batch_size
+ elif type(prompt) is not type(negative_prompt):
+ raise TypeError(
+ f"`negative_prompt` should be the same type to `prompt`, but got {type(negative_prompt)} !="
+ f" {type(prompt)}."
+ )
+ elif isinstance(negative_prompt, str):
+ uncond_tokens = [negative_prompt]
+ elif batch_size != len(negative_prompt):
+ raise ValueError(
+ f"`negative_prompt`: {negative_prompt} has batch size {len(negative_prompt)}, but `prompt`:"
+ f" {prompt} has batch size {batch_size}. Please make sure that passed `negative_prompt` matches"
+ " the batch size of `prompt`."
+ )
+ else:
+ uncond_tokens = negative_prompt
+
+ max_length = text_input_ids.shape[-1]
+ uncond_input = self.tokenizer(
+ uncond_tokens,
+ padding="max_length",
+ max_length=max_length,
+ truncation=True,
+ return_tensors="pt",
+ )
+
+ if hasattr(self.text_encoder.config, "use_attention_mask") and self.text_encoder.config.use_attention_mask:
+ attention_mask = uncond_input.attention_mask.to(device)
+ else:
+ attention_mask = None
+
+ uncond_embeddings = self.text_encoder(
+ uncond_input.input_ids.to(device),
+ attention_mask=attention_mask,
+ )
+ uncond_embeddings = uncond_embeddings[0]
+
+ # duplicate unconditional embeddings for each generation per prompt, using mps friendly method
+ seq_len = uncond_embeddings.shape[1]
+ uncond_embeddings = uncond_embeddings.repeat(1, num_videos_per_prompt, 1)
+ uncond_embeddings = uncond_embeddings.view(batch_size * num_videos_per_prompt, seq_len, -1)
+
+ # For classifier free guidance, we need to do two forward passes.
+ # Here we concatenate the unconditional and text embeddings into a single batch
+ # to avoid doing two forward passes
+ text_embeddings = torch.cat([uncond_embeddings, text_embeddings])
+
+ return text_embeddings
+
+ def decode_latents(self, latents):
+ video_length = latents.shape[2]
+ latents = 1 / 0.18215 * latents
+ latents = rearrange(latents, "b c f h w -> (b f) c h w")
+ video = self.vae.decode(latents).sample
+ video = rearrange(video, "(b f) c h w -> b c f h w", f=video_length)
+ video = (video / 2 + 0.5).clamp(0, 1)
+ # we always cast to float32 as this does not cause significant overhead and is compatible with bfloa16
+ video = video.cpu().float().numpy()
+ return video
+
+ def prepare_extra_step_kwargs(self, generator, eta):
+ # prepare extra kwargs for the scheduler step, since not all schedulers have the same signature
+ # eta (η) is only used with the DDIMScheduler, it will be ignored for other schedulers.
+ # eta corresponds to η in DDIM paper: https://arxiv.org/abs/2010.02502
+ # and should be between [0, 1]
+
+ accepts_eta = "eta" in set(inspect.signature(self.scheduler.step).parameters.keys())
+ extra_step_kwargs = {}
+ if accepts_eta:
+ extra_step_kwargs["eta"] = eta
+
+ # check if the scheduler accepts generator
+ accepts_generator = "generator" in set(inspect.signature(self.scheduler.step).parameters.keys())
+ if accepts_generator:
+ extra_step_kwargs["generator"] = generator
+ return extra_step_kwargs
+
+ def check_inputs(self, prompt, height, width, callback_steps):
+ if not isinstance(prompt, str) and not isinstance(prompt, list):
+ raise ValueError(f"`prompt` has to be of type `str` or `list` but is {type(prompt)}")
+
+ if height % 8 != 0 or width % 8 != 0:
+ raise ValueError(f"`height` and `width` have to be divisible by 8 but are {height} and {width}.")
+
+ if (callback_steps is None) or (
+ callback_steps is not None and (not isinstance(callback_steps, int) or callback_steps <= 0)
+ ):
+ raise ValueError(
+ f"`callback_steps` has to be a positive integer but is {callback_steps} of type"
+ f" {type(callback_steps)}."
+ )
+
+ def prepare_latents(self, batch_size, num_channels_latents, video_length, height, width, dtype, device, generator, latents=None):
+ shape = (batch_size, num_channels_latents, video_length, height // self.vae_scale_factor, width // self.vae_scale_factor)
+ if isinstance(generator, list) and len(generator) != batch_size:
+ raise ValueError(
+ f"You have passed a list of generators of length {len(generator)}, but requested an effective batch"
+ f" size of {batch_size}. Make sure the batch size matches the length of the generators."
+ )
+
+ if latents is None:
+ rand_device = "cpu" if device.type == "mps" else device
+
+ if isinstance(generator, list):
+ shape = (1,) + shape[1:]
+ latents = [
+ torch.randn(shape, generator=generator[i], device=rand_device, dtype=dtype)
+ for i in range(batch_size)
+ ]
+ latents = torch.cat(latents, dim=0).to(device)
+ else:
+ latents = torch.randn(shape, generator=generator, device=rand_device, dtype=dtype).to(device)
+ else:
+ if latents.shape != shape:
+ raise ValueError(f"Unexpected latents shape, got {latents.shape}, expected {shape}")
+ latents = latents.to(device)
+
+ # scale the initial noise by the standard deviation required by the scheduler
+ latents = latents * self.scheduler.init_noise_sigma
+ return latents
+
+ @torch.no_grad()
+ def __call__(
+ self,
+ prompt: Union[str, List[str]],
+ image: Union[str, List[str]],
+ video_length: Optional[int],
+ height: Optional[int] = None,
+ width: Optional[int] = None,
+ num_inference_steps: int = 50,
+ guidance_scale: float = 7.5,
+ negative_prompt: Optional[Union[str, List[str]]] = None,
+ num_videos_per_prompt: Optional[int] = 1,
+ eta: float = 0.0,
+ generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None,
+ latents: Optional[torch.FloatTensor] = None,
+ output_type: Optional[str] = "tensor",
+ return_dict: bool = True,
+ callback: Optional[Callable[[int, int, torch.FloatTensor], None]] = None,
+ callback_steps: Optional[int] = 1,
+ camera_matrixs = None,
+ class_labels = None,
+ prompt_ids = None,
+ unet_condition_type = None,
+ pose_guider = None,
+ pose_image = None,
+ img_proj=None,
+ use_noise=True,
+ use_shifted_noise=False,
+ rescale = 0.7,
+ **kwargs,
+ ):
+ # Default height and width to unet
+ height = height or self.unet.config.sample_size * self.vae_scale_factor
+ width = width or self.unet.config.sample_size * self.vae_scale_factor
+
+ # Check inputs. Raise error if not correct
+ self.check_inputs(prompt, height, width, callback_steps)
+ if isinstance(image, list):
+ batch_size = len(image)
+ else:
+ batch_size = image.shape[0]
+ # assert batch_size >= video_length and batch_size % video_length == 0
+ # Define call parameters
+ batch_size = 1 if isinstance(prompt, str) else len(prompt)
+ device = self._execution_device
+ # here `guidance_scale` is defined analog to the guidance weight `w` of equation (2)
+ # of the Imagen paper: https://arxiv.org/pdf/2205.11487.pdf . `guidance_scale = 1`
+ # corresponds to doing no classifier free guidance.
+ do_classifier_free_guidance = guidance_scale > 1.0
+
+ # 3. Encode input image
+ # if isinstance(image, list):
+ # image_pil = image
+ # elif isinstance(image, torch.Tensor):
+ # image_pil = [TF.to_pil_image(image[i]) for i in range(image.shape[0])]
+ # encode input reference image
+ image_embeddings, image_latents = self._encode_image(image, device, num_videos_per_prompt, do_classifier_free_guidance, img_proj=img_proj) #torch.Size([64, 1, 768]) torch.Size([64, 4, 32, 32])
+ image_latents = rearrange(image_latents, "(b f) c h w -> b c f h w", f=1) #torch.Size([64, 4, 1, 32, 32])
+
+ # Encode input prompt_id
+ # encoder_hidden_states = self.text_encoder(prompt_ids)[0] #torch.Size([32, 77, 768])
+
+ # Encode input prompt
+ text_embeddings = self._encode_prompt( #torch.Size([64, 77, 768])
+ prompt, device, num_videos_per_prompt, do_classifier_free_guidance, negative_prompt
+ )
+
+ # Prepare timesteps
+ self.scheduler.set_timesteps(num_inference_steps, device=device)
+ timesteps = self.scheduler.timesteps
+
+ # Prepare latent variables
+ num_channels_latents = self.unet.in_channels
+ latents = self.prepare_latents( #torch.Size([32, 4, 4, 32, 32])
+ batch_size * num_videos_per_prompt,
+ num_channels_latents,
+ video_length,
+ height,
+ width,
+ text_embeddings.dtype,
+ device,
+ generator,
+ latents,
+ )
+ latents_dtype = latents.dtype
+ # import ipdb
+ # ipdb.set_trace()
+ # Prepare extra step kwargs.
+ extra_step_kwargs = self.prepare_extra_step_kwargs(generator, eta)
+ # prepare camera_matrix
+ if camera_matrixs is not None:
+ camera_matrixs = torch.cat([camera_matrixs] * 2) if do_classifier_free_guidance else camera_matrixs #(64, 4, 12)
+ # Denoising loop
+ num_warmup_steps = len(timesteps) - num_inference_steps * self.scheduler.order
+ if pose_guider is not None:
+ if len(pose_image.shape) == 5:
+ pose_embeds = pose_guider(rearrange(pose_image, "b f c h w -> (b f) c h w"))
+ pose_embeds = rearrange(pose_embeds, "(b f) c h w-> b c f h w ", f=video_length)
+ else:
+ pose_embeds = pose_guider(pose_image).unsqueeze(0)
+ pose_embeds = torch.cat([pose_embeds]*2, dim=0)
+ # import ipdb
+ # ipdb.set_trace()
+ with self.progress_bar(total=num_inference_steps) as progress_bar:
+ for i, t in enumerate(tqdm.tqdm(timesteps)):
+ # expand the latents if we are doing classifier free guidance
+ latent_model_input = torch.cat([latents] * 2) if do_classifier_free_guidance else latents
+ latent_model_input = self.scheduler.scale_model_input(latent_model_input, t)
+ if pose_guider is not None:
+ latent_model_input = latent_model_input + pose_embeds
+
+ noise_cond = torch.randn_like(image_latents)
+ if use_noise:
+ cond_latents = self.scheduler.add_noise(image_latents, noise_cond, t)
+ else:
+ cond_latents = image_latents
+ cond_latent_model_input = torch.cat([cond_latents] * 2) if do_classifier_free_guidance else cond_latents
+ cond_latent_model_input = self.scheduler.scale_model_input(cond_latent_model_input, t)
+
+ # predict the noise residual
+ # ref text condition
+ ref_dict = {}
+ if self.ref_unet is not None:
+ noise_pred_cond = self.ref_unet(
+ cond_latent_model_input, #torch.Size([64, 4, 1, 32, 32])
+ t, #torch.Size([32])
+ encoder_hidden_states=text_embeddings.to(torch.float32), #torch.Size([64, 77, 768])
+ cross_attention_kwargs=dict(mode="w", ref_dict=ref_dict)
+ ).sample.to(dtype=latents_dtype)
+
+ # if torch.isnan(noise_pred_cond).any():
+ # ipdb.set_trace()
+ # Predict the noise residual and compute loss
+ # model_pred = unet(noisy_latents, timesteps, encoder_hidden_states, camera_matrixs).sample
+ # unet
+ #text condition for unet
+ text_embeddings_unet = text_embeddings.unsqueeze(1).repeat(1,latents.shape[2],1,1)
+ text_embeddings_unet = rearrange(text_embeddings_unet, 'B Nv d c -> (B Nv) d c')
+ #image condition for unet
+ image_embeddings_unet = image_embeddings.unsqueeze(1).repeat(1,latents.shape[2],1, 1)
+ image_embeddings_unet = rearrange(image_embeddings_unet, 'B Nv d c -> (B Nv) d c')
+
+ if unet_condition_type == 'text':
+ encoder_hidden_states_unet_cond = text_embeddings_unet
+ elif unet_condition_type == 'image':
+ encoder_hidden_states_unet_cond = image_embeddings_unet
+ else:
+ raise('need unet_condition_type')
+
+ if self.ref_unet is not None:
+ noise_pred = self.unet(
+ latent_model_input.to(torch.float32), #torch.Size([64, 4, 4, 32, 32])
+ t,
+ encoder_hidden_states=encoder_hidden_states_unet_cond.to(torch.float32),
+ camera_matrixs=camera_matrixs.to(torch.float32), #torch.Size([64, 4, 12])
+ cross_attention_kwargs=dict(mode="r", ref_dict=ref_dict, is_cfg_guidance=do_classifier_free_guidance)
+ # cross_attention_kwargs=dict(mode="n", ref_dict=ref_dict, is_cfg_guidance=do_classifier_free_guidance)
+ ).sample.to(dtype=latents_dtype)
+ else:
+ noise_pred = self.unet(
+ latent_model_input.to(torch.float32), #torch.Size([64, 4, 4, 32, 32])
+ t,
+ encoder_hidden_states=encoder_hidden_states_unet_cond.to(torch.float32),
+ camera_matrixs=camera_matrixs.to(torch.float32), #torch.Size([64, 4, 12])
+ # cross_attention_kwargs=dict(mode="r", ref_dict=ref_dict, is_cfg_guidance=do_classifier_free_guidance)
+ cross_attention_kwargs=dict(mode="n", ref_dict=ref_dict, is_cfg_guidance=do_classifier_free_guidance)
+ ).sample.to(dtype=latents_dtype)
+ # perform guidance
+ if do_classifier_free_guidance:
+ noise_pred_uncond, noise_pred_text = noise_pred.chunk(2)
+ if use_shifted_noise:
+ # Apply regular classifier-free guidance.
+ cfg = noise_pred_uncond + guidance_scale * (noise_pred_text - noise_pred_uncond)
+ # Calculate standard deviations.
+ std_pos = noise_pred_text.std([1,2,3], keepdim=True)
+ std_cfg = cfg.std([1,2,3], keepdim=True)
+ # Apply guidance rescale with fused operations.
+ factor = std_pos / std_cfg
+ factor = rescale * factor + (1 - rescale)
+ noise_pred = cfg * factor
+ else:
+ noise_pred = noise_pred_uncond + guidance_scale * (noise_pred_text - noise_pred_uncond)
+ # noise_pred_uncond_, noise_pred_text_ = noise_pred_cond.chunk(2)
+ # noise_pred_cond = noise_pred_uncond_ + guidance_scale * (noise_pred_text_ - noise_pred_uncond_)
+
+ # compute the previous noisy sample x_t -> x_t-1
+ noise_pred = rearrange(noise_pred, "(b f) c h w -> b c f h w", f=video_length)
+ latents = self.scheduler.step(noise_pred, t, latents, **extra_step_kwargs).prev_sample
+ # noise_pred_cond = rearrange(noise_pred_cond, "(b f) c h w -> b c f h w", f=1)
+ # cond_latents = self.scheduler.step(noise_pred_cond, t, cond_latents, **extra_step_kwargs).prev_sample
+
+ # call the callback, if provided
+ if i == len(timesteps) - 1 or ((i + 1) > num_warmup_steps and (i + 1) % self.scheduler.order == 0):
+ progress_bar.update()
+ if callback is not None and i % callback_steps == 0:
+ callback(i, t, latents)
+
+ # Post-processing
+ video = self.decode_latents(latents)
+
+ # Convert to tensor
+ if output_type == "tensor":
+ video = torch.from_numpy(video)
+
+ if not return_dict:
+ return video
+
+ return TuneAVideoPipelineOutput(videos=video)
diff --git a/2D_Stage/tuneavideo/util.py b/2D_Stage/tuneavideo/util.py
new file mode 100644
index 0000000000000000000000000000000000000000..3c4daa393169f319084632b4a1f172d8ba981bfc
--- /dev/null
+++ b/2D_Stage/tuneavideo/util.py
@@ -0,0 +1,128 @@
+import os
+import imageio
+import numpy as np
+from typing import Union
+import cv2
+import torch
+import torchvision
+
+from tqdm import tqdm
+from einops import rearrange
+
+def shifted_noise(betas, image_d=512, noise_d=256, shifted_noise=True):
+ alphas = 1 - betas
+ alphas_bar = torch.cumprod(alphas, dim=0)
+ d = (image_d / noise_d) ** 2
+ if shifted_noise:
+ alphas_bar = alphas_bar / (d - (d - 1) * alphas_bar)
+ alphas_bar_sqrt = torch.sqrt(alphas_bar)
+ alphas_bar_sqrt_0 = alphas_bar_sqrt[0].clone()
+ alphas_bar_sqrt_T = alphas_bar_sqrt[-1].clone()
+ # Shift so last timestep is zero.
+ alphas_bar_sqrt -= alphas_bar_sqrt_T
+ # Scale so first timestep is back to old value.
+ alphas_bar_sqrt *= alphas_bar_sqrt_0 / (
+ alphas_bar_sqrt_0 - alphas_bar_sqrt_T)
+
+ # Convert alphas_bar_sqrt to betas
+ alphas_bar = alphas_bar_sqrt ** 2
+ alphas = alphas_bar[1:] / alphas_bar[:-1]
+ alphas = torch.cat([alphas_bar[0:1], alphas])
+ betas = 1 - alphas
+ return betas
+
+def save_videos_grid(videos: torch.Tensor, path: str, rescale=False, n_rows=4, fps=8):
+ videos = rearrange(videos, "b c t h w -> t b c h w")
+ outputs = []
+ for x in videos:
+ x = torchvision.utils.make_grid(x, nrow=n_rows)
+ x = x.transpose(0, 1).transpose(1, 2).squeeze(-1)
+ if rescale:
+ x = (x + 1.0) / 2.0 # -1,1 -> 0,1
+ x = (x * 255).numpy().astype(np.uint8)
+ outputs.append(x)
+
+ os.makedirs(os.path.dirname(path), exist_ok=True)
+ imageio.mimsave(path, outputs, duration=1000/fps)
+
+def save_imgs_grid(videos: torch.Tensor, path: str, rescale=False, n_rows=4, fps=8):
+ videos = rearrange(videos, "b c t h w -> t b c h w")
+ for i, x in enumerate(videos):
+ x = torchvision.utils.make_grid(x, nrow=n_rows)
+ x = x.transpose(0, 1).transpose(1, 2).squeeze(-1)
+ if rescale:
+ x = (x + 1.0) / 2.0 # -1,1 -> 0,1
+ x = (x * 255).numpy().astype(np.uint8)
+ os.makedirs(os.path.dirname(path), exist_ok=True)
+ cv2.imwrite(os.path.join(path, f'view_{i}.png'), x[:,:,::-1])
+
+def imgs_grid(videos: torch.Tensor, rescale=False, n_rows=4, fps=8):
+ videos = rearrange(videos, "b c t h w -> t b c h w")
+ image_list = []
+ for i, x in enumerate(videos):
+ x = torchvision.utils.make_grid(x, nrow=n_rows)
+ x = x.transpose(0, 1).transpose(1, 2).squeeze(-1)
+ if rescale:
+ x = (x + 1.0) / 2.0 # -1,1 -> 0,1
+ x = (x * 255).numpy().astype(np.uint8)
+ # image_list.append(x[:,:,::-1])
+ image_list.append(x)
+ return image_list
+
+# DDIM Inversion
+@torch.no_grad()
+def init_prompt(prompt, pipeline):
+ uncond_input = pipeline.tokenizer(
+ [""], padding="max_length", max_length=pipeline.tokenizer.model_max_length,
+ return_tensors="pt"
+ )
+ uncond_embeddings = pipeline.text_encoder(uncond_input.input_ids.to(pipeline.device))[0]
+ text_input = pipeline.tokenizer(
+ [prompt],
+ padding="max_length",
+ max_length=pipeline.tokenizer.model_max_length,
+ truncation=True,
+ return_tensors="pt",
+ )
+ text_embeddings = pipeline.text_encoder(text_input.input_ids.to(pipeline.device))[0]
+ context = torch.cat([uncond_embeddings, text_embeddings])
+
+ return context
+
+
+def next_step(model_output: Union[torch.FloatTensor, np.ndarray], timestep: int,
+ sample: Union[torch.FloatTensor, np.ndarray], ddim_scheduler):
+ timestep, next_timestep = min(
+ timestep - ddim_scheduler.config.num_train_timesteps // ddim_scheduler.num_inference_steps, 999), timestep
+ alpha_prod_t = ddim_scheduler.alphas_cumprod[timestep] if timestep >= 0 else ddim_scheduler.final_alpha_cumprod
+ alpha_prod_t_next = ddim_scheduler.alphas_cumprod[next_timestep]
+ beta_prod_t = 1 - alpha_prod_t
+ next_original_sample = (sample - beta_prod_t ** 0.5 * model_output) / alpha_prod_t ** 0.5
+ next_sample_direction = (1 - alpha_prod_t_next) ** 0.5 * model_output
+ next_sample = alpha_prod_t_next ** 0.5 * next_original_sample + next_sample_direction
+ return next_sample
+
+
+def get_noise_pred_single(latents, t, context, unet):
+ noise_pred = unet(latents, t, encoder_hidden_states=context)["sample"]
+ return noise_pred
+
+
+@torch.no_grad()
+def ddim_loop(pipeline, ddim_scheduler, latent, num_inv_steps, prompt):
+ context = init_prompt(prompt, pipeline)
+ uncond_embeddings, cond_embeddings = context.chunk(2)
+ all_latent = [latent]
+ latent = latent.clone().detach()
+ for i in tqdm(range(num_inv_steps)):
+ t = ddim_scheduler.timesteps[len(ddim_scheduler.timesteps) - i - 1]
+ noise_pred = get_noise_pred_single(latent.to(torch.float32), t, cond_embeddings.to(torch.float32), pipeline.unet)
+ latent = next_step(noise_pred, t, latent, ddim_scheduler)
+ all_latent.append(latent)
+ return all_latent
+
+
+@torch.no_grad()
+def ddim_inversion(pipeline, ddim_scheduler, video_latent, num_inv_steps, prompt=""):
+ ddim_latents = ddim_loop(pipeline, ddim_scheduler, video_latent, num_inv_steps, prompt)
+ return ddim_latents
diff --git a/2D_Stage/webui.py b/2D_Stage/webui.py
new file mode 100644
index 0000000000000000000000000000000000000000..14e37c9a47a8c5a906407725a3a2f58f309bc3e7
--- /dev/null
+++ b/2D_Stage/webui.py
@@ -0,0 +1,323 @@
+import gradio as gr
+from PIL import Image
+import glob
+
+import io
+import argparse
+import inspect
+import os
+import random
+from typing import Dict, Optional, Tuple
+from omegaconf import OmegaConf
+import numpy as np
+
+import torch
+import torch.utils.checkpoint
+
+from accelerate.logging import get_logger
+from accelerate.utils import set_seed
+from diffusers import AutoencoderKL, DDIMScheduler
+from diffusers.utils import check_min_version
+from tqdm.auto import tqdm
+from transformers import CLIPTextModel, CLIPTokenizer, CLIPImageProcessor, CLIPVisionModelWithProjection
+from torchvision import transforms
+
+from tuneavideo.models.unet_mv2d_condition import UNetMV2DConditionModel
+from tuneavideo.models.unet_mv2d_ref import UNetMV2DRefModel
+from tuneavideo.models.PoseGuider import PoseGuider
+from tuneavideo.pipelines.pipeline_tuneavideo import TuneAVideoPipeline
+from tuneavideo.util import shifted_noise
+from einops import rearrange
+import PIL
+from PIL import Image
+from torchvision.utils import save_image
+import json
+import cv2
+
+import onnxruntime as rt
+from huggingface_hub.file_download import hf_hub_download
+from rm_anime_bg.cli import get_mask, SCALE
+
+from huggingface_hub import hf_hub_download, list_repo_files
+
+repo_id = "zjpshadow/CharacterGen"
+all_files = list_repo_files(repo_id, revision="main")
+
+for file in all_files:
+ if os.path.exists("../" + file):
+ continue
+ if file.startswith("2D_Stage"):
+ hf_hub_download(repo_id, file, local_dir="../")
+
+class rm_bg_api:
+
+ def __init__(self, force_cpu: Optional[bool] = True):
+ session_infer_path = hf_hub_download(
+ repo_id="skytnt/anime-seg", filename="isnetis.onnx",
+ )
+ providers: list[str] = ["CPUExecutionProvider"]
+ if not force_cpu and "CUDAExecutionProvider" in rt.get_available_providers():
+ providers = ["CUDAExecutionProvider"]
+
+ self.session_infer = rt.InferenceSession(
+ session_infer_path, providers=providers,
+ )
+
+ def remove_background(
+ self,
+ imgs: list[np.ndarray],
+ alpha_min: float,
+ alpha_max: float,
+ ) -> list:
+ process_imgs = []
+ for img in imgs:
+ # CHANGE to RGB
+ img = cv2.cvtColor(img, cv2.COLOR_RGBA2RGB)
+ mask = get_mask(self.session_infer, img)
+
+ mask[mask < alpha_min] = 0.0 # type: ignore
+ mask[mask > alpha_max] = 1.0 # type: ignore
+
+ img_after = (mask * img + SCALE * (1 - mask)).astype(np.uint8) # type: ignore
+ mask = (mask * SCALE).astype(np.uint8) # type: ignore
+ img_after = np.concatenate([img_after, mask], axis=2, dtype=np.uint8)
+ mask = mask.repeat(3, axis=2)
+ process_imgs.append(Image.fromarray(img_after))
+ return process_imgs
+
+check_min_version("0.24.0")
+
+logger = get_logger(__name__, log_level="INFO")
+
+def set_seed(seed):
+ random.seed(seed)
+ np.random.seed(seed)
+ torch.manual_seed(seed)
+ torch.cuda.manual_seed_all(seed)
+
+def get_bg_color(bg_color):
+ if bg_color == 'white':
+ bg_color = np.array([1., 1., 1.], dtype=np.float32)
+ elif bg_color == 'black':
+ bg_color = np.array([0., 0., 0.], dtype=np.float32)
+ elif bg_color == 'gray':
+ bg_color = np.array([0.5, 0.5, 0.5], dtype=np.float32)
+ elif bg_color == 'random':
+ bg_color = np.random.rand(3)
+ elif isinstance(bg_color, float):
+ bg_color = np.array([bg_color] * 3, dtype=np.float32)
+ else:
+ raise NotImplementedError
+ return bg_color
+
+def process_image(image, totensor):
+ if not image.mode == "RGBA":
+ image = image.convert("RGBA")
+
+ # Find non-transparent pixels
+ non_transparent = np.nonzero(np.array(image)[..., 3])
+ min_x, max_x = non_transparent[1].min(), non_transparent[1].max()
+ min_y, max_y = non_transparent[0].min(), non_transparent[0].max()
+ image = image.crop((min_x, min_y, max_x, max_y))
+
+ # paste to center
+ max_dim = max(image.width, image.height)
+ max_height = max_dim
+ max_width = int(max_dim / 3 * 2)
+ new_image = Image.new("RGBA", (max_width, max_height))
+ left = (max_width - image.width) // 2
+ top = (max_height - image.height) // 2
+ new_image.paste(image, (left, top))
+
+ image = new_image.resize((512, 768), resample=PIL.Image.BICUBIC)
+ image = np.array(image)
+ image = image.astype(np.float32) / 255.
+ assert image.shape[-1] == 4 # RGBA
+ alpha = image[..., 3:4]
+ bg_color = get_bg_color("gray")
+ image = image[..., :3] * alpha + bg_color * (1 - alpha)
+ # save image
+ # new_image = Image.fromarray((image * 255).astype(np.uint8))
+ # new_image.save("input.png")
+ return totensor(image)
+
+class Inference_API:
+
+ def __init__(self):
+ self.validation_pipeline = None
+
+ @torch.no_grad()
+ def inference(self, input_image, vae, feature_extractor, image_encoder, unet, ref_unet, tokenizer, text_encoder, pretrained_model_path, generator, validation, val_width, val_height, unet_condition_type,
+ pose_guider=None, use_noise=True, use_shifted_noise=False, noise_d=256, crop=False, seed=100, timestep=20):
+ set_seed(seed)
+ # Get the validation pipeline
+ if self.validation_pipeline is None:
+ noise_scheduler = DDIMScheduler.from_pretrained(pretrained_model_path, subfolder="scheduler")
+ if use_shifted_noise:
+ print(f"enable shifted noise for {val_height} to {noise_d}")
+ betas = shifted_noise(noise_scheduler.betas, image_d=val_height, noise_d=noise_d)
+ noise_scheduler.betas = betas
+ noise_scheduler.alphas = 1 - betas
+ noise_scheduler.alphas_cumprod = torch.cumprod(noise_scheduler.alphas, dim=0)
+ self.validation_pipeline = TuneAVideoPipeline(
+ vae=vae, text_encoder=text_encoder, tokenizer=tokenizer, unet=unet, ref_unet=ref_unet,feature_extractor=feature_extractor,image_encoder=image_encoder,
+ scheduler=noise_scheduler
+ )
+ self.validation_pipeline.enable_vae_slicing()
+ self.validation_pipeline.set_progress_bar_config(disable=True)
+
+ totensor = transforms.ToTensor()
+
+ metas = json.load(open("./material/pose.json", "r"))
+ cameras = []
+ pose_images = []
+ input_path = "./material"
+ for lm in metas:
+ cameras.append(torch.tensor(np.array(lm[0]).reshape(4, 4).transpose(1,0)[:3, :4]).reshape(-1))
+ if not crop:
+ pose_images.append(totensor(np.asarray(Image.open(os.path.join(input_path, lm[1])).resize(
+ (val_height, val_width), resample=PIL.Image.BICUBIC)).astype(np.float32) / 255.))
+ else:
+ pose_image = Image.open(os.path.join(input_path, lm[1]))
+ crop_area = (128, 0, 640, 768)
+ pose_images.append(totensor(np.array(pose_image.crop(crop_area)).astype(np.float32)) / 255.)
+ camera_matrixs = torch.stack(cameras).unsqueeze(0).to("cuda")
+ pose_imgs_in = torch.stack(pose_images).to("cuda")
+ prompts = "high quality, best quality"
+ prompt_ids = tokenizer(
+ prompts, max_length=tokenizer.model_max_length, padding="max_length", truncation=True,
+ return_tensors="pt"
+ ).input_ids[0]
+
+ # (B*Nv, 3, H, W)
+ B = 1
+ weight_dtype = torch.bfloat16
+ imgs_in = process_image(input_image, totensor)
+ imgs_in = rearrange(imgs_in.unsqueeze(0).unsqueeze(0), "B Nv C H W -> (B Nv) C H W")
+
+ with torch.autocast("cuda", dtype=weight_dtype):
+ imgs_in = imgs_in.to("cuda")
+ # B*Nv images
+ out = self.validation_pipeline(prompt=prompts, image=imgs_in.to(weight_dtype), generator=generator,
+ num_inference_steps=timestep,
+ camera_matrixs=camera_matrixs.to(weight_dtype), prompt_ids=prompt_ids,
+ height=val_height, width=val_width, unet_condition_type=unet_condition_type,
+ pose_guider=None, pose_image=pose_imgs_in, use_noise=use_noise,
+ use_shifted_noise=use_shifted_noise, **validation).videos
+ out = rearrange(out, "B C f H W -> (B f) C H W", f=validation.video_length)
+
+ image_outputs = []
+ for bs in range(4):
+ img_buf = io.BytesIO()
+ save_image(out[bs], img_buf, format='PNG')
+ img_buf.seek(0)
+ img = Image.open(img_buf)
+ image_outputs.append(img)
+ torch.cuda.empty_cache()
+ return image_outputs
+
+@torch.no_grad()
+def main(
+ pretrained_model_path: str,
+ image_encoder_path: str,
+ ckpt_dir: str,
+ validation: Dict,
+ local_crossattn: bool = True,
+ unet_from_pretrained_kwargs=None,
+ unet_condition_type=None,
+ use_pose_guider=False,
+ use_noise=True,
+ use_shifted_noise=False,
+ noise_d=256
+):
+ *_, config = inspect.getargvalues(inspect.currentframe())
+
+ device = "cuda"
+
+ tokenizer = CLIPTokenizer.from_pretrained(pretrained_model_path, subfolder="tokenizer")
+ text_encoder = CLIPTextModel.from_pretrained(pretrained_model_path, subfolder="text_encoder")
+ image_encoder = CLIPVisionModelWithProjection.from_pretrained(image_encoder_path)
+ feature_extractor = CLIPImageProcessor()
+ vae = AutoencoderKL.from_pretrained(pretrained_model_path, subfolder="vae")
+ unet = UNetMV2DConditionModel.from_pretrained_2d(pretrained_model_path, subfolder="unet", local_crossattn=local_crossattn, **unet_from_pretrained_kwargs)
+ ref_unet = UNetMV2DRefModel.from_pretrained_2d(pretrained_model_path, subfolder="unet", local_crossattn=local_crossattn, **unet_from_pretrained_kwargs)
+ if use_pose_guider:
+ pose_guider = PoseGuider(noise_latent_channels=4).to("cuda")
+ else:
+ pose_guider = None
+
+ unet_params = torch.load(os.path.join(ckpt_dir, "pytorch_model.bin"), map_location="cpu")
+ if use_pose_guider:
+ pose_guider_params = torch.load(os.path.join(ckpt_dir, "pytorch_model_1.bin"), map_location="cpu")
+ ref_unet_params = torch.load(os.path.join(ckpt_dir, "pytorch_model_2.bin"), map_location="cpu")
+ pose_guider.load_state_dict(pose_guider_params)
+ else:
+ ref_unet_params = torch.load(os.path.join(ckpt_dir, "pytorch_model_1.bin"), map_location="cpu")
+ unet.load_state_dict(unet_params)
+ ref_unet.load_state_dict(ref_unet_params)
+
+ weight_dtype = torch.float16
+
+ text_encoder.to(device, dtype=weight_dtype)
+ image_encoder.to(device, dtype=weight_dtype)
+ vae.to(device, dtype=weight_dtype)
+ ref_unet.to(device, dtype=weight_dtype)
+ unet.to(device, dtype=weight_dtype)
+
+ vae.requires_grad_(False)
+ unet.requires_grad_(False)
+ ref_unet.requires_grad_(False)
+
+ generator = torch.Generator(device="cuda")
+ inferapi = Inference_API()
+ remove_api = rm_bg_api()
+ def gen4views(image, width, height, seed, timestep, remove_bg):
+ if remove_bg:
+ image = remove_api.remove_background(
+ imgs=[np.array(image)],
+ alpha_min=0.1,
+ alpha_max=0.9,
+ )[0]
+ return inferapi.inference(
+ image, vae, feature_extractor, image_encoder, unet, ref_unet, tokenizer, text_encoder, pretrained_model_path,
+ generator, validation, width, height, unet_condition_type,
+ pose_guider=pose_guider, use_noise=use_noise, use_shifted_noise=use_shifted_noise, noise_d=noise_d,
+ crop=True, seed=seed, timestep=timestep
+ )
+
+ with gr.Blocks() as demo:
+ gr.Markdown("# [SIGGRAPH'24] CharacterGen: Efficient 3D Character Generation from Single Images with Multi-View Pose Calibration")
+ gr.Markdown("# 2D Stage: One Image to Four Views of Character Image")
+ gr.Markdown("**Please Upload the Image without background, and the pictures uploaded should preferably be full-body frontal photos.**")
+ with gr.Row():
+ with gr.Column():
+ img_input = gr.Image(type="pil", label="Upload Image(without background)", image_mode="RGBA", width=768, height=512)
+ gr.Examples(
+ label="Example Images",
+ examples=glob.glob("./material/examples/*.png"),
+ inputs=[img_input]
+ )
+ with gr.Row():
+ width_input = gr.Number(label="Width", value=512)
+ height_input = gr.Number(label="Height", value=768)
+ seed_input = gr.Number(label="Seed", value=2333)
+ remove_bg = gr.Checkbox(label="Remove Background (with algorithm)", value=False)
+ timestep = gr.Slider(minimum=10, maximum=70, step=1, value=40, label="Timesteps")
+ with gr.Column():
+ button = gr.Button(value="Generate")
+ output = gr.Gallery(label="4 views of Character Image")
+
+ button.click(
+ fn=gen4views,
+ inputs=[img_input, width_input, height_input, seed_input, timestep, remove_bg],
+ outputs=[output]
+ )
+
+ demo.launch()
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--config", type=str, default="./configs/infer.yaml")
+ args = parser.parse_args()
+
+ main(**OmegaConf.load(args.config))
\ No newline at end of file
diff --git a/3D_Stage/__pycache__/refine.cpython-310.pyc b/3D_Stage/__pycache__/refine.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b8658b0bc98466ca048fca84191dc39eddffcf52
Binary files /dev/null and b/3D_Stage/__pycache__/refine.cpython-310.pyc differ
diff --git a/3D_Stage/configs/infer.yaml b/3D_Stage/configs/infer.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c349dbdffe7355daef1209311a7efda83be54b79
--- /dev/null
+++ b/3D_Stage/configs/infer.yaml
@@ -0,0 +1,104 @@
+system_cls: lrm.systems.multiview_lrm.MultiviewLRM
+data:
+ cond_width: 504
+ cond_height: 504
+
+system:
+ weights: ./models/lrm.ckpt
+
+ weights_ignore_modules:
+ - decoder.heads.density
+
+ check_train_every_n_steps: 100
+
+ camera_embedder_cls: lrm.models.camera.LinearCameraEmbedder
+ camera_embedder:
+ in_channels: 16
+ out_channels: 768
+ conditions:
+ - c2w_cond
+
+ # image tokenizer transforms input images to tokens
+ image_tokenizer_cls: lrm.models.tokenizers.image.DINOV2SingleImageTokenizer
+ image_tokenizer:
+ pretrained_model_name_or_path: "./models/base"
+ freeze_backbone_params: false
+ enable_memory_efficient_attention: true
+ enable_gradient_checkpointing: true
+ # camera modulation to the DINO transformer layers
+ modulation: true
+ modulation_zero_init: true
+ modulation_single_layer: true
+ modulation_cond_dim: ${system.camera_embedder.out_channels}
+
+ # tokenizer gives a tokenized representation for the 3D scene
+ # triplane tokens in this case
+ tokenizer_cls: lrm.models.tokenizers.triplane.TriplaneLearnablePositionalEmbedding
+ tokenizer:
+ plane_size: 32
+ num_channels: 512
+
+ # backbone network is a transformer that takes scene tokens (potentially with conditional image tokens)
+ # and outputs scene tokens of the same size
+ backbone_cls: lrm.models.transformers.transformer_1d.Transformer1D
+ backbone:
+ in_channels: ${system.tokenizer.num_channels}
+ num_attention_heads: 16
+ attention_head_dim: 64
+ num_layers: 12
+ cross_attention_dim: 768 # hard-code, =DINO feature dim
+ # camera modulation to the transformer layers
+ # if not needed, set norm_type=layer_norm and do not specify cond_dim_ada_norm_continuous
+ norm_type: "layer_norm"
+ enable_memory_efficient_attention: true
+ gradient_checkpointing: true
+
+ # post processor takes scene tokens and outputs the final scene parameters that will be used for rendering
+ # in this case, triplanes are upsampled and the features are condensed
+ post_processor_cls: lrm.models.networks.TriplaneUpsampleNetwork
+ post_processor:
+ in_channels: 512
+ out_channels: 80
+
+ renderer_cls: lrm.models.renderers.triplane_dmtet.TriplaneDMTetRenderer
+ renderer:
+ radius: 0.6 # slightly larger than 0.5
+ feature_reduction: concat
+ sdf_bias: -2.
+ tet_dir: "./load/tets/"
+ isosurface_resolution: 256
+ enable_isosurface_grid_deformation: false
+ sdf_activation: negative
+
+ decoder_cls: lrm.models.networks.MultiHeadMLP
+ decoder:
+ in_channels: 240 # 3 * 80
+ n_neurons: 64
+ n_hidden_layers_share: 8
+ heads:
+ - name: sdf
+ out_channels: 1
+ n_hidden_layers: 1
+ output_activation: null
+ - name: features
+ out_channels: 3
+ n_hidden_layers: 1
+ output_activation: null # activate in material
+ activation: silu
+ chunk_mode: deferred
+ chunk_size: 131072
+
+ exporter:
+ fmt: "obj"
+ #visual: "vertex"
+ visual: "uv"
+ save_uv: True
+ save_texture: True
+ uv_unwrap_method: "open3d"
+ output_path: "./outputs"
+
+ material_cls: lrm.models.materials.no_material.NoMaterial
+
+ background_cls: lrm.models.background.solid_color_background.SolidColorBackground
+ background:
+ color: [0.5, 0.5, 0.5]
\ No newline at end of file
diff --git a/3D_Stage/load/tets/128_tets.npz b/3D_Stage/load/tets/128_tets.npz
new file mode 100644
index 0000000000000000000000000000000000000000..ce7ae6f4200fe001c3f3a307beb365ee820d2ac7
--- /dev/null
+++ b/3D_Stage/load/tets/128_tets.npz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:daa82da88746777043efe2182a4ff01843dbe4400cb34f53c8e2f5da8d35569d
+size 7565405
diff --git a/3D_Stage/load/tets/256_tets.npz b/3D_Stage/load/tets/256_tets.npz
new file mode 100644
index 0000000000000000000000000000000000000000..10a7a048cb7a1995e889406963802f68aef7feba
--- /dev/null
+++ b/3D_Stage/load/tets/256_tets.npz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5822cae907aba088af41fed74461105f8864c05d58e557c82ca40561497db4b3
+size 63136604
diff --git a/3D_Stage/load/tets/32_tets.npz b/3D_Stage/load/tets/32_tets.npz
new file mode 100644
index 0000000000000000000000000000000000000000..276c059d752f7d7e1b8e45cbb80b5702f25b79da
--- /dev/null
+++ b/3D_Stage/load/tets/32_tets.npz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d76349b760e99afd4ecbbfb20e421d134385a87867dca34ec21093e8fe4b2b72
+size 124137
diff --git a/3D_Stage/load/tets/64_tets.npz b/3D_Stage/load/tets/64_tets.npz
new file mode 100644
index 0000000000000000000000000000000000000000..4111368e5d06e91f11b73c1fa85e4c48f2008519
--- /dev/null
+++ b/3D_Stage/load/tets/64_tets.npz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e5dc0f19e87c275b54b78023c931b264bb34a8ea9804f82b991dde7fa99fbaee
+size 957742
diff --git a/3D_Stage/load/tets/generate_tets.py b/3D_Stage/load/tets/generate_tets.py
new file mode 100644
index 0000000000000000000000000000000000000000..424d852d25105fae2d03d6a0d269bc7c2797c6bd
--- /dev/null
+++ b/3D_Stage/load/tets/generate_tets.py
@@ -0,0 +1,58 @@
+# Copyright (c) 2020-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+#
+# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
+# property and proprietary rights in and to this material, related
+# documentation and any modifications thereto. Any use, reproduction,
+# disclosure or distribution of this material and related documentation
+# without an express license agreement from NVIDIA CORPORATION or
+# its affiliates is strictly prohibited.
+
+import os
+
+import numpy as np
+
+"""
+This code segment shows how to use Quartet: https://github.com/crawforddoran/quartet,
+to generate a tet grid
+1) Download, compile and run Quartet as described in the link above. Example usage `quartet meshes/cube.obj 0.5 cube_5.tet`
+2) Run the function below to generate a file `cube_32_tet.tet`
+"""
+
+
+def generate_tetrahedron_grid_file(res=32, root=".."):
+ frac = 1.0 / res
+ command = f"cd {root}; ./quartet meshes/cube.obj {frac} meshes/cube_{res}_tet.tet -s meshes/cube_boundary_{res}.obj"
+ os.system(command)
+
+
+"""
+This code segment shows how to convert from a quartet .tet file to compressed npz file
+"""
+
+
+def convert_from_quartet_to_npz(quartetfile="cube_32_tet.tet", npzfile="32_tets"):
+ file1 = open(quartetfile, "r")
+ header = file1.readline()
+ numvertices = int(header.split(" ")[1])
+ numtets = int(header.split(" ")[2])
+ print(numvertices, numtets)
+
+ # load vertices
+ vertices = np.loadtxt(quartetfile, skiprows=1, max_rows=numvertices)
+ print(vertices.shape)
+
+ # load indices
+ indices = np.loadtxt(
+ quartetfile, dtype=int, skiprows=1 + numvertices, max_rows=numtets
+ )
+ print(indices.shape)
+
+ np.savez_compressed(npzfile, vertices=vertices, indices=indices)
+
+
+root = "/home/gyc/quartet"
+for res in [300, 350, 400]:
+ generate_tetrahedron_grid_file(res, root)
+ convert_from_quartet_to_npz(
+ os.path.join(root, f"meshes/cube_{res}_tet.tet"), npzfile=f"{res}_tets"
+ )
diff --git a/3D_Stage/lrm/__init__.py b/3D_Stage/lrm/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..69f5951a4991d24895d3eba9c7f285cf7ec2e3e6
--- /dev/null
+++ b/3D_Stage/lrm/__init__.py
@@ -0,0 +1,29 @@
+import importlib
+
+
+def find(cls_string):
+ module_string = ".".join(cls_string.split(".")[:-1])
+ cls_name = cls_string.split(".")[-1]
+ module = importlib.import_module(module_string, package=None)
+ cls = getattr(module, cls_name)
+ return cls
+
+
+### grammar sugar for logging utilities ###
+import logging
+
+logger = logging.getLogger("pytorch_lightning")
+
+from pytorch_lightning.utilities.rank_zero import (
+ rank_zero_debug,
+ rank_zero_info,
+ rank_zero_only,
+)
+
+debug = rank_zero_debug
+info = rank_zero_info
+
+
+@rank_zero_only
+def warn(*args, **kwargs):
+ logger.warn(*args, **kwargs)
diff --git a/3D_Stage/lrm/__pycache__/__init__.cpython-310.pyc b/3D_Stage/lrm/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..11a2cb7489006db07dc65efdfcac86f035ecd3da
Binary files /dev/null and b/3D_Stage/lrm/__pycache__/__init__.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/__init__.py b/3D_Stage/lrm/models/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/3D_Stage/lrm/models/__pycache__/__init__.cpython-310.pyc b/3D_Stage/lrm/models/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f17682021c33d5a7b0790333373117d79811268c
Binary files /dev/null and b/3D_Stage/lrm/models/__pycache__/__init__.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/__pycache__/camera.cpython-310.pyc b/3D_Stage/lrm/models/__pycache__/camera.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a023cc541ad77ea00277d3ba9105e94b05b4a34d
Binary files /dev/null and b/3D_Stage/lrm/models/__pycache__/camera.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/__pycache__/isosurface.cpython-310.pyc b/3D_Stage/lrm/models/__pycache__/isosurface.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cf4080fff569831451ff08c86f3dc92372614a0a
Binary files /dev/null and b/3D_Stage/lrm/models/__pycache__/isosurface.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/__pycache__/lpips.cpython-310.pyc b/3D_Stage/lrm/models/__pycache__/lpips.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..fae7a4a8710c0c3109b076c56d2f097dfb11cc4f
Binary files /dev/null and b/3D_Stage/lrm/models/__pycache__/lpips.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/__pycache__/mesh.cpython-310.pyc b/3D_Stage/lrm/models/__pycache__/mesh.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..62fca6b18e4f05b41ea54945792cf4ddadb9af5c
Binary files /dev/null and b/3D_Stage/lrm/models/__pycache__/mesh.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/__pycache__/networks.cpython-310.pyc b/3D_Stage/lrm/models/__pycache__/networks.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7ab189e75f751f9b5be165b1e990b350bdfe2156
Binary files /dev/null and b/3D_Stage/lrm/models/__pycache__/networks.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/background/__init__.py b/3D_Stage/lrm/models/background/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/3D_Stage/lrm/models/background/__pycache__/__init__.cpython-310.pyc b/3D_Stage/lrm/models/background/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..972d0f350f764abc73839b76bdf638c24a801936
Binary files /dev/null and b/3D_Stage/lrm/models/background/__pycache__/__init__.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/background/__pycache__/base.cpython-310.pyc b/3D_Stage/lrm/models/background/__pycache__/base.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..bf693f0ca6d3a7f5f1c763c3259294b19c979b61
Binary files /dev/null and b/3D_Stage/lrm/models/background/__pycache__/base.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/background/__pycache__/solid_color_background.cpython-310.pyc b/3D_Stage/lrm/models/background/__pycache__/solid_color_background.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..34fffa5a35d42d5c16a01ad70beb972a1600d74d
Binary files /dev/null and b/3D_Stage/lrm/models/background/__pycache__/solid_color_background.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/background/base.py b/3D_Stage/lrm/models/background/base.py
new file mode 100644
index 0000000000000000000000000000000000000000..3900de842573a60b6343f4590229aacdd3e0ecbb
--- /dev/null
+++ b/3D_Stage/lrm/models/background/base.py
@@ -0,0 +1,24 @@
+import random
+from dataclasses import dataclass, field
+
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+
+import lrm
+from ...utils.base import BaseModule
+from ...utils.typing import *
+
+
+class BaseBackground(BaseModule):
+ @dataclass
+ class Config(BaseModule.Config):
+ pass
+
+ cfg: Config
+
+ def configure(self):
+ pass
+
+ def forward(self, dirs: Float[Tensor, "B H W 3"]) -> Float[Tensor, "B H W Nc"]:
+ raise NotImplementedError
diff --git a/3D_Stage/lrm/models/background/solid_color_background.py b/3D_Stage/lrm/models/background/solid_color_background.py
new file mode 100644
index 0000000000000000000000000000000000000000..8fad75512bcce180ae1c0c45830b696460bb098d
--- /dev/null
+++ b/3D_Stage/lrm/models/background/solid_color_background.py
@@ -0,0 +1,58 @@
+import random
+from dataclasses import dataclass, field
+
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+
+import lrm
+from .base import BaseBackground
+from ...utils.typing import *
+
+
+class SolidColorBackground(BaseBackground):
+ @dataclass
+ class Config(BaseBackground.Config):
+ n_output_dims: int = 3
+ color: Tuple = (1.0, 1.0, 1.0)
+ learned: bool = False
+ random_aug: bool = False
+ random_aug_prob: float = 0.5
+
+ cfg: Config
+
+ def configure(self) -> None:
+ self.env_color: Float[Tensor, "Nc"]
+ if self.cfg.learned:
+ self.env_color = nn.Parameter(
+ torch.as_tensor(self.cfg.color, dtype=torch.float32)
+ )
+ else:
+ self.register_buffer(
+ "env_color", torch.as_tensor(self.cfg.color, dtype=torch.float32)
+ )
+
+ def forward(
+ self,
+ dirs: Float[Tensor, "B H W Nc"],
+ color_spec: Optional[Float[Tensor, "Nc"]] = None,
+ ) -> Float[Tensor, "B H W Nc"]:
+ color = torch.ones(*dirs.shape[:-1], self.cfg.n_output_dims).to(dirs) * (
+ color_spec if color_spec is not None else self.env_color
+ )
+ if (
+ self.training
+ and self.cfg.random_aug
+ and random.random() < self.cfg.random_aug_prob
+ ):
+ # use random background color with probability random_aug_prob
+ # color = color * 0 + (
+ # torch.ones(*dirs.shape[:-1], self.cfg.n_output_dims).to(dirs) *
+ # torch.rand(self.cfg.n_output_dims).to(dirs)
+ # )
+ color = color * 0 + ( # prevent checking for unused parameters in DDP
+ torch.rand(dirs.shape[0], 1, 1, self.cfg.n_output_dims)
+ .to(dirs)
+ .expand(*dirs.shape[:-1], -1)
+ )
+ return color
diff --git a/3D_Stage/lrm/models/camera.py b/3D_Stage/lrm/models/camera.py
new file mode 100644
index 0000000000000000000000000000000000000000..62461c3aadf73d1cd3f138eda5cd494ffe48d40a
--- /dev/null
+++ b/3D_Stage/lrm/models/camera.py
@@ -0,0 +1,33 @@
+from dataclasses import dataclass, field
+
+import torch
+import torch.nn as nn
+
+from ..utils.base import BaseModule
+from ..utils.typing import *
+
+
+class LinearCameraEmbedder(BaseModule):
+ @dataclass
+ class Config(BaseModule.Config):
+ in_channels: int = 0
+ out_channels: int = 0
+ conditions: List[str] = field(default_factory=list)
+
+ cfg: Config
+
+ def configure(self) -> None:
+ super().configure()
+ self.linear = nn.Linear(self.cfg.in_channels, self.cfg.out_channels)
+
+ def forward(self, **kwargs):
+ cond_tensors = []
+ for cond_name in self.cfg.conditions:
+ assert cond_name in kwargs
+ cond = kwargs[cond_name]
+ # cond in shape (B, Nv, ...)
+ cond_tensors.append(cond.view(*cond.shape[:2], -1))
+ cond_tensor = torch.cat(cond_tensors, dim=-1)
+ assert cond_tensor.shape[-1] == self.cfg.in_channels
+ embedding = self.linear(cond_tensor)
+ return embedding
diff --git a/3D_Stage/lrm/models/exporters/__init__.py b/3D_Stage/lrm/models/exporters/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/3D_Stage/lrm/models/exporters/__pycache__/__init__.cpython-310.pyc b/3D_Stage/lrm/models/exporters/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f56d6beb9f10a09eb9a46483f19e9d041482b4db
Binary files /dev/null and b/3D_Stage/lrm/models/exporters/__pycache__/__init__.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/exporters/__pycache__/base.cpython-310.pyc b/3D_Stage/lrm/models/exporters/__pycache__/base.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..66c8d8fa73cb06a51dcf2f418f0cdddad683f076
Binary files /dev/null and b/3D_Stage/lrm/models/exporters/__pycache__/base.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/exporters/__pycache__/mesh_exporter.cpython-310.pyc b/3D_Stage/lrm/models/exporters/__pycache__/mesh_exporter.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..daac7ce918fed706c94c7ecb45177fb9b627a929
Binary files /dev/null and b/3D_Stage/lrm/models/exporters/__pycache__/mesh_exporter.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/exporters/base.py b/3D_Stage/lrm/models/exporters/base.py
new file mode 100644
index 0000000000000000000000000000000000000000..d3779ff65a1839ce7cba056d24159991743f6b89
--- /dev/null
+++ b/3D_Stage/lrm/models/exporters/base.py
@@ -0,0 +1,33 @@
+from dataclasses import dataclass
+
+import lrm
+from ..renderers.base import BaseRenderer
+from ...utils.base import BaseObject
+from ...utils.typing import *
+
+
+@dataclass
+class ExporterOutput:
+ save_name: str
+ save_type: str
+ params: Dict[str, Any]
+
+
+class Exporter(BaseObject):
+ @dataclass
+ class Config(BaseObject.Config):
+ save_video: bool = False
+
+ cfg: Config
+
+ def configure(self, renderer: BaseRenderer) -> None:
+ self.renderer = renderer
+
+ def __call__(self, *args, **kwargs) -> List[ExporterOutput]:
+ raise NotImplementedError
+
+
+class DummyExporter(Exporter):
+ def __call__(self, *args, **kwargs) -> List[ExporterOutput]:
+ # DummyExporter does not export anything
+ return []
diff --git a/3D_Stage/lrm/models/exporters/mesh_exporter.py b/3D_Stage/lrm/models/exporters/mesh_exporter.py
new file mode 100644
index 0000000000000000000000000000000000000000..236fa48aa2e067f67b1df77b8b9963312b042a25
--- /dev/null
+++ b/3D_Stage/lrm/models/exporters/mesh_exporter.py
@@ -0,0 +1,263 @@
+from dataclasses import dataclass, field
+import tempfile
+import os
+
+import cv2
+import numpy as np
+import torch
+
+import lrm
+from ..renderers.base import BaseRenderer
+from .base import Exporter, ExporterOutput
+from ..mesh import Mesh
+from ...utils.rasterize import NVDiffRasterizerContext
+from ...utils.typing import *
+from ...utils.misc import time_recorder as tr, time_recorder_enabled
+
+
+def uv_padding_cpu(image, hole_mask, padding):
+ uv_padding_size = padding
+ inpaint_image = (
+ cv2.inpaint(
+ (image.detach().cpu().numpy() * 255).astype(np.uint8),
+ (hole_mask.detach().cpu().numpy() * 255).astype(np.uint8),
+ uv_padding_size,
+ cv2.INPAINT_TELEA,
+ )
+ / 255.0
+ )
+ return torch.from_numpy(inpaint_image).to(image)
+
+
+def uv_padding_cvc(image, hole_mask, padding):
+ import cvcuda
+
+ torch_to_cvc = lambda x, layout: cvcuda.as_tensor(x, layout)
+ cvc_to_torch = lambda x: torch.as_tensor(x.cuda())
+
+ uv_padding_size = padding
+ image_cvc = torch_to_cvc((image.detach() * 255).to(torch.uint8), "HWC")
+ hole_mask_cvc = torch_to_cvc((hole_mask.detach() * 255).to(torch.uint8), "HW")
+ inpaint_image = cvcuda.inpaint(image_cvc, hole_mask_cvc, uv_padding_size)
+ inpaint_image = cvc_to_torch(inpaint_image) / 255.0
+ return inpaint_image.to(image)
+
+
+def uv_padding(image, hole_mask, padding):
+ try:
+ inpaint_image = uv_padding_cvc(image, hole_mask, padding)
+ except:
+ lrm.info(f"CVCUDA not available, fallback to CPU UV padding.")
+ inpaint_image = uv_padding_cpu(image, hole_mask, padding)
+ return inpaint_image
+
+
+class MeshExporter(Exporter):
+ @dataclass
+ class Config(Exporter.Config):
+ fmt: str = "obj" # in ['obj', 'glb']
+ visual: str = "uv" # in ['uv', 'vertex']
+ save_name: str = "model"
+ save_normal: bool = False
+ save_uv: bool = True
+ save_texture: bool = True
+ texture_size: int = 1024
+ texture_format: str = "jpg"
+ uv_unwrap_method: str = "xatlas"
+ xatlas_chart_options: dict = field(default_factory=dict)
+ xatlas_pack_options: dict = field(default_factory=dict)
+ smartuv_options: dict = field(default_factory=dict)
+ uv_padding_size: int = 2
+ subdivide: bool = False
+ post_process: bool = False
+ post_process_options: dict = field(default_factory=dict)
+ context_type: str = "gl"
+ output_path: str = "outputs"
+
+ cfg: Config
+
+ def configure(self, renderer: BaseRenderer) -> None:
+ super().configure(renderer)
+ self.ctx = NVDiffRasterizerContext(self.cfg.context_type, self.device)
+ if self.cfg.fmt == "obj-mtl":
+ lrm.warn(
+ f"fmt=obj-mtl is deprecated, please us fmt=obj and visual=uv instead."
+ )
+ self.cfg.fmt = "obj"
+ self.cfg.visual = "uv"
+
+ if self.cfg.fmt == "glb":
+ assert self.cfg.visual in [
+ "vertex",
+ "uv-blender",
+ ], "GLB format only supports visual=vertex and visual=uv-blender!"
+
+ def get_geometry(self, scene_code: torch.Tensor) -> Mesh:
+ tr.start("Surface extraction")
+ mesh: Mesh = self.renderer.isosurface(scene_code)
+ tr.end("Surface extraction")
+ return mesh
+
+ def get_texture_maps(
+ self, scene_code: torch.Tensor, mesh: Mesh
+ ) -> Dict[str, torch.Tensor]:
+ assert mesh.has_uv
+ # clip space transform
+ uv_clip = mesh.v_tex * 2.0 - 1.0
+ # pad to four component coordinate
+ uv_clip4 = torch.cat(
+ (
+ uv_clip,
+ torch.zeros_like(uv_clip[..., 0:1]),
+ torch.ones_like(uv_clip[..., 0:1]),
+ ),
+ dim=-1,
+ )
+ # rasterize
+ rast, _ = self.ctx.rasterize_one(
+ uv_clip4,
+ mesh.t_tex_idx,
+ (self.cfg.texture_size, self.cfg.texture_size),
+ )
+
+ hole_mask = ~(rast[:, :, 3] > 0)
+
+ # Interpolate world space position
+ gb_pos, _ = self.ctx.interpolate_one(
+ mesh.v_pos, rast[None, ...], mesh.t_pos_idx
+ )
+ gb_pos = gb_pos[0]
+
+ # Sample out textures from MLP
+ tr.start("Query color")
+ geo_out = self.renderer.query(scene_code, points=gb_pos)
+ tr.end("Query color")
+ mat_out = self.renderer.material.export(points=gb_pos, **geo_out)
+
+ textures = {}
+ tr.start("UV padding")
+ if "albedo" in mat_out:
+ textures["map_Kd"] = uv_padding(
+ mat_out["albedo"], hole_mask, self.cfg.uv_padding_size
+ )
+ else:
+ lrm.warn(
+ "save_texture is True but no albedo texture found, using default white texture"
+ )
+ if "metallic" in mat_out:
+ textures["map_Pm"] = uv_padding(
+ mat_out["metallic"], hole_mask, self.cfg.uv_padding_size
+ )
+ if "roughness" in mat_out:
+ textures["map_Pr"] = uv_padding(
+ mat_out["roughness"], hole_mask, self.cfg.uv_padding_size
+ )
+ if "bump" in mat_out:
+ textures["map_Bump"] = uv_padding(
+ mat_out["bump"], hole_mask, self.cfg.uv_padding_size
+ )
+ tr.end("UV padding")
+ return textures
+
+ def __call__(self, names, scene_codes) -> List[ExporterOutput]:
+ outputs = []
+ for name, scene_code in zip(names, scene_codes):
+ mesh = self.get_geometry(scene_code)
+ if self.cfg.post_process:
+ tr.start("Mesh post-processing")
+ mesh = mesh.post_process(self.cfg.post_process_options)
+ tr.end("Mesh post-processing")
+ if self.cfg.visual == "uv":
+ output = self.export_model_with_mtl(
+ name, self.cfg.fmt, scene_code, mesh
+ )
+ elif self.cfg.visual == "vertex":
+ output = self.export_model(name, self.cfg.fmt, scene_code, mesh)
+ elif self.cfg.visual == "uv-blender":
+ output = self.export_model_blender(name, self.cfg.fmt, scene_code, mesh)
+ else:
+ raise ValueError(f"Unsupported visual format: {self.cfg.visual}")
+ outputs.append(output)
+ return outputs
+
+ def export_model_with_mtl(
+ self, name: str, fmt: str, scene_code: torch.Tensor, mesh: Mesh
+ ) -> ExporterOutput:
+ params = {
+ "mesh": mesh,
+ "save_mat": True,
+ "save_normal": self.cfg.save_normal,
+ "save_uv": self.cfg.save_uv,
+ "save_vertex_color": False,
+ "map_Kd": None, # Base Color
+ "map_Ks": None, # Specular
+ "map_Bump": None, # Normal
+ # ref: https://en.wikipedia.org/wiki/Wavefront_.obj_file#Physically-based_Rendering
+ "map_Pm": None, # Metallic
+ "map_Pr": None, # Roughness
+ "map_format": self.cfg.texture_format,
+ }
+
+ if self.cfg.save_uv:
+ mesh.unwrap_uv(
+ self.cfg.uv_unwrap_method,
+ self.cfg.xatlas_chart_options,
+ self.cfg.xatlas_pack_options,
+ self.cfg.smartuv_options,
+ )
+
+ if self.cfg.save_texture:
+ lrm.info("Exporting textures ...")
+ assert self.cfg.save_uv, "save_uv must be True when save_texture is True"
+
+ with time_recorder_enabled():
+ textures = self.get_texture_maps(scene_code, mesh)
+ params.update(textures)
+ os.makedirs(self.cfg.output_path, exist_ok=True)
+ np.savez(f"{self.cfg.output_path}/tex_info.npz", v_tex=mesh.v_tex.cpu().numpy(), t_tex_idx=mesh.t_tex_idx.cpu().numpy())
+ return ExporterOutput(
+ save_name=f"{self.cfg.save_name}-{name}.{fmt}", save_type=fmt, params=params
+ )
+
+ def export_model(
+ self, name: str, fmt: str, scene_code, mesh: Mesh
+ ) -> ExporterOutput:
+ params = {
+ "mesh": mesh,
+ "save_mat": False,
+ "save_normal": self.cfg.save_normal,
+ "save_uv": self.cfg.save_uv,
+ "save_vertex_color": False,
+ "map_Kd": None, # Base Color
+ "map_Ks": None, # Specular
+ "map_Bump": None, # Normal
+ # ref: https://en.wikipedia.org/wiki/Wavefront_.obj_file#Physically-based_Rendering
+ "map_Pm": None, # Metallic
+ "map_Pr": None, # Roughness
+ "map_format": self.cfg.texture_format,
+ }
+
+ if self.cfg.save_uv:
+ mesh.unwrap_uv(
+ self.cfg.uv_unwrap_method,
+ self.cfg.xatlas_chart_options,
+ self.cfg.xatlas_pack_options,
+ self.cfg.smartuv_options,
+ )
+
+ if self.cfg.save_texture:
+ lrm.info("Exporting textures ...")
+ geo_out = self.renderer.query(scene_code, points=mesh.v_pos)
+ mat_out = self.renderer.material.export(points=mesh.v_pos, **geo_out)
+
+ if "albedo" in mat_out:
+ mesh.set_vertex_color(mat_out["albedo"])
+ params["save_vertex_color"] = True
+ else:
+ lrm.warn(
+ "save_texture is True but no albedo texture found, not saving vertex color"
+ )
+
+ return ExporterOutput(
+ save_name=f"{self.cfg.save_name}-{name}.{fmt}", save_type=fmt, params=params
+ )
diff --git a/3D_Stage/lrm/models/isosurface.py b/3D_Stage/lrm/models/isosurface.py
new file mode 100644
index 0000000000000000000000000000000000000000..0ece3ac42cc573d057460ddcea4a61d0b9281c27
--- /dev/null
+++ b/3D_Stage/lrm/models/isosurface.py
@@ -0,0 +1,272 @@
+import numpy as np
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+
+import lrm
+from ..models.mesh import Mesh
+from ..utils.typing import *
+from ..utils.ops import scale_tensor
+
+
+class IsosurfaceHelper(nn.Module):
+ points_range: Tuple[float, float] = (0, 1)
+
+ @property
+ def grid_vertices(self) -> Float[Tensor, "N 3"]:
+ raise NotImplementedError
+
+
+class MarchingCubeCPUHelper(IsosurfaceHelper):
+ def __init__(self, resolution: int) -> None:
+ super().__init__()
+ self.resolution = resolution
+ import mcubes
+
+ self.mc_func: Callable = mcubes.marching_cubes
+ self._grid_vertices: Optional[Float[Tensor, "N3 3"]] = None
+ self._dummy: Float[Tensor, "..."]
+ self.register_buffer(
+ "_dummy", torch.zeros(0, dtype=torch.float32), persistent=False
+ )
+
+ @property
+ def grid_vertices(self) -> Float[Tensor, "N3 3"]:
+ if self._grid_vertices is None:
+ # keep the vertices on CPU so that we can support very large resolution
+ x, y, z = (
+ torch.linspace(*self.points_range, self.resolution),
+ torch.linspace(*self.points_range, self.resolution),
+ torch.linspace(*self.points_range, self.resolution),
+ )
+ x, y, z = torch.meshgrid(x, y, z, indexing="ij")
+ verts = torch.cat(
+ [x.reshape(-1, 1), y.reshape(-1, 1), z.reshape(-1, 1)], dim=-1
+ ).reshape(-1, 3)
+ self._grid_vertices = verts
+ return self._grid_vertices
+
+ def forward(
+ self,
+ level: Float[Tensor, "N3 1"],
+ deformation: Optional[Float[Tensor, "N3 3"]] = None,
+ ) -> Mesh:
+ if deformation is not None:
+ lrm.warn(
+ f"{self.__class__.__name__} does not support deformation. Ignoring."
+ )
+ level = -level.view(self.resolution, self.resolution, self.resolution)
+ print(level.shape, level.min(), level.max())
+ v_pos, t_pos_idx = self.mc_func(
+ level.detach().cpu().numpy(), 0.0
+ ) # transform to numpy
+ # test
+ v_pos, t_pos_idx = (
+ torch.from_numpy(v_pos).float().to(self._dummy.device),
+ torch.from_numpy(t_pos_idx.astype(np.int64)).long().to(self._dummy.device),
+ ) # transform back to torch tensor on CUDA
+ v_pos = v_pos / (self.resolution - 1.0)
+ return Mesh(v_pos=v_pos, t_pos_idx=t_pos_idx)
+
+
+def get_center_boundary_index(verts):
+ # Assuming the verts are in range [-1.0, 1.0]
+ length_ = torch.linalg.norm(verts**2, ord=2, dim=-1, keepdim=False)
+ center_idx = torch.argmin(length_)
+ # center_idx = torch.where(length_ < 0.1)[0]
+ boundary_neg = verts == verts.max()
+ boundary_pos = verts == verts.min()
+ boundary = torch.bitwise_or(boundary_pos, boundary_neg)
+ boundary = torch.sum(boundary.float(), dim=-1)
+ boundary_idx = torch.nonzero(boundary)
+ return center_idx.unsqueeze(0), boundary_idx.squeeze(dim=-1)
+
+
+class MarchingTetrahedraHelper(IsosurfaceHelper):
+ def __init__(self, resolution: int, tets_path: str):
+ super().__init__()
+ self.resolution = resolution
+ self.tets_path = tets_path
+
+ self.triangle_table: Float[Tensor, "..."]
+ self.register_buffer(
+ "triangle_table",
+ torch.as_tensor(
+ [
+ [-1, -1, -1, -1, -1, -1],
+ [1, 0, 2, -1, -1, -1],
+ [4, 0, 3, -1, -1, -1],
+ [1, 4, 2, 1, 3, 4],
+ [3, 1, 5, -1, -1, -1],
+ [2, 3, 0, 2, 5, 3],
+ [1, 4, 0, 1, 5, 4],
+ [4, 2, 5, -1, -1, -1],
+ [4, 5, 2, -1, -1, -1],
+ [4, 1, 0, 4, 5, 1],
+ [3, 2, 0, 3, 5, 2],
+ [1, 3, 5, -1, -1, -1],
+ [4, 1, 2, 4, 3, 1],
+ [3, 0, 4, -1, -1, -1],
+ [2, 0, 1, -1, -1, -1],
+ [-1, -1, -1, -1, -1, -1],
+ ],
+ dtype=torch.long,
+ ),
+ persistent=False,
+ )
+ self.num_triangles_table: Integer[Tensor, "..."]
+ self.register_buffer(
+ "num_triangles_table",
+ torch.as_tensor(
+ [0, 1, 1, 2, 1, 2, 2, 1, 1, 2, 2, 1, 2, 1, 1, 0], dtype=torch.long
+ ),
+ persistent=False,
+ )
+ self.base_tet_edges: Integer[Tensor, "..."]
+ self.register_buffer(
+ "base_tet_edges",
+ torch.as_tensor([0, 1, 0, 2, 0, 3, 1, 2, 1, 3, 2, 3], dtype=torch.long),
+ persistent=False,
+ )
+
+ tets = np.load(self.tets_path)
+ self._grid_vertices: Float[Tensor, "..."]
+ self.register_buffer(
+ "_grid_vertices",
+ torch.from_numpy(tets["vertices"]).float(),
+ persistent=False,
+ )
+ self.indices: Integer[Tensor, "..."]
+ self.register_buffer(
+ "indices", torch.from_numpy(tets["indices"]).long(), persistent=False
+ )
+
+ self._all_edges: Optional[Integer[Tensor, "Ne 2"]] = None
+ self.center_indices, self.boundary_indices = get_center_boundary_index(
+ scale_tensor(self.grid_vertices, self.points_range, (-1.0, 1.0))
+ )
+
+ def normalize_grid_deformation(
+ self, grid_vertex_offsets: Float[Tensor, "Nv 3"]
+ ) -> Float[Tensor, "Nv 3"]:
+ return (
+ (self.points_range[1] - self.points_range[0])
+ / (self.resolution) # half tet size is approximately 1 / self.resolution
+ * torch.tanh(grid_vertex_offsets)
+ ) # FIXME: hard-coded activation
+
+ @property
+ def grid_vertices(self) -> Float[Tensor, "Nv 3"]:
+ return self._grid_vertices
+
+ @property
+ def all_edges(self) -> Integer[Tensor, "Ne 2"]:
+ if self._all_edges is None:
+ # compute edges on GPU, or it would be VERY SLOW (basically due to the unique operation)
+ edges = torch.tensor(
+ [0, 1, 0, 2, 0, 3, 1, 2, 1, 3, 2, 3],
+ dtype=torch.long,
+ device=self.indices.device,
+ )
+ _all_edges = self.indices[:, edges].reshape(-1, 2)
+ _all_edges_sorted = torch.sort(_all_edges, dim=1)[0]
+ _all_edges = torch.unique(_all_edges_sorted, dim=0)
+ self._all_edges = _all_edges
+ return self._all_edges
+
+ def sort_edges(self, edges_ex2):
+ with torch.no_grad():
+ order = (edges_ex2[:, 0] > edges_ex2[:, 1]).long()
+ order = order.unsqueeze(dim=1)
+
+ a = torch.gather(input=edges_ex2, index=order, dim=1)
+ b = torch.gather(input=edges_ex2, index=1 - order, dim=1)
+
+ return torch.stack([a, b], -1)
+
+ def _forward(self, pos_nx3, sdf_n, tet_fx4):
+ with torch.no_grad():
+ occ_n = sdf_n > 0
+ occ_fx4 = occ_n[tet_fx4.reshape(-1)].reshape(-1, 4)
+ occ_sum = torch.sum(occ_fx4, -1)
+ valid_tets = (occ_sum > 0) & (occ_sum < 4)
+ occ_sum = occ_sum[valid_tets]
+
+ # find all vertices
+ all_edges = tet_fx4[valid_tets][:, self.base_tet_edges].reshape(-1, 2)
+ all_edges = self.sort_edges(all_edges)
+ unique_edges, idx_map = torch.unique(all_edges, dim=0, return_inverse=True)
+
+ unique_edges = unique_edges.long()
+ mask_edges = occ_n[unique_edges.reshape(-1)].reshape(-1, 2).sum(-1) == 1
+ mapping = (
+ torch.ones(
+ (unique_edges.shape[0]), dtype=torch.long, device=pos_nx3.device
+ )
+ * -1
+ )
+ mapping[mask_edges] = torch.arange(
+ mask_edges.sum(), dtype=torch.long, device=pos_nx3.device
+ )
+ idx_map = mapping[idx_map] # map edges to verts
+
+ interp_v = unique_edges[mask_edges]
+ edges_to_interp = pos_nx3[interp_v.reshape(-1)].reshape(-1, 2, 3)
+ edges_to_interp_sdf = sdf_n[interp_v.reshape(-1)].reshape(-1, 2, 1)
+ edges_to_interp_sdf[:, -1] *= -1
+
+ denominator = edges_to_interp_sdf.sum(1, keepdim=True)
+
+ edges_to_interp_sdf = torch.flip(edges_to_interp_sdf, [1]) / denominator
+ verts = (edges_to_interp * edges_to_interp_sdf).sum(1)
+
+ idx_map = idx_map.reshape(-1, 6)
+
+ v_id = torch.pow(2, torch.arange(4, dtype=torch.long, device=pos_nx3.device))
+ tetindex = (occ_fx4[valid_tets] * v_id.unsqueeze(0)).sum(-1)
+ num_triangles = self.num_triangles_table[tetindex]
+
+ # Generate triangle indices
+ faces = torch.cat(
+ (
+ torch.gather(
+ input=idx_map[num_triangles == 1],
+ dim=1,
+ index=self.triangle_table[tetindex[num_triangles == 1]][:, :3],
+ ).reshape(-1, 3),
+ torch.gather(
+ input=idx_map[num_triangles == 2],
+ dim=1,
+ index=self.triangle_table[tetindex[num_triangles == 2]][:, :6],
+ ).reshape(-1, 3),
+ ),
+ dim=0,
+ )
+
+ return verts, faces
+
+ def forward(
+ self,
+ level: Float[Tensor, "N3 1"],
+ deformation: Optional[Float[Tensor, "N3 3"]] = None,
+ ) -> Mesh:
+ if deformation is not None:
+ grid_vertices = self.grid_vertices + self.normalize_grid_deformation(
+ deformation
+ )
+ else:
+ grid_vertices = self.grid_vertices
+
+ v_pos, t_pos_idx = self._forward(grid_vertices, level, self.indices)
+
+ mesh = Mesh(
+ v_pos=v_pos,
+ t_pos_idx=t_pos_idx,
+ # extras
+ grid_vertices=grid_vertices,
+ tet_edges=self.all_edges,
+ grid_level=level,
+ grid_deformation=deformation,
+ )
+
+ return mesh
diff --git a/3D_Stage/lrm/models/lpips.py b/3D_Stage/lrm/models/lpips.py
new file mode 100644
index 0000000000000000000000000000000000000000..40c70e278b1c157b3cf4105b707c6679d0f7e1e6
--- /dev/null
+++ b/3D_Stage/lrm/models/lpips.py
@@ -0,0 +1,20 @@
+from dataclasses import dataclass
+from typing import Any
+import lpips
+
+from ..utils.ops import scale_tensor
+from ..utils.misc import get_device
+
+
+class LPIPS:
+ def __init__(self):
+ self.model = lpips.LPIPS(net="vgg").to(get_device())
+ self.model.eval()
+ for params in self.model.parameters():
+ params.requires_grad = False
+ self.model_input_range = (-1, 1)
+
+ def __call__(self, x1, x2, return_layers=False, input_range=(0, 1)):
+ x1 = scale_tensor(x1, input_range, self.model_input_range)
+ x2 = scale_tensor(x2, input_range, self.model_input_range)
+ return self.model(x1, x2, retPerLayer=return_layers, normalize=False)
diff --git a/3D_Stage/lrm/models/materials/__init__.py b/3D_Stage/lrm/models/materials/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/3D_Stage/lrm/models/materials/__pycache__/__init__.cpython-310.pyc b/3D_Stage/lrm/models/materials/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..fee47762609bd07da41d20f2ebd66e972061c099
Binary files /dev/null and b/3D_Stage/lrm/models/materials/__pycache__/__init__.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/materials/__pycache__/base.cpython-310.pyc b/3D_Stage/lrm/models/materials/__pycache__/base.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..318ec225b344f57f8a7635ce5397f17b0386960b
Binary files /dev/null and b/3D_Stage/lrm/models/materials/__pycache__/base.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/materials/__pycache__/no_material.cpython-310.pyc b/3D_Stage/lrm/models/materials/__pycache__/no_material.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..aa92003e4c061ea48875d41cd175cb6a2f103ba1
Binary files /dev/null and b/3D_Stage/lrm/models/materials/__pycache__/no_material.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/materials/base.py b/3D_Stage/lrm/models/materials/base.py
new file mode 100644
index 0000000000000000000000000000000000000000..968e4e2ed771227f0db347f6858965a6e4e4f5c0
--- /dev/null
+++ b/3D_Stage/lrm/models/materials/base.py
@@ -0,0 +1,29 @@
+import random
+from dataclasses import dataclass, field
+
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+
+import lrm
+from ...utils.base import BaseModule
+from ...utils.typing import *
+
+
+class BaseMaterial(BaseModule):
+ @dataclass
+ class Config(BaseModule.Config):
+ pass
+
+ cfg: Config
+ requires_normal: bool = False
+ requires_tangent: bool = False
+
+ def configure(self):
+ pass
+
+ def forward(self, *args, **kwargs) -> Float[Tensor, "*B 3"]:
+ raise NotImplementedError
+
+ def export(self, *args, **kwargs) -> Dict[str, Any]:
+ return {}
diff --git a/3D_Stage/lrm/models/materials/no_material.py b/3D_Stage/lrm/models/materials/no_material.py
new file mode 100644
index 0000000000000000000000000000000000000000..754fec75a42ff1835e9df5e2c9fcdefcc5099814
--- /dev/null
+++ b/3D_Stage/lrm/models/materials/no_material.py
@@ -0,0 +1,60 @@
+import random
+from dataclasses import dataclass, field
+
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+
+import lrm
+from .base import BaseMaterial
+from ..networks import get_encoding, get_mlp
+from ...utils.ops import dot, get_activation
+from ...utils.typing import *
+
+
+class NoMaterial(BaseMaterial):
+ @dataclass
+ class Config(BaseMaterial.Config):
+ n_output_dims: int = 3
+ color_activation: str = "sigmoid"
+ input_feature_dims: Optional[int] = None
+ mlp_network_config: Optional[dict] = None
+ requires_normal: bool = False
+
+ cfg: Config
+
+ def configure(self) -> None:
+ self.use_network = False
+ if (
+ self.cfg.input_feature_dims is not None
+ and self.cfg.mlp_network_config is not None
+ ):
+ self.network = get_mlp(
+ self.cfg.input_feature_dims,
+ self.cfg.n_output_dims,
+ self.cfg.mlp_network_config,
+ )
+ self.use_network = True
+ self.requires_normal = self.cfg.requires_normal
+
+ def forward(
+ self, features: Float[Tensor, "B ... Nf"], **kwargs
+ ) -> Float[Tensor, "B ... Nc"]:
+ if not self.use_network:
+ assert (
+ features.shape[-1] == self.cfg.n_output_dims
+ ), f"Expected {self.cfg.n_output_dims} output dims, only got {features.shape[-1]} dims input."
+ color = get_activation(self.cfg.color_activation)(features)
+ else:
+ color = self.network(features.view(-1, features.shape[-1])).view(
+ *features.shape[:-1], self.cfg.n_output_dims
+ )
+ color = get_activation(self.cfg.color_activation)(color)
+ return color
+
+ def export(self, features: Float[Tensor, "*N Nf"], **kwargs) -> Dict[str, Any]:
+ color = self(features, **kwargs).clamp(0, 1)
+ assert color.shape[-1] >= 3, "Output color must have at least 3 channels"
+ if color.shape[-1] > 3:
+ lrm.warn("Output color has >3 channels, treating the first 3 as RGB")
+ return {"albedo": color[..., :3]}
diff --git a/3D_Stage/lrm/models/mesh.py b/3D_Stage/lrm/models/mesh.py
new file mode 100644
index 0000000000000000000000000000000000000000..9765a8131347b9abe316608aa7a5bbd509db7566
--- /dev/null
+++ b/3D_Stage/lrm/models/mesh.py
@@ -0,0 +1,471 @@
+from __future__ import annotations
+
+import functools
+import numpy as np
+import torch
+import torch.nn.functional as F
+
+import lrm
+from ..utils.ops import dot
+from ..utils.typing import *
+from ..utils.misc import time_recorder as tr, time_recorder_enabled
+
+
+class Mesh:
+ def __init__(
+ self, v_pos: Float[Tensor, "Nv 3"], t_pos_idx: Integer[Tensor, "Nf 3"], **kwargs
+ ) -> None:
+ self.v_pos: Float[Tensor, "Nv 3"] = v_pos
+ self.t_pos_idx: Integer[Tensor, "Nf 3"] = t_pos_idx
+ self._v_nrm: Optional[Float[Tensor, "Nv 3"]] = None
+ self._v_tng: Optional[Float[Tensor, "Nv 3"]] = None
+ self._v_tex: Optional[Float[Tensor, "Nt 3"]] = None
+ self._t_tex_idx: Optional[Float[Tensor, "Nf 3"]] = None
+ self._v_rgb: Optional[Float[Tensor, "Nv 3"]] = None
+ self._edges: Optional[Integer[Tensor, "Ne 2"]] = None
+ self.extras: Dict[str, Any] = {}
+ for k, v in kwargs.items():
+ self.add_extra(k, v)
+
+ def add_extra(self, k, v) -> None:
+ self.extras[k] = v
+
+ def remove_outlier(self, outlier_n_faces_threshold: Union[int, float]) -> Mesh:
+ if self.requires_grad:
+ lrm.debug("Mesh is differentiable, not removing outliers")
+ return self
+
+ # use trimesh to first split the mesh into connected components
+ # then remove the components with less than n_face_threshold faces
+ import trimesh
+
+ # construct a trimesh object
+ mesh = trimesh.Trimesh(
+ vertices=self.v_pos.detach().cpu().numpy(),
+ faces=self.t_pos_idx.detach().cpu().numpy(),
+ )
+
+ # split the mesh into connected components
+ components = mesh.split(only_watertight=False)
+ # log the number of faces in each component
+ lrm.debug(
+ "Mesh has {} components, with faces: {}".format(
+ len(components), [c.faces.shape[0] for c in components]
+ )
+ )
+
+ n_faces_threshold: int
+ if isinstance(outlier_n_faces_threshold, float):
+ # set the threshold to the number of faces in the largest component multiplied by outlier_n_faces_threshold
+ n_faces_threshold = int(
+ max([c.faces.shape[0] for c in components]) * outlier_n_faces_threshold
+ )
+ else:
+ # set the threshold directly to outlier_n_faces_threshold
+ n_faces_threshold = outlier_n_faces_threshold
+
+ # log the threshold
+ lrm.debug(
+ "Removing components with less than {} faces".format(n_faces_threshold)
+ )
+
+ # remove the components with less than n_face_threshold faces
+ components = [c for c in components if c.faces.shape[0] >= n_faces_threshold]
+
+ # log the number of faces in each component after removing outliers
+ lrm.debug(
+ "Mesh has {} components after removing outliers, with faces: {}".format(
+ len(components), [c.faces.shape[0] for c in components]
+ )
+ )
+ # merge the components
+ mesh = trimesh.util.concatenate(components)
+
+ # convert back to our mesh format
+ v_pos = torch.from_numpy(mesh.vertices).to(self.v_pos)
+ t_pos_idx = torch.from_numpy(mesh.faces).to(self.t_pos_idx)
+
+ clean_mesh = Mesh(v_pos, t_pos_idx)
+ # keep the extras unchanged
+
+ if len(self.extras) > 0:
+ clean_mesh.extras = self.extras
+ lrm.debug(
+ f"The following extra attributes are inherited from the original mesh unchanged: {list(self.extras.keys())}"
+ )
+ return clean_mesh
+
+ def subdivide(self):
+ if self.requires_grad:
+ lrm.debug("Mesh is differentiable, not performing subdivision")
+ return self
+
+ import trimesh
+
+ mesh = trimesh.Trimesh(
+ vertices=self.v_pos.detach().cpu().numpy(),
+ faces=self.t_pos_idx.detach().cpu().numpy(),
+ )
+
+ mesh.subdivide_loop()
+
+ v_pos = torch.from_numpy(mesh.vertices).to(self.v_pos)
+ t_pos_idx = torch.from_numpy(mesh.faces).to(self.t_pos_idx)
+
+ subdivided_mesh = Mesh(v_pos, t_pos_idx)
+
+ if len(self.extras) > 0:
+ subdivided_mesh.extras = self.extras
+ lrm.debug(
+ f"The following extra attributes are inherited from the original mesh unchanged: {list(self.extras.keys())}"
+ )
+
+ return subdivided_mesh
+
+ def post_process(self, options):
+ if self.requires_grad:
+ lrm.debug("Mesh is differentiable, not performing post processing")
+ return self
+
+ from extern.mesh_process.MeshProcess import process_mesh
+
+ v_pos, t_pos_idx = process_mesh(
+ vertices=self.v_pos.detach().cpu().numpy(),
+ faces=self.t_pos_idx.detach().cpu().numpy(),
+ **options,
+ )
+
+ v_pos = torch.from_numpy(v_pos).to(self.v_pos).contiguous()
+ t_pos_idx = torch.from_numpy(t_pos_idx).to(self.t_pos_idx).contiguous()
+
+ processed_mesh = Mesh(v_pos, t_pos_idx)
+
+ if len(self.extras) > 0:
+ processed_mesh.extras = self.extras
+ lrm.debug(
+ f"The following extra attributes are inherited from the original mesh unchanged: {list(self.extras.keys())}"
+ )
+
+ return processed_mesh
+
+ @property
+ def requires_grad(self):
+ return self.v_pos.requires_grad
+
+ @property
+ def v_nrm(self):
+ if self._v_nrm is None:
+ self._v_nrm = self._compute_vertex_normal()
+ return self._v_nrm
+
+ @property
+ def v_tng(self):
+ if self._v_tng is None:
+ self._v_tng = self._compute_vertex_tangent()
+ return self._v_tng
+
+ @property
+ def v_tex(self):
+ if self._v_tex is None:
+ self._v_tex, self._t_tex_idx = self._unwrap_uv()
+ return self._v_tex
+
+ @property
+ def t_tex_idx(self):
+ if self._t_tex_idx is None:
+ self._v_tex, self._t_tex_idx = self._unwrap_uv()
+ return self._t_tex_idx
+
+ @property
+ def v_rgb(self):
+ return self._v_rgb
+
+ @property
+ def edges(self):
+ if self._edges is None:
+ self._edges = self._compute_edges()
+ return self._edges
+
+ def _compute_vertex_normal(self):
+ i0 = self.t_pos_idx[:, 0]
+ i1 = self.t_pos_idx[:, 1]
+ i2 = self.t_pos_idx[:, 2]
+
+ v0 = self.v_pos[i0, :]
+ v1 = self.v_pos[i1, :]
+ v2 = self.v_pos[i2, :]
+
+ face_normals = torch.cross(v1 - v0, v2 - v0)
+
+ # Splat face normals to vertices
+ v_nrm = torch.zeros_like(self.v_pos)
+ v_nrm.scatter_add_(0, i0[:, None].repeat(1, 3), face_normals)
+ v_nrm.scatter_add_(0, i1[:, None].repeat(1, 3), face_normals)
+ v_nrm.scatter_add_(0, i2[:, None].repeat(1, 3), face_normals)
+
+ # Normalize, replace zero (degenerated) normals with some default value
+ v_nrm = torch.where(
+ dot(v_nrm, v_nrm) > 1e-20, v_nrm, torch.as_tensor([0.0, 0.0, 1.0]).to(v_nrm)
+ )
+ v_nrm = F.normalize(v_nrm, dim=1)
+
+ if torch.is_anomaly_enabled():
+ assert torch.all(torch.isfinite(v_nrm))
+
+ return v_nrm
+
+ def _compute_vertex_tangent(self):
+ vn_idx = [None] * 3
+ pos = [None] * 3
+ tex = [None] * 3
+ for i in range(0, 3):
+ pos[i] = self.v_pos[self.t_pos_idx[:, i]]
+ tex[i] = self.v_tex[self.t_tex_idx[:, i]]
+ # t_nrm_idx is always the same as t_pos_idx
+ vn_idx[i] = self.t_pos_idx[:, i]
+
+ tangents = torch.zeros_like(self.v_nrm)
+ tansum = torch.zeros_like(self.v_nrm)
+
+ # Compute tangent space for each triangle
+ uve1 = tex[1] - tex[0]
+ uve2 = tex[2] - tex[0]
+ pe1 = pos[1] - pos[0]
+ pe2 = pos[2] - pos[0]
+
+ nom = pe1 * uve2[..., 1:2] - pe2 * uve1[..., 1:2]
+ denom = uve1[..., 0:1] * uve2[..., 1:2] - uve1[..., 1:2] * uve2[..., 0:1]
+
+ # Avoid division by zero for degenerated texture coordinates
+ tang = nom / torch.where(
+ denom > 0.0, torch.clamp(denom, min=1e-6), torch.clamp(denom, max=-1e-6)
+ )
+
+ # Update all 3 vertices
+ for i in range(0, 3):
+ idx = vn_idx[i][:, None].repeat(1, 3)
+ tangents.scatter_add_(0, idx, tang) # tangents[n_i] = tangents[n_i] + tang
+ tansum.scatter_add_(
+ 0, idx, torch.ones_like(tang)
+ ) # tansum[n_i] = tansum[n_i] + 1
+ tangents = tangents / tansum
+
+ # Normalize and make sure tangent is perpendicular to normal
+ tangents = F.normalize(tangents, dim=1)
+ tangents = F.normalize(tangents - dot(tangents, self.v_nrm) * self.v_nrm)
+
+ if torch.is_anomaly_enabled():
+ assert torch.all(torch.isfinite(tangents))
+
+ return tangents
+
+ def _unwrap_uv_open3d(
+ self
+ ):
+ import open3d as o3d
+ mesh = o3d.t.geometry.TriangleMesh()
+ mesh.vertex.positions = o3d.core.Tensor(self.v_pos.detach().cpu().numpy())
+ mesh.triangle.indices = o3d.core.Tensor(self.t_pos_idx.cpu().numpy())
+ mesh.compute_uvatlas(size=1024)
+ texture_uvs = torch.from_numpy(mesh.triangle.texture_uvs.numpy()).reshape(-1, 2).cuda()
+ indices = torch.arange(self.t_pos_idx.shape[0] * 3).reshape(-1, 3).to(torch.int64).cuda()
+ # Add a wood texture and visualize
+ return texture_uvs, indices
+
+ def _unwrap_uv_xatlas(
+ self, xatlas_chart_options: dict = {}, xatlas_pack_options: dict = {}
+ ):
+ lrm.info("Using xatlas to perform UV unwrapping, may take a while ...")
+
+ import xatlas
+
+ atlas = xatlas.Atlas()
+ atlas.add_mesh(
+ self.v_pos.detach().cpu().numpy(),
+ self.t_pos_idx.cpu().numpy(),
+ )
+ co = xatlas.ChartOptions()
+ po = xatlas.PackOptions()
+ for k, v in xatlas_chart_options.items():
+ setattr(co, k, v)
+ for k, v in xatlas_pack_options.items():
+ setattr(po, k, v)
+ atlas.generate(co, po)
+ vmapping, indices, uvs = atlas.get_mesh(0)
+ vmapping = (
+ torch.from_numpy(
+ vmapping.astype(np.uint64, casting="same_kind").view(np.int64)
+ )
+ .to(self.v_pos.device)
+ .long()
+ )
+ uvs = torch.from_numpy(uvs).to(self.v_pos.device).float()
+ indices = (
+ torch.from_numpy(
+ indices.astype(np.uint64, casting="same_kind").view(np.int64)
+ )
+ .to(self.v_pos.device)
+ .long()
+ )
+ return uvs, indices
+
+ def _unwrap_uv_smartuv(self, options: dict = {}):
+ from extern.mesh_process.MeshProcess import (
+ mesh_to_bpy,
+ get_uv_from_bpy,
+ bpy_context,
+ bpy_export,
+ )
+ from lrm.utils.misc import time_recorder as tr
+
+ v_pos, t_pos_idx = self.v_pos.cpu().numpy(), self.t_pos_idx.cpu().numpy()
+ with bpy_context():
+ mesh_bpy = mesh_to_bpy("_", v_pos, t_pos_idx)
+ v_tex = get_uv_from_bpy(mesh_bpy, **options).astype(np.float32)
+
+ assert v_tex.shape[0] == self.t_pos_idx.shape[0] * 3
+
+ t_tex_idx = torch.arange(
+ self.t_pos_idx.shape[0] * 3, device=self.t_pos_idx.device, dtype=torch.long
+ ).reshape(-1, 3)
+
+ """
+ # super efficient de-duplication
+ v_tex_u_uint32 = v_tex[..., 0].view(np.uint32)
+ v_tex_v_uint32 = v_tex[..., 1].view(np.uint32)
+ v_hashed = (v_tex_u_uint32.astype(np.uint64) << 32) | v_tex_v_uint32
+ v_hashed = torch.from_numpy(v_hashed.view(np.int64)).to(self.v_pos.device)
+
+ v_tex = torch.from_numpy(v_tex).to(
+ device=self.v_pos.device, dtype=torch.float32
+ )
+ t_pos_idx_f3 = torch.arange(
+ self.t_pos_idx.shape[0] * 3, device=self.t_pos_idx.device, dtype=torch.long
+ ).reshape(-1, 3)
+ v_pos_f3 = self.v_pos[self.t_pos_idx].reshape(-1, 3)
+
+ # super efficient de-duplication
+ v_hashed_dedup, inverse_indices = torch.unique(v_hashed, return_inverse=True)
+ dedup_size, full_size = v_hashed_dedup.shape[0], inverse_indices.shape[0]
+ indices = torch.scatter_reduce(
+ torch.full(
+ [dedup_size],
+ fill_value=full_size,
+ device=inverse_indices.device,
+ dtype=torch.long,
+ ),
+ index=inverse_indices,
+ src=torch.arange(
+ full_size, device=inverse_indices.device, dtype=torch.int64
+ ),
+ dim=0,
+ reduce="amin",
+ )
+ v_tex = v_tex[indices]
+ t_tex_idx = inverse_indices.reshape(-1, 3)
+
+ v_pos = v_pos_f3[indices]
+ t_pos_idx = inverse_indices[t_pos_idx_f3]
+ """
+
+ return self.v_pos, self.t_pos_idx, v_tex, t_tex_idx
+
+ def unwrap_uv(
+ self,
+ method: str,
+ xatlas_chart_options: dict = {},
+ xatlas_pack_options: dict = {},
+ smartuv_options: dict = {},
+ ):
+ if method == "xatlas":
+ with time_recorder_enabled():
+ tr.start("UV unwrapping xatlas")
+ self._v_tex, self._t_tex_idx = self._unwrap_uv_xatlas(
+ xatlas_chart_options, xatlas_pack_options
+ )
+ tr.end("UV unwrapping xatlas")
+ elif method == "open3d":
+ with time_recorder_enabled():
+ tr.start("UV unwrapping o3d")
+ self._v_tex, self._t_tex_idx = self._unwrap_uv_open3d()
+ tr.end("UV unwrapping o3d")
+ elif method == "smartuv":
+ with time_recorder_enabled():
+ tr.start("UV unwrapping smartuv")
+ (
+ self.v_pos,
+ self.t_pos_idx,
+ self._v_tex,
+ self._t_tex_idx,
+ ) = self._unwrap_uv_smartuv(smartuv_options)
+ tr.end("UV unwrapping smartuv")
+ else:
+ raise NotImplementedError
+
+ def set_vertex_color(self, v_rgb):
+ assert v_rgb.shape[0] == self.v_pos.shape[0]
+ self._v_rgb = v_rgb
+
+ def set_uv(self, v_tex, t_tex_idx):
+ self._v_tex = v_tex
+ self._t_tex_idx = t_tex_idx
+
+ @property
+ def has_uv(self):
+ return self._v_tex is not None and self._t_tex_idx is not None
+
+ def _compute_edges(self):
+ # Compute edges
+ edges = torch.cat(
+ [
+ self.t_pos_idx[:, [0, 1]],
+ self.t_pos_idx[:, [1, 2]],
+ self.t_pos_idx[:, [2, 0]],
+ ],
+ dim=0,
+ )
+ edges = edges.sort()[0]
+ edges = torch.unique(edges, dim=0)
+ return edges
+
+ def normal_consistency(self) -> Float[Tensor, ""]:
+ edge_nrm: Float[Tensor, "Ne 2 3"] = self.v_nrm[self.edges]
+ nc = (
+ 1.0 - torch.cosine_similarity(edge_nrm[:, 0], edge_nrm[:, 1], dim=-1)
+ ).mean()
+ return nc
+
+ def _laplacian_uniform(self):
+ # from stable-dreamfusion
+ # https://github.com/ashawkey/stable-dreamfusion/blob/8fb3613e9e4cd1ded1066b46e80ca801dfb9fd06/nerf/renderer.py#L224
+ verts, faces = self.v_pos, self.t_pos_idx
+
+ V = verts.shape[0]
+ F = faces.shape[0]
+
+ # Neighbor indices
+ ii = faces[:, [1, 2, 0]].flatten()
+ jj = faces[:, [2, 0, 1]].flatten()
+ adj = torch.stack([torch.cat([ii, jj]), torch.cat([jj, ii])], dim=0).unique(
+ dim=1
+ )
+ adj_values = torch.ones(adj.shape[1]).to(verts)
+
+ # Diagonal indices
+ diag_idx = adj[0]
+
+ # Build the sparse matrix
+ idx = torch.cat((adj, torch.stack((diag_idx, diag_idx), dim=0)), dim=1)
+ values = torch.cat((-adj_values, adj_values))
+
+ # The coalesce operation sums the duplicate indices, resulting in the
+ # correct diagonal
+ return torch.sparse_coo_tensor(idx, values, (V, V)).coalesce()
+
+ def laplacian(self) -> Float[Tensor, ""]:
+ with torch.no_grad():
+ L = self._laplacian_uniform()
+ loss = L.mm(self.v_pos)
+ loss = loss.norm(dim=1)
+ loss = loss.mean()
+ return loss
diff --git a/3D_Stage/lrm/models/networks.py b/3D_Stage/lrm/models/networks.py
new file mode 100644
index 0000000000000000000000000000000000000000..44ffc4052bd089dc9190ac9b9b98b8ec58fba85d
--- /dev/null
+++ b/3D_Stage/lrm/models/networks.py
@@ -0,0 +1,390 @@
+from dataclasses import dataclass, field
+from copy import deepcopy
+
+import torch
+import torch.nn as nn
+from einops import rearrange
+
+from ..utils.base import BaseModule
+from ..utils.ops import get_activation
+from ..utils.typing import *
+
+
+class TriplaneUpsampleNetwork(BaseModule):
+ @dataclass
+ class Config(BaseModule.Config):
+ in_channels: int = 1024
+ out_channels: int = 80
+
+ cfg: Config
+
+ def configure(self) -> None:
+ super().configure()
+ self.upsample = nn.ConvTranspose2d(
+ self.cfg.in_channels, self.cfg.out_channels, kernel_size=2, stride=2
+ )
+
+ def forward(
+ self, triplanes: Float[Tensor, "B 3 Ci Hp Wp"]
+ ) -> Float[Tensor, "B 3 Co Hp2 Wp2"]:
+ triplanes_up = rearrange(
+ self.upsample(
+ rearrange(triplanes, "B Np Ci Hp Wp -> (B Np) Ci Hp Wp", Np=3)
+ ),
+ "(B Np) Co Hp Wp -> B Np Co Hp Wp",
+ Np=3,
+ )
+ return triplanes_up
+
+
+class MLP(nn.Module):
+ def __init__(
+ self,
+ dim_in: int,
+ dim_out: int,
+ n_neurons: int,
+ n_hidden_layers: int,
+ activation: str = "relu",
+ output_activation: Optional[str] = None,
+ bias: bool = True,
+ weight_init: Optional[str] = "kaiming_uniform",
+ bias_init: Optional[str] = None,
+ ):
+ super().__init__()
+ layers = [
+ self.make_linear(
+ dim_in,
+ n_neurons,
+ is_first=True,
+ is_last=False,
+ bias=bias,
+ weight_init=weight_init,
+ bias_init=bias_init,
+ ),
+ self.make_activation(activation),
+ ]
+ for i in range(n_hidden_layers - 1):
+ layers += [
+ self.make_linear(
+ n_neurons,
+ n_neurons,
+ is_first=False,
+ is_last=False,
+ bias=bias,
+ weight_init=weight_init,
+ bias_init=bias_init,
+ ),
+ self.make_activation(activation),
+ ]
+ layers += [
+ self.make_linear(
+ n_neurons,
+ dim_out,
+ is_first=False,
+ is_last=True,
+ bias=bias,
+ weight_init=weight_init,
+ bias_init=bias_init,
+ )
+ ]
+ self.layers = nn.Sequential(*layers)
+ self.output_activation = get_activation(output_activation)
+
+ def forward(self, x):
+ x = self.layers(x)
+ x = self.output_activation(x)
+ return x
+
+ def make_linear(
+ self,
+ dim_in,
+ dim_out,
+ is_first,
+ is_last,
+ bias=True,
+ weight_init=None,
+ bias_init=None,
+ ):
+ layer = nn.Linear(dim_in, dim_out, bias=bias)
+
+ if weight_init is None:
+ pass
+ elif weight_init == "kaiming_uniform":
+ torch.nn.init.kaiming_uniform_(layer.weight, nonlinearity="relu")
+ else:
+ raise NotImplementedError
+
+ if bias:
+ if bias_init is None:
+ pass
+ elif bias_init == "zero":
+ torch.nn.init.zeros_(layer.bias)
+ else:
+ raise NotImplementedError
+
+ return layer
+
+ def make_activation(self, activation):
+ if activation == "relu":
+ return nn.ReLU(inplace=True)
+ elif activation == "silu":
+ return nn.SiLU(inplace=True)
+ else:
+ raise NotImplementedError
+
+
+@dataclass
+class HeadSpec:
+ name: str
+ out_channels: int
+ n_hidden_layers: int
+ output_activation: Optional[str] = None
+
+
+class MultiHeadMLP(BaseModule):
+ @dataclass
+ class Config(BaseModule.Config):
+ in_channels: int = 0
+ n_neurons: int = 0
+ n_hidden_layers_share: int = 0
+ heads: List[HeadSpec] = field(default_factory=lambda: [])
+ activation: str = "relu"
+ bias: bool = True
+ weight_init: Optional[str] = "kaiming_uniform"
+ bias_init: Optional[str] = None
+ chunk_mode: Optional[str] = None
+ chunk_size: int = -1
+
+ cfg: Config
+
+ def configure(self) -> None:
+ super().configure()
+ shared_layers = [
+ self.make_linear(
+ self.cfg.in_channels,
+ self.cfg.n_neurons,
+ bias=self.cfg.bias,
+ weight_init=self.cfg.weight_init,
+ bias_init=self.cfg.bias_init,
+ ),
+ self.make_activation(self.cfg.activation),
+ ]
+ for i in range(self.cfg.n_hidden_layers_share - 1):
+ shared_layers += [
+ self.make_linear(
+ self.cfg.n_neurons,
+ self.cfg.n_neurons,
+ bias=self.cfg.bias,
+ weight_init=self.cfg.weight_init,
+ bias_init=self.cfg.bias_init,
+ ),
+ self.make_activation(self.cfg.activation),
+ ]
+ self.shared_layers = nn.Sequential(*shared_layers)
+
+ assert len(self.cfg.heads) > 0
+ heads = {}
+ for head in self.cfg.heads:
+ head_layers = []
+ for i in range(head.n_hidden_layers):
+ head_layers += [
+ self.make_linear(
+ self.cfg.n_neurons,
+ self.cfg.n_neurons,
+ bias=self.cfg.bias,
+ weight_init=self.cfg.weight_init,
+ bias_init=self.cfg.bias_init,
+ ),
+ self.make_activation(self.cfg.activation),
+ ]
+ head_layers += [
+ self.make_linear(
+ self.cfg.n_neurons,
+ head.out_channels,
+ bias=self.cfg.bias,
+ weight_init=self.cfg.weight_init,
+ bias_init=self.cfg.bias_init,
+ ),
+ ]
+ heads[head.name] = nn.Sequential(*head_layers)
+ self.heads = nn.ModuleDict(heads)
+
+ if self.cfg.chunk_mode is not None:
+ assert self.cfg.chunk_size > 0
+
+ def make_linear(
+ self,
+ dim_in,
+ dim_out,
+ bias=True,
+ weight_init=None,
+ bias_init=None,
+ ):
+ layer = nn.Linear(dim_in, dim_out, bias=bias)
+
+ if weight_init is None:
+ pass
+ elif weight_init == "kaiming_uniform":
+ torch.nn.init.kaiming_uniform_(layer.weight, nonlinearity="relu")
+ else:
+ raise NotImplementedError
+
+ if bias:
+ if bias_init is None:
+ pass
+ elif bias_init == "zero":
+ torch.nn.init.zeros_(layer.bias)
+ else:
+ raise NotImplementedError
+
+ return layer
+
+ def make_activation(self, activation):
+ if activation == "relu":
+ return nn.ReLU(inplace=True)
+ elif activation == "silu":
+ return nn.SiLU(inplace=True)
+ else:
+ raise NotImplementedError
+
+ def forward(
+ self, x, include: Optional[List] = None, exclude: Optional[List] = None
+ ):
+ inp_shape = x.shape[:-1]
+ x = x.reshape(-1, x.shape[-1])
+
+ if self.cfg.chunk_mode is None:
+ shared_features = self.shared_layers(x)
+ elif self.cfg.chunk_mode == "deferred":
+ shared_features = DeferredFunc.apply(
+ self.shared_layers, x, self.cfg.chunk_size
+ )
+ elif self.cfg.chunk_mode == "checkpointing":
+ shared_features = apply_batch_checkpointing(
+ self.shared_layers, x, self.cfg.chunk_size
+ )
+ else:
+ raise NotImplementedError
+
+ shared_features = shared_features.reshape(*inp_shape, -1)
+
+ if include is not None and exclude is not None:
+ raise ValueError("Cannot specify both include and exclude.")
+ if include is not None:
+ heads = [h for h in self.cfg.heads if h.name in include]
+ elif exclude is not None:
+ heads = [h for h in self.cfg.heads if h.name not in exclude]
+ else:
+ heads = self.cfg.heads
+
+ out = {
+ head.name: get_activation(head.output_activation)(
+ self.heads[head.name](shared_features)
+ )
+ for head in heads
+ }
+ """
+ # TypeError
+ if self.cfg.chunk_mode is None:
+ out = {
+ head.name: get_activation(head.output_activation)(
+ self.heads[head.name](shared_features)
+ )
+ for head in heads
+ }
+ elif self.cfg.chunk_mode == "deferred":
+ out = {
+ head.name: get_activation(head.output_activation)(
+ DeferredFunc.apply(self.heads[head.name], shared_features, self.cfg.chunk_size)
+ )
+ for head in heads
+ }
+ else:
+ raise NotImplementedError
+ """
+ return out
+
+
+class DeferredFunc(torch.autograd.Function):
+ # Note that forward, setup_context, and backward are @staticmethods
+ @staticmethod
+ def forward(ctx, model, x, chunk_size):
+ model_copy = deepcopy(model)
+ model_copy.requires_grad_(False)
+
+ ret = []
+ x_split = torch.split(x, chunk_size, dim=0)
+
+ with torch.no_grad():
+ for cur_x in x_split:
+ ret.append(model_copy(cur_x))
+
+ ctx.model = model
+ ctx.save_for_backward(x.detach(), torch.as_tensor(chunk_size))
+
+ ret = torch.cat(ret, dim=0)
+
+ return ret
+
+ # This function has only a single output, so it gets only one gradient
+ @staticmethod
+ def backward(ctx, grad_output):
+ model = ctx.model
+ x, chunk_size = ctx.saved_tensors
+ chunk_size = chunk_size.item()
+
+ model_copy = deepcopy(model)
+
+ x_split = torch.split(x, chunk_size, dim=0)
+ grad_output_split = torch.split(grad_output, chunk_size, 0)
+ grad_input_split = []
+
+ with torch.set_grad_enabled(True):
+ model_copy.requires_grad_(True)
+ model_copy.zero_grad()
+ for cur_x, cur_grad_output in zip(x_split, grad_output_split):
+ cur_x.requires_grad_(True)
+ cur_y = model_copy(cur_x)
+ cur_y.backward(cur_grad_output)
+
+ grad_input_split.append(cur_x.grad.clone())
+
+ grad_input = torch.cat(grad_input_split, dim=0)
+
+ model_copy_params = list(model_copy.parameters())
+ model_params = list(model.parameters())
+
+ for param, param_copy in zip(model_params, model_copy_params):
+ if param.grad is None:
+ param.grad = param_copy.grad.clone()
+ else:
+ param.grad.add_(param_copy.grad)
+
+ return None, grad_input, None
+
+
+def apply_batch_checkpointing(func, x, chunk_size):
+ if chunk_size >= len(x):
+ # return func(x)
+ return torch.utils.checkpoint.checkpoint(func, x, use_reentrant=False)
+
+ x_split = torch.split(x, chunk_size, dim=0)
+
+ def cat_and_query(y_all, x):
+ return torch.cat([y_all, func(x)])
+
+ y_all = func(x_split[0])
+ for cur_x in x_split[1:]:
+ y_all = torch.utils.checkpoint.checkpoint(
+ cat_and_query, y_all, cur_x, use_reentrant=False
+ )
+
+ return y_all
+
+
+def get_encoding(n_input_dims: int, config) -> nn.Module:
+ raise NotImplementedError
+
+
+def get_mlp(n_input_dims, n_output_dims, config) -> nn.Module:
+ raise NotImplementedError
diff --git a/3D_Stage/lrm/models/renderers/__init__.py b/3D_Stage/lrm/models/renderers/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/3D_Stage/lrm/models/renderers/__pycache__/__init__.cpython-310.pyc b/3D_Stage/lrm/models/renderers/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b1c90246e57e418181ddb7cf1d031a95345a5aad
Binary files /dev/null and b/3D_Stage/lrm/models/renderers/__pycache__/__init__.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/renderers/__pycache__/base.cpython-310.pyc b/3D_Stage/lrm/models/renderers/__pycache__/base.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..990af8360e47c7575532e063020e812f767d17a6
Binary files /dev/null and b/3D_Stage/lrm/models/renderers/__pycache__/base.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/renderers/__pycache__/triplane_dmtet.cpython-310.pyc b/3D_Stage/lrm/models/renderers/__pycache__/triplane_dmtet.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7879e52fdcea230c011f6963361d4266a70439f1
Binary files /dev/null and b/3D_Stage/lrm/models/renderers/__pycache__/triplane_dmtet.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/renderers/base.py b/3D_Stage/lrm/models/renderers/base.py
new file mode 100644
index 0000000000000000000000000000000000000000..0a733d00b8a8726cf23006a37f81df8781b7728e
--- /dev/null
+++ b/3D_Stage/lrm/models/renderers/base.py
@@ -0,0 +1,68 @@
+from dataclasses import dataclass
+
+import torch
+import torch.nn.functional as F
+
+import lrm
+from ..networks import MultiHeadMLP
+from ..background.base import BaseBackground
+from ..materials.base import BaseMaterial
+from ...utils.base import BaseModule
+from ...utils.typing import *
+
+
+class BaseRenderer(BaseModule):
+ @dataclass
+ class Config(BaseModule.Config):
+ radius: float = 1.0
+
+ cfg: Config
+
+ def configure(
+ self,
+ decoder: MultiHeadMLP,
+ material: BaseMaterial,
+ background: BaseBackground,
+ ) -> None:
+ super().configure()
+
+ self.set_decoder(decoder)
+ self.set_material(material)
+ self.set_background(background)
+
+ # set up bounding box
+ self.bbox: Float[Tensor, "2 3"]
+ self.register_buffer(
+ "bbox",
+ torch.as_tensor(
+ [
+ [-self.cfg.radius, -self.cfg.radius, -self.cfg.radius],
+ [self.cfg.radius, self.cfg.radius, self.cfg.radius],
+ ],
+ dtype=torch.float32,
+ ),
+ )
+
+ def forward(self, *args, **kwargs) -> Dict[str, Any]:
+ raise NotImplementedError
+
+ @property
+ def decoder(self) -> MultiHeadMLP:
+ return self.non_module("decoder")
+
+ @property
+ def material(self) -> BaseMaterial:
+ return self.non_module("material")
+
+ @property
+ def background(self) -> BaseBackground:
+ return self.non_module("background")
+
+ def set_decoder(self, decoder: MultiHeadMLP) -> None:
+ self.register_non_module("decoder", decoder)
+
+ def set_material(self, material: BaseMaterial) -> None:
+ self.register_non_module("material", material)
+
+ def set_background(self, background: BaseBackground) -> None:
+ self.register_non_module("background", background)
diff --git a/3D_Stage/lrm/models/renderers/triplane_dmtet.py b/3D_Stage/lrm/models/renderers/triplane_dmtet.py
new file mode 100644
index 0000000000000000000000000000000000000000..6b898e3d584ef18307fb9ca2df0b015bc01f0430
--- /dev/null
+++ b/3D_Stage/lrm/models/renderers/triplane_dmtet.py
@@ -0,0 +1,369 @@
+import os
+from dataclasses import dataclass, field
+from collections import defaultdict
+from functools import partial
+
+import torch
+import torch.nn.functional as F
+from einops import rearrange, reduce
+
+import lrm
+from ..renderers.base import BaseRenderer
+from ..isosurface import MarchingTetrahedraHelper
+from ...utils.ops import (
+ get_activation,
+ scale_tensor,
+ dot,
+ chunk_batch
+)
+from ...utils.rasterize import NVDiffRasterizerContext
+from ..mesh import Mesh
+from ...utils.typing import *
+
+
+class TriplaneDMTetRenderer(BaseRenderer):
+ @dataclass
+ class Config(BaseRenderer.Config):
+ feature_reduction: str = "concat"
+ sdf_activation: Optional[str] = None
+ sdf_bias: Union[str, float] = 0.0
+ sdf_bias_params: Any = None
+ inside_out: bool = False
+
+ isosurface_resolution: int = 128
+ tet_dir: str = "load/tets/"
+ enable_isosurface_grid_deformation: bool = False
+ eval_chunk_size: int = 262144
+ context_type: str = "gl"
+
+ cfg: Config
+
+ def configure(self, *args, **kwargs) -> None:
+ super().configure(*args, **kwargs)
+
+ assert self.cfg.feature_reduction in ["concat", "mean"]
+
+ self.ctx = NVDiffRasterizerContext(self.cfg.context_type, self.device)
+ self.isosurface_helper = MarchingTetrahedraHelper(
+ self.cfg.isosurface_resolution,
+ os.path.join(self.cfg.tet_dir, f"{self.cfg.isosurface_resolution}_tets.npz"),
+ ).to(self.device)
+
+ def query_triplane(
+ self,
+ positions: Float[Tensor, "*B N 3"],
+ triplanes: Float[Tensor, "*B 3 Cp Hp Wp"],
+ ) -> Dict[str, Tensor]:
+ batched = positions.ndim == 3
+ if not batched:
+ # no batch dimension
+ triplanes = triplanes[None, ...]
+ positions = positions[None, ...]
+ # import ipdb
+ # ipdb.set_trace()
+ assert triplanes.ndim == 5 and positions.ndim == 3
+
+ # assume positions in [-1, 1]
+ # normalized to (-1, 1) for grid sample
+ positions = scale_tensor(
+ positions, (-self.cfg.radius, self.cfg.radius), (-1, 1)
+ )
+
+ indices2D: Float[Tensor, "B 3 N 2"] = torch.stack(
+ (positions[..., [0, 1]], positions[..., [0, 2]], positions[..., [1, 2]]),
+ dim=-3,
+ )
+ out: Float[Tensor, "B3 Cp 1 N"] = F.grid_sample(
+ rearrange(triplanes, "B Np Cp Hp Wp -> (B Np) Cp Hp Wp", Np=3),
+ rearrange(indices2D, "B Np N Nd -> (B Np) () N Nd", Np=3),
+ align_corners=False,
+ mode="bilinear",
+ )
+ if self.cfg.feature_reduction == "concat":
+ out = rearrange(out, "(B Np) Cp () N -> B N (Np Cp)", Np=3)
+ elif self.cfg.feature_reduction == "mean":
+ out = reduce(out, "(B Np) Cp () N -> B N Cp", Np=3, reduction="mean")
+ else:
+ raise NotImplementedError
+
+ net_out: Dict[str, Float[Tensor, "B N ..."]] = self.decoder(out)
+ assert "sdf" in net_out
+ net_out["sdf"] = get_activation(self.cfg.sdf_activation)(
+ self.get_shifted_sdf(positions, net_out["sdf"])
+ )
+
+ if not batched:
+ net_out = {k: v.squeeze(0) for k, v in net_out.items()}
+
+ return net_out
+
+ def get_shifted_sdf(
+ self, points: Float[Tensor, "*N Di"], sdf: Float[Tensor, "*N 1"]
+ ) -> Float[Tensor, "*N 1"]:
+ sdf_bias: Union[float, Float[Tensor, "*N 1"]]
+ if self.cfg.sdf_bias == "ellipsoid":
+ assert (
+ isinstance(self.cfg.sdf_bias_params, Sized)
+ and len(self.cfg.sdf_bias_params) == 3
+ )
+ size = torch.as_tensor(self.cfg.sdf_bias_params).to(points)
+ sdf_bias = ((points / size) ** 2).sum(
+ dim=-1, keepdim=True
+ ).sqrt() - 1.0 # pseudo signed distance of an ellipsoid
+ elif self.cfg.sdf_bias == "sphere":
+ assert isinstance(self.cfg.sdf_bias_params, float)
+ radius = self.cfg.sdf_bias_params
+ sdf_bias = (points**2).sum(dim=-1, keepdim=True).sqrt() - radius
+ elif isinstance(self.cfg.sdf_bias, float):
+ sdf_bias = self.cfg.sdf_bias
+ else:
+ raise ValueError(f"Unknown sdf bias {self.cfg.sdf_bias}")
+ return sdf + sdf_bias
+
+ def forward_single(
+ self,
+ triplane: Float[Tensor, "3 Cp Hp Wp"],
+ mvp_mtx: Float[Tensor, "Nv 4 4"],
+ camera_positions: Float[Tensor, "Nv 3"],
+ height: int,
+ width: int,
+ background_color: Optional[Float[Tensor, "3"]],
+ extra_sdf_query: Any = None,
+ ) -> Dict[str, Tensor]:
+ Nv = mvp_mtx.shape[0]
+
+ out = {}
+
+ query_vertices = []
+ query_sizes = []
+
+ grid_vertices = scale_tensor(
+ self.isosurface_helper.grid_vertices,
+ self.isosurface_helper.points_range,
+ self.bbox,
+ )
+
+ query_vertices.append(grid_vertices)
+ query_sizes.append(len(grid_vertices))
+
+ if extra_sdf_query is not None:
+ query_vertices.append(extra_sdf_query)
+ query_sizes.append(len(extra_sdf_query))
+
+ query_vertices = torch.cat(query_vertices, dim=0)
+ triplane_out = self.query_triplane(query_vertices, triplane)
+
+ all_sdf = triplane_out["sdf"]
+ if extra_sdf_query is not None:
+ sdf, sdf_ex_query = torch.split(all_sdf, query_sizes)
+ else:
+ sdf, sdf_ex_query = all_sdf, None
+
+ out.update({"sdf_ex_query": sdf_ex_query})
+
+ if self.cfg.enable_isosurface_grid_deformation:
+ all_deformation = triplane_out["deformation"]
+ if extra_sdf_query is not None:
+ deformation, _ = torch.split(all_deformation, query_sizes)
+ else:
+ deformation, _ = all_deformation, None
+ else:
+ deformation = None
+
+ # Fix some sdf if we observe empty shape (full positive or full negative)
+ pos_shape = torch.sum((sdf.squeeze(dim=-1) > 0).int(), dim=-1)
+ neg_shape = torch.sum((sdf.squeeze(dim=-1) < 0).int(), dim=-1)
+ zero_surface = torch.bitwise_or(pos_shape == 0, neg_shape == 0)
+ if torch.sum(zero_surface).item() > 0:
+ lrm.warn("Empty mesh! Fixing by adding fake faces.")
+ sdf = torch.nan_to_num(sdf, nan=0.0, posinf=1.0, neginf=-1.0)
+ update_sdf = torch.zeros_like(sdf)
+ max_sdf = sdf.max()
+ min_sdf = sdf.min()
+ update_sdf[self.isosurface_helper.center_indices] += (
+ -1.0 - max_sdf
+ ) # greater than zero
+ update_sdf[self.isosurface_helper.boundary_indices] += (
+ 1.0 - min_sdf
+ ) # smaller than zero
+ new_sdf = sdf.clone().detach()
+ if zero_surface:
+ new_sdf += update_sdf
+ update_mask = (update_sdf == 0).float()
+ # Regulraization here is used to push the sdf to be a different sign (make it not fully positive or fully negative)
+ sdf_reg_loss = sdf.abs().mean()
+ sdf_reg_loss = sdf_reg_loss * zero_surface.float()
+ sdf = sdf * update_mask + new_sdf * (1 - update_mask)
+ lrm.debug(
+ "max sdf: {}, min sdf: {}".format(sdf.max().item(), sdf.min().item())
+ )
+ out.update({"sdf_reg": sdf_reg_loss})
+
+ # Here we remove the gradient for the bad sdf (full positive or full negative)
+ if zero_surface:
+ sdf = sdf.detach()
+
+ mesh: Mesh = self.isosurface_helper(sdf, deformation=deformation)
+
+ mesh.v_pos = scale_tensor(
+ mesh.v_pos, self.isosurface_helper.points_range, self.bbox
+ ) # scale to bbox as the grid vertices are in [0, 1]
+ # import ipdb
+ # ipdb.set_trace()
+ v_pos_clip: Float[Tensor, "Nv V 4"] = self.ctx.vertex_transform(
+ mesh.v_pos, mvp_mtx
+ )
+ rast, _ = self.ctx.rasterize(v_pos_clip, mesh.t_pos_idx, (height, width))
+ mask = rast[..., 3:] > 0
+ mask_aa = self.ctx.antialias(mask.float(), rast, v_pos_clip, mesh.t_pos_idx)
+
+ out.update({"opacity": mask_aa, "mesh": mesh})
+
+ gb_normal, _ = self.ctx.interpolate_one(mesh.v_nrm, rast, mesh.t_pos_idx)
+ gb_normal = F.normalize(gb_normal, dim=-1)
+ gb_normal_aa = torch.lerp(
+ torch.zeros_like(gb_normal), (gb_normal + 1.0) / 2.0, mask.float()
+ )
+ gb_normal_aa = self.ctx.antialias(
+ gb_normal_aa, rast, v_pos_clip, mesh.t_pos_idx
+ )
+ out.update({"comp_normal": gb_normal_aa}) # in [0, 1]
+
+ gb_pos, _ = self.ctx.interpolate_one(mesh.v_pos, rast, mesh.t_pos_idx)
+
+ # FIXME: this depth corresponds to the one provided in the dataset, but assumes camera looking at scene center
+ gb_depth = dot(
+ gb_pos - camera_positions[:, None, None, :],
+ F.normalize(-camera_positions[:, None, None, :], dim=-1),
+ )
+
+ gb_depth = torch.lerp(torch.zeros_like(gb_depth), gb_depth, mask.float())
+ out.update({"depth": gb_depth})
+
+ gb_viewdirs = F.normalize(gb_pos - camera_positions[:, None, None, :], dim=-1)
+ gb_rgb_fg = torch.zeros(
+ (Nv, height, width, 3), device=self.device, dtype=torch.float32
+ )
+ gb_rgb_bg = self.background(dirs=gb_viewdirs, color_spec=background_color)
+
+ selector = mask[..., 0]
+ if selector.sum() > 0:
+ positions = gb_pos[selector]
+ geo_out = self.query_triplane(positions, triplane)
+
+ extra_geo_info = {}
+ if self.material.requires_normal:
+ extra_geo_info["shading_normal"] = gb_normal[selector]
+ if self.material.requires_tangent:
+ gb_tangent, _ = self.ctx.interpolate_one(
+ mesh.v_tng, rast, mesh.t_pos_idx
+ )
+ gb_tangent = F.normalize(gb_tangent, dim=-1)
+ extra_geo_info["tangent"] = gb_tangent[selector]
+
+ rgb_fg = self.material(
+ viewdirs=gb_viewdirs[selector],
+ positions=positions,
+ **extra_geo_info,
+ **geo_out,
+ )
+
+ gb_rgb_fg[selector] = rgb_fg.to(
+ gb_rgb_fg.dtype
+ ) # TODO: don't know if this is correct
+
+ gb_rgb = torch.lerp(gb_rgb_bg, gb_rgb_fg, mask.float())
+ gb_rgb_aa = self.ctx.antialias(gb_rgb, rast, v_pos_clip, mesh.t_pos_idx)
+
+ out.update(
+ {"comp_rgb": gb_rgb_aa, "comp_rgb_fg": gb_rgb_fg, "comp_rgb_bg": gb_rgb_bg}
+ )
+
+ return out
+
+ def forward(
+ self,
+ triplanes: Float[Tensor, "B 3 Cp Hp Wp"],
+ mvp_mtx: Float[Tensor, "B Nv 4 4"],
+ camera_positions: Float[Tensor, "B Nv 3"],
+ height: int,
+ width: int,
+ background_color: Optional[Float[Tensor, "B 3"]] = None,
+ extra_sdf_query: Optional[List[Float[Tensor, "N 3"]]] = None,
+ **kwargs,
+ ) -> Dict[str, Tensor]:
+ batch_size = triplanes.shape[0]
+ out_list = []
+ for b in range(batch_size):
+ out_list.append(
+ self.forward_single(
+ triplanes[b],
+ mvp_mtx[b],
+ camera_positions[b],
+ height,
+ width,
+ background_color=background_color[b]
+ if background_color is not None
+ else None,
+ extra_sdf_query=extra_sdf_query[b]
+ if extra_sdf_query is not None
+ else None,
+ )
+ )
+
+ out = defaultdict(list)
+ for out_ in out_list:
+ for k, v in out_.items():
+ out[k].append(v)
+
+ for k, v in out.items():
+ # some properties cannot be batched
+ if isinstance(v[0], torch.Tensor) and (
+ all([vv.ndim == 0 for vv in v])
+ or all([vv.shape[0] == v[0].shape[0] for vv in v])
+ ):
+ out[k] = torch.stack(v, dim=0)
+ else:
+ out[k] = v
+
+ return out
+
+ def isosurface(self, triplane: Float[Tensor, "3 Cp Hp Wp"]):
+ grid_vertices = scale_tensor(
+ self.isosurface_helper.grid_vertices,
+ self.isosurface_helper.points_range,
+ self.bbox,
+ )
+ triplane_out = chunk_batch(
+ partial(self.query_triplane, triplanes=triplane), self.cfg.eval_chunk_size, grid_vertices,
+ )
+
+ sdf = triplane_out["sdf"]
+
+ if self.cfg.inside_out:
+ sdf = -sdf
+
+ if self.cfg.enable_isosurface_grid_deformation:
+ deformation = triplane_out["deformation"]
+ else:
+ deformation = None
+
+ mesh: Mesh = self.isosurface_helper(sdf, deformation=deformation)
+
+ mesh.v_pos = scale_tensor(
+ mesh.v_pos, self.isosurface_helper.points_range, self.bbox
+ )
+
+ return mesh
+
+ def query(
+ self, triplane: Float[Tensor, "3 Cp Hp Wp"], points: Float[Tensor, "*N 3"]
+ ):
+ input_shape = points.shape[:-1]
+ triplane_out = chunk_batch(
+ partial(self.query_triplane, triplanes=triplane), self.cfg.eval_chunk_size, points.view(-1, 3)
+ )
+ triplane_out = {
+ k: v.view(*input_shape, v.shape[-1]) for k, v in triplane_out.items()
+ }
+ return triplane_out
diff --git a/3D_Stage/lrm/models/tokenizers/__init__.py b/3D_Stage/lrm/models/tokenizers/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/3D_Stage/lrm/models/tokenizers/__pycache__/__init__.cpython-310.pyc b/3D_Stage/lrm/models/tokenizers/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..6bad6d50f1030b824f08335565f8951e0a23911e
Binary files /dev/null and b/3D_Stage/lrm/models/tokenizers/__pycache__/__init__.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/tokenizers/__pycache__/dinov2.cpython-310.pyc b/3D_Stage/lrm/models/tokenizers/__pycache__/dinov2.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..253dda7189e4f5908e292fd3dd12f93e635b1a95
Binary files /dev/null and b/3D_Stage/lrm/models/tokenizers/__pycache__/dinov2.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/tokenizers/__pycache__/image.cpython-310.pyc b/3D_Stage/lrm/models/tokenizers/__pycache__/image.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..14567db9c6337002441ce50eddf7240ca764dcb6
Binary files /dev/null and b/3D_Stage/lrm/models/tokenizers/__pycache__/image.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/tokenizers/__pycache__/triplane.cpython-310.pyc b/3D_Stage/lrm/models/tokenizers/__pycache__/triplane.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7852e470011de48ca96a49a2afe508a11778d50d
Binary files /dev/null and b/3D_Stage/lrm/models/tokenizers/__pycache__/triplane.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/tokenizers/dinov2.py b/3D_Stage/lrm/models/tokenizers/dinov2.py
new file mode 100644
index 0000000000000000000000000000000000000000..d4d7eae6382313cb06ed423c09f0537c5bd446fc
--- /dev/null
+++ b/3D_Stage/lrm/models/tokenizers/dinov2.py
@@ -0,0 +1,1223 @@
+# coding=utf-8
+# Copyright 2023 Meta AI and The HuggingFace Inc. team. All rights reserved.
+#
+# 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.
+""" PyTorch DINOv2 model."""
+
+
+import collections.abc
+import math
+from typing import Dict, List, Optional, Set, Tuple, Union
+from dataclasses import dataclass
+
+import torch
+import torch.utils.checkpoint
+from torch import nn
+import torch.nn.functional as F
+from torch.nn import BCEWithLogitsLoss, CrossEntropyLoss, MSELoss
+
+from transformers.activations import ACT2FN
+from transformers.modeling_outputs import (
+ BackboneOutput,
+ BaseModelOutput,
+ BaseModelOutputWithPooling,
+ ImageClassifierOutput,
+)
+from transformers.modeling_utils import PreTrainedModel
+from transformers.pytorch_utils import (
+ find_pruneable_heads_and_indices,
+ prune_linear_layer,
+)
+from transformers.utils import (
+ add_code_sample_docstrings,
+ add_start_docstrings,
+ add_start_docstrings_to_model_forward,
+ logging,
+ replace_return_docstrings,
+)
+from transformers.utils.backbone_utils import BackboneMixin
+from transformers.models.dinov2.configuration_dinov2 import Dinov2Config
+import xformers
+
+from ..transformers.attention import MemoryEfficientAttentionMixin
+from ...utils.typing import *
+
+
+logger = logging.get_logger(__name__)
+
+# General docstring
+_CONFIG_FOR_DOC = "Dinov2Config"
+
+# Base docstring
+_CHECKPOINT_FOR_DOC = "facebook/dinov2-base"
+_EXPECTED_OUTPUT_SHAPE = [1, 257, 768]
+
+# Image classification docstring
+_IMAGE_CLASS_CHECKPOINT = "facebook/dinov2-base"
+
+
+DINOV2_PRETRAINED_MODEL_ARCHIVE_LIST = [
+ "facebook/dinov2-base",
+ # See all DINOv2 models at https://huggingface.co/models?filter=dinov2
+]
+
+
+class Dinov2Embeddings(nn.Module):
+ """
+ Construct the CLS token, mask token, position and patch embeddings.
+ """
+
+ def __init__(self, config: Dinov2Config) -> None:
+ super().__init__()
+
+ self.cls_token = nn.Parameter(torch.randn(1, 1, config.hidden_size))
+ # register as mask token as it's not used in optimization
+ # to avoid the use of find_unused_parameters_true
+ # self.mask_token = nn.Parameter(torch.zeros(1, config.hidden_size))
+ self.register_buffer("mask_token", torch.zeros(1, config.hidden_size))
+ self.patch_embeddings = Dinov2PatchEmbeddings(config)
+ num_patches = self.patch_embeddings.num_patches
+ self.position_embeddings = nn.Parameter(
+ torch.randn(1, num_patches + 1, config.hidden_size)
+ )
+ self.dropout = nn.Dropout(config.hidden_dropout_prob)
+ self.config = config
+
+ def interpolate_pos_encoding(
+ self, embeddings: torch.Tensor, height: int, width: int
+ ) -> torch.Tensor:
+ """
+ This method allows to interpolate the pre-trained position encodings, to be able to use the model on higher
+ resolution images.
+
+ Source:
+ https://github.com/facebookresearch/dino/blob/de9ee3df6cf39fac952ab558447af1fa1365362a/vision_transformer.py#L174
+ """
+
+ num_patches = embeddings.shape[1] - 1
+ num_positions = self.position_embeddings.shape[1] - 1
+ if num_patches == num_positions and height == width:
+ return self.position_embeddings
+ class_pos_embed = self.position_embeddings[:, 0]
+ patch_pos_embed = self.position_embeddings[:, 1:]
+ dim = embeddings.shape[-1]
+ height = height // self.config.patch_size
+ width = width // self.config.patch_size
+ # we add a small number to avoid floating point error in the interpolation
+ # see discussion at https://github.com/facebookresearch/dino/issues/8
+ height, width = height + 0.1, width + 0.1
+ patch_pos_embed = patch_pos_embed.reshape(
+ 1, int(math.sqrt(num_positions)), int(math.sqrt(num_positions)), dim
+ )
+ patch_pos_embed = patch_pos_embed.permute(0, 3, 1, 2)
+ patch_pos_embed = nn.functional.interpolate(
+ patch_pos_embed,
+ scale_factor=(
+ height / math.sqrt(num_positions),
+ width / math.sqrt(num_positions),
+ ),
+ mode="bicubic",
+ align_corners=False,
+ )
+ if (
+ int(height) != patch_pos_embed.shape[-2]
+ or int(width) != patch_pos_embed.shape[-1]
+ ):
+ raise ValueError(
+ "Width or height does not match with the interpolated position embeddings"
+ )
+ patch_pos_embed = patch_pos_embed.permute(0, 2, 3, 1).view(1, -1, dim)
+ return torch.cat((class_pos_embed.unsqueeze(0), patch_pos_embed), dim=1)
+
+ def forward(
+ self,
+ pixel_values: torch.Tensor,
+ bool_masked_pos: Optional[torch.Tensor] = None,
+ ) -> torch.Tensor:
+ batch_size, _, height, width = pixel_values.shape
+ patch_embeddings = self.patch_embeddings(pixel_values)
+ embeddings = patch_embeddings
+
+ if bool_masked_pos is not None:
+ embeddings = torch.where(
+ bool_masked_pos.unsqueeze(-1),
+ self.mask_token.to(embeddings.dtype).unsqueeze(0),
+ embeddings,
+ )
+
+ # add the [CLS] token to the embedded patch tokens
+ cls_tokens = self.cls_token.expand(batch_size, -1, -1)
+ embeddings = torch.cat((cls_tokens, embeddings), dim=1)
+
+ # add positional encoding to each token
+ embeddings = embeddings + self.interpolate_pos_encoding(
+ embeddings, height, width
+ )
+
+ embeddings = self.dropout(embeddings)
+
+ return embeddings
+
+
+class Dinov2PatchEmbeddings(nn.Module):
+ """
+ This class turns `pixel_values` of shape `(batch_size, num_channels, height, width)` into the initial
+ `hidden_states` (patch embeddings) of shape `(batch_size, seq_length, hidden_size)` to be consumed by a
+ Transformer.
+ """
+
+ def __init__(self, config):
+ super().__init__()
+ image_size, patch_size = config.image_size, config.patch_size
+ num_channels, hidden_size = config.num_channels, config.hidden_size
+
+ image_size = (
+ image_size
+ if isinstance(image_size, collections.abc.Iterable)
+ else (image_size, image_size)
+ )
+ patch_size = (
+ patch_size
+ if isinstance(patch_size, collections.abc.Iterable)
+ else (patch_size, patch_size)
+ )
+ num_patches = (image_size[1] // patch_size[1]) * (
+ image_size[0] // patch_size[0]
+ )
+ self.image_size = image_size
+ self.patch_size = patch_size
+ self.num_channels = num_channels
+ self.num_patches = num_patches
+
+ self.projection = nn.Conv2d(
+ num_channels, hidden_size, kernel_size=patch_size, stride=patch_size
+ )
+
+ def forward(self, pixel_values: torch.Tensor) -> torch.Tensor:
+ """
+ num_channels = pixel_values.shape[1]
+ if num_channels != self.num_channels:
+ raise ValueError(
+ "Make sure that the channel dimension of the pixel values match with the one set in the configuration."
+ f" Expected {self.num_channels} but got {num_channels}."
+ )
+ """
+ embeddings = self.projection(pixel_values).flatten(2).transpose(1, 2)
+ return embeddings
+
+
+# Copied from transformers.models.vit.modeling_vit.ViTSelfAttention with ViT->Dinov2
+class Dinov2SelfAttention(nn.Module):
+ def __init__(self, config: Dinov2Config) -> None:
+ super().__init__()
+ if config.hidden_size % config.num_attention_heads != 0 and not hasattr(
+ config, "embedding_size"
+ ):
+ raise ValueError(
+ f"The hidden size {config.hidden_size,} is not a multiple of the number of attention "
+ f"heads {config.num_attention_heads}."
+ )
+
+ self.num_attention_heads = config.num_attention_heads
+ self.attention_head_size = int(config.hidden_size / config.num_attention_heads)
+ self.all_head_size = self.num_attention_heads * self.attention_head_size
+ self.attention_probs_dropout_prob = config.attention_probs_dropout_prob
+
+ self.query = nn.Linear(
+ config.hidden_size, self.all_head_size, bias=config.qkv_bias
+ )
+ self.key = nn.Linear(
+ config.hidden_size, self.all_head_size, bias=config.qkv_bias
+ )
+ self.value = nn.Linear(
+ config.hidden_size, self.all_head_size, bias=config.qkv_bias
+ )
+
+ self.dropout = nn.Dropout(config.attention_probs_dropout_prob)
+
+ self.use_memory_efficient_attention_xformers: bool = False
+
+ def transpose_for_scores(self, x: torch.Tensor) -> torch.Tensor:
+ new_x_shape = x.size()[:-1] + (
+ self.num_attention_heads,
+ self.attention_head_size,
+ )
+ x = x.view(new_x_shape)
+ return x.permute(0, 2, 1, 3)
+
+ def forward(
+ self,
+ hidden_states,
+ head_mask: Optional[torch.Tensor] = None,
+ output_attentions: bool = False,
+ ) -> Union[Tuple[torch.Tensor, torch.Tensor], Tuple[torch.Tensor]]:
+ mixed_query_layer = self.query(hidden_states)
+
+ if self.use_memory_efficient_attention_xformers:
+ assert head_mask is None and not output_attentions
+ new_size = hidden_states.size()[:-1] + (
+ self.num_attention_heads,
+ self.attention_head_size,
+ )
+ key_layer = self.key(hidden_states).view(new_size)
+ value_layer = self.value(hidden_states).view(new_size)
+ query_layer = mixed_query_layer.view(new_size)
+ context_layer = xformers.ops.memory_efficient_attention(
+ query_layer, key_layer, value_layer, p=self.attention_probs_dropout_prob
+ )
+ context_layer = context_layer.view(*hidden_states.size()[:-1], -1)
+ elif hasattr(F, "scaled_dot_product_attention"):
+ assert head_mask is None and not output_attentions
+ new_size = hidden_states.size()[:-1] + (
+ self.num_attention_heads,
+ self.attention_head_size,
+ )
+ key_layer = self.key(hidden_states).reshape(new_size).transpose(1, 2)
+ value_layer = self.value(hidden_states).reshape(new_size).transpose(1, 2)
+ query_layer = mixed_query_layer.reshape(new_size).transpose(1, 2)
+ context_layer = F.scaled_dot_product_attention(
+ query_layer,
+ key_layer,
+ value_layer,
+ dropout_p=self.attention_probs_dropout_prob,
+ is_causal=False,
+ )
+ context_layer = context_layer.transpose(1, 2).reshape(
+ *hidden_states.size()[:-1], -1
+ )
+ else:
+ key_layer = self.transpose_for_scores(self.key(hidden_states))
+ value_layer = self.transpose_for_scores(self.value(hidden_states))
+ query_layer = self.transpose_for_scores(mixed_query_layer)
+
+ # Take the dot product between "query" and "key" to get the raw attention scores.
+ attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2))
+
+ attention_scores = attention_scores / math.sqrt(self.attention_head_size)
+
+ # Normalize the attention scores to probabilities.
+ attention_probs = nn.functional.softmax(attention_scores, dim=-1)
+
+ # This is actually dropping out entire tokens to attend to, which might
+ # seem a bit unusual, but is taken from the original Transformer paper.
+ attention_probs = self.dropout(attention_probs)
+
+ # Mask heads if we want to
+ if head_mask is not None:
+ attention_probs = attention_probs * head_mask
+
+ context_layer = torch.matmul(attention_probs, value_layer)
+
+ context_layer = context_layer.permute(0, 2, 1, 3).contiguous()
+ new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,)
+ context_layer = context_layer.view(new_context_layer_shape)
+
+ outputs = (
+ (context_layer, attention_probs) if output_attentions else (context_layer,)
+ )
+
+ return outputs
+
+ def set_use_memory_efficient_attention_xformers(
+ self, valid: bool, attention_op: Optional[Callable] = None
+ ):
+ self.use_memory_efficient_attention_xformers = valid
+
+
+# Copied from transformers.models.vit.modeling_vit.ViTSelfOutput with ViT->Dinov2
+class Dinov2SelfOutput(nn.Module):
+ """
+ The residual connection is defined in Dinov2Layer instead of here (as is the case with other models), due to the
+ layernorm applied before each block.
+ """
+
+ def __init__(self, config: Dinov2Config) -> None:
+ super().__init__()
+ self.dense = nn.Linear(config.hidden_size, config.hidden_size)
+ self.dropout = nn.Dropout(config.hidden_dropout_prob)
+
+ def forward(
+ self, hidden_states: torch.Tensor, input_tensor: torch.Tensor
+ ) -> torch.Tensor:
+ hidden_states = self.dense(hidden_states)
+ hidden_states = self.dropout(hidden_states)
+
+ return hidden_states
+
+
+# Copied from transformers.models.vit.modeling_vit.ViTAttention with ViT->Dinov2
+class Dinov2Attention(nn.Module):
+ def __init__(self, config: Dinov2Config) -> None:
+ super().__init__()
+ self.attention = Dinov2SelfAttention(config)
+ self.output = Dinov2SelfOutput(config)
+ self.pruned_heads = set()
+
+ def prune_heads(self, heads: Set[int]) -> None:
+ if len(heads) == 0:
+ return
+ heads, index = find_pruneable_heads_and_indices(
+ heads,
+ self.attention.num_attention_heads,
+ self.attention.attention_head_size,
+ self.pruned_heads,
+ )
+
+ # Prune linear layers
+ self.attention.query = prune_linear_layer(self.attention.query, index)
+ self.attention.key = prune_linear_layer(self.attention.key, index)
+ self.attention.value = prune_linear_layer(self.attention.value, index)
+ self.output.dense = prune_linear_layer(self.output.dense, index, dim=1)
+
+ # Update hyper params and store pruned heads
+ self.attention.num_attention_heads = self.attention.num_attention_heads - len(
+ heads
+ )
+ self.attention.all_head_size = (
+ self.attention.attention_head_size * self.attention.num_attention_heads
+ )
+ self.pruned_heads = self.pruned_heads.union(heads)
+
+ def forward(
+ self,
+ hidden_states: torch.Tensor,
+ head_mask: Optional[torch.Tensor] = None,
+ output_attentions: bool = False,
+ ) -> Union[Tuple[torch.Tensor, torch.Tensor], Tuple[torch.Tensor]]:
+ self_outputs = self.attention(hidden_states, head_mask, output_attentions)
+
+ attention_output = self.output(self_outputs[0], hidden_states)
+
+ outputs = (attention_output,) + self_outputs[
+ 1:
+ ] # add attentions if we output them
+ return outputs
+
+
+class Dinov2LayerScale(nn.Module):
+ def __init__(self, config) -> None:
+ super().__init__()
+ self.lambda1 = nn.Parameter(
+ config.layerscale_value * torch.ones(config.hidden_size)
+ )
+
+ def forward(self, hidden_state: torch.Tensor) -> torch.Tensor:
+ return hidden_state * self.lambda1
+
+
+# Copied from transformers.models.beit.modeling_beit.drop_path
+def drop_path(
+ input: torch.Tensor, drop_prob: float = 0.0, training: bool = False
+) -> torch.Tensor:
+ """
+ Drop paths (Stochastic Depth) per sample (when applied in main path of residual blocks).
+
+ Comment by Ross Wightman: This is the same as the DropConnect impl I created for EfficientNet, etc networks,
+ however, the original name is misleading as 'Drop Connect' is a different form of dropout in a separate paper...
+ See discussion: https://github.com/tensorflow/tpu/issues/494#issuecomment-532968956 ... I've opted for changing the
+ layer and argument names to 'drop path' rather than mix DropConnect as a layer name and use 'survival rate' as the
+ argument.
+ """
+ if drop_prob == 0.0 or not training:
+ return input
+ keep_prob = 1 - drop_prob
+ shape = (input.shape[0],) + (1,) * (
+ input.ndim - 1
+ ) # work with diff dim tensors, not just 2D ConvNets
+ random_tensor = keep_prob + torch.rand(
+ shape, dtype=input.dtype, device=input.device
+ )
+ random_tensor.floor_() # binarize
+ output = input.div(keep_prob) * random_tensor
+ return output
+
+
+# Copied from transformers.models.beit.modeling_beit.BeitDropPath
+class Dinov2DropPath(nn.Module):
+ """Drop paths (Stochastic Depth) per sample (when applied in main path of residual blocks)."""
+
+ def __init__(self, drop_prob: Optional[float] = None) -> None:
+ super().__init__()
+ self.drop_prob = drop_prob
+
+ def forward(self, hidden_states: torch.Tensor) -> torch.Tensor:
+ return drop_path(hidden_states, self.drop_prob, self.training)
+
+ def extra_repr(self) -> str:
+ return "p={}".format(self.drop_prob)
+
+
+class Dinov2MLP(nn.Module):
+ def __init__(self, config) -> None:
+ super().__init__()
+ in_features = out_features = config.hidden_size
+ hidden_features = int(config.hidden_size * config.mlp_ratio)
+ self.fc1 = nn.Linear(in_features, hidden_features, bias=True)
+ if isinstance(config.hidden_act, str):
+ self.activation = ACT2FN[config.hidden_act]
+ else:
+ self.activation = config.hidden_act
+ self.fc2 = nn.Linear(hidden_features, out_features, bias=True)
+
+ def forward(self, hidden_state: torch.Tensor) -> torch.Tensor:
+ hidden_state = self.fc1(hidden_state)
+ hidden_state = self.activation(hidden_state)
+ hidden_state = self.fc2(hidden_state)
+ return hidden_state
+
+
+class Dinov2SwiGLUFFN(nn.Module):
+ def __init__(self, config) -> None:
+ super().__init__()
+ in_features = out_features = config.hidden_size
+ hidden_features = int(config.hidden_size * config.mlp_ratio)
+ hidden_features = (int(hidden_features * 2 / 3) + 7) // 8 * 8
+
+ self.weights_in = nn.Linear(in_features, 2 * hidden_features, bias=True)
+ self.weights_out = nn.Linear(hidden_features, out_features, bias=True)
+
+ def forward(self, hidden_state: torch.Tensor) -> torch.Tensor:
+ hidden_state = self.weights_in(hidden_state)
+ x1, x2 = hidden_state.chunk(2, dim=-1)
+ hidden = nn.functional.silu(x1) * x2
+ return self.weights_out(hidden)
+
+
+class Dinov2Layer(nn.Module, MemoryEfficientAttentionMixin):
+ """This corresponds to the Block class in the original implementation."""
+
+ def __init__(self, config: Dinov2Config) -> None:
+ super().__init__()
+
+ self.norm1 = nn.LayerNorm(config.hidden_size, eps=config.layer_norm_eps)
+ self.norm1_modulation = None
+ self.attention = Dinov2Attention(config)
+ self.layer_scale1 = Dinov2LayerScale(config)
+ self.drop_path1 = (
+ Dinov2DropPath(config.drop_path_rate)
+ if config.drop_path_rate > 0.0
+ else nn.Identity()
+ )
+
+ self.norm2 = nn.LayerNorm(config.hidden_size, eps=config.layer_norm_eps)
+ self.norm2_modulation = None
+
+ if config.use_swiglu_ffn:
+ self.mlp = Dinov2SwiGLUFFN(config)
+ else:
+ self.mlp = Dinov2MLP(config)
+ self.layer_scale2 = Dinov2LayerScale(config)
+ self.drop_path2 = (
+ Dinov2DropPath(config.drop_path_rate)
+ if config.drop_path_rate > 0.0
+ else nn.Identity()
+ )
+
+ def forward(
+ self,
+ hidden_states: torch.Tensor,
+ head_mask: Optional[torch.Tensor] = None,
+ modulation_cond: Optional[torch.Tensor] = None,
+ output_attentions: bool = False,
+ ) -> Union[Tuple[torch.Tensor, torch.Tensor], Tuple[torch.Tensor]]:
+ hidden_states_norm = self.norm1(hidden_states)
+ if self.norm1_modulation is not None:
+ assert modulation_cond is not None
+ hidden_states_norm = self.norm1_modulation(
+ hidden_states_norm, modulation_cond
+ )
+ self_attention_outputs = self.attention(
+ hidden_states_norm, # in Dinov2, layernorm is applied before self-attention
+ head_mask,
+ output_attentions=output_attentions,
+ )
+ attention_output = self_attention_outputs[0]
+
+ attention_output = self.layer_scale1(attention_output)
+ outputs = self_attention_outputs[
+ 1:
+ ] # add self attentions if we output attention weights
+
+ # first residual connection
+ hidden_states = attention_output + hidden_states
+
+ # in Dinov2, layernorm is also applied after self-attention
+ layer_output = self.norm2(hidden_states)
+ if self.norm2_modulation is not None:
+ assert modulation_cond is not None
+ layer_output = self.norm2_modulation(layer_output, modulation_cond)
+ layer_output = self.mlp(layer_output)
+ layer_output = self.layer_scale2(layer_output)
+
+ # second residual connection
+ layer_output = layer_output + hidden_states
+
+ outputs = (layer_output,) + outputs
+
+ return outputs
+
+ def register_ada_norm_modulation(self, norm1_mod: nn.Module, norm2_mod: nn.Module):
+ self.norm1_modulation = norm1_mod
+ self.norm2_modulation = norm2_mod
+
+
+# Copied from transformers.models.vit.modeling_vit.ViTEncoder with ViT->Dinov2
+class Dinov2Encoder(nn.Module, MemoryEfficientAttentionMixin):
+ def __init__(self, config: Dinov2Config) -> None:
+ super().__init__()
+ self.config = config
+ self.layer = nn.ModuleList(
+ [Dinov2Layer(config) for _ in range(config.num_hidden_layers)]
+ )
+ self.gradient_checkpointing = False
+
+ def forward(
+ self,
+ hidden_states: torch.Tensor,
+ head_mask: Optional[torch.Tensor] = None,
+ modulation_cond: Optional[torch.Tensor] = None,
+ output_attentions: bool = False,
+ output_hidden_states: bool = False,
+ return_dict: bool = True,
+ ) -> Union[tuple, BaseModelOutput]:
+ all_hidden_states = () if output_hidden_states else None
+ all_self_attentions = () if output_attentions else None
+
+ for i, layer_module in enumerate(self.layer):
+ if output_hidden_states:
+ all_hidden_states = all_hidden_states + (hidden_states,)
+
+ layer_head_mask = head_mask[i] if head_mask is not None else None
+
+ if self.gradient_checkpointing and self.training:
+
+ def create_custom_forward(module):
+ def custom_forward(*inputs):
+ return module(*inputs, output_attentions)
+
+ return custom_forward
+
+ layer_outputs = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(layer_module),
+ hidden_states,
+ layer_head_mask,
+ modulation_cond,
+ use_reentrant=False,
+ )
+ else:
+ layer_outputs = layer_module(
+ hidden_states, layer_head_mask, modulation_cond, output_attentions
+ )
+
+ hidden_states = layer_outputs[0]
+
+ if output_attentions:
+ all_self_attentions = all_self_attentions + (layer_outputs[1],)
+
+ if output_hidden_states:
+ all_hidden_states = all_hidden_states + (hidden_states,)
+
+ if not return_dict:
+ return tuple(
+ v
+ for v in [hidden_states, all_hidden_states, all_self_attentions]
+ if v is not None
+ )
+ return BaseModelOutput(
+ last_hidden_state=hidden_states,
+ hidden_states=all_hidden_states,
+ attentions=all_self_attentions,
+ )
+
+
+class Dinov2PreTrainedModel(PreTrainedModel):
+ """
+ An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
+ models.
+ """
+
+ config_class = Dinov2Config
+ base_model_prefix = "dinov2"
+ main_input_name = "pixel_values"
+ supports_gradient_checkpointing = True
+
+ def _init_weights(self, module: Union[nn.Linear, nn.Conv2d, nn.LayerNorm]) -> None:
+ """Initialize the weights"""
+ if isinstance(module, (nn.Linear, nn.Conv2d)):
+ # Upcast the input in `fp32` and cast it back to desired `dtype` to avoid
+ # `trunc_normal_cpu` not implemented in `half` issues
+ module.weight.data = nn.init.trunc_normal_(
+ module.weight.data.to(torch.float32),
+ mean=0.0,
+ std=self.config.initializer_range,
+ ).to(module.weight.dtype)
+ if module.bias is not None:
+ module.bias.data.zero_()
+ elif isinstance(module, nn.LayerNorm):
+ module.bias.data.zero_()
+ module.weight.data.fill_(1.0)
+ elif isinstance(module, Dinov2Embeddings):
+ module.position_embeddings.data = nn.init.trunc_normal_(
+ module.position_embeddings.data.to(torch.float32),
+ mean=0.0,
+ std=self.config.initializer_range,
+ ).to(module.position_embeddings.dtype)
+
+ module.cls_token.data = nn.init.trunc_normal_(
+ module.cls_token.data.to(torch.float32),
+ mean=0.0,
+ std=self.config.initializer_range,
+ ).to(module.cls_token.dtype)
+
+ def _set_gradient_checkpointing(
+ self, module: Dinov2Encoder, value: bool = False
+ ) -> None:
+ if isinstance(module, Dinov2Encoder):
+ module.gradient_checkpointing = value
+
+
+DINOV2_START_DOCSTRING = r"""
+ This model is a PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) subclass. Use it
+ as a regular PyTorch Module and refer to the PyTorch documentation for all matter related to general usage and
+ behavior.
+
+ Parameters:
+ config ([`Dinov2Config`]): Model configuration class with all the parameters of the model.
+ Initializing with a config file does not load the weights associated with the model, only the
+ configuration. Check out the [`~PreTrainedModel.from_pretrained`] method to load the model weights.
+"""
+
+DINOV2_BASE_INPUTS_DOCSTRING = r"""
+ Args:
+ pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, height, width)`):
+ Pixel values. Pixel values can be obtained using [`AutoImageProcessor`]. See
+ [`BitImageProcessor.preprocess`] for details.
+
+ bool_masked_pos (`torch.BoolTensor` of shape `(batch_size, sequence_length)`):
+ Boolean masked positions. Indicates which patches are masked (1) and which aren't (0). Only relevant for
+ pre-training.
+
+ head_mask (`torch.FloatTensor` of shape `(num_heads,)` or `(num_layers, num_heads)`, *optional*):
+ Mask to nullify selected heads of the self-attention modules. Mask values selected in `[0, 1]`:
+
+ - 1 indicates the head is **not masked**,
+ - 0 indicates the head is **masked**.
+
+ output_attentions (`bool`, *optional*):
+ Whether or not to return the attentions tensors of all attention layers. See `attentions` under returned
+ tensors for more detail.
+ output_hidden_states (`bool`, *optional*):
+ Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors for
+ more detail.
+ return_dict (`bool`, *optional*):
+ Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
+"""
+
+DINOV2_INPUTS_DOCSTRING = r"""
+ Args:
+ pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, height, width)`):
+ Pixel values. Pixel values can be obtained using [`AutoImageProcessor`]. See
+ [`BitImageProcessor.preprocess`] for details.
+
+ head_mask (`torch.FloatTensor` of shape `(num_heads,)` or `(num_layers, num_heads)`, *optional*):
+ Mask to nullify selected heads of the self-attention modules. Mask values selected in `[0, 1]`:
+
+ - 1 indicates the head is **not masked**,
+ - 0 indicates the head is **masked**.
+
+ output_attentions (`bool`, *optional*):
+ Whether or not to return the attentions tensors of all attention layers. See `attentions` under returned
+ tensors for more detail.
+ output_hidden_states (`bool`, *optional*):
+ Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors for
+ more detail.
+ return_dict (`bool`, *optional*):
+ Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
+"""
+
+
+@dataclass
+class CustomBaseModelOutputWithPooling(BaseModelOutputWithPooling):
+ patch_embeddings: Optional[torch.FloatTensor] = None
+
+
+@add_start_docstrings(
+ "The bare DINOv2 Model transformer outputting raw hidden-states without any specific head on top.",
+ DINOV2_START_DOCSTRING,
+)
+class Dinov2Model(Dinov2PreTrainedModel, MemoryEfficientAttentionMixin):
+ def __init__(self, config: Dinov2Config):
+ super().__init__(config)
+ self.config = config
+
+ self.embeddings = Dinov2Embeddings(config)
+ self.encoder = Dinov2Encoder(config)
+
+ self.layernorm = nn.LayerNorm(config.hidden_size, eps=config.layer_norm_eps)
+
+ # Initialize weights and apply final processing
+ self.post_init()
+
+ def get_input_embeddings(self) -> Dinov2PatchEmbeddings:
+ return self.embeddings.patch_embeddings
+
+ def expand_input_channels(self, extra_input_channels: int) -> None:
+ if extra_input_channels == 0:
+ return
+ conv_old = self.embeddings.patch_embeddings.projection
+ conv_new = nn.Conv2d(
+ self.config.num_channels + extra_input_channels,
+ self.config.hidden_size,
+ kernel_size=self.config.patch_size,
+ stride=self.config.patch_size,
+ ).to(self.device)
+ with torch.no_grad():
+ conv_new.weight[:, :3] = conv_old.weight
+ conv_new.bias = conv_old.bias
+ self.embeddings.patch_embeddings.projection = conv_new
+ del conv_old
+
+ def _prune_heads(self, heads_to_prune: Dict[int, List[int]]) -> None:
+ """
+ Prunes heads of the model. heads_to_prune: dict of {layer_num: list of heads to prune in this layer} See base
+ class PreTrainedModel
+ """
+ for layer, heads in heads_to_prune.items():
+ self.encoder.layer[layer].attention.prune_heads(heads)
+
+ @add_start_docstrings_to_model_forward(DINOV2_BASE_INPUTS_DOCSTRING)
+ @add_code_sample_docstrings(
+ checkpoint=_CHECKPOINT_FOR_DOC,
+ output_type=BaseModelOutputWithPooling,
+ config_class=_CONFIG_FOR_DOC,
+ modality="vision",
+ expected_output=_EXPECTED_OUTPUT_SHAPE,
+ )
+ def forward(
+ self,
+ pixel_values: Optional[torch.Tensor] = None,
+ bool_masked_pos: Optional[torch.Tensor] = None,
+ head_mask: Optional[torch.Tensor] = None,
+ modulation_cond: Optional[torch.Tensor] = None,
+ output_attentions: Optional[bool] = None,
+ output_hidden_states: Optional[bool] = None,
+ return_dict: Optional[bool] = None,
+ ) -> Union[Tuple, BaseModelOutputWithPooling]:
+ output_attentions = (
+ output_attentions
+ if output_attentions is not None
+ else self.config.output_attentions
+ )
+ output_hidden_states = (
+ output_hidden_states
+ if output_hidden_states is not None
+ else self.config.output_hidden_states
+ )
+ return_dict = (
+ return_dict if return_dict is not None else self.config.use_return_dict
+ )
+
+ if pixel_values is None:
+ raise ValueError("You have to specify pixel_values")
+
+ # Prepare head mask if needed
+ # 1.0 in head_mask indicate we keep the head
+ # attention_probs has shape bsz x n_heads x N x N
+ # input head_mask has shape [num_heads] or [num_hidden_layers x num_heads]
+ # and head_mask is converted to shape [num_hidden_layers x batch x num_heads x seq_length x seq_length]
+ head_mask = self.get_head_mask(head_mask, self.config.num_hidden_layers)
+
+ embedding_output = self.embeddings(
+ pixel_values, bool_masked_pos=bool_masked_pos
+ )
+
+ encoder_outputs = self.encoder(
+ embedding_output,
+ head_mask=head_mask,
+ modulation_cond=modulation_cond,
+ output_attentions=output_attentions,
+ output_hidden_states=output_hidden_states,
+ return_dict=return_dict,
+ )
+ sequence_output = encoder_outputs[0]
+ sequence_output = self.layernorm(sequence_output)
+ pooled_output = sequence_output[:, 0, :]
+
+ if not return_dict:
+ head_outputs = (sequence_output, pooled_output)
+ return head_outputs + encoder_outputs[1:]
+
+ return CustomBaseModelOutputWithPooling(
+ last_hidden_state=sequence_output,
+ pooler_output=pooled_output,
+ hidden_states=encoder_outputs.hidden_states,
+ attentions=encoder_outputs.attentions,
+ patch_embeddings=embedding_output,
+ )
+
+ def set_gradient_checkpointing(self, value: bool = False) -> None:
+ self._set_gradient_checkpointing(self.encoder, value)
+
+
+@add_start_docstrings(
+ """
+ Dinov2 Model transformer with an image classification head on top (a linear layer on top of the final hidden state
+ of the [CLS] token) e.g. for ImageNet.
+ """,
+ DINOV2_START_DOCSTRING,
+)
+class Dinov2ForImageClassification(Dinov2PreTrainedModel):
+ def __init__(self, config: Dinov2Config) -> None:
+ super().__init__(config)
+
+ self.num_labels = config.num_labels
+ self.dinov2 = Dinov2Model(config)
+
+ # Classifier head
+ self.classifier = (
+ nn.Linear(config.hidden_size * 2, config.num_labels)
+ if config.num_labels > 0
+ else nn.Identity()
+ )
+
+ # Initialize weights and apply final processing
+ self.post_init()
+
+ @add_start_docstrings_to_model_forward(DINOV2_INPUTS_DOCSTRING)
+ @add_code_sample_docstrings(
+ checkpoint=_IMAGE_CLASS_CHECKPOINT,
+ output_type=ImageClassifierOutput,
+ config_class=_CONFIG_FOR_DOC,
+ )
+ def forward(
+ self,
+ pixel_values: Optional[torch.Tensor] = None,
+ head_mask: Optional[torch.Tensor] = None,
+ labels: Optional[torch.Tensor] = None,
+ output_attentions: Optional[bool] = None,
+ output_hidden_states: Optional[bool] = None,
+ return_dict: Optional[bool] = None,
+ ) -> Union[tuple, ImageClassifierOutput]:
+ r"""
+ labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
+ Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
+ config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
+ `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
+ """
+ return_dict = (
+ return_dict if return_dict is not None else self.config.use_return_dict
+ )
+
+ outputs = self.dinov2(
+ pixel_values,
+ head_mask=head_mask,
+ output_attentions=output_attentions,
+ output_hidden_states=output_hidden_states,
+ return_dict=return_dict,
+ )
+
+ sequence_output = outputs[0] # batch_size, sequence_length, hidden_size
+
+ cls_token = sequence_output[:, 0]
+ patch_tokens = sequence_output[:, 1:]
+
+ linear_input = torch.cat([cls_token, patch_tokens.mean(dim=1)], dim=1)
+
+ logits = self.classifier(linear_input)
+
+ loss = None
+ if labels is not None:
+ # move labels to correct device to enable model parallelism
+ labels = labels.to(logits.device)
+ if self.config.problem_type is None:
+ if self.num_labels == 1:
+ self.config.problem_type = "regression"
+ elif self.num_labels > 1 and (
+ labels.dtype == torch.long or labels.dtype == torch.int
+ ):
+ self.config.problem_type = "single_label_classification"
+ else:
+ self.config.problem_type = "multi_label_classification"
+
+ if self.config.problem_type == "regression":
+ loss_fct = MSELoss()
+ if self.num_labels == 1:
+ loss = loss_fct(logits.squeeze(), labels.squeeze())
+ else:
+ loss = loss_fct(logits, labels)
+ elif self.config.problem_type == "single_label_classification":
+ loss_fct = CrossEntropyLoss()
+ loss = loss_fct(logits.view(-1, self.num_labels), labels.view(-1))
+ elif self.config.problem_type == "multi_label_classification":
+ loss_fct = BCEWithLogitsLoss()
+ loss = loss_fct(logits, labels)
+
+ if not return_dict:
+ output = (logits,) + outputs[2:]
+ return ((loss,) + output) if loss is not None else output
+
+ return ImageClassifierOutput(
+ loss=loss,
+ logits=logits,
+ hidden_states=outputs.hidden_states,
+ attentions=outputs.attentions,
+ )
+
+
+@add_start_docstrings(
+ """
+ Dinov2 backbone, to be used with frameworks like DETR and MaskFormer.
+ """,
+ DINOV2_START_DOCSTRING,
+)
+class Dinov2Backbone(Dinov2PreTrainedModel, BackboneMixin):
+ def __init__(self, config):
+ super().__init__(config)
+ super()._init_backbone(config)
+
+ self.num_features = [
+ config.hidden_size for _ in range(config.num_hidden_layers + 1)
+ ]
+ self.embeddings = Dinov2Embeddings(config)
+ self.encoder = Dinov2Encoder(config)
+
+ self.layernorm = nn.LayerNorm(config.hidden_size, eps=config.layer_norm_eps)
+
+ # Initialize weights and apply final processing
+ self.post_init()
+
+ def get_input_embeddings(self) -> Dinov2PatchEmbeddings:
+ return self.embeddings.patch_embeddings
+
+ @add_start_docstrings_to_model_forward(DINOV2_INPUTS_DOCSTRING)
+ @replace_return_docstrings(output_type=BackboneOutput, config_class=_CONFIG_FOR_DOC)
+ def forward(
+ self,
+ pixel_values: torch.Tensor,
+ output_hidden_states: Optional[bool] = None,
+ output_attentions: Optional[bool] = None,
+ return_dict: Optional[bool] = None,
+ ) -> BackboneOutput:
+ """
+ Returns:
+
+ Examples:
+
+ ```python
+ >>> from transformers import AutoImageProcessor, AutoBackbone
+ >>> import torch
+ >>> from PIL import Image
+ >>> import requests
+
+ >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
+ >>> image = Image.open(requests.get(url, stream=True).raw)
+
+ >>> processor = AutoImageProcessor.from_pretrained("facebook/dinov2-base")
+ >>> model = AutoBackbone.from_pretrained(
+ ... "facebook/dinov2-base", out_features=["stage2", "stage5", "stage8", "stage11"]
+ ... )
+
+ >>> inputs = processor(image, return_tensors="pt")
+
+ >>> outputs = model(**inputs)
+ >>> feature_maps = outputs.feature_maps
+ >>> list(feature_maps[-1].shape)
+ [1, 768, 16, 16]
+ ```"""
+ return_dict = (
+ return_dict if return_dict is not None else self.config.use_return_dict
+ )
+ output_hidden_states = (
+ output_hidden_states
+ if output_hidden_states is not None
+ else self.config.output_hidden_states
+ )
+ output_attentions = (
+ output_attentions
+ if output_attentions is not None
+ else self.config.output_attentions
+ )
+
+ embedding_output = self.embeddings(pixel_values)
+
+ outputs = self.encoder(
+ embedding_output,
+ output_hidden_states=True,
+ output_attentions=output_attentions,
+ return_dict=return_dict,
+ )
+
+ hidden_states = outputs.hidden_states if return_dict else outputs[1]
+
+ feature_maps = ()
+ for stage, hidden_state in zip(self.stage_names, hidden_states):
+ if stage in self.out_features:
+ if self.config.apply_layernorm:
+ hidden_state = self.layernorm(hidden_state)
+ if self.config.reshape_hidden_states:
+ batch_size, _, height, width = pixel_values.shape
+ patch_size = self.config.patch_size
+ hidden_state = hidden_state[:, 1:, :].reshape(
+ batch_size, width // patch_size, height // patch_size, -1
+ )
+ hidden_state = hidden_state.permute(0, 3, 1, 2).contiguous()
+ feature_maps += (hidden_state,)
+
+ if not return_dict:
+ if output_hidden_states:
+ output = (feature_maps,) + outputs[1:]
+ else:
+ output = (feature_maps,) + outputs[2:]
+ return output
+
+ return BackboneOutput(
+ feature_maps=feature_maps,
+ hidden_states=outputs.hidden_states if output_hidden_states else None,
+ attentions=outputs.attentions if output_attentions else None,
+ )
+
+
+class CustomPatchEmbeddings(nn.Module):
+ """
+ This class turns `pixel_values` of shape `(batch_size, num_channels, height, width)` into the initial
+ `hidden_states` (patch embeddings) of shape `(batch_size, seq_length, hidden_size)` to be consumed by a
+ Transformer.
+ """
+
+ def __init__(
+ self, image_size: int, patch_size: int, num_channels: int, hidden_size: int
+ ):
+ super().__init__()
+
+ image_size = (
+ image_size
+ if isinstance(image_size, collections.abc.Iterable)
+ else (image_size, image_size)
+ )
+ patch_size = (
+ patch_size
+ if isinstance(patch_size, collections.abc.Iterable)
+ else (patch_size, patch_size)
+ )
+ num_patches = (image_size[1] // patch_size[1]) * (
+ image_size[0] // patch_size[0]
+ )
+ self.image_size = image_size
+ self.patch_size = patch_size
+ self.num_channels = num_channels
+ self.num_patches = num_patches
+
+ self.projection = nn.Conv2d(
+ num_channels, hidden_size, kernel_size=patch_size, stride=patch_size
+ )
+
+ def forward(self, pixel_values: torch.Tensor) -> torch.Tensor:
+ num_channels = pixel_values.shape[1]
+ if num_channels != self.num_channels:
+ raise ValueError(
+ "Make sure that the channel dimension of the pixel values match with the one set in the configuration."
+ f" Expected {self.num_channels} but got {num_channels}."
+ )
+ embeddings = self.projection(pixel_values).flatten(2).transpose(1, 2)
+ return embeddings
+
+
+class CustomEmbeddings(nn.Module):
+ """
+ Construct the CLS token, mask token, position and patch embeddings.
+ """
+
+ def __init__(
+ self, image_size: int, patch_size: int, num_channels: int, hidden_size: int
+ ) -> None:
+ super().__init__()
+
+ self.image_size = image_size
+ self.patch_size = patch_size
+ self.num_channels = num_channels
+ self.hidden_size = hidden_size
+
+ self.cls_token = nn.Parameter(torch.randn(1, 1, self.hidden_size))
+
+ self.patch_embeddings = CustomPatchEmbeddings(
+ image_size, patch_size, num_channels, hidden_size
+ )
+ num_patches = self.patch_embeddings.num_patches
+ self.position_embeddings = nn.Parameter(
+ torch.randn(1, num_patches + 1, self.hidden_size)
+ )
+
+ def interpolate_pos_encoding(
+ self, embeddings: torch.Tensor, height: int, width: int
+ ) -> torch.Tensor:
+ """
+ This method allows to interpolate the pre-trained position encodings, to be able to use the model on higher
+ resolution images.
+
+ Source:
+ https://github.com/facebookresearch/dino/blob/de9ee3df6cf39fac952ab558447af1fa1365362a/vision_transformer.py#L174
+ """
+
+ num_patches = embeddings.shape[1] - 1
+ num_positions = self.position_embeddings.shape[1] - 1
+ if num_patches == num_positions and height == width:
+ return self.position_embeddings
+ class_pos_embed = self.position_embeddings[:, 0]
+ patch_pos_embed = self.position_embeddings[:, 1:]
+ dim = embeddings.shape[-1]
+ height = height // self.patch_size
+ width = width // self.patch_size
+ # we add a small number to avoid floating point error in the interpolation
+ # see discussion at https://github.com/facebookresearch/dino/issues/8
+ height, width = height + 0.1, width + 0.1
+ patch_pos_embed = patch_pos_embed.reshape(
+ 1, int(math.sqrt(num_positions)), int(math.sqrt(num_positions)), dim
+ )
+ patch_pos_embed = patch_pos_embed.permute(0, 3, 1, 2)
+ patch_pos_embed = nn.functional.interpolate(
+ patch_pos_embed,
+ scale_factor=(
+ height / math.sqrt(num_positions),
+ width / math.sqrt(num_positions),
+ ),
+ mode="bicubic",
+ align_corners=False,
+ )
+ if (
+ int(height) != patch_pos_embed.shape[-2]
+ or int(width) != patch_pos_embed.shape[-1]
+ ):
+ raise ValueError(
+ "Width or height does not match with the interpolated position embeddings"
+ )
+ patch_pos_embed = patch_pos_embed.permute(0, 2, 3, 1).view(1, -1, dim)
+ return torch.cat((class_pos_embed.unsqueeze(0), patch_pos_embed), dim=1)
+
+ def forward(
+ self,
+ pixel_values: torch.Tensor,
+ ) -> torch.Tensor:
+ batch_size, _, height, width = pixel_values.shape
+ patch_embeddings = self.patch_embeddings(pixel_values)
+ embeddings = patch_embeddings
+
+ # add the [CLS] token to the embedded patch tokens
+ cls_tokens = self.cls_token.expand(batch_size, -1, -1)
+ embeddings = torch.cat((cls_tokens, embeddings), dim=1)
+
+ # add positional encoding to each token
+ embeddings = embeddings + self.interpolate_pos_encoding(
+ embeddings, height, width
+ )
+
+ return embeddings
diff --git a/3D_Stage/lrm/models/tokenizers/image.py b/3D_Stage/lrm/models/tokenizers/image.py
new file mode 100644
index 0000000000000000000000000000000000000000..1663470778c514654eaa63e104bc511e4783ad47
--- /dev/null
+++ b/3D_Stage/lrm/models/tokenizers/image.py
@@ -0,0 +1,268 @@
+from dataclasses import dataclass
+import random
+
+import torch
+import torch.nn as nn
+from einops import rearrange
+
+from ...utils.base import BaseModule
+from .dinov2 import Dinov2Model, CustomEmbeddings
+from ..transformers.attention import Modulation
+from ...utils.typing import *
+
+
+class NaiveImageTokenizer(BaseModule):
+ @dataclass
+ class Config(BaseModule.Config):
+ num_tokens: int = 1024
+ num_channels: int = 768
+
+ cfg: Config
+
+ def configure(self) -> None:
+ super().configure()
+
+ def forward(self, images: Float[Tensor, "B N C H W"]) -> Float[Tensor, "B Ct Nt"]:
+ return torch.rand(
+ (
+ images.shape[0],
+ self.cfg.num_channels,
+ self.cfg.num_tokens,
+ ),
+ device=images.device,
+ dtype=images.dtype,
+ )
+
+ def detokenize(self, *args, **kwargs):
+ raise NotImplementedError
+
+
+class DINOV2SingleImageTokenizer(BaseModule):
+ @dataclass
+ class Config(BaseModule.Config):
+ pretrained_model_name_or_path: str = "facebook/dinov2-base"
+ width: int = 224
+ height: int = 224
+ modulation: bool = False
+ modulation_zero_init: bool = False
+ modulation_single_layer: bool = False
+ modulation_cond_dim: int = 16
+ freeze_backbone_params: bool = True
+ enable_memory_efficient_attention: bool = False
+ enable_gradient_checkpointing: bool = False
+ use_patch_embeddings: bool = False
+ patch_embeddings_aggr_method: str = "concat"
+ append_plucker_rays: bool = False
+ drop_rate: float = 0.0
+ drop_type: str = "all_but_first"
+
+ cfg: Config
+
+ def configure(self) -> None:
+ super().configure()
+ model: Dinov2Model
+
+ if self.cfg.freeze_backbone_params:
+ # freeze dino backbone parameters
+ self.register_non_module(
+ "model",
+ Dinov2Model.from_pretrained(self.cfg.pretrained_model_name_or_path).to(
+ self.device
+ ),
+ )
+
+ model = self.non_module("model")
+ for p in model.parameters():
+ p.requires_grad_(False)
+ model.eval()
+ else:
+ self.model = Dinov2Model.from_pretrained(
+ self.cfg.pretrained_model_name_or_path
+ ).to(self.device)
+ model = self.model
+
+ if self.cfg.append_plucker_rays:
+ model.expand_input_channels(6)
+
+ model.set_use_memory_efficient_attention_xformers(
+ self.cfg.enable_memory_efficient_attention
+ )
+ model.set_gradient_checkpointing(self.cfg.enable_gradient_checkpointing)
+
+ # add modulation
+ if self.cfg.modulation:
+ modulations = []
+ for layer in model.encoder.layer:
+ norm1_modulation = Modulation(
+ model.config.hidden_size,
+ self.cfg.modulation_cond_dim,
+ zero_init=self.cfg.modulation_zero_init,
+ single_layer=self.cfg.modulation_single_layer,
+ )
+ norm2_modulation = Modulation(
+ model.config.hidden_size,
+ self.cfg.modulation_cond_dim,
+ zero_init=self.cfg.modulation_zero_init,
+ single_layer=self.cfg.modulation_single_layer,
+ )
+ layer.register_ada_norm_modulation(norm1_modulation, norm2_modulation)
+ modulations += [norm1_modulation, norm2_modulation]
+ self.modulations = nn.ModuleList(modulations)
+
+ self.register_buffer(
+ "image_mean",
+ torch.as_tensor([0.485, 0.456, 0.406]).reshape(1, 1, 3, 1, 1),
+ persistent=False,
+ )
+ self.register_buffer(
+ "image_std",
+ torch.as_tensor([0.229, 0.224, 0.225]).reshape(1, 1, 3, 1, 1),
+ persistent=False,
+ )
+
+ def forward(
+ self,
+ images: Float[Tensor, "B *N C H W"],
+ modulation_cond: Optional[Float[Tensor, "B *N Cc"]],
+ plucker_rays: Optional[Float[Tensor, "B *N 6 H W"]],
+ **kwargs
+ ) -> Float[Tensor, "B *N Ct Nt"]:
+ model: Dinov2Model
+ if self.cfg.freeze_backbone_params:
+ model = self.non_module("model")
+ else:
+ model = self.model
+
+ packed = False
+ if images.ndim == 4:
+ packed = True
+ images = images.unsqueeze(1)
+ if modulation_cond is not None:
+ assert modulation_cond.ndim == 2
+ modulation_cond = modulation_cond.unsqueeze(1)
+ if plucker_rays is not None:
+ assert plucker_rays.ndim == 4
+ plucker_rays = plucker_rays.unsqueeze(1)
+
+ if (
+ self.training
+ and self.cfg.drop_rate > 0
+ and random.random() < self.cfg.drop_rate
+ ):
+ if self.cfg.drop_type == "all_but_first":
+ drop_func = lambda x: x if x is None else x[:, 0:1]
+ images = drop_func(images)
+ modulation_cond = drop_func(modulation_cond)
+ plucker_rays = drop_func(plucker_rays)
+ else:
+ raise NotImplementedError
+
+ batch_size, n_input_views = images.shape[:2]
+ images = (images - self.image_mean) / self.image_std
+ if self.cfg.append_plucker_rays and plucker_rays is not None:
+ images = torch.cat([images, plucker_rays], dim=2)
+ out = model(
+ rearrange(images, "B N C H W -> (B N) C H W"),
+ modulation_cond=rearrange(modulation_cond, "B N Cc -> (B N) Cc")
+ if modulation_cond is not None
+ else None,
+ )
+ local_features, global_features = out.last_hidden_state, out.pooler_output
+ if self.cfg.use_patch_embeddings:
+ patch_embeddings = out.patch_embeddings
+ if self.cfg.patch_embeddings_aggr_method == "concat":
+ local_features = torch.cat([local_features, patch_embeddings], dim=1)
+ elif self.cfg.patch_embeddings_aggr_method == "add":
+ local_features = local_features + patch_embeddings
+ else:
+ raise NotImplementedError
+ local_features = local_features.permute(0, 2, 1)
+ local_features = rearrange(
+ local_features, "(B N) Ct Nt -> B N Ct Nt", B=batch_size
+ )
+ if packed:
+ local_features = local_features.squeeze(1)
+
+ return local_features
+
+ def detokenize(self, *args, **kwargs):
+ raise NotImplementedError
+
+
+class DINOV2CustomLowLevelSingleImageTokenizer(DINOV2SingleImageTokenizer):
+ @dataclass
+ class Config(DINOV2SingleImageTokenizer.Config):
+ custom_embeddings_aggr_method: str = "concat"
+ custom_embeddings_scale: float = 1.0
+
+ cfg: Config
+
+ def configure(self) -> None:
+ super().configure()
+ self.custom_embeddings = CustomEmbeddings(
+ self.model.config.image_size,
+ self.model.config.patch_size,
+ self.model.config.num_channels,
+ self.model.config.hidden_size,
+ )
+ self.custom_embeddings.load_state_dict(
+ self.model.embeddings.state_dict(), strict=False
+ )
+
+ def forward(
+ self,
+ images: Float[Tensor, "B *N C H W"],
+ modulation_cond: Optional[Float[Tensor, "B *N Cc"]],
+ **kwargs
+ ) -> Float[Tensor, "B *N Ct Nt"]:
+ model: Dinov2Model
+ if self.cfg.freeze_backbone_params:
+ model = self.non_module("model")
+ else:
+ model = self.model
+
+ packed = False
+ if images.ndim == 4:
+ packed = True
+ images = images.unsqueeze(1)
+ if modulation_cond is not None:
+ assert modulation_cond.ndim == 2
+ modulation_cond = modulation_cond.unsqueeze(1)
+
+ batch_size, n_input_views = images.shape[:2]
+ images = (images - self.image_mean) / self.image_std
+ images = rearrange(images, "B N C H W -> (B N) C H W")
+ out = model(
+ images,
+ modulation_cond=rearrange(modulation_cond, "B N Cc -> (B N) Cc")
+ if modulation_cond is not None
+ else None,
+ )
+ local_features, global_features = out.last_hidden_state, out.pooler_output
+ if self.cfg.use_patch_embeddings:
+ patch_embeddings = out.patch_embeddings
+ if self.cfg.patch_embeddings_aggr_method == "concat":
+ local_features = torch.cat([local_features, patch_embeddings], dim=1)
+ elif self.cfg.patch_embeddings_aggr_method == "add":
+ local_features = local_features + patch_embeddings
+ else:
+ raise NotImplementedError
+
+ custom_embeddings = (
+ self.custom_embeddings(images) * self.cfg.custom_embeddings_scale
+ )
+ if self.cfg.custom_embeddings_aggr_method == "concat":
+ local_features = torch.cat([local_features, custom_embeddings], dim=1)
+ elif self.cfg.custom_embeddings_aggr_method == "add":
+ local_features = local_features + custom_embeddings
+ else:
+ raise NotImplementedError
+
+ local_features = local_features.permute(0, 2, 1)
+ local_features = rearrange(
+ local_features, "(B N) Ct Nt -> B N Ct Nt", B=batch_size
+ )
+ if packed:
+ local_features = local_features.squeeze(1)
+
+ return local_features
diff --git a/3D_Stage/lrm/models/tokenizers/triplane.py b/3D_Stage/lrm/models/tokenizers/triplane.py
new file mode 100644
index 0000000000000000000000000000000000000000..cfbbba59683fb30998c204eaf89536e1cbe06e01
--- /dev/null
+++ b/3D_Stage/lrm/models/tokenizers/triplane.py
@@ -0,0 +1,49 @@
+from dataclasses import dataclass
+import math
+
+import torch
+import torch.nn as nn
+from einops import rearrange, repeat
+
+from ...utils.base import BaseModule
+from ...utils.typing import *
+
+
+class TriplaneLearnablePositionalEmbedding(BaseModule):
+ @dataclass
+ class Config(BaseModule.Config):
+ plane_size: int = 32
+ num_channels: int = 1024
+
+ cfg: Config
+
+ def configure(self) -> None:
+ super().configure()
+ self.embeddings = nn.Parameter(
+ torch.randn(
+ (3, self.cfg.num_channels, self.cfg.plane_size, self.cfg.plane_size),
+ dtype=torch.float32,
+ )
+ * 1
+ / math.sqrt(self.cfg.num_channels)
+ )
+
+ def forward(self, batch_size: int) -> Float[Tensor, "B Ct Nt"]:
+ return rearrange(
+ repeat(self.embeddings, "Np Ct Hp Wp -> B Np Ct Hp Wp", B=batch_size),
+ "B Np Ct Hp Wp -> B Ct (Np Hp Wp)",
+ )
+
+ def detokenize(
+ self, tokens: Float[Tensor, "B Ct Nt"]
+ ) -> Float[Tensor, "B 3 Ct Hp Wp"]:
+ batch_size, Ct, Nt = tokens.shape
+ assert Nt == self.cfg.plane_size**2 * 3
+ assert Ct == self.cfg.num_channels
+ return rearrange(
+ tokens,
+ "B Ct (Np Hp Wp) -> B Np Ct Hp Wp",
+ Np=3,
+ Hp=self.cfg.plane_size,
+ Wp=self.cfg.plane_size,
+ )
diff --git a/3D_Stage/lrm/models/transformers/__init__.py b/3D_Stage/lrm/models/transformers/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/3D_Stage/lrm/models/transformers/__pycache__/__init__.cpython-310.pyc b/3D_Stage/lrm/models/transformers/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c6090d4e5d79ba1617856de316c9a54294378dac
Binary files /dev/null and b/3D_Stage/lrm/models/transformers/__pycache__/__init__.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/transformers/__pycache__/attention.cpython-310.pyc b/3D_Stage/lrm/models/transformers/__pycache__/attention.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..bb88bb7f9b8be2d001e355951fc593bad7811938
Binary files /dev/null and b/3D_Stage/lrm/models/transformers/__pycache__/attention.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/transformers/__pycache__/transformer_1d.cpython-310.pyc b/3D_Stage/lrm/models/transformers/__pycache__/transformer_1d.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3c2f12253f2a402e0f105f5bd4a861b86ad99997
Binary files /dev/null and b/3D_Stage/lrm/models/transformers/__pycache__/transformer_1d.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/models/transformers/attention.py b/3D_Stage/lrm/models/transformers/attention.py
new file mode 100644
index 0000000000000000000000000000000000000000..1b5891fcf694d94aa11385e057300841f2f4f326
--- /dev/null
+++ b/3D_Stage/lrm/models/transformers/attention.py
@@ -0,0 +1,669 @@
+# Copyright 2023 The HuggingFace Team. All rights reserved.
+#
+# 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.
+
+import torch
+import torch.nn.functional as F
+from torch import nn
+
+from diffusers.utils.torch_utils import maybe_allow_in_graph
+from diffusers.models.activations import get_activation
+from diffusers.models.attention_processor import Attention
+from diffusers.models.embeddings import CombinedTimestepLabelEmbeddings
+
+from ...utils.typing import *
+
+
+class MemoryEfficientAttentionMixin:
+ def enable_xformers_memory_efficient_attention(
+ self, attention_op: Optional[Callable] = None
+ ):
+ r"""
+ Enable memory efficient attention from [xFormers](https://facebookresearch.github.io/xformers/). When this
+ option is enabled, you should observe lower GPU memory usage and a potential speed up during inference. Speed
+ up during training is not guaranteed.
+
+
+
+ ⚠️ When memory efficient attention and sliced attention are both enabled, memory efficient attention takes
+ precedent.
+
+
+
+ Parameters:
+ attention_op (`Callable`, *optional*):
+ Override the default `None` operator for use as `op` argument to the
+ [`memory_efficient_attention()`](https://facebookresearch.github.io/xformers/components/ops.html#xformers.ops.memory_efficient_attention)
+ function of xFormers.
+
+ Examples:
+
+ ```py
+ >>> import torch
+ >>> from diffusers import DiffusionPipeline
+ >>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp
+
+ >>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", torch_dtype=torch.float16)
+ >>> pipe = pipe.to("cuda")
+ >>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
+ >>> # Workaround for not accepting attention shape using VAE for Flash Attention
+ >>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)
+ ```
+ """
+ self.set_use_memory_efficient_attention_xformers(True, attention_op)
+
+ def disable_xformers_memory_efficient_attention(self):
+ r"""
+ Disable memory efficient attention from [xFormers](https://facebookresearch.github.io/xformers/).
+ """
+ self.set_use_memory_efficient_attention_xformers(False)
+
+ def set_use_memory_efficient_attention_xformers(
+ self, valid: bool, attention_op: Optional[Callable] = None
+ ) -> None:
+ # Recursively walk through all the children.
+ # Any children which exposes the set_use_memory_efficient_attention_xformers method
+ # gets the message
+ def fn_recursive_set_mem_eff(module: torch.nn.Module):
+ if hasattr(module, "set_use_memory_efficient_attention_xformers"):
+ module.set_use_memory_efficient_attention_xformers(valid, attention_op)
+
+ for child in module.children():
+ fn_recursive_set_mem_eff(child)
+
+ for module in self.children():
+ if isinstance(module, torch.nn.Module):
+ fn_recursive_set_mem_eff(module)
+
+
+@maybe_allow_in_graph
+class GatedSelfAttentionDense(nn.Module):
+ r"""
+ A gated self-attention dense layer that combines visual features and object features.
+
+ Parameters:
+ query_dim (`int`): The number of channels in the query.
+ context_dim (`int`): The number of channels in the context.
+ n_heads (`int`): The number of heads to use for attention.
+ d_head (`int`): The number of channels in each head.
+ """
+
+ def __init__(self, query_dim: int, context_dim: int, n_heads: int, d_head: int):
+ super().__init__()
+
+ # we need a linear projection since we need cat visual feature and obj feature
+ self.linear = nn.Linear(context_dim, query_dim)
+
+ self.attn = Attention(query_dim=query_dim, heads=n_heads, dim_head=d_head)
+ self.ff = FeedForward(query_dim, activation_fn="geglu")
+
+ self.norm1 = nn.LayerNorm(query_dim)
+ self.norm2 = nn.LayerNorm(query_dim)
+
+ self.register_parameter("alpha_attn", nn.Parameter(torch.tensor(0.0)))
+ self.register_parameter("alpha_dense", nn.Parameter(torch.tensor(0.0)))
+
+ self.enabled = True
+
+ def forward(self, x: torch.Tensor, objs: torch.Tensor) -> torch.Tensor:
+ if not self.enabled:
+ return x
+
+ n_visual = x.shape[1]
+ objs = self.linear(objs)
+
+ x = (
+ x
+ + self.alpha_attn.tanh()
+ * self.attn(self.norm1(torch.cat([x, objs], dim=1)))[:, :n_visual, :]
+ )
+ x = x + self.alpha_dense.tanh() * self.ff(self.norm2(x))
+
+ return x
+
+
+@maybe_allow_in_graph
+class BasicTransformerBlock(nn.Module, MemoryEfficientAttentionMixin):
+ r"""
+ A basic Transformer block.
+
+ Parameters:
+ dim (`int`): The number of channels in the input and output.
+ num_attention_heads (`int`): The number of heads to use for multi-head attention.
+ attention_head_dim (`int`): The number of channels in each head.
+ dropout (`float`, *optional*, defaults to 0.0): The dropout probability to use.
+ cross_attention_dim (`int`, *optional*): The size of the encoder_hidden_states vector for cross attention.
+ activation_fn (`str`, *optional*, defaults to `"geglu"`): Activation function to be used in feed-forward.
+ num_embeds_ada_norm (:
+ obj: `int`, *optional*): The number of diffusion steps used during training. See `Transformer2DModel`.
+ attention_bias (:
+ obj: `bool`, *optional*, defaults to `False`): Configure if the attentions should contain a bias parameter.
+ only_cross_attention (`bool`, *optional*):
+ Whether to use only cross-attention layers. In this case two cross attention layers are used.
+ double_self_attention (`bool`, *optional*):
+ Whether to use two self-attention layers. In this case no cross attention layers are used.
+ upcast_attention (`bool`, *optional*):
+ Whether to upcast the attention computation to float32. This is useful for mixed precision training.
+ norm_elementwise_affine (`bool`, *optional*, defaults to `True`):
+ Whether to use learnable elementwise affine parameters for normalization.
+ norm_type (`str`, *optional*, defaults to `"layer_norm"`):
+ The normalization layer to use. Can be `"layer_norm"`, `"ada_norm"` or `"ada_norm_zero"`.
+ final_dropout (`bool` *optional*, defaults to False):
+ Whether to apply a final dropout after the last feed-forward layer.
+ attention_type (`str`, *optional*, defaults to `"default"`):
+ The type of attention to use. Can be `"default"` or `"gated"` or `"gated-text-image"`.
+ """
+
+ def __init__(
+ self,
+ dim: int,
+ num_attention_heads: int,
+ attention_head_dim: int,
+ dropout=0.0,
+ cross_attention_dim: Optional[int] = None,
+ activation_fn: str = "geglu",
+ num_embeds_ada_norm: Optional[int] = None,
+ cond_dim_ada_norm_continuous: Optional[int] = None,
+ attention_bias: bool = False,
+ only_cross_attention: bool = False,
+ double_self_attention: bool = False,
+ upcast_attention: bool = False,
+ norm_elementwise_affine: bool = True,
+ norm_type: str = "layer_norm",
+ final_dropout: bool = False,
+ attention_type: str = "default",
+ ):
+ super().__init__()
+ self.only_cross_attention = only_cross_attention
+
+ self.use_ada_layer_norm_zero = (
+ num_embeds_ada_norm is not None
+ ) and norm_type == "ada_norm_zero"
+ self.use_ada_layer_norm = (
+ num_embeds_ada_norm is not None
+ ) and norm_type == "ada_norm"
+ self.use_ada_layer_norm_continuous = (
+ cond_dim_ada_norm_continuous is not None
+ ) and norm_type == "ada_norm_continuous"
+
+ assert (
+ int(self.use_ada_layer_norm)
+ + int(self.use_ada_layer_norm_continuous)
+ + int(self.use_ada_layer_norm_zero)
+ <= 1
+ )
+
+ if norm_type in ("ada_norm", "ada_norm_zero") and num_embeds_ada_norm is None:
+ raise ValueError(
+ f"`norm_type` is set to {norm_type}, but `num_embeds_ada_norm` is not defined. Please make sure to"
+ f" define `num_embeds_ada_norm` if setting `norm_type` to {norm_type}."
+ )
+
+ # Define 3 blocks. Each block has its own normalization layer.
+ # 1. Self-Attn
+ if self.use_ada_layer_norm:
+ self.norm1 = AdaLayerNorm(dim, num_embeds_ada_norm)
+ elif self.use_ada_layer_norm_continuous:
+ self.norm1 = AdaLayerNormContinuous(dim, cond_dim_ada_norm_continuous)
+ elif self.use_ada_layer_norm_zero:
+ self.norm1 = AdaLayerNormZero(dim, num_embeds_ada_norm)
+ else:
+ self.norm1 = nn.LayerNorm(dim, elementwise_affine=norm_elementwise_affine)
+ self.attn1 = Attention(
+ query_dim=dim,
+ heads=num_attention_heads,
+ dim_head=attention_head_dim,
+ dropout=dropout,
+ bias=attention_bias,
+ cross_attention_dim=cross_attention_dim if only_cross_attention else None,
+ upcast_attention=upcast_attention,
+ )
+
+ # 2. Cross-Attn
+ if cross_attention_dim is not None or double_self_attention:
+ # We currently only use AdaLayerNormZero for self attention where there will only be one attention block.
+ # I.e. the number of returned modulation chunks from AdaLayerZero would not make sense if returned during
+ # the second cross attention block.
+ if self.use_ada_layer_norm:
+ self.norm2 = AdaLayerNorm(dim, num_embeds_ada_norm)
+ elif self.use_ada_layer_norm_continuous:
+ self.norm2 = AdaLayerNormContinuous(dim, cond_dim_ada_norm_continuous)
+ else:
+ self.norm2 = nn.LayerNorm(
+ dim, elementwise_affine=norm_elementwise_affine
+ )
+
+ self.attn2 = Attention(
+ query_dim=dim,
+ cross_attention_dim=cross_attention_dim
+ if not double_self_attention
+ else None,
+ heads=num_attention_heads,
+ dim_head=attention_head_dim,
+ dropout=dropout,
+ bias=attention_bias,
+ upcast_attention=upcast_attention,
+ ) # is self-attn if encoder_hidden_states is none
+ else:
+ self.norm2 = None
+ self.attn2 = None
+
+ # 3. Feed-forward
+ if self.use_ada_layer_norm_continuous:
+ self.norm3 = AdaLayerNormContinuous(dim, cond_dim_ada_norm_continuous)
+ else:
+ self.norm3 = nn.LayerNorm(dim, elementwise_affine=norm_elementwise_affine)
+ self.ff = FeedForward(
+ dim,
+ dropout=dropout,
+ activation_fn=activation_fn,
+ final_dropout=final_dropout,
+ )
+
+ # 4. Fuser
+ if attention_type == "gated" or attention_type == "gated-text-image":
+ self.fuser = GatedSelfAttentionDense(
+ dim, cross_attention_dim, num_attention_heads, attention_head_dim
+ )
+
+ # let chunk size default to None
+ self._chunk_size = None
+ self._chunk_dim = 0
+
+ def set_chunk_feed_forward(self, chunk_size: Optional[int], dim: int):
+ # Sets chunk feed-forward
+ self._chunk_size = chunk_size
+ self._chunk_dim = dim
+
+ def forward(
+ self,
+ hidden_states: torch.FloatTensor,
+ attention_mask: Optional[torch.FloatTensor] = None,
+ encoder_hidden_states: Optional[torch.FloatTensor] = None,
+ encoder_attention_mask: Optional[torch.FloatTensor] = None,
+ timestep: Optional[torch.LongTensor] = None,
+ modulation_cond: Optional[torch.FloatTensor] = None,
+ cross_attention_kwargs: Dict[str, Any] = None,
+ class_labels: Optional[torch.LongTensor] = None,
+ ) -> torch.FloatTensor:
+ # Notice that normalization is always applied before the real computation in the following blocks.
+ # 0. Self-Attention
+ if self.use_ada_layer_norm:
+ norm_hidden_states = self.norm1(hidden_states, timestep)
+ elif self.use_ada_layer_norm_continuous:
+ norm_hidden_states = self.norm1(hidden_states, modulation_cond)
+ elif self.use_ada_layer_norm_zero:
+ norm_hidden_states, gate_msa, shift_mlp, scale_mlp, gate_mlp = self.norm1(
+ hidden_states, timestep, class_labels, hidden_dtype=hidden_states.dtype
+ )
+ else:
+ norm_hidden_states = self.norm1(hidden_states)
+
+ # 1. Retrieve lora scale.
+ lora_scale = (
+ cross_attention_kwargs.get("scale", 1.0)
+ if cross_attention_kwargs is not None
+ else 1.0
+ )
+
+ # 2. Prepare GLIGEN inputs
+ cross_attention_kwargs = (
+ cross_attention_kwargs.copy() if cross_attention_kwargs is not None else {}
+ )
+ gligen_kwargs = cross_attention_kwargs.pop("gligen", None)
+
+ attn_output = self.attn1(
+ norm_hidden_states,
+ encoder_hidden_states=encoder_hidden_states
+ if self.only_cross_attention
+ else None,
+ attention_mask=attention_mask,
+ **cross_attention_kwargs,
+ )
+ if self.use_ada_layer_norm_zero:
+ attn_output = gate_msa.unsqueeze(1) * attn_output
+ hidden_states = attn_output + hidden_states
+
+ # 2.5 GLIGEN Control
+ if gligen_kwargs is not None:
+ hidden_states = self.fuser(hidden_states, gligen_kwargs["objs"])
+ # 2.5 ends
+
+ # 3. Cross-Attention
+ if self.attn2 is not None:
+ if self.use_ada_layer_norm:
+ norm_hidden_states = self.norm2(hidden_states, timestep)
+ elif self.use_ada_layer_norm_continuous:
+ norm_hidden_states = self.norm2(hidden_states, modulation_cond)
+ else:
+ norm_hidden_states = self.norm2(hidden_states)
+
+ attn_output = self.attn2(
+ norm_hidden_states,
+ encoder_hidden_states=encoder_hidden_states,
+ attention_mask=encoder_attention_mask,
+ **cross_attention_kwargs,
+ )
+ hidden_states = attn_output + hidden_states
+
+ # 4. Feed-forward
+ if self.use_ada_layer_norm_continuous:
+ norm_hidden_states = self.norm3(hidden_states, modulation_cond)
+ else:
+ norm_hidden_states = self.norm3(hidden_states)
+
+ if self.use_ada_layer_norm_zero:
+ norm_hidden_states = (
+ norm_hidden_states * (1 + scale_mlp[:, None]) + shift_mlp[:, None]
+ )
+
+ if self._chunk_size is not None:
+ # "feed_forward_chunk_size" can be used to save memory
+ if norm_hidden_states.shape[self._chunk_dim] % self._chunk_size != 0:
+ raise ValueError(
+ f"`hidden_states` dimension to be chunked: {norm_hidden_states.shape[self._chunk_dim]} has to be divisible by chunk size: {self._chunk_size}. Make sure to set an appropriate `chunk_size` when calling `unet.enable_forward_chunking`."
+ )
+
+ num_chunks = norm_hidden_states.shape[self._chunk_dim] // self._chunk_size
+ ff_output = torch.cat(
+ [
+ self.ff(hid_slice, scale=lora_scale)
+ for hid_slice in norm_hidden_states.chunk(
+ num_chunks, dim=self._chunk_dim
+ )
+ ],
+ dim=self._chunk_dim,
+ )
+ else:
+ ff_output = self.ff(norm_hidden_states, scale=lora_scale)
+
+ if self.use_ada_layer_norm_zero:
+ ff_output = gate_mlp.unsqueeze(1) * ff_output
+
+ hidden_states = ff_output + hidden_states
+
+ return hidden_states
+
+
+class FeedForward(nn.Module):
+ r"""
+ A feed-forward layer.
+
+ Parameters:
+ dim (`int`): The number of channels in the input.
+ dim_out (`int`, *optional*): The number of channels in the output. If not given, defaults to `dim`.
+ mult (`int`, *optional*, defaults to 4): The multiplier to use for the hidden dimension.
+ dropout (`float`, *optional*, defaults to 0.0): The dropout probability to use.
+ activation_fn (`str`, *optional*, defaults to `"geglu"`): Activation function to be used in feed-forward.
+ final_dropout (`bool` *optional*, defaults to False): Apply a final dropout.
+ """
+
+ def __init__(
+ self,
+ dim: int,
+ dim_out: Optional[int] = None,
+ mult: int = 4,
+ dropout: float = 0.0,
+ activation_fn: str = "geglu",
+ final_dropout: bool = False,
+ ):
+ super().__init__()
+ inner_dim = int(dim * mult)
+ dim_out = dim_out if dim_out is not None else dim
+ linear_cls = nn.Linear
+
+ if activation_fn == "gelu":
+ act_fn = GELU(dim, inner_dim)
+ if activation_fn == "gelu-approximate":
+ act_fn = GELU(dim, inner_dim, approximate="tanh")
+ elif activation_fn == "geglu":
+ act_fn = GEGLU(dim, inner_dim)
+ elif activation_fn == "geglu-approximate":
+ act_fn = ApproximateGELU(dim, inner_dim)
+
+ self.net = nn.ModuleList([])
+ # project in
+ self.net.append(act_fn)
+ # project dropout
+ self.net.append(nn.Dropout(dropout))
+ # project out
+ self.net.append(linear_cls(inner_dim, dim_out))
+ # FF as used in Vision Transformer, MLP-Mixer, etc. have a final dropout
+ if final_dropout:
+ self.net.append(nn.Dropout(dropout))
+
+ def forward(self, hidden_states: torch.Tensor, scale: float = 1.0) -> torch.Tensor:
+ for module in self.net:
+ hidden_states = module(hidden_states)
+ return hidden_states
+
+
+class GELU(nn.Module):
+ r"""
+ GELU activation function with tanh approximation support with `approximate="tanh"`.
+
+ Parameters:
+ dim_in (`int`): The number of channels in the input.
+ dim_out (`int`): The number of channels in the output.
+ approximate (`str`, *optional*, defaults to `"none"`): If `"tanh"`, use tanh approximation.
+ """
+
+ def __init__(self, dim_in: int, dim_out: int, approximate: str = "none"):
+ super().__init__()
+ self.proj = nn.Linear(dim_in, dim_out)
+ self.approximate = approximate
+
+ def gelu(self, gate: torch.Tensor) -> torch.Tensor:
+ if gate.device.type != "mps":
+ return F.gelu(gate, approximate=self.approximate)
+ # mps: gelu is not implemented for float16
+ return F.gelu(gate.to(dtype=torch.float32), approximate=self.approximate).to(
+ dtype=gate.dtype
+ )
+
+ def forward(self, hidden_states):
+ hidden_states = self.proj(hidden_states)
+ hidden_states = self.gelu(hidden_states)
+ return hidden_states
+
+
+class GEGLU(nn.Module):
+ r"""
+ A variant of the gated linear unit activation function from https://arxiv.org/abs/2002.05202.
+
+ Parameters:
+ dim_in (`int`): The number of channels in the input.
+ dim_out (`int`): The number of channels in the output.
+ """
+
+ def __init__(self, dim_in: int, dim_out: int):
+ super().__init__()
+ linear_cls = nn.Linear
+
+ self.proj = linear_cls(dim_in, dim_out * 2)
+
+ def gelu(self, gate: torch.Tensor) -> torch.Tensor:
+ if gate.device.type != "mps":
+ return F.gelu(gate)
+ # mps: gelu is not implemented for float16
+ return F.gelu(gate.to(dtype=torch.float32)).to(dtype=gate.dtype)
+
+ def forward(self, hidden_states, scale: float = 1.0):
+ args = ()
+ hidden_states, gate = self.proj(hidden_states, *args).chunk(2, dim=-1)
+ return hidden_states * self.gelu(gate)
+
+
+class ApproximateGELU(nn.Module):
+ r"""
+ The approximate form of Gaussian Error Linear Unit (GELU). For more details, see section 2:
+ https://arxiv.org/abs/1606.08415.
+
+ Parameters:
+ dim_in (`int`): The number of channels in the input.
+ dim_out (`int`): The number of channels in the output.
+ """
+
+ def __init__(self, dim_in: int, dim_out: int):
+ super().__init__()
+ self.proj = nn.Linear(dim_in, dim_out)
+
+ def forward(self, x: torch.Tensor) -> torch.Tensor:
+ x = self.proj(x)
+ return x * torch.sigmoid(1.702 * x)
+
+
+class AdaLayerNorm(nn.Module):
+ r"""
+ Norm layer modified to incorporate timestep embeddings.
+
+ Parameters:
+ embedding_dim (`int`): The size of each embedding vector.
+ num_embeddings (`int`): The size of the dictionary of embeddings.
+ """
+
+ def __init__(self, embedding_dim: int, num_embeddings: int):
+ super().__init__()
+ self.emb = nn.Embedding(num_embeddings, embedding_dim)
+ self.silu = nn.SiLU()
+ self.linear = nn.Linear(embedding_dim, embedding_dim * 2)
+ self.norm = nn.LayerNorm(embedding_dim, elementwise_affine=False)
+
+ def forward(self, x: torch.Tensor, timestep: torch.Tensor) -> torch.Tensor:
+ emb = self.linear(self.silu(self.emb(timestep)))
+ scale, shift = torch.chunk(emb, 2, dim=1)
+ x = self.norm(x) * (1 + scale.unsqueeze(1)) + shift.unsqueeze(1)
+ return x
+
+
+class AdaLayerNormContinuous(nn.Module):
+ r"""
+ Norm layer modified to incorporate arbitrary continuous embeddings.
+
+ Parameters:
+ embedding_dim (`int`): The size of each embedding vector.
+ """
+
+ def __init__(self, embedding_dim: int, condition_dim: int):
+ super().__init__()
+ self.silu = nn.SiLU()
+ self.linear1 = nn.Linear(condition_dim, condition_dim)
+ self.linear2 = nn.Linear(condition_dim, embedding_dim * 2)
+ self.norm = nn.LayerNorm(embedding_dim, elementwise_affine=False)
+
+ def forward(self, x: torch.Tensor, condition: torch.Tensor) -> torch.Tensor:
+ emb = self.linear2(self.silu(self.linear1(condition)))
+ scale, shift = torch.chunk(emb, 2, dim=1)
+ x = self.norm(x) * (1 + scale.unsqueeze(1)) + shift.unsqueeze(1)
+ return x
+
+
+class Modulation(nn.Module):
+ def __init__(self, embedding_dim: int, condition_dim: int, zero_init: bool = False, single_layer: bool = False):
+ super().__init__()
+ self.silu = nn.SiLU()
+ if single_layer:
+ self.linear1 = nn.Identity()
+ else:
+ self.linear1 = nn.Linear(condition_dim, condition_dim)
+
+ self.linear2 = nn.Linear(condition_dim, embedding_dim * 2)
+
+ # Only zero init the last linear layer
+ if zero_init:
+ nn.init.zeros_(self.linear2.weight)
+ nn.init.zeros_(self.linear2.bias)
+
+ def forward(self, x: torch.Tensor, condition: torch.Tensor) -> torch.Tensor:
+ emb = self.linear2(self.silu(self.linear1(condition)))
+ scale, shift = torch.chunk(emb, 2, dim=1)
+ x = x * (1 + scale.unsqueeze(1)) + shift.unsqueeze(1)
+ return x
+
+
+class AdaLayerNormZero(nn.Module):
+ r"""
+ Norm layer adaptive layer norm zero (adaLN-Zero).
+
+ Parameters:
+ embedding_dim (`int`): The size of each embedding vector.
+ num_embeddings (`int`): The size of the dictionary of embeddings.
+ """
+
+ def __init__(self, embedding_dim: int, num_embeddings: int):
+ super().__init__()
+
+ self.emb = CombinedTimestepLabelEmbeddings(num_embeddings, embedding_dim)
+
+ self.silu = nn.SiLU()
+ self.linear = nn.Linear(embedding_dim, 6 * embedding_dim, bias=True)
+ self.norm = nn.LayerNorm(embedding_dim, elementwise_affine=False, eps=1e-6)
+
+ def forward(
+ self,
+ x: torch.Tensor,
+ timestep: torch.Tensor,
+ class_labels: torch.LongTensor,
+ hidden_dtype: Optional[torch.dtype] = None,
+ ) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor]:
+ emb = self.linear(
+ self.silu(self.emb(timestep, class_labels, hidden_dtype=hidden_dtype))
+ )
+ shift_msa, scale_msa, gate_msa, shift_mlp, scale_mlp, gate_mlp = emb.chunk(
+ 6, dim=1
+ )
+ x = self.norm(x) * (1 + scale_msa[:, None]) + shift_msa[:, None]
+ return x, gate_msa, shift_mlp, scale_mlp, gate_mlp
+
+
+class AdaGroupNorm(nn.Module):
+ r"""
+ GroupNorm layer modified to incorporate timestep embeddings.
+
+ Parameters:
+ embedding_dim (`int`): The size of each embedding vector.
+ num_embeddings (`int`): The size of the dictionary of embeddings.
+ num_groups (`int`): The number of groups to separate the channels into.
+ act_fn (`str`, *optional*, defaults to `None`): The activation function to use.
+ eps (`float`, *optional*, defaults to `1e-5`): The epsilon value to use for numerical stability.
+ """
+
+ def __init__(
+ self,
+ embedding_dim: int,
+ out_dim: int,
+ num_groups: int,
+ act_fn: Optional[str] = None,
+ eps: float = 1e-5,
+ ):
+ super().__init__()
+ self.num_groups = num_groups
+ self.eps = eps
+
+ if act_fn is None:
+ self.act = None
+ else:
+ self.act = get_activation(act_fn)
+
+ self.linear = nn.Linear(embedding_dim, out_dim * 2)
+
+ def forward(self, x: torch.Tensor, emb: torch.Tensor) -> torch.Tensor:
+ if self.act:
+ emb = self.act(emb)
+ emb = self.linear(emb)
+ emb = emb[:, :, None, None]
+ scale, shift = emb.chunk(2, dim=1)
+
+ x = F.group_norm(x, self.num_groups, eps=self.eps)
+ x = x * (1 + scale) + shift
+ return x
diff --git a/3D_Stage/lrm/models/transformers/transformer_1d.py b/3D_Stage/lrm/models/transformers/transformer_1d.py
new file mode 100644
index 0000000000000000000000000000000000000000..7d03a488b6ffb6e5a5c87c3dd9c0130baf743472
--- /dev/null
+++ b/3D_Stage/lrm/models/transformers/transformer_1d.py
@@ -0,0 +1,252 @@
+from dataclasses import dataclass, field
+
+import torch
+import torch.nn.functional as F
+from torch import nn
+from diffusers.models.embeddings import ImagePositionalEmbeddings, PatchEmbed
+
+import lrm
+from ...utils.base import BaseModule
+from .attention import (
+ BasicTransformerBlock,
+ MemoryEfficientAttentionMixin,
+)
+from ...utils.typing import *
+
+
+class Transformer1D(BaseModule, MemoryEfficientAttentionMixin):
+ """
+ A 1D Transformer model for sequence data.
+
+ Parameters:
+ num_attention_heads (`int`, *optional*, defaults to 16): The number of heads to use for multi-head attention.
+ attention_head_dim (`int`, *optional*, defaults to 88): The number of channels in each head.
+ in_channels (`int`, *optional*):
+ The number of channels in the input and output (specify if the input is **continuous**).
+ num_layers (`int`, *optional*, defaults to 1): The number of layers of Transformer blocks to use.
+ dropout (`float`, *optional*, defaults to 0.0): The dropout probability to use.
+ cross_attention_dim (`int`, *optional*): The number of `encoder_hidden_states` dimensions to use.
+ activation_fn (`str`, *optional*, defaults to `"geglu"`): Activation function to use in feed-forward.
+ num_embeds_ada_norm ( `int`, *optional*):
+ The number of diffusion steps used during training. Pass if at least one of the norm_layers is
+ `AdaLayerNorm`. This is fixed during training since it is used to learn a number of embeddings that are
+ added to the hidden states.
+
+ During inference, you can denoise for up to but not more steps than `num_embeds_ada_norm`.
+ attention_bias (`bool`, *optional*):
+ Configure if the `TransformerBlocks` attention should contain a bias parameter.
+ """
+
+ @dataclass
+ class Config(BaseModule.Config):
+ num_attention_heads: int = 16
+ attention_head_dim: int = 88
+ in_channels: Optional[int] = None
+ out_channels: Optional[int] = None
+ num_layers: int = 1
+ dropout: float = 0.0
+ norm_num_groups: int = 32
+ cross_attention_dim: Optional[int] = None
+ attention_bias: bool = False
+ activation_fn: str = "geglu"
+ num_embeds_ada_norm: Optional[int] = None
+ cond_dim_ada_norm_continuous: Optional[int] = None
+ only_cross_attention: bool = False
+ double_self_attention: bool = False
+ upcast_attention: bool = False
+ norm_type: str = "layer_norm"
+ norm_elementwise_affine: bool = True
+ attention_type: str = "default"
+ enable_memory_efficient_attention: bool = False
+ gradient_checkpointing: bool = False
+
+ cfg: Config
+
+ def configure(self) -> None:
+ super().configure()
+
+ self.num_attention_heads = self.cfg.num_attention_heads
+ self.attention_head_dim = self.cfg.attention_head_dim
+ inner_dim = self.num_attention_heads * self.attention_head_dim
+
+ linear_cls = nn.Linear
+
+ if self.cfg.norm_type == "layer_norm" and (
+ self.cfg.num_embeds_ada_norm is not None
+ or self.cfg.cond_dim_ada_norm_continuous is not None
+ ):
+ raise ValueError("Incorrect norm_type.")
+
+ # 2. Define input layers
+ self.in_channels = self.cfg.in_channels
+
+ self.norm = torch.nn.GroupNorm(
+ num_groups=self.cfg.norm_num_groups,
+ num_channels=self.cfg.in_channels,
+ eps=1e-6,
+ affine=True,
+ )
+ self.proj_in = linear_cls(self.cfg.in_channels, inner_dim)
+
+ # 3. Define transformers blocks
+ self.transformer_blocks = nn.ModuleList(
+ [
+ BasicTransformerBlock(
+ inner_dim,
+ self.num_attention_heads,
+ self.attention_head_dim,
+ dropout=self.cfg.dropout,
+ cross_attention_dim=self.cfg.cross_attention_dim,
+ activation_fn=self.cfg.activation_fn,
+ num_embeds_ada_norm=self.cfg.num_embeds_ada_norm,
+ cond_dim_ada_norm_continuous=self.cfg.cond_dim_ada_norm_continuous,
+ attention_bias=self.cfg.attention_bias,
+ only_cross_attention=self.cfg.only_cross_attention,
+ double_self_attention=self.cfg.double_self_attention,
+ upcast_attention=self.cfg.upcast_attention,
+ norm_type=self.cfg.norm_type,
+ norm_elementwise_affine=self.cfg.norm_elementwise_affine,
+ attention_type=self.cfg.attention_type,
+ )
+ for d in range(self.cfg.num_layers)
+ ]
+ )
+
+ # 4. Define output layers
+ self.out_channels = (
+ self.cfg.in_channels
+ if self.cfg.out_channels is None
+ else self.cfg.out_channels
+ )
+
+ self.proj_out = linear_cls(inner_dim, self.cfg.in_channels)
+
+ self.gradient_checkpointing = self.cfg.gradient_checkpointing
+
+ self.set_use_memory_efficient_attention_xformers(
+ self.cfg.enable_memory_efficient_attention
+ )
+
+ def forward(
+ self,
+ hidden_states: torch.Tensor,
+ encoder_hidden_states: Optional[torch.Tensor] = None,
+ timestep: Optional[torch.LongTensor] = None,
+ modulation_cond: Optional[torch.FloatTensor] = None,
+ class_labels: Optional[torch.LongTensor] = None,
+ cross_attention_kwargs: Dict[str, Any] = None,
+ attention_mask: Optional[torch.Tensor] = None,
+ encoder_attention_mask: Optional[torch.Tensor] = None,
+ ):
+ """
+ The [`Transformer1DModel`] forward method.
+
+ Args:
+ hidden_states (`torch.LongTensor` of shape `(batch size, num latent pixels)` if discrete, `torch.FloatTensor` of shape `(batch size, channel, height, width)` if continuous):
+ Input `hidden_states`.
+ encoder_hidden_states ( `torch.FloatTensor` of shape `(batch size, sequence len, embed dims)`, *optional*):
+ Conditional embeddings for cross attention layer. If not given, cross-attention defaults to
+ self-attention.
+ timestep ( `torch.LongTensor`, *optional*):
+ Used to indicate denoising step. Optional timestep to be applied as an embedding in `AdaLayerNorm`.
+ class_labels ( `torch.LongTensor` of shape `(batch size, num classes)`, *optional*):
+ Used to indicate class labels conditioning. Optional class labels to be applied as an embedding in
+ `AdaLayerZeroNorm`.
+ cross_attention_kwargs ( `Dict[str, Any]`, *optional*):
+ A kwargs dictionary that if specified is passed along to the `AttentionProcessor` as defined under
+ `self.processor` in
+ [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).
+ attention_mask ( `torch.Tensor`, *optional*):
+ An attention mask of shape `(batch, key_tokens)` is applied to `encoder_hidden_states`. If `1` the mask
+ is kept, otherwise if `0` it is discarded. Mask will be converted into a bias, which adds large
+ negative values to the attention scores corresponding to "discard" tokens.
+ encoder_attention_mask ( `torch.Tensor`, *optional*):
+ Cross-attention mask applied to `encoder_hidden_states`. Two formats supported:
+
+ * Mask `(batch, sequence_length)` True = keep, False = discard.
+ * Bias `(batch, 1, sequence_length)` 0 = keep, -10000 = discard.
+
+ If `ndim == 2`: will be interpreted as a mask, then converted into a bias consistent with the format
+ above. This bias will be added to the cross-attention scores.
+ return_dict (`bool`, *optional*, defaults to `True`):
+ Whether or not to return a [`~models.unet_2d_condition.UNet2DConditionOutput`] instead of a plain
+ tuple.
+
+ Returns:
+ If `return_dict` is True, an [`~models.transformer_2d.Transformer2DModelOutput`] is returned, otherwise a
+ `tuple` where the first element is the sample tensor.
+ """
+ # ensure attention_mask is a bias, and give it a singleton query_tokens dimension.
+ # we may have done this conversion already, e.g. if we came here via UNet2DConditionModel#forward.
+ # we can tell by counting dims; if ndim == 2: it's a mask rather than a bias.
+ # expects mask of shape:
+ # [batch, key_tokens]
+ # adds singleton query_tokens dimension:
+ # [batch, 1, key_tokens]
+ # this helps to broadcast it as a bias over attention scores, which will be in one of the following shapes:
+ # [batch, heads, query_tokens, key_tokens] (e.g. torch sdp attn)
+ # [batch * heads, query_tokens, key_tokens] (e.g. xformers or classic attn)
+ if attention_mask is not None and attention_mask.ndim == 2:
+ # assume that mask is expressed as:
+ # (1 = keep, 0 = discard)
+ # convert mask into a bias that can be added to attention scores:
+ # (keep = +0, discard = -10000.0)
+ attention_mask = (1 - attention_mask.to(hidden_states.dtype)) * -10000.0
+ attention_mask = attention_mask.unsqueeze(1)
+
+ # convert encoder_attention_mask to a bias the same way we do for attention_mask
+ if encoder_attention_mask is not None and encoder_attention_mask.ndim == 2:
+ encoder_attention_mask = (
+ 1 - encoder_attention_mask.to(hidden_states.dtype)
+ ) * -10000.0
+ encoder_attention_mask = encoder_attention_mask.unsqueeze(1)
+
+ # 1. Input
+ batch, _, seq_len = hidden_states.shape
+ residual = hidden_states
+
+ hidden_states = self.norm(hidden_states)
+ inner_dim = hidden_states.shape[1]
+ hidden_states = hidden_states.permute(0, 2, 1).reshape(
+ batch, seq_len, inner_dim
+ )
+ hidden_states = self.proj_in(hidden_states)
+
+ # 2. Blocks
+ for block in self.transformer_blocks:
+ if self.training and self.gradient_checkpointing:
+ hidden_states = torch.utils.checkpoint.checkpoint(
+ block,
+ hidden_states,
+ attention_mask,
+ encoder_hidden_states,
+ encoder_attention_mask,
+ timestep,
+ modulation_cond,
+ cross_attention_kwargs,
+ class_labels,
+ use_reentrant=False,
+ )
+ else:
+ hidden_states = block(
+ hidden_states,
+ attention_mask=attention_mask,
+ encoder_hidden_states=encoder_hidden_states,
+ encoder_attention_mask=encoder_attention_mask,
+ timestep=timestep,
+ modulation_cond=modulation_cond,
+ cross_attention_kwargs=cross_attention_kwargs,
+ class_labels=class_labels,
+ )
+
+ # 3. Output
+ hidden_states = self.proj_out(hidden_states)
+ hidden_states = (
+ hidden_states.reshape(batch, seq_len, inner_dim)
+ .permute(0, 2, 1)
+ .contiguous()
+ )
+
+ output = hidden_states + residual
+
+ return output
diff --git a/3D_Stage/lrm/models/transformers/transformer_2d.py b/3D_Stage/lrm/models/transformers/transformer_2d.py
new file mode 100644
index 0000000000000000000000000000000000000000..2c31de6efebf0f3d1565d96e076870eb6979396a
--- /dev/null
+++ b/3D_Stage/lrm/models/transformers/transformer_2d.py
@@ -0,0 +1,414 @@
+from dataclasses import dataclass, field
+
+import torch
+import torch.nn.functional as F
+from torch import nn
+from diffusers.models.embeddings import ImagePositionalEmbeddings, PatchEmbed
+
+import lrm
+from ...utils.base import BaseModule
+from .attention import (
+ BasicTransformerBlock,
+ MemoryEfficientAttentionMixin,
+)
+from ...utils.typing import *
+
+
+class Transformer2D(BaseModule, MemoryEfficientAttentionMixin):
+ """
+ A 2D Transformer model for image-like data.
+
+ Parameters:
+ num_attention_heads (`int`, *optional*, defaults to 16): The number of heads to use for multi-head attention.
+ attention_head_dim (`int`, *optional*, defaults to 88): The number of channels in each head.
+ in_channels (`int`, *optional*):
+ The number of channels in the input and output (specify if the input is **continuous**).
+ num_layers (`int`, *optional*, defaults to 1): The number of layers of Transformer blocks to use.
+ dropout (`float`, *optional*, defaults to 0.0): The dropout probability to use.
+ cross_attention_dim (`int`, *optional*): The number of `encoder_hidden_states` dimensions to use.
+ sample_size (`int`, *optional*): The width of the latent images (specify if the input is **discrete**).
+ This is fixed during training since it is used to learn a number of position embeddings.
+ num_vector_embeds (`int`, *optional*):
+ The number of classes of the vector embeddings of the latent pixels (specify if the input is **discrete**).
+ Includes the class for the masked latent pixel.
+ activation_fn (`str`, *optional*, defaults to `"geglu"`): Activation function to use in feed-forward.
+ num_embeds_ada_norm ( `int`, *optional*):
+ The number of diffusion steps used during training. Pass if at least one of the norm_layers is
+ `AdaLayerNorm`. This is fixed during training since it is used to learn a number of embeddings that are
+ added to the hidden states.
+
+ During inference, you can denoise for up to but not more steps than `num_embeds_ada_norm`.
+ attention_bias (`bool`, *optional*):
+ Configure if the `TransformerBlocks` attention should contain a bias parameter.
+ """
+
+ @dataclass
+ class Config(BaseModule.Config):
+ num_attention_heads: int = 16
+ attention_head_dim: int = 88
+ in_channels: Optional[int] = None
+ out_channels: Optional[int] = None
+ num_layers: int = 1
+ dropout: float = 0.0
+ norm_num_groups: int = 32
+ cross_attention_dim: Optional[int] = None
+ attention_bias: bool = False
+ sample_size: Optional[int] = None
+ num_vector_embeds: Optional[int] = None
+ patch_size: Optional[int] = None
+ activation_fn: str = "geglu"
+ num_embeds_ada_norm: Optional[int] = None
+ use_linear_projection: bool = False
+ only_cross_attention: bool = False
+ double_self_attention: bool = False
+ upcast_attention: bool = False
+ norm_type: str = "layer_norm"
+ norm_elementwise_affine: bool = True
+ attention_type: str = "default"
+ enable_memory_efficient_attention: bool = False
+ gradient_checkpointing: bool = False
+
+ cfg: Config
+
+ def configure(self) -> None:
+ super().configure()
+
+ self.use_linear_projection = self.cfg.use_linear_projection
+ self.num_attention_heads = self.cfg.num_attention_heads
+ self.attention_head_dim = self.cfg.attention_head_dim
+ inner_dim = self.num_attention_heads * self.attention_head_dim
+
+ conv_cls = nn.Conv2d
+ linear_cls = nn.Linear
+
+ # 1. Transformer2DModel can process both standard continuous images of shape `(batch_size, num_channels, width, height)` as well as quantized image embeddings of shape `(batch_size, num_image_vectors)`
+ # Define whether input is continuous or discrete depending on configuration
+ self.is_input_continuous = (self.cfg.in_channels is not None) and (
+ self.cfg.patch_size is None
+ )
+ self.is_input_vectorized = self.cfg.num_vector_embeds is not None
+ self.is_input_patches = (
+ self.cfg.in_channels is not None and self.cfg.patch_size is not None
+ )
+
+ if (
+ self.cfg.norm_type == "layer_norm"
+ and self.cfg.num_embeds_ada_norm is not None
+ ):
+ deprecation_message = (
+ f"The configuration file of this model: {self.__class__} is outdated. `norm_type` is either not set or"
+ " incorrectly set to `'layer_norm'`.Make sure to set `norm_type` to `'ada_norm'` in the config."
+ " Please make sure to update the config accordingly as leaving `norm_type` might led to incorrect"
+ " results in future versions. If you have downloaded this checkpoint from the Hugging Face Hub, it"
+ " would be very nice if you could open a Pull request for the `transformer/config.json` file"
+ )
+ lrm.warn(deprecation_message)
+ self.cfg.norm_type = "ada_norm"
+
+ if self.is_input_continuous and self.is_input_vectorized:
+ raise ValueError(
+ f"Cannot define both `in_channels`: {self.cfg.in_channels} and `num_vector_embeds`: {self.cfg.num_vector_embeds}. Make"
+ " sure that either `in_channels` or `num_vector_embeds` is None."
+ )
+ elif self.is_input_vectorized and self.is_input_patches:
+ raise ValueError(
+ f"Cannot define both `num_vector_embeds`: {self.cfg.num_vector_embeds} and `patch_size`: {self.cfg.patch_size}. Make"
+ " sure that either `num_vector_embeds` or `num_patches` is None."
+ )
+ elif (
+ not self.is_input_continuous
+ and not self.is_input_vectorized
+ and not self.is_input_patches
+ ):
+ raise ValueError(
+ f"Has to define `in_channels`: {self.cfg.in_channels}, `num_vector_embeds`: {self.cfg.num_vector_embeds}, or patch_size:"
+ f" {self.cfg.patch_size}. Make sure that `in_channels`, `num_vector_embeds` or `num_patches` is not None."
+ )
+
+ # 2. Define input layers
+ if self.is_input_continuous:
+ self.in_channels = self.cfg.in_channels
+
+ self.norm = torch.nn.GroupNorm(
+ num_groups=self.cfg.norm_num_groups,
+ num_channels=self.cfg.in_channels,
+ eps=1e-6,
+ affine=True,
+ )
+ if self.cfg.use_linear_projection:
+ self.proj_in = linear_cls(self.cfg.in_channels, inner_dim)
+ else:
+ self.proj_in = conv_cls(
+ self.cfg.in_channels, inner_dim, kernel_size=1, stride=1, padding=0
+ )
+ elif self.is_input_vectorized:
+ assert (
+ self.cfg.sample_size is not None
+ ), "Transformer2DModel over discrete input must provide sample_size"
+ assert (
+ self.cfg.num_vector_embeds is not None
+ ), "Transformer2DModel over discrete input must provide num_embed"
+
+ self.height = self.cfg.sample_size
+ self.width = self.cfg.sample_size
+ self.num_vector_embeds = self.cfg.num_vector_embeds
+ self.num_latent_pixels = self.height * self.width
+
+ self.latent_image_embedding = ImagePositionalEmbeddings(
+ num_embed=self.cfg.num_vector_embeds,
+ embed_dim=inner_dim,
+ height=self.height,
+ width=self.width,
+ )
+ elif self.is_input_patches:
+ assert (
+ self.cfg.sample_size is not None
+ ), "Transformer2DModel over patched input must provide sample_size"
+
+ self.height = self.cfg.sample_size
+ self.width = self.cfg.sample_size
+
+ self.patch_size = self.cfg.patch_size
+ self.pos_embed = PatchEmbed(
+ height=self.cfg.sample_size,
+ width=self.cfg.sample_size,
+ patch_size=self.cfg.patch_size,
+ in_channels=self.cfg.in_channels,
+ embed_dim=inner_dim,
+ )
+
+ # 3. Define transformers blocks
+ self.transformer_blocks = nn.ModuleList(
+ [
+ BasicTransformerBlock(
+ inner_dim,
+ self.num_attention_heads,
+ self.attention_head_dim,
+ dropout=self.cfg.dropout,
+ cross_attention_dim=self.cfg.cross_attention_dim,
+ activation_fn=self.cfg.activation_fn,
+ num_embeds_ada_norm=self.cfg.num_embeds_ada_norm,
+ attention_bias=self.cfg.attention_bias,
+ only_cross_attention=self.cfg.only_cross_attention,
+ double_self_attention=self.cfg.double_self_attention,
+ upcast_attention=self.cfg.upcast_attention,
+ norm_type=self.cfg.norm_type,
+ norm_elementwise_affine=self.cfg.norm_elementwise_affine,
+ attention_type=self.cfg.attention_type,
+ )
+ for d in range(self.cfg.num_layers)
+ ]
+ )
+
+ # 4. Define output layers
+ self.out_channels = (
+ self.cfg.in_channels
+ if self.cfg.out_channels is None
+ else self.cfg.out_channels
+ )
+ if self.is_input_continuous:
+ # TODO: should use out_channels for continuous projections
+ if self.cfg.use_linear_projection:
+ self.proj_out = linear_cls(inner_dim, self.cfg.in_channels)
+ else:
+ self.proj_out = conv_cls(
+ inner_dim, self.cfg.in_channels, kernel_size=1, stride=1, padding=0
+ )
+ elif self.is_input_vectorized:
+ self.norm_out = nn.LayerNorm(inner_dim)
+ self.out = nn.Linear(inner_dim, self.num_vector_embeds - 1)
+ elif self.is_input_patches:
+ self.norm_out = nn.LayerNorm(inner_dim, elementwise_affine=False, eps=1e-6)
+ self.proj_out_1 = nn.Linear(inner_dim, 2 * inner_dim)
+ self.proj_out_2 = nn.Linear(
+ inner_dim, self.cfg.patch_size * self.cfg.patch_size * self.out_channels
+ )
+
+ self.gradient_checkpointing = self.cfg.gradient_checkpointing
+
+ self.set_use_memory_efficient_attention_xformers(
+ self.cfg.enable_memory_efficient_attention
+ )
+
+ def forward(
+ self,
+ hidden_states: torch.Tensor,
+ encoder_hidden_states: Optional[torch.Tensor] = None,
+ timestep: Optional[torch.LongTensor] = None,
+ class_labels: Optional[torch.LongTensor] = None,
+ cross_attention_kwargs: Dict[str, Any] = None,
+ attention_mask: Optional[torch.Tensor] = None,
+ encoder_attention_mask: Optional[torch.Tensor] = None,
+ ):
+ """
+ The [`Transformer2DModel`] forward method.
+
+ Args:
+ hidden_states (`torch.LongTensor` of shape `(batch size, num latent pixels)` if discrete, `torch.FloatTensor` of shape `(batch size, channel, height, width)` if continuous):
+ Input `hidden_states`.
+ encoder_hidden_states ( `torch.FloatTensor` of shape `(batch size, sequence len, embed dims)`, *optional*):
+ Conditional embeddings for cross attention layer. If not given, cross-attention defaults to
+ self-attention.
+ timestep ( `torch.LongTensor`, *optional*):
+ Used to indicate denoising step. Optional timestep to be applied as an embedding in `AdaLayerNorm`.
+ class_labels ( `torch.LongTensor` of shape `(batch size, num classes)`, *optional*):
+ Used to indicate class labels conditioning. Optional class labels to be applied as an embedding in
+ `AdaLayerZeroNorm`.
+ cross_attention_kwargs ( `Dict[str, Any]`, *optional*):
+ A kwargs dictionary that if specified is passed along to the `AttentionProcessor` as defined under
+ `self.processor` in
+ [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).
+ attention_mask ( `torch.Tensor`, *optional*):
+ An attention mask of shape `(batch, key_tokens)` is applied to `encoder_hidden_states`. If `1` the mask
+ is kept, otherwise if `0` it is discarded. Mask will be converted into a bias, which adds large
+ negative values to the attention scores corresponding to "discard" tokens.
+ encoder_attention_mask ( `torch.Tensor`, *optional*):
+ Cross-attention mask applied to `encoder_hidden_states`. Two formats supported:
+
+ * Mask `(batch, sequence_length)` True = keep, False = discard.
+ * Bias `(batch, 1, sequence_length)` 0 = keep, -10000 = discard.
+
+ If `ndim == 2`: will be interpreted as a mask, then converted into a bias consistent with the format
+ above. This bias will be added to the cross-attention scores.
+ return_dict (`bool`, *optional*, defaults to `True`):
+ Whether or not to return a [`~models.unet_2d_condition.UNet2DConditionOutput`] instead of a plain
+ tuple.
+
+ Returns:
+ If `return_dict` is True, an [`~models.transformer_2d.Transformer2DModelOutput`] is returned, otherwise a
+ `tuple` where the first element is the sample tensor.
+ """
+ # ensure attention_mask is a bias, and give it a singleton query_tokens dimension.
+ # we may have done this conversion already, e.g. if we came here via UNet2DConditionModel#forward.
+ # we can tell by counting dims; if ndim == 2: it's a mask rather than a bias.
+ # expects mask of shape:
+ # [batch, key_tokens]
+ # adds singleton query_tokens dimension:
+ # [batch, 1, key_tokens]
+ # this helps to broadcast it as a bias over attention scores, which will be in one of the following shapes:
+ # [batch, heads, query_tokens, key_tokens] (e.g. torch sdp attn)
+ # [batch * heads, query_tokens, key_tokens] (e.g. xformers or classic attn)
+ if attention_mask is not None and attention_mask.ndim == 2:
+ # assume that mask is expressed as:
+ # (1 = keep, 0 = discard)
+ # convert mask into a bias that can be added to attention scores:
+ # (keep = +0, discard = -10000.0)
+ attention_mask = (1 - attention_mask.to(hidden_states.dtype)) * -10000.0
+ attention_mask = attention_mask.unsqueeze(1)
+
+ # convert encoder_attention_mask to a bias the same way we do for attention_mask
+ if encoder_attention_mask is not None and encoder_attention_mask.ndim == 2:
+ encoder_attention_mask = (
+ 1 - encoder_attention_mask.to(hidden_states.dtype)
+ ) * -10000.0
+ encoder_attention_mask = encoder_attention_mask.unsqueeze(1)
+
+ # 1. Input
+ if self.is_input_continuous:
+ batch, _, height, width = hidden_states.shape
+ residual = hidden_states
+
+ hidden_states = self.norm(hidden_states)
+ if not self.use_linear_projection:
+ hidden_states = self.proj_in(hidden_states)
+ inner_dim = hidden_states.shape[1]
+ hidden_states = hidden_states.permute(0, 2, 3, 1).reshape(
+ batch, height * width, inner_dim
+ )
+ else:
+ inner_dim = hidden_states.shape[1]
+ hidden_states = hidden_states.permute(0, 2, 3, 1).reshape(
+ batch, height * width, inner_dim
+ )
+ hidden_states = self.proj_in(hidden_states)
+
+ elif self.is_input_vectorized:
+ hidden_states = self.latent_image_embedding(hidden_states)
+ elif self.is_input_patches:
+ hidden_states = self.pos_embed(hidden_states)
+
+ # 2. Blocks
+ for block in self.transformer_blocks:
+ if self.training and self.gradient_checkpointing:
+ hidden_states = torch.utils.checkpoint.checkpoint(
+ block,
+ hidden_states,
+ attention_mask,
+ encoder_hidden_states,
+ encoder_attention_mask,
+ timestep,
+ cross_attention_kwargs,
+ class_labels,
+ use_reentrant=False,
+ )
+ else:
+ hidden_states = block(
+ hidden_states,
+ attention_mask=attention_mask,
+ encoder_hidden_states=encoder_hidden_states,
+ encoder_attention_mask=encoder_attention_mask,
+ timestep=timestep,
+ cross_attention_kwargs=cross_attention_kwargs,
+ class_labels=class_labels,
+ )
+
+ # 3. Output
+ if self.is_input_continuous:
+ if not self.use_linear_projection:
+ hidden_states = (
+ hidden_states.reshape(batch, height, width, inner_dim)
+ .permute(0, 3, 1, 2)
+ .contiguous()
+ )
+ hidden_states = self.proj_out(hidden_states)
+ else:
+ hidden_states = self.proj_out(hidden_states)
+ hidden_states = (
+ hidden_states.reshape(batch, height, width, inner_dim)
+ .permute(0, 3, 1, 2)
+ .contiguous()
+ )
+
+ output = hidden_states + residual
+ elif self.is_input_vectorized:
+ hidden_states = self.norm_out(hidden_states)
+ logits = self.out(hidden_states)
+ # (batch, self.num_vector_embeds - 1, self.num_latent_pixels)
+ logits = logits.permute(0, 2, 1)
+
+ # log(p(x_0))
+ output = F.log_softmax(logits.double(), dim=1).float()
+ elif self.is_input_patches:
+ # TODO: cleanup!
+ conditioning = self.transformer_blocks[0].norm1.emb(
+ timestep, class_labels, hidden_dtype=hidden_states.dtype
+ )
+ shift, scale = self.proj_out_1(F.silu(conditioning)).chunk(2, dim=1)
+ hidden_states = (
+ self.norm_out(hidden_states) * (1 + scale[:, None]) + shift[:, None]
+ )
+ hidden_states = self.proj_out_2(hidden_states)
+
+ # unpatchify
+ height = width = int(hidden_states.shape[1] ** 0.5)
+ hidden_states = hidden_states.reshape(
+ shape=(
+ -1,
+ height,
+ width,
+ self.patch_size,
+ self.patch_size,
+ self.out_channels,
+ )
+ )
+ hidden_states = torch.einsum("nhwpqc->nchpwq", hidden_states)
+ output = hidden_states.reshape(
+ shape=(
+ -1,
+ self.out_channels,
+ height * self.patch_size,
+ width * self.patch_size,
+ )
+ )
+
+ return output
diff --git a/3D_Stage/lrm/systems/__init__.py b/3D_Stage/lrm/systems/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/3D_Stage/lrm/systems/__pycache__/__init__.cpython-310.pyc b/3D_Stage/lrm/systems/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cf1919ac3ec290a368a055e64a355edde16ef688
Binary files /dev/null and b/3D_Stage/lrm/systems/__pycache__/__init__.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/systems/__pycache__/base.cpython-310.pyc b/3D_Stage/lrm/systems/__pycache__/base.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..66b51a45d4db03f0487834316e3d3a4a2df3fbbe
Binary files /dev/null and b/3D_Stage/lrm/systems/__pycache__/base.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/systems/__pycache__/multiview_lrm.cpython-310.pyc b/3D_Stage/lrm/systems/__pycache__/multiview_lrm.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7f60105045ed31635a073319883ec154b5b32e62
Binary files /dev/null and b/3D_Stage/lrm/systems/__pycache__/multiview_lrm.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/systems/__pycache__/utils.cpython-310.pyc b/3D_Stage/lrm/systems/__pycache__/utils.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a534875804b82651fc6b50b133bb2fe0a5fb0f4b
Binary files /dev/null and b/3D_Stage/lrm/systems/__pycache__/utils.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/systems/base.py b/3D_Stage/lrm/systems/base.py
new file mode 100644
index 0000000000000000000000000000000000000000..885bef8328064bd3151f1883d7246bcd330ac6c0
--- /dev/null
+++ b/3D_Stage/lrm/systems/base.py
@@ -0,0 +1,283 @@
+import os
+from dataclasses import dataclass, field
+
+import pytorch_lightning as pl
+import torch.nn.functional as F
+
+import lrm
+from .utils import parse_optimizer, parse_scheduler
+from ..utils.base import (
+ Updateable,
+ update_end_if_possible,
+ update_if_possible,
+)
+from ..models.exporters.base import Exporter, ExporterOutput
+from ..utils.config import parse_structured
+from ..utils.misc import C, cleanup, get_device, load_module_weights
+from ..utils.saving import SaverMixin
+from ..utils.typing import *
+
+
+@dataclass
+class BaseLossConfig:
+ pass
+
+
+class BaseSystem(pl.LightningModule, Updateable, SaverMixin):
+ @dataclass
+ class Config:
+ loss: BaseLossConfig = BaseLossConfig()
+ optimizer: dict = field(default_factory=dict)
+ scheduler: Optional[dict] = None
+ weights: Optional[str] = None
+ weights_ignore_modules: Optional[List[str]] = None
+ weights_mapping: Optional[List[Dict[str, str]]] = None
+ check_train_every_n_steps: int = 0
+ check_val_limit_rank: int = 8
+ cleanup_after_validation_step: bool = False
+ cleanup_after_test_step: bool = False
+
+ exporter_cls: str = "lrm.models.exporters.mesh_exporter.MeshExporter"
+ exporter: dict = field(default_factory=lambda: {"fmt": "obj", "save_uv": False})
+
+ cfg: Config
+
+ def __init__(self, cfg, resumed=False) -> None:
+ super().__init__()
+ self.cfg = parse_structured(self.Config, cfg)
+ self._save_dir: Optional[str] = None
+ self._resumed: bool = resumed
+ self._resumed_eval: bool = False
+ self._resumed_eval_status: dict = {"global_step": 0, "current_epoch": 0}
+
+ self.configure()
+ print(self.cfg.weights)
+ if self.cfg.weights is not None:
+ self.load_weights(
+ self.cfg.weights,
+ self.cfg.weights_ignore_modules,
+ self.cfg.weights_mapping,
+ )
+ print("finish loading!!")
+ self.post_configure()
+
+ def load_weights(
+ self,
+ weights: str,
+ ignore_modules: Optional[List[str]] = None,
+ mapping: Optional[List[Dict[str, str]]] = None,
+ ):
+ state_dict, epoch, global_step = load_module_weights(
+ weights,
+ ignore_modules=ignore_modules,
+ mapping=mapping,
+ map_location="cpu",
+ )
+ self.load_state_dict(state_dict, strict=False)
+ # restore step-dependent states
+ self.do_update_step(epoch, global_step, on_load_weights=True)
+
+ def set_resume_status(self, current_epoch: int, global_step: int):
+ # restore correct epoch and global step in eval
+ self._resumed_eval = True
+ self._resumed_eval_status["current_epoch"] = current_epoch
+ self._resumed_eval_status["global_step"] = global_step
+
+ @property
+ def resumed(self):
+ # whether from resumed checkpoint
+ return self._resumed
+
+ @property
+ def true_global_step(self):
+ if self._resumed_eval:
+ return self._resumed_eval_status["global_step"]
+ else:
+ return self.global_step
+
+ @property
+ def true_current_epoch(self):
+ if self._resumed_eval:
+ return self._resumed_eval_status["current_epoch"]
+ else:
+ return self.current_epoch
+
+ def configure(self) -> None:
+ pass
+
+ def post_configure(self) -> None:
+ """
+ executed after weights are loaded
+ """
+ pass
+
+ def C(self, value: Any) -> float:
+ return C(value, self.true_current_epoch, self.true_global_step)
+
+ def configure_optimizers(self):
+ optim = parse_optimizer(self.cfg.optimizer, self)
+ ret = {
+ "optimizer": optim,
+ }
+ if self.cfg.scheduler is not None:
+ ret.update(
+ {
+ "lr_scheduler": parse_scheduler(self.cfg.scheduler, optim),
+ }
+ )
+ return ret
+
+ def on_fit_start(self) -> None:
+ if self._save_dir is not None:
+ lrm.info(f"Validation results will be saved to {self._save_dir}")
+ else:
+ lrm.warn(
+ f"Saving directory not set for the system, visualization results will not be saved"
+ )
+
+ def training_step(self, batch, batch_idx):
+ raise NotImplementedError
+
+ def check_train(self, batch, outputs, **kwargs):
+ if (
+ self.global_rank == 0
+ and self.cfg.check_train_every_n_steps > 0
+ and self.true_global_step % self.cfg.check_train_every_n_steps == 0
+ ):
+ self.on_check_train(batch, outputs, **kwargs)
+
+ def on_check_train(self, batch, outputs, **kwargs):
+ pass
+
+ def validation_step(self, batch, batch_idx):
+ raise NotImplementedError
+
+ def on_validation_epoch_end(self):
+ pass
+
+ def test_step(self, batch, batch_idx):
+ raise NotImplementedError
+
+ def on_test_epoch_end(self):
+ pass
+
+ def on_test_end(self) -> None:
+ if self._save_dir is not None:
+ lrm.info(f"Test results saved to {self._save_dir}")
+
+ def on_predict_start(self) -> None:
+ pass
+
+ def predict_step(self, batch, batch_idx):
+ batch_size = batch["index"].shape[0]
+ scene_codes = self(batch)
+ for b in range(batch_size):
+ if batch["view_index"][b, 0] == 0:
+ exporter_output: List[ExporterOutput] = self.exporter(
+ batch["index"][b][None], scene_codes[b][None]
+ )
+ for out in exporter_output:
+ save_func_name = f"save_{out.save_type}"
+ if not hasattr(self, save_func_name):
+ raise ValueError(
+ f"{save_func_name} not supported by the SaverMixin"
+ )
+ save_func = getattr(self, save_func_name)
+ save_func(
+ f"it{self.true_global_step}-export/{out.save_name}",
+ **out.params,
+ )
+ if self.exporter.cfg.save_video:
+ self.test_step(batch, batch_idx)
+
+ def on_predict_epoch_end(self) -> None:
+ if self.exporter.cfg.save_video:
+ self.on_test_epoch_end()
+
+ def on_predict_end(self) -> None:
+ if self._save_dir is not None:
+ lrm.info(f"Export assets saved to {self._save_dir}")
+
+ def preprocess_data(self, batch, stage):
+ pass
+
+ """
+ Implementing on_after_batch_transfer of DataModule does the same.
+ But on_after_batch_transfer does not support DP.
+ """
+
+ def on_train_batch_start(self, batch, batch_idx, unused=0):
+ self.preprocess_data(batch, "train")
+ self.dataset = self.trainer.train_dataloader.dataset
+ update_if_possible(self.dataset, self.true_current_epoch, self.true_global_step)
+ self.do_update_step(self.true_current_epoch, self.true_global_step)
+
+ def on_validation_batch_start(self, batch, batch_idx, dataloader_idx=0):
+ self.preprocess_data(batch, "validation")
+ self.dataset = self.trainer.val_dataloaders.dataset
+ update_if_possible(self.dataset, self.true_current_epoch, self.true_global_step)
+ self.do_update_step(self.true_current_epoch, self.true_global_step)
+
+ def on_test_batch_start(self, batch, batch_idx, dataloader_idx=0):
+ self.preprocess_data(batch, "test")
+ self.dataset = self.trainer.test_dataloaders.dataset
+ update_if_possible(self.dataset, self.true_current_epoch, self.true_global_step)
+ self.do_update_step(self.true_current_epoch, self.true_global_step)
+
+ def on_predict_batch_start(self, batch, batch_idx, dataloader_idx=0):
+ self.preprocess_data(batch, "predict")
+ self.dataset = self.trainer.predict_dataloaders.dataset
+ update_if_possible(self.dataset, self.true_current_epoch, self.true_global_step)
+ self.do_update_step(self.true_current_epoch, self.true_global_step)
+
+ def on_train_batch_end(self, outputs, batch, batch_idx):
+ self.dataset = self.trainer.train_dataloader.dataset
+ update_end_if_possible(
+ self.dataset, self.true_current_epoch, self.true_global_step
+ )
+ self.do_update_step_end(self.true_current_epoch, self.true_global_step)
+
+ def on_validation_batch_end(self, outputs, batch, batch_idx):
+ self.dataset = self.trainer.val_dataloaders.dataset
+ update_end_if_possible(
+ self.dataset, self.true_current_epoch, self.true_global_step
+ )
+ self.do_update_step_end(self.true_current_epoch, self.true_global_step)
+ if self.cfg.cleanup_after_validation_step:
+ # cleanup to save vram
+ cleanup()
+
+ def on_test_batch_end(self, outputs, batch, batch_idx):
+ self.dataset = self.trainer.test_dataloaders.dataset
+ update_end_if_possible(
+ self.dataset, self.true_current_epoch, self.true_global_step
+ )
+ self.do_update_step_end(self.true_current_epoch, self.true_global_step)
+ if self.cfg.cleanup_after_test_step:
+ # cleanup to save vram
+ cleanup()
+
+ def on_predict_batch_end(self, outputs, batch, batch_idx):
+ self.dataset = self.trainer.predict_dataloaders.dataset
+ update_end_if_possible(
+ self.dataset, self.true_current_epoch, self.true_global_step
+ )
+ self.do_update_step_end(self.true_current_epoch, self.true_global_step)
+ if self.cfg.cleanup_after_test_step:
+ # cleanup to save vram
+ cleanup()
+
+ def update_step(self, epoch: int, global_step: int, on_load_weights: bool = False):
+ pass
+
+ def on_before_optimizer_step(self, optimizer):
+ """
+ # some gradient-related debugging goes here, example:
+ from lightning.pytorch.utilities import grad_norm
+ norms = grad_norm(self.geometry, norm_type=2)
+ print(norms)
+ for name, p in self.named_parameters():
+ if p.grad is None:
+ lrm.info(f"{name} does not receive gradients!")
+ """
+ pass
diff --git a/3D_Stage/lrm/systems/multiview_lrm.py b/3D_Stage/lrm/systems/multiview_lrm.py
new file mode 100644
index 0000000000000000000000000000000000000000..5bec99b677f9402bc453e866cf7d517132f2d80e
--- /dev/null
+++ b/3D_Stage/lrm/systems/multiview_lrm.py
@@ -0,0 +1,335 @@
+from dataclasses import dataclass, field
+
+import torch
+import torch.nn.functional as F
+from einops import rearrange
+
+import lrm
+from lrm.systems.base import BaseLossConfig, BaseSystem
+from lrm.utils.ops import binary_cross_entropy, get_plucker_rays
+from lrm.utils.typing import *
+from lrm.models.lpips import LPIPS
+from lrm.utils.misc import time_recorder as tr
+
+
+@dataclass
+class MultiviewLRMLossConfig(BaseLossConfig):
+ lambda_mse: Any = 0.0
+ lambda_mse_coarse: Any = 0.0
+ lambda_smooth_l1: Any = 0.0
+ lambda_smooth_l1_coarse: Any = 0.0
+ lambda_lpips: Any = 0.0
+ lambda_lpips_coarse: Any = 0.0
+ lambda_mask: Any = 0.0
+ lambda_mask_coarse: Any = 0.0
+
+
+class MultiviewLRM(BaseSystem):
+ @dataclass
+ class Config(BaseSystem.Config):
+ loss: MultiviewLRMLossConfig = MultiviewLRMLossConfig()
+
+ camera_embedder_cls: str = ""
+ camera_embedder: dict = field(default_factory=dict)
+
+ image_tokenizer_cls: str = ""
+ image_tokenizer: dict = field(default_factory=dict)
+
+ tokenizer_cls: str = ""
+ tokenizer: dict = field(default_factory=dict)
+
+ backbone_cls: str = ""
+ backbone: dict = field(default_factory=dict)
+
+ post_processor_cls: str = ""
+ post_processor: dict = field(default_factory=dict)
+
+ decoder_cls: str = ""
+ decoder: dict = field(default_factory=dict)
+
+ material_cls: str = ""
+ material: dict = field(default_factory=dict)
+
+ background_cls: str = ""
+ background: dict = field(default_factory=dict)
+
+ renderer_cls: str = ""
+ renderer: dict = field(default_factory=dict)
+
+ resume_ckpt_path: str = ""
+
+ cfg: Config
+
+ def configure(self):
+ super().configure()
+ self.image_tokenizer = lrm.find(self.cfg.image_tokenizer_cls)(
+ self.cfg.image_tokenizer
+ )
+ if self.cfg.image_tokenizer.modulation:
+ self.camera_embedder = lrm.find(self.cfg.camera_embedder_cls)(
+ self.cfg.camera_embedder
+ )
+ self.tokenizer = lrm.find(self.cfg.tokenizer_cls)(self.cfg.tokenizer)
+ self.backbone = lrm.find(self.cfg.backbone_cls)(self.cfg.backbone)
+ self.post_processor = lrm.find(self.cfg.post_processor_cls)(
+ self.cfg.post_processor
+ )
+ self.decoder = lrm.find(self.cfg.decoder_cls)(self.cfg.decoder)
+ self.material = lrm.find(self.cfg.material_cls)(self.cfg.material)
+ self.background = lrm.find(self.cfg.background_cls)(self.cfg.background)
+ self.renderer = lrm.find(self.cfg.renderer_cls)(
+ self.cfg.renderer, self.decoder, self.material, self.background
+ )
+
+ self.exporter = lrm.find(self.cfg.exporter_cls)(
+ self.cfg.exporter, self.renderer
+ )
+
+ def on_fit_start(self):
+ super().on_fit_start()
+ self.lpips_loss_fn = LPIPS()
+
+ def forward(self, batch: Dict[str, Any]) -> Dict[str, Any]:
+ # batch["rgb_cond"]: B, N_cond, H, W, 3
+ # batch["rgb"]: B, N_render, H, W, 3
+ # batch["c2w_cond"]: B, N_cond, 4, 4
+ # for single image input (like LRM), N_cond = 1
+
+ batch_size, n_input_views = batch["rgb_cond"].shape[:2]
+
+ # Camera modulation
+ camera_embeds: Optional[Float[Tensor, "B Nv Cc"]]
+ if self.cfg.image_tokenizer.modulation:
+ camera_embeds = self.camera_embedder(**batch)
+ else:
+ camera_embeds = None
+
+ tr.start("image tokenizer")
+ input_image_tokens: Float[Tensor, "B Nv Cit Nit"] = self.image_tokenizer(
+ rearrange(batch["rgb_cond"], "B Nv H W C -> B Nv C H W"),
+ modulation_cond=camera_embeds,
+ plucker_rays=rearrange(
+ get_plucker_rays(batch["rays_o_cond"], batch["rays_d_cond"]),
+ "B Nv H W C -> B Nv C H W",
+ )
+ if "rays_o_cond" in batch
+ else None,
+ )
+ tr.end("image tokenizer")
+
+ input_image_tokens = rearrange(
+ input_image_tokens, "B Nv C Nt -> B (Nv Nt) C", Nv=n_input_views
+ )
+
+ tokens: Float[Tensor, "B Ct Nt"] = self.tokenizer(batch_size)
+
+ tr.start("backbone")
+ tokens = self.backbone(
+ tokens,
+ encoder_hidden_states=input_image_tokens,
+ modulation_cond=None,
+ )
+ tr.end("backbone")
+
+ scene_codes = self.post_processor(self.tokenizer.detokenize(tokens))
+ return scene_codes
+
+ def forward_renderer_nerf(
+ self, batch: Dict[str, Any], scene_codes
+ ) -> Dict[str, Any]:
+ tr.start("render")
+ render_out = self.renderer(scene_codes, **batch)
+ tr.end("render")
+ return render_out
+
+ def training_step(self, batch, batch_idx):
+ scene_codes = self(batch)
+ out = self.forward_renderer_nerf(batch, scene_codes)
+
+ loss = 0.0
+
+ for suffix in ["", "_coarse"]:
+ if not f"comp_rgb{suffix}" in out:
+ continue
+
+ comp_rgb: Float[Tensor, "B Nv H W 3"] = out["comp_rgb{}".format(suffix)]
+ gt_rgb: Float[Tensor, "B Nv H W 3"] = batch["rgb"]
+
+ self.log(f"train/comp_rgb_min{suffix}", comp_rgb.min())
+
+ loss_mse = F.mse_loss(comp_rgb, gt_rgb, reduction="mean")
+ self.log(f"train/loss_mse{suffix}", loss_mse)
+ loss += loss_mse * self.C(self.cfg.loss[f"lambda_mse{suffix}"])
+
+ loss_smooth_l1 = F.smooth_l1_loss(
+ comp_rgb, gt_rgb, beta=0.1, reduction="mean"
+ )
+ self.log(f"train/loss_smooth_l1{suffix}", loss_smooth_l1)
+ loss += loss_smooth_l1 * self.C(self.cfg.loss[f"lambda_smooth_l1{suffix}"])
+
+ if self.C(self.cfg.loss[f"lambda_lpips{suffix}"]) > 0:
+ loss_lpips = self.lpips_loss_fn(
+ rearrange(comp_rgb, "B Nv H W C -> (B Nv) C H W"),
+ rearrange(gt_rgb, "B Nv H W C -> (B Nv) C H W"),
+ input_range=(0, 1),
+ ).mean()
+ self.log(f"train/loss_lpips{suffix}", loss_lpips)
+ loss += loss_lpips * self.C(self.cfg.loss[f"lambda_lpips{suffix}"])
+
+ loss_mask = binary_cross_entropy(
+ out[f"opacity{suffix}"].clamp(1e-5, 1 - 1e-5), batch["mask"]
+ )
+ self.log(f"train/loss_mask{suffix}", loss_mask)
+ loss += loss_mask * self.C(self.cfg.loss[f"lambda_mask{suffix}"])
+
+ for name, value in self.cfg.loss.items():
+ self.log(f"train_params/{name}", self.C(value))
+
+ # will execute self.on_check_train every self.cfg.check_train_every_n_steps steps
+ self.check_train(
+ batch,
+ out,
+ extra=f"m{loss_mse:.2f}_l{loss_smooth_l1:.2f}_p{loss_lpips:.2f}_ma{loss_mask:.2f}",
+ )
+
+ return {"loss": loss}
+
+ def get_input_visualizations(self, batch):
+ return [
+ {
+ "type": "rgb",
+ "img": rearrange(batch["rgb_cond"], "B N H W C -> (B H) (N W) C"),
+ "kwargs": {"data_format": "HWC"},
+ }
+ ]
+
+ def get_output_visualizations(self, batch, outputs):
+ out = outputs
+ images = []
+ if "rgb" in batch:
+ images += [
+ {
+ "type": "rgb",
+ "img": rearrange(batch["rgb"], "B N H W C -> (B H) (N W) C"),
+ "kwargs": {"data_format": "HWC"},
+ },
+ {
+ "type": "grayscale",
+ "img": rearrange(batch["mask"], "B N H W C -> (B H) (N W) C")[
+ ..., 0
+ ],
+ "kwargs": {"cmap": None, "data_range": None},
+ },
+ ]
+ for suffix in ["", "_coarse"]:
+ if not f"comp_rgb{suffix}" in out:
+ continue
+ images += [
+ {
+ "type": "rgb",
+ "img": rearrange(
+ out[f"comp_rgb{suffix}"], "B N H W C -> (B H) (N W) C"
+ ),
+ "kwargs": {"data_format": "HWC"},
+ },
+ {
+ "type": "grayscale",
+ "img": rearrange(
+ out[f"opacity{suffix}"], "B N H W C -> (B H) (N W) C"
+ )[..., 0],
+ "kwargs": {"cmap": None, "data_range": None},
+ },
+ {
+ "type": "grayscale",
+ "img": rearrange(
+ out[f"depth{suffix}"], "B N H W C -> (B H) (N W) C"
+ )[..., 0],
+ "kwargs": {"cmap": None, "data_range": None},
+ },
+ ]
+ return images
+
+ # def check_train(self, batch, outputs, **kwargs):
+ # self.on_check_train(batch, outputs, **kwargs)
+
+ def on_check_train(self, batch, outputs, extra=""):
+ self.save_image_grid(
+ f"it{self.true_global_step}-train.jpg",
+ self.get_output_visualizations(batch, outputs),
+ name="train_step_output",
+ step=self.true_global_step,
+ )
+ # self.save_image_grid(
+ # f"debug/it{self.true_global_step}-{self.global_rank}-{extra}.jpg",
+ # self.get_output_visualizations(batch, outputs),
+ # name="train_step_output",
+ # step=self.true_global_step,
+ # )
+ # self.save_json(
+ # f"debug_list/it{self.true_global_step}-{self.global_rank}-ids.json",
+ # batch["scene_id"],
+ # )
+
+ def validation_step(self, batch, batch_idx):
+ scene_codes = self(batch)
+ out = self.forward_renderer_nerf(batch, scene_codes)
+ if (
+ self.cfg.check_val_limit_rank > 0
+ and self.global_rank < self.cfg.check_val_limit_rank
+ ):
+ self.save_image_grid(
+ f"it{self.true_global_step}-validation-{self.global_rank}_{batch_idx}-input.jpg",
+ self.get_input_visualizations(batch),
+ name=f"validation_step_input_{self.global_rank}_{batch_idx}",
+ step=self.true_global_step,
+ )
+ self.save_image_grid(
+ f"it{self.true_global_step}-validation-{self.global_rank}_{batch_idx}.jpg",
+ self.get_output_visualizations(batch, out),
+ name=f"validation_step_output_{self.global_rank}_{batch_idx}",
+ step=self.true_global_step,
+ )
+
+ def test_step(self, batch, batch_idx):
+ # not saved to wandb
+ scene_codes = self(batch)
+ out = self.forward_renderer_nerf(batch, scene_codes)
+ batch_size = batch["index"].shape[0]
+ for b in range(batch_size):
+ if batch["view_index"][b, 0] == 0:
+ self.save_image_grid(
+ f"it{self.true_global_step}-test/{batch['index'][b]}-input.jpg",
+ [
+ {
+ "type": "rgb",
+ "img": rearrange(
+ batch["rgb_cond"][b], "N H W C -> H (N W) C"
+ ),
+ "kwargs": {"data_format": "HWC"},
+ },
+ ],
+ )
+ self.save_image_grid(
+ f"it{self.true_global_step}-test/{batch['index'][b]}/{batch['view_index'][b,0]}.png",
+ [
+ {
+ "type": "rgb",
+ "img": out["comp_rgb"][b][0],
+ "kwargs": {"data_format": "HWC"},
+ },
+ {
+ "type": "grayscale",
+ "img": out["depth"][b][0, ..., 0],
+ "kwargs": {"cmap": None, "data_range": None},
+ },
+ ],
+ )
+
+ def on_test_end(self):
+ if self.global_rank == 0:
+ self.save_img_sequences(
+ f"it{self.true_global_step}-test",
+ "(\d+)\.png",
+ save_format="mp4",
+ fps=30,
+ )
diff --git a/3D_Stage/lrm/systems/utils.py b/3D_Stage/lrm/systems/utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..91e534849bcb6e627df383c84696264808382c66
--- /dev/null
+++ b/3D_Stage/lrm/systems/utils.py
@@ -0,0 +1,100 @@
+import torch
+import torch.nn as nn
+from torch.optim import lr_scheduler
+
+import lrm
+
+
+def get_scheduler(name):
+ if hasattr(lr_scheduler, name):
+ return getattr(lr_scheduler, name)
+ else:
+ raise NotImplementedError
+
+
+def getattr_recursive(m, attr):
+ for name in attr.split("."):
+ m = getattr(m, name)
+ return m
+
+
+def get_parameters(model, name):
+ module = getattr_recursive(model, name)
+ if isinstance(module, nn.Module):
+ return module.parameters()
+ elif isinstance(module, nn.Parameter):
+ return module
+ return []
+
+
+def parse_optimizer(config, model):
+ if hasattr(config, "params"):
+ params = [
+ {"params": get_parameters(model, name), "name": name, **args}
+ for name, args in config.params.items()
+ ]
+ lrm.debug(f"Specify optimizer params: {config.params}")
+ else:
+ params = model.parameters()
+ if config.name in ["FusedAdam"]:
+ import apex
+
+ optim = getattr(apex.optimizers, config.name)(params, **config.args)
+ elif config.name in ["Adam8bit", "AdamW8bit"]:
+ import bitsandbytes as bnb
+
+ optim = bnb.optim.Adam8bit(params, **config.args)
+ else:
+ optim = getattr(torch.optim, config.name)(params, **config.args)
+ return optim
+
+
+def parse_scheduler_to_instance(config, optimizer):
+ if config.name == "ChainedScheduler":
+ schedulers = [
+ parse_scheduler_to_instance(conf, optimizer) for conf in config.schedulers
+ ]
+ scheduler = lr_scheduler.ChainedScheduler(schedulers)
+ elif config.name == "Sequential":
+ schedulers = [
+ parse_scheduler_to_instance(conf, optimizer) for conf in config.schedulers
+ ]
+ scheduler = lr_scheduler.SequentialLR(
+ optimizer, schedulers, milestones=config.milestones
+ )
+ else:
+ scheduler = getattr(lr_scheduler, config.name)(optimizer, **config.args)
+ return scheduler
+
+
+def parse_scheduler(config, optimizer):
+ interval = config.get("interval", "epoch")
+ assert interval in ["epoch", "step"]
+ if config.name == "SequentialLR":
+ scheduler = {
+ "scheduler": lr_scheduler.SequentialLR(
+ optimizer,
+ [
+ parse_scheduler(conf, optimizer)["scheduler"]
+ for conf in config.schedulers
+ ],
+ milestones=config.milestones,
+ ),
+ "interval": interval,
+ }
+ elif config.name == "ChainedScheduler":
+ scheduler = {
+ "scheduler": lr_scheduler.ChainedScheduler(
+ [
+ parse_scheduler(conf, optimizer)["scheduler"]
+ for conf in config.schedulers
+ ]
+ ),
+ "interval": interval,
+ }
+ else:
+ scheduler = {
+ "scheduler": get_scheduler(config.name)(optimizer, **config.args),
+ "interval": interval,
+ }
+ return scheduler
diff --git a/3D_Stage/lrm/utils/__init__.py b/3D_Stage/lrm/utils/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/3D_Stage/lrm/utils/__pycache__/__init__.cpython-310.pyc b/3D_Stage/lrm/utils/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c05284f8a5152209bd0f9a9035653ad1fd9728bf
Binary files /dev/null and b/3D_Stage/lrm/utils/__pycache__/__init__.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/utils/__pycache__/base.cpython-310.pyc b/3D_Stage/lrm/utils/__pycache__/base.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..703927bde6d567ee755f69fd7cf3de0f36d4a429
Binary files /dev/null and b/3D_Stage/lrm/utils/__pycache__/base.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/utils/__pycache__/config.cpython-310.pyc b/3D_Stage/lrm/utils/__pycache__/config.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ccd21db0f9abe55d570041abfb7a86b5e516ae8b
Binary files /dev/null and b/3D_Stage/lrm/utils/__pycache__/config.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/utils/__pycache__/misc.cpython-310.pyc b/3D_Stage/lrm/utils/__pycache__/misc.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..86c8e20effdb82d860d08bf968e77a0a959236bf
Binary files /dev/null and b/3D_Stage/lrm/utils/__pycache__/misc.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/utils/__pycache__/ops.cpython-310.pyc b/3D_Stage/lrm/utils/__pycache__/ops.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f89d5a08efc68069f828bf5891d8c23d4fc091c4
Binary files /dev/null and b/3D_Stage/lrm/utils/__pycache__/ops.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/utils/__pycache__/rasterize.cpython-310.pyc b/3D_Stage/lrm/utils/__pycache__/rasterize.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2d1674f762f923f27a7962d1291a6f1bd1e1fefb
Binary files /dev/null and b/3D_Stage/lrm/utils/__pycache__/rasterize.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/utils/__pycache__/saving.cpython-310.pyc b/3D_Stage/lrm/utils/__pycache__/saving.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..84c44c97782e3f37f10221fd35be7704a8b3d50a
Binary files /dev/null and b/3D_Stage/lrm/utils/__pycache__/saving.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/utils/__pycache__/typing.cpython-310.pyc b/3D_Stage/lrm/utils/__pycache__/typing.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cc16ae3d9f50232b9c38a9fdaf829530b994fa5c
Binary files /dev/null and b/3D_Stage/lrm/utils/__pycache__/typing.cpython-310.pyc differ
diff --git a/3D_Stage/lrm/utils/base.py b/3D_Stage/lrm/utils/base.py
new file mode 100644
index 0000000000000000000000000000000000000000..f78adda249e57664ee2ee8b38b41caf5e80a780f
--- /dev/null
+++ b/3D_Stage/lrm/utils/base.py
@@ -0,0 +1,123 @@
+from dataclasses import dataclass
+
+import torch
+import torch.nn as nn
+
+from .config import parse_structured
+from .misc import get_device, load_module_weights
+from .typing import *
+
+
+class Configurable:
+ @dataclass
+ class Config:
+ pass
+
+ def __init__(self, cfg: Optional[dict] = None) -> None:
+ super().__init__()
+ self.cfg = parse_structured(self.Config, cfg)
+
+
+class Updateable:
+ def do_update_step(
+ self, epoch: int, global_step: int, on_load_weights: bool = False
+ ):
+ for attr in self.__dir__():
+ if attr.startswith("_"):
+ continue
+ try:
+ module = getattr(self, attr)
+ except:
+ continue # ignore attributes like property, which can't be retrived using getattr?
+ if isinstance(module, Updateable):
+ module.do_update_step(
+ epoch, global_step, on_load_weights=on_load_weights
+ )
+ self.update_step(epoch, global_step, on_load_weights=on_load_weights)
+
+ def do_update_step_end(self, epoch: int, global_step: int):
+ for attr in self.__dir__():
+ if attr.startswith("_"):
+ continue
+ try:
+ module = getattr(self, attr)
+ except:
+ continue # ignore attributes like property, which can't be retrived using getattr?
+ if isinstance(module, Updateable):
+ module.do_update_step_end(epoch, global_step)
+ self.update_step_end(epoch, global_step)
+
+ def update_step(self, epoch: int, global_step: int, on_load_weights: bool = False):
+ # override this method to implement custom update logic
+ # if on_load_weights is True, you should be careful doing things related to model evaluations,
+ # as the models and tensors are not guarenteed to be on the same device
+ pass
+
+ def update_step_end(self, epoch: int, global_step: int):
+ pass
+
+
+def update_if_possible(module: Any, epoch: int, global_step: int) -> None:
+ if isinstance(module, Updateable):
+ module.do_update_step(epoch, global_step)
+
+
+def update_end_if_possible(module: Any, epoch: int, global_step: int) -> None:
+ if isinstance(module, Updateable):
+ module.do_update_step_end(epoch, global_step)
+
+
+class BaseObject(Updateable):
+ @dataclass
+ class Config:
+ pass
+
+ cfg: Config # add this to every subclass of BaseObject to enable static type checking
+
+ def __init__(
+ self, cfg: Optional[Union[dict, DictConfig]] = None, *args, **kwargs
+ ) -> None:
+ super().__init__()
+ self.cfg = parse_structured(self.Config, cfg)
+ self.device = get_device()
+ self.configure(*args, **kwargs)
+
+ def configure(self, *args, **kwargs) -> None:
+ pass
+
+
+class BaseModule(nn.Module, Updateable):
+ @dataclass
+ class Config:
+ weights: Optional[str] = None
+
+ cfg: Config # add this to every subclass of BaseModule to enable static type checking
+
+ def __init__(
+ self, cfg: Optional[Union[dict, DictConfig]] = None, *args, **kwargs
+ ) -> None:
+ super().__init__()
+ self.cfg = parse_structured(self.Config, cfg)
+ self.device = get_device()
+ self._non_modules = {}
+ self.configure(*args, **kwargs)
+ if self.cfg.weights is not None:
+ # format: path/to/weights:module_name
+ weights_path, module_name = self.cfg.weights.split(":")
+ state_dict, epoch, global_step = load_module_weights(
+ weights_path, module_name=module_name, map_location="cpu"
+ )
+ self.load_state_dict(state_dict)
+ self.do_update_step(
+ epoch, global_step, on_load_weights=True
+ ) # restore states
+
+ def configure(self, *args, **kwargs) -> None:
+ pass
+
+ def register_non_module(self, name: str, module: nn.Module) -> None:
+ # non-modules won't be treated as model parameters
+ self._non_modules[name] = module
+
+ def non_module(self, name: str):
+ return self._non_modules.get(name, None)
diff --git a/3D_Stage/lrm/utils/callbacks.py b/3D_Stage/lrm/utils/callbacks.py
new file mode 100644
index 0000000000000000000000000000000000000000..1f4cbd68e513e2ce6c905b1bb95842cdad8a7551
--- /dev/null
+++ b/3D_Stage/lrm/utils/callbacks.py
@@ -0,0 +1,156 @@
+import os
+import shutil
+import subprocess
+
+import pytorch_lightning
+
+from .config import dump_config
+from .misc import parse_version
+
+if parse_version(pytorch_lightning.__version__) > parse_version("1.8"):
+ from pytorch_lightning.callbacks import Callback
+else:
+ from pytorch_lightning.callbacks.base import Callback
+
+from pytorch_lightning.callbacks.progress import TQDMProgressBar
+from pytorch_lightning.utilities.rank_zero import rank_zero_only, rank_zero_warn
+
+
+class VersionedCallback(Callback):
+ def __init__(self, save_root, version=None, use_version=True):
+ self.save_root = save_root
+ self._version = version
+ self.use_version = use_version
+
+ @property
+ def version(self) -> int:
+ """Get the experiment version.
+
+ Returns:
+ The experiment version if specified else the next version.
+ """
+ if self._version is None:
+ self._version = self._get_next_version()
+ return self._version
+
+ def _get_next_version(self):
+ existing_versions = []
+ if os.path.isdir(self.save_root):
+ for f in os.listdir(self.save_root):
+ bn = os.path.basename(f)
+ if bn.startswith("version_"):
+ dir_ver = os.path.splitext(bn)[0].split("_")[1].replace("/", "")
+ existing_versions.append(int(dir_ver))
+ if len(existing_versions) == 0:
+ return 0
+ return max(existing_versions) + 1
+
+ @property
+ def savedir(self):
+ if not self.use_version:
+ return self.save_root
+ return os.path.join(
+ self.save_root,
+ self.version
+ if isinstance(self.version, str)
+ else f"version_{self.version}",
+ )
+
+
+class CodeSnapshotCallback(VersionedCallback):
+ def __init__(self, save_root, version=None, use_version=True):
+ super().__init__(save_root, version, use_version)
+
+ def get_file_list(self):
+ return [
+ b.decode()
+ for b in set(
+ subprocess.check_output(
+ 'git ls-files -- ":!:load/*"', shell=True
+ ).splitlines()
+ )
+ | set( # hard code, TODO: use config to exclude folders or files
+ subprocess.check_output(
+ "git ls-files --others --exclude-standard", shell=True
+ ).splitlines()
+ )
+ ]
+
+ @rank_zero_only
+ def save_code_snapshot(self):
+ os.makedirs(self.savedir, exist_ok=True)
+ for f in self.get_file_list():
+ if not os.path.exists(f) or os.path.isdir(f):
+ continue
+ os.makedirs(os.path.join(self.savedir, os.path.dirname(f)), exist_ok=True)
+ shutil.copyfile(f, os.path.join(self.savedir, f))
+
+ def on_fit_start(self, trainer, pl_module):
+ try:
+ self.save_code_snapshot()
+ except:
+ rank_zero_warn(
+ "Code snapshot is not saved. Please make sure you have git installed and are in a git repository."
+ )
+
+
+class ConfigSnapshotCallback(VersionedCallback):
+ def __init__(self, config_path, config, save_root, version=None, use_version=True):
+ super().__init__(save_root, version, use_version)
+ self.config_path = config_path
+ self.config = config
+
+ @rank_zero_only
+ def save_config_snapshot(self):
+ os.makedirs(self.savedir, exist_ok=True)
+ dump_config(os.path.join(self.savedir, "parsed.yaml"), self.config)
+ shutil.copyfile(self.config_path, os.path.join(self.savedir, "raw.yaml"))
+
+ def on_fit_start(self, trainer, pl_module):
+ self.save_config_snapshot()
+
+
+class CustomProgressBar(TQDMProgressBar):
+ def get_metrics(self, *args, **kwargs):
+ # don't show the version number
+ items = super().get_metrics(*args, **kwargs)
+ items.pop("v_num", None)
+ return items
+
+
+class ProgressCallback(Callback):
+ def __init__(self, save_path):
+ super().__init__()
+ self.save_path = save_path
+ self._file_handle = None
+
+ @property
+ def file_handle(self):
+ if self._file_handle is None:
+ self._file_handle = open(self.save_path, "w")
+ return self._file_handle
+
+ @rank_zero_only
+ def write(self, msg: str) -> None:
+ self.file_handle.seek(0)
+ self.file_handle.truncate()
+ self.file_handle.write(msg)
+ self.file_handle.flush()
+
+ @rank_zero_only
+ def on_train_batch_end(self, trainer, pl_module, *args, **kwargs):
+ self.write(
+ f"Generation progress: {pl_module.true_global_step / trainer.max_steps * 100:.2f}%"
+ )
+
+ @rank_zero_only
+ def on_validation_start(self, trainer, pl_module):
+ self.write(f"Rendering validation image ...")
+
+ @rank_zero_only
+ def on_test_start(self, trainer, pl_module):
+ self.write(f"Rendering video ...")
+
+ @rank_zero_only
+ def on_predict_start(self, trainer, pl_module):
+ self.write(f"Exporting mesh assets ...")
diff --git a/3D_Stage/lrm/utils/config.py b/3D_Stage/lrm/utils/config.py
new file mode 100644
index 0000000000000000000000000000000000000000..6c490d30efe9fdc0a104d8e0854eba3474518e4e
--- /dev/null
+++ b/3D_Stage/lrm/utils/config.py
@@ -0,0 +1,140 @@
+import os
+from dataclasses import dataclass, field
+from datetime import datetime
+
+from omegaconf import OmegaConf
+
+import lrm
+from .typing import *
+
+# ============ Register OmegaConf Resolvers ============= #
+OmegaConf.register_new_resolver(
+ "calc_exp_lr_decay_rate", lambda factor, n: factor ** (1.0 / n)
+)
+OmegaConf.register_new_resolver("add", lambda a, b: a + b)
+OmegaConf.register_new_resolver("sub", lambda a, b: a - b)
+OmegaConf.register_new_resolver("mul", lambda a, b: a * b)
+OmegaConf.register_new_resolver("div", lambda a, b: a / b)
+OmegaConf.register_new_resolver("idiv", lambda a, b: a // b)
+OmegaConf.register_new_resolver("basename", lambda p: os.path.basename(p))
+OmegaConf.register_new_resolver("rmspace", lambda s, sub: s.replace(" ", sub))
+OmegaConf.register_new_resolver("tuple2", lambda s: [float(s), float(s)])
+OmegaConf.register_new_resolver("gt0", lambda s: s > 0)
+OmegaConf.register_new_resolver("not", lambda s: not s)
+
+
+def calc_num_train_steps(num_data, batch_size, max_epochs, num_nodes, num_cards=8):
+ return int(num_data / (num_nodes * num_cards * batch_size)) * max_epochs
+
+
+OmegaConf.register_new_resolver("calc_num_train_steps", calc_num_train_steps)
+
+# ======================================================= #
+
+
+# ============== Automatic Name Resolvers =============== #
+def get_naming_convention(cfg):
+ # TODO
+ name = f"lrm_{cfg.system.backbone.num_layers}"
+ return name
+
+
+# ======================================================= #
+
+
+@dataclass
+class ExperimentConfig:
+ name: str = "default"
+ description: str = ""
+ tag: str = ""
+ seed: int = 0
+ use_timestamp: bool = True
+ timestamp: Optional[str] = None
+ exp_root_dir: str = "outputs"
+
+ ### these shouldn't be set manually
+ exp_dir: str = "outputs/default"
+ trial_name: str = "exp"
+ trial_dir: str = "outputs/default/exp"
+ n_gpus: int = 1
+ ###
+
+ resume: Optional[str] = None
+
+ data_cls: str = ""
+ data: dict = field(default_factory=dict)
+
+ system_cls: str = ""
+ system: dict = field(default_factory=dict)
+
+ # accept pytorch-lightning trainer parameters
+ # see https://lightning.ai/docs/pytorch/stable/common/trainer.html#trainer-class-api
+ trainer: dict = field(default_factory=dict)
+
+ # accept pytorch-lightning checkpoint callback parameters
+ # see https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.callbacks.ModelCheckpoint.html#modelcheckpoint
+ checkpoint: dict = field(default_factory=dict)
+
+
+def load_config(
+ *yamls: str, cli_args: list = [], from_string=False, makedirs=True, **kwargs
+) -> Any:
+ if from_string:
+ parse_func = OmegaConf.create
+ else:
+ parse_func = OmegaConf.load
+ yaml_confs = []
+ for y in yamls:
+ conf = parse_func(y)
+ extends = conf.pop("extends", None)
+ if extends:
+ assert os.path.exists(extends), f"File {extends} does not exist."
+ yaml_confs.append(OmegaConf.load(extends))
+ yaml_confs.append(conf)
+ cli_conf = OmegaConf.from_cli(cli_args)
+ cfg = OmegaConf.merge(*yaml_confs, cli_conf, kwargs)
+ OmegaConf.resolve(cfg)
+ assert isinstance(cfg, DictConfig)
+ scfg: ExperimentConfig = parse_structured(ExperimentConfig, cfg)
+
+ # post processing
+ # auto naming
+ if scfg.name == "auto":
+ scfg.name = get_naming_convention(scfg)
+ # add timestamp
+ if not scfg.tag and not scfg.use_timestamp:
+ raise ValueError("Either tag is specified or use_timestamp is True.")
+ scfg.trial_name = scfg.tag
+ # if resume from an existing config, scfg.timestamp should not be None
+ if scfg.timestamp is None:
+ scfg.timestamp = ""
+ if scfg.use_timestamp:
+ if scfg.n_gpus > 1:
+ lrm.warn(
+ "Timestamp is disabled when using multiple GPUs, please make sure you have a unique tag."
+ )
+ else:
+ scfg.timestamp = datetime.now().strftime("@%Y%m%d-%H%M%S")
+ # make directories
+ scfg.trial_name += scfg.timestamp
+ scfg.exp_dir = os.path.join(scfg.exp_root_dir, scfg.name)
+ scfg.trial_dir = os.path.join(scfg.exp_dir, scfg.trial_name)
+
+ if makedirs:
+ os.makedirs(scfg.trial_dir, exist_ok=True)
+
+ return scfg
+
+
+def config_to_primitive(config, resolve: bool = True) -> Any:
+ return OmegaConf.to_container(config, resolve=resolve)
+
+
+def dump_config(path: str, config) -> None:
+ with open(path, "w") as fp:
+ OmegaConf.save(config=config, f=fp)
+
+
+def parse_structured(fields: Any, cfg: Optional[Union[dict, DictConfig]] = None) -> Any:
+ scfg = OmegaConf.merge(OmegaConf.structured(fields), cfg)
+ return scfg
diff --git a/3D_Stage/lrm/utils/misc.py b/3D_Stage/lrm/utils/misc.py
new file mode 100644
index 0000000000000000000000000000000000000000..80bfa1e9ba4c1a46e3e268d691be6e8a3562cccc
--- /dev/null
+++ b/3D_Stage/lrm/utils/misc.py
@@ -0,0 +1,211 @@
+import gc
+import os
+import re
+import time
+from collections import defaultdict
+from contextlib import contextmanager
+
+import torch
+from packaging import version
+
+import lrm
+from .config import config_to_primitive
+from .typing import *
+
+
+def parse_version(ver: str):
+ return version.parse(ver)
+
+
+def get_rank():
+ # SLURM_PROCID can be set even if SLURM is not managing the multiprocessing,
+ # therefore LOCAL_RANK needs to be checked first
+ rank_keys = ("RANK", "LOCAL_RANK", "SLURM_PROCID", "JSM_NAMESPACE_RANK")
+ for key in rank_keys:
+ rank = os.environ.get(key)
+ if rank is not None:
+ return int(rank)
+ return 0
+
+
+def get_device():
+ return torch.device(f"cuda:{get_rank()}")
+
+
+def load_module_weights(
+ path, module_name=None, ignore_modules=None, mapping=None, map_location=None
+) -> Tuple[dict, int, int]:
+ if module_name is not None and ignore_modules is not None:
+ raise ValueError("module_name and ignore_modules cannot be both set")
+ if map_location is None:
+ map_location = get_device()
+
+ ckpt = torch.load(path, map_location=map_location)
+ state_dict = ckpt["state_dict"]
+
+ if mapping is not None:
+ state_dict_to_load = {}
+ for k, v in state_dict.items():
+ if any([k.startswith(m["to"]) for m in mapping]):
+ pass
+ else:
+ state_dict_to_load[k] = v
+ for k, v in state_dict.items():
+ for m in mapping:
+ if k.startswith(m["from"]):
+ k_dest = k.replace(m["from"], m["to"])
+ lrm.info(f"Mapping {k} => {k_dest}")
+ state_dict_to_load[k_dest] = v.clone()
+ state_dict = state_dict_to_load
+
+ state_dict_to_load = state_dict
+
+ if ignore_modules is not None:
+ state_dict_to_load = {}
+ for k, v in state_dict.items():
+ ignore = any(
+ [k.startswith(ignore_module + ".") for ignore_module in ignore_modules]
+ )
+ if ignore:
+ continue
+ state_dict_to_load[k] = v
+
+ if module_name is not None:
+ state_dict_to_load = {}
+ for k, v in state_dict.items():
+ m = re.match(rf"^{module_name}\.(.*)$", k)
+ if m is None:
+ continue
+ state_dict_to_load[m.group(1)] = v
+
+ return state_dict_to_load, ckpt["epoch"], ckpt["global_step"]
+
+
+def C(value: Any, epoch: int, global_step: int) -> float:
+ if isinstance(value, int) or isinstance(value, float):
+ pass
+ else:
+ value = config_to_primitive(value)
+ if not isinstance(value, list):
+ raise TypeError("Scalar specification only supports list, got", type(value))
+ if len(value) == 3:
+ value = [0] + value
+ assert len(value) == 4
+ start_step, start_value, end_value, end_step = value
+ if isinstance(end_step, int):
+ current_step = global_step
+ value = start_value + (end_value - start_value) * max(
+ min(1.0, (current_step - start_step) / (end_step - start_step)), 0.0
+ )
+ elif isinstance(end_step, float):
+ current_step = epoch
+ value = start_value + (end_value - start_value) * max(
+ min(1.0, (current_step - start_step) / (end_step - start_step)), 0.0
+ )
+ return value
+
+
+def cleanup():
+ gc.collect()
+ torch.cuda.empty_cache()
+ try:
+ import tinycudann as tcnn
+
+ tcnn.free_temporary_memory()
+ except:
+ pass
+
+
+def finish_with_cleanup(func: Callable):
+ def wrapper(*args, **kwargs):
+ out = func(*args, **kwargs)
+ cleanup()
+ return out
+
+ return wrapper
+
+
+def _distributed_available():
+ return torch.distributed.is_available() and torch.distributed.is_initialized()
+
+
+def barrier():
+ if not _distributed_available():
+ return
+ else:
+ torch.distributed.barrier()
+
+
+def broadcast(tensor, src=0):
+ if not _distributed_available():
+ return tensor
+ else:
+ torch.distributed.broadcast(tensor, src=src)
+ return tensor
+
+
+def enable_gradient(model, enabled: bool = True) -> None:
+ for param in model.parameters():
+ param.requires_grad_(enabled)
+
+
+class TimeRecorder:
+ _instance = None
+
+ def __init__(self):
+ self.items = {}
+ self.accumulations = defaultdict(list)
+ self.time_scale = 1000.0 # ms
+ self.time_unit = "ms"
+ self.enabled = False
+
+ def __new__(cls):
+ # singleton
+ if cls._instance is None:
+ cls._instance = super(TimeRecorder, cls).__new__(cls)
+ return cls._instance
+
+ def enable(self, enabled: bool) -> None:
+ self.enabled = enabled
+
+ def start(self, name: str) -> None:
+ if not self.enabled:
+ return
+ torch.cuda.synchronize()
+ self.items[name] = time.time()
+
+ def end(self, name: str, accumulate: bool = False) -> float:
+ if not self.enabled or name not in self.items:
+ return
+ torch.cuda.synchronize()
+ start_time = self.items.pop(name)
+ delta = time.time() - start_time
+ if accumulate:
+ self.accumulations[name].append(delta)
+ t = delta * self.time_scale
+ lrm.info(f"{name}: {t:.2f}{self.time_unit}")
+
+ def get_accumulation(self, name: str, average: bool = False) -> float:
+ if not self.enabled or name not in self.accumulations:
+ return
+ acc = self.accumulations.pop(name)
+ total = sum(acc)
+ if average:
+ t = total / len(acc) * self.time_scale
+ else:
+ t = total * self.time_scale
+ lrm.info(f"{name} for {len(acc)} times: {t:.2f}{self.time_unit}")
+
+
+### global time recorder
+time_recorder = TimeRecorder()
+
+
+@contextmanager
+def time_recorder_enabled():
+ enabled = time_recorder.enabled
+ time_recorder.enable(enabled=True)
+ try:
+ yield
+ finally:
+ time_recorder.enable(enabled=enabled)
diff --git a/3D_Stage/lrm/utils/ops.py b/3D_Stage/lrm/utils/ops.py
new file mode 100644
index 0000000000000000000000000000000000000000..3b1e06d3d7136575ed96dad1764b72374d5b5529
--- /dev/null
+++ b/3D_Stage/lrm/utils/ops.py
@@ -0,0 +1,435 @@
+from collections import defaultdict
+import math
+
+import numpy as np
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+from torch.autograd import Function
+from torch.cuda.amp import custom_bwd, custom_fwd
+
+import lrm
+from .typing import *
+
+
+def dot(x, y):
+ return torch.sum(x * y, -1, keepdim=True)
+
+
+def reflect(x, n):
+ return 2 * dot(x, n) * n - x
+
+
+ValidScale = Union[Tuple[float, float], Num[Tensor, "2 D"]]
+
+
+def scale_tensor(
+ dat: Num[Tensor, "... D"], inp_scale: ValidScale, tgt_scale: ValidScale
+):
+ if inp_scale is None:
+ inp_scale = (0, 1)
+ if tgt_scale is None:
+ tgt_scale = (0, 1)
+ if isinstance(tgt_scale, Tensor):
+ assert dat.shape[-1] == tgt_scale.shape[-1]
+ dat = (dat - inp_scale[0]) / (inp_scale[1] - inp_scale[0])
+ dat = dat * (tgt_scale[1] - tgt_scale[0]) + tgt_scale[0]
+ return dat
+
+
+class _TruncExp(Function): # pylint: disable=abstract-method
+ # Implementation from torch-ngp:
+ # https://github.com/ashawkey/torch-ngp/blob/93b08a0d4ec1cc6e69d85df7f0acdfb99603b628/activation.py
+ @staticmethod
+ @custom_fwd(cast_inputs=torch.float32)
+ def forward(ctx, x): # pylint: disable=arguments-differ
+ ctx.save_for_backward(x)
+ return torch.exp(x)
+
+ @staticmethod
+ @custom_bwd
+ def backward(ctx, g): # pylint: disable=arguments-differ
+ x = ctx.saved_tensors[0]
+ return g * torch.exp(torch.clamp(x, max=15))
+
+
+trunc_exp = _TruncExp.apply
+
+
+def get_activation(name) -> Callable:
+ if name is None:
+ return lambda x: x
+ name = name.lower()
+ if name == "none":
+ return lambda x: x
+ elif name == "lin2srgb":
+ return lambda x: torch.where(
+ x > 0.0031308,
+ torch.pow(torch.clamp(x, min=0.0031308), 1.0 / 2.4) * 1.055 - 0.055,
+ 12.92 * x,
+ ).clamp(0.0, 1.0)
+ elif name == "exp":
+ return lambda x: torch.exp(x)
+ elif name == "shifted_exp":
+ return lambda x: torch.exp(x - 1.0)
+ elif name == "trunc_exp":
+ return trunc_exp
+ elif name == "shifted_trunc_exp":
+ return lambda x: trunc_exp(x - 1.0)
+ elif name == "sigmoid":
+ return lambda x: torch.sigmoid(x)
+ elif name == "tanh":
+ return lambda x: torch.tanh(x)
+ elif name == "shifted_softplus":
+ return lambda x: F.softplus(x - 1.0)
+ elif name == "scale_-11_01":
+ return lambda x: x * 0.5 + 0.5
+ elif name == "negative":
+ return lambda x: -x
+ else:
+ try:
+ return getattr(F, name)
+ except AttributeError:
+ raise ValueError(f"Unknown activation function: {name}")
+
+
+def chunk_batch(func: Callable, chunk_size: int, *args, **kwargs) -> Any:
+ if chunk_size <= 0:
+ return func(*args, **kwargs)
+ B = None
+ for arg in list(args) + list(kwargs.values()):
+ if isinstance(arg, torch.Tensor):
+ B = arg.shape[0]
+ break
+ assert (
+ B is not None
+ ), "No tensor found in args or kwargs, cannot determine batch size."
+ out = defaultdict(list)
+ out_type = None
+ # max(1, B) to support B == 0
+ for i in range(0, max(1, B), chunk_size):
+ out_chunk = func(
+ *[
+ arg[i : i + chunk_size] if isinstance(arg, torch.Tensor) else arg
+ for arg in args
+ ],
+ **{
+ k: arg[i : i + chunk_size] if isinstance(arg, torch.Tensor) else arg
+ for k, arg in kwargs.items()
+ },
+ )
+ if out_chunk is None:
+ continue
+ out_type = type(out_chunk)
+ if isinstance(out_chunk, torch.Tensor):
+ out_chunk = {0: out_chunk}
+ elif isinstance(out_chunk, tuple) or isinstance(out_chunk, list):
+ chunk_length = len(out_chunk)
+ out_chunk = {i: chunk for i, chunk in enumerate(out_chunk)}
+ elif isinstance(out_chunk, dict):
+ pass
+ else:
+ print(
+ f"Return value of func must be in type [torch.Tensor, list, tuple, dict], get {type(out_chunk)}."
+ )
+ exit(1)
+ for k, v in out_chunk.items():
+ v = v if torch.is_grad_enabled() else v.detach()
+ out[k].append(v)
+
+ if out_type is None:
+ return None
+
+ out_merged: Dict[Any, Optional[torch.Tensor]] = {}
+ for k, v in out.items():
+ if all([vv is None for vv in v]):
+ # allow None in return value
+ out_merged[k] = None
+ elif all([isinstance(vv, torch.Tensor) for vv in v]):
+ out_merged[k] = torch.cat(v, dim=0)
+ else:
+ raise TypeError(
+ f"Unsupported types in return value of func: {[type(vv) for vv in v if not isinstance(vv, torch.Tensor)]}"
+ )
+
+ if out_type is torch.Tensor:
+ return out_merged[0]
+ elif out_type in [tuple, list]:
+ return out_type([out_merged[i] for i in range(chunk_length)])
+ elif out_type is dict:
+ return out_merged
+
+
+def get_ray_directions(
+ H: int,
+ W: int,
+ focal: Union[float, Tuple[float, float]],
+ principal: Optional[Tuple[float, float]] = None,
+ use_pixel_centers: bool = True,
+ normalize: bool = True,
+) -> Float[Tensor, "H W 3"]:
+ """
+ Get ray directions for all pixels in camera coordinate.
+ Reference: https://www.scratchapixel.com/lessons/3d-basic-rendering/
+ ray-tracing-generating-camera-rays/standard-coordinate-systems
+
+ Inputs:
+ H, W, focal, principal, use_pixel_centers: image height, width, focal length, principal point and whether use pixel centers
+ Outputs:
+ directions: (H, W, 3), the direction of the rays in camera coordinate
+ """
+ pixel_center = 0.5 if use_pixel_centers else 0
+
+ if isinstance(focal, float):
+ fx, fy = focal, focal
+ cx, cy = W / 2, H / 2
+ else:
+ fx, fy = focal
+ assert principal is not None
+ cx, cy = principal
+
+ i, j = torch.meshgrid(
+ torch.arange(W, dtype=torch.float32) + pixel_center,
+ torch.arange(H, dtype=torch.float32) + pixel_center,
+ indexing="xy",
+ )
+
+ directions: Float[Tensor, "H W 3"] = torch.stack(
+ [(i - cx) / fx, -(j - cy) / fy, -torch.ones_like(i)], -1
+ )
+
+ if normalize:
+ directions = F.normalize(directions, dim=-1)
+
+ return directions
+
+
+def get_rays(
+ directions: Float[Tensor, "... 3"],
+ c2w: Float[Tensor, "... 4 4"],
+ keepdim=False,
+ noise_scale=0.0,
+ normalize=False,
+) -> Tuple[Float[Tensor, "... 3"], Float[Tensor, "... 3"]]:
+ # Rotate ray directions from camera coordinate to the world coordinate
+ assert directions.shape[-1] == 3
+
+ if directions.ndim == 2: # (N_rays, 3)
+ if c2w.ndim == 2: # (4, 4)
+ c2w = c2w[None, :, :]
+ assert c2w.ndim == 3 # (N_rays, 4, 4) or (1, 4, 4)
+ rays_d = (directions[:, None, :] * c2w[:, :3, :3]).sum(-1) # (N_rays, 3)
+ rays_o = c2w[:, :3, 3].expand(rays_d.shape)
+ elif directions.ndim == 3: # (H, W, 3)
+ assert c2w.ndim in [2, 3]
+ if c2w.ndim == 2: # (4, 4)
+ rays_d = (directions[:, :, None, :] * c2w[None, None, :3, :3]).sum(
+ -1
+ ) # (H, W, 3)
+ rays_o = c2w[None, None, :3, 3].expand(rays_d.shape)
+ elif c2w.ndim == 3: # (B, 4, 4)
+ rays_d = (directions[None, :, :, None, :] * c2w[:, None, None, :3, :3]).sum(
+ -1
+ ) # (B, H, W, 3)
+ rays_o = c2w[:, None, None, :3, 3].expand(rays_d.shape)
+ elif directions.ndim == 4: # (B, H, W, 3)
+ assert c2w.ndim == 3 # (B, 4, 4)
+ rays_d = (directions[:, :, :, None, :] * c2w[:, None, None, :3, :3]).sum(
+ -1
+ ) # (B, H, W, 3)
+ rays_o = c2w[:, None, None, :3, 3].expand(rays_d.shape)
+
+ # add camera noise to avoid grid-like artifect
+ # https://github.com/ashawkey/stable-dreamfusion/blob/49c3d4fa01d68a4f027755acf94e1ff6020458cc/nerf/utils.py#L373
+ if noise_scale > 0:
+ rays_o = rays_o + torch.randn(3, device=rays_o.device) * noise_scale
+ rays_d = rays_d + torch.randn(3, device=rays_d.device) * noise_scale
+
+ if normalize:
+ rays_d = F.normalize(rays_d, dim=-1)
+ if not keepdim:
+ rays_o, rays_d = rays_o.reshape(-1, 3), rays_d.reshape(-1, 3)
+
+ return rays_o, rays_d
+
+
+def get_projection_matrix(
+ fovy: Union[float, Float[Tensor, "B"]], aspect_wh: float, near: float, far: float
+) -> Float[Tensor, "*B 4 4"]:
+ if isinstance(fovy, float):
+ proj_mtx = torch.zeros(4, 4, dtype=torch.float32)
+ proj_mtx[0, 0] = 1.0 / (math.tan(fovy / 2.0) * aspect_wh)
+ proj_mtx[1, 1] = -1.0 / math.tan(
+ fovy / 2.0
+ ) # add a negative sign here as the y axis is flipped in nvdiffrast output
+ proj_mtx[2, 2] = -(far + near) / (far - near)
+ proj_mtx[2, 3] = -2.0 * far * near / (far - near)
+ proj_mtx[3, 2] = -1.0
+ else:
+ batch_size = fovy.shape[0]
+ proj_mtx = torch.zeros(batch_size, 4, 4, dtype=torch.float32)
+ proj_mtx[:, 0, 0] = 1.0 / (torch.tan(fovy / 2.0) * aspect_wh)
+ proj_mtx[:, 1, 1] = -1.0 / torch.tan(
+ fovy / 2.0
+ ) # add a negative sign here as the y axis is flipped in nvdiffrast output
+ proj_mtx[:, 2, 2] = -(far + near) / (far - near)
+ proj_mtx[:, 2, 3] = -2.0 * far * near / (far - near)
+ proj_mtx[:, 3, 2] = -1.0
+ return proj_mtx
+
+
+def get_mvp_matrix(
+ c2w: Float[Tensor, "*B 4 4"], proj_mtx: Float[Tensor, "*B 4 4"]
+) -> Float[Tensor, "*B 4 4"]:
+ # calculate w2c from c2w: R' = Rt, t' = -Rt * t
+ # mathematically equivalent to (c2w)^-1
+ if c2w.ndim == 2:
+ assert proj_mtx.ndim == 2
+ w2c: Float[Tensor, "4 4"] = torch.zeros(4, 4).to(c2w)
+ w2c[:3, :3] = c2w[:3, :3].permute(1, 0)
+ w2c[:3, 3:] = -c2w[:3, :3].permute(1, 0) @ c2w[:3, 3:]
+ w2c[3, 3] = 1.0
+ else:
+ w2c: Float[Tensor, "B 4 4"] = torch.zeros(c2w.shape[0], 4, 4).to(c2w)
+ w2c[:, :3, :3] = c2w[:, :3, :3].permute(0, 2, 1)
+ w2c[:, :3, 3:] = -c2w[:, :3, :3].permute(0, 2, 1) @ c2w[:, :3, 3:]
+ w2c[:, 3, 3] = 1.0
+ # calculate mvp matrix by proj_mtx @ w2c (mv_mtx)
+ mvp_mtx = proj_mtx @ w2c
+ return mvp_mtx
+
+
+def get_intrinsic_from_fov(fov, H, W, bs=-1):
+ focal_length = 0.5 * H / np.tan(0.5 * fov)
+ intrinsic = np.identity(3, dtype=np.float32)
+ intrinsic[0, 0] = focal_length
+ intrinsic[1, 1] = focal_length
+ intrinsic[0, 2] = W / 2.0
+ intrinsic[1, 2] = H / 2.0
+
+ if bs > 0:
+ intrinsic = intrinsic[None].repeat(bs, axis=0)
+
+ return torch.from_numpy(intrinsic)
+
+
+def binary_cross_entropy(input, target):
+ """
+ F.binary_cross_entropy is not numerically stable in mixed-precision training.
+ """
+ return -(target * torch.log(input) + (1 - target) * torch.log(1 - input)).mean()
+
+
+def tet_sdf_diff(
+ vert_sdf: Float[Tensor, "Nv 1"], tet_edges: Integer[Tensor, "Ne 2"]
+) -> Float[Tensor, ""]:
+ sdf_f1x6x2 = vert_sdf[:, 0][tet_edges.reshape(-1)].reshape(-1, 2)
+ mask = torch.sign(sdf_f1x6x2[..., 0]) != torch.sign(sdf_f1x6x2[..., 1])
+ sdf_f1x6x2 = sdf_f1x6x2[mask]
+ sdf_diff = F.binary_cross_entropy_with_logits(
+ sdf_f1x6x2[..., 0], (sdf_f1x6x2[..., 1] > 0).float()
+ ) + F.binary_cross_entropy_with_logits(
+ sdf_f1x6x2[..., 1], (sdf_f1x6x2[..., 0] > 0).float()
+ )
+ return sdf_diff
+
+
+def validate_empty_rays(ray_indices, t_start, t_end):
+ if ray_indices.nelement() == 0:
+ lrm.warn("Empty rays_indices!")
+ ray_indices = torch.LongTensor([0]).to(ray_indices)
+ t_start = torch.Tensor([0]).to(ray_indices)
+ t_end = torch.Tensor([0]).to(ray_indices)
+ return ray_indices, t_start, t_end
+
+
+def rays_intersect_bbox(
+ rays_o: Float[Tensor, "N 3"],
+ rays_d: Float[Tensor, "N 3"],
+ radius: Float,
+ near: Float = 0.0,
+ valid_thresh: Float = 0.01,
+ background: bool = False,
+):
+ input_shape = rays_o.shape[:-1]
+ rays_o, rays_d = rays_o.view(-1, 3), rays_d.view(-1, 3)
+ rays_d_valid = torch.where(
+ rays_d.abs() < 1e-6, torch.full_like(rays_d, 1e-6), rays_d
+ )
+ if type(radius) in [int, float]:
+ radius = torch.FloatTensor(
+ [[-radius, radius], [-radius, radius], [-radius, radius]]
+ ).to(rays_o.device)
+ radius = (
+ 1.0 - 1.0e-3
+ ) * radius # tighten the radius to make sure the intersection point lies in the bounding box
+ interx0 = (radius[..., 1] - rays_o) / rays_d_valid
+ interx1 = (radius[..., 0] - rays_o) / rays_d_valid
+ t_near = torch.minimum(interx0, interx1).amax(dim=-1).clamp_min(near)
+ t_far = torch.maximum(interx0, interx1).amin(dim=-1)
+
+ # check wheter a ray intersects the bbox or not
+ rays_valid = t_far - t_near > valid_thresh
+
+ t_near_valid, t_far_valid = t_near[rays_valid], t_far[rays_valid]
+ global_near = t_near_valid.min().item()
+ global_far = t_far_valid.max().item()
+
+ t_near[torch.where(~rays_valid)] = 0.0
+ t_far[torch.where(~rays_valid)] = 0.0
+
+ t_near = t_near.view(*input_shape, 1)
+ t_far = t_far.view(*input_shape, 1)
+ rays_valid = rays_valid.view(*input_shape)
+
+ return t_near, t_far, rays_valid
+
+
+def get_plucker_rays(rays_o: Float[Tensor, "*N 3"], rays_d: Float[Tensor, "*N 3"]) -> Float[Tensor, "*N 6"]:
+ rays_o = F.normalize(rays_o, dim=-1)
+ rays_d = F.normalize(rays_d, dim=-1)
+ return torch.cat([
+ rays_o.cross(rays_d),
+ rays_d
+ ], dim=-1)
+
+
+def c2w_to_polar(c2w: Float[Tensor, "4 4"]) -> Tuple[float, float, float]:
+ cam_pos = c2w[:3, 3]
+ x, y, z = cam_pos.tolist()
+ distance = cam_pos.norm().item()
+ elevation = math.asin(z / distance)
+ if abs(x) < 1.0e-5 and abs(y) < 1.0e-5:
+ azimuth = 0
+ else:
+ azimuth = math.atan2(y, x)
+ if azimuth < 0:
+ azimuth += 2 * math.pi
+
+ return elevation, azimuth, distance
+
+
+def polar_to_c2w(elevation: float, azimuth: float, distance: float) -> Float[Tensor, "4 4"]:
+ """
+ Compute L = p - C.
+ Normalize L.
+ Compute s = L x u. (cross product)
+ Normalize s.
+ Compute u' = s x L.
+ rotation = [s, u, -l]
+ """
+ z = distance * math.sin(elevation)
+ x = distance * math.cos(elevation) * math.cos(azimuth)
+ y = distance * math.cos(elevation) * math.sin(azimuth)
+ l = -torch.as_tensor([x, y, z]).float()
+ l = F.normalize(l, dim=0)
+ u = torch.as_tensor([0.0, 0.0, 1.0]).float()
+ s = l.cross(u)
+ s = F.normalize(s, dim=0)
+ u = s.cross(l)
+ rot = torch.stack([s, u, -l], dim=0).T
+ c2w = torch.zeros((4, 4), dtype=torch.float32)
+ c2w[:3, :3] = rot
+ c2w[:3, 3] = torch.as_tensor([x, y, z])
+ c2w[3, 3] = 1
+ return c2w
diff --git a/3D_Stage/lrm/utils/rasterize.py b/3D_Stage/lrm/utils/rasterize.py
new file mode 100644
index 0000000000000000000000000000000000000000..448f37ea4432b9d351dee39f77e82665a4a78cbb
--- /dev/null
+++ b/3D_Stage/lrm/utils/rasterize.py
@@ -0,0 +1,81 @@
+import nvdiffrast.torch as dr
+import torch
+
+from .typing import *
+
+
+class NVDiffRasterizerContext:
+ def __init__(self, context_type: str, device: torch.device) -> None:
+ self.device = device
+ self.ctx = self.initialize_context(context_type, device)
+
+ def initialize_context(
+ self, context_type: str, device: torch.device
+ ) -> Union[dr.RasterizeGLContext, dr.RasterizeCudaContext]:
+ context_type = "cuda"
+ if context_type == "gl":
+ return dr.RasterizeGLContext(device=device)
+ elif context_type == "cuda":
+ return dr.RasterizeCudaContext(device=device)
+ else:
+ raise ValueError(f"Unknown rasterizer context type: {context_type}")
+
+ def vertex_transform(
+ self, verts: Float[Tensor, "Nv 3"], mvp_mtx: Float[Tensor, "B 4 4"]
+ ) -> Float[Tensor, "B Nv 4"]:
+ with torch.cuda.amp.autocast(enabled=False):
+ verts_homo = torch.cat(
+ [verts, torch.ones([verts.shape[0], 1]).to(verts)], dim=-1
+ )
+ verts_clip = torch.matmul(verts_homo, mvp_mtx.permute(0, 2, 1))
+ return verts_clip
+
+ def rasterize(
+ self,
+ pos: Float[Tensor, "B Nv 4"],
+ tri: Integer[Tensor, "Nf 3"],
+ resolution: Union[int, Tuple[int, int]],
+ ):
+ # rasterize in instance mode (single topology)
+ return dr.rasterize(self.ctx, pos.float(), tri.int(), resolution, grad_db=True)
+
+ def rasterize_one(
+ self,
+ pos: Float[Tensor, "Nv 4"],
+ tri: Integer[Tensor, "Nf 3"],
+ resolution: Union[int, Tuple[int, int]],
+ ):
+ # rasterize one single mesh under a single viewpoint
+ rast, rast_db = self.rasterize(pos[None, ...], tri, resolution)
+ return rast[0], rast_db[0]
+
+ def antialias(
+ self,
+ color: Float[Tensor, "B H W C"],
+ rast: Float[Tensor, "B H W 4"],
+ pos: Float[Tensor, "B Nv 4"],
+ tri: Integer[Tensor, "Nf 3"],
+ ) -> Float[Tensor, "B H W C"]:
+ return dr.antialias(color.float(), rast, pos.float(), tri.int())
+
+ def interpolate(
+ self,
+ attr: Float[Tensor, "B Nv C"],
+ rast: Float[Tensor, "B H W 4"],
+ tri: Integer[Tensor, "Nf 3"],
+ rast_db=None,
+ diff_attrs=None,
+ ) -> Float[Tensor, "B H W C"]:
+ return dr.interpolate(
+ attr.float(), rast, tri.int(), rast_db=rast_db, diff_attrs=diff_attrs
+ )
+
+ def interpolate_one(
+ self,
+ attr: Float[Tensor, "Nv C"],
+ rast: Float[Tensor, "B H W 4"],
+ tri: Integer[Tensor, "Nf 3"],
+ rast_db=None,
+ diff_attrs=None,
+ ) -> Float[Tensor, "B H W C"]:
+ return self.interpolate(attr[None, ...], rast, tri, rast_db, diff_attrs)
diff --git a/3D_Stage/lrm/utils/saving.py b/3D_Stage/lrm/utils/saving.py
new file mode 100644
index 0000000000000000000000000000000000000000..2f8fa010ad1dc816f9d46d7c131df5e2ca7e856c
--- /dev/null
+++ b/3D_Stage/lrm/utils/saving.py
@@ -0,0 +1,725 @@
+import json
+import os
+import re
+import shutil
+
+import cv2
+import imageio
+import matplotlib.pyplot as plt
+import numpy as np
+import torch
+import wandb
+from matplotlib import cm
+from matplotlib.colors import LinearSegmentedColormap
+from PIL import Image, ImageDraw
+from pytorch_lightning.loggers import WandbLogger
+
+import lrm
+from ..models.mesh import Mesh
+from ..utils.typing import *
+
+
+class SaverMixin:
+ _save_dir: Optional[str] = None
+ _wandb_logger: Optional[WandbLogger] = None
+
+ def set_save_dir(self, save_dir: str):
+ self._save_dir = save_dir
+
+ def get_save_dir(self):
+ if self._save_dir is None:
+ raise ValueError("Save dir is not set")
+ return self._save_dir
+
+ def convert_data(self, data):
+ if data is None:
+ return None
+ elif isinstance(data, np.ndarray):
+ return data
+ elif isinstance(data, torch.Tensor):
+ if data.dtype in [torch.float16, torch.bfloat16]:
+ data = data.float()
+ return data.detach().cpu().numpy()
+ elif isinstance(data, list):
+ return [self.convert_data(d) for d in data]
+ elif isinstance(data, dict):
+ return {k: self.convert_data(v) for k, v in data.items()}
+ else:
+ raise TypeError(
+ "Data must be in type numpy.ndarray, torch.Tensor, list or dict, getting",
+ type(data),
+ )
+
+ def get_save_path(self, filename):
+ save_path = os.path.join(self.get_save_dir(), filename)
+ os.makedirs(os.path.dirname(save_path), exist_ok=True)
+ return save_path
+
+ DEFAULT_RGB_KWARGS = {"data_format": "HWC", "data_range": (0, 1)}
+ DEFAULT_UV_KWARGS = {
+ "data_format": "HWC",
+ "data_range": (0, 1),
+ "cmap": "checkerboard",
+ }
+ DEFAULT_GRAYSCALE_KWARGS = {"data_range": None, "cmap": "jet"}
+ DEFAULT_GRID_KWARGS = {"align": "max"}
+
+ def get_rgb_image_(self, img, data_format, data_range, rgba=False):
+ img = self.convert_data(img)
+ assert data_format in ["CHW", "HWC"]
+ if data_format == "CHW":
+ img = img.transpose(1, 2, 0)
+ if img.dtype != np.uint8:
+ img = img.clip(min=data_range[0], max=data_range[1])
+ img = (
+ (img - data_range[0]) / (data_range[1] - data_range[0]) * 255.0
+ ).astype(np.uint8)
+ nc = 4 if rgba else 3
+ imgs = [img[..., start : start + nc] for start in range(0, img.shape[-1], nc)]
+ imgs = [
+ img_
+ if img_.shape[-1] == nc
+ else np.concatenate(
+ [
+ img_,
+ np.zeros(
+ (img_.shape[0], img_.shape[1], nc - img_.shape[2]),
+ dtype=img_.dtype,
+ ),
+ ],
+ axis=-1,
+ )
+ for img_ in imgs
+ ]
+ img = np.concatenate(imgs, axis=1)
+ if rgba:
+ img = cv2.cvtColor(img, cv2.COLOR_RGBA2BGRA)
+ else:
+ img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
+ return img
+
+ def _save_rgb_image(
+ self,
+ filename,
+ img,
+ data_format,
+ data_range,
+ name: Optional[str] = None,
+ step: Optional[int] = None,
+ ):
+ img = self.get_rgb_image_(img, data_format, data_range)
+ cv2.imwrite(filename, img)
+ if name and self._wandb_logger:
+ self._wandb_logger.log_image(
+ key=name, images=[self.get_save_path(filename)], step=step
+ )
+
+ def save_rgb_image(
+ self,
+ filename,
+ img,
+ data_format=DEFAULT_RGB_KWARGS["data_format"],
+ data_range=DEFAULT_RGB_KWARGS["data_range"],
+ name: Optional[str] = None,
+ step: Optional[int] = None,
+ ) -> str:
+ save_path = self.get_save_path(filename)
+ self._save_rgb_image(save_path, img, data_format, data_range, name, step)
+ return save_path
+
+ def get_uv_image_(self, img, data_format, data_range, cmap):
+ img = self.convert_data(img)
+ assert data_format in ["CHW", "HWC"]
+ if data_format == "CHW":
+ img = img.transpose(1, 2, 0)
+ img = img.clip(min=data_range[0], max=data_range[1])
+ img = (img - data_range[0]) / (data_range[1] - data_range[0])
+ assert cmap in ["checkerboard", "color"]
+ if cmap == "checkerboard":
+ n_grid = 64
+ mask = (img * n_grid).astype(int)
+ mask = (mask[..., 0] + mask[..., 1]) % 2 == 0
+ img = np.ones((img.shape[0], img.shape[1], 3), dtype=np.uint8) * 255
+ img[mask] = np.array([255, 0, 255], dtype=np.uint8)
+ img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
+ elif cmap == "color":
+ img_ = np.zeros((img.shape[0], img.shape[1], 3), dtype=np.uint8)
+ img_[..., 0] = (img[..., 0] * 255).astype(np.uint8)
+ img_[..., 1] = (img[..., 1] * 255).astype(np.uint8)
+ img_ = cv2.cvtColor(img_, cv2.COLOR_RGB2BGR)
+ img = img_
+ return img
+
+ def save_uv_image(
+ self,
+ filename,
+ img,
+ data_format=DEFAULT_UV_KWARGS["data_format"],
+ data_range=DEFAULT_UV_KWARGS["data_range"],
+ cmap=DEFAULT_UV_KWARGS["cmap"],
+ ) -> str:
+ save_path = self.get_save_path(filename)
+ img = self.get_uv_image_(img, data_format, data_range, cmap)
+ cv2.imwrite(save_path, img)
+ return save_path
+
+ def get_grayscale_image_(self, img, data_range, cmap):
+ img = self.convert_data(img)
+ img = np.nan_to_num(img)
+ if data_range is None:
+ img = (img - img.min()) / (img.max() - img.min())
+ else:
+ img = img.clip(data_range[0], data_range[1])
+ img = (img - data_range[0]) / (data_range[1] - data_range[0])
+ assert cmap in [None, "jet", "magma", "spectral"]
+ if cmap == None:
+ img = (img * 255.0).astype(np.uint8)
+ img = np.repeat(img[..., None], 3, axis=2)
+ elif cmap == "jet":
+ img = (img * 255.0).astype(np.uint8)
+ img = cv2.applyColorMap(img, cv2.COLORMAP_JET)
+ elif cmap == "magma":
+ img = 1.0 - img
+ base = cm.get_cmap("magma")
+ num_bins = 256
+ colormap = LinearSegmentedColormap.from_list(
+ f"{base.name}{num_bins}", base(np.linspace(0, 1, num_bins)), num_bins
+ )(np.linspace(0, 1, num_bins))[:, :3]
+ a = np.floor(img * 255.0)
+ b = (a + 1).clip(max=255.0)
+ f = img * 255.0 - a
+ a = a.astype(np.uint16).clip(0, 255)
+ b = b.astype(np.uint16).clip(0, 255)
+ img = colormap[a] + (colormap[b] - colormap[a]) * f[..., None]
+ img = (img * 255.0).astype(np.uint8)
+ elif cmap == "spectral":
+ colormap = plt.get_cmap("Spectral")
+
+ def blend_rgba(image):
+ image = image[..., :3] * image[..., -1:] + (
+ 1.0 - image[..., -1:]
+ ) # blend A to RGB
+ return image
+
+ img = colormap(img)
+ img = blend_rgba(img)
+ img = (img * 255).astype(np.uint8)
+ img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
+ return img
+
+ def _save_grayscale_image(
+ self,
+ filename,
+ img,
+ data_range,
+ cmap,
+ name: Optional[str] = None,
+ step: Optional[int] = None,
+ ):
+ img = self.get_grayscale_image_(img, data_range, cmap)
+ cv2.imwrite(filename, img)
+ if name and self._wandb_logger:
+ self._wandb_logger.log_image(
+ key=name, images=[self.get_save_path(filename)], step=step
+ )
+
+ def save_grayscale_image(
+ self,
+ filename,
+ img,
+ data_range=DEFAULT_GRAYSCALE_KWARGS["data_range"],
+ cmap=DEFAULT_GRAYSCALE_KWARGS["cmap"],
+ name: Optional[str] = None,
+ step: Optional[int] = None,
+ ) -> str:
+ save_path = self.get_save_path(filename)
+ self._save_grayscale_image(save_path, img, data_range, cmap, name, step)
+ return save_path
+
+ def get_image_grid_(self, imgs, align):
+ if isinstance(imgs[0], list):
+ return np.concatenate(
+ [self.get_image_grid_(row, align) for row in imgs], axis=0
+ )
+ cols = []
+ for col in imgs:
+ assert col["type"] in ["rgb", "uv", "grayscale"]
+ if col["type"] == "rgb":
+ rgb_kwargs = self.DEFAULT_RGB_KWARGS.copy()
+ rgb_kwargs.update(col["kwargs"])
+ cols.append(self.get_rgb_image_(col["img"], **rgb_kwargs))
+ elif col["type"] == "uv":
+ uv_kwargs = self.DEFAULT_UV_KWARGS.copy()
+ uv_kwargs.update(col["kwargs"])
+ cols.append(self.get_uv_image_(col["img"], **uv_kwargs))
+ elif col["type"] == "grayscale":
+ grayscale_kwargs = self.DEFAULT_GRAYSCALE_KWARGS.copy()
+ grayscale_kwargs.update(col["kwargs"])
+ cols.append(self.get_grayscale_image_(col["img"], **grayscale_kwargs))
+
+ if align == "max":
+ h = max([col.shape[0] for col in cols])
+ elif align == "min":
+ h = min([col.shape[0] for col in cols])
+ elif isinstance(align, int):
+ h = align
+ else:
+ raise ValueError(
+ f"Unsupported image grid align: {align}, should be min, max, or int"
+ )
+
+ for i in range(len(cols)):
+ if cols[i].shape[0] != h:
+ w = int(cols[i].shape[1] * h / cols[i].shape[0])
+ cols[i] = cv2.resize(cols[i], (w, h), interpolation=cv2.INTER_CUBIC)
+ return np.concatenate(cols, axis=1)
+
+ def save_image_grid(
+ self,
+ filename,
+ imgs,
+ align=DEFAULT_GRID_KWARGS["align"],
+ name: Optional[str] = None,
+ step: Optional[int] = None,
+ texts: Optional[List[float]] = None,
+ ):
+ save_path = self.get_save_path(filename)
+ img = self.get_image_grid_(imgs, align=align)
+
+ if texts is not None:
+ img = Image.fromarray(img)
+ draw = ImageDraw.Draw(img)
+ black, white = (0, 0, 0), (255, 255, 255)
+ for i, text in enumerate(texts):
+ draw.text((2, (img.size[1] // len(texts)) * i + 1), f"{text}", white)
+ draw.text((0, (img.size[1] // len(texts)) * i + 1), f"{text}", white)
+ draw.text((2, (img.size[1] // len(texts)) * i - 1), f"{text}", white)
+ draw.text((0, (img.size[1] // len(texts)) * i - 1), f"{text}", white)
+ draw.text((1, (img.size[1] // len(texts)) * i), f"{text}", black)
+ img = np.asarray(img)
+
+ cv2.imwrite(save_path, img)
+ if name and self._wandb_logger:
+ self._wandb_logger.log_image(key=name, images=[save_path], step=step)
+ return save_path
+
+ def save_image(self, filename, img) -> str:
+ save_path = self.get_save_path(filename)
+ img = self.convert_data(img)
+ assert img.dtype == np.uint8 or img.dtype == np.uint16
+ if img.ndim == 3 and img.shape[-1] == 3:
+ img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
+ elif img.ndim == 3 and img.shape[-1] == 4:
+ img = cv2.cvtColor(img, cv2.COLOR_RGBA2BGRA)
+ cv2.imwrite(save_path, img)
+ return save_path
+
+ def save_cubemap(self, filename, img, data_range=(0, 1), rgba=False) -> str:
+ save_path = self.get_save_path(filename)
+ img = self.convert_data(img)
+ assert img.ndim == 4 and img.shape[0] == 6 and img.shape[1] == img.shape[2]
+
+ imgs_full = []
+ for start in range(0, img.shape[-1], 3):
+ img_ = img[..., start : start + 3]
+ img_ = np.stack(
+ [
+ self.get_rgb_image_(img_[i], "HWC", data_range, rgba=rgba)
+ for i in range(img_.shape[0])
+ ],
+ axis=0,
+ )
+ size = img_.shape[1]
+ placeholder = np.zeros((size, size, 3), dtype=np.float32)
+ img_full = np.concatenate(
+ [
+ np.concatenate(
+ [placeholder, img_[2], placeholder, placeholder], axis=1
+ ),
+ np.concatenate([img_[1], img_[4], img_[0], img_[5]], axis=1),
+ np.concatenate(
+ [placeholder, img_[3], placeholder, placeholder], axis=1
+ ),
+ ],
+ axis=0,
+ )
+ imgs_full.append(img_full)
+
+ imgs_full = np.concatenate(imgs_full, axis=1)
+ cv2.imwrite(save_path, imgs_full)
+ return save_path
+
+ def save_data(self, filename, data) -> str:
+ data = self.convert_data(data)
+ if isinstance(data, dict):
+ if not filename.endswith(".npz"):
+ filename += ".npz"
+ save_path = self.get_save_path(filename)
+ np.savez(save_path, **data)
+ else:
+ if not filename.endswith(".npy"):
+ filename += ".npy"
+ save_path = self.get_save_path(filename)
+ np.save(save_path, data)
+ return save_path
+
+ def save_state_dict(self, filename, data) -> str:
+ save_path = self.get_save_path(filename)
+ torch.save(data, save_path)
+ return save_path
+
+ def save_img_sequence(
+ self,
+ filename,
+ img_dir,
+ matcher,
+ save_format="mp4",
+ fps=30,
+ name: Optional[str] = None,
+ step: Optional[int] = None,
+ ) -> str:
+ assert save_format in ["gif", "mp4"]
+ if not filename.endswith(save_format):
+ filename += f".{save_format}"
+ save_path = self.get_save_path(filename)
+ matcher = re.compile(matcher)
+ img_dir = os.path.join(self.get_save_dir(), img_dir)
+ imgs = []
+ for f in os.listdir(img_dir):
+ if matcher.search(f):
+ imgs.append(f)
+ imgs = sorted(imgs, key=lambda f: int(matcher.search(f).groups()[0]))
+ imgs = [cv2.imread(os.path.join(img_dir, f)) for f in imgs]
+
+ if save_format == "gif":
+ imgs = [cv2.cvtColor(i, cv2.COLOR_BGR2RGB) for i in imgs]
+ imageio.mimsave(save_path, imgs, fps=fps, palettesize=256)
+ elif save_format == "mp4":
+ imgs = [cv2.cvtColor(i, cv2.COLOR_BGR2RGB) for i in imgs]
+ imageio.mimsave(save_path, imgs, fps=fps)
+ if name and self._wandb_logger:
+ lrm.warn("Wandb logger does not support video logging yet!")
+ return save_path
+
+ def save_img_sequences(
+ self,
+ seq_dir,
+ matcher,
+ save_format="mp4",
+ fps=30,
+ delete=True,
+ name: Optional[str] = None,
+ step: Optional[int] = None,
+ ):
+ seq_dir_ = os.path.join(self.get_save_dir(), seq_dir)
+ for f in os.listdir(seq_dir_):
+ img_dir_ = os.path.join(seq_dir_, f)
+ if not os.path.isdir(img_dir_):
+ continue
+ try:
+ self.save_img_sequence(
+ os.path.join(seq_dir, f),
+ os.path.join(seq_dir, f),
+ matcher,
+ save_format=save_format,
+ fps=fps,
+ name=f"{name}_{f}",
+ step=step,
+ )
+ if delete:
+ shutil.rmtree(img_dir_)
+ except:
+ lrm.warn(f"Video saving for directory {seq_dir_} failed!")
+
+ def save_mesh(self, filename, v_pos, t_pos_idx, v_tex=None, t_tex_idx=None) -> str:
+ import trimesh
+
+ save_path = self.get_save_path(filename)
+ v_pos = self.convert_data(v_pos)
+ t_pos_idx = self.convert_data(t_pos_idx)
+ mesh = trimesh.Trimesh(vertices=v_pos, faces=t_pos_idx)
+ mesh.export(save_path)
+ return save_path
+
+ def save_obj(
+ self,
+ filename: str,
+ mesh: Mesh,
+ save_mat: bool = False,
+ save_normal: bool = False,
+ save_uv: bool = False,
+ save_vertex_color: bool = True,
+ map_Kd: Optional[Float[Tensor, "H W 3"]] = None,
+ map_Ks: Optional[Float[Tensor, "H W 3"]] = None,
+ map_Bump: Optional[Float[Tensor, "H W 3"]] = None,
+ map_Pm: Optional[Float[Tensor, "H W 1"]] = None,
+ map_Pr: Optional[Float[Tensor, "H W 1"]] = None,
+ map_format: str = "jpg",
+ ) -> List[str]:
+ save_paths: List[str] = []
+ if not filename.endswith(".obj"):
+ filename += ".obj"
+ v_pos, t_pos_idx = self.convert_data(mesh.v_pos), self.convert_data(
+ mesh.t_pos_idx
+ )
+ v_nrm, v_tex, t_tex_idx, v_rgb = None, None, None, None
+ if save_normal:
+ v_nrm = self.convert_data(mesh.v_nrm)
+ if save_uv:
+ v_tex, t_tex_idx = self.convert_data(mesh.v_tex), self.convert_data(
+ mesh.t_tex_idx
+ )
+ if save_vertex_color:
+ v_rgb = self.convert_data(mesh.v_rgb)
+ matname, mtllib = None, None
+ if save_mat:
+ matname = "default"
+ mtl_filename = filename.replace(".obj", ".mtl")
+ mtllib = os.path.basename(mtl_filename)
+ mtl_save_paths = self._save_mtl(
+ mtl_filename,
+ matname,
+ map_Kd=self.convert_data(map_Kd),
+ map_Ks=self.convert_data(map_Ks),
+ map_Bump=self.convert_data(map_Bump),
+ map_Pm=self.convert_data(map_Pm),
+ map_Pr=self.convert_data(map_Pr),
+ map_format=map_format,
+ )
+ save_paths += mtl_save_paths
+ obj_save_path = self._save_obj(
+ filename,
+ v_pos,
+ t_pos_idx,
+ v_nrm=v_nrm,
+ v_tex=v_tex,
+ t_tex_idx=t_tex_idx,
+ v_rgb=v_rgb,
+ matname=matname,
+ mtllib=mtllib,
+ )
+ save_paths.append(obj_save_path)
+ return save_paths
+
+ def _save_obj(
+ self,
+ filename,
+ v_pos,
+ t_pos_idx,
+ v_nrm=None,
+ v_tex=None,
+ t_tex_idx=None,
+ v_rgb=None,
+ matname=None,
+ mtllib=None,
+ ) -> str:
+ obj_str = ""
+ if matname is not None:
+ obj_str += f"mtllib {mtllib}\n"
+ obj_str += f"g object\n"
+ obj_str += f"usemtl {matname}\n"
+ for i in range(len(v_pos)):
+ obj_str += f"v {v_pos[i][0]} {v_pos[i][1]} {v_pos[i][2]}"
+ if v_rgb is not None:
+ obj_str += f" {v_rgb[i][0]} {v_rgb[i][1]} {v_rgb[i][2]}"
+ obj_str += "\n"
+ if v_nrm is not None:
+ for v in v_nrm:
+ obj_str += f"vn {v[0]} {v[1]} {v[2]}\n"
+ if v_tex is not None:
+ for v in v_tex:
+ obj_str += f"vt {v[0]} {1.0 - v[1]}\n"
+
+ for i in range(len(t_pos_idx)):
+ obj_str += "f"
+ for j in range(3):
+ obj_str += f" {t_pos_idx[i][j] + 1}/"
+ if v_tex is not None:
+ obj_str += f"{t_tex_idx[i][j] + 1}"
+ obj_str += "/"
+ if v_nrm is not None:
+ obj_str += f"{t_pos_idx[i][j] + 1}"
+ obj_str += "\n"
+
+ save_path = self.get_save_path(filename)
+ with open(save_path, "w") as f:
+ f.write(obj_str)
+ return save_path
+
+ def _save_mtl(
+ self,
+ filename,
+ matname,
+ Ka=(0.0, 0.0, 0.0),
+ Kd=(1.0, 1.0, 1.0),
+ Ks=(0.0, 0.0, 0.0),
+ map_Kd=None,
+ map_Ks=None,
+ map_Bump=None,
+ map_Pm=None,
+ map_Pr=None,
+ map_format="jpg",
+ step: Optional[int] = None,
+ ) -> List[str]:
+ mtl_save_path = self.get_save_path(filename)
+ save_paths = [mtl_save_path]
+ mtl_str = f"newmtl {matname}\n"
+ mtl_str += f"Ka {Ka[0]} {Ka[1]} {Ka[2]}\n"
+ if map_Kd is not None:
+ map_Kd_save_path = os.path.join(
+ os.path.dirname(mtl_save_path), f"texture_kd.{map_format}"
+ )
+ mtl_str += f"map_Kd texture_kd.{map_format}\n"
+ self._save_rgb_image(
+ map_Kd_save_path,
+ map_Kd,
+ data_format="HWC",
+ data_range=(0, 1),
+ name=f"{matname}_Kd",
+ step=step,
+ )
+ save_paths.append(map_Kd_save_path)
+ else:
+ mtl_str += f"Kd {Kd[0]} {Kd[1]} {Kd[2]}\n"
+ if map_Ks is not None:
+ map_Ks_save_path = os.path.join(
+ os.path.dirname(mtl_save_path), f"texture_ks.{map_format}"
+ )
+ mtl_str += f"map_Ks texture_ks.{map_format}\n"
+ self._save_rgb_image(
+ map_Ks_save_path,
+ map_Ks,
+ data_format="HWC",
+ data_range=(0, 1),
+ name=f"{matname}_Ks",
+ step=step,
+ )
+ save_paths.append(map_Ks_save_path)
+ else:
+ mtl_str += f"Ks {Ks[0]} {Ks[1]} {Ks[2]}\n"
+ if map_Bump is not None:
+ map_Bump_save_path = os.path.join(
+ os.path.dirname(mtl_save_path), f"texture_nrm.{map_format}"
+ )
+ mtl_str += f"map_Bump texture_nrm.{map_format}\n"
+ self._save_rgb_image(
+ map_Bump_save_path,
+ map_Bump,
+ data_format="HWC",
+ data_range=(0, 1),
+ name=f"{matname}_Bump",
+ step=step,
+ )
+ save_paths.append(map_Bump_save_path)
+ if map_Pm is not None:
+ map_Pm_save_path = os.path.join(
+ os.path.dirname(mtl_save_path), f"texture_metallic.{map_format}"
+ )
+ mtl_str += f"map_Pm texture_metallic.{map_format}\n"
+ self._save_grayscale_image(
+ map_Pm_save_path,
+ map_Pm,
+ data_range=(0, 1),
+ cmap=None,
+ name=f"{matname}_refl",
+ step=step,
+ )
+ save_paths.append(map_Pm_save_path)
+ if map_Pr is not None:
+ map_Pr_save_path = os.path.join(
+ os.path.dirname(mtl_save_path), f"texture_roughness.{map_format}"
+ )
+ mtl_str += f"map_Pr texture_roughness.{map_format}\n"
+ self._save_grayscale_image(
+ map_Pr_save_path,
+ map_Pr,
+ data_range=(0, 1),
+ cmap=None,
+ name=f"{matname}_Ns",
+ step=step,
+ )
+ save_paths.append(map_Pr_save_path)
+ with open(self.get_save_path(filename), "w") as f:
+ f.write(mtl_str)
+ return save_paths
+
+ def save_glb(
+ self,
+ filename: str,
+ mesh: Mesh,
+ save_mat: bool = False,
+ save_normal: bool = True,
+ save_uv: bool = True,
+ save_vertex_color: bool = True,
+ map_Kd: Optional[Float[Tensor, "H W 3"]] = None,
+ map_Ks: Optional[Float[Tensor, "H W 3"]] = None,
+ map_Bump: Optional[Float[Tensor, "H W 3"]] = None,
+ map_Pm: Optional[Float[Tensor, "H W 1"]] = None,
+ map_Pr: Optional[Float[Tensor, "H W 1"]] = None,
+ map_format: str = "jpg",
+ ) -> List[str]:
+ save_paths: List[str] = []
+ if not filename.endswith(".glb"):
+ filename += ".glb"
+ v_pos, t_pos_idx = self.convert_data(mesh.v_pos), self.convert_data(
+ mesh.t_pos_idx
+ )
+ v_nrm, v_tex, t_tex_idx, v_rgb = None, None, None, None
+ if save_normal:
+ v_nrm = self.convert_data(mesh.v_nrm)
+ if save_uv:
+ v_tex, t_tex_idx = self.convert_data(mesh.v_tex), self.convert_data(
+ mesh.t_tex_idx
+ )
+ if save_vertex_color:
+ v_rgb = self.convert_data(mesh.v_rgb)
+
+ obj_save_path = self._save_glb(
+ filename,
+ v_pos,
+ t_pos_idx,
+ v_nrm=v_nrm,
+ v_tex=v_tex,
+ t_tex_idx=t_tex_idx,
+ v_rgb=v_rgb,
+ )
+ save_paths.append(obj_save_path)
+ return save_paths
+
+ def _save_glb(
+ self,
+ filename,
+ v_pos,
+ t_pos_idx,
+ v_nrm=None,
+ v_tex=None,
+ t_tex_idx=None,
+ v_rgb=None,
+ matname=None,
+ mtllib=None,
+ ) -> str:
+ import trimesh
+
+ mesh = trimesh.Trimesh(
+ vertices=v_pos, faces=t_pos_idx, vertex_normals=v_nrm, vertex_colors=v_rgb
+ )
+ # not tested
+ if v_tex is not None:
+ mesh.visual = trimesh.visual.TextureVisuals(uv=v_tex)
+
+ save_path = self.get_save_path(filename)
+ mesh.export(save_path)
+ return save_path
+
+ def save_file(self, filename, src_path, delete=False) -> str:
+ save_path = self.get_save_path(filename)
+ shutil.copyfile(src_path, save_path)
+ if delete:
+ os.remove(src_path)
+ return save_path
+
+ def save_json(self, filename, payload) -> str:
+ save_path = self.get_save_path(filename)
+ with open(save_path, "w") as f:
+ f.write(json.dumps(payload))
+ return save_path
diff --git a/3D_Stage/lrm/utils/sdf.py b/3D_Stage/lrm/utils/sdf.py
new file mode 100644
index 0000000000000000000000000000000000000000..b463a0c9f7482eb73b42205b92fbaadbc8ffde5f
--- /dev/null
+++ b/3D_Stage/lrm/utils/sdf.py
@@ -0,0 +1,15 @@
+import pySDF as SDF
+import cv2
+import numpy as np
+import torch
+from lrm.models.isosurface import MarchingTetrahedraHelper
+
+def get_tetra_for_mesh(mesh_path, resolution=128):
+ isosurface_helper = MarchingTetrahedraHelper(resolution, f"load/{resolution}_tets.npz")
+ isosurface_helper.points_range = (-1, 1)
+ mesh = trimesh.load(mesh_path)
+ dmtet = np.load(f"")
+ sdf = SDF(mesh.vertices, mesh.faces)
+ sdf_gt = sdf(isosurface_helper.grid_vertices.numpy())
+ return sdf_gt
+
diff --git a/3D_Stage/lrm/utils/typing.py b/3D_Stage/lrm/utils/typing.py
new file mode 100644
index 0000000000000000000000000000000000000000..dee9f967c21f94db1ad939d7dead156d86748752
--- /dev/null
+++ b/3D_Stage/lrm/utils/typing.py
@@ -0,0 +1,40 @@
+"""
+This module contains type annotations for the project, using
+1. Python type hints (https://docs.python.org/3/library/typing.html) for Python objects
+2. jaxtyping (https://github.com/google/jaxtyping/blob/main/API.md) for PyTorch tensors
+
+Two types of typing checking can be used:
+1. Static type checking with mypy (install with pip and enabled as the default linter in VSCode)
+2. Runtime type checking with typeguard (install with pip and triggered at runtime, mainly for tensor dtype and shape checking)
+"""
+
+# Basic types
+from typing import (
+ Any,
+ Callable,
+ Dict,
+ Iterable,
+ List,
+ Literal,
+ NamedTuple,
+ NewType,
+ Optional,
+ Sized,
+ Tuple,
+ Type,
+ TypeVar,
+ Union,
+)
+
+# Tensor dtype
+# for jaxtyping usage, see https://github.com/google/jaxtyping/blob/main/API.md
+from jaxtyping import Bool, Complex, Float, Inexact, Int, Integer, Num, Shaped, UInt
+
+# Config type
+from omegaconf import DictConfig
+
+# PyTorch Tensor type
+from torch import Tensor
+
+# Runtime type checking decorator
+from typeguard import typechecked as typechecker
diff --git a/3D_Stage/material/examples/1/1.png b/3D_Stage/material/examples/1/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..4bbee217af8dee53d4773e06accf946354d630d9
Binary files /dev/null and b/3D_Stage/material/examples/1/1.png differ
diff --git a/3D_Stage/material/examples/1/2.png b/3D_Stage/material/examples/1/2.png
new file mode 100644
index 0000000000000000000000000000000000000000..9ad67e2f5098e22a759b42e2589ce553a53ee18b
Binary files /dev/null and b/3D_Stage/material/examples/1/2.png differ
diff --git a/3D_Stage/material/examples/1/3.png b/3D_Stage/material/examples/1/3.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a403ea4bb685bff43c57d77d3e8ef80a11d42e7
Binary files /dev/null and b/3D_Stage/material/examples/1/3.png differ
diff --git a/3D_Stage/material/examples/1/4.png b/3D_Stage/material/examples/1/4.png
new file mode 100644
index 0000000000000000000000000000000000000000..6a359b50d1dd7904fc2afc416dec6843150fd3dd
Binary files /dev/null and b/3D_Stage/material/examples/1/4.png differ
diff --git a/3D_Stage/material/meta.json b/3D_Stage/material/meta.json
new file mode 100644
index 0000000000000000000000000000000000000000..9ca2e428f7cea46525623179a35168bbe4ff15c9
--- /dev/null
+++ b/3D_Stage/material/meta.json
@@ -0,0 +1,36 @@
+{
+ "locations": [
+ {
+ "transform_matrix": [
+ [ 1.0, 0.0, 0.0, 0.0 ],
+ [ 0.0, 0.0, 1.0, 1.5 ],
+ [ 0.0, 1.0, 0.0, 0.0 ],
+ [ 0.0, 0.0, 0.0, 1.0 ]
+ ]
+ },
+ {
+ "transform_matrix": [
+ [ -1.0, 0.0, 0.0, 0.0 ],
+ [ 0.0, 0.0, -1.0, -1.5 ],
+ [ 0.0, 1.0, 0.0, 0.0 ],
+ [ 0.0, 0.0, 0.0, 1.0 ]
+ ]
+ },
+ {
+ "transform_matrix": [
+ [ 0.0, 0.0, 1.0, 1.5 ],
+ [ -1.0, 0.0, 0.0, 0.0 ],
+ [ 0.0, 1.0, 0.0, 0.0 ],
+ [ 0.0, 0.0, 0.0, 1.0 ]
+ ]
+ },
+ {
+ "transform_matrix": [
+ [ 0.0, 0.0, -1.0, -1.5 ],
+ [ 1.0, 0.0, 0.0, 0.0 ],
+ [ 0.0, 1.0, 0.0, 0.0 ],
+ [ 0.0, 0.0, 0.0, 1.0 ]
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/3D_Stage/refine.py b/3D_Stage/refine.py
new file mode 100644
index 0000000000000000000000000000000000000000..7d87c44f2c9ba8052aeb534b28df67ae26733898
--- /dev/null
+++ b/3D_Stage/refine.py
@@ -0,0 +1,185 @@
+import os
+import numpy as np
+import torch
+import nvdiffrast.torch as dr
+import json
+import torch.nn.functional as F
+from PIL import Image
+import pymeshlab
+import cv2
+
+def back_to_texture(glctx, look_at, pos, tri, tex, uv, uv_idx, idx, vn):
+ rast_out, rast_out_db = dr.rasterize(glctx, pos, tri, resolution=[tex.shape[0],tex.shape[1]])
+ gb_normal, _ = dr.interpolate(vn[None], rast_out, tri)
+ gb_normal = F.normalize(gb_normal, dim=-1)
+ if idx == 2 or idx == 0:
+ filter_camera = [torch.tensor([[[[1,0.,0.]]]]).cuda(), torch.tensor([[[[-1,0.,0.]]]]).cuda()]
+ else:
+ filter_camera = [torch.tensor([[[[0,-1.,0.]]]]).cuda(), torch.tensor([[[[0,1.,0.]]]]).cuda()]
+ nmasks = []
+ for fc in filter_camera:
+ nmasks.append(((gb_normal * fc) > 0.75).int().sum(keepdim=True, dim=-1))
+ gb_normal_mask = 1 - (nmasks[0] | nmasks[1])
+ #Image.fromarray(np.clip(gb_normal_mask[0,...,0].detach().cpu().numpy() * 255, 0, 255).astype(np.uint8)).save(f"mask_normal_{idx}.png")
+ gb_mask = rast_out[...,3:4] > 0
+ tri_list = torch.unique(rast_out[...,3:4].reshape(-1))
+ tri_list = (tri_list[1:] - 1).to(torch.int32)
+ pos = pos[0]
+
+ depth_map = rast_out[...,3:4].clone()
+ depth_map[depth_map > 0] = 1
+ depth_map = depth_map.to(torch.float32)
+ dmax = (rast_out[...,2:3] * gb_mask).max()
+ uv = torch.cat([uv * 2 - 1, torch.zeros(uv.shape[0], 1).cuda(), torch.ones(uv.shape[0], 1).cuda()], dim=1).unsqueeze(0)
+ uv_idx = uv_idx[tri_list.to(torch.long)]
+ rast_uv, rast_uv_db = dr.rasterize(glctx, uv, uv_idx, resolution=(1024, 1024))
+ pos_clip = torch.cat([pos[...,:2], pos[...,3:]], -1)
+ pos_2d, _ = dr.interpolate(pos_clip, rast_uv, tri[tri_list.to(torch.long)]) # pos (x, y, z, w)
+ pos_coord = (pos_2d[...,:2] / (pos_2d[...,2:3] + 1e-6) + 1) / 2.
+ texture_mask = (rast_uv[...,3:4] > 0).int()
+ color = dr.texture(tex[None, ...] * gb_normal_mask, pos_coord, filter_mode='linear')
+ color_mask = dr.texture(gb_normal_mask.to(torch.float32), pos_coord, filter_mode='linear')
+ color_mask[color_mask > 0.82] = 1
+ color_mask[color_mask <= 0.82] = 0
+ color_mask = color_mask.to(torch.int32)
+ #Image.fromarray(np.clip(color_mask[0].repeat(1,1,3).detach().cpu().numpy() * 255, 0, 255).astype(np.uint8)).save(f"depth_{idx}.png")
+ texture_mask = texture_mask * color_mask
+ #Image.fromarray(np.clip(color[0].detach().cpu().numpy() * 255, 0, 255).astype(np.uint8)).save(f"{idx}.png")
+ #Image.fromarray(np.clip(texture_mask[0].repeat(1,1,3).detach().cpu().numpy() * 255, 0, 255).astype(np.uint8)).convert("RGB").save(f"mask-{idx}.png")
+ return color, texture_mask, rast_uv
+
+def perspective(fovy=0.6913, aspect=1.0, n=0.1, f=1000.0, device=None):
+ y = np.tan(fovy / 2)
+ return torch.tensor([[1/(y*aspect), 0, 0, 0],
+ [ 0, 1/-y, 0, 0],
+ [ 0, 0, -(f+n)/(f-n), -(2*f*n)/(f-n)],
+ [ 0, 0, -1, 0]]).to(torch.float32).cuda()
+
+def rec_mvp(trans, h, w):
+ mv = trans
+ fov = 40. / 180. * np.pi
+ proj = perspective(fov, h / w, n=0.1, f=1000)
+ mvp = proj @ mv
+ return mvp
+
+def aggregate_texture(kd_map, textures, texture_masks, rast_uvs):
+ texture = torch.zeros_like(textures[0])
+ texture_mask = torch.zeros_like(texture_masks[0])
+ ctex = []
+ for idx in range(len(textures)):
+ ctex.append(textures[idx] * texture_masks[idx] + 10 * (1 - texture_masks[idx]))
+ cat_textures = torch.stack(ctex, dim=-2)
+ dis_measure = (cat_textures - kd_map.unsqueeze(-2)).abs().sum(-1)
+ _, choose_idx = dis_measure.min(-1)
+
+ choose_idx = choose_idx.unsqueeze(-1).unsqueeze(-1).repeat(1, 1, 1, 1, 3)
+ final_texture_map = torch.gather(cat_textures, 3, choose_idx).squeeze(-2)
+ #cv2.imwrite("final_texture_map.png", cv2.cvtColor((final_texture_map[0].cpu().numpy() * 255).astype(np.uint8), cv2.COLOR_BGR2RGB))
+ #cv2.imwrite("final_texture_mask.png", (texture_mask[0].cpu().numpy() * 255).astype(np.uint8))
+ zero_mask = (final_texture_map.max(dim=-1, keepdim=True)[0] > 0.1)
+ close_mask = ((final_texture_map[0] - kd_map).abs().sum(dim=-1, keepdim=True) < 1.0).int()
+ for idx in range(len(textures)):
+ texture += textures[idx] * texture_masks[idx]
+ texture_mask |= texture_masks[idx]
+ texture_mask = texture_mask * zero_mask * close_mask[None]
+ optimize_mask = (texture_mask == 0).int()
+
+ #import pdb; pdb.set_trace()
+ #mask = (texture_mask[0].cpu().numpy() * 255).astype(np.uint8)
+ #cv2.imwrite("mask.png", mask)
+ #kernel = np.ones((5,5), np.uint8)
+ #dilated = cv2.dilate(mask, kernel, iterations=1)
+ #cv2.imwrite("di_mask.png", dilated)
+ #texture_mask[0] = torch.from_numpy(dilated).unsqueeze(-1).to(torch.float32) / 255.
+
+ final_texture_map = final_texture_map[0] * texture_mask[0]
+ Image.fromarray(np.rint(final_texture_map.cpu().numpy() * 255).astype(np.uint8)).save(f"final_texture.png")
+
+ #cv2.imwrite("kd_map.png", cv2.cvtColor((kd_map.cpu().numpy() * 255).astype(np.uint8), cv2.COLOR_BGR2RGB))
+ #cv2.imwrite("texture_map.png", cv2.cvtColor((final_texture_map.cpu().numpy() * 255).astype(np.uint8), cv2.COLOR_BGR2RGB))
+ #result = cv2.seamlessClone((final_texture_map.cpu().numpy() * 255).astype(np.uint8), (kd_map.cpu().numpy() * 255).astype(np.uint8), mask, (mask.shape[1]//2, mask.shape[0]//2), cv2.NORMAL_CLONE)
+ #cv2.imwrite("result.png", cv2.cvtColor(result * 255, cv2.COLOR_BGR2RGB))
+
+ kd_map = kd_map * (1 - texture_mask[0]) + final_texture_map
+ return kd_map, optimize_mask
+
+def refine(save_path, front_image, back_image, left_image, right_image):
+ ms = pymeshlab.MeshSet()
+ mesh_path = f"{save_path}/model-00.obj"
+ ms.load_new_mesh(mesh_path)
+ ms.apply_coord_laplacian_smoothing(stepsmoothnum=10)
+ tl = open(mesh_path, "r").readlines()
+ tex_uv = []
+ uv_idx = []
+ for line in tl:
+ if line.startswith("vt"):
+ uvs = line.split(" ")[1:3]
+ tex_uv += [float(uvs[0]), 1.0-float(uvs[1])]
+ tex_uv = torch.from_numpy(np.array(tex_uv)).to(torch.float32).cuda().reshape(-1, 2)
+ m = ms.current_mesh()
+ v_matrix = m.vertex_matrix()
+ f_matrix = m.face_matrix()
+ vn = m.vertex_normal_matrix()
+ uv_idx = torch.arange(f_matrix.shape[0] * 3).reshape(-1, 3).to(torch.int32).cuda()
+ vn = torch.tensor(vn).contiguous().cuda().to(torch.float32)
+
+ frames = []
+ front_camera = torch.tensor([[
+ 1,0,0,0,
+ 0,0,1,0,
+ 0,-1,0,-1.5,
+ 0,0,0,1,
+ ]]).to(torch.float32).reshape(4,4).cuda()
+ back_camera = torch.tensor([[
+ 1,0,0,0,
+ 0,0,1,0,
+ 0,1,0,-1.5,
+ 0,0,0,1,
+ ]]).to(torch.float32).reshape(4,4).cuda()
+ right_camera = torch.tensor([[
+ 0,-1,0,0,
+ 0,0,1,0,
+ 1,0,0,-1.5,
+ 0,0,0,1,
+ ]]).to(torch.float32).reshape(4,4).cuda()
+ left_camera = torch.tensor([[
+ 0,1,0,0,
+ 0,0,1,0,
+ -1,0,0,-1.5,
+ 0,0,0,1,
+ ]]).to(torch.float32).reshape(4,4).cuda()
+ frames = [front_camera, left_camera, back_camera, right_camera]
+
+ target_images = []
+ for target_image in [front_image, left_image, back_image, right_image]:
+ target_images.append(torch.from_numpy(np.asarray(target_image.convert("RGB"))).to(torch.float32).cuda() / 255.)
+
+ pos = torch.tensor(v_matrix, dtype=torch.float32).contiguous().cuda()
+ tri = torch.tensor(f_matrix, dtype=torch.int32).contiguous().cuda()
+
+ kd_map = (torch.tensor(np.asarray(Image.open(f"{save_path}/texture_kd.jpg"))) / 255.).cuda()
+ translate_tensor = torch.zeros((1,1,3)).cuda()
+ pos = torch.cat([pos, torch.ones([pos.shape[0], 1]).cuda()],-1).unsqueeze(0)
+ glctx = dr.RasterizeCudaContext()
+ target_texture = []
+ target_mask = []
+ rast_uvs = []
+ with torch.no_grad():
+ for idx, trans in enumerate(frames):
+ target_image = target_images[idx]
+ look_at = -torch.linalg.inv(trans)[:3,2]
+ mvp = rec_mvp(trans, h=target_images[0].shape[0], w=target_images[0].shape[1])
+ trans_pos = pos.clone()
+ trans_pos[...,:3] += translate_tensor
+ view_pos = torch.matmul(mvp, trans_pos.unsqueeze(-1)).squeeze(-1)
+ texture, mask, rast_uv = back_to_texture(glctx, look_at, view_pos, tri, target_image, tex_uv, uv_idx, idx, vn)
+ target_texture.append(texture)
+ target_mask.append(mask)
+ rast_uvs.append(rast_uv)
+ kd_map, opt_mask = aggregate_texture(kd_map, target_texture, target_mask, rast_uvs)
+ opt_mask = opt_mask[0]
+ Image.fromarray((np.clip(kd_map.detach().cpu().numpy() * 255, 0, 255)).astype(np.uint8)).save(f"{save_path}/refined_texture_kd.jpg")
+
+ #ms.save_current_mesh(f"{save_path}/model-00.obj")
+ with open(f"{save_path}/model-00.mtl", "w") as f:
+ f.write(f"newmtl default\nKa 0.0 0.0 0.0\nmap_Kd refined_texture_kd.jpg\nKs 0.0 0.0 0.0")
\ No newline at end of file
diff --git a/3D_Stage/webui.py b/3D_Stage/webui.py
new file mode 100644
index 0000000000000000000000000000000000000000..ebfaee7db54c1f1e769cec2779c789be9c75bc34
--- /dev/null
+++ b/3D_Stage/webui.py
@@ -0,0 +1,162 @@
+import os
+import json
+import tqdm
+import cv2
+import numpy as np
+import torch, lrm
+import torch.nn.functional as F
+from lrm.utils.config import load_config
+from datetime import datetime
+import gradio as gr
+from pygltflib import GLTF2
+from PIL import Image
+from huggingface_hub import hf_hub_download
+
+from refine import refine
+
+device = "cuda"
+
+import trimesh
+import pymeshlab
+import numpy as np
+
+from huggingface_hub import hf_hub_download, list_repo_files
+
+repo_id = "zjpshadow/CharacterGen"
+all_files = list_repo_files(repo_id, revision="main")
+
+for file in all_files:
+ if os.path.exists("../" + file):
+ continue
+ if file.startswith("3D_Stage"):
+ hf_hub_download(repo_id, file, local_dir="../")
+
+def traverse(path, back_proj):
+ mesh = trimesh.load(f"{path}/model-00.obj")
+ mesh.apply_transform(trimesh.transformations.rotation_matrix(np.radians(90.0), [-1, 0, 0]))
+ mesh.apply_transform(trimesh.transformations.rotation_matrix(np.radians(180.0), [0, 1, 0]))
+
+ cmesh = pymeshlab.Mesh(mesh.vertices, mesh.faces)
+ ms = pymeshlab.MeshSet()
+ ms.add_mesh(cmesh)
+ ms.apply_coord_laplacian_smoothing(stepsmoothnum=4)
+ mesh.vertices = ms.current_mesh().vertex_matrix()
+
+ mesh.export(f'{path}/output.glb', file_type='glb')
+
+ image = Image.open(f"{path}/{'refined_texture_kd.jpg' if back_proj else 'texture_kd.jpg'}")
+ texture = np.array(image)
+ vertex_colors = np.zeros((mesh.vertices.shape[0], 4), dtype=np.uint8)
+
+ for vertex_index in range(len(mesh.visual.uv)):
+ uv = mesh.visual.uv[vertex_index]
+ x = int(uv[0] * (texture.shape[1] - 1))
+ y = int((1 - uv[1]) * (texture.shape[0] - 1))
+
+ color = texture[y, x, :3]
+ vertex_colors[vertex_index] = [color[0], color[1], color[2], 255]
+ return trimesh.Trimesh(vertices=mesh.vertices, faces=mesh.faces, vertex_colors=vertex_colors)
+
+class Inference_API:
+
+ def __init__(self):
+ # Load config
+ self.cfg = load_config("configs/infer.yaml", makedirs=False)
+ # Load system
+ print("Loading system")
+ self.system = lrm.find(self.cfg.system_cls)(self.cfg.system).to(device)
+ self.system.eval()
+
+ def process_images(self, img_input0, img_input1, img_input2, img_input3, back_proj):
+ meta = json.load(open("material/meta.json"))
+ c2w_cond = [np.array(loc["transform_matrix"]) for loc in meta["locations"]]
+ c2w_cond = torch.from_numpy(np.stack(c2w_cond, axis=0)).float()[None].to(device)
+
+ # Prepare input data
+ rgb_cond = []
+ files = [img_input0, img_input1, img_input2, img_input3]
+ new_image = []
+ for file in files:
+ image = np.array(file)
+ image = cv2.cvtColor(image, cv2.COLOR_RGBA2RGB)
+ new_image.append(Image.fromarray(image.astype(np.uint8)).convert("RGB"))
+ rgb = cv2.resize(image, (self.cfg.data.cond_width,
+ self.cfg.data.cond_height)).astype(np.float32) / 255.0
+ rgb_cond.append(rgb)
+ assert len(rgb_cond) == 4, "Please provide 4 images"
+
+ rgb_cond = torch.from_numpy(np.stack(rgb_cond, axis=0)).float()[None].to(device)
+
+ # Run inference
+ with torch.no_grad():
+ scene_codes = self.system({"rgb_cond": rgb_cond, "c2w_cond": c2w_cond})
+ exporter_output = self.system.exporter([f"{i:02d}" for i in range(rgb_cond.shape[0])], scene_codes)
+
+ # Save output
+ save_dir = os.path.join("./outputs", datetime.now().strftime("@%Y%m%d-%H%M%S"))
+ os.makedirs(save_dir, exist_ok=True)
+ self.system.set_save_dir(save_dir)
+
+ for out in exporter_output:
+ save_func_name = f"save_{out.save_type}"
+ save_func = getattr(self.system, save_func_name)
+ save_func(f"{out.save_name}", **out.params)
+
+ if back_proj:
+ refine(save_dir, new_image[1], new_image[0], new_image[3], new_image[2])
+
+ new_obj = traverse(save_dir, back_proj)
+ new_obj.export(f'{save_dir}/output.obj', file_type='obj')
+
+ gltf = GLTF2().load(f'{save_dir}/output.glb')
+ for material in gltf.materials:
+ if material.pbrMetallicRoughness:
+ material.pbrMetallicRoughness.baseColorFactor = [1.0, 1.0, 1.0, 100.0]
+ material.pbrMetallicRoughness.metallicFactor = 0.0
+ material.pbrMetallicRoughness.roughnessFactor = 1.0
+ gltf.save(f'{save_dir}/output.glb')
+
+ return save_dir, f"{save_dir}/output.obj", f"{save_dir}/output.glb"
+
+inferapi = Inference_API()
+
+# Define the interface
+with gr.Blocks() as demo:
+ gr.Markdown("# [SIGGRAPH'24] CharacterGen: Efficient 3D Character Generation from Single Images with Multi-View Pose Calibration")
+ gr.Markdown("# 3D Stage: Four View Images to 3D Mesh")
+ with gr.Row(variant="panel"):
+ with gr.Column():
+ with gr.Row():
+ img_input0 = gr.Image(type="pil", label="Back Image", image_mode="RGBA", width=256, height=384)
+ img_input1 = gr.Image(type="pil", label="Front Image", image_mode="RGBA", width=256, height=384)
+ with gr.Row():
+ img_input2 = gr.Image(type="pil", label="Right Image", image_mode="RGBA", width=256, height=384)
+ img_input3 = gr.Image(type="pil", label="Left Image", image_mode="RGBA", width=256, height=384)
+ with gr.Row():
+ gr.Examples(
+ examples=
+ [["material/examples/1/1.png",
+ "material/examples/1/2.png",
+ "material/examples/1/3.png",
+ "material/examples/1/4.png"]],
+ label="Example Images",
+ inputs=[img_input0, img_input1, img_input2, img_input3]
+ )
+ with gr.Column():
+ with gr.Row():
+ back_proj = gr.Checkbox(label="Back Projection")
+ submit_button = gr.Button("Process")
+ output_dir = gr.Textbox(label="Output Directory")
+ with gr.Column():
+ with gr.Tab("GLB"):
+ output_model_glb = gr.Model3D( label="Output Model (GLB Format)", height = 768)
+ gr.Markdown("Note: The model shown here has a darker appearance. Download to get correct results.")
+ with gr.Tab("OBJ"):
+ output_model_obj = gr.Model3D( label="Output Model (OBJ Format)", height = 768)
+ gr.Markdown("Note: The model shown here is flipped. Download to get correct results.")
+
+ submit_button.click(inferapi.process_images, inputs=[img_input0, img_input1, img_input2, img_input3, back_proj],
+ outputs=[output_dir, output_model_obj, output_model_glb])
+
+# Run the interface
+demo.launch()
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..0ad25db4bd1d86c452db3f9602ccdbe172438f52
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,661 @@
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+ A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate. Many developers of free software are heartened and
+encouraged by the resulting cooperation. However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+ The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community. It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server. Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+ An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals. This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU Affero General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Remote Network Interaction; Use with the GNU General Public License.
+
+ Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software. This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+.
diff --git a/README.md b/README.md
index 8418142fcfc5ab0f785b47c73c8a6d6af3ca9e64..05707060d869a10d204646e6354cc54ae9262c6e 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,124 @@
----
-title: CharacterGen
-emoji: 🏃
-colorFrom: purple
-colorTo: gray
-sdk: gradio
-sdk_version: 4.37.2
-app_file: app.py
-pinned: false
-license: apache-2.0
----
-
-Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
+# CharacterGen: Efficient 3D Character Generation from Single Images with Multi-View Pose Calibration
+
+This is the official codebase of SIGGRAPH'24 (TOG) [CharacterGen](https://charactergen.github.io/).
+
+![teaser](./materials/teaser.png)
+
+- [x] Rendering Script of VRM model, including blender and three-js.
+- [x] Inference code for 2D generation stage.
+- [x] Inference code for 3D generation stage.
+
+## Quick Start
+
+### 1. Prepare environment
+
+`pip install -r requirements.txt`
+
+### 2. Download the weight
+
+Install `huggingface-cli` first.
+
+```bash
+huggingface-cli download --resume-download zjpshadow/CharacterGen --include 2D_Stage/* --local-dir .
+huggingface-cli download --resume-download zjpshadow/CharacterGen --include 3D_Stage/* --local-dir .
+```
+
+If you find mistakes on download, you can download all the reporitory and move to the right folder.
+
+### 3. Run the script
+
+#### Run the whole pipeline
+```bash
+python webui.py
+```
+
+#### Only Run 2D Stage
+
+```bash
+cd 2D_Stage
+python webui.py
+```
+
+#### Only Run 3D Stage
+
+```bash
+cd 3D_Stage
+python webui.py
+```
+
+## Get the Anime3D Dataset
+
+Due to the policy, we cannot redistribute the raw data of VRM format 3D character.
+You can download the vroid dataset follow [PAniC-3D](https://github.com/ShuhongChen/panic3d-anime-reconstruction) instruction.
+And the you can render the script with blender or three-js with our released rendering script.
+
+### Blender
+
+First, you should install [Blender](https://www.blender.org/) and [the VRM addon for Blender](https://github.com/saturday06/VRM-Addon-for-Blender).
+
+The you can render the VRM and export the obj of VRM under some fbx animation.
+
+```bash
+blender -b --python render_script/blender/render.py importVrmPath importFbxPath outputFolder [is_apose]
+```
+
+The last input argument represents whether you use apose; if used, output apose; otherwise, output the action of any frame in the fbx.
+
+### [three-vrm](https://github.com/pixiv/three-vrm)
+
+**Much quicker than blender VRM add-on.**
+
+Install [Node.js](https://nodejs.org/) first to use the npm environment.
+
+```bash
+cd render_script/three-js
+npm install three @pixiv/three-vrm
+```
+
+If you want to render depth-map images of VRM, you should replace three-vrm with [my version](/home/zjp/CharacterGen/render_script/three-js/src/three-vrm.js).
+
+Fisrt, run the backend to catch the data from the frontend (default port is `17070`), remember to change the folder path.
+
+```bash
+pip install fastapi uvicorn aiofiles pillow numpy
+python up_backend.py
+```
+
+Second, run the frontend to render the images.
+
+```bash
+npm run dev
+```
+
+The open the website http://localhost:5173/, it use 2 threads to render the image, which costs about 1 day.
+
+## Our Result
+
+| Single Input Image | 2D Multi-View Images | 3D Character |
+|-------|-------|-------|
+| ![](./materials/input/1.png) | ![](./materials/ours_multiview/1.png) | |
+| ![](./materials/input/2.png) | ![](./materials/ours_multiview/2.png) | |
+| ![](./materials/input/3.png) | ![](./materials/ours_multiview/3.png) | |
+
+# Acknowledgements
+
+This project is built upon **[Tune-A-Video](https://github.com/showlab/Tune-A-Video)** and **[TripoSR](https://github.com/VAST-AI-Research/TripoSR)**.
+And the rendering scripts is build upon **[three-vrm](https://github.com/pixiv/three-vrm)** and **[VRM-Addon-for-Blender](https://github.com/saturday06/VRM-Addon-for-Blender)**.
+Thanks very much to many friends for their unselfish help with our work. We're extremely grateful to **[Yuanchen](https://github.com/bennyguo)**, **[Yangguang](https://scholar.google.com/citations?user=a7AMvgkAAAAJ)**, and **Yuan Liang** for their guidance on code details and ideas.
+We thank all the authors for their great repos and help.
+
+# Citation
+
+If you find our code or paper helps, please consider citing:
+
+```bibtex
+@article{peng2024charactergen,
+ title ={CharacterGen: Efficient 3D Character Generation from Single Images with Multi-View Pose Canonicalization},
+ author ={Hao-Yang Peng and Jia-Peng Zhang and Meng-Hao Guo and Yan-Pei Cao and Shi-Min Hu},
+ journal ={ACM Transactions on Graphics (TOG)},
+ year ={2024},
+ volume ={43},
+ number ={4},
+ doi ={10.1145/3658217}
+}
+```
\ No newline at end of file
diff --git a/app.py b/app.py
index 04cc31aa8d0e06aeaac3b59bb361ed71d831e43f..d333c95fe05d9e377a6153863260689357cc55ee 100644
--- a/app.py
+++ b/app.py
@@ -1,7 +1,448 @@
import gradio as gr
+from PIL import Image
+import glob
-def greet(name):
- return "Hello " + name + "!!"
+import io
+import argparse
+import os
+import random
+from typing import Dict, Optional, Tuple
+from omegaconf import OmegaConf
+import numpy as np
-demo = gr.Interface(fn=greet, inputs="text", outputs="text")
-demo.launch()
+import torch
+import torch.utils.checkpoint
+
+from accelerate.logging import get_logger
+from accelerate.utils import set_seed
+from diffusers import AutoencoderKL, DDIMScheduler
+from diffusers.utils import check_min_version
+from tqdm.auto import tqdm
+from transformers import CLIPTextModel, CLIPTokenizer, CLIPImageProcessor, CLIPVisionModelWithProjection
+from torchvision import transforms
+
+import sys
+
+sys.path.append("2D_Stage")
+sys.path.append("3D_Stage")
+from tuneavideo.models.unet_mv2d_condition import UNetMV2DConditionModel
+from tuneavideo.models.unet_mv2d_ref import UNetMV2DRefModel
+from tuneavideo.models.PoseGuider import PoseGuider
+from tuneavideo.pipelines.pipeline_tuneavideo import TuneAVideoPipeline
+from tuneavideo.util import shifted_noise
+from einops import rearrange
+import PIL
+from PIL import Image
+from torchvision.utils import save_image
+import json
+import cv2
+
+import lrm
+import trimesh
+from lrm.utils.config import load_config
+from refine import refine
+from datetime import datetime
+import gradio as gr
+from pygltflib import GLTF2
+
+import onnxruntime as rt
+from huggingface_hub.file_download import hf_hub_download
+from rm_anime_bg.cli import get_mask, SCALE
+import pymeshlab
+
+from huggingface_hub import hf_hub_download, list_repo_files
+
+repo_id = "zjpshadow/CharacterGen"
+all_files = list_repo_files(repo_id, revision="main")
+
+for file in all_files:
+ if os.path.exists(file):
+ continue
+ if file.startswith("2D_Stage") or file.startswith("3D_Stage"):
+ hf_hub_download(repo_id, file, local_dir=".")
+
+class rm_bg_api:
+
+ def __init__(self, force_cpu: Optional[bool] = True):
+ session_infer_path = hf_hub_download(
+ repo_id="skytnt/anime-seg", filename="isnetis.onnx",
+ )
+ providers: list[str] = ["CPUExecutionProvider"]
+ if not force_cpu and "CUDAExecutionProvider" in rt.get_available_providers():
+ providers = ["CUDAExecutionProvider"]
+
+ self.session_infer = rt.InferenceSession(
+ session_infer_path, providers=providers,
+ )
+
+ def remove_background(
+ self,
+ imgs: list[np.ndarray],
+ alpha_min: float,
+ alpha_max: float,
+ ) -> list:
+ process_imgs = []
+ for img in imgs:
+ img = np.array(img)
+ # CHANGE to RGB
+ if img.shape[-1] == 4:
+ img = cv2.cvtColor(img, cv2.COLOR_RGBA2RGB)
+ mask = get_mask(self.session_infer, img)
+
+ mask[mask < alpha_min] = 0.0 # type: ignore
+ mask[mask > alpha_max] = 1.0 # type: ignore
+
+ img_after = (mask * img).astype(np.uint8) # type: ignore
+ mask = (mask * SCALE).astype(np.uint8) # type: ignore
+ img_after = np.concatenate([img_after, mask], axis=2, dtype=np.uint8)
+ mask = mask.repeat(3, axis=2)
+ process_imgs.append(Image.fromarray(img_after))
+ return process_imgs
+
+check_min_version("0.24.0")
+
+logger = get_logger(__name__, log_level="INFO")
+
+def set_seed(seed):
+ random.seed(seed)
+ np.random.seed(seed)
+ torch.manual_seed(seed)
+ torch.cuda.manual_seed_all(seed)
+
+def get_bg_color(bg_color):
+ if bg_color == 'white':
+ bg_color = np.array([1., 1., 1.], dtype=np.float32)
+ elif bg_color == 'black':
+ bg_color = np.array([0., 0., 0.], dtype=np.float32)
+ elif bg_color == 'gray':
+ bg_color = np.array([0.5, 0.5, 0.5], dtype=np.float32)
+ elif bg_color == 'random':
+ bg_color = np.random.rand(3)
+ elif isinstance(bg_color, float):
+ bg_color = np.array([bg_color] * 3, dtype=np.float32)
+ else:
+ raise NotImplementedError
+ return bg_color
+
+def process_image(image, totensor):
+ if not image.mode == "RGBA":
+ image = image.convert("RGBA")
+
+ # Find non-transparent pixels
+ non_transparent = np.nonzero(np.array(image)[..., 3])
+ min_x, max_x = non_transparent[1].min(), non_transparent[1].max()
+ min_y, max_y = non_transparent[0].min(), non_transparent[0].max()
+ image = image.crop((min_x, min_y, max_x, max_y))
+
+ # paste to center
+ max_dim = max(image.width, image.height)
+ max_height = max_dim
+ max_width = int(max_dim / 3 * 2)
+ new_image = Image.new("RGBA", (max_width, max_height))
+ left = (max_width - image.width) // 2
+ top = (max_height - image.height) // 2
+ new_image.paste(image, (left, top))
+
+ image = new_image.resize((512, 768), resample=PIL.Image.BICUBIC)
+ image = np.array(image)
+ image = image.astype(np.float32) / 255.
+ assert image.shape[-1] == 4 # RGBA
+ alpha = image[..., 3:4]
+ bg_color = get_bg_color("gray")
+ image = image[..., :3] * alpha + bg_color * (1 - alpha)
+ # save image
+ new_image = Image.fromarray((image * 255).astype(np.uint8))
+ new_image.save("input.png")
+ return totensor(image)
+
+class Inference2D_API:
+
+ def __init__(self,
+ pretrained_model_path: str,
+ image_encoder_path: str,
+ ckpt_dir: str,
+ validation: Dict,
+ local_crossattn: bool = True,
+ unet_from_pretrained_kwargs=None,
+ unet_condition_type=None,
+ use_pose_guider=False,
+ use_shifted_noise=False,
+ use_noise=True,
+ device="cuda"
+ ):
+ self.validation = validation
+ self.use_noise = use_noise
+ self.use_shifted_noise = use_shifted_noise
+ self.unet_condition_type = unet_condition_type
+ image_encoder_path = image_encoder_path.replace("./", "./2D_Stage/")
+ ckpt_dir = ckpt_dir.replace("./", "./2D_Stage/")
+
+ self.tokenizer = CLIPTokenizer.from_pretrained(pretrained_model_path, subfolder="tokenizer")
+ text_encoder = CLIPTextModel.from_pretrained(pretrained_model_path, subfolder="text_encoder")
+ image_encoder = CLIPVisionModelWithProjection.from_pretrained(image_encoder_path)
+ feature_extractor = CLIPImageProcessor()
+ vae = AutoencoderKL.from_pretrained(pretrained_model_path, subfolder="vae")
+ unet = UNetMV2DConditionModel.from_pretrained_2d(pretrained_model_path, subfolder="unet", local_crossattn=local_crossattn, **unet_from_pretrained_kwargs)
+ ref_unet = UNetMV2DRefModel.from_pretrained_2d(pretrained_model_path, subfolder="unet", local_crossattn=local_crossattn, **unet_from_pretrained_kwargs)
+ if use_pose_guider:
+ pose_guider = PoseGuider(noise_latent_channels=4).to("cuda")
+ else:
+ pose_guider = None
+
+ unet_params = torch.load(os.path.join(ckpt_dir, "pytorch_model.bin"), map_location="cpu")
+ if use_pose_guider:
+ pose_guider_params = torch.load(os.path.join(ckpt_dir, "pytorch_model_1.bin"), map_location="cpu")
+ ref_unet_params = torch.load(os.path.join(ckpt_dir, "pytorch_model_2.bin"), map_location="cpu")
+ pose_guider.load_state_dict(pose_guider_params)
+ else:
+ ref_unet_params = torch.load(os.path.join(ckpt_dir, "pytorch_model_1.bin"), map_location="cpu")
+ unet.load_state_dict(unet_params)
+ ref_unet.load_state_dict(ref_unet_params)
+
+ weight_dtype = torch.float16
+
+ text_encoder.to(device, dtype=weight_dtype)
+ image_encoder.to(device, dtype=weight_dtype)
+ vae.to(device, dtype=weight_dtype)
+ ref_unet.to(device, dtype=weight_dtype)
+ unet.to(device, dtype=weight_dtype)
+
+ vae.requires_grad_(False)
+ unet.requires_grad_(False)
+ ref_unet.requires_grad_(False)
+
+ noise_scheduler = DDIMScheduler.from_pretrained(pretrained_model_path, subfolder="scheduler")
+ self.validation_pipeline = TuneAVideoPipeline(
+ vae=vae, text_encoder=text_encoder, tokenizer=self.tokenizer, unet=unet, ref_unet=ref_unet,feature_extractor=feature_extractor,image_encoder=image_encoder,
+ scheduler=noise_scheduler
+ )
+ self.validation_pipeline.enable_vae_slicing()
+ self.validation_pipeline.set_progress_bar_config(disable=True)
+ self.generator = torch.Generator(device=device)
+
+ @torch.no_grad()
+ def inference(self, input_image, val_width, val_height,
+ use_shifted_noise=False, crop=False, seed=100, timestep=20):
+ set_seed(seed)
+ totensor = transforms.ToTensor()
+
+ metas = json.load(open("./2D_Stage/material/pose.json", "r"))
+ cameras = []
+ pose_images = []
+ input_path = "./2D_Stage/material"
+ for lm in metas:
+ cameras.append(torch.tensor(np.array(lm[0]).reshape(4, 4).transpose(1,0)[:3, :4]).reshape(-1))
+ if not crop:
+ pose_images.append(totensor(np.asarray(Image.open(os.path.join(input_path, lm[1])).resize(
+ (val_height, val_width), resample=PIL.Image.BICUBIC)).astype(np.float32) / 255.))
+ else:
+ pose_image = Image.open(os.path.join(input_path, lm[1]))
+ crop_area = (128, 0, 640, 768)
+ pose_images.append(totensor(np.array(pose_image.crop(crop_area)).astype(np.float32)) / 255.)
+ camera_matrixs = torch.stack(cameras).unsqueeze(0).to("cuda")
+ pose_imgs_in = torch.stack(pose_images).to("cuda")
+ prompts = "high quality, best quality"
+ prompt_ids = self.tokenizer(
+ prompts, max_length=self.tokenizer.model_max_length, padding="max_length", truncation=True, return_tensors="pt"
+ ).input_ids[0]
+
+ # (B*Nv, 3, H, W)
+ B = 1
+ weight_dtype = torch.bfloat16
+ imgs_in = process_image(input_image, totensor)
+ imgs_in = rearrange(imgs_in.unsqueeze(0).unsqueeze(0), "B Nv C H W -> (B Nv) C H W")
+
+ with torch.autocast("cuda", dtype=weight_dtype):
+ imgs_in = imgs_in.to("cuda")
+ # B*Nv images
+ out = self.validation_pipeline(prompt=prompts, image=imgs_in.to(weight_dtype), generator=self.generator,
+ num_inference_steps=timestep,
+ camera_matrixs=camera_matrixs.to(weight_dtype), prompt_ids=prompt_ids,
+ height=val_height, width=val_width, unet_condition_type=self.unet_condition_type,
+ pose_guider=None, pose_image=pose_imgs_in, use_noise=self.use_noise,
+ use_shifted_noise=use_shifted_noise, **self.validation).videos
+ out = rearrange(out, "B C f H W -> (B f) C H W", f=self.validation.video_length)
+
+ image_outputs = []
+ for bs in range(4):
+ img_buf = io.BytesIO()
+ save_image(out[bs], img_buf, format='PNG')
+ img_buf.seek(0)
+ img = Image.open(img_buf)
+ image_outputs.append(img)
+ torch.cuda.empty_cache()
+ return image_outputs
+
+
+def traverse(path, back_proj, smooth_iter):
+ mesh = trimesh.load(f"{path}/model-00.obj")
+ mesh.apply_transform(trimesh.transformations.rotation_matrix(np.radians(90.0), [-1, 0, 0]))
+ mesh.apply_transform(trimesh.transformations.rotation_matrix(np.radians(180.0), [0, 1, 0]))
+
+ cmesh = pymeshlab.Mesh(mesh.vertices, mesh.faces)
+ ms = pymeshlab.MeshSet()
+ ms.add_mesh(cmesh)
+ ms.apply_coord_laplacian_smoothing(stepsmoothnum=smooth_iter)
+ mesh.vertices = ms.current_mesh().vertex_matrix()
+
+ mesh.export(f'{path}/output.glb', file_type='glb')
+
+ image = Image.open(f"{path}/{'refined_texture_kd.jpg' if back_proj else 'texture_kd.jpg'}")
+ texture = np.array(image)
+ vertex_colors = np.zeros((mesh.vertices.shape[0], 4), dtype=np.uint8)
+
+ for vertex_index in range(len(mesh.visual.uv)):
+ uv = mesh.visual.uv[vertex_index]
+ x = int(uv[0] * (texture.shape[1] - 1))
+ y = int((1 - uv[1]) * (texture.shape[0] - 1))
+
+ color = texture[y, x, :3]
+ vertex_colors[vertex_index] = [color[0], color[1], color[2], 255]
+ return trimesh.Trimesh(vertices=mesh.vertices, faces=mesh.faces, vertex_colors=vertex_colors)
+
+class Inference3D_API:
+
+ def __init__(self, device="cuda"):
+ self.cfg = load_config("3D_Stage/configs/infer.yaml", makedirs=False)
+ print("Loading system")
+ self.device = device
+ self.cfg.system.weights = self.cfg.system.weights.replace("./", "./3D_Stage/")
+ self.cfg.system.image_tokenizer.pretrained_model_name_or_path = \
+ self.cfg.system.image_tokenizer.pretrained_model_name_or_path.replace("./", "./3D_Stage/")
+ self.cfg.system.renderer.tet_dir = self.cfg.system.renderer.tet_dir.replace("./", "./3D_Stage/")
+ self.cfg.system.exporter.output_path = self.cfg.system.exporter.output_path.replace("./", "./3D_Stage/")
+ self.system = lrm.find(self.cfg.system_cls)(self.cfg.system).to(self.device)
+ self.system.eval()
+
+ def process_images(self, img_input0, img_input1, img_input2, img_input3, back_proj, smooth_iter):
+ meta = json.load(open("./3D_Stage/material/meta.json"))
+ c2w_cond = [np.array(loc["transform_matrix"]) for loc in meta["locations"]]
+ c2w_cond = torch.from_numpy(np.stack(c2w_cond, axis=0)).float()[None].to(self.device)
+ # save four images
+
+ rgb_cond = []
+ files = [img_input0, img_input1, img_input2, img_input3]
+ new_images = []
+ for file in files:
+ image = np.array(file)
+ image = Image.fromarray(image)
+ if image.width != image.height:
+ max_dim = max(image.width, image.height)
+ new_image = Image.new("RGBA", (max_dim, max_dim))
+ left = (max_dim - image.width) // 2
+ top = (max_dim - image.height) // 2
+ new_image.paste(image, (left, top))
+ image = new_image
+ image.save("input_3D.png")
+
+ image = cv2.cvtColor(np.array(image), cv2.COLOR_RGBA2RGB)
+ rgb = cv2.resize(image, (self.cfg.data.cond_width,
+ self.cfg.data.cond_height)).astype(np.float32) / 255.0
+ new_images.append(Image.fromarray(image.astype(np.uint8)).convert("RGB"))
+ rgb_cond.append(rgb)
+ assert len(rgb_cond) == 4, "Please provide 4 images"
+
+ rgb_cond = torch.from_numpy(np.stack(rgb_cond, axis=0)).float()[None].to(self.device)
+
+ with torch.no_grad():
+ scene_codes = self.system({"rgb_cond": rgb_cond, "c2w_cond": c2w_cond})
+ exporter_output = self.system.exporter([f"{i:02d}" for i in range(rgb_cond.shape[0])], scene_codes)
+
+ save_dir = os.path.join("./3D_Stage/outputs", datetime.now().strftime("@%Y%m%d-%H%M%S"))
+ os.makedirs(save_dir, exist_ok=True)
+ self.system.set_save_dir(save_dir)
+
+ for out in exporter_output:
+ save_func_name = f"save_{out.save_type}"
+ save_func = getattr(self.system, save_func_name)
+ save_func(f"{out.save_name}", **out.params)
+ if back_proj:
+ refine(save_dir, new_images[1], new_images[0], new_images[3], new_images[2])
+
+ new_obj = traverse(save_dir, back_proj, smooth_iter)
+ new_obj.export(f'{save_dir}/output.obj', file_type='obj')
+
+ gltf = GLTF2().load(f'{save_dir}/output.glb')
+ for material in gltf.materials:
+ if material.pbrMetallicRoughness:
+ material.pbrMetallicRoughness.baseColorFactor = [1.0, 1.0, 1.0, 100.0]
+ material.pbrMetallicRoughness.metallicFactor = 0.0
+ material.pbrMetallicRoughness.roughnessFactor = 1.0
+ gltf.save(f'{save_dir}/output.glb')
+
+ return save_dir, f"{save_dir}/output.obj", f"{save_dir}/output.glb"
+
+@torch.no_grad()
+def main(
+):
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--config", type=str, default="./2D_Stage/configs/infer.yaml")
+ args = parser.parse_args()
+
+ infer2dapi = Inference2D_API(**OmegaConf.load(args.config))
+ infer3dapi = Inference3D_API()
+ remove_api = rm_bg_api()
+
+ def gen4views(image, width, height, seed, timestep, remove_bg):
+ if remove_bg:
+ image = remove_api.remove_background(
+ imgs=[np.array(image)],
+ alpha_min=0.1,
+ alpha_max=0.9,
+ )[0]
+ return remove_api.remove_background(
+ imgs=infer2dapi.inference(
+ image, width, height, crop=True, seed=seed, timestep=timestep
+ ), alpha_min=0.2, alpha_max=0.9)
+
+ with gr.Blocks() as demo:
+ gr.Markdown("# [SIGGRAPH'24] CharacterGen: Efficient 3D Character Generation from Single Images with Multi-View Pose Calibration")
+ with gr.Row():
+ with gr.Column(variant="panel"):
+ img_input = gr.Image(type="pil", label="Upload Image(without background)", image_mode="RGBA", width=768, height=512)
+ gr.Examples(
+ label="Example Images",
+ examples=glob.glob("./2D_Stage/material/examples/*.png"),
+ inputs=[img_input]
+ )
+ with gr.Row():
+ width_input = gr.Number(label="Width", value=512)
+ height_input = gr.Number(label="Height", value=768)
+ seed_input = gr.Number(label="Seed", value=2333)
+ remove_bg = gr.Checkbox(label="Remove Background (with algorithm)", value=True)
+ with gr.Column(variant="panel"):
+ timestep = gr.Slider(minimum=10, maximum=70, step=1, value=40, label="Timesteps")
+ button1 = gr.Button(value="Generate 4 Views")
+ with gr.Row():
+ img_input0 = gr.Image(type="pil", label="Back Image", image_mode="RGBA", width=256, height=384)
+ img_input1 = gr.Image(type="pil", label="Front Image", image_mode="RGBA", width=256, height=384)
+ with gr.Row():
+ img_input2 = gr.Image(type="pil", label="Right Image", image_mode="RGBA", width=256, height=384)
+ img_input3 = gr.Image(type="pil", label="Left Image", image_mode="RGBA", width=256, height=384)
+ with gr.Column(variant="panel"):
+ smooth_iter = gr.Slider(minimum=0, maximum=10, step=1, value=5, label="Laplacian Smoothing Iterations")
+ with gr.Row():
+ back_proj = gr.Checkbox(label="Back Projection")
+ button2 = gr.Button(value="Generate 3D Mesh")
+ output_dir = gr.Textbox(label="Output Directory")
+ with gr.Row():
+ with gr.Tab("GLB"):
+ output_model_glb = gr.Model3D( label="Output Model (GLB Format)", height=512)
+ gr.Markdown("Note: The model shown here has a darker appearance. Download to get correct results.")
+ with gr.Tab("OBJ"):
+ output_model_obj = gr.Model3D( label="Output Model (OBJ Format)")
+ gr.Markdown("Note: The model shown here's texture is mapped to vertex. Download to get correct results.")
+ button1.click(
+ fn=gen4views,
+ inputs=[img_input, width_input, height_input, seed_input, timestep, remove_bg],
+ outputs=[img_input2, img_input0, img_input3, img_input1]
+ )
+ button2.click(
+ infer3dapi.process_images,
+ inputs=[img_input0, img_input1, img_input2, img_input3, back_proj, smooth_iter],
+ outputs=[output_dir, output_model_obj, output_model_glb]
+ )
+ demo.launch()
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file
diff --git a/render_script/blender/render.py b/render_script/blender/render.py
new file mode 100644
index 0000000000000000000000000000000000000000..66a4de67017a6472bf39a06f2c0be1a6ae45a370
--- /dev/null
+++ b/render_script/blender/render.py
@@ -0,0 +1,212 @@
+import bpy, random
+import os
+import sys
+import pdb
+import math
+from mathutils import Vector
+
+def gc():
+ for i in range(10): bpy.ops.outliner.orphans_purge()
+
+def clear():
+ [bpy.data.objects.remove(bpy.data.objects[x]) for x in list(bpy.data.objects.keys())]
+ gc()
+
+def importVrm(importVrmPath):
+ old_objs = set(bpy.context.scene.objects)
+ result = bpy.ops.import_scene.vrm(filepath=importVrmPath)
+ return [x for x in set(bpy.context.scene.objects)-old_objs if x.type=="ARMATURE"][0]
+
+def importFbx(importFbxPath):
+ old_objs = set(bpy.context.scene.objects)
+ result = bpy.ops.import_scene.fbx(filepath=importFbxPath)
+ return list(set(bpy.context.scene.objects)-old_objs)[0]
+
+def get_keyframes(obj_list):
+ keyframes = []
+ for obj in obj_list:
+ anim = obj.animation_data
+ if anim is not None and anim.action is not None:
+ for fcu in anim.action.fcurves:
+ for keyframe in fcu.keyframe_points:
+ x, y = keyframe.co
+ if x not in keyframes:
+ keyframes.append(int(x))
+ return keyframes
+
+def retarget(source_armature,target_armature):
+ bpy.context.view_layer.objects.active = source_armature
+ bpy.context.scene.source_rig=source_armature.name
+ bpy.context.scene.target_rig=target_armature.name
+ bpy.ops.arp.build_bones_list()
+ bpy.ops.arp.import_config(filepath=os.path.abspath("remap_mixamo.bmap"))
+ bpy.ops.arp.auto_scale()
+ keyframes=get_keyframes([source_armature])
+
+ bpy.ops.arp.retarget(frame_end=int(max(keyframes)))
+
+def look_at(obj_camera, point):
+ direction = point - obj_camera.location
+ rot_quat = direction.to_track_quat('-Z', 'Y')
+ obj_camera.rotation_euler = rot_quat.to_euler()
+
+def render_4_views(folder, origin = (0, 0, 0)):
+ bpy.context.scene.render.film_transparent = True
+ bpy.context.scene.render.resolution_x = 768
+ bpy.context.scene.render.resolution_y = 768
+
+ camera_positions = {
+ 'front': (0, -2.5, 0.5),
+ 'back': (0, 2.5, 0.5),
+ 'left': (-2.5, 0, 0.5),
+ 'right': (2.5, 0, 0.5),
+ }
+
+ camera_data = bpy.data.cameras.new(name='MyCamera')
+ camera_data.angle = math.radians(40)
+ camera_object = bpy.data.objects.new('MyCamera', camera_data)
+
+ bpy.context.collection.objects.link(camera_object)
+ bpy.context.scene.camera = camera_object
+
+ camera = bpy.data.objects['MyCamera']
+ for angle, position in camera_positions.items():
+ camera.location = Vector(position) + Vector(origin)
+ look_at(camera, Vector(origin))
+
+ bpy.context.scene.render.filepath = f'{folder}/{angle}.png'
+
+ bpy.ops.render.render(write_still=True)
+
+def changeApose(armature):
+ bones = armature.pose.bones
+ if "J_Bip_L_UpperArm" in bones:
+ L_arm_name = "J_Bip_L_UpperArm"
+ R_arm_name = "J_Bip_R_UpperArm"
+ L_leg_name = "J_Bip_L_UpperLeg"
+ R_leg_name = "J_Bip_R_UpperLeg"
+ elif "腕上_L.002" in bones:
+ L_arm_name = "腕上_L.002"
+ R_arm_name = "腕上_R.002"
+ L_leg_name = "太もも_L.001"
+ R_leg_name = "太もも_R.001"
+ elif "Left arm" in bones:
+ L_arm_name = "Left arm"
+ R_arm_name = "Right arm"
+ L_leg_name = "Left leg"
+ R_leg_name = "Right leg"
+ elif "upper_arm.L" in bones:
+ L_arm_name = "upper_arm.L"
+ R_arm_name = "upper_arm.R"
+ L_leg_name = "upper_leg.L"
+ R_leg_name = "upper_leg.R"
+ elif "LeftArm" in bones:
+ L_arm_name = "LeftArm"
+ R_arm_name = "RightArm"
+ L_leg_name = "LeftUpLeg"
+ R_leg_name = "RightUpLeg"
+ elif "Arm_L" in bones:
+ L_arm_name = "Arm_L"
+ R_arm_name = "Arm_R"
+ L_leg_name = "UpLeg_L"
+ R_leg_name = "UpLeg_R"
+ elif "mixamorig:LeftArm" in bones:
+ L_arm_name = "mixamorig:LeftArm"
+ R_arm_name = "mixamorig:RightArm"
+ L_leg_name = "mixamorig:LeftUpLeg"
+ R_leg_name = "mixamorig:RightUpLeg"
+ elif "UpperArm_L" in bones:
+ L_arm_name = "UpperArm_L"
+ R_arm_name = "UpperArm_R"
+ L_leg_name = "UpperLeg_L"
+ R_leg_name = "UpperLeg_R"
+ else:
+ import pdb; pdb.set_trace()
+
+ if L_arm_name in bones:
+ bones[L_arm_name].rotation_mode = "XYZ"
+ bones[L_arm_name].rotation_euler = (-math.pi / 4, 0.0, 0.0)
+ bones[L_arm_name].keyframe_insert(data_path="rotation_euler",frame=0)
+
+ if R_arm_name in bones:
+ bones[R_arm_name].rotation_mode = "XYZ"
+ bones[R_arm_name].rotation_euler = (-math.pi / 4, 0.0, 0.0)
+ bones[R_arm_name].keyframe_insert(data_path="rotation_euler",frame=0)
+
+ if L_leg_name in bones:
+ bones[L_leg_name].rotation_mode = "XYZ"
+ bones[L_leg_name].rotation_euler = (-math.pi / 30, 0.0, 0.0)
+ bones[L_leg_name].keyframe_insert(data_path="rotation_euler",frame=0)
+
+ if R_leg_name in bones:
+ bones[R_leg_name].rotation_mode = "XYZ"
+ bones[R_leg_name].rotation_euler = (-math.pi / 30, 0.0, 0.0)
+ bones[R_leg_name].keyframe_insert(data_path="rotation_euler",frame=0)
+
+
+def move_origin_to_center(obj):
+ local_bbox_center = 0.125 * sum((Vector(b) for b in obj.bound_box), Vector())
+ scale_factor = max(obj.dimensions)
+ return local_bbox_center
+ #print(local_bbox_center)
+ #local_bbox_center = 0.125 * sum((Vector(b) for b in obj.bound_box), Vector())
+ #global_bbox_center = obj.matrix_world @ local_bbox_center
+
+ # for cur_obj in bpy.context.scene.objects:
+ # if cur_obj.type != "MESH":
+ # continue
+ # print(cur_obj.name, cur_obj.type)
+ # import pdb; pdb.set_trace()
+ # global_bbox_center = local_bbox_center @ cur_obj.matrix_world
+ # cur_obj.location -= global_bbox_center
+ #cur_obj.scale /= scale_factor
+ #obj.scale /= max(obj.dimensions)
+
+ # # bpy.ops.object.select_all(action='DESELECT')
+ # # cur_obj.select_set(True)
+ # # bpy.context.view_layer.objects.active = cur_obj
+ # # bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY', center='BOUNDS')
+
+def export(armature,exportFileNamePattern,apose=False,origin=None):
+ bpy.ops.object.select_all(action='DESELECT')
+ [x.select_set(True) for x in armature.children if(x.type=="MESH")]
+ if apose:
+ changeApose(armature)
+ os.makedirs(folder + "/apose",exist_ok=True)
+ bpy.ops.wm.obj_export(filepath=folder + "/apose.obj",export_animation=True,start_frame=0,end_frame=0,
+ export_selected_objects=True,export_materials=False,export_colors=False,export_uv=False,export_normals=False)
+ render_4_views(folder + "/apose", origin)
+ else:
+ keyframes = get_keyframes([armature])
+ #rand_frame = int(random.choice(keyframes))
+ os.makedirs(folder + "/pose",exist_ok=True)
+ bpy.ops.wm.obj_export(filepath=folder + "/pose.obj",export_animation=True,start_frame=0,end_frame=0,
+ export_selected_objects=True,export_materials=False,export_colors=False,export_uv=False,export_normals=False)
+ render_4_views(folder + "/pose", origin)
+
+def exportAnimatedMesh(importVrmPath,importFbxPath,folder,apose):
+ clear()
+ human=importVrm(importVrmPath)
+ # resize human
+ if apose:
+ origin = move_origin_to_center(human)
+ export(human, folder, True, origin)
+ else:
+ anim = importFbx(importFbxPath)
+ retarget(anim, human)
+ origin = move_origin_to_center(human)
+ export(human, folder, False, origin)
+ #bpy.data.objects.remove(anim)
+ #gc()
+ #bpy.data.objects.remove(human)
+ #gc()
+
+if(__name__=="__main__"):
+ argv = sys.argv
+ if("--" in argv):
+ argv = argv[argv.index("--") + 1:]
+ importVrmPath, importFbxPath, folder, apose=argv
+ else:
+ raise Exception("no args")
+ print("importVrmPath:", importVrmPath)
+ exportAnimatedMesh(importVrmPath, importFbxPath, folder, int(apose))
\ No newline at end of file
diff --git a/render_script/three-js/catch.py b/render_script/three-js/catch.py
new file mode 100644
index 0000000000000000000000000000000000000000..3c1f01e27e453aeffdae5a61cd773ac0b3b6de39
--- /dev/null
+++ b/render_script/three-js/catch.py
@@ -0,0 +1,25 @@
+import glob, os
+
+path_list = glob.glob('vroid/*/*/*.vrm')
+print(path_list.__len__())
+
+# replace \\ to /
+path_list = [path.replace('\\', '/') for path in path_list]
+
+# remove exist
+exist_list = glob.glob("H:/vrm-render/render_image/*")
+# change to set
+exist_list = [exist.split('\\')[-1].split('_')[0] for exist in exist_list]
+exist_list = set(exist_list)
+
+ans_list = []
+for path in path_list[:]:
+ if path.split('/')[-1].split('.')[0] in exist_list:
+ ans_list.append(path)
+print(ans_list.__len__())
+
+import json
+with open('vroid.json', 'w') as f:
+ json.dump(ans_list, f, indent=4)
+
+#print(path_list)
\ No newline at end of file
diff --git a/render_script/three-js/check.py b/render_script/three-js/check.py
new file mode 100644
index 0000000000000000000000000000000000000000..49585a1b856764c42a301cddbc2330b02cb61678
--- /dev/null
+++ b/render_script/three-js/check.py
@@ -0,0 +1,8 @@
+import glob, os
+path_list = glob.glob("E:/new_render/*")
+for path in path_list:
+ new_path_list = glob.glob("E:/new_render/" + path.split('\\')[-1] + "/*")
+ if len(new_path_list) != 240:
+ print(path, len(new_path_list))
+ # remove
+ os.system('rd /s /q "E:/new_render/' + path.split('\\')[-1] + '"')
\ No newline at end of file
diff --git a/render_script/three-js/frame.html b/render_script/three-js/frame.html
new file mode 100644
index 0000000000000000000000000000000000000000..cf08701684510dc857c4d4dc1c387df31bd85c86
--- /dev/null
+++ b/render_script/three-js/frame.html
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/render_script/three-js/index.html b/render_script/three-js/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..011f33ea13057320332fc2cd4f0a39d1db7525a7
--- /dev/null
+++ b/render_script/three-js/index.html
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/render_script/three-js/split.py b/render_script/three-js/split.py
new file mode 100644
index 0000000000000000000000000000000000000000..126f8ff6c0da9109ee59ca7504a4c6d0e581716f
--- /dev/null
+++ b/render_script/three-js/split.py
@@ -0,0 +1,20 @@
+# load json
+import json
+with open('vroid.json', 'r') as f:
+ path_list = json.load(f)
+
+new_list = []
+import glob
+rendered_list = glob.glob("E:/new_render/*")
+rendered_list = [rendered.split("\\")[-1].split("_")[0] for rendered in rendered_list]
+for path in path_list:
+ id = path.split("/")[-1].split(".")[0]
+ if id not in rendered_list:
+ new_list.append(path)
+
+path_list = new_list
+num_files = 2
+# split to files
+for i in range(num_files):
+ with open('vroid_' + str(i) + '.json', 'w') as f:
+ json.dump(path_list[i::num_files], f, indent=4)
\ No newline at end of file
diff --git a/render_script/three-js/src/loadMixamoAnimation.js b/render_script/three-js/src/loadMixamoAnimation.js
new file mode 100644
index 0000000000000000000000000000000000000000..7dd3e49411c445061e64ae06079f43a5e789f7ca
--- /dev/null
+++ b/render_script/three-js/src/loadMixamoAnimation.js
@@ -0,0 +1,88 @@
+import * as THREE from 'three';
+import { FBXLoader } from 'three/addons/loaders/FBXLoader.js';
+import { mixamoVRMRigMap } from './mixamoVRMRigMap.js';
+
+/**
+ * Load Mixamo animation, convert for three-vrm use, and return it.
+ *
+ * @param {string} url A url of mixamo animation data
+ * @param {VRM} vrm A target VRM
+ * @returns {Promise} The converted AnimationClip
+ */
+export function loadMixamoAnimation( url, vrm ) {
+
+ const loader = new FBXLoader(); // A loader which loads FBX
+ return loader.loadAsync( url ).then( ( asset ) => {
+
+ const clip = THREE.AnimationClip.findByName( asset.animations, 'mixamo.com' ); // extract the AnimationClip
+
+ const tracks = []; // KeyframeTracks compatible with VRM will be added here
+
+ const restRotationInverse = new THREE.Quaternion();
+ const parentRestWorldRotation = new THREE.Quaternion();
+ const _quatA = new THREE.Quaternion();
+ const _vec3 = new THREE.Vector3();
+
+ // Adjust with reference to hips height.
+ const motionHipsHeight = asset.getObjectByName( 'mixamorigHips' ).position.y;
+ const vrmHipsY = vrm.humanoid?.getNormalizedBoneNode( 'hips' ).getWorldPosition( _vec3 ).y;
+ const vrmRootY = vrm.scene.getWorldPosition( _vec3 ).y;
+ const vrmHipsHeight = Math.abs( vrmHipsY - vrmRootY );
+ const hipsPositionScale = vrmHipsHeight / motionHipsHeight;
+
+ clip.tracks.forEach( ( track ) => {
+ // Convert each tracks for VRM use, and push to `tracks`
+ const trackSplitted = track.name.split( '.' );
+ const mixamoRigName = trackSplitted[ 0 ];
+ const vrmBoneName = mixamoVRMRigMap[ mixamoRigName ];
+ const vrmNodeName = vrm.humanoid?.getNormalizedBoneNode( vrmBoneName )?.name;
+ const mixamoRigNode = asset.getObjectByName( mixamoRigName );
+
+ //console.log( vrmNodeName, track );
+ if ( vrmNodeName != null ) {
+ const propertyName = trackSplitted[ 1 ];
+ // Store rotations of rest-pose.
+ mixamoRigNode.getWorldQuaternion( restRotationInverse ).invert();
+ mixamoRigNode.parent.getWorldQuaternion( parentRestWorldRotation );
+ if ( track instanceof THREE.QuaternionKeyframeTrack ) {
+ // Retarget rotation of mixamoRig to NormalizedBone.
+ for ( let i = 0; i < track.values.length; i += 4 ) {
+ const flatQuaternion = track.values.slice( i, i + 4 );
+ _quatA.fromArray( flatQuaternion );
+ _quatA
+ .premultiply( parentRestWorldRotation )
+ .multiply( restRotationInverse );
+ _quatA.toArray( flatQuaternion );
+ flatQuaternion.forEach( ( v, index ) => {
+ track.values[ index + i ] = v;
+ } );
+ }
+ tracks.push(
+ new THREE.QuaternionKeyframeTrack(
+ `${vrmBoneName}`,
+ track.times,
+ track.values.map( ( v, i ) => ( vrm.meta?.metaVersion === '0' && i % 2 === 0 ? - v : v ) ),
+ ),
+ );
+ } else if ( track instanceof THREE.VectorKeyframeTrack ) {
+ const value = track.values.map( ( v, i ) => ( vrm.meta?.metaVersion === '0' && i % 3 !== 1 ? - v : v ) * hipsPositionScale );
+ tracks.push( new THREE.VectorKeyframeTrack( `${vrmBoneName}`, track.times, value ) );
+ }
+ }
+ } );
+ let choose_time = Math.floor(Math.random() * tracks[0].times.length) * 4;
+ console.log(choose_time);
+ let result = [];
+ tracks.forEach(track => {
+ const flatQuaternion = track.values.slice(choose_time, choose_time + 4);
+ var euler = new THREE.Euler();
+ euler.setFromQuaternion( new THREE.Quaternion().fromArray(flatQuaternion));
+ result.push({
+ name: track.name,
+ euler: euler
+ });
+ });
+
+ return result;
+ } );
+}
diff --git a/render_script/three-js/src/main.js b/render_script/three-js/src/main.js
new file mode 100644
index 0000000000000000000000000000000000000000..95c080094a4e436668456885b9d0dd55cb6a60fe
--- /dev/null
+++ b/render_script/three-js/src/main.js
@@ -0,0 +1,448 @@
+import * as THREE from 'three';
+import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
+import { GLTFExporter } from 'three/examples/jsm/exporters/GLTFExporter.js'
+import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
+import { VRMLoaderPlugin } from './three-vrm.module.js';
+import { loadMixamoAnimation } from './loadMixamoAnimation.js';
+
+// renderer
+let renderer = null;
+
+import JSZip from 'jszip';
+import { OneMinusDstAlphaFactor } from 'three';
+import { forEach } from 'jszip';
+
+function initializeRenderer() {
+ renderer = new THREE.WebGLRenderer({ alpha: true, antialias: true});
+ renderer.setClearColor(0x000000, 0.0);
+ // renderer.setSize(window.innerWidth, window.innerHeight);
+ renderer.setSize(768, 768);
+ renderer.setPixelRatio(1);
+}
+
+// camera
+const camera = new THREE.PerspectiveCamera(40, 1, 0.1, 20.0);
+const exporter = new GLTFExporter();
+//camera.position.set(4.0, 0.0, 0.0);
+
+// camera controls
+let controls = null;
+let azimuth = Math.PI, elevation = 0, distance = 1.5;
+
+function updateControls(pos = {x: 0, y: 0, z: 0}) {
+ controls.screenSpacePanning = true;
+ controls.target.set(pos.x, pos.y, pos.z);
+ controls.enableRotate = true;
+ camera.position.set(distance * Math.cos(elevation) * Math.cos(azimuth),
+ distance * Math.sin(elevation),
+ distance * Math.cos(elevation) * Math.sin(azimuth));
+ controls.update();
+}
+
+function initializeControls() {
+ controls = new OrbitControls(camera, renderer.domElement);
+ updateControls();
+}
+
+// scene
+let scene = null;
+const ambientLight = new THREE.AmbientLight(0x404040, 1.0); // soft white light
+const light = new THREE.DirectionalLight(0xffffff);
+
+function initializeScene() {
+ scene = new THREE.Scene();
+ scene.add(ambientLight);
+ light.position.set(1.0, 1.0, 1.0).normalize();
+ scene.add(light);
+}
+
+// gltf and vrm
+let currentVrm = undefined;
+const loader = new GLTFLoader();
+
+loader.crossOrigin = 'anonymous';
+
+loader.register((parser) => {
+ return new VRMLoaderPlugin(parser);
+});
+
+// let vrmPaths = [];
+// fetch("./vroid.json").then(
+// (response) => {
+// if (!response.ok) {
+// throw new Error("Fetch request failed");
+// }
+// return response.json();
+// }).then((data) => {
+// console.log(data);
+// vrmPaths = data;
+// processNextVrm();
+// });
+
+let vrmPaths = [];
+
+const queryParams = new URLSearchParams(window.location.search);
+const jsonFileName = queryParams.get('file') || 'default.json';
+
+fetch(`./${jsonFileName}`).then(
+ (response) => {
+ if (!response.ok) {
+ throw new Error("Fetch request failed");
+ }
+ return response.json();
+ }).then((data) => {
+ console.log(data);
+ vrmPaths = data;
+ console.log("initializeRenderer");
+ processNextVrm();
+ });
+
+let base_euler = null, euler_array = null, node_arr = null;
+let is_apose = false;
+let pose_euler = null, bone_arr = null;
+
+function changePose() {
+ bone_arr = ["leftUpperArm", "rightUpperArm",
+ "leftLowerArm", "rightLowerArm",
+ "leftHand", "rightHand",
+ "leftShoulder", "rightShoulder",
+ "leftUpperLeg", "rightUpperLeg",
+ "leftLowerLeg", "rightLowerLeg",
+ "leftFoot", "rightFoot", "head",
+ "leftIndexProximal", "rightIndexProximal", "leftIndexDistal", "rightIndexDistal",
+ "leftIndexIntermediate", "rightIndexIntermediate", "leftToes", "rightToes",
+ "upperChest", "neck",
+ "hips", "spine"];
+ if (is_apose) {
+ for (var i = 0; i < bone_arr.length; ++i) {
+ if (i < 6)
+ currentVrm.humanoid.getNormalizedBoneNode(bone_arr[i])?.rotation.copy(euler_array[i]);
+ else
+ currentVrm.humanoid.getNormalizedBoneNode(bone_arr[i])?.rotation.copy(new THREE.Euler(0, 0, 0, 'XYZ'));
+ }
+ } else {
+ for(var i = 0; i < pose_euler.length; ++i) {
+ if (bone_arr.includes(pose_euler[i].name))
+ currentVrm.humanoid.getNormalizedBoneNode(pose_euler[i].name)?.rotation.copy(pose_euler[i].euler);
+ }
+ }
+ currentVrm.update(0);
+
+ node_arr = {};
+
+ for (var i = 0; i < bone_arr.length; ++i) {
+ var cur_node = currentVrm.humanoid.getNormalizedBoneNode(bone_arr[i]);
+ // console.log(bone_arr[i]);
+ if (cur_node != null) {
+ node_arr[bone_arr[i]] = {
+ world_position: cur_node.getWorldPosition(new THREE.Vector3()),
+ position: cur_node.position,
+ rotation: cur_node.rotation,
+ quaternion: cur_node.quaternion
+ }
+ // console.log(cur_node);
+ }
+ // console.log(node_arr[bone_arr[i]]);
+ }
+ // exit();
+}
+
+function aPose() {
+ is_apose = true;
+ let temp_arr = Array(6).fill(null).map(() => new THREE.Euler());
+ temp_arr[0] = new THREE.Euler(0, 0, Math.PI / 4, 'XYZ');
+ temp_arr[1] = new THREE.Euler(0, 0, -Math.PI / 4, 'XYZ');
+ temp_arr[2] = new THREE.Euler(0, 0, 0, 'XYZ');
+ temp_arr[3] = new THREE.Euler(0, 0, 0, 'XYZ');
+ temp_arr[4] = new THREE.Euler(0, 0, -Math.PI / 30, 'XYZ');
+ temp_arr[5] = new THREE.Euler(0, 0, Math.PI / 30, 'XYZ');
+ return temp_arr;
+}
+
+function randPose() {
+ is_apose = false;
+ let temp_arr = Array(6).fill(null).map(() => new THREE.Euler());
+ for (var i = 0; i < 6; ++i) {
+ // randomize
+ if (i < 4)
+ temp_arr[i] = new THREE.Euler(
+ (((Math.random() > 0.8) ^ (i & 1) ? -1 : 1)) * Math.random() * Math.PI / 180 * 30,
+ (((Math.random() > 0.5) ^ (i & 1) ? -1 : 1)) * Math.random() * Math.PI / 180 * 30,
+ (((Math.random() > 0.5) ^ (i & 1) ? -1 : 1)) * Math.random() * Math.PI / 180 * 50,
+ 'XYZ'
+ )
+ else
+ temp_arr[i] = new THREE.Euler(
+ ((Math.random() > 0.8) ^ (i & 1) ? -1 : 1) * Math.random() * Math.PI / 180 * 10,
+ ((Math.random() > 0.5) ^ (i & 1) ? -1 : 1) * Math.random() * Math.PI / 180 * 10,
+ ((Math.random() > 0.5) ^ (i & 1) ? -1 : 1) * Math.random() * Math.PI / 180 * 20,
+ 'XYZ'
+ )
+ }
+ return temp_arr;
+}
+function normalizeVrm() {
+ const box = new THREE.Box3().setFromObject(currentVrm.scene);
+ const size = box.getSize(new THREE.Vector3());
+
+ const maxDimension = Math.max(size.x, size.y, size.z);
+ const scale = 1 / maxDimension;
+
+ currentVrm.scene.scale.set(scale, scale, scale);
+
+ const center = box.getCenter(new THREE.Vector3());
+ currentVrm.scene.position.sub(center.multiplyScalar(scale));
+ currentVrm.update(0);
+}
+
+function loadVRM(path) {
+ loader.load(
+ path,
+ (gltf) => {
+ const vrm = gltf.userData.vrm;
+ scene.add(vrm.scene);
+
+ currentVrm = vrm;
+ // print vrm
+ // console.log(vrm);
+ normalizeVrm();
+ //var fbx_id = 11;
+ var fbx_id = Math.floor(Math.random() * 24);
+ loadFBX("animation/test" + fbx_id + ".fbx");
+ base_euler = randPose();
+
+ loader.manager.onLoad = () => {
+ animate();
+ };
+ },
+ (progress) => { },
+ //console.log('Loading model...', 100.0 * (progress.loaded / progress.total), '%'),
+ (error) => console.error(error),
+ );
+}
+
+let currentIndex = 0;
+let Vrmname = "";
+
+function loadFBX( animationUrl ) {
+ loadMixamoAnimation( animationUrl, currentVrm ).then( ( result ) => {
+ pose_euler = result;
+ })
+}
+
+function processNextVrm() {
+ try {
+ initializeRenderer();
+ console.log("initializeControls");
+ initializeControls();
+ console.log("initializeScene");
+ initializeScene();
+ if (currentIndex < vrmPaths.length) {
+ Vrmname = vrmPaths[currentIndex].split("/")[2];
+ loadVRM(vrmPaths[currentIndex]);
+ currentIndex++;
+ } else {
+ console.log('All VRMs processed.');
+ return;
+ }
+ }
+ catch (e) {
+ console.log(e);
+ processNextVrm();
+ }
+}
+
+let cache_data = new JSZip();
+
+function releaseCache() {
+ console.log("release cache");
+ var formData = new FormData();
+ cache_data.forEach(function (path, file) {
+ if (!file.dir) {
+ cache_data.file(path).async('blob').then(function (blob) {
+ formData.append('files', blob, path);
+ });
+ }
+ });
+
+ cache_data.generateAsync({ type: "blob" })
+ .then(function (content) {
+ return fetch('http://localhost:17070/upload/', {
+ method: 'POST',
+ body: formData
+ });
+ });
+ console.log("cache released!");
+ cache_data = new JSZip();
+}
+
+function uploadCache(data, filename) {
+ cache_data.file(filename, data);
+}
+
+function saveScreenshot(id, type) {
+ var screenshotDataUrl = renderer.domElement.toDataURL("image/png");
+
+
+ // Convert DataURL to Blob
+ fetch(screenshotDataUrl)
+ .then(res => res.blob())
+ .then(blob => {
+ let updateName = Vrmname + "_" + id.toString().padStart(3, '0');
+ uploadCache(blob, updateName + "_" + type + ".png");
+
+ var json = JSON.stringify({
+ name: updateName,
+ elevation: elevation,
+ azimuth: azimuth,
+ distance: distance,
+ extrinsicMatrix: camera.matrixWorld,
+ intrinsicMatrix: camera.projectionMatrix,
+ node_array: node_arr
+ });
+ var json_blob = new Blob([json], { type: 'application/json' });
+ uploadCache(json_blob, updateName + ".json");
+ })
+ .catch((error) => {
+ console.error('Error:', error);
+ });
+}
+
+var releaseRender = function (renderer, scene) {
+ let clearScene = function (scene) {
+ let arr = scene.children.filter(x => x);
+ arr.forEach(item => {
+ if (item.children.length) { clearScene(item); }
+ else { if (item.type === 'Mesh') { item.geometry.dispose(); item.material.dispose(); !!item.clear && item.clear(); } }
+ });
+ !!scene.clear && scene.clear(renderer); arr = null;
+ }
+ try { clearScene(scene); } catch (e) { }
+ try {
+ renderer.renderLists.dispose();
+ renderer.dispose(); renderer.forceContextLoss();
+ renderer.domElement = null; renderer.content = null; renderer = null;
+ } catch (e) { }
+ if (!!window.requestAnimationId) { cancelAnimationFrame(window.requestAnimationId); } THREE.Cache.clear();
+}
+
+function removeCurrentVRM() {
+ releaseRender(renderer, scene);
+}
+
+let frame = 0, param_aa, param_blinkl, param_blinkr;
+let start_azim;
+function animate() {
+ // requestAnimationFrame(animate);
+ if (frame == 0) {
+ param_aa = Math.random();
+ param_blinkl = Math.random();
+ param_blinkr = Math.random();
+ }
+ if (frame % 2 == 0) {
+ if (frame < 8) {
+ elevation = 0;
+ distance = 1.5;
+ azimuth = Math.PI / 2 * (frame / 2);
+ } else if (frame < 32) {
+ if (frame % 8 == 0) {
+ elevation = (Math.random() - 0.5) * Math.PI / 6;
+ start_azim = Math.PI / 2 * (Math.random());
+ }
+ distance = 1.5;
+ azimuth = Math.PI / 2 * ((frame - 8) / 2) + start_azim;
+ } else {
+ elevation = 0 + (Math.random() - 0.5) * Math.PI / 4;
+ distance = 1.5 + (Math.random() - 0.5);
+ azimuth = Math.random() * Math.PI * 2;
+ }
+ updateControls();
+ euler_array = aPose();
+
+ currentVrm.expressionManager.setValue('aa', 0);
+ currentVrm.expressionManager.setValue('blinkLeft', 0);
+ currentVrm.expressionManager.setValue('blinkRight', 0);
+ } else {
+ if (frame >= 32) {
+ elevation = 0 + (Math.random() - 0.5) * Math.PI / 4;
+ distance = 1.5 + (Math.random() - 0.5);
+ azimuth = Math.random() * Math.PI * 2;
+ var jitter = 0.2;
+ updateControls({ x: (Math.random() - 0.5) * jitter, y: (Math.random() - 0.5) * jitter, z: (Math.random() - 0.5) * jitter });
+ }
+
+ currentVrm.expressionManager.setValue('aa', param_aa);
+ currentVrm.expressionManager.setValue('blinkLeft', param_blinkl);
+ currentVrm.expressionManager.setValue('blinkRight', param_blinkr);
+ is_apose = false;
+ }
+ changePose();
+ //currentMixer.update(0);
+ //normalizeVrm();
+
+ function setMToonDebugMode(material, mode) {
+ if ( material.isMToonMaterial ) {
+ material.debugMode = mode;
+ }
+ }
+
+ //const debugMode = ['none', 'normal', 'litShadeRate', 'uv'][debugModeIndex];
+
+ if (frame < 60) {
+ currentVrm.scene.traverse( ( object ) => {
+ if ( object.material ) {
+ if ( Array.isArray( object.material ) ) {
+ object.material.forEach( ( material ) => setMToonDebugMode( material, 'normal') );
+ } else {
+ setMToonDebugMode( object.material, 'normal');
+ }
+ }
+ } );
+ renderer.render(scene, camera);
+ saveScreenshot(frame, "normal");
+
+ currentVrm.scene.traverse( ( object ) => {
+ if ( object.material ) {
+ if ( Array.isArray( object.material ) ) {
+ object.material.forEach( ( material ) => setMToonDebugMode( material, 'none') );
+ } else {
+ setMToonDebugMode( object.material, 'none');
+ }
+ }
+ } );
+ renderer.render(scene, camera);
+ saveScreenshot(frame, "rgb");
+
+
+ currentVrm.scene.traverse( ( object ) => {
+ if ( object.material ) {
+ if ( Array.isArray( object.material ) ) {
+ object.material.forEach( ( material ) => setMToonDebugMode( material, 'depth') );
+ } else {
+ setMToonDebugMode( object.material, 'depth');
+ }
+ }
+ } );
+ renderer.render(scene, camera);
+ renderer.render(scene, camera);
+ saveScreenshot(frame, "depth");
+
+ frame++;
+ (async function () {
+ await new Promise(resolve => setTimeout(() => {
+ requestAnimationFrame(animate);
+ resolve();
+ }, 100));
+ })();
+ } else {
+ frame = 0;
+ removeCurrentVRM();
+ releaseCache();
+ (async function () {
+ await new Promise(resolve => setTimeout(() => {
+ processNextVrm();
+ resolve();
+ }, 2000));
+ })();
+ }
+}
\ No newline at end of file
diff --git a/render_script/three-js/src/mixamoVRMRigMap.js b/render_script/three-js/src/mixamoVRMRigMap.js
new file mode 100644
index 0000000000000000000000000000000000000000..8404770387ebe3820cea9fc2b88240b4a146c761
--- /dev/null
+++ b/render_script/three-js/src/mixamoVRMRigMap.js
@@ -0,0 +1,57 @@
+/**
+ * A map from Mixamo rig name to VRM Humanoid bone name
+ */
+export const mixamoVRMRigMap = {
+ mixamorigHips: 'hips',
+ mixamorigSpine: 'spine',
+ mixamorigSpine1: 'chest',
+ mixamorigSpine2: 'upperChest',
+ mixamorigNeck: 'neck',
+ mixamorigHead: 'head',
+ mixamorigLeftShoulder: 'leftShoulder',
+ mixamorigLeftArm: 'leftUpperArm',
+ mixamorigLeftForeArm: 'leftLowerArm',
+ mixamorigLeftHand: 'leftHand',
+ mixamorigLeftHandThumb1: 'leftThumbMetacarpal',
+ mixamorigLeftHandThumb2: 'leftThumbProximal',
+ mixamorigLeftHandThumb3: 'leftThumbDistal',
+ mixamorigLeftHandIndex1: 'leftIndexProximal',
+ mixamorigLeftHandIndex2: 'leftIndexIntermediate',
+ mixamorigLeftHandIndex3: 'leftIndexDistal',
+ mixamorigLeftHandMiddle1: 'leftMiddleProximal',
+ mixamorigLeftHandMiddle2: 'leftMiddleIntermediate',
+ mixamorigLeftHandMiddle3: 'leftMiddleDistal',
+ mixamorigLeftHandRing1: 'leftRingProximal',
+ mixamorigLeftHandRing2: 'leftRingIntermediate',
+ mixamorigLeftHandRing3: 'leftRingDistal',
+ mixamorigLeftHandPinky1: 'leftLittleProximal',
+ mixamorigLeftHandPinky2: 'leftLittleIntermediate',
+ mixamorigLeftHandPinky3: 'leftLittleDistal',
+ mixamorigRightShoulder: 'rightShoulder',
+ mixamorigRightArm: 'rightUpperArm',
+ mixamorigRightForeArm: 'rightLowerArm',
+ mixamorigRightHand: 'rightHand',
+ mixamorigRightHandPinky1: 'rightLittleProximal',
+ mixamorigRightHandPinky2: 'rightLittleIntermediate',
+ mixamorigRightHandPinky3: 'rightLittleDistal',
+ mixamorigRightHandRing1: 'rightRingProximal',
+ mixamorigRightHandRing2: 'rightRingIntermediate',
+ mixamorigRightHandRing3: 'rightRingDistal',
+ mixamorigRightHandMiddle1: 'rightMiddleProximal',
+ mixamorigRightHandMiddle2: 'rightMiddleIntermediate',
+ mixamorigRightHandMiddle3: 'rightMiddleDistal',
+ mixamorigRightHandIndex1: 'rightIndexProximal',
+ mixamorigRightHandIndex2: 'rightIndexIntermediate',
+ mixamorigRightHandIndex3: 'rightIndexDistal',
+ mixamorigRightHandThumb1: 'rightThumbMetacarpal',
+ mixamorigRightHandThumb2: 'rightThumbProximal',
+ mixamorigRightHandThumb3: 'rightThumbDistal',
+ mixamorigLeftUpLeg: 'leftUpperLeg',
+ mixamorigLeftLeg: 'leftLowerLeg',
+ mixamorigLeftFoot: 'leftFoot',
+ mixamorigLeftToeBase: 'leftToes',
+ mixamorigRightUpLeg: 'rightUpperLeg',
+ mixamorigRightLeg: 'rightLowerLeg',
+ mixamorigRightFoot: 'rightFoot',
+ mixamorigRightToeBase: 'rightToes',
+};
diff --git a/render_script/three-js/src/three-vrm.js b/render_script/three-js/src/three-vrm.js
new file mode 100644
index 0000000000000000000000000000000000000000..b8567305d30aa2bc8564960ed953e5094767126d
--- /dev/null
+++ b/render_script/three-js/src/three-vrm.js
@@ -0,0 +1,6911 @@
+/*!
+ * @pixiv/three-vrm v2.0.6
+ * VRM file loader for three.js.
+ *
+ * Copyright (c) 2019-2023 pixiv Inc.
+ * @pixiv/three-vrm is distributed under MIT License
+ * https://github.com/pixiv/three-vrm/blob/release/LICENSE
+ */
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('three')) :
+ typeof define === 'function' && define.amd ? define(['exports', 'three'], factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.THREE_VRM = {}, global.THREE));
+})(this, (function (exports, THREE) { 'use strict';
+
+ function _interopNamespace(e) {
+ if (e && e.__esModule) return e;
+ var n = Object.create(null);
+ if (e) {
+ Object.keys(e).forEach(function (k) {
+ if (k !== 'default') {
+ var d = Object.getOwnPropertyDescriptor(e, k);
+ Object.defineProperty(n, k, d.get ? d : {
+ enumerable: true,
+ get: function () { return e[k]; }
+ });
+ }
+ });
+ }
+ n["default"] = e;
+ return Object.freeze(n);
+ }
+
+ var THREE__namespace = /*#__PURE__*/_interopNamespace(THREE);
+
+ /*!
+ * @pixiv/three-vrm-core v2.0.6
+ * The implementation of core features of VRM, for @pixiv/three-vrm
+ *
+ * Copyright (c) 2020-2023 pixiv Inc.
+ * @pixiv/three-vrm-core is distributed under MIT License
+ * https://github.com/pixiv/three-vrm/blob/release/LICENSE
+ */
+
+ // animationMixer の監視対象は、Scene の中に入っている必要がある。
+ // そのため、表示オブジェクトではないけれど、Object3D を継承して Scene に投入できるようにする。
+ class VRMExpression extends THREE__namespace.Object3D {
+ /**
+ * A value represents how much it should override blink expressions.
+ * `0.0` == no override at all, `1.0` == completely block the expressions.
+ */
+ get overrideBlinkAmount() {
+ if (this.overrideBlink === 'block') {
+ return 0.0 < this.weight ? 1.0 : 0.0;
+ }
+ else if (this.overrideBlink === 'blend') {
+ return this.weight;
+ }
+ else {
+ return 0.0;
+ }
+ }
+ /**
+ * A value represents how much it should override lookAt expressions.
+ * `0.0` == no override at all, `1.0` == completely block the expressions.
+ */
+ get overrideLookAtAmount() {
+ if (this.overrideLookAt === 'block') {
+ return 0.0 < this.weight ? 1.0 : 0.0;
+ }
+ else if (this.overrideLookAt === 'blend') {
+ return this.weight;
+ }
+ else {
+ return 0.0;
+ }
+ }
+ /**
+ * A value represents how much it should override mouth expressions.
+ * `0.0` == no override at all, `1.0` == completely block the expressions.
+ */
+ get overrideMouthAmount() {
+ if (this.overrideMouth === 'block') {
+ return 0.0 < this.weight ? 1.0 : 0.0;
+ }
+ else if (this.overrideMouth === 'blend') {
+ return this.weight;
+ }
+ else {
+ return 0.0;
+ }
+ }
+ constructor(expressionName) {
+ super();
+ /**
+ * The current weight of the expression.
+ */
+ this.weight = 0.0;
+ /**
+ * Interpret values greater than 0.5 as 1.0, ortherwise 0.0.
+ */
+ this.isBinary = false;
+ /**
+ * Specify how the expression overrides blink expressions.
+ */
+ this.overrideBlink = 'none';
+ /**
+ * Specify how the expression overrides lookAt expressions.
+ */
+ this.overrideLookAt = 'none';
+ /**
+ * Specify how the expression overrides mouth expressions.
+ */
+ this.overrideMouth = 'none';
+ this._binds = [];
+ this.name = `VRMExpression_${expressionName}`;
+ this.expressionName = expressionName;
+ // traverse 時の救済手段として Object3D ではないことを明示しておく
+ this.type = 'VRMExpression';
+ // 表示目的のオブジェクトではないので、負荷軽減のために visible を false にしておく。
+ // これにより、このインスタンスに対する毎フレームの matrix 自動計算を省略できる。
+ this.visible = false;
+ }
+ addBind(bind) {
+ this._binds.push(bind);
+ }
+ /**
+ * Apply weight to every assigned blend shapes.
+ * Should be called every frame.
+ */
+ applyWeight(options) {
+ var _a;
+ let actualWeight = this.isBinary ? (this.weight <= 0.5 ? 0.0 : 1.0) : this.weight;
+ actualWeight *= (_a = options === null || options === void 0 ? void 0 : options.multiplier) !== null && _a !== void 0 ? _a : 1.0;
+ this._binds.forEach((bind) => bind.applyWeight(actualWeight));
+ }
+ /**
+ * Clear previously assigned blend shapes.
+ */
+ clearAppliedWeight() {
+ this._binds.forEach((bind) => bind.clearAppliedWeight());
+ }
+ }
+
+ /******************************************************************************
+ Copyright (c) Microsoft Corporation.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** */
+
+ function __awaiter$6(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ }
+
+ function extractPrimitivesInternal(gltf, nodeIndex, node) {
+ var _a, _b;
+ const json = gltf.parser.json;
+ /**
+ * Let's list up every possible patterns that parsed gltf nodes with a mesh can have,,,
+ *
+ * "*" indicates that those meshes should be listed up using this function
+ *
+ * ### A node with a (mesh, a signle primitive)
+ *
+ * - `THREE.Mesh`: The only primitive of the mesh *
+ *
+ * ### A node with a (mesh, multiple primitives)
+ *
+ * - `THREE.Group`: The root of the mesh
+ * - `THREE.Mesh`: A primitive of the mesh *
+ * - `THREE.Mesh`: A primitive of the mesh (2) *
+ *
+ * ### A node with a (mesh, multiple primitives) AND (a child with a mesh, a single primitive)
+ *
+ * - `THREE.Group`: The root of the mesh
+ * - `THREE.Mesh`: A primitive of the mesh *
+ * - `THREE.Mesh`: A primitive of the mesh (2) *
+ * - `THREE.Mesh`: A primitive of a MESH OF THE CHILD
+ *
+ * ### A node with a (mesh, multiple primitives) AND (a child with a mesh, multiple primitives)
+ *
+ * - `THREE.Group`: The root of the mesh
+ * - `THREE.Mesh`: A primitive of the mesh *
+ * - `THREE.Mesh`: A primitive of the mesh (2) *
+ * - `THREE.Group`: The root of a MESH OF THE CHILD
+ * - `THREE.Mesh`: A primitive of the mesh of the child
+ * - `THREE.Mesh`: A primitive of the mesh of the child (2)
+ *
+ * ### A node with a (mesh, multiple primitives) BUT the node is a bone
+ *
+ * - `THREE.Bone`: The root of the node, as a bone
+ * - `THREE.Group`: The root of the mesh
+ * - `THREE.Mesh`: A primitive of the mesh *
+ * - `THREE.Mesh`: A primitive of the mesh (2) *
+ *
+ * ### A node with a (mesh, multiple primitives) AND (a child with a mesh, multiple primitives) BUT the node is a bone
+ *
+ * - `THREE.Bone`: The root of the node, as a bone
+ * - `THREE.Group`: The root of the mesh
+ * - `THREE.Mesh`: A primitive of the mesh *
+ * - `THREE.Mesh`: A primitive of the mesh (2) *
+ * - `THREE.Group`: The root of a MESH OF THE CHILD
+ * - `THREE.Mesh`: A primitive of the mesh of the child
+ * - `THREE.Mesh`: A primitive of the mesh of the child (2)
+ *
+ * ...I will take a strategy that traverses the root of the node and take first (primitiveCount) meshes.
+ */
+ // Make sure that the node has a mesh
+ const schemaNode = (_a = json.nodes) === null || _a === void 0 ? void 0 : _a[nodeIndex];
+ if (schemaNode == null) {
+ console.warn(`extractPrimitivesInternal: Attempt to use nodes[${nodeIndex}] of glTF but the node doesn't exist`);
+ return null;
+ }
+ const meshIndex = schemaNode.mesh;
+ if (meshIndex == null) {
+ return null;
+ }
+ // How many primitives the mesh has?
+ const schemaMesh = (_b = json.meshes) === null || _b === void 0 ? void 0 : _b[meshIndex];
+ if (schemaMesh == null) {
+ console.warn(`extractPrimitivesInternal: Attempt to use meshes[${meshIndex}] of glTF but the mesh doesn't exist`);
+ return null;
+ }
+ const primitiveCount = schemaMesh.primitives.length;
+ // Traverse the node and take first (primitiveCount) meshes
+ const primitives = [];
+ node.traverse((object) => {
+ if (primitives.length < primitiveCount) {
+ if (object.isMesh) {
+ primitives.push(object);
+ }
+ }
+ });
+ return primitives;
+ }
+ /**
+ * Extract primitives ( `THREE.Mesh[]` ) of a node from a loaded GLTF.
+ * The main purpose of this function is to distinguish primitives and children from a node that has both meshes and children.
+ *
+ * It utilizes the behavior that GLTFLoader adds mesh primitives to the node object ( `THREE.Group` ) first then adds its children.
+ *
+ * @param gltf A GLTF object taken from GLTFLoader
+ * @param nodeIndex The index of the node
+ */
+ function gltfExtractPrimitivesFromNode(gltf, nodeIndex) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const node = yield gltf.parser.getDependency('node', nodeIndex);
+ return extractPrimitivesInternal(gltf, nodeIndex, node);
+ });
+ }
+ /**
+ * Extract primitives ( `THREE.Mesh[]` ) of nodes from a loaded GLTF.
+ * See {@link gltfExtractPrimitivesFromNode} for more details.
+ *
+ * It returns a map from node index to extraction result.
+ * If a node does not have a mesh, the entry for the node will not be put in the returning map.
+ *
+ * @param gltf A GLTF object taken from GLTFLoader
+ */
+ function gltfExtractPrimitivesFromNodes(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const nodes = yield gltf.parser.getDependencies('node');
+ const map = new Map();
+ nodes.forEach((node, index) => {
+ const result = extractPrimitivesInternal(gltf, index, node);
+ if (result != null) {
+ map.set(index, result);
+ }
+ });
+ return map;
+ });
+ }
+
+ /**
+ * Get a material definition index of glTF from associated material.
+ * It's basically a comat code between Three.js r133 or above and previous versions.
+ * @param parser GLTFParser
+ * @param material A material of gltf
+ * @returns Material definition index of glTF
+ */
+ function gltfGetAssociatedMaterialIndex(parser, material) {
+ var _a, _b;
+ const threeRevision = parseInt(THREE__namespace.REVISION, 10);
+ let index = null;
+ if (threeRevision >= 133) {
+ index = (_b = (_a = parser.associations.get(material)) === null || _a === void 0 ? void 0 : _a.materials) !== null && _b !== void 0 ? _b : null;
+ }
+ else {
+ const associations = parser.associations;
+ const reference = associations.get(material);
+ if ((reference === null || reference === void 0 ? void 0 : reference.type) === 'materials') {
+ index = reference.index;
+ }
+ }
+ return index;
+ }
+
+ /* eslint-disable @typescript-eslint/naming-convention */
+ const VRMExpressionPresetName = {
+ Aa: 'aa',
+ Ih: 'ih',
+ Ou: 'ou',
+ Ee: 'ee',
+ Oh: 'oh',
+ Blink: 'blink',
+ Happy: 'happy',
+ Angry: 'angry',
+ Sad: 'sad',
+ Relaxed: 'relaxed',
+ LookUp: 'lookUp',
+ Surprised: 'surprised',
+ LookDown: 'lookDown',
+ LookLeft: 'lookLeft',
+ LookRight: 'lookRight',
+ BlinkLeft: 'blinkLeft',
+ BlinkRight: 'blinkRight',
+ Neutral: 'neutral',
+ };
+
+ /**
+ * Clamp the input value within [0.0 - 1.0].
+ *
+ * @param value The input value
+ */
+ function saturate(value) {
+ return Math.max(Math.min(value, 1.0), 0.0);
+ }
+
+ class VRMExpressionManager {
+ get expressions() {
+ return this._expressions.concat();
+ }
+ get expressionMap() {
+ return Object.assign({}, this._expressionMap);
+ }
+ /**
+ * A map from name to expression, but excluding custom expressions.
+ */
+ get presetExpressionMap() {
+ const result = {};
+ const presetNameSet = new Set(Object.values(VRMExpressionPresetName));
+ Object.entries(this._expressionMap).forEach(([name, expression]) => {
+ if (presetNameSet.has(name)) {
+ result[name] = expression;
+ }
+ });
+ return result;
+ }
+ /**
+ * A map from name to expression, but excluding preset expressions.
+ */
+ get customExpressionMap() {
+ const result = {};
+ const presetNameSet = new Set(Object.values(VRMExpressionPresetName));
+ Object.entries(this._expressionMap).forEach(([name, expression]) => {
+ if (!presetNameSet.has(name)) {
+ result[name] = expression;
+ }
+ });
+ return result;
+ }
+ /**
+ * Create a new {@link VRMExpressionManager}.
+ */
+ constructor() {
+ /**
+ * A set of name or preset name of expressions that will be overridden by {@link VRMExpression.overrideBlink}.
+ */
+ this.blinkExpressionNames = ['blink', 'blinkLeft', 'blinkRight'];
+ /**
+ * A set of name or preset name of expressions that will be overridden by {@link VRMExpression.overrideLookAt}.
+ */
+ this.lookAtExpressionNames = ['lookLeft', 'lookRight', 'lookUp', 'lookDown'];
+ /**
+ * A set of name or preset name of expressions that will be overridden by {@link VRMExpression.overrideMouth}.
+ */
+ this.mouthExpressionNames = ['aa', 'ee', 'ih', 'oh', 'ou'];
+ /**
+ * A set of {@link VRMExpression}.
+ * When you want to register expressions, use {@link registerExpression}
+ */
+ this._expressions = [];
+ /**
+ * A map from name to expression.
+ */
+ this._expressionMap = {};
+ // do nothing
+ }
+ /**
+ * Copy the given {@link VRMExpressionManager} into this one.
+ * @param source The {@link VRMExpressionManager} you want to copy
+ * @returns this
+ */
+ copy(source) {
+ // first unregister all the expression it has
+ const expressions = this._expressions.concat();
+ expressions.forEach((expression) => {
+ this.unregisterExpression(expression);
+ });
+ // then register all the expression of the source
+ source._expressions.forEach((expression) => {
+ this.registerExpression(expression);
+ });
+ // copy remaining members
+ this.blinkExpressionNames = source.blinkExpressionNames.concat();
+ this.lookAtExpressionNames = source.lookAtExpressionNames.concat();
+ this.mouthExpressionNames = source.mouthExpressionNames.concat();
+ return this;
+ }
+ /**
+ * Returns a clone of this {@link VRMExpressionManager}.
+ * @returns Copied {@link VRMExpressionManager}
+ */
+ clone() {
+ return new VRMExpressionManager().copy(this);
+ }
+ /**
+ * Return a registered expression.
+ * If it cannot find an expression, it will return `null` instead.
+ *
+ * @param name Name or preset name of the expression
+ */
+ getExpression(name) {
+ var _a;
+ return (_a = this._expressionMap[name]) !== null && _a !== void 0 ? _a : null;
+ }
+ /**
+ * Register an expression.
+ *
+ * @param expression {@link VRMExpression} that describes the expression
+ */
+ registerExpression(expression) {
+ this._expressions.push(expression);
+ this._expressionMap[expression.expressionName] = expression;
+ }
+ /**
+ * Unregister an expression.
+ *
+ * @param expression The expression you want to unregister
+ */
+ unregisterExpression(expression) {
+ const index = this._expressions.indexOf(expression);
+ if (index === -1) {
+ console.warn('VRMExpressionManager: The specified expressions is not registered');
+ }
+ this._expressions.splice(index, 1);
+ delete this._expressionMap[expression.expressionName];
+ }
+ /**
+ * Get the current weight of the specified expression.
+ * If it doesn't have an expression of given name, it will return `null` instead.
+ *
+ * @param name Name of the expression
+ */
+ getValue(name) {
+ var _a;
+ const expression = this.getExpression(name);
+ return (_a = expression === null || expression === void 0 ? void 0 : expression.weight) !== null && _a !== void 0 ? _a : null;
+ }
+ /**
+ * Set a weight to the specified expression.
+ *
+ * @param name Name of the expression
+ * @param weight Weight
+ */
+ setValue(name, weight) {
+ const expression = this.getExpression(name);
+ if (expression) {
+ expression.weight = saturate(weight);
+ }
+ }
+ /**
+ * Get a track name of specified expression.
+ * This track name is needed to manipulate its expression via keyframe animations.
+ *
+ * @example Manipulate an expression using keyframe animation
+ * ```js
+ * const trackName = vrm.expressionManager.getExpressionTrackName( 'blink' );
+ * const track = new THREE.NumberKeyframeTrack(
+ * name,
+ * [ 0.0, 0.5, 1.0 ], // times
+ * [ 0.0, 1.0, 0.0 ] // values
+ * );
+ *
+ * const clip = new THREE.AnimationClip(
+ * 'blink', // name
+ * 1.0, // duration
+ * [ track ] // tracks
+ * );
+ *
+ * const mixer = new THREE.AnimationMixer( vrm.scene );
+ * const action = mixer.clipAction( clip );
+ * action.play();
+ * ```
+ *
+ * @param name Name of the expression
+ */
+ getExpressionTrackName(name) {
+ const expression = this.getExpression(name);
+ return expression ? `${expression.name}.weight` : null;
+ }
+ /**
+ * Update every expressions.
+ */
+ update() {
+ // see how much we should override certain expressions
+ const weightMultipliers = this._calculateWeightMultipliers();
+ // reset expression binds first
+ this._expressions.forEach((expression) => {
+ expression.clearAppliedWeight();
+ });
+ // then apply binds
+ this._expressions.forEach((expression) => {
+ let multiplier = 1.0;
+ const name = expression.expressionName;
+ if (this.blinkExpressionNames.indexOf(name) !== -1) {
+ multiplier *= weightMultipliers.blink;
+ }
+ if (this.lookAtExpressionNames.indexOf(name) !== -1) {
+ multiplier *= weightMultipliers.lookAt;
+ }
+ if (this.mouthExpressionNames.indexOf(name) !== -1) {
+ multiplier *= weightMultipliers.mouth;
+ }
+ expression.applyWeight({ multiplier });
+ });
+ }
+ /**
+ * Calculate sum of override amounts to see how much we should multiply weights of certain expressions.
+ */
+ _calculateWeightMultipliers() {
+ let blink = 1.0;
+ let lookAt = 1.0;
+ let mouth = 1.0;
+ this._expressions.forEach((expression) => {
+ blink -= expression.overrideBlinkAmount;
+ lookAt -= expression.overrideLookAtAmount;
+ mouth -= expression.overrideMouthAmount;
+ });
+ blink = Math.max(0.0, blink);
+ lookAt = Math.max(0.0, lookAt);
+ mouth = Math.max(0.0, mouth);
+ return { blink, lookAt, mouth };
+ }
+ }
+
+ /* eslint-disable @typescript-eslint/naming-convention */
+ const VRMExpressionMaterialColorType = {
+ Color: 'color',
+ EmissionColor: 'emissionColor',
+ ShadeColor: 'shadeColor',
+ MatcapColor: 'matcapColor',
+ RimColor: 'rimColor',
+ OutlineColor: 'outlineColor',
+ };
+ const v0ExpressionMaterialColorMap = {
+ _Color: VRMExpressionMaterialColorType.Color,
+ _EmissionColor: VRMExpressionMaterialColorType.EmissionColor,
+ _ShadeColor: VRMExpressionMaterialColorType.ShadeColor,
+ _RimColor: VRMExpressionMaterialColorType.RimColor,
+ _OutlineColor: VRMExpressionMaterialColorType.OutlineColor,
+ };
+
+ const _color = new THREE__namespace.Color();
+ /**
+ * A bind of expression influences to a material color.
+ */
+ class VRMExpressionMaterialColorBind {
+ constructor({ material, type, targetValue, }) {
+ var _a, _b, _c;
+ this.material = material;
+ this.type = type;
+ this.targetValue = targetValue;
+ // init property name
+ const propertyNameMap = (_a = Object.entries(VRMExpressionMaterialColorBind._propertyNameMapMap).find(([distinguisher]) => {
+ return material[distinguisher] === true;
+ })) === null || _a === void 0 ? void 0 : _a[1];
+ const propertyName = (_b = propertyNameMap === null || propertyNameMap === void 0 ? void 0 : propertyNameMap[type]) !== null && _b !== void 0 ? _b : null;
+ if (propertyName == null) {
+ console.warn(`Tried to add a material color bind to the material ${(_c = material.name) !== null && _c !== void 0 ? _c : '(no name)'}, the type ${type} but the material or the type is not supported.`);
+ this._state = null;
+ }
+ else {
+ const target = material[propertyName];
+ const initialValue = target.clone();
+ // 負の値を保持するためにColor.subを使わずに差分を計算する
+ const deltaValue = new THREE__namespace.Color(targetValue.r - initialValue.r, targetValue.g - initialValue.g, targetValue.b - initialValue.b);
+ this._state = {
+ propertyName,
+ initialValue,
+ deltaValue,
+ };
+ }
+ }
+ applyWeight(weight) {
+ if (this._state == null) {
+ // warning is already emitted in constructor
+ return;
+ }
+ const { propertyName, deltaValue } = this._state;
+ const target = this.material[propertyName];
+ if (target === undefined) {
+ return;
+ } // TODO: we should kick this at `addMaterialValue`
+ target.add(_color.copy(deltaValue).multiplyScalar(weight));
+ if (typeof this.material.shouldApplyUniforms === 'boolean') {
+ this.material.shouldApplyUniforms = true;
+ }
+ }
+ clearAppliedWeight() {
+ if (this._state == null) {
+ // warning is already emitted in constructor
+ return;
+ }
+ const { propertyName, initialValue } = this._state;
+ const target = this.material[propertyName];
+ if (target === undefined) {
+ return;
+ } // TODO: we should kick this at `addMaterialValue`
+ target.copy(initialValue);
+ if (typeof this.material.shouldApplyUniforms === 'boolean') {
+ this.material.shouldApplyUniforms = true;
+ }
+ }
+ }
+ /**
+ * Mapping of property names from VRMC/materialColorBinds.type to three.js/Material.
+ */
+ VRMExpressionMaterialColorBind._propertyNameMapMap = {
+ isMeshStandardMaterial: {
+ color: 'color',
+ emissionColor: 'emissive',
+ },
+ isMeshBasicMaterial: {
+ color: 'color',
+ },
+ isMToonMaterial: {
+ color: 'color',
+ emissionColor: 'emissive',
+ outlineColor: 'outlineColorFactor',
+ matcapColor: 'matcapFactor',
+ rimColor: 'parametricRimColorFactor',
+ shadeColor: 'shadeColorFactor',
+ },
+ };
+
+ /**
+ * A bind of {@link VRMExpression} influences to morph targets.
+ */
+ class VRMExpressionMorphTargetBind {
+ constructor({ primitives, index, weight, }) {
+ this.primitives = primitives;
+ this.index = index;
+ this.weight = weight;
+ }
+ applyWeight(weight) {
+ this.primitives.forEach((mesh) => {
+ var _a;
+ if (((_a = mesh.morphTargetInfluences) === null || _a === void 0 ? void 0 : _a[this.index]) != null) {
+ mesh.morphTargetInfluences[this.index] += this.weight * weight;
+ }
+ });
+ }
+ clearAppliedWeight() {
+ this.primitives.forEach((mesh) => {
+ var _a;
+ if (((_a = mesh.morphTargetInfluences) === null || _a === void 0 ? void 0 : _a[this.index]) != null) {
+ mesh.morphTargetInfluences[this.index] = 0.0;
+ }
+ });
+ }
+ }
+
+ const _v2 = new THREE__namespace.Vector2();
+ /**
+ * A bind of expression influences to texture transforms.
+ */
+ class VRMExpressionTextureTransformBind {
+ constructor({ material, scale, offset, }) {
+ var _a, _b;
+ this.material = material;
+ this.scale = scale;
+ this.offset = offset;
+ const propertyNames = (_a = Object.entries(VRMExpressionTextureTransformBind._propertyNamesMap).find(([distinguisher]) => {
+ return material[distinguisher] === true;
+ })) === null || _a === void 0 ? void 0 : _a[1];
+ if (propertyNames == null) {
+ console.warn(`Tried to add a texture transform bind to the material ${(_b = material.name) !== null && _b !== void 0 ? _b : '(no name)'} but the material is not supported.`);
+ this._properties = [];
+ }
+ else {
+ this._properties = [];
+ propertyNames.forEach((propertyName) => {
+ var _a;
+ const texture = (_a = material[propertyName]) === null || _a === void 0 ? void 0 : _a.clone();
+ if (!texture) {
+ return null;
+ }
+ material[propertyName] = texture; // because the texture is cloned
+ const initialOffset = texture.offset.clone();
+ const initialScale = texture.repeat.clone();
+ const deltaOffset = offset.clone().sub(initialOffset);
+ const deltaScale = scale.clone().sub(initialScale);
+ this._properties.push({
+ name: propertyName,
+ initialOffset,
+ deltaOffset,
+ initialScale,
+ deltaScale,
+ });
+ });
+ }
+ }
+ applyWeight(weight) {
+ this._properties.forEach((property) => {
+ const target = this.material[property.name];
+ if (target === undefined) {
+ return;
+ } // TODO: we should kick this at `addMaterialValue`
+ target.offset.add(_v2.copy(property.deltaOffset).multiplyScalar(weight));
+ target.repeat.add(_v2.copy(property.deltaScale).multiplyScalar(weight));
+ target.needsUpdate = true;
+ });
+ }
+ clearAppliedWeight() {
+ this._properties.forEach((property) => {
+ const target = this.material[property.name];
+ if (target === undefined) {
+ return;
+ } // TODO: we should kick this at `addMaterialValue`
+ target.offset.copy(property.initialOffset);
+ target.repeat.copy(property.initialScale);
+ target.needsUpdate = true;
+ });
+ }
+ }
+ VRMExpressionTextureTransformBind._propertyNamesMap = {
+ isMeshStandardMaterial: [
+ 'map',
+ 'emissiveMap',
+ 'bumpMap',
+ 'normalMap',
+ 'displacementMap',
+ 'roughnessMap',
+ 'metalnessMap',
+ 'alphaMap',
+ ],
+ isMeshBasicMaterial: ['map', 'specularMap', 'alphaMap'],
+ isMToonMaterial: [
+ 'map',
+ 'normalMap',
+ 'emissiveMap',
+ 'shadeMultiplyTexture',
+ 'rimMultiplyTexture',
+ 'outlineWidthMultiplyTexture',
+ 'uvAnimationMaskTexture',
+ ],
+ };
+
+ /**
+ * Possible spec versions it recognizes.
+ */
+ const POSSIBLE_SPEC_VERSIONS$4 = new Set(['1.0', '1.0-beta']);
+ /**
+ * A plugin of GLTFLoader that imports a {@link VRMExpressionManager} from a VRM extension of a GLTF.
+ */
+ class VRMExpressionLoaderPlugin {
+ get name() {
+ // We should use the extension name instead but we have multiple plugins for an extension...
+ return 'VRMExpressionLoaderPlugin';
+ }
+ constructor(parser) {
+ this.parser = parser;
+ }
+ afterRoot(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ gltf.userData.vrmExpressionManager = yield this._import(gltf);
+ });
+ }
+ /**
+ * Import a {@link VRMExpressionManager} from a VRM.
+ *
+ * @param gltf A parsed result of GLTF taken from GLTFLoader
+ */
+ _import(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const v1Result = yield this._v1Import(gltf);
+ if (v1Result) {
+ return v1Result;
+ }
+ const v0Result = yield this._v0Import(gltf);
+ if (v0Result) {
+ return v0Result;
+ }
+ return null;
+ });
+ }
+ _v1Import(gltf) {
+ var _a, _b;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const isVRMUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf('VRMC_vrm')) !== -1;
+ if (!isVRMUsed) {
+ return null;
+ }
+ const extension = (_b = json.extensions) === null || _b === void 0 ? void 0 : _b['VRMC_vrm'];
+ if (!extension) {
+ return null;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS$4.has(specVersion)) {
+ console.warn(`VRMExpressionLoaderPlugin: Unknown VRMC_vrm specVersion "${specVersion}"`);
+ return null;
+ }
+ const schemaExpressions = extension.expressions;
+ if (!schemaExpressions) {
+ return null;
+ }
+ // list expressions
+ const presetNameSet = new Set(Object.values(VRMExpressionPresetName));
+ const nameSchemaExpressionMap = new Map();
+ if (schemaExpressions.preset != null) {
+ Object.entries(schemaExpressions.preset).forEach(([name, schemaExpression]) => {
+ if (schemaExpression == null) {
+ return;
+ } // typescript
+ if (!presetNameSet.has(name)) {
+ console.warn(`VRMExpressionLoaderPlugin: Unknown preset name "${name}" detected. Ignoring the expression`);
+ return;
+ }
+ nameSchemaExpressionMap.set(name, schemaExpression);
+ });
+ }
+ if (schemaExpressions.custom != null) {
+ Object.entries(schemaExpressions.custom).forEach(([name, schemaExpression]) => {
+ if (presetNameSet.has(name)) {
+ console.warn(`VRMExpressionLoaderPlugin: Custom expression cannot have preset name "${name}". Ignoring the expression`);
+ return;
+ }
+ nameSchemaExpressionMap.set(name, schemaExpression);
+ });
+ }
+ // prepare manager
+ const manager = new VRMExpressionManager();
+ // load expressions
+ yield Promise.all(Array.from(nameSchemaExpressionMap.entries()).map(([name, schemaExpression]) => __awaiter$6(this, void 0, void 0, function* () {
+ var _c, _d, _e, _f, _g, _h, _j;
+ const expression = new VRMExpression(name);
+ gltf.scene.add(expression);
+ expression.isBinary = (_c = schemaExpression.isBinary) !== null && _c !== void 0 ? _c : false;
+ expression.overrideBlink = (_d = schemaExpression.overrideBlink) !== null && _d !== void 0 ? _d : 'none';
+ expression.overrideLookAt = (_e = schemaExpression.overrideLookAt) !== null && _e !== void 0 ? _e : 'none';
+ expression.overrideMouth = (_f = schemaExpression.overrideMouth) !== null && _f !== void 0 ? _f : 'none';
+ (_g = schemaExpression.morphTargetBinds) === null || _g === void 0 ? void 0 : _g.forEach((bind) => __awaiter$6(this, void 0, void 0, function* () {
+ var _k;
+ if (bind.node === undefined || bind.index === undefined) {
+ return;
+ }
+ const primitives = (yield gltfExtractPrimitivesFromNode(gltf, bind.node));
+ const morphTargetIndex = bind.index;
+ // check if the mesh has the target morph target
+ if (!primitives.every((primitive) => Array.isArray(primitive.morphTargetInfluences) &&
+ morphTargetIndex < primitive.morphTargetInfluences.length)) {
+ console.warn(`VRMExpressionLoaderPlugin: ${schemaExpression.name} attempts to index morph #${morphTargetIndex} but not found.`);
+ return;
+ }
+ expression.addBind(new VRMExpressionMorphTargetBind({
+ primitives,
+ index: morphTargetIndex,
+ weight: (_k = bind.weight) !== null && _k !== void 0 ? _k : 1.0,
+ }));
+ }));
+ if (schemaExpression.materialColorBinds || schemaExpression.textureTransformBinds) {
+ // list up every material in `gltf.scene`
+ const gltfMaterials = [];
+ gltf.scene.traverse((object) => {
+ const material = object.material;
+ if (material) {
+ gltfMaterials.push(material);
+ }
+ });
+ (_h = schemaExpression.materialColorBinds) === null || _h === void 0 ? void 0 : _h.forEach((bind) => __awaiter$6(this, void 0, void 0, function* () {
+ const materials = gltfMaterials.filter((material) => {
+ const materialIndex = gltfGetAssociatedMaterialIndex(this.parser, material);
+ return bind.material === materialIndex;
+ });
+ materials.forEach((material) => {
+ expression.addBind(new VRMExpressionMaterialColorBind({
+ material,
+ type: bind.type,
+ targetValue: new THREE__namespace.Color().fromArray(bind.targetValue),
+ }));
+ });
+ }));
+ (_j = schemaExpression.textureTransformBinds) === null || _j === void 0 ? void 0 : _j.forEach((bind) => __awaiter$6(this, void 0, void 0, function* () {
+ const materials = gltfMaterials.filter((material) => {
+ const materialIndex = gltfGetAssociatedMaterialIndex(this.parser, material);
+ return bind.material === materialIndex;
+ });
+ materials.forEach((material) => {
+ var _a, _b;
+ expression.addBind(new VRMExpressionTextureTransformBind({
+ material,
+ offset: new THREE__namespace.Vector2().fromArray((_a = bind.offset) !== null && _a !== void 0 ? _a : [0.0, 0.0]),
+ scale: new THREE__namespace.Vector2().fromArray((_b = bind.scale) !== null && _b !== void 0 ? _b : [1.0, 1.0]),
+ }));
+ });
+ }));
+ }
+ manager.registerExpression(expression);
+ })));
+ return manager;
+ });
+ }
+ _v0Import(gltf) {
+ var _a;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const vrmExt = (_a = json.extensions) === null || _a === void 0 ? void 0 : _a.VRM;
+ if (!vrmExt) {
+ return null;
+ }
+ const schemaBlendShape = vrmExt.blendShapeMaster;
+ if (!schemaBlendShape) {
+ return null;
+ }
+ const manager = new VRMExpressionManager();
+ const schemaBlendShapeGroups = schemaBlendShape.blendShapeGroups;
+ if (!schemaBlendShapeGroups) {
+ return manager;
+ }
+ const blendShapeNameSet = new Set();
+ yield Promise.all(schemaBlendShapeGroups.map((schemaGroup) => __awaiter$6(this, void 0, void 0, function* () {
+ var _b;
+ const v0PresetName = schemaGroup.presetName;
+ const v1PresetName = (v0PresetName != null && VRMExpressionLoaderPlugin.v0v1PresetNameMap[v0PresetName]) || null;
+ const name = v1PresetName !== null && v1PresetName !== void 0 ? v1PresetName : schemaGroup.name;
+ if (name == null) {
+ console.warn('VRMExpressionLoaderPlugin: One of custom expressions has no name. Ignoring the expression');
+ return;
+ }
+ // duplication check
+ if (blendShapeNameSet.has(name)) {
+ console.warn(`VRMExpressionLoaderPlugin: An expression preset ${v0PresetName} has duplicated entries. Ignoring the expression`);
+ return;
+ }
+ blendShapeNameSet.add(name);
+ const expression = new VRMExpression(name);
+ gltf.scene.add(expression);
+ expression.isBinary = (_b = schemaGroup.isBinary) !== null && _b !== void 0 ? _b : false;
+ // v0 doesn't have ignore properties
+ // Bind morphTarget
+ if (schemaGroup.binds) {
+ schemaGroup.binds.forEach((bind) => __awaiter$6(this, void 0, void 0, function* () {
+ var _c;
+ if (bind.mesh === undefined || bind.index === undefined) {
+ return;
+ }
+ const nodesUsingMesh = [];
+ (_c = json.nodes) === null || _c === void 0 ? void 0 : _c.forEach((node, i) => {
+ if (node.mesh === bind.mesh) {
+ nodesUsingMesh.push(i);
+ }
+ });
+ const morphTargetIndex = bind.index;
+ yield Promise.all(nodesUsingMesh.map((nodeIndex) => __awaiter$6(this, void 0, void 0, function* () {
+ var _d;
+ const primitives = (yield gltfExtractPrimitivesFromNode(gltf, nodeIndex));
+ // check if the mesh has the target morph target
+ if (!primitives.every((primitive) => Array.isArray(primitive.morphTargetInfluences) &&
+ morphTargetIndex < primitive.morphTargetInfluences.length)) {
+ console.warn(`VRMExpressionLoaderPlugin: ${schemaGroup.name} attempts to index ${morphTargetIndex}th morph but not found.`);
+ return;
+ }
+ expression.addBind(new VRMExpressionMorphTargetBind({
+ primitives,
+ index: morphTargetIndex,
+ weight: 0.01 * ((_d = bind.weight) !== null && _d !== void 0 ? _d : 100), // narrowing the range from [ 0.0 - 100.0 ] to [ 0.0 - 1.0 ]
+ }));
+ })));
+ }));
+ }
+ // Bind MaterialColor and TextureTransform
+ const materialValues = schemaGroup.materialValues;
+ if (materialValues && materialValues.length !== 0) {
+ materialValues.forEach((materialValue) => {
+ if (materialValue.materialName === undefined ||
+ materialValue.propertyName === undefined ||
+ materialValue.targetValue === undefined) {
+ return;
+ }
+ /**
+ * アバターのオブジェクトに設定されているマテリアルの内から
+ * materialValueで指定されているマテリアルを集める。
+ *
+ * 特定には名前を使用する。
+ * アウトライン描画用のマテリアルも同時に集める。
+ */
+ const materials = [];
+ gltf.scene.traverse((object) => {
+ if (object.material) {
+ const material = object.material;
+ if (Array.isArray(material)) {
+ materials.push(...material.filter((mtl) => (mtl.name === materialValue.materialName ||
+ mtl.name === materialValue.materialName + ' (Outline)') &&
+ materials.indexOf(mtl) === -1));
+ }
+ else if (material.name === materialValue.materialName && materials.indexOf(material) === -1) {
+ materials.push(material);
+ }
+ }
+ });
+ const materialPropertyName = materialValue.propertyName;
+ materials.forEach((material) => {
+ // TextureTransformBind
+ if (materialPropertyName === '_MainTex_ST') {
+ const scale = new THREE__namespace.Vector2(materialValue.targetValue[0], materialValue.targetValue[1]);
+ const offset = new THREE__namespace.Vector2(materialValue.targetValue[2], materialValue.targetValue[3]);
+ offset.y = 1.0 - offset.y - scale.y;
+ expression.addBind(new VRMExpressionTextureTransformBind({
+ material,
+ scale,
+ offset,
+ }));
+ return;
+ }
+ // MaterialColorBind
+ const materialColorType = v0ExpressionMaterialColorMap[materialPropertyName];
+ if (materialColorType) {
+ expression.addBind(new VRMExpressionMaterialColorBind({
+ material,
+ type: materialColorType,
+ targetValue: new THREE__namespace.Color(...materialValue.targetValue.slice(0, 3)),
+ }));
+ return;
+ }
+ console.warn(materialPropertyName + ' is not supported');
+ });
+ });
+ }
+ manager.registerExpression(expression);
+ })));
+ return manager;
+ });
+ }
+ }
+ VRMExpressionLoaderPlugin.v0v1PresetNameMap = {
+ a: 'aa',
+ e: 'ee',
+ i: 'ih',
+ o: 'oh',
+ u: 'ou',
+ blink: 'blink',
+ joy: 'happy',
+ angry: 'angry',
+ sorrow: 'sad',
+ fun: 'relaxed',
+ lookup: 'lookUp',
+ lookdown: 'lookDown',
+ lookleft: 'lookLeft',
+ lookright: 'lookRight',
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ blink_l: 'blinkLeft',
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ blink_r: 'blinkRight',
+ neutral: 'neutral',
+ };
+
+ /* eslint-disable @typescript-eslint/naming-convention */
+ const VRMExpressionOverrideType = {
+ None: 'none',
+ Block: 'block',
+ Blend: 'blend',
+ };
+
+ class VRMFirstPerson {
+ /**
+ * Create a new VRMFirstPerson object.
+ *
+ * @param humanoid A {@link VRMHumanoid}
+ * @param meshAnnotations A renderer settings. See the description of [[RendererFirstPersonFlags]] for more info
+ */
+ constructor(humanoid, meshAnnotations) {
+ this._firstPersonOnlyLayer = VRMFirstPerson.DEFAULT_FIRSTPERSON_ONLY_LAYER;
+ this._thirdPersonOnlyLayer = VRMFirstPerson.DEFAULT_THIRDPERSON_ONLY_LAYER;
+ this._initializedLayers = false;
+ this.humanoid = humanoid;
+ this.meshAnnotations = meshAnnotations;
+ }
+ /**
+ * Copy the given {@link VRMFirstPerson} into this one.
+ * {@link humanoid} must be same as the source one.
+ * @param source The {@link VRMFirstPerson} you want to copy
+ * @returns this
+ */
+ copy(source) {
+ if (this.humanoid !== source.humanoid) {
+ throw new Error('VRMFirstPerson: humanoid must be same in order to copy');
+ }
+ this.meshAnnotations = source.meshAnnotations.map((annotation) => ({
+ meshes: annotation.meshes.concat(),
+ type: annotation.type,
+ }));
+ return this;
+ }
+ /**
+ * Returns a clone of this {@link VRMFirstPerson}.
+ * @returns Copied {@link VRMFirstPerson}
+ */
+ clone() {
+ return new VRMFirstPerson(this.humanoid, this.meshAnnotations).copy(this);
+ }
+ /**
+ * A camera layer represents `FirstPersonOnly` layer.
+ * Note that **you must call {@link setup} first before you use the layer feature** or it does not work properly.
+ *
+ * The value is {@link DEFAULT_FIRSTPERSON_ONLY_LAYER} by default but you can change the layer by specifying via {@link setup} if you prefer.
+ *
+ * @see https://vrm.dev/en/univrm/api/univrm_use_firstperson/
+ * @see https://threejs.org/docs/#api/en/core/Layers
+ */
+ get firstPersonOnlyLayer() {
+ return this._firstPersonOnlyLayer;
+ }
+ /**
+ * A camera layer represents `ThirdPersonOnly` layer.
+ * Note that **you must call {@link setup} first before you use the layer feature** or it does not work properly.
+ *
+ * The value is {@link DEFAULT_THIRDPERSON_ONLY_LAYER} by default but you can change the layer by specifying via {@link setup} if you prefer.
+ *
+ * @see https://vrm.dev/en/univrm/api/univrm_use_firstperson/
+ * @see https://threejs.org/docs/#api/en/core/Layers
+ */
+ get thirdPersonOnlyLayer() {
+ return this._thirdPersonOnlyLayer;
+ }
+ /**
+ * In this method, it assigns layers for every meshes based on mesh annotations.
+ * You must call this method first before you use the layer feature.
+ *
+ * This is an equivalent of [VRMFirstPerson.Setup](https://github.com/vrm-c/UniVRM/blob/73a5bd8fcddaa2a7a8735099a97e63c9db3e5ea0/Assets/VRM/Runtime/FirstPerson/VRMFirstPerson.cs#L295-L299) of the UniVRM.
+ *
+ * The `cameraLayer` parameter specifies which layer will be assigned for `FirstPersonOnly` / `ThirdPersonOnly`.
+ * In UniVRM, we specified those by naming each desired layer as `FIRSTPERSON_ONLY_LAYER` / `THIRDPERSON_ONLY_LAYER`
+ * but we are going to specify these layers at here since we are unable to name layers in Three.js.
+ *
+ * @param cameraLayer Specify which layer will be for `FirstPersonOnly` / `ThirdPersonOnly`.
+ */
+ setup({ firstPersonOnlyLayer = VRMFirstPerson.DEFAULT_FIRSTPERSON_ONLY_LAYER, thirdPersonOnlyLayer = VRMFirstPerson.DEFAULT_THIRDPERSON_ONLY_LAYER, } = {}) {
+ if (this._initializedLayers) {
+ return;
+ }
+ this._firstPersonOnlyLayer = firstPersonOnlyLayer;
+ this._thirdPersonOnlyLayer = thirdPersonOnlyLayer;
+ this.meshAnnotations.forEach((item) => {
+ item.meshes.forEach((mesh) => {
+ if (item.type === 'firstPersonOnly') {
+ mesh.layers.set(this._firstPersonOnlyLayer);
+ mesh.traverse((child) => child.layers.set(this._firstPersonOnlyLayer));
+ }
+ else if (item.type === 'thirdPersonOnly') {
+ mesh.layers.set(this._thirdPersonOnlyLayer);
+ mesh.traverse((child) => child.layers.set(this._thirdPersonOnlyLayer));
+ }
+ else if (item.type === 'auto') {
+ this._createHeadlessModel(mesh);
+ }
+ });
+ });
+ this._initializedLayers = true;
+ }
+ _excludeTriangles(triangles, bws, skinIndex, exclude) {
+ let count = 0;
+ if (bws != null && bws.length > 0) {
+ for (let i = 0; i < triangles.length; i += 3) {
+ const a = triangles[i];
+ const b = triangles[i + 1];
+ const c = triangles[i + 2];
+ const bw0 = bws[a];
+ const skin0 = skinIndex[a];
+ if (bw0[0] > 0 && exclude.includes(skin0[0]))
+ continue;
+ if (bw0[1] > 0 && exclude.includes(skin0[1]))
+ continue;
+ if (bw0[2] > 0 && exclude.includes(skin0[2]))
+ continue;
+ if (bw0[3] > 0 && exclude.includes(skin0[3]))
+ continue;
+ const bw1 = bws[b];
+ const skin1 = skinIndex[b];
+ if (bw1[0] > 0 && exclude.includes(skin1[0]))
+ continue;
+ if (bw1[1] > 0 && exclude.includes(skin1[1]))
+ continue;
+ if (bw1[2] > 0 && exclude.includes(skin1[2]))
+ continue;
+ if (bw1[3] > 0 && exclude.includes(skin1[3]))
+ continue;
+ const bw2 = bws[c];
+ const skin2 = skinIndex[c];
+ if (bw2[0] > 0 && exclude.includes(skin2[0]))
+ continue;
+ if (bw2[1] > 0 && exclude.includes(skin2[1]))
+ continue;
+ if (bw2[2] > 0 && exclude.includes(skin2[2]))
+ continue;
+ if (bw2[3] > 0 && exclude.includes(skin2[3]))
+ continue;
+ triangles[count++] = a;
+ triangles[count++] = b;
+ triangles[count++] = c;
+ }
+ }
+ return count;
+ }
+ _createErasedMesh(src, erasingBonesIndex) {
+ const dst = new THREE__namespace.SkinnedMesh(src.geometry.clone(), src.material);
+ dst.name = `${src.name}(erase)`;
+ dst.frustumCulled = src.frustumCulled;
+ dst.layers.set(this._firstPersonOnlyLayer);
+ const geometry = dst.geometry;
+ const skinIndexAttr = geometry.getAttribute('skinIndex');
+ const skinIndexAttrArray = skinIndexAttr instanceof THREE__namespace.GLBufferAttribute ? [] : skinIndexAttr.array;
+ const skinIndex = [];
+ for (let i = 0; i < skinIndexAttrArray.length; i += 4) {
+ skinIndex.push([
+ skinIndexAttrArray[i],
+ skinIndexAttrArray[i + 1],
+ skinIndexAttrArray[i + 2],
+ skinIndexAttrArray[i + 3],
+ ]);
+ }
+ const skinWeightAttr = geometry.getAttribute('skinWeight');
+ const skinWeightAttrArray = skinWeightAttr instanceof THREE__namespace.GLBufferAttribute ? [] : skinWeightAttr.array;
+ const skinWeight = [];
+ for (let i = 0; i < skinWeightAttrArray.length; i += 4) {
+ skinWeight.push([
+ skinWeightAttrArray[i],
+ skinWeightAttrArray[i + 1],
+ skinWeightAttrArray[i + 2],
+ skinWeightAttrArray[i + 3],
+ ]);
+ }
+ const index = geometry.getIndex();
+ if (!index) {
+ throw new Error("The geometry doesn't have an index buffer");
+ }
+ const oldTriangles = Array.from(index.array);
+ const count = this._excludeTriangles(oldTriangles, skinWeight, skinIndex, erasingBonesIndex);
+ const newTriangle = [];
+ for (let i = 0; i < count; i++) {
+ newTriangle[i] = oldTriangles[i];
+ }
+ geometry.setIndex(newTriangle);
+ // mtoon material includes onBeforeRender. this is unsupported at SkinnedMesh#clone
+ if (src.onBeforeRender) {
+ dst.onBeforeRender = src.onBeforeRender;
+ }
+ dst.bind(new THREE__namespace.Skeleton(src.skeleton.bones, src.skeleton.boneInverses), new THREE__namespace.Matrix4());
+ return dst;
+ }
+ _createHeadlessModelForSkinnedMesh(parent, mesh) {
+ const eraseBoneIndexes = [];
+ mesh.skeleton.bones.forEach((bone, index) => {
+ if (this._isEraseTarget(bone))
+ eraseBoneIndexes.push(index);
+ });
+ // Unlike UniVRM we don't copy mesh if no invisible bone was found
+ if (!eraseBoneIndexes.length) {
+ mesh.layers.enable(this._thirdPersonOnlyLayer);
+ mesh.layers.enable(this._firstPersonOnlyLayer);
+ return;
+ }
+ mesh.layers.set(this._thirdPersonOnlyLayer);
+ const newMesh = this._createErasedMesh(mesh, eraseBoneIndexes);
+ parent.add(newMesh);
+ }
+ _createHeadlessModel(node) {
+ if (node.type === 'Group') {
+ node.layers.set(this._thirdPersonOnlyLayer);
+ if (this._isEraseTarget(node)) {
+ node.traverse((child) => child.layers.set(this._thirdPersonOnlyLayer));
+ }
+ else {
+ const parent = new THREE__namespace.Group();
+ parent.name = `_headless_${node.name}`;
+ parent.layers.set(this._firstPersonOnlyLayer);
+ node.parent.add(parent);
+ node.children
+ .filter((child) => child.type === 'SkinnedMesh')
+ .forEach((child) => {
+ const skinnedMesh = child;
+ this._createHeadlessModelForSkinnedMesh(parent, skinnedMesh);
+ });
+ }
+ }
+ else if (node.type === 'SkinnedMesh') {
+ const skinnedMesh = node;
+ this._createHeadlessModelForSkinnedMesh(node.parent, skinnedMesh);
+ }
+ else {
+ if (this._isEraseTarget(node)) {
+ node.layers.set(this._thirdPersonOnlyLayer);
+ node.traverse((child) => child.layers.set(this._thirdPersonOnlyLayer));
+ }
+ }
+ }
+ _isEraseTarget(bone) {
+ if (bone === this.humanoid.getRawBoneNode('head')) {
+ return true;
+ }
+ else if (!bone.parent) {
+ return false;
+ }
+ else {
+ return this._isEraseTarget(bone.parent);
+ }
+ }
+ }
+ /**
+ * A default camera layer for `FirstPersonOnly` layer.
+ *
+ * @see [[getFirstPersonOnlyLayer]]
+ */
+ VRMFirstPerson.DEFAULT_FIRSTPERSON_ONLY_LAYER = 9;
+ /**
+ * A default camera layer for `ThirdPersonOnly` layer.
+ *
+ * @see [[getThirdPersonOnlyLayer]]
+ */
+ VRMFirstPerson.DEFAULT_THIRDPERSON_ONLY_LAYER = 10;
+
+ /**
+ * Possible spec versions it recognizes.
+ */
+ const POSSIBLE_SPEC_VERSIONS$3 = new Set(['1.0', '1.0-beta']);
+ /**
+ * A plugin of GLTFLoader that imports a {@link VRMFirstPerson} from a VRM extension of a GLTF.
+ */
+ class VRMFirstPersonLoaderPlugin {
+ get name() {
+ // We should use the extension name instead but we have multiple plugins for an extension...
+ return 'VRMFirstPersonLoaderPlugin';
+ }
+ constructor(parser) {
+ this.parser = parser;
+ }
+ afterRoot(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const vrmHumanoid = gltf.userData.vrmHumanoid;
+ // explicitly distinguish null and undefined
+ // since vrmHumanoid might be null as a result
+ if (vrmHumanoid === null) {
+ return;
+ }
+ else if (vrmHumanoid === undefined) {
+ throw new Error('VRMFirstPersonLoaderPlugin: vrmHumanoid is undefined. VRMHumanoidLoaderPlugin have to be used first');
+ }
+ gltf.userData.vrmFirstPerson = yield this._import(gltf, vrmHumanoid);
+ });
+ }
+ /**
+ * Import a {@link VRMFirstPerson} from a VRM.
+ *
+ * @param gltf A parsed result of GLTF taken from GLTFLoader
+ * @param humanoid A {@link VRMHumanoid} instance that represents the VRM
+ */
+ _import(gltf, humanoid) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ if (humanoid == null) {
+ return null;
+ }
+ const v1Result = yield this._v1Import(gltf, humanoid);
+ if (v1Result) {
+ return v1Result;
+ }
+ const v0Result = yield this._v0Import(gltf, humanoid);
+ if (v0Result) {
+ return v0Result;
+ }
+ return null;
+ });
+ }
+ _v1Import(gltf, humanoid) {
+ var _a, _b;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const isVRMUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf('VRMC_vrm')) !== -1;
+ if (!isVRMUsed) {
+ return null;
+ }
+ const extension = (_b = json.extensions) === null || _b === void 0 ? void 0 : _b['VRMC_vrm'];
+ if (!extension) {
+ return null;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS$3.has(specVersion)) {
+ console.warn(`VRMFirstPersonLoaderPlugin: Unknown VRMC_vrm specVersion "${specVersion}"`);
+ return null;
+ }
+ const schemaFirstPerson = extension.firstPerson;
+ if (!schemaFirstPerson) {
+ return null;
+ }
+ const meshAnnotations = [];
+ const nodePrimitivesMap = yield gltfExtractPrimitivesFromNodes(gltf);
+ Array.from(nodePrimitivesMap.entries()).forEach(([nodeIndex, primitives]) => {
+ var _a;
+ const annotation = schemaFirstPerson.meshAnnotations
+ ? schemaFirstPerson.meshAnnotations.find((a) => a.node === nodeIndex)
+ : undefined;
+ meshAnnotations.push({
+ meshes: primitives,
+ type: (_a = annotation === null || annotation === void 0 ? void 0 : annotation.type) !== null && _a !== void 0 ? _a : 'both',
+ });
+ });
+ return new VRMFirstPerson(humanoid, meshAnnotations);
+ });
+ }
+ _v0Import(gltf, humanoid) {
+ var _a;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ const vrmExt = (_a = json.extensions) === null || _a === void 0 ? void 0 : _a.VRM;
+ if (!vrmExt) {
+ return null;
+ }
+ const schemaFirstPerson = vrmExt.firstPerson;
+ if (!schemaFirstPerson) {
+ return null;
+ }
+ const meshAnnotations = [];
+ const nodePrimitivesMap = yield gltfExtractPrimitivesFromNodes(gltf);
+ Array.from(nodePrimitivesMap.entries()).forEach(([nodeIndex, primitives]) => {
+ const schemaNode = json.nodes[nodeIndex];
+ const flag = schemaFirstPerson.meshAnnotations
+ ? schemaFirstPerson.meshAnnotations.find((a) => a.mesh === schemaNode.mesh)
+ : undefined;
+ meshAnnotations.push({
+ meshes: primitives,
+ type: this._convertV0FlagToV1Type(flag === null || flag === void 0 ? void 0 : flag.firstPersonFlag),
+ });
+ });
+ return new VRMFirstPerson(humanoid, meshAnnotations);
+ });
+ }
+ _convertV0FlagToV1Type(flag) {
+ if (flag === 'FirstPersonOnly') {
+ return 'firstPersonOnly';
+ }
+ else if (flag === 'ThirdPersonOnly') {
+ return 'thirdPersonOnly';
+ }
+ else if (flag === 'Auto') {
+ return 'auto';
+ }
+ else {
+ return 'both';
+ }
+ }
+ }
+
+ /* eslint-disable @typescript-eslint/naming-convention */
+ const VRMFirstPersonMeshAnnotationType = {
+ Auto: 'auto',
+ Both: 'both',
+ ThirdPersonOnly: 'thirdPersonOnly',
+ FirstPersonOnly: 'firstPersonOnly',
+ };
+
+ const _v3A$4$1 = new THREE__namespace.Vector3();
+ const _v3B$2$1 = new THREE__namespace.Vector3();
+ const _quatA$5 = new THREE__namespace.Quaternion();
+ class VRMHumanoidHelper extends THREE__namespace.Group {
+ constructor(humanoid) {
+ super();
+ this.vrmHumanoid = humanoid;
+ this._boneAxesMap = new Map();
+ Object.values(humanoid.humanBones).forEach((bone) => {
+ const helper = new THREE__namespace.AxesHelper(1.0);
+ helper.matrixAutoUpdate = false;
+ helper.material.depthTest = false;
+ helper.material.depthWrite = false;
+ this.add(helper);
+ this._boneAxesMap.set(bone, helper);
+ });
+ }
+ dispose() {
+ Array.from(this._boneAxesMap.values()).forEach((axes) => {
+ axes.geometry.dispose();
+ axes.material.dispose();
+ });
+ }
+ updateMatrixWorld(force) {
+ Array.from(this._boneAxesMap.entries()).forEach(([bone, axes]) => {
+ bone.node.updateWorldMatrix(true, false);
+ bone.node.matrixWorld.decompose(_v3A$4$1, _quatA$5, _v3B$2$1);
+ const scale = _v3A$4$1.set(0.1, 0.1, 0.1).divide(_v3B$2$1);
+ axes.matrix.copy(bone.node.matrixWorld).scale(scale);
+ });
+ super.updateMatrixWorld(force);
+ }
+ }
+
+ /* eslint-disable @typescript-eslint/naming-convention */
+ /**
+ * The list of {@link VRMHumanBoneName}. Dependency aware.
+ */
+ const VRMHumanBoneList = [
+ 'hips',
+ 'spine',
+ 'chest',
+ 'upperChest',
+ 'neck',
+ 'head',
+ 'leftEye',
+ 'rightEye',
+ 'jaw',
+ 'leftUpperLeg',
+ 'leftLowerLeg',
+ 'leftFoot',
+ 'leftToes',
+ 'rightUpperLeg',
+ 'rightLowerLeg',
+ 'rightFoot',
+ 'rightToes',
+ 'leftShoulder',
+ 'leftUpperArm',
+ 'leftLowerArm',
+ 'leftHand',
+ 'rightShoulder',
+ 'rightUpperArm',
+ 'rightLowerArm',
+ 'rightHand',
+ 'leftThumbMetacarpal',
+ 'leftThumbProximal',
+ 'leftThumbDistal',
+ 'leftIndexProximal',
+ 'leftIndexIntermediate',
+ 'leftIndexDistal',
+ 'leftMiddleProximal',
+ 'leftMiddleIntermediate',
+ 'leftMiddleDistal',
+ 'leftRingProximal',
+ 'leftRingIntermediate',
+ 'leftRingDistal',
+ 'leftLittleProximal',
+ 'leftLittleIntermediate',
+ 'leftLittleDistal',
+ 'rightThumbMetacarpal',
+ 'rightThumbProximal',
+ 'rightThumbDistal',
+ 'rightIndexProximal',
+ 'rightIndexIntermediate',
+ 'rightIndexDistal',
+ 'rightMiddleProximal',
+ 'rightMiddleIntermediate',
+ 'rightMiddleDistal',
+ 'rightRingProximal',
+ 'rightRingIntermediate',
+ 'rightRingDistal',
+ 'rightLittleProximal',
+ 'rightLittleIntermediate',
+ 'rightLittleDistal',
+ ];
+
+ /* eslint-disable @typescript-eslint/naming-convention */
+ /**
+ * The names of {@link VRMHumanoid} bone names.
+ *
+ * Ref: https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_vrm-1.0/humanoid.md
+ */
+ const VRMHumanBoneName = {
+ Hips: 'hips',
+ Spine: 'spine',
+ Chest: 'chest',
+ UpperChest: 'upperChest',
+ Neck: 'neck',
+ Head: 'head',
+ LeftEye: 'leftEye',
+ RightEye: 'rightEye',
+ Jaw: 'jaw',
+ LeftUpperLeg: 'leftUpperLeg',
+ LeftLowerLeg: 'leftLowerLeg',
+ LeftFoot: 'leftFoot',
+ LeftToes: 'leftToes',
+ RightUpperLeg: 'rightUpperLeg',
+ RightLowerLeg: 'rightLowerLeg',
+ RightFoot: 'rightFoot',
+ RightToes: 'rightToes',
+ LeftShoulder: 'leftShoulder',
+ LeftUpperArm: 'leftUpperArm',
+ LeftLowerArm: 'leftLowerArm',
+ LeftHand: 'leftHand',
+ RightShoulder: 'rightShoulder',
+ RightUpperArm: 'rightUpperArm',
+ RightLowerArm: 'rightLowerArm',
+ RightHand: 'rightHand',
+ LeftThumbMetacarpal: 'leftThumbMetacarpal',
+ LeftThumbProximal: 'leftThumbProximal',
+ LeftThumbDistal: 'leftThumbDistal',
+ LeftIndexProximal: 'leftIndexProximal',
+ LeftIndexIntermediate: 'leftIndexIntermediate',
+ LeftIndexDistal: 'leftIndexDistal',
+ LeftMiddleProximal: 'leftMiddleProximal',
+ LeftMiddleIntermediate: 'leftMiddleIntermediate',
+ LeftMiddleDistal: 'leftMiddleDistal',
+ LeftRingProximal: 'leftRingProximal',
+ LeftRingIntermediate: 'leftRingIntermediate',
+ LeftRingDistal: 'leftRingDistal',
+ LeftLittleProximal: 'leftLittleProximal',
+ LeftLittleIntermediate: 'leftLittleIntermediate',
+ LeftLittleDistal: 'leftLittleDistal',
+ RightThumbMetacarpal: 'rightThumbMetacarpal',
+ RightThumbProximal: 'rightThumbProximal',
+ RightThumbDistal: 'rightThumbDistal',
+ RightIndexProximal: 'rightIndexProximal',
+ RightIndexIntermediate: 'rightIndexIntermediate',
+ RightIndexDistal: 'rightIndexDistal',
+ RightMiddleProximal: 'rightMiddleProximal',
+ RightMiddleIntermediate: 'rightMiddleIntermediate',
+ RightMiddleDistal: 'rightMiddleDistal',
+ RightRingProximal: 'rightRingProximal',
+ RightRingIntermediate: 'rightRingIntermediate',
+ RightRingDistal: 'rightRingDistal',
+ RightLittleProximal: 'rightLittleProximal',
+ RightLittleIntermediate: 'rightLittleIntermediate',
+ RightLittleDistal: 'rightLittleDistal',
+ };
+
+ /* eslint-disable @typescript-eslint/naming-convention */
+ /**
+ * An object that maps from {@link VRMHumanBoneName} to its parent {@link VRMHumanBoneName}.
+ *
+ * Ref: https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_vrm-1.0/humanoid.md
+ */
+ const VRMHumanBoneParentMap = {
+ hips: null,
+ spine: 'hips',
+ chest: 'spine',
+ upperChest: 'chest',
+ neck: 'upperChest',
+ head: 'neck',
+ leftEye: 'head',
+ rightEye: 'head',
+ jaw: 'head',
+ leftUpperLeg: 'hips',
+ leftLowerLeg: 'leftUpperLeg',
+ leftFoot: 'leftLowerLeg',
+ leftToes: 'leftFoot',
+ rightUpperLeg: 'hips',
+ rightLowerLeg: 'rightUpperLeg',
+ rightFoot: 'rightLowerLeg',
+ rightToes: 'rightFoot',
+ leftShoulder: 'upperChest',
+ leftUpperArm: 'leftShoulder',
+ leftLowerArm: 'leftUpperArm',
+ leftHand: 'leftLowerArm',
+ rightShoulder: 'upperChest',
+ rightUpperArm: 'rightShoulder',
+ rightLowerArm: 'rightUpperArm',
+ rightHand: 'rightLowerArm',
+ leftThumbMetacarpal: 'leftHand',
+ leftThumbProximal: 'leftThumbMetacarpal',
+ leftThumbDistal: 'leftThumbProximal',
+ leftIndexProximal: 'leftHand',
+ leftIndexIntermediate: 'leftIndexProximal',
+ leftIndexDistal: 'leftIndexIntermediate',
+ leftMiddleProximal: 'leftHand',
+ leftMiddleIntermediate: 'leftMiddleProximal',
+ leftMiddleDistal: 'leftMiddleIntermediate',
+ leftRingProximal: 'leftHand',
+ leftRingIntermediate: 'leftRingProximal',
+ leftRingDistal: 'leftRingIntermediate',
+ leftLittleProximal: 'leftHand',
+ leftLittleIntermediate: 'leftLittleProximal',
+ leftLittleDistal: 'leftLittleIntermediate',
+ rightThumbMetacarpal: 'rightHand',
+ rightThumbProximal: 'rightThumbMetacarpal',
+ rightThumbDistal: 'rightThumbProximal',
+ rightIndexProximal: 'rightHand',
+ rightIndexIntermediate: 'rightIndexProximal',
+ rightIndexDistal: 'rightIndexIntermediate',
+ rightMiddleProximal: 'rightHand',
+ rightMiddleIntermediate: 'rightMiddleProximal',
+ rightMiddleDistal: 'rightMiddleIntermediate',
+ rightRingProximal: 'rightHand',
+ rightRingIntermediate: 'rightRingProximal',
+ rightRingDistal: 'rightRingIntermediate',
+ rightLittleProximal: 'rightHand',
+ rightLittleIntermediate: 'rightLittleProximal',
+ rightLittleDistal: 'rightLittleIntermediate',
+ };
+
+ /**
+ * A compat function for `Quaternion.invert()` / `Quaternion.inverse()`.
+ * `Quaternion.invert()` is introduced in r123 and `Quaternion.inverse()` emits a warning.
+ * We are going to use this compat for a while.
+ * @param target A target quaternion
+ */
+ function quatInvertCompat$1(target) {
+ if (target.invert) {
+ target.invert();
+ }
+ else {
+ target.inverse();
+ }
+ return target;
+ }
+
+ const _v3A$3$2 = new THREE__namespace.Vector3();
+ const _quatA$4 = new THREE__namespace.Quaternion();
+ /**
+ * A class represents the Rig of a VRM.
+ */
+ class VRMRig {
+ /**
+ * Create a new {@link VRMHumanoid}.
+ * @param humanBones A {@link VRMHumanBones} contains all the bones of the new humanoid
+ */
+ constructor(humanBones) {
+ this.humanBones = humanBones;
+ this.restPose = this.getAbsolutePose();
+ }
+ /**
+ * Return the current absolute pose of this humanoid as a {@link VRMPose}.
+ * Note that the output result will contain initial state of the VRM and not compatible between different models.
+ * You might want to use {@link getPose} instead.
+ */
+ getAbsolutePose() {
+ const pose = {};
+ Object.keys(this.humanBones).forEach((vrmBoneNameString) => {
+ const vrmBoneName = vrmBoneNameString;
+ const node = this.getBoneNode(vrmBoneName);
+ // Ignore when there are no bone on the VRMHumanoid
+ if (!node) {
+ return;
+ }
+ // Get the position / rotation from the node
+ _v3A$3$2.copy(node.position);
+ _quatA$4.copy(node.quaternion);
+ // Convert to raw arrays
+ pose[vrmBoneName] = {
+ position: _v3A$3$2.toArray(),
+ rotation: _quatA$4.toArray(),
+ };
+ });
+ return pose;
+ }
+ /**
+ * Return the current pose of this humanoid as a {@link VRMPose}.
+ *
+ * Each transform is a local transform relative from rest pose (T-pose).
+ */
+ getPose() {
+ const pose = {};
+ Object.keys(this.humanBones).forEach((boneNameString) => {
+ const boneName = boneNameString;
+ const node = this.getBoneNode(boneName);
+ // Ignore when there are no bone on the VRMHumanoid
+ if (!node) {
+ return;
+ }
+ // Take a diff from restPose
+ _v3A$3$2.set(0, 0, 0);
+ _quatA$4.identity();
+ const restState = this.restPose[boneName];
+ if (restState === null || restState === void 0 ? void 0 : restState.position) {
+ _v3A$3$2.fromArray(restState.position).negate();
+ }
+ if (restState === null || restState === void 0 ? void 0 : restState.rotation) {
+ quatInvertCompat$1(_quatA$4.fromArray(restState.rotation));
+ }
+ // Get the position / rotation from the node
+ _v3A$3$2.add(node.position);
+ _quatA$4.premultiply(node.quaternion);
+ // Convert to raw arrays
+ pose[boneName] = {
+ position: _v3A$3$2.toArray(),
+ rotation: _quatA$4.toArray(),
+ };
+ });
+ return pose;
+ }
+ /**
+ * Let the humanoid do a specified pose.
+ *
+ * Each transform have to be a local transform relative from rest pose (T-pose).
+ * You can pass what you got from {@link getPose}.
+ *
+ * @param poseObject A [[VRMPose]] that represents a single pose
+ */
+ setPose(poseObject) {
+ Object.entries(poseObject).forEach(([boneNameString, state]) => {
+ const boneName = boneNameString;
+ const node = this.getBoneNode(boneName);
+ // Ignore when there are no bone that is defined in the pose on the VRMHumanoid
+ if (!node) {
+ return;
+ }
+ const restState = this.restPose[boneName];
+ if (!restState) {
+ // It's very unlikely. Possibly a bug
+ return;
+ }
+ // Apply the state to the actual bone
+ if (state === null || state === void 0 ? void 0 : state.position) {
+ node.position.fromArray(state.position);
+ if (restState.position) {
+ node.position.add(_v3A$3$2.fromArray(restState.position));
+ }
+ }
+ if (state === null || state === void 0 ? void 0 : state.rotation) {
+ node.quaternion.fromArray(state.rotation);
+ if (restState.rotation) {
+ node.quaternion.multiply(_quatA$4.fromArray(restState.rotation));
+ }
+ }
+ });
+ }
+ /**
+ * Reset the humanoid to its rest pose.
+ */
+ resetPose() {
+ Object.entries(this.restPose).forEach(([boneName, rest]) => {
+ const node = this.getBoneNode(boneName);
+ if (!node) {
+ return;
+ }
+ if (rest === null || rest === void 0 ? void 0 : rest.position) {
+ node.position.fromArray(rest.position);
+ }
+ if (rest === null || rest === void 0 ? void 0 : rest.rotation) {
+ node.quaternion.fromArray(rest.rotation);
+ }
+ });
+ }
+ /**
+ * Return a bone bound to a specified {@link VRMHumanBoneName}, as a {@link VRMHumanBone}.
+ *
+ * @param name Name of the bone you want
+ */
+ getBone(name) {
+ var _a;
+ return (_a = this.humanBones[name]) !== null && _a !== void 0 ? _a : undefined;
+ }
+ /**
+ * Return a bone bound to a specified {@link VRMHumanBoneName}, as a `THREE.Object3D`.
+ *
+ * @param name Name of the bone you want
+ */
+ getBoneNode(name) {
+ var _a, _b;
+ return (_b = (_a = this.humanBones[name]) === null || _a === void 0 ? void 0 : _a.node) !== null && _b !== void 0 ? _b : null;
+ }
+ }
+
+ const _v3A$2$2 = new THREE__namespace.Vector3();
+ const _quatA$3$1 = new THREE__namespace.Quaternion();
+ const _boneWorldPos = new THREE__namespace.Vector3();
+ /**
+ * A class represents the normalized Rig of a VRM.
+ */
+ class VRMHumanoidRig extends VRMRig {
+ static _setupTransforms(modelRig) {
+ const root = new THREE__namespace.Object3D();
+ root.name = 'VRMHumanoidRig';
+ // store boneWorldPositions and boneWorldRotations
+ const boneWorldPositions = {};
+ const boneWorldRotations = {};
+ const boneRotations = {};
+ VRMHumanBoneList.forEach((boneName) => {
+ const boneNode = modelRig.getBoneNode(boneName);
+ if (boneNode) {
+ const boneWorldPosition = new THREE__namespace.Vector3();
+ const boneWorldRotation = new THREE__namespace.Quaternion();
+ boneNode.updateWorldMatrix(true, false);
+ boneNode.matrixWorld.decompose(boneWorldPosition, boneWorldRotation, _v3A$2$2);
+ boneWorldPositions[boneName] = boneWorldPosition;
+ boneWorldRotations[boneName] = boneWorldRotation;
+ boneRotations[boneName] = boneNode.quaternion.clone();
+ }
+ });
+ // build rig hierarchy + store parentWorldRotations
+ const parentWorldRotations = {};
+ const rigBones = {};
+ VRMHumanBoneList.forEach((boneName) => {
+ var _a;
+ const boneNode = modelRig.getBoneNode(boneName);
+ if (boneNode) {
+ const boneWorldPosition = boneWorldPositions[boneName];
+ // see the nearest parent position
+ let currentBoneName = boneName;
+ let parentWorldPosition;
+ let parentWorldRotation;
+ while (parentWorldPosition == null) {
+ currentBoneName = VRMHumanBoneParentMap[currentBoneName];
+ if (currentBoneName == null) {
+ break;
+ }
+ parentWorldPosition = boneWorldPositions[currentBoneName];
+ parentWorldRotation = boneWorldRotations[currentBoneName];
+ }
+ // add to hierarchy
+ const rigBoneNode = new THREE__namespace.Object3D();
+ rigBoneNode.name = 'Normalized_' + boneNode.name;
+ const parentRigBoneNode = (currentBoneName ? (_a = rigBones[currentBoneName]) === null || _a === void 0 ? void 0 : _a.node : root);
+ parentRigBoneNode.add(rigBoneNode);
+ rigBoneNode.position.copy(boneWorldPosition);
+ if (parentWorldPosition) {
+ rigBoneNode.position.sub(parentWorldPosition);
+ }
+ rigBones[boneName] = { node: rigBoneNode };
+ // store parentWorldRotation
+ parentWorldRotations[boneName] = parentWorldRotation !== null && parentWorldRotation !== void 0 ? parentWorldRotation : new THREE__namespace.Quaternion();
+ }
+ });
+ return {
+ rigBones: rigBones,
+ root,
+ parentWorldRotations,
+ boneRotations,
+ };
+ }
+ constructor(humanoid) {
+ const { rigBones, root, parentWorldRotations, boneRotations } = VRMHumanoidRig._setupTransforms(humanoid);
+ super(rigBones);
+ this.original = humanoid;
+ this.root = root;
+ this._parentWorldRotations = parentWorldRotations;
+ this._boneRotations = boneRotations;
+ }
+ /**
+ * Update this humanoid rig.
+ */
+ update() {
+ VRMHumanBoneList.forEach((boneName) => {
+ const boneNode = this.original.getBoneNode(boneName);
+ if (boneNode != null) {
+ const rigBoneNode = this.getBoneNode(boneName);
+ const parentWorldRotation = this._parentWorldRotations[boneName];
+ const invParentWorldRotation = _quatA$3$1.copy(parentWorldRotation).invert();
+ const boneRotation = this._boneRotations[boneName];
+ boneNode.quaternion
+ .copy(rigBoneNode.quaternion)
+ .multiply(parentWorldRotation)
+ .premultiply(invParentWorldRotation)
+ .multiply(boneRotation);
+ // Move the mass center of the VRM
+ if (boneName === 'hips') {
+ const boneWorldPosition = rigBoneNode.getWorldPosition(_boneWorldPos);
+ boneNode.parent.updateWorldMatrix(true, false);
+ const parentWorldMatrix = boneNode.parent.matrixWorld;
+ const localPosition = boneWorldPosition.applyMatrix4(parentWorldMatrix.invert());
+ boneNode.position.copy(localPosition);
+ }
+ }
+ });
+ }
+ }
+
+ /**
+ * A class represents a humanoid of a VRM.
+ */
+ class VRMHumanoid {
+ /**
+ * @deprecated Deprecated. Use either {@link rawRestPose} or {@link normalizedRestPose} instead.
+ */
+ get restPose() {
+ console.warn('VRMHumanoid: restPose is deprecated. Use either rawRestPose or normalizedRestPose instead.');
+ return this.rawRestPose;
+ }
+ /**
+ * A {@link VRMPose} of its raw human bones that is its default state.
+ * Note that it's not compatible with {@link setRawPose} and {@link getRawPose}, since it contains non-relative values of each local transforms.
+ */
+ get rawRestPose() {
+ return this._rawHumanBones.restPose;
+ }
+ /**
+ * A {@link VRMPose} of its normalized human bones that is its default state.
+ * Note that it's not compatible with {@link setNormalizedPose} and {@link getNormalizedPose}, since it contains non-relative values of each local transforms.
+ */
+ get normalizedRestPose() {
+ return this._normalizedHumanBones.restPose;
+ }
+ /**
+ * A map from {@link VRMHumanBoneName} to raw {@link VRMHumanBone}s.
+ */
+ get humanBones() {
+ // an alias of `rawHumanBones`
+ return this._rawHumanBones.humanBones;
+ }
+ /**
+ * A map from {@link VRMHumanBoneName} to raw {@link VRMHumanBone}s.
+ */
+ get rawHumanBones() {
+ return this._rawHumanBones.humanBones;
+ }
+ /**
+ * A map from {@link VRMHumanBoneName} to normalized {@link VRMHumanBone}s.
+ */
+ get normalizedHumanBones() {
+ return this._normalizedHumanBones.humanBones;
+ }
+ /**
+ * The root of normalized {@link VRMHumanBone}s.
+ */
+ get normalizedHumanBonesRoot() {
+ return this._normalizedHumanBones.root;
+ }
+ /**
+ * Create a new {@link VRMHumanoid}.
+ * @param humanBones A {@link VRMHumanBones} contains all the bones of the new humanoid
+ * @param autoUpdateHumanBones Whether it copies pose from normalizedHumanBones to rawHumanBones on {@link update}. `true` by default.
+ */
+ constructor(humanBones, options) {
+ var _a;
+ this.autoUpdateHumanBones = (_a = options === null || options === void 0 ? void 0 : options.autoUpdateHumanBones) !== null && _a !== void 0 ? _a : true;
+ this._rawHumanBones = new VRMRig(humanBones);
+ this._normalizedHumanBones = new VRMHumanoidRig(this._rawHumanBones);
+ }
+ /**
+ * Copy the given {@link VRMHumanoid} into this one.
+ * @param source The {@link VRMHumanoid} you want to copy
+ * @returns this
+ */
+ copy(source) {
+ this.autoUpdateHumanBones = source.autoUpdateHumanBones;
+ this._rawHumanBones = new VRMRig(source.humanBones);
+ this._normalizedHumanBones = new VRMHumanoidRig(this._rawHumanBones);
+ return this;
+ }
+ /**
+ * Returns a clone of this {@link VRMHumanoid}.
+ * @returns Copied {@link VRMHumanoid}
+ */
+ clone() {
+ return new VRMHumanoid(this.humanBones, { autoUpdateHumanBones: this.autoUpdateHumanBones }).copy(this);
+ }
+ /**
+ * @deprecated Deprecated. Use either {@link getRawAbsolutePose} or {@link getNormalizedAbsolutePose} instead.
+ */
+ getAbsolutePose() {
+ console.warn('VRMHumanoid: getAbsolutePose() is deprecated. Use either getRawAbsolutePose() or getNormalizedAbsolutePose() instead.');
+ return this.getRawAbsolutePose();
+ }
+ /**
+ * Return the current absolute pose of this raw human bones as a {@link VRMPose}.
+ * Note that the output result will contain initial state of the VRM and not compatible between different models.
+ * You might want to use {@link getRawPose} instead.
+ */
+ getRawAbsolutePose() {
+ return this._rawHumanBones.getAbsolutePose();
+ }
+ /**
+ * Return the current absolute pose of this normalized human bones as a {@link VRMPose}.
+ * Note that the output result will contain initial state of the VRM and not compatible between different models.
+ * You might want to use {@link getNormalizedPose} instead.
+ */
+ getNormalizedAbsolutePose() {
+ return this._normalizedHumanBones.getAbsolutePose();
+ }
+ /**
+ * @deprecated Deprecated. Use either {@link getRawPose} or {@link getNormalizedPose} instead.
+ */
+ getPose() {
+ console.warn('VRMHumanoid: getPose() is deprecated. Use either getRawPose() or getNormalizedPose() instead.');
+ return this.getRawPose();
+ }
+ /**
+ * Return the current pose of raw human bones as a {@link VRMPose}.
+ *
+ * Each transform is a local transform relative from rest pose (T-pose).
+ */
+ getRawPose() {
+ return this._rawHumanBones.getPose();
+ }
+ /**
+ * Return the current pose of normalized human bones as a {@link VRMPose}.
+ *
+ * Each transform is a local transform relative from rest pose (T-pose).
+ */
+ getNormalizedPose() {
+ return this._normalizedHumanBones.getPose();
+ }
+ /**
+ * @deprecated Deprecated. Use either {@link setRawPose} or {@link setNormalizedPose} instead.
+ */
+ setPose(poseObject) {
+ console.warn('VRMHumanoid: setPose() is deprecated. Use either setRawPose() or setNormalizedPose() instead.');
+ return this.setRawPose(poseObject);
+ }
+ /**
+ * Let the raw human bones do a specified pose.
+ *
+ * Each transform have to be a local transform relative from rest pose (T-pose).
+ * You can pass what you got from {@link getRawPose}.
+ *
+ * If you are using {@link autoUpdateHumanBones}, you might want to use {@link setNormalizedPose} instead.
+ *
+ * @param poseObject A {@link VRMPose} that represents a single pose
+ */
+ setRawPose(poseObject) {
+ return this._rawHumanBones.setPose(poseObject);
+ }
+ /**
+ * Let the normalized human bones do a specified pose.
+ *
+ * Each transform have to be a local transform relative from rest pose (T-pose).
+ * You can pass what you got from {@link getNormalizedPose}.
+ *
+ * @param poseObject A {@link VRMPose} that represents a single pose
+ */
+ setNormalizedPose(poseObject) {
+ return this._normalizedHumanBones.setPose(poseObject);
+ }
+ /**
+ * @deprecated Deprecated. Use either {@link resetRawPose} or {@link resetNormalizedPose} instead.
+ */
+ resetPose() {
+ console.warn('VRMHumanoid: resetPose() is deprecated. Use either resetRawPose() or resetNormalizedPose() instead.');
+ return this.resetRawPose();
+ }
+ /**
+ * Reset the raw humanoid to its rest pose.
+ *
+ * If you are using {@link autoUpdateHumanBones}, you might want to use {@link resetNormalizedPose} instead.
+ */
+ resetRawPose() {
+ return this._rawHumanBones.resetPose();
+ }
+ /**
+ * Reset the normalized humanoid to its rest pose.
+ */
+ resetNormalizedPose() {
+ return this._normalizedHumanBones.resetPose();
+ }
+ /**
+ * @deprecated Deprecated. Use either {@link getRawBone} or {@link getNormalizedBone} instead.
+ */
+ getBone(name) {
+ console.warn('VRMHumanoid: getBone() is deprecated. Use either getRawBone() or getNormalizedBone() instead.');
+ return this.getRawBone(name);
+ }
+ /**
+ * Return a raw {@link VRMHumanBone} bound to a specified {@link VRMHumanBoneName}.
+ *
+ * @param name Name of the bone you want
+ */
+ getRawBone(name) {
+ return this._rawHumanBones.getBone(name);
+ }
+ /**
+ * Return a normalized {@link VRMHumanBone} bound to a specified {@link VRMHumanBoneName}.
+ *
+ * @param name Name of the bone you want
+ */
+ getNormalizedBone(name) {
+ return this._normalizedHumanBones.getBone(name);
+ }
+ /**
+ * @deprecated Deprecated. Use either {@link getRawBoneNode} or {@link getNormalizedBoneNode} instead.
+ */
+ getBoneNode(name) {
+ console.warn('VRMHumanoid: getBoneNode() is deprecated. Use either getRawBoneNode() or getNormalizedBoneNode() instead.');
+ return this.getRawBoneNode(name);
+ }
+ /**
+ * Return a raw bone as a `THREE.Object3D` bound to a specified {@link VRMHumanBoneName}.
+ *
+ * @param name Name of the bone you want
+ */
+ getRawBoneNode(name) {
+ return this._rawHumanBones.getBoneNode(name);
+ }
+ /**
+ * Return a normalized bone as a `THREE.Object3D` bound to a specified {@link VRMHumanBoneName}.
+ *
+ * @param name Name of the bone you want
+ */
+ getNormalizedBoneNode(name) {
+ return this._normalizedHumanBones.getBoneNode(name);
+ }
+ /**
+ * Update the humanoid component.
+ *
+ * If {@link autoUpdateHumanBones} is `true`, it transfers the pose of normalized human bones to raw human bones.
+ */
+ update() {
+ if (this.autoUpdateHumanBones) {
+ this._normalizedHumanBones.update();
+ }
+ }
+ }
+
+ /* eslint-disable @typescript-eslint/naming-convention */
+ const VRMRequiredHumanBoneName = {
+ Hips: 'hips',
+ Spine: 'spine',
+ Head: 'head',
+ LeftUpperLeg: 'leftUpperLeg',
+ LeftLowerLeg: 'leftLowerLeg',
+ LeftFoot: 'leftFoot',
+ RightUpperLeg: 'rightUpperLeg',
+ RightLowerLeg: 'rightLowerLeg',
+ RightFoot: 'rightFoot',
+ LeftUpperArm: 'leftUpperArm',
+ LeftLowerArm: 'leftLowerArm',
+ LeftHand: 'leftHand',
+ RightUpperArm: 'rightUpperArm',
+ RightLowerArm: 'rightLowerArm',
+ RightHand: 'rightHand',
+ };
+
+ /**
+ * Possible spec versions it recognizes.
+ */
+ const POSSIBLE_SPEC_VERSIONS$2$1 = new Set(['1.0', '1.0-beta']);
+ /**
+ * A map from old thumb bone names to new thumb bone names
+ */
+ const thumbBoneNameMap = {
+ leftThumbProximal: 'leftThumbMetacarpal',
+ leftThumbIntermediate: 'leftThumbProximal',
+ rightThumbProximal: 'rightThumbMetacarpal',
+ rightThumbIntermediate: 'rightThumbProximal',
+ };
+ /**
+ * A plugin of GLTFLoader that imports a {@link VRMHumanoid} from a VRM extension of a GLTF.
+ */
+ class VRMHumanoidLoaderPlugin {
+ get name() {
+ // We should use the extension name instead but we have multiple plugins for an extension...
+ return 'VRMHumanoidLoaderPlugin';
+ }
+ constructor(parser, options) {
+ this.parser = parser;
+ this.helperRoot = options === null || options === void 0 ? void 0 : options.helperRoot;
+ this.autoUpdateHumanBones = options === null || options === void 0 ? void 0 : options.autoUpdateHumanBones;
+ }
+ afterRoot(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ gltf.userData.vrmHumanoid = yield this._import(gltf);
+ });
+ }
+ /**
+ * Import a {@link VRMHumanoid} from a VRM.
+ *
+ * @param gltf A parsed result of GLTF taken from GLTFLoader
+ */
+ _import(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const v1Result = yield this._v1Import(gltf);
+ if (v1Result) {
+ return v1Result;
+ }
+ const v0Result = yield this._v0Import(gltf);
+ if (v0Result) {
+ return v0Result;
+ }
+ return null;
+ });
+ }
+ _v1Import(gltf) {
+ var _a, _b;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const isVRMUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf('VRMC_vrm')) !== -1;
+ if (!isVRMUsed) {
+ return null;
+ }
+ const extension = (_b = json.extensions) === null || _b === void 0 ? void 0 : _b['VRMC_vrm'];
+ if (!extension) {
+ return null;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS$2$1.has(specVersion)) {
+ console.warn(`VRMHumanoidLoaderPlugin: Unknown VRMC_vrm specVersion "${specVersion}"`);
+ return null;
+ }
+ const schemaHumanoid = extension.humanoid;
+ if (!schemaHumanoid) {
+ return null;
+ }
+ /**
+ * compat: 1.0-beta thumb bone names
+ *
+ * `true` if `leftThumbIntermediate` or `rightThumbIntermediate` exists
+ */
+ const existsPreviousThumbName = schemaHumanoid.humanBones.leftThumbIntermediate != null ||
+ schemaHumanoid.humanBones.rightThumbIntermediate != null;
+ const humanBones = {};
+ if (schemaHumanoid.humanBones != null) {
+ yield Promise.all(Object.entries(schemaHumanoid.humanBones).map(([boneNameString, schemaHumanBone]) => __awaiter$6(this, void 0, void 0, function* () {
+ let boneName = boneNameString;
+ const index = schemaHumanBone.node;
+ // compat: 1.0-beta previous thumb bone names
+ if (existsPreviousThumbName) {
+ const thumbBoneName = thumbBoneNameMap[boneName];
+ if (thumbBoneName != null) {
+ boneName = thumbBoneName;
+ }
+ }
+ const node = yield this.parser.getDependency('node', index);
+ // if the specified node does not exist, emit a warning
+ if (node == null) {
+ console.warn(`A glTF node bound to the humanoid bone ${boneName} (index = ${index}) does not exist`);
+ return;
+ }
+ // set to the `humanBones`
+ humanBones[boneName] = { node };
+ })));
+ }
+ const humanoid = new VRMHumanoid(this._ensureRequiredBonesExist(humanBones), {
+ autoUpdateHumanBones: this.autoUpdateHumanBones,
+ });
+ gltf.scene.add(humanoid.normalizedHumanBonesRoot);
+ if (this.helperRoot) {
+ const helper = new VRMHumanoidHelper(humanoid);
+ this.helperRoot.add(helper);
+ helper.renderOrder = this.helperRoot.renderOrder;
+ }
+ return humanoid;
+ });
+ }
+ _v0Import(gltf) {
+ var _a;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ const vrmExt = (_a = json.extensions) === null || _a === void 0 ? void 0 : _a.VRM;
+ if (!vrmExt) {
+ return null;
+ }
+ const schemaHumanoid = vrmExt.humanoid;
+ if (!schemaHumanoid) {
+ return null;
+ }
+ const humanBones = {};
+ if (schemaHumanoid.humanBones != null) {
+ yield Promise.all(schemaHumanoid.humanBones.map((bone) => __awaiter$6(this, void 0, void 0, function* () {
+ const boneName = bone.bone;
+ const index = bone.node;
+ if (boneName == null || index == null) {
+ return;
+ }
+ const node = yield this.parser.getDependency('node', index);
+ // if the specified node does not exist, emit a warning
+ if (node == null) {
+ console.warn(`A glTF node bound to the humanoid bone ${boneName} (index = ${index}) does not exist`);
+ return;
+ }
+ // map to new bone name
+ const thumbBoneName = thumbBoneNameMap[boneName];
+ const newBoneName = (thumbBoneName !== null && thumbBoneName !== void 0 ? thumbBoneName : boneName);
+ // v0 VRMs might have a multiple nodes attached to a single bone...
+ // so if there already is an entry in the `humanBones`, show a warning and ignore it
+ if (humanBones[newBoneName] != null) {
+ console.warn(`Multiple bone entries for ${newBoneName} detected (index = ${index}), ignoring duplicated entries.`);
+ return;
+ }
+ // set to the `humanBones`
+ humanBones[newBoneName] = { node };
+ })));
+ }
+ const humanoid = new VRMHumanoid(this._ensureRequiredBonesExist(humanBones), {
+ autoUpdateHumanBones: this.autoUpdateHumanBones,
+ });
+ gltf.scene.add(humanoid.normalizedHumanBonesRoot);
+ if (this.helperRoot) {
+ const helper = new VRMHumanoidHelper(humanoid);
+ this.helperRoot.add(helper);
+ helper.renderOrder = this.helperRoot.renderOrder;
+ }
+ return humanoid;
+ });
+ }
+ /**
+ * Ensure required bones exist in given human bones.
+ * @param humanBones Human bones
+ * @returns Human bones, no longer partial!
+ */
+ _ensureRequiredBonesExist(humanBones) {
+ // ensure required bones exist
+ const missingRequiredBones = Object.values(VRMRequiredHumanBoneName).filter((requiredBoneName) => humanBones[requiredBoneName] == null);
+ // throw an error if there are missing bones
+ if (missingRequiredBones.length > 0) {
+ throw new Error(`VRMHumanoidLoaderPlugin: These humanoid bones are required but not exist: ${missingRequiredBones.join(', ')}`);
+ }
+ return humanBones;
+ }
+ }
+
+ class FanBufferGeometry extends THREE__namespace.BufferGeometry {
+ constructor() {
+ super();
+ this._currentTheta = 0;
+ this._currentRadius = 0;
+ this.theta = 0.0;
+ this.radius = 0.0;
+ this._currentTheta = 0.0;
+ this._currentRadius = 0.0;
+ this._attrPos = new THREE__namespace.BufferAttribute(new Float32Array(65 * 3), 3);
+ this.setAttribute('position', this._attrPos);
+ this._attrIndex = new THREE__namespace.BufferAttribute(new Uint16Array(3 * 63), 1);
+ this.setIndex(this._attrIndex);
+ this._buildIndex();
+ this.update();
+ }
+ update() {
+ let shouldUpdateGeometry = false;
+ if (this._currentTheta !== this.theta) {
+ this._currentTheta = this.theta;
+ shouldUpdateGeometry = true;
+ }
+ if (this._currentRadius !== this.radius) {
+ this._currentRadius = this.radius;
+ shouldUpdateGeometry = true;
+ }
+ if (shouldUpdateGeometry) {
+ this._buildPosition();
+ }
+ }
+ _buildPosition() {
+ this._attrPos.setXYZ(0, 0.0, 0.0, 0.0);
+ for (let i = 0; i < 64; i++) {
+ const t = (i / 63.0) * this._currentTheta;
+ this._attrPos.setXYZ(i + 1, this._currentRadius * Math.sin(t), 0.0, this._currentRadius * Math.cos(t));
+ }
+ this._attrPos.needsUpdate = true;
+ }
+ _buildIndex() {
+ for (let i = 0; i < 63; i++) {
+ this._attrIndex.setXYZ(i * 3, 0, i + 1, i + 2);
+ }
+ this._attrIndex.needsUpdate = true;
+ }
+ }
+
+ class LineAndSphereBufferGeometry extends THREE__namespace.BufferGeometry {
+ constructor() {
+ super();
+ this.radius = 0.0;
+ this._currentRadius = 0.0;
+ this.tail = new THREE__namespace.Vector3();
+ this._currentTail = new THREE__namespace.Vector3();
+ this._attrPos = new THREE__namespace.BufferAttribute(new Float32Array(294), 3);
+ this.setAttribute('position', this._attrPos);
+ this._attrIndex = new THREE__namespace.BufferAttribute(new Uint16Array(194), 1);
+ this.setIndex(this._attrIndex);
+ this._buildIndex();
+ this.update();
+ }
+ update() {
+ let shouldUpdateGeometry = false;
+ if (this._currentRadius !== this.radius) {
+ this._currentRadius = this.radius;
+ shouldUpdateGeometry = true;
+ }
+ if (!this._currentTail.equals(this.tail)) {
+ this._currentTail.copy(this.tail);
+ shouldUpdateGeometry = true;
+ }
+ if (shouldUpdateGeometry) {
+ this._buildPosition();
+ }
+ }
+ _buildPosition() {
+ for (let i = 0; i < 32; i++) {
+ const t = (i / 16.0) * Math.PI;
+ this._attrPos.setXYZ(i, Math.cos(t), Math.sin(t), 0.0);
+ this._attrPos.setXYZ(32 + i, 0.0, Math.cos(t), Math.sin(t));
+ this._attrPos.setXYZ(64 + i, Math.sin(t), 0.0, Math.cos(t));
+ }
+ this.scale(this._currentRadius, this._currentRadius, this._currentRadius);
+ this.translate(this._currentTail.x, this._currentTail.y, this._currentTail.z);
+ this._attrPos.setXYZ(96, 0, 0, 0);
+ this._attrPos.setXYZ(97, this._currentTail.x, this._currentTail.y, this._currentTail.z);
+ this._attrPos.needsUpdate = true;
+ }
+ _buildIndex() {
+ for (let i = 0; i < 32; i++) {
+ const i1 = (i + 1) % 32;
+ this._attrIndex.setXY(i * 2, i, i1);
+ this._attrIndex.setXY(64 + i * 2, 32 + i, 32 + i1);
+ this._attrIndex.setXY(128 + i * 2, 64 + i, 64 + i1);
+ }
+ this._attrIndex.setXY(192, 96, 97);
+ this._attrIndex.needsUpdate = true;
+ }
+ }
+
+ const _quatA$2$1 = new THREE__namespace.Quaternion();
+ const _quatB$2$1 = new THREE__namespace.Quaternion();
+ const _v3A$1$2 = new THREE__namespace.Vector3();
+ const _v3B$1$2 = new THREE__namespace.Vector3();
+ const SQRT_2_OVER_2 = Math.sqrt(2.0) / 2.0;
+ const QUAT_XY_CW90 = new THREE__namespace.Quaternion(0, 0, -SQRT_2_OVER_2, SQRT_2_OVER_2);
+ const VEC3_POSITIVE_Y = new THREE__namespace.Vector3(0.0, 1.0, 0.0);
+ class VRMLookAtHelper extends THREE__namespace.Group {
+ constructor(lookAt) {
+ super();
+ this.matrixAutoUpdate = false;
+ this.vrmLookAt = lookAt;
+ {
+ const geometry = new FanBufferGeometry();
+ geometry.radius = 0.5;
+ const material = new THREE__namespace.MeshBasicMaterial({
+ color: 0x00ff00,
+ transparent: true,
+ opacity: 0.5,
+ side: THREE__namespace.DoubleSide,
+ depthTest: false,
+ depthWrite: false,
+ });
+ this._meshPitch = new THREE__namespace.Mesh(geometry, material);
+ this.add(this._meshPitch);
+ }
+ {
+ const geometry = new FanBufferGeometry();
+ geometry.radius = 0.5;
+ const material = new THREE__namespace.MeshBasicMaterial({
+ color: 0xff0000,
+ transparent: true,
+ opacity: 0.5,
+ side: THREE__namespace.DoubleSide,
+ depthTest: false,
+ depthWrite: false,
+ });
+ this._meshYaw = new THREE__namespace.Mesh(geometry, material);
+ this.add(this._meshYaw);
+ }
+ {
+ const geometry = new LineAndSphereBufferGeometry();
+ geometry.radius = 0.1;
+ const material = new THREE__namespace.LineBasicMaterial({
+ color: 0xffffff,
+ depthTest: false,
+ depthWrite: false,
+ });
+ this._lineTarget = new THREE__namespace.LineSegments(geometry, material);
+ this._lineTarget.frustumCulled = false;
+ this.add(this._lineTarget);
+ }
+ }
+ dispose() {
+ this._meshYaw.geometry.dispose();
+ this._meshYaw.material.dispose();
+ this._meshPitch.geometry.dispose();
+ this._meshPitch.material.dispose();
+ this._lineTarget.geometry.dispose();
+ this._lineTarget.material.dispose();
+ }
+ updateMatrixWorld(force) {
+ // update geometries
+ const yaw = THREE__namespace.MathUtils.DEG2RAD * this.vrmLookAt.yaw;
+ this._meshYaw.geometry.theta = yaw;
+ this._meshYaw.geometry.update();
+ const pitch = THREE__namespace.MathUtils.DEG2RAD * this.vrmLookAt.pitch;
+ this._meshPitch.geometry.theta = pitch;
+ this._meshPitch.geometry.update();
+ // get world position and quaternion
+ this.vrmLookAt.getLookAtWorldPosition(_v3A$1$2);
+ this.vrmLookAt.getLookAtWorldQuaternion(_quatA$2$1);
+ // calculate rotation using faceFront
+ _quatA$2$1.multiply(this.vrmLookAt.getFaceFrontQuaternion(_quatB$2$1));
+ // set transform to meshes
+ this._meshYaw.position.copy(_v3A$1$2);
+ this._meshYaw.quaternion.copy(_quatA$2$1);
+ this._meshPitch.position.copy(_v3A$1$2);
+ this._meshPitch.quaternion.copy(_quatA$2$1);
+ this._meshPitch.quaternion.multiply(_quatB$2$1.setFromAxisAngle(VEC3_POSITIVE_Y, yaw));
+ this._meshPitch.quaternion.multiply(QUAT_XY_CW90);
+ // update target line and sphere
+ const { target, autoUpdate } = this.vrmLookAt;
+ if (target != null && autoUpdate) {
+ target.getWorldPosition(_v3B$1$2).sub(_v3A$1$2);
+ this._lineTarget.geometry.tail.copy(_v3B$1$2);
+ this._lineTarget.geometry.update();
+ this._lineTarget.position.copy(_v3A$1$2);
+ }
+ // apply transform to meshes
+ super.updateMatrixWorld(force);
+ }
+ }
+
+ const _position = new THREE__namespace.Vector3();
+ const _scale = new THREE__namespace.Vector3();
+ /**
+ * A replacement of `Object3D.getWorldQuaternion`.
+ * Extract the world quaternion of an object from its world space matrix, without calling `Object3D.updateWorldMatrix`.
+ * Use this when you're sure that the world matrix is up-to-date.
+ *
+ * @param object The object
+ * @param out A target quaternion
+ */
+ function getWorldQuaternionLite(object, out) {
+ object.matrixWorld.decompose(_position, out, _scale);
+ return out;
+ }
+
+ /**
+ * Calculate azimuth / altitude angles from a vector.
+ *
+ * This returns a difference of angles from (1, 0, 0).
+ * Azimuth represents an angle around Y axis.
+ * Altitude represents an angle around Z axis.
+ * It is rotated in intrinsic Y-Z order.
+ *
+ * @param vector The vector
+ * @returns A tuple contains two angles, `[ azimuth, altitude ]`
+ */
+ function calcAzimuthAltitude(vector) {
+ return [Math.atan2(-vector.z, vector.x), Math.atan2(vector.y, Math.sqrt(vector.x * vector.x + vector.z * vector.z))];
+ }
+
+ /**
+ * Make sure the angle is within -PI to PI.
+ *
+ * @example
+ * ```js
+ * sanitizeAngle(1.5 * Math.PI) // -0.5 * PI
+ * ```
+ *
+ * @param angle An input angle
+ */
+ function sanitizeAngle(angle) {
+ const roundTurn = Math.round(angle / 2.0 / Math.PI);
+ return angle - 2.0 * Math.PI * roundTurn;
+ }
+
+ const VEC3_POSITIVE_Z$1 = new THREE__namespace.Vector3(0.0, 0.0, 1.0);
+ const _v3A$6 = new THREE__namespace.Vector3();
+ const _v3B$3 = new THREE__namespace.Vector3();
+ const _v3C$2 = new THREE__namespace.Vector3();
+ const _quatA$1$1 = new THREE__namespace.Quaternion();
+ const _quatB$1$1 = new THREE__namespace.Quaternion();
+ const _quatC$1 = new THREE__namespace.Quaternion();
+ const _quatD = new THREE__namespace.Quaternion();
+ const _eulerA$1 = new THREE__namespace.Euler();
+ /**
+ * A class controls eye gaze movements of a VRM.
+ */
+ class VRMLookAt {
+ /**
+ * Its current angle around Y axis, in degree.
+ */
+ get yaw() {
+ return this._yaw;
+ }
+ /**
+ * Its current angle around Y axis, in degree.
+ */
+ set yaw(value) {
+ this._yaw = value;
+ this._needsUpdate = true;
+ }
+ /**
+ * Its current angle around X axis, in degree.
+ */
+ get pitch() {
+ return this._pitch;
+ }
+ /**
+ * Its current angle around X axis, in degree.
+ */
+ set pitch(value) {
+ this._pitch = value;
+ this._needsUpdate = true;
+ }
+ /**
+ * @deprecated Use {@link getEuler} instead.
+ */
+ get euler() {
+ console.warn('VRMLookAt: euler is deprecated. use getEuler() instead.');
+ return this.getEuler(new THREE__namespace.Euler());
+ }
+ /**
+ * Create a new {@link VRMLookAt}.
+ *
+ * @param humanoid A {@link VRMHumanoid}
+ * @param applier A {@link VRMLookAtApplier}
+ */
+ constructor(humanoid, applier) {
+ /**
+ * The origin of LookAt. Position offset from the head bone.
+ */
+ this.offsetFromHeadBone = new THREE__namespace.Vector3();
+ /**
+ * If this is true, the LookAt will be updated automatically by calling {@link update}, towarding the direction to the {@link target}.
+ * `true` by default.
+ *
+ * See also: {@link target}
+ */
+ this.autoUpdate = true;
+ /**
+ * The front direction of the face.
+ * Intended to be used for VRM 0.0 compat (VRM 0.0 models are facing Z- instead of Z+).
+ * You usually don't want to touch this.
+ */
+ this.faceFront = new THREE__namespace.Vector3(0.0, 0.0, 1.0);
+ this.humanoid = humanoid;
+ this.applier = applier;
+ this._yaw = 0.0;
+ this._pitch = 0.0;
+ this._needsUpdate = true;
+ this._restHeadWorldQuaternion = this.getLookAtWorldQuaternion(new THREE__namespace.Quaternion());
+ }
+ /**
+ * Get its yaw-pitch angles as an `Euler`.
+ * Does NOT consider {@link faceFront}; it returns `Euler(0, 0, 0; "YXZ")` by default regardless of the faceFront value.
+ *
+ * @param target The target euler
+ */
+ getEuler(target) {
+ return target.set(THREE__namespace.MathUtils.DEG2RAD * this._pitch, THREE__namespace.MathUtils.DEG2RAD * this._yaw, 0.0, 'YXZ');
+ }
+ /**
+ * Copy the given {@link VRMLookAt} into this one.
+ * {@link humanoid} must be same as the source one.
+ * {@link applier} will reference the same instance as the source one.
+ * @param source The {@link VRMLookAt} you want to copy
+ * @returns this
+ */
+ copy(source) {
+ if (this.humanoid !== source.humanoid) {
+ throw new Error('VRMLookAt: humanoid must be same in order to copy');
+ }
+ this.offsetFromHeadBone.copy(source.offsetFromHeadBone);
+ this.applier = source.applier;
+ this.autoUpdate = source.autoUpdate;
+ this.target = source.target;
+ this.faceFront.copy(source.faceFront);
+ return this;
+ }
+ /**
+ * Returns a clone of this {@link VRMLookAt}.
+ * Note that {@link humanoid} and {@link applier} will reference the same instance as this one.
+ * @returns Copied {@link VRMLookAt}
+ */
+ clone() {
+ return new VRMLookAt(this.humanoid, this.applier).copy(this);
+ }
+ /**
+ * Reset the lookAt direction (yaw and pitch) to the initial direction.
+ */
+ reset() {
+ this._yaw = 0.0;
+ this._pitch = 0.0;
+ this._needsUpdate = true;
+ }
+ /**
+ * Get its lookAt position in world coordinate.
+ *
+ * @param target A target `THREE.Vector3`
+ */
+ getLookAtWorldPosition(target) {
+ const head = this.humanoid.getRawBoneNode('head');
+ return target.copy(this.offsetFromHeadBone).applyMatrix4(head.matrixWorld);
+ }
+ /**
+ * Get its lookAt rotation in world coordinate.
+ * Does NOT consider {@link faceFront}.
+ *
+ * @param target A target `THREE.Quaternion`
+ */
+ getLookAtWorldQuaternion(target) {
+ const head = this.humanoid.getRawBoneNode('head');
+ return getWorldQuaternionLite(head, target);
+ }
+ /**
+ * Get a quaternion that rotates the +Z unit vector of the humanoid Head to the {@link faceFront} direction.
+ *
+ * @param target A target `THREE.Quaternion`
+ */
+ getFaceFrontQuaternion(target) {
+ if (this.faceFront.distanceToSquared(VEC3_POSITIVE_Z$1) < 0.01) {
+ return target.copy(this._restHeadWorldQuaternion).invert();
+ }
+ const [faceFrontAzimuth, faceFrontAltitude] = calcAzimuthAltitude(this.faceFront);
+ _eulerA$1.set(0.0, 0.5 * Math.PI + faceFrontAzimuth, faceFrontAltitude, 'YZX');
+ return target.setFromEuler(_eulerA$1).premultiply(_quatD.copy(this._restHeadWorldQuaternion).invert());
+ }
+ /**
+ * Get its LookAt direction in world coordinate.
+ *
+ * @param target A target `THREE.Vector3`
+ */
+ getLookAtWorldDirection(target) {
+ this.getLookAtWorldQuaternion(_quatB$1$1);
+ this.getFaceFrontQuaternion(_quatC$1);
+ return target
+ .copy(VEC3_POSITIVE_Z$1)
+ .applyQuaternion(_quatB$1$1)
+ .applyQuaternion(_quatC$1)
+ .applyEuler(this.getEuler(_eulerA$1));
+ }
+ /**
+ * Set its lookAt target position.
+ *
+ * Note that its result will be instantly overwritten if {@link VRMLookAtHead.autoUpdate} is enabled.
+ *
+ * If you want to track an object continuously, you might want to use {@link target} instead.
+ *
+ * @param position A target position, in world space
+ */
+ lookAt(position) {
+ // Look at direction in local coordinate
+ const headRotDiffInv = _quatA$1$1
+ .copy(this._restHeadWorldQuaternion)
+ .multiply(quatInvertCompat$1(this.getLookAtWorldQuaternion(_quatB$1$1)));
+ const headPos = this.getLookAtWorldPosition(_v3B$3);
+ const lookAtDir = _v3C$2.copy(position).sub(headPos).applyQuaternion(headRotDiffInv).normalize();
+ // calculate angles
+ const [azimuthFrom, altitudeFrom] = calcAzimuthAltitude(this.faceFront);
+ const [azimuthTo, altitudeTo] = calcAzimuthAltitude(lookAtDir);
+ const yaw = sanitizeAngle(azimuthTo - azimuthFrom);
+ const pitch = sanitizeAngle(altitudeFrom - altitudeTo); // spinning (1, 0, 0) CCW around Z axis makes the vector look up, while spinning (0, 0, 1) CCW around X axis makes the vector look down
+ // apply angles
+ this._yaw = THREE__namespace.MathUtils.RAD2DEG * yaw;
+ this._pitch = THREE__namespace.MathUtils.RAD2DEG * pitch;
+ this._needsUpdate = true;
+ }
+ /**
+ * Update the VRMLookAtHead.
+ * If {@link autoUpdate} is enabled, this will make it look at the {@link target}.
+ *
+ * @param delta deltaTime, it isn't used though. You can use the parameter if you want to use this in your own extended {@link VRMLookAt}.
+ */
+ update(delta) {
+ if (this.target != null && this.autoUpdate) {
+ this.lookAt(this.target.getWorldPosition(_v3A$6));
+ }
+ if (this._needsUpdate) {
+ this._needsUpdate = false;
+ this.applier.applyYawPitch(this._yaw, this._pitch);
+ }
+ }
+ }
+ VRMLookAt.EULER_ORDER = 'YXZ'; // yaw-pitch-roll
+
+ const VEC3_POSITIVE_Z = new THREE__namespace.Vector3(0.0, 0.0, 1.0);
+ const _quatA$6 = new THREE__namespace.Quaternion();
+ const _quatB$3 = new THREE__namespace.Quaternion();
+ const _eulerA = new THREE__namespace.Euler(0.0, 0.0, 0.0, 'YXZ');
+ /**
+ * A class that applies eye gaze directions to a VRM.
+ * It will be used by {@link VRMLookAt}.
+ */
+ class VRMLookAtBoneApplier {
+ /**
+ * Create a new {@link VRMLookAtBoneApplier}.
+ *
+ * @param humanoid A {@link VRMHumanoid}
+ * @param rangeMapHorizontalInner A {@link VRMLookAtRangeMap} used for inner transverse direction
+ * @param rangeMapHorizontalOuter A {@link VRMLookAtRangeMap} used for outer transverse direction
+ * @param rangeMapVerticalDown A {@link VRMLookAtRangeMap} used for down direction
+ * @param rangeMapVerticalUp A {@link VRMLookAtRangeMap} used for up direction
+ */
+ constructor(humanoid, rangeMapHorizontalInner, rangeMapHorizontalOuter, rangeMapVerticalDown, rangeMapVerticalUp) {
+ this.humanoid = humanoid;
+ this.rangeMapHorizontalInner = rangeMapHorizontalInner;
+ this.rangeMapHorizontalOuter = rangeMapHorizontalOuter;
+ this.rangeMapVerticalDown = rangeMapVerticalDown;
+ this.rangeMapVerticalUp = rangeMapVerticalUp;
+ this.faceFront = new THREE__namespace.Vector3(0.0, 0.0, 1.0);
+ // set rest quaternions
+ this._restQuatLeftEye = new THREE__namespace.Quaternion();
+ this._restQuatRightEye = new THREE__namespace.Quaternion();
+ this._restLeftEyeParentWorldQuat = new THREE__namespace.Quaternion();
+ this._restRightEyeParentWorldQuat = new THREE__namespace.Quaternion();
+ const leftEye = this.humanoid.getRawBoneNode('leftEye');
+ const rightEye = this.humanoid.getRawBoneNode('rightEye');
+ if (leftEye) {
+ this._restQuatLeftEye.copy(leftEye.quaternion);
+ getWorldQuaternionLite(leftEye.parent, this._restLeftEyeParentWorldQuat);
+ }
+ if (rightEye) {
+ this._restQuatRightEye.copy(rightEye.quaternion);
+ getWorldQuaternionLite(rightEye.parent, this._restRightEyeParentWorldQuat);
+ }
+ }
+ /**
+ * Apply the input angle to its associated VRM model.
+ *
+ * @param yaw Rotation around Y axis, in degree
+ * @param pitch Rotation around X axis, in degree
+ */
+ applyYawPitch(yaw, pitch) {
+ const leftEye = this.humanoid.getRawBoneNode('leftEye');
+ const rightEye = this.humanoid.getRawBoneNode('rightEye');
+ const leftEyeNormalized = this.humanoid.getNormalizedBoneNode('leftEye');
+ const rightEyeNormalized = this.humanoid.getNormalizedBoneNode('rightEye');
+ // left
+ if (leftEye) {
+ if (pitch < 0.0) {
+ _eulerA.x = -THREE__namespace.MathUtils.DEG2RAD * this.rangeMapVerticalDown.map(-pitch);
+ }
+ else {
+ _eulerA.x = THREE__namespace.MathUtils.DEG2RAD * this.rangeMapVerticalUp.map(pitch);
+ }
+ if (yaw < 0.0) {
+ _eulerA.y = -THREE__namespace.MathUtils.DEG2RAD * this.rangeMapHorizontalInner.map(-yaw);
+ }
+ else {
+ _eulerA.y = THREE__namespace.MathUtils.DEG2RAD * this.rangeMapHorizontalOuter.map(yaw);
+ }
+ _quatA$6.setFromEuler(_eulerA);
+ this._getWorldFaceFrontQuat(_quatB$3);
+ // _quatB * _quatA * _quatB^-1
+ // where _quatA is LookAt rotation
+ // and _quatB is worldFaceFrontQuat
+ leftEyeNormalized.quaternion.copy(_quatB$3).multiply(_quatA$6).multiply(_quatB$3.invert());
+ _quatA$6.copy(this._restLeftEyeParentWorldQuat);
+ // _quatA^-1 * leftEyeNormalized.quaternion * _quatA * restQuatLeftEye
+ // where _quatA is restLeftEyeParentWorldQuat
+ leftEye.quaternion
+ .copy(leftEyeNormalized.quaternion)
+ .multiply(_quatA$6)
+ .premultiply(_quatA$6.invert())
+ .multiply(this._restQuatLeftEye);
+ }
+ // right
+ if (rightEye) {
+ if (pitch < 0.0) {
+ _eulerA.x = -THREE__namespace.MathUtils.DEG2RAD * this.rangeMapVerticalDown.map(-pitch);
+ }
+ else {
+ _eulerA.x = THREE__namespace.MathUtils.DEG2RAD * this.rangeMapVerticalUp.map(pitch);
+ }
+ if (yaw < 0.0) {
+ _eulerA.y = -THREE__namespace.MathUtils.DEG2RAD * this.rangeMapHorizontalOuter.map(-yaw);
+ }
+ else {
+ _eulerA.y = THREE__namespace.MathUtils.DEG2RAD * this.rangeMapHorizontalInner.map(yaw);
+ }
+ _quatA$6.setFromEuler(_eulerA);
+ this._getWorldFaceFrontQuat(_quatB$3);
+ // _quatB * _quatA * _quatB^-1
+ // where _quatA is LookAt rotation
+ // and _quatB is worldFaceFrontQuat
+ rightEyeNormalized.quaternion.copy(_quatB$3).multiply(_quatA$6).multiply(_quatB$3.invert());
+ _quatA$6.copy(this._restRightEyeParentWorldQuat);
+ // _quatA^-1 * rightEyeNormalized.quaternion * _quatA * restQuatRightEye
+ // where _quatA is restRightEyeParentWorldQuat
+ rightEye.quaternion
+ .copy(rightEyeNormalized.quaternion)
+ .multiply(_quatA$6)
+ .premultiply(_quatA$6.invert())
+ .multiply(this._restQuatRightEye);
+ }
+ }
+ /**
+ * @deprecated Use {@link applyYawPitch} instead.
+ */
+ lookAt(euler) {
+ console.warn('VRMLookAtBoneApplier: lookAt() is deprecated. use apply() instead.');
+ const yaw = THREE__namespace.MathUtils.RAD2DEG * euler.y;
+ const pitch = THREE__namespace.MathUtils.RAD2DEG * euler.x;
+ this.applyYawPitch(yaw, pitch);
+ }
+ /**
+ * Get a quaternion that rotates the world-space +Z unit vector to the {@link faceFront} direction.
+ *
+ * @param target A target `THREE.Quaternion`
+ */
+ _getWorldFaceFrontQuat(target) {
+ if (this.faceFront.distanceToSquared(VEC3_POSITIVE_Z) < 0.01) {
+ return target.identity();
+ }
+ const [faceFrontAzimuth, faceFrontAltitude] = calcAzimuthAltitude(this.faceFront);
+ _eulerA.set(0.0, 0.5 * Math.PI + faceFrontAzimuth, faceFrontAltitude, 'YZX');
+ return target.setFromEuler(_eulerA);
+ }
+ }
+ /**
+ * Represent its type of applier.
+ */
+ VRMLookAtBoneApplier.type = 'bone';
+
+ /**
+ * A class that applies eye gaze directions to a VRM.
+ * It will be used by {@link VRMLookAt}.
+ */
+ class VRMLookAtExpressionApplier {
+ /**
+ * Create a new {@link VRMLookAtExpressionApplier}.
+ *
+ * @param expressions A {@link VRMExpressionManager}
+ * @param rangeMapHorizontalInner A {@link VRMLookAtRangeMap} used for inner transverse direction
+ * @param rangeMapHorizontalOuter A {@link VRMLookAtRangeMap} used for outer transverse direction
+ * @param rangeMapVerticalDown A {@link VRMLookAtRangeMap} used for down direction
+ * @param rangeMapVerticalUp A {@link VRMLookAtRangeMap} used for up direction
+ */
+ constructor(expressions, rangeMapHorizontalInner, rangeMapHorizontalOuter, rangeMapVerticalDown, rangeMapVerticalUp) {
+ this.expressions = expressions;
+ this.rangeMapHorizontalInner = rangeMapHorizontalInner;
+ this.rangeMapHorizontalOuter = rangeMapHorizontalOuter;
+ this.rangeMapVerticalDown = rangeMapVerticalDown;
+ this.rangeMapVerticalUp = rangeMapVerticalUp;
+ }
+ /**
+ * Apply the input angle to its associated VRM model.
+ *
+ * @param yaw Rotation around Y axis, in degree
+ * @param pitch Rotation around X axis, in degree
+ */
+ applyYawPitch(yaw, pitch) {
+ if (pitch < 0.0) {
+ this.expressions.setValue('lookDown', 0.0);
+ this.expressions.setValue('lookUp', this.rangeMapVerticalUp.map(-pitch));
+ }
+ else {
+ this.expressions.setValue('lookUp', 0.0);
+ this.expressions.setValue('lookDown', this.rangeMapVerticalDown.map(pitch));
+ }
+ if (yaw < 0.0) {
+ this.expressions.setValue('lookLeft', 0.0);
+ this.expressions.setValue('lookRight', this.rangeMapHorizontalOuter.map(-yaw));
+ }
+ else {
+ this.expressions.setValue('lookRight', 0.0);
+ this.expressions.setValue('lookLeft', this.rangeMapHorizontalOuter.map(yaw));
+ }
+ }
+ /**
+ * @deprecated Use {@link applyYawPitch} instead.
+ */
+ lookAt(euler) {
+ console.warn('VRMLookAtBoneApplier: lookAt() is deprecated. use apply() instead.');
+ const yaw = THREE__namespace.MathUtils.RAD2DEG * euler.y;
+ const pitch = THREE__namespace.MathUtils.RAD2DEG * euler.x;
+ this.applyYawPitch(yaw, pitch);
+ }
+ }
+ /**
+ * Represent its type of applier.
+ */
+ VRMLookAtExpressionApplier.type = 'expression';
+
+ class VRMLookAtRangeMap {
+ /**
+ * Create a new {@link VRMLookAtRangeMap}.
+ *
+ * @param inputMaxValue The {@link inputMaxValue} of the map
+ * @param outputScale The {@link outputScale} of the map
+ */
+ constructor(inputMaxValue, outputScale) {
+ this.inputMaxValue = inputMaxValue;
+ this.outputScale = outputScale;
+ }
+ /**
+ * Evaluate an input value and output a mapped value.
+ * @param src The input value
+ */
+ map(src) {
+ return this.outputScale * saturate(src / this.inputMaxValue);
+ }
+ }
+
+ /**
+ * Possible spec versions it recognizes.
+ */
+ const POSSIBLE_SPEC_VERSIONS$1$1 = new Set(['1.0', '1.0-beta']);
+ /**
+ * The minimum permitted value for {@link V1VRMSchema.LookAtRangeMap.inputMaxValue}.
+ * If the given value is smaller than this, the loader shows a warning and clamps up the value.
+ */
+ const INPUT_MAX_VALUE_MINIMUM = 0.01;
+ /**
+ * A plugin of GLTFLoader that imports a {@link VRMLookAt} from a VRM extension of a GLTF.
+ */
+ class VRMLookAtLoaderPlugin {
+ get name() {
+ // We should use the extension name instead but we have multiple plugins for an extension...
+ return 'VRMLookAtLoaderPlugin';
+ }
+ constructor(parser, options) {
+ this.parser = parser;
+ this.helperRoot = options === null || options === void 0 ? void 0 : options.helperRoot;
+ }
+ afterRoot(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const vrmHumanoid = gltf.userData.vrmHumanoid;
+ // explicitly distinguish null and undefined
+ // since vrmHumanoid might be null as a result
+ if (vrmHumanoid === null) {
+ return;
+ }
+ else if (vrmHumanoid === undefined) {
+ throw new Error('VRMLookAtLoaderPlugin: vrmHumanoid is undefined. VRMHumanoidLoaderPlugin have to be used first');
+ }
+ const vrmExpressionManager = gltf.userData.vrmExpressionManager;
+ if (vrmExpressionManager === null) {
+ return;
+ }
+ else if (vrmExpressionManager === undefined) {
+ throw new Error('VRMLookAtLoaderPlugin: vrmExpressionManager is undefined. VRMExpressionLoaderPlugin have to be used first');
+ }
+ gltf.userData.vrmLookAt = yield this._import(gltf, vrmHumanoid, vrmExpressionManager);
+ });
+ }
+ /**
+ * Import a {@link VRMLookAt} from a VRM.
+ *
+ * @param gltf A parsed result of GLTF taken from GLTFLoader
+ * @param humanoid A {@link VRMHumanoid} instance that represents the VRM
+ * @param expressions A {@link VRMExpressionManager} instance that represents the VRM
+ */
+ _import(gltf, humanoid, expressions) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ if (humanoid == null || expressions == null) {
+ return null;
+ }
+ const v1Result = yield this._v1Import(gltf, humanoid, expressions);
+ if (v1Result) {
+ return v1Result;
+ }
+ const v0Result = yield this._v0Import(gltf, humanoid, expressions);
+ if (v0Result) {
+ return v0Result;
+ }
+ return null;
+ });
+ }
+ _v1Import(gltf, humanoid, expressions) {
+ var _a, _b, _c;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const isVRMUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf('VRMC_vrm')) !== -1;
+ if (!isVRMUsed) {
+ return null;
+ }
+ const extension = (_b = json.extensions) === null || _b === void 0 ? void 0 : _b['VRMC_vrm'];
+ if (!extension) {
+ return null;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS$1$1.has(specVersion)) {
+ console.warn(`VRMLookAtLoaderPlugin: Unknown VRMC_vrm specVersion "${specVersion}"`);
+ return null;
+ }
+ const schemaLookAt = extension.lookAt;
+ if (!schemaLookAt) {
+ return null;
+ }
+ const defaultOutputScale = schemaLookAt.type === 'expression' ? 1.0 : 10.0;
+ const mapHI = this._v1ImportRangeMap(schemaLookAt.rangeMapHorizontalInner, defaultOutputScale);
+ const mapHO = this._v1ImportRangeMap(schemaLookAt.rangeMapHorizontalOuter, defaultOutputScale);
+ const mapVD = this._v1ImportRangeMap(schemaLookAt.rangeMapVerticalDown, defaultOutputScale);
+ const mapVU = this._v1ImportRangeMap(schemaLookAt.rangeMapVerticalUp, defaultOutputScale);
+ let applier;
+ if (schemaLookAt.type === 'expression') {
+ applier = new VRMLookAtExpressionApplier(expressions, mapHI, mapHO, mapVD, mapVU);
+ }
+ else {
+ applier = new VRMLookAtBoneApplier(humanoid, mapHI, mapHO, mapVD, mapVU);
+ }
+ const lookAt = this._importLookAt(humanoid, applier);
+ lookAt.offsetFromHeadBone.fromArray((_c = schemaLookAt.offsetFromHeadBone) !== null && _c !== void 0 ? _c : [0.0, 0.06, 0.0]);
+ return lookAt;
+ });
+ }
+ _v1ImportRangeMap(schemaRangeMap, defaultOutputScale) {
+ var _a, _b;
+ let inputMaxValue = (_a = schemaRangeMap === null || schemaRangeMap === void 0 ? void 0 : schemaRangeMap.inputMaxValue) !== null && _a !== void 0 ? _a : 90.0;
+ const outputScale = (_b = schemaRangeMap === null || schemaRangeMap === void 0 ? void 0 : schemaRangeMap.outputScale) !== null && _b !== void 0 ? _b : defaultOutputScale;
+ // It might cause NaN when `inputMaxValue` is too small
+ // which makes the mesh of the head disappear
+ // See: https://github.com/pixiv/three-vrm/issues/1201
+ if (inputMaxValue < INPUT_MAX_VALUE_MINIMUM) {
+ console.warn('VRMLookAtLoaderPlugin: inputMaxValue of a range map is too small. Consider reviewing the range map!');
+ inputMaxValue = INPUT_MAX_VALUE_MINIMUM;
+ }
+ return new VRMLookAtRangeMap(inputMaxValue, outputScale);
+ }
+ _v0Import(gltf, humanoid, expressions) {
+ var _a, _b, _c, _d;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const vrmExt = (_a = json.extensions) === null || _a === void 0 ? void 0 : _a.VRM;
+ if (!vrmExt) {
+ return null;
+ }
+ const schemaFirstPerson = vrmExt.firstPerson;
+ if (!schemaFirstPerson) {
+ return null;
+ }
+ const defaultOutputScale = schemaFirstPerson.lookAtTypeName === 'BlendShape' ? 1.0 : 10.0;
+ const mapHI = this._v0ImportDegreeMap(schemaFirstPerson.lookAtHorizontalInner, defaultOutputScale);
+ const mapHO = this._v0ImportDegreeMap(schemaFirstPerson.lookAtHorizontalOuter, defaultOutputScale);
+ const mapVD = this._v0ImportDegreeMap(schemaFirstPerson.lookAtVerticalDown, defaultOutputScale);
+ const mapVU = this._v0ImportDegreeMap(schemaFirstPerson.lookAtVerticalUp, defaultOutputScale);
+ let applier;
+ if (schemaFirstPerson.lookAtTypeName === 'BlendShape') {
+ applier = new VRMLookAtExpressionApplier(expressions, mapHI, mapHO, mapVD, mapVU);
+ }
+ else {
+ applier = new VRMLookAtBoneApplier(humanoid, mapHI, mapHO, mapVD, mapVU);
+ }
+ const lookAt = this._importLookAt(humanoid, applier);
+ if (schemaFirstPerson.firstPersonBoneOffset) {
+ lookAt.offsetFromHeadBone.set((_b = schemaFirstPerson.firstPersonBoneOffset.x) !== null && _b !== void 0 ? _b : 0.0, (_c = schemaFirstPerson.firstPersonBoneOffset.y) !== null && _c !== void 0 ? _c : 0.06, -((_d = schemaFirstPerson.firstPersonBoneOffset.z) !== null && _d !== void 0 ? _d : 0.0));
+ }
+ else {
+ lookAt.offsetFromHeadBone.set(0.0, 0.06, 0.0);
+ }
+ // VRM 0.0 are facing Z- instead of Z+
+ lookAt.faceFront.set(0.0, 0.0, -1.0);
+ if (applier instanceof VRMLookAtBoneApplier) {
+ applier.faceFront.set(0.0, 0.0, -1.0);
+ }
+ return lookAt;
+ });
+ }
+ _v0ImportDegreeMap(schemaDegreeMap, defaultOutputScale) {
+ var _a, _b;
+ const curve = schemaDegreeMap === null || schemaDegreeMap === void 0 ? void 0 : schemaDegreeMap.curve;
+ if (JSON.stringify(curve) !== '[0,0,0,1,1,1,1,0]') {
+ console.warn('Curves of LookAtDegreeMap defined in VRM 0.0 are not supported');
+ }
+ let xRange = (_a = schemaDegreeMap === null || schemaDegreeMap === void 0 ? void 0 : schemaDegreeMap.xRange) !== null && _a !== void 0 ? _a : 90.0;
+ const yRange = (_b = schemaDegreeMap === null || schemaDegreeMap === void 0 ? void 0 : schemaDegreeMap.yRange) !== null && _b !== void 0 ? _b : defaultOutputScale;
+ // It might cause NaN when `xRange` is too small
+ // which makes the mesh of the head disappear
+ // See: https://github.com/pixiv/three-vrm/issues/1201
+ if (xRange < INPUT_MAX_VALUE_MINIMUM) {
+ console.warn('VRMLookAtLoaderPlugin: xRange of a degree map is too small. Consider reviewing the degree map!');
+ xRange = INPUT_MAX_VALUE_MINIMUM;
+ }
+ return new VRMLookAtRangeMap(xRange, yRange);
+ }
+ _importLookAt(humanoid, applier) {
+ const lookAt = new VRMLookAt(humanoid, applier);
+ if (this.helperRoot) {
+ const helper = new VRMLookAtHelper(lookAt);
+ this.helperRoot.add(helper);
+ helper.renderOrder = this.helperRoot.renderOrder;
+ }
+ return lookAt;
+ }
+ }
+
+ /* eslint-disable @typescript-eslint/naming-convention */
+ /**
+ * Represents a type of applier.
+ */
+ const VRMLookAtTypeName = {
+ Bone: 'bone',
+ Expression: 'expression',
+ };
+
+ /**
+ * Yoinked from https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/GLTFLoader.js
+ */
+ function resolveURL(url, path) {
+ // Invalid URL
+ if (typeof url !== 'string' || url === '')
+ return '';
+ // Host Relative URL
+ if (/^https?:\/\//i.test(path) && /^\//.test(url)) {
+ path = path.replace(/(^https?:\/\/[^/]+).*/i, '$1');
+ }
+ // Absolute URL http://,https://,//
+ if (/^(https?:)?\/\//i.test(url))
+ return url;
+ // Data URI
+ if (/^data:.*,.*$/i.test(url))
+ return url;
+ // Blob URL
+ if (/^blob:.*$/i.test(url))
+ return url;
+ // Relative URL
+ return path + url;
+ }
+
+ /**
+ * Possible spec versions it recognizes.
+ */
+ const POSSIBLE_SPEC_VERSIONS$5 = new Set(['1.0', '1.0-beta']);
+ /**
+ * A plugin of GLTFLoader that imports a {@link VRM1Meta} from a VRM extension of a GLTF.
+ */
+ class VRMMetaLoaderPlugin {
+ get name() {
+ // We should use the extension name instead but we have multiple plugins for an extension...
+ return 'VRMMetaLoaderPlugin';
+ }
+ constructor(parser, options) {
+ var _a, _b, _c;
+ this.parser = parser;
+ this.needThumbnailImage = (_a = options === null || options === void 0 ? void 0 : options.needThumbnailImage) !== null && _a !== void 0 ? _a : true;
+ this.acceptLicenseUrls = (_b = options === null || options === void 0 ? void 0 : options.acceptLicenseUrls) !== null && _b !== void 0 ? _b : ['https://vrm.dev/licenses/1.0/'];
+ this.acceptV0Meta = (_c = options === null || options === void 0 ? void 0 : options.acceptV0Meta) !== null && _c !== void 0 ? _c : true;
+ }
+ afterRoot(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ gltf.userData.vrmMeta = yield this._import(gltf);
+ });
+ }
+ _import(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const v1Result = yield this._v1Import(gltf);
+ if (v1Result != null) {
+ return v1Result;
+ }
+ const v0Result = yield this._v0Import(gltf);
+ if (v0Result != null) {
+ return v0Result;
+ }
+ return null;
+ });
+ }
+ _v1Import(gltf) {
+ var _a, _b, _c;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const isVRMUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf('VRMC_vrm')) !== -1;
+ if (!isVRMUsed) {
+ return null;
+ }
+ const extension = (_b = json.extensions) === null || _b === void 0 ? void 0 : _b['VRMC_vrm'];
+ if (extension == null) {
+ return null;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS$5.has(specVersion)) {
+ console.warn(`VRMMetaLoaderPlugin: Unknown VRMC_vrm specVersion "${specVersion}"`);
+ return null;
+ }
+ const schemaMeta = extension.meta;
+ if (!schemaMeta) {
+ return null;
+ }
+ // throw an error if acceptV0Meta is false
+ const licenseUrl = schemaMeta.licenseUrl;
+ const acceptLicenseUrlsSet = new Set(this.acceptLicenseUrls);
+ if (!acceptLicenseUrlsSet.has(licenseUrl)) {
+ throw new Error(`VRMMetaLoaderPlugin: The license url "${licenseUrl}" is not accepted`);
+ }
+ let thumbnailImage = undefined;
+ if (this.needThumbnailImage && schemaMeta.thumbnailImage != null) {
+ thumbnailImage = (_c = (yield this._extractGLTFImage(schemaMeta.thumbnailImage))) !== null && _c !== void 0 ? _c : undefined;
+ }
+ return {
+ metaVersion: '1',
+ name: schemaMeta.name,
+ version: schemaMeta.version,
+ authors: schemaMeta.authors,
+ copyrightInformation: schemaMeta.copyrightInformation,
+ contactInformation: schemaMeta.contactInformation,
+ references: schemaMeta.references,
+ thirdPartyLicenses: schemaMeta.thirdPartyLicenses,
+ thumbnailImage,
+ licenseUrl: schemaMeta.licenseUrl,
+ avatarPermission: schemaMeta.avatarPermission,
+ allowExcessivelyViolentUsage: schemaMeta.allowExcessivelyViolentUsage,
+ allowExcessivelySexualUsage: schemaMeta.allowExcessivelySexualUsage,
+ commercialUsage: schemaMeta.commercialUsage,
+ allowPoliticalOrReligiousUsage: schemaMeta.allowPoliticalOrReligiousUsage,
+ allowAntisocialOrHateUsage: schemaMeta.allowAntisocialOrHateUsage,
+ creditNotation: schemaMeta.creditNotation,
+ allowRedistribution: schemaMeta.allowRedistribution,
+ modification: schemaMeta.modification,
+ otherLicenseUrl: schemaMeta.otherLicenseUrl,
+ };
+ });
+ }
+ _v0Import(gltf) {
+ var _a;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const vrmExt = (_a = json.extensions) === null || _a === void 0 ? void 0 : _a.VRM;
+ if (!vrmExt) {
+ return null;
+ }
+ const schemaMeta = vrmExt.meta;
+ if (!schemaMeta) {
+ return null;
+ }
+ // throw an error if acceptV0Meta is false
+ if (!this.acceptV0Meta) {
+ throw new Error('VRMMetaLoaderPlugin: Attempted to load VRM0.0 meta but acceptV0Meta is false');
+ }
+ // load thumbnail texture
+ let texture;
+ if (this.needThumbnailImage && schemaMeta.texture != null && schemaMeta.texture !== -1) {
+ texture = yield this.parser.getDependency('texture', schemaMeta.texture);
+ }
+ return {
+ metaVersion: '0',
+ allowedUserName: schemaMeta.allowedUserName,
+ author: schemaMeta.author,
+ commercialUssageName: schemaMeta.commercialUssageName,
+ contactInformation: schemaMeta.contactInformation,
+ licenseName: schemaMeta.licenseName,
+ otherLicenseUrl: schemaMeta.otherLicenseUrl,
+ otherPermissionUrl: schemaMeta.otherPermissionUrl,
+ reference: schemaMeta.reference,
+ sexualUssageName: schemaMeta.sexualUssageName,
+ texture: texture !== null && texture !== void 0 ? texture : undefined,
+ title: schemaMeta.title,
+ version: schemaMeta.version,
+ violentUssageName: schemaMeta.violentUssageName,
+ };
+ });
+ }
+ _extractGLTFImage(index) {
+ var _a;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ const source = (_a = json.images) === null || _a === void 0 ? void 0 : _a[index];
+ if (source == null) {
+ console.warn(`VRMMetaLoaderPlugin: Attempt to use images[${index}] of glTF as a thumbnail but the image doesn't exist`);
+ return null;
+ }
+ // Ref: https://github.com/mrdoob/three.js/blob/r124/examples/jsm/loaders/GLTFLoader.js#L2467
+ // `source.uri` might be a reference to a file
+ let sourceURI = source.uri;
+ // Load the binary as a blob
+ if (source.bufferView != null) {
+ const bufferView = yield this.parser.getDependency('bufferView', source.bufferView);
+ const blob = new Blob([bufferView], { type: source.mimeType });
+ sourceURI = URL.createObjectURL(blob);
+ }
+ if (sourceURI == null) {
+ console.warn(`VRMMetaLoaderPlugin: Attempt to use images[${index}] of glTF as a thumbnail but the image couldn't load properly`);
+ return null;
+ }
+ const loader = new THREE__namespace.ImageLoader();
+ return yield loader.loadAsync(resolveURL(sourceURI, this.parser.options.path)).catch((error) => {
+ console.error(error);
+ console.warn('VRMMetaLoaderPlugin: Failed to load a thumbnail image');
+ return null;
+ });
+ });
+ }
+ }
+
+ /**
+ * A class that represents a single VRM model.
+ * This class only includes core spec of the VRM (`VRMC_vrm`).
+ */
+ class VRMCore {
+ /**
+ * Create a new VRM instance.
+ *
+ * @param params [[VRMParameters]] that represents components of the VRM
+ */
+ constructor(params) {
+ this.scene = params.scene;
+ this.meta = params.meta;
+ this.humanoid = params.humanoid;
+ this.expressionManager = params.expressionManager;
+ this.firstPerson = params.firstPerson;
+ this.lookAt = params.lookAt;
+ }
+ /**
+ * **You need to call this on your update loop.**
+ *
+ * This function updates every VRM components.
+ *
+ * @param delta deltaTime
+ */
+ update(delta) {
+ this.humanoid.update();
+ if (this.lookAt) {
+ this.lookAt.update(delta);
+ }
+ if (this.expressionManager) {
+ this.expressionManager.update();
+ }
+ }
+ }
+
+ class VRMCoreLoaderPlugin {
+ get name() {
+ // We should use the extension name instead but we have multiple plugins for an extension...
+ return 'VRMC_vrm';
+ }
+ constructor(parser, options) {
+ var _a, _b, _c, _d, _e;
+ this.parser = parser;
+ const helperRoot = options === null || options === void 0 ? void 0 : options.helperRoot;
+ const autoUpdateHumanBones = options === null || options === void 0 ? void 0 : options.autoUpdateHumanBones;
+ this.expressionPlugin = (_a = options === null || options === void 0 ? void 0 : options.expressionPlugin) !== null && _a !== void 0 ? _a : new VRMExpressionLoaderPlugin(parser);
+ this.firstPersonPlugin = (_b = options === null || options === void 0 ? void 0 : options.firstPersonPlugin) !== null && _b !== void 0 ? _b : new VRMFirstPersonLoaderPlugin(parser);
+ this.humanoidPlugin =
+ (_c = options === null || options === void 0 ? void 0 : options.humanoidPlugin) !== null && _c !== void 0 ? _c : new VRMHumanoidLoaderPlugin(parser, { helperRoot, autoUpdateHumanBones });
+ this.lookAtPlugin = (_d = options === null || options === void 0 ? void 0 : options.lookAtPlugin) !== null && _d !== void 0 ? _d : new VRMLookAtLoaderPlugin(parser, { helperRoot });
+ this.metaPlugin = (_e = options === null || options === void 0 ? void 0 : options.metaPlugin) !== null && _e !== void 0 ? _e : new VRMMetaLoaderPlugin(parser);
+ }
+ afterRoot(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ yield this.metaPlugin.afterRoot(gltf);
+ yield this.humanoidPlugin.afterRoot(gltf);
+ yield this.expressionPlugin.afterRoot(gltf);
+ yield this.lookAtPlugin.afterRoot(gltf);
+ yield this.firstPersonPlugin.afterRoot(gltf);
+ const meta = gltf.userData.vrmMeta;
+ const humanoid = gltf.userData.vrmHumanoid;
+ // meta and humanoid are required to be a VRM.
+ // Don't create VRM if they are null
+ if (meta && humanoid) {
+ const vrmCore = new VRMCore({
+ scene: gltf.scene,
+ expressionManager: gltf.userData.vrmExpressionManager,
+ firstPerson: gltf.userData.vrmFirstPerson,
+ humanoid,
+ lookAt: gltf.userData.vrmLookAt,
+ meta,
+ });
+ gltf.userData.vrmCore = vrmCore;
+ }
+ });
+ }
+ }
+
+ /**
+ * A class that represents a single VRM model.
+ */
+ class VRM extends VRMCore {
+ /**
+ * Create a new VRM instance.
+ *
+ * @param params [[VRMParameters]] that represents components of the VRM
+ */
+ constructor(params) {
+ super(params);
+ this.materials = params.materials;
+ this.springBoneManager = params.springBoneManager;
+ this.nodeConstraintManager = params.nodeConstraintManager;
+ }
+ /**
+ * **You need to call this on your update loop.**
+ *
+ * This function updates every VRM components.
+ *
+ * @param delta deltaTime
+ */
+ update(delta) {
+ super.update(delta);
+ if (this.nodeConstraintManager) {
+ this.nodeConstraintManager.update();
+ }
+ if (this.springBoneManager) {
+ this.springBoneManager.update(delta);
+ }
+ if (this.materials) {
+ this.materials.forEach((material) => {
+ if (material.update) {
+ material.update(delta);
+ }
+ });
+ }
+ }
+ }
+
+ /******************************************************************************
+ Copyright (c) Microsoft Corporation.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** */
+
+ function __awaiter$5(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ }
+
+ /*!
+ * @pixiv/three-vrm-materials-mtoon v2.0.6
+ * MToon (toon material) module for @pixiv/three-vrm
+ *
+ * Copyright (c) 2020-2023 pixiv Inc.
+ * @pixiv/three-vrm-materials-mtoon is distributed under MIT License
+ * https://github.com/pixiv/three-vrm/blob/release/LICENSE
+ */
+
+ /******************************************************************************
+ Copyright (c) Microsoft Corporation.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** */
+
+ function __awaiter$4(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ }
+
+ var vertexShader = "// #define PHONG\n\nvarying vec3 vViewPosition;\n\n#ifndef FLAT_SHADED\n varying vec3 vNormal;\n#endif\n\n#include \n\n// #include \n#ifdef MTOON_USE_UV\n varying vec2 vUv;\n\n // COMPAT: pre-r151 uses a common uvTransform\n #if THREE_VRM_THREE_REVISION < 151\n uniform mat3 uvTransform;\n #endif\n#endif\n\n// #include \n// COMAPT: pre-r151 uses uv2 for lightMap and aoMap\n#if THREE_VRM_THREE_REVISION < 151\n #if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n attribute vec2 uv2;\n varying vec2 vUv2;\n uniform mat3 uv2Transform;\n #endif\n#endif\n\n// #include \n// #include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n\n#ifdef USE_OUTLINEWIDTHMULTIPLYTEXTURE\n uniform sampler2D outlineWidthMultiplyTexture;\n uniform mat3 outlineWidthMultiplyTextureUvTransform;\n#endif\n\nuniform float outlineWidthFactor;\n\nvoid main() {\n\n // #include \n #ifdef MTOON_USE_UV\n // COMPAT: pre-r151 uses a common uvTransform\n #if THREE_VRM_THREE_REVISION >= 151\n vUv = uv;\n #else\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n #endif\n #endif\n\n // #include \n // COMAPT: pre-r151 uses uv2 for lightMap and aoMap\n #if THREE_VRM_THREE_REVISION < 151\n #if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n vUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n #endif\n #endif\n\n #include \n\n #include \n #include \n #include \n #include \n\n // we need this to compute the outline properly\n objectNormal = normalize( objectNormal );\n\n #include \n\n #ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED\n vNormal = normalize( transformedNormal );\n #endif\n\n #include \n\n #include \n #include \n // #include \n #include \n #include \n #include \n\n vViewPosition = - mvPosition.xyz;\n\n float outlineTex = 1.0;\n\n #ifdef OUTLINE\n #ifdef USE_OUTLINEWIDTHMULTIPLYTEXTURE\n vec2 outlineWidthMultiplyTextureUv = ( outlineWidthMultiplyTextureUvTransform * vec3( vUv, 1 ) ).xy;\n outlineTex = texture2D( outlineWidthMultiplyTexture, outlineWidthMultiplyTextureUv ).g;\n #endif\n\n #ifdef OUTLINE_WIDTH_WORLD\n float worldNormalLength = length( transformedNormal );\n vec3 outlineOffset = outlineWidthFactor * outlineTex * worldNormalLength * objectNormal;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( outlineOffset + transformed, 1.0 );\n #endif\n\n #ifdef OUTLINE_WIDTH_SCREEN\n vec3 clipNormal = ( projectionMatrix * modelViewMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n vec2 projectedNormal = normalize( clipNormal.xy );\n projectedNormal.x *= projectionMatrix[ 0 ].x / projectionMatrix[ 1 ].y;\n gl_Position.xy += 2.0 * outlineWidthFactor * outlineTex * projectedNormal.xy;\n #endif\n\n gl_Position.z += 1E-6 * gl_Position.w; // anti-artifact magic\n #endif\n\n #include \n // #include \n #include \n #include \n\n}";
+
+ var fragmentShader = "// #define PHONG\n\nuniform vec3 litFactor;\n\nuniform float opacity;\n\nuniform vec3 shadeColorFactor;\n#ifdef USE_SHADEMULTIPLYTEXTURE\n uniform sampler2D shadeMultiplyTexture;\n uniform mat3 shadeMultiplyTextureUvTransform;\n#endif\n\nuniform float shadingShiftFactor;\nuniform float shadingToonyFactor;\n\n#ifdef USE_SHADINGSHIFTTEXTURE\n uniform sampler2D shadingShiftTexture;\n uniform mat3 shadingShiftTextureUvTransform;\n uniform float shadingShiftTextureScale;\n#endif\n\nuniform float giEqualizationFactor;\n\nuniform vec3 parametricRimColorFactor;\n#ifdef USE_RIMMULTIPLYTEXTURE\n uniform sampler2D rimMultiplyTexture;\n uniform mat3 rimMultiplyTextureUvTransform;\n#endif\nuniform float rimLightingMixFactor;\nuniform float parametricRimFresnelPowerFactor;\nuniform float parametricRimLiftFactor;\n\n#ifdef USE_MATCAPTEXTURE\n uniform vec3 matcapFactor;\n uniform sampler2D matcapTexture;\n uniform mat3 matcapTextureUvTransform;\n#endif\n\nuniform vec3 emissive;\nuniform float emissiveIntensity;\n\nuniform vec3 outlineColorFactor;\nuniform float outlineLightingMixFactor;\n\n#ifdef USE_UVANIMATIONMASKTEXTURE\n uniform sampler2D uvAnimationMaskTexture;\n uniform mat3 uvAnimationMaskTextureUvTransform;\n#endif\n\nuniform float uvAnimationScrollXOffset;\nuniform float uvAnimationScrollYOffset;\nuniform float uvAnimationRotationPhase;\n\n#include \n#include \n#include \n#include \n\n// #include \n#if ( defined( MTOON_USE_UV ) && !defined( MTOON_UVS_VERTEX_ONLY ) )\n varying vec2 vUv;\n#endif\n\n// #include \n// COMAPT: pre-r151 uses uv2 for lightMap and aoMap\n#if THREE_VRM_THREE_REVISION < 151\n #if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n varying vec2 vUv2;\n #endif\n#endif\n\n#include \n\n#ifdef USE_MAP\n uniform mat3 mapUvTransform;\n#endif\n\n// #include \n\n#if THREE_VRM_THREE_REVISION >= 132\n #include \n#endif\n\n#include \n// #include \n#include \n\n#ifdef USE_EMISSIVEMAP\n uniform mat3 emissiveMapUvTransform;\n#endif\n\n// #include \n// #include \n// #include \n#include \n\n// #include \n// COMPAT: pre-r151 doesn't have BRDF_Lambert in \n#if THREE_VRM_THREE_REVISION < 151\n vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n return RECIPROCAL_PI * diffuseColor;\n }\n#endif\n\n#include \n\n#if THREE_VRM_THREE_REVISION >= 132\n #include \n#endif\n\n// #include \nvarying vec3 vViewPosition;\n\n#if THREE_VRM_THREE_REVISION < 132\n #ifndef FLAT_SHADED\n varying vec3 vNormal;\n #endif\n#endif\n\nstruct MToonMaterial {\n vec3 diffuseColor;\n vec3 shadeColor;\n float shadingShift;\n};\n\nfloat linearstep( float a, float b, float t ) {\n return clamp( ( t - a ) / ( b - a ), 0.0, 1.0 );\n}\n\n/**\n * Convert NdotL into toon shading factor using shadingShift and shadingToony\n */\nfloat getShading(\n const in float dotNL,\n const in float shadow,\n const in float shadingShift\n) {\n float shading = dotNL;\n shading = shading + shadingShift;\n shading = linearstep( -1.0 + shadingToonyFactor, 1.0 - shadingToonyFactor, shading );\n shading *= shadow;\n return shading;\n}\n\n/**\n * Mix diffuseColor and shadeColor using shading factor and light color\n */\nvec3 getDiffuse(\n const in MToonMaterial material,\n const in float shading,\n in vec3 lightColor\n) {\n #ifdef DEBUG_LITSHADERATE\n return vec3( BRDF_Lambert( shading * lightColor ) );\n #endif\n\n #if THREE_VRM_THREE_REVISION < 132\n #ifndef PHYSICALLY_CORRECT_LIGHTS\n lightColor *= PI;\n #endif\n #endif\n\n vec3 col = lightColor * BRDF_Lambert( mix( material.shadeColor, material.diffuseColor, shading ) );\n\n // The \"comment out if you want to PBR absolutely\" line\n #ifdef V0_COMPAT_SHADE\n col = min( col, material.diffuseColor );\n #endif\n\n return col;\n}\n\n#if THREE_VRM_THREE_REVISION >= 157\n void RE_Direct_MToon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in MToonMaterial material, const in float shadow, inout ReflectedLight reflectedLight ) {\n float dotNL = clamp( dot( geometryNormal, directLight.direction ), -1.0, 1.0 );\n vec3 irradiance = directLight.color;\n\n #if THREE_VRM_THREE_REVISION < 132\n #ifndef PHYSICALLY_CORRECT_LIGHTS\n irradiance *= PI;\n #endif\n #endif\n\n // directSpecular will be used for rim lighting, not an actual specular\n reflectedLight.directSpecular += irradiance;\n\n irradiance *= dotNL;\n\n float shading = getShading( dotNL, shadow, material.shadingShift );\n\n // toon shaded diffuse\n reflectedLight.directDiffuse += getDiffuse( material, shading, directLight.color );\n }\n\n void RE_IndirectDiffuse_MToon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in MToonMaterial material, inout ReflectedLight reflectedLight ) {\n // indirect diffuse will use diffuseColor, no shadeColor involved\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\n // directSpecular will be used for rim lighting, not an actual specular\n reflectedLight.directSpecular += irradiance;\n }\n#else\n void RE_Direct_MToon( const in IncidentLight directLight, const in GeometricContext geometry, const in MToonMaterial material, const in float shadow, inout ReflectedLight reflectedLight ) {\n float dotNL = clamp( dot( geometry.normal, directLight.direction ), -1.0, 1.0 );\n vec3 irradiance = directLight.color;\n\n #if THREE_VRM_THREE_REVISION < 132\n #ifndef PHYSICALLY_CORRECT_LIGHTS\n irradiance *= PI;\n #endif\n #endif\n\n // directSpecular will be used for rim lighting, not an actual specular\n reflectedLight.directSpecular += irradiance;\n\n irradiance *= dotNL;\n\n float shading = getShading( dotNL, shadow, material.shadingShift );\n\n // toon shaded diffuse\n reflectedLight.directDiffuse += getDiffuse( material, shading, directLight.color );\n }\n\n void RE_IndirectDiffuse_MToon( const in vec3 irradiance, const in GeometricContext geometry, const in MToonMaterial material, inout ReflectedLight reflectedLight ) {\n // indirect diffuse will use diffuseColor, no shadeColor involved\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\n // directSpecular will be used for rim lighting, not an actual specular\n reflectedLight.directSpecular += irradiance;\n }\n#endif\n\n#define RE_Direct RE_Direct_MToon\n#define RE_IndirectDiffuse RE_IndirectDiffuse_MToon\n#define Material_LightProbeLOD( material ) (0)\n\n#include \n// #include \n\n// #include \n#ifdef USE_NORMALMAP\n\n uniform sampler2D normalMap;\n uniform mat3 normalMapUvTransform;\n uniform vec2 normalScale;\n\n#endif\n\n// COMPAT: USE_NORMALMAP_OBJECTSPACE used to be OBJECTSPACE_NORMALMAP in pre-r151\n#if defined( USE_NORMALMAP_OBJECTSPACE ) || defined( OBJECTSPACE_NORMALMAP )\n\n uniform mat3 normalMatrix;\n\n#endif\n\n// COMPAT: USE_NORMALMAP_TANGENTSPACE used to be TANGENTSPACE_NORMALMAP in pre-r151\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( TANGENTSPACE_NORMALMAP ) )\n\n // Per-Pixel Tangent Space Normal Mapping\n // http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html\n\n // three-vrm specific change: it requires `uv` as an input in order to support uv scrolls\n\n // Temporary compat against shader change @ Three.js r126, r151\n #if THREE_VRM_THREE_REVISION >= 151\n\n mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n\n vec3 q0 = dFdx( eye_pos.xyz );\n vec3 q1 = dFdy( eye_pos.xyz );\n vec2 st0 = dFdx( uv.st );\n vec2 st1 = dFdy( uv.st );\n\n vec3 N = surf_norm;\n\n vec3 q1perp = cross( q1, N );\n vec3 q0perp = cross( N, q0 );\n\n vec3 T = q1perp * st0.x + q0perp * st1.x;\n vec3 B = q1perp * st0.y + q0perp * st1.y;\n\n float det = max( dot( T, T ), dot( B, B ) );\n float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n\n return mat3( T * scale, B * scale, N );\n\n }\n\n #elif THREE_VRM_THREE_REVISION >= 126\n\n vec3 perturbNormal2Arb( vec2 uv, vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\n\n vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n vec2 st0 = dFdx( uv.st );\n vec2 st1 = dFdy( uv.st );\n\n vec3 N = normalize( surf_norm );\n\n vec3 q1perp = cross( q1, N );\n vec3 q0perp = cross( N, q0 );\n\n vec3 T = q1perp * st0.x + q0perp * st1.x;\n vec3 B = q1perp * st0.y + q0perp * st1.y;\n\n // three-vrm specific change: Workaround for the issue that happens when delta of uv = 0.0\n // TODO: Is this still required? Or shall I make a PR about it?\n if ( length( T ) == 0.0 || length( B ) == 0.0 ) {\n return surf_norm;\n }\n\n float det = max( dot( T, T ), dot( B, B ) );\n float scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\n\n return normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\n\n }\n\n #else\n\n vec3 perturbNormal2Arb( vec2 uv, vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\n\n // Workaround for Adreno 3XX dFd*( vec3 ) bug. See #9988\n\n vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n vec2 st0 = dFdx( uv.st );\n vec2 st1 = dFdy( uv.st );\n\n float scale = sign( st1.t * st0.s - st0.t * st1.s ); // we do not care about the magnitude\n\n vec3 S = ( q0 * st1.t - q1 * st0.t ) * scale;\n vec3 T = ( - q0 * st1.s + q1 * st0.s ) * scale;\n\n // three-vrm specific change: Workaround for the issue that happens when delta of uv = 0.0\n // TODO: Is this still required? Or shall I make a PR about it?\n\n if ( length( S ) == 0.0 || length( T ) == 0.0 ) {\n return surf_norm;\n }\n\n S = normalize( S );\n T = normalize( T );\n vec3 N = normalize( surf_norm );\n\n #ifdef DOUBLE_SIDED\n\n // Workaround for Adreno GPUs gl_FrontFacing bug. See #15850 and #10331\n\n bool frontFacing = dot( cross( S, T ), N ) > 0.0;\n\n mapN.xy *= ( float( frontFacing ) * 2.0 - 1.0 );\n\n #else\n\n mapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\n #endif\n\n mat3 tsn = mat3( S, T, N );\n return normalize( tsn * mapN );\n\n }\n\n #endif\n\n#endif\n\n// #include \n#include \n#include \n\n// == post correction ==========================================================\nvoid postCorrection() {\n #include \n #include \n #include \n #include \n #include \n}\n\n// == main procedure ===========================================================\nvoid main() {\n #include \n\n vec2 uv = vec2(0.5, 0.5);\n\n #if ( defined( MTOON_USE_UV ) && !defined( MTOON_UVS_VERTEX_ONLY ) )\n uv = vUv;\n\n float uvAnimMask = 1.0;\n #ifdef USE_UVANIMATIONMASKTEXTURE\n vec2 uvAnimationMaskTextureUv = ( uvAnimationMaskTextureUvTransform * vec3( uv, 1 ) ).xy;\n uvAnimMask = texture2D( uvAnimationMaskTexture, uvAnimationMaskTextureUv ).b;\n #endif\n\n uv = uv + vec2( uvAnimationScrollXOffset, uvAnimationScrollYOffset ) * uvAnimMask;\n float uvRotCos = cos( uvAnimationRotationPhase * uvAnimMask );\n float uvRotSin = sin( uvAnimationRotationPhase * uvAnimMask );\n uv = mat2( uvRotCos, -uvRotSin, uvRotSin, uvRotCos ) * ( uv - 0.5 ) + 0.5;\n #endif\n\n #ifdef DEBUG_UV\n gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n #if ( defined( MTOON_USE_UV ) && !defined( MTOON_UVS_VERTEX_ONLY ) )\n gl_FragColor = vec4( uv, 0.0, 1.0 );\n #endif\n return;\n #endif\n\n vec4 diffuseColor = vec4( litFactor, opacity );\n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive * emissiveIntensity;\n\n #include \n\n // #include \n #ifdef USE_MAP\n vec2 mapUv = ( mapUvTransform * vec3( uv, 1 ) ).xy;\n vec4 sampledDiffuseColor = texture2D( map, mapUv );\n #ifdef DECODE_VIDEO_TEXTURE\n sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n #endif\n diffuseColor *= sampledDiffuseColor;\n #endif\n\n // #include \n #if ( defined( USE_COLOR ) && !defined( IGNORE_VERTEX_COLOR ) )\n diffuseColor.rgb *= vColor;\n #endif\n\n // #include \n\n #include \n\n // #include \n\n // #include \n float faceDirection = gl_FrontFacing ? 1.0 : -1.0;\n\n #ifdef FLAT_SHADED\n\n vec3 fdx = dFdx( vViewPosition );\n vec3 fdy = dFdy( vViewPosition );\n vec3 normal = normalize( cross( fdx, fdy ) );\n\n #else\n\n vec3 normal = normalize( vNormal );\n\n #ifdef DOUBLE_SIDED\n\n normal *= faceDirection;\n\n #endif\n\n #endif\n\n #ifdef USE_NORMALMAP\n\n vec2 normalMapUv = ( normalMapUvTransform * vec3( uv, 1 ) ).xy;\n\n #endif\n\n #ifdef USE_NORMALMAP_TANGENTSPACE\n\n #ifdef USE_TANGENT\n\n mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\n #else\n\n mat3 tbn = getTangentFrame( - vViewPosition, normal, normalMapUv );\n\n #endif\n\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\n tbn[0] *= faceDirection;\n tbn[1] *= faceDirection;\n\n #endif\n\n #endif\n\n #ifdef USE_CLEARCOAT_NORMALMAP\n\n #ifdef USE_TANGENT\n\n mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\n #else\n\n mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n\n #endif\n\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\n tbn2[0] *= faceDirection;\n tbn2[1] *= faceDirection;\n\n #endif\n\n #endif\n\n // non perturbed normal for clearcoat among others\n\n vec3 nonPerturbedNormal = normal;\n\n #ifdef OUTLINE\n normal *= -1.0;\n #endif\n\n // #include \n\n // COMPAT: USE_NORMALMAP_OBJECTSPACE used to be OBJECTSPACE_NORMALMAP in pre-r151\n #if defined( USE_NORMALMAP_OBJECTSPACE ) || defined( OBJECTSPACE_NORMALMAP )\n\n normal = texture2D( normalMap, normalMapUv ).xyz * 2.0 - 1.0; // overrides both flatShading and attribute normals\n\n #ifdef FLIP_SIDED\n\n normal = - normal;\n\n #endif\n\n #ifdef DOUBLE_SIDED\n\n // Temporary compat against shader change @ Three.js r126\n // See: #21205, #21307, #21299\n #if THREE_VRM_THREE_REVISION >= 126\n\n normal = normal * faceDirection;\n\n #else\n\n normal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\n #endif\n\n #endif\n\n normal = normalize( normalMatrix * normal );\n\n // COMPAT: USE_NORMALMAP_TANGENTSPACE used to be TANGENTSPACE_NORMALMAP in pre-r151\n #elif defined( USE_NORMALMAP_TANGENTSPACE ) || defined( TANGENTSPACE_NORMALMAP )\n\n vec3 mapN = texture2D( normalMap, normalMapUv ).xyz * 2.0 - 1.0;\n mapN.xy *= normalScale;\n\n // COMPAT: pre-r151\n #if THREE_VRM_THREE_REVISION >= 151 || defined( USE_TANGENT )\n\n normal = normalize( tbn * mapN );\n\n #else\n\n // pre-r126\n #if THREE_VRM_THREE_REVISION >= 126\n\n normal = perturbNormal2Arb( uv, -vViewPosition, normal, mapN, faceDirection );\n\n #else\n\n normal = perturbNormal2Arb( uv, -vViewPosition, normal, mapN );\n\n #endif\n\n #endif\n\n #endif\n\n // #include \n #ifdef USE_EMISSIVEMAP\n vec2 emissiveMapUv = ( emissiveMapUvTransform * vec3( uv, 1 ) ).xy;\n totalEmissiveRadiance *= texture2D( emissiveMap, emissiveMapUv ).rgb;\n #endif\n\n #ifdef DEBUG_NORMAL\n gl_FragColor = vec4( 0.5 + 0.5 * normal, 1.0 );\n return;\n #endif\n\n // -- MToon: lighting --------------------------------------------------------\n // accumulation\n // #include \n MToonMaterial material;\n\n material.diffuseColor = diffuseColor.rgb;\n\n material.shadeColor = shadeColorFactor;\n #ifdef USE_SHADEMULTIPLYTEXTURE\n vec2 shadeMultiplyTextureUv = ( shadeMultiplyTextureUvTransform * vec3( uv, 1 ) ).xy;\n material.shadeColor *= texture2D( shadeMultiplyTexture, shadeMultiplyTextureUv ).rgb;\n #endif\n\n #if ( defined( USE_COLOR ) && !defined( IGNORE_VERTEX_COLOR ) )\n material.shadeColor.rgb *= vColor;\n #endif\n\n material.shadingShift = shadingShiftFactor;\n #ifdef USE_SHADINGSHIFTTEXTURE\n vec2 shadingShiftTextureUv = ( shadingShiftTextureUvTransform * vec3( uv, 1 ) ).xy;\n material.shadingShift += texture2D( shadingShiftTexture, shadingShiftTextureUv ).r * shadingShiftTextureScale;\n #endif\n\n // #include \n\n // MToon Specific changes:\n // Since we want to take shadows into account of shading instead of irradiance,\n // we had to modify the codes that multiplies the results of shadowmap into color of direct lights.\n\n #if THREE_VRM_THREE_REVISION >= 157\n vec3 geometryPosition = - vViewPosition;\n vec3 geometryNormal = normal;\n vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n \n vec3 geometryClearcoatNormal;\n\n #ifdef USE_CLEARCOAT\n\n geometryClearcoatNormal = clearcoatNormal;\n\n #endif\n #else\n GeometricContext geometry;\n\n geometry.position = - vViewPosition;\n geometry.normal = normal;\n geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n\n #ifdef USE_CLEARCOAT\n\n geometry.clearcoatNormal = clearcoatNormal;\n\n #endif\n #endif\n\n IncidentLight directLight;\n\n // since these variables will be used in unrolled loop, we have to define in prior\n float shadow;\n\n #if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\n PointLight pointLight;\n #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n PointLightShadow pointLightShadow;\n #endif\n\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\n pointLight = pointLights[ i ];\n\n #if THREE_VRM_THREE_REVISION >= 157\n getPointLightInfo( pointLight, geometryPosition, directLight );\n #elif THREE_VRM_THREE_REVISION >= 132\n getPointLightInfo( pointLight, geometry, directLight );\n #else\n getPointDirectLightIrradiance( pointLight, geometry, directLight );\n #endif\n\n shadow = 1.0;\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n pointLightShadow = pointLightShadows[ i ];\n shadow = all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n #endif\n\n #if THREE_VRM_THREE_REVISION >= 157\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, shadow, reflectedLight );\n #else\n RE_Direct( directLight, geometry, material, shadow, reflectedLight );\n #endif\n\n }\n #pragma unroll_loop_end\n\n #endif\n\n #if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\n SpotLight spotLight;\n #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLightShadow;\n #endif\n\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\n spotLight = spotLights[ i ];\n\n #if THREE_VRM_THREE_REVISION >= 157\n getSpotLightInfo( spotLight, geometryPosition, directLight );\n #elif THREE_VRM_THREE_REVISION >= 132\n getSpotLightInfo( spotLight, geometry, directLight );\n #else\n getSpotDirectLightIrradiance( spotLight, geometry, directLight );\n #endif\n\n shadow = 1.0;\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n spotLightShadow = spotLightShadows[ i ];\n shadow = all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n #endif\n\n #if THREE_VRM_THREE_REVISION >= 157\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, shadow, reflectedLight );\n #else\n RE_Direct( directLight, geometry, material, shadow, reflectedLight );\n #endif\n\n }\n #pragma unroll_loop_end\n\n #endif\n\n #if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\n DirectionalLight directionalLight;\n #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLightShadow;\n #endif\n\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\n directionalLight = directionalLights[ i ];\n\n #if THREE_VRM_THREE_REVISION >= 157\n getDirectionalLightInfo( directionalLight, directLight );\n #elif THREE_VRM_THREE_REVISION >= 132\n getDirectionalLightInfo( directionalLight, geometry, directLight );\n #else\n getDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n #endif\n\n shadow = 1.0;\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n directionalLightShadow = directionalLightShadows[ i ];\n shadow = all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n #endif\n\n #if THREE_VRM_THREE_REVISION >= 157\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, shadow, reflectedLight );\n #else\n RE_Direct( directLight, geometry, material, shadow, reflectedLight );\n #endif\n\n }\n #pragma unroll_loop_end\n\n #endif\n\n // #if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\n // RectAreaLight rectAreaLight;\n\n // #pragma unroll_loop_start\n // for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\n // rectAreaLight = rectAreaLights[ i ];\n // RE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\n // }\n // #pragma unroll_loop_end\n\n // #endif\n\n #if defined( RE_IndirectDiffuse )\n\n vec3 iblIrradiance = vec3( 0.0 );\n\n vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\n #if THREE_VRM_THREE_REVISION >= 157\n #if defined( USE_LIGHT_PROBES )\n irradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n #endif\n #elif THREE_VRM_THREE_REVISION >= 133\n irradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\n #else\n irradiance += getLightProbeIrradiance( lightProbe, geometry );\n #endif\n\n #if ( NUM_HEMI_LIGHTS > 0 )\n\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\n #if THREE_VRM_THREE_REVISION >= 157\n irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n #elif THREE_VRM_THREE_REVISION >= 133\n irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n #else\n irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n #endif\n\n }\n #pragma unroll_loop_end\n\n #endif\n\n #endif\n\n // #if defined( RE_IndirectSpecular )\n\n // vec3 radiance = vec3( 0.0 );\n // vec3 clearcoatRadiance = vec3( 0.0 );\n\n // #endif\n\n #include \n #include \n\n // modulation\n #include \n\n vec3 col = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\n #ifdef DEBUG_LITSHADERATE\n gl_FragColor = vec4( col, diffuseColor.a );\n postCorrection();\n return;\n #endif\n\n // -- MToon: rim lighting -----------------------------------------\n vec3 viewDir = normalize( vViewPosition );\n\n #ifndef PHYSICALLY_CORRECT_LIGHTS\n reflectedLight.directSpecular /= PI;\n #endif\n vec3 rimMix = mix( vec3( 1.0 ), reflectedLight.directSpecular, 1.0 );\n\n vec3 rim = parametricRimColorFactor * pow( saturate( 1.0 - dot( viewDir, normal ) + parametricRimLiftFactor ), parametricRimFresnelPowerFactor );\n\n #ifdef USE_MATCAPTEXTURE\n {\n vec3 x = normalize( vec3( viewDir.z, 0.0, -viewDir.x ) );\n vec3 y = cross( viewDir, x ); // guaranteed to be normalized\n vec2 sphereUv = 0.5 + 0.5 * vec2( dot( x, normal ), -dot( y, normal ) );\n sphereUv = ( matcapTextureUvTransform * vec3( sphereUv, 1 ) ).xy;\n vec3 matcap = texture2D( matcapTexture, sphereUv ).rgb;\n rim += matcapFactor * matcap;\n }\n #endif\n\n #ifdef USE_RIMMULTIPLYTEXTURE\n vec2 rimMultiplyTextureUv = ( rimMultiplyTextureUvTransform * vec3( uv, 1 ) ).xy;\n rim *= texture2D( rimMultiplyTexture, rimMultiplyTextureUv ).rgb;\n #endif\n\n col += rimMix * rim;\n\n // -- MToon: Emission --------------------------------------------------------\n col += totalEmissiveRadiance;\n\n // #include \n\n // -- Almost done! -----------------------------------------------------------\n #if defined( OUTLINE )\n col = outlineColorFactor.rgb * mix( vec3( 1.0 ), col, outlineLightingMixFactor );\n #endif\n\n #ifdef OPAQUE\n diffuseColor.a = 1.0;\n #endif\n\n gl_FragColor = vec4( col, diffuseColor.a );\n postCorrection();\n}\n";
+
+ /* eslint-disable @typescript-eslint/naming-convention */
+ /**
+ * Specifiers of debug mode of {@link MToonMaterial}.
+ *
+ * See: {@link MToonMaterial.debugMode}
+ */
+ const MToonMaterialDebugMode = {
+ /**
+ * Render normally.
+ */
+ None: 'none',
+ /**
+ * Visualize normals of the surface.
+ */
+ Normal: 'normal',
+ /**
+ * Visualize lit/shade of the surface.
+ */
+ LitShadeRate: 'litShadeRate',
+ /**
+ * Visualize UV of the surface.
+ */
+ UV: 'uv',
+ };
+
+ /* eslint-disable @typescript-eslint/naming-convention */
+ const MToonMaterialOutlineWidthMode = {
+ None: 'none',
+ WorldCoordinates: 'worldCoordinates',
+ ScreenCoordinates: 'screenCoordinates',
+ };
+
+ const encodingColorSpaceMap = {
+ 3000: '',
+ 3001: 'srgb',
+ };
+ /**
+ * A compat function to get texture color space.
+ *
+ * COMPAT: pre-r152
+ * Starting from Three.js r152, `texture.encoding` is renamed to `texture.colorSpace`.
+ * This function will handle the comapt.
+ *
+ * @param texture The texture you want to get the color space from
+ */
+ function getTextureColorSpace(texture) {
+ if (parseInt(THREE__namespace.REVISION, 10) >= 152) {
+ return texture.colorSpace;
+ }
+ else {
+ return encodingColorSpaceMap[texture.encoding];
+ }
+ }
+
+ /* tslint:disable:member-ordering */
+ /**
+ * MToon is a material specification that has various features.
+ * The spec and implementation are originally founded for Unity engine and this is a port of the material.
+ *
+ * See: https://github.com/Santarh/MToon
+ */
+ class MToonMaterial extends THREE__namespace.ShaderMaterial {
+ get color() {
+ return this.uniforms.litFactor.value;
+ }
+ set color(value) {
+ this.uniforms.litFactor.value = value;
+ }
+ get map() {
+ return this.uniforms.map.value;
+ }
+ set map(value) {
+ this.uniforms.map.value = value;
+ }
+ get normalMap() {
+ return this.uniforms.normalMap.value;
+ }
+ set normalMap(value) {
+ this.uniforms.normalMap.value = value;
+ }
+ get normalScale() {
+ return this.uniforms.normalScale.value;
+ }
+ set normalScale(value) {
+ this.uniforms.normalScale.value = value;
+ }
+ get emissive() {
+ return this.uniforms.emissive.value;
+ }
+ set emissive(value) {
+ this.uniforms.emissive.value = value;
+ }
+ get emissiveIntensity() {
+ return this.uniforms.emissiveIntensity.value;
+ }
+ set emissiveIntensity(value) {
+ this.uniforms.emissiveIntensity.value = value;
+ }
+ get emissiveMap() {
+ return this.uniforms.emissiveMap.value;
+ }
+ set emissiveMap(value) {
+ this.uniforms.emissiveMap.value = value;
+ }
+ get shadeColorFactor() {
+ return this.uniforms.shadeColorFactor.value;
+ }
+ set shadeColorFactor(value) {
+ this.uniforms.shadeColorFactor.value = value;
+ }
+ get shadeMultiplyTexture() {
+ return this.uniforms.shadeMultiplyTexture.value;
+ }
+ set shadeMultiplyTexture(value) {
+ this.uniforms.shadeMultiplyTexture.value = value;
+ }
+ get shadingShiftFactor() {
+ return this.uniforms.shadingShiftFactor.value;
+ }
+ set shadingShiftFactor(value) {
+ this.uniforms.shadingShiftFactor.value = value;
+ }
+ get shadingShiftTexture() {
+ return this.uniforms.shadingShiftTexture.value;
+ }
+ set shadingShiftTexture(value) {
+ this.uniforms.shadingShiftTexture.value = value;
+ }
+ get shadingShiftTextureScale() {
+ return this.uniforms.shadingShiftTextureScale.value;
+ }
+ set shadingShiftTextureScale(value) {
+ this.uniforms.shadingShiftTextureScale.value = value;
+ }
+ get shadingToonyFactor() {
+ return this.uniforms.shadingToonyFactor.value;
+ }
+ set shadingToonyFactor(value) {
+ this.uniforms.shadingToonyFactor.value = value;
+ }
+ get giEqualizationFactor() {
+ return this.uniforms.giEqualizationFactor.value;
+ }
+ set giEqualizationFactor(value) {
+ this.uniforms.giEqualizationFactor.value = value;
+ }
+ get matcapFactor() {
+ return this.uniforms.matcapFactor.value;
+ }
+ set matcapFactor(value) {
+ this.uniforms.matcapFactor.value = value;
+ }
+ get matcapTexture() {
+ return this.uniforms.matcapTexture.value;
+ }
+ set matcapTexture(value) {
+ this.uniforms.matcapTexture.value = value;
+ }
+ get parametricRimColorFactor() {
+ return this.uniforms.parametricRimColorFactor.value;
+ }
+ set parametricRimColorFactor(value) {
+ this.uniforms.parametricRimColorFactor.value = value;
+ }
+ get rimMultiplyTexture() {
+ return this.uniforms.rimMultiplyTexture.value;
+ }
+ set rimMultiplyTexture(value) {
+ this.uniforms.rimMultiplyTexture.value = value;
+ }
+ get rimLightingMixFactor() {
+ return this.uniforms.rimLightingMixFactor.value;
+ }
+ set rimLightingMixFactor(value) {
+ this.uniforms.rimLightingMixFactor.value = value;
+ }
+ get parametricRimFresnelPowerFactor() {
+ return this.uniforms.parametricRimFresnelPowerFactor.value;
+ }
+ set parametricRimFresnelPowerFactor(value) {
+ this.uniforms.parametricRimFresnelPowerFactor.value = value;
+ }
+ get parametricRimLiftFactor() {
+ return this.uniforms.parametricRimLiftFactor.value;
+ }
+ set parametricRimLiftFactor(value) {
+ this.uniforms.parametricRimLiftFactor.value = value;
+ }
+ get outlineWidthMultiplyTexture() {
+ return this.uniforms.outlineWidthMultiplyTexture.value;
+ }
+ set outlineWidthMultiplyTexture(value) {
+ this.uniforms.outlineWidthMultiplyTexture.value = value;
+ }
+ get outlineWidthFactor() {
+ return this.uniforms.outlineWidthFactor.value;
+ }
+ set outlineWidthFactor(value) {
+ this.uniforms.outlineWidthFactor.value = value;
+ }
+ get outlineColorFactor() {
+ return this.uniforms.outlineColorFactor.value;
+ }
+ set outlineColorFactor(value) {
+ this.uniforms.outlineColorFactor.value = value;
+ }
+ get outlineLightingMixFactor() {
+ return this.uniforms.outlineLightingMixFactor.value;
+ }
+ set outlineLightingMixFactor(value) {
+ this.uniforms.outlineLightingMixFactor.value = value;
+ }
+ get uvAnimationMaskTexture() {
+ return this.uniforms.uvAnimationMaskTexture.value;
+ }
+ set uvAnimationMaskTexture(value) {
+ this.uniforms.uvAnimationMaskTexture.value = value;
+ }
+ get uvAnimationScrollXOffset() {
+ return this.uniforms.uvAnimationScrollXOffset.value;
+ }
+ set uvAnimationScrollXOffset(value) {
+ this.uniforms.uvAnimationScrollXOffset.value = value;
+ }
+ get uvAnimationScrollYOffset() {
+ return this.uniforms.uvAnimationScrollYOffset.value;
+ }
+ set uvAnimationScrollYOffset(value) {
+ this.uniforms.uvAnimationScrollYOffset.value = value;
+ }
+ get uvAnimationRotationPhase() {
+ return this.uniforms.uvAnimationRotationPhase.value;
+ }
+ set uvAnimationRotationPhase(value) {
+ this.uniforms.uvAnimationRotationPhase.value = value;
+ }
+ /**
+ * When this is `true`, vertex colors will be ignored.
+ * `true` by default.
+ */
+ get ignoreVertexColor() {
+ return this._ignoreVertexColor;
+ }
+ set ignoreVertexColor(value) {
+ this._ignoreVertexColor = value;
+ this.needsUpdate = true;
+ }
+ /**
+ * There is a line of the shader called "comment out if you want to PBR absolutely" in VRM0.0 MToon.
+ * When this is true, the material enables the line to make it compatible with the legacy rendering of VRM.
+ * Usually not recommended to turn this on.
+ * `false` by default.
+ */
+ get v0CompatShade() {
+ return this._v0CompatShade;
+ }
+ /**
+ * There is a line of the shader called "comment out if you want to PBR absolutely" in VRM0.0 MToon.
+ * When this is true, the material enables the line to make it compatible with the legacy rendering of VRM.
+ * Usually not recommended to turn this on.
+ * `false` by default.
+ */
+ set v0CompatShade(v) {
+ this._v0CompatShade = v;
+ this.needsUpdate = true;
+ }
+ /**
+ * Debug mode for the material.
+ * You can visualize several components for diagnosis using debug mode.
+ *
+ * See: {@link MToonMaterialDebugMode}
+ */
+ get debugMode() {
+ return this._debugMode;
+ }
+ /**
+ * Debug mode for the material.
+ * You can visualize several components for diagnosis using debug mode.
+ *
+ * See: {@link MToonMaterialDebugMode}
+ */
+ set debugMode(m) {
+ this._debugMode = m;
+ this.needsUpdate = true;
+ }
+ get outlineWidthMode() {
+ return this._outlineWidthMode;
+ }
+ set outlineWidthMode(m) {
+ this._outlineWidthMode = m;
+ this.needsUpdate = true;
+ }
+ get isOutline() {
+ return this._isOutline;
+ }
+ set isOutline(b) {
+ this._isOutline = b;
+ this.needsUpdate = true;
+ }
+ /**
+ * Readonly boolean that indicates this is a [[MToonMaterial]].
+ */
+ get isMToonMaterial() {
+ return true;
+ }
+ constructor(parameters = {}) {
+ super({ vertexShader, fragmentShader });
+ this.uvAnimationScrollXSpeedFactor = 0.0;
+ this.uvAnimationScrollYSpeedFactor = 0.0;
+ this.uvAnimationRotationSpeedFactor = 0.0;
+ /**
+ * Whether the material is affected by fog.
+ * `true` by default.
+ */
+ this.fog = true;
+ /**
+ * Will be read in WebGLPrograms
+ *
+ * See: https://github.com/mrdoob/three.js/blob/4f5236ac3d6f41d904aa58401b40554e8fbdcb15/src/renderers/webgl/WebGLPrograms.js#L190-L191
+ */
+ this.normalMapType = THREE__namespace.TangentSpaceNormalMap;
+ /**
+ * When this is `true`, vertex colors will be ignored.
+ * `true` by default.
+ */
+ this._ignoreVertexColor = true;
+ this._v0CompatShade = false;
+ this._debugMode = MToonMaterialDebugMode.None;
+ this._outlineWidthMode = MToonMaterialOutlineWidthMode.None;
+ this._isOutline = false;
+ // override depthWrite with transparentWithZWrite
+ if (parameters.transparentWithZWrite) {
+ parameters.depthWrite = true;
+ }
+ delete parameters.transparentWithZWrite;
+ // == enabling bunch of stuff ==================================================================
+ parameters.fog = true;
+ parameters.lights = true;
+ parameters.clipping = true;
+ // COMPAT: pre-r129
+ // See: https://github.com/mrdoob/three.js/pull/21788
+ if (parseInt(THREE__namespace.REVISION, 10) < 129) {
+ parameters.skinning = parameters.skinning || false;
+ }
+ // COMPAT: pre-r131
+ // See: https://github.com/mrdoob/three.js/pull/22169
+ if (parseInt(THREE__namespace.REVISION, 10) < 131) {
+ parameters.morphTargets = parameters.morphTargets || false;
+ parameters.morphNormals = parameters.morphNormals || false;
+ }
+ // == uniforms =================================================================================
+ this.uniforms = THREE__namespace.UniformsUtils.merge([
+ THREE__namespace.UniformsLib.common,
+ THREE__namespace.UniformsLib.normalmap,
+ THREE__namespace.UniformsLib.emissivemap,
+ THREE__namespace.UniformsLib.fog,
+ THREE__namespace.UniformsLib.lights,
+ {
+ litFactor: { value: new THREE__namespace.Color(1.0, 1.0, 1.0) },
+ mapUvTransform: { value: new THREE__namespace.Matrix3() },
+ colorAlpha: { value: 1.0 },
+ normalMapUvTransform: { value: new THREE__namespace.Matrix3() },
+ shadeColorFactor: { value: new THREE__namespace.Color(0.97, 0.81, 0.86) },
+ shadeMultiplyTexture: { value: null },
+ shadeMultiplyTextureUvTransform: { value: new THREE__namespace.Matrix3() },
+ shadingShiftFactor: { value: 0.0 },
+ shadingShiftTexture: { value: null },
+ shadingShiftTextureUvTransform: { value: new THREE__namespace.Matrix3() },
+ shadingShiftTextureScale: { value: 1.0 },
+ shadingToonyFactor: { value: 0.9 },
+ giEqualizationFactor: { value: 0.9 },
+ matcapFactor: { value: new THREE__namespace.Color(0.0, 0.0, 0.0) },
+ matcapTexture: { value: null },
+ matcapTextureUvTransform: { value: new THREE__namespace.Matrix3() },
+ parametricRimColorFactor: { value: new THREE__namespace.Color(0.0, 0.0, 0.0) },
+ rimMultiplyTexture: { value: null },
+ rimMultiplyTextureUvTransform: { value: new THREE__namespace.Matrix3() },
+ rimLightingMixFactor: { value: 0.0 },
+ parametricRimFresnelPowerFactor: { value: 1.0 },
+ parametricRimLiftFactor: { value: 0.0 },
+ emissive: { value: new THREE__namespace.Color(0.0, 0.0, 0.0) },
+ emissiveIntensity: { value: 1.0 },
+ emissiveMapUvTransform: { value: new THREE__namespace.Matrix3() },
+ outlineWidthMultiplyTexture: { value: null },
+ outlineWidthMultiplyTextureUvTransform: { value: new THREE__namespace.Matrix3() },
+ outlineWidthFactor: { value: 0.5 },
+ outlineColorFactor: { value: new THREE__namespace.Color(0.0, 0.0, 0.0) },
+ outlineLightingMixFactor: { value: 1.0 },
+ uvAnimationMaskTexture: { value: null },
+ uvAnimationMaskTextureUvTransform: { value: new THREE__namespace.Matrix3() },
+ uvAnimationScrollXOffset: { value: 0.0 },
+ uvAnimationScrollYOffset: { value: 0.0 },
+ uvAnimationRotationPhase: { value: 0.0 },
+ },
+ parameters.uniforms,
+ ]);
+ // == finally compile the shader program =======================================================
+ this.setValues(parameters);
+ // == upload uniforms that need to upload ======================================================
+ this._uploadUniformsWorkaround();
+ // == update shader stuff ======================================================================
+ this.customProgramCacheKey = () => [
+ ...Object.entries(this._generateDefines()).map(([token, macro]) => `${token}:${macro}`),
+ this.matcapTexture ? `matcapTextureColorSpace:${getTextureColorSpace(this.matcapTexture)}` : '',
+ this.shadeMultiplyTexture
+ ? `shadeMultiplyTextureColorSpace:${getTextureColorSpace(this.shadeMultiplyTexture)}`
+ : '',
+ this.rimMultiplyTexture ? `rimMultiplyTextureColorSpace:${getTextureColorSpace(this.rimMultiplyTexture)}` : '',
+ ].join(',');
+ this.onBeforeCompile = (shader) => {
+ const threeRevision = parseInt(THREE__namespace.REVISION, 10);
+ const defines = Object.entries(Object.assign(Object.assign({}, this._generateDefines()), this.defines))
+ .filter(([token, macro]) => !!macro)
+ .map(([token, macro]) => `#define ${token} ${macro}`)
+ .join('\n') + '\n';
+ // -- generate shader code -------------------------------------------------------------------
+ shader.vertexShader = defines + shader.vertexShader;
+ shader.fragmentShader = defines + shader.fragmentShader;
+ // -- compat ---------------------------------------------------------------------------------
+ // COMPAT: pre-r154
+ // Three.js r154 renames the shader chunk to
+ if (threeRevision < 154) {
+ shader.fragmentShader = shader.fragmentShader.replace('#include ', '#include ');
+ }
+ // COMPAT: pre-r132
+ // Three.js r132 introduces new shader chunks and
+ if (threeRevision < 132) {
+ shader.fragmentShader = shader.fragmentShader.replace('#include ', '');
+ shader.fragmentShader = shader.fragmentShader.replace('#include ', '');
+ }
+ };
+ }
+ /**
+ * Update this material.
+ *
+ * @param delta deltaTime since last update
+ */
+ update(delta) {
+ this._uploadUniformsWorkaround();
+ this._updateUVAnimation(delta);
+ }
+ copy(source) {
+ super.copy(source);
+ // uniforms are already copied at this moment
+ // Beginning from r133, uniform textures will be cloned instead of reference
+ // See: https://github.com/mrdoob/three.js/blob/a8813be04a849bd155f7cf6f1b23d8ee2e0fb48b/examples/jsm/loaders/GLTFLoader.js#L3047
+ // See: https://github.com/mrdoob/three.js/blob/a8813be04a849bd155f7cf6f1b23d8ee2e0fb48b/src/renderers/shaders/UniformsUtils.js#L22
+ // This will leave their `.version` to be `0`
+ // and these textures won't be uploaded to GPU
+ // We are going to workaround this in here
+ // I've opened an issue for this: https://github.com/mrdoob/three.js/issues/22718
+ this.map = source.map;
+ this.normalMap = source.normalMap;
+ this.emissiveMap = source.emissiveMap;
+ this.shadeMultiplyTexture = source.shadeMultiplyTexture;
+ this.shadingShiftTexture = source.shadingShiftTexture;
+ this.matcapTexture = source.matcapTexture;
+ this.rimMultiplyTexture = source.rimMultiplyTexture;
+ this.outlineWidthMultiplyTexture = source.outlineWidthMultiplyTexture;
+ this.uvAnimationMaskTexture = source.uvAnimationMaskTexture;
+ // == copy members =============================================================================
+ this.normalMapType = source.normalMapType;
+ this.uvAnimationScrollXSpeedFactor = source.uvAnimationScrollXSpeedFactor;
+ this.uvAnimationScrollYSpeedFactor = source.uvAnimationScrollYSpeedFactor;
+ this.uvAnimationRotationSpeedFactor = source.uvAnimationRotationSpeedFactor;
+ this.ignoreVertexColor = source.ignoreVertexColor;
+ this.v0CompatShade = source.v0CompatShade;
+ this.debugMode = source.debugMode;
+ this.outlineWidthMode = source.outlineWidthMode;
+ this.isOutline = source.isOutline;
+ // == update shader stuff ======================================================================
+ this.needsUpdate = true;
+ return this;
+ }
+ /**
+ * Update UV animation state.
+ * Intended to be called via {@link update}.
+ * @param delta deltaTime
+ */
+ _updateUVAnimation(delta) {
+ this.uniforms.uvAnimationScrollXOffset.value += delta * this.uvAnimationScrollXSpeedFactor;
+ this.uniforms.uvAnimationScrollYOffset.value += delta * this.uvAnimationScrollYSpeedFactor;
+ this.uniforms.uvAnimationRotationPhase.value += delta * this.uvAnimationRotationSpeedFactor;
+ this.uniformsNeedUpdate = true;
+ }
+ /**
+ * Upload uniforms that need to upload but doesn't automatically because of reasons.
+ * Intended to be called via {@link constructor} and {@link update}.
+ */
+ _uploadUniformsWorkaround() {
+ // workaround: since opacity is defined as a property in THREE.Material
+ // and cannot be overridden as an accessor,
+ // We are going to update opacity here
+ this.uniforms.opacity.value = this.opacity;
+ // workaround: texture transforms are not updated automatically
+ this._updateTextureMatrix(this.uniforms.map, this.uniforms.mapUvTransform);
+ this._updateTextureMatrix(this.uniforms.normalMap, this.uniforms.normalMapUvTransform);
+ this._updateTextureMatrix(this.uniforms.emissiveMap, this.uniforms.emissiveMapUvTransform);
+ this._updateTextureMatrix(this.uniforms.shadeMultiplyTexture, this.uniforms.shadeMultiplyTextureUvTransform);
+ this._updateTextureMatrix(this.uniforms.shadingShiftTexture, this.uniforms.shadingShiftTextureUvTransform);
+ this._updateTextureMatrix(this.uniforms.matcapTexture, this.uniforms.matcapTextureUvTransform);
+ this._updateTextureMatrix(this.uniforms.rimMultiplyTexture, this.uniforms.rimMultiplyTextureUvTransform);
+ this._updateTextureMatrix(this.uniforms.outlineWidthMultiplyTexture, this.uniforms.outlineWidthMultiplyTextureUvTransform);
+ this._updateTextureMatrix(this.uniforms.uvAnimationMaskTexture, this.uniforms.uvAnimationMaskTextureUvTransform);
+ // COMPAT workaround: starting from r132, alphaTest becomes a uniform instead of preprocessor value
+ const threeRevision = parseInt(THREE__namespace.REVISION, 10);
+ if (threeRevision >= 132) {
+ this.uniforms.alphaTest.value = this.alphaTest;
+ }
+ this.uniformsNeedUpdate = true;
+ }
+ /**
+ * Returns a map object of preprocessor token and macro of the shader program.
+ */
+ _generateDefines() {
+ const threeRevision = parseInt(THREE__namespace.REVISION, 10);
+ const useUvInVert = this.outlineWidthMultiplyTexture !== null;
+ const useUvInFrag = this.map !== null ||
+ this.emissiveMap !== null ||
+ this.shadeMultiplyTexture !== null ||
+ this.shadingShiftTexture !== null ||
+ this.rimMultiplyTexture !== null ||
+ this.uvAnimationMaskTexture !== null;
+ return {
+ // Temporary compat against shader change @ Three.js r126
+ // See: #21205, #21307, #21299
+ THREE_VRM_THREE_REVISION: threeRevision,
+ OUTLINE: this._isOutline,
+ MTOON_USE_UV: useUvInVert || useUvInFrag,
+ MTOON_UVS_VERTEX_ONLY: useUvInVert && !useUvInFrag,
+ V0_COMPAT_SHADE: this._v0CompatShade,
+ USE_SHADEMULTIPLYTEXTURE: this.shadeMultiplyTexture !== null,
+ USE_SHADINGSHIFTTEXTURE: this.shadingShiftTexture !== null,
+ USE_MATCAPTEXTURE: this.matcapTexture !== null,
+ USE_RIMMULTIPLYTEXTURE: this.rimMultiplyTexture !== null,
+ USE_OUTLINEWIDTHMULTIPLYTEXTURE: this._isOutline && this.outlineWidthMultiplyTexture !== null,
+ USE_UVANIMATIONMASKTEXTURE: this.uvAnimationMaskTexture !== null,
+ IGNORE_VERTEX_COLOR: this._ignoreVertexColor === true,
+ DEBUG_NORMAL: this._debugMode === 'normal',
+ DEBUG_LITSHADERATE: this._debugMode === 'litShadeRate',
+ DEBUG_UV: this._debugMode === 'uv',
+ OUTLINE_WIDTH_WORLD: this._isOutline && this._outlineWidthMode === MToonMaterialOutlineWidthMode.WorldCoordinates,
+ OUTLINE_WIDTH_SCREEN: this._isOutline && this._outlineWidthMode === MToonMaterialOutlineWidthMode.ScreenCoordinates,
+ };
+ }
+ _updateTextureMatrix(src, dst) {
+ if (src.value) {
+ if (src.value.matrixAutoUpdate) {
+ src.value.updateMatrix();
+ }
+ dst.value.copy(src.value.matrix);
+ }
+ }
+ }
+
+ const colorSpaceEncodingMap = {
+ '': 3000,
+ srgb: 3001,
+ };
+ /**
+ * A compat function to set texture color space.
+ *
+ * COMPAT: pre-r152
+ * Starting from Three.js r152, `texture.encoding` is renamed to `texture.colorSpace`.
+ * This function will handle the comapt.
+ *
+ * @param texture The texture you want to set the color space to
+ * @param colorSpace The color space you want to set to the texture
+ */
+ function setTextureColorSpace(texture, colorSpace) {
+ if (parseInt(THREE__namespace.REVISION, 10) >= 152) {
+ texture.colorSpace = colorSpace;
+ }
+ else {
+ texture.encoding = colorSpaceEncodingMap[colorSpace];
+ }
+ }
+
+ /**
+ * MaterialParameters hates `undefined`. This helper automatically rejects assign of these `undefined`.
+ * It also handles asynchronous process of textures.
+ * Make sure await for {@link GLTFMToonMaterialParamsAssignHelper.pending}.
+ */
+ class GLTFMToonMaterialParamsAssignHelper {
+ get pending() {
+ return Promise.all(this._pendings);
+ }
+ constructor(parser, materialParams) {
+ this._parser = parser;
+ this._materialParams = materialParams;
+ this._pendings = [];
+ }
+ assignPrimitive(key, value) {
+ if (value != null) {
+ this._materialParams[key] = value;
+ }
+ }
+ assignColor(key, value, convertSRGBToLinear) {
+ if (value != null) {
+ this._materialParams[key] = new THREE__namespace.Color().fromArray(value);
+ if (convertSRGBToLinear) {
+ this._materialParams[key].convertSRGBToLinear();
+ }
+ }
+ }
+ assignTexture(key, texture, isColorTexture) {
+ return __awaiter$4(this, void 0, void 0, function* () {
+ const promise = (() => __awaiter$4(this, void 0, void 0, function* () {
+ if (texture != null) {
+ yield this._parser.assignTexture(this._materialParams, key, texture);
+ if (isColorTexture) {
+ setTextureColorSpace(this._materialParams[key], 'srgb');
+ }
+ }
+ }))();
+ this._pendings.push(promise);
+ return promise;
+ });
+ }
+ assignTextureByIndex(key, textureIndex, isColorTexture) {
+ return __awaiter$4(this, void 0, void 0, function* () {
+ return this.assignTexture(key, textureIndex != null ? { index: textureIndex } : undefined, isColorTexture);
+ });
+ }
+ }
+
+ /**
+ * Possible spec versions it recognizes.
+ */
+ const POSSIBLE_SPEC_VERSIONS$2 = new Set(['1.0', '1.0-beta']);
+ class MToonMaterialLoaderPlugin {
+ get name() {
+ return MToonMaterialLoaderPlugin.EXTENSION_NAME;
+ }
+ constructor(parser, options = {}) {
+ var _a, _b, _c;
+ this.parser = parser;
+ this.renderOrderOffset = (_a = options.renderOrderOffset) !== null && _a !== void 0 ? _a : 0;
+ this.v0CompatShade = (_b = options.v0CompatShade) !== null && _b !== void 0 ? _b : false;
+ this.debugMode = (_c = options.debugMode) !== null && _c !== void 0 ? _c : 'none';
+ this._mToonMaterialSet = new Set();
+ }
+ beforeRoot() {
+ return __awaiter$4(this, void 0, void 0, function* () {
+ this._removeUnlitExtensionIfMToonExists();
+ });
+ }
+ afterRoot(gltf) {
+ return __awaiter$4(this, void 0, void 0, function* () {
+ gltf.userData.vrmMToonMaterials = Array.from(this._mToonMaterialSet);
+ });
+ }
+ getMaterialType(materialIndex) {
+ const v1Extension = this._getMToonExtension(materialIndex);
+ if (v1Extension) {
+ return MToonMaterial;
+ }
+ return null;
+ }
+ extendMaterialParams(materialIndex, materialParams) {
+ const extension = this._getMToonExtension(materialIndex);
+ if (extension) {
+ return this._extendMaterialParams(extension, materialParams);
+ }
+ return null;
+ }
+ loadMesh(meshIndex) {
+ var _a;
+ return __awaiter$4(this, void 0, void 0, function* () {
+ const parser = this.parser;
+ const json = parser.json;
+ const meshDef = (_a = json.meshes) === null || _a === void 0 ? void 0 : _a[meshIndex];
+ if (meshDef == null) {
+ throw new Error(`MToonMaterialLoaderPlugin: Attempt to use meshes[${meshIndex}] of glTF but the mesh doesn't exist`);
+ }
+ const primitivesDef = meshDef.primitives;
+ const meshOrGroup = yield parser.loadMesh(meshIndex);
+ if (primitivesDef.length === 1) {
+ const mesh = meshOrGroup;
+ const materialIndex = primitivesDef[0].material;
+ if (materialIndex != null) {
+ this._setupPrimitive(mesh, materialIndex);
+ }
+ }
+ else {
+ const group = meshOrGroup;
+ for (let i = 0; i < primitivesDef.length; i++) {
+ const mesh = group.children[i];
+ const materialIndex = primitivesDef[i].material;
+ if (materialIndex != null) {
+ this._setupPrimitive(mesh, materialIndex);
+ }
+ }
+ }
+ return meshOrGroup;
+ });
+ }
+ /**
+ * Delete use of `KHR_materials_unlit` from its `materials` if the material is using MToon.
+ *
+ * Since GLTFLoader have so many hardcoded procedure related to `KHR_materials_unlit`
+ * we have to delete the extension before we start to parse the glTF.
+ */
+ _removeUnlitExtensionIfMToonExists() {
+ const parser = this.parser;
+ const json = parser.json;
+ const materialDefs = json.materials;
+ materialDefs === null || materialDefs === void 0 ? void 0 : materialDefs.map((materialDef, iMaterial) => {
+ var _a;
+ const extension = this._getMToonExtension(iMaterial);
+ if (extension && ((_a = materialDef.extensions) === null || _a === void 0 ? void 0 : _a['KHR_materials_unlit'])) {
+ delete materialDef.extensions['KHR_materials_unlit'];
+ }
+ });
+ }
+ _getMToonExtension(materialIndex) {
+ var _a, _b;
+ const parser = this.parser;
+ const json = parser.json;
+ const materialDef = (_a = json.materials) === null || _a === void 0 ? void 0 : _a[materialIndex];
+ if (materialDef == null) {
+ console.warn(`MToonMaterialLoaderPlugin: Attempt to use materials[${materialIndex}] of glTF but the material doesn't exist`);
+ return undefined;
+ }
+ const extension = (_b = materialDef.extensions) === null || _b === void 0 ? void 0 : _b[MToonMaterialLoaderPlugin.EXTENSION_NAME];
+ if (extension == null) {
+ return undefined;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS$2.has(specVersion)) {
+ console.warn(`MToonMaterialLoaderPlugin: Unknown ${MToonMaterialLoaderPlugin.EXTENSION_NAME} specVersion "${specVersion}"`);
+ return undefined;
+ }
+ return extension;
+ }
+ _extendMaterialParams(extension, materialParams) {
+ var _a;
+ return __awaiter$4(this, void 0, void 0, function* () {
+ // Removing material params that is not required to supress warnings.
+ delete materialParams.metalness;
+ delete materialParams.roughness;
+ const assignHelper = new GLTFMToonMaterialParamsAssignHelper(this.parser, materialParams);
+ assignHelper.assignPrimitive('transparentWithZWrite', extension.transparentWithZWrite);
+ assignHelper.assignColor('shadeColorFactor', extension.shadeColorFactor);
+ assignHelper.assignTexture('shadeMultiplyTexture', extension.shadeMultiplyTexture, true);
+ assignHelper.assignPrimitive('shadingShiftFactor', extension.shadingShiftFactor);
+ assignHelper.assignTexture('shadingShiftTexture', extension.shadingShiftTexture, true);
+ assignHelper.assignPrimitive('shadingShiftTextureScale', (_a = extension.shadingShiftTexture) === null || _a === void 0 ? void 0 : _a.scale);
+ assignHelper.assignPrimitive('shadingToonyFactor', extension.shadingToonyFactor);
+ assignHelper.assignPrimitive('giEqualizationFactor', extension.giEqualizationFactor);
+ assignHelper.assignColor('matcapFactor', extension.matcapFactor);
+ assignHelper.assignTexture('matcapTexture', extension.matcapTexture, true);
+ assignHelper.assignColor('parametricRimColorFactor', extension.parametricRimColorFactor);
+ assignHelper.assignTexture('rimMultiplyTexture', extension.rimMultiplyTexture, true);
+ assignHelper.assignPrimitive('rimLightingMixFactor', extension.rimLightingMixFactor);
+ assignHelper.assignPrimitive('parametricRimFresnelPowerFactor', extension.parametricRimFresnelPowerFactor);
+ assignHelper.assignPrimitive('parametricRimLiftFactor', extension.parametricRimLiftFactor);
+ assignHelper.assignPrimitive('outlineWidthMode', extension.outlineWidthMode);
+ assignHelper.assignPrimitive('outlineWidthFactor', extension.outlineWidthFactor);
+ assignHelper.assignTexture('outlineWidthMultiplyTexture', extension.outlineWidthMultiplyTexture, false);
+ assignHelper.assignColor('outlineColorFactor', extension.outlineColorFactor);
+ assignHelper.assignPrimitive('outlineLightingMixFactor', extension.outlineLightingMixFactor);
+ assignHelper.assignTexture('uvAnimationMaskTexture', extension.uvAnimationMaskTexture, false);
+ assignHelper.assignPrimitive('uvAnimationScrollXSpeedFactor', extension.uvAnimationScrollXSpeedFactor);
+ assignHelper.assignPrimitive('uvAnimationScrollYSpeedFactor', extension.uvAnimationScrollYSpeedFactor);
+ assignHelper.assignPrimitive('uvAnimationRotationSpeedFactor', extension.uvAnimationRotationSpeedFactor);
+ assignHelper.assignPrimitive('v0CompatShade', this.v0CompatShade);
+ assignHelper.assignPrimitive('debugMode', this.debugMode);
+ yield assignHelper.pending;
+ });
+ }
+ /**
+ * This will do two processes that is required to render MToon properly.
+ *
+ * - Set render order
+ * - Generate outline
+ *
+ * @param mesh A target GLTF primitive
+ * @param materialIndex The material index of the primitive
+ */
+ _setupPrimitive(mesh, materialIndex) {
+ const extension = this._getMToonExtension(materialIndex);
+ if (extension) {
+ const renderOrder = this._parseRenderOrder(extension);
+ mesh.renderOrder = renderOrder + this.renderOrderOffset;
+ this._generateOutline(mesh);
+ this._addToMaterialSet(mesh);
+ return;
+ }
+ }
+ /**
+ * Generate outline for the given mesh, if it needs.
+ *
+ * @param mesh The target mesh
+ */
+ _generateOutline(mesh) {
+ // OK, it's the hacky part.
+ // We are going to duplicate the MToonMaterial for outline use.
+ // Then we are going to create two geometry groups and refer same buffer but different material.
+ // It's how we draw two materials at once using a single mesh.
+ // make sure the material is mtoon
+ const surfaceMaterial = mesh.material;
+ if (!(surfaceMaterial instanceof MToonMaterial)) {
+ return;
+ }
+ // check whether we really have to prepare outline or not
+ if (surfaceMaterial.outlineWidthMode === 'none' || surfaceMaterial.outlineWidthFactor <= 0.0) {
+ return;
+ }
+ // make its material an array
+ mesh.material = [surfaceMaterial]; // mesh.material is guaranteed to be a Material in GLTFLoader
+ // duplicate the material for outline use
+ const outlineMaterial = surfaceMaterial.clone();
+ outlineMaterial.name += ' (Outline)';
+ outlineMaterial.isOutline = true;
+ outlineMaterial.side = THREE__namespace.BackSide;
+ mesh.material.push(outlineMaterial);
+ // make two geometry groups out of a same buffer
+ const geometry = mesh.geometry; // mesh.geometry is guaranteed to be a BufferGeometry in GLTFLoader
+ const primitiveVertices = geometry.index ? geometry.index.count : geometry.attributes.position.count / 3;
+ geometry.addGroup(0, primitiveVertices, 0);
+ geometry.addGroup(0, primitiveVertices, 1);
+ }
+ _addToMaterialSet(mesh) {
+ const materialOrMaterials = mesh.material;
+ const materialSet = new Set();
+ if (Array.isArray(materialOrMaterials)) {
+ materialOrMaterials.forEach((material) => materialSet.add(material));
+ }
+ else {
+ materialSet.add(materialOrMaterials);
+ }
+ for (const material of materialSet) {
+ if (material instanceof MToonMaterial) {
+ this._mToonMaterialSet.add(material);
+ }
+ }
+ }
+ _parseRenderOrder(extension) {
+ var _a;
+ // transparentWithZWrite ranges from 0 to +9
+ // mere transparent ranges from -9 to 0
+ const enabledZWrite = extension.transparentWithZWrite;
+ return (enabledZWrite ? 0 : 19) + ((_a = extension.renderQueueOffsetNumber) !== null && _a !== void 0 ? _a : 0);
+ }
+ }
+ MToonMaterialLoaderPlugin.EXTENSION_NAME = 'VRMC_materials_mtoon';
+
+ /*!
+ * @pixiv/three-vrm-materials-hdr-emissive-multiplier v2.0.6
+ * Support VRMC_hdr_emissiveMultiplier for @pixiv/three-vrm
+ *
+ * Copyright (c) 2020-2023 pixiv Inc.
+ * @pixiv/three-vrm-materials-hdr-emissive-multiplier is distributed under MIT License
+ * https://github.com/pixiv/three-vrm/blob/release/LICENSE
+ */
+ /******************************************************************************
+ Copyright (c) Microsoft Corporation.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** */
+
+ function __awaiter$3(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ }
+
+ class VRMMaterialsHDREmissiveMultiplierLoaderPlugin {
+ get name() {
+ return VRMMaterialsHDREmissiveMultiplierLoaderPlugin.EXTENSION_NAME;
+ }
+ constructor(parser) {
+ this.parser = parser;
+ }
+ extendMaterialParams(materialIndex, materialParams) {
+ return __awaiter$3(this, void 0, void 0, function* () {
+ const extension = this._getHDREmissiveMultiplierExtension(materialIndex);
+ if (extension == null) {
+ return;
+ }
+ // This extension is archived. Emit warning
+ // See: https://github.com/vrm-c/vrm-specification/pull/375
+ console.warn('VRMMaterialsHDREmissiveMultiplierLoaderPlugin: `VRMC_materials_hdr_emissiveMultiplier` is archived. Use `KHR_materials_emissive_strength` instead.');
+ const emissiveMultiplier = extension.emissiveMultiplier;
+ materialParams.emissiveIntensity = emissiveMultiplier;
+ });
+ }
+ _getHDREmissiveMultiplierExtension(materialIndex) {
+ var _a, _b;
+ const parser = this.parser;
+ const json = parser.json;
+ const materialDef = (_a = json.materials) === null || _a === void 0 ? void 0 : _a[materialIndex];
+ if (materialDef == null) {
+ console.warn(`VRMMaterialsHDREmissiveMultiplierLoaderPlugin: Attempt to use materials[${materialIndex}] of glTF but the material doesn't exist`);
+ return undefined;
+ }
+ const extension = (_b = materialDef.extensions) === null || _b === void 0 ? void 0 : _b[VRMMaterialsHDREmissiveMultiplierLoaderPlugin.EXTENSION_NAME];
+ if (extension == null) {
+ return undefined;
+ }
+ return extension;
+ }
+ }
+ VRMMaterialsHDREmissiveMultiplierLoaderPlugin.EXTENSION_NAME = 'VRMC_materials_hdr_emissiveMultiplier';
+
+ /*!
+ * @pixiv/three-vrm-materials-v0compat v2.0.6
+ * VRM0.0 materials compatibility layer plugin for @pixiv/three-vrm
+ *
+ * Copyright (c) 2020-2023 pixiv Inc.
+ * @pixiv/three-vrm-materials-v0compat is distributed under MIT License
+ * https://github.com/pixiv/three-vrm/blob/release/LICENSE
+ */
+
+ /******************************************************************************
+ Copyright (c) Microsoft Corporation.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** */
+
+ function __awaiter$2(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ }
+
+ function gammaEOTF(e) {
+ return Math.pow(e, 2.2);
+ }
+
+ class VRMMaterialsV0CompatPlugin {
+ get name() {
+ return 'VRMMaterialsV0CompatPlugin';
+ }
+ constructor(parser) {
+ var _a;
+ this.parser = parser;
+ this._renderQueueMapTransparent = new Map();
+ this._renderQueueMapTransparentZWrite = new Map();
+ // WORKAROUND: Add KHR_texture_transform to extensionsUsed
+ // It is too late to add this in beforeRoot
+ const json = this.parser.json;
+ json.extensionsUsed = (_a = json.extensionsUsed) !== null && _a !== void 0 ? _a : [];
+ if (json.extensionsUsed.indexOf('KHR_texture_transform') === -1) {
+ json.extensionsUsed.push('KHR_texture_transform');
+ }
+ }
+ beforeRoot() {
+ var _a;
+ return __awaiter$2(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use V0VRM
+ const v0VRMExtension = (_a = json.extensions) === null || _a === void 0 ? void 0 : _a['VRM'];
+ const v0MaterialProperties = v0VRMExtension === null || v0VRMExtension === void 0 ? void 0 : v0VRMExtension.materialProperties;
+ if (!v0MaterialProperties) {
+ return;
+ }
+ // populate render queue map
+ this._populateRenderQueueMap(v0MaterialProperties);
+ // convert V0 material properties into V1 compatible format
+ v0MaterialProperties.forEach((materialProperties, materialIndex) => {
+ var _a, _b;
+ const materialDef = (_a = json.materials) === null || _a === void 0 ? void 0 : _a[materialIndex];
+ if (materialDef == null) {
+ console.warn(`VRMMaterialsV0CompatPlugin: Attempt to use materials[${materialIndex}] of glTF but the material doesn't exist`);
+ return;
+ }
+ if (materialProperties.shader === 'VRM/MToon') {
+ const material = this._parseV0MToonProperties(materialProperties, materialDef);
+ json.materials[materialIndex] = material;
+ }
+ else if ((_b = materialProperties.shader) === null || _b === void 0 ? void 0 : _b.startsWith('VRM/Unlit')) {
+ const material = this._parseV0UnlitProperties(materialProperties, materialDef);
+ json.materials[materialIndex] = material;
+ }
+ else if (materialProperties.shader === 'VRM_USE_GLTFSHADER') ;
+ else {
+ console.warn(`VRMMaterialsV0CompatPlugin: Unknown shader: ${materialProperties.shader}`);
+ }
+ });
+ });
+ }
+ _parseV0MToonProperties(materialProperties, schemaMaterial) {
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19;
+ const isTransparent = (_b = (_a = materialProperties.keywordMap) === null || _a === void 0 ? void 0 : _a['_ALPHABLEND_ON']) !== null && _b !== void 0 ? _b : false;
+ const enabledZWrite = ((_c = materialProperties.floatProperties) === null || _c === void 0 ? void 0 : _c['_ZWrite']) === 1;
+ const transparentWithZWrite = enabledZWrite && isTransparent;
+ const renderQueueOffsetNumber = this._v0ParseRenderQueue(materialProperties);
+ const isCutoff = (_e = (_d = materialProperties.keywordMap) === null || _d === void 0 ? void 0 : _d['_ALPHATEST_ON']) !== null && _e !== void 0 ? _e : false;
+ const alphaMode = isTransparent ? 'BLEND' : isCutoff ? 'MASK' : 'OPAQUE';
+ const alphaCutoff = isCutoff ? (_f = materialProperties.floatProperties) === null || _f === void 0 ? void 0 : _f['_Cutoff'] : undefined;
+ const cullMode = (_h = (_g = materialProperties.floatProperties) === null || _g === void 0 ? void 0 : _g['_CullMode']) !== null && _h !== void 0 ? _h : 2; // enum, { Off, Front, Back }
+ const doubleSided = cullMode === 0;
+ const textureTransformExt = this._portTextureTransform(materialProperties);
+ const baseColorFactor = (_k = (_j = materialProperties.vectorProperties) === null || _j === void 0 ? void 0 : _j['_Color']) === null || _k === void 0 ? void 0 : _k.map((v, i) => (i === 3 ? v : gammaEOTF(v)));
+ const baseColorTextureIndex = (_l = materialProperties.textureProperties) === null || _l === void 0 ? void 0 : _l['_MainTex'];
+ const baseColorTexture = baseColorTextureIndex != null
+ ? {
+ index: baseColorTextureIndex,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ const normalTextureScale = (_m = materialProperties.floatProperties) === null || _m === void 0 ? void 0 : _m['_BumpScale'];
+ const normalTextureIndex = (_o = materialProperties.textureProperties) === null || _o === void 0 ? void 0 : _o['_BumpMap'];
+ const normalTexture = normalTextureIndex != null
+ ? {
+ index: normalTextureIndex,
+ scale: normalTextureScale,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ const emissiveFactor = (_q = (_p = materialProperties.vectorProperties) === null || _p === void 0 ? void 0 : _p['_EmissionColor']) === null || _q === void 0 ? void 0 : _q.map(gammaEOTF);
+ const emissiveTextureIndex = (_r = materialProperties.textureProperties) === null || _r === void 0 ? void 0 : _r['_EmissionMap'];
+ const emissiveTexture = emissiveTextureIndex != null
+ ? {
+ index: emissiveTextureIndex,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ const shadeColorFactor = (_t = (_s = materialProperties.vectorProperties) === null || _s === void 0 ? void 0 : _s['_ShadeColor']) === null || _t === void 0 ? void 0 : _t.map(gammaEOTF);
+ const shadeMultiplyTextureIndex = (_u = materialProperties.textureProperties) === null || _u === void 0 ? void 0 : _u['_ShadeTexture'];
+ const shadeMultiplyTexture = shadeMultiplyTextureIndex != null
+ ? {
+ index: shadeMultiplyTextureIndex,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ // // convert v0 shade shift / shade toony
+ let shadingShiftFactor = (_w = (_v = materialProperties.floatProperties) === null || _v === void 0 ? void 0 : _v['_ShadeShift']) !== null && _w !== void 0 ? _w : 0.0;
+ let shadingToonyFactor = (_y = (_x = materialProperties.floatProperties) === null || _x === void 0 ? void 0 : _x['_ShadeToony']) !== null && _y !== void 0 ? _y : 0.9;
+ shadingToonyFactor = THREE__namespace.MathUtils.lerp(shadingToonyFactor, 1.0, 0.5 + 0.5 * shadingShiftFactor);
+ shadingShiftFactor = -shadingShiftFactor - (1.0 - shadingToonyFactor);
+ const giIntensityFactor = (_z = materialProperties.floatProperties) === null || _z === void 0 ? void 0 : _z['_IndirectLightIntensity'];
+ const giEqualizationFactor = giIntensityFactor ? 1.0 - giIntensityFactor : undefined;
+ const matcapTextureIndex = (_0 = materialProperties.textureProperties) === null || _0 === void 0 ? void 0 : _0['_SphereAdd'];
+ const matcapFactor = matcapTextureIndex != null ? [1.0, 1.0, 1.0] : undefined;
+ const matcapTexture = matcapTextureIndex != null
+ ? {
+ index: matcapTextureIndex,
+ }
+ : undefined;
+ const rimLightingMixFactor = (_1 = materialProperties.floatProperties) === null || _1 === void 0 ? void 0 : _1['_RimLightingMix'];
+ const rimMultiplyTextureIndex = (_2 = materialProperties.textureProperties) === null || _2 === void 0 ? void 0 : _2['_RimTexture'];
+ const rimMultiplyTexture = rimMultiplyTextureIndex != null
+ ? {
+ index: rimMultiplyTextureIndex,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ const parametricRimColorFactor = (_4 = (_3 = materialProperties.vectorProperties) === null || _3 === void 0 ? void 0 : _3['_RimColor']) === null || _4 === void 0 ? void 0 : _4.map(gammaEOTF);
+ const parametricRimFresnelPowerFactor = (_5 = materialProperties.floatProperties) === null || _5 === void 0 ? void 0 : _5['_RimFresnelPower'];
+ const parametricRimLiftFactor = (_6 = materialProperties.floatProperties) === null || _6 === void 0 ? void 0 : _6['_RimLift'];
+ const outlineWidthMode = ['none', 'worldCoordinates', 'screenCoordinates'][(_8 = (_7 = materialProperties.floatProperties) === null || _7 === void 0 ? void 0 : _7['_OutlineWidthMode']) !== null && _8 !== void 0 ? _8 : 0];
+ // // v0 outlineWidthFactor is in centimeter
+ let outlineWidthFactor = (_10 = (_9 = materialProperties.floatProperties) === null || _9 === void 0 ? void 0 : _9['_OutlineWidth']) !== null && _10 !== void 0 ? _10 : 0.0;
+ outlineWidthFactor = 0.01 * outlineWidthFactor;
+ const outlineWidthMultiplyTextureIndex = (_11 = materialProperties.textureProperties) === null || _11 === void 0 ? void 0 : _11['_OutlineWidthTexture'];
+ const outlineWidthMultiplyTexture = outlineWidthMultiplyTextureIndex != null
+ ? {
+ index: outlineWidthMultiplyTextureIndex,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ const outlineColorFactor = (_13 = (_12 = materialProperties.vectorProperties) === null || _12 === void 0 ? void 0 : _12['_OutlineColor']) === null || _13 === void 0 ? void 0 : _13.map(gammaEOTF);
+ const outlineColorMode = (_14 = materialProperties.floatProperties) === null || _14 === void 0 ? void 0 : _14['_OutlineColorMode']; // enum, { Fixed, Mixed }
+ const outlineLightingMixFactor = outlineColorMode === 1 ? (_15 = materialProperties.floatProperties) === null || _15 === void 0 ? void 0 : _15['_OutlineLightingMix'] : 0.0;
+ const uvAnimationMaskTextureIndex = (_16 = materialProperties.textureProperties) === null || _16 === void 0 ? void 0 : _16['_UvAnimMaskTexture'];
+ const uvAnimationMaskTexture = uvAnimationMaskTextureIndex != null
+ ? {
+ index: uvAnimationMaskTextureIndex,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ const uvAnimationScrollXSpeedFactor = (_17 = materialProperties.floatProperties) === null || _17 === void 0 ? void 0 : _17['_UvAnimScrollX'];
+ // uvAnimationScrollYSpeedFactor will be opposite between V0 and V1
+ let uvAnimationScrollYSpeedFactor = (_18 = materialProperties.floatProperties) === null || _18 === void 0 ? void 0 : _18['_UvAnimScrollY'];
+ if (uvAnimationScrollYSpeedFactor != null) {
+ uvAnimationScrollYSpeedFactor = -uvAnimationScrollYSpeedFactor;
+ }
+ const uvAnimationRotationSpeedFactor = (_19 = materialProperties.floatProperties) === null || _19 === void 0 ? void 0 : _19['_UvAnimRotation'];
+ const mtoonExtension = {
+ specVersion: '1.0',
+ transparentWithZWrite,
+ renderQueueOffsetNumber,
+ shadeColorFactor,
+ shadeMultiplyTexture,
+ shadingShiftFactor,
+ shadingToonyFactor,
+ giEqualizationFactor,
+ matcapFactor,
+ matcapTexture,
+ rimLightingMixFactor,
+ rimMultiplyTexture,
+ parametricRimColorFactor,
+ parametricRimFresnelPowerFactor,
+ parametricRimLiftFactor,
+ outlineWidthMode,
+ outlineWidthFactor,
+ outlineWidthMultiplyTexture,
+ outlineColorFactor,
+ outlineLightingMixFactor,
+ uvAnimationMaskTexture,
+ uvAnimationScrollXSpeedFactor,
+ uvAnimationScrollYSpeedFactor,
+ uvAnimationRotationSpeedFactor,
+ };
+ return Object.assign(Object.assign({}, schemaMaterial), { pbrMetallicRoughness: {
+ baseColorFactor,
+ baseColorTexture,
+ }, normalTexture,
+ emissiveTexture,
+ emissiveFactor,
+ alphaMode,
+ alphaCutoff,
+ doubleSided, extensions: {
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ VRMC_materials_mtoon: mtoonExtension,
+ } });
+ }
+ _parseV0UnlitProperties(materialProperties, schemaMaterial) {
+ var _a, _b, _c, _d;
+ const isTransparentZWrite = materialProperties.shader === 'VRM/UnlitTransparentZWrite';
+ const isTransparent = materialProperties.shader === 'VRM/UnlitTransparent' || isTransparentZWrite;
+ const renderQueueOffsetNumber = this._v0ParseRenderQueue(materialProperties);
+ const isCutoff = materialProperties.shader === 'VRM/UnlitCutout';
+ const alphaMode = isTransparent ? 'BLEND' : isCutoff ? 'MASK' : 'OPAQUE';
+ const alphaCutoff = isCutoff ? (_a = materialProperties.floatProperties) === null || _a === void 0 ? void 0 : _a['_Cutoff'] : undefined;
+ const textureTransformExt = this._portTextureTransform(materialProperties);
+ const baseColorFactor = (_c = (_b = materialProperties.vectorProperties) === null || _b === void 0 ? void 0 : _b['_Color']) === null || _c === void 0 ? void 0 : _c.map(gammaEOTF);
+ const baseColorTextureIndex = (_d = materialProperties.textureProperties) === null || _d === void 0 ? void 0 : _d['_MainTex'];
+ const baseColorTexture = baseColorTextureIndex != null
+ ? {
+ index: baseColorTextureIndex,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ // use mtoon instead of unlit, since there might be VRM0.0 specific features that are not supported by gltf
+ const mtoonExtension = {
+ specVersion: '1.0',
+ transparentWithZWrite: isTransparentZWrite,
+ renderQueueOffsetNumber,
+ shadeColorFactor: baseColorFactor,
+ shadeMultiplyTexture: baseColorTexture,
+ };
+ return Object.assign(Object.assign({}, schemaMaterial), { pbrMetallicRoughness: {
+ baseColorFactor,
+ baseColorTexture,
+ }, alphaMode,
+ alphaCutoff, extensions: {
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ VRMC_materials_mtoon: mtoonExtension,
+ } });
+ }
+ /**
+ * Create a glTF `KHR_texture_transform` extension from v0 texture transform info.
+ */
+ _portTextureTransform(materialProperties) {
+ var _a, _b, _c, _d, _e;
+ const textureTransform = (_a = materialProperties.vectorProperties) === null || _a === void 0 ? void 0 : _a['_MainTex'];
+ if (textureTransform == null) {
+ return {};
+ }
+ const offset = [(_b = textureTransform === null || textureTransform === void 0 ? void 0 : textureTransform[0]) !== null && _b !== void 0 ? _b : 0.0, (_c = textureTransform === null || textureTransform === void 0 ? void 0 : textureTransform[1]) !== null && _c !== void 0 ? _c : 0.0];
+ const scale = [(_d = textureTransform === null || textureTransform === void 0 ? void 0 : textureTransform[2]) !== null && _d !== void 0 ? _d : 1.0, (_e = textureTransform === null || textureTransform === void 0 ? void 0 : textureTransform[3]) !== null && _e !== void 0 ? _e : 1.0];
+ offset[1] = 1.0 - scale[1] - offset[1];
+ return {
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ KHR_texture_transform: { offset, scale },
+ };
+ }
+ /**
+ * Convert v0 render order into v1 render order.
+ * This uses a map from v0 render queue to v1 compliant render queue offset which is generated in {@link _populateRenderQueueMap}.
+ */
+ _v0ParseRenderQueue(materialProperties) {
+ var _a, _b, _c;
+ const isTransparent = (_b = (_a = materialProperties.keywordMap) === null || _a === void 0 ? void 0 : _a['_ALPHABLEND_ON']) !== null && _b !== void 0 ? _b : false;
+ const enabledZWrite = ((_c = materialProperties.floatProperties) === null || _c === void 0 ? void 0 : _c['_ZWrite']) === 1;
+ let offset = 0;
+ if (isTransparent) {
+ const v0Queue = materialProperties.renderQueue;
+ if (v0Queue != null) {
+ if (enabledZWrite) {
+ offset = this._renderQueueMapTransparentZWrite.get(v0Queue);
+ }
+ else {
+ offset = this._renderQueueMapTransparent.get(v0Queue);
+ }
+ }
+ }
+ return offset;
+ }
+ /**
+ * Create a map which maps v0 render queue to v1 compliant render queue offset.
+ * This lists up all render queues the model use and creates a map to new render queue offsets in the same order.
+ */
+ _populateRenderQueueMap(materialPropertiesList) {
+ /**
+ * A set of used render queues in Transparent materials.
+ */
+ const renderQueuesTransparent = new Set();
+ /**
+ * A set of used render queues in TransparentZWrite materials.
+ */
+ const renderQueuesTransparentZWrite = new Set();
+ // populate the render queue set
+ materialPropertiesList.forEach((materialProperties) => {
+ var _a, _b, _c;
+ const isTransparent = (_b = (_a = materialProperties.keywordMap) === null || _a === void 0 ? void 0 : _a['_ALPHABLEND_ON']) !== null && _b !== void 0 ? _b : false;
+ const enabledZWrite = ((_c = materialProperties.floatProperties) === null || _c === void 0 ? void 0 : _c['_ZWrite']) === 1;
+ if (isTransparent) {
+ const v0Queue = materialProperties.renderQueue;
+ if (v0Queue != null) {
+ if (enabledZWrite) {
+ renderQueuesTransparentZWrite.add(v0Queue);
+ }
+ else {
+ renderQueuesTransparent.add(v0Queue);
+ }
+ }
+ }
+ });
+ // show a warning if the model uses v1 incompatible number of render queues
+ if (renderQueuesTransparent.size > 10) {
+ console.warn(`VRMMaterialsV0CompatPlugin: This VRM uses ${renderQueuesTransparent.size} render queues for Transparent materials while VRM 1.0 only supports up to 10 render queues. The model might not be rendered correctly.`);
+ }
+ if (renderQueuesTransparentZWrite.size > 10) {
+ console.warn(`VRMMaterialsV0CompatPlugin: This VRM uses ${renderQueuesTransparentZWrite.size} render queues for TransparentZWrite materials while VRM 1.0 only supports up to 10 render queues. The model might not be rendered correctly.`);
+ }
+ // create a map from v0 render queue to v1 render queue offset
+ Array.from(renderQueuesTransparent)
+ .sort()
+ .forEach((queue, i) => {
+ const newQueueOffset = Math.min(Math.max(i - renderQueuesTransparent.size + 1, -9), 0);
+ this._renderQueueMapTransparent.set(queue, newQueueOffset);
+ });
+ Array.from(renderQueuesTransparentZWrite)
+ .sort()
+ .forEach((queue, i) => {
+ const newQueueOffset = Math.min(Math.max(i, 0), 9);
+ this._renderQueueMapTransparentZWrite.set(queue, newQueueOffset);
+ });
+ }
+ }
+
+ /*!
+ * @pixiv/three-vrm-node-constraint v2.0.6
+ * Node constraint module for @pixiv/three-vrm
+ *
+ * Copyright (c) 2020-2023 pixiv Inc.
+ * @pixiv/three-vrm-node-constraint is distributed under MIT License
+ * https://github.com/pixiv/three-vrm/blob/release/LICENSE
+ */
+
+ const _v3A$3$1 = new THREE__namespace.Vector3();
+ class VRMNodeConstraintHelper extends THREE__namespace.Group {
+ constructor(constraint) {
+ super();
+ this._attrPosition = new THREE__namespace.BufferAttribute(new Float32Array([0, 0, 0, 0, 0, 0]), 3);
+ this._attrPosition.setUsage(THREE__namespace.DynamicDrawUsage);
+ const geometry = new THREE__namespace.BufferGeometry();
+ geometry.setAttribute('position', this._attrPosition);
+ const material = new THREE__namespace.LineBasicMaterial({
+ color: 0xff00ff,
+ depthTest: false,
+ depthWrite: false,
+ });
+ this._line = new THREE__namespace.Line(geometry, material);
+ this.add(this._line);
+ this.constraint = constraint;
+ }
+ updateMatrixWorld(force) {
+ _v3A$3$1.setFromMatrixPosition(this.constraint.destination.matrixWorld);
+ this._attrPosition.setXYZ(0, _v3A$3$1.x, _v3A$3$1.y, _v3A$3$1.z);
+ if (this.constraint.source) {
+ _v3A$3$1.setFromMatrixPosition(this.constraint.source.matrixWorld);
+ }
+ this._attrPosition.setXYZ(1, _v3A$3$1.x, _v3A$3$1.y, _v3A$3$1.z);
+ this._attrPosition.needsUpdate = true;
+ super.updateMatrixWorld(force);
+ }
+ }
+
+ function decomposePosition(matrix, target) {
+ return target.set(matrix.elements[12], matrix.elements[13], matrix.elements[14]);
+ }
+
+ const _v3A$2$1 = new THREE__namespace.Vector3();
+ const _v3B$1$1 = new THREE__namespace.Vector3();
+ function decomposeRotation(matrix, target) {
+ matrix.decompose(_v3A$2$1, target, _v3B$1$1);
+ return target;
+ }
+
+ /**
+ * A compat function for `Quaternion.invert()` / `Quaternion.inverse()`.
+ * `Quaternion.invert()` is introduced in r123 and `Quaternion.inverse()` emits a warning.
+ * We are going to use this compat for a while.
+ * @param target A target quaternion
+ */
+ function quatInvertCompat(target) {
+ if (target.invert) {
+ target.invert();
+ }
+ else {
+ target.inverse();
+ }
+ return target;
+ }
+
+ /**
+ * A base class of VRM constraint classes.
+ */
+ class VRMNodeConstraint {
+ /**
+ * @param destination The destination object
+ * @param source The source object
+ */
+ constructor(destination, source) {
+ this.destination = destination;
+ this.source = source;
+ this.weight = 1.0;
+ }
+ }
+
+ const _v3A$1$1 = new THREE__namespace.Vector3();
+ const _v3B$2 = new THREE__namespace.Vector3();
+ const _v3C$1 = new THREE__namespace.Vector3();
+ const _quatA$2 = new THREE__namespace.Quaternion();
+ const _quatB$2 = new THREE__namespace.Quaternion();
+ const _quatC = new THREE__namespace.Quaternion();
+ /**
+ * A constraint that makes it look at a source object.
+ *
+ * See: https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_node_constraint-1.0_beta#roll-constraint
+ */
+ class VRMAimConstraint extends VRMNodeConstraint {
+ /**
+ * The aim axis of the constraint.
+ */
+ get aimAxis() {
+ return this._aimAxis;
+ }
+ /**
+ * The aim axis of the constraint.
+ */
+ set aimAxis(aimAxis) {
+ this._aimAxis = aimAxis;
+ this._v3AimAxis.set(aimAxis === 'PositiveX' ? 1.0 : aimAxis === 'NegativeX' ? -1.0 : 0.0, aimAxis === 'PositiveY' ? 1.0 : aimAxis === 'NegativeY' ? -1.0 : 0.0, aimAxis === 'PositiveZ' ? 1.0 : aimAxis === 'NegativeZ' ? -1.0 : 0.0);
+ }
+ get dependencies() {
+ const set = new Set([this.source]);
+ if (this.destination.parent) {
+ set.add(this.destination.parent);
+ }
+ return set;
+ }
+ constructor(destination, source) {
+ super(destination, source);
+ this._aimAxis = 'PositiveX';
+ this._v3AimAxis = new THREE__namespace.Vector3(1, 0, 0);
+ this._dstRestQuat = new THREE__namespace.Quaternion();
+ }
+ setInitState() {
+ this._dstRestQuat.copy(this.destination.quaternion);
+ }
+ update() {
+ // update world matrix of destination and source manually
+ this.destination.updateWorldMatrix(true, false);
+ this.source.updateWorldMatrix(true, false);
+ // get world quaternion of the parent of the destination
+ const dstParentWorldQuat = _quatA$2.identity();
+ const invDstParentWorldQuat = _quatB$2.identity();
+ if (this.destination.parent) {
+ decomposeRotation(this.destination.parent.matrixWorld, dstParentWorldQuat);
+ quatInvertCompat(invDstParentWorldQuat.copy(dstParentWorldQuat));
+ }
+ // calculate from-to vectors in world coord
+ const a0 = _v3A$1$1.copy(this._v3AimAxis).applyQuaternion(this._dstRestQuat).applyQuaternion(dstParentWorldQuat);
+ const a1 = decomposePosition(this.source.matrixWorld, _v3B$2)
+ .sub(decomposePosition(this.destination.matrixWorld, _v3C$1))
+ .normalize();
+ // create a from-to quaternion, convert to destination local coord, then multiply rest quaternion
+ const targetQuat = _quatC
+ .setFromUnitVectors(a0, a1)
+ .premultiply(invDstParentWorldQuat)
+ .multiply(dstParentWorldQuat)
+ .multiply(this._dstRestQuat);
+ // blend with the rest quaternion using weight
+ this.destination.quaternion.copy(this._dstRestQuat).slerp(targetQuat, this.weight);
+ }
+ }
+
+ /******************************************************************************
+ Copyright (c) Microsoft Corporation.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** */
+
+ function __awaiter$1(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ }
+
+ /**
+ * Traverse ancestors of given object and call given callback from root side.
+ * It will include the given object itself.
+ *
+ * @param object The object you want to traverse
+ * @param callback The call back function that will be called for each ancestors
+ */
+ function traverseAncestorsFromRoot$1(object, callback) {
+ const ancestors = [object];
+ let head = object.parent;
+ while (head !== null) {
+ ancestors.unshift(head);
+ head = head.parent;
+ }
+ ancestors.forEach((ancestor) => {
+ callback(ancestor);
+ });
+ }
+
+ class VRMNodeConstraintManager {
+ constructor() {
+ this._constraints = new Set();
+ this._objectConstraintsMap = new Map();
+ }
+ get constraints() {
+ return this._constraints;
+ }
+ addConstraint(constraint) {
+ this._constraints.add(constraint);
+ let objectSet = this._objectConstraintsMap.get(constraint.destination);
+ if (objectSet == null) {
+ objectSet = new Set();
+ this._objectConstraintsMap.set(constraint.destination, objectSet);
+ }
+ objectSet.add(constraint);
+ }
+ deleteConstraint(constraint) {
+ this._constraints.delete(constraint);
+ const objectSet = this._objectConstraintsMap.get(constraint.destination);
+ objectSet.delete(constraint);
+ }
+ setInitState() {
+ const constraintsTried = new Set();
+ const constraintsDone = new Set();
+ for (const constraint of this._constraints) {
+ this._processConstraint(constraint, constraintsTried, constraintsDone, (constraint) => constraint.setInitState());
+ }
+ }
+ update() {
+ const constraintsTried = new Set();
+ const constraintsDone = new Set();
+ for (const constraint of this._constraints) {
+ this._processConstraint(constraint, constraintsTried, constraintsDone, (constraint) => constraint.update());
+ }
+ }
+ /**
+ * Update a constraint.
+ * If there are other constraints that are dependant, it will try to update them recursively.
+ * It might throw an error if there are circular dependencies.
+ *
+ * Intended to be used in {@link update} and {@link _processConstraint} itself recursively.
+ *
+ * @param constraint A constraint you want to update
+ * @param constraintsTried Set of constraints that are already tried to be updated
+ * @param constraintsDone Set of constraints that are already up to date
+ */
+ _processConstraint(constraint, constraintsTried, constraintsDone, callback) {
+ if (constraintsDone.has(constraint)) {
+ return;
+ }
+ if (constraintsTried.has(constraint)) {
+ throw new Error('VRMNodeConstraintManager: Circular dependency detected while updating constraints');
+ }
+ constraintsTried.add(constraint);
+ const depObjects = constraint.dependencies;
+ for (const depObject of depObjects) {
+ traverseAncestorsFromRoot$1(depObject, (depObjectAncestor) => {
+ const objectSet = this._objectConstraintsMap.get(depObjectAncestor);
+ if (objectSet) {
+ for (const depConstraint of objectSet) {
+ this._processConstraint(depConstraint, constraintsTried, constraintsDone, callback);
+ }
+ }
+ });
+ }
+ callback(constraint);
+ constraintsDone.add(constraint);
+ }
+ }
+
+ const _quatA$1 = new THREE__namespace.Quaternion();
+ const _quatB$1 = new THREE__namespace.Quaternion();
+ /**
+ * A constraint that transfers a rotation around one axis of a source.
+ *
+ * See: https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_node_constraint-1.0_beta#roll-constraint
+ */
+ class VRMRotationConstraint extends VRMNodeConstraint {
+ get dependencies() {
+ return new Set([this.source]);
+ }
+ constructor(destination, source) {
+ super(destination, source);
+ this._dstRestQuat = new THREE__namespace.Quaternion();
+ this._invSrcRestQuat = new THREE__namespace.Quaternion();
+ }
+ setInitState() {
+ this._dstRestQuat.copy(this.destination.quaternion);
+ quatInvertCompat(this._invSrcRestQuat.copy(this.source.quaternion));
+ }
+ update() {
+ // calculate the delta rotation from the rest about the source
+ const srcDeltaQuat = _quatA$1.copy(this._invSrcRestQuat).multiply(this.source.quaternion);
+ // multiply the delta to the rest of the destination
+ const targetQuat = _quatB$1.copy(this._dstRestQuat).multiply(srcDeltaQuat);
+ // blend with the rest quaternion using weight
+ this.destination.quaternion.copy(this._dstRestQuat).slerp(targetQuat, this.weight);
+ }
+ }
+
+ const _v3A$5 = new THREE__namespace.Vector3();
+ const _quatA$3 = new THREE__namespace.Quaternion();
+ const _quatB = new THREE__namespace.Quaternion();
+ /**
+ * A constraint that transfers a rotation around one axis of a source.
+ *
+ * See: https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_node_constraint-1.0_beta#roll-constraint
+ */
+ class VRMRollConstraint extends VRMNodeConstraint {
+ /**
+ * The roll axis of the constraint.
+ */
+ get rollAxis() {
+ return this._rollAxis;
+ }
+ /**
+ * The roll axis of the constraint.
+ */
+ set rollAxis(rollAxis) {
+ this._rollAxis = rollAxis;
+ this._v3RollAxis.set(rollAxis === 'X' ? 1.0 : 0.0, rollAxis === 'Y' ? 1.0 : 0.0, rollAxis === 'Z' ? 1.0 : 0.0);
+ }
+ get dependencies() {
+ return new Set([this.source]);
+ }
+ constructor(destination, source) {
+ super(destination, source);
+ this._rollAxis = 'X';
+ this._v3RollAxis = new THREE__namespace.Vector3(1, 0, 0);
+ this._dstRestQuat = new THREE__namespace.Quaternion();
+ this._invDstRestQuat = new THREE__namespace.Quaternion();
+ this._invSrcRestQuatMulDstRestQuat = new THREE__namespace.Quaternion();
+ }
+ setInitState() {
+ this._dstRestQuat.copy(this.destination.quaternion);
+ quatInvertCompat(this._invDstRestQuat.copy(this._dstRestQuat));
+ quatInvertCompat(this._invSrcRestQuatMulDstRestQuat.copy(this.source.quaternion)).multiply(this._dstRestQuat);
+ }
+ update() {
+ // calculate the delta rotation from the rest about the source, then convert to the destination local coord
+ /**
+ * What the quatDelta is intended to be:
+ *
+ * ```ts
+ * const quatSrcDelta = _quatA
+ * .copy( this._invSrcRestQuat )
+ * .multiply( this.source.quaternion );
+ * const quatSrcDeltaInParent = _quatB
+ * .copy( this._srcRestQuat )
+ * .multiply( quatSrcDelta )
+ * .multiply( this._invSrcRestQuat );
+ * const quatSrcDeltaInDst = _quatA
+ * .copy( this._invDstRestQuat )
+ * .multiply( quatSrcDeltaInParent )
+ * .multiply( this._dstRestQuat );
+ * ```
+ */
+ const quatDelta = _quatA$3
+ .copy(this._invDstRestQuat)
+ .multiply(this.source.quaternion)
+ .multiply(this._invSrcRestQuatMulDstRestQuat);
+ // create a from-to quaternion
+ const n1 = _v3A$5.copy(this._v3RollAxis).applyQuaternion(quatDelta);
+ /**
+ * What the quatFromTo is intended to be:
+ *
+ * ```ts
+ * const quatFromTo = _quatB.setFromUnitVectors( this._v3RollAxis, n1 ).inverse();
+ * ```
+ */
+ const quatFromTo = _quatB.setFromUnitVectors(n1, this._v3RollAxis);
+ // quatFromTo * quatDelta == roll extracted from quatDelta
+ const targetQuat = quatFromTo.premultiply(this._dstRestQuat).multiply(quatDelta);
+ // blend with the rest quaternion using weight
+ this.destination.quaternion.copy(this._dstRestQuat).slerp(targetQuat, this.weight);
+ }
+ }
+
+ /**
+ * Possible spec versions it recognizes.
+ */
+ const POSSIBLE_SPEC_VERSIONS$1 = new Set(['1.0', '1.0-beta']);
+ class VRMNodeConstraintLoaderPlugin {
+ get name() {
+ return VRMNodeConstraintLoaderPlugin.EXTENSION_NAME;
+ }
+ constructor(parser, options) {
+ this.parser = parser;
+ this.helperRoot = options === null || options === void 0 ? void 0 : options.helperRoot;
+ }
+ afterRoot(gltf) {
+ return __awaiter$1(this, void 0, void 0, function* () {
+ gltf.userData.vrmNodeConstraintManager = yield this._import(gltf);
+ });
+ }
+ /**
+ * Import constraints from a GLTF and returns a {@link VRMNodeConstraintManager}.
+ * It might return `null` instead when it does not need to be created or something go wrong.
+ *
+ * @param gltf A parsed result of GLTF taken from GLTFLoader
+ */
+ _import(gltf) {
+ var _a;
+ return __awaiter$1(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use constraints
+ const isConstraintsUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf(VRMNodeConstraintLoaderPlugin.EXTENSION_NAME)) !== -1;
+ if (!isConstraintsUsed) {
+ return null;
+ }
+ const manager = new VRMNodeConstraintManager();
+ const threeNodes = yield this.parser.getDependencies('node');
+ // import constraints for each nodes
+ threeNodes.forEach((node, nodeIndex) => {
+ var _a;
+ const schemaNode = json.nodes[nodeIndex];
+ // check if the extension uses the extension
+ const extension = (_a = schemaNode === null || schemaNode === void 0 ? void 0 : schemaNode.extensions) === null || _a === void 0 ? void 0 : _a[VRMNodeConstraintLoaderPlugin.EXTENSION_NAME];
+ if (extension == null) {
+ return;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS$1.has(specVersion)) {
+ console.warn(`VRMNodeConstraintLoaderPlugin: Unknown ${VRMNodeConstraintLoaderPlugin.EXTENSION_NAME} specVersion "${specVersion}"`);
+ return;
+ }
+ const constraintDef = extension.constraint;
+ // import constraints
+ if (constraintDef.roll != null) {
+ const constraint = this._importRollConstraint(node, threeNodes, constraintDef.roll);
+ manager.addConstraint(constraint);
+ }
+ else if (constraintDef.aim != null) {
+ const constraint = this._importAimConstraint(node, threeNodes, constraintDef.aim);
+ manager.addConstraint(constraint);
+ }
+ else if (constraintDef.rotation != null) {
+ const constraint = this._importRotationConstraint(node, threeNodes, constraintDef.rotation);
+ manager.addConstraint(constraint);
+ }
+ });
+ // init constraints
+ gltf.scene.updateMatrixWorld();
+ manager.setInitState();
+ return manager;
+ });
+ }
+ _importRollConstraint(destination, nodes, rollConstraintDef) {
+ const { source: sourceIndex, rollAxis, weight } = rollConstraintDef;
+ const source = nodes[sourceIndex];
+ const constraint = new VRMRollConstraint(destination, source);
+ if (rollAxis != null) {
+ constraint.rollAxis = rollAxis;
+ }
+ if (weight != null) {
+ constraint.weight = weight;
+ }
+ if (this.helperRoot) {
+ const helper = new VRMNodeConstraintHelper(constraint);
+ this.helperRoot.add(helper);
+ }
+ return constraint;
+ }
+ _importAimConstraint(destination, nodes, aimConstraintDef) {
+ const { source: sourceIndex, aimAxis, weight } = aimConstraintDef;
+ const source = nodes[sourceIndex];
+ const constraint = new VRMAimConstraint(destination, source);
+ if (aimAxis != null) {
+ constraint.aimAxis = aimAxis;
+ }
+ if (weight != null) {
+ constraint.weight = weight;
+ }
+ if (this.helperRoot) {
+ const helper = new VRMNodeConstraintHelper(constraint);
+ this.helperRoot.add(helper);
+ }
+ return constraint;
+ }
+ _importRotationConstraint(destination, nodes, rotationConstraintDef) {
+ const { source: sourceIndex, weight } = rotationConstraintDef;
+ const source = nodes[sourceIndex];
+ const constraint = new VRMRotationConstraint(destination, source);
+ if (weight != null) {
+ constraint.weight = weight;
+ }
+ if (this.helperRoot) {
+ const helper = new VRMNodeConstraintHelper(constraint);
+ this.helperRoot.add(helper);
+ }
+ return constraint;
+ }
+ }
+ VRMNodeConstraintLoaderPlugin.EXTENSION_NAME = 'VRMC_node_constraint';
+
+ /*!
+ * @pixiv/three-vrm-springbone v2.0.6
+ * Spring bone module for @pixiv/three-vrm
+ *
+ * Copyright (c) 2020-2023 pixiv Inc.
+ * @pixiv/three-vrm-springbone is distributed under MIT License
+ * https://github.com/pixiv/three-vrm/blob/release/LICENSE
+ */
+
+ /**
+ * Represents a shape of a collider.
+ */
+ class VRMSpringBoneColliderShape {
+ }
+
+ const _v3A$4 = new THREE__namespace.Vector3();
+ const _v3B$1 = new THREE__namespace.Vector3();
+ class VRMSpringBoneColliderShapeCapsule extends VRMSpringBoneColliderShape {
+ get type() {
+ return 'capsule';
+ }
+ constructor(params) {
+ var _a, _b, _c;
+ super();
+ this.offset = (_a = params === null || params === void 0 ? void 0 : params.offset) !== null && _a !== void 0 ? _a : new THREE__namespace.Vector3(0.0, 0.0, 0.0);
+ this.tail = (_b = params === null || params === void 0 ? void 0 : params.tail) !== null && _b !== void 0 ? _b : new THREE__namespace.Vector3(0.0, 0.0, 0.0);
+ this.radius = (_c = params === null || params === void 0 ? void 0 : params.radius) !== null && _c !== void 0 ? _c : 0.0;
+ }
+ calculateCollision(colliderMatrix, objectPosition, objectRadius, target) {
+ _v3A$4.copy(this.offset).applyMatrix4(colliderMatrix); // transformed head
+ _v3B$1.copy(this.tail).applyMatrix4(colliderMatrix); // transformed tail
+ _v3B$1.sub(_v3A$4); // from head to tail
+ const lengthSqCapsule = _v3B$1.lengthSq();
+ target.copy(objectPosition).sub(_v3A$4); // from head to object
+ const dot = _v3B$1.dot(target); // dot product of offsetToTail and offsetToObject
+ if (dot <= 0.0) ;
+ else if (lengthSqCapsule <= dot) {
+ // if object is near from the tail
+ target.sub(_v3B$1); // from tail to object
+ }
+ else {
+ // if object is between two ends
+ _v3B$1.multiplyScalar(dot / lengthSqCapsule); // from head to the nearest point of the shaft
+ target.sub(_v3B$1); // from the shaft point to object
+ }
+ const radius = objectRadius + this.radius;
+ const distance = target.length() - radius;
+ target.normalize();
+ return distance;
+ }
+ }
+
+ class VRMSpringBoneColliderShapeSphere extends VRMSpringBoneColliderShape {
+ get type() {
+ return 'sphere';
+ }
+ constructor(params) {
+ var _a, _b;
+ super();
+ this.offset = (_a = params === null || params === void 0 ? void 0 : params.offset) !== null && _a !== void 0 ? _a : new THREE__namespace.Vector3(0.0, 0.0, 0.0);
+ this.radius = (_b = params === null || params === void 0 ? void 0 : params.radius) !== null && _b !== void 0 ? _b : 0.0;
+ }
+ calculateCollision(colliderMatrix, objectPosition, objectRadius, target) {
+ target.copy(this.offset).applyMatrix4(colliderMatrix); // transformed offset
+ target.negate().add(objectPosition); // a vector from collider center to object position
+ const radius = objectRadius + this.radius;
+ const distance = target.length() - radius;
+ target.normalize();
+ return distance;
+ }
+ }
+
+ const _v3A$3 = new THREE__namespace.Vector3();
+ class ColliderShapeCapsuleBufferGeometry extends THREE__namespace.BufferGeometry {
+ constructor(shape) {
+ super();
+ this.worldScale = 1.0;
+ this._currentRadius = 0;
+ this._currentOffset = new THREE__namespace.Vector3();
+ this._currentTail = new THREE__namespace.Vector3();
+ this._shape = shape;
+ this._attrPos = new THREE__namespace.BufferAttribute(new Float32Array(396), 3);
+ this.setAttribute('position', this._attrPos);
+ this._attrIndex = new THREE__namespace.BufferAttribute(new Uint16Array(264), 1);
+ this.setIndex(this._attrIndex);
+ this._buildIndex();
+ this.update();
+ }
+ update() {
+ let shouldUpdateGeometry = false;
+ const radius = this._shape.radius / this.worldScale;
+ if (this._currentRadius !== radius) {
+ this._currentRadius = radius;
+ shouldUpdateGeometry = true;
+ }
+ if (!this._currentOffset.equals(this._shape.offset)) {
+ this._currentOffset.copy(this._shape.offset);
+ shouldUpdateGeometry = true;
+ }
+ const tail = _v3A$3.copy(this._shape.tail).divideScalar(this.worldScale);
+ if (this._currentTail.distanceToSquared(tail) > 1e-10) {
+ this._currentTail.copy(tail);
+ shouldUpdateGeometry = true;
+ }
+ if (shouldUpdateGeometry) {
+ this._buildPosition();
+ }
+ }
+ _buildPosition() {
+ _v3A$3.copy(this._currentTail).sub(this._currentOffset);
+ const l = _v3A$3.length() / this._currentRadius;
+ for (let i = 0; i <= 16; i++) {
+ const t = (i / 16.0) * Math.PI;
+ this._attrPos.setXYZ(i, -Math.sin(t), -Math.cos(t), 0.0);
+ this._attrPos.setXYZ(17 + i, l + Math.sin(t), Math.cos(t), 0.0);
+ this._attrPos.setXYZ(34 + i, -Math.sin(t), 0.0, -Math.cos(t));
+ this._attrPos.setXYZ(51 + i, l + Math.sin(t), 0.0, Math.cos(t));
+ }
+ for (let i = 0; i < 32; i++) {
+ const t = (i / 16.0) * Math.PI;
+ this._attrPos.setXYZ(68 + i, 0.0, Math.sin(t), Math.cos(t));
+ this._attrPos.setXYZ(100 + i, l, Math.sin(t), Math.cos(t));
+ }
+ const theta = Math.atan2(_v3A$3.y, Math.sqrt(_v3A$3.x * _v3A$3.x + _v3A$3.z * _v3A$3.z));
+ const phi = -Math.atan2(_v3A$3.z, _v3A$3.x);
+ this.rotateZ(theta);
+ this.rotateY(phi);
+ this.scale(this._currentRadius, this._currentRadius, this._currentRadius);
+ this.translate(this._currentOffset.x, this._currentOffset.y, this._currentOffset.z);
+ this._attrPos.needsUpdate = true;
+ }
+ _buildIndex() {
+ for (let i = 0; i < 34; i++) {
+ const i1 = (i + 1) % 34;
+ this._attrIndex.setXY(i * 2, i, i1);
+ this._attrIndex.setXY(68 + i * 2, 34 + i, 34 + i1);
+ }
+ for (let i = 0; i < 32; i++) {
+ const i1 = (i + 1) % 32;
+ this._attrIndex.setXY(136 + i * 2, 68 + i, 68 + i1);
+ this._attrIndex.setXY(200 + i * 2, 100 + i, 100 + i1);
+ }
+ this._attrIndex.needsUpdate = true;
+ }
+ }
+
+ class ColliderShapeSphereBufferGeometry extends THREE__namespace.BufferGeometry {
+ constructor(shape) {
+ super();
+ this.worldScale = 1.0;
+ this._currentRadius = 0;
+ this._currentOffset = new THREE__namespace.Vector3();
+ this._shape = shape;
+ this._attrPos = new THREE__namespace.BufferAttribute(new Float32Array(32 * 3 * 3), 3);
+ this.setAttribute('position', this._attrPos);
+ this._attrIndex = new THREE__namespace.BufferAttribute(new Uint16Array(64 * 3), 1);
+ this.setIndex(this._attrIndex);
+ this._buildIndex();
+ this.update();
+ }
+ update() {
+ let shouldUpdateGeometry = false;
+ const radius = this._shape.radius / this.worldScale;
+ if (this._currentRadius !== radius) {
+ this._currentRadius = radius;
+ shouldUpdateGeometry = true;
+ }
+ if (!this._currentOffset.equals(this._shape.offset)) {
+ this._currentOffset.copy(this._shape.offset);
+ shouldUpdateGeometry = true;
+ }
+ if (shouldUpdateGeometry) {
+ this._buildPosition();
+ }
+ }
+ _buildPosition() {
+ for (let i = 0; i < 32; i++) {
+ const t = (i / 16.0) * Math.PI;
+ this._attrPos.setXYZ(i, Math.cos(t), Math.sin(t), 0.0);
+ this._attrPos.setXYZ(32 + i, 0.0, Math.cos(t), Math.sin(t));
+ this._attrPos.setXYZ(64 + i, Math.sin(t), 0.0, Math.cos(t));
+ }
+ this.scale(this._currentRadius, this._currentRadius, this._currentRadius);
+ this.translate(this._currentOffset.x, this._currentOffset.y, this._currentOffset.z);
+ this._attrPos.needsUpdate = true;
+ }
+ _buildIndex() {
+ for (let i = 0; i < 32; i++) {
+ const i1 = (i + 1) % 32;
+ this._attrIndex.setXY(i * 2, i, i1);
+ this._attrIndex.setXY(64 + i * 2, 32 + i, 32 + i1);
+ this._attrIndex.setXY(128 + i * 2, 64 + i, 64 + i1);
+ }
+ this._attrIndex.needsUpdate = true;
+ }
+ }
+
+ const _v3A$2 = new THREE__namespace.Vector3();
+ class VRMSpringBoneColliderHelper extends THREE__namespace.Group {
+ constructor(collider) {
+ super();
+ this.matrixAutoUpdate = false;
+ this.collider = collider;
+ if (this.collider.shape instanceof VRMSpringBoneColliderShapeSphere) {
+ this._geometry = new ColliderShapeSphereBufferGeometry(this.collider.shape);
+ }
+ else if (this.collider.shape instanceof VRMSpringBoneColliderShapeCapsule) {
+ this._geometry = new ColliderShapeCapsuleBufferGeometry(this.collider.shape);
+ }
+ else {
+ throw new Error('VRMSpringBoneColliderHelper: Unknown collider shape type detected');
+ }
+ const material = new THREE__namespace.LineBasicMaterial({
+ color: 0xff00ff,
+ depthTest: false,
+ depthWrite: false,
+ });
+ this._line = new THREE__namespace.LineSegments(this._geometry, material);
+ this.add(this._line);
+ }
+ dispose() {
+ this._geometry.dispose();
+ }
+ updateMatrixWorld(force) {
+ this.collider.updateWorldMatrix(true, false);
+ this.matrix.copy(this.collider.matrixWorld);
+ const matrixWorldElements = this.matrix.elements;
+ this._geometry.worldScale = _v3A$2
+ .set(matrixWorldElements[0], matrixWorldElements[1], matrixWorldElements[2])
+ .length(); // calculate scale of x component
+ this._geometry.update();
+ super.updateMatrixWorld(force);
+ }
+ }
+
+ class SpringBoneBufferGeometry extends THREE__namespace.BufferGeometry {
+ constructor(springBone) {
+ super();
+ this.worldScale = 1.0;
+ this._currentRadius = 0;
+ this._currentTail = new THREE__namespace.Vector3();
+ this._springBone = springBone;
+ this._attrPos = new THREE__namespace.BufferAttribute(new Float32Array(294), 3);
+ this.setAttribute('position', this._attrPos);
+ this._attrIndex = new THREE__namespace.BufferAttribute(new Uint16Array(194), 1);
+ this.setIndex(this._attrIndex);
+ this._buildIndex();
+ this.update();
+ }
+ update() {
+ let shouldUpdateGeometry = false;
+ const radius = this._springBone.settings.hitRadius / this.worldScale;
+ if (this._currentRadius !== radius) {
+ this._currentRadius = radius;
+ shouldUpdateGeometry = true;
+ }
+ if (!this._currentTail.equals(this._springBone.initialLocalChildPosition)) {
+ this._currentTail.copy(this._springBone.initialLocalChildPosition);
+ shouldUpdateGeometry = true;
+ }
+ if (shouldUpdateGeometry) {
+ this._buildPosition();
+ }
+ }
+ _buildPosition() {
+ for (let i = 0; i < 32; i++) {
+ const t = (i / 16.0) * Math.PI;
+ this._attrPos.setXYZ(i, Math.cos(t), Math.sin(t), 0.0);
+ this._attrPos.setXYZ(32 + i, 0.0, Math.cos(t), Math.sin(t));
+ this._attrPos.setXYZ(64 + i, Math.sin(t), 0.0, Math.cos(t));
+ }
+ this.scale(this._currentRadius, this._currentRadius, this._currentRadius);
+ this.translate(this._currentTail.x, this._currentTail.y, this._currentTail.z);
+ this._attrPos.setXYZ(96, 0, 0, 0);
+ this._attrPos.setXYZ(97, this._currentTail.x, this._currentTail.y, this._currentTail.z);
+ this._attrPos.needsUpdate = true;
+ }
+ _buildIndex() {
+ for (let i = 0; i < 32; i++) {
+ const i1 = (i + 1) % 32;
+ this._attrIndex.setXY(i * 2, i, i1);
+ this._attrIndex.setXY(64 + i * 2, 32 + i, 32 + i1);
+ this._attrIndex.setXY(128 + i * 2, 64 + i, 64 + i1);
+ }
+ this._attrIndex.setXY(192, 96, 97);
+ this._attrIndex.needsUpdate = true;
+ }
+ }
+
+ const _v3A$1 = new THREE__namespace.Vector3();
+ class VRMSpringBoneJointHelper extends THREE__namespace.Group {
+ constructor(springBone) {
+ super();
+ this.matrixAutoUpdate = false;
+ this.springBone = springBone;
+ this._geometry = new SpringBoneBufferGeometry(this.springBone);
+ const material = new THREE__namespace.LineBasicMaterial({
+ color: 0xffff00,
+ depthTest: false,
+ depthWrite: false,
+ });
+ this._line = new THREE__namespace.LineSegments(this._geometry, material);
+ this.add(this._line);
+ }
+ dispose() {
+ this._geometry.dispose();
+ }
+ updateMatrixWorld(force) {
+ this.springBone.bone.updateWorldMatrix(true, false);
+ this.matrix.copy(this.springBone.bone.matrixWorld);
+ const matrixWorldElements = this.matrix.elements;
+ this._geometry.worldScale = _v3A$1
+ .set(matrixWorldElements[0], matrixWorldElements[1], matrixWorldElements[2])
+ .length(); // calculate scale of x component
+ this._geometry.update();
+ super.updateMatrixWorld(force);
+ }
+ }
+
+ /**
+ * Represents a collider of a VRM.
+ */
+ class VRMSpringBoneCollider extends THREE__namespace.Object3D {
+ constructor(shape) {
+ super();
+ this.shape = shape;
+ }
+ }
+
+ const _matA$1 = new THREE__namespace.Matrix4();
+ /**
+ * A compat function for `Matrix4.invert()` / `Matrix4.getInverse()`.
+ * `Matrix4.invert()` is introduced in r123 and `Matrix4.getInverse()` emits a warning.
+ * We are going to use this compat for a while.
+ * @param target A target matrix
+ */
+ function mat4InvertCompat(target) {
+ if (target.invert) {
+ target.invert();
+ }
+ else {
+ target.getInverse(_matA$1.copy(target));
+ }
+ return target;
+ }
+
+ class Matrix4InverseCache {
+ /**
+ * Inverse of given matrix.
+ * Note that it will return its internal private instance.
+ * Make sure copying this before mutate this.
+ */
+ get inverse() {
+ if (this._shouldUpdateInverse) {
+ this._inverseCache.copy(this.matrix);
+ mat4InvertCompat(this._inverseCache);
+ this._shouldUpdateInverse = false;
+ }
+ return this._inverseCache;
+ }
+ constructor(matrix) {
+ /**
+ * A cache of inverse of current matrix.
+ */
+ this._inverseCache = new THREE__namespace.Matrix4();
+ /**
+ * A flag that makes it want to recalculate its {@link _inverseCache}.
+ * Will be set `true` when `elements` are mutated and be used in `getInverse`.
+ */
+ this._shouldUpdateInverse = true;
+ this.matrix = matrix;
+ const handler = {
+ set: (obj, prop, newVal) => {
+ this._shouldUpdateInverse = true;
+ obj[prop] = newVal;
+ return true;
+ },
+ };
+ this._originalElements = matrix.elements;
+ matrix.elements = new Proxy(matrix.elements, handler);
+ }
+ revert() {
+ this.matrix.elements = this._originalElements;
+ }
+ }
+
+ // based on
+ // http://rocketjump.skr.jp/unity3d/109/
+ // https://github.com/dwango/UniVRM/blob/master/Scripts/SpringBone/VRMSpringBone.cs
+ const IDENTITY_MATRIX4 = new THREE__namespace.Matrix4();
+ // 計算中の一時保存用変数(一度インスタンスを作ったらあとは使い回す)
+ const _v3A = new THREE__namespace.Vector3();
+ const _v3B = new THREE__namespace.Vector3();
+ const _v3C = new THREE__namespace.Vector3();
+ /**
+ * A temporary variable which is used in `update`
+ */
+ const _worldSpacePosition = new THREE__namespace.Vector3();
+ /**
+ * A temporary variable which is used in `update`
+ */
+ const _centerSpacePosition = new THREE__namespace.Vector3();
+ /**
+ * A temporary variable which is used in `update`
+ */
+ const _nextTail = new THREE__namespace.Vector3();
+ const _quatA = new THREE__namespace.Quaternion();
+ const _matA = new THREE__namespace.Matrix4();
+ const _matB = new THREE__namespace.Matrix4();
+ /**
+ * A class represents a single joint of a spring bone.
+ * It should be managed by a [[VRMSpringBoneManager]].
+ */
+ class VRMSpringBoneJoint {
+ get center() {
+ return this._center;
+ }
+ set center(center) {
+ var _a;
+ // uninstall inverse cache
+ if ((_a = this._center) === null || _a === void 0 ? void 0 : _a.userData.inverseCacheProxy) {
+ this._center.userData.inverseCacheProxy.revert();
+ delete this._center.userData.inverseCacheProxy;
+ }
+ // change the center
+ this._center = center;
+ // install inverse cache
+ if (this._center) {
+ if (!this._center.userData.inverseCacheProxy) {
+ this._center.userData.inverseCacheProxy = new Matrix4InverseCache(this._center.matrixWorld);
+ }
+ }
+ }
+ get initialLocalChildPosition() {
+ return this._initialLocalChildPosition;
+ }
+ /**
+ * Returns the world matrix of its parent object.
+ * Note that it returns a reference to the matrix. Don't mutate this directly!
+ */
+ get _parentMatrixWorld() {
+ return this.bone.parent ? this.bone.parent.matrixWorld : IDENTITY_MATRIX4;
+ }
+ /**
+ * Create a new VRMSpringBone.
+ *
+ * @param bone An Object3D that will be attached to this bone
+ * @param child An Object3D that will be used as a tail of this spring bone. It can be null when the spring bone is imported from VRM 0.0
+ * @param settings Several parameters related to behavior of the spring bone
+ * @param colliderGroups Collider groups that will be collided with this spring bone
+ */
+ constructor(bone, child, settings = {}, colliderGroups = []) {
+ var _a, _b, _c, _d, _e, _f;
+ /**
+ * Current position of child tail, in center unit. Will be used for verlet integration.
+ */
+ this._currentTail = new THREE__namespace.Vector3();
+ /**
+ * Previous position of child tail, in center unit. Will be used for verlet integration.
+ */
+ this._prevTail = new THREE__namespace.Vector3();
+ /**
+ * Initial axis of the bone, in local unit.
+ */
+ this._boneAxis = new THREE__namespace.Vector3();
+ /**
+ * Length of the bone in world unit.
+ * Will be used for normalization in update loop, will be updated by {@link _calcWorldSpaceBoneLength}.
+ *
+ * It's same as local unit length unless there are scale transformations in the world space.
+ */
+ this._worldSpaceBoneLength = 0.0;
+ /**
+ * This springbone will be calculated based on the space relative from this object.
+ * If this is `null`, springbone will be calculated in world space.
+ */
+ this._center = null;
+ /**
+ * Initial state of the local matrix of the bone.
+ */
+ this._initialLocalMatrix = new THREE__namespace.Matrix4();
+ /**
+ * Initial state of the rotation of the bone.
+ */
+ this._initialLocalRotation = new THREE__namespace.Quaternion();
+ /**
+ * Initial state of the position of its child.
+ */
+ this._initialLocalChildPosition = new THREE__namespace.Vector3();
+ this.bone = bone; // uniVRMでの parent
+ this.bone.matrixAutoUpdate = false; // updateにより計算されるのでthree.js内での自動処理は不要
+ this.child = child;
+ this.settings = {
+ hitRadius: (_a = settings.hitRadius) !== null && _a !== void 0 ? _a : 0.0,
+ stiffness: (_b = settings.stiffness) !== null && _b !== void 0 ? _b : 1.0,
+ gravityPower: (_c = settings.gravityPower) !== null && _c !== void 0 ? _c : 0.0,
+ gravityDir: (_e = (_d = settings.gravityDir) === null || _d === void 0 ? void 0 : _d.clone()) !== null && _e !== void 0 ? _e : new THREE__namespace.Vector3(0.0, -1.0, 0.0),
+ dragForce: (_f = settings.dragForce) !== null && _f !== void 0 ? _f : 0.4,
+ };
+ this.colliderGroups = colliderGroups;
+ }
+ /**
+ * Set the initial state of this spring bone.
+ * You might want to call {@link VRMSpringBoneManager.setInitState} instead.
+ */
+ setInitState() {
+ // remember initial position of itself
+ this._initialLocalMatrix.copy(this.bone.matrix);
+ this._initialLocalRotation.copy(this.bone.quaternion);
+ // see initial position of its local child
+ if (this.child) {
+ this._initialLocalChildPosition.copy(this.child.position);
+ }
+ else {
+ // vrm0 requires a 7cm fixed bone length for the final node in a chain
+ // See: https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_springBone-1.0#about-spring-configuration
+ this._initialLocalChildPosition.copy(this.bone.position).normalize().multiplyScalar(0.07);
+ }
+ // copy the child position to tails
+ const matrixWorldToCenter = this._getMatrixWorldToCenter(_matA);
+ this.bone.localToWorld(this._currentTail.copy(this._initialLocalChildPosition)).applyMatrix4(matrixWorldToCenter);
+ this._prevTail.copy(this._currentTail);
+ // set initial states that are related to local child position
+ this._boneAxis.copy(this._initialLocalChildPosition).normalize();
+ }
+ /**
+ * Reset the state of this bone.
+ * You might want to call [[VRMSpringBoneManager.reset]] instead.
+ */
+ reset() {
+ this.bone.quaternion.copy(this._initialLocalRotation);
+ // We need to update its matrixWorld manually, since we tweaked the bone by our hand
+ this.bone.updateMatrix();
+ this.bone.matrixWorld.multiplyMatrices(this._parentMatrixWorld, this.bone.matrix);
+ // Apply updated position to tail states
+ const matrixWorldToCenter = this._getMatrixWorldToCenter(_matA);
+ this.bone.localToWorld(this._currentTail.copy(this._initialLocalChildPosition)).applyMatrix4(matrixWorldToCenter);
+ this._prevTail.copy(this._currentTail);
+ }
+ /**
+ * Update the state of this bone.
+ * You might want to call [[VRMSpringBoneManager.update]] instead.
+ *
+ * @param delta deltaTime
+ */
+ update(delta) {
+ if (delta <= 0)
+ return;
+ // Update the _worldSpaceBoneLength
+ this._calcWorldSpaceBoneLength();
+ // Get bone position in center space
+ _worldSpacePosition.setFromMatrixPosition(this.bone.matrixWorld);
+ let matrixWorldToCenter = this._getMatrixWorldToCenter(_matA);
+ _centerSpacePosition.copy(_worldSpacePosition).applyMatrix4(matrixWorldToCenter);
+ const quatWorldToCenter = _quatA.setFromRotationMatrix(matrixWorldToCenter);
+ // Get parent matrix in center space
+ const centerSpaceParentMatrix = _matB.copy(matrixWorldToCenter).multiply(this._parentMatrixWorld);
+ // Get boneAxis in center space
+ const centerSpaceBoneAxis = _v3B
+ .copy(this._boneAxis)
+ .applyMatrix4(this._initialLocalMatrix)
+ .applyMatrix4(centerSpaceParentMatrix)
+ .sub(_centerSpacePosition)
+ .normalize();
+ // gravity in center space
+ const centerSpaceGravity = _v3C.copy(this.settings.gravityDir).applyQuaternion(quatWorldToCenter).normalize();
+ const matrixCenterToWorld = this._getMatrixCenterToWorld(_matA);
+ // verlet積分で次の位置を計算
+ _nextTail
+ .copy(this._currentTail)
+ .add(_v3A
+ .copy(this._currentTail)
+ .sub(this._prevTail)
+ .multiplyScalar(1 - this.settings.dragForce)) // 前フレームの移動を継続する(減衰もあるよ)
+ .add(_v3A.copy(centerSpaceBoneAxis).multiplyScalar(this.settings.stiffness * delta)) // 親の回転による子ボーンの移動目標
+ .add(_v3A.copy(centerSpaceGravity).multiplyScalar(this.settings.gravityPower * delta)) // 外力による移動量
+ .applyMatrix4(matrixCenterToWorld); // tailをworld spaceに戻す
+ // normalize bone length
+ _nextTail.sub(_worldSpacePosition).normalize().multiplyScalar(this._worldSpaceBoneLength).add(_worldSpacePosition);
+ // Collisionで移動
+ this._collision(_nextTail);
+ // update prevTail and currentTail
+ matrixWorldToCenter = this._getMatrixWorldToCenter(_matA);
+ this._prevTail.copy(this._currentTail);
+ this._currentTail.copy(_v3A.copy(_nextTail).applyMatrix4(matrixWorldToCenter));
+ // Apply rotation, convert vector3 thing into actual quaternion
+ // Original UniVRM is doing center unit calculus at here but we're gonna do this on local unit
+ const worldSpaceInitialMatrixInv = mat4InvertCompat(_matA.copy(this._parentMatrixWorld).multiply(this._initialLocalMatrix));
+ const applyRotation = _quatA.setFromUnitVectors(this._boneAxis, _v3A.copy(_nextTail).applyMatrix4(worldSpaceInitialMatrixInv).normalize());
+ this.bone.quaternion.copy(this._initialLocalRotation).multiply(applyRotation);
+ // We need to update its matrixWorld manually, since we tweaked the bone by our hand
+ this.bone.updateMatrix();
+ this.bone.matrixWorld.multiplyMatrices(this._parentMatrixWorld, this.bone.matrix);
+ }
+ /**
+ * Do collision math against every colliders attached to this bone.
+ *
+ * @param tail The tail you want to process
+ */
+ _collision(tail) {
+ this.colliderGroups.forEach((colliderGroup) => {
+ colliderGroup.colliders.forEach((collider) => {
+ const dist = collider.shape.calculateCollision(collider.matrixWorld, tail, this.settings.hitRadius, _v3A);
+ if (dist < 0.0) {
+ // hit
+ tail.add(_v3A.multiplyScalar(-dist));
+ // normalize bone length
+ tail.sub(_worldSpacePosition).normalize().multiplyScalar(this._worldSpaceBoneLength).add(_worldSpacePosition);
+ }
+ });
+ });
+ }
+ /**
+ * Calculate the {@link _worldSpaceBoneLength}.
+ * Intended to be used in {@link update}.
+ */
+ _calcWorldSpaceBoneLength() {
+ _v3A.setFromMatrixPosition(this.bone.matrixWorld); // get world position of this.bone
+ if (this.child) {
+ _v3B.setFromMatrixPosition(this.child.matrixWorld); // get world position of this.child
+ }
+ else {
+ _v3B.copy(this._initialLocalChildPosition);
+ _v3B.applyMatrix4(this.bone.matrixWorld);
+ }
+ this._worldSpaceBoneLength = _v3A.sub(_v3B).length();
+ }
+ /**
+ * Create a matrix that converts center space into world space.
+ * @param target Target matrix
+ */
+ _getMatrixCenterToWorld(target) {
+ if (this._center) {
+ target.copy(this._center.matrixWorld);
+ }
+ else {
+ target.identity();
+ }
+ return target;
+ }
+ /**
+ * Create a matrix that converts world space into center space.
+ * @param target Target matrix
+ */
+ _getMatrixWorldToCenter(target) {
+ if (this._center) {
+ target.copy(this._center.userData.inverseCacheProxy.inverse);
+ }
+ else {
+ target.identity();
+ }
+ return target;
+ }
+ }
+
+ /******************************************************************************
+ Copyright (c) Microsoft Corporation.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** */
+
+ function __awaiter(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ }
+
+ function traverseAncestorsFromRoot(object, callback) {
+ const ancestors = [];
+ let head = object;
+ while (head !== null) {
+ ancestors.unshift(head);
+ head = head.parent;
+ }
+ ancestors.forEach((ancestor) => {
+ callback(ancestor);
+ });
+ }
+
+ /**
+ * Traverse children of given object and execute given callback.
+ * The given object itself wont be given to the callback.
+ * If the return value of the callback is `true`, it will halt the traversal of its children.
+ * @param object A root object
+ * @param callback A callback function called for each children
+ */
+ function traverseChildrenUntilConditionMet(object, callback) {
+ object.children.forEach((child) => {
+ const result = callback(child);
+ if (!result) {
+ traverseChildrenUntilConditionMet(child, callback);
+ }
+ });
+ }
+
+ class VRMSpringBoneManager {
+ constructor() {
+ this._joints = new Set();
+ this._objectSpringBonesMap = new Map();
+ }
+ get joints() {
+ return this._joints;
+ }
+ /**
+ * @deprecated Use {@link joints} instead.
+ */
+ get springBones() {
+ console.warn('VRMSpringBoneManager: springBones is deprecated. use joints instead.');
+ return this._joints;
+ }
+ get colliderGroups() {
+ const set = new Set();
+ this._joints.forEach((springBone) => {
+ springBone.colliderGroups.forEach((colliderGroup) => {
+ set.add(colliderGroup);
+ });
+ });
+ return Array.from(set);
+ }
+ get colliders() {
+ const set = new Set();
+ this.colliderGroups.forEach((colliderGroup) => {
+ colliderGroup.colliders.forEach((collider) => {
+ set.add(collider);
+ });
+ });
+ return Array.from(set);
+ }
+ addJoint(joint) {
+ this._joints.add(joint);
+ let objectSet = this._objectSpringBonesMap.get(joint.bone);
+ if (objectSet == null) {
+ objectSet = new Set();
+ this._objectSpringBonesMap.set(joint.bone, objectSet);
+ }
+ objectSet.add(joint);
+ }
+ /**
+ * @deprecated Use {@link addJoint} instead.
+ */
+ addSpringBone(joint) {
+ console.warn('VRMSpringBoneManager: addSpringBone() is deprecated. use addJoint() instead.');
+ this.addJoint(joint);
+ }
+ deleteJoint(joint) {
+ this._joints.delete(joint);
+ const objectSet = this._objectSpringBonesMap.get(joint.bone);
+ objectSet.delete(joint);
+ }
+ /**
+ * @deprecated Use {@link deleteJoint} instead.
+ */
+ deleteSpringBone(joint) {
+ console.warn('VRMSpringBoneManager: deleteSpringBone() is deprecated. use deleteJoint() instead.');
+ this.deleteJoint(joint);
+ }
+ setInitState() {
+ const springBonesTried = new Set();
+ const springBonesDone = new Set();
+ const objectUpdated = new Set();
+ for (const springBone of this._joints) {
+ this._processSpringBone(springBone, springBonesTried, springBonesDone, objectUpdated, (springBone) => springBone.setInitState());
+ }
+ }
+ reset() {
+ const springBonesTried = new Set();
+ const springBonesDone = new Set();
+ const objectUpdated = new Set();
+ for (const springBone of this._joints) {
+ this._processSpringBone(springBone, springBonesTried, springBonesDone, objectUpdated, (springBone) => springBone.reset());
+ }
+ }
+ update(delta) {
+ const springBonesTried = new Set();
+ const springBonesDone = new Set();
+ const objectUpdated = new Set();
+ for (const springBone of this._joints) {
+ // update the springbone
+ this._processSpringBone(springBone, springBonesTried, springBonesDone, objectUpdated, (springBone) => springBone.update(delta));
+ // update children world matrices
+ // it is required when the spring bone chain is sparse
+ traverseChildrenUntilConditionMet(springBone.bone, (object) => {
+ var _a, _b;
+ // if the object has attached springbone, halt the traversal
+ if (((_b = (_a = this._objectSpringBonesMap.get(object)) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0) > 0) {
+ return true;
+ }
+ // otherwise update its world matrix
+ object.updateWorldMatrix(false, false);
+ return false;
+ });
+ }
+ }
+ /**
+ * Update a spring bone.
+ * If there are other spring bone that are dependant, it will try to update them recursively.
+ * It updates matrixWorld of all ancestors and myself.
+ * It might throw an error if there are circular dependencies.
+ *
+ * Intended to be used in {@link update} and {@link _processSpringBone} itself recursively.
+ *
+ * @param springBone A springBone you want to update
+ * @param springBonesTried Set of springBones that are already tried to be updated
+ * @param springBonesDone Set of springBones that are already up to date
+ * @param objectUpdated Set of object3D whose matrixWorld is updated
+ */
+ _processSpringBone(springBone, springBonesTried, springBonesDone, objectUpdated, callback) {
+ if (springBonesDone.has(springBone)) {
+ return;
+ }
+ if (springBonesTried.has(springBone)) {
+ throw new Error('VRMSpringBoneManager: Circular dependency detected while updating springbones');
+ }
+ springBonesTried.add(springBone);
+ const depObjects = this._getDependencies(springBone);
+ for (const depObject of depObjects) {
+ traverseAncestorsFromRoot(depObject, (depObjectAncestor) => {
+ const objectSet = this._objectSpringBonesMap.get(depObjectAncestor);
+ if (objectSet) {
+ for (const depSpringBone of objectSet) {
+ this._processSpringBone(depSpringBone, springBonesTried, springBonesDone, objectUpdated, callback);
+ }
+ }
+ else if (!objectUpdated.has(depObjectAncestor)) {
+ // update matrix of non-springbone
+ depObjectAncestor.updateWorldMatrix(false, false);
+ objectUpdated.add(depObjectAncestor);
+ }
+ });
+ }
+ // update my matrix
+ springBone.bone.updateMatrix();
+ springBone.bone.updateWorldMatrix(false, false);
+ callback(springBone);
+ objectUpdated.add(springBone.bone);
+ springBonesDone.add(springBone);
+ }
+ /**
+ * Return a set of objects that are dependant of given spring bone.
+ * @param springBone A spring bone
+ * @return A set of objects that are dependant of given spring bone
+ */
+ _getDependencies(springBone) {
+ const set = new Set();
+ const parent = springBone.bone.parent;
+ if (parent) {
+ set.add(parent);
+ }
+ springBone.colliderGroups.forEach((colliderGroup) => {
+ colliderGroup.colliders.forEach((collider) => {
+ set.add(collider);
+ });
+ });
+ return set;
+ }
+ }
+
+ /**
+ * Possible spec versions it recognizes.
+ */
+ const POSSIBLE_SPEC_VERSIONS = new Set(['1.0', '1.0-beta']);
+ class VRMSpringBoneLoaderPlugin {
+ get name() {
+ return VRMSpringBoneLoaderPlugin.EXTENSION_NAME;
+ }
+ constructor(parser, options) {
+ this.parser = parser;
+ this.jointHelperRoot = options === null || options === void 0 ? void 0 : options.jointHelperRoot;
+ this.colliderHelperRoot = options === null || options === void 0 ? void 0 : options.colliderHelperRoot;
+ }
+ afterRoot(gltf) {
+ return __awaiter(this, void 0, void 0, function* () {
+ gltf.userData.vrmSpringBoneManager = yield this._import(gltf);
+ });
+ }
+ /**
+ * Import spring bones from a GLTF and return a {@link VRMSpringBoneManager}.
+ * It might return `null` instead when it does not need to be created or something go wrong.
+ *
+ * @param gltf A parsed result of GLTF taken from GLTFLoader
+ */
+ _import(gltf) {
+ return __awaiter(this, void 0, void 0, function* () {
+ const v1Result = yield this._v1Import(gltf);
+ if (v1Result != null) {
+ return v1Result;
+ }
+ const v0Result = yield this._v0Import(gltf);
+ if (v0Result != null) {
+ return v0Result;
+ }
+ return null;
+ });
+ }
+ _v1Import(gltf) {
+ var _a, _b, _c, _d, _e;
+ return __awaiter(this, void 0, void 0, function* () {
+ const json = gltf.parser.json;
+ // early abort if it doesn't use spring bones
+ const isSpringBoneUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf(VRMSpringBoneLoaderPlugin.EXTENSION_NAME)) !== -1;
+ if (!isSpringBoneUsed) {
+ return null;
+ }
+ const manager = new VRMSpringBoneManager();
+ const threeNodes = yield gltf.parser.getDependencies('node');
+ const extension = (_b = json.extensions) === null || _b === void 0 ? void 0 : _b[VRMSpringBoneLoaderPlugin.EXTENSION_NAME];
+ if (!extension) {
+ return null;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS.has(specVersion)) {
+ console.warn(`VRMSpringBoneLoaderPlugin: Unknown ${VRMSpringBoneLoaderPlugin.EXTENSION_NAME} specVersion "${specVersion}"`);
+ return null;
+ }
+ const colliders = (_c = extension.colliders) === null || _c === void 0 ? void 0 : _c.map((schemaCollider, iCollider) => {
+ var _a, _b, _c, _d, _e;
+ const node = threeNodes[schemaCollider.node];
+ const schemaShape = schemaCollider.shape;
+ if (schemaShape.sphere) {
+ return this._importSphereCollider(node, {
+ offset: new THREE__namespace.Vector3().fromArray((_a = schemaShape.sphere.offset) !== null && _a !== void 0 ? _a : [0.0, 0.0, 0.0]),
+ radius: (_b = schemaShape.sphere.radius) !== null && _b !== void 0 ? _b : 0.0,
+ });
+ }
+ else if (schemaShape.capsule) {
+ return this._importCapsuleCollider(node, {
+ offset: new THREE__namespace.Vector3().fromArray((_c = schemaShape.capsule.offset) !== null && _c !== void 0 ? _c : [0.0, 0.0, 0.0]),
+ radius: (_d = schemaShape.capsule.radius) !== null && _d !== void 0 ? _d : 0.0,
+ tail: new THREE__namespace.Vector3().fromArray((_e = schemaShape.capsule.tail) !== null && _e !== void 0 ? _e : [0.0, 0.0, 0.0]),
+ });
+ }
+ throw new Error(`VRMSpringBoneLoaderPlugin: The collider #${iCollider} has no valid shape`);
+ });
+ const colliderGroups = (_d = extension.colliderGroups) === null || _d === void 0 ? void 0 : _d.map((schemaColliderGroup, iColliderGroup) => {
+ var _a;
+ const cols = ((_a = schemaColliderGroup.colliders) !== null && _a !== void 0 ? _a : []).map((iCollider) => {
+ const col = colliders === null || colliders === void 0 ? void 0 : colliders[iCollider];
+ if (col == null) {
+ throw new Error(`VRMSpringBoneLoaderPlugin: The colliderGroup #${iColliderGroup} attempted to use a collider #${iCollider} but not found`);
+ }
+ return col;
+ });
+ return {
+ colliders: cols,
+ name: schemaColliderGroup.name,
+ };
+ });
+ (_e = extension.springs) === null || _e === void 0 ? void 0 : _e.forEach((schemaSpring, iSpring) => {
+ var _a;
+ const schemaJoints = schemaSpring.joints;
+ // prepare colliders
+ const colliderGroupsForSpring = (_a = schemaSpring.colliderGroups) === null || _a === void 0 ? void 0 : _a.map((iColliderGroup) => {
+ const group = colliderGroups === null || colliderGroups === void 0 ? void 0 : colliderGroups[iColliderGroup];
+ if (group == null) {
+ throw new Error(`VRMSpringBoneLoaderPlugin: The spring #${iSpring} attempted to use a colliderGroup ${iColliderGroup} but not found`);
+ }
+ return group;
+ });
+ const center = schemaSpring.center != null ? threeNodes[schemaSpring.center] : undefined;
+ let prevSchemaJoint;
+ schemaJoints.forEach((schemaJoint) => {
+ if (prevSchemaJoint) {
+ // prepare node
+ const nodeIndex = prevSchemaJoint.node;
+ const node = threeNodes[nodeIndex];
+ const childIndex = schemaJoint.node;
+ const child = threeNodes[childIndex];
+ // prepare setting
+ const setting = {
+ hitRadius: prevSchemaJoint.hitRadius,
+ dragForce: prevSchemaJoint.dragForce,
+ gravityPower: prevSchemaJoint.gravityPower,
+ stiffness: prevSchemaJoint.stiffness,
+ gravityDir: prevSchemaJoint.gravityDir != null
+ ? new THREE__namespace.Vector3().fromArray(prevSchemaJoint.gravityDir)
+ : undefined,
+ };
+ // create spring bones
+ const joint = this._importJoint(node, child, setting, colliderGroupsForSpring);
+ if (center) {
+ joint.center = center;
+ }
+ manager.addJoint(joint);
+ }
+ prevSchemaJoint = schemaJoint;
+ });
+ });
+ // init spring bones
+ manager.setInitState();
+ return manager;
+ });
+ }
+ _v0Import(gltf) {
+ var _a, _b, _c;
+ return __awaiter(this, void 0, void 0, function* () {
+ const json = gltf.parser.json;
+ // early abort if it doesn't use vrm
+ const isVRMUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf('VRM')) !== -1;
+ if (!isVRMUsed) {
+ return null;
+ }
+ // early abort if it doesn't have bone groups
+ const extension = (_b = json.extensions) === null || _b === void 0 ? void 0 : _b['VRM'];
+ const schemaSecondaryAnimation = extension === null || extension === void 0 ? void 0 : extension.secondaryAnimation;
+ if (!schemaSecondaryAnimation) {
+ return null;
+ }
+ const schemaBoneGroups = schemaSecondaryAnimation === null || schemaSecondaryAnimation === void 0 ? void 0 : schemaSecondaryAnimation.boneGroups;
+ if (!schemaBoneGroups) {
+ return null;
+ }
+ const manager = new VRMSpringBoneManager();
+ const threeNodes = yield gltf.parser.getDependencies('node');
+ const colliderGroups = (_c = schemaSecondaryAnimation.colliderGroups) === null || _c === void 0 ? void 0 : _c.map((schemaColliderGroup) => {
+ var _a;
+ const node = threeNodes[schemaColliderGroup.node];
+ const colliders = ((_a = schemaColliderGroup.colliders) !== null && _a !== void 0 ? _a : []).map((schemaCollider, iCollider) => {
+ var _a, _b, _c;
+ const offset = new THREE__namespace.Vector3(0.0, 0.0, 0.0);
+ if (schemaCollider.offset) {
+ offset.set((_a = schemaCollider.offset.x) !== null && _a !== void 0 ? _a : 0.0, (_b = schemaCollider.offset.y) !== null && _b !== void 0 ? _b : 0.0, schemaCollider.offset.z ? -schemaCollider.offset.z : 0.0);
+ }
+ return this._importSphereCollider(node, {
+ offset,
+ radius: (_c = schemaCollider.radius) !== null && _c !== void 0 ? _c : 0.0,
+ });
+ });
+ return { colliders };
+ });
+ // import spring bones for each spring bone groups
+ schemaBoneGroups === null || schemaBoneGroups === void 0 ? void 0 : schemaBoneGroups.forEach((schemaBoneGroup, iBoneGroup) => {
+ const rootIndices = schemaBoneGroup.bones;
+ if (!rootIndices) {
+ return;
+ }
+ rootIndices.forEach((rootIndex) => {
+ var _a, _b, _c, _d;
+ const root = threeNodes[rootIndex];
+ // prepare setting
+ const gravityDir = new THREE__namespace.Vector3();
+ if (schemaBoneGroup.gravityDir) {
+ gravityDir.set((_a = schemaBoneGroup.gravityDir.x) !== null && _a !== void 0 ? _a : 0.0, (_b = schemaBoneGroup.gravityDir.y) !== null && _b !== void 0 ? _b : 0.0, (_c = schemaBoneGroup.gravityDir.z) !== null && _c !== void 0 ? _c : 0.0);
+ }
+ else {
+ gravityDir.set(0.0, -1.0, 0.0);
+ }
+ const center = schemaBoneGroup.center != null ? threeNodes[schemaBoneGroup.center] : undefined;
+ const setting = {
+ hitRadius: schemaBoneGroup.hitRadius,
+ dragForce: schemaBoneGroup.dragForce,
+ gravityPower: schemaBoneGroup.gravityPower,
+ stiffness: schemaBoneGroup.stiffiness,
+ gravityDir,
+ };
+ // prepare colliders
+ const colliderGroupsForSpring = (_d = schemaBoneGroup.colliderGroups) === null || _d === void 0 ? void 0 : _d.map((iColliderGroup) => {
+ const group = colliderGroups === null || colliderGroups === void 0 ? void 0 : colliderGroups[iColliderGroup];
+ if (group == null) {
+ throw new Error(`VRMSpringBoneLoaderPlugin: The spring #${iBoneGroup} attempted to use a colliderGroup ${iColliderGroup} but not found`);
+ }
+ return group;
+ });
+ // create spring bones
+ root.traverse((node) => {
+ var _a;
+ const child = (_a = node.children[0]) !== null && _a !== void 0 ? _a : null;
+ const joint = this._importJoint(node, child, setting, colliderGroupsForSpring);
+ if (center) {
+ joint.center = center;
+ }
+ manager.addJoint(joint);
+ });
+ });
+ });
+ // init spring bones
+ gltf.scene.updateMatrixWorld();
+ manager.setInitState();
+ return manager;
+ });
+ }
+ _importJoint(node, child, setting, colliderGroupsForSpring) {
+ const springBone = new VRMSpringBoneJoint(node, child, setting, colliderGroupsForSpring);
+ if (this.jointHelperRoot) {
+ const helper = new VRMSpringBoneJointHelper(springBone);
+ this.jointHelperRoot.add(helper);
+ helper.renderOrder = this.jointHelperRoot.renderOrder;
+ }
+ return springBone;
+ }
+ _importSphereCollider(destination, params) {
+ const { offset, radius } = params;
+ const shape = new VRMSpringBoneColliderShapeSphere({ offset, radius });
+ const collider = new VRMSpringBoneCollider(shape);
+ destination.add(collider);
+ if (this.colliderHelperRoot) {
+ const helper = new VRMSpringBoneColliderHelper(collider);
+ this.colliderHelperRoot.add(helper);
+ helper.renderOrder = this.colliderHelperRoot.renderOrder;
+ }
+ return collider;
+ }
+ _importCapsuleCollider(destination, params) {
+ const { offset, radius, tail } = params;
+ const shape = new VRMSpringBoneColliderShapeCapsule({ offset, radius, tail });
+ const collider = new VRMSpringBoneCollider(shape);
+ destination.add(collider);
+ if (this.colliderHelperRoot) {
+ const helper = new VRMSpringBoneColliderHelper(collider);
+ this.colliderHelperRoot.add(helper);
+ helper.renderOrder = this.colliderHelperRoot.renderOrder;
+ }
+ return collider;
+ }
+ }
+ VRMSpringBoneLoaderPlugin.EXTENSION_NAME = 'VRMC_springBone';
+
+ class VRMLoaderPlugin {
+ get name() {
+ return 'VRMLoaderPlugin';
+ }
+ constructor(parser, options) {
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
+ this.parser = parser;
+ const helperRoot = options === null || options === void 0 ? void 0 : options.helperRoot;
+ const autoUpdateHumanBones = options === null || options === void 0 ? void 0 : options.autoUpdateHumanBones;
+ this.expressionPlugin = (_a = options === null || options === void 0 ? void 0 : options.expressionPlugin) !== null && _a !== void 0 ? _a : new VRMExpressionLoaderPlugin(parser);
+ this.firstPersonPlugin = (_b = options === null || options === void 0 ? void 0 : options.firstPersonPlugin) !== null && _b !== void 0 ? _b : new VRMFirstPersonLoaderPlugin(parser);
+ this.humanoidPlugin =
+ (_c = options === null || options === void 0 ? void 0 : options.humanoidPlugin) !== null && _c !== void 0 ? _c : new VRMHumanoidLoaderPlugin(parser, {
+ helperRoot,
+ autoUpdateHumanBones,
+ });
+ this.lookAtPlugin = (_d = options === null || options === void 0 ? void 0 : options.lookAtPlugin) !== null && _d !== void 0 ? _d : new VRMLookAtLoaderPlugin(parser, { helperRoot });
+ this.metaPlugin = (_e = options === null || options === void 0 ? void 0 : options.metaPlugin) !== null && _e !== void 0 ? _e : new VRMMetaLoaderPlugin(parser);
+ this.mtoonMaterialPlugin = (_f = options === null || options === void 0 ? void 0 : options.mtoonMaterialPlugin) !== null && _f !== void 0 ? _f : new MToonMaterialLoaderPlugin(parser);
+ this.materialsHDREmissiveMultiplierPlugin =
+ (_g = options === null || options === void 0 ? void 0 : options.materialsHDREmissiveMultiplierPlugin) !== null && _g !== void 0 ? _g : new VRMMaterialsHDREmissiveMultiplierLoaderPlugin(parser);
+ this.materialsV0CompatPlugin = (_h = options === null || options === void 0 ? void 0 : options.materialsV0CompatPlugin) !== null && _h !== void 0 ? _h : new VRMMaterialsV0CompatPlugin(parser);
+ this.springBonePlugin =
+ (_j = options === null || options === void 0 ? void 0 : options.springBonePlugin) !== null && _j !== void 0 ? _j : new VRMSpringBoneLoaderPlugin(parser, {
+ colliderHelperRoot: helperRoot,
+ jointHelperRoot: helperRoot,
+ });
+ this.nodeConstraintPlugin =
+ (_k = options === null || options === void 0 ? void 0 : options.nodeConstraintPlugin) !== null && _k !== void 0 ? _k : new VRMNodeConstraintLoaderPlugin(parser, { helperRoot });
+ }
+ beforeRoot() {
+ return __awaiter$5(this, void 0, void 0, function* () {
+ yield this.materialsV0CompatPlugin.beforeRoot();
+ yield this.mtoonMaterialPlugin.beforeRoot();
+ });
+ }
+ loadMesh(meshIndex) {
+ return __awaiter$5(this, void 0, void 0, function* () {
+ return yield this.mtoonMaterialPlugin.loadMesh(meshIndex);
+ });
+ }
+ getMaterialType(materialIndex) {
+ const mtoonType = this.mtoonMaterialPlugin.getMaterialType(materialIndex);
+ if (mtoonType != null) {
+ return mtoonType;
+ }
+ return null;
+ }
+ extendMaterialParams(materialIndex, materialParams) {
+ return __awaiter$5(this, void 0, void 0, function* () {
+ yield this.materialsHDREmissiveMultiplierPlugin.extendMaterialParams(materialIndex, materialParams);
+ yield this.mtoonMaterialPlugin.extendMaterialParams(materialIndex, materialParams);
+ });
+ }
+ afterRoot(gltf) {
+ return __awaiter$5(this, void 0, void 0, function* () {
+ yield this.metaPlugin.afterRoot(gltf);
+ yield this.humanoidPlugin.afterRoot(gltf);
+ yield this.expressionPlugin.afterRoot(gltf);
+ yield this.lookAtPlugin.afterRoot(gltf);
+ yield this.firstPersonPlugin.afterRoot(gltf);
+ yield this.springBonePlugin.afterRoot(gltf);
+ yield this.nodeConstraintPlugin.afterRoot(gltf);
+ yield this.mtoonMaterialPlugin.afterRoot(gltf);
+ const meta = gltf.userData.vrmMeta;
+ const humanoid = gltf.userData.vrmHumanoid;
+ // meta and humanoid are required to be a VRM.
+ // Don't create VRM if they are null
+ if (meta && humanoid) {
+ const vrm = new VRM({
+ scene: gltf.scene,
+ expressionManager: gltf.userData.vrmExpressionManager,
+ firstPerson: gltf.userData.vrmFirstPerson,
+ humanoid,
+ lookAt: gltf.userData.vrmLookAt,
+ meta,
+ materials: gltf.userData.vrmMToonMaterials,
+ springBoneManager: gltf.userData.vrmSpringBoneManager,
+ nodeConstraintManager: gltf.userData.vrmNodeConstraintManager,
+ });
+ gltf.userData.vrm = vrm;
+ }
+ });
+ }
+ }
+
+ // See: https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects
+ function disposeMaterial(material) {
+ Object.values(material).forEach((value) => {
+ if (value === null || value === void 0 ? void 0 : value.isTexture) {
+ const texture = value;
+ texture.dispose();
+ }
+ });
+ if (material.isShaderMaterial) {
+ const uniforms = material.uniforms;
+ if (uniforms) {
+ Object.values(uniforms).forEach((uniform) => {
+ const value = uniform.value;
+ if (value === null || value === void 0 ? void 0 : value.isTexture) {
+ const texture = value;
+ texture.dispose();
+ }
+ });
+ }
+ }
+ material.dispose();
+ }
+ function dispose(object3D) {
+ const geometry = object3D.geometry;
+ if (geometry) {
+ geometry.dispose();
+ }
+ const skeleton = object3D.skeleton;
+ if (skeleton) {
+ skeleton.dispose();
+ }
+ const material = object3D.material;
+ if (material) {
+ if (Array.isArray(material)) {
+ material.forEach((material) => disposeMaterial(material));
+ }
+ else if (material) {
+ disposeMaterial(material);
+ }
+ }
+ }
+ function deepDispose(object3D) {
+ object3D.traverse(dispose);
+ }
+
+ /**
+ * Traverse given object and remove unnecessarily bound joints from every `THREE.SkinnedMesh`.
+ * Some environments like mobile devices have a lower limit of bones and might be unable to perform mesh skinning, this function might resolve such an issue.
+ * Also this function might greatly improve the performance of mesh skinning.
+ *
+ * @param root Root object that will be traversed
+ */
+ function removeUnnecessaryJoints(root) {
+ // some meshes might share a same skinIndex attribute and this map prevents to convert the attribute twice
+ const skeletonList = new Map();
+ // Traverse an entire tree
+ root.traverse((obj) => {
+ if (obj.type !== 'SkinnedMesh') {
+ return;
+ }
+ const mesh = obj;
+ const geometry = mesh.geometry;
+ const attribute = geometry.getAttribute('skinIndex');
+ // look for existing skeleton
+ let skeleton = skeletonList.get(attribute);
+ if (!skeleton) {
+ // generate reduced bone list
+ const bones = []; // new list of bone
+ const boneInverses = []; // new list of boneInverse
+ const boneIndexMap = {}; // map of old bone index vs. new bone index
+ // create a new bone map
+ const array = attribute.array;
+ for (let i = 0; i < array.length; i++) {
+ const index = array[i];
+ // new skinIndex buffer
+ if (boneIndexMap[index] === undefined) {
+ boneIndexMap[index] = bones.length;
+ bones.push(mesh.skeleton.bones[index]);
+ boneInverses.push(mesh.skeleton.boneInverses[index]);
+ }
+ array[i] = boneIndexMap[index];
+ }
+ // replace with new indices
+ attribute.copyArray(array);
+ attribute.needsUpdate = true;
+ // replace with new indices
+ skeleton = new THREE__namespace.Skeleton(bones, boneInverses);
+ skeletonList.set(attribute, skeleton);
+ }
+ mesh.bind(skeleton, new THREE__namespace.Matrix4());
+ // ^^^^^^^^^^^^^^^^^^^ transform of meshes should be ignored
+ // See: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins
+ });
+ }
+
+ /**
+ * Traverse given object and remove unnecessary vertices from every BufferGeometries.
+ * This only processes buffer geometries with index buffer.
+ *
+ * Three.js creates morph textures for each geometries and it sometimes consumes unnecessary amount of VRAM for certain models.
+ * This function will optimize geometries to reduce the size of morph texture.
+ * See: https://github.com/mrdoob/three.js/issues/23095
+ *
+ * @param root Root object that will be traversed
+ */
+ function removeUnnecessaryVertices(root) {
+ const geometryMap = new Map();
+ // Traverse an entire tree
+ root.traverse((obj) => {
+ var _a, _b, _c, _d;
+ if (!obj.isMesh) {
+ return;
+ }
+ const mesh = obj;
+ const geometry = mesh.geometry;
+ // if the geometry does not have an index buffer it does not need to process
+ const origianlIndex = geometry.index;
+ if (origianlIndex == null) {
+ return;
+ }
+ // skip already processed geometry
+ const newGeometryAlreadyExisted = geometryMap.get(geometry);
+ if (newGeometryAlreadyExisted != null) {
+ mesh.geometry = newGeometryAlreadyExisted;
+ return;
+ }
+ const newGeometry = new THREE__namespace.BufferGeometry();
+ // copy various properties
+ // Ref: https://github.com/mrdoob/three.js/blob/1a241ef10048770d56e06d6cd6a64c76cc720f95/src/core/BufferGeometry.js#L1011
+ newGeometry.name = geometry.name;
+ newGeometry.morphTargetsRelative = geometry.morphTargetsRelative;
+ geometry.groups.forEach((group) => {
+ newGeometry.addGroup(group.start, group.count, group.materialIndex);
+ });
+ newGeometry.boundingBox = (_b = (_a = geometry.boundingBox) === null || _a === void 0 ? void 0 : _a.clone()) !== null && _b !== void 0 ? _b : null;
+ newGeometry.boundingSphere = (_d = (_c = geometry.boundingSphere) === null || _c === void 0 ? void 0 : _c.clone()) !== null && _d !== void 0 ? _d : null;
+ newGeometry.setDrawRange(geometry.drawRange.start, geometry.drawRange.count);
+ newGeometry.userData = geometry.userData;
+ // set to geometryMap
+ geometryMap.set(geometry, newGeometry);
+ /** from original index to new index */
+ const originalIndexNewIndexMap = [];
+ /** from new index to original index */
+ const newIndexOriginalIndexMap = [];
+ // reorganize indices
+ {
+ const originalIndexArray = origianlIndex.array;
+ const newIndexArray = new originalIndexArray.constructor(originalIndexArray.length);
+ let indexHead = 0;
+ for (let i = 0; i < originalIndexArray.length; i++) {
+ const originalIndex = originalIndexArray[i];
+ let newIndex = originalIndexNewIndexMap[originalIndex];
+ if (newIndex == null) {
+ originalIndexNewIndexMap[originalIndex] = indexHead;
+ newIndexOriginalIndexMap[indexHead] = originalIndex;
+ newIndex = indexHead;
+ indexHead++;
+ }
+ newIndexArray[i] = newIndex;
+ }
+ newGeometry.setIndex(new THREE.BufferAttribute(newIndexArray, 1, false));
+ }
+ // reorganize attributes
+ Object.keys(geometry.attributes).forEach((attributeName) => {
+ const originalAttribute = geometry.attributes[attributeName];
+ if (originalAttribute.isInterleavedBufferAttribute) {
+ throw new Error('removeUnnecessaryVertices: InterleavedBufferAttribute is not supported');
+ }
+ const originalAttributeArray = originalAttribute.array;
+ const { itemSize, normalized } = originalAttribute;
+ const newAttributeArray = new originalAttributeArray.constructor(newIndexOriginalIndexMap.length * itemSize);
+ newIndexOriginalIndexMap.forEach((originalIndex, i) => {
+ for (let j = 0; j < itemSize; j++) {
+ newAttributeArray[i * itemSize + j] = originalAttributeArray[originalIndex * itemSize + j];
+ }
+ });
+ newGeometry.setAttribute(attributeName, new THREE.BufferAttribute(newAttributeArray, itemSize, normalized));
+ });
+ // reorganize morph attributes
+ /** True if all morphs are zero. */
+ let isNullMorph = true;
+ Object.keys(geometry.morphAttributes).forEach((attributeName) => {
+ newGeometry.morphAttributes[attributeName] = [];
+ const morphs = geometry.morphAttributes[attributeName];
+ for (let iMorph = 0; iMorph < morphs.length; iMorph++) {
+ const originalAttribute = morphs[iMorph];
+ if (originalAttribute.isInterleavedBufferAttribute) {
+ throw new Error('removeUnnecessaryVertices: InterleavedBufferAttribute is not supported');
+ }
+ const originalAttributeArray = originalAttribute.array;
+ const { itemSize, normalized } = originalAttribute;
+ const newAttributeArray = new originalAttributeArray.constructor(newIndexOriginalIndexMap.length * itemSize);
+ newIndexOriginalIndexMap.forEach((originalIndex, i) => {
+ for (let j = 0; j < itemSize; j++) {
+ newAttributeArray[i * itemSize + j] = originalAttributeArray[originalIndex * itemSize + j];
+ }
+ });
+ isNullMorph = isNullMorph && newAttributeArray.every((v) => v === 0);
+ newGeometry.morphAttributes[attributeName][iMorph] = new THREE.BufferAttribute(newAttributeArray, itemSize, normalized);
+ }
+ });
+ // If all morphs are zero, just discard the morph attributes we've just made
+ if (isNullMorph) {
+ newGeometry.morphAttributes = {};
+ }
+ mesh.geometry = newGeometry;
+ });
+ Array.from(geometryMap.keys()).forEach((originalGeometry) => {
+ originalGeometry.dispose();
+ });
+ }
+
+ /**
+ * If the given VRM is VRM0.0, rotate the `vrm.scene` by 180 degrees around the Y axis.
+ *
+ * @param vrm The target VRM
+ */
+ function rotateVRM0(vrm) {
+ var _a;
+ if (((_a = vrm.meta) === null || _a === void 0 ? void 0 : _a.metaVersion) === '0') {
+ vrm.scene.rotation.y = Math.PI;
+ }
+ }
+
+ class VRMUtils {
+ constructor() {
+ // this class is not meant to be instantiated
+ }
+ }
+ VRMUtils.deepDispose = deepDispose;
+ VRMUtils.removeUnnecessaryJoints = removeUnnecessaryJoints;
+ VRMUtils.removeUnnecessaryVertices = removeUnnecessaryVertices;
+ VRMUtils.rotateVRM0 = rotateVRM0;
+
+ exports.MToonMaterial = MToonMaterial;
+ exports.MToonMaterialDebugMode = MToonMaterialDebugMode;
+ exports.MToonMaterialLoaderPlugin = MToonMaterialLoaderPlugin;
+ exports.MToonMaterialOutlineWidthMode = MToonMaterialOutlineWidthMode;
+ exports.VRM = VRM;
+ exports.VRMAimConstraint = VRMAimConstraint;
+ exports.VRMCore = VRMCore;
+ exports.VRMCoreLoaderPlugin = VRMCoreLoaderPlugin;
+ exports.VRMExpression = VRMExpression;
+ exports.VRMExpressionLoaderPlugin = VRMExpressionLoaderPlugin;
+ exports.VRMExpressionManager = VRMExpressionManager;
+ exports.VRMExpressionMaterialColorBind = VRMExpressionMaterialColorBind;
+ exports.VRMExpressionMaterialColorType = VRMExpressionMaterialColorType;
+ exports.VRMExpressionMorphTargetBind = VRMExpressionMorphTargetBind;
+ exports.VRMExpressionOverrideType = VRMExpressionOverrideType;
+ exports.VRMExpressionPresetName = VRMExpressionPresetName;
+ exports.VRMExpressionTextureTransformBind = VRMExpressionTextureTransformBind;
+ exports.VRMFirstPerson = VRMFirstPerson;
+ exports.VRMFirstPersonLoaderPlugin = VRMFirstPersonLoaderPlugin;
+ exports.VRMFirstPersonMeshAnnotationType = VRMFirstPersonMeshAnnotationType;
+ exports.VRMHumanBoneList = VRMHumanBoneList;
+ exports.VRMHumanBoneName = VRMHumanBoneName;
+ exports.VRMHumanBoneParentMap = VRMHumanBoneParentMap;
+ exports.VRMHumanoid = VRMHumanoid;
+ exports.VRMHumanoidHelper = VRMHumanoidHelper;
+ exports.VRMHumanoidLoaderPlugin = VRMHumanoidLoaderPlugin;
+ exports.VRMLoaderPlugin = VRMLoaderPlugin;
+ exports.VRMLookAt = VRMLookAt;
+ exports.VRMLookAtBoneApplier = VRMLookAtBoneApplier;
+ exports.VRMLookAtExpressionApplier = VRMLookAtExpressionApplier;
+ exports.VRMLookAtHelper = VRMLookAtHelper;
+ exports.VRMLookAtLoaderPlugin = VRMLookAtLoaderPlugin;
+ exports.VRMLookAtRangeMap = VRMLookAtRangeMap;
+ exports.VRMLookAtTypeName = VRMLookAtTypeName;
+ exports.VRMMetaLoaderPlugin = VRMMetaLoaderPlugin;
+ exports.VRMNodeConstraint = VRMNodeConstraint;
+ exports.VRMNodeConstraintHelper = VRMNodeConstraintHelper;
+ exports.VRMNodeConstraintLoaderPlugin = VRMNodeConstraintLoaderPlugin;
+ exports.VRMNodeConstraintManager = VRMNodeConstraintManager;
+ exports.VRMRequiredHumanBoneName = VRMRequiredHumanBoneName;
+ exports.VRMRollConstraint = VRMRollConstraint;
+ exports.VRMRotationConstraint = VRMRotationConstraint;
+ exports.VRMSpringBoneCollider = VRMSpringBoneCollider;
+ exports.VRMSpringBoneColliderHelper = VRMSpringBoneColliderHelper;
+ exports.VRMSpringBoneColliderShape = VRMSpringBoneColliderShape;
+ exports.VRMSpringBoneColliderShapeCapsule = VRMSpringBoneColliderShapeCapsule;
+ exports.VRMSpringBoneColliderShapeSphere = VRMSpringBoneColliderShapeSphere;
+ exports.VRMSpringBoneJoint = VRMSpringBoneJoint;
+ exports.VRMSpringBoneJointHelper = VRMSpringBoneJointHelper;
+ exports.VRMSpringBoneLoaderPlugin = VRMSpringBoneLoaderPlugin;
+ exports.VRMSpringBoneManager = VRMSpringBoneManager;
+ exports.VRMUtils = VRMUtils;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+ Object.assign(THREE, exports);
+
+}));
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWUtdnJtLmpzIiwic291cmNlcyI6WyIuLi8uLi90aHJlZS12cm0tY29yZS9saWIvdGhyZWUtdnJtLWNvcmUubW9kdWxlLmpzIiwiLi4vc3JjL1ZSTS50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYuanMiLCIuLi8uLi90aHJlZS12cm0tbWF0ZXJpYWxzLW10b29uL2xpYi90aHJlZS12cm0tbWF0ZXJpYWxzLW10b29uLm1vZHVsZS5qcyIsIi4uLy4uL3RocmVlLXZybS1tYXRlcmlhbHMtaGRyLWVtaXNzaXZlLW11bHRpcGxpZXIvbGliL3RocmVlLXZybS1tYXRlcmlhbHMtaGRyLWVtaXNzaXZlLW11bHRpcGxpZXIubW9kdWxlLmpzIiwiLi4vLi4vdGhyZWUtdnJtLW1hdGVyaWFscy12MGNvbXBhdC9saWIvdGhyZWUtdnJtLW1hdGVyaWFscy12MGNvbXBhdC5tb2R1bGUuanMiLCIuLi8uLi90aHJlZS12cm0tbm9kZS1jb25zdHJhaW50L2xpYi90aHJlZS12cm0tbm9kZS1jb25zdHJhaW50Lm1vZHVsZS5qcyIsIi4uLy4uL3RocmVlLXZybS1zcHJpbmdib25lL2xpYi90aHJlZS12cm0tc3ByaW5nYm9uZS5tb2R1bGUuanMiLCIuLi9zcmMvVlJNTG9hZGVyUGx1Z2luLnRzIiwiLi4vc3JjL1ZSTVV0aWxzL2RlZXBEaXNwb3NlLnRzIiwiLi4vc3JjL1ZSTVV0aWxzL3JlbW92ZVVubmVjZXNzYXJ5Sm9pbnRzLnRzIiwiLi4vc3JjL1ZSTVV0aWxzL3JlbW92ZVVubmVjZXNzYXJ5VmVydGljZXMudHMiLCIuLi9zcmMvVlJNVXRpbHMvcm90YXRlVlJNMC50cyIsIi4uL3NyYy9WUk1VdGlscy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBwaXhpdi90aHJlZS12cm0tY29yZSB2Mi4wLjZcbiAqIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBjb3JlIGZlYXR1cmVzIG9mIFZSTSwgZm9yIEBwaXhpdi90aHJlZS12cm1cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyMyBwaXhpdiBJbmMuXG4gKiBAcGl4aXYvdGhyZWUtdnJtLWNvcmUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgTUlUIExpY2Vuc2VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9waXhpdi90aHJlZS12cm0vYmxvYi9yZWxlYXNlL0xJQ0VOU0VcbiAqL1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG4vLyBhbmltYXRpb25NaXhlciDjga7nm6Poppblr77osaHjga/jgIFTY2VuZSDjga7kuK3jgavlhaXjgaPjgabjgYTjgovlv4XopoHjgYzjgYLjgovjgIJcbi8vIOOBneOBruOBn+OCgeOAgeihqOekuuOCquODluOCuOOCp+OCr+ODiOOBp+OBr+OBquOBhOOBkeOCjOOBqeOAgU9iamVjdDNEIOOCkue2meaJv+OBl+OBpiBTY2VuZSDjgavmipXlhaXjgafjgY3jgovjgojjgYbjgavjgZnjgovjgIJcbmNsYXNzIFZSTUV4cHJlc3Npb24gZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCB7XG4gICAgLyoqXG4gICAgICogQSB2YWx1ZSByZXByZXNlbnRzIGhvdyBtdWNoIGl0IHNob3VsZCBvdmVycmlkZSBibGluayBleHByZXNzaW9ucy5cbiAgICAgKiBgMC4wYCA9PSBubyBvdmVycmlkZSBhdCBhbGwsIGAxLjBgID09IGNvbXBsZXRlbHkgYmxvY2sgdGhlIGV4cHJlc3Npb25zLlxuICAgICAqL1xuICAgIGdldCBvdmVycmlkZUJsaW5rQW1vdW50KCkge1xuICAgICAgICBpZiAodGhpcy5vdmVycmlkZUJsaW5rID09PSAnYmxvY2snKSB7XG4gICAgICAgICAgICByZXR1cm4gMC4wIDwgdGhpcy53ZWlnaHQgPyAxLjAgOiAwLjA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5vdmVycmlkZUJsaW5rID09PSAnYmxlbmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53ZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMC4wO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgdmFsdWUgcmVwcmVzZW50cyBob3cgbXVjaCBpdCBzaG91bGQgb3ZlcnJpZGUgbG9va0F0IGV4cHJlc3Npb25zLlxuICAgICAqIGAwLjBgID09IG5vIG92ZXJyaWRlIGF0IGFsbCwgYDEuMGAgPT0gY29tcGxldGVseSBibG9jayB0aGUgZXhwcmVzc2lvbnMuXG4gICAgICovXG4gICAgZ2V0IG92ZXJyaWRlTG9va0F0QW1vdW50KCkge1xuICAgICAgICBpZiAodGhpcy5vdmVycmlkZUxvb2tBdCA9PT0gJ2Jsb2NrJykge1xuICAgICAgICAgICAgcmV0dXJuIDAuMCA8IHRoaXMud2VpZ2h0ID8gMS4wIDogMC4wO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMub3ZlcnJpZGVMb29rQXQgPT09ICdibGVuZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwLjA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQSB2YWx1ZSByZXByZXNlbnRzIGhvdyBtdWNoIGl0IHNob3VsZCBvdmVycmlkZSBtb3V0aCBleHByZXNzaW9ucy5cbiAgICAgKiBgMC4wYCA9PSBubyBvdmVycmlkZSBhdCBhbGwsIGAxLjBgID09IGNvbXBsZXRlbHkgYmxvY2sgdGhlIGV4cHJlc3Npb25zLlxuICAgICAqL1xuICAgIGdldCBvdmVycmlkZU1vdXRoQW1vdW50KCkge1xuICAgICAgICBpZiAodGhpcy5vdmVycmlkZU1vdXRoID09PSAnYmxvY2snKSB7XG4gICAgICAgICAgICByZXR1cm4gMC4wIDwgdGhpcy53ZWlnaHQgPyAxLjAgOiAwLjA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5vdmVycmlkZU1vdXRoID09PSAnYmxlbmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53ZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMC4wO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGV4cHJlc3Npb25OYW1lKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgY3VycmVudCB3ZWlnaHQgb2YgdGhlIGV4cHJlc3Npb24uXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLndlaWdodCA9IDAuMDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEludGVycHJldCB2YWx1ZXMgZ3JlYXRlciB0aGFuIDAuNSBhcyAxLjAsIG9ydGhlcndpc2UgMC4wLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5pc0JpbmFyeSA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgICogU3BlY2lmeSBob3cgdGhlIGV4cHJlc3Npb24gb3ZlcnJpZGVzIGJsaW5rIGV4cHJlc3Npb25zLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vdmVycmlkZUJsaW5rID0gJ25vbmUnO1xuICAgICAgICAvKipcbiAgICAgICAgICogU3BlY2lmeSBob3cgdGhlIGV4cHJlc3Npb24gb3ZlcnJpZGVzIGxvb2tBdCBleHByZXNzaW9ucy5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub3ZlcnJpZGVMb29rQXQgPSAnbm9uZSc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTcGVjaWZ5IGhvdyB0aGUgZXhwcmVzc2lvbiBvdmVycmlkZXMgbW91dGggZXhwcmVzc2lvbnMuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm92ZXJyaWRlTW91dGggPSAnbm9uZSc7XG4gICAgICAgIHRoaXMuX2JpbmRzID0gW107XG4gICAgICAgIHRoaXMubmFtZSA9IGBWUk1FeHByZXNzaW9uXyR7ZXhwcmVzc2lvbk5hbWV9YDtcbiAgICAgICAgdGhpcy5leHByZXNzaW9uTmFtZSA9IGV4cHJlc3Npb25OYW1lO1xuICAgICAgICAvLyB0cmF2ZXJzZSDmmYLjga7mlZHmuIjmiYvmrrXjgajjgZfjgaYgT2JqZWN0M0Qg44Gn44Gv44Gq44GE44GT44Go44KS5piO56S644GX44Gm44GK44GPXG4gICAgICAgIHRoaXMudHlwZSA9ICdWUk1FeHByZXNzaW9uJztcbiAgICAgICAgLy8g6KGo56S655uu55qE44Gu44Kq44OW44K444Kn44Kv44OI44Gn44Gv44Gq44GE44Gu44Gn44CB6LKg6I236Lu95rib44Gu44Gf44KB44GrIHZpc2libGUg44KSIGZhbHNlIOOBq+OBl+OBpuOBiuOBj+OAglxuICAgICAgICAvLyDjgZPjgozjgavjgojjgorjgIHjgZPjga7jgqTjg7Pjgrnjgr/jg7Pjgrnjgavlr77jgZnjgovmr47jg5Xjg6zjg7zjg6Djga4gbWF0cml4IOiHquWLleioiOeul+OCkuecgeeVpeOBp+OBjeOCi+OAglxuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9XG4gICAgYWRkQmluZChiaW5kKSB7XG4gICAgICAgIHRoaXMuX2JpbmRzLnB1c2goYmluZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFwcGx5IHdlaWdodCB0byBldmVyeSBhc3NpZ25lZCBibGVuZCBzaGFwZXMuXG4gICAgICogU2hvdWxkIGJlIGNhbGxlZCBldmVyeSBmcmFtZS5cbiAgICAgKi9cbiAgICBhcHBseVdlaWdodChvcHRpb25zKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgbGV0IGFjdHVhbFdlaWdodCA9IHRoaXMuaXNCaW5hcnkgPyAodGhpcy53ZWlnaHQgPD0gMC41ID8gMC4wIDogMS4wKSA6IHRoaXMud2VpZ2h0O1xuICAgICAgICBhY3R1YWxXZWlnaHQgKj0gKF9hID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLm11bHRpcGxpZXIpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDEuMDtcbiAgICAgICAgdGhpcy5fYmluZHMuZm9yRWFjaCgoYmluZCkgPT4gYmluZC5hcHBseVdlaWdodChhY3R1YWxXZWlnaHQpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2xlYXIgcHJldmlvdXNseSBhc3NpZ25lZCBibGVuZCBzaGFwZXMuXG4gICAgICovXG4gICAgY2xlYXJBcHBsaWVkV2VpZ2h0KCkge1xuICAgICAgICB0aGlzLl9iaW5kcy5mb3JFYWNoKChiaW5kKSA9PiBiaW5kLmNsZWFyQXBwbGllZFdlaWdodCgpKTtcbiAgICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG5cclxuZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxuXG5mdW5jdGlvbiBleHRyYWN0UHJpbWl0aXZlc0ludGVybmFsKGdsdGYsIG5vZGVJbmRleCwgbm9kZSkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QganNvbiA9IGdsdGYucGFyc2VyLmpzb247XG4gICAgLyoqXG4gICAgICogTGV0J3MgbGlzdCB1cCBldmVyeSBwb3NzaWJsZSBwYXR0ZXJucyB0aGF0IHBhcnNlZCBnbHRmIG5vZGVzIHdpdGggYSBtZXNoIGNhbiBoYXZlLCwsXG4gICAgICpcbiAgICAgKiBcIipcIiBpbmRpY2F0ZXMgdGhhdCB0aG9zZSBtZXNoZXMgc2hvdWxkIGJlIGxpc3RlZCB1cCB1c2luZyB0aGlzIGZ1bmN0aW9uXG4gICAgICpcbiAgICAgKiAjIyMgQSBub2RlIHdpdGggYSAobWVzaCwgYSBzaWdubGUgcHJpbWl0aXZlKVxuICAgICAqXG4gICAgICogLSBgVEhSRUUuTWVzaGA6IFRoZSBvbmx5IHByaW1pdGl2ZSBvZiB0aGUgbWVzaCAqXG4gICAgICpcbiAgICAgKiAjIyMgQSBub2RlIHdpdGggYSAobWVzaCwgbXVsdGlwbGUgcHJpbWl0aXZlcylcbiAgICAgKlxuICAgICAqIC0gYFRIUkVFLkdyb3VwYDogVGhlIHJvb3Qgb2YgdGhlIG1lc2hcbiAgICAgKiAgIC0gYFRIUkVFLk1lc2hgOiBBIHByaW1pdGl2ZSBvZiB0aGUgbWVzaCAqXG4gICAgICogICAtIGBUSFJFRS5NZXNoYDogQSBwcmltaXRpdmUgb2YgdGhlIG1lc2ggKDIpICpcbiAgICAgKlxuICAgICAqICMjIyBBIG5vZGUgd2l0aCBhIChtZXNoLCBtdWx0aXBsZSBwcmltaXRpdmVzKSBBTkQgKGEgY2hpbGQgd2l0aCBhIG1lc2gsIGEgc2luZ2xlIHByaW1pdGl2ZSlcbiAgICAgKlxuICAgICAqIC0gYFRIUkVFLkdyb3VwYDogVGhlIHJvb3Qgb2YgdGhlIG1lc2hcbiAgICAgKiAgIC0gYFRIUkVFLk1lc2hgOiBBIHByaW1pdGl2ZSBvZiB0aGUgbWVzaCAqXG4gICAgICogICAtIGBUSFJFRS5NZXNoYDogQSBwcmltaXRpdmUgb2YgdGhlIG1lc2ggKDIpICpcbiAgICAgKiAgIC0gYFRIUkVFLk1lc2hgOiBBIHByaW1pdGl2ZSBvZiBhIE1FU0ggT0YgVEhFIENISUxEXG4gICAgICpcbiAgICAgKiAjIyMgQSBub2RlIHdpdGggYSAobWVzaCwgbXVsdGlwbGUgcHJpbWl0aXZlcykgQU5EIChhIGNoaWxkIHdpdGggYSBtZXNoLCBtdWx0aXBsZSBwcmltaXRpdmVzKVxuICAgICAqXG4gICAgICogLSBgVEhSRUUuR3JvdXBgOiBUaGUgcm9vdCBvZiB0aGUgbWVzaFxuICAgICAqICAgLSBgVEhSRUUuTWVzaGA6IEEgcHJpbWl0aXZlIG9mIHRoZSBtZXNoICpcbiAgICAgKiAgIC0gYFRIUkVFLk1lc2hgOiBBIHByaW1pdGl2ZSBvZiB0aGUgbWVzaCAoMikgKlxuICAgICAqICAgLSBgVEhSRUUuR3JvdXBgOiBUaGUgcm9vdCBvZiBhIE1FU0ggT0YgVEhFIENISUxEXG4gICAgICogICAgIC0gYFRIUkVFLk1lc2hgOiBBIHByaW1pdGl2ZSBvZiB0aGUgbWVzaCBvZiB0aGUgY2hpbGRcbiAgICAgKiAgICAgLSBgVEhSRUUuTWVzaGA6IEEgcHJpbWl0aXZlIG9mIHRoZSBtZXNoIG9mIHRoZSBjaGlsZCAoMilcbiAgICAgKlxuICAgICAqICMjIyBBIG5vZGUgd2l0aCBhIChtZXNoLCBtdWx0aXBsZSBwcmltaXRpdmVzKSBCVVQgdGhlIG5vZGUgaXMgYSBib25lXG4gICAgICpcbiAgICAgKiAtIGBUSFJFRS5Cb25lYDogVGhlIHJvb3Qgb2YgdGhlIG5vZGUsIGFzIGEgYm9uZVxuICAgICAqICAgLSBgVEhSRUUuR3JvdXBgOiBUaGUgcm9vdCBvZiB0aGUgbWVzaFxuICAgICAqICAgICAtIGBUSFJFRS5NZXNoYDogQSBwcmltaXRpdmUgb2YgdGhlIG1lc2ggKlxuICAgICAqICAgICAtIGBUSFJFRS5NZXNoYDogQSBwcmltaXRpdmUgb2YgdGhlIG1lc2ggKDIpICpcbiAgICAgKlxuICAgICAqICMjIyBBIG5vZGUgd2l0aCBhIChtZXNoLCBtdWx0aXBsZSBwcmltaXRpdmVzKSBBTkQgKGEgY2hpbGQgd2l0aCBhIG1lc2gsIG11bHRpcGxlIHByaW1pdGl2ZXMpIEJVVCB0aGUgbm9kZSBpcyBhIGJvbmVcbiAgICAgKlxuICAgICAqIC0gYFRIUkVFLkJvbmVgOiBUaGUgcm9vdCBvZiB0aGUgbm9kZSwgYXMgYSBib25lXG4gICAgICogICAtIGBUSFJFRS5Hcm91cGA6IFRoZSByb290IG9mIHRoZSBtZXNoXG4gICAgICogICAgIC0gYFRIUkVFLk1lc2hgOiBBIHByaW1pdGl2ZSBvZiB0aGUgbWVzaCAqXG4gICAgICogICAgIC0gYFRIUkVFLk1lc2hgOiBBIHByaW1pdGl2ZSBvZiB0aGUgbWVzaCAoMikgKlxuICAgICAqICAgLSBgVEhSRUUuR3JvdXBgOiBUaGUgcm9vdCBvZiBhIE1FU0ggT0YgVEhFIENISUxEXG4gICAgICogICAgIC0gYFRIUkVFLk1lc2hgOiBBIHByaW1pdGl2ZSBvZiB0aGUgbWVzaCBvZiB0aGUgY2hpbGRcbiAgICAgKiAgICAgLSBgVEhSRUUuTWVzaGA6IEEgcHJpbWl0aXZlIG9mIHRoZSBtZXNoIG9mIHRoZSBjaGlsZCAoMilcbiAgICAgKlxuICAgICAqIC4uLkkgd2lsbCB0YWtlIGEgc3RyYXRlZ3kgdGhhdCB0cmF2ZXJzZXMgdGhlIHJvb3Qgb2YgdGhlIG5vZGUgYW5kIHRha2UgZmlyc3QgKHByaW1pdGl2ZUNvdW50KSBtZXNoZXMuXG4gICAgICovXG4gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIG5vZGUgaGFzIGEgbWVzaFxuICAgIGNvbnN0IHNjaGVtYU5vZGUgPSAoX2EgPSBqc29uLm5vZGVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Fbbm9kZUluZGV4XTtcbiAgICBpZiAoc2NoZW1hTm9kZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgZXh0cmFjdFByaW1pdGl2ZXNJbnRlcm5hbDogQXR0ZW1wdCB0byB1c2Ugbm9kZXNbJHtub2RlSW5kZXh9XSBvZiBnbFRGIGJ1dCB0aGUgbm9kZSBkb2Vzbid0IGV4aXN0YCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBtZXNoSW5kZXggPSBzY2hlbWFOb2RlLm1lc2g7XG4gICAgaWYgKG1lc2hJbmRleCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBIb3cgbWFueSBwcmltaXRpdmVzIHRoZSBtZXNoIGhhcz9cbiAgICBjb25zdCBzY2hlbWFNZXNoID0gKF9iID0ganNvbi5tZXNoZXMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYlttZXNoSW5kZXhdO1xuICAgIGlmIChzY2hlbWFNZXNoID09IG51bGwpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBleHRyYWN0UHJpbWl0aXZlc0ludGVybmFsOiBBdHRlbXB0IHRvIHVzZSBtZXNoZXNbJHttZXNoSW5kZXh9XSBvZiBnbFRGIGJ1dCB0aGUgbWVzaCBkb2Vzbid0IGV4aXN0YCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBwcmltaXRpdmVDb3VudCA9IHNjaGVtYU1lc2gucHJpbWl0aXZlcy5sZW5ndGg7XG4gICAgLy8gVHJhdmVyc2UgdGhlIG5vZGUgYW5kIHRha2UgZmlyc3QgKHByaW1pdGl2ZUNvdW50KSBtZXNoZXNcbiAgICBjb25zdCBwcmltaXRpdmVzID0gW107XG4gICAgbm9kZS50cmF2ZXJzZSgob2JqZWN0KSA9PiB7XG4gICAgICAgIGlmIChwcmltaXRpdmVzLmxlbmd0aCA8IHByaW1pdGl2ZUNvdW50KSB7XG4gICAgICAgICAgICBpZiAob2JqZWN0LmlzTWVzaCkge1xuICAgICAgICAgICAgICAgIHByaW1pdGl2ZXMucHVzaChvYmplY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByaW1pdGl2ZXM7XG59XG4vKipcbiAqIEV4dHJhY3QgcHJpbWl0aXZlcyAoIGBUSFJFRS5NZXNoW11gICkgb2YgYSBub2RlIGZyb20gYSBsb2FkZWQgR0xURi5cbiAqIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBmdW5jdGlvbiBpcyB0byBkaXN0aW5ndWlzaCBwcmltaXRpdmVzIGFuZCBjaGlsZHJlbiBmcm9tIGEgbm9kZSB0aGF0IGhhcyBib3RoIG1lc2hlcyBhbmQgY2hpbGRyZW4uXG4gKlxuICogSXQgdXRpbGl6ZXMgdGhlIGJlaGF2aW9yIHRoYXQgR0xURkxvYWRlciBhZGRzIG1lc2ggcHJpbWl0aXZlcyB0byB0aGUgbm9kZSBvYmplY3QgKCBgVEhSRUUuR3JvdXBgICkgZmlyc3QgdGhlbiBhZGRzIGl0cyBjaGlsZHJlbi5cbiAqXG4gKiBAcGFyYW0gZ2x0ZiBBIEdMVEYgb2JqZWN0IHRha2VuIGZyb20gR0xURkxvYWRlclxuICogQHBhcmFtIG5vZGVJbmRleCBUaGUgaW5kZXggb2YgdGhlIG5vZGVcbiAqL1xuZnVuY3Rpb24gZ2x0ZkV4dHJhY3RQcmltaXRpdmVzRnJvbU5vZGUoZ2x0Ziwgbm9kZUluZGV4KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHlpZWxkIGdsdGYucGFyc2VyLmdldERlcGVuZGVuY3koJ25vZGUnLCBub2RlSW5kZXgpO1xuICAgICAgICByZXR1cm4gZXh0cmFjdFByaW1pdGl2ZXNJbnRlcm5hbChnbHRmLCBub2RlSW5kZXgsIG5vZGUpO1xuICAgIH0pO1xufVxuLyoqXG4gKiBFeHRyYWN0IHByaW1pdGl2ZXMgKCBgVEhSRUUuTWVzaFtdYCApIG9mIG5vZGVzIGZyb20gYSBsb2FkZWQgR0xURi5cbiAqIFNlZSB7QGxpbmsgZ2x0ZkV4dHJhY3RQcmltaXRpdmVzRnJvbU5vZGV9IGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogSXQgcmV0dXJucyBhIG1hcCBmcm9tIG5vZGUgaW5kZXggdG8gZXh0cmFjdGlvbiByZXN1bHQuXG4gKiBJZiBhIG5vZGUgZG9lcyBub3QgaGF2ZSBhIG1lc2gsIHRoZSBlbnRyeSBmb3IgdGhlIG5vZGUgd2lsbCBub3QgYmUgcHV0IGluIHRoZSByZXR1cm5pbmcgbWFwLlxuICpcbiAqIEBwYXJhbSBnbHRmIEEgR0xURiBvYmplY3QgdGFrZW4gZnJvbSBHTFRGTG9hZGVyXG4gKi9cbmZ1bmN0aW9uIGdsdGZFeHRyYWN0UHJpbWl0aXZlc0Zyb21Ob2RlcyhnbHRmKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB5aWVsZCBnbHRmLnBhcnNlci5nZXREZXBlbmRlbmNpZXMoJ25vZGUnKTtcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZXh0cmFjdFByaW1pdGl2ZXNJbnRlcm5hbChnbHRmLCBpbmRleCwgbm9kZSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBtYXAuc2V0KGluZGV4LCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgYSBtYXRlcmlhbCBkZWZpbml0aW9uIGluZGV4IG9mIGdsVEYgZnJvbSBhc3NvY2lhdGVkIG1hdGVyaWFsLlxuICogSXQncyBiYXNpY2FsbHkgYSBjb21hdCBjb2RlIGJldHdlZW4gVGhyZWUuanMgcjEzMyBvciBhYm92ZSBhbmQgcHJldmlvdXMgdmVyc2lvbnMuXG4gKiBAcGFyYW0gcGFyc2VyIEdMVEZQYXJzZXJcbiAqIEBwYXJhbSBtYXRlcmlhbCBBIG1hdGVyaWFsIG9mIGdsdGZcbiAqIEByZXR1cm5zIE1hdGVyaWFsIGRlZmluaXRpb24gaW5kZXggb2YgZ2xURlxuICovXG5mdW5jdGlvbiBnbHRmR2V0QXNzb2NpYXRlZE1hdGVyaWFsSW5kZXgocGFyc2VyLCBtYXRlcmlhbCkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QgdGhyZWVSZXZpc2lvbiA9IHBhcnNlSW50KFRIUkVFLlJFVklTSU9OLCAxMCk7XG4gICAgbGV0IGluZGV4ID0gbnVsbDtcbiAgICBpZiAodGhyZWVSZXZpc2lvbiA+PSAxMzMpIHtcbiAgICAgICAgaW5kZXggPSAoX2IgPSAoX2EgPSBwYXJzZXIuYXNzb2NpYXRpb25zLmdldChtYXRlcmlhbCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5tYXRlcmlhbHMpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBhc3NvY2lhdGlvbnMgPSBwYXJzZXIuYXNzb2NpYXRpb25zO1xuICAgICAgICBjb25zdCByZWZlcmVuY2UgPSBhc3NvY2lhdGlvbnMuZ2V0KG1hdGVyaWFsKTtcbiAgICAgICAgaWYgKChyZWZlcmVuY2UgPT09IG51bGwgfHwgcmVmZXJlbmNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZWZlcmVuY2UudHlwZSkgPT09ICdtYXRlcmlhbHMnKSB7XG4gICAgICAgICAgICBpbmRleCA9IHJlZmVyZW5jZS5pbmRleDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5kZXg7XG59XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuY29uc3QgVlJNRXhwcmVzc2lvblByZXNldE5hbWUgPSB7XG4gICAgQWE6ICdhYScsXG4gICAgSWg6ICdpaCcsXG4gICAgT3U6ICdvdScsXG4gICAgRWU6ICdlZScsXG4gICAgT2g6ICdvaCcsXG4gICAgQmxpbms6ICdibGluaycsXG4gICAgSGFwcHk6ICdoYXBweScsXG4gICAgQW5ncnk6ICdhbmdyeScsXG4gICAgU2FkOiAnc2FkJyxcbiAgICBSZWxheGVkOiAncmVsYXhlZCcsXG4gICAgTG9va1VwOiAnbG9va1VwJyxcbiAgICBTdXJwcmlzZWQ6ICdzdXJwcmlzZWQnLFxuICAgIExvb2tEb3duOiAnbG9va0Rvd24nLFxuICAgIExvb2tMZWZ0OiAnbG9va0xlZnQnLFxuICAgIExvb2tSaWdodDogJ2xvb2tSaWdodCcsXG4gICAgQmxpbmtMZWZ0OiAnYmxpbmtMZWZ0JyxcbiAgICBCbGlua1JpZ2h0OiAnYmxpbmtSaWdodCcsXG4gICAgTmV1dHJhbDogJ25ldXRyYWwnLFxufTtcblxuLyoqXG4gKiBDbGFtcCB0aGUgaW5wdXQgdmFsdWUgd2l0aGluIFswLjAgLSAxLjBdLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgaW5wdXQgdmFsdWVcbiAqL1xuZnVuY3Rpb24gc2F0dXJhdGUodmFsdWUpIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4odmFsdWUsIDEuMCksIDAuMCk7XG59XG5cbmNsYXNzIFZSTUV4cHJlc3Npb25NYW5hZ2VyIHtcbiAgICBnZXQgZXhwcmVzc2lvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leHByZXNzaW9ucy5jb25jYXQoKTtcbiAgICB9XG4gICAgZ2V0IGV4cHJlc3Npb25NYXAoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9leHByZXNzaW9uTWFwKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBtYXAgZnJvbSBuYW1lIHRvIGV4cHJlc3Npb24sIGJ1dCBleGNsdWRpbmcgY3VzdG9tIGV4cHJlc3Npb25zLlxuICAgICAqL1xuICAgIGdldCBwcmVzZXRFeHByZXNzaW9uTWFwKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgY29uc3QgcHJlc2V0TmFtZVNldCA9IG5ldyBTZXQoT2JqZWN0LnZhbHVlcyhWUk1FeHByZXNzaW9uUHJlc2V0TmFtZSkpO1xuICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLl9leHByZXNzaW9uTWFwKS5mb3JFYWNoKChbbmFtZSwgZXhwcmVzc2lvbl0pID0+IHtcbiAgICAgICAgICAgIGlmIChwcmVzZXROYW1lU2V0LmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtuYW1lXSA9IGV4cHJlc3Npb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIG1hcCBmcm9tIG5hbWUgdG8gZXhwcmVzc2lvbiwgYnV0IGV4Y2x1ZGluZyBwcmVzZXQgZXhwcmVzc2lvbnMuXG4gICAgICovXG4gICAgZ2V0IGN1c3RvbUV4cHJlc3Npb25NYXAoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBjb25zdCBwcmVzZXROYW1lU2V0ID0gbmV3IFNldChPYmplY3QudmFsdWVzKFZSTUV4cHJlc3Npb25QcmVzZXROYW1lKSk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuX2V4cHJlc3Npb25NYXApLmZvckVhY2goKFtuYW1lLCBleHByZXNzaW9uXSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFwcmVzZXROYW1lU2V0LmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtuYW1lXSA9IGV4cHJlc3Npb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIFZSTUV4cHJlc3Npb25NYW5hZ2VyfS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgc2V0IG9mIG5hbWUgb3IgcHJlc2V0IG5hbWUgb2YgZXhwcmVzc2lvbnMgdGhhdCB3aWxsIGJlIG92ZXJyaWRkZW4gYnkge0BsaW5rIFZSTUV4cHJlc3Npb24ub3ZlcnJpZGVCbGlua30uXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmJsaW5rRXhwcmVzc2lvbk5hbWVzID0gWydibGluaycsICdibGlua0xlZnQnLCAnYmxpbmtSaWdodCddO1xuICAgICAgICAvKipcbiAgICAgICAgICogQSBzZXQgb2YgbmFtZSBvciBwcmVzZXQgbmFtZSBvZiBleHByZXNzaW9ucyB0aGF0IHdpbGwgYmUgb3ZlcnJpZGRlbiBieSB7QGxpbmsgVlJNRXhwcmVzc2lvbi5vdmVycmlkZUxvb2tBdH0uXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmxvb2tBdEV4cHJlc3Npb25OYW1lcyA9IFsnbG9va0xlZnQnLCAnbG9va1JpZ2h0JywgJ2xvb2tVcCcsICdsb29rRG93biddO1xuICAgICAgICAvKipcbiAgICAgICAgICogQSBzZXQgb2YgbmFtZSBvciBwcmVzZXQgbmFtZSBvZiBleHByZXNzaW9ucyB0aGF0IHdpbGwgYmUgb3ZlcnJpZGRlbiBieSB7QGxpbmsgVlJNRXhwcmVzc2lvbi5vdmVycmlkZU1vdXRofS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubW91dGhFeHByZXNzaW9uTmFtZXMgPSBbJ2FhJywgJ2VlJywgJ2loJywgJ29oJywgJ291J107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIHNldCBvZiB7QGxpbmsgVlJNRXhwcmVzc2lvbn0uXG4gICAgICAgICAqIFdoZW4geW91IHdhbnQgdG8gcmVnaXN0ZXIgZXhwcmVzc2lvbnMsIHVzZSB7QGxpbmsgcmVnaXN0ZXJFeHByZXNzaW9ufVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fZXhwcmVzc2lvbnMgPSBbXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgbWFwIGZyb20gbmFtZSB0byBleHByZXNzaW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fZXhwcmVzc2lvbk1hcCA9IHt9O1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvcHkgdGhlIGdpdmVuIHtAbGluayBWUk1FeHByZXNzaW9uTWFuYWdlcn0gaW50byB0aGlzIG9uZS5cbiAgICAgKiBAcGFyYW0gc291cmNlIFRoZSB7QGxpbmsgVlJNRXhwcmVzc2lvbk1hbmFnZXJ9IHlvdSB3YW50IHRvIGNvcHlcbiAgICAgKiBAcmV0dXJucyB0aGlzXG4gICAgICovXG4gICAgY29weShzb3VyY2UpIHtcbiAgICAgICAgLy8gZmlyc3QgdW5yZWdpc3RlciBhbGwgdGhlIGV4cHJlc3Npb24gaXQgaGFzXG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25zID0gdGhpcy5fZXhwcmVzc2lvbnMuY29uY2F0KCk7XG4gICAgICAgIGV4cHJlc3Npb25zLmZvckVhY2goKGV4cHJlc3Npb24pID0+IHtcbiAgICAgICAgICAgIHRoaXMudW5yZWdpc3RlckV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyB0aGVuIHJlZ2lzdGVyIGFsbCB0aGUgZXhwcmVzc2lvbiBvZiB0aGUgc291cmNlXG4gICAgICAgIHNvdXJjZS5fZXhwcmVzc2lvbnMuZm9yRWFjaCgoZXhwcmVzc2lvbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjb3B5IHJlbWFpbmluZyBtZW1iZXJzXG4gICAgICAgIHRoaXMuYmxpbmtFeHByZXNzaW9uTmFtZXMgPSBzb3VyY2UuYmxpbmtFeHByZXNzaW9uTmFtZXMuY29uY2F0KCk7XG4gICAgICAgIHRoaXMubG9va0F0RXhwcmVzc2lvbk5hbWVzID0gc291cmNlLmxvb2tBdEV4cHJlc3Npb25OYW1lcy5jb25jYXQoKTtcbiAgICAgICAgdGhpcy5tb3V0aEV4cHJlc3Npb25OYW1lcyA9IHNvdXJjZS5tb3V0aEV4cHJlc3Npb25OYW1lcy5jb25jYXQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBjbG9uZSBvZiB0aGlzIHtAbGluayBWUk1FeHByZXNzaW9uTWFuYWdlcn0uXG4gICAgICogQHJldHVybnMgQ29waWVkIHtAbGluayBWUk1FeHByZXNzaW9uTWFuYWdlcn1cbiAgICAgKi9cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWUk1FeHByZXNzaW9uTWFuYWdlcigpLmNvcHkodGhpcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIHJlZ2lzdGVyZWQgZXhwcmVzc2lvbi5cbiAgICAgKiBJZiBpdCBjYW5ub3QgZmluZCBhbiBleHByZXNzaW9uLCBpdCB3aWxsIHJldHVybiBgbnVsbGAgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lIE5hbWUgb3IgcHJlc2V0IG5hbWUgb2YgdGhlIGV4cHJlc3Npb25cbiAgICAgKi9cbiAgICBnZXRFeHByZXNzaW9uKG5hbWUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKF9hID0gdGhpcy5fZXhwcmVzc2lvbk1hcFtuYW1lXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgYW4gZXhwcmVzc2lvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBleHByZXNzaW9uIHtAbGluayBWUk1FeHByZXNzaW9ufSB0aGF0IGRlc2NyaWJlcyB0aGUgZXhwcmVzc2lvblxuICAgICAqL1xuICAgIHJlZ2lzdGVyRXhwcmVzc2lvbihleHByZXNzaW9uKSB7XG4gICAgICAgIHRoaXMuX2V4cHJlc3Npb25zLnB1c2goZXhwcmVzc2lvbik7XG4gICAgICAgIHRoaXMuX2V4cHJlc3Npb25NYXBbZXhwcmVzc2lvbi5leHByZXNzaW9uTmFtZV0gPSBleHByZXNzaW9uO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVbnJlZ2lzdGVyIGFuIGV4cHJlc3Npb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXhwcmVzc2lvbiBUaGUgZXhwcmVzc2lvbiB5b3Ugd2FudCB0byB1bnJlZ2lzdGVyXG4gICAgICovXG4gICAgdW5yZWdpc3RlckV4cHJlc3Npb24oZXhwcmVzc2lvbikge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2V4cHJlc3Npb25zLmluZGV4T2YoZXhwcmVzc2lvbik7XG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVlJNRXhwcmVzc2lvbk1hbmFnZXI6IFRoZSBzcGVjaWZpZWQgZXhwcmVzc2lvbnMgaXMgbm90IHJlZ2lzdGVyZWQnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9leHByZXNzaW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBkZWxldGUgdGhpcy5fZXhwcmVzc2lvbk1hcFtleHByZXNzaW9uLmV4cHJlc3Npb25OYW1lXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBjdXJyZW50IHdlaWdodCBvZiB0aGUgc3BlY2lmaWVkIGV4cHJlc3Npb24uXG4gICAgICogSWYgaXQgZG9lc24ndCBoYXZlIGFuIGV4cHJlc3Npb24gb2YgZ2l2ZW4gbmFtZSwgaXQgd2lsbCByZXR1cm4gYG51bGxgIGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBleHByZXNzaW9uXG4gICAgICovXG4gICAgZ2V0VmFsdWUobmFtZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSB0aGlzLmdldEV4cHJlc3Npb24obmFtZSk7XG4gICAgICAgIHJldHVybiAoX2EgPSBleHByZXNzaW9uID09PSBudWxsIHx8IGV4cHJlc3Npb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cHJlc3Npb24ud2VpZ2h0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXQgYSB3ZWlnaHQgdG8gdGhlIHNwZWNpZmllZCBleHByZXNzaW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgZXhwcmVzc2lvblxuICAgICAqIEBwYXJhbSB3ZWlnaHQgV2VpZ2h0XG4gICAgICovXG4gICAgc2V0VmFsdWUobmFtZSwgd2VpZ2h0KSB7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSB0aGlzLmdldEV4cHJlc3Npb24obmFtZSk7XG4gICAgICAgIGlmIChleHByZXNzaW9uKSB7XG4gICAgICAgICAgICBleHByZXNzaW9uLndlaWdodCA9IHNhdHVyYXRlKHdlaWdodCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IGEgdHJhY2sgbmFtZSBvZiBzcGVjaWZpZWQgZXhwcmVzc2lvbi5cbiAgICAgKiBUaGlzIHRyYWNrIG5hbWUgaXMgbmVlZGVkIHRvIG1hbmlwdWxhdGUgaXRzIGV4cHJlc3Npb24gdmlhIGtleWZyYW1lIGFuaW1hdGlvbnMuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZSBNYW5pcHVsYXRlIGFuIGV4cHJlc3Npb24gdXNpbmcga2V5ZnJhbWUgYW5pbWF0aW9uXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCB0cmFja05hbWUgPSB2cm0uZXhwcmVzc2lvbk1hbmFnZXIuZ2V0RXhwcmVzc2lvblRyYWNrTmFtZSggJ2JsaW5rJyApO1xuICAgICAqIGNvbnN0IHRyYWNrID0gbmV3IFRIUkVFLk51bWJlcktleWZyYW1lVHJhY2soXG4gICAgICogICBuYW1lLFxuICAgICAqICAgWyAwLjAsIDAuNSwgMS4wIF0sIC8vIHRpbWVzXG4gICAgICogICBbIDAuMCwgMS4wLCAwLjAgXSAvLyB2YWx1ZXNcbiAgICAgKiApO1xuICAgICAqXG4gICAgICogY29uc3QgY2xpcCA9IG5ldyBUSFJFRS5BbmltYXRpb25DbGlwKFxuICAgICAqICAgJ2JsaW5rJywgLy8gbmFtZVxuICAgICAqICAgMS4wLCAvLyBkdXJhdGlvblxuICAgICAqICAgWyB0cmFjayBdIC8vIHRyYWNrc1xuICAgICAqICk7XG4gICAgICpcbiAgICAgKiBjb25zdCBtaXhlciA9IG5ldyBUSFJFRS5BbmltYXRpb25NaXhlciggdnJtLnNjZW5lICk7XG4gICAgICogY29uc3QgYWN0aW9uID0gbWl4ZXIuY2xpcEFjdGlvbiggY2xpcCApO1xuICAgICAqIGFjdGlvbi5wbGF5KCk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBleHByZXNzaW9uXG4gICAgICovXG4gICAgZ2V0RXhwcmVzc2lvblRyYWNrTmFtZShuYW1lKSB7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSB0aGlzLmdldEV4cHJlc3Npb24obmFtZSk7XG4gICAgICAgIHJldHVybiBleHByZXNzaW9uID8gYCR7ZXhwcmVzc2lvbi5uYW1lfS53ZWlnaHRgIDogbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVXBkYXRlIGV2ZXJ5IGV4cHJlc3Npb25zLlxuICAgICAqL1xuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgLy8gc2VlIGhvdyBtdWNoIHdlIHNob3VsZCBvdmVycmlkZSBjZXJ0YWluIGV4cHJlc3Npb25zXG4gICAgICAgIGNvbnN0IHdlaWdodE11bHRpcGxpZXJzID0gdGhpcy5fY2FsY3VsYXRlV2VpZ2h0TXVsdGlwbGllcnMoKTtcbiAgICAgICAgLy8gcmVzZXQgZXhwcmVzc2lvbiBiaW5kcyBmaXJzdFxuICAgICAgICB0aGlzLl9leHByZXNzaW9ucy5mb3JFYWNoKChleHByZXNzaW9uKSA9PiB7XG4gICAgICAgICAgICBleHByZXNzaW9uLmNsZWFyQXBwbGllZFdlaWdodCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gdGhlbiBhcHBseSBiaW5kc1xuICAgICAgICB0aGlzLl9leHByZXNzaW9ucy5mb3JFYWNoKChleHByZXNzaW9uKSA9PiB7XG4gICAgICAgICAgICBsZXQgbXVsdGlwbGllciA9IDEuMDtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBleHByZXNzaW9uLmV4cHJlc3Npb25OYW1lO1xuICAgICAgICAgICAgaWYgKHRoaXMuYmxpbmtFeHByZXNzaW9uTmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBtdWx0aXBsaWVyICo9IHdlaWdodE11bHRpcGxpZXJzLmJsaW5rO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubG9va0F0RXhwcmVzc2lvbk5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbXVsdGlwbGllciAqPSB3ZWlnaHRNdWx0aXBsaWVycy5sb29rQXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5tb3V0aEV4cHJlc3Npb25OYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgKj0gd2VpZ2h0TXVsdGlwbGllcnMubW91dGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBleHByZXNzaW9uLmFwcGx5V2VpZ2h0KHsgbXVsdGlwbGllciB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZSBzdW0gb2Ygb3ZlcnJpZGUgYW1vdW50cyB0byBzZWUgaG93IG11Y2ggd2Ugc2hvdWxkIG11bHRpcGx5IHdlaWdodHMgb2YgY2VydGFpbiBleHByZXNzaW9ucy5cbiAgICAgKi9cbiAgICBfY2FsY3VsYXRlV2VpZ2h0TXVsdGlwbGllcnMoKSB7XG4gICAgICAgIGxldCBibGluayA9IDEuMDtcbiAgICAgICAgbGV0IGxvb2tBdCA9IDEuMDtcbiAgICAgICAgbGV0IG1vdXRoID0gMS4wO1xuICAgICAgICB0aGlzLl9leHByZXNzaW9ucy5mb3JFYWNoKChleHByZXNzaW9uKSA9PiB7XG4gICAgICAgICAgICBibGluayAtPSBleHByZXNzaW9uLm92ZXJyaWRlQmxpbmtBbW91bnQ7XG4gICAgICAgICAgICBsb29rQXQgLT0gZXhwcmVzc2lvbi5vdmVycmlkZUxvb2tBdEFtb3VudDtcbiAgICAgICAgICAgIG1vdXRoIC09IGV4cHJlc3Npb24ub3ZlcnJpZGVNb3V0aEFtb3VudDtcbiAgICAgICAgfSk7XG4gICAgICAgIGJsaW5rID0gTWF0aC5tYXgoMC4wLCBibGluayk7XG4gICAgICAgIGxvb2tBdCA9IE1hdGgubWF4KDAuMCwgbG9va0F0KTtcbiAgICAgICAgbW91dGggPSBNYXRoLm1heCgwLjAsIG1vdXRoKTtcbiAgICAgICAgcmV0dXJuIHsgYmxpbmssIGxvb2tBdCwgbW91dGggfTtcbiAgICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuY29uc3QgVlJNRXhwcmVzc2lvbk1hdGVyaWFsQ29sb3JUeXBlID0ge1xuICAgIENvbG9yOiAnY29sb3InLFxuICAgIEVtaXNzaW9uQ29sb3I6ICdlbWlzc2lvbkNvbG9yJyxcbiAgICBTaGFkZUNvbG9yOiAnc2hhZGVDb2xvcicsXG4gICAgTWF0Y2FwQ29sb3I6ICdtYXRjYXBDb2xvcicsXG4gICAgUmltQ29sb3I6ICdyaW1Db2xvcicsXG4gICAgT3V0bGluZUNvbG9yOiAnb3V0bGluZUNvbG9yJyxcbn07XG5jb25zdCB2MEV4cHJlc3Npb25NYXRlcmlhbENvbG9yTWFwID0ge1xuICAgIF9Db2xvcjogVlJNRXhwcmVzc2lvbk1hdGVyaWFsQ29sb3JUeXBlLkNvbG9yLFxuICAgIF9FbWlzc2lvbkNvbG9yOiBWUk1FeHByZXNzaW9uTWF0ZXJpYWxDb2xvclR5cGUuRW1pc3Npb25Db2xvcixcbiAgICBfU2hhZGVDb2xvcjogVlJNRXhwcmVzc2lvbk1hdGVyaWFsQ29sb3JUeXBlLlNoYWRlQ29sb3IsXG4gICAgX1JpbUNvbG9yOiBWUk1FeHByZXNzaW9uTWF0ZXJpYWxDb2xvclR5cGUuUmltQ29sb3IsXG4gICAgX091dGxpbmVDb2xvcjogVlJNRXhwcmVzc2lvbk1hdGVyaWFsQ29sb3JUeXBlLk91dGxpbmVDb2xvcixcbn07XG5cbmNvbnN0IF9jb2xvciA9IG5ldyBUSFJFRS5Db2xvcigpO1xuLyoqXG4gKiBBIGJpbmQgb2YgZXhwcmVzc2lvbiBpbmZsdWVuY2VzIHRvIGEgbWF0ZXJpYWwgY29sb3IuXG4gKi9cbmNsYXNzIFZSTUV4cHJlc3Npb25NYXRlcmlhbENvbG9yQmluZCB7XG4gICAgY29uc3RydWN0b3IoeyBtYXRlcmlhbCwgdHlwZSwgdGFyZ2V0VmFsdWUsIH0pIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIHRoaXMubWF0ZXJpYWwgPSBtYXRlcmlhbDtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy50YXJnZXRWYWx1ZSA9IHRhcmdldFZhbHVlO1xuICAgICAgICAvLyBpbml0IHByb3BlcnR5IG5hbWVcbiAgICAgICAgY29uc3QgcHJvcGVydHlOYW1lTWFwID0gKF9hID0gT2JqZWN0LmVudHJpZXMoVlJNRXhwcmVzc2lvbk1hdGVyaWFsQ29sb3JCaW5kLl9wcm9wZXJ0eU5hbWVNYXBNYXApLmZpbmQoKFtkaXN0aW5ndWlzaGVyXSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1hdGVyaWFsW2Rpc3Rpbmd1aXNoZXJdID09PSB0cnVlO1xuICAgICAgICB9KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdO1xuICAgICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSAoX2IgPSBwcm9wZXJ0eU5hbWVNYXAgPT09IG51bGwgfHwgcHJvcGVydHlOYW1lTWFwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcm9wZXJ0eU5hbWVNYXBbdHlwZV0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IG51bGw7XG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBUcmllZCB0byBhZGQgYSBtYXRlcmlhbCBjb2xvciBiaW5kIHRvIHRoZSBtYXRlcmlhbCAkeyhfYyA9IG1hdGVyaWFsLm5hbWUpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICcobm8gbmFtZSknfSwgdGhlIHR5cGUgJHt0eXBlfSBidXQgdGhlIG1hdGVyaWFsIG9yIHRoZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQuYCk7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBtYXRlcmlhbFtwcm9wZXJ0eU5hbWVdO1xuICAgICAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gdGFyZ2V0LmNsb25lKCk7XG4gICAgICAgICAgICAvLyDosqDjga7lgKTjgpLkv53mjIHjgZnjgovjgZ/jgoHjgatDb2xvci5zdWLjgpLkvb/jgo/jgZrjgavlt67liIbjgpLoqIjnrpfjgZnjgotcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhVmFsdWUgPSBuZXcgVEhSRUUuQ29sb3IodGFyZ2V0VmFsdWUuciAtIGluaXRpYWxWYWx1ZS5yLCB0YXJnZXRWYWx1ZS5nIC0gaW5pdGlhbFZhbHVlLmcsIHRhcmdldFZhbHVlLmIgLSBpbml0aWFsVmFsdWUuYik7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlLFxuICAgICAgICAgICAgICAgIGRlbHRhVmFsdWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIGFwcGx5V2VpZ2h0KHdlaWdodCkge1xuICAgICAgICBpZiAodGhpcy5fc3RhdGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gd2FybmluZyBpcyBhbHJlYWR5IGVtaXR0ZWQgaW4gY29uc3RydWN0b3JcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHByb3BlcnR5TmFtZSwgZGVsdGFWYWx1ZSB9ID0gdGhpcy5fc3RhdGU7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMubWF0ZXJpYWxbcHJvcGVydHlOYW1lXTtcbiAgICAgICAgaWYgKHRhcmdldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gVE9ETzogd2Ugc2hvdWxkIGtpY2sgdGhpcyBhdCBgYWRkTWF0ZXJpYWxWYWx1ZWBcbiAgICAgICAgdGFyZ2V0LmFkZChfY29sb3IuY29weShkZWx0YVZhbHVlKS5tdWx0aXBseVNjYWxhcih3ZWlnaHQpKTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1hdGVyaWFsLnNob3VsZEFwcGx5VW5pZm9ybXMgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgdGhpcy5tYXRlcmlhbC5zaG91bGRBcHBseVVuaWZvcm1zID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjbGVhckFwcGxpZWRXZWlnaHQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9zdGF0ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyB3YXJuaW5nIGlzIGFscmVhZHkgZW1pdHRlZCBpbiBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgcHJvcGVydHlOYW1lLCBpbml0aWFsVmFsdWUgfSA9IHRoaXMuX3N0YXRlO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLm1hdGVyaWFsW3Byb3BlcnR5TmFtZV07XG4gICAgICAgIGlmICh0YXJnZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIFRPRE86IHdlIHNob3VsZCBraWNrIHRoaXMgYXQgYGFkZE1hdGVyaWFsVmFsdWVgXG4gICAgICAgIHRhcmdldC5jb3B5KGluaXRpYWxWYWx1ZSk7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tYXRlcmlhbC5zaG91bGRBcHBseVVuaWZvcm1zID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHRoaXMubWF0ZXJpYWwuc2hvdWxkQXBwbHlVbmlmb3JtcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIE1hcHBpbmcgb2YgcHJvcGVydHkgbmFtZXMgZnJvbSBWUk1DL21hdGVyaWFsQ29sb3JCaW5kcy50eXBlIHRvIHRocmVlLmpzL01hdGVyaWFsLlxuICovXG5WUk1FeHByZXNzaW9uTWF0ZXJpYWxDb2xvckJpbmQuX3Byb3BlcnR5TmFtZU1hcE1hcCA9IHtcbiAgICBpc01lc2hTdGFuZGFyZE1hdGVyaWFsOiB7XG4gICAgICAgIGNvbG9yOiAnY29sb3InLFxuICAgICAgICBlbWlzc2lvbkNvbG9yOiAnZW1pc3NpdmUnLFxuICAgIH0sXG4gICAgaXNNZXNoQmFzaWNNYXRlcmlhbDoge1xuICAgICAgICBjb2xvcjogJ2NvbG9yJyxcbiAgICB9LFxuICAgIGlzTVRvb25NYXRlcmlhbDoge1xuICAgICAgICBjb2xvcjogJ2NvbG9yJyxcbiAgICAgICAgZW1pc3Npb25Db2xvcjogJ2VtaXNzaXZlJyxcbiAgICAgICAgb3V0bGluZUNvbG9yOiAnb3V0bGluZUNvbG9yRmFjdG9yJyxcbiAgICAgICAgbWF0Y2FwQ29sb3I6ICdtYXRjYXBGYWN0b3InLFxuICAgICAgICByaW1Db2xvcjogJ3BhcmFtZXRyaWNSaW1Db2xvckZhY3RvcicsXG4gICAgICAgIHNoYWRlQ29sb3I6ICdzaGFkZUNvbG9yRmFjdG9yJyxcbiAgICB9LFxufTtcblxuLyoqXG4gKiBBIGJpbmQgb2Yge0BsaW5rIFZSTUV4cHJlc3Npb259IGluZmx1ZW5jZXMgdG8gbW9ycGggdGFyZ2V0cy5cbiAqL1xuY2xhc3MgVlJNRXhwcmVzc2lvbk1vcnBoVGFyZ2V0QmluZCB7XG4gICAgY29uc3RydWN0b3IoeyBwcmltaXRpdmVzLCBpbmRleCwgd2VpZ2h0LCB9KSB7XG4gICAgICAgIHRoaXMucHJpbWl0aXZlcyA9IHByaW1pdGl2ZXM7XG4gICAgICAgIHRoaXMuaW5kZXggPSBpbmRleDtcbiAgICAgICAgdGhpcy53ZWlnaHQgPSB3ZWlnaHQ7XG4gICAgfVxuICAgIGFwcGx5V2VpZ2h0KHdlaWdodCkge1xuICAgICAgICB0aGlzLnByaW1pdGl2ZXMuZm9yRWFjaCgobWVzaCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKCgoX2EgPSBtZXNoLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW3RoaXMuaW5kZXhdKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbWVzaC5tb3JwaFRhcmdldEluZmx1ZW5jZXNbdGhpcy5pbmRleF0gKz0gdGhpcy53ZWlnaHQgKiB3ZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjbGVhckFwcGxpZWRXZWlnaHQoKSB7XG4gICAgICAgIHRoaXMucHJpbWl0aXZlcy5mb3JFYWNoKChtZXNoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBpZiAoKChfYSA9IG1lc2gubW9ycGhUYXJnZXRJbmZsdWVuY2VzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbdGhpcy5pbmRleF0pICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBtZXNoLm1vcnBoVGFyZ2V0SW5mbHVlbmNlc1t0aGlzLmluZGV4XSA9IDAuMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5jb25zdCBfdjIgPSBuZXcgVEhSRUUuVmVjdG9yMigpO1xuLyoqXG4gKiBBIGJpbmQgb2YgZXhwcmVzc2lvbiBpbmZsdWVuY2VzIHRvIHRleHR1cmUgdHJhbnNmb3Jtcy5cbiAqL1xuY2xhc3MgVlJNRXhwcmVzc2lvblRleHR1cmVUcmFuc2Zvcm1CaW5kIHtcbiAgICBjb25zdHJ1Y3Rvcih7IG1hdGVyaWFsLCBzY2FsZSwgb2Zmc2V0LCB9KSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHRoaXMubWF0ZXJpYWwgPSBtYXRlcmlhbDtcbiAgICAgICAgdGhpcy5zY2FsZSA9IHNjYWxlO1xuICAgICAgICB0aGlzLm9mZnNldCA9IG9mZnNldDtcbiAgICAgICAgY29uc3QgcHJvcGVydHlOYW1lcyA9IChfYSA9IE9iamVjdC5lbnRyaWVzKFZSTUV4cHJlc3Npb25UZXh0dXJlVHJhbnNmb3JtQmluZC5fcHJvcGVydHlOYW1lc01hcCkuZmluZCgoW2Rpc3Rpbmd1aXNoZXJdKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWF0ZXJpYWxbZGlzdGluZ3Vpc2hlcl0gPT09IHRydWU7XG4gICAgICAgIH0pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV07XG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWVzID09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVHJpZWQgdG8gYWRkIGEgdGV4dHVyZSB0cmFuc2Zvcm0gYmluZCB0byB0aGUgbWF0ZXJpYWwgJHsoX2IgPSBtYXRlcmlhbC5uYW1lKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnKG5vIG5hbWUpJ30gYnV0IHRoZSBtYXRlcmlhbCBpcyBub3Qgc3VwcG9ydGVkLmApO1xuICAgICAgICAgICAgdGhpcy5fcHJvcGVydGllcyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcHJvcGVydGllcyA9IFtdO1xuICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5mb3JFYWNoKChwcm9wZXJ0eU5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgY29uc3QgdGV4dHVyZSA9IChfYSA9IG1hdGVyaWFsW3Byb3BlcnR5TmFtZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbG9uZSgpO1xuICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWF0ZXJpYWxbcHJvcGVydHlOYW1lXSA9IHRleHR1cmU7IC8vIGJlY2F1c2UgdGhlIHRleHR1cmUgaXMgY2xvbmVkXG4gICAgICAgICAgICAgICAgY29uc3QgaW5pdGlhbE9mZnNldCA9IHRleHR1cmUub2Zmc2V0LmNsb25lKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5pdGlhbFNjYWxlID0gdGV4dHVyZS5yZXBlYXQuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWx0YU9mZnNldCA9IG9mZnNldC5jbG9uZSgpLnN1Yihpbml0aWFsT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWx0YVNjYWxlID0gc2NhbGUuY2xvbmUoKS5zdWIoaW5pdGlhbFNjYWxlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGRlbHRhT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsU2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIGRlbHRhU2NhbGUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhcHBseVdlaWdodCh3ZWlnaHQpIHtcbiAgICAgICAgdGhpcy5fcHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5tYXRlcmlhbFtwcm9wZXJ0eS5uYW1lXTtcbiAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gLy8gVE9ETzogd2Ugc2hvdWxkIGtpY2sgdGhpcyBhdCBgYWRkTWF0ZXJpYWxWYWx1ZWBcbiAgICAgICAgICAgIHRhcmdldC5vZmZzZXQuYWRkKF92Mi5jb3B5KHByb3BlcnR5LmRlbHRhT2Zmc2V0KS5tdWx0aXBseVNjYWxhcih3ZWlnaHQpKTtcbiAgICAgICAgICAgIHRhcmdldC5yZXBlYXQuYWRkKF92Mi5jb3B5KHByb3BlcnR5LmRlbHRhU2NhbGUpLm11bHRpcGx5U2NhbGFyKHdlaWdodCkpO1xuICAgICAgICAgICAgdGFyZ2V0Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNsZWFyQXBwbGllZFdlaWdodCgpIHtcbiAgICAgICAgdGhpcy5fcHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5tYXRlcmlhbFtwcm9wZXJ0eS5uYW1lXTtcbiAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gLy8gVE9ETzogd2Ugc2hvdWxkIGtpY2sgdGhpcyBhdCBgYWRkTWF0ZXJpYWxWYWx1ZWBcbiAgICAgICAgICAgIHRhcmdldC5vZmZzZXQuY29weShwcm9wZXJ0eS5pbml0aWFsT2Zmc2V0KTtcbiAgICAgICAgICAgIHRhcmdldC5yZXBlYXQuY29weShwcm9wZXJ0eS5pbml0aWFsU2NhbGUpO1xuICAgICAgICAgICAgdGFyZ2V0Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuVlJNRXhwcmVzc2lvblRleHR1cmVUcmFuc2Zvcm1CaW5kLl9wcm9wZXJ0eU5hbWVzTWFwID0ge1xuICAgIGlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw6IFtcbiAgICAgICAgJ21hcCcsXG4gICAgICAgICdlbWlzc2l2ZU1hcCcsXG4gICAgICAgICdidW1wTWFwJyxcbiAgICAgICAgJ25vcm1hbE1hcCcsXG4gICAgICAgICdkaXNwbGFjZW1lbnRNYXAnLFxuICAgICAgICAncm91Z2huZXNzTWFwJyxcbiAgICAgICAgJ21ldGFsbmVzc01hcCcsXG4gICAgICAgICdhbHBoYU1hcCcsXG4gICAgXSxcbiAgICBpc01lc2hCYXNpY01hdGVyaWFsOiBbJ21hcCcsICdzcGVjdWxhck1hcCcsICdhbHBoYU1hcCddLFxuICAgIGlzTVRvb25NYXRlcmlhbDogW1xuICAgICAgICAnbWFwJyxcbiAgICAgICAgJ25vcm1hbE1hcCcsXG4gICAgICAgICdlbWlzc2l2ZU1hcCcsXG4gICAgICAgICdzaGFkZU11bHRpcGx5VGV4dHVyZScsXG4gICAgICAgICdyaW1NdWx0aXBseVRleHR1cmUnLFxuICAgICAgICAnb3V0bGluZVdpZHRoTXVsdGlwbHlUZXh0dXJlJyxcbiAgICAgICAgJ3V2QW5pbWF0aW9uTWFza1RleHR1cmUnLFxuICAgIF0sXG59O1xuXG4vKipcbiAqIFBvc3NpYmxlIHNwZWMgdmVyc2lvbnMgaXQgcmVjb2duaXplcy5cbiAqL1xuY29uc3QgUE9TU0lCTEVfU1BFQ19WRVJTSU9OUyQ0ID0gbmV3IFNldChbJzEuMCcsICcxLjAtYmV0YSddKTtcbi8qKlxuICogQSBwbHVnaW4gb2YgR0xURkxvYWRlciB0aGF0IGltcG9ydHMgYSB7QGxpbmsgVlJNRXhwcmVzc2lvbk1hbmFnZXJ9IGZyb20gYSBWUk0gZXh0ZW5zaW9uIG9mIGEgR0xURi5cbiAqL1xuY2xhc3MgVlJNRXhwcmVzc2lvbkxvYWRlclBsdWdpbiB7XG4gICAgZ2V0IG5hbWUoKSB7XG4gICAgICAgIC8vIFdlIHNob3VsZCB1c2UgdGhlIGV4dGVuc2lvbiBuYW1lIGluc3RlYWQgYnV0IHdlIGhhdmUgbXVsdGlwbGUgcGx1Z2lucyBmb3IgYW4gZXh0ZW5zaW9uLi4uXG4gICAgICAgIHJldHVybiAnVlJNRXhwcmVzc2lvbkxvYWRlclBsdWdpbic7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhcnNlcikge1xuICAgICAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICB9XG4gICAgYWZ0ZXJSb290KGdsdGYpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGdsdGYudXNlckRhdGEudnJtRXhwcmVzc2lvbk1hbmFnZXIgPSB5aWVsZCB0aGlzLl9pbXBvcnQoZ2x0Zik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbXBvcnQgYSB7QGxpbmsgVlJNRXhwcmVzc2lvbk1hbmFnZXJ9IGZyb20gYSBWUk0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZ2x0ZiBBIHBhcnNlZCByZXN1bHQgb2YgR0xURiB0YWtlbiBmcm9tIEdMVEZMb2FkZXJcbiAgICAgKi9cbiAgICBfaW1wb3J0KGdsdGYpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHYxUmVzdWx0ID0geWllbGQgdGhpcy5fdjFJbXBvcnQoZ2x0Zik7XG4gICAgICAgICAgICBpZiAodjFSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdjFSZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2MFJlc3VsdCA9IHlpZWxkIHRoaXMuX3YwSW1wb3J0KGdsdGYpO1xuICAgICAgICAgICAgaWYgKHYwUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHYwUmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfdjFJbXBvcnQoZ2x0Zikge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QganNvbiA9IHRoaXMucGFyc2VyLmpzb247XG4gICAgICAgICAgICAvLyBlYXJseSBhYm9ydCBpZiBpdCBkb2Vzbid0IHVzZSB2cm1cbiAgICAgICAgICAgIGNvbnN0IGlzVlJNVXNlZCA9ICgoX2EgPSBqc29uLmV4dGVuc2lvbnNVc2VkKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaW5kZXhPZignVlJNQ192cm0nKSkgIT09IC0xO1xuICAgICAgICAgICAgaWYgKCFpc1ZSTVVzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IChfYiA9IGpzb24uZXh0ZW5zaW9ucykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iWydWUk1DX3ZybSddO1xuICAgICAgICAgICAgaWYgKCFleHRlbnNpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNwZWNWZXJzaW9uID0gZXh0ZW5zaW9uLnNwZWNWZXJzaW9uO1xuICAgICAgICAgICAgaWYgKCFQT1NTSUJMRV9TUEVDX1ZFUlNJT05TJDQuaGFzKHNwZWNWZXJzaW9uKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVlJNRXhwcmVzc2lvbkxvYWRlclBsdWdpbjogVW5rbm93biBWUk1DX3ZybSBzcGVjVmVyc2lvbiBcIiR7c3BlY1ZlcnNpb259XCJgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYUV4cHJlc3Npb25zID0gZXh0ZW5zaW9uLmV4cHJlc3Npb25zO1xuICAgICAgICAgICAgaWYgKCFzY2hlbWFFeHByZXNzaW9ucykge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbGlzdCBleHByZXNzaW9uc1xuICAgICAgICAgICAgY29uc3QgcHJlc2V0TmFtZVNldCA9IG5ldyBTZXQoT2JqZWN0LnZhbHVlcyhWUk1FeHByZXNzaW9uUHJlc2V0TmFtZSkpO1xuICAgICAgICAgICAgY29uc3QgbmFtZVNjaGVtYUV4cHJlc3Npb25NYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICBpZiAoc2NoZW1hRXhwcmVzc2lvbnMucHJlc2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhzY2hlbWFFeHByZXNzaW9ucy5wcmVzZXQpLmZvckVhY2goKFtuYW1lLCBzY2hlbWFFeHByZXNzaW9uXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2NoZW1hRXhwcmVzc2lvbiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH0gLy8gdHlwZXNjcmlwdFxuICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXNldE5hbWVTZXQuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFZSTUV4cHJlc3Npb25Mb2FkZXJQbHVnaW46IFVua25vd24gcHJlc2V0IG5hbWUgXCIke25hbWV9XCIgZGV0ZWN0ZWQuIElnbm9yaW5nIHRoZSBleHByZXNzaW9uYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmFtZVNjaGVtYUV4cHJlc3Npb25NYXAuc2V0KG5hbWUsIHNjaGVtYUV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNjaGVtYUV4cHJlc3Npb25zLmN1c3RvbSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoc2NoZW1hRXhwcmVzc2lvbnMuY3VzdG9tKS5mb3JFYWNoKChbbmFtZSwgc2NoZW1hRXhwcmVzc2lvbl0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXNldE5hbWVTZXQuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFZSTUV4cHJlc3Npb25Mb2FkZXJQbHVnaW46IEN1c3RvbSBleHByZXNzaW9uIGNhbm5vdCBoYXZlIHByZXNldCBuYW1lIFwiJHtuYW1lfVwiLiBJZ25vcmluZyB0aGUgZXhwcmVzc2lvbmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5hbWVTY2hlbWFFeHByZXNzaW9uTWFwLnNldChuYW1lLCBzY2hlbWFFeHByZXNzaW9uKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHByZXBhcmUgbWFuYWdlclxuICAgICAgICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWUk1FeHByZXNzaW9uTWFuYWdlcigpO1xuICAgICAgICAgICAgLy8gbG9hZCBleHByZXNzaW9uc1xuICAgICAgICAgICAgeWllbGQgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShuYW1lU2NoZW1hRXhwcmVzc2lvbk1hcC5lbnRyaWVzKCkpLm1hcCgoW25hbWUsIHNjaGVtYUV4cHJlc3Npb25dKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBuZXcgVlJNRXhwcmVzc2lvbihuYW1lKTtcbiAgICAgICAgICAgICAgICBnbHRmLnNjZW5lLmFkZChleHByZXNzaW9uKTtcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uLmlzQmluYXJ5ID0gKF9jID0gc2NoZW1hRXhwcmVzc2lvbi5pc0JpbmFyeSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbi5vdmVycmlkZUJsaW5rID0gKF9kID0gc2NoZW1hRXhwcmVzc2lvbi5vdmVycmlkZUJsaW5rKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAnbm9uZSc7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbi5vdmVycmlkZUxvb2tBdCA9IChfZSA9IHNjaGVtYUV4cHJlc3Npb24ub3ZlcnJpZGVMb29rQXQpICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6ICdub25lJztcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uLm92ZXJyaWRlTW91dGggPSAoX2YgPSBzY2hlbWFFeHByZXNzaW9uLm92ZXJyaWRlTW91dGgpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6ICdub25lJztcbiAgICAgICAgICAgICAgICAoX2cgPSBzY2hlbWFFeHByZXNzaW9uLm1vcnBoVGFyZ2V0QmluZHMpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5mb3JFYWNoKChiaW5kKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfaztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJpbmQubm9kZSA9PT0gdW5kZWZpbmVkIHx8IGJpbmQuaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByaW1pdGl2ZXMgPSAoeWllbGQgZ2x0ZkV4dHJhY3RQcmltaXRpdmVzRnJvbU5vZGUoZ2x0ZiwgYmluZC5ub2RlKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vcnBoVGFyZ2V0SW5kZXggPSBiaW5kLmluZGV4O1xuICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiB0aGUgbWVzaCBoYXMgdGhlIHRhcmdldCBtb3JwaCB0YXJnZXRcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVzLmV2ZXJ5KChwcmltaXRpdmUpID0+IEFycmF5LmlzQXJyYXkocHJpbWl0aXZlLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcnBoVGFyZ2V0SW5kZXggPCBwcmltaXRpdmUubW9ycGhUYXJnZXRJbmZsdWVuY2VzLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVlJNRXhwcmVzc2lvbkxvYWRlclBsdWdpbjogJHtzY2hlbWFFeHByZXNzaW9uLm5hbWV9IGF0dGVtcHRzIHRvIGluZGV4IG1vcnBoICMke21vcnBoVGFyZ2V0SW5kZXh9IGJ1dCBub3QgZm91bmQuYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbi5hZGRCaW5kKG5ldyBWUk1FeHByZXNzaW9uTW9ycGhUYXJnZXRCaW5kKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogbW9ycGhUYXJnZXRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodDogKF9rID0gYmluZC53ZWlnaHQpICE9PSBudWxsICYmIF9rICE9PSB2b2lkIDAgPyBfayA6IDEuMCxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hRXhwcmVzc2lvbi5tYXRlcmlhbENvbG9yQmluZHMgfHwgc2NoZW1hRXhwcmVzc2lvbi50ZXh0dXJlVHJhbnNmb3JtQmluZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbGlzdCB1cCBldmVyeSBtYXRlcmlhbCBpbiBgZ2x0Zi5zY2VuZWBcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2x0Zk1hdGVyaWFscyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBnbHRmLnNjZW5lLnRyYXZlcnNlKChvYmplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsID0gb2JqZWN0Lm1hdGVyaWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGVyaWFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x0Zk1hdGVyaWFscy5wdXNoKG1hdGVyaWFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIChfaCA9IHNjaGVtYUV4cHJlc3Npb24ubWF0ZXJpYWxDb2xvckJpbmRzKSA9PT0gbnVsbCB8fCBfaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2guZm9yRWFjaCgoYmluZCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxzID0gZ2x0Zk1hdGVyaWFscy5maWx0ZXIoKG1hdGVyaWFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxJbmRleCA9IGdsdGZHZXRBc3NvY2lhdGVkTWF0ZXJpYWxJbmRleCh0aGlzLnBhcnNlciwgbWF0ZXJpYWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiaW5kLm1hdGVyaWFsID09PSBtYXRlcmlhbEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbHMuZm9yRWFjaCgobWF0ZXJpYWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uLmFkZEJpbmQobmV3IFZSTUV4cHJlc3Npb25NYXRlcmlhbENvbG9yQmluZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBiaW5kLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZhbHVlOiBuZXcgVEhSRUUuQ29sb3IoKS5mcm9tQXJyYXkoYmluZC50YXJnZXRWYWx1ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgKF9qID0gc2NoZW1hRXhwcmVzc2lvbi50ZXh0dXJlVHJhbnNmb3JtQmluZHMpID09PSBudWxsIHx8IF9qID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfai5mb3JFYWNoKChiaW5kKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRlcmlhbHMgPSBnbHRmTWF0ZXJpYWxzLmZpbHRlcigobWF0ZXJpYWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRlcmlhbEluZGV4ID0gZ2x0ZkdldEFzc29jaWF0ZWRNYXRlcmlhbEluZGV4KHRoaXMucGFyc2VyLCBtYXRlcmlhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJpbmQubWF0ZXJpYWwgPT09IG1hdGVyaWFsSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGVyaWFscy5mb3JFYWNoKChtYXRlcmlhbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbi5hZGRCaW5kKG5ldyBWUk1FeHByZXNzaW9uVGV4dHVyZVRyYW5zZm9ybUJpbmQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBuZXcgVEhSRUUuVmVjdG9yMigpLmZyb21BcnJheSgoX2EgPSBiaW5kLm9mZnNldCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogWzAuMCwgMC4wXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiBuZXcgVEhSRUUuVmVjdG9yMigpLmZyb21BcnJheSgoX2IgPSBiaW5kLnNjYWxlKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBbMS4wLCAxLjBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtYW5hZ2VyLnJlZ2lzdGVyRXhwcmVzc2lvbihleHByZXNzaW9uKTtcbiAgICAgICAgICAgIH0pKSk7XG4gICAgICAgICAgICByZXR1cm4gbWFuYWdlcjtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF92MEltcG9ydChnbHRmKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnBhcnNlci5qc29uO1xuICAgICAgICAgICAgLy8gZWFybHkgYWJvcnQgaWYgaXQgZG9lc24ndCB1c2UgdnJtXG4gICAgICAgICAgICBjb25zdCB2cm1FeHQgPSAoX2EgPSBqc29uLmV4dGVuc2lvbnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5WUk07XG4gICAgICAgICAgICBpZiAoIXZybUV4dCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2NoZW1hQmxlbmRTaGFwZSA9IHZybUV4dC5ibGVuZFNoYXBlTWFzdGVyO1xuICAgICAgICAgICAgaWYgKCFzY2hlbWFCbGVuZFNoYXBlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZSTUV4cHJlc3Npb25NYW5hZ2VyKCk7XG4gICAgICAgICAgICBjb25zdCBzY2hlbWFCbGVuZFNoYXBlR3JvdXBzID0gc2NoZW1hQmxlbmRTaGFwZS5ibGVuZFNoYXBlR3JvdXBzO1xuICAgICAgICAgICAgaWYgKCFzY2hlbWFCbGVuZFNoYXBlR3JvdXBzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hbmFnZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBibGVuZFNoYXBlTmFtZVNldCA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKHNjaGVtYUJsZW5kU2hhcGVHcm91cHMubWFwKChzY2hlbWFHcm91cCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgIHZhciBfYjtcbiAgICAgICAgICAgICAgICBjb25zdCB2MFByZXNldE5hbWUgPSBzY2hlbWFHcm91cC5wcmVzZXROYW1lO1xuICAgICAgICAgICAgICAgIGNvbnN0IHYxUHJlc2V0TmFtZSA9ICh2MFByZXNldE5hbWUgIT0gbnVsbCAmJiBWUk1FeHByZXNzaW9uTG9hZGVyUGx1Z2luLnYwdjFQcmVzZXROYW1lTWFwW3YwUHJlc2V0TmFtZV0pIHx8IG51bGw7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IHYxUHJlc2V0TmFtZSAhPT0gbnVsbCAmJiB2MVByZXNldE5hbWUgIT09IHZvaWQgMCA/IHYxUHJlc2V0TmFtZSA6IHNjaGVtYUdyb3VwLm5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTUV4cHJlc3Npb25Mb2FkZXJQbHVnaW46IE9uZSBvZiBjdXN0b20gZXhwcmVzc2lvbnMgaGFzIG5vIG5hbWUuIElnbm9yaW5nIHRoZSBleHByZXNzaW9uJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gZHVwbGljYXRpb24gY2hlY2tcbiAgICAgICAgICAgICAgICBpZiAoYmxlbmRTaGFwZU5hbWVTZXQuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVlJNRXhwcmVzc2lvbkxvYWRlclBsdWdpbjogQW4gZXhwcmVzc2lvbiBwcmVzZXQgJHt2MFByZXNldE5hbWV9IGhhcyBkdXBsaWNhdGVkIGVudHJpZXMuIElnbm9yaW5nIHRoZSBleHByZXNzaW9uYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYmxlbmRTaGFwZU5hbWVTZXQuYWRkKG5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBuZXcgVlJNRXhwcmVzc2lvbihuYW1lKTtcbiAgICAgICAgICAgICAgICBnbHRmLnNjZW5lLmFkZChleHByZXNzaW9uKTtcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uLmlzQmluYXJ5ID0gKF9iID0gc2NoZW1hR3JvdXAuaXNCaW5hcnkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vIHYwIGRvZXNuJ3QgaGF2ZSBpZ25vcmUgcHJvcGVydGllc1xuICAgICAgICAgICAgICAgIC8vIEJpbmQgbW9ycGhUYXJnZXRcbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hR3JvdXAuYmluZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hR3JvdXAuYmluZHMuZm9yRWFjaCgoYmluZCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpbmQubWVzaCA9PT0gdW5kZWZpbmVkIHx8IGJpbmQuaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVzVXNpbmdNZXNoID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAoX2MgPSBqc29uLm5vZGVzKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLm1lc2ggPT09IGJpbmQubWVzaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rlc1VzaW5nTWVzaC5wdXNoKGkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9ycGhUYXJnZXRJbmRleCA9IGJpbmQuaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBQcm9taXNlLmFsbChub2Rlc1VzaW5nTWVzaC5tYXAoKG5vZGVJbmRleCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmltaXRpdmVzID0gKHlpZWxkIGdsdGZFeHRyYWN0UHJpbWl0aXZlc0Zyb21Ob2RlKGdsdGYsIG5vZGVJbmRleCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSBtZXNoIGhhcyB0aGUgdGFyZ2V0IG1vcnBoIHRhcmdldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJpbWl0aXZlcy5ldmVyeSgocHJpbWl0aXZlKSA9PiBBcnJheS5pc0FycmF5KHByaW1pdGl2ZS5tb3JwaFRhcmdldEluZmx1ZW5jZXMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcnBoVGFyZ2V0SW5kZXggPCBwcmltaXRpdmUubW9ycGhUYXJnZXRJbmZsdWVuY2VzLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBWUk1FeHByZXNzaW9uTG9hZGVyUGx1Z2luOiAke3NjaGVtYUdyb3VwLm5hbWV9IGF0dGVtcHRzIHRvIGluZGV4ICR7bW9ycGhUYXJnZXRJbmRleH10aCBtb3JwaCBidXQgbm90IGZvdW5kLmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24uYWRkQmluZChuZXcgVlJNRXhwcmVzc2lvbk1vcnBoVGFyZ2V0QmluZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBtb3JwaFRhcmdldEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHQ6IDAuMDEgKiAoKF9kID0gYmluZC53ZWlnaHQpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDEwMCksIC8vIG5hcnJvd2luZyB0aGUgcmFuZ2UgZnJvbSBbIDAuMCAtIDEwMC4wIF0gdG8gWyAwLjAgLSAxLjAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gQmluZCBNYXRlcmlhbENvbG9yIGFuZCBUZXh0dXJlVHJhbnNmb3JtXG4gICAgICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxWYWx1ZXMgPSBzY2hlbWFHcm91cC5tYXRlcmlhbFZhbHVlcztcbiAgICAgICAgICAgICAgICBpZiAobWF0ZXJpYWxWYWx1ZXMgJiYgbWF0ZXJpYWxWYWx1ZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsVmFsdWVzLmZvckVhY2goKG1hdGVyaWFsVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRlcmlhbFZhbHVlLm1hdGVyaWFsTmFtZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWxWYWx1ZS5wcm9wZXJ0eU5hbWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsVmFsdWUudGFyZ2V0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICog44Ki44OQ44K/44O844Gu44Kq44OW44K444Kn44Kv44OI44Gr6Kit5a6a44GV44KM44Gm44GE44KL44Oe44OG44Oq44Ki44Or44Gu5YaF44GL44KJXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBtYXRlcmlhbFZhbHVl44Gn5oyH5a6a44GV44KM44Gm44GE44KL44Oe44OG44Oq44Ki44Or44KS6ZuG44KB44KL44CCXG4gICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICog54m55a6a44Gr44Gv5ZCN5YmN44KS5L2/55So44GZ44KL44CCXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiDjgqLjgqbjg4jjg6njgqTjg7Pmj4/nlLvnlKjjga7jg57jg4bjg6rjgqLjg6vjgoLlkIzmmYLjgavpm4bjgoHjgovjgIJcbiAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBnbHRmLnNjZW5lLnRyYXZlcnNlKChvYmplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqZWN0Lm1hdGVyaWFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsID0gb2JqZWN0Lm1hdGVyaWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtYXRlcmlhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGVyaWFscy5wdXNoKC4uLm1hdGVyaWFsLmZpbHRlcigobXRsKSA9PiAobXRsLm5hbWUgPT09IG1hdGVyaWFsVmFsdWUubWF0ZXJpYWxOYW1lIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRsLm5hbWUgPT09IG1hdGVyaWFsVmFsdWUubWF0ZXJpYWxOYW1lICsgJyAoT3V0bGluZSknKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGVyaWFscy5pbmRleE9mKG10bCkgPT09IC0xKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobWF0ZXJpYWwubmFtZSA9PT0gbWF0ZXJpYWxWYWx1ZS5tYXRlcmlhbE5hbWUgJiYgbWF0ZXJpYWxzLmluZGV4T2YobWF0ZXJpYWwpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWxzLnB1c2gobWF0ZXJpYWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRlcmlhbFByb3BlcnR5TmFtZSA9IG1hdGVyaWFsVmFsdWUucHJvcGVydHlOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWxzLmZvckVhY2goKG1hdGVyaWFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGV4dHVyZVRyYW5zZm9ybUJpbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0ZXJpYWxQcm9wZXJ0eU5hbWUgPT09ICdfTWFpblRleF9TVCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSBuZXcgVEhSRUUuVmVjdG9yMihtYXRlcmlhbFZhbHVlLnRhcmdldFZhbHVlWzBdLCBtYXRlcmlhbFZhbHVlLnRhcmdldFZhbHVlWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gbmV3IFRIUkVFLlZlY3RvcjIobWF0ZXJpYWxWYWx1ZS50YXJnZXRWYWx1ZVsyXSwgbWF0ZXJpYWxWYWx1ZS50YXJnZXRWYWx1ZVszXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldC55ID0gMS4wIC0gb2Zmc2V0LnkgLSBzY2FsZS55O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uLmFkZEJpbmQobmV3IFZSTUV4cHJlc3Npb25UZXh0dXJlVHJhbnNmb3JtQmluZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWF0ZXJpYWxDb2xvckJpbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRlcmlhbENvbG9yVHlwZSA9IHYwRXhwcmVzc2lvbk1hdGVyaWFsQ29sb3JNYXBbbWF0ZXJpYWxQcm9wZXJ0eU5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRlcmlhbENvbG9yVHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uLmFkZEJpbmQobmV3IFZSTUV4cHJlc3Npb25NYXRlcmlhbENvbG9yQmluZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IG1hdGVyaWFsQ29sb3JUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmFsdWU6IG5ldyBUSFJFRS5Db2xvciguLi5tYXRlcmlhbFZhbHVlLnRhcmdldFZhbHVlLnNsaWNlKDAsIDMpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihtYXRlcmlhbFByb3BlcnR5TmFtZSArICcgaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtYW5hZ2VyLnJlZ2lzdGVyRXhwcmVzc2lvbihleHByZXNzaW9uKTtcbiAgICAgICAgICAgIH0pKSk7XG4gICAgICAgICAgICByZXR1cm4gbWFuYWdlcjtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuVlJNRXhwcmVzc2lvbkxvYWRlclBsdWdpbi52MHYxUHJlc2V0TmFtZU1hcCA9IHtcbiAgICBhOiAnYWEnLFxuICAgIGU6ICdlZScsXG4gICAgaTogJ2loJyxcbiAgICBvOiAnb2gnLFxuICAgIHU6ICdvdScsXG4gICAgYmxpbms6ICdibGluaycsXG4gICAgam95OiAnaGFwcHknLFxuICAgIGFuZ3J5OiAnYW5ncnknLFxuICAgIHNvcnJvdzogJ3NhZCcsXG4gICAgZnVuOiAncmVsYXhlZCcsXG4gICAgbG9va3VwOiAnbG9va1VwJyxcbiAgICBsb29rZG93bjogJ2xvb2tEb3duJyxcbiAgICBsb29rbGVmdDogJ2xvb2tMZWZ0JyxcbiAgICBsb29rcmlnaHQ6ICdsb29rUmlnaHQnLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICBibGlua19sOiAnYmxpbmtMZWZ0JyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgYmxpbmtfcjogJ2JsaW5rUmlnaHQnLFxuICAgIG5ldXRyYWw6ICduZXV0cmFsJyxcbn07XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuY29uc3QgVlJNRXhwcmVzc2lvbk92ZXJyaWRlVHlwZSA9IHtcbiAgICBOb25lOiAnbm9uZScsXG4gICAgQmxvY2s6ICdibG9jaycsXG4gICAgQmxlbmQ6ICdibGVuZCcsXG59O1xuXG5jbGFzcyBWUk1GaXJzdFBlcnNvbiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbmV3IFZSTUZpcnN0UGVyc29uIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBodW1hbm9pZCBBIHtAbGluayBWUk1IdW1hbm9pZH1cbiAgICAgKiBAcGFyYW0gbWVzaEFubm90YXRpb25zIEEgcmVuZGVyZXIgc2V0dGluZ3MuIFNlZSB0aGUgZGVzY3JpcHRpb24gb2YgW1tSZW5kZXJlckZpcnN0UGVyc29uRmxhZ3NdXSBmb3IgbW9yZSBpbmZvXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoaHVtYW5vaWQsIG1lc2hBbm5vdGF0aW9ucykge1xuICAgICAgICB0aGlzLl9maXJzdFBlcnNvbk9ubHlMYXllciA9IFZSTUZpcnN0UGVyc29uLkRFRkFVTFRfRklSU1RQRVJTT05fT05MWV9MQVlFUjtcbiAgICAgICAgdGhpcy5fdGhpcmRQZXJzb25Pbmx5TGF5ZXIgPSBWUk1GaXJzdFBlcnNvbi5ERUZBVUxUX1RISVJEUEVSU09OX09OTFlfTEFZRVI7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVkTGF5ZXJzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaHVtYW5vaWQgPSBodW1hbm9pZDtcbiAgICAgICAgdGhpcy5tZXNoQW5ub3RhdGlvbnMgPSBtZXNoQW5ub3RhdGlvbnM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvcHkgdGhlIGdpdmVuIHtAbGluayBWUk1GaXJzdFBlcnNvbn0gaW50byB0aGlzIG9uZS5cbiAgICAgKiB7QGxpbmsgaHVtYW5vaWR9IG11c3QgYmUgc2FtZSBhcyB0aGUgc291cmNlIG9uZS5cbiAgICAgKiBAcGFyYW0gc291cmNlIFRoZSB7QGxpbmsgVlJNRmlyc3RQZXJzb259IHlvdSB3YW50IHRvIGNvcHlcbiAgICAgKiBAcmV0dXJucyB0aGlzXG4gICAgICovXG4gICAgY29weShzb3VyY2UpIHtcbiAgICAgICAgaWYgKHRoaXMuaHVtYW5vaWQgIT09IHNvdXJjZS5odW1hbm9pZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWUk1GaXJzdFBlcnNvbjogaHVtYW5vaWQgbXVzdCBiZSBzYW1lIGluIG9yZGVyIHRvIGNvcHknKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lc2hBbm5vdGF0aW9ucyA9IHNvdXJjZS5tZXNoQW5ub3RhdGlvbnMubWFwKChhbm5vdGF0aW9uKSA9PiAoe1xuICAgICAgICAgICAgbWVzaGVzOiBhbm5vdGF0aW9uLm1lc2hlcy5jb25jYXQoKSxcbiAgICAgICAgICAgIHR5cGU6IGFubm90YXRpb24udHlwZSxcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGNsb25lIG9mIHRoaXMge0BsaW5rIFZSTUZpcnN0UGVyc29ufS5cbiAgICAgKiBAcmV0dXJucyBDb3BpZWQge0BsaW5rIFZSTUZpcnN0UGVyc29ufVxuICAgICAqL1xuICAgIGNsb25lKCkge1xuICAgICAgICByZXR1cm4gbmV3IFZSTUZpcnN0UGVyc29uKHRoaXMuaHVtYW5vaWQsIHRoaXMubWVzaEFubm90YXRpb25zKS5jb3B5KHRoaXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIGNhbWVyYSBsYXllciByZXByZXNlbnRzIGBGaXJzdFBlcnNvbk9ubHlgIGxheWVyLlxuICAgICAqIE5vdGUgdGhhdCAqKnlvdSBtdXN0IGNhbGwge0BsaW5rIHNldHVwfSBmaXJzdCBiZWZvcmUgeW91IHVzZSB0aGUgbGF5ZXIgZmVhdHVyZSoqIG9yIGl0IGRvZXMgbm90IHdvcmsgcHJvcGVybHkuXG4gICAgICpcbiAgICAgKiBUaGUgdmFsdWUgaXMge0BsaW5rIERFRkFVTFRfRklSU1RQRVJTT05fT05MWV9MQVlFUn0gYnkgZGVmYXVsdCBidXQgeW91IGNhbiBjaGFuZ2UgdGhlIGxheWVyIGJ5IHNwZWNpZnlpbmcgdmlhIHtAbGluayBzZXR1cH0gaWYgeW91IHByZWZlci5cbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly92cm0uZGV2L2VuL3VuaXZybS9hcGkvdW5pdnJtX3VzZV9maXJzdHBlcnNvbi9cbiAgICAgKiBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jYXBpL2VuL2NvcmUvTGF5ZXJzXG4gICAgICovXG4gICAgZ2V0IGZpcnN0UGVyc29uT25seUxheWVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlyc3RQZXJzb25Pbmx5TGF5ZXI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgY2FtZXJhIGxheWVyIHJlcHJlc2VudHMgYFRoaXJkUGVyc29uT25seWAgbGF5ZXIuXG4gICAgICogTm90ZSB0aGF0ICoqeW91IG11c3QgY2FsbCB7QGxpbmsgc2V0dXB9IGZpcnN0IGJlZm9yZSB5b3UgdXNlIHRoZSBsYXllciBmZWF0dXJlKiogb3IgaXQgZG9lcyBub3Qgd29yayBwcm9wZXJseS5cbiAgICAgKlxuICAgICAqIFRoZSB2YWx1ZSBpcyB7QGxpbmsgREVGQVVMVF9USElSRFBFUlNPTl9PTkxZX0xBWUVSfSBieSBkZWZhdWx0IGJ1dCB5b3UgY2FuIGNoYW5nZSB0aGUgbGF5ZXIgYnkgc3BlY2lmeWluZyB2aWEge0BsaW5rIHNldHVwfSBpZiB5b3UgcHJlZmVyLlxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL3ZybS5kZXYvZW4vdW5pdnJtL2FwaS91bml2cm1fdXNlX2ZpcnN0cGVyc29uL1xuICAgICAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNhcGkvZW4vY29yZS9MYXllcnNcbiAgICAgKi9cbiAgICBnZXQgdGhpcmRQZXJzb25Pbmx5TGF5ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aGlyZFBlcnNvbk9ubHlMYXllcjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW4gdGhpcyBtZXRob2QsIGl0IGFzc2lnbnMgbGF5ZXJzIGZvciBldmVyeSBtZXNoZXMgYmFzZWQgb24gbWVzaCBhbm5vdGF0aW9ucy5cbiAgICAgKiBZb3UgbXVzdCBjYWxsIHRoaXMgbWV0aG9kIGZpcnN0IGJlZm9yZSB5b3UgdXNlIHRoZSBsYXllciBmZWF0dXJlLlxuICAgICAqXG4gICAgICogVGhpcyBpcyBhbiBlcXVpdmFsZW50IG9mIFtWUk1GaXJzdFBlcnNvbi5TZXR1cF0oaHR0cHM6Ly9naXRodWIuY29tL3ZybS1jL1VuaVZSTS9ibG9iLzczYTViZDhmY2RkYWEyYTdhODczNTA5OWE5N2U2M2M5ZGIzZTVlYTAvQXNzZXRzL1ZSTS9SdW50aW1lL0ZpcnN0UGVyc29uL1ZSTUZpcnN0UGVyc29uLmNzI0wyOTUtTDI5OSkgb2YgdGhlIFVuaVZSTS5cbiAgICAgKlxuICAgICAqIFRoZSBgY2FtZXJhTGF5ZXJgIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hpY2ggbGF5ZXIgd2lsbCBiZSBhc3NpZ25lZCBmb3IgYEZpcnN0UGVyc29uT25seWAgLyBgVGhpcmRQZXJzb25Pbmx5YC5cbiAgICAgKiBJbiBVbmlWUk0sIHdlIHNwZWNpZmllZCB0aG9zZSBieSBuYW1pbmcgZWFjaCBkZXNpcmVkIGxheWVyIGFzIGBGSVJTVFBFUlNPTl9PTkxZX0xBWUVSYCAvIGBUSElSRFBFUlNPTl9PTkxZX0xBWUVSYFxuICAgICAqIGJ1dCB3ZSBhcmUgZ29pbmcgdG8gc3BlY2lmeSB0aGVzZSBsYXllcnMgYXQgaGVyZSBzaW5jZSB3ZSBhcmUgdW5hYmxlIHRvIG5hbWUgbGF5ZXJzIGluIFRocmVlLmpzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhbWVyYUxheWVyIFNwZWNpZnkgd2hpY2ggbGF5ZXIgd2lsbCBiZSBmb3IgYEZpcnN0UGVyc29uT25seWAgLyBgVGhpcmRQZXJzb25Pbmx5YC5cbiAgICAgKi9cbiAgICBzZXR1cCh7IGZpcnN0UGVyc29uT25seUxheWVyID0gVlJNRmlyc3RQZXJzb24uREVGQVVMVF9GSVJTVFBFUlNPTl9PTkxZX0xBWUVSLCB0aGlyZFBlcnNvbk9ubHlMYXllciA9IFZSTUZpcnN0UGVyc29uLkRFRkFVTFRfVEhJUkRQRVJTT05fT05MWV9MQVlFUiwgfSA9IHt9KSB7XG4gICAgICAgIGlmICh0aGlzLl9pbml0aWFsaXplZExheWVycykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2ZpcnN0UGVyc29uT25seUxheWVyID0gZmlyc3RQZXJzb25Pbmx5TGF5ZXI7XG4gICAgICAgIHRoaXMuX3RoaXJkUGVyc29uT25seUxheWVyID0gdGhpcmRQZXJzb25Pbmx5TGF5ZXI7XG4gICAgICAgIHRoaXMubWVzaEFubm90YXRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0ubWVzaGVzLmZvckVhY2goKG1lc2gpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlID09PSAnZmlyc3RQZXJzb25Pbmx5Jykge1xuICAgICAgICAgICAgICAgICAgICBtZXNoLmxheWVycy5zZXQodGhpcy5fZmlyc3RQZXJzb25Pbmx5TGF5ZXIpO1xuICAgICAgICAgICAgICAgICAgICBtZXNoLnRyYXZlcnNlKChjaGlsZCkgPT4gY2hpbGQubGF5ZXJzLnNldCh0aGlzLl9maXJzdFBlcnNvbk9ubHlMYXllcikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICd0aGlyZFBlcnNvbk9ubHknKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lc2gubGF5ZXJzLnNldCh0aGlzLl90aGlyZFBlcnNvbk9ubHlMYXllcik7XG4gICAgICAgICAgICAgICAgICAgIG1lc2gudHJhdmVyc2UoKGNoaWxkKSA9PiBjaGlsZC5sYXllcnMuc2V0KHRoaXMuX3RoaXJkUGVyc29uT25seUxheWVyKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ2F1dG8nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUhlYWRsZXNzTW9kZWwobWVzaCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplZExheWVycyA9IHRydWU7XG4gICAgfVxuICAgIF9leGNsdWRlVHJpYW5nbGVzKHRyaWFuZ2xlcywgYndzLCBza2luSW5kZXgsIGV4Y2x1ZGUpIHtcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgaWYgKGJ3cyAhPSBudWxsICYmIGJ3cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRyaWFuZ2xlcy5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0cmlhbmdsZXNbaV07XG4gICAgICAgICAgICAgICAgY29uc3QgYiA9IHRyaWFuZ2xlc1tpICsgMV07XG4gICAgICAgICAgICAgICAgY29uc3QgYyA9IHRyaWFuZ2xlc1tpICsgMl07XG4gICAgICAgICAgICAgICAgY29uc3QgYncwID0gYndzW2FdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNraW4wID0gc2tpbkluZGV4W2FdO1xuICAgICAgICAgICAgICAgIGlmIChidzBbMF0gPiAwICYmIGV4Y2x1ZGUuaW5jbHVkZXMoc2tpbjBbMF0pKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBpZiAoYncwWzFdID4gMCAmJiBleGNsdWRlLmluY2x1ZGVzKHNraW4wWzFdKSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgaWYgKGJ3MFsyXSA+IDAgJiYgZXhjbHVkZS5pbmNsdWRlcyhza2luMFsyXSkpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmIChidzBbM10gPiAwICYmIGV4Y2x1ZGUuaW5jbHVkZXMoc2tpbjBbM10pKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBidzEgPSBid3NbYl07XG4gICAgICAgICAgICAgICAgY29uc3Qgc2tpbjEgPSBza2luSW5kZXhbYl07XG4gICAgICAgICAgICAgICAgaWYgKGJ3MVswXSA+IDAgJiYgZXhjbHVkZS5pbmNsdWRlcyhza2luMVswXSkpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmIChidzFbMV0gPiAwICYmIGV4Y2x1ZGUuaW5jbHVkZXMoc2tpbjFbMV0pKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBpZiAoYncxWzJdID4gMCAmJiBleGNsdWRlLmluY2x1ZGVzKHNraW4xWzJdKSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgaWYgKGJ3MVszXSA+IDAgJiYgZXhjbHVkZS5pbmNsdWRlcyhza2luMVszXSkpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ3MiA9IGJ3c1tjXTtcbiAgICAgICAgICAgICAgICBjb25zdCBza2luMiA9IHNraW5JbmRleFtjXTtcbiAgICAgICAgICAgICAgICBpZiAoYncyWzBdID4gMCAmJiBleGNsdWRlLmluY2x1ZGVzKHNraW4yWzBdKSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgaWYgKGJ3MlsxXSA+IDAgJiYgZXhjbHVkZS5pbmNsdWRlcyhza2luMlsxXSkpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmIChidzJbMl0gPiAwICYmIGV4Y2x1ZGUuaW5jbHVkZXMoc2tpbjJbMl0pKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBpZiAoYncyWzNdID4gMCAmJiBleGNsdWRlLmluY2x1ZGVzKHNraW4yWzNdKSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgdHJpYW5nbGVzW2NvdW50KytdID0gYTtcbiAgICAgICAgICAgICAgICB0cmlhbmdsZXNbY291bnQrK10gPSBiO1xuICAgICAgICAgICAgICAgIHRyaWFuZ2xlc1tjb3VudCsrXSA9IGM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH1cbiAgICBfY3JlYXRlRXJhc2VkTWVzaChzcmMsIGVyYXNpbmdCb25lc0luZGV4KSB7XG4gICAgICAgIGNvbnN0IGRzdCA9IG5ldyBUSFJFRS5Ta2lubmVkTWVzaChzcmMuZ2VvbWV0cnkuY2xvbmUoKSwgc3JjLm1hdGVyaWFsKTtcbiAgICAgICAgZHN0Lm5hbWUgPSBgJHtzcmMubmFtZX0oZXJhc2UpYDtcbiAgICAgICAgZHN0LmZydXN0dW1DdWxsZWQgPSBzcmMuZnJ1c3R1bUN1bGxlZDtcbiAgICAgICAgZHN0LmxheWVycy5zZXQodGhpcy5fZmlyc3RQZXJzb25Pbmx5TGF5ZXIpO1xuICAgICAgICBjb25zdCBnZW9tZXRyeSA9IGRzdC5nZW9tZXRyeTtcbiAgICAgICAgY29uc3Qgc2tpbkluZGV4QXR0ciA9IGdlb21ldHJ5LmdldEF0dHJpYnV0ZSgnc2tpbkluZGV4Jyk7XG4gICAgICAgIGNvbnN0IHNraW5JbmRleEF0dHJBcnJheSA9IHNraW5JbmRleEF0dHIgaW5zdGFuY2VvZiBUSFJFRS5HTEJ1ZmZlckF0dHJpYnV0ZSA/IFtdIDogc2tpbkluZGV4QXR0ci5hcnJheTtcbiAgICAgICAgY29uc3Qgc2tpbkluZGV4ID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2tpbkluZGV4QXR0ckFycmF5Lmxlbmd0aDsgaSArPSA0KSB7XG4gICAgICAgICAgICBza2luSW5kZXgucHVzaChbXG4gICAgICAgICAgICAgICAgc2tpbkluZGV4QXR0ckFycmF5W2ldLFxuICAgICAgICAgICAgICAgIHNraW5JbmRleEF0dHJBcnJheVtpICsgMV0sXG4gICAgICAgICAgICAgICAgc2tpbkluZGV4QXR0ckFycmF5W2kgKyAyXSxcbiAgICAgICAgICAgICAgICBza2luSW5kZXhBdHRyQXJyYXlbaSArIDNdLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2tpbldlaWdodEF0dHIgPSBnZW9tZXRyeS5nZXRBdHRyaWJ1dGUoJ3NraW5XZWlnaHQnKTtcbiAgICAgICAgY29uc3Qgc2tpbldlaWdodEF0dHJBcnJheSA9IHNraW5XZWlnaHRBdHRyIGluc3RhbmNlb2YgVEhSRUUuR0xCdWZmZXJBdHRyaWJ1dGUgPyBbXSA6IHNraW5XZWlnaHRBdHRyLmFycmF5O1xuICAgICAgICBjb25zdCBza2luV2VpZ2h0ID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2tpbldlaWdodEF0dHJBcnJheS5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgICAgICAgc2tpbldlaWdodC5wdXNoKFtcbiAgICAgICAgICAgICAgICBza2luV2VpZ2h0QXR0ckFycmF5W2ldLFxuICAgICAgICAgICAgICAgIHNraW5XZWlnaHRBdHRyQXJyYXlbaSArIDFdLFxuICAgICAgICAgICAgICAgIHNraW5XZWlnaHRBdHRyQXJyYXlbaSArIDJdLFxuICAgICAgICAgICAgICAgIHNraW5XZWlnaHRBdHRyQXJyYXlbaSArIDNdLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXggPSBnZW9tZXRyeS5nZXRJbmRleCgpO1xuICAgICAgICBpZiAoIWluZGV4KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgZ2VvbWV0cnkgZG9lc24ndCBoYXZlIGFuIGluZGV4IGJ1ZmZlclwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvbGRUcmlhbmdsZXMgPSBBcnJheS5mcm9tKGluZGV4LmFycmF5KTtcbiAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLl9leGNsdWRlVHJpYW5nbGVzKG9sZFRyaWFuZ2xlcywgc2tpbldlaWdodCwgc2tpbkluZGV4LCBlcmFzaW5nQm9uZXNJbmRleCk7XG4gICAgICAgIGNvbnN0IG5ld1RyaWFuZ2xlID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgICAgbmV3VHJpYW5nbGVbaV0gPSBvbGRUcmlhbmdsZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgZ2VvbWV0cnkuc2V0SW5kZXgobmV3VHJpYW5nbGUpO1xuICAgICAgICAvLyBtdG9vbiBtYXRlcmlhbCBpbmNsdWRlcyBvbkJlZm9yZVJlbmRlci4gdGhpcyBpcyB1bnN1cHBvcnRlZCBhdCBTa2lubmVkTWVzaCNjbG9uZVxuICAgICAgICBpZiAoc3JjLm9uQmVmb3JlUmVuZGVyKSB7XG4gICAgICAgICAgICBkc3Qub25CZWZvcmVSZW5kZXIgPSBzcmMub25CZWZvcmVSZW5kZXI7XG4gICAgICAgIH1cbiAgICAgICAgZHN0LmJpbmQobmV3IFRIUkVFLlNrZWxldG9uKHNyYy5za2VsZXRvbi5ib25lcywgc3JjLnNrZWxldG9uLmJvbmVJbnZlcnNlcyksIG5ldyBUSFJFRS5NYXRyaXg0KCkpO1xuICAgICAgICByZXR1cm4gZHN0O1xuICAgIH1cbiAgICBfY3JlYXRlSGVhZGxlc3NNb2RlbEZvclNraW5uZWRNZXNoKHBhcmVudCwgbWVzaCkge1xuICAgICAgICBjb25zdCBlcmFzZUJvbmVJbmRleGVzID0gW107XG4gICAgICAgIG1lc2guc2tlbGV0b24uYm9uZXMuZm9yRWFjaCgoYm9uZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc0VyYXNlVGFyZ2V0KGJvbmUpKVxuICAgICAgICAgICAgICAgIGVyYXNlQm9uZUluZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBVbmxpa2UgVW5pVlJNIHdlIGRvbid0IGNvcHkgbWVzaCBpZiBubyBpbnZpc2libGUgYm9uZSB3YXMgZm91bmRcbiAgICAgICAgaWYgKCFlcmFzZUJvbmVJbmRleGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgbWVzaC5sYXllcnMuZW5hYmxlKHRoaXMuX3RoaXJkUGVyc29uT25seUxheWVyKTtcbiAgICAgICAgICAgIG1lc2gubGF5ZXJzLmVuYWJsZSh0aGlzLl9maXJzdFBlcnNvbk9ubHlMYXllcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbWVzaC5sYXllcnMuc2V0KHRoaXMuX3RoaXJkUGVyc29uT25seUxheWVyKTtcbiAgICAgICAgY29uc3QgbmV3TWVzaCA9IHRoaXMuX2NyZWF0ZUVyYXNlZE1lc2gobWVzaCwgZXJhc2VCb25lSW5kZXhlcyk7XG4gICAgICAgIHBhcmVudC5hZGQobmV3TWVzaCk7XG4gICAgfVxuICAgIF9jcmVhdGVIZWFkbGVzc01vZGVsKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ0dyb3VwJykge1xuICAgICAgICAgICAgbm9kZS5sYXllcnMuc2V0KHRoaXMuX3RoaXJkUGVyc29uT25seUxheWVyKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc0VyYXNlVGFyZ2V0KG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgbm9kZS50cmF2ZXJzZSgoY2hpbGQpID0+IGNoaWxkLmxheWVycy5zZXQodGhpcy5fdGhpcmRQZXJzb25Pbmx5TGF5ZXIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IG5ldyBUSFJFRS5Hcm91cCgpO1xuICAgICAgICAgICAgICAgIHBhcmVudC5uYW1lID0gYF9oZWFkbGVzc18ke25vZGUubmFtZX1gO1xuICAgICAgICAgICAgICAgIHBhcmVudC5sYXllcnMuc2V0KHRoaXMuX2ZpcnN0UGVyc29uT25seUxheWVyKTtcbiAgICAgICAgICAgICAgICBub2RlLnBhcmVudC5hZGQocGFyZW50KTtcbiAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGNoaWxkKSA9PiBjaGlsZC50eXBlID09PSAnU2tpbm5lZE1lc2gnKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2tpbm5lZE1lc2ggPSBjaGlsZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlSGVhZGxlc3NNb2RlbEZvclNraW5uZWRNZXNoKHBhcmVudCwgc2tpbm5lZE1lc2gpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ1NraW5uZWRNZXNoJykge1xuICAgICAgICAgICAgY29uc3Qgc2tpbm5lZE1lc2ggPSBub2RlO1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlSGVhZGxlc3NNb2RlbEZvclNraW5uZWRNZXNoKG5vZGUucGFyZW50LCBza2lubmVkTWVzaCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNFcmFzZVRhcmdldChub2RlKSkge1xuICAgICAgICAgICAgICAgIG5vZGUubGF5ZXJzLnNldCh0aGlzLl90aGlyZFBlcnNvbk9ubHlMYXllcik7XG4gICAgICAgICAgICAgICAgbm9kZS50cmF2ZXJzZSgoY2hpbGQpID0+IGNoaWxkLmxheWVycy5zZXQodGhpcy5fdGhpcmRQZXJzb25Pbmx5TGF5ZXIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBfaXNFcmFzZVRhcmdldChib25lKSB7XG4gICAgICAgIGlmIChib25lID09PSB0aGlzLmh1bWFub2lkLmdldFJhd0JvbmVOb2RlKCdoZWFkJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFib25lLnBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzRXJhc2VUYXJnZXQoYm9uZS5wYXJlbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBBIGRlZmF1bHQgY2FtZXJhIGxheWVyIGZvciBgRmlyc3RQZXJzb25Pbmx5YCBsYXllci5cbiAqXG4gKiBAc2VlIFtbZ2V0Rmlyc3RQZXJzb25Pbmx5TGF5ZXJdXVxuICovXG5WUk1GaXJzdFBlcnNvbi5ERUZBVUxUX0ZJUlNUUEVSU09OX09OTFlfTEFZRVIgPSA5O1xuLyoqXG4gKiBBIGRlZmF1bHQgY2FtZXJhIGxheWVyIGZvciBgVGhpcmRQZXJzb25Pbmx5YCBsYXllci5cbiAqXG4gKiBAc2VlIFtbZ2V0VGhpcmRQZXJzb25Pbmx5TGF5ZXJdXVxuICovXG5WUk1GaXJzdFBlcnNvbi5ERUZBVUxUX1RISVJEUEVSU09OX09OTFlfTEFZRVIgPSAxMDtcblxuLyoqXG4gKiBQb3NzaWJsZSBzcGVjIHZlcnNpb25zIGl0IHJlY29nbml6ZXMuXG4gKi9cbmNvbnN0IFBPU1NJQkxFX1NQRUNfVkVSU0lPTlMkMyA9IG5ldyBTZXQoWycxLjAnLCAnMS4wLWJldGEnXSk7XG4vKipcbiAqIEEgcGx1Z2luIG9mIEdMVEZMb2FkZXIgdGhhdCBpbXBvcnRzIGEge0BsaW5rIFZSTUZpcnN0UGVyc29ufSBmcm9tIGEgVlJNIGV4dGVuc2lvbiBvZiBhIEdMVEYuXG4gKi9cbmNsYXNzIFZSTUZpcnN0UGVyc29uTG9hZGVyUGx1Z2luIHtcbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgICAgLy8gV2Ugc2hvdWxkIHVzZSB0aGUgZXh0ZW5zaW9uIG5hbWUgaW5zdGVhZCBidXQgd2UgaGF2ZSBtdWx0aXBsZSBwbHVnaW5zIGZvciBhbiBleHRlbnNpb24uLi5cbiAgICAgICAgcmV0dXJuICdWUk1GaXJzdFBlcnNvbkxvYWRlclBsdWdpbic7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhcnNlcikge1xuICAgICAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICB9XG4gICAgYWZ0ZXJSb290KGdsdGYpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHZybUh1bWFub2lkID0gZ2x0Zi51c2VyRGF0YS52cm1IdW1hbm9pZDtcbiAgICAgICAgICAgIC8vIGV4cGxpY2l0bHkgZGlzdGluZ3Vpc2ggbnVsbCBhbmQgdW5kZWZpbmVkXG4gICAgICAgICAgICAvLyBzaW5jZSB2cm1IdW1hbm9pZCBtaWdodCBiZSBudWxsIGFzIGEgcmVzdWx0XG4gICAgICAgICAgICBpZiAodnJtSHVtYW5vaWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh2cm1IdW1hbm9pZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWUk1GaXJzdFBlcnNvbkxvYWRlclBsdWdpbjogdnJtSHVtYW5vaWQgaXMgdW5kZWZpbmVkLiBWUk1IdW1hbm9pZExvYWRlclBsdWdpbiBoYXZlIHRvIGJlIHVzZWQgZmlyc3QnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdsdGYudXNlckRhdGEudnJtRmlyc3RQZXJzb24gPSB5aWVsZCB0aGlzLl9pbXBvcnQoZ2x0ZiwgdnJtSHVtYW5vaWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW1wb3J0IGEge0BsaW5rIFZSTUZpcnN0UGVyc29ufSBmcm9tIGEgVlJNLlxuICAgICAqXG4gICAgICogQHBhcmFtIGdsdGYgQSBwYXJzZWQgcmVzdWx0IG9mIEdMVEYgdGFrZW4gZnJvbSBHTFRGTG9hZGVyXG4gICAgICogQHBhcmFtIGh1bWFub2lkIEEge0BsaW5rIFZSTUh1bWFub2lkfSBpbnN0YW5jZSB0aGF0IHJlcHJlc2VudHMgdGhlIFZSTVxuICAgICAqL1xuICAgIF9pbXBvcnQoZ2x0ZiwgaHVtYW5vaWQpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmIChodW1hbm9pZCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2MVJlc3VsdCA9IHlpZWxkIHRoaXMuX3YxSW1wb3J0KGdsdGYsIGh1bWFub2lkKTtcbiAgICAgICAgICAgIGlmICh2MVJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2MVJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHYwUmVzdWx0ID0geWllbGQgdGhpcy5fdjBJbXBvcnQoZ2x0ZiwgaHVtYW5vaWQpO1xuICAgICAgICAgICAgaWYgKHYwUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHYwUmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfdjFJbXBvcnQoZ2x0ZiwgaHVtYW5vaWQpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnBhcnNlci5qc29uO1xuICAgICAgICAgICAgLy8gZWFybHkgYWJvcnQgaWYgaXQgZG9lc24ndCB1c2UgdnJtXG4gICAgICAgICAgICBjb25zdCBpc1ZSTVVzZWQgPSAoKF9hID0ganNvbi5leHRlbnNpb25zVXNlZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmluZGV4T2YoJ1ZSTUNfdnJtJykpICE9PSAtMTtcbiAgICAgICAgICAgIGlmICghaXNWUk1Vc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSAoX2IgPSBqc29uLmV4dGVuc2lvbnMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYlsnVlJNQ192cm0nXTtcbiAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzcGVjVmVyc2lvbiA9IGV4dGVuc2lvbi5zcGVjVmVyc2lvbjtcbiAgICAgICAgICAgIGlmICghUE9TU0lCTEVfU1BFQ19WRVJTSU9OUyQzLmhhcyhzcGVjVmVyc2lvbikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFZSTUZpcnN0UGVyc29uTG9hZGVyUGx1Z2luOiBVbmtub3duIFZSTUNfdnJtIHNwZWNWZXJzaW9uIFwiJHtzcGVjVmVyc2lvbn1cImApO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2NoZW1hRmlyc3RQZXJzb24gPSBleHRlbnNpb24uZmlyc3RQZXJzb247XG4gICAgICAgICAgICBpZiAoIXNjaGVtYUZpcnN0UGVyc29uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtZXNoQW5ub3RhdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVQcmltaXRpdmVzTWFwID0geWllbGQgZ2x0ZkV4dHJhY3RQcmltaXRpdmVzRnJvbU5vZGVzKGdsdGYpO1xuICAgICAgICAgICAgQXJyYXkuZnJvbShub2RlUHJpbWl0aXZlc01hcC5lbnRyaWVzKCkpLmZvckVhY2goKFtub2RlSW5kZXgsIHByaW1pdGl2ZXNdKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFubm90YXRpb24gPSBzY2hlbWFGaXJzdFBlcnNvbi5tZXNoQW5ub3RhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgPyBzY2hlbWFGaXJzdFBlcnNvbi5tZXNoQW5ub3RhdGlvbnMuZmluZCgoYSkgPT4gYS5ub2RlID09PSBub2RlSW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIG1lc2hBbm5vdGF0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgbWVzaGVzOiBwcmltaXRpdmVzLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAoX2EgPSBhbm5vdGF0aW9uID09PSBudWxsIHx8IGFubm90YXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFubm90YXRpb24udHlwZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ2JvdGgnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFZSTUZpcnN0UGVyc29uKGh1bWFub2lkLCBtZXNoQW5ub3RhdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX3YwSW1wb3J0KGdsdGYsIGh1bWFub2lkKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnBhcnNlci5qc29uO1xuICAgICAgICAgICAgY29uc3QgdnJtRXh0ID0gKF9hID0ganNvbi5leHRlbnNpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuVlJNO1xuICAgICAgICAgICAgaWYgKCF2cm1FeHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYUZpcnN0UGVyc29uID0gdnJtRXh0LmZpcnN0UGVyc29uO1xuICAgICAgICAgICAgaWYgKCFzY2hlbWFGaXJzdFBlcnNvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbWVzaEFubm90YXRpb25zID0gW107XG4gICAgICAgICAgICBjb25zdCBub2RlUHJpbWl0aXZlc01hcCA9IHlpZWxkIGdsdGZFeHRyYWN0UHJpbWl0aXZlc0Zyb21Ob2RlcyhnbHRmKTtcbiAgICAgICAgICAgIEFycmF5LmZyb20obm9kZVByaW1pdGl2ZXNNYXAuZW50cmllcygpKS5mb3JFYWNoKChbbm9kZUluZGV4LCBwcmltaXRpdmVzXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjaGVtYU5vZGUgPSBqc29uLm5vZGVzW25vZGVJbmRleF07XG4gICAgICAgICAgICAgICAgY29uc3QgZmxhZyA9IHNjaGVtYUZpcnN0UGVyc29uLm1lc2hBbm5vdGF0aW9uc1xuICAgICAgICAgICAgICAgICAgICA/IHNjaGVtYUZpcnN0UGVyc29uLm1lc2hBbm5vdGF0aW9ucy5maW5kKChhKSA9PiBhLm1lc2ggPT09IHNjaGVtYU5vZGUubWVzaClcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgbWVzaEFubm90YXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBtZXNoZXM6IHByaW1pdGl2ZXMsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IHRoaXMuX2NvbnZlcnRWMEZsYWdUb1YxVHlwZShmbGFnID09PSBudWxsIHx8IGZsYWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZsYWcuZmlyc3RQZXJzb25GbGFnKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBWUk1GaXJzdFBlcnNvbihodW1hbm9pZCwgbWVzaEFubm90YXRpb25zKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9jb252ZXJ0VjBGbGFnVG9WMVR5cGUoZmxhZykge1xuICAgICAgICBpZiAoZmxhZyA9PT0gJ0ZpcnN0UGVyc29uT25seScpIHtcbiAgICAgICAgICAgIHJldHVybiAnZmlyc3RQZXJzb25Pbmx5JztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmbGFnID09PSAnVGhpcmRQZXJzb25Pbmx5Jykge1xuICAgICAgICAgICAgcmV0dXJuICd0aGlyZFBlcnNvbk9ubHknO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZsYWcgPT09ICdBdXRvJykge1xuICAgICAgICAgICAgcmV0dXJuICdhdXRvJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnYm90aCc7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuY29uc3QgVlJNRmlyc3RQZXJzb25NZXNoQW5ub3RhdGlvblR5cGUgPSB7XG4gICAgQXV0bzogJ2F1dG8nLFxuICAgIEJvdGg6ICdib3RoJyxcbiAgICBUaGlyZFBlcnNvbk9ubHk6ICd0aGlyZFBlcnNvbk9ubHknLFxuICAgIEZpcnN0UGVyc29uT25seTogJ2ZpcnN0UGVyc29uT25seScsXG59O1xuXG5jb25zdCBfdjNBJDQgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgX3YzQiQyID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IF9xdWF0QSQ1ID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNsYXNzIFZSTUh1bWFub2lkSGVscGVyIGV4dGVuZHMgVEhSRUUuR3JvdXAge1xuICAgIGNvbnN0cnVjdG9yKGh1bWFub2lkKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudnJtSHVtYW5vaWQgPSBodW1hbm9pZDtcbiAgICAgICAgdGhpcy5fYm9uZUF4ZXNNYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIE9iamVjdC52YWx1ZXMoaHVtYW5vaWQuaHVtYW5Cb25lcykuZm9yRWFjaCgoYm9uZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaGVscGVyID0gbmV3IFRIUkVFLkF4ZXNIZWxwZXIoMS4wKTtcbiAgICAgICAgICAgIGhlbHBlci5tYXRyaXhBdXRvVXBkYXRlID0gZmFsc2U7XG4gICAgICAgICAgICBoZWxwZXIubWF0ZXJpYWwuZGVwdGhUZXN0ID0gZmFsc2U7XG4gICAgICAgICAgICBoZWxwZXIubWF0ZXJpYWwuZGVwdGhXcml0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5hZGQoaGVscGVyKTtcbiAgICAgICAgICAgIHRoaXMuX2JvbmVBeGVzTWFwLnNldChib25lLCBoZWxwZXIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZGlzcG9zZSgpIHtcbiAgICAgICAgQXJyYXkuZnJvbSh0aGlzLl9ib25lQXhlc01hcC52YWx1ZXMoKSkuZm9yRWFjaCgoYXhlcykgPT4ge1xuICAgICAgICAgICAgYXhlcy5nZW9tZXRyeS5kaXNwb3NlKCk7XG4gICAgICAgICAgICBheGVzLm1hdGVyaWFsLmRpc3Bvc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHVwZGF0ZU1hdHJpeFdvcmxkKGZvcmNlKSB7XG4gICAgICAgIEFycmF5LmZyb20odGhpcy5fYm9uZUF4ZXNNYXAuZW50cmllcygpKS5mb3JFYWNoKChbYm9uZSwgYXhlc10pID0+IHtcbiAgICAgICAgICAgIGJvbmUubm9kZS51cGRhdGVXb3JsZE1hdHJpeCh0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICBib25lLm5vZGUubWF0cml4V29ybGQuZGVjb21wb3NlKF92M0EkNCwgX3F1YXRBJDUsIF92M0IkMik7XG4gICAgICAgICAgICBjb25zdCBzY2FsZSA9IF92M0EkNC5zZXQoMC4xLCAwLjEsIDAuMSkuZGl2aWRlKF92M0IkMik7XG4gICAgICAgICAgICBheGVzLm1hdHJpeC5jb3B5KGJvbmUubm9kZS5tYXRyaXhXb3JsZCkuc2NhbGUoc2NhbGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgc3VwZXIudXBkYXRlTWF0cml4V29ybGQoZm9yY2UpO1xuICAgIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG4vKipcbiAqIFRoZSBsaXN0IG9mIHtAbGluayBWUk1IdW1hbkJvbmVOYW1lfS4gRGVwZW5kZW5jeSBhd2FyZS5cbiAqL1xuY29uc3QgVlJNSHVtYW5Cb25lTGlzdCA9IFtcbiAgICAnaGlwcycsXG4gICAgJ3NwaW5lJyxcbiAgICAnY2hlc3QnLFxuICAgICd1cHBlckNoZXN0JyxcbiAgICAnbmVjaycsXG4gICAgJ2hlYWQnLFxuICAgICdsZWZ0RXllJyxcbiAgICAncmlnaHRFeWUnLFxuICAgICdqYXcnLFxuICAgICdsZWZ0VXBwZXJMZWcnLFxuICAgICdsZWZ0TG93ZXJMZWcnLFxuICAgICdsZWZ0Rm9vdCcsXG4gICAgJ2xlZnRUb2VzJyxcbiAgICAncmlnaHRVcHBlckxlZycsXG4gICAgJ3JpZ2h0TG93ZXJMZWcnLFxuICAgICdyaWdodEZvb3QnLFxuICAgICdyaWdodFRvZXMnLFxuICAgICdsZWZ0U2hvdWxkZXInLFxuICAgICdsZWZ0VXBwZXJBcm0nLFxuICAgICdsZWZ0TG93ZXJBcm0nLFxuICAgICdsZWZ0SGFuZCcsXG4gICAgJ3JpZ2h0U2hvdWxkZXInLFxuICAgICdyaWdodFVwcGVyQXJtJyxcbiAgICAncmlnaHRMb3dlckFybScsXG4gICAgJ3JpZ2h0SGFuZCcsXG4gICAgJ2xlZnRUaHVtYk1ldGFjYXJwYWwnLFxuICAgICdsZWZ0VGh1bWJQcm94aW1hbCcsXG4gICAgJ2xlZnRUaHVtYkRpc3RhbCcsXG4gICAgJ2xlZnRJbmRleFByb3hpbWFsJyxcbiAgICAnbGVmdEluZGV4SW50ZXJtZWRpYXRlJyxcbiAgICAnbGVmdEluZGV4RGlzdGFsJyxcbiAgICAnbGVmdE1pZGRsZVByb3hpbWFsJyxcbiAgICAnbGVmdE1pZGRsZUludGVybWVkaWF0ZScsXG4gICAgJ2xlZnRNaWRkbGVEaXN0YWwnLFxuICAgICdsZWZ0UmluZ1Byb3hpbWFsJyxcbiAgICAnbGVmdFJpbmdJbnRlcm1lZGlhdGUnLFxuICAgICdsZWZ0UmluZ0Rpc3RhbCcsXG4gICAgJ2xlZnRMaXR0bGVQcm94aW1hbCcsXG4gICAgJ2xlZnRMaXR0bGVJbnRlcm1lZGlhdGUnLFxuICAgICdsZWZ0TGl0dGxlRGlzdGFsJyxcbiAgICAncmlnaHRUaHVtYk1ldGFjYXJwYWwnLFxuICAgICdyaWdodFRodW1iUHJveGltYWwnLFxuICAgICdyaWdodFRodW1iRGlzdGFsJyxcbiAgICAncmlnaHRJbmRleFByb3hpbWFsJyxcbiAgICAncmlnaHRJbmRleEludGVybWVkaWF0ZScsXG4gICAgJ3JpZ2h0SW5kZXhEaXN0YWwnLFxuICAgICdyaWdodE1pZGRsZVByb3hpbWFsJyxcbiAgICAncmlnaHRNaWRkbGVJbnRlcm1lZGlhdGUnLFxuICAgICdyaWdodE1pZGRsZURpc3RhbCcsXG4gICAgJ3JpZ2h0UmluZ1Byb3hpbWFsJyxcbiAgICAncmlnaHRSaW5nSW50ZXJtZWRpYXRlJyxcbiAgICAncmlnaHRSaW5nRGlzdGFsJyxcbiAgICAncmlnaHRMaXR0bGVQcm94aW1hbCcsXG4gICAgJ3JpZ2h0TGl0dGxlSW50ZXJtZWRpYXRlJyxcbiAgICAncmlnaHRMaXR0bGVEaXN0YWwnLFxuXTtcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG4vKipcbiAqIFRoZSBuYW1lcyBvZiB7QGxpbmsgVlJNSHVtYW5vaWR9IGJvbmUgbmFtZXMuXG4gKlxuICogUmVmOiBodHRwczovL2dpdGh1Yi5jb20vdnJtLWMvdnJtLXNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvc3BlY2lmaWNhdGlvbi9WUk1DX3ZybS0xLjAvaHVtYW5vaWQubWRcbiAqL1xuY29uc3QgVlJNSHVtYW5Cb25lTmFtZSA9IHtcbiAgICBIaXBzOiAnaGlwcycsXG4gICAgU3BpbmU6ICdzcGluZScsXG4gICAgQ2hlc3Q6ICdjaGVzdCcsXG4gICAgVXBwZXJDaGVzdDogJ3VwcGVyQ2hlc3QnLFxuICAgIE5lY2s6ICduZWNrJyxcbiAgICBIZWFkOiAnaGVhZCcsXG4gICAgTGVmdEV5ZTogJ2xlZnRFeWUnLFxuICAgIFJpZ2h0RXllOiAncmlnaHRFeWUnLFxuICAgIEphdzogJ2phdycsXG4gICAgTGVmdFVwcGVyTGVnOiAnbGVmdFVwcGVyTGVnJyxcbiAgICBMZWZ0TG93ZXJMZWc6ICdsZWZ0TG93ZXJMZWcnLFxuICAgIExlZnRGb290OiAnbGVmdEZvb3QnLFxuICAgIExlZnRUb2VzOiAnbGVmdFRvZXMnLFxuICAgIFJpZ2h0VXBwZXJMZWc6ICdyaWdodFVwcGVyTGVnJyxcbiAgICBSaWdodExvd2VyTGVnOiAncmlnaHRMb3dlckxlZycsXG4gICAgUmlnaHRGb290OiAncmlnaHRGb290JyxcbiAgICBSaWdodFRvZXM6ICdyaWdodFRvZXMnLFxuICAgIExlZnRTaG91bGRlcjogJ2xlZnRTaG91bGRlcicsXG4gICAgTGVmdFVwcGVyQXJtOiAnbGVmdFVwcGVyQXJtJyxcbiAgICBMZWZ0TG93ZXJBcm06ICdsZWZ0TG93ZXJBcm0nLFxuICAgIExlZnRIYW5kOiAnbGVmdEhhbmQnLFxuICAgIFJpZ2h0U2hvdWxkZXI6ICdyaWdodFNob3VsZGVyJyxcbiAgICBSaWdodFVwcGVyQXJtOiAncmlnaHRVcHBlckFybScsXG4gICAgUmlnaHRMb3dlckFybTogJ3JpZ2h0TG93ZXJBcm0nLFxuICAgIFJpZ2h0SGFuZDogJ3JpZ2h0SGFuZCcsXG4gICAgTGVmdFRodW1iTWV0YWNhcnBhbDogJ2xlZnRUaHVtYk1ldGFjYXJwYWwnLFxuICAgIExlZnRUaHVtYlByb3hpbWFsOiAnbGVmdFRodW1iUHJveGltYWwnLFxuICAgIExlZnRUaHVtYkRpc3RhbDogJ2xlZnRUaHVtYkRpc3RhbCcsXG4gICAgTGVmdEluZGV4UHJveGltYWw6ICdsZWZ0SW5kZXhQcm94aW1hbCcsXG4gICAgTGVmdEluZGV4SW50ZXJtZWRpYXRlOiAnbGVmdEluZGV4SW50ZXJtZWRpYXRlJyxcbiAgICBMZWZ0SW5kZXhEaXN0YWw6ICdsZWZ0SW5kZXhEaXN0YWwnLFxuICAgIExlZnRNaWRkbGVQcm94aW1hbDogJ2xlZnRNaWRkbGVQcm94aW1hbCcsXG4gICAgTGVmdE1pZGRsZUludGVybWVkaWF0ZTogJ2xlZnRNaWRkbGVJbnRlcm1lZGlhdGUnLFxuICAgIExlZnRNaWRkbGVEaXN0YWw6ICdsZWZ0TWlkZGxlRGlzdGFsJyxcbiAgICBMZWZ0UmluZ1Byb3hpbWFsOiAnbGVmdFJpbmdQcm94aW1hbCcsXG4gICAgTGVmdFJpbmdJbnRlcm1lZGlhdGU6ICdsZWZ0UmluZ0ludGVybWVkaWF0ZScsXG4gICAgTGVmdFJpbmdEaXN0YWw6ICdsZWZ0UmluZ0Rpc3RhbCcsXG4gICAgTGVmdExpdHRsZVByb3hpbWFsOiAnbGVmdExpdHRsZVByb3hpbWFsJyxcbiAgICBMZWZ0TGl0dGxlSW50ZXJtZWRpYXRlOiAnbGVmdExpdHRsZUludGVybWVkaWF0ZScsXG4gICAgTGVmdExpdHRsZURpc3RhbDogJ2xlZnRMaXR0bGVEaXN0YWwnLFxuICAgIFJpZ2h0VGh1bWJNZXRhY2FycGFsOiAncmlnaHRUaHVtYk1ldGFjYXJwYWwnLFxuICAgIFJpZ2h0VGh1bWJQcm94aW1hbDogJ3JpZ2h0VGh1bWJQcm94aW1hbCcsXG4gICAgUmlnaHRUaHVtYkRpc3RhbDogJ3JpZ2h0VGh1bWJEaXN0YWwnLFxuICAgIFJpZ2h0SW5kZXhQcm94aW1hbDogJ3JpZ2h0SW5kZXhQcm94aW1hbCcsXG4gICAgUmlnaHRJbmRleEludGVybWVkaWF0ZTogJ3JpZ2h0SW5kZXhJbnRlcm1lZGlhdGUnLFxuICAgIFJpZ2h0SW5kZXhEaXN0YWw6ICdyaWdodEluZGV4RGlzdGFsJyxcbiAgICBSaWdodE1pZGRsZVByb3hpbWFsOiAncmlnaHRNaWRkbGVQcm94aW1hbCcsXG4gICAgUmlnaHRNaWRkbGVJbnRlcm1lZGlhdGU6ICdyaWdodE1pZGRsZUludGVybWVkaWF0ZScsXG4gICAgUmlnaHRNaWRkbGVEaXN0YWw6ICdyaWdodE1pZGRsZURpc3RhbCcsXG4gICAgUmlnaHRSaW5nUHJveGltYWw6ICdyaWdodFJpbmdQcm94aW1hbCcsXG4gICAgUmlnaHRSaW5nSW50ZXJtZWRpYXRlOiAncmlnaHRSaW5nSW50ZXJtZWRpYXRlJyxcbiAgICBSaWdodFJpbmdEaXN0YWw6ICdyaWdodFJpbmdEaXN0YWwnLFxuICAgIFJpZ2h0TGl0dGxlUHJveGltYWw6ICdyaWdodExpdHRsZVByb3hpbWFsJyxcbiAgICBSaWdodExpdHRsZUludGVybWVkaWF0ZTogJ3JpZ2h0TGl0dGxlSW50ZXJtZWRpYXRlJyxcbiAgICBSaWdodExpdHRsZURpc3RhbDogJ3JpZ2h0TGl0dGxlRGlzdGFsJyxcbn07XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuLyoqXG4gKiBBbiBvYmplY3QgdGhhdCBtYXBzIGZyb20ge0BsaW5rIFZSTUh1bWFuQm9uZU5hbWV9IHRvIGl0cyBwYXJlbnQge0BsaW5rIFZSTUh1bWFuQm9uZU5hbWV9LlxuICpcbiAqIFJlZjogaHR0cHM6Ly9naXRodWIuY29tL3ZybS1jL3ZybS1zcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3NwZWNpZmljYXRpb24vVlJNQ192cm0tMS4wL2h1bWFub2lkLm1kXG4gKi9cbmNvbnN0IFZSTUh1bWFuQm9uZVBhcmVudE1hcCA9IHtcbiAgICBoaXBzOiBudWxsLFxuICAgIHNwaW5lOiAnaGlwcycsXG4gICAgY2hlc3Q6ICdzcGluZScsXG4gICAgdXBwZXJDaGVzdDogJ2NoZXN0JyxcbiAgICBuZWNrOiAndXBwZXJDaGVzdCcsXG4gICAgaGVhZDogJ25lY2snLFxuICAgIGxlZnRFeWU6ICdoZWFkJyxcbiAgICByaWdodEV5ZTogJ2hlYWQnLFxuICAgIGphdzogJ2hlYWQnLFxuICAgIGxlZnRVcHBlckxlZzogJ2hpcHMnLFxuICAgIGxlZnRMb3dlckxlZzogJ2xlZnRVcHBlckxlZycsXG4gICAgbGVmdEZvb3Q6ICdsZWZ0TG93ZXJMZWcnLFxuICAgIGxlZnRUb2VzOiAnbGVmdEZvb3QnLFxuICAgIHJpZ2h0VXBwZXJMZWc6ICdoaXBzJyxcbiAgICByaWdodExvd2VyTGVnOiAncmlnaHRVcHBlckxlZycsXG4gICAgcmlnaHRGb290OiAncmlnaHRMb3dlckxlZycsXG4gICAgcmlnaHRUb2VzOiAncmlnaHRGb290JyxcbiAgICBsZWZ0U2hvdWxkZXI6ICd1cHBlckNoZXN0JyxcbiAgICBsZWZ0VXBwZXJBcm06ICdsZWZ0U2hvdWxkZXInLFxuICAgIGxlZnRMb3dlckFybTogJ2xlZnRVcHBlckFybScsXG4gICAgbGVmdEhhbmQ6ICdsZWZ0TG93ZXJBcm0nLFxuICAgIHJpZ2h0U2hvdWxkZXI6ICd1cHBlckNoZXN0JyxcbiAgICByaWdodFVwcGVyQXJtOiAncmlnaHRTaG91bGRlcicsXG4gICAgcmlnaHRMb3dlckFybTogJ3JpZ2h0VXBwZXJBcm0nLFxuICAgIHJpZ2h0SGFuZDogJ3JpZ2h0TG93ZXJBcm0nLFxuICAgIGxlZnRUaHVtYk1ldGFjYXJwYWw6ICdsZWZ0SGFuZCcsXG4gICAgbGVmdFRodW1iUHJveGltYWw6ICdsZWZ0VGh1bWJNZXRhY2FycGFsJyxcbiAgICBsZWZ0VGh1bWJEaXN0YWw6ICdsZWZ0VGh1bWJQcm94aW1hbCcsXG4gICAgbGVmdEluZGV4UHJveGltYWw6ICdsZWZ0SGFuZCcsXG4gICAgbGVmdEluZGV4SW50ZXJtZWRpYXRlOiAnbGVmdEluZGV4UHJveGltYWwnLFxuICAgIGxlZnRJbmRleERpc3RhbDogJ2xlZnRJbmRleEludGVybWVkaWF0ZScsXG4gICAgbGVmdE1pZGRsZVByb3hpbWFsOiAnbGVmdEhhbmQnLFxuICAgIGxlZnRNaWRkbGVJbnRlcm1lZGlhdGU6ICdsZWZ0TWlkZGxlUHJveGltYWwnLFxuICAgIGxlZnRNaWRkbGVEaXN0YWw6ICdsZWZ0TWlkZGxlSW50ZXJtZWRpYXRlJyxcbiAgICBsZWZ0UmluZ1Byb3hpbWFsOiAnbGVmdEhhbmQnLFxuICAgIGxlZnRSaW5nSW50ZXJtZWRpYXRlOiAnbGVmdFJpbmdQcm94aW1hbCcsXG4gICAgbGVmdFJpbmdEaXN0YWw6ICdsZWZ0UmluZ0ludGVybWVkaWF0ZScsXG4gICAgbGVmdExpdHRsZVByb3hpbWFsOiAnbGVmdEhhbmQnLFxuICAgIGxlZnRMaXR0bGVJbnRlcm1lZGlhdGU6ICdsZWZ0TGl0dGxlUHJveGltYWwnLFxuICAgIGxlZnRMaXR0bGVEaXN0YWw6ICdsZWZ0TGl0dGxlSW50ZXJtZWRpYXRlJyxcbiAgICByaWdodFRodW1iTWV0YWNhcnBhbDogJ3JpZ2h0SGFuZCcsXG4gICAgcmlnaHRUaHVtYlByb3hpbWFsOiAncmlnaHRUaHVtYk1ldGFjYXJwYWwnLFxuICAgIHJpZ2h0VGh1bWJEaXN0YWw6ICdyaWdodFRodW1iUHJveGltYWwnLFxuICAgIHJpZ2h0SW5kZXhQcm94aW1hbDogJ3JpZ2h0SGFuZCcsXG4gICAgcmlnaHRJbmRleEludGVybWVkaWF0ZTogJ3JpZ2h0SW5kZXhQcm94aW1hbCcsXG4gICAgcmlnaHRJbmRleERpc3RhbDogJ3JpZ2h0SW5kZXhJbnRlcm1lZGlhdGUnLFxuICAgIHJpZ2h0TWlkZGxlUHJveGltYWw6ICdyaWdodEhhbmQnLFxuICAgIHJpZ2h0TWlkZGxlSW50ZXJtZWRpYXRlOiAncmlnaHRNaWRkbGVQcm94aW1hbCcsXG4gICAgcmlnaHRNaWRkbGVEaXN0YWw6ICdyaWdodE1pZGRsZUludGVybWVkaWF0ZScsXG4gICAgcmlnaHRSaW5nUHJveGltYWw6ICdyaWdodEhhbmQnLFxuICAgIHJpZ2h0UmluZ0ludGVybWVkaWF0ZTogJ3JpZ2h0UmluZ1Byb3hpbWFsJyxcbiAgICByaWdodFJpbmdEaXN0YWw6ICdyaWdodFJpbmdJbnRlcm1lZGlhdGUnLFxuICAgIHJpZ2h0TGl0dGxlUHJveGltYWw6ICdyaWdodEhhbmQnLFxuICAgIHJpZ2h0TGl0dGxlSW50ZXJtZWRpYXRlOiAncmlnaHRMaXR0bGVQcm94aW1hbCcsXG4gICAgcmlnaHRMaXR0bGVEaXN0YWw6ICdyaWdodExpdHRsZUludGVybWVkaWF0ZScsXG59O1xuXG4vKipcbiAqIEEgY29tcGF0IGZ1bmN0aW9uIGZvciBgUXVhdGVybmlvbi5pbnZlcnQoKWAgLyBgUXVhdGVybmlvbi5pbnZlcnNlKClgLlxuICogYFF1YXRlcm5pb24uaW52ZXJ0KClgIGlzIGludHJvZHVjZWQgaW4gcjEyMyBhbmQgYFF1YXRlcm5pb24uaW52ZXJzZSgpYCBlbWl0cyBhIHdhcm5pbmcuXG4gKiBXZSBhcmUgZ29pbmcgdG8gdXNlIHRoaXMgY29tcGF0IGZvciBhIHdoaWxlLlxuICogQHBhcmFtIHRhcmdldCBBIHRhcmdldCBxdWF0ZXJuaW9uXG4gKi9cbmZ1bmN0aW9uIHF1YXRJbnZlcnRDb21wYXQodGFyZ2V0KSB7XG4gICAgaWYgKHRhcmdldC5pbnZlcnQpIHtcbiAgICAgICAgdGFyZ2V0LmludmVydCgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGFyZ2V0LmludmVyc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cblxuY29uc3QgX3YzQSQzID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IF9xdWF0QSQ0ID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbi8qKlxuICogQSBjbGFzcyByZXByZXNlbnRzIHRoZSBSaWcgb2YgYSBWUk0uXG4gKi9cbmNsYXNzIFZSTVJpZyB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbmV3IHtAbGluayBWUk1IdW1hbm9pZH0uXG4gICAgICogQHBhcmFtIGh1bWFuQm9uZXMgQSB7QGxpbmsgVlJNSHVtYW5Cb25lc30gY29udGFpbnMgYWxsIHRoZSBib25lcyBvZiB0aGUgbmV3IGh1bWFub2lkXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoaHVtYW5Cb25lcykge1xuICAgICAgICB0aGlzLmh1bWFuQm9uZXMgPSBodW1hbkJvbmVzO1xuICAgICAgICB0aGlzLnJlc3RQb3NlID0gdGhpcy5nZXRBYnNvbHV0ZVBvc2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIHRoZSBjdXJyZW50IGFic29sdXRlIHBvc2Ugb2YgdGhpcyBodW1hbm9pZCBhcyBhIHtAbGluayBWUk1Qb3NlfS5cbiAgICAgKiBOb3RlIHRoYXQgdGhlIG91dHB1dCByZXN1bHQgd2lsbCBjb250YWluIGluaXRpYWwgc3RhdGUgb2YgdGhlIFZSTSBhbmQgbm90IGNvbXBhdGlibGUgYmV0d2VlbiBkaWZmZXJlbnQgbW9kZWxzLlxuICAgICAqIFlvdSBtaWdodCB3YW50IHRvIHVzZSB7QGxpbmsgZ2V0UG9zZX0gaW5zdGVhZC5cbiAgICAgKi9cbiAgICBnZXRBYnNvbHV0ZVBvc2UoKSB7XG4gICAgICAgIGNvbnN0IHBvc2UgPSB7fTtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5odW1hbkJvbmVzKS5mb3JFYWNoKCh2cm1Cb25lTmFtZVN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdnJtQm9uZU5hbWUgPSB2cm1Cb25lTmFtZVN0cmluZztcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldEJvbmVOb2RlKHZybUJvbmVOYW1lKTtcbiAgICAgICAgICAgIC8vIElnbm9yZSB3aGVuIHRoZXJlIGFyZSBubyBib25lIG9uIHRoZSBWUk1IdW1hbm9pZFxuICAgICAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gR2V0IHRoZSBwb3NpdGlvbiAvIHJvdGF0aW9uIGZyb20gdGhlIG5vZGVcbiAgICAgICAgICAgIF92M0EkMy5jb3B5KG5vZGUucG9zaXRpb24pO1xuICAgICAgICAgICAgX3F1YXRBJDQuY29weShub2RlLnF1YXRlcm5pb24pO1xuICAgICAgICAgICAgLy8gQ29udmVydCB0byByYXcgYXJyYXlzXG4gICAgICAgICAgICBwb3NlW3ZybUJvbmVOYW1lXSA9IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogX3YzQSQzLnRvQXJyYXkoKSxcbiAgICAgICAgICAgICAgICByb3RhdGlvbjogX3F1YXRBJDQudG9BcnJheSgpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwb3NlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgcG9zZSBvZiB0aGlzIGh1bWFub2lkIGFzIGEge0BsaW5rIFZSTVBvc2V9LlxuICAgICAqXG4gICAgICogRWFjaCB0cmFuc2Zvcm0gaXMgYSBsb2NhbCB0cmFuc2Zvcm0gcmVsYXRpdmUgZnJvbSByZXN0IHBvc2UgKFQtcG9zZSkuXG4gICAgICovXG4gICAgZ2V0UG9zZSgpIHtcbiAgICAgICAgY29uc3QgcG9zZSA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmh1bWFuQm9uZXMpLmZvckVhY2goKGJvbmVOYW1lU3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBib25lTmFtZSA9IGJvbmVOYW1lU3RyaW5nO1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Qm9uZU5vZGUoYm9uZU5hbWUpO1xuICAgICAgICAgICAgLy8gSWdub3JlIHdoZW4gdGhlcmUgYXJlIG5vIGJvbmUgb24gdGhlIFZSTUh1bWFub2lkXG4gICAgICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUYWtlIGEgZGlmZiBmcm9tIHJlc3RQb3NlXG4gICAgICAgICAgICBfdjNBJDMuc2V0KDAsIDAsIDApO1xuICAgICAgICAgICAgX3F1YXRBJDQuaWRlbnRpdHkoKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3RTdGF0ZSA9IHRoaXMucmVzdFBvc2VbYm9uZU5hbWVdO1xuICAgICAgICAgICAgaWYgKHJlc3RTdGF0ZSA9PT0gbnVsbCB8fCByZXN0U3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3RTdGF0ZS5wb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIF92M0EkMy5mcm9tQXJyYXkocmVzdFN0YXRlLnBvc2l0aW9uKS5uZWdhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXN0U3RhdGUgPT09IG51bGwgfHwgcmVzdFN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXN0U3RhdGUucm90YXRpb24pIHtcbiAgICAgICAgICAgICAgICBxdWF0SW52ZXJ0Q29tcGF0KF9xdWF0QSQ0LmZyb21BcnJheShyZXN0U3RhdGUucm90YXRpb24pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEdldCB0aGUgcG9zaXRpb24gLyByb3RhdGlvbiBmcm9tIHRoZSBub2RlXG4gICAgICAgICAgICBfdjNBJDMuYWRkKG5vZGUucG9zaXRpb24pO1xuICAgICAgICAgICAgX3F1YXRBJDQucHJlbXVsdGlwbHkobm9kZS5xdWF0ZXJuaW9uKTtcbiAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gcmF3IGFycmF5c1xuICAgICAgICAgICAgcG9zZVtib25lTmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IF92M0EkMy50b0FycmF5KCksXG4gICAgICAgICAgICAgICAgcm90YXRpb246IF9xdWF0QSQ0LnRvQXJyYXkoKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcG9zZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTGV0IHRoZSBodW1hbm9pZCBkbyBhIHNwZWNpZmllZCBwb3NlLlxuICAgICAqXG4gICAgICogRWFjaCB0cmFuc2Zvcm0gaGF2ZSB0byBiZSBhIGxvY2FsIHRyYW5zZm9ybSByZWxhdGl2ZSBmcm9tIHJlc3QgcG9zZSAoVC1wb3NlKS5cbiAgICAgKiBZb3UgY2FuIHBhc3Mgd2hhdCB5b3UgZ290IGZyb20ge0BsaW5rIGdldFBvc2V9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHBvc2VPYmplY3QgQSBbW1ZSTVBvc2VdXSB0aGF0IHJlcHJlc2VudHMgYSBzaW5nbGUgcG9zZVxuICAgICAqL1xuICAgIHNldFBvc2UocG9zZU9iamVjdCkge1xuICAgICAgICBPYmplY3QuZW50cmllcyhwb3NlT2JqZWN0KS5mb3JFYWNoKChbYm9uZU5hbWVTdHJpbmcsIHN0YXRlXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYm9uZU5hbWUgPSBib25lTmFtZVN0cmluZztcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldEJvbmVOb2RlKGJvbmVOYW1lKTtcbiAgICAgICAgICAgIC8vIElnbm9yZSB3aGVuIHRoZXJlIGFyZSBubyBib25lIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGUgcG9zZSBvbiB0aGUgVlJNSHVtYW5vaWRcbiAgICAgICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJlc3RTdGF0ZSA9IHRoaXMucmVzdFBvc2VbYm9uZU5hbWVdO1xuICAgICAgICAgICAgaWYgKCFyZXN0U3RhdGUpIHtcbiAgICAgICAgICAgICAgICAvLyBJdCdzIHZlcnkgdW5saWtlbHkuIFBvc3NpYmx5IGEgYnVnXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQXBwbHkgdGhlIHN0YXRlIHRvIHRoZSBhY3R1YWwgYm9uZVxuICAgICAgICAgICAgaWYgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5wb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIG5vZGUucG9zaXRpb24uZnJvbUFycmF5KHN0YXRlLnBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdFN0YXRlLnBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucG9zaXRpb24uYWRkKF92M0EkMy5mcm9tQXJyYXkocmVzdFN0YXRlLnBvc2l0aW9uKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5yb3RhdGlvbikge1xuICAgICAgICAgICAgICAgIG5vZGUucXVhdGVybmlvbi5mcm9tQXJyYXkoc3RhdGUucm90YXRpb24pO1xuICAgICAgICAgICAgICAgIGlmIChyZXN0U3RhdGUucm90YXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5xdWF0ZXJuaW9uLm11bHRpcGx5KF9xdWF0QSQ0LmZyb21BcnJheShyZXN0U3RhdGUucm90YXRpb24pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXNldCB0aGUgaHVtYW5vaWQgdG8gaXRzIHJlc3QgcG9zZS5cbiAgICAgKi9cbiAgICByZXNldFBvc2UoKSB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMucmVzdFBvc2UpLmZvckVhY2goKFtib25lTmFtZSwgcmVzdF0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldEJvbmVOb2RlKGJvbmVOYW1lKTtcbiAgICAgICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXN0ID09PSBudWxsIHx8IHJlc3QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3QucG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICBub2RlLnBvc2l0aW9uLmZyb21BcnJheShyZXN0LnBvc2l0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXN0ID09PSBudWxsIHx8IHJlc3QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3Qucm90YXRpb24pIHtcbiAgICAgICAgICAgICAgICBub2RlLnF1YXRlcm5pb24uZnJvbUFycmF5KHJlc3Qucm90YXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgYm9uZSBib3VuZCB0byBhIHNwZWNpZmllZCB7QGxpbmsgVlJNSHVtYW5Cb25lTmFtZX0sIGFzIGEge0BsaW5rIFZSTUh1bWFuQm9uZX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBib25lIHlvdSB3YW50XG4gICAgICovXG4gICAgZ2V0Qm9uZShuYW1lKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMuaHVtYW5Cb25lc1tuYW1lXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBib25lIGJvdW5kIHRvIGEgc3BlY2lmaWVkIHtAbGluayBWUk1IdW1hbkJvbmVOYW1lfSwgYXMgYSBgVEhSRUUuT2JqZWN0M0RgLlxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgYm9uZSB5b3Ugd2FudFxuICAgICAqL1xuICAgIGdldEJvbmVOb2RlKG5hbWUpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIChfYiA9IChfYSA9IHRoaXMuaHVtYW5Cb25lc1tuYW1lXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IG51bGw7XG4gICAgfVxufVxuXG5jb25zdCBfdjNBJDIgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgX3F1YXRBJDMgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuY29uc3QgX2JvbmVXb3JsZFBvcyA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4vKipcbiAqIEEgY2xhc3MgcmVwcmVzZW50cyB0aGUgbm9ybWFsaXplZCBSaWcgb2YgYSBWUk0uXG4gKi9cbmNsYXNzIFZSTUh1bWFub2lkUmlnIGV4dGVuZHMgVlJNUmlnIHtcbiAgICBzdGF0aWMgX3NldHVwVHJhbnNmb3Jtcyhtb2RlbFJpZykge1xuICAgICAgICBjb25zdCByb290ID0gbmV3IFRIUkVFLk9iamVjdDNEKCk7XG4gICAgICAgIHJvb3QubmFtZSA9ICdWUk1IdW1hbm9pZFJpZyc7XG4gICAgICAgIC8vIHN0b3JlIGJvbmVXb3JsZFBvc2l0aW9ucyBhbmQgYm9uZVdvcmxkUm90YXRpb25zXG4gICAgICAgIGNvbnN0IGJvbmVXb3JsZFBvc2l0aW9ucyA9IHt9O1xuICAgICAgICBjb25zdCBib25lV29ybGRSb3RhdGlvbnMgPSB7fTtcbiAgICAgICAgY29uc3QgYm9uZVJvdGF0aW9ucyA9IHt9O1xuICAgICAgICBWUk1IdW1hbkJvbmVMaXN0LmZvckVhY2goKGJvbmVOYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBib25lTm9kZSA9IG1vZGVsUmlnLmdldEJvbmVOb2RlKGJvbmVOYW1lKTtcbiAgICAgICAgICAgIGlmIChib25lTm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJvbmVXb3JsZFBvc2l0aW9uID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBib25lV29ybGRSb3RhdGlvbiA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4gICAgICAgICAgICAgICAgYm9uZU5vZGUudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGJvbmVOb2RlLm1hdHJpeFdvcmxkLmRlY29tcG9zZShib25lV29ybGRQb3NpdGlvbiwgYm9uZVdvcmxkUm90YXRpb24sIF92M0EkMik7XG4gICAgICAgICAgICAgICAgYm9uZVdvcmxkUG9zaXRpb25zW2JvbmVOYW1lXSA9IGJvbmVXb3JsZFBvc2l0aW9uO1xuICAgICAgICAgICAgICAgIGJvbmVXb3JsZFJvdGF0aW9uc1tib25lTmFtZV0gPSBib25lV29ybGRSb3RhdGlvbjtcbiAgICAgICAgICAgICAgICBib25lUm90YXRpb25zW2JvbmVOYW1lXSA9IGJvbmVOb2RlLnF1YXRlcm5pb24uY2xvbmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGJ1aWxkIHJpZyBoaWVyYXJjaHkgKyBzdG9yZSBwYXJlbnRXb3JsZFJvdGF0aW9uc1xuICAgICAgICBjb25zdCBwYXJlbnRXb3JsZFJvdGF0aW9ucyA9IHt9O1xuICAgICAgICBjb25zdCByaWdCb25lcyA9IHt9O1xuICAgICAgICBWUk1IdW1hbkJvbmVMaXN0LmZvckVhY2goKGJvbmVOYW1lKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCBib25lTm9kZSA9IG1vZGVsUmlnLmdldEJvbmVOb2RlKGJvbmVOYW1lKTtcbiAgICAgICAgICAgIGlmIChib25lTm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJvbmVXb3JsZFBvc2l0aW9uID0gYm9uZVdvcmxkUG9zaXRpb25zW2JvbmVOYW1lXTtcbiAgICAgICAgICAgICAgICAvLyBzZWUgdGhlIG5lYXJlc3QgcGFyZW50IHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRCb25lTmFtZSA9IGJvbmVOYW1lO1xuICAgICAgICAgICAgICAgIGxldCBwYXJlbnRXb3JsZFBvc2l0aW9uO1xuICAgICAgICAgICAgICAgIGxldCBwYXJlbnRXb3JsZFJvdGF0aW9uO1xuICAgICAgICAgICAgICAgIHdoaWxlIChwYXJlbnRXb3JsZFBvc2l0aW9uID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEJvbmVOYW1lID0gVlJNSHVtYW5Cb25lUGFyZW50TWFwW2N1cnJlbnRCb25lTmFtZV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Qm9uZU5hbWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGFyZW50V29ybGRQb3NpdGlvbiA9IGJvbmVXb3JsZFBvc2l0aW9uc1tjdXJyZW50Qm9uZU5hbWVdO1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRXb3JsZFJvdGF0aW9uID0gYm9uZVdvcmxkUm90YXRpb25zW2N1cnJlbnRCb25lTmFtZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGFkZCB0byBoaWVyYXJjaHlcbiAgICAgICAgICAgICAgICBjb25zdCByaWdCb25lTm9kZSA9IG5ldyBUSFJFRS5PYmplY3QzRCgpO1xuICAgICAgICAgICAgICAgIHJpZ0JvbmVOb2RlLm5hbWUgPSAnTm9ybWFsaXplZF8nICsgYm9uZU5vZGUubmFtZTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRSaWdCb25lTm9kZSA9IChjdXJyZW50Qm9uZU5hbWUgPyAoX2EgPSByaWdCb25lc1tjdXJyZW50Qm9uZU5hbWVdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eubm9kZSA6IHJvb3QpO1xuICAgICAgICAgICAgICAgIHBhcmVudFJpZ0JvbmVOb2RlLmFkZChyaWdCb25lTm9kZSk7XG4gICAgICAgICAgICAgICAgcmlnQm9uZU5vZGUucG9zaXRpb24uY29weShib25lV29ybGRQb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudFdvcmxkUG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmlnQm9uZU5vZGUucG9zaXRpb24uc3ViKHBhcmVudFdvcmxkUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByaWdCb25lc1tib25lTmFtZV0gPSB7IG5vZGU6IHJpZ0JvbmVOb2RlIH07XG4gICAgICAgICAgICAgICAgLy8gc3RvcmUgcGFyZW50V29ybGRSb3RhdGlvblxuICAgICAgICAgICAgICAgIHBhcmVudFdvcmxkUm90YXRpb25zW2JvbmVOYW1lXSA9IHBhcmVudFdvcmxkUm90YXRpb24gIT09IG51bGwgJiYgcGFyZW50V29ybGRSb3RhdGlvbiAhPT0gdm9pZCAwID8gcGFyZW50V29ybGRSb3RhdGlvbiA6IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlnQm9uZXM6IHJpZ0JvbmVzLFxuICAgICAgICAgICAgcm9vdCxcbiAgICAgICAgICAgIHBhcmVudFdvcmxkUm90YXRpb25zLFxuICAgICAgICAgICAgYm9uZVJvdGF0aW9ucyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoaHVtYW5vaWQpIHtcbiAgICAgICAgY29uc3QgeyByaWdCb25lcywgcm9vdCwgcGFyZW50V29ybGRSb3RhdGlvbnMsIGJvbmVSb3RhdGlvbnMgfSA9IFZSTUh1bWFub2lkUmlnLl9zZXR1cFRyYW5zZm9ybXMoaHVtYW5vaWQpO1xuICAgICAgICBzdXBlcihyaWdCb25lcyk7XG4gICAgICAgIHRoaXMub3JpZ2luYWwgPSBodW1hbm9pZDtcbiAgICAgICAgdGhpcy5yb290ID0gcm9vdDtcbiAgICAgICAgdGhpcy5fcGFyZW50V29ybGRSb3RhdGlvbnMgPSBwYXJlbnRXb3JsZFJvdGF0aW9ucztcbiAgICAgICAgdGhpcy5fYm9uZVJvdGF0aW9ucyA9IGJvbmVSb3RhdGlvbnM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGlzIGh1bWFub2lkIHJpZy5cbiAgICAgKi9cbiAgICB1cGRhdGUoKSB7XG4gICAgICAgIFZSTUh1bWFuQm9uZUxpc3QuZm9yRWFjaCgoYm9uZU5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJvbmVOb2RlID0gdGhpcy5vcmlnaW5hbC5nZXRCb25lTm9kZShib25lTmFtZSk7XG4gICAgICAgICAgICBpZiAoYm9uZU5vZGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ0JvbmVOb2RlID0gdGhpcy5nZXRCb25lTm9kZShib25lTmFtZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50V29ybGRSb3RhdGlvbiA9IHRoaXMuX3BhcmVudFdvcmxkUm90YXRpb25zW2JvbmVOYW1lXTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnZQYXJlbnRXb3JsZFJvdGF0aW9uID0gX3F1YXRBJDMuY29weShwYXJlbnRXb3JsZFJvdGF0aW9uKS5pbnZlcnQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBib25lUm90YXRpb24gPSB0aGlzLl9ib25lUm90YXRpb25zW2JvbmVOYW1lXTtcbiAgICAgICAgICAgICAgICBib25lTm9kZS5xdWF0ZXJuaW9uXG4gICAgICAgICAgICAgICAgICAgIC5jb3B5KHJpZ0JvbmVOb2RlLnF1YXRlcm5pb24pXG4gICAgICAgICAgICAgICAgICAgIC5tdWx0aXBseShwYXJlbnRXb3JsZFJvdGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAucHJlbXVsdGlwbHkoaW52UGFyZW50V29ybGRSb3RhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgLm11bHRpcGx5KGJvbmVSb3RhdGlvbik7XG4gICAgICAgICAgICAgICAgLy8gTW92ZSB0aGUgbWFzcyBjZW50ZXIgb2YgdGhlIFZSTVxuICAgICAgICAgICAgICAgIGlmIChib25lTmFtZSA9PT0gJ2hpcHMnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvbmVXb3JsZFBvc2l0aW9uID0gcmlnQm9uZU5vZGUuZ2V0V29ybGRQb3NpdGlvbihfYm9uZVdvcmxkUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgYm9uZU5vZGUucGFyZW50LnVwZGF0ZVdvcmxkTWF0cml4KHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50V29ybGRNYXRyaXggPSBib25lTm9kZS5wYXJlbnQubWF0cml4V29ybGQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsUG9zaXRpb24gPSBib25lV29ybGRQb3NpdGlvbi5hcHBseU1hdHJpeDQocGFyZW50V29ybGRNYXRyaXguaW52ZXJ0KCkpO1xuICAgICAgICAgICAgICAgICAgICBib25lTm9kZS5wb3NpdGlvbi5jb3B5KGxvY2FsUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIEEgY2xhc3MgcmVwcmVzZW50cyBhIGh1bWFub2lkIG9mIGEgVlJNLlxuICovXG5jbGFzcyBWUk1IdW1hbm9pZCB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgRGVwcmVjYXRlZC4gVXNlIGVpdGhlciB7QGxpbmsgcmF3UmVzdFBvc2V9IG9yIHtAbGluayBub3JtYWxpemVkUmVzdFBvc2V9IGluc3RlYWQuXG4gICAgICovXG4gICAgZ2V0IHJlc3RQb3NlKCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTUh1bWFub2lkOiByZXN0UG9zZSBpcyBkZXByZWNhdGVkLiBVc2UgZWl0aGVyIHJhd1Jlc3RQb3NlIG9yIG5vcm1hbGl6ZWRSZXN0UG9zZSBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gdGhpcy5yYXdSZXN0UG9zZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSB7QGxpbmsgVlJNUG9zZX0gb2YgaXRzIHJhdyBodW1hbiBib25lcyB0aGF0IGlzIGl0cyBkZWZhdWx0IHN0YXRlLlxuICAgICAqIE5vdGUgdGhhdCBpdCdzIG5vdCBjb21wYXRpYmxlIHdpdGgge0BsaW5rIHNldFJhd1Bvc2V9IGFuZCB7QGxpbmsgZ2V0UmF3UG9zZX0sIHNpbmNlIGl0IGNvbnRhaW5zIG5vbi1yZWxhdGl2ZSB2YWx1ZXMgb2YgZWFjaCBsb2NhbCB0cmFuc2Zvcm1zLlxuICAgICAqL1xuICAgIGdldCByYXdSZXN0UG9zZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jhd0h1bWFuQm9uZXMucmVzdFBvc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEge0BsaW5rIFZSTVBvc2V9IG9mIGl0cyBub3JtYWxpemVkIGh1bWFuIGJvbmVzIHRoYXQgaXMgaXRzIGRlZmF1bHQgc3RhdGUuXG4gICAgICogTm90ZSB0aGF0IGl0J3Mgbm90IGNvbXBhdGlibGUgd2l0aCB7QGxpbmsgc2V0Tm9ybWFsaXplZFBvc2V9IGFuZCB7QGxpbmsgZ2V0Tm9ybWFsaXplZFBvc2V9LCBzaW5jZSBpdCBjb250YWlucyBub24tcmVsYXRpdmUgdmFsdWVzIG9mIGVhY2ggbG9jYWwgdHJhbnNmb3Jtcy5cbiAgICAgKi9cbiAgICBnZXQgbm9ybWFsaXplZFJlc3RQb3NlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplZEh1bWFuQm9uZXMucmVzdFBvc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgbWFwIGZyb20ge0BsaW5rIFZSTUh1bWFuQm9uZU5hbWV9IHRvIHJhdyB7QGxpbmsgVlJNSHVtYW5Cb25lfXMuXG4gICAgICovXG4gICAgZ2V0IGh1bWFuQm9uZXMoKSB7XG4gICAgICAgIC8vIGFuIGFsaWFzIG9mIGByYXdIdW1hbkJvbmVzYFxuICAgICAgICByZXR1cm4gdGhpcy5fcmF3SHVtYW5Cb25lcy5odW1hbkJvbmVzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIG1hcCBmcm9tIHtAbGluayBWUk1IdW1hbkJvbmVOYW1lfSB0byByYXcge0BsaW5rIFZSTUh1bWFuQm9uZX1zLlxuICAgICAqL1xuICAgIGdldCByYXdIdW1hbkJvbmVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmF3SHVtYW5Cb25lcy5odW1hbkJvbmVzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIG1hcCBmcm9tIHtAbGluayBWUk1IdW1hbkJvbmVOYW1lfSB0byBub3JtYWxpemVkIHtAbGluayBWUk1IdW1hbkJvbmV9cy5cbiAgICAgKi9cbiAgICBnZXQgbm9ybWFsaXplZEh1bWFuQm9uZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3JtYWxpemVkSHVtYW5Cb25lcy5odW1hbkJvbmVzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgcm9vdCBvZiBub3JtYWxpemVkIHtAbGluayBWUk1IdW1hbkJvbmV9cy5cbiAgICAgKi9cbiAgICBnZXQgbm9ybWFsaXplZEh1bWFuQm9uZXNSb290KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplZEh1bWFuQm9uZXMucm9vdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbmV3IHtAbGluayBWUk1IdW1hbm9pZH0uXG4gICAgICogQHBhcmFtIGh1bWFuQm9uZXMgQSB7QGxpbmsgVlJNSHVtYW5Cb25lc30gY29udGFpbnMgYWxsIHRoZSBib25lcyBvZiB0aGUgbmV3IGh1bWFub2lkXG4gICAgICogQHBhcmFtIGF1dG9VcGRhdGVIdW1hbkJvbmVzIFdoZXRoZXIgaXQgY29waWVzIHBvc2UgZnJvbSBub3JtYWxpemVkSHVtYW5Cb25lcyB0byByYXdIdW1hbkJvbmVzIG9uIHtAbGluayB1cGRhdGV9LiBgdHJ1ZWAgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihodW1hbkJvbmVzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdGhpcy5hdXRvVXBkYXRlSHVtYW5Cb25lcyA9IChfYSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5hdXRvVXBkYXRlSHVtYW5Cb25lcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdHJ1ZTtcbiAgICAgICAgdGhpcy5fcmF3SHVtYW5Cb25lcyA9IG5ldyBWUk1SaWcoaHVtYW5Cb25lcyk7XG4gICAgICAgIHRoaXMuX25vcm1hbGl6ZWRIdW1hbkJvbmVzID0gbmV3IFZSTUh1bWFub2lkUmlnKHRoaXMuX3Jhd0h1bWFuQm9uZXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb3B5IHRoZSBnaXZlbiB7QGxpbmsgVlJNSHVtYW5vaWR9IGludG8gdGhpcyBvbmUuXG4gICAgICogQHBhcmFtIHNvdXJjZSBUaGUge0BsaW5rIFZSTUh1bWFub2lkfSB5b3Ugd2FudCB0byBjb3B5XG4gICAgICogQHJldHVybnMgdGhpc1xuICAgICAqL1xuICAgIGNvcHkoc291cmNlKSB7XG4gICAgICAgIHRoaXMuYXV0b1VwZGF0ZUh1bWFuQm9uZXMgPSBzb3VyY2UuYXV0b1VwZGF0ZUh1bWFuQm9uZXM7XG4gICAgICAgIHRoaXMuX3Jhd0h1bWFuQm9uZXMgPSBuZXcgVlJNUmlnKHNvdXJjZS5odW1hbkJvbmVzKTtcbiAgICAgICAgdGhpcy5fbm9ybWFsaXplZEh1bWFuQm9uZXMgPSBuZXcgVlJNSHVtYW5vaWRSaWcodGhpcy5fcmF3SHVtYW5Cb25lcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgY2xvbmUgb2YgdGhpcyB7QGxpbmsgVlJNSHVtYW5vaWR9LlxuICAgICAqIEByZXR1cm5zIENvcGllZCB7QGxpbmsgVlJNSHVtYW5vaWR9XG4gICAgICovXG4gICAgY2xvbmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgVlJNSHVtYW5vaWQodGhpcy5odW1hbkJvbmVzLCB7IGF1dG9VcGRhdGVIdW1hbkJvbmVzOiB0aGlzLmF1dG9VcGRhdGVIdW1hbkJvbmVzIH0pLmNvcHkodGhpcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIERlcHJlY2F0ZWQuIFVzZSBlaXRoZXIge0BsaW5rIGdldFJhd0Fic29sdXRlUG9zZX0gb3Ige0BsaW5rIGdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBvc2V9IGluc3RlYWQuXG4gICAgICovXG4gICAgZ2V0QWJzb2x1dGVQb3NlKCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTUh1bWFub2lkOiBnZXRBYnNvbHV0ZVBvc2UoKSBpcyBkZXByZWNhdGVkLiBVc2UgZWl0aGVyIGdldFJhd0Fic29sdXRlUG9zZSgpIG9yIGdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBvc2UoKSBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRSYXdBYnNvbHV0ZVBvc2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIHRoZSBjdXJyZW50IGFic29sdXRlIHBvc2Ugb2YgdGhpcyByYXcgaHVtYW4gYm9uZXMgYXMgYSB7QGxpbmsgVlJNUG9zZX0uXG4gICAgICogTm90ZSB0aGF0IHRoZSBvdXRwdXQgcmVzdWx0IHdpbGwgY29udGFpbiBpbml0aWFsIHN0YXRlIG9mIHRoZSBWUk0gYW5kIG5vdCBjb21wYXRpYmxlIGJldHdlZW4gZGlmZmVyZW50IG1vZGVscy5cbiAgICAgKiBZb3UgbWlnaHQgd2FudCB0byB1c2Uge0BsaW5rIGdldFJhd1Bvc2V9IGluc3RlYWQuXG4gICAgICovXG4gICAgZ2V0UmF3QWJzb2x1dGVQb3NlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmF3SHVtYW5Cb25lcy5nZXRBYnNvbHV0ZVBvc2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIHRoZSBjdXJyZW50IGFic29sdXRlIHBvc2Ugb2YgdGhpcyBub3JtYWxpemVkIGh1bWFuIGJvbmVzIGFzIGEge0BsaW5rIFZSTVBvc2V9LlxuICAgICAqIE5vdGUgdGhhdCB0aGUgb3V0cHV0IHJlc3VsdCB3aWxsIGNvbnRhaW4gaW5pdGlhbCBzdGF0ZSBvZiB0aGUgVlJNIGFuZCBub3QgY29tcGF0aWJsZSBiZXR3ZWVuIGRpZmZlcmVudCBtb2RlbHMuXG4gICAgICogWW91IG1pZ2h0IHdhbnQgdG8gdXNlIHtAbGluayBnZXROb3JtYWxpemVkUG9zZX0gaW5zdGVhZC5cbiAgICAgKi9cbiAgICBnZXROb3JtYWxpemVkQWJzb2x1dGVQb3NlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplZEh1bWFuQm9uZXMuZ2V0QWJzb2x1dGVQb3NlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIERlcHJlY2F0ZWQuIFVzZSBlaXRoZXIge0BsaW5rIGdldFJhd1Bvc2V9IG9yIHtAbGluayBnZXROb3JtYWxpemVkUG9zZX0gaW5zdGVhZC5cbiAgICAgKi9cbiAgICBnZXRQb3NlKCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTUh1bWFub2lkOiBnZXRQb3NlKCkgaXMgZGVwcmVjYXRlZC4gVXNlIGVpdGhlciBnZXRSYXdQb3NlKCkgb3IgZ2V0Tm9ybWFsaXplZFBvc2UoKSBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRSYXdQb3NlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgY3VycmVudCBwb3NlIG9mIHJhdyBodW1hbiBib25lcyBhcyBhIHtAbGluayBWUk1Qb3NlfS5cbiAgICAgKlxuICAgICAqIEVhY2ggdHJhbnNmb3JtIGlzIGEgbG9jYWwgdHJhbnNmb3JtIHJlbGF0aXZlIGZyb20gcmVzdCBwb3NlIChULXBvc2UpLlxuICAgICAqL1xuICAgIGdldFJhd1Bvc2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYXdIdW1hbkJvbmVzLmdldFBvc2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIHRoZSBjdXJyZW50IHBvc2Ugb2Ygbm9ybWFsaXplZCBodW1hbiBib25lcyBhcyBhIHtAbGluayBWUk1Qb3NlfS5cbiAgICAgKlxuICAgICAqIEVhY2ggdHJhbnNmb3JtIGlzIGEgbG9jYWwgdHJhbnNmb3JtIHJlbGF0aXZlIGZyb20gcmVzdCBwb3NlIChULXBvc2UpLlxuICAgICAqL1xuICAgIGdldE5vcm1hbGl6ZWRQb3NlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplZEh1bWFuQm9uZXMuZ2V0UG9zZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBEZXByZWNhdGVkLiBVc2UgZWl0aGVyIHtAbGluayBzZXRSYXdQb3NlfSBvciB7QGxpbmsgc2V0Tm9ybWFsaXplZFBvc2V9IGluc3RlYWQuXG4gICAgICovXG4gICAgc2V0UG9zZShwb3NlT2JqZWN0KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignVlJNSHVtYW5vaWQ6IHNldFBvc2UoKSBpcyBkZXByZWNhdGVkLiBVc2UgZWl0aGVyIHNldFJhd1Bvc2UoKSBvciBzZXROb3JtYWxpemVkUG9zZSgpIGluc3RlYWQuJyk7XG4gICAgICAgIHJldHVybiB0aGlzLnNldFJhd1Bvc2UocG9zZU9iamVjdCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIExldCB0aGUgcmF3IGh1bWFuIGJvbmVzIGRvIGEgc3BlY2lmaWVkIHBvc2UuXG4gICAgICpcbiAgICAgKiBFYWNoIHRyYW5zZm9ybSBoYXZlIHRvIGJlIGEgbG9jYWwgdHJhbnNmb3JtIHJlbGF0aXZlIGZyb20gcmVzdCBwb3NlIChULXBvc2UpLlxuICAgICAqIFlvdSBjYW4gcGFzcyB3aGF0IHlvdSBnb3QgZnJvbSB7QGxpbmsgZ2V0UmF3UG9zZX0uXG4gICAgICpcbiAgICAgKiBJZiB5b3UgYXJlIHVzaW5nIHtAbGluayBhdXRvVXBkYXRlSHVtYW5Cb25lc30sIHlvdSBtaWdodCB3YW50IHRvIHVzZSB7QGxpbmsgc2V0Tm9ybWFsaXplZFBvc2V9IGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcG9zZU9iamVjdCBBIHtAbGluayBWUk1Qb3NlfSB0aGF0IHJlcHJlc2VudHMgYSBzaW5nbGUgcG9zZVxuICAgICAqL1xuICAgIHNldFJhd1Bvc2UocG9zZU9iamVjdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmF3SHVtYW5Cb25lcy5zZXRQb3NlKHBvc2VPYmplY3QpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBMZXQgdGhlIG5vcm1hbGl6ZWQgaHVtYW4gYm9uZXMgZG8gYSBzcGVjaWZpZWQgcG9zZS5cbiAgICAgKlxuICAgICAqIEVhY2ggdHJhbnNmb3JtIGhhdmUgdG8gYmUgYSBsb2NhbCB0cmFuc2Zvcm0gcmVsYXRpdmUgZnJvbSByZXN0IHBvc2UgKFQtcG9zZSkuXG4gICAgICogWW91IGNhbiBwYXNzIHdoYXQgeW91IGdvdCBmcm9tIHtAbGluayBnZXROb3JtYWxpemVkUG9zZX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcG9zZU9iamVjdCBBIHtAbGluayBWUk1Qb3NlfSB0aGF0IHJlcHJlc2VudHMgYSBzaW5nbGUgcG9zZVxuICAgICAqL1xuICAgIHNldE5vcm1hbGl6ZWRQb3NlKHBvc2VPYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vcm1hbGl6ZWRIdW1hbkJvbmVzLnNldFBvc2UocG9zZU9iamVjdCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIERlcHJlY2F0ZWQuIFVzZSBlaXRoZXIge0BsaW5rIHJlc2V0UmF3UG9zZX0gb3Ige0BsaW5rIHJlc2V0Tm9ybWFsaXplZFBvc2V9IGluc3RlYWQuXG4gICAgICovXG4gICAgcmVzZXRQb3NlKCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTUh1bWFub2lkOiByZXNldFBvc2UoKSBpcyBkZXByZWNhdGVkLiBVc2UgZWl0aGVyIHJlc2V0UmF3UG9zZSgpIG9yIHJlc2V0Tm9ybWFsaXplZFBvc2UoKSBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNldFJhd1Bvc2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVzZXQgdGhlIHJhdyBodW1hbm9pZCB0byBpdHMgcmVzdCBwb3NlLlxuICAgICAqXG4gICAgICogSWYgeW91IGFyZSB1c2luZyB7QGxpbmsgYXV0b1VwZGF0ZUh1bWFuQm9uZXN9LCB5b3UgbWlnaHQgd2FudCB0byB1c2Uge0BsaW5rIHJlc2V0Tm9ybWFsaXplZFBvc2V9IGluc3RlYWQuXG4gICAgICovXG4gICAgcmVzZXRSYXdQb3NlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmF3SHVtYW5Cb25lcy5yZXNldFBvc2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVzZXQgdGhlIG5vcm1hbGl6ZWQgaHVtYW5vaWQgdG8gaXRzIHJlc3QgcG9zZS5cbiAgICAgKi9cbiAgICByZXNldE5vcm1hbGl6ZWRQb3NlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplZEh1bWFuQm9uZXMucmVzZXRQb3NlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIERlcHJlY2F0ZWQuIFVzZSBlaXRoZXIge0BsaW5rIGdldFJhd0JvbmV9IG9yIHtAbGluayBnZXROb3JtYWxpemVkQm9uZX0gaW5zdGVhZC5cbiAgICAgKi9cbiAgICBnZXRCb25lKG5hbWUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdWUk1IdW1hbm9pZDogZ2V0Qm9uZSgpIGlzIGRlcHJlY2F0ZWQuIFVzZSBlaXRoZXIgZ2V0UmF3Qm9uZSgpIG9yIGdldE5vcm1hbGl6ZWRCb25lKCkgaW5zdGVhZC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UmF3Qm9uZShuYW1lKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgcmF3IHtAbGluayBWUk1IdW1hbkJvbmV9IGJvdW5kIHRvIGEgc3BlY2lmaWVkIHtAbGluayBWUk1IdW1hbkJvbmVOYW1lfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIGJvbmUgeW91IHdhbnRcbiAgICAgKi9cbiAgICBnZXRSYXdCb25lKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jhd0h1bWFuQm9uZXMuZ2V0Qm9uZShuYW1lKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgbm9ybWFsaXplZCB7QGxpbmsgVlJNSHVtYW5Cb25lfSBib3VuZCB0byBhIHNwZWNpZmllZCB7QGxpbmsgVlJNSHVtYW5Cb25lTmFtZX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBib25lIHlvdSB3YW50XG4gICAgICovXG4gICAgZ2V0Tm9ybWFsaXplZEJvbmUobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplZEh1bWFuQm9uZXMuZ2V0Qm9uZShuYW1lKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgRGVwcmVjYXRlZC4gVXNlIGVpdGhlciB7QGxpbmsgZ2V0UmF3Qm9uZU5vZGV9IG9yIHtAbGluayBnZXROb3JtYWxpemVkQm9uZU5vZGV9IGluc3RlYWQuXG4gICAgICovXG4gICAgZ2V0Qm9uZU5vZGUobmFtZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTUh1bWFub2lkOiBnZXRCb25lTm9kZSgpIGlzIGRlcHJlY2F0ZWQuIFVzZSBlaXRoZXIgZ2V0UmF3Qm9uZU5vZGUoKSBvciBnZXROb3JtYWxpemVkQm9uZU5vZGUoKSBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRSYXdCb25lTm9kZShuYW1lKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgcmF3IGJvbmUgYXMgYSBgVEhSRUUuT2JqZWN0M0RgIGJvdW5kIHRvIGEgc3BlY2lmaWVkIHtAbGluayBWUk1IdW1hbkJvbmVOYW1lfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIGJvbmUgeW91IHdhbnRcbiAgICAgKi9cbiAgICBnZXRSYXdCb25lTm9kZShuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYXdIdW1hbkJvbmVzLmdldEJvbmVOb2RlKG5hbWUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBub3JtYWxpemVkIGJvbmUgYXMgYSBgVEhSRUUuT2JqZWN0M0RgIGJvdW5kIHRvIGEgc3BlY2lmaWVkIHtAbGluayBWUk1IdW1hbkJvbmVOYW1lfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIGJvbmUgeW91IHdhbnRcbiAgICAgKi9cbiAgICBnZXROb3JtYWxpemVkQm9uZU5vZGUobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplZEh1bWFuQm9uZXMuZ2V0Qm9uZU5vZGUobmFtZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgaHVtYW5vaWQgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogSWYge0BsaW5rIGF1dG9VcGRhdGVIdW1hbkJvbmVzfSBpcyBgdHJ1ZWAsIGl0IHRyYW5zZmVycyB0aGUgcG9zZSBvZiBub3JtYWxpemVkIGh1bWFuIGJvbmVzIHRvIHJhdyBodW1hbiBib25lcy5cbiAgICAgKi9cbiAgICB1cGRhdGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9VcGRhdGVIdW1hbkJvbmVzKSB7XG4gICAgICAgICAgICB0aGlzLl9ub3JtYWxpemVkSHVtYW5Cb25lcy51cGRhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5jb25zdCBWUk1SZXF1aXJlZEh1bWFuQm9uZU5hbWUgPSB7XG4gICAgSGlwczogJ2hpcHMnLFxuICAgIFNwaW5lOiAnc3BpbmUnLFxuICAgIEhlYWQ6ICdoZWFkJyxcbiAgICBMZWZ0VXBwZXJMZWc6ICdsZWZ0VXBwZXJMZWcnLFxuICAgIExlZnRMb3dlckxlZzogJ2xlZnRMb3dlckxlZycsXG4gICAgTGVmdEZvb3Q6ICdsZWZ0Rm9vdCcsXG4gICAgUmlnaHRVcHBlckxlZzogJ3JpZ2h0VXBwZXJMZWcnLFxuICAgIFJpZ2h0TG93ZXJMZWc6ICdyaWdodExvd2VyTGVnJyxcbiAgICBSaWdodEZvb3Q6ICdyaWdodEZvb3QnLFxuICAgIExlZnRVcHBlckFybTogJ2xlZnRVcHBlckFybScsXG4gICAgTGVmdExvd2VyQXJtOiAnbGVmdExvd2VyQXJtJyxcbiAgICBMZWZ0SGFuZDogJ2xlZnRIYW5kJyxcbiAgICBSaWdodFVwcGVyQXJtOiAncmlnaHRVcHBlckFybScsXG4gICAgUmlnaHRMb3dlckFybTogJ3JpZ2h0TG93ZXJBcm0nLFxuICAgIFJpZ2h0SGFuZDogJ3JpZ2h0SGFuZCcsXG59O1xuXG4vKipcbiAqIFBvc3NpYmxlIHNwZWMgdmVyc2lvbnMgaXQgcmVjb2duaXplcy5cbiAqL1xuY29uc3QgUE9TU0lCTEVfU1BFQ19WRVJTSU9OUyQyID0gbmV3IFNldChbJzEuMCcsICcxLjAtYmV0YSddKTtcbi8qKlxuICogQSBtYXAgZnJvbSBvbGQgdGh1bWIgYm9uZSBuYW1lcyB0byBuZXcgdGh1bWIgYm9uZSBuYW1lc1xuICovXG5jb25zdCB0aHVtYkJvbmVOYW1lTWFwID0ge1xuICAgIGxlZnRUaHVtYlByb3hpbWFsOiAnbGVmdFRodW1iTWV0YWNhcnBhbCcsXG4gICAgbGVmdFRodW1iSW50ZXJtZWRpYXRlOiAnbGVmdFRodW1iUHJveGltYWwnLFxuICAgIHJpZ2h0VGh1bWJQcm94aW1hbDogJ3JpZ2h0VGh1bWJNZXRhY2FycGFsJyxcbiAgICByaWdodFRodW1iSW50ZXJtZWRpYXRlOiAncmlnaHRUaHVtYlByb3hpbWFsJyxcbn07XG4vKipcbiAqIEEgcGx1Z2luIG9mIEdMVEZMb2FkZXIgdGhhdCBpbXBvcnRzIGEge0BsaW5rIFZSTUh1bWFub2lkfSBmcm9tIGEgVlJNIGV4dGVuc2lvbiBvZiBhIEdMVEYuXG4gKi9cbmNsYXNzIFZSTUh1bWFub2lkTG9hZGVyUGx1Z2luIHtcbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgICAgLy8gV2Ugc2hvdWxkIHVzZSB0aGUgZXh0ZW5zaW9uIG5hbWUgaW5zdGVhZCBidXQgd2UgaGF2ZSBtdWx0aXBsZSBwbHVnaW5zIGZvciBhbiBleHRlbnNpb24uLi5cbiAgICAgICAgcmV0dXJuICdWUk1IdW1hbm9pZExvYWRlclBsdWdpbic7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhcnNlciwgb3B0aW9ucykge1xuICAgICAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICAgICAgdGhpcy5oZWxwZXJSb290ID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmhlbHBlclJvb3Q7XG4gICAgICAgIHRoaXMuYXV0b1VwZGF0ZUh1bWFuQm9uZXMgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYXV0b1VwZGF0ZUh1bWFuQm9uZXM7XG4gICAgfVxuICAgIGFmdGVyUm9vdChnbHRmKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBnbHRmLnVzZXJEYXRhLnZybUh1bWFub2lkID0geWllbGQgdGhpcy5faW1wb3J0KGdsdGYpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW1wb3J0IGEge0BsaW5rIFZSTUh1bWFub2lkfSBmcm9tIGEgVlJNLlxuICAgICAqXG4gICAgICogQHBhcmFtIGdsdGYgQSBwYXJzZWQgcmVzdWx0IG9mIEdMVEYgdGFrZW4gZnJvbSBHTFRGTG9hZGVyXG4gICAgICovXG4gICAgX2ltcG9ydChnbHRmKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCB2MVJlc3VsdCA9IHlpZWxkIHRoaXMuX3YxSW1wb3J0KGdsdGYpO1xuICAgICAgICAgICAgaWYgKHYxUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHYxUmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdjBSZXN1bHQgPSB5aWVsZCB0aGlzLl92MEltcG9ydChnbHRmKTtcbiAgICAgICAgICAgIGlmICh2MFJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2MFJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX3YxSW1wb3J0KGdsdGYpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnBhcnNlci5qc29uO1xuICAgICAgICAgICAgLy8gZWFybHkgYWJvcnQgaWYgaXQgZG9lc24ndCB1c2UgdnJtXG4gICAgICAgICAgICBjb25zdCBpc1ZSTVVzZWQgPSAoKF9hID0ganNvbi5leHRlbnNpb25zVXNlZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmluZGV4T2YoJ1ZSTUNfdnJtJykpICE9PSAtMTtcbiAgICAgICAgICAgIGlmICghaXNWUk1Vc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSAoX2IgPSBqc29uLmV4dGVuc2lvbnMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYlsnVlJNQ192cm0nXTtcbiAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzcGVjVmVyc2lvbiA9IGV4dGVuc2lvbi5zcGVjVmVyc2lvbjtcbiAgICAgICAgICAgIGlmICghUE9TU0lCTEVfU1BFQ19WRVJTSU9OUyQyLmhhcyhzcGVjVmVyc2lvbikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFZSTUh1bWFub2lkTG9hZGVyUGx1Z2luOiBVbmtub3duIFZSTUNfdnJtIHNwZWNWZXJzaW9uIFwiJHtzcGVjVmVyc2lvbn1cImApO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2NoZW1hSHVtYW5vaWQgPSBleHRlbnNpb24uaHVtYW5vaWQ7XG4gICAgICAgICAgICBpZiAoIXNjaGVtYUh1bWFub2lkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIGNvbXBhdDogMS4wLWJldGEgdGh1bWIgYm9uZSBuYW1lc1xuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIGB0cnVlYCBpZiBgbGVmdFRodW1iSW50ZXJtZWRpYXRlYCBvciBgcmlnaHRUaHVtYkludGVybWVkaWF0ZWAgZXhpc3RzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnN0IGV4aXN0c1ByZXZpb3VzVGh1bWJOYW1lID0gc2NoZW1hSHVtYW5vaWQuaHVtYW5Cb25lcy5sZWZ0VGh1bWJJbnRlcm1lZGlhdGUgIT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgIHNjaGVtYUh1bWFub2lkLmh1bWFuQm9uZXMucmlnaHRUaHVtYkludGVybWVkaWF0ZSAhPSBudWxsO1xuICAgICAgICAgICAgY29uc3QgaHVtYW5Cb25lcyA9IHt9O1xuICAgICAgICAgICAgaWYgKHNjaGVtYUh1bWFub2lkLmh1bWFuQm9uZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKHNjaGVtYUh1bWFub2lkLmh1bWFuQm9uZXMpLm1hcCgoW2JvbmVOYW1lU3RyaW5nLCBzY2hlbWFIdW1hbkJvbmVdKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBib25lTmFtZSA9IGJvbmVOYW1lU3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHNjaGVtYUh1bWFuQm9uZS5ub2RlO1xuICAgICAgICAgICAgICAgICAgICAvLyBjb21wYXQ6IDEuMC1iZXRhIHByZXZpb3VzIHRodW1iIGJvbmUgbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0c1ByZXZpb3VzVGh1bWJOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aHVtYkJvbmVOYW1lID0gdGh1bWJCb25lTmFtZU1hcFtib25lTmFtZV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGh1bWJCb25lTmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9uZU5hbWUgPSB0aHVtYkJvbmVOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB5aWVsZCB0aGlzLnBhcnNlci5nZXREZXBlbmRlbmN5KCdub2RlJywgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgc3BlY2lmaWVkIG5vZGUgZG9lcyBub3QgZXhpc3QsIGVtaXQgYSB3YXJuaW5nXG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgQSBnbFRGIG5vZGUgYm91bmQgdG8gdGhlIGh1bWFub2lkIGJvbmUgJHtib25lTmFtZX0gKGluZGV4ID0gJHtpbmRleH0pIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIHRoZSBgaHVtYW5Cb25lc2BcbiAgICAgICAgICAgICAgICAgICAgaHVtYW5Cb25lc1tib25lTmFtZV0gPSB7IG5vZGUgfTtcbiAgICAgICAgICAgICAgICB9KSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaHVtYW5vaWQgPSBuZXcgVlJNSHVtYW5vaWQodGhpcy5fZW5zdXJlUmVxdWlyZWRCb25lc0V4aXN0KGh1bWFuQm9uZXMpLCB7XG4gICAgICAgICAgICAgICAgYXV0b1VwZGF0ZUh1bWFuQm9uZXM6IHRoaXMuYXV0b1VwZGF0ZUh1bWFuQm9uZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGdsdGYuc2NlbmUuYWRkKGh1bWFub2lkLm5vcm1hbGl6ZWRIdW1hbkJvbmVzUm9vdCk7XG4gICAgICAgICAgICBpZiAodGhpcy5oZWxwZXJSb290KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVscGVyID0gbmV3IFZSTUh1bWFub2lkSGVscGVyKGh1bWFub2lkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhlbHBlclJvb3QuYWRkKGhlbHBlcik7XG4gICAgICAgICAgICAgICAgaGVscGVyLnJlbmRlck9yZGVyID0gdGhpcy5oZWxwZXJSb290LnJlbmRlck9yZGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGh1bWFub2lkO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX3YwSW1wb3J0KGdsdGYpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QganNvbiA9IHRoaXMucGFyc2VyLmpzb247XG4gICAgICAgICAgICBjb25zdCB2cm1FeHQgPSAoX2EgPSBqc29uLmV4dGVuc2lvbnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5WUk07XG4gICAgICAgICAgICBpZiAoIXZybUV4dCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2NoZW1hSHVtYW5vaWQgPSB2cm1FeHQuaHVtYW5vaWQ7XG4gICAgICAgICAgICBpZiAoIXNjaGVtYUh1bWFub2lkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBodW1hbkJvbmVzID0ge307XG4gICAgICAgICAgICBpZiAoc2NoZW1hSHVtYW5vaWQuaHVtYW5Cb25lcyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgUHJvbWlzZS5hbGwoc2NoZW1hSHVtYW5vaWQuaHVtYW5Cb25lcy5tYXAoKGJvbmUpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9uZU5hbWUgPSBib25lLmJvbmU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gYm9uZS5ub2RlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYm9uZU5hbWUgPT0gbnVsbCB8fCBpbmRleCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHlpZWxkIHRoaXMucGFyc2VyLmdldERlcGVuZGVuY3koJ25vZGUnLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBzcGVjaWZpZWQgbm9kZSBkb2VzIG5vdCBleGlzdCwgZW1pdCBhIHdhcm5pbmdcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBBIGdsVEYgbm9kZSBib3VuZCB0byB0aGUgaHVtYW5vaWQgYm9uZSAke2JvbmVOYW1lfSAoaW5kZXggPSAke2luZGV4fSkgZG9lcyBub3QgZXhpc3RgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBtYXAgdG8gbmV3IGJvbmUgbmFtZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aHVtYkJvbmVOYW1lID0gdGh1bWJCb25lTmFtZU1hcFtib25lTmFtZV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0JvbmVOYW1lID0gKHRodW1iQm9uZU5hbWUgIT09IG51bGwgJiYgdGh1bWJCb25lTmFtZSAhPT0gdm9pZCAwID8gdGh1bWJCb25lTmFtZSA6IGJvbmVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdjAgVlJNcyBtaWdodCBoYXZlIGEgbXVsdGlwbGUgbm9kZXMgYXR0YWNoZWQgdG8gYSBzaW5nbGUgYm9uZS4uLlxuICAgICAgICAgICAgICAgICAgICAvLyBzbyBpZiB0aGVyZSBhbHJlYWR5IGlzIGFuIGVudHJ5IGluIHRoZSBgaHVtYW5Cb25lc2AsIHNob3cgYSB3YXJuaW5nIGFuZCBpZ25vcmUgaXRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGh1bWFuQm9uZXNbbmV3Qm9uZU5hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgTXVsdGlwbGUgYm9uZSBlbnRyaWVzIGZvciAke25ld0JvbmVOYW1lfSBkZXRlY3RlZCAoaW5kZXggPSAke2luZGV4fSksIGlnbm9yaW5nIGR1cGxpY2F0ZWQgZW50cmllcy5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gdGhlIGBodW1hbkJvbmVzYFxuICAgICAgICAgICAgICAgICAgICBodW1hbkJvbmVzW25ld0JvbmVOYW1lXSA9IHsgbm9kZSB9O1xuICAgICAgICAgICAgICAgIH0pKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBodW1hbm9pZCA9IG5ldyBWUk1IdW1hbm9pZCh0aGlzLl9lbnN1cmVSZXF1aXJlZEJvbmVzRXhpc3QoaHVtYW5Cb25lcyksIHtcbiAgICAgICAgICAgICAgICBhdXRvVXBkYXRlSHVtYW5Cb25lczogdGhpcy5hdXRvVXBkYXRlSHVtYW5Cb25lcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZ2x0Zi5zY2VuZS5hZGQoaHVtYW5vaWQubm9ybWFsaXplZEh1bWFuQm9uZXNSb290KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmhlbHBlclJvb3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWxwZXIgPSBuZXcgVlJNSHVtYW5vaWRIZWxwZXIoaHVtYW5vaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuaGVscGVyUm9vdC5hZGQoaGVscGVyKTtcbiAgICAgICAgICAgICAgICBoZWxwZXIucmVuZGVyT3JkZXIgPSB0aGlzLmhlbHBlclJvb3QucmVuZGVyT3JkZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaHVtYW5vaWQ7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbnN1cmUgcmVxdWlyZWQgYm9uZXMgZXhpc3QgaW4gZ2l2ZW4gaHVtYW4gYm9uZXMuXG4gICAgICogQHBhcmFtIGh1bWFuQm9uZXMgSHVtYW4gYm9uZXNcbiAgICAgKiBAcmV0dXJucyBIdW1hbiBib25lcywgbm8gbG9uZ2VyIHBhcnRpYWwhXG4gICAgICovXG4gICAgX2Vuc3VyZVJlcXVpcmVkQm9uZXNFeGlzdChodW1hbkJvbmVzKSB7XG4gICAgICAgIC8vIGVuc3VyZSByZXF1aXJlZCBib25lcyBleGlzdFxuICAgICAgICBjb25zdCBtaXNzaW5nUmVxdWlyZWRCb25lcyA9IE9iamVjdC52YWx1ZXMoVlJNUmVxdWlyZWRIdW1hbkJvbmVOYW1lKS5maWx0ZXIoKHJlcXVpcmVkQm9uZU5hbWUpID0+IGh1bWFuQm9uZXNbcmVxdWlyZWRCb25lTmFtZV0gPT0gbnVsbCk7XG4gICAgICAgIC8vIHRocm93IGFuIGVycm9yIGlmIHRoZXJlIGFyZSBtaXNzaW5nIGJvbmVzXG4gICAgICAgIGlmIChtaXNzaW5nUmVxdWlyZWRCb25lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFZSTUh1bWFub2lkTG9hZGVyUGx1Z2luOiBUaGVzZSBodW1hbm9pZCBib25lcyBhcmUgcmVxdWlyZWQgYnV0IG5vdCBleGlzdDogJHttaXNzaW5nUmVxdWlyZWRCb25lcy5qb2luKCcsICcpfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBodW1hbkJvbmVzO1xuICAgIH1cbn1cblxuY2xhc3MgRmFuQnVmZmVyR2VvbWV0cnkgZXh0ZW5kcyBUSFJFRS5CdWZmZXJHZW9tZXRyeSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRUaGV0YSA9IDA7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRSYWRpdXMgPSAwO1xuICAgICAgICB0aGlzLnRoZXRhID0gMC4wO1xuICAgICAgICB0aGlzLnJhZGl1cyA9IDAuMDtcbiAgICAgICAgdGhpcy5fY3VycmVudFRoZXRhID0gMC4wO1xuICAgICAgICB0aGlzLl9jdXJyZW50UmFkaXVzID0gMC4wO1xuICAgICAgICB0aGlzLl9hdHRyUG9zID0gbmV3IFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZShuZXcgRmxvYXQzMkFycmF5KDY1ICogMyksIDMpO1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCB0aGlzLl9hdHRyUG9zKTtcbiAgICAgICAgdGhpcy5fYXR0ckluZGV4ID0gbmV3IFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZShuZXcgVWludDE2QXJyYXkoMyAqIDYzKSwgMSk7XG4gICAgICAgIHRoaXMuc2V0SW5kZXgodGhpcy5fYXR0ckluZGV4KTtcbiAgICAgICAgdGhpcy5fYnVpbGRJbmRleCgpO1xuICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH1cbiAgICB1cGRhdGUoKSB7XG4gICAgICAgIGxldCBzaG91bGRVcGRhdGVHZW9tZXRyeSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudFRoZXRhICE9PSB0aGlzLnRoZXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50VGhldGEgPSB0aGlzLnRoZXRhO1xuICAgICAgICAgICAgc2hvdWxkVXBkYXRlR2VvbWV0cnkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50UmFkaXVzICE9PSB0aGlzLnJhZGl1cykge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFJhZGl1cyA9IHRoaXMucmFkaXVzO1xuICAgICAgICAgICAgc2hvdWxkVXBkYXRlR2VvbWV0cnkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaG91bGRVcGRhdGVHZW9tZXRyeSkge1xuICAgICAgICAgICAgdGhpcy5fYnVpbGRQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9idWlsZFBvc2l0aW9uKCkge1xuICAgICAgICB0aGlzLl9hdHRyUG9zLnNldFhZWigwLCAwLjAsIDAuMCwgMC4wKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2NDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gKGkgLyA2My4wKSAqIHRoaXMuX2N1cnJlbnRUaGV0YTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJQb3Muc2V0WFlaKGkgKyAxLCB0aGlzLl9jdXJyZW50UmFkaXVzICogTWF0aC5zaW4odCksIDAuMCwgdGhpcy5fY3VycmVudFJhZGl1cyAqIE1hdGguY29zKHQpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hdHRyUG9zLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgX2J1aWxkSW5kZXgoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNjM7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5fYXR0ckluZGV4LnNldFhZWihpICogMywgMCwgaSArIDEsIGkgKyAyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hdHRySW5kZXgubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIH1cbn1cblxuY2xhc3MgTGluZUFuZFNwaGVyZUJ1ZmZlckdlb21ldHJ5IGV4dGVuZHMgVEhSRUUuQnVmZmVyR2VvbWV0cnkge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnJhZGl1cyA9IDAuMDtcbiAgICAgICAgdGhpcy5fY3VycmVudFJhZGl1cyA9IDAuMDtcbiAgICAgICAgdGhpcy50YWlsID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICAgICAgdGhpcy5fY3VycmVudFRhaWwgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICB0aGlzLl9hdHRyUG9zID0gbmV3IFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZShuZXcgRmxvYXQzMkFycmF5KDI5NCksIDMpO1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCB0aGlzLl9hdHRyUG9zKTtcbiAgICAgICAgdGhpcy5fYXR0ckluZGV4ID0gbmV3IFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZShuZXcgVWludDE2QXJyYXkoMTk0KSwgMSk7XG4gICAgICAgIHRoaXMuc2V0SW5kZXgodGhpcy5fYXR0ckluZGV4KTtcbiAgICAgICAgdGhpcy5fYnVpbGRJbmRleCgpO1xuICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH1cbiAgICB1cGRhdGUoKSB7XG4gICAgICAgIGxldCBzaG91bGRVcGRhdGVHZW9tZXRyeSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudFJhZGl1cyAhPT0gdGhpcy5yYWRpdXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRSYWRpdXMgPSB0aGlzLnJhZGl1cztcbiAgICAgICAgICAgIHNob3VsZFVwZGF0ZUdlb21ldHJ5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2N1cnJlbnRUYWlsLmVxdWFscyh0aGlzLnRhaWwpKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50VGFpbC5jb3B5KHRoaXMudGFpbCk7XG4gICAgICAgICAgICBzaG91bGRVcGRhdGVHZW9tZXRyeSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZUdlb21ldHJ5KSB7XG4gICAgICAgICAgICB0aGlzLl9idWlsZFBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2J1aWxkUG9zaXRpb24oKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzI7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdCA9IChpIC8gMTYuMCkgKiBNYXRoLlBJO1xuICAgICAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooaSwgTWF0aC5jb3ModCksIE1hdGguc2luKHQpLCAwLjApO1xuICAgICAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooMzIgKyBpLCAwLjAsIE1hdGguY29zKHQpLCBNYXRoLnNpbih0KSk7XG4gICAgICAgICAgICB0aGlzLl9hdHRyUG9zLnNldFhZWig2NCArIGksIE1hdGguc2luKHQpLCAwLjAsIE1hdGguY29zKHQpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNjYWxlKHRoaXMuX2N1cnJlbnRSYWRpdXMsIHRoaXMuX2N1cnJlbnRSYWRpdXMsIHRoaXMuX2N1cnJlbnRSYWRpdXMpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZSh0aGlzLl9jdXJyZW50VGFpbC54LCB0aGlzLl9jdXJyZW50VGFpbC55LCB0aGlzLl9jdXJyZW50VGFpbC56KTtcbiAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooOTYsIDAsIDAsIDApO1xuICAgICAgICB0aGlzLl9hdHRyUG9zLnNldFhZWig5NywgdGhpcy5fY3VycmVudFRhaWwueCwgdGhpcy5fY3VycmVudFRhaWwueSwgdGhpcy5fY3VycmVudFRhaWwueik7XG4gICAgICAgIHRoaXMuX2F0dHJQb3MubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIH1cbiAgICBfYnVpbGRJbmRleCgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzMjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpMSA9IChpICsgMSkgJSAzMjtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJJbmRleC5zZXRYWShpICogMiwgaSwgaTEpO1xuICAgICAgICAgICAgdGhpcy5fYXR0ckluZGV4LnNldFhZKDY0ICsgaSAqIDIsIDMyICsgaSwgMzIgKyBpMSk7XG4gICAgICAgICAgICB0aGlzLl9hdHRySW5kZXguc2V0WFkoMTI4ICsgaSAqIDIsIDY0ICsgaSwgNjQgKyBpMSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYXR0ckluZGV4LnNldFhZKDE5MiwgOTYsIDk3KTtcbiAgICAgICAgdGhpcy5fYXR0ckluZGV4Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG59XG5cbmNvbnN0IF9xdWF0QSQyID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IF9xdWF0QiQyID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IF92M0EkMSA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jb25zdCBfdjNCJDEgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgU1FSVF8yX09WRVJfMiA9IE1hdGguc3FydCgyLjApIC8gMi4wO1xuY29uc3QgUVVBVF9YWV9DVzkwID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oMCwgMCwgLVNRUlRfMl9PVkVSXzIsIFNRUlRfMl9PVkVSXzIpO1xuY29uc3QgVkVDM19QT1NJVElWRV9ZID0gbmV3IFRIUkVFLlZlY3RvcjMoMC4wLCAxLjAsIDAuMCk7XG5jbGFzcyBWUk1Mb29rQXRIZWxwZXIgZXh0ZW5kcyBUSFJFRS5Hcm91cCB7XG4gICAgY29uc3RydWN0b3IobG9va0F0KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnZybUxvb2tBdCA9IGxvb2tBdDtcbiAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgRmFuQnVmZmVyR2VvbWV0cnkoKTtcbiAgICAgICAgICAgIGdlb21ldHJ5LnJhZGl1cyA9IDAuNTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IFRIUkVFLk1lc2hCYXNpY01hdGVyaWFsKHtcbiAgICAgICAgICAgICAgICBjb2xvcjogMHgwMGZmMDAsXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC41LFxuICAgICAgICAgICAgICAgIHNpZGU6IFRIUkVFLkRvdWJsZVNpZGUsXG4gICAgICAgICAgICAgICAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXB0aFdyaXRlOiBmYWxzZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fbWVzaFBpdGNoID0gbmV3IFRIUkVFLk1lc2goZ2VvbWV0cnksIG1hdGVyaWFsKTtcbiAgICAgICAgICAgIHRoaXMuYWRkKHRoaXMuX21lc2hQaXRjaCk7XG4gICAgICAgIH1cbiAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgRmFuQnVmZmVyR2VvbWV0cnkoKTtcbiAgICAgICAgICAgIGdlb21ldHJ5LnJhZGl1cyA9IDAuNTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IFRIUkVFLk1lc2hCYXNpY01hdGVyaWFsKHtcbiAgICAgICAgICAgICAgICBjb2xvcjogMHhmZjAwMDAsXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC41LFxuICAgICAgICAgICAgICAgIHNpZGU6IFRIUkVFLkRvdWJsZVNpZGUsXG4gICAgICAgICAgICAgICAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXB0aFdyaXRlOiBmYWxzZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fbWVzaFlhdyA9IG5ldyBUSFJFRS5NZXNoKGdlb21ldHJ5LCBtYXRlcmlhbCk7XG4gICAgICAgICAgICB0aGlzLmFkZCh0aGlzLl9tZXNoWWF3KTtcbiAgICAgICAgfVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBMaW5lQW5kU3BoZXJlQnVmZmVyR2VvbWV0cnkoKTtcbiAgICAgICAgICAgIGdlb21ldHJ5LnJhZGl1cyA9IDAuMTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IFRIUkVFLkxpbmVCYXNpY01hdGVyaWFsKHtcbiAgICAgICAgICAgICAgICBjb2xvcjogMHhmZmZmZmYsXG4gICAgICAgICAgICAgICAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXB0aFdyaXRlOiBmYWxzZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fbGluZVRhcmdldCA9IG5ldyBUSFJFRS5MaW5lU2VnbWVudHMoZ2VvbWV0cnksIG1hdGVyaWFsKTtcbiAgICAgICAgICAgIHRoaXMuX2xpbmVUYXJnZXQuZnJ1c3R1bUN1bGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5hZGQodGhpcy5fbGluZVRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGlzcG9zZSgpIHtcbiAgICAgICAgdGhpcy5fbWVzaFlhdy5nZW9tZXRyeS5kaXNwb3NlKCk7XG4gICAgICAgIHRoaXMuX21lc2hZYXcubWF0ZXJpYWwuZGlzcG9zZSgpO1xuICAgICAgICB0aGlzLl9tZXNoUGl0Y2guZ2VvbWV0cnkuZGlzcG9zZSgpO1xuICAgICAgICB0aGlzLl9tZXNoUGl0Y2gubWF0ZXJpYWwuZGlzcG9zZSgpO1xuICAgICAgICB0aGlzLl9saW5lVGFyZ2V0Lmdlb21ldHJ5LmRpc3Bvc2UoKTtcbiAgICAgICAgdGhpcy5fbGluZVRhcmdldC5tYXRlcmlhbC5kaXNwb3NlKCk7XG4gICAgfVxuICAgIHVwZGF0ZU1hdHJpeFdvcmxkKGZvcmNlKSB7XG4gICAgICAgIC8vIHVwZGF0ZSBnZW9tZXRyaWVzXG4gICAgICAgIGNvbnN0IHlhdyA9IFRIUkVFLk1hdGhVdGlscy5ERUcyUkFEICogdGhpcy52cm1Mb29rQXQueWF3O1xuICAgICAgICB0aGlzLl9tZXNoWWF3Lmdlb21ldHJ5LnRoZXRhID0geWF3O1xuICAgICAgICB0aGlzLl9tZXNoWWF3Lmdlb21ldHJ5LnVwZGF0ZSgpO1xuICAgICAgICBjb25zdCBwaXRjaCA9IFRIUkVFLk1hdGhVdGlscy5ERUcyUkFEICogdGhpcy52cm1Mb29rQXQucGl0Y2g7XG4gICAgICAgIHRoaXMuX21lc2hQaXRjaC5nZW9tZXRyeS50aGV0YSA9IHBpdGNoO1xuICAgICAgICB0aGlzLl9tZXNoUGl0Y2guZ2VvbWV0cnkudXBkYXRlKCk7XG4gICAgICAgIC8vIGdldCB3b3JsZCBwb3NpdGlvbiBhbmQgcXVhdGVybmlvblxuICAgICAgICB0aGlzLnZybUxvb2tBdC5nZXRMb29rQXRXb3JsZFBvc2l0aW9uKF92M0EkMSk7XG4gICAgICAgIHRoaXMudnJtTG9va0F0LmdldExvb2tBdFdvcmxkUXVhdGVybmlvbihfcXVhdEEkMik7XG4gICAgICAgIC8vIGNhbGN1bGF0ZSByb3RhdGlvbiB1c2luZyBmYWNlRnJvbnRcbiAgICAgICAgX3F1YXRBJDIubXVsdGlwbHkodGhpcy52cm1Mb29rQXQuZ2V0RmFjZUZyb250UXVhdGVybmlvbihfcXVhdEIkMikpO1xuICAgICAgICAvLyBzZXQgdHJhbnNmb3JtIHRvIG1lc2hlc1xuICAgICAgICB0aGlzLl9tZXNoWWF3LnBvc2l0aW9uLmNvcHkoX3YzQSQxKTtcbiAgICAgICAgdGhpcy5fbWVzaFlhdy5xdWF0ZXJuaW9uLmNvcHkoX3F1YXRBJDIpO1xuICAgICAgICB0aGlzLl9tZXNoUGl0Y2gucG9zaXRpb24uY29weShfdjNBJDEpO1xuICAgICAgICB0aGlzLl9tZXNoUGl0Y2gucXVhdGVybmlvbi5jb3B5KF9xdWF0QSQyKTtcbiAgICAgICAgdGhpcy5fbWVzaFBpdGNoLnF1YXRlcm5pb24ubXVsdGlwbHkoX3F1YXRCJDIuc2V0RnJvbUF4aXNBbmdsZShWRUMzX1BPU0lUSVZFX1ksIHlhdykpO1xuICAgICAgICB0aGlzLl9tZXNoUGl0Y2gucXVhdGVybmlvbi5tdWx0aXBseShRVUFUX1hZX0NXOTApO1xuICAgICAgICAvLyB1cGRhdGUgdGFyZ2V0IGxpbmUgYW5kIHNwaGVyZVxuICAgICAgICBjb25zdCB7IHRhcmdldCwgYXV0b1VwZGF0ZSB9ID0gdGhpcy52cm1Mb29rQXQ7XG4gICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCAmJiBhdXRvVXBkYXRlKSB7XG4gICAgICAgICAgICB0YXJnZXQuZ2V0V29ybGRQb3NpdGlvbihfdjNCJDEpLnN1YihfdjNBJDEpO1xuICAgICAgICAgICAgdGhpcy5fbGluZVRhcmdldC5nZW9tZXRyeS50YWlsLmNvcHkoX3YzQiQxKTtcbiAgICAgICAgICAgIHRoaXMuX2xpbmVUYXJnZXQuZ2VvbWV0cnkudXBkYXRlKCk7XG4gICAgICAgICAgICB0aGlzLl9saW5lVGFyZ2V0LnBvc2l0aW9uLmNvcHkoX3YzQSQxKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBhcHBseSB0cmFuc2Zvcm0gdG8gbWVzaGVzXG4gICAgICAgIHN1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKGZvcmNlKTtcbiAgICB9XG59XG5cbmNvbnN0IF9wb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jb25zdCBfc2NhbGUgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuLyoqXG4gKiBBIHJlcGxhY2VtZW50IG9mIGBPYmplY3QzRC5nZXRXb3JsZFF1YXRlcm5pb25gLlxuICogRXh0cmFjdCB0aGUgd29ybGQgcXVhdGVybmlvbiBvZiBhbiBvYmplY3QgZnJvbSBpdHMgd29ybGQgc3BhY2UgbWF0cml4LCB3aXRob3V0IGNhbGxpbmcgYE9iamVjdDNELnVwZGF0ZVdvcmxkTWF0cml4YC5cbiAqIFVzZSB0aGlzIHdoZW4geW91J3JlIHN1cmUgdGhhdCB0aGUgd29ybGQgbWF0cml4IGlzIHVwLXRvLWRhdGUuXG4gKlxuICogQHBhcmFtIG9iamVjdCBUaGUgb2JqZWN0XG4gKiBAcGFyYW0gb3V0IEEgdGFyZ2V0IHF1YXRlcm5pb25cbiAqL1xuZnVuY3Rpb24gZ2V0V29ybGRRdWF0ZXJuaW9uTGl0ZShvYmplY3QsIG91dCkge1xuICAgIG9iamVjdC5tYXRyaXhXb3JsZC5kZWNvbXBvc2UoX3Bvc2l0aW9uLCBvdXQsIF9zY2FsZSk7XG4gICAgcmV0dXJuIG91dDtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgYXppbXV0aCAvIGFsdGl0dWRlIGFuZ2xlcyBmcm9tIGEgdmVjdG9yLlxuICpcbiAqIFRoaXMgcmV0dXJucyBhIGRpZmZlcmVuY2Ugb2YgYW5nbGVzIGZyb20gKDEsIDAsIDApLlxuICogQXppbXV0aCByZXByZXNlbnRzIGFuIGFuZ2xlIGFyb3VuZCBZIGF4aXMuXG4gKiBBbHRpdHVkZSByZXByZXNlbnRzIGFuIGFuZ2xlIGFyb3VuZCBaIGF4aXMuXG4gKiBJdCBpcyByb3RhdGVkIGluIGludHJpbnNpYyBZLVogb3JkZXIuXG4gKlxuICogQHBhcmFtIHZlY3RvciBUaGUgdmVjdG9yXG4gKiBAcmV0dXJucyBBIHR1cGxlIGNvbnRhaW5zIHR3byBhbmdsZXMsIGBbIGF6aW11dGgsIGFsdGl0dWRlIF1gXG4gKi9cbmZ1bmN0aW9uIGNhbGNBemltdXRoQWx0aXR1ZGUodmVjdG9yKSB7XG4gICAgcmV0dXJuIFtNYXRoLmF0YW4yKC12ZWN0b3IueiwgdmVjdG9yLngpLCBNYXRoLmF0YW4yKHZlY3Rvci55LCBNYXRoLnNxcnQodmVjdG9yLnggKiB2ZWN0b3IueCArIHZlY3Rvci56ICogdmVjdG9yLnopKV07XG59XG5cbi8qKlxuICogTWFrZSBzdXJlIHRoZSBhbmdsZSBpcyB3aXRoaW4gLVBJIHRvIFBJLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBqc1xuICogc2FuaXRpemVBbmdsZSgxLjUgKiBNYXRoLlBJKSAvLyAtMC41ICogUElcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBhbmdsZSBBbiBpbnB1dCBhbmdsZVxuICovXG5mdW5jdGlvbiBzYW5pdGl6ZUFuZ2xlKGFuZ2xlKSB7XG4gICAgY29uc3Qgcm91bmRUdXJuID0gTWF0aC5yb3VuZChhbmdsZSAvIDIuMCAvIE1hdGguUEkpO1xuICAgIHJldHVybiBhbmdsZSAtIDIuMCAqIE1hdGguUEkgKiByb3VuZFR1cm47XG59XG5cbmNvbnN0IFZFQzNfUE9TSVRJVkVfWiQxID0gbmV3IFRIUkVFLlZlY3RvcjMoMC4wLCAwLjAsIDEuMCk7XG5jb25zdCBfdjNBID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IF92M0IgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgX3YzQyA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jb25zdCBfcXVhdEEkMSA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jb25zdCBfcXVhdEIkMSA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jb25zdCBfcXVhdEMgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuY29uc3QgX3F1YXREID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IF9ldWxlckEkMSA9IG5ldyBUSFJFRS5FdWxlcigpO1xuLyoqXG4gKiBBIGNsYXNzIGNvbnRyb2xzIGV5ZSBnYXplIG1vdmVtZW50cyBvZiBhIFZSTS5cbiAqL1xuY2xhc3MgVlJNTG9va0F0IHtcbiAgICAvKipcbiAgICAgKiBJdHMgY3VycmVudCBhbmdsZSBhcm91bmQgWSBheGlzLCBpbiBkZWdyZWUuXG4gICAgICovXG4gICAgZ2V0IHlhdygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3lhdztcbiAgICB9XG4gICAgLyoqXG4gICAgICogSXRzIGN1cnJlbnQgYW5nbGUgYXJvdW5kIFkgYXhpcywgaW4gZGVncmVlLlxuICAgICAqL1xuICAgIHNldCB5YXcodmFsdWUpIHtcbiAgICAgICAgdGhpcy5feWF3ID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX25lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSXRzIGN1cnJlbnQgYW5nbGUgYXJvdW5kIFggYXhpcywgaW4gZGVncmVlLlxuICAgICAqL1xuICAgIGdldCBwaXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BpdGNoO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJdHMgY3VycmVudCBhbmdsZSBhcm91bmQgWCBheGlzLCBpbiBkZWdyZWUuXG4gICAgICovXG4gICAgc2V0IHBpdGNoKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3BpdGNoID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX25lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBnZXRFdWxlcn0gaW5zdGVhZC5cbiAgICAgKi9cbiAgICBnZXQgZXVsZXIoKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignVlJNTG9va0F0OiBldWxlciBpcyBkZXByZWNhdGVkLiB1c2UgZ2V0RXVsZXIoKSBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRFdWxlcihuZXcgVEhSRUUuRXVsZXIoKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyB7QGxpbmsgVlJNTG9va0F0fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBodW1hbm9pZCBBIHtAbGluayBWUk1IdW1hbm9pZH1cbiAgICAgKiBAcGFyYW0gYXBwbGllciBBIHtAbGluayBWUk1Mb29rQXRBcHBsaWVyfVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGh1bWFub2lkLCBhcHBsaWVyKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgb3JpZ2luIG9mIExvb2tBdC4gUG9zaXRpb24gb2Zmc2V0IGZyb20gdGhlIGhlYWQgYm9uZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub2Zmc2V0RnJvbUhlYWRCb25lID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIHRoaXMgaXMgdHJ1ZSwgdGhlIExvb2tBdCB3aWxsIGJlIHVwZGF0ZWQgYXV0b21hdGljYWxseSBieSBjYWxsaW5nIHtAbGluayB1cGRhdGV9LCB0b3dhcmRpbmcgdGhlIGRpcmVjdGlvbiB0byB0aGUge0BsaW5rIHRhcmdldH0uXG4gICAgICAgICAqIGB0cnVlYCBieSBkZWZhdWx0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBTZWUgYWxzbzoge0BsaW5rIHRhcmdldH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuYXV0b1VwZGF0ZSA9IHRydWU7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgZnJvbnQgZGlyZWN0aW9uIG9mIHRoZSBmYWNlLlxuICAgICAgICAgKiBJbnRlbmRlZCB0byBiZSB1c2VkIGZvciBWUk0gMC4wIGNvbXBhdCAoVlJNIDAuMCBtb2RlbHMgYXJlIGZhY2luZyBaLSBpbnN0ZWFkIG9mIForKS5cbiAgICAgICAgICogWW91IHVzdWFsbHkgZG9uJ3Qgd2FudCB0byB0b3VjaCB0aGlzLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5mYWNlRnJvbnQgPSBuZXcgVEhSRUUuVmVjdG9yMygwLjAsIDAuMCwgMS4wKTtcbiAgICAgICAgdGhpcy5odW1hbm9pZCA9IGh1bWFub2lkO1xuICAgICAgICB0aGlzLmFwcGxpZXIgPSBhcHBsaWVyO1xuICAgICAgICB0aGlzLl95YXcgPSAwLjA7XG4gICAgICAgIHRoaXMuX3BpdGNoID0gMC4wO1xuICAgICAgICB0aGlzLl9uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX3Jlc3RIZWFkV29ybGRRdWF0ZXJuaW9uID0gdGhpcy5nZXRMb29rQXRXb3JsZFF1YXRlcm5pb24obmV3IFRIUkVFLlF1YXRlcm5pb24oKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBpdHMgeWF3LXBpdGNoIGFuZ2xlcyBhcyBhbiBgRXVsZXJgLlxuICAgICAqIERvZXMgTk9UIGNvbnNpZGVyIHtAbGluayBmYWNlRnJvbnR9OyBpdCByZXR1cm5zIGBFdWxlcigwLCAwLCAwOyBcIllYWlwiKWAgYnkgZGVmYXVsdCByZWdhcmRsZXNzIG9mIHRoZSBmYWNlRnJvbnQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgZXVsZXJcbiAgICAgKi9cbiAgICBnZXRFdWxlcih0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldC5zZXQoVEhSRUUuTWF0aFV0aWxzLkRFRzJSQUQgKiB0aGlzLl9waXRjaCwgVEhSRUUuTWF0aFV0aWxzLkRFRzJSQUQgKiB0aGlzLl95YXcsIDAuMCwgJ1lYWicpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb3B5IHRoZSBnaXZlbiB7QGxpbmsgVlJNTG9va0F0fSBpbnRvIHRoaXMgb25lLlxuICAgICAqIHtAbGluayBodW1hbm9pZH0gbXVzdCBiZSBzYW1lIGFzIHRoZSBzb3VyY2Ugb25lLlxuICAgICAqIHtAbGluayBhcHBsaWVyfSB3aWxsIHJlZmVyZW5jZSB0aGUgc2FtZSBpbnN0YW5jZSBhcyB0aGUgc291cmNlIG9uZS5cbiAgICAgKiBAcGFyYW0gc291cmNlIFRoZSB7QGxpbmsgVlJNTG9va0F0fSB5b3Ugd2FudCB0byBjb3B5XG4gICAgICogQHJldHVybnMgdGhpc1xuICAgICAqL1xuICAgIGNvcHkoc291cmNlKSB7XG4gICAgICAgIGlmICh0aGlzLmh1bWFub2lkICE9PSBzb3VyY2UuaHVtYW5vaWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVlJNTG9va0F0OiBodW1hbm9pZCBtdXN0IGJlIHNhbWUgaW4gb3JkZXIgdG8gY29weScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2Zmc2V0RnJvbUhlYWRCb25lLmNvcHkoc291cmNlLm9mZnNldEZyb21IZWFkQm9uZSk7XG4gICAgICAgIHRoaXMuYXBwbGllciA9IHNvdXJjZS5hcHBsaWVyO1xuICAgICAgICB0aGlzLmF1dG9VcGRhdGUgPSBzb3VyY2UuYXV0b1VwZGF0ZTtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBzb3VyY2UudGFyZ2V0O1xuICAgICAgICB0aGlzLmZhY2VGcm9udC5jb3B5KHNvdXJjZS5mYWNlRnJvbnQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGNsb25lIG9mIHRoaXMge0BsaW5rIFZSTUxvb2tBdH0uXG4gICAgICogTm90ZSB0aGF0IHtAbGluayBodW1hbm9pZH0gYW5kIHtAbGluayBhcHBsaWVyfSB3aWxsIHJlZmVyZW5jZSB0aGUgc2FtZSBpbnN0YW5jZSBhcyB0aGlzIG9uZS5cbiAgICAgKiBAcmV0dXJucyBDb3BpZWQge0BsaW5rIFZSTUxvb2tBdH1cbiAgICAgKi9cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWUk1Mb29rQXQodGhpcy5odW1hbm9pZCwgdGhpcy5hcHBsaWVyKS5jb3B5KHRoaXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXNldCB0aGUgbG9va0F0IGRpcmVjdGlvbiAoeWF3IGFuZCBwaXRjaCkgdG8gdGhlIGluaXRpYWwgZGlyZWN0aW9uLlxuICAgICAqL1xuICAgIHJlc2V0KCkge1xuICAgICAgICB0aGlzLl95YXcgPSAwLjA7XG4gICAgICAgIHRoaXMuX3BpdGNoID0gMC4wO1xuICAgICAgICB0aGlzLl9uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBpdHMgbG9va0F0IHBvc2l0aW9uIGluIHdvcmxkIGNvb3JkaW5hdGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IEEgdGFyZ2V0IGBUSFJFRS5WZWN0b3IzYFxuICAgICAqL1xuICAgIGdldExvb2tBdFdvcmxkUG9zaXRpb24odGFyZ2V0KSB7XG4gICAgICAgIGNvbnN0IGhlYWQgPSB0aGlzLmh1bWFub2lkLmdldFJhd0JvbmVOb2RlKCdoZWFkJyk7XG4gICAgICAgIHJldHVybiB0YXJnZXQuY29weSh0aGlzLm9mZnNldEZyb21IZWFkQm9uZSkuYXBwbHlNYXRyaXg0KGhlYWQubWF0cml4V29ybGQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgaXRzIGxvb2tBdCByb3RhdGlvbiBpbiB3b3JsZCBjb29yZGluYXRlLlxuICAgICAqIERvZXMgTk9UIGNvbnNpZGVyIHtAbGluayBmYWNlRnJvbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhcmdldCBBIHRhcmdldCBgVEhSRUUuUXVhdGVybmlvbmBcbiAgICAgKi9cbiAgICBnZXRMb29rQXRXb3JsZFF1YXRlcm5pb24odGFyZ2V0KSB7XG4gICAgICAgIGNvbnN0IGhlYWQgPSB0aGlzLmh1bWFub2lkLmdldFJhd0JvbmVOb2RlKCdoZWFkJyk7XG4gICAgICAgIHJldHVybiBnZXRXb3JsZFF1YXRlcm5pb25MaXRlKGhlYWQsIHRhcmdldCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBhIHF1YXRlcm5pb24gdGhhdCByb3RhdGVzIHRoZSArWiB1bml0IHZlY3RvciBvZiB0aGUgaHVtYW5vaWQgSGVhZCB0byB0aGUge0BsaW5rIGZhY2VGcm9udH0gZGlyZWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhcmdldCBBIHRhcmdldCBgVEhSRUUuUXVhdGVybmlvbmBcbiAgICAgKi9cbiAgICBnZXRGYWNlRnJvbnRRdWF0ZXJuaW9uKHRhcmdldCkge1xuICAgICAgICBpZiAodGhpcy5mYWNlRnJvbnQuZGlzdGFuY2VUb1NxdWFyZWQoVkVDM19QT1NJVElWRV9aJDEpIDwgMC4wMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5jb3B5KHRoaXMuX3Jlc3RIZWFkV29ybGRRdWF0ZXJuaW9uKS5pbnZlcnQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBbZmFjZUZyb250QXppbXV0aCwgZmFjZUZyb250QWx0aXR1ZGVdID0gY2FsY0F6aW11dGhBbHRpdHVkZSh0aGlzLmZhY2VGcm9udCk7XG4gICAgICAgIF9ldWxlckEkMS5zZXQoMC4wLCAwLjUgKiBNYXRoLlBJICsgZmFjZUZyb250QXppbXV0aCwgZmFjZUZyb250QWx0aXR1ZGUsICdZWlgnKTtcbiAgICAgICAgcmV0dXJuIHRhcmdldC5zZXRGcm9tRXVsZXIoX2V1bGVyQSQxKS5wcmVtdWx0aXBseShfcXVhdEQuY29weSh0aGlzLl9yZXN0SGVhZFdvcmxkUXVhdGVybmlvbikuaW52ZXJ0KCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgaXRzIExvb2tBdCBkaXJlY3Rpb24gaW4gd29ybGQgY29vcmRpbmF0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YXJnZXQgQSB0YXJnZXQgYFRIUkVFLlZlY3RvcjNgXG4gICAgICovXG4gICAgZ2V0TG9va0F0V29ybGREaXJlY3Rpb24odGFyZ2V0KSB7XG4gICAgICAgIHRoaXMuZ2V0TG9va0F0V29ybGRRdWF0ZXJuaW9uKF9xdWF0QiQxKTtcbiAgICAgICAgdGhpcy5nZXRGYWNlRnJvbnRRdWF0ZXJuaW9uKF9xdWF0Qyk7XG4gICAgICAgIHJldHVybiB0YXJnZXRcbiAgICAgICAgICAgIC5jb3B5KFZFQzNfUE9TSVRJVkVfWiQxKVxuICAgICAgICAgICAgLmFwcGx5UXVhdGVybmlvbihfcXVhdEIkMSlcbiAgICAgICAgICAgIC5hcHBseVF1YXRlcm5pb24oX3F1YXRDKVxuICAgICAgICAgICAgLmFwcGx5RXVsZXIodGhpcy5nZXRFdWxlcihfZXVsZXJBJDEpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0IGl0cyBsb29rQXQgdGFyZ2V0IHBvc2l0aW9uLlxuICAgICAqXG4gICAgICogTm90ZSB0aGF0IGl0cyByZXN1bHQgd2lsbCBiZSBpbnN0YW50bHkgb3ZlcndyaXR0ZW4gaWYge0BsaW5rIFZSTUxvb2tBdEhlYWQuYXV0b1VwZGF0ZX0gaXMgZW5hYmxlZC5cbiAgICAgKlxuICAgICAqIElmIHlvdSB3YW50IHRvIHRyYWNrIGFuIG9iamVjdCBjb250aW51b3VzbHksIHlvdSBtaWdodCB3YW50IHRvIHVzZSB7QGxpbmsgdGFyZ2V0fSBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBvc2l0aW9uIEEgdGFyZ2V0IHBvc2l0aW9uLCBpbiB3b3JsZCBzcGFjZVxuICAgICAqL1xuICAgIGxvb2tBdChwb3NpdGlvbikge1xuICAgICAgICAvLyBMb29rIGF0IGRpcmVjdGlvbiBpbiBsb2NhbCBjb29yZGluYXRlXG4gICAgICAgIGNvbnN0IGhlYWRSb3REaWZmSW52ID0gX3F1YXRBJDFcbiAgICAgICAgICAgIC5jb3B5KHRoaXMuX3Jlc3RIZWFkV29ybGRRdWF0ZXJuaW9uKVxuICAgICAgICAgICAgLm11bHRpcGx5KHF1YXRJbnZlcnRDb21wYXQodGhpcy5nZXRMb29rQXRXb3JsZFF1YXRlcm5pb24oX3F1YXRCJDEpKSk7XG4gICAgICAgIGNvbnN0IGhlYWRQb3MgPSB0aGlzLmdldExvb2tBdFdvcmxkUG9zaXRpb24oX3YzQik7XG4gICAgICAgIGNvbnN0IGxvb2tBdERpciA9IF92M0MuY29weShwb3NpdGlvbikuc3ViKGhlYWRQb3MpLmFwcGx5UXVhdGVybmlvbihoZWFkUm90RGlmZkludikubm9ybWFsaXplKCk7XG4gICAgICAgIC8vIGNhbGN1bGF0ZSBhbmdsZXNcbiAgICAgICAgY29uc3QgW2F6aW11dGhGcm9tLCBhbHRpdHVkZUZyb21dID0gY2FsY0F6aW11dGhBbHRpdHVkZSh0aGlzLmZhY2VGcm9udCk7XG4gICAgICAgIGNvbnN0IFthemltdXRoVG8sIGFsdGl0dWRlVG9dID0gY2FsY0F6aW11dGhBbHRpdHVkZShsb29rQXREaXIpO1xuICAgICAgICBjb25zdCB5YXcgPSBzYW5pdGl6ZUFuZ2xlKGF6aW11dGhUbyAtIGF6aW11dGhGcm9tKTtcbiAgICAgICAgY29uc3QgcGl0Y2ggPSBzYW5pdGl6ZUFuZ2xlKGFsdGl0dWRlRnJvbSAtIGFsdGl0dWRlVG8pOyAvLyBzcGlubmluZyAoMSwgMCwgMCkgQ0NXIGFyb3VuZCBaIGF4aXMgbWFrZXMgdGhlIHZlY3RvciBsb29rIHVwLCB3aGlsZSBzcGlubmluZyAoMCwgMCwgMSkgQ0NXIGFyb3VuZCBYIGF4aXMgbWFrZXMgdGhlIHZlY3RvciBsb29rIGRvd25cbiAgICAgICAgLy8gYXBwbHkgYW5nbGVzXG4gICAgICAgIHRoaXMuX3lhdyA9IFRIUkVFLk1hdGhVdGlscy5SQUQyREVHICogeWF3O1xuICAgICAgICB0aGlzLl9waXRjaCA9IFRIUkVFLk1hdGhVdGlscy5SQUQyREVHICogcGl0Y2g7XG4gICAgICAgIHRoaXMuX25lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVXBkYXRlIHRoZSBWUk1Mb29rQXRIZWFkLlxuICAgICAqIElmIHtAbGluayBhdXRvVXBkYXRlfSBpcyBlbmFibGVkLCB0aGlzIHdpbGwgbWFrZSBpdCBsb29rIGF0IHRoZSB7QGxpbmsgdGFyZ2V0fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkZWx0YSBkZWx0YVRpbWUsIGl0IGlzbid0IHVzZWQgdGhvdWdoLiBZb3UgY2FuIHVzZSB0aGUgcGFyYW1ldGVyIGlmIHlvdSB3YW50IHRvIHVzZSB0aGlzIGluIHlvdXIgb3duIGV4dGVuZGVkIHtAbGluayBWUk1Mb29rQXR9LlxuICAgICAqL1xuICAgIHVwZGF0ZShkZWx0YSkge1xuICAgICAgICBpZiAodGhpcy50YXJnZXQgIT0gbnVsbCAmJiB0aGlzLmF1dG9VcGRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9va0F0KHRoaXMudGFyZ2V0LmdldFdvcmxkUG9zaXRpb24oX3YzQSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9uZWVkc1VwZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fbmVlZHNVcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuYXBwbGllci5hcHBseVlhd1BpdGNoKHRoaXMuX3lhdywgdGhpcy5fcGl0Y2gpO1xuICAgICAgICB9XG4gICAgfVxufVxuVlJNTG9va0F0LkVVTEVSX09SREVSID0gJ1lYWic7IC8vIHlhdy1waXRjaC1yb2xsXG5cbmNvbnN0IFZFQzNfUE9TSVRJVkVfWiA9IG5ldyBUSFJFRS5WZWN0b3IzKDAuMCwgMC4wLCAxLjApO1xuY29uc3QgX3F1YXRBID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IF9xdWF0QiA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jb25zdCBfZXVsZXJBID0gbmV3IFRIUkVFLkV1bGVyKDAuMCwgMC4wLCAwLjAsICdZWFonKTtcbi8qKlxuICogQSBjbGFzcyB0aGF0IGFwcGxpZXMgZXllIGdhemUgZGlyZWN0aW9ucyB0byBhIFZSTS5cbiAqIEl0IHdpbGwgYmUgdXNlZCBieSB7QGxpbmsgVlJNTG9va0F0fS5cbiAqL1xuY2xhc3MgVlJNTG9va0F0Qm9uZUFwcGxpZXIge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyB7QGxpbmsgVlJNTG9va0F0Qm9uZUFwcGxpZXJ9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGh1bWFub2lkIEEge0BsaW5rIFZSTUh1bWFub2lkfVxuICAgICAqIEBwYXJhbSByYW5nZU1hcEhvcml6b250YWxJbm5lciBBIHtAbGluayBWUk1Mb29rQXRSYW5nZU1hcH0gdXNlZCBmb3IgaW5uZXIgdHJhbnN2ZXJzZSBkaXJlY3Rpb25cbiAgICAgKiBAcGFyYW0gcmFuZ2VNYXBIb3Jpem9udGFsT3V0ZXIgQSB7QGxpbmsgVlJNTG9va0F0UmFuZ2VNYXB9IHVzZWQgZm9yIG91dGVyIHRyYW5zdmVyc2UgZGlyZWN0aW9uXG4gICAgICogQHBhcmFtIHJhbmdlTWFwVmVydGljYWxEb3duIEEge0BsaW5rIFZSTUxvb2tBdFJhbmdlTWFwfSB1c2VkIGZvciBkb3duIGRpcmVjdGlvblxuICAgICAqIEBwYXJhbSByYW5nZU1hcFZlcnRpY2FsVXAgQSB7QGxpbmsgVlJNTG9va0F0UmFuZ2VNYXB9IHVzZWQgZm9yIHVwIGRpcmVjdGlvblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGh1bWFub2lkLCByYW5nZU1hcEhvcml6b250YWxJbm5lciwgcmFuZ2VNYXBIb3Jpem9udGFsT3V0ZXIsIHJhbmdlTWFwVmVydGljYWxEb3duLCByYW5nZU1hcFZlcnRpY2FsVXApIHtcbiAgICAgICAgdGhpcy5odW1hbm9pZCA9IGh1bWFub2lkO1xuICAgICAgICB0aGlzLnJhbmdlTWFwSG9yaXpvbnRhbElubmVyID0gcmFuZ2VNYXBIb3Jpem9udGFsSW5uZXI7XG4gICAgICAgIHRoaXMucmFuZ2VNYXBIb3Jpem9udGFsT3V0ZXIgPSByYW5nZU1hcEhvcml6b250YWxPdXRlcjtcbiAgICAgICAgdGhpcy5yYW5nZU1hcFZlcnRpY2FsRG93biA9IHJhbmdlTWFwVmVydGljYWxEb3duO1xuICAgICAgICB0aGlzLnJhbmdlTWFwVmVydGljYWxVcCA9IHJhbmdlTWFwVmVydGljYWxVcDtcbiAgICAgICAgdGhpcy5mYWNlRnJvbnQgPSBuZXcgVEhSRUUuVmVjdG9yMygwLjAsIDAuMCwgMS4wKTtcbiAgICAgICAgLy8gc2V0IHJlc3QgcXVhdGVybmlvbnNcbiAgICAgICAgdGhpcy5fcmVzdFF1YXRMZWZ0RXllID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbiAgICAgICAgdGhpcy5fcmVzdFF1YXRSaWdodEV5ZSA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4gICAgICAgIHRoaXMuX3Jlc3RMZWZ0RXllUGFyZW50V29ybGRRdWF0ID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbiAgICAgICAgdGhpcy5fcmVzdFJpZ2h0RXllUGFyZW50V29ybGRRdWF0ID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbiAgICAgICAgY29uc3QgbGVmdEV5ZSA9IHRoaXMuaHVtYW5vaWQuZ2V0UmF3Qm9uZU5vZGUoJ2xlZnRFeWUnKTtcbiAgICAgICAgY29uc3QgcmlnaHRFeWUgPSB0aGlzLmh1bWFub2lkLmdldFJhd0JvbmVOb2RlKCdyaWdodEV5ZScpO1xuICAgICAgICBpZiAobGVmdEV5ZSkge1xuICAgICAgICAgICAgdGhpcy5fcmVzdFF1YXRMZWZ0RXllLmNvcHkobGVmdEV5ZS5xdWF0ZXJuaW9uKTtcbiAgICAgICAgICAgIGdldFdvcmxkUXVhdGVybmlvbkxpdGUobGVmdEV5ZS5wYXJlbnQsIHRoaXMuX3Jlc3RMZWZ0RXllUGFyZW50V29ybGRRdWF0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmlnaHRFeWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc3RRdWF0UmlnaHRFeWUuY29weShyaWdodEV5ZS5xdWF0ZXJuaW9uKTtcbiAgICAgICAgICAgIGdldFdvcmxkUXVhdGVybmlvbkxpdGUocmlnaHRFeWUucGFyZW50LCB0aGlzLl9yZXN0UmlnaHRFeWVQYXJlbnRXb3JsZFF1YXQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFwcGx5IHRoZSBpbnB1dCBhbmdsZSB0byBpdHMgYXNzb2NpYXRlZCBWUk0gbW9kZWwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0geWF3IFJvdGF0aW9uIGFyb3VuZCBZIGF4aXMsIGluIGRlZ3JlZVxuICAgICAqIEBwYXJhbSBwaXRjaCBSb3RhdGlvbiBhcm91bmQgWCBheGlzLCBpbiBkZWdyZWVcbiAgICAgKi9cbiAgICBhcHBseVlhd1BpdGNoKHlhdywgcGl0Y2gpIHtcbiAgICAgICAgY29uc3QgbGVmdEV5ZSA9IHRoaXMuaHVtYW5vaWQuZ2V0UmF3Qm9uZU5vZGUoJ2xlZnRFeWUnKTtcbiAgICAgICAgY29uc3QgcmlnaHRFeWUgPSB0aGlzLmh1bWFub2lkLmdldFJhd0JvbmVOb2RlKCdyaWdodEV5ZScpO1xuICAgICAgICBjb25zdCBsZWZ0RXllTm9ybWFsaXplZCA9IHRoaXMuaHVtYW5vaWQuZ2V0Tm9ybWFsaXplZEJvbmVOb2RlKCdsZWZ0RXllJyk7XG4gICAgICAgIGNvbnN0IHJpZ2h0RXllTm9ybWFsaXplZCA9IHRoaXMuaHVtYW5vaWQuZ2V0Tm9ybWFsaXplZEJvbmVOb2RlKCdyaWdodEV5ZScpO1xuICAgICAgICAvLyBsZWZ0XG4gICAgICAgIGlmIChsZWZ0RXllKSB7XG4gICAgICAgICAgICBpZiAocGl0Y2ggPCAwLjApIHtcbiAgICAgICAgICAgICAgICBfZXVsZXJBLnggPSAtVEhSRUUuTWF0aFV0aWxzLkRFRzJSQUQgKiB0aGlzLnJhbmdlTWFwVmVydGljYWxEb3duLm1hcCgtcGl0Y2gpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgX2V1bGVyQS54ID0gVEhSRUUuTWF0aFV0aWxzLkRFRzJSQUQgKiB0aGlzLnJhbmdlTWFwVmVydGljYWxVcC5tYXAocGl0Y2gpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHlhdyA8IDAuMCkge1xuICAgICAgICAgICAgICAgIF9ldWxlckEueSA9IC1USFJFRS5NYXRoVXRpbHMuREVHMlJBRCAqIHRoaXMucmFuZ2VNYXBIb3Jpem9udGFsSW5uZXIubWFwKC15YXcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgX2V1bGVyQS55ID0gVEhSRUUuTWF0aFV0aWxzLkRFRzJSQUQgKiB0aGlzLnJhbmdlTWFwSG9yaXpvbnRhbE91dGVyLm1hcCh5YXcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX3F1YXRBLnNldEZyb21FdWxlcihfZXVsZXJBKTtcbiAgICAgICAgICAgIHRoaXMuX2dldFdvcmxkRmFjZUZyb250UXVhdChfcXVhdEIpO1xuICAgICAgICAgICAgLy8gX3F1YXRCICogX3F1YXRBICogX3F1YXRCXi0xXG4gICAgICAgICAgICAvLyB3aGVyZSBfcXVhdEEgaXMgTG9va0F0IHJvdGF0aW9uXG4gICAgICAgICAgICAvLyBhbmQgX3F1YXRCIGlzIHdvcmxkRmFjZUZyb250UXVhdFxuICAgICAgICAgICAgbGVmdEV5ZU5vcm1hbGl6ZWQucXVhdGVybmlvbi5jb3B5KF9xdWF0QikubXVsdGlwbHkoX3F1YXRBKS5tdWx0aXBseShfcXVhdEIuaW52ZXJ0KCkpO1xuICAgICAgICAgICAgX3F1YXRBLmNvcHkodGhpcy5fcmVzdExlZnRFeWVQYXJlbnRXb3JsZFF1YXQpO1xuICAgICAgICAgICAgLy8gX3F1YXRBXi0xICogbGVmdEV5ZU5vcm1hbGl6ZWQucXVhdGVybmlvbiAqIF9xdWF0QSAqIHJlc3RRdWF0TGVmdEV5ZVxuICAgICAgICAgICAgLy8gd2hlcmUgX3F1YXRBIGlzIHJlc3RMZWZ0RXllUGFyZW50V29ybGRRdWF0XG4gICAgICAgICAgICBsZWZ0RXllLnF1YXRlcm5pb25cbiAgICAgICAgICAgICAgICAuY29weShsZWZ0RXllTm9ybWFsaXplZC5xdWF0ZXJuaW9uKVxuICAgICAgICAgICAgICAgIC5tdWx0aXBseShfcXVhdEEpXG4gICAgICAgICAgICAgICAgLnByZW11bHRpcGx5KF9xdWF0QS5pbnZlcnQoKSlcbiAgICAgICAgICAgICAgICAubXVsdGlwbHkodGhpcy5fcmVzdFF1YXRMZWZ0RXllKTtcbiAgICAgICAgfVxuICAgICAgICAvLyByaWdodFxuICAgICAgICBpZiAocmlnaHRFeWUpIHtcbiAgICAgICAgICAgIGlmIChwaXRjaCA8IDAuMCkge1xuICAgICAgICAgICAgICAgIF9ldWxlckEueCA9IC1USFJFRS5NYXRoVXRpbHMuREVHMlJBRCAqIHRoaXMucmFuZ2VNYXBWZXJ0aWNhbERvd24ubWFwKC1waXRjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBfZXVsZXJBLnggPSBUSFJFRS5NYXRoVXRpbHMuREVHMlJBRCAqIHRoaXMucmFuZ2VNYXBWZXJ0aWNhbFVwLm1hcChwaXRjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeWF3IDwgMC4wKSB7XG4gICAgICAgICAgICAgICAgX2V1bGVyQS55ID0gLVRIUkVFLk1hdGhVdGlscy5ERUcyUkFEICogdGhpcy5yYW5nZU1hcEhvcml6b250YWxPdXRlci5tYXAoLXlhdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBfZXVsZXJBLnkgPSBUSFJFRS5NYXRoVXRpbHMuREVHMlJBRCAqIHRoaXMucmFuZ2VNYXBIb3Jpem9udGFsSW5uZXIubWFwKHlhdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfcXVhdEEuc2V0RnJvbUV1bGVyKF9ldWxlckEpO1xuICAgICAgICAgICAgdGhpcy5fZ2V0V29ybGRGYWNlRnJvbnRRdWF0KF9xdWF0Qik7XG4gICAgICAgICAgICAvLyBfcXVhdEIgKiBfcXVhdEEgKiBfcXVhdEJeLTFcbiAgICAgICAgICAgIC8vIHdoZXJlIF9xdWF0QSBpcyBMb29rQXQgcm90YXRpb25cbiAgICAgICAgICAgIC8vIGFuZCBfcXVhdEIgaXMgd29ybGRGYWNlRnJvbnRRdWF0XG4gICAgICAgICAgICByaWdodEV5ZU5vcm1hbGl6ZWQucXVhdGVybmlvbi5jb3B5KF9xdWF0QikubXVsdGlwbHkoX3F1YXRBKS5tdWx0aXBseShfcXVhdEIuaW52ZXJ0KCkpO1xuICAgICAgICAgICAgX3F1YXRBLmNvcHkodGhpcy5fcmVzdFJpZ2h0RXllUGFyZW50V29ybGRRdWF0KTtcbiAgICAgICAgICAgIC8vIF9xdWF0QV4tMSAqIHJpZ2h0RXllTm9ybWFsaXplZC5xdWF0ZXJuaW9uICogX3F1YXRBICogcmVzdFF1YXRSaWdodEV5ZVxuICAgICAgICAgICAgLy8gd2hlcmUgX3F1YXRBIGlzIHJlc3RSaWdodEV5ZVBhcmVudFdvcmxkUXVhdFxuICAgICAgICAgICAgcmlnaHRFeWUucXVhdGVybmlvblxuICAgICAgICAgICAgICAgIC5jb3B5KHJpZ2h0RXllTm9ybWFsaXplZC5xdWF0ZXJuaW9uKVxuICAgICAgICAgICAgICAgIC5tdWx0aXBseShfcXVhdEEpXG4gICAgICAgICAgICAgICAgLnByZW11bHRpcGx5KF9xdWF0QS5pbnZlcnQoKSlcbiAgICAgICAgICAgICAgICAubXVsdGlwbHkodGhpcy5fcmVzdFF1YXRSaWdodEV5ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBhcHBseVlhd1BpdGNofSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGxvb2tBdChldWxlcikge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTUxvb2tBdEJvbmVBcHBsaWVyOiBsb29rQXQoKSBpcyBkZXByZWNhdGVkLiB1c2UgYXBwbHkoKSBpbnN0ZWFkLicpO1xuICAgICAgICBjb25zdCB5YXcgPSBUSFJFRS5NYXRoVXRpbHMuUkFEMkRFRyAqIGV1bGVyLnk7XG4gICAgICAgIGNvbnN0IHBpdGNoID0gVEhSRUUuTWF0aFV0aWxzLlJBRDJERUcgKiBldWxlci54O1xuICAgICAgICB0aGlzLmFwcGx5WWF3UGl0Y2goeWF3LCBwaXRjaCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBhIHF1YXRlcm5pb24gdGhhdCByb3RhdGVzIHRoZSB3b3JsZC1zcGFjZSArWiB1bml0IHZlY3RvciB0byB0aGUge0BsaW5rIGZhY2VGcm9udH0gZGlyZWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhcmdldCBBIHRhcmdldCBgVEhSRUUuUXVhdGVybmlvbmBcbiAgICAgKi9cbiAgICBfZ2V0V29ybGRGYWNlRnJvbnRRdWF0KHRhcmdldCkge1xuICAgICAgICBpZiAodGhpcy5mYWNlRnJvbnQuZGlzdGFuY2VUb1NxdWFyZWQoVkVDM19QT1NJVElWRV9aKSA8IDAuMDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQuaWRlbnRpdHkoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBbZmFjZUZyb250QXppbXV0aCwgZmFjZUZyb250QWx0aXR1ZGVdID0gY2FsY0F6aW11dGhBbHRpdHVkZSh0aGlzLmZhY2VGcm9udCk7XG4gICAgICAgIF9ldWxlckEuc2V0KDAuMCwgMC41ICogTWF0aC5QSSArIGZhY2VGcm9udEF6aW11dGgsIGZhY2VGcm9udEFsdGl0dWRlLCAnWVpYJyk7XG4gICAgICAgIHJldHVybiB0YXJnZXQuc2V0RnJvbUV1bGVyKF9ldWxlckEpO1xuICAgIH1cbn1cbi8qKlxuICogUmVwcmVzZW50IGl0cyB0eXBlIG9mIGFwcGxpZXIuXG4gKi9cblZSTUxvb2tBdEJvbmVBcHBsaWVyLnR5cGUgPSAnYm9uZSc7XG5cbi8qKlxuICogQSBjbGFzcyB0aGF0IGFwcGxpZXMgZXllIGdhemUgZGlyZWN0aW9ucyB0byBhIFZSTS5cbiAqIEl0IHdpbGwgYmUgdXNlZCBieSB7QGxpbmsgVlJNTG9va0F0fS5cbiAqL1xuY2xhc3MgVlJNTG9va0F0RXhwcmVzc2lvbkFwcGxpZXIge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyB7QGxpbmsgVlJNTG9va0F0RXhwcmVzc2lvbkFwcGxpZXJ9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGV4cHJlc3Npb25zIEEge0BsaW5rIFZSTUV4cHJlc3Npb25NYW5hZ2VyfVxuICAgICAqIEBwYXJhbSByYW5nZU1hcEhvcml6b250YWxJbm5lciBBIHtAbGluayBWUk1Mb29rQXRSYW5nZU1hcH0gdXNlZCBmb3IgaW5uZXIgdHJhbnN2ZXJzZSBkaXJlY3Rpb25cbiAgICAgKiBAcGFyYW0gcmFuZ2VNYXBIb3Jpem9udGFsT3V0ZXIgQSB7QGxpbmsgVlJNTG9va0F0UmFuZ2VNYXB9IHVzZWQgZm9yIG91dGVyIHRyYW5zdmVyc2UgZGlyZWN0aW9uXG4gICAgICogQHBhcmFtIHJhbmdlTWFwVmVydGljYWxEb3duIEEge0BsaW5rIFZSTUxvb2tBdFJhbmdlTWFwfSB1c2VkIGZvciBkb3duIGRpcmVjdGlvblxuICAgICAqIEBwYXJhbSByYW5nZU1hcFZlcnRpY2FsVXAgQSB7QGxpbmsgVlJNTG9va0F0UmFuZ2VNYXB9IHVzZWQgZm9yIHVwIGRpcmVjdGlvblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGV4cHJlc3Npb25zLCByYW5nZU1hcEhvcml6b250YWxJbm5lciwgcmFuZ2VNYXBIb3Jpem9udGFsT3V0ZXIsIHJhbmdlTWFwVmVydGljYWxEb3duLCByYW5nZU1hcFZlcnRpY2FsVXApIHtcbiAgICAgICAgdGhpcy5leHByZXNzaW9ucyA9IGV4cHJlc3Npb25zO1xuICAgICAgICB0aGlzLnJhbmdlTWFwSG9yaXpvbnRhbElubmVyID0gcmFuZ2VNYXBIb3Jpem9udGFsSW5uZXI7XG4gICAgICAgIHRoaXMucmFuZ2VNYXBIb3Jpem9udGFsT3V0ZXIgPSByYW5nZU1hcEhvcml6b250YWxPdXRlcjtcbiAgICAgICAgdGhpcy5yYW5nZU1hcFZlcnRpY2FsRG93biA9IHJhbmdlTWFwVmVydGljYWxEb3duO1xuICAgICAgICB0aGlzLnJhbmdlTWFwVmVydGljYWxVcCA9IHJhbmdlTWFwVmVydGljYWxVcDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQXBwbHkgdGhlIGlucHV0IGFuZ2xlIHRvIGl0cyBhc3NvY2lhdGVkIFZSTSBtb2RlbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB5YXcgUm90YXRpb24gYXJvdW5kIFkgYXhpcywgaW4gZGVncmVlXG4gICAgICogQHBhcmFtIHBpdGNoIFJvdGF0aW9uIGFyb3VuZCBYIGF4aXMsIGluIGRlZ3JlZVxuICAgICAqL1xuICAgIGFwcGx5WWF3UGl0Y2goeWF3LCBwaXRjaCkge1xuICAgICAgICBpZiAocGl0Y2ggPCAwLjApIHtcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbnMuc2V0VmFsdWUoJ2xvb2tEb3duJywgMC4wKTtcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbnMuc2V0VmFsdWUoJ2xvb2tVcCcsIHRoaXMucmFuZ2VNYXBWZXJ0aWNhbFVwLm1hcCgtcGl0Y2gpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbnMuc2V0VmFsdWUoJ2xvb2tVcCcsIDAuMCk7XG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25zLnNldFZhbHVlKCdsb29rRG93bicsIHRoaXMucmFuZ2VNYXBWZXJ0aWNhbERvd24ubWFwKHBpdGNoKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHlhdyA8IDAuMCkge1xuICAgICAgICAgICAgdGhpcy5leHByZXNzaW9ucy5zZXRWYWx1ZSgnbG9va0xlZnQnLCAwLjApO1xuICAgICAgICAgICAgdGhpcy5leHByZXNzaW9ucy5zZXRWYWx1ZSgnbG9va1JpZ2h0JywgdGhpcy5yYW5nZU1hcEhvcml6b250YWxPdXRlci5tYXAoLXlhdykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5leHByZXNzaW9ucy5zZXRWYWx1ZSgnbG9va1JpZ2h0JywgMC4wKTtcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbnMuc2V0VmFsdWUoJ2xvb2tMZWZ0JywgdGhpcy5yYW5nZU1hcEhvcml6b250YWxPdXRlci5tYXAoeWF3KSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBhcHBseVlhd1BpdGNofSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGxvb2tBdChldWxlcikge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTUxvb2tBdEJvbmVBcHBsaWVyOiBsb29rQXQoKSBpcyBkZXByZWNhdGVkLiB1c2UgYXBwbHkoKSBpbnN0ZWFkLicpO1xuICAgICAgICBjb25zdCB5YXcgPSBUSFJFRS5NYXRoVXRpbHMuUkFEMkRFRyAqIGV1bGVyLnk7XG4gICAgICAgIGNvbnN0IHBpdGNoID0gVEhSRUUuTWF0aFV0aWxzLlJBRDJERUcgKiBldWxlci54O1xuICAgICAgICB0aGlzLmFwcGx5WWF3UGl0Y2goeWF3LCBwaXRjaCk7XG4gICAgfVxufVxuLyoqXG4gKiBSZXByZXNlbnQgaXRzIHR5cGUgb2YgYXBwbGllci5cbiAqL1xuVlJNTG9va0F0RXhwcmVzc2lvbkFwcGxpZXIudHlwZSA9ICdleHByZXNzaW9uJztcblxuY2xhc3MgVlJNTG9va0F0UmFuZ2VNYXAge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyB7QGxpbmsgVlJNTG9va0F0UmFuZ2VNYXB9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGlucHV0TWF4VmFsdWUgVGhlIHtAbGluayBpbnB1dE1heFZhbHVlfSBvZiB0aGUgbWFwXG4gICAgICogQHBhcmFtIG91dHB1dFNjYWxlIFRoZSB7QGxpbmsgb3V0cHV0U2NhbGV9IG9mIHRoZSBtYXBcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihpbnB1dE1heFZhbHVlLCBvdXRwdXRTY2FsZSkge1xuICAgICAgICB0aGlzLmlucHV0TWF4VmFsdWUgPSBpbnB1dE1heFZhbHVlO1xuICAgICAgICB0aGlzLm91dHB1dFNjYWxlID0gb3V0cHV0U2NhbGU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2YWx1YXRlIGFuIGlucHV0IHZhbHVlIGFuZCBvdXRwdXQgYSBtYXBwZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHNyYyBUaGUgaW5wdXQgdmFsdWVcbiAgICAgKi9cbiAgICBtYXAoc3JjKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm91dHB1dFNjYWxlICogc2F0dXJhdGUoc3JjIC8gdGhpcy5pbnB1dE1heFZhbHVlKTtcbiAgICB9XG59XG5cbi8qKlxuICogUG9zc2libGUgc3BlYyB2ZXJzaW9ucyBpdCByZWNvZ25pemVzLlxuICovXG5jb25zdCBQT1NTSUJMRV9TUEVDX1ZFUlNJT05TJDEgPSBuZXcgU2V0KFsnMS4wJywgJzEuMC1iZXRhJ10pO1xuLyoqXG4gKiBUaGUgbWluaW11bSBwZXJtaXR0ZWQgdmFsdWUgZm9yIHtAbGluayBWMVZSTVNjaGVtYS5Mb29rQXRSYW5nZU1hcC5pbnB1dE1heFZhbHVlfS5cbiAqIElmIHRoZSBnaXZlbiB2YWx1ZSBpcyBzbWFsbGVyIHRoYW4gdGhpcywgdGhlIGxvYWRlciBzaG93cyBhIHdhcm5pbmcgYW5kIGNsYW1wcyB1cCB0aGUgdmFsdWUuXG4gKi9cbmNvbnN0IElOUFVUX01BWF9WQUxVRV9NSU5JTVVNID0gMC4wMTtcbi8qKlxuICogQSBwbHVnaW4gb2YgR0xURkxvYWRlciB0aGF0IGltcG9ydHMgYSB7QGxpbmsgVlJNTG9va0F0fSBmcm9tIGEgVlJNIGV4dGVuc2lvbiBvZiBhIEdMVEYuXG4gKi9cbmNsYXNzIFZSTUxvb2tBdExvYWRlclBsdWdpbiB7XG4gICAgZ2V0IG5hbWUoKSB7XG4gICAgICAgIC8vIFdlIHNob3VsZCB1c2UgdGhlIGV4dGVuc2lvbiBuYW1lIGluc3RlYWQgYnV0IHdlIGhhdmUgbXVsdGlwbGUgcGx1Z2lucyBmb3IgYW4gZXh0ZW5zaW9uLi4uXG4gICAgICAgIHJldHVybiAnVlJNTG9va0F0TG9hZGVyUGx1Z2luJztcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGFyc2VyLCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuICAgICAgICB0aGlzLmhlbHBlclJvb3QgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuaGVscGVyUm9vdDtcbiAgICB9XG4gICAgYWZ0ZXJSb290KGdsdGYpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHZybUh1bWFub2lkID0gZ2x0Zi51c2VyRGF0YS52cm1IdW1hbm9pZDtcbiAgICAgICAgICAgIC8vIGV4cGxpY2l0bHkgZGlzdGluZ3Vpc2ggbnVsbCBhbmQgdW5kZWZpbmVkXG4gICAgICAgICAgICAvLyBzaW5jZSB2cm1IdW1hbm9pZCBtaWdodCBiZSBudWxsIGFzIGEgcmVzdWx0XG4gICAgICAgICAgICBpZiAodnJtSHVtYW5vaWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh2cm1IdW1hbm9pZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWUk1Mb29rQXRMb2FkZXJQbHVnaW46IHZybUh1bWFub2lkIGlzIHVuZGVmaW5lZC4gVlJNSHVtYW5vaWRMb2FkZXJQbHVnaW4gaGF2ZSB0byBiZSB1c2VkIGZpcnN0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2cm1FeHByZXNzaW9uTWFuYWdlciA9IGdsdGYudXNlckRhdGEudnJtRXhwcmVzc2lvbk1hbmFnZXI7XG4gICAgICAgICAgICBpZiAodnJtRXhwcmVzc2lvbk1hbmFnZXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh2cm1FeHByZXNzaW9uTWFuYWdlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWUk1Mb29rQXRMb2FkZXJQbHVnaW46IHZybUV4cHJlc3Npb25NYW5hZ2VyIGlzIHVuZGVmaW5lZC4gVlJNRXhwcmVzc2lvbkxvYWRlclBsdWdpbiBoYXZlIHRvIGJlIHVzZWQgZmlyc3QnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdsdGYudXNlckRhdGEudnJtTG9va0F0ID0geWllbGQgdGhpcy5faW1wb3J0KGdsdGYsIHZybUh1bWFub2lkLCB2cm1FeHByZXNzaW9uTWFuYWdlcik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbXBvcnQgYSB7QGxpbmsgVlJNTG9va0F0fSBmcm9tIGEgVlJNLlxuICAgICAqXG4gICAgICogQHBhcmFtIGdsdGYgQSBwYXJzZWQgcmVzdWx0IG9mIEdMVEYgdGFrZW4gZnJvbSBHTFRGTG9hZGVyXG4gICAgICogQHBhcmFtIGh1bWFub2lkIEEge0BsaW5rIFZSTUh1bWFub2lkfSBpbnN0YW5jZSB0aGF0IHJlcHJlc2VudHMgdGhlIFZSTVxuICAgICAqIEBwYXJhbSBleHByZXNzaW9ucyBBIHtAbGluayBWUk1FeHByZXNzaW9uTWFuYWdlcn0gaW5zdGFuY2UgdGhhdCByZXByZXNlbnRzIHRoZSBWUk1cbiAgICAgKi9cbiAgICBfaW1wb3J0KGdsdGYsIGh1bWFub2lkLCBleHByZXNzaW9ucykge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKGh1bWFub2lkID09IG51bGwgfHwgZXhwcmVzc2lvbnMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdjFSZXN1bHQgPSB5aWVsZCB0aGlzLl92MUltcG9ydChnbHRmLCBodW1hbm9pZCwgZXhwcmVzc2lvbnMpO1xuICAgICAgICAgICAgaWYgKHYxUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHYxUmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdjBSZXN1bHQgPSB5aWVsZCB0aGlzLl92MEltcG9ydChnbHRmLCBodW1hbm9pZCwgZXhwcmVzc2lvbnMpO1xuICAgICAgICAgICAgaWYgKHYwUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHYwUmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfdjFJbXBvcnQoZ2x0ZiwgaHVtYW5vaWQsIGV4cHJlc3Npb25zKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QganNvbiA9IHRoaXMucGFyc2VyLmpzb247XG4gICAgICAgICAgICAvLyBlYXJseSBhYm9ydCBpZiBpdCBkb2Vzbid0IHVzZSB2cm1cbiAgICAgICAgICAgIGNvbnN0IGlzVlJNVXNlZCA9ICgoX2EgPSBqc29uLmV4dGVuc2lvbnNVc2VkKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaW5kZXhPZignVlJNQ192cm0nKSkgIT09IC0xO1xuICAgICAgICAgICAgaWYgKCFpc1ZSTVVzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IChfYiA9IGpzb24uZXh0ZW5zaW9ucykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iWydWUk1DX3ZybSddO1xuICAgICAgICAgICAgaWYgKCFleHRlbnNpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNwZWNWZXJzaW9uID0gZXh0ZW5zaW9uLnNwZWNWZXJzaW9uO1xuICAgICAgICAgICAgaWYgKCFQT1NTSUJMRV9TUEVDX1ZFUlNJT05TJDEuaGFzKHNwZWNWZXJzaW9uKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVlJNTG9va0F0TG9hZGVyUGx1Z2luOiBVbmtub3duIFZSTUNfdnJtIHNwZWNWZXJzaW9uIFwiJHtzcGVjVmVyc2lvbn1cImApO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2NoZW1hTG9va0F0ID0gZXh0ZW5zaW9uLmxvb2tBdDtcbiAgICAgICAgICAgIGlmICghc2NoZW1hTG9va0F0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0T3V0cHV0U2NhbGUgPSBzY2hlbWFMb29rQXQudHlwZSA9PT0gJ2V4cHJlc3Npb24nID8gMS4wIDogMTAuMDtcbiAgICAgICAgICAgIGNvbnN0IG1hcEhJID0gdGhpcy5fdjFJbXBvcnRSYW5nZU1hcChzY2hlbWFMb29rQXQucmFuZ2VNYXBIb3Jpem9udGFsSW5uZXIsIGRlZmF1bHRPdXRwdXRTY2FsZSk7XG4gICAgICAgICAgICBjb25zdCBtYXBITyA9IHRoaXMuX3YxSW1wb3J0UmFuZ2VNYXAoc2NoZW1hTG9va0F0LnJhbmdlTWFwSG9yaXpvbnRhbE91dGVyLCBkZWZhdWx0T3V0cHV0U2NhbGUpO1xuICAgICAgICAgICAgY29uc3QgbWFwVkQgPSB0aGlzLl92MUltcG9ydFJhbmdlTWFwKHNjaGVtYUxvb2tBdC5yYW5nZU1hcFZlcnRpY2FsRG93biwgZGVmYXVsdE91dHB1dFNjYWxlKTtcbiAgICAgICAgICAgIGNvbnN0IG1hcFZVID0gdGhpcy5fdjFJbXBvcnRSYW5nZU1hcChzY2hlbWFMb29rQXQucmFuZ2VNYXBWZXJ0aWNhbFVwLCBkZWZhdWx0T3V0cHV0U2NhbGUpO1xuICAgICAgICAgICAgbGV0IGFwcGxpZXI7XG4gICAgICAgICAgICBpZiAoc2NoZW1hTG9va0F0LnR5cGUgPT09ICdleHByZXNzaW9uJykge1xuICAgICAgICAgICAgICAgIGFwcGxpZXIgPSBuZXcgVlJNTG9va0F0RXhwcmVzc2lvbkFwcGxpZXIoZXhwcmVzc2lvbnMsIG1hcEhJLCBtYXBITywgbWFwVkQsIG1hcFZVKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGFwcGxpZXIgPSBuZXcgVlJNTG9va0F0Qm9uZUFwcGxpZXIoaHVtYW5vaWQsIG1hcEhJLCBtYXBITywgbWFwVkQsIG1hcFZVKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxvb2tBdCA9IHRoaXMuX2ltcG9ydExvb2tBdChodW1hbm9pZCwgYXBwbGllcik7XG4gICAgICAgICAgICBsb29rQXQub2Zmc2V0RnJvbUhlYWRCb25lLmZyb21BcnJheSgoX2MgPSBzY2hlbWFMb29rQXQub2Zmc2V0RnJvbUhlYWRCb25lKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBbMC4wLCAwLjA2LCAwLjBdKTtcbiAgICAgICAgICAgIHJldHVybiBsb29rQXQ7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfdjFJbXBvcnRSYW5nZU1hcChzY2hlbWFSYW5nZU1hcCwgZGVmYXVsdE91dHB1dFNjYWxlKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGxldCBpbnB1dE1heFZhbHVlID0gKF9hID0gc2NoZW1hUmFuZ2VNYXAgPT09IG51bGwgfHwgc2NoZW1hUmFuZ2VNYXAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjaGVtYVJhbmdlTWFwLmlucHV0TWF4VmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDkwLjA7XG4gICAgICAgIGNvbnN0IG91dHB1dFNjYWxlID0gKF9iID0gc2NoZW1hUmFuZ2VNYXAgPT09IG51bGwgfHwgc2NoZW1hUmFuZ2VNYXAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjaGVtYVJhbmdlTWFwLm91dHB1dFNjYWxlKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBkZWZhdWx0T3V0cHV0U2NhbGU7XG4gICAgICAgIC8vIEl0IG1pZ2h0IGNhdXNlIE5hTiB3aGVuIGBpbnB1dE1heFZhbHVlYCBpcyB0b28gc21hbGxcbiAgICAgICAgLy8gd2hpY2ggbWFrZXMgdGhlIG1lc2ggb2YgdGhlIGhlYWQgZGlzYXBwZWFyXG4gICAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3BpeGl2L3RocmVlLXZybS9pc3N1ZXMvMTIwMVxuICAgICAgICBpZiAoaW5wdXRNYXhWYWx1ZSA8IElOUFVUX01BWF9WQUxVRV9NSU5JTVVNKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTUxvb2tBdExvYWRlclBsdWdpbjogaW5wdXRNYXhWYWx1ZSBvZiBhIHJhbmdlIG1hcCBpcyB0b28gc21hbGwuIENvbnNpZGVyIHJldmlld2luZyB0aGUgcmFuZ2UgbWFwIScpO1xuICAgICAgICAgICAgaW5wdXRNYXhWYWx1ZSA9IElOUFVUX01BWF9WQUxVRV9NSU5JTVVNO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgVlJNTG9va0F0UmFuZ2VNYXAoaW5wdXRNYXhWYWx1ZSwgb3V0cHV0U2NhbGUpO1xuICAgIH1cbiAgICBfdjBJbXBvcnQoZ2x0ZiwgaHVtYW5vaWQsIGV4cHJlc3Npb25zKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnBhcnNlci5qc29uO1xuICAgICAgICAgICAgLy8gZWFybHkgYWJvcnQgaWYgaXQgZG9lc24ndCB1c2UgdnJtXG4gICAgICAgICAgICBjb25zdCB2cm1FeHQgPSAoX2EgPSBqc29uLmV4dGVuc2lvbnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5WUk07XG4gICAgICAgICAgICBpZiAoIXZybUV4dCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2NoZW1hRmlyc3RQZXJzb24gPSB2cm1FeHQuZmlyc3RQZXJzb247XG4gICAgICAgICAgICBpZiAoIXNjaGVtYUZpcnN0UGVyc29uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0T3V0cHV0U2NhbGUgPSBzY2hlbWFGaXJzdFBlcnNvbi5sb29rQXRUeXBlTmFtZSA9PT0gJ0JsZW5kU2hhcGUnID8gMS4wIDogMTAuMDtcbiAgICAgICAgICAgIGNvbnN0IG1hcEhJID0gdGhpcy5fdjBJbXBvcnREZWdyZWVNYXAoc2NoZW1hRmlyc3RQZXJzb24ubG9va0F0SG9yaXpvbnRhbElubmVyLCBkZWZhdWx0T3V0cHV0U2NhbGUpO1xuICAgICAgICAgICAgY29uc3QgbWFwSE8gPSB0aGlzLl92MEltcG9ydERlZ3JlZU1hcChzY2hlbWFGaXJzdFBlcnNvbi5sb29rQXRIb3Jpem9udGFsT3V0ZXIsIGRlZmF1bHRPdXRwdXRTY2FsZSk7XG4gICAgICAgICAgICBjb25zdCBtYXBWRCA9IHRoaXMuX3YwSW1wb3J0RGVncmVlTWFwKHNjaGVtYUZpcnN0UGVyc29uLmxvb2tBdFZlcnRpY2FsRG93biwgZGVmYXVsdE91dHB1dFNjYWxlKTtcbiAgICAgICAgICAgIGNvbnN0IG1hcFZVID0gdGhpcy5fdjBJbXBvcnREZWdyZWVNYXAoc2NoZW1hRmlyc3RQZXJzb24ubG9va0F0VmVydGljYWxVcCwgZGVmYXVsdE91dHB1dFNjYWxlKTtcbiAgICAgICAgICAgIGxldCBhcHBsaWVyO1xuICAgICAgICAgICAgaWYgKHNjaGVtYUZpcnN0UGVyc29uLmxvb2tBdFR5cGVOYW1lID09PSAnQmxlbmRTaGFwZScpIHtcbiAgICAgICAgICAgICAgICBhcHBsaWVyID0gbmV3IFZSTUxvb2tBdEV4cHJlc3Npb25BcHBsaWVyKGV4cHJlc3Npb25zLCBtYXBISSwgbWFwSE8sIG1hcFZELCBtYXBWVSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcHBsaWVyID0gbmV3IFZSTUxvb2tBdEJvbmVBcHBsaWVyKGh1bWFub2lkLCBtYXBISSwgbWFwSE8sIG1hcFZELCBtYXBWVSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsb29rQXQgPSB0aGlzLl9pbXBvcnRMb29rQXQoaHVtYW5vaWQsIGFwcGxpZXIpO1xuICAgICAgICAgICAgaWYgKHNjaGVtYUZpcnN0UGVyc29uLmZpcnN0UGVyc29uQm9uZU9mZnNldCkge1xuICAgICAgICAgICAgICAgIGxvb2tBdC5vZmZzZXRGcm9tSGVhZEJvbmUuc2V0KChfYiA9IHNjaGVtYUZpcnN0UGVyc29uLmZpcnN0UGVyc29uQm9uZU9mZnNldC54KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwLjAsIChfYyA9IHNjaGVtYUZpcnN0UGVyc29uLmZpcnN0UGVyc29uQm9uZU9mZnNldC55KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwLjA2LCAtKChfZCA9IHNjaGVtYUZpcnN0UGVyc29uLmZpcnN0UGVyc29uQm9uZU9mZnNldC56KSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwLjApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvb2tBdC5vZmZzZXRGcm9tSGVhZEJvbmUuc2V0KDAuMCwgMC4wNiwgMC4wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFZSTSAwLjAgYXJlIGZhY2luZyBaLSBpbnN0ZWFkIG9mIForXG4gICAgICAgICAgICBsb29rQXQuZmFjZUZyb250LnNldCgwLjAsIDAuMCwgLTEuMCk7XG4gICAgICAgICAgICBpZiAoYXBwbGllciBpbnN0YW5jZW9mIFZSTUxvb2tBdEJvbmVBcHBsaWVyKSB7XG4gICAgICAgICAgICAgICAgYXBwbGllci5mYWNlRnJvbnQuc2V0KDAuMCwgMC4wLCAtMS4wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBsb29rQXQ7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfdjBJbXBvcnREZWdyZWVNYXAoc2NoZW1hRGVncmVlTWFwLCBkZWZhdWx0T3V0cHV0U2NhbGUpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgY3VydmUgPSBzY2hlbWFEZWdyZWVNYXAgPT09IG51bGwgfHwgc2NoZW1hRGVncmVlTWFwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzY2hlbWFEZWdyZWVNYXAuY3VydmU7XG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShjdXJ2ZSkgIT09ICdbMCwwLDAsMSwxLDEsMSwwXScpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignQ3VydmVzIG9mIExvb2tBdERlZ3JlZU1hcCBkZWZpbmVkIGluIFZSTSAwLjAgYXJlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgeFJhbmdlID0gKF9hID0gc2NoZW1hRGVncmVlTWFwID09PSBudWxsIHx8IHNjaGVtYURlZ3JlZU1hcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2NoZW1hRGVncmVlTWFwLnhSYW5nZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogOTAuMDtcbiAgICAgICAgY29uc3QgeVJhbmdlID0gKF9iID0gc2NoZW1hRGVncmVlTWFwID09PSBudWxsIHx8IHNjaGVtYURlZ3JlZU1hcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2NoZW1hRGVncmVlTWFwLnlSYW5nZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogZGVmYXVsdE91dHB1dFNjYWxlO1xuICAgICAgICAvLyBJdCBtaWdodCBjYXVzZSBOYU4gd2hlbiBgeFJhbmdlYCBpcyB0b28gc21hbGxcbiAgICAgICAgLy8gd2hpY2ggbWFrZXMgdGhlIG1lc2ggb2YgdGhlIGhlYWQgZGlzYXBwZWFyXG4gICAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3BpeGl2L3RocmVlLXZybS9pc3N1ZXMvMTIwMVxuICAgICAgICBpZiAoeFJhbmdlIDwgSU5QVVRfTUFYX1ZBTFVFX01JTklNVU0pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVlJNTG9va0F0TG9hZGVyUGx1Z2luOiB4UmFuZ2Ugb2YgYSBkZWdyZWUgbWFwIGlzIHRvbyBzbWFsbC4gQ29uc2lkZXIgcmV2aWV3aW5nIHRoZSBkZWdyZWUgbWFwIScpO1xuICAgICAgICAgICAgeFJhbmdlID0gSU5QVVRfTUFYX1ZBTFVFX01JTklNVU07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBWUk1Mb29rQXRSYW5nZU1hcCh4UmFuZ2UsIHlSYW5nZSk7XG4gICAgfVxuICAgIF9pbXBvcnRMb29rQXQoaHVtYW5vaWQsIGFwcGxpZXIpIHtcbiAgICAgICAgY29uc3QgbG9va0F0ID0gbmV3IFZSTUxvb2tBdChodW1hbm9pZCwgYXBwbGllcik7XG4gICAgICAgIGlmICh0aGlzLmhlbHBlclJvb3QpIHtcbiAgICAgICAgICAgIGNvbnN0IGhlbHBlciA9IG5ldyBWUk1Mb29rQXRIZWxwZXIobG9va0F0KTtcbiAgICAgICAgICAgIHRoaXMuaGVscGVyUm9vdC5hZGQoaGVscGVyKTtcbiAgICAgICAgICAgIGhlbHBlci5yZW5kZXJPcmRlciA9IHRoaXMuaGVscGVyUm9vdC5yZW5kZXJPcmRlcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9va0F0O1xuICAgIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG4vKipcbiAqIFJlcHJlc2VudHMgYSB0eXBlIG9mIGFwcGxpZXIuXG4gKi9cbmNvbnN0IFZSTUxvb2tBdFR5cGVOYW1lID0ge1xuICAgIEJvbmU6ICdib25lJyxcbiAgICBFeHByZXNzaW9uOiAnZXhwcmVzc2lvbicsXG59O1xuXG4vKipcbiAqIFlvaW5rZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL2Jsb2IvbWFzdGVyL2V4YW1wbGVzL2pzbS9sb2FkZXJzL0dMVEZMb2FkZXIuanNcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVVSTCh1cmwsIHBhdGgpIHtcbiAgICAvLyBJbnZhbGlkIFVSTFxuICAgIGlmICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJyB8fCB1cmwgPT09ICcnKVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgLy8gSG9zdCBSZWxhdGl2ZSBVUkxcbiAgICBpZiAoL15odHRwcz86XFwvXFwvL2kudGVzdChwYXRoKSAmJiAvXlxcLy8udGVzdCh1cmwpKSB7XG4gICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoLyheaHR0cHM/OlxcL1xcL1teL10rKS4qL2ksICckMScpO1xuICAgIH1cbiAgICAvLyBBYnNvbHV0ZSBVUkwgaHR0cDovLyxodHRwczovLywvL1xuICAgIGlmICgvXihodHRwcz86KT9cXC9cXC8vaS50ZXN0KHVybCkpXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgLy8gRGF0YSBVUklcbiAgICBpZiAoL15kYXRhOi4qLC4qJC9pLnRlc3QodXJsKSlcbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICAvLyBCbG9iIFVSTFxuICAgIGlmICgvXmJsb2I6LiokL2kudGVzdCh1cmwpKVxuICAgICAgICByZXR1cm4gdXJsO1xuICAgIC8vIFJlbGF0aXZlIFVSTFxuICAgIHJldHVybiBwYXRoICsgdXJsO1xufVxuXG4vKipcbiAqIFBvc3NpYmxlIHNwZWMgdmVyc2lvbnMgaXQgcmVjb2duaXplcy5cbiAqL1xuY29uc3QgUE9TU0lCTEVfU1BFQ19WRVJTSU9OUyA9IG5ldyBTZXQoWycxLjAnLCAnMS4wLWJldGEnXSk7XG4vKipcbiAqIEEgcGx1Z2luIG9mIEdMVEZMb2FkZXIgdGhhdCBpbXBvcnRzIGEge0BsaW5rIFZSTTFNZXRhfSBmcm9tIGEgVlJNIGV4dGVuc2lvbiBvZiBhIEdMVEYuXG4gKi9cbmNsYXNzIFZSTU1ldGFMb2FkZXJQbHVnaW4ge1xuICAgIGdldCBuYW1lKCkge1xuICAgICAgICAvLyBXZSBzaG91bGQgdXNlIHRoZSBleHRlbnNpb24gbmFtZSBpbnN0ZWFkIGJ1dCB3ZSBoYXZlIG11bHRpcGxlIHBsdWdpbnMgZm9yIGFuIGV4dGVuc2lvbi4uLlxuICAgICAgICByZXR1cm4gJ1ZSTU1ldGFMb2FkZXJQbHVnaW4nO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihwYXJzZXIsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuICAgICAgICB0aGlzLm5lZWRUaHVtYm5haWxJbWFnZSA9IChfYSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5uZWVkVGh1bWJuYWlsSW1hZ2UpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRydWU7XG4gICAgICAgIHRoaXMuYWNjZXB0TGljZW5zZVVybHMgPSAoX2IgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYWNjZXB0TGljZW5zZVVybHMpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IFsnaHR0cHM6Ly92cm0uZGV2L2xpY2Vuc2VzLzEuMC8nXTtcbiAgICAgICAgdGhpcy5hY2NlcHRWME1ldGEgPSAoX2MgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYWNjZXB0VjBNZXRhKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiB0cnVlO1xuICAgIH1cbiAgICBhZnRlclJvb3QoZ2x0Zikge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgZ2x0Zi51c2VyRGF0YS52cm1NZXRhID0geWllbGQgdGhpcy5faW1wb3J0KGdsdGYpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX2ltcG9ydChnbHRmKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCB2MVJlc3VsdCA9IHlpZWxkIHRoaXMuX3YxSW1wb3J0KGdsdGYpO1xuICAgICAgICAgICAgaWYgKHYxUmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdjFSZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2MFJlc3VsdCA9IHlpZWxkIHRoaXMuX3YwSW1wb3J0KGdsdGYpO1xuICAgICAgICAgICAgaWYgKHYwUmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdjBSZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF92MUltcG9ydChnbHRmKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QganNvbiA9IHRoaXMucGFyc2VyLmpzb247XG4gICAgICAgICAgICAvLyBlYXJseSBhYm9ydCBpZiBpdCBkb2Vzbid0IHVzZSB2cm1cbiAgICAgICAgICAgIGNvbnN0IGlzVlJNVXNlZCA9ICgoX2EgPSBqc29uLmV4dGVuc2lvbnNVc2VkKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaW5kZXhPZignVlJNQ192cm0nKSkgIT09IC0xO1xuICAgICAgICAgICAgaWYgKCFpc1ZSTVVzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IChfYiA9IGpzb24uZXh0ZW5zaW9ucykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iWydWUk1DX3ZybSddO1xuICAgICAgICAgICAgaWYgKGV4dGVuc2lvbiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzcGVjVmVyc2lvbiA9IGV4dGVuc2lvbi5zcGVjVmVyc2lvbjtcbiAgICAgICAgICAgIGlmICghUE9TU0lCTEVfU1BFQ19WRVJTSU9OUy5oYXMoc3BlY1ZlcnNpb24pKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBWUk1NZXRhTG9hZGVyUGx1Z2luOiBVbmtub3duIFZSTUNfdnJtIHNwZWNWZXJzaW9uIFwiJHtzcGVjVmVyc2lvbn1cImApO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2NoZW1hTWV0YSA9IGV4dGVuc2lvbi5tZXRhO1xuICAgICAgICAgICAgaWYgKCFzY2hlbWFNZXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0aHJvdyBhbiBlcnJvciBpZiBhY2NlcHRWME1ldGEgaXMgZmFsc2VcbiAgICAgICAgICAgIGNvbnN0IGxpY2Vuc2VVcmwgPSBzY2hlbWFNZXRhLmxpY2Vuc2VVcmw7XG4gICAgICAgICAgICBjb25zdCBhY2NlcHRMaWNlbnNlVXJsc1NldCA9IG5ldyBTZXQodGhpcy5hY2NlcHRMaWNlbnNlVXJscyk7XG4gICAgICAgICAgICBpZiAoIWFjY2VwdExpY2Vuc2VVcmxzU2V0LmhhcyhsaWNlbnNlVXJsKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVlJNTWV0YUxvYWRlclBsdWdpbjogVGhlIGxpY2Vuc2UgdXJsIFwiJHtsaWNlbnNlVXJsfVwiIGlzIG5vdCBhY2NlcHRlZGApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHRodW1ibmFpbEltYWdlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKHRoaXMubmVlZFRodW1ibmFpbEltYWdlICYmIHNjaGVtYU1ldGEudGh1bWJuYWlsSW1hZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRodW1ibmFpbEltYWdlID0gKF9jID0gKHlpZWxkIHRoaXMuX2V4dHJhY3RHTFRGSW1hZ2Uoc2NoZW1hTWV0YS50aHVtYm5haWxJbWFnZSkpKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1ldGFWZXJzaW9uOiAnMScsXG4gICAgICAgICAgICAgICAgbmFtZTogc2NoZW1hTWV0YS5uYW1lLFxuICAgICAgICAgICAgICAgIHZlcnNpb246IHNjaGVtYU1ldGEudmVyc2lvbixcbiAgICAgICAgICAgICAgICBhdXRob3JzOiBzY2hlbWFNZXRhLmF1dGhvcnMsXG4gICAgICAgICAgICAgICAgY29weXJpZ2h0SW5mb3JtYXRpb246IHNjaGVtYU1ldGEuY29weXJpZ2h0SW5mb3JtYXRpb24sXG4gICAgICAgICAgICAgICAgY29udGFjdEluZm9ybWF0aW9uOiBzY2hlbWFNZXRhLmNvbnRhY3RJbmZvcm1hdGlvbixcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBzY2hlbWFNZXRhLnJlZmVyZW5jZXMsXG4gICAgICAgICAgICAgICAgdGhpcmRQYXJ0eUxpY2Vuc2VzOiBzY2hlbWFNZXRhLnRoaXJkUGFydHlMaWNlbnNlcyxcbiAgICAgICAgICAgICAgICB0aHVtYm5haWxJbWFnZSxcbiAgICAgICAgICAgICAgICBsaWNlbnNlVXJsOiBzY2hlbWFNZXRhLmxpY2Vuc2VVcmwsXG4gICAgICAgICAgICAgICAgYXZhdGFyUGVybWlzc2lvbjogc2NoZW1hTWV0YS5hdmF0YXJQZXJtaXNzaW9uLFxuICAgICAgICAgICAgICAgIGFsbG93RXhjZXNzaXZlbHlWaW9sZW50VXNhZ2U6IHNjaGVtYU1ldGEuYWxsb3dFeGNlc3NpdmVseVZpb2xlbnRVc2FnZSxcbiAgICAgICAgICAgICAgICBhbGxvd0V4Y2Vzc2l2ZWx5U2V4dWFsVXNhZ2U6IHNjaGVtYU1ldGEuYWxsb3dFeGNlc3NpdmVseVNleHVhbFVzYWdlLFxuICAgICAgICAgICAgICAgIGNvbW1lcmNpYWxVc2FnZTogc2NoZW1hTWV0YS5jb21tZXJjaWFsVXNhZ2UsXG4gICAgICAgICAgICAgICAgYWxsb3dQb2xpdGljYWxPclJlbGlnaW91c1VzYWdlOiBzY2hlbWFNZXRhLmFsbG93UG9saXRpY2FsT3JSZWxpZ2lvdXNVc2FnZSxcbiAgICAgICAgICAgICAgICBhbGxvd0FudGlzb2NpYWxPckhhdGVVc2FnZTogc2NoZW1hTWV0YS5hbGxvd0FudGlzb2NpYWxPckhhdGVVc2FnZSxcbiAgICAgICAgICAgICAgICBjcmVkaXROb3RhdGlvbjogc2NoZW1hTWV0YS5jcmVkaXROb3RhdGlvbixcbiAgICAgICAgICAgICAgICBhbGxvd1JlZGlzdHJpYnV0aW9uOiBzY2hlbWFNZXRhLmFsbG93UmVkaXN0cmlidXRpb24sXG4gICAgICAgICAgICAgICAgbW9kaWZpY2F0aW9uOiBzY2hlbWFNZXRhLm1vZGlmaWNhdGlvbixcbiAgICAgICAgICAgICAgICBvdGhlckxpY2Vuc2VVcmw6IHNjaGVtYU1ldGEub3RoZXJMaWNlbnNlVXJsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF92MEltcG9ydChnbHRmKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnBhcnNlci5qc29uO1xuICAgICAgICAgICAgLy8gZWFybHkgYWJvcnQgaWYgaXQgZG9lc24ndCB1c2UgdnJtXG4gICAgICAgICAgICBjb25zdCB2cm1FeHQgPSAoX2EgPSBqc29uLmV4dGVuc2lvbnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5WUk07XG4gICAgICAgICAgICBpZiAoIXZybUV4dCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2NoZW1hTWV0YSA9IHZybUV4dC5tZXRhO1xuICAgICAgICAgICAgaWYgKCFzY2hlbWFNZXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0aHJvdyBhbiBlcnJvciBpZiBhY2NlcHRWME1ldGEgaXMgZmFsc2VcbiAgICAgICAgICAgIGlmICghdGhpcy5hY2NlcHRWME1ldGEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZSTU1ldGFMb2FkZXJQbHVnaW46IEF0dGVtcHRlZCB0byBsb2FkIFZSTTAuMCBtZXRhIGJ1dCBhY2NlcHRWME1ldGEgaXMgZmFsc2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGxvYWQgdGh1bWJuYWlsIHRleHR1cmVcbiAgICAgICAgICAgIGxldCB0ZXh0dXJlO1xuICAgICAgICAgICAgaWYgKHRoaXMubmVlZFRodW1ibmFpbEltYWdlICYmIHNjaGVtYU1ldGEudGV4dHVyZSAhPSBudWxsICYmIHNjaGVtYU1ldGEudGV4dHVyZSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0ZXh0dXJlID0geWllbGQgdGhpcy5wYXJzZXIuZ2V0RGVwZW5kZW5jeSgndGV4dHVyZScsIHNjaGVtYU1ldGEudGV4dHVyZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1ldGFWZXJzaW9uOiAnMCcsXG4gICAgICAgICAgICAgICAgYWxsb3dlZFVzZXJOYW1lOiBzY2hlbWFNZXRhLmFsbG93ZWRVc2VyTmFtZSxcbiAgICAgICAgICAgICAgICBhdXRob3I6IHNjaGVtYU1ldGEuYXV0aG9yLFxuICAgICAgICAgICAgICAgIGNvbW1lcmNpYWxVc3NhZ2VOYW1lOiBzY2hlbWFNZXRhLmNvbW1lcmNpYWxVc3NhZ2VOYW1lLFxuICAgICAgICAgICAgICAgIGNvbnRhY3RJbmZvcm1hdGlvbjogc2NoZW1hTWV0YS5jb250YWN0SW5mb3JtYXRpb24sXG4gICAgICAgICAgICAgICAgbGljZW5zZU5hbWU6IHNjaGVtYU1ldGEubGljZW5zZU5hbWUsXG4gICAgICAgICAgICAgICAgb3RoZXJMaWNlbnNlVXJsOiBzY2hlbWFNZXRhLm90aGVyTGljZW5zZVVybCxcbiAgICAgICAgICAgICAgICBvdGhlclBlcm1pc3Npb25Vcmw6IHNjaGVtYU1ldGEub3RoZXJQZXJtaXNzaW9uVXJsLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZTogc2NoZW1hTWV0YS5yZWZlcmVuY2UsXG4gICAgICAgICAgICAgICAgc2V4dWFsVXNzYWdlTmFtZTogc2NoZW1hTWV0YS5zZXh1YWxVc3NhZ2VOYW1lLFxuICAgICAgICAgICAgICAgIHRleHR1cmU6IHRleHR1cmUgIT09IG51bGwgJiYgdGV4dHVyZSAhPT0gdm9pZCAwID8gdGV4dHVyZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB0aXRsZTogc2NoZW1hTWV0YS50aXRsZSxcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiBzY2hlbWFNZXRhLnZlcnNpb24sXG4gICAgICAgICAgICAgICAgdmlvbGVudFVzc2FnZU5hbWU6IHNjaGVtYU1ldGEudmlvbGVudFVzc2FnZU5hbWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX2V4dHJhY3RHTFRGSW1hZ2UoaW5kZXgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QganNvbiA9IHRoaXMucGFyc2VyLmpzb247XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSAoX2EgPSBqc29uLmltYWdlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW2luZGV4XTtcbiAgICAgICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVlJNTWV0YUxvYWRlclBsdWdpbjogQXR0ZW1wdCB0byB1c2UgaW1hZ2VzWyR7aW5kZXh9XSBvZiBnbFRGIGFzIGEgdGh1bWJuYWlsIGJ1dCB0aGUgaW1hZ2UgZG9lc24ndCBleGlzdGApO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL2Jsb2IvcjEyNC9leGFtcGxlcy9qc20vbG9hZGVycy9HTFRGTG9hZGVyLmpzI0wyNDY3XG4gICAgICAgICAgICAvLyBgc291cmNlLnVyaWAgbWlnaHQgYmUgYSByZWZlcmVuY2UgdG8gYSBmaWxlXG4gICAgICAgICAgICBsZXQgc291cmNlVVJJID0gc291cmNlLnVyaTtcbiAgICAgICAgICAgIC8vIExvYWQgdGhlIGJpbmFyeSBhcyBhIGJsb2JcbiAgICAgICAgICAgIGlmIChzb3VyY2UuYnVmZmVyVmlldyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnVmZmVyVmlldyA9IHlpZWxkIHRoaXMucGFyc2VyLmdldERlcGVuZGVuY3koJ2J1ZmZlclZpZXcnLCBzb3VyY2UuYnVmZmVyVmlldyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtidWZmZXJWaWV3XSwgeyB0eXBlOiBzb3VyY2UubWltZVR5cGUgfSk7XG4gICAgICAgICAgICAgICAgc291cmNlVVJJID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzb3VyY2VVUkkgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVlJNTWV0YUxvYWRlclBsdWdpbjogQXR0ZW1wdCB0byB1c2UgaW1hZ2VzWyR7aW5kZXh9XSBvZiBnbFRGIGFzIGEgdGh1bWJuYWlsIGJ1dCB0aGUgaW1hZ2UgY291bGRuJ3QgbG9hZCBwcm9wZXJseWApO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbG9hZGVyID0gbmV3IFRIUkVFLkltYWdlTG9hZGVyKCk7XG4gICAgICAgICAgICByZXR1cm4geWllbGQgbG9hZGVyLmxvYWRBc3luYyhyZXNvbHZlVVJMKHNvdXJjZVVSSSwgdGhpcy5wYXJzZXIub3B0aW9ucy5wYXRoKSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdWUk1NZXRhTG9hZGVyUGx1Z2luOiBGYWlsZWQgdG8gbG9hZCBhIHRodW1ibmFpbCBpbWFnZScpO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBIGNsYXNzIHRoYXQgcmVwcmVzZW50cyBhIHNpbmdsZSBWUk0gbW9kZWwuXG4gKiBUaGlzIGNsYXNzIG9ubHkgaW5jbHVkZXMgY29yZSBzcGVjIG9mIHRoZSBWUk0gKGBWUk1DX3ZybWApLlxuICovXG5jbGFzcyBWUk1Db3JlIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgVlJNIGluc3RhbmNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtcyBbW1ZSTVBhcmFtZXRlcnNdXSB0aGF0IHJlcHJlc2VudHMgY29tcG9uZW50cyBvZiB0aGUgVlJNXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocGFyYW1zKSB7XG4gICAgICAgIHRoaXMuc2NlbmUgPSBwYXJhbXMuc2NlbmU7XG4gICAgICAgIHRoaXMubWV0YSA9IHBhcmFtcy5tZXRhO1xuICAgICAgICB0aGlzLmh1bWFub2lkID0gcGFyYW1zLmh1bWFub2lkO1xuICAgICAgICB0aGlzLmV4cHJlc3Npb25NYW5hZ2VyID0gcGFyYW1zLmV4cHJlc3Npb25NYW5hZ2VyO1xuICAgICAgICB0aGlzLmZpcnN0UGVyc29uID0gcGFyYW1zLmZpcnN0UGVyc29uO1xuICAgICAgICB0aGlzLmxvb2tBdCA9IHBhcmFtcy5sb29rQXQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqICoqWW91IG5lZWQgdG8gY2FsbCB0aGlzIG9uIHlvdXIgdXBkYXRlIGxvb3AuKipcbiAgICAgKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gdXBkYXRlcyBldmVyeSBWUk0gY29tcG9uZW50cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkZWx0YSBkZWx0YVRpbWVcbiAgICAgKi9cbiAgICB1cGRhdGUoZGVsdGEpIHtcbiAgICAgICAgdGhpcy5odW1hbm9pZC51cGRhdGUoKTtcbiAgICAgICAgaWYgKHRoaXMubG9va0F0KSB7XG4gICAgICAgICAgICB0aGlzLmxvb2tBdC51cGRhdGUoZGVsdGEpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmV4cHJlc3Npb25NYW5hZ2VyKSB7XG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25NYW5hZ2VyLnVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5jbGFzcyBWUk1Db3JlTG9hZGVyUGx1Z2luIHtcbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgICAgLy8gV2Ugc2hvdWxkIHVzZSB0aGUgZXh0ZW5zaW9uIG5hbWUgaW5zdGVhZCBidXQgd2UgaGF2ZSBtdWx0aXBsZSBwbHVnaW5zIGZvciBhbiBleHRlbnNpb24uLi5cbiAgICAgICAgcmV0dXJuICdWUk1DX3ZybSc7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhcnNlciwgb3B0aW9ucykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICAgICAgY29uc3QgaGVscGVyUm9vdCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5oZWxwZXJSb290O1xuICAgICAgICBjb25zdCBhdXRvVXBkYXRlSHVtYW5Cb25lcyA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5hdXRvVXBkYXRlSHVtYW5Cb25lcztcbiAgICAgICAgdGhpcy5leHByZXNzaW9uUGx1Z2luID0gKF9hID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmV4cHJlc3Npb25QbHVnaW4pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG5ldyBWUk1FeHByZXNzaW9uTG9hZGVyUGx1Z2luKHBhcnNlcik7XG4gICAgICAgIHRoaXMuZmlyc3RQZXJzb25QbHVnaW4gPSAoX2IgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZmlyc3RQZXJzb25QbHVnaW4pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IG5ldyBWUk1GaXJzdFBlcnNvbkxvYWRlclBsdWdpbihwYXJzZXIpO1xuICAgICAgICB0aGlzLmh1bWFub2lkUGx1Z2luID1cbiAgICAgICAgICAgIChfYyA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5odW1hbm9pZFBsdWdpbikgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogbmV3IFZSTUh1bWFub2lkTG9hZGVyUGx1Z2luKHBhcnNlciwgeyBoZWxwZXJSb290LCBhdXRvVXBkYXRlSHVtYW5Cb25lcyB9KTtcbiAgICAgICAgdGhpcy5sb29rQXRQbHVnaW4gPSAoX2QgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9va0F0UGx1Z2luKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiBuZXcgVlJNTG9va0F0TG9hZGVyUGx1Z2luKHBhcnNlciwgeyBoZWxwZXJSb290IH0pO1xuICAgICAgICB0aGlzLm1ldGFQbHVnaW4gPSAoX2UgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubWV0YVBsdWdpbikgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogbmV3IFZSTU1ldGFMb2FkZXJQbHVnaW4ocGFyc2VyKTtcbiAgICB9XG4gICAgYWZ0ZXJSb290KGdsdGYpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIHlpZWxkIHRoaXMubWV0YVBsdWdpbi5hZnRlclJvb3QoZ2x0Zik7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmh1bWFub2lkUGx1Z2luLmFmdGVyUm9vdChnbHRmKTtcbiAgICAgICAgICAgIHlpZWxkIHRoaXMuZXhwcmVzc2lvblBsdWdpbi5hZnRlclJvb3QoZ2x0Zik7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmxvb2tBdFBsdWdpbi5hZnRlclJvb3QoZ2x0Zik7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmZpcnN0UGVyc29uUGx1Z2luLmFmdGVyUm9vdChnbHRmKTtcbiAgICAgICAgICAgIGNvbnN0IG1ldGEgPSBnbHRmLnVzZXJEYXRhLnZybU1ldGE7XG4gICAgICAgICAgICBjb25zdCBodW1hbm9pZCA9IGdsdGYudXNlckRhdGEudnJtSHVtYW5vaWQ7XG4gICAgICAgICAgICAvLyBtZXRhIGFuZCBodW1hbm9pZCBhcmUgcmVxdWlyZWQgdG8gYmUgYSBWUk0uXG4gICAgICAgICAgICAvLyBEb24ndCBjcmVhdGUgVlJNIGlmIHRoZXkgYXJlIG51bGxcbiAgICAgICAgICAgIGlmIChtZXRhICYmIGh1bWFub2lkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdnJtQ29yZSA9IG5ldyBWUk1Db3JlKHtcbiAgICAgICAgICAgICAgICAgICAgc2NlbmU6IGdsdGYuc2NlbmUsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25NYW5hZ2VyOiBnbHRmLnVzZXJEYXRhLnZybUV4cHJlc3Npb25NYW5hZ2VyLFxuICAgICAgICAgICAgICAgICAgICBmaXJzdFBlcnNvbjogZ2x0Zi51c2VyRGF0YS52cm1GaXJzdFBlcnNvbixcbiAgICAgICAgICAgICAgICAgICAgaHVtYW5vaWQsXG4gICAgICAgICAgICAgICAgICAgIGxvb2tBdDogZ2x0Zi51c2VyRGF0YS52cm1Mb29rQXQsXG4gICAgICAgICAgICAgICAgICAgIG1ldGEsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZ2x0Zi51c2VyRGF0YS52cm1Db3JlID0gdnJtQ29yZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBWUk1Db3JlLCBWUk1Db3JlTG9hZGVyUGx1Z2luLCBWUk1FeHByZXNzaW9uLCBWUk1FeHByZXNzaW9uTG9hZGVyUGx1Z2luLCBWUk1FeHByZXNzaW9uTWFuYWdlciwgVlJNRXhwcmVzc2lvbk1hdGVyaWFsQ29sb3JCaW5kLCBWUk1FeHByZXNzaW9uTWF0ZXJpYWxDb2xvclR5cGUsIFZSTUV4cHJlc3Npb25Nb3JwaFRhcmdldEJpbmQsIFZSTUV4cHJlc3Npb25PdmVycmlkZVR5cGUsIFZSTUV4cHJlc3Npb25QcmVzZXROYW1lLCBWUk1FeHByZXNzaW9uVGV4dHVyZVRyYW5zZm9ybUJpbmQsIFZSTUZpcnN0UGVyc29uLCBWUk1GaXJzdFBlcnNvbkxvYWRlclBsdWdpbiwgVlJNRmlyc3RQZXJzb25NZXNoQW5ub3RhdGlvblR5cGUsIFZSTUh1bWFuQm9uZUxpc3QsIFZSTUh1bWFuQm9uZU5hbWUsIFZSTUh1bWFuQm9uZVBhcmVudE1hcCwgVlJNSHVtYW5vaWQsIFZSTUh1bWFub2lkSGVscGVyLCBWUk1IdW1hbm9pZExvYWRlclBsdWdpbiwgVlJNTG9va0F0LCBWUk1Mb29rQXRCb25lQXBwbGllciwgVlJNTG9va0F0RXhwcmVzc2lvbkFwcGxpZXIsIFZSTUxvb2tBdEhlbHBlciwgVlJNTG9va0F0TG9hZGVyUGx1Z2luLCBWUk1Mb29rQXRSYW5nZU1hcCwgVlJNTG9va0F0VHlwZU5hbWUsIFZSTU1ldGFMb2FkZXJQbHVnaW4sIFZSTVJlcXVpcmVkSHVtYW5Cb25lTmFtZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkR2h5WldVdGRuSnRMV052Y21VdWJXOWtkV3hsTG1weklpd2ljMjkxY21ObGN5STZXeUl1TGk5emNtTXZaWGh3Y21WemMybHZibk12VmxKTlJYaHdjbVZ6YzJsdmJpNTBjeUlzSWk0dUx5NHVMeTR1TDI1dlpHVmZiVzlrZFd4bGN5OTBjMnhwWWk5MGMyeHBZaTVsY3pZdWFuTWlMQ0l1TGk5emNtTXZkWFJwYkhNdloyeDBaa1Y0ZEhKaFkzUlFjbWx0YVhScGRtVnpSbkp2YlU1dlpHVXVkSE1pTENJdUxpOXpjbU12ZFhScGJITXZaMngwWmtkbGRFRnpjMjlqYVdGMFpXUk5ZWFJsY21saGJFbHVaR1Y0TG5Seklpd2lMaTR2YzNKakwyVjRjSEpsYzNOcGIyNXpMMVpTVFVWNGNISmxjM05wYjI1UWNtVnpaWFJPWVcxbExuUnpJaXdpTGk0dmMzSmpMM1YwYVd4ekwzTmhkSFZ5WVhSbExuUnpJaXdpTGk0dmMzSmpMMlY0Y0hKbGMzTnBiMjV6TDFaU1RVVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeUxuUnpJaXdpTGk0dmMzSmpMMlY0Y0hKbGMzTnBiMjV6TDFaU1RVVjRjSEpsYzNOcGIyNU5ZWFJsY21saGJFTnZiRzl5Vkhsd1pTNTBjeUlzSWk0dUwzTnlZeTlsZUhCeVpYTnphVzl1Y3k5V1VrMUZlSEJ5WlhOemFXOXVUV0YwWlhKcFlXeERiMnh2Y2tKcGJtUXVkSE1pTENJdUxpOXpjbU12Wlhod2NtVnpjMmx2Ym5NdlZsSk5SWGh3Y21WemMybHZiazF2Y25Cb1ZHRnlaMlYwUW1sdVpDNTBjeUlzSWk0dUwzTnlZeTlsZUhCeVpYTnphVzl1Y3k5V1VrMUZlSEJ5WlhOemFXOXVWR1Y0ZEhWeVpWUnlZVzV6Wm05eWJVSnBibVF1ZEhNaUxDSXVMaTl6Y21NdlpYaHdjbVZ6YzJsdmJuTXZWbEpOUlhod2NtVnpjMmx2Ymt4dllXUmxjbEJzZFdkcGJpNTBjeUlzSWk0dUwzTnlZeTlsZUhCeVpYTnphVzl1Y3k5V1VrMUZlSEJ5WlhOemFXOXVUM1psY25KcFpHVlVlWEJsTG5Seklpd2lMaTR2YzNKakwyWnBjbk4wVUdWeWMyOXVMMVpTVFVacGNuTjBVR1Z5YzI5dUxuUnpJaXdpTGk0dmMzSmpMMlpwY25OMFVHVnljMjl1TDFaU1RVWnBjbk4wVUdWeWMyOXVURzloWkdWeVVHeDFaMmx1TG5Seklpd2lMaTR2YzNKakwyWnBjbk4wVUdWeWMyOXVMMVpTVFVacGNuTjBVR1Z5YzI5dVRXVnphRUZ1Ym05MFlYUnBiMjVVZVhCbExuUnpJaXdpTGk0dmMzSmpMMmgxYldGdWIybGtMMmhsYkhCbGNuTXZWbEpOU0hWdFlXNXZhV1JJWld4d1pYSXVkSE1pTENJdUxpOXpjbU12YUhWdFlXNXZhV1F2VmxKTlNIVnRZVzVDYjI1bFRHbHpkQzUwY3lJc0lpNHVMM055WXk5b2RXMWhibTlwWkM5V1VrMUlkVzFoYmtKdmJtVk9ZVzFsTG5Seklpd2lMaTR2YzNKakwyaDFiV0Z1YjJsa0wxWlNUVWgxYldGdVFtOXVaVkJoY21WdWRFMWhjQzUwY3lJc0lpNHVMM055WXk5MWRHbHNjeTl4ZFdGMFNXNTJaWEowUTI5dGNHRjBMblJ6SWl3aUxpNHZjM0pqTDJoMWJXRnViMmxrTDFaU1RWSnBaeTUwY3lJc0lpNHVMM055WXk5b2RXMWhibTlwWkM5V1VrMUlkVzFoYm05cFpGSnBaeTUwY3lJc0lpNHVMM055WXk5b2RXMWhibTlwWkM5V1VrMUlkVzFoYm05cFpDNTBjeUlzSWk0dUwzTnlZeTlvZFcxaGJtOXBaQzlXVWsxU1pYRjFhWEpsWkVoMWJXRnVRbTl1WlU1aGJXVXVkSE1pTENJdUxpOXpjbU12YUhWdFlXNXZhV1F2VmxKTlNIVnRZVzV2YVdSTWIyRmtaWEpRYkhWbmFXNHVkSE1pTENJdUxpOXpjbU12Ykc5dmEwRjBMMmhsYkhCbGNuTXZkWFJwYkhNdlJtRnVRblZtWm1WeVIyVnZiV1YwY25rdWRITWlMQ0l1TGk5emNtTXZiRzl2YTBGMEwyaGxiSEJsY25NdmRYUnBiSE12VEdsdVpVRnVaRk53YUdWeVpVSjFabVpsY2tkbGIyMWxkSEo1TG5Seklpd2lMaTR2YzNKakwyeHZiMnRCZEM5b1pXeHdaWEp6TDFaU1RVeHZiMnRCZEVobGJIQmxjaTUwY3lJc0lpNHVMM055WXk5MWRHbHNjeTluWlhSWGIzSnNaRkYxWVhSbGNtNXBiMjVNYVhSbExuUnpJaXdpTGk0dmMzSmpMMnh2YjJ0QmRDOTFkR2xzY3k5allXeGpRWHBwYlhWMGFFRnNkR2wwZFdSbExuUnpJaXdpTGk0dmMzSmpMMnh2YjJ0QmRDOTFkR2xzY3k5ellXNXBkR2w2WlVGdVoyeGxMblJ6SWl3aUxpNHZjM0pqTDJ4dmIydEJkQzlXVWsxTWIyOXJRWFF1ZEhNaUxDSXVMaTl6Y21NdmJHOXZhMEYwTDFaU1RVeHZiMnRCZEVKdmJtVkJjSEJzYVdWeUxuUnpJaXdpTGk0dmMzSmpMMnh2YjJ0QmRDOVdVazFNYjI5clFYUkZlSEJ5WlhOemFXOXVRWEJ3YkdsbGNpNTBjeUlzSWk0dUwzTnlZeTlzYjI5clFYUXZWbEpOVEc5dmEwRjBVbUZ1WjJWTllYQXVkSE1pTENJdUxpOXpjbU12Ykc5dmEwRjBMMVpTVFV4dmIydEJkRXh2WVdSbGNsQnNkV2RwYmk1MGN5SXNJaTR1TDNOeVl5OXNiMjlyUVhRdlZsSk5URzl2YTBGMFZIbHdaVTVoYldVdWRITWlMQ0l1TGk5emNtTXZkWFJwYkhNdmNtVnpiMngyWlZWU1RDNTBjeUlzSWk0dUwzTnlZeTl0WlhSaEwxWlNUVTFsZEdGTWIyRmtaWEpRYkhWbmFXNHVkSE1pTENJdUxpOXpjbU12VmxKTlEyOXlaUzUwY3lJc0lpNHVMM055WXk5V1VrMURiM0psVEc5aFpHVnlVR3gxWjJsdUxuUnpJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklGUklVa1ZGSUdaeWIyMGdKM1JvY21WbEp6dGNibWx0Y0c5eWRDQjdJRlpTVFVWNGNISmxjM05wYjI1Q2FXNWtJSDBnWm5KdmJTQW5MaTlXVWsxRmVIQnlaWE56YVc5dVFtbHVaQ2M3WEc1cGJYQnZjblFnZEhsd1pTQjdJRlpTVFVWNGNISmxjM05wYjI1UGRtVnljbWxrWlZSNWNHVWdmU0JtY205dElDY3VMMVpTVFVWNGNISmxjM05wYjI1UGRtVnljbWxrWlZSNWNHVW5PMXh1WEc0dkx5QmhibWx0WVhScGIyNU5hWGhsY2lEamdhN25tNlBvcHBibHI3N29zYUhqZ2EvamdJRlRZMlZ1WlNEamdhN2t1SzNqZ2F2bGhhWGpnYVBqZ2FiamdZVGpnb3ZsdjRYb3BvSGpnWXpqZ1lMamdvdmpnSUpjYmk4dklPT0JuZU9CcnVPQm4rT0NnZU9BZ2VpaHFPZWt1dU9DcXVPRGx1T0N1T09DcCtPQ3IrT0RpT09CcCtPQnIrT0JxdU9CaE9PQmtlT0NqT09CcWVPQWdVOWlhbVZqZERORUlPT0NrdWUybWVhSnYrT0JsK09CcGlCVFkyVnVaU0RqZ2F2bWlwWGxoYVhqZ2FmamdZM2pnb3ZqZ29qamdZYmpnYXZqZ1puamdvdmpnSUpjYm1WNGNHOXlkQ0JqYkdGemN5QldVazFGZUhCeVpYTnphVzl1SUdWNGRHVnVaSE1nVkVoU1JVVXVUMkpxWldOME0wUWdlMXh1SUNBdktpcGNiaUFnSUNvZ1RtRnRaU0J2WmlCMGFHbHpJR1Y0Y0hKbGMzTnBiMjR1WEc0Z0lDQXFJRVJwYzNScGJtZDFhWE5vWldRZ2QybDBhQ0JnYm1GdFpXQWdjMmx1WTJVZ1lHNWhiV1ZnSUhkcGJHd2dZbVVnWTI5dVpteHBZM1JsWkNCM2FYUm9JRTlpYW1WamRETkVMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR1Y0Y0hKbGMzTnBiMjVPWVcxbE9pQnpkSEpwYm1jN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSb1pTQmpkWEp5Wlc1MElIZGxhV2RvZENCdlppQjBhR1VnWlhod2NtVnpjMmx2Ymk1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCM1pXbG5hSFFnUFNBd0xqQTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbHVkR1Z5Y0hKbGRDQjJZV3gxWlhNZ1ozSmxZWFJsY2lCMGFHRnVJREF1TlNCaGN5QXhMakFzSUc5eWRHaGxjbmRwYzJVZ01DNHdMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2x6UW1sdVlYSjVJRDBnWm1Gc2MyVTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGTndaV05wWm5rZ2FHOTNJSFJvWlNCbGVIQnlaWE56YVc5dUlHOTJaWEp5YVdSbGN5QmliR2x1YXlCbGVIQnlaWE56YVc5dWN5NWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnZkbVZ5Y21sa1pVSnNhVzVyT2lCV1VrMUZlSEJ5WlhOemFXOXVUM1psY25KcFpHVlVlWEJsSUQwZ0oyNXZibVVuTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJUY0dWamFXWjVJR2h2ZHlCMGFHVWdaWGh3Y21WemMybHZiaUJ2ZG1WeWNtbGtaWE1nYkc5dmEwRjBJR1Y0Y0hKbGMzTnBiMjV6TGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUc5MlpYSnlhV1JsVEc5dmEwRjBPaUJXVWsxRmVIQnlaWE56YVc5dVQzWmxjbkpwWkdWVWVYQmxJRDBnSjI1dmJtVW5PMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlRjR1ZqYVdaNUlHaHZkeUIwYUdVZ1pYaHdjbVZ6YzJsdmJpQnZkbVZ5Y21sa1pYTWdiVzkxZEdnZ1pYaHdjbVZ6YzJsdmJuTXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdiM1psY25KcFpHVk5iM1YwYURvZ1ZsSk5SWGh3Y21WemMybHZiazkyWlhKeWFXUmxWSGx3WlNBOUlDZHViMjVsSnp0Y2JseHVJQ0J3Y21sMllYUmxJRjlpYVc1a2N6b2dWbEpOUlhod2NtVnpjMmx2YmtKcGJtUmJYU0E5SUZ0ZE8xeHVYRzRnSUc5MlpYSnlhV1JsSUhKbFlXUnZibXg1SUhSNWNHVTZJSE4wY21sdVp5QjhJQ2RXVWsxRmVIQnlaWE56YVc5dUp6dGNibHh1SUNBdktpcGNiaUFnSUNvZ1FTQjJZV3gxWlNCeVpYQnlaWE5sYm5SeklHaHZkeUJ0ZFdOb0lHbDBJSE5vYjNWc1pDQnZkbVZ5Y21sa1pTQmliR2x1YXlCbGVIQnlaWE56YVc5dWN5NWNiaUFnSUNvZ1lEQXVNR0FnUFQwZ2JtOGdiM1psY25KcFpHVWdZWFFnWVd4c0xDQmdNUzR3WUNBOVBTQmpiMjF3YkdWMFpXeDVJR0pzYjJOcklIUm9aU0JsZUhCeVpYTnphVzl1Y3k1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCblpYUWdiM1psY25KcFpHVkNiR2x1YTBGdGIzVnVkQ2dwT2lCdWRXMWlaWElnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbTkyWlhKeWFXUmxRbXhwYm1zZ1BUMDlJQ2RpYkc5amF5Y3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQXdMakFnUENCMGFHbHpMbmRsYVdkb2RDQS9JREV1TUNBNklEQXVNRHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFJvYVhNdWIzWmxjbkpwWkdWQ2JHbHVheUE5UFQwZ0oySnNaVzVrSnlrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkMlZwWjJoME8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdNQzR3TzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQklIWmhiSFZsSUhKbGNISmxjMlZ1ZEhNZ2FHOTNJRzExWTJnZ2FYUWdjMmh2ZFd4a0lHOTJaWEp5YVdSbElHeHZiMnRCZENCbGVIQnlaWE56YVc5dWN5NWNiaUFnSUNvZ1lEQXVNR0FnUFQwZ2JtOGdiM1psY25KcFpHVWdZWFFnWVd4c0xDQmdNUzR3WUNBOVBTQmpiMjF3YkdWMFpXeDVJR0pzYjJOcklIUm9aU0JsZUhCeVpYTnphVzl1Y3k1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCblpYUWdiM1psY25KcFpHVk1iMjlyUVhSQmJXOTFiblFvS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV2ZG1WeWNtbGtaVXh2YjJ0QmRDQTlQVDBnSjJKc2IyTnJKeWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJREF1TUNBOElIUm9hWE11ZDJWcFoyaDBJRDhnTVM0d0lEb2dNQzR3TzF4dUlDQWdJSDBnWld4elpTQnBaaUFvZEdocGN5NXZkbVZ5Y21sa1pVeHZiMnRCZENBOVBUMGdKMkpzWlc1a0p5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11ZDJWcFoyaDBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnTUM0d08xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJJSFpoYkhWbElISmxjSEpsYzJWdWRITWdhRzkzSUcxMVkyZ2dhWFFnYzJodmRXeGtJRzkyWlhKeWFXUmxJRzF2ZFhSb0lHVjRjSEpsYzNOcGIyNXpMbHh1SUNBZ0tpQmdNQzR3WUNBOVBTQnVieUJ2ZG1WeWNtbGtaU0JoZENCaGJHd3NJR0F4TGpCZ0lEMDlJR052YlhCc1pYUmxiSGtnWW14dlkyc2dkR2hsSUdWNGNISmxjM05wYjI1ekxseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkQ0J2ZG1WeWNtbGtaVTF2ZFhSb1FXMXZkVzUwS0NrNklHNTFiV0psY2lCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11YjNabGNuSnBaR1ZOYjNWMGFDQTlQVDBnSjJKc2IyTnJKeWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJREF1TUNBOElIUm9hWE11ZDJWcFoyaDBJRDhnTVM0d0lEb2dNQzR3TzF4dUlDQWdJSDBnWld4elpTQnBaaUFvZEdocGN5NXZkbVZ5Y21sa1pVMXZkWFJvSUQwOVBTQW5ZbXhsYm1RbktTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTUzWldsbmFIUTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9aWGh3Y21WemMybHZiazVoYldVNklITjBjbWx1WnlrZ2UxeHVJQ0FnSUhOMWNHVnlLQ2s3WEc1Y2JpQWdJQ0IwYUdsekxtNWhiV1VnUFNCZ1ZsSk5SWGh3Y21WemMybHZibDhrZTJWNGNISmxjM05wYjI1T1lXMWxmV0E3WEc0Z0lDQWdkR2hwY3k1bGVIQnlaWE56YVc5dVRtRnRaU0E5SUdWNGNISmxjM05wYjI1T1lXMWxPMXh1WEc0Z0lDQWdMeThnZEhKaGRtVnljMlVnNXBtQzQ0R3U1cFdSNXJpSTVvbUw1cTYxNDRHbzQ0R1g0NEdtSUU5aWFtVmpkRE5FSU9PQnArT0JyK09CcXVPQmhPT0JrK09CcU9PQ2t1YVlqdWVrdXVPQmwrT0JwdU9CaXVPQmoxeHVJQ0FnSUhSb2FYTXVkSGx3WlNBOUlDZFdVazFGZUhCeVpYTnphVzl1Snp0Y2JseHVJQ0FnSUM4dklPaWhxT2VrdXVlYnJ1ZWFoT09CcnVPQ3F1T0RsdU9DdU9PQ3ArT0NyK09EaU9PQnArT0JyK09CcXVPQmhPT0JydU9CcCtPQWdlaXlvT2lOdCtpN3ZlYTRtK09CcnVPQm4rT0NnZU9CcXlCMmFYTnBZbXhsSU9PQ2tpQm1ZV3h6WlNEamdhdmpnWmZqZ2FiamdZcmpnWS9qZ0lKY2JpQWdJQ0F2THlEamdaUGpnb3pqZ2F2amdvampnb3JqZ0lIamdaUGpnYTdqZ3FUamc3UGpncm5qZ3Ivamc3UGpncm5qZ2F2bHI3N2pnWm5qZ292bXI0N2pnNVhqZzZ6amc3empnNkRqZ2E0Z2JXRjBjbWw0SU9pSHF1V0xsZWlvaU9ldWwrT0NrdWVjZ2VlVnBlT0JwK09CamVPQ2krT0FnbHh1SUNBZ0lIUm9hWE11ZG1semFXSnNaU0E5SUdaaGJITmxPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR0ZrWkVKcGJtUW9ZbWx1WkRvZ1ZsSk5SWGh3Y21WemMybHZia0pwYm1RcE9pQjJiMmxrSUh0Y2JpQWdJQ0IwYUdsekxsOWlhVzVrY3k1d2RYTm9LR0pwYm1RcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUZ3Y0d4NUlIZGxhV2RvZENCMGJ5QmxkbVZ5ZVNCaGMzTnBaMjVsWkNCaWJHVnVaQ0J6YUdGd1pYTXVYRzRnSUNBcUlGTm9iM1ZzWkNCaVpTQmpZV3hzWldRZ1pYWmxjbmtnWm5KaGJXVXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdZWEJ3YkhsWFpXbG5hSFFvYjNCMGFXOXVjejg2SUh0Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCTmRXeDBhWEJzYVdWeklHRWdkbUZzZFdVZ2RHOGdhWFJ6SUhkbGFXZG9kQ0IwYnlCaGNIQnNlUzVjYmlBZ0lDQWdLaUJKYm5SbGJtUmxaQ0IwYnlCaVpTQjFjMlZrSUdadmNpQnZkbVZ5Y21sa2FXNW5JR0Z1SUdWNGNISmxjM05wYjI0Z2QyVnBaMmgwSUdKNUlHRnViM1JvWlhJZ1pYaHdjbVZ6YzJsdmJpNWNiaUFnSUNBZ0tpQlRaV1VnWVd4emJ6b2dlMEJzYVc1cklHOTJaWEp5YVdSbFFteHBibXQ5TENCN1FHeHBibXNnYjNabGNuSnBaR1ZNYjI5clFYUjlMQ0I3UUd4cGJtc2diM1psY25KcFpHVk5iM1YwYUgxY2JpQWdJQ0FnS2k5Y2JpQWdJQ0J0ZFd4MGFYQnNhV1Z5UHpvZ2JuVnRZbVZ5TzF4dUlDQjlLVG9nZG05cFpDQjdYRzRnSUNBZ2JHVjBJR0ZqZEhWaGJGZGxhV2RvZENBOUlIUm9hWE11YVhOQ2FXNWhjbmtnUHlBb2RHaHBjeTUzWldsbmFIUWdQRDBnTUM0MUlEOGdNQzR3SURvZ01TNHdLU0E2SUhSb2FYTXVkMlZwWjJoME8xeHVJQ0FnSUdGamRIVmhiRmRsYVdkb2RDQXFQU0J2Y0hScGIyNXpQeTV0ZFd4MGFYQnNhV1Z5SUQ4L0lERXVNRHRjYmx4dUlDQWdJSFJvYVhNdVgySnBibVJ6TG1admNrVmhZMmdvS0dKcGJtUXBJRDArSUdKcGJtUXVZWEJ3YkhsWFpXbG5hSFFvWVdOMGRXRnNWMlZwWjJoMEtTazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTJ4bFlYSWdjSEpsZG1sdmRYTnNlU0JoYzNOcFoyNWxaQ0JpYkdWdVpDQnphR0Z3WlhNdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1kyeGxZWEpCY0hCc2FXVmtWMlZwWjJoMEtDazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVYMkpwYm1SekxtWnZja1ZoWTJnb0tHSnBibVFwSUQwK0lHSnBibVF1WTJ4bFlYSkJjSEJzYVdWa1YyVnBaMmgwS0NrcE8xeHVJQ0I5WEc1OVhHNGlMQ0l2S2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FYSEpjYmtOdmNIbHlhV2RvZENBb1l5a2dUV2xqY205emIyWjBJRU52Y25CdmNtRjBhVzl1TGx4eVhHNWNjbHh1VUdWeWJXbHpjMmx2YmlCMGJ5QjFjMlVzSUdOdmNIa3NJRzF2WkdsbWVTd2dZVzVrTDI5eUlHUnBjM1J5YVdKMWRHVWdkR2hwY3lCemIyWjBkMkZ5WlNCbWIzSWdZVzU1WEhKY2JuQjFjbkJ2YzJVZ2QybDBhQ0J2Y2lCM2FYUm9iM1YwSUdabFpTQnBjeUJvWlhKbFlua2daM0poYm5SbFpDNWNjbHh1WEhKY2JsUklSU0JUVDBaVVYwRlNSU0JKVXlCUVVrOVdTVVJGUkNCY0lrRlRJRWxUWENJZ1FVNUVJRlJJUlNCQlZWUklUMUlnUkVsVFEweEJTVTFUSUVGTVRDQlhRVkpTUVU1VVNVVlRJRmRKVkVoY2NseHVVa1ZIUVZKRUlGUlBJRlJJU1ZNZ1UwOUdWRmRCVWtVZ1NVNURURlZFU1U1SElFRk1UQ0JKVFZCTVNVVkVJRmRCVWxKQlRsUkpSVk1nVDBZZ1RVVlNRMGhCVGxSQlFrbE1TVlJaWEhKY2JrRk9SQ0JHU1ZST1JWTlRMaUJKVGlCT1R5QkZWa1ZPVkNCVFNFRk1UQ0JVU0VVZ1FWVlVTRTlTSUVKRklFeEpRVUpNUlNCR1QxSWdRVTVaSUZOUVJVTkpRVXdzSUVSSlVrVkRWQ3hjY2x4dVNVNUVTVkpGUTFRc0lFOVNJRU5QVGxORlVWVkZUbFJKUVV3Z1JFRk5RVWRGVXlCUFVpQkJUbGtnUkVGTlFVZEZVeUJYU0VGVVUwOUZWa1ZTSUZKRlUxVk1WRWxPUnlCR1VrOU5YSEpjYmt4UFUxTWdUMFlnVlZORkxDQkVRVlJCSUU5U0lGQlNUMFpKVkZNc0lGZElSVlJJUlZJZ1NVNGdRVTRnUVVOVVNVOU9JRTlHSUVOUFRsUlNRVU5VTENCT1JVZE1TVWRGVGtORklFOVNYSEpjYms5VVNFVlNJRlJQVWxSSlQxVlRJRUZEVkVsUFRpd2dRVkpKVTBsT1J5QlBWVlFnVDBZZ1QxSWdTVTRnUTA5T1RrVkRWRWxQVGlCWFNWUklJRlJJUlNCVlUwVWdUMUpjY2x4dVVFVlNSazlTVFVGT1EwVWdUMFlnVkVoSlV5QlRUMFpVVjBGU1JTNWNjbHh1S2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb2dLaTljY2x4dUx5b2daMnh2WW1Gc0lGSmxabXhsWTNRc0lGQnliMjFwYzJVZ0tpOWNjbHh1WEhKY2JuWmhjaUJsZUhSbGJtUlRkR0YwYVdOeklEMGdablZ1WTNScGIyNG9aQ3dnWWlrZ2UxeHlYRzRnSUNBZ1pYaDBaVzVrVTNSaGRHbGpjeUE5SUU5aWFtVmpkQzV6WlhSUWNtOTBiM1I1Y0dWUFppQjhmRnh5WEc0Z0lDQWdJQ0FnSUNoN0lGOWZjSEp2ZEc5Zlh6b2dXMTBnZlNCcGJuTjBZVzVqWlc5bUlFRnljbUY1SUNZbUlHWjFibU4wYVc5dUlDaGtMQ0JpS1NCN0lHUXVYMTl3Y205MGIxOWZJRDBnWWpzZ2ZTa2dmSHhjY2x4dUlDQWdJQ0FnSUNCbWRXNWpkR2x2YmlBb1pDd2dZaWtnZXlCbWIzSWdLSFpoY2lCd0lHbHVJR0lwSUdsbUlDaFBZbXBsWTNRdWNISnZkRzkwZVhCbExtaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29ZaXdnY0NrcElHUmJjRjBnUFNCaVczQmRPeUI5TzF4eVhHNGdJQ0FnY21WMGRYSnVJR1Y0ZEdWdVpGTjBZWFJwWTNNb1pDd2dZaWs3WEhKY2JuMDdYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWxlSFJsYm1SektHUXNJR0lwSUh0Y2NseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ1lpQWhQVDBnWENKbWRXNWpkR2x2Ymx3aUlDWW1JR0lnSVQwOUlHNTFiR3dwWEhKY2JpQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJa05zWVhOeklHVjRkR1Z1WkhNZ2RtRnNkV1VnWENJZ0t5QlRkSEpwYm1jb1lpa2dLeUJjSWlCcGN5QnViM1FnWVNCamIyNXpkSEoxWTNSdmNpQnZjaUJ1ZFd4c1hDSXBPMXh5WEc0Z0lDQWdaWGgwWlc1a1UzUmhkR2xqY3loa0xDQmlLVHRjY2x4dUlDQWdJR1oxYm1OMGFXOXVJRjlmS0NrZ2V5QjBhR2x6TG1OdmJuTjBjblZqZEc5eUlEMGdaRHNnZlZ4eVhHNGdJQ0FnWkM1d2NtOTBiM1I1Y0dVZ1BTQmlJRDA5UFNCdWRXeHNJRDhnVDJKcVpXTjBMbU55WldGMFpTaGlLU0E2SUNoZlh5NXdjbTkwYjNSNWNHVWdQU0JpTG5CeWIzUnZkSGx3WlN3Z2JtVjNJRjlmS0NrcE8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdkbUZ5SUY5ZllYTnphV2R1SUQwZ1puVnVZM1JwYjI0b0tTQjdYSEpjYmlBZ0lDQmZYMkZ6YzJsbmJpQTlJRTlpYW1WamRDNWhjM05wWjI0Z2ZId2dablZ1WTNScGIyNGdYMTloYzNOcFoyNG9kQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lHWnZjaUFvZG1GeUlITXNJR2tnUFNBeExDQnVJRDBnWVhKbmRXMWxiblJ6TG14bGJtZDBhRHNnYVNBOElHNDdJR2tyS3lrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeklEMGdZWEpuZFcxbGJuUnpXMmxkTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJ3SUdsdUlITXBJR2xtSUNoUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG1oaGMwOTNibEJ5YjNCbGNuUjVMbU5oYkd3b2N5d2djQ2twSUhSYmNGMGdQU0J6VzNCZE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZER0Y2NseHVJQ0FnSUgxY2NseHVJQ0FnSUhKbGRIVnliaUJmWDJGemMybG5iaTVoY0hCc2VTaDBhR2x6TENCaGNtZDFiV1Z1ZEhNcE8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl5WlhOMEtITXNJR1VwSUh0Y2NseHVJQ0FnSUhaaGNpQjBJRDBnZTMwN1hISmNiaUFnSUNCbWIzSWdLSFpoY2lCd0lHbHVJSE1wSUdsbUlDaFBZbXBsWTNRdWNISnZkRzkwZVhCbExtaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29jeXdnY0NrZ0ppWWdaUzVwYm1SbGVFOW1LSEFwSUR3Z01DbGNjbHh1SUNBZ0lDQWdJQ0IwVzNCZElEMGdjMXR3WFR0Y2NseHVJQ0FnSUdsbUlDaHpJQ0U5SUc1MWJHd2dKaVlnZEhsd1pXOW1JRTlpYW1WamRDNW5aWFJQZDI1UWNtOXdaWEowZVZONWJXSnZiSE1nUFQwOUlGd2lablZ1WTNScGIyNWNJaWxjY2x4dUlDQWdJQ0FnSUNCbWIzSWdLSFpoY2lCcElEMGdNQ3dnY0NBOUlFOWlhbVZqZEM1blpYUlBkMjVRY205d1pYSjBlVk41YldKdmJITW9jeWs3SUdrZ1BDQndMbXhsYm1kMGFEc2dhU3NyS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaGxMbWx1WkdWNFQyWW9jRnRwWFNrZ1BDQXdJQ1ltSUU5aWFtVmpkQzV3Y205MGIzUjVjR1V1Y0hKdmNHVnlkSGxKYzBWdWRXMWxjbUZpYkdVdVkyRnNiQ2h6TENCd1cybGRLU2xjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSYmNGdHBYVjBnUFNCelczQmJhVjFkTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lISmxkSFZ5YmlCME8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTlrWldOdmNtRjBaU2hrWldOdmNtRjBiM0p6TENCMFlYSm5aWFFzSUd0bGVTd2daR1Z6WXlrZ2UxeHlYRzRnSUNBZ2RtRnlJR01nUFNCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvTENCeUlEMGdZeUE4SURNZ1B5QjBZWEpuWlhRZ09pQmtaWE5qSUQwOVBTQnVkV3hzSUQ4Z1pHVnpZeUE5SUU5aWFtVmpkQzVuWlhSUGQyNVFjbTl3WlhKMGVVUmxjMk55YVhCMGIzSW9kR0Z5WjJWMExDQnJaWGtwSURvZ1pHVnpZeXdnWkR0Y2NseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ1VtVm1iR1ZqZENBOVBUMGdYQ0p2WW1wbFkzUmNJaUFtSmlCMGVYQmxiMllnVW1WbWJHVmpkQzVrWldOdmNtRjBaU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0J5SUQwZ1VtVm1iR1ZqZEM1a1pXTnZjbUYwWlNoa1pXTnZjbUYwYjNKekxDQjBZWEpuWlhRc0lHdGxlU3dnWkdWell5azdYSEpjYmlBZ0lDQmxiSE5sSUdadmNpQW9kbUZ5SUdrZ1BTQmtaV052Y21GMGIzSnpMbXhsYm1kMGFDQXRJREU3SUdrZ1BqMGdNRHNnYVMwdEtTQnBaaUFvWkNBOUlHUmxZMjl5WVhSdmNuTmJhVjBwSUhJZ1BTQW9ZeUE4SURNZ1B5QmtLSElwSURvZ1l5QStJRE1nUHlCa0tIUmhjbWRsZEN3Z2EyVjVMQ0J5S1NBNklHUW9kR0Z5WjJWMExDQnJaWGtwS1NCOGZDQnlPMXh5WEc0Z0lDQWdjbVYwZFhKdUlHTWdQaUF6SUNZbUlISWdKaVlnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtIUmhjbWRsZEN3Z2EyVjVMQ0J5S1N3Z2NqdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmY0dGeVlXMG9jR0Z5WVcxSmJtUmxlQ3dnWkdWamIzSmhkRzl5S1NCN1hISmNiaUFnSUNCeVpYUjFjbTRnWm5WdVkzUnBiMjRnS0hSaGNtZGxkQ3dnYTJWNUtTQjdJR1JsWTI5eVlYUnZjaWgwWVhKblpYUXNJR3RsZVN3Z2NHRnlZVzFKYm1SbGVDazdJSDFjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZlpYTkVaV052Y21GMFpTaGpkRzl5TENCa1pYTmpjbWx3ZEc5eVNXNHNJR1JsWTI5eVlYUnZjbk1zSUdOdmJuUmxlSFJKYml3Z2FXNXBkR2xoYkdsNlpYSnpMQ0JsZUhSeVlVbHVhWFJwWVd4cGVtVnljeWtnZTF4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnWVdOalpYQjBLR1lwSUhzZ2FXWWdLR1lnSVQwOUlIWnZhV1FnTUNBbUppQjBlWEJsYjJZZ1ppQWhQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpUm5WdVkzUnBiMjRnWlhod1pXTjBaV1JjSWlrN0lISmxkSFZ5YmlCbU95QjlYSEpjYmlBZ0lDQjJZWElnYTJsdVpDQTlJR052Ym5SbGVIUkpiaTVyYVc1a0xDQnJaWGtnUFNCcmFXNWtJRDA5UFNCY0ltZGxkSFJsY2x3aUlEOGdYQ0puWlhSY0lpQTZJR3RwYm1RZ1BUMDlJRndpYzJWMGRHVnlYQ0lnUHlCY0luTmxkRndpSURvZ1hDSjJZV3gxWlZ3aU8xeHlYRzRnSUNBZ2RtRnlJSFJoY21kbGRDQTlJQ0ZrWlhOamNtbHdkRzl5U1c0Z0ppWWdZM1J2Y2lBL0lHTnZiblJsZUhSSmJsdGNJbk4wWVhScFkxd2lYU0EvSUdOMGIzSWdPaUJqZEc5eUxuQnliM1J2ZEhsd1pTQTZJRzUxYkd3N1hISmNiaUFnSUNCMllYSWdaR1Z6WTNKcGNIUnZjaUE5SUdSbGMyTnlhWEIwYjNKSmJpQjhmQ0FvZEdGeVoyVjBJRDhnVDJKcVpXTjBMbWRsZEU5M2JsQnliM0JsY25SNVJHVnpZM0pwY0hSdmNpaDBZWEpuWlhRc0lHTnZiblJsZUhSSmJpNXVZVzFsS1NBNklIdDlLVHRjY2x4dUlDQWdJSFpoY2lCZkxDQmtiMjVsSUQwZ1ptRnNjMlU3WEhKY2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ1pHVmpiM0poZEc5eWN5NXNaVzVuZEdnZ0xTQXhPeUJwSUQ0OUlEQTdJR2t0TFNrZ2UxeHlYRzRnSUNBZ0lDQWdJSFpoY2lCamIyNTBaWGgwSUQwZ2UzMDdYSEpjYmlBZ0lDQWdJQ0FnWm05eUlDaDJZWElnY0NCcGJpQmpiMjUwWlhoMFNXNHBJR052Ym5SbGVIUmJjRjBnUFNCd0lEMDlQU0JjSW1GalkyVnpjMXdpSUQ4Z2UzMGdPaUJqYjI1MFpYaDBTVzViY0YwN1hISmNiaUFnSUNBZ0lDQWdabTl5SUNoMllYSWdjQ0JwYmlCamIyNTBaWGgwU1c0dVlXTmpaWE56S1NCamIyNTBaWGgwTG1GalkyVnpjMXR3WFNBOUlHTnZiblJsZUhSSmJpNWhZMk5sYzNOYmNGMDdYSEpjYmlBZ0lDQWdJQ0FnWTI5dWRHVjRkQzVoWkdSSmJtbDBhV0ZzYVhwbGNpQTlJR1oxYm1OMGFXOXVJQ2htS1NCN0lHbG1JQ2hrYjI1bEtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpUTJGdWJtOTBJR0ZrWkNCcGJtbDBhV0ZzYVhwbGNuTWdZV1owWlhJZ1pHVmpiM0poZEdsdmJpQm9ZWE1nWTI5dGNHeGxkR1ZrWENJcE95QmxlSFJ5WVVsdWFYUnBZV3hwZW1WeWN5NXdkWE5vS0dGalkyVndkQ2htSUh4OElHNTFiR3dwS1RzZ2ZUdGNjbHh1SUNBZ0lDQWdJQ0IyWVhJZ2NtVnpkV3gwSUQwZ0tEQXNJR1JsWTI5eVlYUnZjbk5iYVYwcEtHdHBibVFnUFQwOUlGd2lZV05qWlhOemIzSmNJaUEvSUhzZ1oyVjBPaUJrWlhOamNtbHdkRzl5TG1kbGRDd2djMlYwT2lCa1pYTmpjbWx3ZEc5eUxuTmxkQ0I5SURvZ1pHVnpZM0pwY0hSdmNsdHJaWGxkTENCamIyNTBaWGgwS1R0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvYTJsdVpDQTlQVDBnWENKaFkyTmxjM052Y2x3aUtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h5WlhOMWJIUWdQVDA5SUhadmFXUWdNQ2tnWTI5dWRHbHVkV1U3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoeVpYTjFiSFFnUFQwOUlHNTFiR3dnZkh3Z2RIbHdaVzltSUhKbGMzVnNkQ0FoUFQwZ1hDSnZZbXBsWTNSY0lpa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWs5aWFtVmpkQ0JsZUhCbFkzUmxaRndpS1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tGOGdQU0JoWTJObGNIUW9jbVZ6ZFd4MExtZGxkQ2twSUdSbGMyTnlhWEIwYjNJdVoyVjBJRDBnWHp0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tGOGdQU0JoWTJObGNIUW9jbVZ6ZFd4MExuTmxkQ2twSUdSbGMyTnlhWEIwYjNJdWMyVjBJRDBnWHp0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tGOGdQU0JoWTJObGNIUW9jbVZ6ZFd4MExtbHVhWFFwS1NCcGJtbDBhV0ZzYVhwbGNuTXVjSFZ6YUNoZktUdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb1h5QTlJR0ZqWTJWd2RDaHlaWE4xYkhRcEtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hyYVc1a0lEMDlQU0JjSW1acFpXeGtYQ0lwSUdsdWFYUnBZV3hwZW1WeWN5NXdkWE5vS0Y4cE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJITmxJR1JsYzJOeWFYQjBiM0piYTJWNVhTQTlJRjg3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzRnSUNBZ2FXWWdLSFJoY21kbGRDa2dUMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S0hSaGNtZGxkQ3dnWTI5dWRHVjRkRWx1TG01aGJXVXNJR1JsYzJOeWFYQjBiM0lwTzF4eVhHNGdJQ0FnWkc5dVpTQTlJSFJ5ZFdVN1hISmNibjA3WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl5ZFc1SmJtbDBhV0ZzYVhwbGNuTW9kR2hwYzBGeVp5d2dhVzVwZEdsaGJHbDZaWEp6TENCMllXeDFaU2tnZTF4eVhHNGdJQ0FnZG1GeUlIVnpaVlpoYkhWbElEMGdZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQStJREk3WEhKY2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUdsdWFYUnBZV3hwZW1WeWN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4eVhHNGdJQ0FnSUNBZ0lIWmhiSFZsSUQwZ2RYTmxWbUZzZFdVZ1B5QnBibWwwYVdGc2FYcGxjbk5iYVYwdVkyRnNiQ2gwYUdselFYSm5MQ0IyWVd4MVpTa2dPaUJwYm1sMGFXRnNhWHBsY25OYmFWMHVZMkZzYkNoMGFHbHpRWEpuS1R0Y2NseHVJQ0FnSUgxY2NseHVJQ0FnSUhKbGRIVnliaUIxYzJWV1lXeDFaU0EvSUhaaGJIVmxJRG9nZG05cFpDQXdPMXh5WEc1OU8xeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmNISnZjRXRsZVNoNEtTQjdYSEpjYmlBZ0lDQnlaWFIxY200Z2RIbHdaVzltSUhnZ1BUMDlJRndpYzNsdFltOXNYQ0lnUHlCNElEb2dYQ0pjSWk1amIyNWpZWFFvZUNrN1hISmNibjA3WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl6WlhSR2RXNWpkR2x2Yms1aGJXVW9aaXdnYm1GdFpTd2djSEpsWm1sNEtTQjdYSEpjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JRzVoYldVZ1BUMDlJRndpYzNsdFltOXNYQ0lwSUc1aGJXVWdQU0J1WVcxbExtUmxjMk55YVhCMGFXOXVJRDhnWENKYlhDSXVZMjl1WTJGMEtHNWhiV1V1WkdWelkzSnBjSFJwYjI0c0lGd2lYVndpS1NBNklGd2lYQ0k3WEhKY2JpQWdJQ0J5WlhSMWNtNGdUMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S0dZc0lGd2libUZ0WlZ3aUxDQjdJR052Ym1acFozVnlZV0pzWlRvZ2RISjFaU3dnZG1Gc2RXVTZJSEJ5WldacGVDQS9JRndpWENJdVkyOXVZMkYwS0hCeVpXWnBlQ3dnWENJZ1hDSXNJRzVoYldVcElEb2dibUZ0WlNCOUtUdGNjbHh1ZlR0Y2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDIxbGRHRmtZWFJoS0cxbGRHRmtZWFJoUzJWNUxDQnRaWFJoWkdGMFlWWmhiSFZsS1NCN1hISmNiaUFnSUNCcFppQW9kSGx3Wlc5bUlGSmxabXhsWTNRZ1BUMDlJRndpYjJKcVpXTjBYQ0lnSmlZZ2RIbHdaVzltSUZKbFpteGxZM1F1YldWMFlXUmhkR0VnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnY21WMGRYSnVJRkpsWm14bFkzUXViV1YwWVdSaGRHRW9iV1YwWVdSaGRHRkxaWGtzSUcxbGRHRmtZWFJoVm1Gc2RXVXBPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5aGQyRnBkR1Z5S0hSb2FYTkJjbWNzSUY5aGNtZDFiV1Z1ZEhNc0lGQXNJR2RsYm1WeVlYUnZjaWtnZTF4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnWVdSdmNIUW9kbUZzZFdVcElIc2djbVYwZFhKdUlIWmhiSFZsSUdsdWMzUmhibU5sYjJZZ1VDQS9JSFpoYkhWbElEb2dibVYzSUZBb1puVnVZM1JwYjI0Z0tISmxjMjlzZG1VcElIc2djbVZ6YjJ4MlpTaDJZV3gxWlNrN0lIMHBPeUI5WEhKY2JpQWdJQ0J5WlhSMWNtNGdibVYzSUNoUUlIeDhJQ2hRSUQwZ1VISnZiV2x6WlNrcEtHWjFibU4wYVc5dUlDaHlaWE52YkhabExDQnlaV3BsWTNRcElIdGNjbHh1SUNBZ0lDQWdJQ0JtZFc1amRHbHZiaUJtZFd4bWFXeHNaV1FvZG1Gc2RXVXBJSHNnZEhKNUlIc2djM1JsY0NoblpXNWxjbUYwYjNJdWJtVjRkQ2gyWVd4MVpTa3BPeUI5SUdOaGRHTm9JQ2hsS1NCN0lISmxhbVZqZENobEtUc2dmU0I5WEhKY2JpQWdJQ0FnSUNBZ1puVnVZM1JwYjI0Z2NtVnFaV04wWldRb2RtRnNkV1VwSUhzZ2RISjVJSHNnYzNSbGNDaG5aVzVsY21GMGIzSmJYQ0owYUhKdmQxd2lYU2gyWVd4MVpTa3BPeUI5SUdOaGRHTm9JQ2hsS1NCN0lISmxhbVZqZENobEtUc2dmU0I5WEhKY2JpQWdJQ0FnSUNBZ1puVnVZM1JwYjI0Z2MzUmxjQ2h5WlhOMWJIUXBJSHNnY21WemRXeDBMbVJ2Ym1VZ1B5QnlaWE52YkhabEtISmxjM1ZzZEM1MllXeDFaU2tnT2lCaFpHOXdkQ2h5WlhOMWJIUXVkbUZzZFdVcExuUm9aVzRvWm5Wc1ptbHNiR1ZrTENCeVpXcGxZM1JsWkNrN0lIMWNjbHh1SUNBZ0lDQWdJQ0J6ZEdWd0tDaG5aVzVsY21GMGIzSWdQU0JuWlc1bGNtRjBiM0l1WVhCd2JIa29kR2hwYzBGeVp5d2dYMkZ5WjNWdFpXNTBjeUI4ZkNCYlhTa3BMbTVsZUhRb0tTazdYSEpjYmlBZ0lDQjlLVHRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZloyVnVaWEpoZEc5eUtIUm9hWE5CY21jc0lHSnZaSGtwSUh0Y2NseHVJQ0FnSUhaaGNpQmZJRDBnZXlCc1lXSmxiRG9nTUN3Z2MyVnVkRG9nWm5WdVkzUnBiMjRvS1NCN0lHbG1JQ2gwV3pCZElDWWdNU2tnZEdoeWIzY2dkRnN4WFRzZ2NtVjBkWEp1SUhSYk1WMDdJSDBzSUhSeWVYTTZJRnRkTENCdmNITTZJRnRkSUgwc0lHWXNJSGtzSUhRc0lHYzdYSEpjYmlBZ0lDQnlaWFIxY200Z1p5QTlJSHNnYm1WNGREb2dkbVZ5WWlnd0tTd2dYQ0owYUhKdmQxd2lPaUIyWlhKaUtERXBMQ0JjSW5KbGRIVnlibHdpT2lCMlpYSmlLRElwSUgwc0lIUjVjR1Z2WmlCVGVXMWliMndnUFQwOUlGd2lablZ1WTNScGIyNWNJaUFtSmlBb1oxdFRlVzFpYjJ3dWFYUmxjbUYwYjNKZElEMGdablZ1WTNScGIyNG9LU0I3SUhKbGRIVnliaUIwYUdsek95QjlLU3dnWnp0Y2NseHVJQ0FnSUdaMWJtTjBhVzl1SUhabGNtSW9iaWtnZXlCeVpYUjFjbTRnWm5WdVkzUnBiMjRnS0hZcElIc2djbVYwZFhKdUlITjBaWEFvVzI0c0lIWmRLVHNnZlRzZ2ZWeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z2MzUmxjQ2h2Y0NrZ2UxeHlYRzRnSUNBZ0lDQWdJR2xtSUNobUtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpUjJWdVpYSmhkRzl5SUdseklHRnNjbVZoWkhrZ1pYaGxZM1YwYVc1bkxsd2lLVHRjY2x4dUlDQWdJQ0FnSUNCM2FHbHNaU0FvWnlBbUppQW9aeUE5SURBc0lHOXdXekJkSUNZbUlDaGZJRDBnTUNrcExDQmZLU0IwY25rZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9aaUE5SURFc0lIa2dKaVlnS0hRZ1BTQnZjRnN3WFNBbUlESWdQeUI1VzF3aWNtVjBkWEp1WENKZElEb2diM0JiTUYwZ1B5QjVXMXdpZEdoeWIzZGNJbDBnZkh3Z0tDaDBJRDBnZVZ0Y0luSmxkSFZ5Ymx3aVhTa2dKaVlnZEM1allXeHNLSGtwTENBd0tTQTZJSGt1Ym1WNGRDa2dKaVlnSVNoMElEMGdkQzVqWVd4c0tIa3NJRzl3V3pGZEtTa3VaRzl1WlNrZ2NtVjBkWEp1SUhRN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDVJRDBnTUN3Z2RDa2diM0FnUFNCYmIzQmJNRjBnSmlBeUxDQjBMblpoYkhWbFhUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2MzZHBkR05vSUNodmNGc3dYU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0F3T2lCallYTmxJREU2SUhRZ1BTQnZjRHNnWW5KbFlXczdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElEUTZJRjh1YkdGaVpXd3JLenNnY21WMGRYSnVJSHNnZG1Gc2RXVTZJRzl3V3pGZExDQmtiMjVsT2lCbVlXeHpaU0I5TzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0ExT2lCZkxteGhZbVZzS3lzN0lIa2dQU0J2Y0ZzeFhUc2diM0FnUFNCYk1GMDdJR052Ym5ScGJuVmxPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQTNPaUJ2Y0NBOUlGOHViM0J6TG5CdmNDZ3BPeUJmTG5SeWVYTXVjRzl3S0NrN0lHTnZiblJwYm5WbE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaR1ZtWVhWc2REcGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JU2gwSUQwZ1h5NTBjbmx6TENCMElEMGdkQzVzWlc1bmRHZ2dQaUF3SUNZbUlIUmJkQzVzWlc1bmRHZ2dMU0F4WFNrZ0ppWWdLRzl3V3pCZElEMDlQU0EySUh4OElHOXdXekJkSUQwOVBTQXlLU2tnZXlCZklEMGdNRHNnWTI5dWRHbHVkV1U3SUgxY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2IzQmJNRjBnUFQwOUlETWdKaVlnS0NGMElIeDhJQ2h2Y0ZzeFhTQStJSFJiTUYwZ0ppWWdiM0JiTVYwZ1BDQjBXek5kS1NrcElIc2dYeTVzWVdKbGJDQTlJRzl3V3pGZE95QmljbVZoYXpzZ2ZWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHZjRnN3WFNBOVBUMGdOaUFtSmlCZkxteGhZbVZzSUR3Z2RGc3hYU2tnZXlCZkxteGhZbVZzSUQwZ2RGc3hYVHNnZENBOUlHOXdPeUJpY21WaGF6c2dmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwSUNZbUlGOHViR0ZpWld3Z1BDQjBXekpkS1NCN0lGOHViR0ZpWld3Z1BTQjBXekpkT3lCZkxtOXdjeTV3ZFhOb0tHOXdLVHNnWW5KbFlXczdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEZzeVhTa2dYeTV2Y0hNdWNHOXdLQ2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdYeTUwY25sekxuQnZjQ2dwT3lCamIyNTBhVzUxWlR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J2Y0NBOUlHSnZaSGt1WTJGc2JDaDBhR2x6UVhKbkxDQmZLVHRjY2x4dUlDQWdJQ0FnSUNCOUlHTmhkR05vSUNobEtTQjdJRzl3SUQwZ1d6WXNJR1ZkT3lCNUlEMGdNRHNnZlNCbWFXNWhiR3g1SUhzZ1ppQTlJSFFnUFNBd095QjlYSEpjYmlBZ0lDQWdJQ0FnYVdZZ0tHOXdXekJkSUNZZ05Ta2dkR2h5YjNjZ2IzQmJNVjA3SUhKbGRIVnliaUI3SUhaaGJIVmxPaUJ2Y0Zzd1hTQS9JRzl3V3pGZElEb2dkbTlwWkNBd0xDQmtiMjVsT2lCMGNuVmxJSDA3WEhKY2JpQWdJQ0I5WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCMllYSWdYMTlqY21WaGRHVkNhVzVrYVc1bklEMGdUMkpxWldOMExtTnlaV0YwWlNBL0lDaG1kVzVqZEdsdmJpaHZMQ0J0TENCckxDQnJNaWtnZTF4eVhHNGdJQ0FnYVdZZ0tHc3lJRDA5UFNCMWJtUmxabWx1WldRcElHc3lJRDBnYXp0Y2NseHVJQ0FnSUhaaGNpQmtaWE5qSUQwZ1QySnFaV04wTG1kbGRFOTNibEJ5YjNCbGNuUjVSR1Z6WTNKcGNIUnZjaWh0TENCcktUdGNjbHh1SUNBZ0lHbG1JQ2doWkdWell5QjhmQ0FvWENKblpYUmNJaUJwYmlCa1pYTmpJRDhnSVcwdVgxOWxjMDF2WkhWc1pTQTZJR1JsYzJNdWQzSnBkR0ZpYkdVZ2ZId2daR1Z6WXk1amIyNW1hV2QxY21GaWJHVXBLU0I3WEhKY2JpQWdJQ0FnSUNBZ1pHVnpZeUE5SUhzZ1pXNTFiV1Z5WVdKc1pUb2dkSEoxWlN3Z1oyVjBPaUJtZFc1amRHbHZiaWdwSUhzZ2NtVjBkWEp1SUcxYmExMDdJSDBnZlR0Y2NseHVJQ0FnSUgxY2NseHVJQ0FnSUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaHZMQ0JyTWl3Z1pHVnpZeWs3WEhKY2JuMHBJRG9nS0daMWJtTjBhVzl1S0c4c0lHMHNJR3NzSUdzeUtTQjdYSEpjYmlBZ0lDQnBaaUFvYXpJZ1BUMDlJSFZ1WkdWbWFXNWxaQ2tnYXpJZ1BTQnJPMXh5WEc0Z0lDQWdiMXRyTWwwZ1BTQnRXMnRkTzF4eVhHNTlLVHRjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMlY0Y0c5eWRGTjBZWElvYlN3Z2J5a2dlMXh5WEc0Z0lDQWdabTl5SUNoMllYSWdjQ0JwYmlCdEtTQnBaaUFvY0NBaFBUMGdYQ0prWldaaGRXeDBYQ0lnSmlZZ0lVOWlhbVZqZEM1d2NtOTBiM1I1Y0dVdWFHRnpUM2R1VUhKdmNHVnlkSGt1WTJGc2JDaHZMQ0J3S1NrZ1gxOWpjbVZoZEdWQ2FXNWthVzVuS0c4c0lHMHNJSEFwTzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOTJZV3gxWlhNb2J5a2dlMXh5WEc0Z0lDQWdkbUZ5SUhNZ1BTQjBlWEJsYjJZZ1UzbHRZbTlzSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lnSmlZZ1UzbHRZbTlzTG1sMFpYSmhkRzl5TENCdElEMGdjeUFtSmlCdlczTmRMQ0JwSUQwZ01EdGNjbHh1SUNBZ0lHbG1JQ2h0S1NCeVpYUjFjbTRnYlM1allXeHNLRzhwTzF4eVhHNGdJQ0FnYVdZZ0tHOGdKaVlnZEhsd1pXOW1JRzh1YkdWdVozUm9JRDA5UFNCY0ltNTFiV0psY2x3aUtTQnlaWFIxY200Z2UxeHlYRzRnSUNBZ0lDQWdJRzVsZUhRNklHWjFibU4wYVc5dUlDZ3BJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0c4Z0ppWWdhU0ErUFNCdkxteGxibWQwYUNrZ2J5QTlJSFp2YVdRZ01EdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhzZ2RtRnNkV1U2SUc4Z0ppWWdiMXRwS3l0ZExDQmtiMjVsT2lBaGJ5QjlPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUgwN1hISmNiaUFnSUNCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtITWdQeUJjSWs5aWFtVmpkQ0JwY3lCdWIzUWdhWFJsY21GaWJHVXVYQ0lnT2lCY0lsTjViV0p2YkM1cGRHVnlZWFJ2Y2lCcGN5QnViM1FnWkdWbWFXNWxaQzVjSWlrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM0psWVdRb2J5d2diaWtnZTF4eVhHNGdJQ0FnZG1GeUlHMGdQU0IwZVhCbGIyWWdVM2x0WW05c0lEMDlQU0JjSW1aMWJtTjBhVzl1WENJZ0ppWWdiMXRUZVcxaWIyd3VhWFJsY21GMGIzSmRPMXh5WEc0Z0lDQWdhV1lnS0NGdEtTQnlaWFIxY200Z2J6dGNjbHh1SUNBZ0lIWmhjaUJwSUQwZ2JTNWpZV3hzS0c4cExDQnlMQ0JoY2lBOUlGdGRMQ0JsTzF4eVhHNGdJQ0FnZEhKNUlIdGNjbHh1SUNBZ0lDQWdJQ0IzYUdsc1pTQW9LRzRnUFQwOUlIWnZhV1FnTUNCOGZDQnVMUzBnUGlBd0tTQW1KaUFoS0hJZ1BTQnBMbTVsZUhRb0tTa3VaRzl1WlNrZ1lYSXVjSFZ6YUNoeUxuWmhiSFZsS1R0Y2NseHVJQ0FnSUgxY2NseHVJQ0FnSUdOaGRHTm9JQ2hsY25KdmNpa2dleUJsSUQwZ2V5Qmxjbkp2Y2pvZ1pYSnliM0lnZlRzZ2ZWeHlYRzRnSUNBZ1ptbHVZV3hzZVNCN1hISmNiaUFnSUNBZ0lDQWdkSEo1SUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tISWdKaVlnSVhJdVpHOXVaU0FtSmlBb2JTQTlJR2xiWENKeVpYUjFjbTVjSWwwcEtTQnRMbU5oYkd3b2FTazdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lHWnBibUZzYkhrZ2V5QnBaaUFvWlNrZ2RHaHliM2NnWlM1bGNuSnZjanNnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJR0Z5TzF4eVhHNTlYSEpjYmx4eVhHNHZLaW9nUUdSbGNISmxZMkYwWldRZ0tpOWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmYzNCeVpXRmtLQ2tnZTF4eVhHNGdJQ0FnWm05eUlDaDJZWElnWVhJZ1BTQmJYU3dnYVNBOUlEQTdJR2tnUENCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvT3lCcEt5c3BYSEpjYmlBZ0lDQWdJQ0FnWVhJZ1BTQmhjaTVqYjI1allYUW9YMTl5WldGa0tHRnlaM1Z0Wlc1MGMxdHBYU2twTzF4eVhHNGdJQ0FnY21WMGRYSnVJR0Z5TzF4eVhHNTlYSEpjYmx4eVhHNHZLaW9nUUdSbGNISmxZMkYwWldRZ0tpOWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmYzNCeVpXRmtRWEp5WVhsektDa2dlMXh5WEc0Z0lDQWdabTl5SUNoMllYSWdjeUE5SURBc0lHa2dQU0F3TENCcGJDQTlJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZzdJR2tnUENCcGJEc2dhU3NyS1NCeklDczlJR0Z5WjNWdFpXNTBjMXRwWFM1c1pXNW5kR2c3WEhKY2JpQWdJQ0JtYjNJZ0tIWmhjaUJ5SUQwZ1FYSnlZWGtvY3lrc0lHc2dQU0F3TENCcElEMGdNRHNnYVNBOElHbHNPeUJwS3lzcFhISmNiaUFnSUNBZ0lDQWdabTl5SUNoMllYSWdZU0E5SUdGeVozVnRaVzUwYzF0cFhTd2dhaUE5SURBc0lHcHNJRDBnWVM1c1pXNW5kR2c3SUdvZ1BDQnFiRHNnYWlzckxDQnJLeXNwWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpiYTEwZ1BTQmhXMnBkTzF4eVhHNGdJQ0FnY21WMGRYSnVJSEk3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgzTndjbVZoWkVGeWNtRjVLSFJ2TENCbWNtOXRMQ0J3WVdOcktTQjdYSEpjYmlBZ0lDQnBaaUFvY0dGamF5QjhmQ0JoY21kMWJXVnVkSE11YkdWdVozUm9JRDA5UFNBeUtTQm1iM0lnS0haaGNpQnBJRDBnTUN3Z2JDQTlJR1p5YjIwdWJHVnVaM1JvTENCaGNqc2dhU0E4SUd3N0lHa3JLeWtnZTF4eVhHNGdJQ0FnSUNBZ0lHbG1JQ2hoY2lCOGZDQWhLR2tnYVc0Z1puSnZiU2twSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRmhjaWtnWVhJZ1BTQkJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyeHBZMlV1WTJGc2JDaG1jbTl0TENBd0xDQnBLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdZWEpiYVYwZ1BTQm1jbTl0VzJsZE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQWdJSEpsZEhWeWJpQjBieTVqYjI1allYUW9ZWElnZkh3Z1FYSnlZWGt1Y0hKdmRHOTBlWEJsTG5Oc2FXTmxMbU5oYkd3b1puSnZiU2twTzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWhkMkZwZENoMktTQjdYSEpjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeUJwYm5OMFlXNWpaVzltSUY5ZllYZGhhWFFnUHlBb2RHaHBjeTUySUQwZ2Rpd2dkR2hwY3lrZ09pQnVaWGNnWDE5aGQyRnBkQ2gyS1R0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZZWE41Ym1OSFpXNWxjbUYwYjNJb2RHaHBjMEZ5Wnl3Z1gyRnlaM1Z0Wlc1MGN5d2daMlZ1WlhKaGRHOXlLU0I3WEhKY2JpQWdJQ0JwWmlBb0lWTjViV0p2YkM1aGMzbHVZMGwwWlhKaGRHOXlLU0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0Z3aVUzbHRZbTlzTG1GemVXNWpTWFJsY21GMGIzSWdhWE1nYm05MElHUmxabWx1WldRdVhDSXBPMXh5WEc0Z0lDQWdkbUZ5SUdjZ1BTQm5aVzVsY21GMGIzSXVZWEJ3Ykhrb2RHaHBjMEZ5Wnl3Z1gyRnlaM1Z0Wlc1MGN5QjhmQ0JiWFNrc0lHa3NJSEVnUFNCYlhUdGNjbHh1SUNBZ0lISmxkSFZ5YmlCcElEMGdlMzBzSUhabGNtSW9YQ0p1WlhoMFhDSXBMQ0IyWlhKaUtGd2lkR2h5YjNkY0lpa3NJSFpsY21Jb1hDSnlaWFIxY201Y0lpa3NJR2xiVTNsdFltOXNMbUZ6ZVc1alNYUmxjbUYwYjNKZElEMGdablZ1WTNScGIyNGdLQ2tnZXlCeVpYUjFjbTRnZEdocGN6c2dmU3dnYVR0Y2NseHVJQ0FnSUdaMWJtTjBhVzl1SUhabGNtSW9iaWtnZXlCcFppQW9aMXR1WFNrZ2FWdHVYU0E5SUdaMWJtTjBhVzl1SUNoMktTQjdJSEpsZEhWeWJpQnVaWGNnVUhKdmJXbHpaU2htZFc1amRHbHZiaUFvWVN3Z1lpa2dleUJ4TG5CMWMyZ29XMjRzSUhZc0lHRXNJR0pkS1NBK0lERWdmSHdnY21WemRXMWxLRzRzSUhZcE95QjlLVHNnZlRzZ2ZWeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z2NtVnpkVzFsS0c0c0lIWXBJSHNnZEhKNUlIc2djM1JsY0NoblcyNWRLSFlwS1RzZ2ZTQmpZWFJqYUNBb1pTa2dleUJ6WlhSMGJHVW9jVnN3WFZzelhTd2daU2s3SUgwZ2ZWeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z2MzUmxjQ2h5S1NCN0lISXVkbUZzZFdVZ2FXNXpkR0Z1WTJWdlppQmZYMkYzWVdsMElEOGdVSEp2YldselpTNXlaWE52YkhabEtISXVkbUZzZFdVdWRpa3VkR2hsYmlobWRXeG1hV3hzTENCeVpXcGxZM1FwSURvZ2MyVjBkR3hsS0hGYk1GMWJNbDBzSUhJcE95QjlYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQm1kV3htYVd4c0tIWmhiSFZsS1NCN0lISmxjM1Z0WlNoY0ltNWxlSFJjSWl3Z2RtRnNkV1VwT3lCOVhISmNiaUFnSUNCbWRXNWpkR2x2YmlCeVpXcGxZM1FvZG1Gc2RXVXBJSHNnY21WemRXMWxLRndpZEdoeWIzZGNJaXdnZG1Gc2RXVXBPeUI5WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJ6WlhSMGJHVW9aaXdnZGlrZ2V5QnBaaUFvWmloMktTd2djUzV6YUdsbWRDZ3BMQ0J4TG14bGJtZDBhQ2tnY21WemRXMWxLSEZiTUYxYk1GMHNJSEZiTUYxYk1WMHBPeUI5WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyRnplVzVqUkdWc1pXZGhkRzl5S0c4cElIdGNjbHh1SUNBZ0lIWmhjaUJwTENCd08xeHlYRzRnSUNBZ2NtVjBkWEp1SUdrZ1BTQjdmU3dnZG1WeVlpaGNJbTVsZUhSY0lpa3NJSFpsY21Jb1hDSjBhSEp2ZDF3aUxDQm1kVzVqZEdsdmJpQW9aU2tnZXlCMGFISnZkeUJsT3lCOUtTd2dkbVZ5WWloY0luSmxkSFZ5Ymx3aUtTd2dhVnRUZVcxaWIyd3VhWFJsY21GMGIzSmRJRDBnWm5WdVkzUnBiMjRnS0NrZ2V5QnlaWFIxY200Z2RHaHBjenNnZlN3Z2FUdGNjbHh1SUNBZ0lHWjFibU4wYVc5dUlIWmxjbUlvYml3Z1ppa2dleUJwVzI1ZElEMGdiMXR1WFNBL0lHWjFibU4wYVc5dUlDaDJLU0I3SUhKbGRIVnliaUFvY0NBOUlDRndLU0EvSUhzZ2RtRnNkV1U2SUY5ZllYZGhhWFFvYjF0dVhTaDJLU2tzSUdSdmJtVTZJR1poYkhObElIMGdPaUJtSUQ4Z1ppaDJLU0E2SUhZN0lIMGdPaUJtT3lCOVhISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMkZ6ZVc1alZtRnNkV1Z6S0c4cElIdGNjbHh1SUNBZ0lHbG1JQ2doVTNsdFltOXNMbUZ6ZVc1alNYUmxjbUYwYjNJcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pUZVcxaWIyd3VZWE41Ym1OSmRHVnlZWFJ2Y2lCcGN5QnViM1FnWkdWbWFXNWxaQzVjSWlrN1hISmNiaUFnSUNCMllYSWdiU0E5SUc5YlUzbHRZbTlzTG1GemVXNWpTWFJsY21GMGIzSmRMQ0JwTzF4eVhHNGdJQ0FnY21WMGRYSnVJRzBnUHlCdExtTmhiR3dvYnlrZ09pQW9ieUE5SUhSNWNHVnZaaUJmWDNaaGJIVmxjeUE5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJRDhnWDE5MllXeDFaWE1vYnlrZ09pQnZXMU41YldKdmJDNXBkR1Z5WVhSdmNsMG9LU3dnYVNBOUlIdDlMQ0IyWlhKaUtGd2libVY0ZEZ3aUtTd2dkbVZ5WWloY0luUm9jbTkzWENJcExDQjJaWEppS0Z3aWNtVjBkWEp1WENJcExDQnBXMU41YldKdmJDNWhjM2x1WTBsMFpYSmhkRzl5WFNBOUlHWjFibU4wYVc5dUlDZ3BJSHNnY21WMGRYSnVJSFJvYVhNN0lIMHNJR2twTzF4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnZG1WeVlpaHVLU0I3SUdsYmJsMGdQU0J2VzI1ZElDWW1JR1oxYm1OMGFXOXVJQ2gyS1NCN0lISmxkSFZ5YmlCdVpYY2dVSEp2YldselpTaG1kVzVqZEdsdmJpQW9jbVZ6YjJ4MlpTd2djbVZxWldOMEtTQjdJSFlnUFNCdlcyNWRLSFlwTENCelpYUjBiR1VvY21WemIyeDJaU3dnY21WcVpXTjBMQ0IyTG1SdmJtVXNJSFl1ZG1Gc2RXVXBPeUI5S1RzZ2ZUc2dmVnh5WEc0Z0lDQWdablZ1WTNScGIyNGdjMlYwZEd4bEtISmxjMjlzZG1Vc0lISmxhbVZqZEN3Z1pDd2dkaWtnZXlCUWNtOXRhWE5sTG5KbGMyOXNkbVVvZGlrdWRHaGxiaWhtZFc1amRHbHZiaWgyS1NCN0lISmxjMjlzZG1Vb2V5QjJZV3gxWlRvZ2Rpd2daRzl1WlRvZ1pDQjlLVHNnZlN3Z2NtVnFaV04wS1RzZ2ZWeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl0WVd0bFZHVnRjR3hoZEdWUFltcGxZM1FvWTI5dmEyVmtMQ0J5WVhjcElIdGNjbHh1SUNBZ0lHbG1JQ2hQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrcElIc2dUMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S0dOdmIydGxaQ3dnWENKeVlYZGNJaXdnZXlCMllXeDFaVG9nY21GM0lIMHBPeUI5SUdWc2MyVWdleUJqYjI5clpXUXVjbUYzSUQwZ2NtRjNPeUI5WEhKY2JpQWdJQ0J5WlhSMWNtNGdZMjl2YTJWa08xeHlYRzU5TzF4eVhHNWNjbHh1ZG1GeUlGOWZjMlYwVFc5a2RXeGxSR1ZtWVhWc2RDQTlJRTlpYW1WamRDNWpjbVZoZEdVZ1B5QW9ablZ1WTNScGIyNG9ieXdnZGlrZ2UxeHlYRzRnSUNBZ1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLRzhzSUZ3aVpHVm1ZWFZzZEZ3aUxDQjdJR1Z1ZFcxbGNtRmliR1U2SUhSeWRXVXNJSFpoYkhWbE9pQjJJSDBwTzF4eVhHNTlLU0E2SUdaMWJtTjBhVzl1S0c4c0lIWXBJSHRjY2x4dUlDQWdJRzliWENKa1pXWmhkV3gwWENKZElEMGdkanRjY2x4dWZUdGNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgybHRjRzl5ZEZOMFlYSW9iVzlrS1NCN1hISmNiaUFnSUNCcFppQW9iVzlrSUNZbUlHMXZaQzVmWDJWelRXOWtkV3hsS1NCeVpYUjFjbTRnYlc5a08xeHlYRzRnSUNBZ2RtRnlJSEpsYzNWc2RDQTlJSHQ5TzF4eVhHNGdJQ0FnYVdZZ0tHMXZaQ0FoUFNCdWRXeHNLU0JtYjNJZ0tIWmhjaUJySUdsdUlHMXZaQ2tnYVdZZ0tHc2dJVDA5SUZ3aVpHVm1ZWFZzZEZ3aUlDWW1JRTlpYW1WamRDNXdjbTkwYjNSNWNHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrdVkyRnNiQ2h0YjJRc0lHc3BLU0JmWDJOeVpXRjBaVUpwYm1ScGJtY29jbVZ6ZFd4MExDQnRiMlFzSUdzcE8xeHlYRzRnSUNBZ1gxOXpaWFJOYjJSMWJHVkVaV1poZFd4MEtISmxjM1ZzZEN3Z2JXOWtLVHRjY2x4dUlDQWdJSEpsZEhWeWJpQnlaWE4xYkhRN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMmx0Y0c5eWRFUmxabUYxYkhRb2JXOWtLU0I3WEhKY2JpQWdJQ0J5WlhSMWNtNGdLRzF2WkNBbUppQnRiMlF1WDE5bGMwMXZaSFZzWlNrZ1B5QnRiMlFnT2lCN0lHUmxabUYxYkhRNklHMXZaQ0I5TzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWpiR0Z6YzFCeWFYWmhkR1ZHYVdWc1pFZGxkQ2h5WldObGFYWmxjaXdnYzNSaGRHVXNJR3RwYm1Rc0lHWXBJSHRjY2x4dUlDQWdJR2xtSUNocmFXNWtJRDA5UFNCY0ltRmNJaUFtSmlBaFppa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWxCeWFYWmhkR1VnWVdOalpYTnpiM0lnZDJGeklHUmxabWx1WldRZ2QybDBhRzkxZENCaElHZGxkSFJsY2x3aUtUdGNjbHh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdjM1JoZEdVZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBL0lISmxZMlZwZG1WeUlDRTlQU0J6ZEdGMFpTQjhmQ0FoWmlBNklDRnpkR0YwWlM1b1lYTW9jbVZqWldsMlpYSXBLU0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0Z3aVEyRnVibTkwSUhKbFlXUWdjSEpwZG1GMFpTQnRaVzFpWlhJZ1puSnZiU0JoYmlCdlltcGxZM1FnZDJodmMyVWdZMnhoYzNNZ1pHbGtJRzV2ZENCa1pXTnNZWEpsSUdsMFhDSXBPMXh5WEc0Z0lDQWdjbVYwZFhKdUlHdHBibVFnUFQwOUlGd2liVndpSUQ4Z1ppQTZJR3RwYm1RZ1BUMDlJRndpWVZ3aUlEOGdaaTVqWVd4c0tISmxZMlZwZG1WeUtTQTZJR1lnUHlCbUxuWmhiSFZsSURvZ2MzUmhkR1V1WjJWMEtISmxZMlZwZG1WeUtUdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmWTJ4aGMzTlFjbWwyWVhSbFJtbGxiR1JUWlhRb2NtVmpaV2wyWlhJc0lITjBZWFJsTENCMllXeDFaU3dnYTJsdVpDd2daaWtnZTF4eVhHNGdJQ0FnYVdZZ0tHdHBibVFnUFQwOUlGd2liVndpS1NCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lVSEpwZG1GMFpTQnRaWFJvYjJRZ2FYTWdibTkwSUhkeWFYUmhZbXhsWENJcE8xeHlYRzRnSUNBZ2FXWWdLR3RwYm1RZ1BUMDlJRndpWVZ3aUlDWW1JQ0ZtS1NCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lVSEpwZG1GMFpTQmhZMk5sYzNOdmNpQjNZWE1nWkdWbWFXNWxaQ0IzYVhSb2IzVjBJR0VnYzJWMGRHVnlYQ0lwTzF4eVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCemRHRjBaU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJRDhnY21WalpXbDJaWElnSVQwOUlITjBZWFJsSUh4OElDRm1JRG9nSVhOMFlYUmxMbWhoY3loeVpXTmxhWFpsY2lrcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pEWVc1dWIzUWdkM0pwZEdVZ2NISnBkbUYwWlNCdFpXMWlaWElnZEc4Z1lXNGdiMkpxWldOMElIZG9iM05sSUdOc1lYTnpJR1JwWkNCdWIzUWdaR1ZqYkdGeVpTQnBkRndpS1R0Y2NseHVJQ0FnSUhKbGRIVnliaUFvYTJsdVpDQTlQVDBnWENKaFhDSWdQeUJtTG1OaGJHd29jbVZqWldsMlpYSXNJSFpoYkhWbEtTQTZJR1lnUHlCbUxuWmhiSFZsSUQwZ2RtRnNkV1VnT2lCemRHRjBaUzV6WlhRb2NtVmpaV2wyWlhJc0lIWmhiSFZsS1Nrc0lIWmhiSFZsTzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWpiR0Z6YzFCeWFYWmhkR1ZHYVdWc1pFbHVLSE4wWVhSbExDQnlaV05sYVhabGNpa2dlMXh5WEc0Z0lDQWdhV1lnS0hKbFkyVnBkbVZ5SUQwOVBTQnVkV3hzSUh4OElDaDBlWEJsYjJZZ2NtVmpaV2wyWlhJZ0lUMDlJRndpYjJKcVpXTjBYQ0lnSmlZZ2RIbHdaVzltSUhKbFkyVnBkbVZ5SUNFOVBTQmNJbVoxYm1OMGFXOXVYQ0lwS1NCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lRMkZ1Ym05MElIVnpaU0FuYVc0bklHOXdaWEpoZEc5eUlHOXVJRzV2YmkxdlltcGxZM1JjSWlrN1hISmNiaUFnSUNCeVpYUjFjbTRnZEhsd1pXOW1JSE4wWVhSbElEMDlQU0JjSW1aMWJtTjBhVzl1WENJZ1B5QnlaV05sYVhabGNpQTlQVDBnYzNSaGRHVWdPaUJ6ZEdGMFpTNW9ZWE1vY21WalpXbDJaWElwTzF4eVhHNTlYSEpjYmlJc0ltbHRjRzl5ZENCMGVYQmxJSHNnUjB4VVJpQjlJR1p5YjIwZ0ozUm9jbVZsTDJWNFlXMXdiR1Z6TDJwemJTOXNiMkZrWlhKekwwZE1WRVpNYjJGa1pYSXVhbk1uTzF4dWFXMXdiM0owSUhzZ1IweFVSaUJoY3lCSFRGUkdVMk5vWlcxaElIMGdabkp2YlNBblFHZHNkR1l0ZEhKaGJuTm1iM0p0TDJOdmNtVW5PMXh1WEc1bWRXNWpkR2x2YmlCbGVIUnlZV04wVUhKcGJXbDBhWFpsYzBsdWRHVnlibUZzS0dkc2RHWTZJRWRNVkVZc0lHNXZaR1ZKYm1SbGVEb2diblZ0WW1WeUxDQnViMlJsT2lCVVNGSkZSUzVQWW1wbFkzUXpSQ2s2SUZSSVVrVkZMazFsYzJoYlhTQjhJRzUxYkd3Z2UxeHVJQ0JqYjI1emRDQnFjMjl1SUQwZ1oyeDBaaTV3WVhKelpYSXVhbk52YmlCaGN5QkhURlJHVTJOb1pXMWhMa2xIVEZSR08xeHVYRzRnSUM4cUtseHVJQ0FnS2lCTVpYUW5jeUJzYVhOMElIVndJR1YyWlhKNUlIQnZjM05wWW14bElIQmhkSFJsY201eklIUm9ZWFFnY0dGeWMyVmtJR2RzZEdZZ2JtOWtaWE1nZDJsMGFDQmhJRzFsYzJnZ1kyRnVJR2hoZG1Vc0xDeGNiaUFnSUNwY2JpQWdJQ29nWENJcVhDSWdhVzVrYVdOaGRHVnpJSFJvWVhRZ2RHaHZjMlVnYldWemFHVnpJSE5vYjNWc1pDQmlaU0JzYVhOMFpXUWdkWEFnZFhOcGJtY2dkR2hwY3lCbWRXNWpkR2x2Ymx4dUlDQWdLbHh1SUNBZ0tpQWpJeU1nUVNCdWIyUmxJSGRwZEdnZ1lTQW9iV1Z6YUN3Z1lTQnphV2R1YkdVZ2NISnBiV2wwYVhabEtWeHVJQ0FnS2x4dUlDQWdLaUF0SUdCVVNGSkZSUzVOWlhOb1lEb2dWR2hsSUc5dWJIa2djSEpwYldsMGFYWmxJRzltSUhSb1pTQnRaWE5vSUNwY2JpQWdJQ3BjYmlBZ0lDb2dJeU1qSUVFZ2JtOWtaU0IzYVhSb0lHRWdLRzFsYzJnc0lHMTFiSFJwY0d4bElIQnlhVzFwZEdsMlpYTXBYRzRnSUNBcVhHNGdJQ0FxSUMwZ1lGUklVa1ZGTGtkeWIzVndZRG9nVkdobElISnZiM1FnYjJZZ2RHaGxJRzFsYzJoY2JpQWdJQ29nSUNBdElHQlVTRkpGUlM1TlpYTm9ZRG9nUVNCd2NtbHRhWFJwZG1VZ2IyWWdkR2hsSUcxbGMyZ2dLbHh1SUNBZ0tpQWdJQzBnWUZSSVVrVkZMazFsYzJoZ09pQkJJSEJ5YVcxcGRHbDJaU0J2WmlCMGFHVWdiV1Z6YUNBb01pa2dLbHh1SUNBZ0tseHVJQ0FnS2lBakl5TWdRU0J1YjJSbElIZHBkR2dnWVNBb2JXVnphQ3dnYlhWc2RHbHdiR1VnY0hKcGJXbDBhWFpsY3lrZ1FVNUVJQ2hoSUdOb2FXeGtJSGRwZEdnZ1lTQnRaWE5vTENCaElITnBibWRzWlNCd2NtbHRhWFJwZG1VcFhHNGdJQ0FxWEc0Z0lDQXFJQzBnWUZSSVVrVkZMa2R5YjNWd1lEb2dWR2hsSUhKdmIzUWdiMllnZEdobElHMWxjMmhjYmlBZ0lDb2dJQ0F0SUdCVVNGSkZSUzVOWlhOb1lEb2dRU0J3Y21sdGFYUnBkbVVnYjJZZ2RHaGxJRzFsYzJnZ0tseHVJQ0FnS2lBZ0lDMGdZRlJJVWtWRkxrMWxjMmhnT2lCQklIQnlhVzFwZEdsMlpTQnZaaUIwYUdVZ2JXVnphQ0FvTWlrZ0tseHVJQ0FnS2lBZ0lDMGdZRlJJVWtWRkxrMWxjMmhnT2lCQklIQnlhVzFwZEdsMlpTQnZaaUJoSUUxRlUwZ2dUMFlnVkVoRklFTklTVXhFWEc0Z0lDQXFYRzRnSUNBcUlDTWpJeUJCSUc1dlpHVWdkMmwwYUNCaElDaHRaWE5vTENCdGRXeDBhWEJzWlNCd2NtbHRhWFJwZG1WektTQkJUa1FnS0dFZ1kyaHBiR1FnZDJsMGFDQmhJRzFsYzJnc0lHMTFiSFJwY0d4bElIQnlhVzFwZEdsMlpYTXBYRzRnSUNBcVhHNGdJQ0FxSUMwZ1lGUklVa1ZGTGtkeWIzVndZRG9nVkdobElISnZiM1FnYjJZZ2RHaGxJRzFsYzJoY2JpQWdJQ29nSUNBdElHQlVTRkpGUlM1TlpYTm9ZRG9nUVNCd2NtbHRhWFJwZG1VZ2IyWWdkR2hsSUcxbGMyZ2dLbHh1SUNBZ0tpQWdJQzBnWUZSSVVrVkZMazFsYzJoZ09pQkJJSEJ5YVcxcGRHbDJaU0J2WmlCMGFHVWdiV1Z6YUNBb01pa2dLbHh1SUNBZ0tpQWdJQzBnWUZSSVVrVkZMa2R5YjNWd1lEb2dWR2hsSUhKdmIzUWdiMllnWVNCTlJWTklJRTlHSUZSSVJTQkRTRWxNUkZ4dUlDQWdLaUFnSUNBZ0xTQmdWRWhTUlVVdVRXVnphR0E2SUVFZ2NISnBiV2wwYVhabElHOW1JSFJvWlNCdFpYTm9JRzltSUhSb1pTQmphR2xzWkZ4dUlDQWdLaUFnSUNBZ0xTQmdWRWhTUlVVdVRXVnphR0E2SUVFZ2NISnBiV2wwYVhabElHOW1JSFJvWlNCdFpYTm9JRzltSUhSb1pTQmphR2xzWkNBb01pbGNiaUFnSUNwY2JpQWdJQ29nSXlNaklFRWdibTlrWlNCM2FYUm9JR0VnS0cxbGMyZ3NJRzExYkhScGNHeGxJSEJ5YVcxcGRHbDJaWE1wSUVKVlZDQjBhR1VnYm05a1pTQnBjeUJoSUdKdmJtVmNiaUFnSUNwY2JpQWdJQ29nTFNCZ1ZFaFNSVVV1UW05dVpXQTZJRlJvWlNCeWIyOTBJRzltSUhSb1pTQnViMlJsTENCaGN5QmhJR0p2Ym1WY2JpQWdJQ29nSUNBdElHQlVTRkpGUlM1SGNtOTFjR0E2SUZSb1pTQnliMjkwSUc5bUlIUm9aU0J0WlhOb1hHNGdJQ0FxSUNBZ0lDQXRJR0JVU0ZKRlJTNU5aWE5vWURvZ1FTQndjbWx0YVhScGRtVWdiMllnZEdobElHMWxjMmdnS2x4dUlDQWdLaUFnSUNBZ0xTQmdWRWhTUlVVdVRXVnphR0E2SUVFZ2NISnBiV2wwYVhabElHOW1JSFJvWlNCdFpYTm9JQ2d5S1NBcVhHNGdJQ0FxWEc0Z0lDQXFJQ01qSXlCQklHNXZaR1VnZDJsMGFDQmhJQ2h0WlhOb0xDQnRkV3gwYVhCc1pTQndjbWx0YVhScGRtVnpLU0JCVGtRZ0tHRWdZMmhwYkdRZ2QybDBhQ0JoSUcxbGMyZ3NJRzExYkhScGNHeGxJSEJ5YVcxcGRHbDJaWE1wSUVKVlZDQjBhR1VnYm05a1pTQnBjeUJoSUdKdmJtVmNiaUFnSUNwY2JpQWdJQ29nTFNCZ1ZFaFNSVVV1UW05dVpXQTZJRlJvWlNCeWIyOTBJRzltSUhSb1pTQnViMlJsTENCaGN5QmhJR0p2Ym1WY2JpQWdJQ29nSUNBdElHQlVTRkpGUlM1SGNtOTFjR0E2SUZSb1pTQnliMjkwSUc5bUlIUm9aU0J0WlhOb1hHNGdJQ0FxSUNBZ0lDQXRJR0JVU0ZKRlJTNU5aWE5vWURvZ1FTQndjbWx0YVhScGRtVWdiMllnZEdobElHMWxjMmdnS2x4dUlDQWdLaUFnSUNBZ0xTQmdWRWhTUlVVdVRXVnphR0E2SUVFZ2NISnBiV2wwYVhabElHOW1JSFJvWlNCdFpYTm9JQ2d5S1NBcVhHNGdJQ0FxSUNBZ0xTQmdWRWhTUlVVdVIzSnZkWEJnT2lCVWFHVWdjbTl2ZENCdlppQmhJRTFGVTBnZ1QwWWdWRWhGSUVOSVNVeEVYRzRnSUNBcUlDQWdJQ0F0SUdCVVNGSkZSUzVOWlhOb1lEb2dRU0J3Y21sdGFYUnBkbVVnYjJZZ2RHaGxJRzFsYzJnZ2IyWWdkR2hsSUdOb2FXeGtYRzRnSUNBcUlDQWdJQ0F0SUdCVVNGSkZSUzVOWlhOb1lEb2dRU0J3Y21sdGFYUnBkbVVnYjJZZ2RHaGxJRzFsYzJnZ2IyWWdkR2hsSUdOb2FXeGtJQ2d5S1Z4dUlDQWdLbHh1SUNBZ0tpQXVMaTVKSUhkcGJHd2dkR0ZyWlNCaElITjBjbUYwWldkNUlIUm9ZWFFnZEhKaGRtVnljMlZ6SUhSb1pTQnliMjkwSUc5bUlIUm9aU0J1YjJSbElHRnVaQ0IwWVd0bElHWnBjbk4wSUNod2NtbHRhWFJwZG1WRGIzVnVkQ2tnYldWemFHVnpMbHh1SUNBZ0tpOWNibHh1SUNBdkx5Qk5ZV3RsSUhOMWNtVWdkR2hoZENCMGFHVWdibTlrWlNCb1lYTWdZU0J0WlhOb1hHNGdJR052Ym5OMElITmphR1Z0WVU1dlpHVWdQU0JxYzI5dUxtNXZaR1Z6UHk1YmJtOWtaVWx1WkdWNFhUdGNiaUFnYVdZZ0tITmphR1Z0WVU1dlpHVWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lHTnZibk52YkdVdWQyRnliaWhnWlhoMGNtRmpkRkJ5YVcxcGRHbDJaWE5KYm5SbGNtNWhiRG9nUVhSMFpXMXdkQ0IwYnlCMWMyVWdibTlrWlhOYkpIdHViMlJsU1c1a1pYaDlYU0J2WmlCbmJGUkdJR0oxZENCMGFHVWdibTlrWlNCa2IyVnpiaWQwSUdWNGFYTjBZQ2s3WEc0Z0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lIMWNibHh1SUNCamIyNXpkQ0J0WlhOb1NXNWtaWGdnUFNCelkyaGxiV0ZPYjJSbExtMWxjMmc3WEc0Z0lHbG1JQ2h0WlhOb1NXNWtaWGdnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQjlYRzVjYmlBZ0x5OGdTRzkzSUcxaGJua2djSEpwYldsMGFYWmxjeUIwYUdVZ2JXVnphQ0JvWVhNL1hHNGdJR052Ym5OMElITmphR1Z0WVUxbGMyZ2dQU0JxYzI5dUxtMWxjMmhsY3o4dVcyMWxjMmhKYm1SbGVGMDdYRzRnSUdsbUlDaHpZMmhsYldGTlpYTm9JRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQmpiMjV6YjJ4bExuZGhjbTRvWUdWNGRISmhZM1JRY21sdGFYUnBkbVZ6U1c1MFpYSnVZV3c2SUVGMGRHVnRjSFFnZEc4Z2RYTmxJRzFsYzJobGMxc2tlMjFsYzJoSmJtUmxlSDFkSUc5bUlHZHNWRVlnWW5WMElIUm9aU0J0WlhOb0lHUnZaWE51SjNRZ1pYaHBjM1JnS1R0Y2JpQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdmVnh1WEc0Z0lHTnZibk4wSUhCeWFXMXBkR2wyWlVOdmRXNTBJRDBnYzJOb1pXMWhUV1Z6YUM1d2NtbHRhWFJwZG1WekxteGxibWQwYUR0Y2JseHVJQ0F2THlCVWNtRjJaWEp6WlNCMGFHVWdibTlrWlNCaGJtUWdkR0ZyWlNCbWFYSnpkQ0FvY0hKcGJXbDBhWFpsUTI5MWJuUXBJRzFsYzJobGMxeHVJQ0JqYjI1emRDQndjbWx0YVhScGRtVnpPaUJVU0ZKRlJTNU5aWE5vVzEwZ1BTQmJYVHRjYmlBZ2JtOWtaUzUwY21GMlpYSnpaU2dvYjJKcVpXTjBLU0E5UGlCN1hHNGdJQ0FnYVdZZ0tIQnlhVzFwZEdsMlpYTXViR1Z1WjNSb0lEd2djSEpwYldsMGFYWmxRMjkxYm5RcElIdGNiaUFnSUNBZ0lHbG1JQ2dvYjJKcVpXTjBJR0Z6SUdGdWVTa3VhWE5OWlhOb0tTQjdYRzRnSUNBZ0lDQWdJSEJ5YVcxcGRHbDJaWE11Y0hWemFDaHZZbXBsWTNRZ1lYTWdWRWhTUlVVdVRXVnphQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOUtUdGNibHh1SUNCeVpYUjFjbTRnY0hKcGJXbDBhWFpsY3p0Y2JuMWNibHh1THlvcVhHNGdLaUJGZUhSeVlXTjBJSEJ5YVcxcGRHbDJaWE1nS0NCZ1ZFaFNSVVV1VFdWemFGdGRZQ0FwSUc5bUlHRWdibTlrWlNCbWNtOXRJR0VnYkc5aFpHVmtJRWRNVkVZdVhHNGdLaUJVYUdVZ2JXRnBiaUJ3ZFhKd2IzTmxJRzltSUhSb2FYTWdablZ1WTNScGIyNGdhWE1nZEc4Z1pHbHpkR2x1WjNWcGMyZ2djSEpwYldsMGFYWmxjeUJoYm1RZ1kyaHBiR1J5Wlc0Z1puSnZiU0JoSUc1dlpHVWdkR2hoZENCb1lYTWdZbTkwYUNCdFpYTm9aWE1nWVc1a0lHTm9hV3hrY21WdUxseHVJQ3BjYmlBcUlFbDBJSFYwYVd4cGVtVnpJSFJvWlNCaVpXaGhkbWx2Y2lCMGFHRjBJRWRNVkVaTWIyRmtaWElnWVdSa2N5QnRaWE5vSUhCeWFXMXBkR2wyWlhNZ2RHOGdkR2hsSUc1dlpHVWdiMkpxWldOMElDZ2dZRlJJVWtWRkxrZHliM1Z3WUNBcElHWnBjbk4wSUhSb1pXNGdZV1JrY3lCcGRITWdZMmhwYkdSeVpXNHVYRzRnS2x4dUlDb2dRSEJoY21GdElHZHNkR1lnUVNCSFRGUkdJRzlpYW1WamRDQjBZV3RsYmlCbWNtOXRJRWRNVkVaTWIyRmtaWEpjYmlBcUlFQndZWEpoYlNCdWIyUmxTVzVrWlhnZ1ZHaGxJR2x1WkdWNElHOW1JSFJvWlNCdWIyUmxYRzRnS2k5Y2JtVjRjRzl5ZENCaGMzbHVZeUJtZFc1amRHbHZiaUJuYkhSbVJYaDBjbUZqZEZCeWFXMXBkR2wyWlhOR2NtOXRUbTlrWlNobmJIUm1PaUJIVEZSR0xDQnViMlJsU1c1a1pYZzZJRzUxYldKbGNpazZJRkJ5YjIxcGMyVThWRWhTUlVVdVRXVnphRnRkSUh3Z2JuVnNiRDRnZTF4dUlDQmpiMjV6ZENCdWIyUmxPaUJVU0ZKRlJTNVBZbXBsWTNRelJDQTlJR0YzWVdsMElHZHNkR1l1Y0dGeWMyVnlMbWRsZEVSbGNHVnVaR1Z1WTNrb0oyNXZaR1VuTENCdWIyUmxTVzVrWlhncE8xeHVJQ0J5WlhSMWNtNGdaWGgwY21GamRGQnlhVzFwZEdsMlpYTkpiblJsY201aGJDaG5iSFJtTENCdWIyUmxTVzVrWlhnc0lHNXZaR1VwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRVY0ZEhKaFkzUWdjSEpwYldsMGFYWmxjeUFvSUdCVVNGSkZSUzVOWlhOb1cxMWdJQ2tnYjJZZ2JtOWtaWE1nWm5KdmJTQmhJR3h2WVdSbFpDQkhURlJHTGx4dUlDb2dVMlZsSUh0QWJHbHVheUJuYkhSbVJYaDBjbUZqZEZCeWFXMXBkR2wyWlhOR2NtOXRUbTlrWlgwZ1ptOXlJRzF2Y21VZ1pHVjBZV2xzY3k1Y2JpQXFYRzRnS2lCSmRDQnlaWFIxY201eklHRWdiV0Z3SUdaeWIyMGdibTlrWlNCcGJtUmxlQ0IwYnlCbGVIUnlZV04wYVc5dUlISmxjM1ZzZEM1Y2JpQXFJRWxtSUdFZ2JtOWtaU0JrYjJWeklHNXZkQ0JvWVhabElHRWdiV1Z6YUN3Z2RHaGxJR1Z1ZEhKNUlHWnZjaUIwYUdVZ2JtOWtaU0IzYVd4c0lHNXZkQ0JpWlNCd2RYUWdhVzRnZEdobElISmxkSFZ5Ym1sdVp5QnRZWEF1WEc0Z0tseHVJQ29nUUhCaGNtRnRJR2RzZEdZZ1FTQkhURlJHSUc5aWFtVmpkQ0IwWVd0bGJpQm1jbTl0SUVkTVZFWk1iMkZrWlhKY2JpQXFMMXh1Wlhod2IzSjBJR0Z6ZVc1aklHWjFibU4wYVc5dUlHZHNkR1pGZUhSeVlXTjBVSEpwYldsMGFYWmxjMFp5YjIxT2IyUmxjeWhuYkhSbU9pQkhURlJHS1RvZ1VISnZiV2x6WlR4TllYQThiblZ0WW1WeUxDQlVTRkpGUlM1TlpYTm9XMTArUGlCN1hHNGdJR052Ym5OMElHNXZaR1Z6T2lCVVNGSkZSUzVQWW1wbFkzUXpSRnRkSUQwZ1lYZGhhWFFnWjJ4MFppNXdZWEp6WlhJdVoyVjBSR1Z3Wlc1a1pXNWphV1Z6S0NkdWIyUmxKeWs3WEc0Z0lHTnZibk4wSUcxaGNDQTlJRzVsZHlCTllYQThiblZ0WW1WeUxDQlVTRkpGUlM1TlpYTm9XMTArS0NrN1hHNWNiaUFnYm05a1pYTXVabTl5UldGamFDZ29ibTlrWlN3Z2FXNWtaWGdwSUQwK0lIdGNiaUFnSUNCamIyNXpkQ0J5WlhOMWJIUWdQU0JsZUhSeVlXTjBVSEpwYldsMGFYWmxjMGx1ZEdWeWJtRnNLR2RzZEdZc0lHbHVaR1Y0TENCdWIyUmxLVHRjYmlBZ0lDQnBaaUFvY21WemRXeDBJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJRzFoY0M1elpYUW9hVzVrWlhnc0lISmxjM1ZzZENrN1hHNGdJQ0FnZlZ4dUlDQjlLVHRjYmx4dUlDQnlaWFIxY200Z2JXRndPMXh1ZlZ4dUlpd2lhVzF3YjNKMElDb2dZWE1nVkVoU1JVVWdabkp2YlNBbmRHaHlaV1VuTzF4dWFXMXdiM0owSUhzZ1IweFVSbEJoY25ObGNpQjlJR1p5YjIwZ0ozUm9jbVZsTDJWNFlXMXdiR1Z6TDJwemJTOXNiMkZrWlhKekwwZE1WRVpNYjJGa1pYSXVhbk1uTzF4dVhHNHZLaXBjYmlBcUlFZGxkQ0JoSUcxaGRHVnlhV0ZzSUdSbFptbHVhWFJwYjI0Z2FXNWtaWGdnYjJZZ1oyeFVSaUJtY205dElHRnpjMjlqYVdGMFpXUWdiV0YwWlhKcFlXd3VYRzRnS2lCSmRDZHpJR0poYzJsallXeHNlU0JoSUdOdmJXRjBJR052WkdVZ1ltVjBkMlZsYmlCVWFISmxaUzVxY3lCeU1UTXpJRzl5SUdGaWIzWmxJR0Z1WkNCd2NtVjJhVzkxY3lCMlpYSnphVzl1Y3k1Y2JpQXFJRUJ3WVhKaGJTQndZWEp6WlhJZ1IweFVSbEJoY25ObGNseHVJQ29nUUhCaGNtRnRJRzFoZEdWeWFXRnNJRUVnYldGMFpYSnBZV3dnYjJZZ1oyeDBabHh1SUNvZ1FISmxkSFZ5Ym5NZ1RXRjBaWEpwWVd3Z1pHVm1hVzVwZEdsdmJpQnBibVJsZUNCdlppQm5iRlJHWEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5iSFJtUjJWMFFYTnpiMk5wWVhSbFpFMWhkR1Z5YVdGc1NXNWtaWGdvY0dGeWMyVnlPaUJIVEZSR1VHRnljMlZ5TENCdFlYUmxjbWxoYkRvZ1ZFaFNSVVV1VFdGMFpYSnBZV3dwT2lCdWRXMWlaWElnZkNCdWRXeHNJSHRjYmlBZ1kyOXVjM1FnZEdoeVpXVlNaWFpwYzJsdmJpQTlJSEJoY25ObFNXNTBLRlJJVWtWRkxsSkZWa2xUU1U5T0xDQXhNQ2s3WEc1Y2JpQWdiR1YwSUdsdVpHVjRPaUJ1ZFcxaVpYSWdmQ0J1ZFd4c0lEMGdiblZzYkR0Y2JseHVJQ0JwWmlBb2RHaHlaV1ZTWlhacGMybHZiaUErUFNBeE16TXBJSHRjYmlBZ0lDQnBibVJsZUNBOUlIQmhjbk5sY2k1aGMzTnZZMmxoZEdsdmJuTXVaMlYwS0cxaGRHVnlhV0ZzS1Q4dWJXRjBaWEpwWVd4eklEOC9JRzUxYkd3N1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ0x5OGdRMDlOVUVGVU9pQnpkSEoxWTNSMWNtVWdiMllnWUhCaGNuTmxjaTVoYzNOdlkybGhkR2x2Ym5OZ0lHaGhjeUJpWldWdUlHTm9ZVzVuWldRZ1FDQnlNVE16WEc0Z0lDQWdMeThnVTJWbE9pQm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZiWEprYjI5aUwzUm9jbVZsTG1wekwzQjFiR3d2TWpFM016ZGNiaUFnSUNBdkx5QlNaV1k2SUdoMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5MGFISmxaUzEwZVhCbGN5OTBhSEpsWlMxMGN5MTBlWEJsY3k5amIyMXRhWFF2TlRJME5qWTNObVUwTnpsaU5qRmhPV1ptTW1SaU56RmtaalF4TVRsbU5tWXhORFl5TlRnd1pGeHVJQ0FnSUhSNWNHVWdSMHhVUmxKbFptVnlaVzVqWlZCeVpURXpNeUE5SUh0Y2JpQWdJQ0FnSUhSNWNHVTZJQ2R0WVhSbGNtbGhiSE1uSUh3Z0oyNXZaR1Z6SnlCOElDZDBaWGgwZFhKbGN5Y2dmQ0FuYldWemFHVnpKenRjYmlBZ0lDQWdJR2x1WkdWNE9pQnVkVzFpWlhJN1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUhSNWNHVWdSMHhVUmtGemMyOWphV0YwYVc5dWMxQnlaVEV6TXlBOUlFMWhjRHhVU0ZKRlJTNVBZbXBsWTNRelJDQjhJRlJJVWtWRkxrMWhkR1Z5YVdGc0lId2dWRWhTUlVVdVZHVjRkSFZ5WlN3Z1IweFVSbEpsWm1WeVpXNWpaVkJ5WlRFek16NDdYRzVjYmlBZ0lDQmpiMjV6ZENCaGMzTnZZMmxoZEdsdmJuTWdQU0J3WVhKelpYSXVZWE56YjJOcFlYUnBiMjV6SUdGeklFZE1WRVpCYzNOdlkybGhkR2x2Ym5OUWNtVXhNek03WEc1Y2JpQWdJQ0JqYjI1emRDQnlaV1psY21WdVkyVWdQU0JoYzNOdlkybGhkR2x2Ym5NdVoyVjBLRzFoZEdWeWFXRnNLVHRjYmx4dUlDQWdJR2xtSUNoeVpXWmxjbVZ1WTJVL0xuUjVjR1VnUFQwOUlDZHRZWFJsY21saGJITW5LU0I3WEc0Z0lDQWdJQ0JwYm1SbGVDQTlJSEpsWm1WeVpXNWpaUzVwYm1SbGVEdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2FXNWtaWGc3WEc1OVhHNGlMQ0l2S2lCbGMyeHBiblF0WkdsellXSnNaU0JBZEhsd1pYTmpjbWx3ZEMxbGMyeHBiblF2Ym1GdGFXNW5MV052Ym5abGJuUnBiMjRnS2k5Y2JseHVaWGh3YjNKMElHTnZibk4wSUZaU1RVVjRjSEpsYzNOcGIyNVFjbVZ6WlhST1lXMWxJRDBnZTF4dUlDQkJZVG9nSjJGaEp5eGNiaUFnU1dnNklDZHBhQ2NzWEc0Z0lFOTFPaUFuYjNVbkxGeHVJQ0JGWlRvZ0oyVmxKeXhjYmlBZ1QyZzZJQ2R2YUNjc1hHNGdJRUpzYVc1ck9pQW5ZbXhwYm1zbkxGeHVJQ0JJWVhCd2VUb2dKMmhoY0hCNUp5eGNiaUFnUVc1bmNuazZJQ2RoYm1keWVTY3NYRzRnSUZOaFpEb2dKM05oWkNjc1hHNGdJRkpsYkdGNFpXUTZJQ2R5Wld4aGVHVmtKeXhjYmlBZ1RHOXZhMVZ3T2lBbmJHOXZhMVZ3Snl4Y2JpQWdVM1Z5Y0hKcGMyVmtPaUFuYzNWeWNISnBjMlZrSnl4Y2JpQWdURzl2YTBSdmQyNDZJQ2RzYjI5clJHOTNiaWNzWEc0Z0lFeHZiMnRNWldaME9pQW5iRzl2YTB4bFpuUW5MRnh1SUNCTWIyOXJVbWxuYUhRNklDZHNiMjlyVW1sbmFIUW5MRnh1SUNCQ2JHbHVhMHhsWm5RNklDZGliR2x1YTB4bFpuUW5MRnh1SUNCQ2JHbHVhMUpwWjJoME9pQW5ZbXhwYm10U2FXZG9kQ2NzWEc0Z0lFNWxkWFJ5WVd3NklDZHVaWFYwY21Gc0p5eGNibjBnWVhNZ1kyOXVjM1E3WEc1Y2JtVjRjRzl5ZENCMGVYQmxJRlpTVFVWNGNISmxjM05wYjI1UWNtVnpaWFJPWVcxbElEMGdkSGx3Wlc5bUlGWlNUVVY0Y0hKbGMzTnBiMjVRY21WelpYUk9ZVzFsVzJ0bGVXOW1JSFI1Y0dWdlppQldVazFGZUhCeVpYTnphVzl1VUhKbGMyVjBUbUZ0WlYwN1hHNGlMQ0l2S2lwY2JpQXFJRU5zWVcxd0lIUm9aU0JwYm5CMWRDQjJZV3gxWlNCM2FYUm9hVzRnV3pBdU1DQXRJREV1TUYwdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUhaaGJIVmxJRlJvWlNCcGJuQjFkQ0IyWVd4MVpWeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYzJGMGRYSmhkR1VvZG1Gc2RXVTZJRzUxYldKbGNpazZJRzUxYldKbGNpQjdYRzRnSUhKbGRIVnliaUJOWVhSb0xtMWhlQ2hOWVhSb0xtMXBiaWgyWVd4MVpTd2dNUzR3S1N3Z01DNHdLVHRjYm4xY2JpSXNJbWx0Y0c5eWRDQjdJRlpTVFVWNGNISmxjM05wYjI1UWNtVnpaWFJPWVcxbElIMGdabkp2YlNBbkxpOVdVazFGZUhCeVpYTnphVzl1VUhKbGMyVjBUbUZ0WlNjN1hHNXBiWEJ2Y25RZ2V5QnpZWFIxY21GMFpTQjlJR1p5YjIwZ0p5NHVMM1YwYVd4ekwzTmhkSFZ5WVhSbEp6dGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1ZsSk5SWGh3Y21WemMybHZiaUI5SUdaeWIyMGdKeTR2VmxKTlJYaHdjbVZ6YzJsdmJpYzdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QldVazFGZUhCeVpYTnphVzl1VFdGdVlXZGxjaUI3WEc0Z0lDOHFLbHh1SUNBZ0tpQkJJSE5sZENCdlppQnVZVzFsSUc5eUlIQnlaWE5sZENCdVlXMWxJRzltSUdWNGNISmxjM05wYjI1eklIUm9ZWFFnZDJsc2JDQmlaU0J2ZG1WeWNtbGtaR1Z1SUdKNUlIdEFiR2x1YXlCV1VrMUZlSEJ5WlhOemFXOXVMbTkyWlhKeWFXUmxRbXhwYm10OUxseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHSnNhVzVyUlhod2NtVnpjMmx2Yms1aGJXVnpJRDBnV3lkaWJHbHVheWNzSUNkaWJHbHVhMHhsWm5RbkxDQW5ZbXhwYm10U2FXZG9kQ2RkTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJCSUhObGRDQnZaaUJ1WVcxbElHOXlJSEJ5WlhObGRDQnVZVzFsSUc5bUlHVjRjSEpsYzNOcGIyNXpJSFJvWVhRZ2QybHNiQ0JpWlNCdmRtVnljbWxrWkdWdUlHSjVJSHRBYkdsdWF5QldVazFGZUhCeVpYTnphVzl1TG05MlpYSnlhV1JsVEc5dmEwRjBmUzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJzYjI5clFYUkZlSEJ5WlhOemFXOXVUbUZ0WlhNZ1BTQmJKMnh2YjJ0TVpXWjBKeXdnSjJ4dmIydFNhV2RvZENjc0lDZHNiMjlyVlhBbkxDQW5iRzl2YTBSdmQyNG5YVHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRU0J6WlhRZ2IyWWdibUZ0WlNCdmNpQndjbVZ6WlhRZ2JtRnRaU0J2WmlCbGVIQnlaWE56YVc5dWN5QjBhR0YwSUhkcGJHd2dZbVVnYjNabGNuSnBaR1JsYmlCaWVTQjdRR3hwYm1zZ1ZsSk5SWGh3Y21WemMybHZiaTV2ZG1WeWNtbGtaVTF2ZFhSb2ZTNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnRiM1YwYUVWNGNISmxjM05wYjI1T1lXMWxjeUE5SUZzbllXRW5MQ0FuWldVbkxDQW5hV2duTENBbmIyZ25MQ0FuYjNVblhUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1FTQnpaWFFnYjJZZ2UwQnNhVzVySUZaU1RVVjRjSEpsYzNOcGIyNTlMbHh1SUNBZ0tpQlhhR1Z1SUhsdmRTQjNZVzUwSUhSdklISmxaMmx6ZEdWeUlHVjRjSEpsYzNOcGIyNXpMQ0IxYzJVZ2UwQnNhVzVySUhKbFoybHpkR1Z5Ulhod2NtVnpjMmx2Ym4xY2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1gyVjRjSEpsYzNOcGIyNXpPaUJXVWsxRmVIQnlaWE56YVc5dVcxMGdQU0JiWFR0Y2JpQWdjSFZpYkdsaklHZGxkQ0JsZUhCeVpYTnphVzl1Y3lncE9pQldVazFGZUhCeVpYTnphVzl1VzEwZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxsOWxlSEJ5WlhOemFXOXVjeTVqYjI1allYUW9LVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQklHMWhjQ0JtY205dElHNWhiV1VnZEc4Z1pYaHdjbVZ6YzJsdmJpNWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdYMlY0Y0hKbGMzTnBiMjVOWVhBNklIc2dXMjVoYldVNklITjBjbWx1WjEwNklGWlNUVVY0Y0hKbGMzTnBiMjRnZlNBOUlIdDlPMXh1SUNCd2RXSnNhV01nWjJWMElHVjRjSEpsYzNOcGIyNU5ZWEFvS1RvZ2V5QmJibUZ0WlRvZ2MzUnlhVzVuWFRvZ1ZsSk5SWGh3Y21WemMybHZiaUI5SUh0Y2JpQWdJQ0J5WlhSMWNtNGdUMkpxWldOMExtRnpjMmxuYmloN2ZTd2dkR2hwY3k1ZlpYaHdjbVZ6YzJsdmJrMWhjQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FTQnRZWEFnWm5KdmJTQnVZVzFsSUhSdklHVjRjSEpsYzNOcGIyNHNJR0oxZENCbGVHTnNkV1JwYm1jZ1kzVnpkRzl0SUdWNGNISmxjM05wYjI1ekxseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkQ0J3Y21WelpYUkZlSEJ5WlhOemFXOXVUV0Z3S0NrNklIc2dXMjVoYldVZ2FXNGdWbEpOUlhod2NtVnpjMmx2YmxCeVpYTmxkRTVoYldWZFB6b2dWbEpOUlhod2NtVnpjMmx2YmlCOUlIdGNiaUFnSUNCamIyNXpkQ0J5WlhOMWJIUTZJSHNnVzI1aGJXVWdhVzRnVmxKTlJYaHdjbVZ6YzJsdmJsQnlaWE5sZEU1aGJXVmRQem9nVmxKTlJYaHdjbVZ6YzJsdmJpQjlJRDBnZTMwN1hHNWNiaUFnSUNCamIyNXpkQ0J3Y21WelpYUk9ZVzFsVTJWMElEMGdibVYzSUZObGREeHpkSEpwYm1jK0tFOWlhbVZqZEM1MllXeDFaWE1vVmxKTlJYaHdjbVZ6YzJsdmJsQnlaWE5sZEU1aGJXVXBLVHRjYmx4dUlDQWdJRTlpYW1WamRDNWxiblJ5YVdWektIUm9hWE11WDJWNGNISmxjM05wYjI1TllYQXBMbVp2Y2tWaFkyZ29LRnR1WVcxbExDQmxlSEJ5WlhOemFXOXVYU2tnUFQ0Z2UxeHVJQ0FnSUNBZ2FXWWdLSEJ5WlhObGRFNWhiV1ZUWlhRdWFHRnpLRzVoYldVcEtTQjdYRzRnSUNBZ0lDQWdJSEpsYzNWc2RGdHVZVzFsSUdGeklGWlNUVVY0Y0hKbGMzTnBiMjVRY21WelpYUk9ZVzFsWFNBOUlHVjRjSEpsYzNOcGIyNDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFRWdiV0Z3SUdaeWIyMGdibUZ0WlNCMGJ5QmxlSEJ5WlhOemFXOXVMQ0JpZFhRZ1pYaGpiSFZrYVc1bklIQnlaWE5sZENCbGVIQnlaWE56YVc5dWN5NWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFFnWTNWemRHOXRSWGh3Y21WemMybHZiazFoY0NncE9pQjdJRnR1WVcxbE9pQnpkSEpwYm1kZE9pQldVazFGZUhCeVpYTnphVzl1SUgwZ2UxeHVJQ0FnSUdOdmJuTjBJSEpsYzNWc2REb2dleUJiYm1GdFpUb2djM1J5YVc1blhUb2dWbEpOUlhod2NtVnpjMmx2YmlCOUlEMGdlMzA3WEc1Y2JpQWdJQ0JqYjI1emRDQndjbVZ6WlhST1lXMWxVMlYwSUQwZ2JtVjNJRk5sZER4emRISnBibWMrS0U5aWFtVmpkQzUyWVd4MVpYTW9WbEpOUlhod2NtVnpjMmx2YmxCeVpYTmxkRTVoYldVcEtUdGNibHh1SUNBZ0lFOWlhbVZqZEM1bGJuUnlhV1Z6S0hSb2FYTXVYMlY0Y0hKbGMzTnBiMjVOWVhBcExtWnZja1ZoWTJnb0tGdHVZVzFsTENCbGVIQnlaWE56YVc5dVhTa2dQVDRnZTF4dUlDQWdJQ0FnYVdZZ0tDRndjbVZ6WlhST1lXMWxVMlYwTG1oaGN5aHVZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWE4xYkhSYmJtRnRaVjBnUFNCbGVIQnlaWE56YVc5dU8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1VnWVNCdVpYY2dlMEJzYVc1cklGWlNUVVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlmUzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJqYjI1emRISjFZM1J2Y2lncElIdGNiaUFnSUNBdkx5QmtieUJ1YjNSb2FXNW5YRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTI5d2VTQjBhR1VnWjJsMlpXNGdlMEJzYVc1cklGWlNUVVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlmU0JwYm5SdklIUm9hWE1nYjI1bExseHVJQ0FnS2lCQWNHRnlZVzBnYzI5MWNtTmxJRlJvWlNCN1FHeHBibXNnVmxKTlJYaHdjbVZ6YzJsdmJrMWhibUZuWlhKOUlIbHZkU0IzWVc1MElIUnZJR052Y0hsY2JpQWdJQ29nUUhKbGRIVnlibk1nZEdocGMxeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHTnZjSGtvYzI5MWNtTmxPaUJXVWsxRmVIQnlaWE56YVc5dVRXRnVZV2RsY2lrNklIUm9hWE1nZTF4dUlDQWdJQzh2SUdacGNuTjBJSFZ1Y21WbmFYTjBaWElnWVd4c0lIUm9aU0JsZUhCeVpYTnphVzl1SUdsMElHaGhjMXh1SUNBZ0lHTnZibk4wSUdWNGNISmxjM05wYjI1eklEMGdkR2hwY3k1ZlpYaHdjbVZ6YzJsdmJuTXVZMjl1WTJGMEtDazdYRzRnSUNBZ1pYaHdjbVZ6YzJsdmJuTXVabTl5UldGamFDZ29aWGh3Y21WemMybHZiaWtnUFQ0Z2UxeHVJQ0FnSUNBZ2RHaHBjeTUxYm5KbFoybHpkR1Z5Ulhod2NtVnpjMmx2YmlobGVIQnlaWE56YVc5dUtUdGNiaUFnSUNCOUtUdGNibHh1SUNBZ0lDOHZJSFJvWlc0Z2NtVm5hWE4wWlhJZ1lXeHNJSFJvWlNCbGVIQnlaWE56YVc5dUlHOW1JSFJvWlNCemIzVnlZMlZjYmlBZ0lDQnpiM1Z5WTJVdVgyVjRjSEpsYzNOcGIyNXpMbVp2Y2tWaFkyZ29LR1Y0Y0hKbGMzTnBiMjRwSUQwK0lIdGNiaUFnSUNBZ0lIUm9hWE11Y21WbmFYTjBaWEpGZUhCeVpYTnphVzl1S0dWNGNISmxjM05wYjI0cE8xeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ0x5OGdZMjl3ZVNCeVpXMWhhVzVwYm1jZ2JXVnRZbVZ5YzF4dUlDQWdJSFJvYVhNdVlteHBibXRGZUhCeVpYTnphVzl1VG1GdFpYTWdQU0J6YjNWeVkyVXVZbXhwYm10RmVIQnlaWE56YVc5dVRtRnRaWE11WTI5dVkyRjBLQ2s3WEc0Z0lDQWdkR2hwY3k1c2IyOXJRWFJGZUhCeVpYTnphVzl1VG1GdFpYTWdQU0J6YjNWeVkyVXViRzl2YTBGMFJYaHdjbVZ6YzJsdmJrNWhiV1Z6TG1OdmJtTmhkQ2dwTzF4dUlDQWdJSFJvYVhNdWJXOTFkR2hGZUhCeVpYTnphVzl1VG1GdFpYTWdQU0J6YjNWeVkyVXViVzkxZEdoRmVIQnlaWE56YVc5dVRtRnRaWE11WTI5dVkyRjBLQ2s3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHRWdZMnh2Ym1VZ2IyWWdkR2hwY3lCN1FHeHBibXNnVmxKTlJYaHdjbVZ6YzJsdmJrMWhibUZuWlhKOUxseHVJQ0FnS2lCQWNtVjBkWEp1Y3lCRGIzQnBaV1FnZTBCc2FXNXJJRlpTVFVWNGNISmxjM05wYjI1TllXNWhaMlZ5ZlZ4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdOc2IyNWxLQ2s2SUZaU1RVVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeUlIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGWlNUVVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlLQ2t1WTI5d2VTaDBhR2x6S1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY200Z1lTQnlaV2RwYzNSbGNtVmtJR1Y0Y0hKbGMzTnBiMjR1WEc0Z0lDQXFJRWxtSUdsMElHTmhibTV2ZENCbWFXNWtJR0Z1SUdWNGNISmxjM05wYjI0c0lHbDBJSGRwYkd3Z2NtVjBkWEp1SUdCdWRXeHNZQ0JwYm5OMFpXRmtMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnYm1GdFpTQk9ZVzFsSUc5eUlIQnlaWE5sZENCdVlXMWxJRzltSUhSb1pTQmxlSEJ5WlhOemFXOXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdaMlYwUlhod2NtVnpjMmx2YmlodVlXMWxPaUJXVWsxRmVIQnlaWE56YVc5dVVISmxjMlYwVG1GdFpTQjhJSE4wY21sdVp5azZJRlpTVFVWNGNISmxjM05wYjI0Z2ZDQnVkV3hzSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZlpYaHdjbVZ6YzJsdmJrMWhjRnR1WVcxbFhTQS9QeUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsWjJsemRHVnlJR0Z1SUdWNGNISmxjM05wYjI0dVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQmxlSEJ5WlhOemFXOXVJSHRBYkdsdWF5QldVazFGZUhCeVpYTnphVzl1ZlNCMGFHRjBJR1JsYzJOeWFXSmxjeUIwYUdVZ1pYaHdjbVZ6YzJsdmJseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklISmxaMmx6ZEdWeVJYaHdjbVZ6YzJsdmJpaGxlSEJ5WlhOemFXOXVPaUJXVWsxRmVIQnlaWE56YVc5dUtUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NWZaWGh3Y21WemMybHZibk11Y0hWemFDaGxlSEJ5WlhOemFXOXVLVHRjYmlBZ0lDQjBhR2x6TGw5bGVIQnlaWE56YVc5dVRXRndXMlY0Y0hKbGMzTnBiMjR1Wlhod2NtVnpjMmx2Yms1aGJXVmRJRDBnWlhod2NtVnpjMmx2Ymp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlZibkpsWjJsemRHVnlJR0Z1SUdWNGNISmxjM05wYjI0dVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQmxlSEJ5WlhOemFXOXVJRlJvWlNCbGVIQnlaWE56YVc5dUlIbHZkU0IzWVc1MElIUnZJSFZ1Y21WbmFYTjBaWEpjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUIxYm5KbFoybHpkR1Z5Ulhod2NtVnpjMmx2YmlobGVIQnlaWE56YVc5dU9pQldVazFGZUhCeVpYTnphVzl1S1RvZ2RtOXBaQ0I3WEc0Z0lDQWdZMjl1YzNRZ2FXNWtaWGdnUFNCMGFHbHpMbDlsZUhCeVpYTnphVzl1Y3k1cGJtUmxlRTltS0dWNGNISmxjM05wYjI0cE8xeHVJQ0FnSUdsbUlDaHBibVJsZUNBOVBUMGdMVEVwSUh0Y2JpQWdJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpZ25WbEpOUlhod2NtVnpjMmx2YmsxaGJtRm5aWEk2SUZSb1pTQnpjR1ZqYVdacFpXUWdaWGh3Y21WemMybHZibk1nYVhNZ2JtOTBJSEpsWjJsemRHVnlaV1FuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxsOWxlSEJ5WlhOemFXOXVjeTV6Y0d4cFkyVW9hVzVrWlhnc0lERXBPMXh1SUNBZ0lHUmxiR1YwWlNCMGFHbHpMbDlsZUhCeVpYTnphVzl1VFdGd1cyVjRjSEpsYzNOcGIyNHVaWGh3Y21WemMybHZiazVoYldWZE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZENCMGFHVWdZM1Z5Y21WdWRDQjNaV2xuYUhRZ2IyWWdkR2hsSUhOd1pXTnBabWxsWkNCbGVIQnlaWE56YVc5dUxseHVJQ0FnS2lCSlppQnBkQ0JrYjJWemJpZDBJR2hoZG1VZ1lXNGdaWGh3Y21WemMybHZiaUJ2WmlCbmFYWmxiaUJ1WVcxbExDQnBkQ0IzYVd4c0lISmxkSFZ5YmlCZ2JuVnNiR0FnYVc1emRHVmhaQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUc1aGJXVWdUbUZ0WlNCdlppQjBhR1VnWlhod2NtVnpjMmx2Ymx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdkbGRGWmhiSFZsS0c1aGJXVTZJRlpTVFVWNGNISmxjM05wYjI1UWNtVnpaWFJPWVcxbElId2djM1J5YVc1bktUb2diblZ0WW1WeUlId2diblZzYkNCN1hHNGdJQ0FnWTI5dWMzUWdaWGh3Y21WemMybHZiaUE5SUhSb2FYTXVaMlYwUlhod2NtVnpjMmx2YmlodVlXMWxLVHRjYmlBZ0lDQnlaWFIxY200Z1pYaHdjbVZ6YzJsdmJqOHVkMlZwWjJoMElEOC9JRzUxYkd3N1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVMlYwSUdFZ2QyVnBaMmgwSUhSdklIUm9aU0J6Y0dWamFXWnBaV1FnWlhod2NtVnpjMmx2Ymk1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElHNWhiV1VnVG1GdFpTQnZaaUIwYUdVZ1pYaHdjbVZ6YzJsdmJseHVJQ0FnS2lCQWNHRnlZVzBnZDJWcFoyaDBJRmRsYVdkb2RGeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITmxkRlpoYkhWbEtHNWhiV1U2SUZaU1RVVjRjSEpsYzNOcGIyNVFjbVZ6WlhST1lXMWxJSHdnYzNSeWFXNW5MQ0IzWldsbmFIUTZJRzUxYldKbGNpazZJSFp2YVdRZ2UxeHVJQ0FnSUdOdmJuTjBJR1Y0Y0hKbGMzTnBiMjRnUFNCMGFHbHpMbWRsZEVWNGNISmxjM05wYjI0b2JtRnRaU2s3WEc0Z0lDQWdhV1lnS0dWNGNISmxjM05wYjI0cElIdGNiaUFnSUNBZ0lHVjRjSEpsYzNOcGIyNHVkMlZwWjJoMElEMGdjMkYwZFhKaGRHVW9kMlZwWjJoMEtUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSMlYwSUdFZ2RISmhZMnNnYm1GdFpTQnZaaUJ6Y0dWamFXWnBaV1FnWlhod2NtVnpjMmx2Ymk1Y2JpQWdJQ29nVkdocGN5QjBjbUZqYXlCdVlXMWxJR2x6SUc1bFpXUmxaQ0IwYnlCdFlXNXBjSFZzWVhSbElHbDBjeUJsZUhCeVpYTnphVzl1SUhacFlTQnJaWGxtY21GdFpTQmhibWx0WVhScGIyNXpMbHh1SUNBZ0tseHVJQ0FnS2lCQVpYaGhiWEJzWlNCTllXNXBjSFZzWVhSbElHRnVJR1Y0Y0hKbGMzTnBiMjRnZFhOcGJtY2dhMlY1Wm5KaGJXVWdZVzVwYldGMGFXOXVYRzRnSUNBcUlHQmdZR3B6WEc0Z0lDQXFJR052Ym5OMElIUnlZV05yVG1GdFpTQTlJSFp5YlM1bGVIQnlaWE56YVc5dVRXRnVZV2RsY2k1blpYUkZlSEJ5WlhOemFXOXVWSEpoWTJ0T1lXMWxLQ0FuWW14cGJtc25JQ2s3WEc0Z0lDQXFJR052Ym5OMElIUnlZV05ySUQwZ2JtVjNJRlJJVWtWRkxrNTFiV0psY2t0bGVXWnlZVzFsVkhKaFkyc29YRzRnSUNBcUlDQWdibUZ0WlN4Y2JpQWdJQ29nSUNCYklEQXVNQ3dnTUM0MUxDQXhMakFnWFN3Z0x5OGdkR2x0WlhOY2JpQWdJQ29nSUNCYklEQXVNQ3dnTVM0d0xDQXdMakFnWFNBdkx5QjJZV3gxWlhOY2JpQWdJQ29nS1R0Y2JpQWdJQ3BjYmlBZ0lDb2dZMjl1YzNRZ1kyeHBjQ0E5SUc1bGR5QlVTRkpGUlM1QmJtbHRZWFJwYjI1RGJHbHdLRnh1SUNBZ0tpQWdJQ2RpYkdsdWF5Y3NJQzh2SUc1aGJXVmNiaUFnSUNvZ0lDQXhMakFzSUM4dklHUjFjbUYwYVc5dVhHNGdJQ0FxSUNBZ1d5QjBjbUZqYXlCZElDOHZJSFJ5WVdOcmMxeHVJQ0FnS2lBcE8xeHVJQ0FnS2x4dUlDQWdLaUJqYjI1emRDQnRhWGhsY2lBOUlHNWxkeUJVU0ZKRlJTNUJibWx0WVhScGIyNU5hWGhsY2lnZ2RuSnRMbk5qWlc1bElDazdYRzRnSUNBcUlHTnZibk4wSUdGamRHbHZiaUE5SUcxcGVHVnlMbU5zYVhCQlkzUnBiMjRvSUdOc2FYQWdLVHRjYmlBZ0lDb2dZV04wYVc5dUxuQnNZWGtvS1R0Y2JpQWdJQ29nWUdCZ1hHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQnVZVzFsSUU1aGJXVWdiMllnZEdobElHVjRjSEpsYzNOcGIyNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFJGZUhCeVpYTnphVzl1VkhKaFkydE9ZVzFsS0c1aGJXVTZJRlpTVFVWNGNISmxjM05wYjI1UWNtVnpaWFJPWVcxbElId2djM1J5YVc1bktUb2djM1J5YVc1bklId2diblZzYkNCN1hHNGdJQ0FnWTI5dWMzUWdaWGh3Y21WemMybHZiaUE5SUhSb2FYTXVaMlYwUlhod2NtVnpjMmx2YmlodVlXMWxLVHRjYmlBZ0lDQnlaWFIxY200Z1pYaHdjbVZ6YzJsdmJpQS9JR0FrZTJWNGNISmxjM05wYjI0dWJtRnRaWDB1ZDJWcFoyaDBZQ0E2SUc1MWJHdzdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVlhCa1lYUmxJR1YyWlhKNUlHVjRjSEpsYzNOcGIyNXpMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSFZ3WkdGMFpTZ3BPaUIyYjJsa0lIdGNiaUFnSUNBdkx5QnpaV1VnYUc5M0lHMTFZMmdnZDJVZ2MyaHZkV3hrSUc5MlpYSnlhV1JsSUdObGNuUmhhVzRnWlhod2NtVnpjMmx2Ym5OY2JpQWdJQ0JqYjI1emRDQjNaV2xuYUhSTmRXeDBhWEJzYVdWeWN5QTlJSFJvYVhNdVgyTmhiR04xYkdGMFpWZGxhV2RvZEUxMWJIUnBjR3hwWlhKektDazdYRzVjYmlBZ0lDQXZMeUJ5WlhObGRDQmxlSEJ5WlhOemFXOXVJR0pwYm1SeklHWnBjbk4wWEc0Z0lDQWdkR2hwY3k1ZlpYaHdjbVZ6YzJsdmJuTXVabTl5UldGamFDZ29aWGh3Y21WemMybHZiaWtnUFQ0Z2UxeHVJQ0FnSUNBZ1pYaHdjbVZ6YzJsdmJpNWpiR1ZoY2tGd2NHeHBaV1JYWldsbmFIUW9LVHRjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJQzh2SUhSb1pXNGdZWEJ3YkhrZ1ltbHVaSE5jYmlBZ0lDQjBhR2x6TGw5bGVIQnlaWE56YVc5dWN5NW1iM0pGWVdOb0tDaGxlSEJ5WlhOemFXOXVLU0E5UGlCN1hHNGdJQ0FnSUNCc1pYUWdiWFZzZEdsd2JHbGxjaUE5SURFdU1EdGNiaUFnSUNBZ0lHTnZibk4wSUc1aGJXVWdQU0JsZUhCeVpYTnphVzl1TG1WNGNISmxjM05wYjI1T1lXMWxPMXh1WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTVpYkdsdWEwVjRjSEpsYzNOcGIyNU9ZVzFsY3k1cGJtUmxlRTltS0c1aGJXVXBJQ0U5UFNBdE1Ta2dlMXh1SUNBZ0lDQWdJQ0J0ZFd4MGFYQnNhV1Z5SUNvOUlIZGxhV2RvZEUxMWJIUnBjR3hwWlhKekxtSnNhVzVyTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1c2IyOXJRWFJGZUhCeVpYTnphVzl1VG1GdFpYTXVhVzVrWlhoUFppaHVZVzFsS1NBaFBUMGdMVEVwSUh0Y2JpQWdJQ0FnSUNBZ2JYVnNkR2x3YkdsbGNpQXFQU0IzWldsbmFIUk5kV3gwYVhCc2FXVnljeTVzYjI5clFYUTdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbTF2ZFhSb1JYaHdjbVZ6YzJsdmJrNWhiV1Z6TG1sdVpHVjRUMllvYm1GdFpTa2dJVDA5SUMweEtTQjdYRzRnSUNBZ0lDQWdJRzExYkhScGNHeHBaWElnS2owZ2QyVnBaMmgwVFhWc2RHbHdiR2xsY25NdWJXOTFkR2c3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdWNGNISmxjM05wYjI0dVlYQndiSGxYWldsbmFIUW9leUJ0ZFd4MGFYQnNhV1Z5SUgwcE8xeHVJQ0FnSUgwcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU5oYkdOMWJHRjBaU0J6ZFcwZ2IyWWdiM1psY25KcFpHVWdZVzF2ZFc1MGN5QjBieUJ6WldVZ2FHOTNJRzExWTJnZ2QyVWdjMmh2ZFd4a0lHMTFiSFJwY0d4NUlIZGxhV2RvZEhNZ2IyWWdZMlZ5ZEdGcGJpQmxlSEJ5WlhOemFXOXVjeTVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWDJOaGJHTjFiR0YwWlZkbGFXZG9kRTExYkhScGNHeHBaWEp6S0NrNklIdGNiaUFnSUNCaWJHbHVhem9nYm5WdFltVnlPMXh1SUNBZ0lHeHZiMnRCZERvZ2JuVnRZbVZ5TzF4dUlDQWdJRzF2ZFhSb09pQnVkVzFpWlhJN1hHNGdJSDBnZTF4dUlDQWdJR3hsZENCaWJHbHVheUE5SURFdU1EdGNiaUFnSUNCc1pYUWdiRzl2YTBGMElEMGdNUzR3TzF4dUlDQWdJR3hsZENCdGIzVjBhQ0E5SURFdU1EdGNibHh1SUNBZ0lIUm9hWE11WDJWNGNISmxjM05wYjI1ekxtWnZja1ZoWTJnb0tHVjRjSEpsYzNOcGIyNHBJRDArSUh0Y2JpQWdJQ0FnSUdKc2FXNXJJQzA5SUdWNGNISmxjM05wYjI0dWIzWmxjbkpwWkdWQ2JHbHVhMEZ0YjNWdWREdGNiaUFnSUNBZ0lHeHZiMnRCZENBdFBTQmxlSEJ5WlhOemFXOXVMbTkyWlhKeWFXUmxURzl2YTBGMFFXMXZkVzUwTzF4dUlDQWdJQ0FnYlc5MWRHZ2dMVDBnWlhod2NtVnpjMmx2Ymk1dmRtVnljbWxrWlUxdmRYUm9RVzF2ZFc1ME8xeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ1lteHBibXNnUFNCTllYUm9MbTFoZUNnd0xqQXNJR0pzYVc1cktUdGNiaUFnSUNCc2IyOXJRWFFnUFNCTllYUm9MbTFoZUNnd0xqQXNJR3h2YjJ0QmRDazdYRzRnSUNBZ2JXOTFkR2dnUFNCTllYUm9MbTFoZUNnd0xqQXNJRzF2ZFhSb0tUdGNibHh1SUNBZ0lISmxkSFZ5YmlCN0lHSnNhVzVyTENCc2IyOXJRWFFzSUcxdmRYUm9JSDA3WEc0Z0lIMWNibjFjYmlJc0lpOHFJR1Z6YkdsdWRDMWthWE5oWW14bElFQjBlWEJsYzJOeWFYQjBMV1Z6YkdsdWRDOXVZVzFwYm1jdFkyOXVkbVZ1ZEdsdmJpQXFMMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdWbEpOUlhod2NtVnpjMmx2YmsxaGRHVnlhV0ZzUTI5c2IzSlVlWEJsSUQwZ2UxeHVJQ0JEYjJ4dmNqb2dKMk52Ykc5eUp5eGNiaUFnUlcxcGMzTnBiMjVEYjJ4dmNqb2dKMlZ0YVhOemFXOXVRMjlzYjNJbkxGeHVJQ0JUYUdGa1pVTnZiRzl5T2lBbmMyaGhaR1ZEYjJ4dmNpY3NYRzRnSUUxaGRHTmhjRU52Ykc5eU9pQW5iV0YwWTJGd1EyOXNiM0luTEZ4dUlDQlNhVzFEYjJ4dmNqb2dKM0pwYlVOdmJHOXlKeXhjYmlBZ1QzVjBiR2x1WlVOdmJHOXlPaUFuYjNWMGJHbHVaVU52Ykc5eUp5eGNibjBnWVhNZ1kyOXVjM1E3WEc1Y2JtVjRjRzl5ZENCMGVYQmxJRlpTVFVWNGNISmxjM05wYjI1TllYUmxjbWxoYkVOdmJHOXlWSGx3WlNBOVhHNGdJSFI1Y0dWdlppQldVazFGZUhCeVpYTnphVzl1VFdGMFpYSnBZV3hEYjJ4dmNsUjVjR1ZiYTJWNWIyWWdkSGx3Wlc5bUlGWlNUVVY0Y0hKbGMzTnBiMjVOWVhSbGNtbGhiRU52Ykc5eVZIbHdaVjA3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0IyTUVWNGNISmxjM05wYjI1TllYUmxjbWxoYkVOdmJHOXlUV0Z3T2lCN0lGdHJaWGs2SUhOMGNtbHVaMTA2SUZaU1RVVjRjSEpsYzNOcGIyNU5ZWFJsY21saGJFTnZiRzl5Vkhsd1pTQjhJSFZ1WkdWbWFXNWxaQ0I5SUQwZ2UxeHVJQ0JmUTI5c2IzSTZJRlpTVFVWNGNISmxjM05wYjI1TllYUmxjbWxoYkVOdmJHOXlWSGx3WlM1RGIyeHZjaXhjYmlBZ1gwVnRhWE56YVc5dVEyOXNiM0k2SUZaU1RVVjRjSEpsYzNOcGIyNU5ZWFJsY21saGJFTnZiRzl5Vkhsd1pTNUZiV2x6YzJsdmJrTnZiRzl5TEZ4dUlDQmZVMmhoWkdWRGIyeHZjam9nVmxKTlJYaHdjbVZ6YzJsdmJrMWhkR1Z5YVdGc1EyOXNiM0pVZVhCbExsTm9ZV1JsUTI5c2IzSXNYRzRnSUY5U2FXMURiMnh2Y2pvZ1ZsSk5SWGh3Y21WemMybHZiazFoZEdWeWFXRnNRMjlzYjNKVWVYQmxMbEpwYlVOdmJHOXlMRnh1SUNCZlQzVjBiR2x1WlVOdmJHOXlPaUJXVWsxRmVIQnlaWE56YVc5dVRXRjBaWEpwWVd4RGIyeHZjbFI1Y0dVdVQzVjBiR2x1WlVOdmJHOXlMRnh1ZlR0Y2JpSXNJbWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnVmxKTlJYaHdjbVZ6YzJsdmJrSnBibVFnZlNCbWNtOXRJQ2N1TDFaU1RVVjRjSEpsYzNOcGIyNUNhVzVrSnp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnVmxKTlJYaHdjbVZ6YzJsdmJrMWhkR1Z5YVdGc1EyOXNiM0pVZVhCbElIMGdabkp2YlNBbkxpOVdVazFGZUhCeVpYTnphVzl1VFdGMFpYSnBZV3hEYjJ4dmNsUjVjR1VuTzF4dVhHNWpiMjV6ZENCZlkyOXNiM0lnUFNCdVpYY2dWRWhTUlVVdVEyOXNiM0lvS1R0Y2JseHVMeW9xWEc0Z0tpQkJJR0pwYm1RZ2IyWWdaWGh3Y21WemMybHZiaUJwYm1ac2RXVnVZMlZ6SUhSdklHRWdiV0YwWlhKcFlXd2dZMjlzYjNJdVhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5QldVazFGZUhCeVpYTnphVzl1VFdGMFpYSnBZV3hEYjJ4dmNrSnBibVFnYVcxd2JHVnRaVzUwY3lCV1VrMUZlSEJ5WlhOemFXOXVRbWx1WkNCN1hHNGdJQzhxS2x4dUlDQWdLaUJOWVhCd2FXNW5JRzltSUhCeWIzQmxjblI1SUc1aGJXVnpJR1p5YjIwZ1ZsSk5ReTl0WVhSbGNtbGhiRU52Ykc5eVFtbHVaSE11ZEhsd1pTQjBieUIwYUhKbFpTNXFjeTlOWVhSbGNtbGhiQzVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJRjl3Y205d1pYSjBlVTVoYldWTllYQk5ZWEE2SUh0Y2JpQWdJQ0JiWkdsemRHbHVaM1ZwYzJobGNqb2djM1J5YVc1blhUb2dleUJiZEhsd1pTQnBiaUJXVWsxRmVIQnlaWE56YVc5dVRXRjBaWEpwWVd4RGIyeHZjbFI1Y0dWZFB6b2djM1J5YVc1bklIMDdYRzRnSUgwZ1BTQjdYRzRnSUNBZ2FYTk5aWE5vVTNSaGJtUmhjbVJOWVhSbGNtbGhiRG9nZTF4dUlDQWdJQ0FnWTI5c2IzSTZJQ2RqYjJ4dmNpY3NYRzRnSUNBZ0lDQmxiV2x6YzJsdmJrTnZiRzl5T2lBblpXMXBjM05wZG1VbkxGeHVJQ0FnSUgwc1hHNGdJQ0FnYVhOTlpYTm9RbUZ6YVdOTllYUmxjbWxoYkRvZ2UxeHVJQ0FnSUNBZ1kyOXNiM0k2SUNkamIyeHZjaWNzWEc0Z0lDQWdmU3hjYmlBZ0lDQnBjMDFVYjI5dVRXRjBaWEpwWVd3NklIdGNiaUFnSUNBZ0lHTnZiRzl5T2lBblkyOXNiM0luTEZ4dUlDQWdJQ0FnWlcxcGMzTnBiMjVEYjJ4dmNqb2dKMlZ0YVhOemFYWmxKeXhjYmlBZ0lDQWdJRzkxZEd4cGJtVkRiMnh2Y2pvZ0oyOTFkR3hwYm1WRGIyeHZja1poWTNSdmNpY3NYRzRnSUNBZ0lDQnRZWFJqWVhCRGIyeHZjam9nSjIxaGRHTmhjRVpoWTNSdmNpY3NYRzRnSUNBZ0lDQnlhVzFEYjJ4dmNqb2dKM0JoY21GdFpYUnlhV05TYVcxRGIyeHZja1poWTNSdmNpY3NYRzRnSUNBZ0lDQnphR0ZrWlVOdmJHOXlPaUFuYzJoaFpHVkRiMnh2Y2taaFkzUnZjaWNzWEc0Z0lDQWdmU3hjYmlBZ2ZUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJSFJoY21kbGRDQnRZWFJsY21saGJDNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnlaV0ZrYjI1c2VTQnRZWFJsY21saGJEb2dWRWhTUlVVdVRXRjBaWEpwWVd3N1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSb1pTQjBlWEJsSUc5bUlIUm9aU0IwWVhKblpYUWdjSEp2Y0dWeWRIa2diMllnZEdobElHMWhkR1Z5YVdGc0xseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklISmxZV1J2Ym14NUlIUjVjR1U2SUZaU1RVVjRjSEpsYzNOcGIyNU5ZWFJsY21saGJFTnZiRzl5Vkhsd1pUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJSFJoY21kbGRDQmpiMnh2Y2k1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCeVpXRmtiMjVzZVNCMFlYSm5aWFJXWVd4MVpUb2dWRWhTUlVVdVEyOXNiM0k3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWwwY3lCemRHRjBaUzVjYmlBZ0lDb2dTV1lnYVhRZ1kyRnVibTkwSUdacGJtUWdkR2hsSUhSaGNtZGxkQ0J3Y205d1pYSjBlU0JwYmlCamIyNXpkSEoxWTNSdmNpd2dhWFFnZDJsc2JDQmlaU0J1ZFd4c0lHbHVjM1JsWVdRdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElGOXpkR0YwWlRvZ2UxeHVJQ0FnSUhCeWIzQmxjblI1VG1GdFpUb2djM1J5YVc1bk8xeHVJQ0FnSUdsdWFYUnBZV3hXWVd4MVpUb2dWRWhTUlVVdVEyOXNiM0k3WEc0Z0lDQWdaR1ZzZEdGV1lXeDFaVG9nVkVoU1JVVXVRMjlzYjNJN1hHNGdJSDBnZkNCdWRXeHNPMXh1WEc0Z0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpaDdYRzRnSUNBZ2JXRjBaWEpwWVd3c1hHNGdJQ0FnZEhsd1pTeGNiaUFnSUNCMFlYSm5aWFJXWVd4MVpTeGNiaUFnZlRvZ2UxeHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlGUm9aU0IwWVhKblpYUWdiV0YwWlhKcFlXd3VYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2JXRjBaWEpwWVd3NklGUklVa1ZGTGsxaGRHVnlhV0ZzTzF4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1ZHaGxJSFI1Y0dVZ2IyWWdkR2hsSUhSaGNtZGxkQ0J3Y205d1pYSjBlU0J2WmlCMGFHVWdiV0YwWlhKcFlXd3VYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2RIbHdaVG9nVmxKTlJYaHdjbVZ6YzJsdmJrMWhkR1Z5YVdGc1EyOXNiM0pVZVhCbE8xeHVYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dWR2hsSUhSaGNtZGxkQ0JqYjJ4dmNpNWNiaUFnSUNBZ0tpOWNiaUFnSUNCMFlYSm5aWFJXWVd4MVpUb2dWRWhTUlVVdVEyOXNiM0k3WEc0Z0lIMHBJSHRjYmlBZ0lDQjBhR2x6TG0xaGRHVnlhV0ZzSUQwZ2JXRjBaWEpwWVd3N1hHNGdJQ0FnZEdocGN5NTBlWEJsSUQwZ2RIbHdaVHRjYmlBZ0lDQjBhR2x6TG5SaGNtZGxkRlpoYkhWbElEMGdkR0Z5WjJWMFZtRnNkV1U3WEc1Y2JpQWdJQ0F2THlCcGJtbDBJSEJ5YjNCbGNuUjVJRzVoYldWY2JpQWdJQ0JqYjI1emRDQndjbTl3WlhKMGVVNWhiV1ZOWVhBZ1BTQlBZbXBsWTNRdVpXNTBjbWxsY3loV1VrMUZlSEJ5WlhOemFXOXVUV0YwWlhKcFlXeERiMnh2Y2tKcGJtUXVYM0J5YjNCbGNuUjVUbUZ0WlUxaGNFMWhjQ2t1Wm1sdVpDaGNiaUFnSUNBZ0lDaGJaR2x6ZEdsdVozVnBjMmhsY2wwcElEMCtJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJQ2h0WVhSbGNtbGhiQ0JoY3lCaGJua3BXMlJwYzNScGJtZDFhWE5vWlhKZElEMDlQU0IwY25WbE8xeHVJQ0FnSUNBZ2ZTeGNiaUFnSUNBcFB5NWJNVjA3WEc0Z0lDQWdZMjl1YzNRZ2NISnZjR1Z5ZEhsT1lXMWxJRDBnY0hKdmNHVnlkSGxPWVcxbFRXRndQeTViZEhsd1pWMGdQejhnYm5Wc2JEdGNibHh1SUNBZ0lHbG1JQ2h3Y205d1pYSjBlVTVoYldVZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ1kyOXVjMjlzWlM1M1lYSnVLRnh1SUNBZ0lDQWdJQ0JnVkhKcFpXUWdkRzhnWVdSa0lHRWdiV0YwWlhKcFlXd2dZMjlzYjNJZ1ltbHVaQ0IwYnlCMGFHVWdiV0YwWlhKcFlXd2dKSHRjYmlBZ0lDQWdJQ0FnSUNCdFlYUmxjbWxoYkM1dVlXMWxJRDgvSUNjb2JtOGdibUZ0WlNrblhHNGdJQ0FnSUNBZ0lIMHNJSFJvWlNCMGVYQmxJQ1I3ZEhsd1pYMGdZblYwSUhSb1pTQnRZWFJsY21saGJDQnZjaUIwYUdVZ2RIbHdaU0JwY3lCdWIzUWdjM1Z3Y0c5eWRHVmtMbUFzWEc0Z0lDQWdJQ0FwTzF4dVhHNGdJQ0FnSUNCMGFHbHpMbDl6ZEdGMFpTQTlJRzUxYkd3N1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR052Ym5OMElIUmhjbWRsZENBOUlDaHRZWFJsY21saGJDQmhjeUJoYm5rcFczQnliM0JsY25SNVRtRnRaVjBnWVhNZ1ZFaFNSVVV1UTI5c2IzSTdYRzVjYmlBZ0lDQWdJR052Ym5OMElHbHVhWFJwWVd4V1lXeDFaU0E5SUhSaGNtZGxkQzVqYkc5dVpTZ3BPMXh1WEc0Z0lDQWdJQ0F2THlEb3NxRGpnYTdsZ0tUamdwTGt2NTNtaklIamdabmpnb3ZqZ1ovamdvSGpnYXREYjJ4dmNpNXpkV0xqZ3BMa3ZiL2pnby9qZ1pyamdhdmx0NjdsaUliamdwTG9xSWpucnBmamdabmpnb3RjYmlBZ0lDQWdJR052Ym5OMElHUmxiSFJoVm1Gc2RXVWdQU0J1WlhjZ1ZFaFNSVVV1UTI5c2IzSW9YRzRnSUNBZ0lDQWdJSFJoY21kbGRGWmhiSFZsTG5JZ0xTQnBibWwwYVdGc1ZtRnNkV1V1Y2l4Y2JpQWdJQ0FnSUNBZ2RHRnlaMlYwVm1Gc2RXVXVaeUF0SUdsdWFYUnBZV3hXWVd4MVpTNW5MRnh1SUNBZ0lDQWdJQ0IwWVhKblpYUldZV3gxWlM1aUlDMGdhVzVwZEdsaGJGWmhiSFZsTG1Jc1hHNGdJQ0FnSUNBcE8xeHVYRzRnSUNBZ0lDQjBhR2x6TGw5emRHRjBaU0E5SUh0Y2JpQWdJQ0FnSUNBZ2NISnZjR1Z5ZEhsT1lXMWxMRnh1SUNBZ0lDQWdJQ0JwYm1sMGFXRnNWbUZzZFdVc1hHNGdJQ0FnSUNBZ0lHUmxiSFJoVm1Gc2RXVXNYRzRnSUNBZ0lDQjlPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QmhjSEJzZVZkbGFXZG9kQ2gzWldsbmFIUTZJRzUxYldKbGNpazZJSFp2YVdRZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TGw5emRHRjBaU0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0F2THlCM1lYSnVhVzVuSUdseklHRnNjbVZoWkhrZ1pXMXBkSFJsWkNCcGJpQmpiMjV6ZEhKMVkzUnZjbHh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJSHNnY0hKdmNHVnlkSGxPWVcxbExDQmtaV3gwWVZaaGJIVmxJSDBnUFNCMGFHbHpMbDl6ZEdGMFpUdGNibHh1SUNBZ0lHTnZibk4wSUhSaGNtZGxkQ0E5SUNoMGFHbHpMbTFoZEdWeWFXRnNJR0Z6SUdGdWVTbGJjSEp2Y0dWeWRIbE9ZVzFsWFNCaGN5QlVTRkpGUlM1RGIyeHZjanRjYmlBZ0lDQnBaaUFvZEdGeVoyVjBJRDA5UFNCMWJtUmxabWx1WldRcElIdGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5SUM4dklGUlBSRTg2SUhkbElITm9iM1ZzWkNCcmFXTnJJSFJvYVhNZ1lYUWdZR0ZrWkUxaGRHVnlhV0ZzVm1Gc2RXVmdYRzVjYmlBZ0lDQjBZWEpuWlhRdVlXUmtLRjlqYjJ4dmNpNWpiM0I1S0dSbGJIUmhWbUZzZFdVcExtMTFiSFJwY0d4NVUyTmhiR0Z5S0hkbGFXZG9kQ2twTzF4dVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlBb2RHaHBjeTV0WVhSbGNtbGhiQ0JoY3lCaGJua3BMbk5vYjNWc1pFRndjR3g1Vlc1cFptOXliWE1nUFQwOUlDZGliMjlzWldGdUp5a2dlMXh1SUNBZ0lDQWdLSFJvYVhNdWJXRjBaWEpwWVd3Z1lYTWdZVzU1S1M1emFHOTFiR1JCY0hCc2VWVnVhV1p2Y20xeklEMGdkSEoxWlR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWTJ4bFlYSkJjSEJzYVdWa1YyVnBaMmgwS0NrNklIWnZhV1FnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbDl6ZEdGMFpTQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQXZMeUIzWVhKdWFXNW5JR2x6SUdGc2NtVmhaSGtnWlcxcGRIUmxaQ0JwYmlCamIyNXpkSEoxWTNSdmNseHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElIc2djSEp2Y0dWeWRIbE9ZVzFsTENCcGJtbDBhV0ZzVm1Gc2RXVWdmU0E5SUhSb2FYTXVYM04wWVhSbE8xeHVYRzRnSUNBZ1kyOXVjM1FnZEdGeVoyVjBJRDBnS0hSb2FYTXViV0YwWlhKcFlXd2dZWE1nWVc1NUtWdHdjbTl3WlhKMGVVNWhiV1ZkSUdGeklGUklVa1ZGTGtOdmJHOXlPMXh1SUNBZ0lHbG1JQ2gwWVhKblpYUWdQVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDBnTHk4Z1ZFOUVUem9nZDJVZ2MyaHZkV3hrSUd0cFkyc2dkR2hwY3lCaGRDQmdZV1JrVFdGMFpYSnBZV3hXWVd4MVpXQmNibHh1SUNBZ0lIUmhjbWRsZEM1amIzQjVLR2x1YVhScFlXeFdZV3gxWlNrN1hHNWNiaUFnSUNCcFppQW9kSGx3Wlc5bUlDaDBhR2x6TG0xaGRHVnlhV0ZzSUdGeklHRnVlU2t1YzJodmRXeGtRWEJ3YkhsVmJtbG1iM0p0Y3lBOVBUMGdKMkp2YjJ4bFlXNG5LU0I3WEc0Z0lDQWdJQ0FvZEdocGN5NXRZWFJsY21saGJDQmhjeUJoYm5rcExuTm9iM1ZzWkVGd2NHeDVWVzVwWm05eWJYTWdQU0IwY25WbE8xeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dUlpd2lhVzF3YjNKMElIUjVjR1VnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVwYlhCdmNuUWdkSGx3WlNCN0lGWlNUVVY0Y0hKbGMzTnBiMjVDYVc1a0lIMGdabkp2YlNBbkxpOVdVazFGZUhCeVpYTnphVzl1UW1sdVpDYzdYRzVjYmk4cUtseHVJQ29nUVNCaWFXNWtJRzltSUh0QWJHbHVheUJXVWsxRmVIQnlaWE56YVc5dWZTQnBibVpzZFdWdVkyVnpJSFJ2SUcxdmNuQm9JSFJoY21kbGRITXVYRzRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJXVWsxRmVIQnlaWE56YVc5dVRXOXljR2hVWVhKblpYUkNhVzVrSUdsdGNHeGxiV1Z1ZEhNZ1ZsSk5SWGh3Y21WemMybHZia0pwYm1RZ2UxeHVJQ0F2S2lwY2JpQWdJQ29nVkdobElHMWxjMmdnY0hKcGJXbDBhWFpsY3lCMGFHRjBJR0YwZEdGamFHVmtJSFJ2SUhSaGNtZGxkQ0J0WlhOb0xseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklISmxZV1J2Ym14NUlIQnlhVzFwZEdsMlpYTTZJRlJJVWtWRkxrMWxjMmhiWFR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdobElHbHVaR1Y0SUc5bUlIUm9aU0J0YjNKd2FDQjBZWEpuWlhRZ2FXNGdkR2hsSUcxbGMyZ3VYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjbVZoWkc5dWJIa2dhVzVrWlhnNklHNTFiV0psY2p0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdobElIZGxhV2RvZENCMllXeDFaU0J2WmlCMFlYSm5aWFFnYlc5eWNHZ2dkR0Z5WjJWMExpQlNZVzVuYVc1bklHbHVJRnN3TGpBZ0xTQXhMakJkTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhKbFlXUnZibXg1SUhkbGFXZG9kRG9nYm5WdFltVnlPMXh1WEc0Z0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpaDdYRzRnSUNBZ2NISnBiV2wwYVhabGN5eGNiaUFnSUNCcGJtUmxlQ3hjYmlBZ0lDQjNaV2xuYUhRc1hHNGdJSDA2SUh0Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCVWFHVWdiV1Z6YUNCd2NtbHRhWFJwZG1WeklIUm9ZWFFnWVhSMFlXTm9aV1FnZEc4Z2RHRnlaMlYwSUcxbGMyZ3VYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2NISnBiV2wwYVhabGN6b2dWRWhTUlVVdVRXVnphRnRkTzF4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1ZHaGxJR2x1WkdWNElHOW1JSFJvWlNCdGIzSndhQ0IwWVhKblpYUWdhVzRnZEdobElHMWxjMmd1WEc0Z0lDQWdJQ292WEc0Z0lDQWdhVzVrWlhnNklHNTFiV0psY2p0Y2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlGUm9aU0IzWldsbmFIUWdkbUZzZFdVZ2IyWWdkR0Z5WjJWMElHMXZjbkJvSUhSaGNtZGxkQzRnVW1GdVoybHVaeUJwYmlCYk1DNHdJQzBnTVM0d1hTNWNiaUFnSUNBZ0tpOWNiaUFnSUNCM1pXbG5hSFE2SUc1MWJXSmxjanRjYmlBZ2ZTa2dlMXh1SUNBZ0lIUm9hWE11Y0hKcGJXbDBhWFpsY3lBOUlIQnlhVzFwZEdsMlpYTTdYRzRnSUNBZ2RHaHBjeTVwYm1SbGVDQTlJR2x1WkdWNE8xeHVJQ0FnSUhSb2FYTXVkMlZwWjJoMElEMGdkMlZwWjJoME8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHRndjR3g1VjJWcFoyaDBLSGRsYVdkb2REb2diblZ0WW1WeUtUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NXdjbWx0YVhScGRtVnpMbVp2Y2tWaFkyZ29LRzFsYzJncElEMCtJSHRjYmlBZ0lDQWdJR2xtSUNodFpYTm9MbTF2Y25Cb1ZHRnlaMlYwU1c1bWJIVmxibU5sY3o4dVczUm9hWE11YVc1a1pYaGRJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnYldWemFDNXRiM0p3YUZSaGNtZGxkRWx1Wm14MVpXNWpaWE5iZEdocGN5NXBibVJsZUYwZ0t6MGdkR2hwY3k1M1pXbG5hSFFnS2lCM1pXbG5hSFE3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWTJ4bFlYSkJjSEJzYVdWa1YyVnBaMmgwS0NrNklIWnZhV1FnZTF4dUlDQWdJSFJvYVhNdWNISnBiV2wwYVhabGN5NW1iM0pGWVdOb0tDaHRaWE5vS1NBOVBpQjdYRzRnSUNBZ0lDQnBaaUFvYldWemFDNXRiM0p3YUZSaGNtZGxkRWx1Wm14MVpXNWpaWE0vTGx0MGFHbHpMbWx1WkdWNFhTQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJRzFsYzJndWJXOXljR2hVWVhKblpYUkpibVpzZFdWdVkyVnpXM1JvYVhNdWFXNWtaWGhkSUQwZ01DNHdPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1SUNCOVhHNTlYRzRpTENKcGJYQnZjblFnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVwYlhCdmNuUWdkSGx3WlNCN0lGWlNUVVY0Y0hKbGMzTnBiMjVDYVc1a0lIMGdabkp2YlNBbkxpOVdVazFGZUhCeVpYTnphVzl1UW1sdVpDYzdYRzVjYm1OdmJuTjBJRjkyTWlBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJeUtDazdYRzVjYmk4cUtseHVJQ29nUVNCaWFXNWtJRzltSUdWNGNISmxjM05wYjI0Z2FXNW1iSFZsYm1ObGN5QjBieUIwWlhoMGRYSmxJSFJ5WVc1elptOXliWE11WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCV1VrMUZlSEJ5WlhOemFXOXVWR1Y0ZEhWeVpWUnlZVzV6Wm05eWJVSnBibVFnYVcxd2JHVnRaVzUwY3lCV1VrMUZlSEJ5WlhOemFXOXVRbWx1WkNCN1hHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklGOXdjbTl3WlhKMGVVNWhiV1Z6VFdGd09pQjdJRnRrYVhOMGFXNW5kV2x6YUdWeU9pQnpkSEpwYm1kZE9pQnpkSEpwYm1kYlhTQjlJRDBnZTF4dUlDQWdJR2x6VFdWemFGTjBZVzVrWVhKa1RXRjBaWEpwWVd3NklGdGNiaUFnSUNBZ0lDZHRZWEFuTEZ4dUlDQWdJQ0FnSjJWdGFYTnphWFpsVFdGd0p5eGNiaUFnSUNBZ0lDZGlkVzF3VFdGd0p5eGNiaUFnSUNBZ0lDZHViM0p0WVd4TllYQW5MRnh1SUNBZ0lDQWdKMlJwYzNCc1lXTmxiV1Z1ZEUxaGNDY3NYRzRnSUNBZ0lDQW5jbTkxWjJodVpYTnpUV0Z3Snl4Y2JpQWdJQ0FnSUNkdFpYUmhiRzVsYzNOTllYQW5MRnh1SUNBZ0lDQWdKMkZzY0doaFRXRndKeXhjYmlBZ0lDQmRMRnh1SUNBZ0lHbHpUV1Z6YUVKaGMybGpUV0YwWlhKcFlXdzZJRnNuYldGd0p5d2dKM053WldOMWJHRnlUV0Z3Snl3Z0oyRnNjR2hoVFdGd0oxMHNYRzRnSUNBZ2FYTk5WRzl2YmsxaGRHVnlhV0ZzT2lCYlhHNGdJQ0FnSUNBbmJXRndKeXhjYmlBZ0lDQWdJQ2R1YjNKdFlXeE5ZWEFuTEZ4dUlDQWdJQ0FnSjJWdGFYTnphWFpsVFdGd0p5eGNiaUFnSUNBZ0lDZHphR0ZrWlUxMWJIUnBjR3g1VkdWNGRIVnlaU2NzWEc0Z0lDQWdJQ0FuY21sdFRYVnNkR2x3YkhsVVpYaDBkWEpsSnl4Y2JpQWdJQ0FnSUNkdmRYUnNhVzVsVjJsa2RHaE5kV3gwYVhCc2VWUmxlSFIxY21VbkxGeHVJQ0FnSUNBZ0ozVjJRVzVwYldGMGFXOXVUV0Z6YTFSbGVIUjFjbVVuTEZ4dUlDQWdJRjBzWEc0Z0lIMDdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aU0IwWVhKblpYUWdiV0YwWlhKcFlXd3VYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjbVZoWkc5dWJIa2diV0YwWlhKcFlXdzZJRlJJVWtWRkxrMWhkR1Z5YVdGc08xeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdkWFlnYzJOaGJHVWdiMllnZEdobElIUmxlSFIxY21VdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2NtVmhaRzl1YkhrZ2MyTmhiR1U2SUZSSVVrVkZMbFpsWTNSdmNqSTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aU0IxZGlCdlptWnpaWFFnYjJZZ2RHaGxJSFJsZUhSMWNtVXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjbVZoWkc5dWJIa2diMlptYzJWME9pQlVTRkpGUlM1V1pXTjBiM0l5TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJVYUdVZ2JHbHpkQ0J2WmlCMFpYaDBkWEpsSUc1aGJXVnpJR0Z1WkNCcGRITWdjM1JoZEdVZ2RHaGhkQ0J6YUc5MWJHUWdZbVVnZEhKaGJuTm1iM0p0WldRZ1lua2dkR2hwY3lCaWFXNWtMbHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0JmY0hKdmNHVnlkR2xsY3pvZ2UxeHVJQ0FnSUc1aGJXVTZJSE4wY21sdVp6dGNiaUFnSUNCcGJtbDBhV0ZzVDJabWMyVjBPaUJVU0ZKRlJTNVdaV04wYjNJeU8xeHVJQ0FnSUdsdWFYUnBZV3hUWTJGc1pUb2dWRWhTUlVVdVZtVmpkRzl5TWp0Y2JpQWdJQ0JrWld4MFlVOW1abk5sZERvZ1ZFaFNSVVV1Vm1WamRHOXlNanRjYmlBZ0lDQmtaV3gwWVZOallXeGxPaUJVU0ZKRlJTNVdaV04wYjNJeU8xeHVJQ0I5VzEwN1hHNWNiaUFnY0hWaWJHbGpJR052Ym5OMGNuVmpkRzl5S0h0Y2JpQWdJQ0J0WVhSbGNtbGhiQ3hjYmlBZ0lDQnpZMkZzWlN4Y2JpQWdJQ0J2Wm1aelpYUXNYRzRnSUgwNklIdGNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQlVhR1VnZEdGeVoyVjBJRzFoZEdWeWFXRnNMbHh1SUNBZ0lDQXFMMXh1SUNBZ0lHMWhkR1Z5YVdGc09pQlVTRkpGUlM1TllYUmxjbWxoYkR0Y2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlGUm9aU0IxZGlCelkyRnNaU0J2WmlCMGFHVWdkR1Y0ZEhWeVpTNWNiaUFnSUNBZ0tpOWNiaUFnSUNCelkyRnNaVG9nVkVoU1JVVXVWbVZqZEc5eU1qdGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRlJvWlNCMWRpQnZabVp6WlhRZ2IyWWdkR2hsSUhSbGVIUjFjbVV1WEc0Z0lDQWdJQ292WEc0Z0lDQWdiMlptYzJWME9pQlVTRkpGUlM1V1pXTjBiM0l5TzF4dUlDQjlLU0I3WEc0Z0lDQWdkR2hwY3k1dFlYUmxjbWxoYkNBOUlHMWhkR1Z5YVdGc08xeHVJQ0FnSUhSb2FYTXVjMk5oYkdVZ1BTQnpZMkZzWlR0Y2JpQWdJQ0IwYUdsekxtOW1abk5sZENBOUlHOW1abk5sZER0Y2JseHVJQ0FnSUdOdmJuTjBJSEJ5YjNCbGNuUjVUbUZ0WlhNZ1BTQlBZbXBsWTNRdVpXNTBjbWxsY3loV1VrMUZlSEJ5WlhOemFXOXVWR1Y0ZEhWeVpWUnlZVzV6Wm05eWJVSnBibVF1WDNCeWIzQmxjblI1VG1GdFpYTk5ZWEFwTG1acGJtUW9YRzRnSUNBZ0lDQW9XMlJwYzNScGJtZDFhWE5vWlhKZEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUFvYldGMFpYSnBZV3dnWVhNZ1lXNTVLVnRrYVhOMGFXNW5kV2x6YUdWeVhTQTlQVDBnZEhKMVpUdGNiaUFnSUNBZ0lIMHNYRzRnSUNBZ0tUOHVXekZkTzF4dVhHNGdJQ0FnYVdZZ0tIQnliM0JsY25SNVRtRnRaWE1nUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnWTI5dWMyOXNaUzUzWVhKdUtGeHVJQ0FnSUNBZ0lDQmdWSEpwWldRZ2RHOGdZV1JrSUdFZ2RHVjRkSFZ5WlNCMGNtRnVjMlp2Y20wZ1ltbHVaQ0IwYnlCMGFHVWdiV0YwWlhKcFlXd2dKSHRjYmlBZ0lDQWdJQ0FnSUNCdFlYUmxjbWxoYkM1dVlXMWxJRDgvSUNjb2JtOGdibUZ0WlNrblhHNGdJQ0FnSUNBZ0lIMGdZblYwSUhSb1pTQnRZWFJsY21saGJDQnBjeUJ1YjNRZ2MzVndjRzl5ZEdWa0xtQXNYRzRnSUNBZ0lDQXBPMXh1WEc0Z0lDQWdJQ0IwYUdsekxsOXdjbTl3WlhKMGFXVnpJRDBnVzEwN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvYVhNdVgzQnliM0JsY25ScFpYTWdQU0JiWFR0Y2JseHVJQ0FnSUNBZ2NISnZjR1Z5ZEhsT1lXMWxjeTVtYjNKRllXTm9LQ2h3Y205d1pYSjBlVTVoYldVcElEMCtJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdkR1Y0ZEhWeVpTQTlJQ2dvYldGMFpYSnBZV3dnWVhNZ1lXNTVLVnR3Y205d1pYSjBlVTVoYldWZElHRnpJRlJJVWtWRkxsUmxlSFIxY21VZ2ZDQjFibVJsWm1sdVpXUXBQeTVqYkc5dVpTZ3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb0lYUmxlSFIxY21VcElIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ2h0WVhSbGNtbGhiQ0JoY3lCaGJua3BXM0J5YjNCbGNuUjVUbUZ0WlYwZ1BTQjBaWGgwZFhKbE95QXZMeUJpWldOaGRYTmxJSFJvWlNCMFpYaDBkWEpsSUdseklHTnNiMjVsWkZ4dVhHNGdJQ0FnSUNBZ0lHTnZibk4wSUdsdWFYUnBZV3hQWm1aelpYUWdQU0IwWlhoMGRYSmxMbTltWm5ObGRDNWpiRzl1WlNncE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCcGJtbDBhV0ZzVTJOaGJHVWdQU0IwWlhoMGRYSmxMbkpsY0dWaGRDNWpiRzl1WlNncE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCa1pXeDBZVTltWm5ObGRDQTlJRzltWm5ObGRDNWpiRzl1WlNncExuTjFZaWhwYm1sMGFXRnNUMlptYzJWMEtUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1pHVnNkR0ZUWTJGc1pTQTlJSE5qWVd4bExtTnNiMjVsS0NrdWMzVmlLR2x1YVhScFlXeFRZMkZzWlNrN1hHNWNiaUFnSUNBZ0lDQWdkR2hwY3k1ZmNISnZjR1Z5ZEdsbGN5NXdkWE5vS0h0Y2JpQWdJQ0FnSUNBZ0lDQnVZVzFsT2lCd2NtOXdaWEowZVU1aGJXVXNYRzRnSUNBZ0lDQWdJQ0FnYVc1cGRHbGhiRTltWm5ObGRDeGNiaUFnSUNBZ0lDQWdJQ0JrWld4MFlVOW1abk5sZEN4Y2JpQWdJQ0FnSUNBZ0lDQnBibWwwYVdGc1UyTmhiR1VzWEc0Z0lDQWdJQ0FnSUNBZ1pHVnNkR0ZUWTJGc1pTeGNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWVhCd2JIbFhaV2xuYUhRb2QyVnBaMmgwT2lCdWRXMWlaWElwT2lCMmIybGtJSHRjYmlBZ0lDQjBhR2x6TGw5d2NtOXdaWEowYVdWekxtWnZja1ZoWTJnb0tIQnliM0JsY25SNUtTQTlQaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQjBZWEpuWlhRZ1BTQW9kR2hwY3k1dFlYUmxjbWxoYkNCaGN5QmhibmtwVzNCeWIzQmxjblI1TG01aGJXVmRJR0Z6SUZSSVVrVkZMbFJsZUhSMWNtVTdYRzRnSUNBZ0lDQnBaaUFvZEdGeVoyVjBJRDA5UFNCMWJtUmxabWx1WldRcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ2ZTQXZMeUJVVDBSUE9pQjNaU0J6YUc5MWJHUWdhMmxqYXlCMGFHbHpJR0YwSUdCaFpHUk5ZWFJsY21saGJGWmhiSFZsWUZ4dVhHNGdJQ0FnSUNCMFlYSm5aWFF1YjJabWMyVjBMbUZrWkNoZmRqSXVZMjl3ZVNod2NtOXdaWEowZVM1a1pXeDBZVTltWm5ObGRDa3ViWFZzZEdsd2JIbFRZMkZzWVhJb2QyVnBaMmgwS1NrN1hHNGdJQ0FnSUNCMFlYSm5aWFF1Y21Wd1pXRjBMbUZrWkNoZmRqSXVZMjl3ZVNod2NtOXdaWEowZVM1a1pXeDBZVk5qWVd4bEtTNXRkV3gwYVhCc2VWTmpZV3hoY2loM1pXbG5hSFFwS1R0Y2JseHVJQ0FnSUNBZ2RHRnlaMlYwTG01bFpXUnpWWEJrWVhSbElEMGdkSEoxWlR0Y2JpQWdJQ0I5S1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCamJHVmhja0Z3Y0d4cFpXUlhaV2xuYUhRb0tUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NWZjSEp2Y0dWeWRHbGxjeTVtYjNKRllXTm9LQ2h3Y205d1pYSjBlU2tnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnZEdGeVoyVjBJRDBnS0hSb2FYTXViV0YwWlhKcFlXd2dZWE1nWVc1NUtWdHdjbTl3WlhKMGVTNXVZVzFsWFNCaGN5QlVTRkpGUlM1VVpYaDBkWEpsTzF4dUlDQWdJQ0FnYVdZZ0tIUmhjbWRsZENBOVBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQWdJSDBnTHk4Z1ZFOUVUem9nZDJVZ2MyaHZkV3hrSUd0cFkyc2dkR2hwY3lCaGRDQmdZV1JrVFdGMFpYSnBZV3hXWVd4MVpXQmNibHh1SUNBZ0lDQWdkR0Z5WjJWMExtOW1abk5sZEM1amIzQjVLSEJ5YjNCbGNuUjVMbWx1YVhScFlXeFBabVp6WlhRcE8xeHVJQ0FnSUNBZ2RHRnlaMlYwTG5KbGNHVmhkQzVqYjNCNUtIQnliM0JsY25SNUxtbHVhWFJwWVd4VFkyRnNaU2s3WEc1Y2JpQWdJQ0FnSUhSaGNtZGxkQzV1WldWa2MxVndaR0YwWlNBOUlIUnlkV1U3WEc0Z0lDQWdmU2s3WEc0Z0lIMWNibjFjYmlJc0ltbHRjRzl5ZENCMGVYQmxJQ29nWVhNZ1ZqQldVazBnWm5KdmJTQW5RSEJwZUdsMkwzUjVjR1Z6TFhaeWJTMHdMakFuTzF4dWFXMXdiM0owSUhSNWNHVWdLaUJoY3lCV01WWlNUVk5qYUdWdFlTQm1jbTl0SUNkQWNHbDRhWFl2ZEhsd1pYTXRkbkp0WXkxMmNtMHRNUzR3Snp0Y2JtbHRjRzl5ZENBcUlHRnpJRlJJVWtWRklHWnliMjBnSjNSb2NtVmxKenRjYm1sdGNHOXlkQ0I3SUVkTVZFWXNJRWRNVkVaTWIyRmtaWEpRYkhWbmFXNHNJRWRNVkVaUVlYSnpaWElnZlNCbWNtOXRJQ2QwYUhKbFpTOWxlR0Z0Y0d4bGN5OXFjMjB2Ykc5aFpHVnljeTlIVEZSR1RHOWhaR1Z5TG1wekp6dGNibWx0Y0c5eWRDQjdJR2RzZEdaRmVIUnlZV04wVUhKcGJXbDBhWFpsYzBaeWIyMU9iMlJsSUgwZ1puSnZiU0FuTGk0dmRYUnBiSE12WjJ4MFprVjRkSEpoWTNSUWNtbHRhWFJwZG1WelJuSnZiVTV2WkdVbk8xeHVhVzF3YjNKMElIc2daMngwWmtkbGRFRnpjMjlqYVdGMFpXUk5ZWFJsY21saGJFbHVaR1Y0SUgwZ1puSnZiU0FuTGk0dmRYUnBiSE12WjJ4MFprZGxkRUZ6YzI5amFXRjBaV1JOWVhSbGNtbGhiRWx1WkdWNEp6dGNibWx0Y0c5eWRDQjdJRlpTVFVWNGNISmxjM05wYjI0Z2ZTQm1jbTl0SUNjdUwxWlNUVVY0Y0hKbGMzTnBiMjRuTzF4dWFXMXdiM0owSUhzZ1ZsSk5SWGh3Y21WemMybHZiazFoYm1GblpYSWdmU0JtY205dElDY3VMMVpTVFVWNGNISmxjM05wYjI1TllXNWhaMlZ5Snp0Y2JtbHRjRzl5ZENCN0lIWXdSWGh3Y21WemMybHZiazFoZEdWeWFXRnNRMjlzYjNKTllYQWdmU0JtY205dElDY3VMMVpTVFVWNGNISmxjM05wYjI1TllYUmxjbWxoYkVOdmJHOXlWSGx3WlNjN1hHNXBiWEJ2Y25RZ2V5QldVazFGZUhCeVpYTnphVzl1VFdGMFpYSnBZV3hEYjJ4dmNrSnBibVFnZlNCbWNtOXRJQ2N1TDFaU1RVVjRjSEpsYzNOcGIyNU5ZWFJsY21saGJFTnZiRzl5UW1sdVpDYzdYRzVwYlhCdmNuUWdleUJXVWsxRmVIQnlaWE56YVc5dVRXOXljR2hVWVhKblpYUkNhVzVrSUgwZ1puSnZiU0FuTGk5V1VrMUZlSEJ5WlhOemFXOXVUVzl5Y0doVVlYSm5aWFJDYVc1a0p6dGNibWx0Y0c5eWRDQjdJRlpTVFVWNGNISmxjM05wYjI1UWNtVnpaWFJPWVcxbElIMGdabkp2YlNBbkxpOVdVazFGZUhCeVpYTnphVzl1VUhKbGMyVjBUbUZ0WlNjN1hHNXBiWEJ2Y25RZ2V5QldVazFGZUhCeVpYTnphVzl1VkdWNGRIVnlaVlJ5WVc1elptOXliVUpwYm1RZ2ZTQm1jbTl0SUNjdUwxWlNUVVY0Y0hKbGMzTnBiMjVVWlhoMGRYSmxWSEpoYm5ObWIzSnRRbWx1WkNjN1hHNXBiWEJ2Y25RZ2V5QkhURlJHSUdGeklFZE1WRVpUWTJobGJXRWdmU0JtY205dElDZEFaMngwWmkxMGNtRnVjMlp2Y20wdlkyOXlaU2M3WEc1Y2JpOHFLbHh1SUNvZ1VHOXpjMmxpYkdVZ2MzQmxZeUIyWlhKemFXOXVjeUJwZENCeVpXTnZaMjVwZW1WekxseHVJQ292WEc1amIyNXpkQ0JRVDFOVFNVSk1SVjlUVUVWRFgxWkZVbE5KVDA1VElEMGdibVYzSUZObGRDaGJKekV1TUNjc0lDY3hMakF0WW1WMFlTZGRLVHRjYmx4dUx5b3FYRzRnS2lCQklIQnNkV2RwYmlCdlppQkhURlJHVEc5aFpHVnlJSFJvWVhRZ2FXMXdiM0owY3lCaElIdEFiR2x1YXlCV1VrMUZlSEJ5WlhOemFXOXVUV0Z1WVdkbGNuMGdabkp2YlNCaElGWlNUU0JsZUhSbGJuTnBiMjRnYjJZZ1lTQkhURlJHTGx4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZsSk5SWGh3Y21WemMybHZia3h2WVdSbGNsQnNkV2RwYmlCcGJYQnNaVzFsYm5SeklFZE1WRVpNYjJGa1pYSlFiSFZuYVc0Z2UxeHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklISmxZV1J2Ym14NUlIWXdkakZRY21WelpYUk9ZVzFsVFdGd09pQjdJRnQyTUU1aGJXVWdhVzRnVmpCV1VrMHVRbXhsYm1SVGFHRndaVkJ5WlhObGRFNWhiV1ZkUHpvZ1ZsSk5SWGh3Y21WemMybHZibEJ5WlhObGRFNWhiV1VnZlNBOUlIdGNiaUFnSUNCaE9pQW5ZV0VuTEZ4dUlDQWdJR1U2SUNkbFpTY3NYRzRnSUNBZ2FUb2dKMmxvSnl4Y2JpQWdJQ0J2T2lBbmIyZ25MRnh1SUNBZ0lIVTZJQ2R2ZFNjc1hHNGdJQ0FnWW14cGJtczZJQ2RpYkdsdWF5Y3NYRzRnSUNBZ2FtOTVPaUFuYUdGd2NIa25MRnh1SUNBZ0lHRnVaM0o1T2lBbllXNW5jbmtuTEZ4dUlDQWdJSE52Y25KdmR6b2dKM05oWkNjc1hHNGdJQ0FnWm5WdU9pQW5jbVZzWVhobFpDY3NYRzRnSUNBZ2JHOXZhM1Z3T2lBbmJHOXZhMVZ3Snl4Y2JpQWdJQ0JzYjI5clpHOTNiam9nSjJ4dmIydEViM2R1Snl4Y2JpQWdJQ0JzYjI5cmJHVm1kRG9nSjJ4dmIydE1aV1owSnl4Y2JpQWdJQ0JzYjI5cmNtbG5hSFE2SUNkc2IyOXJVbWxuYUhRbkxGeHVJQ0FnSUM4dklHVnpiR2x1ZEMxa2FYTmhZbXhsTFc1bGVIUXRiR2x1WlNCQWRIbHdaWE5qY21sd2RDMWxjMnhwYm5RdmJtRnRhVzVuTFdOdmJuWmxiblJwYjI1Y2JpQWdJQ0JpYkdsdWExOXNPaUFuWW14cGJtdE1aV1owSnl4Y2JpQWdJQ0F2THlCbGMyeHBiblF0WkdsellXSnNaUzF1WlhoMExXeHBibVVnUUhSNWNHVnpZM0pwY0hRdFpYTnNhVzUwTDI1aGJXbHVaeTFqYjI1MlpXNTBhVzl1WEc0Z0lDQWdZbXhwYm10ZmNqb2dKMkpzYVc1clVtbG5hSFFuTEZ4dUlDQWdJRzVsZFhSeVlXdzZJQ2R1WlhWMGNtRnNKeXhjYmlBZ2ZUdGNibHh1SUNCd2RXSnNhV01nY21WaFpHOXViSGtnY0dGeWMyVnlPaUJIVEZSR1VHRnljMlZ5TzF4dVhHNGdJSEIxWW14cFl5Qm5aWFFnYm1GdFpTZ3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lDOHZJRmRsSUhOb2IzVnNaQ0IxYzJVZ2RHaGxJR1Y0ZEdWdWMybHZiaUJ1WVcxbElHbHVjM1JsWVdRZ1luVjBJSGRsSUdoaGRtVWdiWFZzZEdsd2JHVWdjR3gxWjJsdWN5Qm1iM0lnWVc0Z1pYaDBaVzV6YVc5dUxpNHVYRzRnSUNBZ2NtVjBkWEp1SUNkV1VrMUZlSEJ5WlhOemFXOXVURzloWkdWeVVHeDFaMmx1Snp0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpaHdZWEp6WlhJNklFZE1WRVpRWVhKelpYSXBJSHRjYmlBZ0lDQjBhR2x6TG5CaGNuTmxjaUE5SUhCaGNuTmxjanRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJoYzNsdVl5QmhablJsY2xKdmIzUW9aMngwWmpvZ1IweFVSaWs2SUZCeWIyMXBjMlU4ZG05cFpENGdlMXh1SUNBZ0lHZHNkR1l1ZFhObGNrUmhkR0V1ZG5KdFJYaHdjbVZ6YzJsdmJrMWhibUZuWlhJZ1BTQmhkMkZwZENCMGFHbHpMbDlwYlhCdmNuUW9aMngwWmlrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTVzF3YjNKMElHRWdlMEJzYVc1cklGWlNUVVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlmU0JtY205dElHRWdWbEpOTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ1oyeDBaaUJCSUhCaGNuTmxaQ0J5WlhOMWJIUWdiMllnUjB4VVJpQjBZV3RsYmlCbWNtOXRJRWRNVkVaTWIyRmtaWEpjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWVhONWJtTWdYMmx0Y0c5eWRDaG5iSFJtT2lCSFRGUkdLVG9nVUhKdmJXbHpaVHhXVWsxRmVIQnlaWE56YVc5dVRXRnVZV2RsY2lCOElHNTFiR3crSUh0Y2JpQWdJQ0JqYjI1emRDQjJNVkpsYzNWc2RDQTlJR0YzWVdsMElIUm9hWE11WDNZeFNXMXdiM0owS0dkc2RHWXBPMXh1SUNBZ0lHbG1JQ2gyTVZKbGMzVnNkQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSFl4VW1WemRXeDBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhZd1VtVnpkV3gwSUQwZ1lYZGhhWFFnZEdocGN5NWZkakJKYlhCdmNuUW9aMngwWmlrN1hHNGdJQ0FnYVdZZ0tIWXdVbVZ6ZFd4MEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RqQlNaWE4xYkhRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHRnplVzVqSUY5Mk1VbHRjRzl5ZENobmJIUm1PaUJIVEZSR0tUb2dVSEp2YldselpUeFdVazFGZUhCeVpYTnphVzl1VFdGdVlXZGxjaUI4SUc1MWJHdytJSHRjYmlBZ0lDQmpiMjV6ZENCcWMyOXVJRDBnZEdocGN5NXdZWEp6WlhJdWFuTnZiaUJoY3lCSFRGUkdVMk5vWlcxaExrbEhURlJHTzF4dVhHNGdJQ0FnTHk4Z1pXRnliSGtnWVdKdmNuUWdhV1lnYVhRZ1pHOWxjMjRuZENCMWMyVWdkbkp0WEc0Z0lDQWdZMjl1YzNRZ2FYTldVazFWYzJWa0lEMGdhbk52Ymk1bGVIUmxibk5wYjI1elZYTmxaRDh1YVc1a1pYaFBaaWduVmxKTlExOTJjbTBuS1NBaFBUMGdMVEU3WEc0Z0lDQWdhV1lnS0NGcGMxWlNUVlZ6WldRcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUdWNGRHVnVjMmx2YmlBOUlHcHpiMjR1WlhoMFpXNXphVzl1Y3o4dVd5ZFdVazFEWDNaeWJTZGRJR0Z6SUZZeFZsSk5VMk5vWlcxaExsWlNUVU5XVWswZ2ZDQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2FXWWdLQ0ZsZUhSbGJuTnBiMjRwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJSE53WldOV1pYSnphVzl1SUQwZ1pYaDBaVzV6YVc5dUxuTndaV05XWlhKemFXOXVPMXh1SUNBZ0lHbG1JQ2doVUU5VFUwbENURVZmVTFCRlExOVdSVkpUU1U5T1V5NW9ZWE1vYzNCbFkxWmxjbk5wYjI0cEtTQjdYRzRnSUNBZ0lDQmpiMjV6YjJ4bExuZGhjbTRvWUZaU1RVVjRjSEpsYzNOcGIyNU1iMkZrWlhKUWJIVm5hVzQ2SUZWdWEyNXZkMjRnVmxKTlExOTJjbTBnYzNCbFkxWmxjbk5wYjI0Z1hDSWtlM053WldOV1pYSnphVzl1ZlZ3aVlDazdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCelkyaGxiV0ZGZUhCeVpYTnphVzl1Y3lBOUlHVjRkR1Z1YzJsdmJpNWxlSEJ5WlhOemFXOXVjenRjYmlBZ0lDQnBaaUFvSVhOamFHVnRZVVY0Y0hKbGMzTnBiMjV6S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QnNhWE4wSUdWNGNISmxjM05wYjI1elhHNGdJQ0FnWTI5dWMzUWdjSEpsYzJWMFRtRnRaVk5sZENBOUlHNWxkeUJUWlhROGMzUnlhVzVuUGloUFltcGxZM1F1ZG1Gc2RXVnpLRlpTVFVWNGNISmxjM05wYjI1UWNtVnpaWFJPWVcxbEtTazdYRzRnSUNBZ1kyOXVjM1FnYm1GdFpWTmphR1Z0WVVWNGNISmxjM05wYjI1TllYQWdQU0J1WlhjZ1RXRndQSE4wY21sdVp5d2dWakZXVWsxVFkyaGxiV0V1Ulhod2NtVnpjMmx2Ymo0b0tUdGNibHh1SUNBZ0lHbG1JQ2h6WTJobGJXRkZlSEJ5WlhOemFXOXVjeTV3Y21WelpYUWdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdUMkpxWldOMExtVnVkSEpwWlhNb2MyTm9aVzFoUlhod2NtVnpjMmx2Ym5NdWNISmxjMlYwS1M1bWIzSkZZV05vS0NoYmJtRnRaU3dnYzJOb1pXMWhSWGh3Y21WemMybHZibDBwSUQwK0lIdGNiaUFnSUNBZ0lDQWdhV1lnS0hOamFHVnRZVVY0Y0hKbGMzTnBiMjRnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUNBZ2ZTQXZMeUIwZVhCbGMyTnlhWEIwWEc1Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0Z3Y21WelpYUk9ZVzFsVTJWMExtaGhjeWh1WVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpaGdWbEpOUlhod2NtVnpjMmx2Ymt4dllXUmxjbEJzZFdkcGJqb2dWVzVyYm05M2JpQndjbVZ6WlhRZ2JtRnRaU0JjSWlSN2JtRnRaWDFjSWlCa1pYUmxZM1JsWkM0Z1NXZHViM0pwYm1jZ2RHaGxJR1Y0Y0hKbGMzTnBiMjVnS1R0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0J1WVcxbFUyTm9aVzFoUlhod2NtVnpjMmx2YmsxaGNDNXpaWFFvYm1GdFpTd2djMk5vWlcxaFJYaHdjbVZ6YzJsdmJpazdYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYzJOb1pXMWhSWGh3Y21WemMybHZibk11WTNWemRHOXRJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJRTlpYW1WamRDNWxiblJ5YVdWektITmphR1Z0WVVWNGNISmxjM05wYjI1ekxtTjFjM1J2YlNrdVptOXlSV0ZqYUNnb1cyNWhiV1VzSUhOamFHVnRZVVY0Y0hKbGMzTnBiMjVkS1NBOVBpQjdYRzRnSUNBZ0lDQWdJR2xtSUNod2NtVnpaWFJPWVcxbFUyVjBMbWhoY3lodVlXMWxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk52YkdVdWQyRnliaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lHQldVazFGZUhCeVpYTnphVzl1VEc5aFpHVnlVR3gxWjJsdU9pQkRkWE4wYjIwZ1pYaHdjbVZ6YzJsdmJpQmpZVzV1YjNRZ2FHRjJaU0J3Y21WelpYUWdibUZ0WlNCY0lpUjdibUZ0WlgxY0lpNGdTV2R1YjNKcGJtY2dkR2hsSUdWNGNISmxjM05wYjI1Z0xGeHVJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdibUZ0WlZOamFHVnRZVVY0Y0hKbGMzTnBiMjVOWVhBdWMyVjBLRzVoYldVc0lITmphR1Z0WVVWNGNISmxjM05wYjI0cE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdjSEpsY0dGeVpTQnRZVzVoWjJWeVhHNGdJQ0FnWTI5dWMzUWdiV0Z1WVdkbGNpQTlJRzVsZHlCV1VrMUZlSEJ5WlhOemFXOXVUV0Z1WVdkbGNpZ3BPMXh1WEc0Z0lDQWdMeThnYkc5aFpDQmxlSEJ5WlhOemFXOXVjMXh1SUNBZ0lHRjNZV2wwSUZCeWIyMXBjMlV1WVd4c0tGeHVJQ0FnSUNBZ1FYSnlZWGt1Wm5KdmJTaHVZVzFsVTJOb1pXMWhSWGh3Y21WemMybHZiazFoY0M1bGJuUnlhV1Z6S0NrcExtMWhjQ2hoYzNsdVl5QW9XMjVoYldVc0lITmphR1Z0WVVWNGNISmxjM05wYjI1ZEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR1Y0Y0hKbGMzTnBiMjRnUFNCdVpYY2dWbEpOUlhod2NtVnpjMmx2YmlodVlXMWxLVHRjYmlBZ0lDQWdJQ0FnWjJ4MFppNXpZMlZ1WlM1aFpHUW9aWGh3Y21WemMybHZiaWs3WEc1Y2JpQWdJQ0FnSUNBZ1pYaHdjbVZ6YzJsdmJpNXBjMEpwYm1GeWVTQTlJSE5qYUdWdFlVVjRjSEpsYzNOcGIyNHVhWE5DYVc1aGNua2dQejhnWm1Gc2MyVTdYRzRnSUNBZ0lDQWdJR1Y0Y0hKbGMzTnBiMjR1YjNabGNuSnBaR1ZDYkdsdWF5QTlJSE5qYUdWdFlVVjRjSEpsYzNOcGIyNHViM1psY25KcFpHVkNiR2x1YXlBL1B5QW5ibTl1WlNjN1hHNGdJQ0FnSUNBZ0lHVjRjSEpsYzNOcGIyNHViM1psY25KcFpHVk1iMjlyUVhRZ1BTQnpZMmhsYldGRmVIQnlaWE56YVc5dUxtOTJaWEp5YVdSbFRHOXZhMEYwSUQ4L0lDZHViMjVsSnp0Y2JpQWdJQ0FnSUNBZ1pYaHdjbVZ6YzJsdmJpNXZkbVZ5Y21sa1pVMXZkWFJvSUQwZ2MyTm9aVzFoUlhod2NtVnpjMmx2Ymk1dmRtVnljbWxrWlUxdmRYUm9JRDgvSUNkdWIyNWxKenRjYmx4dUlDQWdJQ0FnSUNCelkyaGxiV0ZGZUhCeVpYTnphVzl1TG0xdmNuQm9WR0Z5WjJWMFFtbHVaSE0vTG1admNrVmhZMmdvWVhONWJtTWdLR0pwYm1RcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9ZbWx1WkM1dWIyUmxJRDA5UFNCMWJtUmxabWx1WldRZ2ZId2dZbWx1WkM1cGJtUmxlQ0E5UFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdjSEpwYldsMGFYWmxjeUE5SUNoaGQyRnBkQ0JuYkhSbVJYaDBjbUZqZEZCeWFXMXBkR2wyWlhOR2NtOXRUbTlrWlNobmJIUm1MQ0JpYVc1a0xtNXZaR1VwS1NFN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JXOXljR2hVWVhKblpYUkpibVJsZUNBOUlHSnBibVF1YVc1a1pYZzdYRzVjYmlBZ0lDQWdJQ0FnSUNBdkx5QmphR1ZqYXlCcFppQjBhR1VnYldWemFDQm9ZWE1nZEdobElIUmhjbWRsZENCdGIzSndhQ0IwWVhKblpYUmNiaUFnSUNBZ0lDQWdJQ0JwWmlBb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FoY0hKcGJXbDBhWFpsY3k1bGRtVnllU2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdLSEJ5YVcxcGRHbDJaU2tnUFQ1Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCQmNuSmhlUzVwYzBGeWNtRjVLSEJ5YVcxcGRHbDJaUzV0YjNKd2FGUmhjbWRsZEVsdVpteDFaVzVqWlhNcElDWW1YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiVzl5Y0doVVlYSm5aWFJKYm1SbGVDQThJSEJ5YVcxcGRHbDJaUzV0YjNKd2FGUmhjbWRsZEVsdVpteDFaVzVqWlhNdWJHVnVaM1JvTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdLVnh1SUNBZ0lDQWdJQ0FnSUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMyOXNaUzUzWVhKdUtGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCZ1ZsSk5SWGh3Y21WemMybHZia3h2WVdSbGNsQnNkV2RwYmpvZ0pIdHpZMmhsYldGRmVIQnlaWE56YVc5dUxtNWhiV1Y5SUdGMGRHVnRjSFJ6SUhSdklHbHVaR1Y0SUcxdmNuQm9JQ01rZTIxdmNuQm9WR0Z5WjJWMFNXNWtaWGg5SUdKMWRDQnViM1FnWm05MWJtUXVZQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnWlhod2NtVnpjMmx2Ymk1aFpHUkNhVzVrS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdibVYzSUZaU1RVVjRjSEpsYzNOcGIyNU5iM0p3YUZSaGNtZGxkRUpwYm1Rb2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCd2NtbHRhWFJwZG1WekxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCcGJtUmxlRG9nYlc5eWNHaFVZWEpuWlhSSmJtUmxlQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdkMlZwWjJoME9pQmlhVzVrTG5kbGFXZG9kQ0EvUHlBeExqQXNYRzRnSUNBZ0lDQWdJQ0FnSUNCOUtTeGNiaUFnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdJQ0JwWmlBb2MyTm9aVzFoUlhod2NtVnpjMmx2Ymk1dFlYUmxjbWxoYkVOdmJHOXlRbWx1WkhNZ2ZId2djMk5vWlcxaFJYaHdjbVZ6YzJsdmJpNTBaWGgwZFhKbFZISmhibk5tYjNKdFFtbHVaSE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJzYVhOMElIVndJR1YyWlhKNUlHMWhkR1Z5YVdGc0lHbHVJR0JuYkhSbUxuTmpaVzVsWUZ4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdkc2RHWk5ZWFJsY21saGJITTZJRlJJVWtWRkxrMWhkR1Z5YVdGc1cxMGdQU0JiWFR0Y2JpQWdJQ0FnSUNBZ0lDQm5iSFJtTG5OalpXNWxMblJ5WVhabGNuTmxLQ2h2WW1wbFkzUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHMWhkR1Z5YVdGc0lEMGdLRzlpYW1WamRDQmhjeUJoYm5rcExtMWhkR1Z5YVdGc0lHRnpJRlJJVWtWRkxrMWhkR1Z5YVdGc0lId2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzFoZEdWeWFXRnNLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR2RzZEdaTllYUmxjbWxoYkhNdWNIVnphQ2h0WVhSbGNtbGhiQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnZlNrN1hHNWNiaUFnSUNBZ0lDQWdJQ0J6WTJobGJXRkZlSEJ5WlhOemFXOXVMbTFoZEdWeWFXRnNRMjlzYjNKQ2FXNWtjejh1Wm05eVJXRmphQ2hoYzNsdVl5QW9ZbWx1WkNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYldGMFpYSnBZV3h6SUQwZ1oyeDBaazFoZEdWeWFXRnNjeTVtYVd4MFpYSW9LRzFoZEdWeWFXRnNLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzFoZEdWeWFXRnNTVzVrWlhnZ1BTQm5iSFJtUjJWMFFYTnpiMk5wWVhSbFpFMWhkR1Z5YVdGc1NXNWtaWGdvZEdocGN5NXdZWEp6WlhJc0lHMWhkR1Z5YVdGc0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdKcGJtUXViV0YwWlhKcFlXd2dQVDA5SUcxaGRHVnlhV0ZzU1c1a1pYZzdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2JXRjBaWEpwWVd4ekxtWnZja1ZoWTJnb0tHMWhkR1Z5YVdGc0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR1Y0Y0hKbGMzTnBiMjR1WVdSa1FtbHVaQ2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J1WlhjZ1ZsSk5SWGh3Y21WemMybHZiazFoZEdWeWFXRnNRMjlzYjNKQ2FXNWtLSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUcxaGRHVnlhV0ZzTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RIbHdaVG9nWW1sdVpDNTBlWEJsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHRnlaMlYwVm1Gc2RXVTZJRzVsZHlCVVNGSkZSUzVEYjJ4dmNpZ3BMbVp5YjIxQmNuSmhlU2hpYVc1a0xuUmhjbWRsZEZaaGJIVmxLU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5S1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnSUNBZ0lIMHBPMXh1WEc0Z0lDQWdJQ0FnSUNBZ2MyTm9aVzFoUlhod2NtVnpjMmx2Ymk1MFpYaDBkWEpsVkhKaGJuTm1iM0p0UW1sdVpITS9MbVp2Y2tWaFkyZ29ZWE41Ym1NZ0tHSnBibVFwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzFoZEdWeWFXRnNjeUE5SUdkc2RHWk5ZWFJsY21saGJITXVabWxzZEdWeUtDaHRZWFJsY21saGJDa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnRZWFJsY21saGJFbHVaR1Y0SUQwZ1oyeDBaa2RsZEVGemMyOWphV0YwWldSTllYUmxjbWxoYkVsdVpHVjRLSFJvYVhNdWNHRnljMlZ5TENCdFlYUmxjbWxoYkNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJpYVc1a0xtMWhkR1Z5YVdGc0lEMDlQU0J0WVhSbGNtbGhiRWx1WkdWNE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNrN1hHNWNiaUFnSUNBZ0lDQWdJQ0FnSUcxaGRHVnlhV0ZzY3k1bWIzSkZZV05vS0NodFlYUmxjbWxoYkNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQmxlSEJ5WlhOemFXOXVMbUZrWkVKcGJtUW9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdibVYzSUZaU1RVVjRjSEpsYzNOcGIyNVVaWGgwZFhKbFZISmhibk5tYjNKdFFtbHVaQ2g3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdFlYUmxjbWxoYkN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHOW1abk5sZERvZ2JtVjNJRlJJVWtWRkxsWmxZM1J2Y2pJb0tTNW1jbTl0UVhKeVlYa29ZbWx1WkM1dlptWnpaWFFnUHo4Z1d6QXVNQ3dnTUM0d1hTa3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6WTJGc1pUb2dibVYzSUZSSVVrVkZMbFpsWTNSdmNqSW9LUzVtY205dFFYSnlZWGtvWW1sdVpDNXpZMkZzWlNBL1B5QmJNUzR3TENBeExqQmRLU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5S1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2JXRnVZV2RsY2k1eVpXZHBjM1JsY2tWNGNISmxjM05wYjI0b1pYaHdjbVZ6YzJsdmJpazdYRzRnSUNBZ0lDQjlLU3hjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdjbVYwZFhKdUlHMWhibUZuWlhJN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHRnplVzVqSUY5Mk1FbHRjRzl5ZENobmJIUm1PaUJIVEZSR0tUb2dVSEp2YldselpUeFdVazFGZUhCeVpYTnphVzl1VFdGdVlXZGxjaUI4SUc1MWJHdytJSHRjYmlBZ0lDQmpiMjV6ZENCcWMyOXVJRDBnZEdocGN5NXdZWEp6WlhJdWFuTnZiaUJoY3lCSFRGUkdVMk5vWlcxaExrbEhURlJHTzF4dVhHNGdJQ0FnTHk4Z1pXRnliSGtnWVdKdmNuUWdhV1lnYVhRZ1pHOWxjMjRuZENCMWMyVWdkbkp0WEc0Z0lDQWdZMjl1YzNRZ2RuSnRSWGgwSUQwZ2FuTnZiaTVsZUhSbGJuTnBiMjV6UHk1V1VrMGdZWE1nVmpCV1VrMHVWbEpOSUh3Z2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUdsbUlDZ2hkbkp0UlhoMEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCelkyaGxiV0ZDYkdWdVpGTm9ZWEJsSUQwZ2RuSnRSWGgwTG1Kc1pXNWtVMmhoY0dWTllYTjBaWEk3WEc0Z0lDQWdhV1lnS0NGelkyaGxiV0ZDYkdWdVpGTm9ZWEJsS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0J0WVc1aFoyVnlJRDBnYm1WM0lGWlNUVVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlLQ2s3WEc1Y2JpQWdJQ0JqYjI1emRDQnpZMmhsYldGQ2JHVnVaRk5vWVhCbFIzSnZkWEJ6SUQwZ2MyTm9aVzFoUW14bGJtUlRhR0Z3WlM1aWJHVnVaRk5vWVhCbFIzSnZkWEJ6TzF4dUlDQWdJR2xtSUNnaGMyTm9aVzFoUW14bGJtUlRhR0Z3WlVkeWIzVndjeWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzFoYm1GblpYSTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnWW14bGJtUlRhR0Z3WlU1aGJXVlRaWFFnUFNCdVpYY2dVMlYwUEhOMGNtbHVaejRvS1R0Y2JseHVJQ0FnSUdGM1lXbDBJRkJ5YjIxcGMyVXVZV3hzS0Z4dUlDQWdJQ0FnYzJOb1pXMWhRbXhsYm1SVGFHRndaVWR5YjNWd2N5NXRZWEFvWVhONWJtTWdLSE5qYUdWdFlVZHliM1Z3S1NBOVBpQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElIWXdVSEpsYzJWMFRtRnRaU0E5SUhOamFHVnRZVWR5YjNWd0xuQnlaWE5sZEU1aGJXVTdYRzRnSUNBZ0lDQWdJR052Ym5OMElIWXhVSEpsYzJWMFRtRnRaU0E5WEc0Z0lDQWdJQ0FnSUNBZ0tIWXdVSEpsYzJWMFRtRnRaU0FoUFNCdWRXeHNJQ1ltSUZaU1RVVjRjSEpsYzNOcGIyNU1iMkZrWlhKUWJIVm5hVzR1ZGpCMk1WQnlaWE5sZEU1aGJXVk5ZWEJiZGpCUWNtVnpaWFJPWVcxbFhTa2dmSHdnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2JtRnRaU0E5SUhZeFVISmxjMlYwVG1GdFpTQS9QeUJ6WTJobGJXRkhjbTkxY0M1dVlXMWxPMXh1WEc0Z0lDQWdJQ0FnSUdsbUlDaHVZVzFsSUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExuZGhjbTRvSjFaU1RVVjRjSEpsYzNOcGIyNU1iMkZrWlhKUWJIVm5hVzQ2SUU5dVpTQnZaaUJqZFhOMGIyMGdaWGh3Y21WemMybHZibk1nYUdGeklHNXZJRzVoYldVdUlFbG5ibTl5YVc1bklIUm9aU0JsZUhCeVpYTnphVzl1SnlrN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnTHk4Z1pIVndiR2xqWVhScGIyNGdZMmhsWTJ0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0pzWlc1a1UyaGhjR1ZPWVcxbFUyVjBMbWhoY3lodVlXMWxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk52YkdVdWQyRnliaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lHQldVazFGZUhCeVpYTnphVzl1VEc5aFpHVnlVR3gxWjJsdU9pQkJiaUJsZUhCeVpYTnphVzl1SUhCeVpYTmxkQ0FrZTNZd1VISmxjMlYwVG1GdFpYMGdhR0Z6SUdSMWNHeHBZMkYwWldRZ1pXNTBjbWxsY3k0Z1NXZHViM0pwYm1jZ2RHaGxJR1Y0Y0hKbGMzTnBiMjVnTEZ4dUlDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ1lteGxibVJUYUdGd1pVNWhiV1ZUWlhRdVlXUmtLRzVoYldVcE8xeHVYRzRnSUNBZ0lDQWdJR052Ym5OMElHVjRjSEpsYzNOcGIyNGdQU0J1WlhjZ1ZsSk5SWGh3Y21WemMybHZiaWh1WVcxbEtUdGNiaUFnSUNBZ0lDQWdaMngwWmk1elkyVnVaUzVoWkdRb1pYaHdjbVZ6YzJsdmJpazdYRzVjYmlBZ0lDQWdJQ0FnWlhod2NtVnpjMmx2Ymk1cGMwSnBibUZ5ZVNBOUlITmphR1Z0WVVkeWIzVndMbWx6UW1sdVlYSjVJRDgvSUdaaGJITmxPMXh1SUNBZ0lDQWdJQ0F2THlCMk1DQmtiMlZ6YmlkMElHaGhkbVVnYVdkdWIzSmxJSEJ5YjNCbGNuUnBaWE5jYmx4dUlDQWdJQ0FnSUNBdkx5QkNhVzVrSUcxdmNuQm9WR0Z5WjJWMFhHNGdJQ0FnSUNBZ0lHbG1JQ2h6WTJobGJXRkhjbTkxY0M1aWFXNWtjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lITmphR1Z0WVVkeWIzVndMbUpwYm1SekxtWnZja1ZoWTJnb1lYTjVibU1nS0dKcGJtUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoaWFXNWtMbTFsYzJnZ1BUMDlJSFZ1WkdWbWFXNWxaQ0I4ZkNCaWFXNWtMbWx1WkdWNElEMDlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J1YjJSbGMxVnphVzVuVFdWemFEb2diblZ0WW1WeVcxMGdQU0JiWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3B6YjI0dWJtOWtaWE0vTG1admNrVmhZMmdvS0c1dlpHVXNJR2twSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzV2WkdVdWJXVnphQ0E5UFQwZ1ltbHVaQzV0WlhOb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdibTlrWlhOVmMybHVaMDFsYzJndWNIVnphQ2hwS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdmU2s3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHMXZjbkJvVkdGeVoyVjBTVzVrWlhnZ1BTQmlhVzVrTG1sdVpHVjRPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQmhkMkZwZENCUWNtOXRhWE5sTG1Gc2JDaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2JtOWtaWE5WYzJsdVowMWxjMmd1YldGd0tHRnplVzVqSUNodWIyUmxTVzVrWlhncElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQndjbWx0YVhScGRtVnpJRDBnS0dGM1lXbDBJR2RzZEdaRmVIUnlZV04wVUhKcGJXbDBhWFpsYzBaeWIyMU9iMlJsS0dkc2RHWXNJRzV2WkdWSmJtUmxlQ2twSVR0Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJR05vWldOcklHbG1JSFJvWlNCdFpYTm9JR2hoY3lCMGFHVWdkR0Z5WjJWMElHMXZjbkJvSUhSaGNtZGxkRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDRndjbWx0YVhScGRtVnpMbVYyWlhKNUtGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FvY0hKcGJXbDBhWFpsS1NBOVBseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUVGeWNtRjVMbWx6UVhKeVlYa29jSEpwYldsMGFYWmxMbTF2Y25Cb1ZHRnlaMlYwU1c1bWJIVmxibU5sY3lrZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdGIzSndhRlJoY21kbGRFbHVaR1Y0SUR3Z2NISnBiV2wwYVhabExtMXZjbkJvVkdGeVoyVjBTVzVtYkhWbGJtTmxjeTVzWlc1bmRHZ3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExuZGhjbTRvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHQldVazFGZUhCeVpYTnphVzl1VEc5aFpHVnlVR3gxWjJsdU9pQWtlM05qYUdWdFlVZHliM1Z3TG01aGJXVjlJR0YwZEdWdGNIUnpJSFJ2SUdsdVpHVjRJQ1I3Ylc5eWNHaFVZWEpuWlhSSmJtUmxlSDEwYUNCdGIzSndhQ0JpZFhRZ2JtOTBJR1p2ZFc1a0xtQXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVjRjSEpsYzNOcGIyNHVZV1JrUW1sdVpDaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzVsZHlCV1VrMUZlSEJ5WlhOemFXOXVUVzl5Y0doVVlYSm5aWFJDYVc1a0tIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY0hKcGJXbDBhWFpsY3l4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhVzVrWlhnNklHMXZjbkJvVkdGeVoyVjBTVzVrWlhnc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSGRsYVdkb2REb2dNQzR3TVNBcUlDaGlhVzVrTG5kbGFXZG9kQ0EvUHlBeE1EQXBMQ0F2THlCdVlYSnliM2RwYm1jZ2RHaGxJSEpoYm1kbElHWnliMjBnV3lBd0xqQWdMU0F4TURBdU1DQmRJSFJ2SUZzZ01DNHdJQzBnTVM0d0lGMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUgwcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDOHZJRUpwYm1RZ1RXRjBaWEpwWVd4RGIyeHZjaUJoYm1RZ1ZHVjRkSFZ5WlZSeVlXNXpabTl5YlZ4dUlDQWdJQ0FnSUNCamIyNXpkQ0J0WVhSbGNtbGhiRlpoYkhWbGN5QTlJSE5qYUdWdFlVZHliM1Z3TG0xaGRHVnlhV0ZzVm1Gc2RXVnpPMXh1SUNBZ0lDQWdJQ0JwWmlBb2JXRjBaWEpwWVd4V1lXeDFaWE1nSmlZZ2JXRjBaWEpwWVd4V1lXeDFaWE11YkdWdVozUm9JQ0U5UFNBd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnYldGMFpYSnBZV3hXWVd4MVpYTXVabTl5UldGamFDZ29iV0YwWlhKcFlXeFdZV3gxWlNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnRZWFJsY21saGJGWmhiSFZsTG0xaGRHVnlhV0ZzVG1GdFpTQTlQVDBnZFc1a1pXWnBibVZrSUh4OFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUcxaGRHVnlhV0ZzVm1Gc2RXVXVjSEp2Y0dWeWRIbE9ZVzFsSUQwOVBTQjFibVJsWm1sdVpXUWdmSHhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdiV0YwWlhKcFlXeFdZV3gxWlM1MFlYSm5aWFJXWVd4MVpTQTlQVDBnZFc1a1pXWnBibVZrWEc0Z0lDQWdJQ0FnSUNBZ0lDQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2S2lwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FxSU9PQ291T0RrT09DditPRHZPT0JydU9DcXVPRGx1T0N1T09DcCtPQ3IrT0RpT09CcStpb3JlV3VtdU9CbGVPQ2pPT0JwdU9CaE9PQ2krT0RudU9EaHVPRHF1T0NvdU9EcStPQnJ1V0doZU9CaStPQ2lWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNvZ2JXRjBaWEpwWVd4V1lXeDFaZU9CcCthTWgrV3VtdU9CbGVPQ2pPT0JwdU9CaE9PQ2krT0RudU9EaHVPRHF1T0NvdU9EcStPQ2t1bWJodU9DZ2VPQ2krT0FnbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBcUlPZUp1ZVd1bXVPQnErT0JyK1dRamVXSmplT0NrdVM5ditlVXFPT0JtZU9DaStPQWdseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNvZzQ0S2k0NEttNDRPSTQ0T3A0NEtrNDRPejVvK1A1NVM3NTVTbzQ0R3U0NE9lNDRPRzQ0T3E0NEtpNDRPcjQ0S0M1WkNNNXBtQzQ0R3I2WnVHNDRLQjQ0S0w0NENDWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdLaTljYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUcxaGRHVnlhV0ZzY3pvZ1ZFaFNSVVV1VFdGMFpYSnBZV3hiWFNBOUlGdGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1oyeDBaaTV6WTJWdVpTNTBjbUYyWlhKelpTZ29iMkpxWldOMEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnb2IySnFaV04wSUdGeklHRnVlU2t1YldGMFpYSnBZV3dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J0WVhSbGNtbGhiRG9nVkVoU1JVVXVUV0YwWlhKcFlXeGJYU0I4SUZSSVVrVkZMazFoZEdWeWFXRnNJRDBnS0c5aWFtVmpkQ0JoY3lCaGJua3BMbTFoZEdWeWFXRnNPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoQmNuSmhlUzVwYzBGeWNtRjVLRzFoZEdWeWFXRnNLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JXRjBaWEpwWVd4ekxuQjFjMmdvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDNHVMbTFoZEdWeWFXRnNMbVpwYkhSbGNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBb2JYUnNLU0E5UGx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS0cxMGJDNXVZVzFsSUQwOVBTQnRZWFJsY21saGJGWmhiSFZsTG0xaGRHVnlhV0ZzVG1GdFpTRWdmSHhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYlhSc0xtNWhiV1VnUFQwOUlHMWhkR1Z5YVdGc1ZtRnNkV1V1YldGMFpYSnBZV3hPWVcxbElTQXJJQ2NnS0U5MWRHeHBibVVwSnlrZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMWhkR1Z5YVdGc2N5NXBibVJsZUU5bUtHMTBiQ2tnUFQwOUlDMHhMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0cxaGRHVnlhV0ZzTG01aGJXVWdQVDA5SUcxaGRHVnlhV0ZzVm1Gc2RXVXViV0YwWlhKcFlXeE9ZVzFsSUNZbUlHMWhkR1Z5YVdGc2N5NXBibVJsZUU5bUtHMWhkR1Z5YVdGc0tTQTlQVDBnTFRFcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzFoZEdWeWFXRnNjeTV3ZFhOb0tHMWhkR1Z5YVdGc0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUgwcE8xeHVYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J0WVhSbGNtbGhiRkJ5YjNCbGNuUjVUbUZ0WlNBOUlHMWhkR1Z5YVdGc1ZtRnNkV1V1Y0hKdmNHVnlkSGxPWVcxbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYldGMFpYSnBZV3h6TG1admNrVmhZMmdvS0cxaGRHVnlhV0ZzS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJRlJsZUhSMWNtVlVjbUZ1YzJadmNtMUNhVzVrWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodFlYUmxjbWxoYkZCeWIzQmxjblI1VG1GdFpTQTlQVDBnSjE5TllXbHVWR1Y0WDFOVUp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElITmpZV3hsSUQwZ2JtVjNJRlJJVWtWRkxsWmxZM1J2Y2pJb2JXRjBaWEpwWVd4V1lXeDFaUzUwWVhKblpYUldZV3gxWlNGYk1GMHNJRzFoZEdWeWFXRnNWbUZzZFdVdWRHRnlaMlYwVm1Gc2RXVWhXekZkS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J2Wm1aelpYUWdQU0J1WlhjZ1ZFaFNSVVV1Vm1WamRHOXlNaWh0WVhSbGNtbGhiRlpoYkhWbExuUmhjbWRsZEZaaGJIVmxJVnN5WFN3Z2JXRjBaWEpwWVd4V1lXeDFaUzUwWVhKblpYUldZV3gxWlNGYk0xMHBPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjJabWMyVjBMbmtnUFNBeExqQWdMU0J2Wm1aelpYUXVlU0F0SUhOallXeGxMbms3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGVIQnlaWE56YVc5dUxtRmtaRUpwYm1Rb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnVaWGNnVmxKTlJYaHdjbVZ6YzJsdmJsUmxlSFIxY21WVWNtRnVjMlp2Y20xQ2FXNWtLSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JXRjBaWEpwWVd3c1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE5qWVd4bExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2Wm1aelpYUXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5S1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcE8xeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdUV0YwWlhKcFlXeERiMnh2Y2tKcGJtUmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYldGMFpYSnBZV3hEYjJ4dmNsUjVjR1VnUFNCMk1FVjRjSEpsYzNOcGIyNU5ZWFJsY21saGJFTnZiRzl5VFdGd1cyMWhkR1Z5YVdGc1VISnZjR1Z5ZEhsT1lXMWxYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0cxaGRHVnlhV0ZzUTI5c2IzSlVlWEJsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pYaHdjbVZ6YzJsdmJpNWhaR1JDYVc1a0tGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdibVYzSUZaU1RVVjRjSEpsYzNOcGIyNU5ZWFJsY21saGJFTnZiRzl5UW1sdVpDaDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUcxaGRHVnlhV0ZzTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBlWEJsT2lCdFlYUmxjbWxoYkVOdmJHOXlWSGx3WlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR0Z5WjJWMFZtRnNkV1U2SUc1bGR5QlVTRkpGUlM1RGIyeHZjaWd1TGk1dFlYUmxjbWxoYkZaaGJIVmxMblJoY21kbGRGWmhiSFZsSVM1emJHbGpaU2d3TENBektTa3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5S1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcE8xeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1M1lYSnVLRzFoZEdWeWFXRnNVSEp2Y0dWeWRIbE9ZVzFsSUNzZ0p5QnBjeUJ1YjNRZ2MzVndjRzl5ZEdWa0p5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJRzFoYm1GblpYSXVjbVZuYVhOMFpYSkZlSEJ5WlhOemFXOXVLR1Y0Y0hKbGMzTnBiMjRwTzF4dUlDQWdJQ0FnZlNrc1hHNGdJQ0FnS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ0WVc1aFoyVnlPMXh1SUNCOVhHNTlYRzRpTENJdktpQmxjMnhwYm5RdFpHbHpZV0pzWlNCQWRIbHdaWE5qY21sd2RDMWxjMnhwYm5RdmJtRnRhVzVuTFdOdmJuWmxiblJwYjI0Z0tpOWNibHh1Wlhod2IzSjBJR052Ym5OMElGWlNUVVY0Y0hKbGMzTnBiMjVQZG1WeWNtbGtaVlI1Y0dVZ1BTQjdYRzRnSUU1dmJtVTZJQ2R1YjI1bEp5eGNiaUFnUW14dlkyczZJQ2RpYkc5amF5Y3NYRzRnSUVKc1pXNWtPaUFuWW14bGJtUW5MRnh1ZlNCaGN5QmpiMjV6ZER0Y2JseHVaWGh3YjNKMElIUjVjR1VnVmxKTlJYaHdjbVZ6YzJsdmJrOTJaWEp5YVdSbFZIbHdaU0E5SUhSNWNHVnZaaUJXVWsxRmVIQnlaWE56YVc5dVQzWmxjbkpwWkdWVWVYQmxXMnRsZVc5bUlIUjVjR1Z2WmlCV1VrMUZlSEJ5WlhOemFXOXVUM1psY25KcFpHVlVlWEJsWFR0Y2JpSXNJbWx0Y0c5eWRDQjBlWEJsSUhzZ1ZsSk5SbWx5YzNSUVpYSnpiMjVOWlhOb1FXNXViM1JoZEdsdmJpQjlJR1p5YjIwZ0p5NHZWbEpOUm1seWMzUlFaWEp6YjI1TlpYTm9RVzV1YjNSaGRHbHZiaWM3WEc1cGJYQnZjblFnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVwYlhCdmNuUWdkSGx3WlNCN0lGWlNUVWgxYldGdWIybGtJSDBnWm5KdmJTQW5MaTR2YUhWdFlXNXZhV1FuTzF4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVmxKTlJtbHljM1JRWlhKemIyNGdlMXh1SUNBdktpcGNiaUFnSUNvZ1FTQmtaV1poZFd4MElHTmhiV1Z5WVNCc1lYbGxjaUJtYjNJZ1lFWnBjbk4wVUdWeWMyOXVUMjVzZVdBZ2JHRjVaWEl1WEc0Z0lDQXFYRzRnSUNBcUlFQnpaV1VnVzF0blpYUkdhWEp6ZEZCbGNuTnZiazl1YkhsTVlYbGxjbDFkWEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJSEpsWVdSdmJteDVJRVJGUmtGVlRGUmZSa2xTVTFSUVJWSlRUMDVmVDA1TVdWOU1RVmxGVWlBOUlEazdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFRWdaR1ZtWVhWc2RDQmpZVzFsY21FZ2JHRjVaWElnWm05eUlHQlVhR2x5WkZCbGNuTnZiazl1YkhsZ0lHeGhlV1Z5TGx4dUlDQWdLbHh1SUNBZ0tpQkFjMlZsSUZ0YloyVjBWR2hwY21SUVpYSnpiMjVQYm14NVRHRjVaWEpkWFZ4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJ5WldGa2IyNXNlU0JFUlVaQlZVeFVYMVJJU1ZKRVVFVlNVMDlPWDA5T1RGbGZURUZaUlZJZ1BTQXhNRHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTWFJ6SUdGemMyOWphV0YwWldRZ2UwQnNhVzVySUZaU1RVaDFiV0Z1YjJsa2ZTNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnlaV0ZrYjI1c2VTQm9kVzFoYm05cFpEb2dWbEpOU0hWdFlXNXZhV1E3WEc0Z0lIQjFZbXhwWXlCdFpYTm9RVzV1YjNSaGRHbHZibk02SUZaU1RVWnBjbk4wVUdWeWMyOXVUV1Z6YUVGdWJtOTBZWFJwYjI1YlhUdGNibHh1SUNCd2NtbDJZWFJsSUY5bWFYSnpkRkJsY25OdmJrOXViSGxNWVhsbGNpQTlJRlpTVFVacGNuTjBVR1Z5YzI5dUxrUkZSa0ZWVEZSZlJrbFNVMVJRUlZKVFQwNWZUMDVNV1Y5TVFWbEZVanRjYmlBZ2NISnBkbUYwWlNCZmRHaHBjbVJRWlhKemIyNVBibXg1VEdGNVpYSWdQU0JXVWsxR2FYSnpkRkJsY25OdmJpNUVSVVpCVlV4VVgxUklTVkpFVUVWU1UwOU9YMDlPVEZsZlRFRlpSVkk3WEc1Y2JpQWdjSEpwZG1GMFpTQmZhVzVwZEdsaGJHbDZaV1JNWVhsbGNuTWdQU0JtWVd4elpUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsSUdFZ2JtVjNJRlpTVFVacGNuTjBVR1Z5YzI5dUlHOWlhbVZqZEM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElHaDFiV0Z1YjJsa0lFRWdlMEJzYVc1cklGWlNUVWgxYldGdWIybGtmVnh1SUNBZ0tpQkFjR0Z5WVcwZ2JXVnphRUZ1Ym05MFlYUnBiMjV6SUVFZ2NtVnVaR1Z5WlhJZ2MyVjBkR2x1WjNNdUlGTmxaU0IwYUdVZ1pHVnpZM0pwY0hScGIyNGdiMllnVzF0U1pXNWtaWEpsY2tacGNuTjBVR1Z5YzI5dVJteGhaM05kWFNCbWIzSWdiVzl5WlNCcGJtWnZYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvYUhWdFlXNXZhV1E2SUZaU1RVaDFiV0Z1YjJsa0xDQnRaWE5vUVc1dWIzUmhkR2x2Ym5NNklGWlNUVVpwY25OMFVHVnljMjl1VFdWemFFRnVibTkwWVhScGIyNWJYU2tnZTF4dUlDQWdJSFJvYVhNdWFIVnRZVzV2YVdRZ1BTQm9kVzFoYm05cFpEdGNiaUFnSUNCMGFHbHpMbTFsYzJoQmJtNXZkR0YwYVc5dWN5QTlJRzFsYzJoQmJtNXZkR0YwYVc5dWN6dGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJEYjNCNUlIUm9aU0JuYVhabGJpQjdRR3hwYm1zZ1ZsSk5SbWx5YzNSUVpYSnpiMjU5SUdsdWRHOGdkR2hwY3lCdmJtVXVYRzRnSUNBcUlIdEFiR2x1YXlCb2RXMWhibTlwWkgwZ2JYVnpkQ0JpWlNCellXMWxJR0Z6SUhSb1pTQnpiM1Z5WTJVZ2IyNWxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2MyOTFjbU5sSUZSb1pTQjdRR3hwYm1zZ1ZsSk5SbWx5YzNSUVpYSnpiMjU5SUhsdmRTQjNZVzUwSUhSdklHTnZjSGxjYmlBZ0lDb2dRSEpsZEhWeWJuTWdkR2hwYzF4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdOdmNIa29jMjkxY21ObE9pQldVazFHYVhKemRGQmxjbk52YmlrNklIUm9hWE1nZTF4dUlDQWdJR2xtSUNoMGFHbHpMbWgxYldGdWIybGtJQ0U5UFNCemIzVnlZMlV1YUhWdFlXNXZhV1FwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVmxKTlJtbHljM1JRWlhKemIyNDZJR2gxYldGdWIybGtJRzExYzNRZ1ltVWdjMkZ0WlNCcGJpQnZjbVJsY2lCMGJ5QmpiM0I1SnlrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NXRaWE5vUVc1dWIzUmhkR2x2Ym5NZ1BTQnpiM1Z5WTJVdWJXVnphRUZ1Ym05MFlYUnBiMjV6TG0xaGNDZ29ZVzV1YjNSaGRHbHZiaWtnUFQ0Z0tIdGNiaUFnSUNBZ0lHMWxjMmhsY3pvZ1lXNXViM1JoZEdsdmJpNXRaWE5vWlhNdVkyOXVZMkYwS0Nrc1hHNGdJQ0FnSUNCMGVYQmxPaUJoYm01dmRHRjBhVzl1TG5SNWNHVXNYRzRnSUNBZ2ZTa3BPMXh1WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCaElHTnNiMjVsSUc5bUlIUm9hWE1nZTBCc2FXNXJJRlpTVFVacGNuTjBVR1Z5YzI5dWZTNWNiaUFnSUNvZ1FISmxkSFZ5Ym5NZ1EyOXdhV1ZrSUh0QWJHbHVheUJXVWsxR2FYSnpkRkJsY25OdmJuMWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QmpiRzl1WlNncE9pQldVazFHYVhKemRGQmxjbk52YmlCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCV1VrMUdhWEp6ZEZCbGNuTnZiaWgwYUdsekxtaDFiV0Z1YjJsa0xDQjBhR2x6TG0xbGMyaEJibTV2ZEdGMGFXOXVjeWt1WTI5d2VTaDBhR2x6S1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJJR05oYldWeVlTQnNZWGxsY2lCeVpYQnlaWE5sYm5SeklHQkdhWEp6ZEZCbGNuTnZiazl1YkhsZ0lHeGhlV1Z5TGx4dUlDQWdLaUJPYjNSbElIUm9ZWFFnS2lwNWIzVWdiWFZ6ZENCallXeHNJSHRBYkdsdWF5QnpaWFIxY0gwZ1ptbHljM1FnWW1WbWIzSmxJSGx2ZFNCMWMyVWdkR2hsSUd4aGVXVnlJR1psWVhSMWNtVXFLaUJ2Y2lCcGRDQmtiMlZ6SUc1dmRDQjNiM0pySUhCeWIzQmxjbXg1TGx4dUlDQWdLbHh1SUNBZ0tpQlVhR1VnZG1Gc2RXVWdhWE1nZTBCc2FXNXJJRVJGUmtGVlRGUmZSa2xTVTFSUVJWSlRUMDVmVDA1TVdWOU1RVmxGVW4wZ1lua2daR1ZtWVhWc2RDQmlkWFFnZVc5MUlHTmhiaUJqYUdGdVoyVWdkR2hsSUd4aGVXVnlJR0o1SUhOd1pXTnBabmxwYm1jZ2RtbGhJSHRBYkdsdWF5QnpaWFIxY0gwZ2FXWWdlVzkxSUhCeVpXWmxjaTVjYmlBZ0lDcGNiaUFnSUNvZ1FITmxaU0JvZEhSd2N6b3ZMM1p5YlM1a1pYWXZaVzR2ZFc1cGRuSnRMMkZ3YVM5MWJtbDJjbTFmZFhObFgyWnBjbk4wY0dWeWMyOXVMMXh1SUNBZ0tpQkFjMlZsSUdoMGRIQnpPaTh2ZEdoeVpXVnFjeTV2Y21jdlpHOWpjeThqWVhCcEwyVnVMMk52Y21VdlRHRjVaWEp6WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWjJWMElHWnBjbk4wVUdWeWMyOXVUMjVzZVV4aGVXVnlLQ2s2SUc1MWJXSmxjaUI3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDJacGNuTjBVR1Z5YzI5dVQyNXNlVXhoZVdWeU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUVnWTJGdFpYSmhJR3hoZVdWeUlISmxjSEpsYzJWdWRITWdZRlJvYVhKa1VHVnljMjl1VDI1c2VXQWdiR0Y1WlhJdVhHNGdJQ0FxSUU1dmRHVWdkR2hoZENBcUtubHZkU0J0ZFhOMElHTmhiR3dnZTBCc2FXNXJJSE5sZEhWd2ZTQm1hWEp6ZENCaVpXWnZjbVVnZVc5MUlIVnpaU0IwYUdVZ2JHRjVaWElnWm1WaGRIVnlaU29xSUc5eUlHbDBJR1J2WlhNZ2JtOTBJSGR2Y21zZ2NISnZjR1Z5YkhrdVhHNGdJQ0FxWEc0Z0lDQXFJRlJvWlNCMllXeDFaU0JwY3lCN1FHeHBibXNnUkVWR1FWVk1WRjlVU0VsU1JGQkZVbE5QVGw5UFRreFpYMHhCV1VWU2ZTQmllU0JrWldaaGRXeDBJR0oxZENCNWIzVWdZMkZ1SUdOb1lXNW5aU0IwYUdVZ2JHRjVaWElnWW5rZ2MzQmxZMmxtZVdsdVp5QjJhV0VnZTBCc2FXNXJJSE5sZEhWd2ZTQnBaaUI1YjNVZ2NISmxabVZ5TGx4dUlDQWdLbHh1SUNBZ0tpQkFjMlZsSUdoMGRIQnpPaTh2ZG5KdExtUmxkaTlsYmk5MWJtbDJjbTB2WVhCcEwzVnVhWFp5YlY5MWMyVmZabWx5YzNSd1pYSnpiMjR2WEc0Z0lDQXFJRUJ6WldVZ2FIUjBjSE02THk5MGFISmxaV3B6TG05eVp5OWtiMk56THlOaGNHa3ZaVzR2WTI5eVpTOU1ZWGxsY25OY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCblpYUWdkR2hwY21SUVpYSnpiMjVQYm14NVRHRjVaWElvS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmRHaHBjbVJRWlhKemIyNVBibXg1VEdGNVpYSTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nU1c0Z2RHaHBjeUJ0WlhSb2IyUXNJR2wwSUdGemMybG5ibk1nYkdGNVpYSnpJR1p2Y2lCbGRtVnllU0J0WlhOb1pYTWdZbUZ6WldRZ2IyNGdiV1Z6YUNCaGJtNXZkR0YwYVc5dWN5NWNiaUFnSUNvZ1dXOTFJRzExYzNRZ1kyRnNiQ0IwYUdseklHMWxkR2h2WkNCbWFYSnpkQ0JpWldadmNtVWdlVzkxSUhWelpTQjBhR1VnYkdGNVpYSWdabVZoZEhWeVpTNWNiaUFnSUNwY2JpQWdJQ29nVkdocGN5QnBjeUJoYmlCbGNYVnBkbUZzWlc1MElHOW1JRnRXVWsxR2FYSnpkRkJsY25OdmJpNVRaWFIxY0Ywb2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwzWnliUzFqTDFWdWFWWlNUUzlpYkc5aUx6Y3pZVFZpWkRobVkyUmtZV0V5WVRkaE9EY3pOVEE1T1dFNU4yVTJNMk01WkdJelpUVmxZVEF2UVhOelpYUnpMMVpTVFM5U2RXNTBhVzFsTDBacGNuTjBVR1Z5YzI5dUwxWlNUVVpwY25OMFVHVnljMjl1TG1Oekkwd3lPVFV0VERJNU9Ta2diMllnZEdobElGVnVhVlpTVFM1Y2JpQWdJQ3BjYmlBZ0lDb2dWR2hsSUdCallXMWxjbUZNWVhsbGNtQWdjR0Z5WVcxbGRHVnlJSE53WldOcFptbGxjeUIzYUdsamFDQnNZWGxsY2lCM2FXeHNJR0psSUdGemMybG5ibVZrSUdadmNpQmdSbWx5YzNSUVpYSnpiMjVQYm14NVlDQXZJR0JVYUdseVpGQmxjbk52Yms5dWJIbGdMbHh1SUNBZ0tpQkpiaUJWYm1sV1VrMHNJSGRsSUhOd1pXTnBabWxsWkNCMGFHOXpaU0JpZVNCdVlXMXBibWNnWldGamFDQmtaWE5wY21Wa0lHeGhlV1Z5SUdGeklHQkdTVkpUVkZCRlVsTlBUbDlQVGt4WlgweEJXVVZTWUNBdklHQlVTRWxTUkZCRlVsTlBUbDlQVGt4WlgweEJXVVZTWUZ4dUlDQWdLaUJpZFhRZ2QyVWdZWEpsSUdkdmFXNW5JSFJ2SUhOd1pXTnBabmtnZEdobGMyVWdiR0Y1WlhKeklHRjBJR2hsY21VZ2MybHVZMlVnZDJVZ1lYSmxJSFZ1WVdKc1pTQjBieUJ1WVcxbElHeGhlV1Z5Y3lCcGJpQlVhSEpsWlM1cWN5NWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJR05oYldWeVlVeGhlV1Z5SUZOd1pXTnBabmtnZDJocFkyZ2diR0Y1WlhJZ2QybHNiQ0JpWlNCbWIzSWdZRVpwY25OMFVHVnljMjl1VDI1c2VXQWdMeUJnVkdocGNtUlFaWEp6YjI1UGJteDVZQzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6WlhSMWNDaDdYRzRnSUNBZ1ptbHljM1JRWlhKemIyNVBibXg1VEdGNVpYSWdQU0JXVWsxR2FYSnpkRkJsY25OdmJpNUVSVVpCVlV4VVgwWkpVbE5VVUVWU1UwOU9YMDlPVEZsZlRFRlpSVklzWEc0Z0lDQWdkR2hwY21SUVpYSnpiMjVQYm14NVRHRjVaWElnUFNCV1VrMUdhWEp6ZEZCbGNuTnZiaTVFUlVaQlZVeFVYMVJJU1ZKRVVFVlNVMDlPWDA5T1RGbGZURUZaUlZJc1hHNGdJSDBnUFNCN2ZTazZJSFp2YVdRZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TGw5cGJtbDBhV0ZzYVhwbFpFeGhlV1Z5Y3lrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmlBZ0lDQjBhR2x6TGw5bWFYSnpkRkJsY25OdmJrOXViSGxNWVhsbGNpQTlJR1pwY25OMFVHVnljMjl1VDI1c2VVeGhlV1Z5TzF4dUlDQWdJSFJvYVhNdVgzUm9hWEprVUdWeWMyOXVUMjVzZVV4aGVXVnlJRDBnZEdocGNtUlFaWEp6YjI1UGJteDVUR0Y1WlhJN1hHNWNiaUFnSUNCMGFHbHpMbTFsYzJoQmJtNXZkR0YwYVc5dWN5NW1iM0pGWVdOb0tDaHBkR1Z0S1NBOVBpQjdYRzRnSUNBZ0lDQnBkR1Z0TG0xbGMyaGxjeTVtYjNKRllXTm9LQ2h0WlhOb0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUdsbUlDaHBkR1Z0TG5SNWNHVWdQVDA5SUNkbWFYSnpkRkJsY25OdmJrOXViSGtuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdiV1Z6YUM1c1lYbGxjbk11YzJWMEtIUm9hWE11WDJacGNuTjBVR1Z5YzI5dVQyNXNlVXhoZVdWeUtUdGNiaUFnSUNBZ0lDQWdJQ0J0WlhOb0xuUnlZWFpsY25ObEtDaGphR2xzWkNrZ1BUNGdZMmhwYkdRdWJHRjVaWEp6TG5ObGRDaDBhR2x6TGw5bWFYSnpkRkJsY25OdmJrOXViSGxNWVhsbGNpa3BPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dsMFpXMHVkSGx3WlNBOVBUMGdKM1JvYVhKa1VHVnljMjl1VDI1c2VTY3BJSHRjYmlBZ0lDQWdJQ0FnSUNCdFpYTm9MbXhoZVdWeWN5NXpaWFFvZEdocGN5NWZkR2hwY21SUVpYSnpiMjVQYm14NVRHRjVaWElwTzF4dUlDQWdJQ0FnSUNBZ0lHMWxjMmd1ZEhKaGRtVnljMlVvS0dOb2FXeGtLU0E5UGlCamFHbHNaQzVzWVhsbGNuTXVjMlYwS0hSb2FYTXVYM1JvYVhKa1VHVnljMjl1VDI1c2VVeGhlV1Z5S1NrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9hWFJsYlM1MGVYQmxJRDA5UFNBbllYVjBieWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjBhR2x6TGw5amNtVmhkR1ZJWldGa2JHVnpjMDF2WkdWc0tHMWxjMmdwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOUtUdGNibHh1SUNBZ0lIUm9hWE11WDJsdWFYUnBZV3hwZW1Wa1RHRjVaWEp6SUQwZ2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWDJWNFkyeDFaR1ZVY21saGJtZHNaWE1vZEhKcFlXNW5iR1Z6T2lCdWRXMWlaWEpiWFN3Z1luZHpPaUJ1ZFcxaVpYSmJYVnRkTENCemEybHVTVzVrWlhnNklHNTFiV0psY2x0ZFcxMHNJR1Y0WTJ4MVpHVTZJRzUxYldKbGNsdGRLVG9nYm5WdFltVnlJSHRjYmlBZ0lDQnNaWFFnWTI5MWJuUWdQU0F3TzF4dUlDQWdJR2xtSUNoaWQzTWdJVDBnYm5Wc2JDQW1KaUJpZDNNdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0IwY21saGJtZHNaWE11YkdWdVozUm9PeUJwSUNzOUlETXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdZU0E5SUhSeWFXRnVaMnhsYzF0cFhUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1lpQTlJSFJ5YVdGdVoyeGxjMXRwSUNzZ01WMDdYRzRnSUNBZ0lDQWdJR052Ym5OMElHTWdQU0IwY21saGJtZHNaWE5iYVNBcklESmRPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmlkekFnUFNCaWQzTmJZVjA3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSE5yYVc0d0lEMGdjMnRwYmtsdVpHVjRXMkZkTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2hpZHpCYk1GMGdQaUF3SUNZbUlHVjRZMngxWkdVdWFXNWpiSFZrWlhNb2MydHBiakJiTUYwcEtTQmpiMjUwYVc1MVpUdGNiaUFnSUNBZ0lDQWdhV1lnS0dKM01Gc3hYU0ErSURBZ0ppWWdaWGhqYkhWa1pTNXBibU5zZFdSbGN5aHphMmx1TUZzeFhTa3BJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdJQ0JwWmlBb1luY3dXekpkSUQ0Z01DQW1KaUJsZUdOc2RXUmxMbWx1WTJ4MVpHVnpLSE5yYVc0d1d6SmRLU2tnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0FnSUdsbUlDaGlkekJiTTEwZ1BpQXdJQ1ltSUdWNFkyeDFaR1V1YVc1amJIVmtaWE1vYzJ0cGJqQmJNMTBwS1NCamIyNTBhVzUxWlR0Y2JseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCaWR6RWdQU0JpZDNOYllsMDdYRzRnSUNBZ0lDQWdJR052Ym5OMElITnJhVzR4SUQwZ2MydHBia2x1WkdWNFcySmRPMXh1SUNBZ0lDQWdJQ0JwWmlBb1luY3hXekJkSUQ0Z01DQW1KaUJsZUdOc2RXUmxMbWx1WTJ4MVpHVnpLSE5yYVc0eFd6QmRLU2tnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0FnSUdsbUlDaGlkekZiTVYwZ1BpQXdJQ1ltSUdWNFkyeDFaR1V1YVc1amJIVmtaWE1vYzJ0cGJqRmJNVjBwS1NCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0ozTVZzeVhTQStJREFnSmlZZ1pYaGpiSFZrWlM1cGJtTnNkV1JsY3loemEybHVNVnN5WFNrcElHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ0lDQnBaaUFvWW5jeFd6TmRJRDRnTUNBbUppQmxlR05zZFdSbExtbHVZMngxWkdWektITnJhVzR4V3pOZEtTa2dZMjl1ZEdsdWRXVTdYRzVjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdZbmN5SUQwZ1luZHpXMk5kTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J6YTJsdU1pQTlJSE5yYVc1SmJtUmxlRnRqWFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0ozTWxzd1hTQStJREFnSmlZZ1pYaGpiSFZrWlM1cGJtTnNkV1JsY3loemEybHVNbHN3WFNrcElHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ0lDQnBaaUFvWW5jeVd6RmRJRDRnTUNBbUppQmxlR05zZFdSbExtbHVZMngxWkdWektITnJhVzR5V3pGZEtTa2dZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQWdJR2xtSUNoaWR6SmJNbDBnUGlBd0lDWW1JR1Y0WTJ4MVpHVXVhVzVqYkhWa1pYTW9jMnRwYmpKYk1sMHBLU0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHSjNNbHN6WFNBK0lEQWdKaVlnWlhoamJIVmtaUzVwYm1Oc2RXUmxjeWh6YTJsdU1sc3pYU2twSUdOdmJuUnBiblZsTzF4dVhHNGdJQ0FnSUNBZ0lIUnlhV0Z1WjJ4bGMxdGpiM1Z1ZENzclhTQTlJR0U3WEc0Z0lDQWdJQ0FnSUhSeWFXRnVaMnhsYzF0amIzVnVkQ3NyWFNBOUlHSTdYRzRnSUNBZ0lDQWdJSFJ5YVdGdVoyeGxjMXRqYjNWdWRDc3JYU0E5SUdNN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQmpiM1Z1ZER0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1gyTnlaV0YwWlVWeVlYTmxaRTFsYzJnb2MzSmpPaUJVU0ZKRlJTNVRhMmx1Ym1Wa1RXVnphQ3dnWlhKaGMybHVaMEp2Ym1WelNXNWtaWGc2SUc1MWJXSmxjbHRkS1RvZ1ZFaFNSVVV1VTJ0cGJtNWxaRTFsYzJnZ2UxeHVJQ0FnSUdOdmJuTjBJR1J6ZENBOUlHNWxkeUJVU0ZKRlJTNVRhMmx1Ym1Wa1RXVnphQ2h6Y21NdVoyVnZiV1YwY25rdVkyeHZibVVvS1N3Z2MzSmpMbTFoZEdWeWFXRnNLVHRjYmlBZ0lDQmtjM1F1Ym1GdFpTQTlJR0FrZTNOeVl5NXVZVzFsZlNobGNtRnpaU2xnTzF4dUlDQWdJR1J6ZEM1bWNuVnpkSFZ0UTNWc2JHVmtJRDBnYzNKakxtWnlkWE4wZFcxRGRXeHNaV1E3WEc0Z0lDQWdaSE4wTG14aGVXVnljeTV6WlhRb2RHaHBjeTVmWm1seWMzUlFaWEp6YjI1UGJteDVUR0Y1WlhJcE8xeHVYRzRnSUNBZ1kyOXVjM1FnWjJWdmJXVjBjbmtnUFNCa2MzUXVaMlZ2YldWMGNuazdYRzVjYmlBZ0lDQmpiMjV6ZENCemEybHVTVzVrWlhoQmRIUnlJRDBnWjJWdmJXVjBjbmt1WjJWMFFYUjBjbWxpZFhSbEtDZHphMmx1U1c1a1pYZ25LVHRjYmlBZ0lDQmpiMjV6ZENCemEybHVTVzVrWlhoQmRIUnlRWEp5WVhrZ1BTQnphMmx1U1c1a1pYaEJkSFJ5SUdsdWMzUmhibU5sYjJZZ1ZFaFNSVVV1UjB4Q2RXWm1aWEpCZEhSeWFXSjFkR1VnUHlCYlhTQTZJSE5yYVc1SmJtUmxlRUYwZEhJdVlYSnlZWGs3WEc0Z0lDQWdZMjl1YzNRZ2MydHBia2x1WkdWNElEMGdXMTA3WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J6YTJsdVNXNWtaWGhCZEhSeVFYSnlZWGt1YkdWdVozUm9PeUJwSUNzOUlEUXBJSHRjYmlBZ0lDQWdJSE5yYVc1SmJtUmxlQzV3ZFhOb0tGdGNiaUFnSUNBZ0lDQWdjMnRwYmtsdVpHVjRRWFIwY2tGeWNtRjVXMmxkTEZ4dUlDQWdJQ0FnSUNCemEybHVTVzVrWlhoQmRIUnlRWEp5WVhsYmFTQXJJREZkTEZ4dUlDQWdJQ0FnSUNCemEybHVTVzVrWlhoQmRIUnlRWEp5WVhsYmFTQXJJREpkTEZ4dUlDQWdJQ0FnSUNCemEybHVTVzVrWlhoQmRIUnlRWEp5WVhsYmFTQXJJRE5kTEZ4dUlDQWdJQ0FnWFNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdjMnRwYmxkbGFXZG9kRUYwZEhJZ1BTQm5aVzl0WlhSeWVTNW5aWFJCZEhSeWFXSjFkR1VvSjNOcmFXNVhaV2xuYUhRbktUdGNiaUFnSUNCamIyNXpkQ0J6YTJsdVYyVnBaMmgwUVhSMGNrRnljbUY1SUQwZ2MydHBibGRsYVdkb2RFRjBkSElnYVc1emRHRnVZMlZ2WmlCVVNGSkZSUzVIVEVKMVptWmxja0YwZEhKcFluVjBaU0EvSUZ0ZElEb2djMnRwYmxkbGFXZG9kRUYwZEhJdVlYSnlZWGs3WEc0Z0lDQWdZMjl1YzNRZ2MydHBibGRsYVdkb2RDQTlJRnRkTzF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYzJ0cGJsZGxhV2RvZEVGMGRISkJjbkpoZVM1c1pXNW5kR2c3SUdrZ0t6MGdOQ2tnZTF4dUlDQWdJQ0FnYzJ0cGJsZGxhV2RvZEM1d2RYTm9LRnRjYmlBZ0lDQWdJQ0FnYzJ0cGJsZGxhV2RvZEVGMGRISkJjbkpoZVZ0cFhTeGNiaUFnSUNBZ0lDQWdjMnRwYmxkbGFXZG9kRUYwZEhKQmNuSmhlVnRwSUNzZ01WMHNYRzRnSUNBZ0lDQWdJSE5yYVc1WFpXbG5hSFJCZEhSeVFYSnlZWGxiYVNBcklESmRMRnh1SUNBZ0lDQWdJQ0J6YTJsdVYyVnBaMmgwUVhSMGNrRnljbUY1VzJrZ0t5QXpYU3hjYmlBZ0lDQWdJRjBwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElHbHVaR1Y0SUQwZ1oyVnZiV1YwY25rdVoyVjBTVzVrWlhnb0tUdGNiaUFnSUNCcFppQW9JV2x1WkdWNEtTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1hDSlVhR1VnWjJWdmJXVjBjbmtnWkc5bGMyNG5kQ0JvWVhabElHRnVJR2x1WkdWNElHSjFabVpsY2x3aUtUdGNiaUFnSUNCOVhHNGdJQ0FnWTI5dWMzUWdiMnhrVkhKcFlXNW5iR1Z6SUQwZ1FYSnlZWGt1Wm5KdmJTaHBibVJsZUM1aGNuSmhlU2s3WEc1Y2JpQWdJQ0JqYjI1emRDQmpiM1Z1ZENBOUlIUm9hWE11WDJWNFkyeDFaR1ZVY21saGJtZHNaWE1vYjJ4a1ZISnBZVzVuYkdWekxDQnphMmx1VjJWcFoyaDBMQ0J6YTJsdVNXNWtaWGdzSUdWeVlYTnBibWRDYjI1bGMwbHVaR1Y0S1R0Y2JpQWdJQ0JqYjI1emRDQnVaWGRVY21saGJtZHNaVG9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHTnZkVzUwT3lCcEt5c3BJSHRjYmlBZ0lDQWdJRzVsZDFSeWFXRnVaMnhsVzJsZElEMGdiMnhrVkhKcFlXNW5iR1Z6VzJsZE8xeHVJQ0FnSUgxY2JpQWdJQ0JuWlc5dFpYUnllUzV6WlhSSmJtUmxlQ2h1WlhkVWNtbGhibWRzWlNrN1hHNWNiaUFnSUNBdkx5QnRkRzl2YmlCdFlYUmxjbWxoYkNCcGJtTnNkV1JsY3lCdmJrSmxabTl5WlZKbGJtUmxjaTRnZEdocGN5QnBjeUIxYm5OMWNIQnZjblJsWkNCaGRDQlRhMmx1Ym1Wa1RXVnphQ05qYkc5dVpWeHVJQ0FnSUdsbUlDaHpjbU11YjI1Q1pXWnZjbVZTWlc1a1pYSXBJSHRjYmlBZ0lDQWdJR1J6ZEM1dmJrSmxabTl5WlZKbGJtUmxjaUE5SUhOeVl5NXZia0psWm05eVpWSmxibVJsY2p0Y2JpQWdJQ0I5WEc0Z0lDQWdaSE4wTG1KcGJtUW9ibVYzSUZSSVVrVkZMbE5yWld4bGRHOXVLSE55WXk1emEyVnNaWFJ2Ymk1aWIyNWxjeXdnYzNKakxuTnJaV3hsZEc5dUxtSnZibVZKYm5abGNuTmxjeWtzSUc1bGR5QlVTRkpGUlM1TllYUnlhWGcwS0NrcE8xeHVJQ0FnSUhKbGRIVnliaUJrYzNRN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElGOWpjbVZoZEdWSVpXRmtiR1Z6YzAxdlpHVnNSbTl5VTJ0cGJtNWxaRTFsYzJnb2NHRnlaVzUwT2lCVVNGSkZSUzVQWW1wbFkzUXpSQ3dnYldWemFEb2dWRWhTUlVVdVUydHBibTVsWkUxbGMyZ3BPaUIyYjJsa0lIdGNiaUFnSUNCamIyNXpkQ0JsY21GelpVSnZibVZKYm1SbGVHVnpPaUJ1ZFcxaVpYSmJYU0E5SUZ0ZE8xeHVJQ0FnSUcxbGMyZ3VjMnRsYkdWMGIyNHVZbTl1WlhNdVptOXlSV0ZqYUNnb1ltOXVaU3dnYVc1a1pYZ3BJRDArSUh0Y2JpQWdJQ0FnSUdsbUlDaDBhR2x6TGw5cGMwVnlZWE5sVkdGeVoyVjBLR0p2Ym1VcEtTQmxjbUZ6WlVKdmJtVkpibVJsZUdWekxuQjFjMmdvYVc1a1pYZ3BPMXh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdMeThnVlc1c2FXdGxJRlZ1YVZaU1RTQjNaU0JrYjI0bmRDQmpiM0I1SUcxbGMyZ2dhV1lnYm04Z2FXNTJhWE5wWW14bElHSnZibVVnZDJGeklHWnZkVzVrWEc0Z0lDQWdhV1lnS0NGbGNtRnpaVUp2Ym1WSmJtUmxlR1Z6TG14bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnYldWemFDNXNZWGxsY25NdVpXNWhZbXhsS0hSb2FYTXVYM1JvYVhKa1VHVnljMjl1VDI1c2VVeGhlV1Z5S1R0Y2JpQWdJQ0FnSUcxbGMyZ3ViR0Y1WlhKekxtVnVZV0pzWlNoMGFHbHpMbDltYVhKemRGQmxjbk52Yms5dWJIbE1ZWGxsY2lrN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1SUNBZ0lHMWxjMmd1YkdGNVpYSnpMbk5sZENoMGFHbHpMbDkwYUdseVpGQmxjbk52Yms5dWJIbE1ZWGxsY2lrN1hHNGdJQ0FnWTI5dWMzUWdibVYzVFdWemFDQTlJSFJvYVhNdVgyTnlaV0YwWlVWeVlYTmxaRTFsYzJnb2JXVnphQ3dnWlhKaGMyVkNiMjVsU1c1a1pYaGxjeWs3WEc0Z0lDQWdjR0Z5Wlc1MExtRmtaQ2h1WlhkTlpYTm9LVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWDJOeVpXRjBaVWhsWVdSc1pYTnpUVzlrWld3b2JtOWtaVG9nVkVoU1JVVXVUMkpxWldOME0wUXBPaUIyYjJsa0lIdGNiaUFnSUNCcFppQW9ibTlrWlM1MGVYQmxJRDA5UFNBblIzSnZkWEFuS1NCN1hHNGdJQ0FnSUNCdWIyUmxMbXhoZVdWeWN5NXpaWFFvZEdocGN5NWZkR2hwY21SUVpYSnpiMjVQYm14NVRHRjVaWElwTzF4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11WDJselJYSmhjMlZVWVhKblpYUW9ibTlrWlNrcElIdGNiaUFnSUNBZ0lDQWdibTlrWlM1MGNtRjJaWEp6WlNnb1kyaHBiR1FwSUQwK0lHTm9hV3hrTG14aGVXVnljeTV6WlhRb2RHaHBjeTVmZEdocGNtUlFaWEp6YjI1UGJteDVUR0Y1WlhJcEtUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhCaGNtVnVkQ0E5SUc1bGR5QlVTRkpGUlM1SGNtOTFjQ2dwTzF4dUlDQWdJQ0FnSUNCd1lYSmxiblF1Ym1GdFpTQTlJR0JmYUdWaFpHeGxjM05mSkh0dWIyUmxMbTVoYldWOVlEdGNiaUFnSUNBZ0lDQWdjR0Z5Wlc1MExteGhlV1Z5Y3k1elpYUW9kR2hwY3k1ZlptbHljM1JRWlhKemIyNVBibXg1VEdGNVpYSXBPMXh1SUNBZ0lDQWdJQ0J1YjJSbExuQmhjbVZ1ZENFdVlXUmtLSEJoY21WdWRDazdYRzRnSUNBZ0lDQWdJRzV2WkdVdVkyaHBiR1J5Wlc1Y2JpQWdJQ0FnSUNBZ0lDQXVabWxzZEdWeUtDaGphR2xzWkNrZ1BUNGdZMmhwYkdRdWRIbHdaU0E5UFQwZ0oxTnJhVzV1WldSTlpYTm9KeWxjYmlBZ0lDQWdJQ0FnSUNBdVptOXlSV0ZqYUNnb1kyaHBiR1FwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSE5yYVc1dVpXUk5aWE5vSUQwZ1kyaHBiR1FnWVhNZ1ZFaFNSVVV1VTJ0cGJtNWxaRTFsYzJnN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxsOWpjbVZoZEdWSVpXRmtiR1Z6YzAxdlpHVnNSbTl5VTJ0cGJtNWxaRTFsYzJnb2NHRnlaVzUwTENCemEybHVibVZrVFdWemFDazdYRzRnSUNBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJR2xtSUNodWIyUmxMblI1Y0dVZ1BUMDlJQ2RUYTJsdWJtVmtUV1Z6YUNjcElIdGNiaUFnSUNBZ0lHTnZibk4wSUhOcmFXNXVaV1JOWlhOb0lEMGdibTlrWlNCaGN5QlVTRkpGUlM1VGEybHVibVZrVFdWemFEdGNiaUFnSUNBZ0lIUm9hWE11WDJOeVpXRjBaVWhsWVdSc1pYTnpUVzlrWld4R2IzSlRhMmx1Ym1Wa1RXVnphQ2h1YjJSbExuQmhjbVZ1ZENFc0lITnJhVzV1WldSTlpYTm9LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVgybHpSWEpoYzJWVVlYSm5aWFFvYm05a1pTa3BJSHRjYmlBZ0lDQWdJQ0FnYm05a1pTNXNZWGxsY25NdWMyVjBLSFJvYVhNdVgzUm9hWEprVUdWeWMyOXVUMjVzZVV4aGVXVnlLVHRjYmlBZ0lDQWdJQ0FnYm05a1pTNTBjbUYyWlhKelpTZ29ZMmhwYkdRcElEMCtJR05vYVd4a0xteGhlV1Z5Y3k1elpYUW9kR2hwY3k1ZmRHaHBjbVJRWlhKemIyNVBibXg1VEdGNVpYSXBLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJRjlwYzBWeVlYTmxWR0Z5WjJWMEtHSnZibVU2SUZSSVVrVkZMazlpYW1WamRETkVLVG9nWW05dmJHVmhiaUI3WEc0Z0lDQWdhV1lnS0dKdmJtVWdQVDA5SUhSb2FYTXVhSFZ0WVc1dmFXUXVaMlYwVW1GM1FtOXVaVTV2WkdVb0oyaGxZV1FuS1NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDZ2hZbTl1WlM1d1lYSmxiblFwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVgybHpSWEpoYzJWVVlYSm5aWFFvWW05dVpTNXdZWEpsYm5RcE8xeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dUlpd2lhVzF3YjNKMElIUjVjR1VnS2lCaGN5QldNRlpTVFNCbWNtOXRJQ2RBY0dsNGFYWXZkSGx3WlhNdGRuSnRMVEF1TUNjN1hHNXBiWEJ2Y25RZ2RIbHdaU0FxSUdGeklGWXhWbEpOVTJOb1pXMWhJR1p5YjIwZ0owQndhWGhwZGk5MGVYQmxjeTEyY20xakxYWnliUzB4TGpBbk8xeHVhVzF3YjNKMElIUjVjR1VnZXlCSFRGUkdMQ0JIVEZSR1RHOWhaR1Z5VUd4MVoybHVMQ0JIVEZSR1VHRnljMlZ5SUgwZ1puSnZiU0FuZEdoeVpXVXZaWGhoYlhCc1pYTXZhbk50TDJ4dllXUmxjbk12UjB4VVJreHZZV1JsY2k1cWN5YzdYRzVwYlhCdmNuUWdkSGx3WlNCN0lGWlNUVWgxYldGdWIybGtJSDBnWm5KdmJTQW5MaTR2YUhWdFlXNXZhV1F2VmxKTlNIVnRZVzV2YVdRbk8xeHVhVzF3YjNKMElIc2daMngwWmtWNGRISmhZM1JRY21sdGFYUnBkbVZ6Um5KdmJVNXZaR1Z6SUgwZ1puSnZiU0FuTGk0dmRYUnBiSE12WjJ4MFprVjRkSEpoWTNSUWNtbHRhWFJwZG1WelJuSnZiVTV2WkdVbk8xeHVhVzF3YjNKMElIc2dWbEpOUm1seWMzUlFaWEp6YjI0Z2ZTQm1jbTl0SUNjdUwxWlNUVVpwY25OMFVHVnljMjl1Snp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnVmxKTlJtbHljM1JRWlhKemIyNU5aWE5vUVc1dWIzUmhkR2x2YmlCOUlHWnliMjBnSnk0dlZsSk5SbWx5YzNSUVpYSnpiMjVOWlhOb1FXNXViM1JoZEdsdmJpYzdYRzVwYlhCdmNuUWdkSGx3WlNCN0lGWlNUVVpwY25OMFVHVnljMjl1VFdWemFFRnVibTkwWVhScGIyNVVlWEJsSUgwZ1puSnZiU0FuTGk5V1VrMUdhWEp6ZEZCbGNuTnZiazFsYzJoQmJtNXZkR0YwYVc5dVZIbHdaU2M3WEc1cGJYQnZjblFnZXlCSFRGUkdJR0Z6SUVkTVZFWlRZMmhsYldFZ2ZTQm1jbTl0SUNkQVoyeDBaaTEwY21GdWMyWnZjbTB2WTI5eVpTYzdYRzVjYmk4cUtseHVJQ29nVUc5emMybGliR1VnYzNCbFl5QjJaWEp6YVc5dWN5QnBkQ0J5WldOdloyNXBlbVZ6TGx4dUlDb3ZYRzVqYjI1emRDQlFUMU5UU1VKTVJWOVRVRVZEWDFaRlVsTkpUMDVUSUQwZ2JtVjNJRk5sZENoYkp6RXVNQ2NzSUNjeExqQXRZbVYwWVNkZEtUdGNibHh1THlvcVhHNGdLaUJCSUhCc2RXZHBiaUJ2WmlCSFRGUkdURzloWkdWeUlIUm9ZWFFnYVcxd2IzSjBjeUJoSUh0QWJHbHVheUJXVWsxR2FYSnpkRkJsY25OdmJuMGdabkp2YlNCaElGWlNUU0JsZUhSbGJuTnBiMjRnYjJZZ1lTQkhURlJHTGx4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZsSk5SbWx5YzNSUVpYSnpiMjVNYjJGa1pYSlFiSFZuYVc0Z2FXMXdiR1Z0Wlc1MGN5QkhURlJHVEc5aFpHVnlVR3gxWjJsdUlIdGNiaUFnY0hWaWJHbGpJSEpsWVdSdmJteDVJSEJoY25ObGNqb2dSMHhVUmxCaGNuTmxjanRjYmx4dUlDQndkV0pzYVdNZ1oyVjBJRzVoYldVb0tUb2djM1J5YVc1bklIdGNiaUFnSUNBdkx5QlhaU0J6YUc5MWJHUWdkWE5sSUhSb1pTQmxlSFJsYm5OcGIyNGdibUZ0WlNCcGJuTjBaV0ZrSUdKMWRDQjNaU0JvWVhabElHMTFiSFJwY0d4bElIQnNkV2RwYm5NZ1ptOXlJR0Z1SUdWNGRHVnVjMmx2Ymk0dUxseHVJQ0FnSUhKbGRIVnliaUFuVmxKTlJtbHljM1JRWlhKemIyNU1iMkZrWlhKUWJIVm5hVzRuTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdOdmJuTjBjblZqZEc5eUtIQmhjbk5sY2pvZ1IweFVSbEJoY25ObGNpa2dlMXh1SUNBZ0lIUm9hWE11Y0dGeWMyVnlJRDBnY0dGeWMyVnlPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR0Z6ZVc1aklHRm1kR1Z5VW05dmRDaG5iSFJtT2lCSFRGUkdLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ1kyOXVjM1FnZG5KdFNIVnRZVzV2YVdRZ1BTQm5iSFJtTG5WelpYSkVZWFJoTG5aeWJVaDFiV0Z1YjJsa0lHRnpJRlpTVFVoMWJXRnViMmxrSUh3Z2RXNWtaV1pwYm1Wa08xeHVYRzRnSUNBZ0x5OGdaWGh3YkdsamFYUnNlU0JrYVhOMGFXNW5kV2x6YUNCdWRXeHNJR0Z1WkNCMWJtUmxabWx1WldSY2JpQWdJQ0F2THlCemFXNWpaU0IyY20xSWRXMWhibTlwWkNCdGFXZG9kQ0JpWlNCdWRXeHNJR0Z6SUdFZ2NtVnpkV3gwWEc0Z0lDQWdhV1lnS0haeWJVaDFiV0Z1YjJsa0lEMDlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNoMmNtMUlkVzFoYm05cFpDQTlQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUNkV1VrMUdhWEp6ZEZCbGNuTnZia3h2WVdSbGNsQnNkV2RwYmpvZ2RuSnRTSFZ0WVc1dmFXUWdhWE1nZFc1a1pXWnBibVZrTGlCV1VrMUlkVzFoYm05cFpFeHZZV1JsY2xCc2RXZHBiaUJvWVhabElIUnZJR0psSUhWelpXUWdabWx5YzNRbkxGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCbmJIUm1MblZ6WlhKRVlYUmhMblp5YlVacGNuTjBVR1Z5YzI5dUlEMGdZWGRoYVhRZ2RHaHBjeTVmYVcxd2IzSjBLR2RzZEdZc0lIWnliVWgxYldGdWIybGtLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmJYQnZjblFnWVNCN1FHeHBibXNnVmxKTlJtbHljM1JRWlhKemIyNTlJR1p5YjIwZ1lTQldVazB1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCbmJIUm1JRUVnY0dGeWMyVmtJSEpsYzNWc2RDQnZaaUJIVEZSR0lIUmhhMlZ1SUdaeWIyMGdSMHhVUmt4dllXUmxjbHh1SUNBZ0tpQkFjR0Z5WVcwZ2FIVnRZVzV2YVdRZ1FTQjdRR3hwYm1zZ1ZsSk5TSFZ0WVc1dmFXUjlJR2x1YzNSaGJtTmxJSFJvWVhRZ2NtVndjbVZ6Wlc1MGN5QjBhR1VnVmxKTlhHNGdJQ0FxTDF4dVhHNGdJSEJ5YVhaaGRHVWdZWE41Ym1NZ1gybHRjRzl5ZENobmJIUm1PaUJIVEZSR0xDQm9kVzFoYm05cFpEb2dWbEpOU0hWdFlXNXZhV1FnZkNCdWRXeHNLVG9nVUhKdmJXbHpaVHhXVWsxR2FYSnpkRkJsY25OdmJpQjhJRzUxYkd3K0lIdGNiaUFnSUNCcFppQW9hSFZ0WVc1dmFXUWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2RqRlNaWE4xYkhRZ1BTQmhkMkZwZENCMGFHbHpMbDkyTVVsdGNHOXlkQ2huYkhSbUxDQm9kVzFoYm05cFpDazdYRzRnSUNBZ2FXWWdLSFl4VW1WemRXeDBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkakZTWlhOMWJIUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnZGpCU1pYTjFiSFFnUFNCaGQyRnBkQ0IwYUdsekxsOTJNRWx0Y0c5eWRDaG5iSFJtTENCb2RXMWhibTlwWkNrN1hHNGdJQ0FnYVdZZ0tIWXdVbVZ6ZFd4MEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RqQlNaWE4xYkhRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHRnplVzVqSUY5Mk1VbHRjRzl5ZENobmJIUm1PaUJIVEZSR0xDQm9kVzFoYm05cFpEb2dWbEpOU0hWdFlXNXZhV1FwT2lCUWNtOXRhWE5sUEZaU1RVWnBjbk4wVUdWeWMyOXVJSHdnYm5Wc2JENGdlMXh1SUNBZ0lHTnZibk4wSUdwemIyNGdQU0IwYUdsekxuQmhjbk5sY2k1cWMyOXVJR0Z6SUVkTVZFWlRZMmhsYldFdVNVZE1WRVk3WEc1Y2JpQWdJQ0F2THlCbFlYSnNlU0JoWW05eWRDQnBaaUJwZENCa2IyVnpiaWQwSUhWelpTQjJjbTFjYmlBZ0lDQmpiMjV6ZENCcGMxWlNUVlZ6WldRZ1BTQnFjMjl1TG1WNGRHVnVjMmx2Ym5OVmMyVmtQeTVwYm1SbGVFOW1LQ2RXVWsxRFgzWnliU2NwSUNFOVBTQXRNVHRjYmlBZ0lDQnBaaUFvSVdselZsSk5WWE5sWkNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnWlhoMFpXNXphVzl1SUQwZ2FuTnZiaTVsZUhSbGJuTnBiMjV6UHk1YkoxWlNUVU5mZG5KdEoxMGdZWE1nVmpGV1VrMVRZMmhsYldFdVZsSk5RMVpTVFNCOElIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCcFppQW9JV1Y0ZEdWdWMybHZiaWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdjM0JsWTFabGNuTnBiMjRnUFNCbGVIUmxibk5wYjI0dWMzQmxZMVpsY25OcGIyNDdYRzRnSUNBZ2FXWWdLQ0ZRVDFOVFNVSk1SVjlUVUVWRFgxWkZVbE5KVDA1VExtaGhjeWh6Y0dWalZtVnljMmx2YmlrcElIdGNiaUFnSUNBZ0lHTnZibk52YkdVdWQyRnliaWhnVmxKTlJtbHljM1JRWlhKemIyNU1iMkZrWlhKUWJIVm5hVzQ2SUZWdWEyNXZkMjRnVmxKTlExOTJjbTBnYzNCbFkxWmxjbk5wYjI0Z1hDSWtlM053WldOV1pYSnphVzl1ZlZ3aVlDazdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCelkyaGxiV0ZHYVhKemRGQmxjbk52YmlBOUlHVjRkR1Z1YzJsdmJpNW1hWEp6ZEZCbGNuTnZianRjYmlBZ0lDQnBaaUFvSVhOamFHVnRZVVpwY25OMFVHVnljMjl1S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0J0WlhOb1FXNXViM1JoZEdsdmJuTTZJRlpTVFVacGNuTjBVR1Z5YzI5dVRXVnphRUZ1Ym05MFlYUnBiMjViWFNBOUlGdGRPMXh1SUNBZ0lHTnZibk4wSUc1dlpHVlFjbWx0YVhScGRtVnpUV0Z3SUQwZ1lYZGhhWFFnWjJ4MFprVjRkSEpoWTNSUWNtbHRhWFJwZG1WelJuSnZiVTV2WkdWektHZHNkR1lwTzF4dUlDQWdJRUZ5Y21GNUxtWnliMjBvYm05a1pWQnlhVzFwZEdsMlpYTk5ZWEF1Wlc1MGNtbGxjeWdwS1M1bWIzSkZZV05vS0NoYmJtOWtaVWx1WkdWNExDQndjbWx0YVhScGRtVnpYU2tnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWVc1dWIzUmhkR2x2YmlBOUlITmphR1Z0WVVacGNuTjBVR1Z5YzI5dUxtMWxjMmhCYm01dmRHRjBhVzl1YzF4dUlDQWdJQ0FnSUNBL0lITmphR1Z0WVVacGNuTjBVR1Z5YzI5dUxtMWxjMmhCYm01dmRHRjBhVzl1Y3k1bWFXNWtLQ2hoS1NBOVBpQmhMbTV2WkdVZ1BUMDlJRzV2WkdWSmJtUmxlQ2xjYmlBZ0lDQWdJQ0FnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNBZ0lHMWxjMmhCYm01dmRHRjBhVzl1Y3k1d2RYTm9LSHRjYmlBZ0lDQWdJQ0FnYldWemFHVnpPaUJ3Y21sdGFYUnBkbVZ6TEZ4dUlDQWdJQ0FnSUNCMGVYQmxPaUJoYm01dmRHRjBhVzl1UHk1MGVYQmxJRDgvSUNkaWIzUm9KeXhjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnY21WMGRYSnVJRzVsZHlCV1VrMUdhWEp6ZEZCbGNuTnZiaWhvZFcxaGJtOXBaQ3dnYldWemFFRnVibTkwWVhScGIyNXpLVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWVhONWJtTWdYM1l3U1cxd2IzSjBLR2RzZEdZNklFZE1WRVlzSUdoMWJXRnViMmxrT2lCV1VrMUlkVzFoYm05cFpDazZJRkJ5YjIxcGMyVThWbEpOUm1seWMzUlFaWEp6YjI0Z2ZDQnVkV3hzUGlCN1hHNGdJQ0FnWTI5dWMzUWdhbk52YmlBOUlIUm9hWE11Y0dGeWMyVnlMbXB6YjI0Z1lYTWdSMHhVUmxOamFHVnRZUzVKUjB4VVJqdGNibHh1SUNBZ0lHTnZibk4wSUhaeWJVVjRkQ0E5SUdwemIyNHVaWGgwWlc1emFXOXVjejh1VmxKTklHRnpJRll3VmxKTkxsWlNUU0I4SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JwWmlBb0lYWnliVVY0ZENrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnYzJOb1pXMWhSbWx5YzNSUVpYSnpiMjQ2SUZZd1ZsSk5Ma1pwY25OMFVHVnljMjl1SUh3Z2RXNWtaV1pwYm1Wa0lEMGdkbkp0UlhoMExtWnBjbk4wVUdWeWMyOXVPMXh1SUNBZ0lHbG1JQ2doYzJOb1pXMWhSbWx5YzNSUVpYSnpiMjRwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJRzFsYzJoQmJtNXZkR0YwYVc5dWN6b2dWbEpOUm1seWMzUlFaWEp6YjI1TlpYTm9RVzV1YjNSaGRHbHZibHRkSUQwZ1cxMDdYRzRnSUNBZ1kyOXVjM1FnYm05a1pWQnlhVzFwZEdsMlpYTk5ZWEFnUFNCaGQyRnBkQ0JuYkhSbVJYaDBjbUZqZEZCeWFXMXBkR2wyWlhOR2NtOXRUbTlrWlhNb1oyeDBaaWs3WEc1Y2JpQWdJQ0JCY25KaGVTNW1jbTl0S0c1dlpHVlFjbWx0YVhScGRtVnpUV0Z3TG1WdWRISnBaWE1vS1NrdVptOXlSV0ZqYUNnb1cyNXZaR1ZKYm1SbGVDd2djSEpwYldsMGFYWmxjMTBwSUQwK0lIdGNiaUFnSUNBZ0lHTnZibk4wSUhOamFHVnRZVTV2WkdVZ1BTQnFjMjl1TG01dlpHVnpJVnR1YjJSbFNXNWtaWGhkTzF4dVhHNGdJQ0FnSUNCamIyNXpkQ0JtYkdGbklEMGdjMk5vWlcxaFJtbHljM1JRWlhKemIyNHViV1Z6YUVGdWJtOTBZWFJwYjI1elhHNGdJQ0FnSUNBZ0lEOGdjMk5vWlcxaFJtbHljM1JRWlhKemIyNHViV1Z6YUVGdWJtOTBZWFJwYjI1ekxtWnBibVFvS0dFcElEMCtJR0V1YldWemFDQTlQVDBnYzJOb1pXMWhUbTlrWlM1dFpYTm9LVnh1SUNBZ0lDQWdJQ0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUNBZ2JXVnphRUZ1Ym05MFlYUnBiMjV6TG5CMWMyZ29lMXh1SUNBZ0lDQWdJQ0J0WlhOb1pYTTZJSEJ5YVcxcGRHbDJaWE1zWEc0Z0lDQWdJQ0FnSUhSNWNHVTZJSFJvYVhNdVgyTnZiblpsY25SV01FWnNZV2RVYjFZeFZIbHdaU2htYkdGblB5NW1hWEp6ZEZCbGNuTnZia1pzWVdjcExGeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRlpTVFVacGNuTjBVR1Z5YzI5dUtHaDFiV0Z1YjJsa0xDQnRaWE5vUVc1dWIzUmhkR2x2Ym5NcE8xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQmZZMjl1ZG1WeWRGWXdSbXhoWjFSdlZqRlVlWEJsS0dac1lXYzZJSE4wY21sdVp5QjhJSFZ1WkdWbWFXNWxaQ2s2SUZaU1RVWnBjbk4wVUdWeWMyOXVUV1Z6YUVGdWJtOTBZWFJwYjI1VWVYQmxJSHRjYmlBZ0lDQnBaaUFvWm14aFp5QTlQVDBnSjBacGNuTjBVR1Z5YzI5dVQyNXNlU2NwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUFuWm1seWMzUlFaWEp6YjI1UGJteDVKenRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLR1pzWVdjZ1BUMDlJQ2RVYUdseVpGQmxjbk52Yms5dWJIa25LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKM1JvYVhKa1VHVnljMjl1VDI1c2VTYzdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaG1iR0ZuSUQwOVBTQW5RWFYwYnljcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlBbllYVjBieWM3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlBblltOTBhQ2M3WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzRpTENJdktpQmxjMnhwYm5RdFpHbHpZV0pzWlNCQWRIbHdaWE5qY21sd2RDMWxjMnhwYm5RdmJtRnRhVzVuTFdOdmJuWmxiblJwYjI0Z0tpOWNibHh1Wlhod2IzSjBJR052Ym5OMElGWlNUVVpwY25OMFVHVnljMjl1VFdWemFFRnVibTkwWVhScGIyNVVlWEJsSUQwZ2UxeHVJQ0JCZFhSdk9pQW5ZWFYwYnljc1hHNGdJRUp2ZEdnNklDZGliM1JvSnl4Y2JpQWdWR2hwY21SUVpYSnpiMjVQYm14NU9pQW5kR2hwY21SUVpYSnpiMjVQYm14NUp5eGNiaUFnUm1seWMzUlFaWEp6YjI1UGJteDVPaUFuWm1seWMzUlFaWEp6YjI1UGJteDVKeXhjYm4wZ1lYTWdZMjl1YzNRN1hHNWNibVY0Y0c5eWRDQjBlWEJsSUZaU1RVWnBjbk4wVUdWeWMyOXVUV1Z6YUVGdWJtOTBZWFJwYjI1VWVYQmxJRDFjYmlBZ2RIbHdaVzltSUZaU1RVWnBjbk4wVUdWeWMyOXVUV1Z6YUVGdWJtOTBZWFJwYjI1VWVYQmxXMnRsZVc5bUlIUjVjR1Z2WmlCV1VrMUdhWEp6ZEZCbGNuTnZiazFsYzJoQmJtNXZkR0YwYVc5dVZIbHdaVjA3WEc0aUxDSnBiWEJ2Y25RZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1cGJYQnZjblFnZXlCV1VrMUlkVzFoYmtKdmJtVWdmU0JtY205dElDY3VMaTlXVWsxSWRXMWhia0p2Ym1Vbk8xeHVhVzF3YjNKMElIc2dWbEpOU0hWdFlXNXZhV1FnZlNCbWNtOXRJQ2N1TGk5V1VrMUlkVzFoYm05cFpDYzdYRzVjYm1OdmJuTjBJRjkyTTBFZ1BTQnVaWGNnVkVoU1JVVXVWbVZqZEc5eU15Z3BPMXh1WTI5dWMzUWdYM1l6UWlBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektDazdYRzVqYjI1emRDQmZjWFZoZEVFZ1BTQnVaWGNnVkVoU1JVVXVVWFZoZEdWeWJtbHZiaWdwTzF4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVmxKTlNIVnRZVzV2YVdSSVpXeHdaWElnWlhoMFpXNWtjeUJVU0ZKRlJTNUhjbTkxY0NCN1hHNGdJSEIxWW14cFl5QnlaV0ZrYjI1c2VTQjJjbTFJZFcxaGJtOXBaRG9nVmxKTlNIVnRZVzV2YVdRN1hHNGdJSEJ5YVhaaGRHVWdYMkp2Ym1WQmVHVnpUV0Z3T2lCTllYQThWbEpOU0hWdFlXNUNiMjVsTENCVVNGSkZSUzVCZUdWelNHVnNjR1Z5UGp0Y2JseHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvYUhWdFlXNXZhV1E2SUZaU1RVaDFiV0Z1YjJsa0tTQjdYRzRnSUNBZ2MzVndaWElvS1R0Y2JseHVJQ0FnSUhSb2FYTXVkbkp0U0hWdFlXNXZhV1FnUFNCb2RXMWhibTlwWkR0Y2JseHVJQ0FnSUhSb2FYTXVYMkp2Ym1WQmVHVnpUV0Z3SUQwZ2JtVjNJRTFoY0NncE8xeHVYRzRnSUNBZ1QySnFaV04wTG5aaGJIVmxjeWhvZFcxaGJtOXBaQzVvZFcxaGJrSnZibVZ6S1M1bWIzSkZZV05vS0NoaWIyNWxLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0JvWld4d1pYSWdQU0J1WlhjZ1ZFaFNSVVV1UVhobGMwaGxiSEJsY2lneExqQXBPMXh1WEc0Z0lDQWdJQ0JvWld4d1pYSXViV0YwY21sNFFYVjBiMVZ3WkdGMFpTQTlJR1poYkhObE8xeHVYRzRnSUNBZ0lDQW9hR1ZzY0dWeUxtMWhkR1Z5YVdGc0lHRnpJRlJJVWtWRkxrMWhkR1Z5YVdGc0tTNWtaWEIwYUZSbGMzUWdQU0JtWVd4elpUdGNiaUFnSUNBZ0lDaG9aV3h3WlhJdWJXRjBaWEpwWVd3Z1lYTWdWRWhTUlVVdVRXRjBaWEpwWVd3cExtUmxjSFJvVjNKcGRHVWdQU0JtWVd4elpUdGNibHh1SUNBZ0lDQWdkR2hwY3k1aFpHUW9hR1ZzY0dWeUtUdGNibHh1SUNBZ0lDQWdkR2hwY3k1ZlltOXVaVUY0WlhOTllYQXVjMlYwS0dKdmJtVXNJR2hsYkhCbGNpazdYRzRnSUNBZ2ZTazdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaR2x6Y0c5elpTZ3BPaUIyYjJsa0lIdGNiaUFnSUNCQmNuSmhlUzVtY205dEtIUm9hWE11WDJKdmJtVkJlR1Z6VFdGd0xuWmhiSFZsY3lncEtTNW1iM0pGWVdOb0tDaGhlR1Z6S1NBOVBpQjdYRzRnSUNBZ0lDQmhlR1Z6TG1kbGIyMWxkSEo1TG1ScGMzQnZjMlVvS1R0Y2JpQWdJQ0FnSUNoaGVHVnpMbTFoZEdWeWFXRnNJR0Z6SUZSSVVrVkZMazFoZEdWeWFXRnNLUzVrYVhOd2IzTmxLQ2s3WEc0Z0lDQWdmU2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nZFhCa1lYUmxUV0YwY21sNFYyOXliR1FvWm05eVkyVTZJR0p2YjJ4bFlXNHBPaUIyYjJsa0lIdGNiaUFnSUNCQmNuSmhlUzVtY205dEtIUm9hWE11WDJKdmJtVkJlR1Z6VFdGd0xtVnVkSEpwWlhNb0tTa3VabTl5UldGamFDZ29XMkp2Ym1Vc0lHRjRaWE5kS1NBOVBpQjdYRzRnSUNBZ0lDQmliMjVsTG01dlpHVXVkWEJrWVhSbFYyOXliR1JOWVhSeWFYZ29kSEoxWlN3Z1ptRnNjMlVwTzF4dVhHNGdJQ0FnSUNCaWIyNWxMbTV2WkdVdWJXRjBjbWw0VjI5eWJHUXVaR1ZqYjIxd2IzTmxLRjkyTTBFc0lGOXhkV0YwUVN3Z1gzWXpRaWs3WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJSE5qWVd4bElEMGdYM1l6UVM1elpYUW9NQzR4TENBd0xqRXNJREF1TVNrdVpHbDJhV1JsS0Y5Mk0wSXBPMXh1SUNBZ0lDQWdZWGhsY3k1dFlYUnlhWGd1WTI5d2VTaGliMjVsTG01dlpHVXViV0YwY21sNFYyOXliR1FwTG5OallXeGxLSE5qWVd4bEtUdGNiaUFnSUNCOUtUdGNibHh1SUNBZ0lITjFjR1Z5TG5Wd1pHRjBaVTFoZEhKcGVGZHZjbXhrS0dadmNtTmxLVHRjYmlBZ2ZWeHVmVnh1SWl3aUx5b2daWE5zYVc1MExXUnBjMkZpYkdVZ1FIUjVjR1Z6WTNKcGNIUXRaWE5zYVc1MEwyNWhiV2x1WnkxamIyNTJaVzUwYVc5dUlDb3ZYRzVjYm1sdGNHOXlkQ0I3SUZaU1RVaDFiV0Z1UW05dVpVNWhiV1VnZlNCbWNtOXRJQ2N1TDFaU1RVaDFiV0Z1UW05dVpVNWhiV1VuTzF4dVhHNHZLaXBjYmlBcUlGUm9aU0JzYVhOMElHOW1JSHRBYkdsdWF5QldVazFJZFcxaGJrSnZibVZPWVcxbGZTNGdSR1Z3Wlc1a1pXNWplU0JoZDJGeVpTNWNiaUFxTDF4dVpYaHdiM0owSUdOdmJuTjBJRlpTVFVoMWJXRnVRbTl1WlV4cGMzUTZJRlpTVFVoMWJXRnVRbTl1WlU1aGJXVmJYU0E5SUZ0Y2JpQWdKMmhwY0hNbkxGeHVJQ0FuYzNCcGJtVW5MRnh1SUNBblkyaGxjM1FuTEZ4dUlDQW5kWEJ3WlhKRGFHVnpkQ2NzWEc0Z0lDZHVaV05ySnl4Y2JseHVJQ0FuYUdWaFpDY3NYRzRnSUNkc1pXWjBSWGxsSnl4Y2JpQWdKM0pwWjJoMFJYbGxKeXhjYmlBZ0oycGhkeWNzWEc1Y2JpQWdKMnhsWm5SVmNIQmxja3hsWnljc1hHNGdJQ2RzWldaMFRHOTNaWEpNWldjbkxGeHVJQ0FuYkdWbWRFWnZiM1FuTEZ4dUlDQW5iR1ZtZEZSdlpYTW5MRnh1WEc0Z0lDZHlhV2RvZEZWd2NHVnlUR1ZuSnl4Y2JpQWdKM0pwWjJoMFRHOTNaWEpNWldjbkxGeHVJQ0FuY21sbmFIUkdiMjkwSnl4Y2JpQWdKM0pwWjJoMFZHOWxjeWNzWEc1Y2JpQWdKMnhsWm5SVGFHOTFiR1JsY2ljc1hHNGdJQ2RzWldaMFZYQndaWEpCY20wbkxGeHVJQ0FuYkdWbWRFeHZkMlZ5UVhKdEp5eGNiaUFnSjJ4bFpuUklZVzVrSnl4Y2JseHVJQ0FuY21sbmFIUlRhRzkxYkdSbGNpY3NYRzRnSUNkeWFXZG9kRlZ3Y0dWeVFYSnRKeXhjYmlBZ0ozSnBaMmgwVEc5M1pYSkJjbTBuTEZ4dUlDQW5jbWxuYUhSSVlXNWtKeXhjYmx4dUlDQW5iR1ZtZEZSb2RXMWlUV1YwWVdOaGNuQmhiQ2NzWEc0Z0lDZHNaV1owVkdoMWJXSlFjbTk0YVcxaGJDY3NYRzRnSUNkc1pXWjBWR2gxYldKRWFYTjBZV3duTEZ4dUlDQW5iR1ZtZEVsdVpHVjRVSEp2ZUdsdFlXd25MRnh1SUNBbmJHVm1kRWx1WkdWNFNXNTBaWEp0WldScFlYUmxKeXhjYmlBZ0oyeGxablJKYm1SbGVFUnBjM1JoYkNjc1hHNGdJQ2RzWldaMFRXbGtaR3hsVUhKdmVHbHRZV3duTEZ4dUlDQW5iR1ZtZEUxcFpHUnNaVWx1ZEdWeWJXVmthV0YwWlNjc1hHNGdJQ2RzWldaMFRXbGtaR3hsUkdsemRHRnNKeXhjYmlBZ0oyeGxablJTYVc1blVISnZlR2x0WVd3bkxGeHVJQ0FuYkdWbWRGSnBibWRKYm5SbGNtMWxaR2xoZEdVbkxGeHVJQ0FuYkdWbWRGSnBibWRFYVhOMFlXd25MRnh1SUNBbmJHVm1kRXhwZEhSc1pWQnliM2hwYldGc0p5eGNiaUFnSjJ4bFpuUk1hWFIwYkdWSmJuUmxjbTFsWkdsaGRHVW5MRnh1SUNBbmJHVm1kRXhwZEhSc1pVUnBjM1JoYkNjc1hHNWNiaUFnSjNKcFoyaDBWR2gxYldKTlpYUmhZMkZ5Y0dGc0p5eGNiaUFnSjNKcFoyaDBWR2gxYldKUWNtOTRhVzFoYkNjc1hHNGdJQ2R5YVdkb2RGUm9kVzFpUkdsemRHRnNKeXhjYmlBZ0ozSnBaMmgwU1c1a1pYaFFjbTk0YVcxaGJDY3NYRzRnSUNkeWFXZG9kRWx1WkdWNFNXNTBaWEp0WldScFlYUmxKeXhjYmlBZ0ozSnBaMmgwU1c1a1pYaEVhWE4wWVd3bkxGeHVJQ0FuY21sbmFIUk5hV1JrYkdWUWNtOTRhVzFoYkNjc1hHNGdJQ2R5YVdkb2RFMXBaR1JzWlVsdWRHVnliV1ZrYVdGMFpTY3NYRzRnSUNkeWFXZG9kRTFwWkdSc1pVUnBjM1JoYkNjc1hHNGdJQ2R5YVdkb2RGSnBibWRRY205NGFXMWhiQ2NzWEc0Z0lDZHlhV2RvZEZKcGJtZEpiblJsY20xbFpHbGhkR1VuTEZ4dUlDQW5jbWxuYUhSU2FXNW5SR2x6ZEdGc0p5eGNiaUFnSjNKcFoyaDBUR2wwZEd4bFVISnZlR2x0WVd3bkxGeHVJQ0FuY21sbmFIUk1hWFIwYkdWSmJuUmxjbTFsWkdsaGRHVW5MRnh1SUNBbmNtbG5hSFJNYVhSMGJHVkVhWE4wWVd3bkxGeHVYVHRjYmlJc0lpOHFJR1Z6YkdsdWRDMWthWE5oWW14bElFQjBlWEJsYzJOeWFYQjBMV1Z6YkdsdWRDOXVZVzFwYm1jdFkyOXVkbVZ1ZEdsdmJpQXFMMXh1WEc0dktpcGNiaUFxSUZSb1pTQnVZVzFsY3lCdlppQjdRR3hwYm1zZ1ZsSk5TSFZ0WVc1dmFXUjlJR0p2Ym1VZ2JtRnRaWE11WEc0Z0tseHVJQ29nVW1WbU9pQm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZkbkp0TFdNdmRuSnRMWE53WldOcFptbGpZWFJwYjI0dllteHZZaTl0WVhOMFpYSXZjM0JsWTJsbWFXTmhkR2x2Ymk5V1VrMURYM1p5YlMweExqQXZhSFZ0WVc1dmFXUXViV1JjYmlBcUwxeHVaWGh3YjNKMElHTnZibk4wSUZaU1RVaDFiV0Z1UW05dVpVNWhiV1VnUFNCN1hHNGdJRWhwY0hNNklDZG9hWEJ6Snl4Y2JpQWdVM0JwYm1VNklDZHpjR2x1WlNjc1hHNGdJRU5vWlhOME9pQW5ZMmhsYzNRbkxGeHVJQ0JWY0hCbGNrTm9aWE4wT2lBbmRYQndaWEpEYUdWemRDY3NYRzRnSUU1bFkyczZJQ2R1WldOckp5eGNibHh1SUNCSVpXRmtPaUFuYUdWaFpDY3NYRzRnSUV4bFpuUkZlV1U2SUNkc1pXWjBSWGxsSnl4Y2JpQWdVbWxuYUhSRmVXVTZJQ2R5YVdkb2RFVjVaU2NzWEc0Z0lFcGhkem9nSjJwaGR5Y3NYRzVjYmlBZ1RHVm1kRlZ3Y0dWeVRHVm5PaUFuYkdWbWRGVndjR1Z5VEdWbkp5eGNiaUFnVEdWbWRFeHZkMlZ5VEdWbk9pQW5iR1ZtZEV4dmQyVnlUR1ZuSnl4Y2JpQWdUR1ZtZEVadmIzUTZJQ2RzWldaMFJtOXZkQ2NzWEc0Z0lFeGxablJVYjJWek9pQW5iR1ZtZEZSdlpYTW5MRnh1WEc0Z0lGSnBaMmgwVlhCd1pYSk1aV2M2SUNkeWFXZG9kRlZ3Y0dWeVRHVm5KeXhjYmlBZ1VtbG5hSFJNYjNkbGNreGxaem9nSjNKcFoyaDBURzkzWlhKTVpXY25MRnh1SUNCU2FXZG9kRVp2YjNRNklDZHlhV2RvZEVadmIzUW5MRnh1SUNCU2FXZG9kRlJ2WlhNNklDZHlhV2RvZEZSdlpYTW5MRnh1WEc0Z0lFeGxablJUYUc5MWJHUmxjam9nSjJ4bFpuUlRhRzkxYkdSbGNpY3NYRzRnSUV4bFpuUlZjSEJsY2tGeWJUb2dKMnhsWm5SVmNIQmxja0Z5YlNjc1hHNGdJRXhsWm5STWIzZGxja0Z5YlRvZ0oyeGxablJNYjNkbGNrRnliU2NzWEc0Z0lFeGxablJJWVc1a09pQW5iR1ZtZEVoaGJtUW5MRnh1WEc0Z0lGSnBaMmgwVTJodmRXeGtaWEk2SUNkeWFXZG9kRk5vYjNWc1pHVnlKeXhjYmlBZ1VtbG5hSFJWY0hCbGNrRnliVG9nSjNKcFoyaDBWWEJ3WlhKQmNtMG5MRnh1SUNCU2FXZG9kRXh2ZDJWeVFYSnRPaUFuY21sbmFIUk1iM2RsY2tGeWJTY3NYRzRnSUZKcFoyaDBTR0Z1WkRvZ0ozSnBaMmgwU0dGdVpDY3NYRzVjYmlBZ1RHVm1kRlJvZFcxaVRXVjBZV05oY25CaGJEb2dKMnhsWm5SVWFIVnRZazFsZEdGallYSndZV3duTEZ4dUlDQk1aV1owVkdoMWJXSlFjbTk0YVcxaGJEb2dKMnhsWm5SVWFIVnRZbEJ5YjNocGJXRnNKeXhjYmlBZ1RHVm1kRlJvZFcxaVJHbHpkR0ZzT2lBbmJHVm1kRlJvZFcxaVJHbHpkR0ZzSnl4Y2JpQWdUR1ZtZEVsdVpHVjRVSEp2ZUdsdFlXdzZJQ2RzWldaMFNXNWtaWGhRY205NGFXMWhiQ2NzWEc0Z0lFeGxablJKYm1SbGVFbHVkR1Z5YldWa2FXRjBaVG9nSjJ4bFpuUkpibVJsZUVsdWRHVnliV1ZrYVdGMFpTY3NYRzRnSUV4bFpuUkpibVJsZUVScGMzUmhiRG9nSjJ4bFpuUkpibVJsZUVScGMzUmhiQ2NzWEc0Z0lFeGxablJOYVdSa2JHVlFjbTk0YVcxaGJEb2dKMnhsWm5STmFXUmtiR1ZRY205NGFXMWhiQ2NzWEc0Z0lFeGxablJOYVdSa2JHVkpiblJsY20xbFpHbGhkR1U2SUNkc1pXWjBUV2xrWkd4bFNXNTBaWEp0WldScFlYUmxKeXhjYmlBZ1RHVm1kRTFwWkdSc1pVUnBjM1JoYkRvZ0oyeGxablJOYVdSa2JHVkVhWE4wWVd3bkxGeHVJQ0JNWldaMFVtbHVaMUJ5YjNocGJXRnNPaUFuYkdWbWRGSnBibWRRY205NGFXMWhiQ2NzWEc0Z0lFeGxablJTYVc1blNXNTBaWEp0WldScFlYUmxPaUFuYkdWbWRGSnBibWRKYm5SbGNtMWxaR2xoZEdVbkxGeHVJQ0JNWldaMFVtbHVaMFJwYzNSaGJEb2dKMnhsWm5SU2FXNW5SR2x6ZEdGc0p5eGNiaUFnVEdWbWRFeHBkSFJzWlZCeWIzaHBiV0ZzT2lBbmJHVm1kRXhwZEhSc1pWQnliM2hwYldGc0p5eGNiaUFnVEdWbWRFeHBkSFJzWlVsdWRHVnliV1ZrYVdGMFpUb2dKMnhsWm5STWFYUjBiR1ZKYm5SbGNtMWxaR2xoZEdVbkxGeHVJQ0JNWldaMFRHbDBkR3hsUkdsemRHRnNPaUFuYkdWbWRFeHBkSFJzWlVScGMzUmhiQ2NzWEc1Y2JpQWdVbWxuYUhSVWFIVnRZazFsZEdGallYSndZV3c2SUNkeWFXZG9kRlJvZFcxaVRXVjBZV05oY25CaGJDY3NYRzRnSUZKcFoyaDBWR2gxYldKUWNtOTRhVzFoYkRvZ0ozSnBaMmgwVkdoMWJXSlFjbTk0YVcxaGJDY3NYRzRnSUZKcFoyaDBWR2gxYldKRWFYTjBZV3c2SUNkeWFXZG9kRlJvZFcxaVJHbHpkR0ZzSnl4Y2JpQWdVbWxuYUhSSmJtUmxlRkJ5YjNocGJXRnNPaUFuY21sbmFIUkpibVJsZUZCeWIzaHBiV0ZzSnl4Y2JpQWdVbWxuYUhSSmJtUmxlRWx1ZEdWeWJXVmthV0YwWlRvZ0ozSnBaMmgwU1c1a1pYaEpiblJsY20xbFpHbGhkR1VuTEZ4dUlDQlNhV2RvZEVsdVpHVjRSR2x6ZEdGc09pQW5jbWxuYUhSSmJtUmxlRVJwYzNSaGJDY3NYRzRnSUZKcFoyaDBUV2xrWkd4bFVISnZlR2x0WVd3NklDZHlhV2RvZEUxcFpHUnNaVkJ5YjNocGJXRnNKeXhjYmlBZ1VtbG5hSFJOYVdSa2JHVkpiblJsY20xbFpHbGhkR1U2SUNkeWFXZG9kRTFwWkdSc1pVbHVkR1Z5YldWa2FXRjBaU2NzWEc0Z0lGSnBaMmgwVFdsa1pHeGxSR2x6ZEdGc09pQW5jbWxuYUhSTmFXUmtiR1ZFYVhOMFlXd25MRnh1SUNCU2FXZG9kRkpwYm1kUWNtOTRhVzFoYkRvZ0ozSnBaMmgwVW1sdVoxQnliM2hwYldGc0p5eGNiaUFnVW1sbmFIUlNhVzVuU1c1MFpYSnRaV1JwWVhSbE9pQW5jbWxuYUhSU2FXNW5TVzUwWlhKdFpXUnBZWFJsSnl4Y2JpQWdVbWxuYUhSU2FXNW5SR2x6ZEdGc09pQW5jbWxuYUhSU2FXNW5SR2x6ZEdGc0p5eGNiaUFnVW1sbmFIUk1hWFIwYkdWUWNtOTRhVzFoYkRvZ0ozSnBaMmgwVEdsMGRHeGxVSEp2ZUdsdFlXd25MRnh1SUNCU2FXZG9kRXhwZEhSc1pVbHVkR1Z5YldWa2FXRjBaVG9nSjNKcFoyaDBUR2wwZEd4bFNXNTBaWEp0WldScFlYUmxKeXhjYmlBZ1VtbG5hSFJNYVhSMGJHVkVhWE4wWVd3NklDZHlhV2RvZEV4cGRIUnNaVVJwYzNSaGJDY3NYRzU5SUdGeklHTnZibk4wTzF4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JXVWsxSWRXMWhia0p2Ym1WT1lXMWxJRDBnZEhsd1pXOW1JRlpTVFVoMWJXRnVRbTl1WlU1aGJXVmJhMlY1YjJZZ2RIbHdaVzltSUZaU1RVaDFiV0Z1UW05dVpVNWhiV1ZkTzF4dUlpd2lMeW9nWlhOc2FXNTBMV1JwYzJGaWJHVWdRSFI1Y0dWelkzSnBjSFF0WlhOc2FXNTBMMjVoYldsdVp5MWpiMjUyWlc1MGFXOXVJQ292WEc1Y2JtbHRjRzl5ZENCN0lGWlNUVWgxYldGdVFtOXVaVTVoYldVZ2ZTQm1jbTl0SUNjdUwxWlNUVWgxYldGdVFtOXVaVTVoYldVbk8xeHVYRzR2S2lwY2JpQXFJRUZ1SUc5aWFtVmpkQ0IwYUdGMElHMWhjSE1nWm5KdmJTQjdRR3hwYm1zZ1ZsSk5TSFZ0WVc1Q2IyNWxUbUZ0WlgwZ2RHOGdhWFJ6SUhCaGNtVnVkQ0I3UUd4cGJtc2dWbEpOU0hWdFlXNUNiMjVsVG1GdFpYMHVYRzRnS2x4dUlDb2dVbVZtT2lCb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdmRuSnRMV012ZG5KdExYTndaV05wWm1sallYUnBiMjR2WW14dllpOXRZWE4wWlhJdmMzQmxZMmxtYVdOaGRHbHZiaTlXVWsxRFgzWnliUzB4TGpBdmFIVnRZVzV2YVdRdWJXUmNiaUFxTDF4dVpYaHdiM0owSUdOdmJuTjBJRlpTVFVoMWJXRnVRbTl1WlZCaGNtVnVkRTFoY0RvZ2V5QmJZbTl1WlNCcGJpQldVazFJZFcxaGJrSnZibVZPWVcxbFhUb2dWbEpOU0hWdFlXNUNiMjVsVG1GdFpTQjhJRzUxYkd3Z2ZTQTlJSHRjYmlBZ2FHbHdjem9nYm5Wc2JDeGNiaUFnYzNCcGJtVTZJQ2RvYVhCekp5eGNiaUFnWTJobGMzUTZJQ2R6Y0dsdVpTY3NYRzRnSUhWd2NHVnlRMmhsYzNRNklDZGphR1Z6ZENjc1hHNGdJRzVsWTJzNklDZDFjSEJsY2tOb1pYTjBKeXhjYmx4dUlDQm9aV0ZrT2lBbmJtVmpheWNzWEc0Z0lHeGxablJGZVdVNklDZG9aV0ZrSnl4Y2JpQWdjbWxuYUhSRmVXVTZJQ2RvWldGa0p5eGNiaUFnYW1GM09pQW5hR1ZoWkNjc1hHNWNiaUFnYkdWbWRGVndjR1Z5VEdWbk9pQW5hR2x3Y3ljc1hHNGdJR3hsWm5STWIzZGxja3hsWnpvZ0oyeGxablJWY0hCbGNreGxaeWNzWEc0Z0lHeGxablJHYjI5ME9pQW5iR1ZtZEV4dmQyVnlUR1ZuSnl4Y2JpQWdiR1ZtZEZSdlpYTTZJQ2RzWldaMFJtOXZkQ2NzWEc1Y2JpQWdjbWxuYUhSVmNIQmxja3hsWnpvZ0oyaHBjSE1uTEZ4dUlDQnlhV2RvZEV4dmQyVnlUR1ZuT2lBbmNtbG5hSFJWY0hCbGNreGxaeWNzWEc0Z0lISnBaMmgwUm05dmREb2dKM0pwWjJoMFRHOTNaWEpNWldjbkxGeHVJQ0J5YVdkb2RGUnZaWE02SUNkeWFXZG9kRVp2YjNRbkxGeHVYRzRnSUd4bFpuUlRhRzkxYkdSbGNqb2dKM1Z3Y0dWeVEyaGxjM1FuTEZ4dUlDQnNaV1owVlhCd1pYSkJjbTA2SUNkc1pXWjBVMmh2ZFd4a1pYSW5MRnh1SUNCc1pXWjBURzkzWlhKQmNtMDZJQ2RzWldaMFZYQndaWEpCY20wbkxGeHVJQ0JzWldaMFNHRnVaRG9nSjJ4bFpuUk1iM2RsY2tGeWJTY3NYRzVjYmlBZ2NtbG5hSFJUYUc5MWJHUmxjam9nSjNWd2NHVnlRMmhsYzNRbkxGeHVJQ0J5YVdkb2RGVndjR1Z5UVhKdE9pQW5jbWxuYUhSVGFHOTFiR1JsY2ljc1hHNGdJSEpwWjJoMFRHOTNaWEpCY20wNklDZHlhV2RvZEZWd2NHVnlRWEp0Snl4Y2JpQWdjbWxuYUhSSVlXNWtPaUFuY21sbmFIUk1iM2RsY2tGeWJTY3NYRzVjYmlBZ2JHVm1kRlJvZFcxaVRXVjBZV05oY25CaGJEb2dKMnhsWm5SSVlXNWtKeXhjYmlBZ2JHVm1kRlJvZFcxaVVISnZlR2x0WVd3NklDZHNaV1owVkdoMWJXSk5aWFJoWTJGeWNHRnNKeXhjYmlBZ2JHVm1kRlJvZFcxaVJHbHpkR0ZzT2lBbmJHVm1kRlJvZFcxaVVISnZlR2x0WVd3bkxGeHVJQ0JzWldaMFNXNWtaWGhRY205NGFXMWhiRG9nSjJ4bFpuUklZVzVrSnl4Y2JpQWdiR1ZtZEVsdVpHVjRTVzUwWlhKdFpXUnBZWFJsT2lBbmJHVm1kRWx1WkdWNFVISnZlR2x0WVd3bkxGeHVJQ0JzWldaMFNXNWtaWGhFYVhOMFlXdzZJQ2RzWldaMFNXNWtaWGhKYm5SbGNtMWxaR2xoZEdVbkxGeHVJQ0JzWldaMFRXbGtaR3hsVUhKdmVHbHRZV3c2SUNkc1pXWjBTR0Z1WkNjc1hHNGdJR3hsWm5STmFXUmtiR1ZKYm5SbGNtMWxaR2xoZEdVNklDZHNaV1owVFdsa1pHeGxVSEp2ZUdsdFlXd25MRnh1SUNCc1pXWjBUV2xrWkd4bFJHbHpkR0ZzT2lBbmJHVm1kRTFwWkdSc1pVbHVkR1Z5YldWa2FXRjBaU2NzWEc0Z0lHeGxablJTYVc1blVISnZlR2x0WVd3NklDZHNaV1owU0dGdVpDY3NYRzRnSUd4bFpuUlNhVzVuU1c1MFpYSnRaV1JwWVhSbE9pQW5iR1ZtZEZKcGJtZFFjbTk0YVcxaGJDY3NYRzRnSUd4bFpuUlNhVzVuUkdsemRHRnNPaUFuYkdWbWRGSnBibWRKYm5SbGNtMWxaR2xoZEdVbkxGeHVJQ0JzWldaMFRHbDBkR3hsVUhKdmVHbHRZV3c2SUNkc1pXWjBTR0Z1WkNjc1hHNGdJR3hsWm5STWFYUjBiR1ZKYm5SbGNtMWxaR2xoZEdVNklDZHNaV1owVEdsMGRHeGxVSEp2ZUdsdFlXd25MRnh1SUNCc1pXWjBUR2wwZEd4bFJHbHpkR0ZzT2lBbmJHVm1kRXhwZEhSc1pVbHVkR1Z5YldWa2FXRjBaU2NzWEc1Y2JpQWdjbWxuYUhSVWFIVnRZazFsZEdGallYSndZV3c2SUNkeWFXZG9kRWhoYm1RbkxGeHVJQ0J5YVdkb2RGUm9kVzFpVUhKdmVHbHRZV3c2SUNkeWFXZG9kRlJvZFcxaVRXVjBZV05oY25CaGJDY3NYRzRnSUhKcFoyaDBWR2gxYldKRWFYTjBZV3c2SUNkeWFXZG9kRlJvZFcxaVVISnZlR2x0WVd3bkxGeHVJQ0J5YVdkb2RFbHVaR1Y0VUhKdmVHbHRZV3c2SUNkeWFXZG9kRWhoYm1RbkxGeHVJQ0J5YVdkb2RFbHVaR1Y0U1c1MFpYSnRaV1JwWVhSbE9pQW5jbWxuYUhSSmJtUmxlRkJ5YjNocGJXRnNKeXhjYmlBZ2NtbG5hSFJKYm1SbGVFUnBjM1JoYkRvZ0ozSnBaMmgwU1c1a1pYaEpiblJsY20xbFpHbGhkR1VuTEZ4dUlDQnlhV2RvZEUxcFpHUnNaVkJ5YjNocGJXRnNPaUFuY21sbmFIUklZVzVrSnl4Y2JpQWdjbWxuYUhSTmFXUmtiR1ZKYm5SbGNtMWxaR2xoZEdVNklDZHlhV2RvZEUxcFpHUnNaVkJ5YjNocGJXRnNKeXhjYmlBZ2NtbG5hSFJOYVdSa2JHVkVhWE4wWVd3NklDZHlhV2RvZEUxcFpHUnNaVWx1ZEdWeWJXVmthV0YwWlNjc1hHNGdJSEpwWjJoMFVtbHVaMUJ5YjNocGJXRnNPaUFuY21sbmFIUklZVzVrSnl4Y2JpQWdjbWxuYUhSU2FXNW5TVzUwWlhKdFpXUnBZWFJsT2lBbmNtbG5hSFJTYVc1blVISnZlR2x0WVd3bkxGeHVJQ0J5YVdkb2RGSnBibWRFYVhOMFlXdzZJQ2R5YVdkb2RGSnBibWRKYm5SbGNtMWxaR2xoZEdVbkxGeHVJQ0J5YVdkb2RFeHBkSFJzWlZCeWIzaHBiV0ZzT2lBbmNtbG5hSFJJWVc1a0p5eGNiaUFnY21sbmFIUk1hWFIwYkdWSmJuUmxjbTFsWkdsaGRHVTZJQ2R5YVdkb2RFeHBkSFJzWlZCeWIzaHBiV0ZzSnl4Y2JpQWdjbWxuYUhSTWFYUjBiR1ZFYVhOMFlXdzZJQ2R5YVdkb2RFeHBkSFJzWlVsdWRHVnliV1ZrYVdGMFpTY3NYRzU5TzF4dUlpd2lhVzF3YjNKMElDb2dZWE1nVkVoU1JVVWdabkp2YlNBbmRHaHlaV1VuTzF4dVhHNHZLaXBjYmlBcUlFRWdZMjl0Y0dGMElHWjFibU4wYVc5dUlHWnZjaUJnVVhWaGRHVnlibWx2Ymk1cGJuWmxjblFvS1dBZ0x5QmdVWFZoZEdWeWJtbHZiaTVwYm5abGNuTmxLQ2xnTGx4dUlDb2dZRkYxWVhSbGNtNXBiMjR1YVc1MlpYSjBLQ2xnSUdseklHbHVkSEp2WkhWalpXUWdhVzRnY2pFeU15QmhibVFnWUZGMVlYUmxjbTVwYjI0dWFXNTJaWEp6WlNncFlDQmxiV2wwY3lCaElIZGhjbTVwYm1jdVhHNGdLaUJYWlNCaGNtVWdaMjlwYm1jZ2RHOGdkWE5sSUhSb2FYTWdZMjl0Y0dGMElHWnZjaUJoSUhkb2FXeGxMbHh1SUNvZ1FIQmhjbUZ0SUhSaGNtZGxkQ0JCSUhSaGNtZGxkQ0J4ZFdGMFpYSnVhVzl1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnhkV0YwU1c1MlpYSjBRMjl0Y0dGMFBGUWdaWGgwWlc1a2N5QlVTRkpGUlM1UmRXRjBaWEp1YVc5dVBpaDBZWEpuWlhRNklGUXBPaUJVSUh0Y2JpQWdhV1lnS0NoMFlYSm5aWFFnWVhNZ1lXNTVLUzVwYm5abGNuUXBJSHRjYmlBZ0lDQjBZWEpuWlhRdWFXNTJaWEowS0NrN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ0tIUmhjbWRsZENCaGN5QmhibmtwTG1sdWRtVnljMlVvS1R0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCMFlYSm5aWFE3WEc1OVhHNGlMQ0pwYlhCdmNuUWdLaUJoY3lCVVNGSkZSU0JtY205dElDZDBhSEpsWlNjN1hHNXBiWEJ2Y25RZ2V5QnhkV0YwU1c1MlpYSjBRMjl0Y0dGMElIMGdabkp2YlNBbkxpNHZkWFJwYkhNdmNYVmhkRWx1ZG1WeWRFTnZiWEJoZENjN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3SUZaU1RVaDFiV0Z1UW05dVpTQjlJR1p5YjIwZ0p5NHZWbEpOU0hWdFlXNUNiMjVsSnp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnVmxKTlNIVnRZVzVDYjI1bGN5QjlJR1p5YjIwZ0p5NHZWbEpOU0hWdFlXNUNiMjVsY3ljN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3SUZaU1RVaDFiV0Z1UW05dVpVNWhiV1VnZlNCbWNtOXRJQ2N1TDFaU1RVaDFiV0Z1UW05dVpVNWhiV1VuTzF4dWFXMXdiM0owSUhSNWNHVWdleUJXVWsxUWIzTmxJSDBnWm5KdmJTQW5MaTlXVWsxUWIzTmxKenRjYmx4dVkyOXVjM1FnWDNZelFTQTlJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLQ2s3WEc1amIyNXpkQ0JmY1hWaGRFRWdQU0J1WlhjZ1ZFaFNSVVV1VVhWaGRHVnlibWx2YmlncE8xeHVYRzR2S2lwY2JpQXFJRUVnWTJ4aGMzTWdjbVZ3Y21WelpXNTBjeUIwYUdVZ1VtbG5JRzltSUdFZ1ZsSk5MbHh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVmxKTlVtbG5JSHRjYmlBZ0x5b3FYRzRnSUNBcUlFRWdlMEJzYVc1cklGWlNUVWgxYldGdVFtOXVaWE45SUhSb1lYUWdZMjl1ZEdGcGJuTWdZV3hzSUhSb1pTQm9kVzFoYmlCaWIyNWxjeUJ2WmlCMGFHVWdWbEpOTGx4dUlDQWdLaUJaYjNVZ2JXbG5hSFFnZDJGdWRDQjBieUJuWlhRZ2RHaGxjMlVnWW05dVpYTWdkWE5wYm1jZ2UwQnNhVzVySUZaU1RVaDFiV0Z1YjJsa0xtZGxkRUp2Ym1WOUxseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHaDFiV0Z1UW05dVpYTTZJRlpTVFVoMWJXRnVRbTl1WlhNN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVFZ2UwQnNhVzVySUZaU1RWQnZjMlY5SUhSb1lYUWdhWE1nYVhSeklHUmxabUYxYkhRZ2MzUmhkR1V1WEc0Z0lDQXFJRTV2ZEdVZ2RHaGhkQ0JwZENkeklHNXZkQ0JqYjIxd1lYUnBZbXhsSUhkcGRHZ2dlMEJzYVc1cklITmxkRkJ2YzJWOUlHRnVaQ0I3UUd4cGJtc2daMlYwVUc5elpYMHNJSE5wYm1ObElHbDBJR052Ym5SaGFXNXpJRzV2YmkxeVpXeGhkR2wyWlNCMllXeDFaWE1nYjJZZ1pXRmphQ0JzYjJOaGJDQjBjbUZ1YzJadmNtMXpMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSEpsYzNSUWIzTmxPaUJXVWsxUWIzTmxPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRjbVZoZEdVZ1lTQnVaWGNnZTBCc2FXNXJJRlpTVFVoMWJXRnViMmxrZlM1Y2JpQWdJQ29nUUhCaGNtRnRJR2gxYldGdVFtOXVaWE1nUVNCN1FHeHBibXNnVmxKTlNIVnRZVzVDYjI1bGMzMGdZMjl1ZEdGcGJuTWdZV3hzSUhSb1pTQmliMjVsY3lCdlppQjBhR1VnYm1WM0lHaDFiV0Z1YjJsa1hHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9hSFZ0WVc1Q2IyNWxjem9nVmxKTlNIVnRZVzVDYjI1bGN5a2dlMXh1SUNBZ0lIUm9hWE11YUhWdFlXNUNiMjVsY3lBOUlHaDFiV0Z1UW05dVpYTTdYRzVjYmlBZ0lDQjBhR2x6TG5KbGMzUlFiM05sSUQwZ2RHaHBjeTVuWlhSQlluTnZiSFYwWlZCdmMyVW9LVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTRnZEdobElHTjFjbkpsYm5RZ1lXSnpiMngxZEdVZ2NHOXpaU0J2WmlCMGFHbHpJR2gxYldGdWIybGtJR0Z6SUdFZ2UwQnNhVzVySUZaU1RWQnZjMlY5TGx4dUlDQWdLaUJPYjNSbElIUm9ZWFFnZEdobElHOTFkSEIxZENCeVpYTjFiSFFnZDJsc2JDQmpiMjUwWVdsdUlHbHVhWFJwWVd3Z2MzUmhkR1VnYjJZZ2RHaGxJRlpTVFNCaGJtUWdibTkwSUdOdmJYQmhkR2xpYkdVZ1ltVjBkMlZsYmlCa2FXWm1aWEpsYm5RZ2JXOWtaV3h6TGx4dUlDQWdLaUJaYjNVZ2JXbG5hSFFnZDJGdWRDQjBieUIxYzJVZ2UwQnNhVzVySUdkbGRGQnZjMlY5SUdsdWMzUmxZV1F1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWjJWMFFXSnpiMngxZEdWUWIzTmxLQ2s2SUZaU1RWQnZjMlVnZTF4dUlDQWdJR052Ym5OMElIQnZjMlVnUFNCN2ZTQmhjeUJXVWsxUWIzTmxPMXh1WEc0Z0lDQWdUMkpxWldOMExtdGxlWE1vZEdocGN5NW9kVzFoYmtKdmJtVnpLUzVtYjNKRllXTm9LQ2gyY20xQ2IyNWxUbUZ0WlZOMGNtbHVaeWtnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnZG5KdFFtOXVaVTVoYldVZ1BTQjJjbTFDYjI1bFRtRnRaVk4wY21sdVp5QmhjeUJXVWsxSWRXMWhia0p2Ym1WT1lXMWxPMXh1SUNBZ0lDQWdZMjl1YzNRZ2JtOWtaU0E5SUhSb2FYTXVaMlYwUW05dVpVNXZaR1VvZG5KdFFtOXVaVTVoYldVcE8xeHVYRzRnSUNBZ0lDQXZMeUJKWjI1dmNtVWdkMmhsYmlCMGFHVnlaU0JoY21VZ2JtOGdZbTl1WlNCdmJpQjBhR1VnVmxKTlNIVnRZVzV2YVdSY2JpQWdJQ0FnSUdsbUlDZ2hibTlrWlNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDOHZJRWRsZENCMGFHVWdjRzl6YVhScGIyNGdMeUJ5YjNSaGRHbHZiaUJtY205dElIUm9aU0J1YjJSbFhHNGdJQ0FnSUNCZmRqTkJMbU52Y0hrb2JtOWtaUzV3YjNOcGRHbHZiaWs3WEc0Z0lDQWdJQ0JmY1hWaGRFRXVZMjl3ZVNodWIyUmxMbkYxWVhSbGNtNXBiMjRwTzF4dVhHNGdJQ0FnSUNBdkx5QkRiMjUyWlhKMElIUnZJSEpoZHlCaGNuSmhlWE5jYmlBZ0lDQWdJSEJ2YzJWYmRuSnRRbTl1WlU1aGJXVmRJRDBnZTF4dUlDQWdJQ0FnSUNCd2IzTnBkR2x2YmpvZ1gzWXpRUzUwYjBGeWNtRjVLQ2tnWVhNZ1cyNTFiV0psY2l3Z2JuVnRZbVZ5TENCdWRXMWlaWEpkTEZ4dUlDQWdJQ0FnSUNCeWIzUmhkR2x2YmpvZ1gzRjFZWFJCTG5SdlFYSnlZWGtvS1NCaGN5QmJiblZ0WW1WeUxDQnVkVzFpWlhJc0lHNTFiV0psY2l3Z2JuVnRZbVZ5WFN4Y2JpQWdJQ0FnSUgwN1hHNGdJQ0FnZlNrN1hHNWNiaUFnSUNCeVpYUjFjbTRnY0c5elpUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNGdkR2hsSUdOMWNuSmxiblFnY0c5elpTQnZaaUIwYUdseklHaDFiV0Z1YjJsa0lHRnpJR0VnZTBCc2FXNXJJRlpTVFZCdmMyVjlMbHh1SUNBZ0tseHVJQ0FnS2lCRllXTm9JSFJ5WVc1elptOXliU0JwY3lCaElHeHZZMkZzSUhSeVlXNXpabTl5YlNCeVpXeGhkR2wyWlNCbWNtOXRJSEpsYzNRZ2NHOXpaU0FvVkMxd2IzTmxLUzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJuWlhSUWIzTmxLQ2s2SUZaU1RWQnZjMlVnZTF4dUlDQWdJR052Ym5OMElIQnZjMlVnUFNCN2ZTQmhjeUJXVWsxUWIzTmxPMXh1WEc0Z0lDQWdUMkpxWldOMExtdGxlWE1vZEdocGN5NW9kVzFoYmtKdmJtVnpLUzVtYjNKRllXTm9LQ2hpYjI1bFRtRnRaVk4wY21sdVp5a2dQVDRnZTF4dUlDQWdJQ0FnWTI5dWMzUWdZbTl1WlU1aGJXVWdQU0JpYjI1bFRtRnRaVk4wY21sdVp5QmhjeUJXVWsxSWRXMWhia0p2Ym1WT1lXMWxPMXh1SUNBZ0lDQWdZMjl1YzNRZ2JtOWtaU0E5SUhSb2FYTXVaMlYwUW05dVpVNXZaR1VvWW05dVpVNWhiV1VwTzF4dVhHNGdJQ0FnSUNBdkx5QkpaMjV2Y21VZ2QyaGxiaUIwYUdWeVpTQmhjbVVnYm04Z1ltOXVaU0J2YmlCMGFHVWdWbEpOU0hWdFlXNXZhV1JjYmlBZ0lDQWdJR2xtSUNnaGJtOWtaU2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUM4dklGUmhhMlVnWVNCa2FXWm1JR1p5YjIwZ2NtVnpkRkJ2YzJWY2JpQWdJQ0FnSUY5Mk0wRXVjMlYwS0RBc0lEQXNJREFwTzF4dUlDQWdJQ0FnWDNGMVlYUkJMbWxrWlc1MGFYUjVLQ2s3WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJSEpsYzNSVGRHRjBaU0E5SUhSb2FYTXVjbVZ6ZEZCdmMyVmJZbTl1WlU1aGJXVmRPMXh1SUNBZ0lDQWdhV1lnS0hKbGMzUlRkR0YwWlQ4dWNHOXphWFJwYjI0cElIdGNiaUFnSUNBZ0lDQWdYM1l6UVM1bWNtOXRRWEp5WVhrb2NtVnpkRk4wWVhSbExuQnZjMmwwYVc5dUtTNXVaV2RoZEdVb0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHbG1JQ2h5WlhOMFUzUmhkR1UvTG5KdmRHRjBhVzl1S1NCN1hHNGdJQ0FnSUNBZ0lIRjFZWFJKYm5abGNuUkRiMjF3WVhRb1gzRjFZWFJCTG1aeWIyMUJjbkpoZVNoeVpYTjBVM1JoZEdVdWNtOTBZWFJwYjI0cEtUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdMeThnUjJWMElIUm9aU0J3YjNOcGRHbHZiaUF2SUhKdmRHRjBhVzl1SUdaeWIyMGdkR2hsSUc1dlpHVmNiaUFnSUNBZ0lGOTJNMEV1WVdSa0tHNXZaR1V1Y0c5emFYUnBiMjRwTzF4dUlDQWdJQ0FnWDNGMVlYUkJMbkJ5WlcxMWJIUnBjR3g1S0c1dlpHVXVjWFZoZEdWeWJtbHZiaWs3WEc1Y2JpQWdJQ0FnSUM4dklFTnZiblpsY25RZ2RHOGdjbUYzSUdGeWNtRjVjMXh1SUNBZ0lDQWdjRzl6WlZ0aWIyNWxUbUZ0WlYwZ1BTQjdYRzRnSUNBZ0lDQWdJSEJ2YzJsMGFXOXVPaUJmZGpOQkxuUnZRWEp5WVhrb0tTQmhjeUJiYm5WdFltVnlMQ0J1ZFcxaVpYSXNJRzUxYldKbGNsMHNYRzRnSUNBZ0lDQWdJSEp2ZEdGMGFXOXVPaUJmY1hWaGRFRXVkRzlCY25KaGVTZ3BJR0Z6SUZ0dWRXMWlaWElzSUc1MWJXSmxjaXdnYm5WdFltVnlMQ0J1ZFcxaVpYSmRMRnh1SUNBZ0lDQWdmVHRjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJSEpsZEhWeWJpQndiM05sTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFeGxkQ0IwYUdVZ2FIVnRZVzV2YVdRZ1pHOGdZU0J6Y0dWamFXWnBaV1FnY0c5elpTNWNiaUFnSUNwY2JpQWdJQ29nUldGamFDQjBjbUZ1YzJadmNtMGdhR0YyWlNCMGJ5QmlaU0JoSUd4dlkyRnNJSFJ5WVc1elptOXliU0J5Wld4aGRHbDJaU0JtY205dElISmxjM1FnY0c5elpTQW9WQzF3YjNObEtTNWNiaUFnSUNvZ1dXOTFJR05oYmlCd1lYTnpJSGRvWVhRZ2VXOTFJR2R2ZENCbWNtOXRJSHRBYkdsdWF5Qm5aWFJRYjNObGZTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSEJ2YzJWUFltcGxZM1FnUVNCYlcxWlNUVkJ2YzJWZFhTQjBhR0YwSUhKbGNISmxjMlZ1ZEhNZ1lTQnphVzVuYkdVZ2NHOXpaVnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE5sZEZCdmMyVW9jRzl6WlU5aWFtVmpkRG9nVmxKTlVHOXpaU2s2SUhadmFXUWdlMXh1SUNBZ0lFOWlhbVZqZEM1bGJuUnlhV1Z6S0hCdmMyVlBZbXBsWTNRcExtWnZja1ZoWTJnb0tGdGliMjVsVG1GdFpWTjBjbWx1Wnl3Z2MzUmhkR1ZkS1NBOVBpQjdYRzRnSUNBZ0lDQmpiMjV6ZENCaWIyNWxUbUZ0WlNBOUlHSnZibVZPWVcxbFUzUnlhVzVuSUdGeklGWlNUVWgxYldGdVFtOXVaVTVoYldVN1hHNGdJQ0FnSUNCamIyNXpkQ0J1YjJSbElEMGdkR2hwY3k1blpYUkNiMjVsVG05a1pTaGliMjVsVG1GdFpTazdYRzVjYmlBZ0lDQWdJQzh2SUVsbmJtOXlaU0IzYUdWdUlIUm9aWEpsSUdGeVpTQnVieUJpYjI1bElIUm9ZWFFnYVhNZ1pHVm1hVzVsWkNCcGJpQjBhR1VnY0c5elpTQnZiaUIwYUdVZ1ZsSk5TSFZ0WVc1dmFXUmNiaUFnSUNBZ0lHbG1JQ2doYm05a1pTa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR052Ym5OMElISmxjM1JUZEdGMFpTQTlJSFJvYVhNdWNtVnpkRkJ2YzJWYlltOXVaVTVoYldWZE8xeHVJQ0FnSUNBZ2FXWWdLQ0Z5WlhOMFUzUmhkR1VwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdTWFFuY3lCMlpYSjVJSFZ1YkdsclpXeDVMaUJRYjNOemFXSnNlU0JoSUdKMVoxeHVJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDOHZJRUZ3Y0d4NUlIUm9aU0J6ZEdGMFpTQjBieUIwYUdVZ1lXTjBkV0ZzSUdKdmJtVmNiaUFnSUNBZ0lHbG1JQ2h6ZEdGMFpUOHVjRzl6YVhScGIyNHBJSHRjYmlBZ0lDQWdJQ0FnYm05a1pTNXdiM05wZEdsdmJpNW1jbTl0UVhKeVlYa29jM1JoZEdVdWNHOXphWFJwYjI0cE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNoeVpYTjBVM1JoZEdVdWNHOXphWFJwYjI0cElIdGNiaUFnSUNBZ0lDQWdJQ0J1YjJSbExuQnZjMmwwYVc5dUxtRmtaQ2hmZGpOQkxtWnliMjFCY25KaGVTaHlaWE4wVTNSaGRHVXVjRzl6YVhScGIyNHBLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9jM1JoZEdVL0xuSnZkR0YwYVc5dUtTQjdYRzRnSUNBZ0lDQWdJRzV2WkdVdWNYVmhkR1Z5Ym1sdmJpNW1jbTl0UVhKeVlYa29jM1JoZEdVdWNtOTBZWFJwYjI0cE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNoeVpYTjBVM1JoZEdVdWNtOTBZWFJwYjI0cElIdGNiaUFnSUNBZ0lDQWdJQ0J1YjJSbExuRjFZWFJsY201cGIyNHViWFZzZEdsd2JIa29YM0YxWVhSQkxtWnliMjFCY25KaGVTaHlaWE4wVTNSaGRHVXVjbTkwWVhScGIyNHBLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxjMlYwSUhSb1pTQm9kVzFoYm05cFpDQjBieUJwZEhNZ2NtVnpkQ0J3YjNObExseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklISmxjMlYwVUc5elpTZ3BPaUIyYjJsa0lIdGNiaUFnSUNCUFltcGxZM1F1Wlc1MGNtbGxjeWgwYUdsekxuSmxjM1JRYjNObEtTNW1iM0pGWVdOb0tDaGJZbTl1WlU1aGJXVXNJSEpsYzNSZEtTQTlQaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQnViMlJsSUQwZ2RHaHBjeTVuWlhSQ2IyNWxUbTlrWlNoaWIyNWxUbUZ0WlNCaGN5QldVazFJZFcxaGJrSnZibVZPWVcxbEtUdGNibHh1SUNBZ0lDQWdhV1lnS0NGdWIyUmxLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnYVdZZ0tISmxjM1EvTG5CdmMybDBhVzl1S1NCN1hHNGdJQ0FnSUNBZ0lHNXZaR1V1Y0c5emFYUnBiMjR1Wm5KdmJVRnljbUY1S0hKbGMzUXVjRzl6YVhScGIyNHBPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb2NtVnpkRDh1Y205MFlYUnBiMjRwSUh0Y2JpQWdJQ0FnSUNBZ2JtOWtaUzV4ZFdGMFpYSnVhVzl1TG1aeWIyMUJjbkpoZVNoeVpYTjBMbkp2ZEdGMGFXOXVLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTRnWVNCaWIyNWxJR0p2ZFc1a0lIUnZJR0VnYzNCbFkybG1hV1ZrSUh0QWJHbHVheUJXVWsxSWRXMWhia0p2Ym1WT1lXMWxmU3dnWVhNZ1lTQjdRR3hwYm1zZ1ZsSk5TSFZ0WVc1Q2IyNWxmUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUc1aGJXVWdUbUZ0WlNCdlppQjBhR1VnWW05dVpTQjViM1VnZDJGdWRGeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkRUp2Ym1Vb2JtRnRaVG9nVmxKTlNIVnRZVzVDYjI1bFRtRnRaU2s2SUZaU1RVaDFiV0Z1UW05dVpTQjhJSFZ1WkdWbWFXNWxaQ0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YUhWdFlXNUNiMjVsYzF0dVlXMWxYU0EvUHlCMWJtUmxabWx1WldRN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdUlHRWdZbTl1WlNCaWIzVnVaQ0IwYnlCaElITndaV05wWm1sbFpDQjdRR3hwYm1zZ1ZsSk5TSFZ0WVc1Q2IyNWxUbUZ0Wlgwc0lHRnpJR0VnWUZSSVVrVkZMazlpYW1WamRETkVZQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUc1aGJXVWdUbUZ0WlNCdlppQjBhR1VnWW05dVpTQjViM1VnZDJGdWRGeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkRUp2Ym1WT2IyUmxLRzVoYldVNklGWlNUVWgxYldGdVFtOXVaVTVoYldVcE9pQlVTRkpGUlM1UFltcGxZM1F6UkNCOElHNTFiR3dnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1oMWJXRnVRbTl1WlhOYmJtRnRaVjAvTG01dlpHVWdQejhnYm5Wc2JEdGNiaUFnZlZ4dWZWeHVJaXdpYVcxd2IzSjBJQ29nWVhNZ1ZFaFNSVVVnWm5KdmJTQW5kR2h5WldVbk8xeHVhVzF3YjNKMElIc2dWbEpOU0hWdFlXNUNiMjVsVG1GdFpTd2dWbEpOU0hWdFlXNUNiMjVsY3lCOUlHWnliMjBnSnk0bk8xeHVhVzF3YjNKMElIc2dWbEpOU0hWdFlXNUNiMjVsVEdsemRDQjlJR1p5YjIwZ0p5NHZWbEpOU0hWdFlXNUNiMjVsVEdsemRDYzdYRzVwYlhCdmNuUWdleUJXVWsxSWRXMWhia0p2Ym1WUVlYSmxiblJOWVhBZ2ZTQm1jbTl0SUNjdUwxWlNUVWgxYldGdVFtOXVaVkJoY21WdWRFMWhjQ2M3WEc1cGJYQnZjblFnZXlCV1VrMVNhV2NnZlNCbWNtOXRJQ2N1TDFaU1RWSnBaeWM3WEc1Y2JtTnZibk4wSUY5Mk0wRWdQU0J1WlhjZ1ZFaFNSVVV1Vm1WamRHOXlNeWdwTzF4dVkyOXVjM1FnWDNGMVlYUkJJRDBnYm1WM0lGUklVa1ZGTGxGMVlYUmxjbTVwYjI0b0tUdGNibU52Ym5OMElGOWliMjVsVjI5eWJHUlFiM01nUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncE8xeHVYRzR2S2lwY2JpQXFJRUVnWTJ4aGMzTWdjbVZ3Y21WelpXNTBjeUIwYUdVZ2JtOXliV0ZzYVhwbFpDQlNhV2NnYjJZZ1lTQldVazB1WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCV1VrMUlkVzFoYm05cFpGSnBaeUJsZUhSbGJtUnpJRlpTVFZKcFp5QjdYRzRnSUhCeWIzUmxZM1JsWkNCemRHRjBhV01nWDNObGRIVndWSEpoYm5ObWIzSnRjeWh0YjJSbGJGSnBaem9nVmxKTlVtbG5LVG9nZTF4dUlDQWdJSEpwWjBKdmJtVnpPaUJXVWsxSWRXMWhia0p2Ym1Wek8xeHVJQ0FnSUhKdmIzUTZJRlJJVWtWRkxrOWlhbVZqZERORU8xeHVJQ0FnSUhCaGNtVnVkRmR2Y214a1VtOTBZWFJwYjI1ek9pQjdJRnRpYjI1bFRtRnRaU0JwYmlCV1VrMUlkVzFoYmtKdmJtVk9ZVzFsWFQ4NklGUklVa1ZGTGxGMVlYUmxjbTVwYjI0Z2ZUdGNiaUFnSUNCaWIyNWxVbTkwWVhScGIyNXpPaUI3SUZ0aWIyNWxUbUZ0WlNCcGJpQldVazFJZFcxaGJrSnZibVZPWVcxbFhUODZJRlJJVWtWRkxsRjFZWFJsY201cGIyNGdmVHRjYmlBZ2ZTQjdYRzRnSUNBZ1kyOXVjM1FnY205dmRDQTlJRzVsZHlCVVNGSkZSUzVQWW1wbFkzUXpSQ2dwTzF4dUlDQWdJSEp2YjNRdWJtRnRaU0E5SUNkV1VrMUlkVzFoYm05cFpGSnBaeWM3WEc1Y2JpQWdJQ0F2THlCemRHOXlaU0JpYjI1bFYyOXliR1JRYjNOcGRHbHZibk1nWVc1a0lHSnZibVZYYjNKc1pGSnZkR0YwYVc5dWMxeHVJQ0FnSUdOdmJuTjBJR0p2Ym1WWGIzSnNaRkJ2YzJsMGFXOXVjem9nZXlCYlltOXVaVTVoYldVZ2FXNGdWbEpOU0hWdFlXNUNiMjVsVG1GdFpWMC9PaUJVU0ZKRlJTNVdaV04wYjNJeklIMGdQU0I3ZlR0Y2JpQWdJQ0JqYjI1emRDQmliMjVsVjI5eWJHUlNiM1JoZEdsdmJuTTZJSHNnVzJKdmJtVk9ZVzFsSUdsdUlGWlNUVWgxYldGdVFtOXVaVTVoYldWZFB6b2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJpQjlJRDBnZTMwN1hHNGdJQ0FnWTI5dWMzUWdZbTl1WlZKdmRHRjBhVzl1Y3pvZ2V5QmJZbTl1WlU1aGJXVWdhVzRnVmxKTlNIVnRZVzVDYjI1bFRtRnRaVjAvT2lCVVNGSkZSUzVSZFdGMFpYSnVhVzl1SUgwZ1BTQjdmVHRjYmx4dUlDQWdJRlpTVFVoMWJXRnVRbTl1WlV4cGMzUXVabTl5UldGamFDZ29ZbTl1WlU1aGJXVXBJRDArSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR0p2Ym1WT2IyUmxJRDBnYlc5a1pXeFNhV2N1WjJWMFFtOXVaVTV2WkdVb1ltOXVaVTVoYldVcE8xeHVYRzRnSUNBZ0lDQnBaaUFvWW05dVpVNXZaR1VwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWW05dVpWZHZjbXhrVUc5emFYUnBiMjRnUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCaWIyNWxWMjl5YkdSU2IzUmhkR2x2YmlBOUlHNWxkeUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVLQ2s3WEc1Y2JpQWdJQ0FnSUNBZ1ltOXVaVTV2WkdVdWRYQmtZWFJsVjI5eWJHUk5ZWFJ5YVhnb2RISjFaU3dnWm1Gc2MyVXBPMXh1SUNBZ0lDQWdJQ0JpYjI1bFRtOWtaUzV0WVhSeWFYaFhiM0pzWkM1a1pXTnZiWEJ2YzJVb1ltOXVaVmR2Y214a1VHOXphWFJwYjI0c0lHSnZibVZYYjNKc1pGSnZkR0YwYVc5dUxDQmZkak5CS1R0Y2JseHVJQ0FnSUNBZ0lDQmliMjVsVjI5eWJHUlFiM05wZEdsdmJuTmJZbTl1WlU1aGJXVmRJRDBnWW05dVpWZHZjbXhrVUc5emFYUnBiMjQ3WEc0Z0lDQWdJQ0FnSUdKdmJtVlhiM0pzWkZKdmRHRjBhVzl1YzF0aWIyNWxUbUZ0WlYwZ1BTQmliMjVsVjI5eWJHUlNiM1JoZEdsdmJqdGNiaUFnSUNBZ0lDQWdZbTl1WlZKdmRHRjBhVzl1YzF0aWIyNWxUbUZ0WlYwZ1BTQmliMjVsVG05a1pTNXhkV0YwWlhKdWFXOXVMbU5zYjI1bEtDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQXZMeUJpZFdsc1pDQnlhV2NnYUdsbGNtRnlZMmg1SUNzZ2MzUnZjbVVnY0dGeVpXNTBWMjl5YkdSU2IzUmhkR2x2Ym5OY2JpQWdJQ0JqYjI1emRDQndZWEpsYm5SWGIzSnNaRkp2ZEdGMGFXOXVjem9nZXlCYlltOXVaVTVoYldVZ2FXNGdWbEpOU0hWdFlXNUNiMjVsVG1GdFpWMC9PaUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVJSDBnUFNCN2ZUdGNibHh1SUNBZ0lHTnZibk4wSUhKcFowSnZibVZ6T2lCUVlYSjBhV0ZzUEZaU1RVaDFiV0Z1UW05dVpYTStJRDBnZTMwN1hHNGdJQ0FnVmxKTlNIVnRZVzVDYjI1bFRHbHpkQzVtYjNKRllXTm9LQ2hpYjI1bFRtRnRaU2tnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWW05dVpVNXZaR1VnUFNCdGIyUmxiRkpwWnk1blpYUkNiMjVsVG05a1pTaGliMjVsVG1GdFpTazdYRzVjYmlBZ0lDQWdJR2xtSUNoaWIyNWxUbTlrWlNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCaWIyNWxWMjl5YkdSUWIzTnBkR2x2YmlBOUlHSnZibVZYYjNKc1pGQnZjMmwwYVc5dWMxdGliMjVsVG1GdFpWMGdZWE1nVkVoU1JVVXVWbVZqZEc5eU16dGNibHh1SUNBZ0lDQWdJQ0F2THlCelpXVWdkR2hsSUc1bFlYSmxjM1FnY0dGeVpXNTBJSEJ2YzJsMGFXOXVYRzRnSUNBZ0lDQWdJR3hsZENCamRYSnlaVzUwUW05dVpVNWhiV1U2SUZaU1RVaDFiV0Z1UW05dVpVNWhiV1VnZkNCdWRXeHNJRDBnWW05dVpVNWhiV1U3WEc0Z0lDQWdJQ0FnSUd4bGRDQndZWEpsYm5SWGIzSnNaRkJ2YzJsMGFXOXVPaUJVU0ZKRlJTNVdaV04wYjNJeklId2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2NHRnlaVzUwVjI5eWJHUlNiM1JoZEdsdmJqb2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJpQjhJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJQ0FnZDJocGJHVWdLSEJoY21WdWRGZHZjbXhrVUc5emFYUnBiMjRnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHTjFjbkpsYm5SQ2IyNWxUbUZ0WlNBOUlGWlNUVWgxYldGdVFtOXVaVkJoY21WdWRFMWhjRnRqZFhKeVpXNTBRbTl1WlU1aGJXVmRPMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGpkWEp5Wlc1MFFtOXVaVTVoYldVZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lIQmhjbVZ1ZEZkdmNteGtVRzl6YVhScGIyNGdQU0JpYjI1bFYyOXliR1JRYjNOcGRHbHZibk5iWTNWeWNtVnVkRUp2Ym1WT1lXMWxYVHRjYmlBZ0lDQWdJQ0FnSUNCd1lYSmxiblJYYjNKc1pGSnZkR0YwYVc5dUlEMGdZbTl1WlZkdmNteGtVbTkwWVhScGIyNXpXMk4xY25KbGJuUkNiMjVsVG1GdFpWMDdYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBdkx5QmhaR1FnZEc4Z2FHbGxjbUZ5WTJoNVhHNGdJQ0FnSUNBZ0lHTnZibk4wSUhKcFowSnZibVZPYjJSbElEMGdibVYzSUZSSVVrVkZMazlpYW1WamRETkVLQ2s3WEc0Z0lDQWdJQ0FnSUhKcFowSnZibVZPYjJSbExtNWhiV1VnUFNBblRtOXliV0ZzYVhwbFpGOG5JQ3NnWW05dVpVNXZaR1V1Ym1GdFpUdGNibHh1SUNBZ0lDQWdJQ0JqYjI1emRDQndZWEpsYm5SU2FXZENiMjVsVG05a1pTQTlJQ2hqZFhKeVpXNTBRbTl1WlU1aGJXVWdQeUJ5YVdkQ2IyNWxjMXRqZFhKeVpXNTBRbTl1WlU1aGJXVmRQeTV1YjJSbElEb2djbTl2ZENrZ1lYTWdWRWhTUlVVdVQySnFaV04wTTBRN1hHNWNiaUFnSUNBZ0lDQWdjR0Z5Wlc1MFVtbG5RbTl1WlU1dlpHVXVZV1JrS0hKcFowSnZibVZPYjJSbEtUdGNiaUFnSUNBZ0lDQWdjbWxuUW05dVpVNXZaR1V1Y0c5emFYUnBiMjR1WTI5d2VTaGliMjVsVjI5eWJHUlFiM05wZEdsdmJpazdYRzRnSUNBZ0lDQWdJR2xtSUNod1lYSmxiblJYYjNKc1pGQnZjMmwwYVc5dUtTQjdYRzRnSUNBZ0lDQWdJQ0FnY21sblFtOXVaVTV2WkdVdWNHOXphWFJwYjI0dWMzVmlLSEJoY21WdWRGZHZjbXhrVUc5emFYUnBiMjRwTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdjbWxuUW05dVpYTmJZbTl1WlU1aGJXVmRJRDBnZXlCdWIyUmxPaUJ5YVdkQ2IyNWxUbTlrWlNCOU8xeHVYRzRnSUNBZ0lDQWdJQzh2SUhOMGIzSmxJSEJoY21WdWRGZHZjbXhrVW05MFlYUnBiMjVjYmlBZ0lDQWdJQ0FnY0dGeVpXNTBWMjl5YkdSU2IzUmhkR2x2Ym5OYlltOXVaVTVoYldWZElEMGdjR0Z5Wlc1MFYyOXliR1JTYjNSaGRHbHZiaUEvUHlCdVpYY2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJpZ3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdjbVYwZFhKdUlIdGNiaUFnSUNBZ0lISnBaMEp2Ym1Wek9pQnlhV2RDYjI1bGN5QmhjeUJXVWsxSWRXMWhia0p2Ym1WekxGeHVJQ0FnSUNBZ2NtOXZkQ3hjYmlBZ0lDQWdJSEJoY21WdWRGZHZjbXhrVW05MFlYUnBiMjV6TEZ4dUlDQWdJQ0FnWW05dVpWSnZkR0YwYVc5dWN5eGNiaUFnSUNCOU8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklISmxZV1J2Ym14NUlHOXlhV2RwYm1Gc09pQldVazFTYVdjN1hHNGdJSEIxWW14cFl5QnlaV0ZrYjI1c2VTQnliMjkwT2lCVVNGSkZSUzVQWW1wbFkzUXpSRHRjYmlBZ2NISnZkR1ZqZEdWa0lISmxZV1J2Ym14NUlGOXdZWEpsYm5SWGIzSnNaRkp2ZEdGMGFXOXVjem9nZXlCYlltOXVaVTVoYldVZ2FXNGdWbEpOU0hWdFlXNUNiMjVsVG1GdFpWMC9PaUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVJSDA3WEc0Z0lIQnliM1JsWTNSbFpDQnlaV0ZrYjI1c2VTQmZZbTl1WlZKdmRHRjBhVzl1Y3pvZ2V5QmJZbTl1WlU1aGJXVWdhVzRnVmxKTlNIVnRZVzVDYjI1bFRtRnRaVjAvT2lCVVNGSkZSUzVSZFdGMFpYSnVhVzl1SUgwN1hHNWNiaUFnY0hWaWJHbGpJR052Ym5OMGNuVmpkRzl5S0doMWJXRnViMmxrT2lCV1VrMVNhV2NwSUh0Y2JpQWdJQ0JqYjI1emRDQjdJSEpwWjBKdmJtVnpMQ0J5YjI5MExDQndZWEpsYm5SWGIzSnNaRkp2ZEdGMGFXOXVjeXdnWW05dVpWSnZkR0YwYVc5dWN5QjlJRDBnVmxKTlNIVnRZVzV2YVdSU2FXY3VYM05sZEhWd1ZISmhibk5tYjNKdGN5aG9kVzFoYm05cFpDazdYRzVjYmlBZ0lDQnpkWEJsY2loeWFXZENiMjVsY3lrN1hHNWNiaUFnSUNCMGFHbHpMbTl5YVdkcGJtRnNJRDBnYUhWdFlXNXZhV1E3WEc0Z0lDQWdkR2hwY3k1eWIyOTBJRDBnY205dmREdGNiaUFnSUNCMGFHbHpMbDl3WVhKbGJuUlhiM0pzWkZKdmRHRjBhVzl1Y3lBOUlIQmhjbVZ1ZEZkdmNteGtVbTkwWVhScGIyNXpPMXh1SUNBZ0lIUm9hWE11WDJKdmJtVlNiM1JoZEdsdmJuTWdQU0JpYjI1bFVtOTBZWFJwYjI1ek8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlZ3WkdGMFpTQjBhR2x6SUdoMWJXRnViMmxrSUhKcFp5NWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QjFjR1JoZEdVb0tUb2dkbTlwWkNCN1hHNGdJQ0FnVmxKTlNIVnRZVzVDYjI1bFRHbHpkQzVtYjNKRllXTm9LQ2hpYjI1bFRtRnRaU2tnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWW05dVpVNXZaR1VnUFNCMGFHbHpMbTl5YVdkcGJtRnNMbWRsZEVKdmJtVk9iMlJsS0dKdmJtVk9ZVzFsS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLR0p2Ym1WT2IyUmxJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjbWxuUW05dVpVNXZaR1VnUFNCMGFHbHpMbWRsZEVKdmJtVk9iMlJsS0dKdmJtVk9ZVzFsS1NFN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhCaGNtVnVkRmR2Y214a1VtOTBZWFJwYjI0Z1BTQjBhR2x6TGw5d1lYSmxiblJYYjNKc1pGSnZkR0YwYVc5dWMxdGliMjVsVG1GdFpWMGhPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnBiblpRWVhKbGJuUlhiM0pzWkZKdmRHRjBhVzl1SUQwZ1gzRjFZWFJCTG1OdmNIa29jR0Z5Wlc1MFYyOXliR1JTYjNSaGRHbHZiaWt1YVc1MlpYSjBLQ2s3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR0p2Ym1WU2IzUmhkR2x2YmlBOUlIUm9hWE11WDJKdmJtVlNiM1JoZEdsdmJuTmJZbTl1WlU1aGJXVmRJVHRjYmx4dUlDQWdJQ0FnSUNCaWIyNWxUbTlrWlM1eGRXRjBaWEp1YVc5dVhHNGdJQ0FnSUNBZ0lDQWdMbU52Y0hrb2NtbG5RbTl1WlU1dlpHVXVjWFZoZEdWeWJtbHZiaWxjYmlBZ0lDQWdJQ0FnSUNBdWJYVnNkR2x3Ykhrb2NHRnlaVzUwVjI5eWJHUlNiM1JoZEdsdmJpbGNiaUFnSUNBZ0lDQWdJQ0F1Y0hKbGJYVnNkR2x3Ykhrb2FXNTJVR0Z5Wlc1MFYyOXliR1JTYjNSaGRHbHZiaWxjYmlBZ0lDQWdJQ0FnSUNBdWJYVnNkR2x3Ykhrb1ltOXVaVkp2ZEdGMGFXOXVLVHRjYmx4dUlDQWdJQ0FnSUNBdkx5Qk5iM1psSUhSb1pTQnRZWE56SUdObGJuUmxjaUJ2WmlCMGFHVWdWbEpOWEc0Z0lDQWdJQ0FnSUdsbUlDaGliMjVsVG1GdFpTQTlQVDBnSjJocGNITW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWW05dVpWZHZjbXhrVUc5emFYUnBiMjRnUFNCeWFXZENiMjVsVG05a1pTNW5aWFJYYjNKc1pGQnZjMmwwYVc5dUtGOWliMjVsVjI5eWJHUlFiM01wTzF4dUlDQWdJQ0FnSUNBZ0lHSnZibVZPYjJSbExuQmhjbVZ1ZENFdWRYQmtZWFJsVjI5eWJHUk5ZWFJ5YVhnb2RISjFaU3dnWm1Gc2MyVXBPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSEJoY21WdWRGZHZjbXhrVFdGMGNtbDRJRDBnWW05dVpVNXZaR1V1Y0dGeVpXNTBJUzV0WVhSeWFYaFhiM0pzWkR0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCc2IyTmhiRkJ2YzJsMGFXOXVJRDBnWW05dVpWZHZjbXhrVUc5emFYUnBiMjR1WVhCd2JIbE5ZWFJ5YVhnMEtIQmhjbVZ1ZEZkdmNteGtUV0YwY21sNExtbHVkbVZ5ZENncEtUdGNiaUFnSUNBZ0lDQWdJQ0JpYjI1bFRtOWtaUzV3YjNOcGRHbHZiaTVqYjNCNUtHeHZZMkZzVUc5emFYUnBiMjRwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNrN1hHNGdJSDFjYm4xY2JpSXNJbWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnVmxKTlNIVnRZVzVDYjI1bElIMGdabkp2YlNBbkxpOVdVazFJZFcxaGJrSnZibVVuTzF4dWFXMXdiM0owSUhSNWNHVWdleUJXVWsxSWRXMWhia0p2Ym1WeklIMGdabkp2YlNBbkxpOVdVazFJZFcxaGJrSnZibVZ6Snp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnVmxKTlNIVnRZVzVDYjI1bFRtRnRaU0I5SUdaeWIyMGdKeTR2VmxKTlNIVnRZVzVDYjI1bFRtRnRaU2M3WEc1cGJYQnZjblFnZEhsd1pTQjdJRlpTVFZCdmMyVWdmU0JtY205dElDY3VMMVpTVFZCdmMyVW5PMXh1YVcxd2IzSjBJSHNnVmxKTlVtbG5JSDBnWm5KdmJTQW5MaTlXVWsxU2FXY25PMXh1YVcxd2IzSjBJSHNnVmxKTlNIVnRZVzV2YVdSU2FXY2dmU0JtY205dElDY3VMMVpTVFVoMWJXRnViMmxrVW1sbkp6dGNibHh1THlvcVhHNGdLaUJCSUdOc1lYTnpJSEpsY0hKbGMyVnVkSE1nWVNCb2RXMWhibTlwWkNCdlppQmhJRlpTVFM1Y2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklGWlNUVWgxYldGdWIybGtJSHRjYmlBZ0x5b3FYRzRnSUNBcUlGZG9aWFJvWlhJZ2FYUWdZMjl3YVdWeklIQnZjMlVnWm5KdmJTQnViM0p0WVd4cGVtVmtTSFZ0WVc1Q2IyNWxjeUIwYnlCeVlYZElkVzFoYmtKdmJtVnpJRzl1SUh0QWJHbHVheUIxY0dSaGRHVjlMbHh1SUNBZ0tpQmdkSEoxWldBZ1lua2daR1ZtWVhWc2RDNWNiaUFnSUNwY2JpQWdJQ29nUUdSbFptRjFiSFFnZEhKMVpWeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHRjFkRzlWY0dSaGRHVklkVzFoYmtKdmJtVnpPaUJpYjI5c1pXRnVPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJJSEpoZHlCeWFXY2diMllnZEdobElGWlNUUzVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWDNKaGQwaDFiV0Z1UW05dVpYTTZJRlpTVFZKcFp6c2dMeThnVkU5RVR6b2dVbVZ1WVcxbFhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVFZ2JtOXliV0ZzYVhwbFpDQnlhV2NnYjJZZ2RHaGxJRlpTVFM1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1gyNXZjbTFoYkdsNlpXUklkVzFoYmtKdmJtVnpPaUJXVWsxSWRXMWhibTlwWkZKcFp6c2dMeThnVkU5RVR6b2dVbVZ1WVcxbFhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYQnlaV05oZEdWa0lFUmxjSEpsWTJGMFpXUXVJRlZ6WlNCbGFYUm9aWElnZTBCc2FXNXJJSEpoZDFKbGMzUlFiM05sZlNCdmNpQjdRR3hwYm1zZ2JtOXliV0ZzYVhwbFpGSmxjM1JRYjNObGZTQnBibk4wWldGa0xseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkQ0J5WlhOMFVHOXpaU2dwT2lCV1VrMVFiM05sSUh0Y2JpQWdJQ0JqYjI1emIyeGxMbmRoY200b0oxWlNUVWgxYldGdWIybGtPaUJ5WlhOMFVHOXpaU0JwY3lCa1pYQnlaV05oZEdWa0xpQlZjMlVnWldsMGFHVnlJSEpoZDFKbGMzUlFiM05sSUc5eUlHNXZjbTFoYkdsNlpXUlNaWE4wVUc5elpTQnBibk4wWldGa0xpY3BPMXh1WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11Y21GM1VtVnpkRkJ2YzJVN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRU0I3UUd4cGJtc2dWbEpOVUc5elpYMGdiMllnYVhSeklISmhkeUJvZFcxaGJpQmliMjVsY3lCMGFHRjBJR2x6SUdsMGN5QmtaV1poZFd4MElITjBZWFJsTGx4dUlDQWdLaUJPYjNSbElIUm9ZWFFnYVhRbmN5QnViM1FnWTI5dGNHRjBhV0pzWlNCM2FYUm9JSHRBYkdsdWF5QnpaWFJTWVhkUWIzTmxmU0JoYm1RZ2UwQnNhVzVySUdkbGRGSmhkMUJ2YzJWOUxDQnphVzVqWlNCcGRDQmpiMjUwWVdsdWN5QnViMjR0Y21Wc1lYUnBkbVVnZG1Gc2RXVnpJRzltSUdWaFkyZ2diRzlqWVd3Z2RISmhibk5tYjNKdGN5NWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFFnY21GM1VtVnpkRkJ2YzJVb0tUb2dWbEpOVUc5elpTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM0poZDBoMWJXRnVRbTl1WlhNdWNtVnpkRkJ2YzJVN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRU0I3UUd4cGJtc2dWbEpOVUc5elpYMGdiMllnYVhSeklHNXZjbTFoYkdsNlpXUWdhSFZ0WVc0Z1ltOXVaWE1nZEdoaGRDQnBjeUJwZEhNZ1pHVm1ZWFZzZENCemRHRjBaUzVjYmlBZ0lDb2dUbTkwWlNCMGFHRjBJR2wwSjNNZ2JtOTBJR052YlhCaGRHbGliR1VnZDJsMGFDQjdRR3hwYm1zZ2MyVjBUbTl5YldGc2FYcGxaRkJ2YzJWOUlHRnVaQ0I3UUd4cGJtc2daMlYwVG05eWJXRnNhWHBsWkZCdmMyVjlMQ0J6YVc1alpTQnBkQ0JqYjI1MFlXbHVjeUJ1YjI0dGNtVnNZWFJwZG1VZ2RtRnNkV1Z6SUc5bUlHVmhZMmdnYkc5allXd2dkSEpoYm5ObWIzSnRjeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJuWlhRZ2JtOXliV0ZzYVhwbFpGSmxjM1JRYjNObEtDazZJRlpTVFZCdmMyVWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDl1YjNKdFlXeHBlbVZrU0hWdFlXNUNiMjVsY3k1eVpYTjBVRzl6WlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJJRzFoY0NCbWNtOXRJSHRBYkdsdWF5QldVazFJZFcxaGJrSnZibVZPWVcxbGZTQjBieUJ5WVhjZ2UwQnNhVzVySUZaU1RVaDFiV0Z1UW05dVpYMXpMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZENCb2RXMWhia0p2Ym1WektDazZJRlpTVFVoMWJXRnVRbTl1WlhNZ2UxeHVJQ0FnSUM4dklHRnVJR0ZzYVdGeklHOW1JR0J5WVhkSWRXMWhia0p2Ym1WellGeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxsOXlZWGRJZFcxaGJrSnZibVZ6TG1oMWJXRnVRbTl1WlhNN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRU0J0WVhBZ1puSnZiU0I3UUd4cGJtc2dWbEpOU0hWdFlXNUNiMjVsVG1GdFpYMGdkRzhnY21GM0lIdEFiR2x1YXlCV1VrMUlkVzFoYmtKdmJtVjljeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJuWlhRZ2NtRjNTSFZ0WVc1Q2IyNWxjeWdwT2lCV1VrMUlkVzFoYmtKdmJtVnpJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmY21GM1NIVnRZVzVDYjI1bGN5NW9kVzFoYmtKdmJtVnpPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVFZ2JXRndJR1p5YjIwZ2UwQnNhVzVySUZaU1RVaDFiV0Z1UW05dVpVNWhiV1Y5SUhSdklHNXZjbTFoYkdsNlpXUWdlMEJzYVc1cklGWlNUVWgxYldGdVFtOXVaWDF6TGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdkbGRDQnViM0p0WVd4cGVtVmtTSFZ0WVc1Q2IyNWxjeWdwT2lCV1VrMUlkVzFoYmtKdmJtVnpJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmYm05eWJXRnNhWHBsWkVoMWJXRnVRbTl1WlhNdWFIVnRZVzVDYjI1bGN6dGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJVYUdVZ2NtOXZkQ0J2WmlCdWIzSnRZV3hwZW1Wa0lIdEFiR2x1YXlCV1VrMUlkVzFoYmtKdmJtVjljeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJuWlhRZ2JtOXliV0ZzYVhwbFpFaDFiV0Z1UW05dVpYTlNiMjkwS0NrNklGUklVa1ZGTGs5aWFtVmpkRE5FSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmJtOXliV0ZzYVhwbFpFaDFiV0Z1UW05dVpYTXVjbTl2ZER0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRjbVZoZEdVZ1lTQnVaWGNnZTBCc2FXNXJJRlpTVFVoMWJXRnViMmxrZlM1Y2JpQWdJQ29nUUhCaGNtRnRJR2gxYldGdVFtOXVaWE1nUVNCN1FHeHBibXNnVmxKTlNIVnRZVzVDYjI1bGMzMGdZMjl1ZEdGcGJuTWdZV3hzSUhSb1pTQmliMjVsY3lCdlppQjBhR1VnYm1WM0lHaDFiV0Z1YjJsa1hHNGdJQ0FxSUVCd1lYSmhiU0JoZFhSdlZYQmtZWFJsU0hWdFlXNUNiMjVsY3lCWGFHVjBhR1Z5SUdsMElHTnZjR2xsY3lCd2IzTmxJR1p5YjIwZ2JtOXliV0ZzYVhwbFpFaDFiV0Z1UW05dVpYTWdkRzhnY21GM1NIVnRZVzVDYjI1bGN5QnZiaUI3UUd4cGJtc2dkWEJrWVhSbGZTNGdZSFJ5ZFdWZ0lHSjVJR1JsWm1GMWJIUXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvYUhWdFlXNUNiMjVsY3pvZ1ZsSk5TSFZ0WVc1Q2IyNWxjeXdnYjNCMGFXOXVjejg2SUhzZ1lYVjBiMVZ3WkdGMFpVaDFiV0Z1UW05dVpYTS9PaUJpYjI5c1pXRnVJSDBwSUh0Y2JpQWdJQ0IwYUdsekxtRjFkRzlWY0dSaGRHVklkVzFoYmtKdmJtVnpJRDBnYjNCMGFXOXVjejh1WVhWMGIxVndaR0YwWlVoMWJXRnVRbTl1WlhNZ1B6OGdkSEoxWlR0Y2JpQWdJQ0IwYUdsekxsOXlZWGRJZFcxaGJrSnZibVZ6SUQwZ2JtVjNJRlpTVFZKcFp5aG9kVzFoYmtKdmJtVnpLVHRjYmlBZ0lDQjBhR2x6TGw5dWIzSnRZV3hwZW1Wa1NIVnRZVzVDYjI1bGN5QTlJRzVsZHlCV1VrMUlkVzFoYm05cFpGSnBaeWgwYUdsekxsOXlZWGRJZFcxaGJrSnZibVZ6S1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRiM0I1SUhSb1pTQm5hWFpsYmlCN1FHeHBibXNnVmxKTlNIVnRZVzV2YVdSOUlHbHVkRzhnZEdocGN5QnZibVV1WEc0Z0lDQXFJRUJ3WVhKaGJTQnpiM1Z5WTJVZ1ZHaGxJSHRBYkdsdWF5QldVazFJZFcxaGJtOXBaSDBnZVc5MUlIZGhiblFnZEc4Z1kyOXdlVnh1SUNBZ0tpQkFjbVYwZFhKdWN5QjBhR2x6WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWTI5d2VTaHpiM1Z5WTJVNklGWlNUVWgxYldGdWIybGtLVG9nZEdocGN5QjdYRzRnSUNBZ2RHaHBjeTVoZFhSdlZYQmtZWFJsU0hWdFlXNUNiMjVsY3lBOUlITnZkWEpqWlM1aGRYUnZWWEJrWVhSbFNIVnRZVzVDYjI1bGN6dGNiaUFnSUNCMGFHbHpMbDl5WVhkSWRXMWhia0p2Ym1WeklEMGdibVYzSUZaU1RWSnBaeWh6YjNWeVkyVXVhSFZ0WVc1Q2IyNWxjeWs3WEc0Z0lDQWdkR2hwY3k1ZmJtOXliV0ZzYVhwbFpFaDFiV0Z1UW05dVpYTWdQU0J1WlhjZ1ZsSk5TSFZ0WVc1dmFXUlNhV2NvZEdocGN5NWZjbUYzU0hWdFlXNUNiMjVsY3lrN1hHNWNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJR0VnWTJ4dmJtVWdiMllnZEdocGN5QjdRR3hwYm1zZ1ZsSk5TSFZ0WVc1dmFXUjlMbHh1SUNBZ0tpQkFjbVYwZFhKdWN5QkRiM0JwWldRZ2UwQnNhVzVySUZaU1RVaDFiV0Z1YjJsa2ZWeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHTnNiMjVsS0NrNklGWlNUVWgxYldGdWIybGtJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRlpTVFVoMWJXRnViMmxrS0hSb2FYTXVhSFZ0WVc1Q2IyNWxjeXdnZXlCaGRYUnZWWEJrWVhSbFNIVnRZVzVDYjI1bGN6b2dkR2hwY3k1aGRYUnZWWEJrWVhSbFNIVnRZVzVDYjI1bGN5QjlLUzVqYjNCNUtIUm9hWE1wTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWEJ5WldOaGRHVmtJRVJsY0hKbFkyRjBaV1F1SUZWelpTQmxhWFJvWlhJZ2UwQnNhVzVySUdkbGRGSmhkMEZpYzI5c2RYUmxVRzl6WlgwZ2IzSWdlMEJzYVc1cklHZGxkRTV2Y20xaGJHbDZaV1JCWW5OdmJIVjBaVkJ2YzJWOUlHbHVjM1JsWVdRdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBRV0p6YjJ4MWRHVlFiM05sS0NrNklGWlNUVkJ2YzJVZ2UxeHVJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpaGNiaUFnSUNBZ0lDZFdVazFJZFcxaGJtOXBaRG9nWjJWMFFXSnpiMngxZEdWUWIzTmxLQ2tnYVhNZ1pHVndjbVZqWVhSbFpDNGdWWE5sSUdWcGRHaGxjaUJuWlhSU1lYZEJZbk52YkhWMFpWQnZjMlVvS1NCdmNpQm5aWFJPYjNKdFlXeHBlbVZrUVdKemIyeDFkR1ZRYjNObEtDa2dhVzV6ZEdWaFpDNG5MRnh1SUNBZ0lDazdYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVuWlhSU1lYZEJZbk52YkhWMFpWQnZjMlVvS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY200Z2RHaGxJR04xY25KbGJuUWdZV0p6YjJ4MWRHVWdjRzl6WlNCdlppQjBhR2x6SUhKaGR5Qm9kVzFoYmlCaWIyNWxjeUJoY3lCaElIdEFiR2x1YXlCV1VrMVFiM05sZlM1Y2JpQWdJQ29nVG05MFpTQjBhR0YwSUhSb1pTQnZkWFJ3ZFhRZ2NtVnpkV3gwSUhkcGJHd2dZMjl1ZEdGcGJpQnBibWwwYVdGc0lITjBZWFJsSUc5bUlIUm9aU0JXVWswZ1lXNWtJRzV2ZENCamIyMXdZWFJwWW14bElHSmxkSGRsWlc0Z1pHbG1abVZ5Wlc1MElHMXZaR1ZzY3k1Y2JpQWdJQ29nV1c5MUlHMXBaMmgwSUhkaGJuUWdkRzhnZFhObElIdEFiR2x1YXlCblpYUlNZWGRRYjNObGZTQnBibk4wWldGa0xseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkRkpoZDBGaWMyOXNkWFJsVUc5elpTZ3BPaUJXVWsxUWIzTmxJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmY21GM1NIVnRZVzVDYjI1bGN5NW5aWFJCWW5OdmJIVjBaVkJ2YzJVb0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNGdkR2hsSUdOMWNuSmxiblFnWVdKemIyeDFkR1VnY0c5elpTQnZaaUIwYUdseklHNXZjbTFoYkdsNlpXUWdhSFZ0WVc0Z1ltOXVaWE1nWVhNZ1lTQjdRR3hwYm1zZ1ZsSk5VRzl6WlgwdVhHNGdJQ0FxSUU1dmRHVWdkR2hoZENCMGFHVWdiM1YwY0hWMElISmxjM1ZzZENCM2FXeHNJR052Ym5SaGFXNGdhVzVwZEdsaGJDQnpkR0YwWlNCdlppQjBhR1VnVmxKTklHRnVaQ0J1YjNRZ1kyOXRjR0YwYVdKc1pTQmlaWFIzWldWdUlHUnBabVpsY21WdWRDQnRiMlJsYkhNdVhHNGdJQ0FxSUZsdmRTQnRhV2RvZENCM1lXNTBJSFJ2SUhWelpTQjdRR3hwYm1zZ1oyVjBUbTl5YldGc2FYcGxaRkJ2YzJWOUlHbHVjM1JsWVdRdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBUbTl5YldGc2FYcGxaRUZpYzI5c2RYUmxVRzl6WlNncE9pQldVazFRYjNObElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZibTl5YldGc2FYcGxaRWgxYldGdVFtOXVaWE11WjJWMFFXSnpiMngxZEdWUWIzTmxLQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjSEpsWTJGMFpXUWdSR1Z3Y21WallYUmxaQzRnVlhObElHVnBkR2hsY2lCN1FHeHBibXNnWjJWMFVtRjNVRzl6WlgwZ2IzSWdlMEJzYVc1cklHZGxkRTV2Y20xaGJHbDZaV1JRYjNObGZTQnBibk4wWldGa0xseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkRkJ2YzJVb0tUb2dWbEpOVUc5elpTQjdYRzRnSUNBZ1kyOXVjMjlzWlM1M1lYSnVLQ2RXVWsxSWRXMWhibTlwWkRvZ1oyVjBVRzl6WlNncElHbHpJR1JsY0hKbFkyRjBaV1F1SUZWelpTQmxhWFJvWlhJZ1oyVjBVbUYzVUc5elpTZ3BJRzl5SUdkbGRFNXZjbTFoYkdsNlpXUlFiM05sS0NrZ2FXNXpkR1ZoWkM0bktUdGNibHh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWRsZEZKaGQxQnZjMlVvS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY200Z2RHaGxJR04xY25KbGJuUWdjRzl6WlNCdlppQnlZWGNnYUhWdFlXNGdZbTl1WlhNZ1lYTWdZU0I3UUd4cGJtc2dWbEpOVUc5elpYMHVYRzRnSUNBcVhHNGdJQ0FxSUVWaFkyZ2dkSEpoYm5ObWIzSnRJR2x6SUdFZ2JHOWpZV3dnZEhKaGJuTm1iM0p0SUhKbGJHRjBhWFpsSUdaeWIyMGdjbVZ6ZENCd2IzTmxJQ2hVTFhCdmMyVXBMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZEZKaGQxQnZjMlVvS1RvZ1ZsSk5VRzl6WlNCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgzSmhkMGgxYldGdVFtOXVaWE11WjJWMFVHOXpaU2dwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5YmlCMGFHVWdZM1Z5Y21WdWRDQndiM05sSUc5bUlHNXZjbTFoYkdsNlpXUWdhSFZ0WVc0Z1ltOXVaWE1nWVhNZ1lTQjdRR3hwYm1zZ1ZsSk5VRzl6WlgwdVhHNGdJQ0FxWEc0Z0lDQXFJRVZoWTJnZ2RISmhibk5tYjNKdElHbHpJR0VnYkc5allXd2dkSEpoYm5ObWIzSnRJSEpsYkdGMGFYWmxJR1p5YjIwZ2NtVnpkQ0J3YjNObElDaFVMWEJ2YzJVcExseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkRTV2Y20xaGJHbDZaV1JRYjNObEtDazZJRlpTVFZCdmMyVWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDl1YjNKdFlXeHBlbVZrU0hWdFlXNUNiMjVsY3k1blpYUlFiM05sS0NrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsY0hKbFkyRjBaV1FnUkdWd2NtVmpZWFJsWkM0Z1ZYTmxJR1ZwZEdobGNpQjdRR3hwYm1zZ2MyVjBVbUYzVUc5elpYMGdiM0lnZTBCc2FXNXJJSE5sZEU1dmNtMWhiR2w2WldSUWIzTmxmU0JwYm5OMFpXRmtMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE5sZEZCdmMyVW9jRzl6WlU5aWFtVmpkRG9nVmxKTlVHOXpaU2s2SUhadmFXUWdlMXh1SUNBZ0lHTnZibk52YkdVdWQyRnliaWduVmxKTlNIVnRZVzV2YVdRNklITmxkRkJ2YzJVb0tTQnBjeUJrWlhCeVpXTmhkR1ZrTGlCVmMyVWdaV2wwYUdWeUlITmxkRkpoZDFCdmMyVW9LU0J2Y2lCelpYUk9iM0p0WVd4cGVtVmtVRzl6WlNncElHbHVjM1JsWVdRdUp5azdYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTV6WlhSU1lYZFFiM05sS0hCdmMyVlBZbXBsWTNRcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRXhsZENCMGFHVWdjbUYzSUdoMWJXRnVJR0p2Ym1WeklHUnZJR0VnYzNCbFkybG1hV1ZrSUhCdmMyVXVYRzRnSUNBcVhHNGdJQ0FxSUVWaFkyZ2dkSEpoYm5ObWIzSnRJR2hoZG1VZ2RHOGdZbVVnWVNCc2IyTmhiQ0IwY21GdWMyWnZjbTBnY21Wc1lYUnBkbVVnWm5KdmJTQnlaWE4wSUhCdmMyVWdLRlF0Y0c5elpTa3VYRzRnSUNBcUlGbHZkU0JqWVc0Z2NHRnpjeUIzYUdGMElIbHZkU0JuYjNRZ1puSnZiU0I3UUd4cGJtc2daMlYwVW1GM1VHOXpaWDB1WEc0Z0lDQXFYRzRnSUNBcUlFbG1JSGx2ZFNCaGNtVWdkWE5wYm1jZ2UwQnNhVzVySUdGMWRHOVZjR1JoZEdWSWRXMWhia0p2Ym1WemZTd2dlVzkxSUcxcFoyaDBJSGRoYm5RZ2RHOGdkWE5sSUh0QWJHbHVheUJ6WlhST2IzSnRZV3hwZW1Wa1VHOXpaWDBnYVc1emRHVmhaQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUhCdmMyVlBZbXBsWTNRZ1FTQjdRR3hwYm1zZ1ZsSk5VRzl6WlgwZ2RHaGhkQ0J5WlhCeVpYTmxiblJ6SUdFZ2MybHVaMnhsSUhCdmMyVmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnpaWFJTWVhkUWIzTmxLSEJ2YzJWUFltcGxZM1E2SUZaU1RWQnZjMlVwT2lCMmIybGtJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmY21GM1NIVnRZVzVDYjI1bGN5NXpaWFJRYjNObEtIQnZjMlZQWW1wbFkzUXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUV4bGRDQjBhR1VnYm05eWJXRnNhWHBsWkNCb2RXMWhiaUJpYjI1bGN5QmtieUJoSUhOd1pXTnBabWxsWkNCd2IzTmxMbHh1SUNBZ0tseHVJQ0FnS2lCRllXTm9JSFJ5WVc1elptOXliU0JvWVhabElIUnZJR0psSUdFZ2JHOWpZV3dnZEhKaGJuTm1iM0p0SUhKbGJHRjBhWFpsSUdaeWIyMGdjbVZ6ZENCd2IzTmxJQ2hVTFhCdmMyVXBMbHh1SUNBZ0tpQlpiM1VnWTJGdUlIQmhjM01nZDJoaGRDQjViM1VnWjI5MElHWnliMjBnZTBCc2FXNXJJR2RsZEU1dmNtMWhiR2w2WldSUWIzTmxmUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUhCdmMyVlBZbXBsWTNRZ1FTQjdRR3hwYm1zZ1ZsSk5VRzl6WlgwZ2RHaGhkQ0J5WlhCeVpYTmxiblJ6SUdFZ2MybHVaMnhsSUhCdmMyVmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnpaWFJPYjNKdFlXeHBlbVZrVUc5elpTaHdiM05sVDJKcVpXTjBPaUJXVWsxUWIzTmxLVG9nZG05cFpDQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYMjV2Y20xaGJHbDZaV1JJZFcxaGJrSnZibVZ6TG5ObGRGQnZjMlVvY0c5elpVOWlhbVZqZENrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsY0hKbFkyRjBaV1FnUkdWd2NtVmpZWFJsWkM0Z1ZYTmxJR1ZwZEdobGNpQjdRR3hwYm1zZ2NtVnpaWFJTWVhkUWIzTmxmU0J2Y2lCN1FHeHBibXNnY21WelpYUk9iM0p0WVd4cGVtVmtVRzl6WlgwZ2FXNXpkR1ZoWkM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCeVpYTmxkRkJ2YzJVb0tUb2dkbTlwWkNCN1hHNGdJQ0FnWTI5dWMyOXNaUzUzWVhKdUtDZFdVazFJZFcxaGJtOXBaRG9nY21WelpYUlFiM05sS0NrZ2FYTWdaR1Z3Y21WallYUmxaQzRnVlhObElHVnBkR2hsY2lCeVpYTmxkRkpoZDFCdmMyVW9LU0J2Y2lCeVpYTmxkRTV2Y20xaGJHbDZaV1JRYjNObEtDa2dhVzV6ZEdWaFpDNG5LVHRjYmx4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5KbGMyVjBVbUYzVUc5elpTZ3BPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGMyVjBJSFJvWlNCeVlYY2dhSFZ0WVc1dmFXUWdkRzhnYVhSeklISmxjM1FnY0c5elpTNWNiaUFnSUNwY2JpQWdJQ29nU1dZZ2VXOTFJR0Z5WlNCMWMybHVaeUI3UUd4cGJtc2dZWFYwYjFWd1pHRjBaVWgxYldGdVFtOXVaWE45TENCNWIzVWdiV2xuYUhRZ2QyRnVkQ0IwYnlCMWMyVWdlMEJzYVc1cklISmxjMlYwVG05eWJXRnNhWHBsWkZCdmMyVjlJR2x1YzNSbFlXUXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjbVZ6WlhSU1lYZFFiM05sS0NrNklIWnZhV1FnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5eVlYZElkVzFoYmtKdmJtVnpMbkpsYzJWMFVHOXpaU2dwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxjMlYwSUhSb1pTQnViM0p0WVd4cGVtVmtJR2gxYldGdWIybGtJSFJ2SUdsMGN5QnlaWE4wSUhCdmMyVXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjbVZ6WlhST2IzSnRZV3hwZW1Wa1VHOXpaU2dwT2lCMmIybGtJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmYm05eWJXRnNhWHBsWkVoMWJXRnVRbTl1WlhNdWNtVnpaWFJRYjNObEtDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGNISmxZMkYwWldRZ1JHVndjbVZqWVhSbFpDNGdWWE5sSUdWcGRHaGxjaUI3UUd4cGJtc2daMlYwVW1GM1FtOXVaWDBnYjNJZ2UwQnNhVzVySUdkbGRFNXZjbTFoYkdsNlpXUkNiMjVsZlNCcGJuTjBaV0ZrTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdkbGRFSnZibVVvYm1GdFpUb2dWbEpOU0hWdFlXNUNiMjVsVG1GdFpTazZJRlpTVFVoMWJXRnVRbTl1WlNCOElIVnVaR1ZtYVc1bFpDQjdYRzRnSUNBZ1kyOXVjMjlzWlM1M1lYSnVLQ2RXVWsxSWRXMWhibTlwWkRvZ1oyVjBRbTl1WlNncElHbHpJR1JsY0hKbFkyRjBaV1F1SUZWelpTQmxhWFJvWlhJZ1oyVjBVbUYzUW05dVpTZ3BJRzl5SUdkbGRFNXZjbTFoYkdsNlpXUkNiMjVsS0NrZ2FXNXpkR1ZoWkM0bktUdGNibHh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWRsZEZKaGQwSnZibVVvYm1GdFpTazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVJR0VnY21GM0lIdEFiR2x1YXlCV1VrMUlkVzFoYmtKdmJtVjlJR0p2ZFc1a0lIUnZJR0VnYzNCbFkybG1hV1ZrSUh0QWJHbHVheUJXVWsxSWRXMWhia0p2Ym1WT1lXMWxmUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUc1aGJXVWdUbUZ0WlNCdlppQjBhR1VnWW05dVpTQjViM1VnZDJGdWRGeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkRkpoZDBKdmJtVW9ibUZ0WlRvZ1ZsSk5TSFZ0WVc1Q2IyNWxUbUZ0WlNrNklGWlNUVWgxYldGdVFtOXVaU0I4SUhWdVpHVm1hVzVsWkNCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgzSmhkMGgxYldGdVFtOXVaWE11WjJWMFFtOXVaU2h1WVcxbEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNGdZU0J1YjNKdFlXeHBlbVZrSUh0QWJHbHVheUJXVWsxSWRXMWhia0p2Ym1WOUlHSnZkVzVrSUhSdklHRWdjM0JsWTJsbWFXVmtJSHRBYkdsdWF5QldVazFJZFcxaGJrSnZibVZPWVcxbGZTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJRzVoYldVZ1RtRnRaU0J2WmlCMGFHVWdZbTl1WlNCNWIzVWdkMkZ1ZEZ4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdkbGRFNXZjbTFoYkdsNlpXUkNiMjVsS0c1aGJXVTZJRlpTVFVoMWJXRnVRbTl1WlU1aGJXVXBPaUJXVWsxSWRXMWhia0p2Ym1VZ2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDl1YjNKdFlXeHBlbVZrU0hWdFlXNUNiMjVsY3k1blpYUkNiMjVsS0c1aGJXVXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYQnlaV05oZEdWa0lFUmxjSEpsWTJGMFpXUXVJRlZ6WlNCbGFYUm9aWElnZTBCc2FXNXJJR2RsZEZKaGQwSnZibVZPYjJSbGZTQnZjaUI3UUd4cGJtc2daMlYwVG05eWJXRnNhWHBsWkVKdmJtVk9iMlJsZlNCcGJuTjBaV0ZrTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdkbGRFSnZibVZPYjJSbEtHNWhiV1U2SUZaU1RVaDFiV0Z1UW05dVpVNWhiV1VwT2lCVVNGSkZSUzVQWW1wbFkzUXpSQ0I4SUc1MWJHd2dlMXh1SUNBZ0lHTnZibk52YkdVdWQyRnliaWhjYmlBZ0lDQWdJQ2RXVWsxSWRXMWhibTlwWkRvZ1oyVjBRbTl1WlU1dlpHVW9LU0JwY3lCa1pYQnlaV05oZEdWa0xpQlZjMlVnWldsMGFHVnlJR2RsZEZKaGQwSnZibVZPYjJSbEtDa2diM0lnWjJWMFRtOXliV0ZzYVhwbFpFSnZibVZPYjJSbEtDa2dhVzV6ZEdWaFpDNG5MRnh1SUNBZ0lDazdYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVuWlhSU1lYZENiMjVsVG05a1pTaHVZVzFsS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY200Z1lTQnlZWGNnWW05dVpTQmhjeUJoSUdCVVNGSkZSUzVQWW1wbFkzUXpSR0FnWW05MWJtUWdkRzhnWVNCemNHVmphV1pwWldRZ2UwQnNhVzVySUZaU1RVaDFiV0Z1UW05dVpVNWhiV1Y5TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2JtRnRaU0JPWVcxbElHOW1JSFJvWlNCaWIyNWxJSGx2ZFNCM1lXNTBYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdaMlYwVW1GM1FtOXVaVTV2WkdVb2JtRnRaVG9nVmxKTlNIVnRZVzVDYjI1bFRtRnRaU2s2SUZSSVVrVkZMazlpYW1WamRETkVJSHdnYm5Wc2JDQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM0poZDBoMWJXRnVRbTl1WlhNdVoyVjBRbTl1WlU1dlpHVW9ibUZ0WlNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdUlHRWdibTl5YldGc2FYcGxaQ0JpYjI1bElHRnpJR0VnWUZSSVVrVkZMazlpYW1WamRETkVZQ0JpYjNWdVpDQjBieUJoSUhOd1pXTnBabWxsWkNCN1FHeHBibXNnVmxKTlNIVnRZVzVDYjI1bFRtRnRaWDB1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCdVlXMWxJRTVoYldVZ2IyWWdkR2hsSUdKdmJtVWdlVzkxSUhkaGJuUmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFJPYjNKdFlXeHBlbVZrUW05dVpVNXZaR1VvYm1GdFpUb2dWbEpOU0hWdFlXNUNiMjVsVG1GdFpTazZJRlJJVWtWRkxrOWlhbVZqZERORUlId2diblZzYkNCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgyNXZjbTFoYkdsNlpXUklkVzFoYmtKdmJtVnpMbWRsZEVKdmJtVk9iMlJsS0c1aGJXVXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWd1pHRjBaU0IwYUdVZ2FIVnRZVzV2YVdRZ1kyOXRjRzl1Wlc1MExseHVJQ0FnS2x4dUlDQWdLaUJKWmlCN1FHeHBibXNnWVhWMGIxVndaR0YwWlVoMWJXRnVRbTl1WlhOOUlHbHpJR0IwY25WbFlDd2dhWFFnZEhKaGJuTm1aWEp6SUhSb1pTQndiM05sSUc5bUlHNXZjbTFoYkdsNlpXUWdhSFZ0WVc0Z1ltOXVaWE1nZEc4Z2NtRjNJR2gxYldGdUlHSnZibVZ6TGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhWd1pHRjBaU2dwT2lCMmIybGtJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NWhkWFJ2VlhCa1lYUmxTSFZ0WVc1Q2IyNWxjeWtnZTF4dUlDQWdJQ0FnZEdocGN5NWZibTl5YldGc2FYcGxaRWgxYldGdVFtOXVaWE11ZFhCa1lYUmxLQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzRpTENJdktpQmxjMnhwYm5RdFpHbHpZV0pzWlNCQWRIbHdaWE5qY21sd2RDMWxjMnhwYm5RdmJtRnRhVzVuTFdOdmJuWmxiblJwYjI0Z0tpOWNibHh1Wlhod2IzSjBJR052Ym5OMElGWlNUVkpsY1hWcGNtVmtTSFZ0WVc1Q2IyNWxUbUZ0WlNBOUlIdGNiaUFnU0dsd2N6b2dKMmhwY0hNbkxGeHVJQ0JUY0dsdVpUb2dKM053YVc1bEp5eGNiaUFnU0dWaFpEb2dKMmhsWVdRbkxGeHVJQ0JNWldaMFZYQndaWEpNWldjNklDZHNaV1owVlhCd1pYSk1aV2NuTEZ4dUlDQk1aV1owVEc5M1pYSk1aV2M2SUNkc1pXWjBURzkzWlhKTVpXY25MRnh1SUNCTVpXWjBSbTl2ZERvZ0oyeGxablJHYjI5MEp5eGNiaUFnVW1sbmFIUlZjSEJsY2t4bFp6b2dKM0pwWjJoMFZYQndaWEpNWldjbkxGeHVJQ0JTYVdkb2RFeHZkMlZ5VEdWbk9pQW5jbWxuYUhSTWIzZGxja3hsWnljc1hHNGdJRkpwWjJoMFJtOXZkRG9nSjNKcFoyaDBSbTl2ZENjc1hHNGdJRXhsWm5SVmNIQmxja0Z5YlRvZ0oyeGxablJWY0hCbGNrRnliU2NzWEc0Z0lFeGxablJNYjNkbGNrRnliVG9nSjJ4bFpuUk1iM2RsY2tGeWJTY3NYRzRnSUV4bFpuUklZVzVrT2lBbmJHVm1kRWhoYm1RbkxGeHVJQ0JTYVdkb2RGVndjR1Z5UVhKdE9pQW5jbWxuYUhSVmNIQmxja0Z5YlNjc1hHNGdJRkpwWjJoMFRHOTNaWEpCY20wNklDZHlhV2RvZEV4dmQyVnlRWEp0Snl4Y2JpQWdVbWxuYUhSSVlXNWtPaUFuY21sbmFIUklZVzVrSnl4Y2JuMGdZWE1nWTI5dWMzUTdYRzVjYm1WNGNHOXlkQ0IwZVhCbElGWlNUVkpsY1hWcGNtVmtTSFZ0WVc1Q2IyNWxUbUZ0WlNBOUlIUjVjR1Z2WmlCV1VrMVNaWEYxYVhKbFpFaDFiV0Z1UW05dVpVNWhiV1ZiYTJWNWIyWWdkSGx3Wlc5bUlGWlNUVkpsY1hWcGNtVmtTSFZ0WVc1Q2IyNWxUbUZ0WlYwN1hHNGlMQ0pwYlhCdmNuUWdkSGx3WlNBcUlHRnpJRll3VmxKTklHWnliMjBnSjBCd2FYaHBkaTkwZVhCbGN5MTJjbTB0TUM0d0p6dGNibWx0Y0c5eWRDQjBlWEJsSUNvZ1lYTWdWakZXVWsxVFkyaGxiV0VnWm5KdmJTQW5RSEJwZUdsMkwzUjVjR1Z6TFhaeWJXTXRkbkp0TFRFdU1DYzdYRzVwYlhCdmNuUWdkSGx3WlNCN0lFZE1WRVlzSUVkTVZFWk1iMkZrWlhKUWJIVm5hVzRzSUVkTVZFWlFZWEp6WlhJZ2ZTQm1jbTl0SUNkMGFISmxaUzlsZUdGdGNHeGxjeTlxYzIwdmJHOWhaR1Z5Y3k5SFRGUkdURzloWkdWeUxtcHpKenRjYm1sdGNHOXlkQ0I3SUZaU1RVaDFiV0Z1YjJsa0lIMGdabkp2YlNBbkxpOVdVazFJZFcxaGJtOXBaQ2M3WEc1cGJYQnZjblFnZEhsd1pTQjdJRlpTVFVoMWJXRnVRbTl1WlhNZ2ZTQm1jbTl0SUNjdUwxWlNUVWgxYldGdVFtOXVaWE1uTzF4dWFXMXdiM0owSUhzZ1ZsSk5VbVZ4ZFdseVpXUklkVzFoYmtKdmJtVk9ZVzFsSUgwZ1puSnZiU0FuTGk5V1VrMVNaWEYxYVhKbFpFaDFiV0Z1UW05dVpVNWhiV1VuTzF4dWFXMXdiM0owSUhzZ1IweFVSaUJoY3lCSFRGUkdVMk5vWlcxaElIMGdabkp2YlNBblFHZHNkR1l0ZEhKaGJuTm1iM0p0TDJOdmNtVW5PMXh1YVcxd2IzSjBJSHNnVmxKTlNIVnRZVzV2YVdSSVpXeHdaWElnZlNCbWNtOXRJQ2N1TDJobGJIQmxjbk12VmxKTlNIVnRZVzV2YVdSSVpXeHdaWEluTzF4dWFXMXdiM0owSUhzZ1ZsSk5TSFZ0WVc1dmFXUk1iMkZrWlhKUWJIVm5hVzVQY0hScGIyNXpJSDBnWm5KdmJTQW5MaTlXVWsxSWRXMWhibTlwWkV4dllXUmxjbEJzZFdkcGJrOXdkR2x2Ym5Nbk8xeHVYRzR2S2lwY2JpQXFJRkJ2YzNOcFlteGxJSE53WldNZ2RtVnljMmx2Ym5NZ2FYUWdjbVZqYjJkdWFYcGxjeTVjYmlBcUwxeHVZMjl1YzNRZ1VFOVRVMGxDVEVWZlUxQkZRMTlXUlZKVFNVOU9VeUE5SUc1bGR5QlRaWFFvV3ljeExqQW5MQ0FuTVM0d0xXSmxkR0VuWFNrN1hHNWNiaThxS2x4dUlDb2dRU0J0WVhBZ1puSnZiU0J2YkdRZ2RHaDFiV0lnWW05dVpTQnVZVzFsY3lCMGJ5QnVaWGNnZEdoMWJXSWdZbTl1WlNCdVlXMWxjMXh1SUNvdlhHNWpiMjV6ZENCMGFIVnRZa0p2Ym1WT1lXMWxUV0Z3T2lCN0lGdHJaWGs2SUhOMGNtbHVaMTA2SUZZeFZsSk5VMk5vWlcxaExraDFiV0Z1YjJsa1NIVnRZVzVDYjI1bFRtRnRaU0I4SUhWdVpHVm1hVzVsWkNCOUlEMGdlMXh1SUNCc1pXWjBWR2gxYldKUWNtOTRhVzFoYkRvZ0oyeGxablJVYUhWdFlrMWxkR0ZqWVhKd1lXd25MRnh1SUNCc1pXWjBWR2gxYldKSmJuUmxjbTFsWkdsaGRHVTZJQ2RzWldaMFZHaDFiV0pRY205NGFXMWhiQ2NzWEc0Z0lISnBaMmgwVkdoMWJXSlFjbTk0YVcxaGJEb2dKM0pwWjJoMFZHaDFiV0pOWlhSaFkyRnljR0ZzSnl4Y2JpQWdjbWxuYUhSVWFIVnRZa2x1ZEdWeWJXVmthV0YwWlRvZ0ozSnBaMmgwVkdoMWJXSlFjbTk0YVcxaGJDY3NYRzU5TzF4dVhHNHZLaXBjYmlBcUlFRWdjR3gxWjJsdUlHOW1JRWRNVkVaTWIyRmtaWElnZEdoaGRDQnBiWEJ2Y25SeklHRWdlMEJzYVc1cklGWlNUVWgxYldGdWIybGtmU0JtY205dElHRWdWbEpOSUdWNGRHVnVjMmx2YmlCdlppQmhJRWRNVkVZdVhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5QldVazFJZFcxaGJtOXBaRXh2WVdSbGNsQnNkV2RwYmlCcGJYQnNaVzFsYm5SeklFZE1WRVpNYjJGa1pYSlFiSFZuYVc0Z2UxeHVJQ0F2S2lwY2JpQWdJQ29nVTNCbFkybG1lU0JoYmlCUFltcGxZM1F6UkNCMGJ5QmhaR1FnZTBCc2FXNXJJRlpTVFVoMWJXRnViMmxrU0dWc2NHVnlmUzVjYmlBZ0lDb2dTV1lnYm05MElITndaV05wWm1sbFpDd2dhR1ZzY0dWeUlIZHBiR3dnYm05MElHSmxJR055WldGMFpXUXVYRzRnSUNBcUlFbG1JR0J5Wlc1a1pYSlBjbVJsY21BZ2FYTWdjMlYwSUhSdklIUm9aU0J5YjI5MExDQjBhR1VnYUdWc2NHVnlJSGRwYkd3Z1kyOXdlU0IwYUdVZ2MyRnRaU0JnY21WdVpHVnlUM0prWlhKZ0lDNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm9aV3h3WlhKU2IyOTBQem9nVkVoU1JVVXVUMkpxWldOME0wUTdYRzVjYmlBZ2NIVmliR2xqSUdGMWRHOVZjR1JoZEdWSWRXMWhia0p2Ym1WelB6b2dZbTl2YkdWaGJqdGNibHh1SUNCd2RXSnNhV01nY21WaFpHOXViSGtnY0dGeWMyVnlPaUJIVEZSR1VHRnljMlZ5TzF4dVhHNGdJSEIxWW14cFl5Qm5aWFFnYm1GdFpTZ3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lDOHZJRmRsSUhOb2IzVnNaQ0IxYzJVZ2RHaGxJR1Y0ZEdWdWMybHZiaUJ1WVcxbElHbHVjM1JsWVdRZ1luVjBJSGRsSUdoaGRtVWdiWFZzZEdsd2JHVWdjR3gxWjJsdWN5Qm1iM0lnWVc0Z1pYaDBaVzV6YVc5dUxpNHVYRzRnSUNBZ2NtVjBkWEp1SUNkV1VrMUlkVzFoYm05cFpFeHZZV1JsY2xCc2RXZHBiaWM3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2NHRnljMlZ5T2lCSFRGUkdVR0Z5YzJWeUxDQnZjSFJwYjI1elB6b2dWbEpOU0hWdFlXNXZhV1JNYjJGa1pYSlFiSFZuYVc1UGNIUnBiMjV6S1NCN1hHNGdJQ0FnZEdocGN5NXdZWEp6WlhJZ1BTQndZWEp6WlhJN1hHNWNiaUFnSUNCMGFHbHpMbWhsYkhCbGNsSnZiM1FnUFNCdmNIUnBiMjV6UHk1b1pXeHdaWEpTYjI5ME8xeHVJQ0FnSUhSb2FYTXVZWFYwYjFWd1pHRjBaVWgxYldGdVFtOXVaWE1nUFNCdmNIUnBiMjV6UHk1aGRYUnZWWEJrWVhSbFNIVnRZVzVDYjI1bGN6dGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QmhjM2x1WXlCaFpuUmxjbEp2YjNRb1oyeDBaam9nUjB4VVJpazZJRkJ5YjIxcGMyVThkbTlwWkQ0Z2UxeHVJQ0FnSUdkc2RHWXVkWE5sY2tSaGRHRXVkbkp0U0hWdFlXNXZhV1FnUFNCaGQyRnBkQ0IwYUdsekxsOXBiWEJ2Y25Rb1oyeDBaaWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1NXMXdiM0owSUdFZ2UwQnNhVzVySUZaU1RVaDFiV0Z1YjJsa2ZTQm1jbTl0SUdFZ1ZsSk5MbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnWjJ4MFppQkJJSEJoY25ObFpDQnlaWE4xYkhRZ2IyWWdSMHhVUmlCMFlXdGxiaUJtY205dElFZE1WRVpNYjJGa1pYSmNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdZWE41Ym1NZ1gybHRjRzl5ZENobmJIUm1PaUJIVEZSR0tUb2dVSEp2YldselpUeFdVazFJZFcxaGJtOXBaQ0I4SUc1MWJHdytJSHRjYmlBZ0lDQmpiMjV6ZENCMk1WSmxjM1ZzZENBOUlHRjNZV2wwSUhSb2FYTXVYM1l4U1cxd2IzSjBLR2RzZEdZcE8xeHVJQ0FnSUdsbUlDaDJNVkpsYzNWc2RDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIWXhVbVZ6ZFd4ME8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJSFl3VW1WemRXeDBJRDBnWVhkaGFYUWdkR2hwY3k1ZmRqQkpiWEJ2Y25Rb1oyeDBaaWs3WEc0Z0lDQWdhV1lnS0hZd1VtVnpkV3gwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZGpCU1pYTjFiSFE3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUdGemVXNWpJRjkyTVVsdGNHOXlkQ2huYkhSbU9pQkhURlJHS1RvZ1VISnZiV2x6WlR4V1VrMUlkVzFoYm05cFpDQjhJRzUxYkd3K0lIdGNiaUFnSUNCamIyNXpkQ0JxYzI5dUlEMGdkR2hwY3k1d1lYSnpaWEl1YW5OdmJpQmhjeUJIVEZSR1UyTm9aVzFoTGtsSFRGUkdPMXh1WEc0Z0lDQWdMeThnWldGeWJIa2dZV0p2Y25RZ2FXWWdhWFFnWkc5bGMyNG5kQ0IxYzJVZ2RuSnRYRzRnSUNBZ1kyOXVjM1FnYVhOV1VrMVZjMlZrSUQwZ2FuTnZiaTVsZUhSbGJuTnBiMjV6VlhObFpEOHVhVzVrWlhoUFppZ25WbEpOUTE5MmNtMG5LU0FoUFQwZ0xURTdYRzRnSUNBZ2FXWWdLQ0ZwYzFaU1RWVnpaV1FwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJR1Y0ZEdWdWMybHZiaUE5SUdwemIyNHVaWGgwWlc1emFXOXVjejh1V3lkV1VrMURYM1p5YlNkZElHRnpJRll4VmxKTlUyTm9aVzFoTGxaU1RVTldVazBnZkNCMWJtUmxabWx1WldRN1hHNGdJQ0FnYVdZZ0tDRmxlSFJsYm5OcGIyNHBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElITndaV05XWlhKemFXOXVJRDBnWlhoMFpXNXphVzl1TG5Od1pXTldaWEp6YVc5dU8xeHVJQ0FnSUdsbUlDZ2hVRTlUVTBsQ1RFVmZVMUJGUTE5V1JWSlRTVTlPVXk1b1lYTW9jM0JsWTFabGNuTnBiMjRwS1NCN1hHNGdJQ0FnSUNCamIyNXpiMnhsTG5kaGNtNG9ZRlpTVFVoMWJXRnViMmxrVEc5aFpHVnlVR3gxWjJsdU9pQlZibXR1YjNkdUlGWlNUVU5mZG5KdElITndaV05XWlhKemFXOXVJRndpSkh0emNHVmpWbVZ5YzJsdmJuMWNJbUFwTzF4dUlDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdjMk5vWlcxaFNIVnRZVzV2YVdRZ1BTQmxlSFJsYm5OcGIyNHVhSFZ0WVc1dmFXUTdYRzRnSUNBZ2FXWWdLQ0Z6WTJobGJXRklkVzFoYm05cFpDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nWTI5dGNHRjBPaUF4TGpBdFltVjBZU0IwYUhWdFlpQmliMjVsSUc1aGJXVnpYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQmdkSEoxWldBZ2FXWWdZR3hsWm5SVWFIVnRZa2x1ZEdWeWJXVmthV0YwWldBZ2IzSWdZSEpwWjJoMFZHaDFiV0pKYm5SbGNtMWxaR2xoZEdWZ0lHVjRhWE4wYzF4dUlDQWdJQ0FxTDF4dUlDQWdJR052Ym5OMElHVjRhWE4wYzFCeVpYWnBiM1Z6VkdoMWJXSk9ZVzFsSUQxY2JpQWdJQ0FnSUNoelkyaGxiV0ZJZFcxaGJtOXBaQzVvZFcxaGJrSnZibVZ6SUdGeklHRnVlU2t1YkdWbWRGUm9kVzFpU1c1MFpYSnRaV1JwWVhSbElDRTlJRzUxYkd3Z2ZIeGNiaUFnSUNBZ0lDaHpZMmhsYldGSWRXMWhibTlwWkM1b2RXMWhia0p2Ym1WeklHRnpJR0Z1ZVNrdWNtbG5hSFJVYUhWdFlrbHVkR1Z5YldWa2FXRjBaU0FoUFNCdWRXeHNPMXh1WEc0Z0lDQWdZMjl1YzNRZ2FIVnRZVzVDYjI1bGN6b2dVR0Z5ZEdsaGJEeFdVazFJZFcxaGJrSnZibVZ6UGlBOUlIdDlPMXh1SUNBZ0lHbG1JQ2h6WTJobGJXRklkVzFoYm05cFpDNW9kVzFoYmtKdmJtVnpJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJR0YzWVdsMElGQnliMjFwYzJVdVlXeHNLRnh1SUNBZ0lDQWdJQ0JQWW1wbFkzUXVaVzUwY21sbGN5aHpZMmhsYldGSWRXMWhibTlwWkM1b2RXMWhia0p2Ym1WektTNXRZWEFvWVhONWJtTWdLRnRpYjI1bFRtRnRaVk4wY21sdVp5d2djMk5vWlcxaFNIVnRZVzVDYjI1bFhTa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lHeGxkQ0JpYjI1bFRtRnRaU0E5SUdKdmJtVk9ZVzFsVTNSeWFXNW5JR0Z6SUZZeFZsSk5VMk5vWlcxaExraDFiV0Z1YjJsa1NIVnRZVzVDYjI1bFRtRnRaVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JwYm1SbGVDQTlJSE5qYUdWdFlVaDFiV0Z1UW05dVpTNXViMlJsTzF4dVhHNGdJQ0FnSUNBZ0lDQWdMeThnWTI5dGNHRjBPaUF4TGpBdFltVjBZU0J3Y21WMmFXOTFjeUIwYUhWdFlpQmliMjVsSUc1aGJXVnpYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tHVjRhWE4wYzFCeVpYWnBiM1Z6VkdoMWJXSk9ZVzFsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQjBhSFZ0WWtKdmJtVk9ZVzFsSUQwZ2RHaDFiV0pDYjI1bFRtRnRaVTFoY0Z0aWIyNWxUbUZ0WlYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RHaDFiV0pDYjI1bFRtRnRaU0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR0p2Ym1WT1lXMWxJRDBnZEdoMWJXSkNiMjVsVG1GdFpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J1YjJSbElEMGdZWGRoYVhRZ2RHaHBjeTV3WVhKelpYSXVaMlYwUkdWd1pXNWtaVzVqZVNnbmJtOWtaU2NzSUdsdVpHVjRLVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDOHZJR2xtSUhSb1pTQnpjR1ZqYVdacFpXUWdibTlrWlNCa2IyVnpJRzV2ZENCbGVHbHpkQ3dnWlcxcGRDQmhJSGRoY201cGJtZGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2JtOWtaU0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExuZGhjbTRvWUVFZ1oyeFVSaUJ1YjJSbElHSnZkVzVrSUhSdklIUm9aU0JvZFcxaGJtOXBaQ0JpYjI1bElDUjdZbTl1WlU1aGJXVjlJQ2hwYm1SbGVDQTlJQ1I3YVc1a1pYaDlLU0JrYjJWeklHNXZkQ0JsZUdsemRHQXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUM4dklITmxkQ0IwYnlCMGFHVWdZR2gxYldGdVFtOXVaWE5nWEc0Z0lDQWdJQ0FnSUNBZ2FIVnRZVzVDYjI1bGMxdGliMjVsVG1GdFpWMGdQU0I3SUc1dlpHVWdmVHRjYmlBZ0lDQWdJQ0FnZlNrc1hHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJR2gxYldGdWIybGtJRDBnYm1WM0lGWlNUVWgxYldGdWIybGtLSFJvYVhNdVgyVnVjM1Z5WlZKbGNYVnBjbVZrUW05dVpYTkZlR2x6ZENob2RXMWhia0p2Ym1WektTd2dlMXh1SUNBZ0lDQWdZWFYwYjFWd1pHRjBaVWgxYldGdVFtOXVaWE02SUhSb2FYTXVZWFYwYjFWd1pHRjBaVWgxYldGdVFtOXVaWE1zWEc0Z0lDQWdmU2s3WEc0Z0lDQWdaMngwWmk1elkyVnVaUzVoWkdRb2FIVnRZVzV2YVdRdWJtOXliV0ZzYVhwbFpFaDFiV0Z1UW05dVpYTlNiMjkwS1R0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG1obGJIQmxjbEp2YjNRcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdobGJIQmxjaUE5SUc1bGR5QldVazFJZFcxaGJtOXBaRWhsYkhCbGNpaG9kVzFoYm05cFpDazdYRzRnSUNBZ0lDQjBhR2x6TG1obGJIQmxjbEp2YjNRdVlXUmtLR2hsYkhCbGNpazdYRzRnSUNBZ0lDQm9aV3h3WlhJdWNtVnVaR1Z5VDNKa1pYSWdQU0IwYUdsekxtaGxiSEJsY2xKdmIzUXVjbVZ1WkdWeVQzSmtaWEk3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHaDFiV0Z1YjJsa08xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQmhjM2x1WXlCZmRqQkpiWEJ2Y25Rb1oyeDBaam9nUjB4VVJpazZJRkJ5YjIxcGMyVThWbEpOU0hWdFlXNXZhV1FnZkNCdWRXeHNQaUI3WEc0Z0lDQWdZMjl1YzNRZ2FuTnZiaUE5SUhSb2FYTXVjR0Z5YzJWeUxtcHpiMjRnWVhNZ1IweFVSbE5qYUdWdFlTNUpSMHhVUmp0Y2JseHVJQ0FnSUdOdmJuTjBJSFp5YlVWNGRDQTlJR3B6YjI0dVpYaDBaVzV6YVc5dWN6OHVWbEpOSUdGeklGWXdWbEpOTGxaU1RTQjhJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQnBaaUFvSVhaeWJVVjRkQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdjMk5vWlcxaFNIVnRZVzV2YVdRNklGWXdWbEpOTGtoMWJXRnViMmxrSUh3Z2RXNWtaV1pwYm1Wa0lEMGdkbkp0UlhoMExtaDFiV0Z1YjJsa08xeHVJQ0FnSUdsbUlDZ2hjMk5vWlcxaFNIVnRZVzV2YVdRcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUdoMWJXRnVRbTl1WlhNNklGQmhjblJwWVd3OFZsSk5TSFZ0WVc1Q2IyNWxjejRnUFNCN2ZUdGNiaUFnSUNCcFppQW9jMk5vWlcxaFNIVnRZVzV2YVdRdWFIVnRZVzVDYjI1bGN5QWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQmhkMkZwZENCUWNtOXRhWE5sTG1Gc2JDaGNiaUFnSUNBZ0lDQWdjMk5vWlcxaFNIVnRZVzV2YVdRdWFIVnRZVzVDYjI1bGN5NXRZWEFvWVhONWJtTWdLR0p2Ym1VcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JpYjI1bFRtRnRaU0E5SUdKdmJtVXVZbTl1WlR0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCcGJtUmxlQ0E5SUdKdmJtVXVibTlrWlR0Y2JseHVJQ0FnSUNBZ0lDQWdJR2xtSUNoaWIyNWxUbUZ0WlNBOVBTQnVkV3hzSUh4OElHbHVaR1Y0SUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdWIyUmxJRDBnWVhkaGFYUWdkR2hwY3k1d1lYSnpaWEl1WjJWMFJHVndaVzVrWlc1amVTZ25ibTlrWlNjc0lHbHVaR1Y0S1R0Y2JseHVJQ0FnSUNBZ0lDQWdJQzh2SUdsbUlIUm9aU0J6Y0dWamFXWnBaV1FnYm05a1pTQmtiMlZ6SUc1dmRDQmxlR2x6ZEN3Z1pXMXBkQ0JoSUhkaGNtNXBibWRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9ibTlrWlNBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emIyeGxMbmRoY200b1lFRWdaMnhVUmlCdWIyUmxJR0p2ZFc1a0lIUnZJSFJvWlNCb2RXMWhibTlwWkNCaWIyNWxJQ1I3WW05dVpVNWhiV1Y5SUNocGJtUmxlQ0E5SUNSN2FXNWtaWGg5S1NCa2IyVnpJRzV2ZENCbGVHbHpkR0FwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lDOHZJRzFoY0NCMGJ5QnVaWGNnWW05dVpTQnVZVzFsWEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnZEdoMWJXSkNiMjVsVG1GdFpTQTlJSFJvZFcxaVFtOXVaVTVoYldWTllYQmJZbTl1WlU1aGJXVmRPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzVsZDBKdmJtVk9ZVzFsSUQwZ0tIUm9kVzFpUW05dVpVNWhiV1VnUHo4Z1ltOXVaVTVoYldVcElHRnpJRll4VmxKTlUyTm9aVzFoTGtoMWJXRnViMmxrU0hWdFlXNUNiMjVsVG1GdFpUdGNibHh1SUNBZ0lDQWdJQ0FnSUM4dklIWXdJRlpTVFhNZ2JXbG5hSFFnYUdGMlpTQmhJRzExYkhScGNHeGxJRzV2WkdWeklHRjBkR0ZqYUdWa0lIUnZJR0VnYzJsdVoyeGxJR0p2Ym1VdUxpNWNiaUFnSUNBZ0lDQWdJQ0F2THlCemJ5QnBaaUIwYUdWeVpTQmhiSEpsWVdSNUlHbHpJR0Z1SUdWdWRISjVJR2x1SUhSb1pTQmdhSFZ0WVc1Q2IyNWxjMkFzSUhOb2IzY2dZU0IzWVhKdWFXNW5JR0Z1WkNCcFoyNXZjbVVnYVhSY2JpQWdJQ0FnSUNBZ0lDQnBaaUFvYUhWdFlXNUNiMjVsYzF0dVpYZENiMjVsVG1GdFpWMGdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1M1lYSnVLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQmdUWFZzZEdsd2JHVWdZbTl1WlNCbGJuUnlhV1Z6SUdadmNpQWtlMjVsZDBKdmJtVk9ZVzFsZlNCa1pYUmxZM1JsWkNBb2FXNWtaWGdnUFNBa2UybHVaR1Y0ZlNrc0lHbG5ibTl5YVc1bklHUjFjR3hwWTJGMFpXUWdaVzUwY21sbGN5NWdMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0F2THlCelpYUWdkRzhnZEdobElHQm9kVzFoYmtKdmJtVnpZRnh1SUNBZ0lDQWdJQ0FnSUdoMWJXRnVRbTl1WlhOYmJtVjNRbTl1WlU1aGJXVmRJRDBnZXlCdWIyUmxJSDA3WEc0Z0lDQWdJQ0FnSUgwcExGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0JvZFcxaGJtOXBaQ0E5SUc1bGR5QldVazFJZFcxaGJtOXBaQ2gwYUdsekxsOWxibk4xY21WU1pYRjFhWEpsWkVKdmJtVnpSWGhwYzNRb2FIVnRZVzVDYjI1bGN5a3NJSHRjYmlBZ0lDQWdJR0YxZEc5VmNHUmhkR1ZJZFcxaGJrSnZibVZ6T2lCMGFHbHpMbUYxZEc5VmNHUmhkR1ZJZFcxaGJrSnZibVZ6TEZ4dUlDQWdJSDBwTzF4dUlDQWdJR2RzZEdZdWMyTmxibVV1WVdSa0tHaDFiV0Z1YjJsa0xtNXZjbTFoYkdsNlpXUklkVzFoYmtKdmJtVnpVbTl2ZENrN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1b1pXeHdaWEpTYjI5MEtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCb1pXeHdaWElnUFNCdVpYY2dWbEpOU0hWdFlXNXZhV1JJWld4d1pYSW9hSFZ0WVc1dmFXUXBPMXh1SUNBZ0lDQWdkR2hwY3k1b1pXeHdaWEpTYjI5MExtRmtaQ2hvWld4d1pYSXBPMXh1SUNBZ0lDQWdhR1ZzY0dWeUxuSmxibVJsY2s5eVpHVnlJRDBnZEdocGN5NW9aV3h3WlhKU2IyOTBMbkpsYm1SbGNrOXlaR1Z5TzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQm9kVzFoYm05cFpEdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGYm5OMWNtVWdjbVZ4ZFdseVpXUWdZbTl1WlhNZ1pYaHBjM1FnYVc0Z1oybDJaVzRnYUhWdFlXNGdZbTl1WlhNdVhHNGdJQ0FxSUVCd1lYSmhiU0JvZFcxaGJrSnZibVZ6SUVoMWJXRnVJR0p2Ym1WelhHNGdJQ0FxSUVCeVpYUjFjbTV6SUVoMWJXRnVJR0p2Ym1WekxDQnVieUJzYjI1blpYSWdjR0Z5ZEdsaGJDRmNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdYMlZ1YzNWeVpWSmxjWFZwY21Wa1FtOXVaWE5GZUdsemRDaG9kVzFoYmtKdmJtVnpPaUJRWVhKMGFXRnNQRlpTVFVoMWJXRnVRbTl1WlhNK0tUb2dWbEpOU0hWdFlXNUNiMjVsY3lCN1hHNGdJQ0FnTHk4Z1pXNXpkWEpsSUhKbGNYVnBjbVZrSUdKdmJtVnpJR1Y0YVhOMFhHNGdJQ0FnWTI5dWMzUWdiV2x6YzJsdVoxSmxjWFZwY21Wa1FtOXVaWE1nUFNCUFltcGxZM1F1ZG1Gc2RXVnpLRlpTVFZKbGNYVnBjbVZrU0hWdFlXNUNiMjVsVG1GdFpTa3VabWxzZEdWeUtGeHVJQ0FnSUNBZ0tISmxjWFZwY21Wa1FtOXVaVTVoYldVcElEMCtJR2gxYldGdVFtOXVaWE5iY21WeGRXbHlaV1JDYjI1bFRtRnRaVjBnUFQwZ2JuVnNiQ3hjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdMeThnZEdoeWIzY2dZVzRnWlhKeWIzSWdhV1lnZEdobGNtVWdZWEpsSUcxcGMzTnBibWNnWW05dVpYTmNiaUFnSUNCcFppQW9iV2x6YzJsdVoxSmxjWFZwY21Wa1FtOXVaWE11YkdWdVozUm9JRDRnTUNrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0Z4dUlDQWdJQ0FnSUNCZ1ZsSk5TSFZ0WVc1dmFXUk1iMkZrWlhKUWJIVm5hVzQ2SUZSb1pYTmxJR2gxYldGdWIybGtJR0p2Ym1WeklHRnlaU0J5WlhGMWFYSmxaQ0JpZFhRZ2JtOTBJR1Y0YVhOME9pQWtlMjFwYzNOcGJtZFNaWEYxYVhKbFpFSnZibVZ6TG1wdmFXNG9KeXdnSnlsOVlDeGNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUdoMWJXRnVRbTl1WlhNZ1lYTWdWbEpOU0hWdFlXNUNiMjVsY3p0Y2JpQWdmVnh1ZlZ4dUlpd2lhVzF3YjNKMElDb2dZWE1nVkVoU1JVVWdabkp2YlNBbmRHaHlaV1VuTzF4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nUm1GdVFuVm1abVZ5UjJWdmJXVjBjbmtnWlhoMFpXNWtjeUJVU0ZKRlJTNUNkV1ptWlhKSFpXOXRaWFJ5ZVNCN1hHNGdJSEIxWW14cFl5QjBhR1YwWVRvZ2JuVnRZbVZ5TzF4dUlDQndkV0pzYVdNZ2NtRmthWFZ6T2lCdWRXMWlaWEk3WEc0Z0lIQnlhWFpoZEdVZ1gyTjFjbkpsYm5SVWFHVjBZU0E5SURBN1hHNGdJSEJ5YVhaaGRHVWdYMk4xY25KbGJuUlNZV1JwZFhNZ1BTQXdPMXh1SUNCd2NtbDJZWFJsSUhKbFlXUnZibXg1SUY5aGRIUnlVRzl6T2lCVVNGSkZSUzVDZFdabVpYSkJkSFJ5YVdKMWRHVTdYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnWDJGMGRISkpibVJsZURvZ1ZFaFNSVVV1UW5WbVptVnlRWFIwY21saWRYUmxPMXh1WEc0Z0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpZ3BJSHRjYmlBZ0lDQnpkWEJsY2lncE8xeHVYRzRnSUNBZ2RHaHBjeTUwYUdWMFlTQTlJREF1TUR0Y2JpQWdJQ0IwYUdsekxuSmhaR2wxY3lBOUlEQXVNRHRjYmlBZ0lDQjBhR2x6TGw5amRYSnlaVzUwVkdobGRHRWdQU0F3TGpBN1hHNGdJQ0FnZEdocGN5NWZZM1Z5Y21WdWRGSmhaR2wxY3lBOUlEQXVNRHRjYmx4dUlDQWdJSFJvYVhNdVgyRjBkSEpRYjNNZ1BTQnVaWGNnVkVoU1JVVXVRblZtWm1WeVFYUjBjbWxpZFhSbEtHNWxkeUJHYkc5aGRETXlRWEp5WVhrb05qVWdLaUF6S1N3Z015azdYRzRnSUNBZ2RHaHBjeTV6WlhSQmRIUnlhV0oxZEdVb0ozQnZjMmwwYVc5dUp5d2dkR2hwY3k1ZllYUjBjbEJ2Y3lrN1hHNWNiaUFnSUNCMGFHbHpMbDloZEhSeVNXNWtaWGdnUFNCdVpYY2dWRWhTUlVVdVFuVm1abVZ5UVhSMGNtbGlkWFJsS0c1bGR5QlZhVzUwTVRaQmNuSmhlU2d6SUNvZ05qTXBMQ0F4S1R0Y2JpQWdJQ0IwYUdsekxuTmxkRWx1WkdWNEtIUm9hWE11WDJGMGRISkpibVJsZUNrN1hHNWNiaUFnSUNCMGFHbHpMbDlpZFdsc1pFbHVaR1Y0S0NrN1hHNGdJQ0FnZEdocGN5NTFjR1JoZEdVb0tUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QjFjR1JoZEdVb0tUb2dkbTlwWkNCN1hHNGdJQ0FnYkdWMElITm9iM1ZzWkZWd1pHRjBaVWRsYjIxbGRISjVJRDBnWm1Gc2MyVTdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NWZZM1Z5Y21WdWRGUm9aWFJoSUNFOVBTQjBhR2x6TG5Sb1pYUmhLU0I3WEc0Z0lDQWdJQ0IwYUdsekxsOWpkWEp5Wlc1MFZHaGxkR0VnUFNCMGFHbHpMblJvWlhSaE8xeHVJQ0FnSUNBZ2MyaHZkV3hrVlhCa1lYUmxSMlZ2YldWMGNua2dQU0IwY25WbE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaDBhR2x6TGw5amRYSnlaVzUwVW1Ga2FYVnpJQ0U5UFNCMGFHbHpMbkpoWkdsMWN5a2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZlkzVnljbVZ1ZEZKaFpHbDFjeUE5SUhSb2FYTXVjbUZrYVhWek8xeHVJQ0FnSUNBZ2MyaHZkV3hrVlhCa1lYUmxSMlZ2YldWMGNua2dQU0IwY25WbE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHphRzkxYkdSVmNHUmhkR1ZIWlc5dFpYUnllU2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZZblZwYkdSUWIzTnBkR2x2YmlncE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1gySjFhV3hrVUc5emFYUnBiMjRvS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdkR2hwY3k1ZllYUjBjbEJ2Y3k1elpYUllXVm9vTUN3Z01DNHdMQ0F3TGpBc0lEQXVNQ2s3WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SURZME95QnBLeXNwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJSFFnUFNBb2FTQXZJRFl6TGpBcElDb2dkR2hwY3k1ZlkzVnljbVZ1ZEZSb1pYUmhPMXh1WEc0Z0lDQWdJQ0IwYUdsekxsOWhkSFJ5VUc5ekxuTmxkRmhaV2locElDc2dNU3dnZEdocGN5NWZZM1Z5Y21WdWRGSmhaR2wxY3lBcUlFMWhkR2d1YzJsdUtIUXBMQ0F3TGpBc0lIUm9hWE11WDJOMWNuSmxiblJTWVdScGRYTWdLaUJOWVhSb0xtTnZjeWgwS1NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NWZZWFIwY2xCdmN5NXVaV1ZrYzFWd1pHRjBaU0E5SUhSeWRXVTdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJRjlpZFdsc1pFbHVaR1Y0S0NrNklIWnZhV1FnZTF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnTmpNN0lHa3JLeWtnZTF4dUlDQWdJQ0FnZEdocGN5NWZZWFIwY2tsdVpHVjRMbk5sZEZoWldpaHBJQ29nTXl3Z01Dd2dhU0FySURFc0lHa2dLeUF5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxsOWhkSFJ5U1c1a1pYZ3VibVZsWkhOVmNHUmhkR1VnUFNCMGNuVmxPMXh1SUNCOVhHNTlYRzRpTENKcGJYQnZjblFnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5Qk1hVzVsUVc1a1UzQm9aWEpsUW5WbVptVnlSMlZ2YldWMGNua2daWGgwWlc1a2N5QlVTRkpGUlM1Q2RXWm1aWEpIWlc5dFpYUnllU0I3WEc0Z0lIQjFZbXhwWXlCeVlXUnBkWE02SUc1MWJXSmxjanRjYmlBZ2NIVmliR2xqSUhSaGFXdzZJRlJJVWtWRkxsWmxZM1J2Y2pNN1hHNGdJSEJ5YVhaaGRHVWdYMk4xY25KbGJuUlNZV1JwZFhNNklHNTFiV0psY2p0Y2JpQWdjSEpwZG1GMFpTQmZZM1Z5Y21WdWRGUmhhV3c2SUZSSVVrVkZMbFpsWTNSdmNqTTdYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnWDJGMGRISlFiM002SUZSSVVrVkZMa0oxWm1abGNrRjBkSEpwWW5WMFpUdGNiaUFnY0hKcGRtRjBaU0J5WldGa2IyNXNlU0JmWVhSMGNrbHVaR1Y0T2lCVVNGSkZSUzVDZFdabVpYSkJkSFJ5YVdKMWRHVTdYRzVjYmlBZ2NIVmliR2xqSUdOdmJuTjBjblZqZEc5eUtDa2dlMXh1SUNBZ0lITjFjR1Z5S0NrN1hHNWNiaUFnSUNCMGFHbHpMbkpoWkdsMWN5QTlJREF1TUR0Y2JpQWdJQ0IwYUdsekxsOWpkWEp5Wlc1MFVtRmthWFZ6SUQwZ01DNHdPMXh1WEc0Z0lDQWdkR2hwY3k1MFlXbHNJRDBnYm1WM0lGUklVa1ZGTGxabFkzUnZjak1vS1R0Y2JpQWdJQ0IwYUdsekxsOWpkWEp5Wlc1MFZHRnBiQ0E5SUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0NrN1hHNWNiaUFnSUNCMGFHbHpMbDloZEhSeVVHOXpJRDBnYm1WM0lGUklVa1ZGTGtKMVptWmxja0YwZEhKcFluVjBaU2h1WlhjZ1JteHZZWFF6TWtGeWNtRjVLREk1TkNrc0lETXBPMXh1SUNBZ0lIUm9hWE11YzJWMFFYUjBjbWxpZFhSbEtDZHdiM05wZEdsdmJpY3NJSFJvYVhNdVgyRjBkSEpRYjNNcE8xeHVYRzRnSUNBZ2RHaHBjeTVmWVhSMGNrbHVaR1Y0SUQwZ2JtVjNJRlJJVWtWRkxrSjFabVpsY2tGMGRISnBZblYwWlNodVpYY2dWV2x1ZERFMlFYSnlZWGtvTVRrMEtTd2dNU2s3WEc0Z0lDQWdkR2hwY3k1elpYUkpibVJsZUNoMGFHbHpMbDloZEhSeVNXNWtaWGdwTzF4dVhHNGdJQ0FnZEdocGN5NWZZblZwYkdSSmJtUmxlQ2dwTzF4dUlDQWdJSFJvYVhNdWRYQmtZWFJsS0NrN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2RYQmtZWFJsS0NrNklIWnZhV1FnZTF4dUlDQWdJR3hsZENCemFHOTFiR1JWY0dSaGRHVkhaVzl0WlhSeWVTQTlJR1poYkhObE8xeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdVgyTjFjbkpsYm5SU1lXUnBkWE1nSVQwOUlIUm9hWE11Y21Ga2FYVnpLU0I3WEc0Z0lDQWdJQ0IwYUdsekxsOWpkWEp5Wlc1MFVtRmthWFZ6SUQwZ2RHaHBjeTV5WVdScGRYTTdYRzRnSUNBZ0lDQnphRzkxYkdSVmNHUmhkR1ZIWlc5dFpYUnllU0E5SUhSeWRXVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLQ0YwYUdsekxsOWpkWEp5Wlc1MFZHRnBiQzVsY1hWaGJITW9kR2hwY3k1MFlXbHNLU2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZZM1Z5Y21WdWRGUmhhV3d1WTI5d2VTaDBhR2x6TG5SaGFXd3BPMXh1SUNBZ0lDQWdjMmh2ZFd4a1ZYQmtZWFJsUjJWdmJXVjBjbmtnUFNCMGNuVmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h6YUc5MWJHUlZjR1JoZEdWSFpXOXRaWFJ5ZVNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmWW5WcGJHUlFiM05wZEdsdmJpZ3BPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdYMkoxYVd4a1VHOXphWFJwYjI0b0tUb2dkbTlwWkNCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENBek1qc2dhU3NyS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0IwSUQwZ0tHa2dMeUF4Tmk0d0tTQXFJRTFoZEdndVVFazdYRzVjYmlBZ0lDQWdJSFJvYVhNdVgyRjBkSEpRYjNNdWMyVjBXRmxhS0drc0lFMWhkR2d1WTI5ektIUXBMQ0JOWVhSb0xuTnBiaWgwS1N3Z01DNHdLVHRjYmlBZ0lDQWdJSFJvYVhNdVgyRjBkSEpRYjNNdWMyVjBXRmxhS0RNeUlDc2dhU3dnTUM0d0xDQk5ZWFJvTG1OdmN5aDBLU3dnVFdGMGFDNXphVzRvZENrcE8xeHVJQ0FnSUNBZ2RHaHBjeTVmWVhSMGNsQnZjeTV6WlhSWVdWb29OalFnS3lCcExDQk5ZWFJvTG5OcGJpaDBLU3dnTUM0d0xDQk5ZWFJvTG1OdmN5aDBLU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkR2hwY3k1elkyRnNaU2gwYUdsekxsOWpkWEp5Wlc1MFVtRmthWFZ6TENCMGFHbHpMbDlqZFhKeVpXNTBVbUZrYVhWekxDQjBhR2x6TGw5amRYSnlaVzUwVW1Ga2FYVnpLVHRjYmlBZ0lDQjBhR2x6TG5SeVlXNXpiR0YwWlNoMGFHbHpMbDlqZFhKeVpXNTBWR0ZwYkM1NExDQjBhR2x6TGw5amRYSnlaVzUwVkdGcGJDNTVMQ0IwYUdsekxsOWpkWEp5Wlc1MFZHRnBiQzU2S1R0Y2JseHVJQ0FnSUhSb2FYTXVYMkYwZEhKUWIzTXVjMlYwV0ZsYUtEazJMQ0F3TENBd0xDQXdLVHRjYmlBZ0lDQjBhR2x6TGw5aGRIUnlVRzl6TG5ObGRGaFpXaWc1Tnl3Z2RHaHBjeTVmWTNWeWNtVnVkRlJoYVd3dWVDd2dkR2hwY3k1ZlkzVnljbVZ1ZEZSaGFXd3VlU3dnZEdocGN5NWZZM1Z5Y21WdWRGUmhhV3d1ZWlrN1hHNWNiaUFnSUNCMGFHbHpMbDloZEhSeVVHOXpMbTVsWldSelZYQmtZWFJsSUQwZ2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWDJKMWFXeGtTVzVrWlhnb0tUb2dkbTlwWkNCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENBek1qc2dhU3NyS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JwTVNBOUlDaHBJQ3NnTVNrZ0pTQXpNanRjYmx4dUlDQWdJQ0FnZEdocGN5NWZZWFIwY2tsdVpHVjRMbk5sZEZoWktHa2dLaUF5TENCcExDQnBNU2s3WEc0Z0lDQWdJQ0IwYUdsekxsOWhkSFJ5U1c1a1pYZ3VjMlYwV0Zrb05qUWdLeUJwSUNvZ01pd2dNeklnS3lCcExDQXpNaUFySUdreEtUdGNiaUFnSUNBZ0lIUm9hWE11WDJGMGRISkpibVJsZUM1elpYUllXU2d4TWpnZ0t5QnBJQ29nTWl3Z05qUWdLeUJwTENBMk5DQXJJR2t4S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdkR2hwY3k1ZllYUjBja2x1WkdWNExuTmxkRmhaS0RFNU1pd2dPVFlzSURrM0tUdGNibHh1SUNBZ0lIUm9hWE11WDJGMGRISkpibVJsZUM1dVpXVmtjMVZ3WkdGMFpTQTlJSFJ5ZFdVN1hHNGdJSDFjYm4xY2JpSXNJbWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCN0lGWlNUVXh2YjJ0QmRDQjlJR1p5YjIwZ0p5NHVMMVpTVFV4dmIydEJkQ2M3WEc1cGJYQnZjblFnZXlCR1lXNUNkV1ptWlhKSFpXOXRaWFJ5ZVNCOUlHWnliMjBnSnk0dmRYUnBiSE12Um1GdVFuVm1abVZ5UjJWdmJXVjBjbmtuTzF4dWFXMXdiM0owSUhzZ1RHbHVaVUZ1WkZOd2FHVnlaVUoxWm1abGNrZGxiMjFsZEhKNUlIMGdabkp2YlNBbkxpOTFkR2xzY3k5TWFXNWxRVzVrVTNCb1pYSmxRblZtWm1WeVIyVnZiV1YwY25rbk8xeHVYRzVqYjI1emRDQmZjWFZoZEVFZ1BTQnVaWGNnVkVoU1JVVXVVWFZoZEdWeWJtbHZiaWdwTzF4dVkyOXVjM1FnWDNGMVlYUkNJRDBnYm1WM0lGUklVa1ZGTGxGMVlYUmxjbTVwYjI0b0tUdGNibU52Ym5OMElGOTJNMEVnUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncE8xeHVZMjl1YzNRZ1gzWXpRaUE5SUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0NrN1hHNWNibU52Ym5OMElGTlJVbFJmTWw5UFZrVlNYeklnUFNCTllYUm9Mbk54Y25Rb01pNHdLU0F2SURJdU1EdGNibU52Ym5OMElGRlZRVlJmV0ZsZlExYzVNQ0E5SUc1bGR5QlVTRkpGUlM1UmRXRjBaWEp1YVc5dUtEQXNJREFzSUMxVFVWSlVYekpmVDFaRlVsOHlMQ0JUVVZKVVh6SmZUMVpGVWw4eUtUdGNibU52Ym5OMElGWkZRek5mVUU5VFNWUkpWa1ZmV1NBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektEQXVNQ3dnTVM0d0xDQXdMakFwTzF4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVmxKTlRHOXZhMEYwU0dWc2NHVnlJR1Y0ZEdWdVpITWdWRWhTUlVVdVIzSnZkWEFnZTF4dUlDQndkV0pzYVdNZ2NtVmhaRzl1YkhrZ2RuSnRURzl2YTBGME9pQldVazFNYjI5clFYUTdYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnWDIxbGMyaFpZWGM2SUZSSVVrVkZMazFsYzJnOFJtRnVRblZtWm1WeVIyVnZiV1YwY25rc0lGUklVa1ZGTGsxbGMyaENZWE5wWTAxaGRHVnlhV0ZzUGp0Y2JpQWdjSEpwZG1GMFpTQnlaV0ZrYjI1c2VTQmZiV1Z6YUZCcGRHTm9PaUJVU0ZKRlJTNU5aWE5vUEVaaGJrSjFabVpsY2tkbGIyMWxkSEo1TENCVVNGSkZSUzVOWlhOb1FtRnphV05OWVhSbGNtbGhiRDQ3WEc0Z0lIQnlhWFpoZEdVZ2NtVmhaRzl1YkhrZ1gyeHBibVZVWVhKblpYUTZJRlJJVWtWRkxreHBibVZUWldkdFpXNTBjenhNYVc1bFFXNWtVM0JvWlhKbFFuVm1abVZ5UjJWdmJXVjBjbmtzSUZSSVVrVkZMa3hwYm1WQ1lYTnBZMDFoZEdWeWFXRnNQanRjYmx4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9iRzl2YTBGME9pQldVazFNYjI5clFYUXBJSHRjYmlBZ0lDQnpkWEJsY2lncE8xeHVJQ0FnSUhSb2FYTXViV0YwY21sNFFYVjBiMVZ3WkdGMFpTQTlJR1poYkhObE8xeHVYRzRnSUNBZ2RHaHBjeTUyY20xTWIyOXJRWFFnUFNCc2IyOXJRWFE3WEc1Y2JpQWdJQ0I3WEc0Z0lDQWdJQ0JqYjI1emRDQm5aVzl0WlhSeWVTQTlJRzVsZHlCR1lXNUNkV1ptWlhKSFpXOXRaWFJ5ZVNncE8xeHVJQ0FnSUNBZ1oyVnZiV1YwY25rdWNtRmthWFZ6SUQwZ01DNDFPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQnRZWFJsY21saGJDQTlJRzVsZHlCVVNGSkZSUzVOWlhOb1FtRnphV05OWVhSbGNtbGhiQ2g3WEc0Z0lDQWdJQ0FnSUdOdmJHOXlPaUF3ZURBd1ptWXdNQ3hjYmlBZ0lDQWdJQ0FnZEhKaGJuTndZWEpsYm5RNklIUnlkV1VzWEc0Z0lDQWdJQ0FnSUc5d1lXTnBkSGs2SURBdU5TeGNiaUFnSUNBZ0lDQWdjMmxrWlRvZ1ZFaFNSVVV1Ukc5MVlteGxVMmxrWlN4Y2JpQWdJQ0FnSUNBZ1pHVndkR2hVWlhOME9pQm1ZV3h6WlN4Y2JpQWdJQ0FnSUNBZ1pHVndkR2hYY21sMFpUb2dabUZzYzJVc1hHNGdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdkR2hwY3k1ZmJXVnphRkJwZEdOb0lEMGdibVYzSUZSSVVrVkZMazFsYzJnb1oyVnZiV1YwY25rc0lHMWhkR1Z5YVdGc0tUdGNiaUFnSUNBZ0lIUm9hWE11WVdSa0tIUm9hWE11WDIxbGMyaFFhWFJqYUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZTF4dUlDQWdJQ0FnWTI5dWMzUWdaMlZ2YldWMGNua2dQU0J1WlhjZ1JtRnVRblZtWm1WeVIyVnZiV1YwY25rb0tUdGNiaUFnSUNBZ0lHZGxiMjFsZEhKNUxuSmhaR2wxY3lBOUlEQXVOVHRjYmx4dUlDQWdJQ0FnWTI5dWMzUWdiV0YwWlhKcFlXd2dQU0J1WlhjZ1ZFaFNSVVV1VFdWemFFSmhjMmxqVFdGMFpYSnBZV3dvZTF4dUlDQWdJQ0FnSUNCamIyeHZjam9nTUhobVpqQXdNREFzWEc0Z0lDQWdJQ0FnSUhSeVlXNXpjR0Z5Wlc1ME9pQjBjblZsTEZ4dUlDQWdJQ0FnSUNCdmNHRmphWFI1T2lBd0xqVXNYRzRnSUNBZ0lDQWdJSE5wWkdVNklGUklVa1ZGTGtSdmRXSnNaVk5wWkdVc1hHNGdJQ0FnSUNBZ0lHUmxjSFJvVkdWemREb2dabUZzYzJVc1hHNGdJQ0FnSUNBZ0lHUmxjSFJvVjNKcGRHVTZJR1poYkhObExGeHVJQ0FnSUNBZ2ZTazdYRzVjYmlBZ0lDQWdJSFJvYVhNdVgyMWxjMmhaWVhjZ1BTQnVaWGNnVkVoU1JVVXVUV1Z6YUNoblpXOXRaWFJ5ZVN3Z2JXRjBaWEpwWVd3cE8xeHVJQ0FnSUNBZ2RHaHBjeTVoWkdRb2RHaHBjeTVmYldWemFGbGhkeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdlMXh1SUNBZ0lDQWdZMjl1YzNRZ1oyVnZiV1YwY25rZ1BTQnVaWGNnVEdsdVpVRnVaRk53YUdWeVpVSjFabVpsY2tkbGIyMWxkSEo1S0NrN1hHNGdJQ0FnSUNCblpXOXRaWFJ5ZVM1eVlXUnBkWE1nUFNBd0xqRTdYRzVjYmlBZ0lDQWdJR052Ym5OMElHMWhkR1Z5YVdGc0lEMGdibVYzSUZSSVVrVkZMa3hwYm1WQ1lYTnBZMDFoZEdWeWFXRnNLSHRjYmlBZ0lDQWdJQ0FnWTI5c2IzSTZJREI0Wm1abVptWm1MRnh1SUNBZ0lDQWdJQ0JrWlhCMGFGUmxjM1E2SUdaaGJITmxMRnh1SUNBZ0lDQWdJQ0JrWlhCMGFGZHlhWFJsT2lCbVlXeHpaU3hjYmlBZ0lDQWdJSDBwTzF4dVhHNGdJQ0FnSUNCMGFHbHpMbDlzYVc1bFZHRnlaMlYwSUQwZ2JtVjNJRlJJVWtWRkxreHBibVZUWldkdFpXNTBjeWhuWlc5dFpYUnllU3dnYldGMFpYSnBZV3dwTzF4dUlDQWdJQ0FnZEdocGN5NWZiR2x1WlZSaGNtZGxkQzVtY25WemRIVnRRM1ZzYkdWa0lEMGdabUZzYzJVN1hHNGdJQ0FnSUNCMGFHbHpMbUZrWkNoMGFHbHpMbDlzYVc1bFZHRnlaMlYwS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWkdsemNHOXpaU2dwT2lCMmIybGtJSHRjYmlBZ0lDQjBhR2x6TGw5dFpYTm9XV0YzTG1kbGIyMWxkSEo1TG1ScGMzQnZjMlVvS1R0Y2JpQWdJQ0IwYUdsekxsOXRaWE5vV1dGM0xtMWhkR1Z5YVdGc0xtUnBjM0J2YzJVb0tUdGNibHh1SUNBZ0lIUm9hWE11WDIxbGMyaFFhWFJqYUM1blpXOXRaWFJ5ZVM1a2FYTndiM05sS0NrN1hHNGdJQ0FnZEdocGN5NWZiV1Z6YUZCcGRHTm9MbTFoZEdWeWFXRnNMbVJwYzNCdmMyVW9LVHRjYmx4dUlDQWdJSFJvYVhNdVgyeHBibVZVWVhKblpYUXVaMlZ2YldWMGNua3VaR2x6Y0c5elpTZ3BPMXh1SUNBZ0lIUm9hWE11WDJ4cGJtVlVZWEpuWlhRdWJXRjBaWEpwWVd3dVpHbHpjRzl6WlNncE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklIVndaR0YwWlUxaGRISnBlRmR2Y214a0tHWnZjbU5sT2lCaWIyOXNaV0Z1S1RvZ2RtOXBaQ0I3WEc0Z0lDQWdMeThnZFhCa1lYUmxJR2RsYjIxbGRISnBaWE5jYmlBZ0lDQmpiMjV6ZENCNVlYY2dQU0JVU0ZKRlJTNU5ZWFJvVlhScGJITXVSRVZITWxKQlJDQXFJSFJvYVhNdWRuSnRURzl2YTBGMExubGhkenRjYmlBZ0lDQjBhR2x6TGw5dFpYTm9XV0YzTG1kbGIyMWxkSEo1TG5Sb1pYUmhJRDBnZVdGM08xeHVJQ0FnSUhSb2FYTXVYMjFsYzJoWllYY3VaMlZ2YldWMGNua3VkWEJrWVhSbEtDazdYRzVjYmlBZ0lDQmpiMjV6ZENCd2FYUmphQ0E5SUZSSVVrVkZMazFoZEdoVmRHbHNjeTVFUlVjeVVrRkVJQ29nZEdocGN5NTJjbTFNYjI5clFYUXVjR2wwWTJnN1hHNGdJQ0FnZEdocGN5NWZiV1Z6YUZCcGRHTm9MbWRsYjIxbGRISjVMblJvWlhSaElEMGdjR2wwWTJnN1hHNGdJQ0FnZEdocGN5NWZiV1Z6YUZCcGRHTm9MbWRsYjIxbGRISjVMblZ3WkdGMFpTZ3BPMXh1WEc0Z0lDQWdMeThnWjJWMElIZHZjbXhrSUhCdmMybDBhVzl1SUdGdVpDQnhkV0YwWlhKdWFXOXVYRzRnSUNBZ2RHaHBjeTUyY20xTWIyOXJRWFF1WjJWMFRHOXZhMEYwVjI5eWJHUlFiM05wZEdsdmJpaGZkak5CS1R0Y2JpQWdJQ0IwYUdsekxuWnliVXh2YjJ0QmRDNW5aWFJNYjI5clFYUlhiM0pzWkZGMVlYUmxjbTVwYjI0b1gzRjFZWFJCS1R0Y2JseHVJQ0FnSUM4dklHTmhiR04xYkdGMFpTQnliM1JoZEdsdmJpQjFjMmx1WnlCbVlXTmxSbkp2Ym5SY2JpQWdJQ0JmY1hWaGRFRXViWFZzZEdsd2JIa29kR2hwY3k1MmNtMU1iMjlyUVhRdVoyVjBSbUZqWlVaeWIyNTBVWFZoZEdWeWJtbHZiaWhmY1hWaGRFSXBLVHRjYmx4dUlDQWdJQzh2SUhObGRDQjBjbUZ1YzJadmNtMGdkRzhnYldWemFHVnpYRzRnSUNBZ2RHaHBjeTVmYldWemFGbGhkeTV3YjNOcGRHbHZiaTVqYjNCNUtGOTJNMEVwTzF4dUlDQWdJSFJvYVhNdVgyMWxjMmhaWVhjdWNYVmhkR1Z5Ym1sdmJpNWpiM0I1S0Y5eGRXRjBRU2s3WEc1Y2JpQWdJQ0IwYUdsekxsOXRaWE5vVUdsMFkyZ3VjRzl6YVhScGIyNHVZMjl3ZVNoZmRqTkJLVHRjYmlBZ0lDQjBhR2x6TGw5dFpYTm9VR2wwWTJndWNYVmhkR1Z5Ym1sdmJpNWpiM0I1S0Y5eGRXRjBRU2s3WEc0Z0lDQWdkR2hwY3k1ZmJXVnphRkJwZEdOb0xuRjFZWFJsY201cGIyNHViWFZzZEdsd2JIa29YM0YxWVhSQ0xuTmxkRVp5YjIxQmVHbHpRVzVuYkdVb1ZrVkRNMTlRVDFOSlZFbFdSVjlaTENCNVlYY3BLVHRjYmlBZ0lDQjBhR2x6TGw5dFpYTm9VR2wwWTJndWNYVmhkR1Z5Ym1sdmJpNXRkV3gwYVhCc2VTaFJWVUZVWDFoWlgwTlhPVEFwTzF4dVhHNGdJQ0FnTHk4Z2RYQmtZWFJsSUhSaGNtZGxkQ0JzYVc1bElHRnVaQ0J6Y0dobGNtVmNiaUFnSUNCamIyNXpkQ0I3SUhSaGNtZGxkQ3dnWVhWMGIxVndaR0YwWlNCOUlEMGdkR2hwY3k1MmNtMU1iMjlyUVhRN1hHNGdJQ0FnYVdZZ0tIUmhjbWRsZENBaFBTQnVkV3hzSUNZbUlHRjFkRzlWY0dSaGRHVXBJSHRjYmlBZ0lDQWdJSFJoY21kbGRDNW5aWFJYYjNKc1pGQnZjMmwwYVc5dUtGOTJNMElwTG5OMVlpaGZkak5CS1R0Y2JpQWdJQ0FnSUhSb2FYTXVYMnhwYm1WVVlYSm5aWFF1WjJWdmJXVjBjbmt1ZEdGcGJDNWpiM0I1S0Y5Mk0wSXBPMXh1SUNBZ0lDQWdkR2hwY3k1ZmJHbHVaVlJoY21kbGRDNW5aVzl0WlhSeWVTNTFjR1JoZEdVb0tUdGNiaUFnSUNBZ0lIUm9hWE11WDJ4cGJtVlVZWEpuWlhRdWNHOXphWFJwYjI0dVkyOXdlU2hmZGpOQktUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QmhjSEJzZVNCMGNtRnVjMlp2Y20wZ2RHOGdiV1Z6YUdWelhHNGdJQ0FnYzNWd1pYSXVkWEJrWVhSbFRXRjBjbWw0VjI5eWJHUW9abTl5WTJVcE8xeHVJQ0I5WEc1OVhHNGlMQ0pwYlhCdmNuUWdLaUJoY3lCVVNGSkZSU0JtY205dElDZDBhSEpsWlNjN1hHNWNibU52Ym5OMElGOXdiM05wZEdsdmJpQTlJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLQ2s3WEc1amIyNXpkQ0JmYzJOaGJHVWdQU0J1WlhjZ1ZFaFNSVVV1Vm1WamRHOXlNeWdwTzF4dVhHNHZLaXBjYmlBcUlFRWdjbVZ3YkdGalpXMWxiblFnYjJZZ1lFOWlhbVZqZERORUxtZGxkRmR2Y214a1VYVmhkR1Z5Ym1sdmJtQXVYRzRnS2lCRmVIUnlZV04wSUhSb1pTQjNiM0pzWkNCeGRXRjBaWEp1YVc5dUlHOW1JR0Z1SUc5aWFtVmpkQ0JtY205dElHbDBjeUIzYjNKc1pDQnpjR0ZqWlNCdFlYUnlhWGdzSUhkcGRHaHZkWFFnWTJGc2JHbHVaeUJnVDJKcVpXTjBNMFF1ZFhCa1lYUmxWMjl5YkdSTllYUnlhWGhnTGx4dUlDb2dWWE5sSUhSb2FYTWdkMmhsYmlCNWIzVW5jbVVnYzNWeVpTQjBhR0YwSUhSb1pTQjNiM0pzWkNCdFlYUnlhWGdnYVhNZ2RYQXRkRzh0WkdGMFpTNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2IySnFaV04wSUZSb1pTQnZZbXBsWTNSY2JpQXFJRUJ3WVhKaGJTQnZkWFFnUVNCMFlYSm5aWFFnY1hWaGRHVnlibWx2Ymx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwVjI5eWJHUlJkV0YwWlhKdWFXOXVUR2wwWlNodlltcGxZM1E2SUZSSVVrVkZMazlpYW1WamRETkVMQ0J2ZFhRNklGUklVa1ZGTGxGMVlYUmxjbTVwYjI0cE9pQlVTRkpGUlM1UmRXRjBaWEp1YVc5dUlIdGNiaUFnYjJKcVpXTjBMbTFoZEhKcGVGZHZjbXhrTG1SbFkyOXRjRzl6WlNoZmNHOXphWFJwYjI0c0lHOTFkQ3dnWDNOallXeGxLVHRjYmlBZ2NtVjBkWEp1SUc5MWREdGNibjFjYmlJc0ltbHRjRzl5ZENBcUlHRnpJRlJJVWtWRklHWnliMjBnSjNSb2NtVmxKenRjYmx4dUx5b3FYRzRnS2lCRFlXeGpkV3hoZEdVZ1lYcHBiWFYwYUNBdklHRnNkR2wwZFdSbElHRnVaMnhsY3lCbWNtOXRJR0VnZG1WamRHOXlMbHh1SUNwY2JpQXFJRlJvYVhNZ2NtVjBkWEp1Y3lCaElHUnBabVpsY21WdVkyVWdiMllnWVc1bmJHVnpJR1p5YjIwZ0tERXNJREFzSURBcExseHVJQ29nUVhwcGJYVjBhQ0J5WlhCeVpYTmxiblJ6SUdGdUlHRnVaMnhsSUdGeWIzVnVaQ0JaSUdGNGFYTXVYRzRnS2lCQmJIUnBkSFZrWlNCeVpYQnlaWE5sYm5SeklHRnVJR0Z1WjJ4bElHRnliM1Z1WkNCYUlHRjRhWE11WEc0Z0tpQkpkQ0JwY3lCeWIzUmhkR1ZrSUdsdUlHbHVkSEpwYm5OcFl5QlpMVm9nYjNKa1pYSXVYRzRnS2x4dUlDb2dRSEJoY21GdElIWmxZM1J2Y2lCVWFHVWdkbVZqZEc5eVhHNGdLaUJBY21WMGRYSnVjeUJCSUhSMWNHeGxJR052Ym5SaGFXNXpJSFIzYnlCaGJtZHNaWE1zSUdCYklHRjZhVzExZEdnc0lHRnNkR2wwZFdSbElGMWdYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCallXeGpRWHBwYlhWMGFFRnNkR2wwZFdSbEtIWmxZM1J2Y2pvZ1ZFaFNSVVV1Vm1WamRHOXlNeWs2SUZ0aGVtbHRkWFJvT2lCdWRXMWlaWElzSUdGc2RHbDBkV1JsT2lCdWRXMWlaWEpkSUh0Y2JpQWdjbVYwZFhKdUlGdE5ZWFJvTG1GMFlXNHlLQzEyWldOMGIzSXVlaXdnZG1WamRHOXlMbmdwTENCTllYUm9MbUYwWVc0eUtIWmxZM1J2Y2k1NUxDQk5ZWFJvTG5OeGNuUW9kbVZqZEc5eUxuZ2dLaUIyWldOMGIzSXVlQ0FySUhabFkzUnZjaTU2SUNvZ2RtVmpkRzl5TG5vcEtWMDdYRzU5WEc0aUxDSXZLaXBjYmlBcUlFMWhhMlVnYzNWeVpTQjBhR1VnWVc1bmJHVWdhWE1nZDJsMGFHbHVJQzFRU1NCMGJ5QlFTUzVjYmlBcVhHNGdLaUJBWlhoaGJYQnNaVnh1SUNvZ1lHQmdhbk5jYmlBcUlITmhibWwwYVhwbFFXNW5iR1VvTVM0MUlDb2dUV0YwYUM1UVNTa2dMeThnTFRBdU5TQXFJRkJKWEc0Z0tpQmdZR0JjYmlBcVhHNGdLaUJBY0dGeVlXMGdZVzVuYkdVZ1FXNGdhVzV3ZFhRZ1lXNW5iR1ZjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlITmhibWwwYVhwbFFXNW5iR1VvWVc1bmJHVTZJRzUxYldKbGNpazZJRzUxYldKbGNpQjdYRzRnSUdOdmJuTjBJSEp2ZFc1a1ZIVnliaUE5SUUxaGRHZ3VjbTkxYm1Rb1lXNW5iR1VnTHlBeUxqQWdMeUJOWVhSb0xsQkpLVHRjYmlBZ2NtVjBkWEp1SUdGdVoyeGxJQzBnTWk0d0lDb2dUV0YwYUM1UVNTQXFJSEp2ZFc1a1ZIVnlianRjYm4xY2JpSXNJbWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCN0lGWlNUVWgxYldGdWIybGtJSDBnWm5KdmJTQW5MaTR2YUhWdFlXNXZhV1FuTzF4dWFXMXdiM0owSUhzZ1oyVjBWMjl5YkdSUmRXRjBaWEp1YVc5dVRHbDBaU0I5SUdaeWIyMGdKeTR1TDNWMGFXeHpMMmRsZEZkdmNteGtVWFZoZEdWeWJtbHZia3hwZEdVbk8xeHVhVzF3YjNKMElIc2djWFZoZEVsdWRtVnlkRU52YlhCaGRDQjlJR1p5YjIwZ0p5NHVMM1YwYVd4ekwzRjFZWFJKYm5abGNuUkRiMjF3WVhRbk8xeHVhVzF3YjNKMElIc2dZMkZzWTBGNmFXMTFkR2hCYkhScGRIVmtaU0I5SUdaeWIyMGdKeTR2ZFhScGJITXZZMkZzWTBGNmFXMTFkR2hCYkhScGRIVmtaU2M3WEc1cGJYQnZjblFnZEhsd1pTQjdJRlpTVFV4dmIydEJkRUZ3Y0d4cFpYSWdmU0JtY205dElDY3VMMVpTVFV4dmIydEJkRUZ3Y0d4cFpYSW5PMXh1YVcxd2IzSjBJSHNnYzJGdWFYUnBlbVZCYm1kc1pTQjlJR1p5YjIwZ0p5NHZkWFJwYkhNdmMyRnVhWFJwZW1WQmJtZHNaU2M3WEc1Y2JtTnZibk4wSUZaRlF6TmZVRTlUU1ZSSlZrVmZXaUE5SUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0RBdU1Dd2dNQzR3TENBeExqQXBPMXh1WEc1amIyNXpkQ0JmZGpOQklEMGdibVYzSUZSSVVrVkZMbFpsWTNSdmNqTW9LVHRjYm1OdmJuTjBJRjkyTTBJZ1BTQnVaWGNnVkVoU1JVVXVWbVZqZEc5eU15Z3BPMXh1WTI5dWMzUWdYM1l6UXlBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektDazdYRzVqYjI1emRDQmZjWFZoZEVFZ1BTQnVaWGNnVkVoU1JVVXVVWFZoZEdWeWJtbHZiaWdwTzF4dVkyOXVjM1FnWDNGMVlYUkNJRDBnYm1WM0lGUklVa1ZGTGxGMVlYUmxjbTVwYjI0b0tUdGNibU52Ym5OMElGOXhkV0YwUXlBOUlHNWxkeUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVLQ2s3WEc1amIyNXpkQ0JmY1hWaGRFUWdQU0J1WlhjZ1ZFaFNSVVV1VVhWaGRHVnlibWx2YmlncE8xeHVZMjl1YzNRZ1gyVjFiR1Z5UVNBOUlHNWxkeUJVU0ZKRlJTNUZkV3hsY2lncE8xeHVYRzR2S2lwY2JpQXFJRUVnWTJ4aGMzTWdZMjl1ZEhKdmJITWdaWGxsSUdkaGVtVWdiVzkyWlcxbGJuUnpJRzltSUdFZ1ZsSk5MbHh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVmxKTlRHOXZhMEYwSUh0Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCeVpXRmtiMjVzZVNCRlZVeEZVbDlQVWtSRlVpQTlJQ2RaV0Zvbk95QXZMeUI1WVhjdGNHbDBZMmd0Y205c2JGeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdiM0pwWjJsdUlHOW1JRXh2YjJ0QmRDNGdVRzl6YVhScGIyNGdiMlptYzJWMElHWnliMjBnZEdobElHaGxZV1FnWW05dVpTNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnZabVp6WlhSR2NtOXRTR1ZoWkVKdmJtVWdQU0J1WlhjZ1ZFaFNSVVV1Vm1WamRHOXlNeWdwTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJKZEhNZ1lYTnpiMk5wWVhSbFpDQjdRR3hwYm1zZ1ZsSk5TSFZ0WVc1dmFXUjlMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSEpsWVdSdmJteDVJR2gxYldGdWIybGtPaUJXVWsxSWRXMWhibTlwWkR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdobElIdEFiR2x1YXlCV1VrMU1iMjlyUVhSQmNIQnNhV1Z5ZlNCdlppQjBhR1VnVEc5dmEwRjBMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0Z3Y0d4cFpYSTZJRlpTVFV4dmIydEJkRUZ3Y0d4cFpYSTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbG1JSFJvYVhNZ2FYTWdkSEoxWlN3Z2RHaGxJRXh2YjJ0QmRDQjNhV3hzSUdKbElIVndaR0YwWldRZ1lYVjBiMjFoZEdsallXeHNlU0JpZVNCallXeHNhVzVuSUh0QWJHbHVheUIxY0dSaGRHVjlMQ0IwYjNkaGNtUnBibWNnZEdobElHUnBjbVZqZEdsdmJpQjBieUIwYUdVZ2UwQnNhVzVySUhSaGNtZGxkSDB1WEc0Z0lDQXFJR0IwY25WbFlDQmllU0JrWldaaGRXeDBMbHh1SUNBZ0tseHVJQ0FnS2lCVFpXVWdZV3h6YnpvZ2UwQnNhVzVySUhSaGNtZGxkSDFjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJoZFhSdlZYQmtZWFJsSUQwZ2RISjFaVHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWR2hsSUhSaGNtZGxkQ0J2WW1wbFkzUWdiMllnZEdobElFeHZiMnRCZEM1Y2JpQWdJQ29nVG05MFpTQjBhR0YwSUdsMElHUnZaWE1nYm05MElHMWhhMlVnWVc1NUlITmxibk5sSUdsbUlIdEFiR2x1YXlCaGRYUnZWWEJrWVhSbGZTQnBjeUJrYVhOaFlteGxaQzVjYmlBZ0lDcGNiaUFnSUNvZ1UyVmxJR0ZzYzI4NklIdEFiR2x1YXlCaGRYUnZWWEJrWVhSbGZWeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklIUmhjbWRsZEQ4NklGUklVa1ZGTGs5aWFtVmpkRE5FSUh3Z2JuVnNiRHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWR2hsSUdaeWIyNTBJR1JwY21WamRHbHZiaUJ2WmlCMGFHVWdabUZqWlM1Y2JpQWdJQ29nU1c1MFpXNWtaV1FnZEc4Z1ltVWdkWE5sWkNCbWIzSWdWbEpOSURBdU1DQmpiMjF3WVhRZ0tGWlNUU0F3TGpBZ2JXOWtaV3h6SUdGeVpTQm1ZV05wYm1jZ1dpMGdhVzV6ZEdWaFpDQnZaaUJhS3lrdVhHNGdJQ0FxSUZsdmRTQjFjM1ZoYkd4NUlHUnZiaWQwSUhkaGJuUWdkRzhnZEc5MVkyZ2dkR2hwY3k1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCbVlXTmxSbkp2Ym5RZ1BTQnVaWGNnVkVoU1JVVXVWbVZqZEc5eU15Z3dMakFzSURBdU1Dd2dNUzR3S1R0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nU1hSeklHTjFjbkpsYm5RZ1lXNW5iR1VnWVhKdmRXNWtJRmtnWVhocGN5d2dhVzRnWkdWbmNtVmxMbHh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUY5NVlYYzZJRzUxYldKbGNqdGNibHh1SUNBdktpcGNiaUFnSUNvZ1NYUnpJR04xY25KbGJuUWdZVzVuYkdVZ1lYSnZkVzVrSUZrZ1lYaHBjeXdnYVc0Z1pHVm5jbVZsTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdkbGRDQjVZWGNvS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmVXRjNPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVsMGN5QmpkWEp5Wlc1MElHRnVaMnhsSUdGeWIzVnVaQ0JaSUdGNGFYTXNJR2x1SUdSbFozSmxaUzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6WlhRZ2VXRjNLSFpoYkhWbE9pQnVkVzFpWlhJcElIdGNiaUFnSUNCMGFHbHpMbDk1WVhjZ1BTQjJZV3gxWlR0Y2JpQWdJQ0IwYUdsekxsOXVaV1ZrYzFWd1pHRjBaU0E5SUhSeWRXVTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nU1hSeklHTjFjbkpsYm5RZ1lXNW5iR1VnWVhKdmRXNWtJRmdnWVhocGN5d2dhVzRnWkdWbmNtVmxMbHh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUY5d2FYUmphRG9nYm5WdFltVnlPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpkSE1nWTNWeWNtVnVkQ0JoYm1kc1pTQmhjbTkxYm1RZ1dDQmhlR2x6TENCcGJpQmtaV2R5WldVdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBJSEJwZEdOb0tDazZJRzUxYldKbGNpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM0JwZEdOb08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWwwY3lCamRYSnlaVzUwSUdGdVoyeGxJR0Z5YjNWdVpDQllJR0Y0YVhNc0lHbHVJR1JsWjNKbFpTNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnpaWFFnY0dsMFkyZ29kbUZzZFdVNklHNTFiV0psY2lrZ2UxeHVJQ0FnSUhSb2FYTXVYM0JwZEdOb0lEMGdkbUZzZFdVN1hHNGdJQ0FnZEdocGN5NWZibVZsWkhOVmNHUmhkR1VnUFNCMGNuVmxPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZOd1pXTnBabWxsY3lCMGFHRjBJR0Z1WjJ4bGN5QnVaV1ZrSUhSdklHSmxJR0Z3Y0d4cFpXUWdkRzhnYVhSeklGdEFiR2x1YXlCaGNIQnNhV1Z5WFM1Y2JpQWdJQ292WEc0Z0lIQnliM1JsWTNSbFpDQmZibVZsWkhOVmNHUmhkR1U2SUdKdmIyeGxZVzQ3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRmR2Y214a0lISnZkR0YwYVc5dUlHOW1JSFJvWlNCb1pXRmtJR2x1SUdsMGN5QnlaWE4wSUhCdmMyVXVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjl5WlhOMFNHVmhaRmR2Y214a1VYVmhkR1Z5Ym1sdmJqb2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJqdGNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjSEpsWTJGMFpXUWdWWE5sSUh0QWJHbHVheUJuWlhSRmRXeGxjbjBnYVc1emRHVmhaQzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJuWlhRZ1pYVnNaWElvS1RvZ1ZFaFNSVVV1UlhWc1pYSWdlMXh1SUNBZ0lHTnZibk52YkdVdWQyRnliaWduVmxKTlRHOXZhMEYwT2lCbGRXeGxjaUJwY3lCa1pYQnlaV05oZEdWa0xpQjFjMlVnWjJWMFJYVnNaWElvS1NCcGJuTjBaV0ZrTGljcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaMlYwUlhWc1pYSW9ibVYzSUZSSVVrVkZMa1YxYkdWeUtDa3BPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOeVpXRjBaU0JoSUc1bGR5QjdRR3hwYm1zZ1ZsSk5URzl2YTBGMGZTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJR2gxYldGdWIybGtJRUVnZTBCc2FXNXJJRlpTVFVoMWJXRnViMmxrZlZ4dUlDQWdLaUJBY0dGeVlXMGdZWEJ3YkdsbGNpQkJJSHRBYkdsdWF5QldVazFNYjI5clFYUkJjSEJzYVdWeWZWeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHTnZibk4wY25WamRHOXlLR2gxYldGdWIybGtPaUJXVWsxSWRXMWhibTlwWkN3Z1lYQndiR2xsY2pvZ1ZsSk5URzl2YTBGMFFYQndiR2xsY2lrZ2UxeHVJQ0FnSUhSb2FYTXVhSFZ0WVc1dmFXUWdQU0JvZFcxaGJtOXBaRHRjYmlBZ0lDQjBhR2x6TG1Gd2NHeHBaWElnUFNCaGNIQnNhV1Z5TzF4dVhHNGdJQ0FnZEdocGN5NWZlV0YzSUQwZ01DNHdPMXh1SUNBZ0lIUm9hWE11WDNCcGRHTm9JRDBnTUM0d08xeHVJQ0FnSUhSb2FYTXVYMjVsWldSelZYQmtZWFJsSUQwZ2RISjFaVHRjYmx4dUlDQWdJSFJvYVhNdVgzSmxjM1JJWldGa1YyOXliR1JSZFdGMFpYSnVhVzl1SUQwZ2RHaHBjeTVuWlhSTWIyOXJRWFJYYjNKc1pGRjFZWFJsY201cGIyNG9ibVYzSUZSSVVrVkZMbEYxWVhSbGNtNXBiMjRvS1NrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSMlYwSUdsMGN5QjVZWGN0Y0dsMFkyZ2dZVzVuYkdWeklHRnpJR0Z1SUdCRmRXeGxjbUF1WEc0Z0lDQXFJRVJ2WlhNZ1RrOVVJR052Ym5OcFpHVnlJSHRBYkdsdWF5Qm1ZV05sUm5KdmJuUjlPeUJwZENCeVpYUjFjbTV6SUdCRmRXeGxjaWd3TENBd0xDQXdPeUJjSWxsWVdsd2lLV0FnWW5rZ1pHVm1ZWFZzZENCeVpXZGhjbVJzWlhOeklHOW1JSFJvWlNCbVlXTmxSbkp2Ym5RZ2RtRnNkV1V1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCMFlYSm5aWFFnVkdobElIUmhjbWRsZENCbGRXeGxjbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZEVWMWJHVnlLSFJoY21kbGREb2dWRWhTUlVVdVJYVnNaWElwT2lCVVNGSkZSUzVGZFd4bGNpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSaGNtZGxkQzV6WlhRb1ZFaFNSVVV1VFdGMGFGVjBhV3h6TGtSRlJ6SlNRVVFnS2lCMGFHbHpMbDl3YVhSamFDd2dWRWhTUlVVdVRXRjBhRlYwYVd4ekxrUkZSekpTUVVRZ0tpQjBhR2x6TGw5NVlYY3NJREF1TUN3Z0oxbFlXaWNwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnZjSGtnZEdobElHZHBkbVZ1SUh0QWJHbHVheUJXVWsxTWIyOXJRWFI5SUdsdWRHOGdkR2hwY3lCdmJtVXVYRzRnSUNBcUlIdEFiR2x1YXlCb2RXMWhibTlwWkgwZ2JYVnpkQ0JpWlNCellXMWxJR0Z6SUhSb1pTQnpiM1Z5WTJVZ2IyNWxMbHh1SUNBZ0tpQjdRR3hwYm1zZ1lYQndiR2xsY24wZ2QybHNiQ0J5WldabGNtVnVZMlVnZEdobElITmhiV1VnYVc1emRHRnVZMlVnWVhNZ2RHaGxJSE52ZFhKalpTQnZibVV1WEc0Z0lDQXFJRUJ3WVhKaGJTQnpiM1Z5WTJVZ1ZHaGxJSHRBYkdsdWF5QldVazFNYjI5clFYUjlJSGx2ZFNCM1lXNTBJSFJ2SUdOdmNIbGNiaUFnSUNvZ1FISmxkSFZ5Ym5NZ2RHaHBjMXh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR052Y0hrb2MyOTFjbU5sT2lCV1VrMU1iMjlyUVhRcE9pQjBhR2x6SUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVvZFcxaGJtOXBaQ0FoUFQwZ2MyOTFjbU5sTG1oMWJXRnViMmxrS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjFaU1RVeHZiMnRCZERvZ2FIVnRZVzV2YVdRZ2JYVnpkQ0JpWlNCellXMWxJR2x1SUc5eVpHVnlJSFJ2SUdOdmNIa25LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG05bVpuTmxkRVp5YjIxSVpXRmtRbTl1WlM1amIzQjVLSE52ZFhKalpTNXZabVp6WlhSR2NtOXRTR1ZoWkVKdmJtVXBPMXh1SUNBZ0lIUm9hWE11WVhCd2JHbGxjaUE5SUhOdmRYSmpaUzVoY0hCc2FXVnlPMXh1SUNBZ0lIUm9hWE11WVhWMGIxVndaR0YwWlNBOUlITnZkWEpqWlM1aGRYUnZWWEJrWVhSbE8xeHVJQ0FnSUhSb2FYTXVkR0Z5WjJWMElEMGdjMjkxY21ObExuUmhjbWRsZER0Y2JpQWdJQ0IwYUdsekxtWmhZMlZHY205dWRDNWpiM0I1S0hOdmRYSmpaUzVtWVdObFJuSnZiblFwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QmhJR05zYjI1bElHOW1JSFJvYVhNZ2UwQnNhVzVySUZaU1RVeHZiMnRCZEgwdVhHNGdJQ0FxSUU1dmRHVWdkR2hoZENCN1FHeHBibXNnYUhWdFlXNXZhV1I5SUdGdVpDQjdRR3hwYm1zZ1lYQndiR2xsY24wZ2QybHNiQ0J5WldabGNtVnVZMlVnZEdobElITmhiV1VnYVc1emRHRnVZMlVnWVhNZ2RHaHBjeUJ2Ym1VdVhHNGdJQ0FxSUVCeVpYUjFjbTV6SUVOdmNHbGxaQ0I3UUd4cGJtc2dWbEpOVEc5dmEwRjBmVnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR05zYjI1bEtDazZJRlpTVFV4dmIydEJkQ0I3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJXVWsxTWIyOXJRWFFvZEdocGN5NW9kVzFoYm05cFpDd2dkR2hwY3k1aGNIQnNhV1Z5S1M1amIzQjVLSFJvYVhNcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsYzJWMElIUm9aU0JzYjI5clFYUWdaR2x5WldOMGFXOXVJQ2g1WVhjZ1lXNWtJSEJwZEdOb0tTQjBieUIwYUdVZ2FXNXBkR2xoYkNCa2FYSmxZM1JwYjI0dVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2NtVnpaWFFvS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdkR2hwY3k1ZmVXRjNJRDBnTUM0d08xeHVJQ0FnSUhSb2FYTXVYM0JwZEdOb0lEMGdNQzR3TzF4dUlDQWdJSFJvYVhNdVgyNWxaV1J6VlhCa1lYUmxJRDBnZEhKMVpUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJIWlhRZ2FYUnpJR3h2YjJ0QmRDQndiM05wZEdsdmJpQnBiaUIzYjNKc1pDQmpiMjl5WkdsdVlYUmxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZEdGeVoyVjBJRUVnZEdGeVoyVjBJR0JVU0ZKRlJTNVdaV04wYjNJellGeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkRXh2YjJ0QmRGZHZjbXhrVUc5emFYUnBiMjRvZEdGeVoyVjBPaUJVU0ZKRlJTNVdaV04wYjNJektUb2dWRWhTUlVVdVZtVmpkRzl5TXlCN1hHNGdJQ0FnWTI5dWMzUWdhR1ZoWkNBOUlIUm9hWE11YUhWdFlXNXZhV1F1WjJWMFVtRjNRbTl1WlU1dlpHVW9KMmhsWVdRbktTRTdYRzVjYmlBZ0lDQnlaWFIxY200Z2RHRnlaMlYwTG1OdmNIa29kR2hwY3k1dlptWnpaWFJHY205dFNHVmhaRUp2Ym1VcExtRndjR3g1VFdGMGNtbDROQ2hvWldGa0xtMWhkSEpwZUZkdmNteGtLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCSFpYUWdhWFJ6SUd4dmIydEJkQ0J5YjNSaGRHbHZiaUJwYmlCM2IzSnNaQ0JqYjI5eVpHbHVZWFJsTGx4dUlDQWdLaUJFYjJWeklFNVBWQ0JqYjI1emFXUmxjaUI3UUd4cGJtc2dabUZqWlVaeWIyNTBmUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUhSaGNtZGxkQ0JCSUhSaGNtZGxkQ0JnVkVoU1JVVXVVWFZoZEdWeWJtbHZibUJjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJuWlhSTWIyOXJRWFJYYjNKc1pGRjFZWFJsY201cGIyNG9kR0Z5WjJWME9pQlVTRkpGUlM1UmRXRjBaWEp1YVc5dUtUb2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJpQjdYRzRnSUNBZ1kyOXVjM1FnYUdWaFpDQTlJSFJvYVhNdWFIVnRZVzV2YVdRdVoyVjBVbUYzUW05dVpVNXZaR1VvSjJobFlXUW5LU0U3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdaMlYwVjI5eWJHUlJkV0YwWlhKdWFXOXVUR2wwWlNob1pXRmtMQ0IwWVhKblpYUXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVkbGRDQmhJSEYxWVhSbGNtNXBiMjRnZEdoaGRDQnliM1JoZEdWeklIUm9aU0FyV2lCMWJtbDBJSFpsWTNSdmNpQnZaaUIwYUdVZ2FIVnRZVzV2YVdRZ1NHVmhaQ0IwYnlCMGFHVWdlMEJzYVc1cklHWmhZMlZHY205dWRIMGdaR2x5WldOMGFXOXVMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZEdGeVoyVjBJRUVnZEdGeVoyVjBJR0JVU0ZKRlJTNVJkV0YwWlhKdWFXOXVZRnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZEVaaFkyVkdjbTl1ZEZGMVlYUmxjbTVwYjI0b2RHRnlaMlYwT2lCVVNGSkZSUzVSZFdGMFpYSnVhVzl1S1RvZ1ZFaFNSVVV1VVhWaGRHVnlibWx2YmlCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11Wm1GalpVWnliMjUwTG1ScGMzUmhibU5sVkc5VGNYVmhjbVZrS0ZaRlF6TmZVRTlUU1ZSSlZrVmZXaWtnUENBd0xqQXhLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR0Z5WjJWMExtTnZjSGtvZEdocGN5NWZjbVZ6ZEVobFlXUlhiM0pzWkZGMVlYUmxjbTVwYjI0cExtbHVkbVZ5ZENncE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJRnRtWVdObFJuSnZiblJCZW1sdGRYUm9MQ0JtWVdObFJuSnZiblJCYkhScGRIVmtaVjBnUFNCallXeGpRWHBwYlhWMGFFRnNkR2wwZFdSbEtIUm9hWE11Wm1GalpVWnliMjUwS1R0Y2JpQWdJQ0JmWlhWc1pYSkJMbk5sZENnd0xqQXNJREF1TlNBcUlFMWhkR2d1VUVrZ0t5Qm1ZV05sUm5KdmJuUkJlbWx0ZFhSb0xDQm1ZV05sUm5KdmJuUkJiSFJwZEhWa1pTd2dKMWxhV0NjcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhSaGNtZGxkQzV6WlhSR2NtOXRSWFZzWlhJb1gyVjFiR1Z5UVNrdWNISmxiWFZzZEdsd2JIa29YM0YxWVhSRUxtTnZjSGtvZEdocGN5NWZjbVZ6ZEVobFlXUlhiM0pzWkZGMVlYUmxjbTVwYjI0cExtbHVkbVZ5ZENncEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJIWlhRZ2FYUnpJRXh2YjJ0QmRDQmthWEpsWTNScGIyNGdhVzRnZDI5eWJHUWdZMjl2Y21ScGJtRjBaUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUhSaGNtZGxkQ0JCSUhSaGNtZGxkQ0JnVkVoU1JVVXVWbVZqZEc5eU0yQmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFJNYjI5clFYUlhiM0pzWkVScGNtVmpkR2x2YmloMFlYSm5aWFE2SUZSSVVrVkZMbFpsWTNSdmNqTXBPaUJVU0ZKRlJTNVdaV04wYjNJeklIdGNiaUFnSUNCMGFHbHpMbWRsZEV4dmIydEJkRmR2Y214a1VYVmhkR1Z5Ym1sdmJpaGZjWFZoZEVJcE8xeHVJQ0FnSUhSb2FYTXVaMlYwUm1GalpVWnliMjUwVVhWaGRHVnlibWx2YmloZmNYVmhkRU1wTzF4dVhHNGdJQ0FnY21WMGRYSnVJSFJoY21kbGRGeHVJQ0FnSUNBZ0xtTnZjSGtvVmtWRE0xOVFUMU5KVkVsV1JWOWFLVnh1SUNBZ0lDQWdMbUZ3Y0d4NVVYVmhkR1Z5Ym1sdmJpaGZjWFZoZEVJcFhHNGdJQ0FnSUNBdVlYQndiSGxSZFdGMFpYSnVhVzl1S0Y5eGRXRjBReWxjYmlBZ0lDQWdJQzVoY0hCc2VVVjFiR1Z5S0hSb2FYTXVaMlYwUlhWc1pYSW9YMlYxYkdWeVFTa3BPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZObGRDQnBkSE1nYkc5dmEwRjBJSFJoY21kbGRDQndiM05wZEdsdmJpNWNiaUFnSUNwY2JpQWdJQ29nVG05MFpTQjBhR0YwSUdsMGN5QnlaWE4xYkhRZ2QybHNiQ0JpWlNCcGJuTjBZVzUwYkhrZ2IzWmxjbmR5YVhSMFpXNGdhV1lnZTBCc2FXNXJJRlpTVFV4dmIydEJkRWhsWVdRdVlYVjBiMVZ3WkdGMFpYMGdhWE1nWlc1aFlteGxaQzVjYmlBZ0lDcGNiaUFnSUNvZ1NXWWdlVzkxSUhkaGJuUWdkRzhnZEhKaFkyc2dZVzRnYjJKcVpXTjBJR052Ym5ScGJuVnZkWE5zZVN3Z2VXOTFJRzFwWjJoMElIZGhiblFnZEc4Z2RYTmxJSHRBYkdsdWF5QjBZWEpuWlhSOUlHbHVjM1JsWVdRdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQndiM05wZEdsdmJpQkJJSFJoY21kbGRDQndiM05wZEdsdmJpd2dhVzRnZDI5eWJHUWdjM0JoWTJWY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCc2IyOXJRWFFvY0c5emFYUnBiMjQ2SUZSSVVrVkZMbFpsWTNSdmNqTXBPaUIyYjJsa0lIdGNiaUFnSUNBdkx5Qk1iMjlySUdGMElHUnBjbVZqZEdsdmJpQnBiaUJzYjJOaGJDQmpiMjl5WkdsdVlYUmxYRzRnSUNBZ1kyOXVjM1FnYUdWaFpGSnZkRVJwWm1aSmJuWWdQU0JmY1hWaGRFRmNiaUFnSUNBZ0lDNWpiM0I1S0hSb2FYTXVYM0psYzNSSVpXRmtWMjl5YkdSUmRXRjBaWEp1YVc5dUtWeHVJQ0FnSUNBZ0xtMTFiSFJwY0d4NUtIRjFZWFJKYm5abGNuUkRiMjF3WVhRb2RHaHBjeTVuWlhSTWIyOXJRWFJYYjNKc1pGRjFZWFJsY201cGIyNG9YM0YxWVhSQ0tTa3BPMXh1SUNBZ0lHTnZibk4wSUdobFlXUlFiM01nUFNCMGFHbHpMbWRsZEV4dmIydEJkRmR2Y214a1VHOXphWFJwYjI0b1gzWXpRaWs3WEc0Z0lDQWdZMjl1YzNRZ2JHOXZhMEYwUkdseUlEMGdYM1l6UXk1amIzQjVLSEJ2YzJsMGFXOXVLUzV6ZFdJb2FHVmhaRkJ2Y3lrdVlYQndiSGxSZFdGMFpYSnVhVzl1S0dobFlXUlNiM1JFYVdabVNXNTJLUzV1YjNKdFlXeHBlbVVvS1R0Y2JseHVJQ0FnSUM4dklHTmhiR04xYkdGMFpTQmhibWRzWlhOY2JpQWdJQ0JqYjI1emRDQmJZWHBwYlhWMGFFWnliMjBzSUdGc2RHbDBkV1JsUm5KdmJWMGdQU0JqWVd4alFYcHBiWFYwYUVGc2RHbDBkV1JsS0hSb2FYTXVabUZqWlVaeWIyNTBLVHRjYmlBZ0lDQmpiMjV6ZENCYllYcHBiWFYwYUZSdkxDQmhiSFJwZEhWa1pWUnZYU0E5SUdOaGJHTkJlbWx0ZFhSb1FXeDBhWFIxWkdVb2JHOXZhMEYwUkdseUtUdGNiaUFnSUNCamIyNXpkQ0I1WVhjZ1BTQnpZVzVwZEdsNlpVRnVaMnhsS0dGNmFXMTFkR2hVYnlBdElHRjZhVzExZEdoR2NtOXRLVHRjYmlBZ0lDQmpiMjV6ZENCd2FYUmphQ0E5SUhOaGJtbDBhWHBsUVc1bmJHVW9ZV3gwYVhSMVpHVkdjbTl0SUMwZ1lXeDBhWFIxWkdWVWJ5azdJQzh2SUhOd2FXNXVhVzVuSUNneExDQXdMQ0F3S1NCRFExY2dZWEp2ZFc1a0lGb2dZWGhwY3lCdFlXdGxjeUIwYUdVZ2RtVmpkRzl5SUd4dmIyc2dkWEFzSUhkb2FXeGxJSE53YVc1dWFXNW5JQ2d3TENBd0xDQXhLU0JEUTFjZ1lYSnZkVzVrSUZnZ1lYaHBjeUJ0WVd0bGN5QjBhR1VnZG1WamRHOXlJR3h2YjJzZ1pHOTNibHh1WEc0Z0lDQWdMeThnWVhCd2JIa2dZVzVuYkdWelhHNGdJQ0FnZEdocGN5NWZlV0YzSUQwZ1ZFaFNSVVV1VFdGMGFGVjBhV3h6TGxKQlJESkVSVWNnS2lCNVlYYzdYRzRnSUNBZ2RHaHBjeTVmY0dsMFkyZ2dQU0JVU0ZKRlJTNU5ZWFJvVlhScGJITXVVa0ZFTWtSRlJ5QXFJSEJwZEdOb08xeHVYRzRnSUNBZ2RHaHBjeTVmYm1WbFpITlZjR1JoZEdVZ1BTQjBjblZsTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGVndaR0YwWlNCMGFHVWdWbEpOVEc5dmEwRjBTR1ZoWkM1Y2JpQWdJQ29nU1dZZ2UwQnNhVzVySUdGMWRHOVZjR1JoZEdWOUlHbHpJR1Z1WVdKc1pXUXNJSFJvYVhNZ2QybHNiQ0J0WVd0bElHbDBJR3h2YjJzZ1lYUWdkR2hsSUh0QWJHbHVheUIwWVhKblpYUjlMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnWkdWc2RHRWdaR1ZzZEdGVWFXMWxMQ0JwZENCcGMyNG5kQ0IxYzJWa0lIUm9iM1ZuYUM0Z1dXOTFJR05oYmlCMWMyVWdkR2hsSUhCaGNtRnRaWFJsY2lCcFppQjViM1VnZDJGdWRDQjBieUIxYzJVZ2RHaHBjeUJwYmlCNWIzVnlJRzkzYmlCbGVIUmxibVJsWkNCN1FHeHBibXNnVmxKTlRHOXZhMEYwZlM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCMWNHUmhkR1VvWkdWc2RHRTZJRzUxYldKbGNpazZJSFp2YVdRZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG5SaGNtZGxkQ0FoUFNCdWRXeHNJQ1ltSUhSb2FYTXVZWFYwYjFWd1pHRjBaU2tnZTF4dUlDQWdJQ0FnZEdocGN5NXNiMjlyUVhRb2RHaHBjeTUwWVhKblpYUXVaMlYwVjI5eWJHUlFiM05wZEdsdmJpaGZkak5CS1NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11WDI1bFpXUnpWWEJrWVhSbEtTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5dVpXVmtjMVZ3WkdGMFpTQTlJR1poYkhObE8xeHVYRzRnSUNBZ0lDQjBhR2x6TG1Gd2NHeHBaWEl1WVhCd2JIbFpZWGRRYVhSamFDaDBhR2x6TGw5NVlYY3NJSFJvYVhNdVgzQnBkR05vS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibjFjYmlJc0ltbHRjRzl5ZENCN0lGWlNUVWgxYldGdWIybGtJSDBnWm5KdmJTQW5MaTR2YUhWdFlXNXZhV1FuTzF4dWFXMXdiM0owSUNvZ1lYTWdWRWhTUlVVZ1puSnZiU0FuZEdoeVpXVW5PMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QldVazFNYjI5clFYUkJjSEJzYVdWeUlIMGdabkp2YlNBbkxpOVdVazFNYjI5clFYUkJjSEJzYVdWeUp6dGNibWx0Y0c5eWRDQjdJRlpTVFV4dmIydEJkRkpoYm1kbFRXRndJSDBnWm5KdmJTQW5MaTlXVWsxTWIyOXJRWFJTWVc1blpVMWhjQ2M3WEc1cGJYQnZjblFnZXlCallXeGpRWHBwYlhWMGFFRnNkR2wwZFdSbElIMGdabkp2YlNBbkxpOTFkR2xzY3k5allXeGpRWHBwYlhWMGFFRnNkR2wwZFdSbEp6dGNibWx0Y0c5eWRDQjdJR2RsZEZkdmNteGtVWFZoZEdWeWJtbHZia3hwZEdVZ2ZTQm1jbTl0SUNjdUxpOTFkR2xzY3k5blpYUlhiM0pzWkZGMVlYUmxjbTVwYjI1TWFYUmxKenRjYmx4dVkyOXVjM1FnVmtWRE0xOVFUMU5KVkVsV1JWOWFJRDBnYm1WM0lGUklVa1ZGTGxabFkzUnZjak1vTUM0d0xDQXdMakFzSURFdU1DazdYRzVjYm1OdmJuTjBJRjl4ZFdGMFFTQTlJRzVsZHlCVVNGSkZSUzVSZFdGMFpYSnVhVzl1S0NrN1hHNWpiMjV6ZENCZmNYVmhkRUlnUFNCdVpYY2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJpZ3BPMXh1WTI5dWMzUWdYMlYxYkdWeVFTQTlJRzVsZHlCVVNGSkZSUzVGZFd4bGNpZ3dMakFzSURBdU1Dd2dNQzR3TENBbldWaGFKeWs3WEc1Y2JpOHFLbHh1SUNvZ1FTQmpiR0Z6Y3lCMGFHRjBJR0Z3Y0d4cFpYTWdaWGxsSUdkaGVtVWdaR2x5WldOMGFXOXVjeUIwYnlCaElGWlNUUzVjYmlBcUlFbDBJSGRwYkd3Z1ltVWdkWE5sWkNCaWVTQjdRR3hwYm1zZ1ZsSk5URzl2YTBGMGZTNWNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRlpTVFV4dmIydEJkRUp2Ym1WQmNIQnNhV1Z5SUdsdGNHeGxiV1Z1ZEhNZ1ZsSk5URzl2YTBGMFFYQndiR2xsY2lCN1hHNGdJQzhxS2x4dUlDQWdLaUJTWlhCeVpYTmxiblFnYVhSeklIUjVjR1VnYjJZZ1lYQndiR2xsY2k1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nY21WaFpHOXViSGtnZEhsd1pTQTlJQ2RpYjI1bEp6dGNibHh1SUNBdktpcGNiaUFnSUNvZ1NYUnpJR0Z6YzI5amFXRjBaV1FnZTBCc2FXNXJJRlpTVFVoMWJXRnViMmxrZlM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCeVpXRmtiMjVzZVNCb2RXMWhibTlwWkRvZ1ZsSk5TSFZ0WVc1dmFXUTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFRWdlMEJzYVc1cklGWlNUVXh2YjJ0QmRGSmhibWRsVFdGd2ZTQm1iM0lnYUc5eWFYcHZiblJoYkNCcGJuZGhjbVFnYlc5MlpXMWxiblF1SUZSb1pTQnNaV1owSUdWNVpTQnRiM1psY3lCeWFXZG9kQzRnVkdobElISnBaMmgwSUdWNVpTQnRiM1psY3lCc1pXWjBMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSEpoYm1kbFRXRndTRzl5YVhwdmJuUmhiRWx1Ym1WeU9pQldVazFNYjI5clFYUlNZVzVuWlUxaGNEdGNibHh1SUNBdktpcGNiaUFnSUNvZ1FTQjdRR3hwYm1zZ1ZsSk5URzl2YTBGMFVtRnVaMlZOWVhCOUlHWnZjaUJvYjNKcGVtOXVkR0ZzSUc5MWRIZGhjbVFnYlc5MlpXMWxiblF1SUZSb1pTQnNaV1owSUdWNVpTQnRiM1psY3lCc1pXWjBMaUJVYUdVZ2NtbG5hSFFnWlhsbElHMXZkbVZ6SUhKcFoyaDBMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSEpoYm1kbFRXRndTRzl5YVhwdmJuUmhiRTkxZEdWeU9pQldVazFNYjI5clFYUlNZVzVuWlUxaGNEdGNibHh1SUNBdktpcGNiaUFnSUNvZ1FTQjdRR3hwYm1zZ1ZsSk5URzl2YTBGMFVtRnVaMlZOWVhCOUlHWnZjaUIyWlhKMGFXTmhiQ0JrYjNkdWQyRnlaQ0J0YjNabGJXVnVkQzRnUW05MGFDQmxlV1Z6SUcxdmRtVWdkWEIzWVhKa2N5NWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnlZVzVuWlUxaGNGWmxjblJwWTJGc1JHOTNiam9nVmxKTlRHOXZhMEYwVW1GdVoyVk5ZWEE3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUVnZTBCc2FXNXJJRlpTVFV4dmIydEJkRkpoYm1kbFRXRndmU0JtYjNJZ2RtVnlkR2xqWVd3Z2RYQjNZWEprSUcxdmRtVnRaVzUwTGlCQ2IzUm9JR1Y1WlhNZ2JXOTJaU0JrYjNkdWQyRnlaSE11WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nY21GdVoyVk5ZWEJXWlhKMGFXTmhiRlZ3T2lCV1VrMU1iMjlyUVhSU1lXNW5aVTFoY0R0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdobElHWnliMjUwSUdScGNtVmpkR2x2YmlCdlppQjBhR1VnWm1GalpTNWNiaUFnSUNvZ1NXNTBaVzVrWldRZ2RHOGdZbVVnZFhObFpDQm1iM0lnVmxKTklEQXVNQ0JqYjIxd1lYUWdLRlpTVFNBd0xqQWdiVzlrWld4eklHRnlaU0JtWVdOcGJtY2dXaTBnYVc1emRHVmhaQ0J2WmlCYUt5a3VYRzRnSUNBcUlGbHZkU0IxYzNWaGJHeDVJR1J2YmlkMElIZGhiblFnZEc4Z2RHOTFZMmdnZEdocGN5NWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm1ZV05sUm5KdmJuUTZJRlJJVWtWRkxsWmxZM1J2Y2pNN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSb1pTQnlaWE4wSUhGMVlYUmxjbTVwYjI0Z2IyWWdUR1ZtZEVWNVpTQmliMjVsTGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCZmNtVnpkRkYxWVhSTVpXWjBSWGxsT2lCVVNGSkZSUzVSZFdGMFpYSnVhVzl1TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJVYUdVZ2NtVnpkQ0J4ZFdGMFpYSnVhVzl1SUc5bUlGSnBaMmgwUlhsbElHSnZibVV1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUY5eVpYTjBVWFZoZEZKcFoyaDBSWGxsT2lCVVNGSkZSUzVSZFdGMFpYSnVhVzl1TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJVYUdVZ2QyOXliR1F0YzNCaFkyVWdjbVZ6ZENCeGRXRjBaWEp1YVc5dUlHOW1JSFJvWlNCd1lYSmxiblFnYjJZZ2RHaGxJR2gxYldGdWIybGtJRXhsWm5SRmVXVXVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjl5WlhOMFRHVm1kRVY1WlZCaGNtVnVkRmR2Y214a1VYVmhkRG9nVkVoU1JVVXVVWFZoZEdWeWJtbHZianRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWR2hsSUhkdmNteGtMWE53WVdObElISmxjM1FnY1hWaGRHVnlibWx2YmlCdlppQjBhR1VnY0dGeVpXNTBJRzltSUhSb1pTQm9kVzFoYm05cFpDQlNhV2RvZEVWNVpTNWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdYM0psYzNSU2FXZG9kRVY1WlZCaGNtVnVkRmR2Y214a1VYVmhkRG9nVkVoU1JVVXVVWFZoZEdWeWJtbHZianRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbElHRWdibVYzSUh0QWJHbHVheUJXVWsxTWIyOXJRWFJDYjI1bFFYQndiR2xsY24wdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQm9kVzFoYm05cFpDQkJJSHRBYkdsdWF5QldVazFJZFcxaGJtOXBaSDFjYmlBZ0lDb2dRSEJoY21GdElISmhibWRsVFdGd1NHOXlhWHB2Ym5SaGJFbHVibVZ5SUVFZ2UwQnNhVzVySUZaU1RVeHZiMnRCZEZKaGJtZGxUV0Z3ZlNCMWMyVmtJR1p2Y2lCcGJtNWxjaUIwY21GdWMzWmxjbk5sSUdScGNtVmpkR2x2Ymx4dUlDQWdLaUJBY0dGeVlXMGdjbUZ1WjJWTllYQkliM0pwZW05dWRHRnNUM1YwWlhJZ1FTQjdRR3hwYm1zZ1ZsSk5URzl2YTBGMFVtRnVaMlZOWVhCOUlIVnpaV1FnWm05eUlHOTFkR1Z5SUhSeVlXNXpkbVZ5YzJVZ1pHbHlaV04wYVc5dVhHNGdJQ0FxSUVCd1lYSmhiU0J5WVc1blpVMWhjRlpsY25ScFkyRnNSRzkzYmlCQklIdEFiR2x1YXlCV1VrMU1iMjlyUVhSU1lXNW5aVTFoY0gwZ2RYTmxaQ0JtYjNJZ1pHOTNiaUJrYVhKbFkzUnBiMjVjYmlBZ0lDb2dRSEJoY21GdElISmhibWRsVFdGd1ZtVnlkR2xqWVd4VmNDQkJJSHRBYkdsdWF5QldVazFNYjI5clFYUlNZVzVuWlUxaGNIMGdkWE5sWkNCbWIzSWdkWEFnWkdseVpXTjBhVzl1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb1hHNGdJQ0FnYUhWdFlXNXZhV1E2SUZaU1RVaDFiV0Z1YjJsa0xGeHVJQ0FnSUhKaGJtZGxUV0Z3U0c5eWFYcHZiblJoYkVsdWJtVnlPaUJXVWsxTWIyOXJRWFJTWVc1blpVMWhjQ3hjYmlBZ0lDQnlZVzVuWlUxaGNFaHZjbWw2YjI1MFlXeFBkWFJsY2pvZ1ZsSk5URzl2YTBGMFVtRnVaMlZOWVhBc1hHNGdJQ0FnY21GdVoyVk5ZWEJXWlhKMGFXTmhiRVJ2ZDI0NklGWlNUVXh2YjJ0QmRGSmhibWRsVFdGd0xGeHVJQ0FnSUhKaGJtZGxUV0Z3Vm1WeWRHbGpZV3hWY0RvZ1ZsSk5URzl2YTBGMFVtRnVaMlZOWVhBc1hHNGdJQ2tnZTF4dUlDQWdJSFJvYVhNdWFIVnRZVzV2YVdRZ1BTQm9kVzFoYm05cFpEdGNibHh1SUNBZ0lIUm9hWE11Y21GdVoyVk5ZWEJJYjNKcGVtOXVkR0ZzU1c1dVpYSWdQU0J5WVc1blpVMWhjRWh2Y21sNmIyNTBZV3hKYm01bGNqdGNiaUFnSUNCMGFHbHpMbkpoYm1kbFRXRndTRzl5YVhwdmJuUmhiRTkxZEdWeUlEMGdjbUZ1WjJWTllYQkliM0pwZW05dWRHRnNUM1YwWlhJN1hHNGdJQ0FnZEdocGN5NXlZVzVuWlUxaGNGWmxjblJwWTJGc1JHOTNiaUE5SUhKaGJtZGxUV0Z3Vm1WeWRHbGpZV3hFYjNkdU8xeHVJQ0FnSUhSb2FYTXVjbUZ1WjJWTllYQldaWEowYVdOaGJGVndJRDBnY21GdVoyVk5ZWEJXWlhKMGFXTmhiRlZ3TzF4dVhHNGdJQ0FnZEdocGN5NW1ZV05sUm5KdmJuUWdQU0J1WlhjZ1ZFaFNSVVV1Vm1WamRHOXlNeWd3TGpBc0lEQXVNQ3dnTVM0d0tUdGNibHh1SUNBZ0lDOHZJSE5sZENCeVpYTjBJSEYxWVhSbGNtNXBiMjV6WEc0Z0lDQWdkR2hwY3k1ZmNtVnpkRkYxWVhSTVpXWjBSWGxsSUQwZ2JtVjNJRlJJVWtWRkxsRjFZWFJsY201cGIyNG9LVHRjYmlBZ0lDQjBhR2x6TGw5eVpYTjBVWFZoZEZKcFoyaDBSWGxsSUQwZ2JtVjNJRlJJVWtWRkxsRjFZWFJsY201cGIyNG9LVHRjYmlBZ0lDQjBhR2x6TGw5eVpYTjBUR1ZtZEVWNVpWQmhjbVZ1ZEZkdmNteGtVWFZoZENBOUlHNWxkeUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVLQ2s3WEc0Z0lDQWdkR2hwY3k1ZmNtVnpkRkpwWjJoMFJYbGxVR0Z5Wlc1MFYyOXliR1JSZFdGMElEMGdibVYzSUZSSVVrVkZMbEYxWVhSbGNtNXBiMjRvS1R0Y2JseHVJQ0FnSUdOdmJuTjBJR3hsWm5SRmVXVWdQU0IwYUdsekxtaDFiV0Z1YjJsa0xtZGxkRkpoZDBKdmJtVk9iMlJsS0Nkc1pXWjBSWGxsSnlrN1hHNGdJQ0FnWTI5dWMzUWdjbWxuYUhSRmVXVWdQU0IwYUdsekxtaDFiV0Z1YjJsa0xtZGxkRkpoZDBKdmJtVk9iMlJsS0NkeWFXZG9kRVY1WlNjcE8xeHVYRzRnSUNBZ2FXWWdLR3hsWm5SRmVXVXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVgzSmxjM1JSZFdGMFRHVm1kRVY1WlM1amIzQjVLR3hsWm5SRmVXVXVjWFZoZEdWeWJtbHZiaWs3WEc0Z0lDQWdJQ0JuWlhSWGIzSnNaRkYxWVhSbGNtNXBiMjVNYVhSbEtHeGxablJGZVdVdWNHRnlaVzUwSVN3Z2RHaHBjeTVmY21WemRFeGxablJGZVdWUVlYSmxiblJYYjNKc1pGRjFZWFFwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoeWFXZG9kRVY1WlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmY21WemRGRjFZWFJTYVdkb2RFVjVaUzVqYjNCNUtISnBaMmgwUlhsbExuRjFZWFJsY201cGIyNHBPMXh1SUNBZ0lDQWdaMlYwVjI5eWJHUlJkV0YwWlhKdWFXOXVUR2wwWlNoeWFXZG9kRVY1WlM1d1lYSmxiblFoTENCMGFHbHpMbDl5WlhOMFVtbG5hSFJGZVdWUVlYSmxiblJYYjNKc1pGRjFZWFFwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQmNIQnNlU0IwYUdVZ2FXNXdkWFFnWVc1bmJHVWdkRzhnYVhSeklHRnpjMjlqYVdGMFpXUWdWbEpOSUcxdlpHVnNMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZVdGM0lGSnZkR0YwYVc5dUlHRnliM1Z1WkNCWklHRjRhWE1zSUdsdUlHUmxaM0psWlZ4dUlDQWdLaUJBY0dGeVlXMGdjR2wwWTJnZ1VtOTBZWFJwYjI0Z1lYSnZkVzVrSUZnZ1lYaHBjeXdnYVc0Z1pHVm5jbVZsWEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWVhCd2JIbFpZWGRRYVhSamFDaDVZWGM2SUc1MWJXSmxjaXdnY0dsMFkyZzZJRzUxYldKbGNpazZJSFp2YVdRZ2UxeHVJQ0FnSUdOdmJuTjBJR3hsWm5SRmVXVWdQU0IwYUdsekxtaDFiV0Z1YjJsa0xtZGxkRkpoZDBKdmJtVk9iMlJsS0Nkc1pXWjBSWGxsSnlrN1hHNGdJQ0FnWTI5dWMzUWdjbWxuYUhSRmVXVWdQU0IwYUdsekxtaDFiV0Z1YjJsa0xtZGxkRkpoZDBKdmJtVk9iMlJsS0NkeWFXZG9kRVY1WlNjcE8xeHVJQ0FnSUdOdmJuTjBJR3hsWm5SRmVXVk9iM0p0WVd4cGVtVmtJRDBnZEdocGN5NW9kVzFoYm05cFpDNW5aWFJPYjNKdFlXeHBlbVZrUW05dVpVNXZaR1VvSjJ4bFpuUkZlV1VuS1R0Y2JpQWdJQ0JqYjI1emRDQnlhV2RvZEVWNVpVNXZjbTFoYkdsNlpXUWdQU0IwYUdsekxtaDFiV0Z1YjJsa0xtZGxkRTV2Y20xaGJHbDZaV1JDYjI1bFRtOWtaU2duY21sbmFIUkZlV1VuS1R0Y2JpQWdJQ0F2THlCc1pXWjBYRzRnSUNBZ2FXWWdLR3hsWm5SRmVXVXBJSHRjYmlBZ0lDQWdJR2xtSUNod2FYUmphQ0E4SURBdU1Da2dlMXh1SUNBZ0lDQWdJQ0JmWlhWc1pYSkJMbmdnUFNBdFZFaFNSVVV1VFdGMGFGVjBhV3h6TGtSRlJ6SlNRVVFnS2lCMGFHbHpMbkpoYm1kbFRXRndWbVZ5ZEdsallXeEViM2R1TG0xaGNDZ3RjR2wwWTJncE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ1gyVjFiR1Z5UVM1NElEMGdWRWhTUlVVdVRXRjBhRlYwYVd4ekxrUkZSekpTUVVRZ0tpQjBhR2x6TG5KaGJtZGxUV0Z3Vm1WeWRHbGpZV3hWY0M1dFlYQW9jR2wwWTJncE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQnBaaUFvZVdGM0lEd2dNQzR3S1NCN1hHNGdJQ0FnSUNBZ0lGOWxkV3hsY2tFdWVTQTlJQzFVU0ZKRlJTNU5ZWFJvVlhScGJITXVSRVZITWxKQlJDQXFJSFJvYVhNdWNtRnVaMlZOWVhCSWIzSnBlbTl1ZEdGc1NXNXVaWEl1YldGd0tDMTVZWGNwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnWDJWMWJHVnlRUzU1SUQwZ1ZFaFNSVVV1VFdGMGFGVjBhV3h6TGtSRlJ6SlNRVVFnS2lCMGFHbHpMbkpoYm1kbFRXRndTRzl5YVhwdmJuUmhiRTkxZEdWeUxtMWhjQ2g1WVhjcE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQmZjWFZoZEVFdWMyVjBSbkp2YlVWMWJHVnlLRjlsZFd4bGNrRXBPMXh1SUNBZ0lDQWdkR2hwY3k1ZloyVjBWMjl5YkdSR1lXTmxSbkp2Ym5SUmRXRjBLRjl4ZFdGMFFpazdYRzVjYmlBZ0lDQWdJQzh2SUY5eGRXRjBRaUFxSUY5eGRXRjBRU0FxSUY5eGRXRjBRbDR0TVZ4dUlDQWdJQ0FnTHk4Z2QyaGxjbVVnWDNGMVlYUkJJR2x6SUV4dmIydEJkQ0J5YjNSaGRHbHZibHh1SUNBZ0lDQWdMeThnWVc1a0lGOXhkV0YwUWlCcGN5QjNiM0pzWkVaaFkyVkdjbTl1ZEZGMVlYUmNiaUFnSUNBZ0lHeGxablJGZVdWT2IzSnRZV3hwZW1Wa0lTNXhkV0YwWlhKdWFXOXVMbU52Y0hrb1gzRjFZWFJDS1M1dGRXeDBhWEJzZVNoZmNYVmhkRUVwTG0xMWJIUnBjR3g1S0Y5eGRXRjBRaTVwYm5abGNuUW9LU2s3WEc1Y2JpQWdJQ0FnSUY5eGRXRjBRUzVqYjNCNUtIUm9hWE11WDNKbGMzUk1aV1owUlhsbFVHRnlaVzUwVjI5eWJHUlJkV0YwS1R0Y2JseHVJQ0FnSUNBZ0x5OGdYM0YxWVhSQlhpMHhJQ29nYkdWbWRFVjVaVTV2Y20xaGJHbDZaV1F1Y1hWaGRHVnlibWx2YmlBcUlGOXhkV0YwUVNBcUlISmxjM1JSZFdGMFRHVm1kRVY1WlZ4dUlDQWdJQ0FnTHk4Z2QyaGxjbVVnWDNGMVlYUkJJR2x6SUhKbGMzUk1aV1owUlhsbFVHRnlaVzUwVjI5eWJHUlJkV0YwWEc0Z0lDQWdJQ0JzWldaMFJYbGxMbkYxWVhSbGNtNXBiMjVjYmlBZ0lDQWdJQ0FnTG1OdmNIa29iR1ZtZEVWNVpVNXZjbTFoYkdsNlpXUWhMbkYxWVhSbGNtNXBiMjRwWEc0Z0lDQWdJQ0FnSUM1dGRXeDBhWEJzZVNoZmNYVmhkRUVwWEc0Z0lDQWdJQ0FnSUM1d2NtVnRkV3gwYVhCc2VTaGZjWFZoZEVFdWFXNTJaWEowS0NrcFhHNGdJQ0FnSUNBZ0lDNXRkV3gwYVhCc2VTaDBhR2x6TGw5eVpYTjBVWFZoZEV4bFpuUkZlV1VwTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUhKcFoyaDBYRzRnSUNBZ2FXWWdLSEpwWjJoMFJYbGxLU0I3WEc0Z0lDQWdJQ0JwWmlBb2NHbDBZMmdnUENBd0xqQXBJSHRjYmlBZ0lDQWdJQ0FnWDJWMWJHVnlRUzU0SUQwZ0xWUklVa1ZGTGsxaGRHaFZkR2xzY3k1RVJVY3lVa0ZFSUNvZ2RHaHBjeTV5WVc1blpVMWhjRlpsY25ScFkyRnNSRzkzYmk1dFlYQW9MWEJwZEdOb0tUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lGOWxkV3hsY2tFdWVDQTlJRlJJVWtWRkxrMWhkR2hWZEdsc2N5NUVSVWN5VWtGRUlDb2dkR2hwY3k1eVlXNW5aVTFoY0ZabGNuUnBZMkZzVlhBdWJXRndLSEJwZEdOb0tUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdhV1lnS0hsaGR5QThJREF1TUNrZ2UxeHVJQ0FnSUNBZ0lDQmZaWFZzWlhKQkxua2dQU0F0VkVoU1JVVXVUV0YwYUZWMGFXeHpMa1JGUnpKU1FVUWdLaUIwYUdsekxuSmhibWRsVFdGd1NHOXlhWHB2Ym5SaGJFOTFkR1Z5TG0xaGNDZ3RlV0YzS1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUY5bGRXeGxja0V1ZVNBOUlGUklVa1ZGTGsxaGRHaFZkR2xzY3k1RVJVY3lVa0ZFSUNvZ2RHaHBjeTV5WVc1blpVMWhjRWh2Y21sNmIyNTBZV3hKYm01bGNpNXRZWEFvZVdGM0tUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdYM0YxWVhSQkxuTmxkRVp5YjIxRmRXeGxjaWhmWlhWc1pYSkJLVHRjYmlBZ0lDQWdJSFJvYVhNdVgyZGxkRmR2Y214a1JtRmpaVVp5YjI1MFVYVmhkQ2hmY1hWaGRFSXBPMXh1WEc0Z0lDQWdJQ0F2THlCZmNYVmhkRUlnS2lCZmNYVmhkRUVnS2lCZmNYVmhkRUplTFRGY2JpQWdJQ0FnSUM4dklIZG9aWEpsSUY5eGRXRjBRU0JwY3lCTWIyOXJRWFFnY205MFlYUnBiMjVjYmlBZ0lDQWdJQzh2SUdGdVpDQmZjWFZoZEVJZ2FYTWdkMjl5YkdSR1lXTmxSbkp2Ym5SUmRXRjBYRzRnSUNBZ0lDQnlhV2RvZEVWNVpVNXZjbTFoYkdsNlpXUWhMbkYxWVhSbGNtNXBiMjR1WTI5d2VTaGZjWFZoZEVJcExtMTFiSFJwY0d4NUtGOXhkV0YwUVNrdWJYVnNkR2x3Ykhrb1gzRjFZWFJDTG1sdWRtVnlkQ2dwS1R0Y2JseHVJQ0FnSUNBZ1gzRjFZWFJCTG1OdmNIa29kR2hwY3k1ZmNtVnpkRkpwWjJoMFJYbGxVR0Z5Wlc1MFYyOXliR1JSZFdGMEtUdGNibHh1SUNBZ0lDQWdMeThnWDNGMVlYUkJYaTB4SUNvZ2NtbG5hSFJGZVdWT2IzSnRZV3hwZW1Wa0xuRjFZWFJsY201cGIyNGdLaUJmY1hWaGRFRWdLaUJ5WlhOMFVYVmhkRkpwWjJoMFJYbGxYRzRnSUNBZ0lDQXZMeUIzYUdWeVpTQmZjWFZoZEVFZ2FYTWdjbVZ6ZEZKcFoyaDBSWGxsVUdGeVpXNTBWMjl5YkdSUmRXRjBYRzRnSUNBZ0lDQnlhV2RvZEVWNVpTNXhkV0YwWlhKdWFXOXVYRzRnSUNBZ0lDQWdJQzVqYjNCNUtISnBaMmgwUlhsbFRtOXliV0ZzYVhwbFpDRXVjWFZoZEdWeWJtbHZiaWxjYmlBZ0lDQWdJQ0FnTG0xMWJIUnBjR3g1S0Y5eGRXRjBRU2xjYmlBZ0lDQWdJQ0FnTG5CeVpXMTFiSFJwY0d4NUtGOXhkV0YwUVM1cGJuWmxjblFvS1NsY2JpQWdJQ0FnSUNBZ0xtMTFiSFJwY0d4NUtIUm9hWE11WDNKbGMzUlJkV0YwVW1sbmFIUkZlV1VwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVndjbVZqWVhSbFpDQlZjMlVnZTBCc2FXNXJJR0Z3Y0d4NVdXRjNVR2wwWTJoOUlHbHVjM1JsWVdRdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2JHOXZhMEYwS0dWMWJHVnlPaUJVU0ZKRlJTNUZkV3hsY2lrNklIWnZhV1FnZTF4dUlDQWdJR052Ym5OdmJHVXVkMkZ5YmlnblZsSk5URzl2YTBGMFFtOXVaVUZ3Y0d4cFpYSTZJR3h2YjJ0QmRDZ3BJR2x6SUdSbGNISmxZMkYwWldRdUlIVnpaU0JoY0hCc2VTZ3BJR2x1YzNSbFlXUXVKeWs3WEc1Y2JpQWdJQ0JqYjI1emRDQjVZWGNnUFNCVVNGSkZSUzVOWVhSb1ZYUnBiSE11VWtGRU1rUkZSeUFxSUdWMWJHVnlMbms3WEc0Z0lDQWdZMjl1YzNRZ2NHbDBZMmdnUFNCVVNGSkZSUzVOWVhSb1ZYUnBiSE11VWtGRU1rUkZSeUFxSUdWMWJHVnlMbmc3WEc1Y2JpQWdJQ0IwYUdsekxtRndjR3g1V1dGM1VHbDBZMmdvZVdGM0xDQndhWFJqYUNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSMlYwSUdFZ2NYVmhkR1Z5Ym1sdmJpQjBhR0YwSUhKdmRHRjBaWE1nZEdobElIZHZjbXhrTFhOd1lXTmxJQ3RhSUhWdWFYUWdkbVZqZEc5eUlIUnZJSFJvWlNCN1FHeHBibXNnWm1GalpVWnliMjUwZlNCa2FYSmxZM1JwYjI0dVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjBZWEpuWlhRZ1FTQjBZWEpuWlhRZ1lGUklVa1ZGTGxGMVlYUmxjbTVwYjI1Z1hHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElGOW5aWFJYYjNKc1pFWmhZMlZHY205dWRGRjFZWFFvZEdGeVoyVjBPaUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVLVG9nVkVoU1JVVXVVWFZoZEdWeWJtbHZiaUI3WEc0Z0lDQWdhV1lnS0hSb2FYTXVabUZqWlVaeWIyNTBMbVJwYzNSaGJtTmxWRzlUY1hWaGNtVmtLRlpGUXpOZlVFOVRTVlJKVmtWZldpa2dQQ0F3TGpBeEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RHRnlaMlYwTG1sa1pXNTBhWFI1S0NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdXMlpoWTJWR2NtOXVkRUY2YVcxMWRHZ3NJR1poWTJWR2NtOXVkRUZzZEdsMGRXUmxYU0E5SUdOaGJHTkJlbWx0ZFhSb1FXeDBhWFIxWkdVb2RHaHBjeTVtWVdObFJuSnZiblFwTzF4dUlDQWdJRjlsZFd4bGNrRXVjMlYwS0RBdU1Dd2dNQzQxSUNvZ1RXRjBhQzVRU1NBcklHWmhZMlZHY205dWRFRjZhVzExZEdnc0lHWmhZMlZHY205dWRFRnNkR2wwZFdSbExDQW5XVnBZSnlrN1hHNWNiaUFnSUNCeVpYUjFjbTRnZEdGeVoyVjBMbk5sZEVaeWIyMUZkV3hsY2loZlpYVnNaWEpCS1R0Y2JpQWdmVnh1ZlZ4dUlpd2lhVzF3YjNKMElIc2dWbEpOUlhod2NtVnpjMmx2YmsxaGJtRm5aWElnZlNCbWNtOXRJQ2N1TGk5bGVIQnlaWE56YVc5dWN5YzdYRzVwYlhCdmNuUWdLaUJoY3lCVVNGSkZSU0JtY205dElDZDBhSEpsWlNjN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3SUZaU1RVeHZiMnRCZEVGd2NHeHBaWElnZlNCbWNtOXRJQ2N1TDFaU1RVeHZiMnRCZEVGd2NHeHBaWEluTzF4dWFXMXdiM0owSUhzZ1ZsSk5URzl2YTBGMFVtRnVaMlZOWVhBZ2ZTQm1jbTl0SUNjdUwxWlNUVXh2YjJ0QmRGSmhibWRsVFdGd0p6dGNibHh1THlvcVhHNGdLaUJCSUdOc1lYTnpJSFJvWVhRZ1lYQndiR2xsY3lCbGVXVWdaMkY2WlNCa2FYSmxZM1JwYjI1eklIUnZJR0VnVmxKTkxseHVJQ29nU1hRZ2QybHNiQ0JpWlNCMWMyVmtJR0o1SUh0QWJHbHVheUJXVWsxTWIyOXJRWFI5TGx4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZsSk5URzl2YTBGMFJYaHdjbVZ6YzJsdmJrRndjR3hwWlhJZ2FXMXdiR1Z0Wlc1MGN5QldVazFNYjI5clFYUkJjSEJzYVdWeUlIdGNiaUFnTHlvcVhHNGdJQ0FxSUZKbGNISmxjMlZ1ZENCcGRITWdkSGx3WlNCdlppQmhjSEJzYVdWeUxseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCeVpXRmtiMjVzZVNCMGVYQmxJRDBnSjJWNGNISmxjM05wYjI0bk8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmRITWdZWE56YjJOcFlYUmxaQ0I3UUd4cGJtc2dWbEpOUlhod2NtVnpjMmx2YmsxaGJtRm5aWEo5TGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhKbFlXUnZibXg1SUdWNGNISmxjM05wYjI1ek9pQldVazFGZUhCeVpYTnphVzl1VFdGdVlXZGxjanRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTWFFnZDI5dUozUWdZbVVnZFhObFpDQnBiaUJsZUhCeVpYTnphVzl1SUdGd2NHeHBaWEl1WEc0Z0lDQXFJRk5sWlNCaGJITnZPaUI3UUd4cGJtc2djbUZ1WjJWTllYQkliM0pwZW05dWRHRnNUM1YwWlhKOVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2NtRnVaMlZOWVhCSWIzSnBlbTl1ZEdGc1NXNXVaWEk2SUZaU1RVeHZiMnRCZEZKaGJtZGxUV0Z3TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJCSUh0QWJHbHVheUJXVWsxTWIyOXJRWFJTWVc1blpVMWhjSDBnWm05eUlHaHZjbWw2YjI1MFlXd2diVzkyWlcxbGJuUXVJRUp2ZEdnZ1pYbGxjeUJ0YjNabElHeGxablFnYjNJZ2NtbG5hSFF1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nY21GdVoyVk5ZWEJJYjNKcGVtOXVkR0ZzVDNWMFpYSTZJRlpTVFV4dmIydEJkRkpoYm1kbFRXRndPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJJSHRBYkdsdWF5QldVazFNYjI5clFYUlNZVzVuWlUxaGNIMGdabTl5SUhabGNuUnBZMkZzSUdSdmQyNTNZWEprSUcxdmRtVnRaVzUwTGlCQ2IzUm9JR1Y1WlhNZ2JXOTJaU0IxY0hkaGNtUnpMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSEpoYm1kbFRXRndWbVZ5ZEdsallXeEViM2R1T2lCV1VrMU1iMjlyUVhSU1lXNW5aVTFoY0R0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUVNCN1FHeHBibXNnVmxKTlRHOXZhMEYwVW1GdVoyVk5ZWEI5SUdadmNpQjJaWEowYVdOaGJDQjFjSGRoY21RZ2JXOTJaVzFsYm5RdUlFSnZkR2dnWlhsbGN5QnRiM1psSUdSdmQyNTNZWEprY3k1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCeVlXNW5aVTFoY0ZabGNuUnBZMkZzVlhBNklGWlNUVXh2YjJ0QmRGSmhibWRsVFdGd08xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1VnWVNCdVpYY2dlMEJzYVc1cklGWlNUVXh2YjJ0QmRFVjRjSEpsYzNOcGIyNUJjSEJzYVdWeWZTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJR1Y0Y0hKbGMzTnBiMjV6SUVFZ2UwQnNhVzVySUZaU1RVVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeWZWeHVJQ0FnS2lCQWNHRnlZVzBnY21GdVoyVk5ZWEJJYjNKcGVtOXVkR0ZzU1c1dVpYSWdRU0I3UUd4cGJtc2dWbEpOVEc5dmEwRjBVbUZ1WjJWTllYQjlJSFZ6WldRZ1ptOXlJR2x1Ym1WeUlIUnlZVzV6ZG1WeWMyVWdaR2x5WldOMGFXOXVYRzRnSUNBcUlFQndZWEpoYlNCeVlXNW5aVTFoY0VodmNtbDZiMjUwWVd4UGRYUmxjaUJCSUh0QWJHbHVheUJXVWsxTWIyOXJRWFJTWVc1blpVMWhjSDBnZFhObFpDQm1iM0lnYjNWMFpYSWdkSEpoYm5OMlpYSnpaU0JrYVhKbFkzUnBiMjVjYmlBZ0lDb2dRSEJoY21GdElISmhibWRsVFdGd1ZtVnlkR2xqWVd4RWIzZHVJRUVnZTBCc2FXNXJJRlpTVFV4dmIydEJkRkpoYm1kbFRXRndmU0IxYzJWa0lHWnZjaUJrYjNkdUlHUnBjbVZqZEdsdmJseHVJQ0FnS2lCQWNHRnlZVzBnY21GdVoyVk5ZWEJXWlhKMGFXTmhiRlZ3SUVFZ2UwQnNhVzVySUZaU1RVeHZiMnRCZEZKaGJtZGxUV0Z3ZlNCMWMyVmtJR1p2Y2lCMWNDQmthWEpsWTNScGIyNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWhjYmlBZ0lDQmxlSEJ5WlhOemFXOXVjem9nVmxKTlJYaHdjbVZ6YzJsdmJrMWhibUZuWlhJc1hHNGdJQ0FnY21GdVoyVk5ZWEJJYjNKcGVtOXVkR0ZzU1c1dVpYSTZJRlpTVFV4dmIydEJkRkpoYm1kbFRXRndMRnh1SUNBZ0lISmhibWRsVFdGd1NHOXlhWHB2Ym5SaGJFOTFkR1Z5T2lCV1VrMU1iMjlyUVhSU1lXNW5aVTFoY0N4Y2JpQWdJQ0J5WVc1blpVMWhjRlpsY25ScFkyRnNSRzkzYmpvZ1ZsSk5URzl2YTBGMFVtRnVaMlZOWVhBc1hHNGdJQ0FnY21GdVoyVk5ZWEJXWlhKMGFXTmhiRlZ3T2lCV1VrMU1iMjlyUVhSU1lXNW5aVTFoY0N4Y2JpQWdLU0I3WEc0Z0lDQWdkR2hwY3k1bGVIQnlaWE56YVc5dWN5QTlJR1Y0Y0hKbGMzTnBiMjV6TzF4dVhHNGdJQ0FnZEdocGN5NXlZVzVuWlUxaGNFaHZjbWw2YjI1MFlXeEpibTVsY2lBOUlISmhibWRsVFdGd1NHOXlhWHB2Ym5SaGJFbHVibVZ5TzF4dUlDQWdJSFJvYVhNdWNtRnVaMlZOWVhCSWIzSnBlbTl1ZEdGc1QzVjBaWElnUFNCeVlXNW5aVTFoY0VodmNtbDZiMjUwWVd4UGRYUmxjanRjYmlBZ0lDQjBhR2x6TG5KaGJtZGxUV0Z3Vm1WeWRHbGpZV3hFYjNkdUlEMGdjbUZ1WjJWTllYQldaWEowYVdOaGJFUnZkMjQ3WEc0Z0lDQWdkR2hwY3k1eVlXNW5aVTFoY0ZabGNuUnBZMkZzVlhBZ1BTQnlZVzVuWlUxaGNGWmxjblJwWTJGc1ZYQTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUVhCd2JIa2dkR2hsSUdsdWNIVjBJR0Z1WjJ4bElIUnZJR2wwY3lCaGMzTnZZMmxoZEdWa0lGWlNUU0J0YjJSbGJDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSGxoZHlCU2IzUmhkR2x2YmlCaGNtOTFibVFnV1NCaGVHbHpMQ0JwYmlCa1pXZHlaV1ZjYmlBZ0lDb2dRSEJoY21GdElIQnBkR05vSUZKdmRHRjBhVzl1SUdGeWIzVnVaQ0JZSUdGNGFYTXNJR2x1SUdSbFozSmxaVnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0Z3Y0d4NVdXRjNVR2wwWTJnb2VXRjNPaUJ1ZFcxaVpYSXNJSEJwZEdOb09pQnVkVzFpWlhJcE9pQjJiMmxrSUh0Y2JpQWdJQ0JwWmlBb2NHbDBZMmdnUENBd0xqQXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVpYaHdjbVZ6YzJsdmJuTXVjMlYwVm1Gc2RXVW9KMnh2YjJ0RWIzZHVKeXdnTUM0d0tUdGNiaUFnSUNBZ0lIUm9hWE11Wlhod2NtVnpjMmx2Ym5NdWMyVjBWbUZzZFdVb0oyeHZiMnRWY0Njc0lIUm9hWE11Y21GdVoyVk5ZWEJXWlhKMGFXTmhiRlZ3TG0xaGNDZ3RjR2wwWTJncEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnZEdocGN5NWxlSEJ5WlhOemFXOXVjeTV6WlhSV1lXeDFaU2duYkc5dmExVndKeXdnTUM0d0tUdGNiaUFnSUNBZ0lIUm9hWE11Wlhod2NtVnpjMmx2Ym5NdWMyVjBWbUZzZFdVb0oyeHZiMnRFYjNkdUp5d2dkR2hwY3k1eVlXNW5aVTFoY0ZabGNuUnBZMkZzUkc5M2JpNXRZWEFvY0dsMFkyZ3BLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvZVdGM0lEd2dNQzR3S1NCN1hHNGdJQ0FnSUNCMGFHbHpMbVY0Y0hKbGMzTnBiMjV6TG5ObGRGWmhiSFZsS0Nkc2IyOXJUR1ZtZENjc0lEQXVNQ2s3WEc0Z0lDQWdJQ0IwYUdsekxtVjRjSEpsYzNOcGIyNXpMbk5sZEZaaGJIVmxLQ2RzYjI5clVtbG5hSFFuTENCMGFHbHpMbkpoYm1kbFRXRndTRzl5YVhwdmJuUmhiRTkxZEdWeUxtMWhjQ2d0ZVdGM0tTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2FYTXVaWGh3Y21WemMybHZibk11YzJWMFZtRnNkV1VvSjJ4dmIydFNhV2RvZENjc0lEQXVNQ2s3WEc0Z0lDQWdJQ0IwYUdsekxtVjRjSEpsYzNOcGIyNXpMbk5sZEZaaGJIVmxLQ2RzYjI5clRHVm1kQ2NzSUhSb2FYTXVjbUZ1WjJWTllYQkliM0pwZW05dWRHRnNUM1YwWlhJdWJXRndLSGxoZHlrcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z3Y21WallYUmxaQ0JWYzJVZ2UwQnNhVzVySUdGd2NHeDVXV0YzVUdsMFkyaDlJR2x1YzNSbFlXUXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdiRzl2YTBGMEtHVjFiR1Z5T2lCVVNGSkZSUzVGZFd4bGNpazZJSFp2YVdRZ2UxeHVJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpZ25WbEpOVEc5dmEwRjBRbTl1WlVGd2NHeHBaWEk2SUd4dmIydEJkQ2dwSUdseklHUmxjSEpsWTJGMFpXUXVJSFZ6WlNCaGNIQnNlU2dwSUdsdWMzUmxZV1F1SnlrN1hHNWNiaUFnSUNCamIyNXpkQ0I1WVhjZ1BTQlVTRkpGUlM1TllYUm9WWFJwYkhNdVVrRkVNa1JGUnlBcUlHVjFiR1Z5TG5rN1hHNGdJQ0FnWTI5dWMzUWdjR2wwWTJnZ1BTQlVTRkpGUlM1TllYUm9WWFJwYkhNdVVrRkVNa1JGUnlBcUlHVjFiR1Z5TG5nN1hHNWNiaUFnSUNCMGFHbHpMbUZ3Y0d4NVdXRjNVR2wwWTJnb2VXRjNMQ0J3YVhSamFDazdYRzRnSUgxY2JuMWNiaUlzSW1sdGNHOXlkQ0I3SUhOaGRIVnlZWFJsSUgwZ1puSnZiU0FuTGk0dmRYUnBiSE12YzJGMGRYSmhkR1VuTzF4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVmxKTlRHOXZhMEYwVW1GdVoyVk5ZWEFnZTF4dUlDQXZLaXBjYmlBZ0lDb2dUR2x0YVhSeklIUm9aU0J0WVhocGJYVnRJR0Z1WjJ4bElHOW1JSFJvWlNCcGJuQjFkQ0JoYm1kc1pTQnZaaUIwYUdVZ1RHOXZhMEYwSUhabFkzUnZjaUJtY205dElIUm9aU0JtY205dWRDQnZaaUIwYUdVZ2FHVmhaQ0FvZEdobElIQnZjMmwwYVhabElIb2dZWGhwY3lrdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2FXNXdkWFJOWVhoV1lXeDFaVG9nYm5WdFltVnlPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWEJ5WlhObGJuUnpJR0Z1SUdGdVoyeGxJQ2hwYmlCa1pXZHlaV1Z6S1NCbWIzSWdZbTl1WlNCMGVYQmxJRzltSUV4dmIydEJkQ0JoY0hCc2FXVnljeXdnYjNJZ1lTQjNaV2xuYUhRZ1ptOXlJR1Y0Y0hKbGMzTnBiMjRnZEhsd1pTQnZaaUJNYjI5clFYUWdZWEJ3YkdsbGNuTXVYRzRnSUNBcUlGUm9aU0JwYm5CMWRDQjJZV3gxWlNCM2FXeHNJSFJoYTJVZ1lERXVNR0FnZDJobGJpQjBhR1VnYVc1d2RYUWdZVzVuYkdVZ1pYRjFZV3h6SUNodmNpQm5jbVZoZEdWeUtTQjBieUI3UUd4cGJtc2dhVzV3ZFhSTllYaFdZV3gxWlgwdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2IzVjBjSFYwVTJOaGJHVTZJRzUxYldKbGNqdGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsSUdFZ2JtVjNJSHRBYkdsdWF5QldVazFNYjI5clFYUlNZVzVuWlUxaGNIMHVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0JwYm5CMWRFMWhlRlpoYkhWbElGUm9aU0I3UUd4cGJtc2dhVzV3ZFhSTllYaFdZV3gxWlgwZ2IyWWdkR2hsSUcxaGNGeHVJQ0FnS2lCQWNHRnlZVzBnYjNWMGNIVjBVMk5oYkdVZ1ZHaGxJSHRBYkdsdWF5QnZkWFJ3ZFhSVFkyRnNaWDBnYjJZZ2RHaGxJRzFoY0Z4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdOdmJuTjBjblZqZEc5eUtHbHVjSFYwVFdGNFZtRnNkV1U2SUc1MWJXSmxjaXdnYjNWMGNIVjBVMk5oYkdVNklHNTFiV0psY2lrZ2UxeHVJQ0FnSUhSb2FYTXVhVzV3ZFhSTllYaFdZV3gxWlNBOUlHbHVjSFYwVFdGNFZtRnNkV1U3WEc0Z0lDQWdkR2hwY3k1dmRYUndkWFJUWTJGc1pTQTlJRzkxZEhCMWRGTmpZV3hsTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVjJZV3gxWVhSbElHRnVJR2x1Y0hWMElIWmhiSFZsSUdGdVpDQnZkWFJ3ZFhRZ1lTQnRZWEJ3WldRZ2RtRnNkV1V1WEc0Z0lDQXFJRUJ3WVhKaGJTQnpjbU1nVkdobElHbHVjSFYwSUhaaGJIVmxYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdiV0Z3S0hOeVl6b2diblZ0WW1WeUtUb2diblZ0WW1WeUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NXZkWFJ3ZFhSVFkyRnNaU0FxSUhOaGRIVnlZWFJsS0hOeVl5QXZJSFJvYVhNdWFXNXdkWFJOWVhoV1lXeDFaU2s3WEc0Z0lIMWNibjFjYmlJc0ltbHRjRzl5ZENCMGVYQmxJQ29nWVhNZ1ZqQldVazBnWm5KdmJTQW5RSEJwZUdsMkwzUjVjR1Z6TFhaeWJTMHdMakFuTzF4dWFXMXdiM0owSUhSNWNHVWdLaUJoY3lCV01WWlNUVk5qYUdWdFlTQm1jbTl0SUNkQWNHbDRhWFl2ZEhsd1pYTXRkbkp0WXkxMmNtMHRNUzR3Snp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnUjB4VVJpd2dSMHhVUmt4dllXUmxjbEJzZFdkcGJpd2dSMHhVUmxCaGNuTmxjaUI5SUdaeWIyMGdKM1JvY21WbEwyVjRZVzF3YkdWekwycHpiUzlzYjJGa1pYSnpMMGRNVkVaTWIyRmtaWEl1YW5Nbk8xeHVhVzF3YjNKMElIUjVjR1VnZXlCV1VrMUZlSEJ5WlhOemFXOXVUV0Z1WVdkbGNpQjlJR1p5YjIwZ0p5NHVMMlY0Y0hKbGMzTnBiMjV6TDFaU1RVVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeUp6dGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1ZsSk5TSFZ0WVc1dmFXUWdmU0JtY205dElDY3VMaTlvZFcxaGJtOXBaQzlXVWsxSWRXMWhibTlwWkNjN1hHNXBiWEJ2Y25RZ2V5QldVazFNYjI5clFYUklaV3h3WlhJZ2ZTQm1jbTl0SUNjdUwyaGxiSEJsY25NdlZsSk5URzl2YTBGMFNHVnNjR1Z5Snp0Y2JtbHRjRzl5ZENCN0lGWlNUVXh2YjJ0QmRDQjlJR1p5YjIwZ0p5NHZWbEpOVEc5dmEwRjBKenRjYm1sdGNHOXlkQ0IwZVhCbElIc2dWbEpOVEc5dmEwRjBRWEJ3YkdsbGNpQjlJR1p5YjIwZ0p5NHZWbEpOVEc5dmEwRjBRWEJ3YkdsbGNpYzdYRzVwYlhCdmNuUWdleUJXVWsxTWIyOXJRWFJDYjI1bFFYQndiR2xsY2lCOUlHWnliMjBnSnk0dlZsSk5URzl2YTBGMFFtOXVaVUZ3Y0d4cFpYSW5PMXh1YVcxd2IzSjBJSHNnVmxKTlRHOXZhMEYwUlhod2NtVnpjMmx2YmtGd2NHeHBaWElnZlNCbWNtOXRJQ2N1TDFaU1RVeHZiMnRCZEVWNGNISmxjM05wYjI1QmNIQnNhV1Z5Snp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnVmxKTlRHOXZhMEYwVEc5aFpHVnlVR3gxWjJsdVQzQjBhVzl1Y3lCOUlHWnliMjBnSnk0dlZsSk5URzl2YTBGMFRHOWhaR1Z5VUd4MVoybHVUM0IwYVc5dWN5YzdYRzVwYlhCdmNuUWdleUJXVWsxTWIyOXJRWFJTWVc1blpVMWhjQ0I5SUdaeWIyMGdKeTR2VmxKTlRHOXZhMEYwVW1GdVoyVk5ZWEFuTzF4dWFXMXdiM0owSUhzZ1IweFVSaUJoY3lCSFRGUkdVMk5vWlcxaElIMGdabkp2YlNBblFHZHNkR1l0ZEhKaGJuTm1iM0p0TDJOdmNtVW5PMXh1WEc0dktpcGNiaUFxSUZCdmMzTnBZbXhsSUhOd1pXTWdkbVZ5YzJsdmJuTWdhWFFnY21WamIyZHVhWHBsY3k1Y2JpQXFMMXh1WTI5dWMzUWdVRTlUVTBsQ1RFVmZVMUJGUTE5V1JWSlRTVTlPVXlBOUlHNWxkeUJUWlhRb1d5Y3hMakFuTENBbk1TNHdMV0psZEdFblhTazdYRzVjYmk4cUtseHVJQ29nVkdobElHMXBibWx0ZFcwZ2NHVnliV2wwZEdWa0lIWmhiSFZsSUdadmNpQjdRR3hwYm1zZ1ZqRldVazFUWTJobGJXRXVURzl2YTBGMFVtRnVaMlZOWVhBdWFXNXdkWFJOWVhoV1lXeDFaWDB1WEc0Z0tpQkpaaUIwYUdVZ1oybDJaVzRnZG1Gc2RXVWdhWE1nYzIxaGJHeGxjaUIwYUdGdUlIUm9hWE1zSUhSb1pTQnNiMkZrWlhJZ2MyaHZkM01nWVNCM1lYSnVhVzVuSUdGdVpDQmpiR0Z0Y0hNZ2RYQWdkR2hsSUhaaGJIVmxMbHh1SUNvdlhHNWpiMjV6ZENCSlRsQlZWRjlOUVZoZlZrRk1WVVZmVFVsT1NVMVZUU0E5SURBdU1ERTdYRzVjYmk4cUtseHVJQ29nUVNCd2JIVm5hVzRnYjJZZ1IweFVSa3h2WVdSbGNpQjBhR0YwSUdsdGNHOXlkSE1nWVNCN1FHeHBibXNnVmxKTlRHOXZhMEYwZlNCbWNtOXRJR0VnVmxKTklHVjRkR1Z1YzJsdmJpQnZaaUJoSUVkTVZFWXVYRzRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJXVWsxTWIyOXJRWFJNYjJGa1pYSlFiSFZuYVc0Z2FXMXdiR1Z0Wlc1MGN5QkhURlJHVEc5aFpHVnlVR3gxWjJsdUlIdGNiaUFnTHlvcVhHNGdJQ0FxSUZOd1pXTnBabmtnWVc0Z1QySnFaV04wTTBRZ2RHOGdZV1JrSUh0QWJHbHVheUJXVWsxTWIyOXJRWFJJWld4d1pYSjlJSE11WEc0Z0lDQXFJRWxtSUc1dmRDQnpjR1ZqYVdacFpXUXNJR2hsYkhCbGNpQjNhV3hzSUc1dmRDQmlaU0JqY21WaGRHVmtMbHh1SUNBZ0tpQkpaaUJnY21WdVpHVnlUM0prWlhKZ0lHbHpJSE5sZENCMGJ5QjBhR1VnY205dmRDd2dhR1ZzY0dWeWN5QjNhV3hzSUdOdmNIa2dkR2hsSUhOaGJXVWdZSEpsYm1SbGNrOXlaR1Z5WUNBdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2FHVnNjR1Z5VW05dmREODZJRlJJVWtWRkxrOWlhbVZqZERORU8xeHVYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0J3WVhKelpYSTZJRWRNVkVaUVlYSnpaWEk3WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ0J1WVcxbEtDazZJSE4wY21sdVp5QjdYRzRnSUNBZ0x5OGdWMlVnYzJodmRXeGtJSFZ6WlNCMGFHVWdaWGgwWlc1emFXOXVJRzVoYldVZ2FXNXpkR1ZoWkNCaWRYUWdkMlVnYUdGMlpTQnRkV3gwYVhCc1pTQndiSFZuYVc1eklHWnZjaUJoYmlCbGVIUmxibk5wYjI0dUxpNWNiaUFnSUNCeVpYUjFjbTRnSjFaU1RVeHZiMnRCZEV4dllXUmxjbEJzZFdkcGJpYzdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvY0dGeWMyVnlPaUJIVEZSR1VHRnljMlZ5TENCdmNIUnBiMjV6UHpvZ1ZsSk5URzl2YTBGMFRHOWhaR1Z5VUd4MVoybHVUM0IwYVc5dWN5a2dlMXh1SUNBZ0lIUm9hWE11Y0dGeWMyVnlJRDBnY0dGeWMyVnlPMXh1WEc0Z0lDQWdkR2hwY3k1b1pXeHdaWEpTYjI5MElEMGdiM0IwYVc5dWN6OHVhR1ZzY0dWeVVtOXZkRHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJoYzNsdVl5QmhablJsY2xKdmIzUW9aMngwWmpvZ1IweFVSaWs2SUZCeWIyMXBjMlU4ZG05cFpENGdlMXh1SUNBZ0lHTnZibk4wSUhaeWJVaDFiV0Z1YjJsa0lEMGdaMngwWmk1MWMyVnlSR0YwWVM1MmNtMUlkVzFoYm05cFpDQmhjeUJXVWsxSWRXMWhibTlwWkNCOElIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lDOHZJR1Y0Y0d4cFkybDBiSGtnWkdsemRHbHVaM1ZwYzJnZ2JuVnNiQ0JoYm1RZ2RXNWtaV1pwYm1Wa1hHNGdJQ0FnTHk4Z2MybHVZMlVnZG5KdFNIVnRZVzV2YVdRZ2JXbG5hSFFnWW1VZ2JuVnNiQ0JoY3lCaElISmxjM1ZzZEZ4dUlDQWdJR2xtSUNoMmNtMUlkVzFoYm05cFpDQTlQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RuSnRTSFZ0WVc1dmFXUWdQVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkV1VrMU1iMjlyUVhSTWIyRmtaWEpRYkhWbmFXNDZJSFp5YlVoMWJXRnViMmxrSUdseklIVnVaR1ZtYVc1bFpDNGdWbEpOU0hWdFlXNXZhV1JNYjJGa1pYSlFiSFZuYVc0Z2FHRjJaU0IwYnlCaVpTQjFjMlZrSUdacGNuTjBKeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2RuSnRSWGh3Y21WemMybHZiazFoYm1GblpYSWdQU0JuYkhSbUxuVnpaWEpFWVhSaExuWnliVVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlJR0Z6SUZaU1RVVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeUlId2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdhV1lnS0haeWJVVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeUlEMDlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNoMmNtMUZlSEJ5WlhOemFXOXVUV0Z1WVdkbGNpQTlQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUNkV1VrMU1iMjlyUVhSTWIyRmtaWEpRYkhWbmFXNDZJSFp5YlVWNGNISmxjM05wYjI1TllXNWhaMlZ5SUdseklIVnVaR1ZtYVc1bFpDNGdWbEpOUlhod2NtVnpjMmx2Ymt4dllXUmxjbEJzZFdkcGJpQm9ZWFpsSUhSdklHSmxJSFZ6WldRZ1ptbHljM1FuTEZ4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JuYkhSbUxuVnpaWEpFWVhSaExuWnliVXh2YjJ0QmRDQTlJR0YzWVdsMElIUm9hWE11WDJsdGNHOXlkQ2huYkhSbUxDQjJjbTFJZFcxaGJtOXBaQ3dnZG5KdFJYaHdjbVZ6YzJsdmJrMWhibUZuWlhJcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWx0Y0c5eWRDQmhJSHRBYkdsdWF5QldVazFNYjI5clFYUjlJR1p5YjIwZ1lTQldVazB1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCbmJIUm1JRUVnY0dGeWMyVmtJSEpsYzNWc2RDQnZaaUJIVEZSR0lIUmhhMlZ1SUdaeWIyMGdSMHhVUmt4dllXUmxjbHh1SUNBZ0tpQkFjR0Z5WVcwZ2FIVnRZVzV2YVdRZ1FTQjdRR3hwYm1zZ1ZsSk5TSFZ0WVc1dmFXUjlJR2x1YzNSaGJtTmxJSFJvWVhRZ2NtVndjbVZ6Wlc1MGN5QjBhR1VnVmxKTlhHNGdJQ0FxSUVCd1lYSmhiU0JsZUhCeVpYTnphVzl1Y3lCQklIdEFiR2x1YXlCV1VrMUZlSEJ5WlhOemFXOXVUV0Z1WVdkbGNuMGdhVzV6ZEdGdVkyVWdkR2hoZENCeVpYQnlaWE5sYm5SeklIUm9aU0JXVWsxY2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1lYTjVibU1nWDJsdGNHOXlkQ2hjYmlBZ0lDQm5iSFJtT2lCSFRGUkdMRnh1SUNBZ0lHaDFiV0Z1YjJsa09pQldVazFJZFcxaGJtOXBaQ0I4SUc1MWJHd3NYRzRnSUNBZ1pYaHdjbVZ6YzJsdmJuTTZJRlpTVFVWNGNISmxjM05wYjI1TllXNWhaMlZ5SUh3Z2JuVnNiQ3hjYmlBZ0tUb2dVSEp2YldselpUeFdVazFNYjI5clFYUWdmQ0J1ZFd4c1BpQjdYRzRnSUNBZ2FXWWdLR2gxYldGdWIybGtJRDA5SUc1MWJHd2dmSHdnWlhod2NtVnpjMmx2Ym5NZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnZGpGU1pYTjFiSFFnUFNCaGQyRnBkQ0IwYUdsekxsOTJNVWx0Y0c5eWRDaG5iSFJtTENCb2RXMWhibTlwWkN3Z1pYaHdjbVZ6YzJsdmJuTXBPMXh1SUNBZ0lHbG1JQ2gyTVZKbGMzVnNkQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSFl4VW1WemRXeDBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhZd1VtVnpkV3gwSUQwZ1lYZGhhWFFnZEdocGN5NWZkakJKYlhCdmNuUW9aMngwWml3Z2FIVnRZVzV2YVdRc0lHVjRjSEpsYzNOcGIyNXpLVHRjYmlBZ0lDQnBaaUFvZGpCU1pYTjFiSFFwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUIyTUZKbGMzVnNkRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWVhONWJtTWdYM1l4U1cxd2IzSjBLRnh1SUNBZ0lHZHNkR1k2SUVkTVZFWXNYRzRnSUNBZ2FIVnRZVzV2YVdRNklGWlNUVWgxYldGdWIybGtMRnh1SUNBZ0lHVjRjSEpsYzNOcGIyNXpPaUJXVWsxRmVIQnlaWE56YVc5dVRXRnVZV2RsY2l4Y2JpQWdLVG9nVUhKdmJXbHpaVHhXVWsxTWIyOXJRWFFnZkNCdWRXeHNQaUI3WEc0Z0lDQWdZMjl1YzNRZ2FuTnZiaUE5SUhSb2FYTXVjR0Z5YzJWeUxtcHpiMjRnWVhNZ1IweFVSbE5qYUdWdFlTNUpSMHhVUmp0Y2JseHVJQ0FnSUM4dklHVmhjbXg1SUdGaWIzSjBJR2xtSUdsMElHUnZaWE51SjNRZ2RYTmxJSFp5YlZ4dUlDQWdJR052Ym5OMElHbHpWbEpOVlhObFpDQTlJR3B6YjI0dVpYaDBaVzV6YVc5dWMxVnpaV1EvTG1sdVpHVjRUMllvSjFaU1RVTmZkbkp0SnlrZ0lUMDlJQzB4TzF4dUlDQWdJR2xtSUNnaGFYTldVazFWYzJWa0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCbGVIUmxibk5wYjI0Z1BTQnFjMjl1TG1WNGRHVnVjMmx2Ym5NL0xsc25WbEpOUTE5MmNtMG5YU0JoY3lCV01WWlNUVk5qYUdWdFlTNVdVazFEVmxKTklId2dkVzVrWldacGJtVmtPMXh1SUNBZ0lHbG1JQ2doWlhoMFpXNXphVzl1S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0J6Y0dWalZtVnljMmx2YmlBOUlHVjRkR1Z1YzJsdmJpNXpjR1ZqVm1WeWMybHZianRjYmlBZ0lDQnBaaUFvSVZCUFUxTkpRa3hGWDFOUVJVTmZWa1ZTVTBsUFRsTXVhR0Z6S0hOd1pXTldaWEp6YVc5dUtTa2dlMXh1SUNBZ0lDQWdZMjl1YzI5c1pTNTNZWEp1S0dCV1VrMU1iMjlyUVhSTWIyRmtaWEpRYkhWbmFXNDZJRlZ1YTI1dmQyNGdWbEpOUTE5MmNtMGdjM0JsWTFabGNuTnBiMjRnWENJa2UzTndaV05XWlhKemFXOXVmVndpWUNrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0J6WTJobGJXRk1iMjlyUVhRZ1BTQmxlSFJsYm5OcGIyNHViRzl2YTBGME8xeHVJQ0FnSUdsbUlDZ2hjMk5vWlcxaFRHOXZhMEYwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0JrWldaaGRXeDBUM1YwY0hWMFUyTmhiR1VnUFNCelkyaGxiV0ZNYjI5clFYUXVkSGx3WlNBOVBUMGdKMlY0Y0hKbGMzTnBiMjRuSUQ4Z01TNHdJRG9nTVRBdU1EdGNibHh1SUNBZ0lHTnZibk4wSUcxaGNFaEpJRDBnZEdocGN5NWZkakZKYlhCdmNuUlNZVzVuWlUxaGNDaHpZMmhsYldGTWIyOXJRWFF1Y21GdVoyVk5ZWEJJYjNKcGVtOXVkR0ZzU1c1dVpYSXNJR1JsWm1GMWJIUlBkWFJ3ZFhSVFkyRnNaU2s3WEc0Z0lDQWdZMjl1YzNRZ2JXRndTRThnUFNCMGFHbHpMbDkyTVVsdGNHOXlkRkpoYm1kbFRXRndLSE5qYUdWdFlVeHZiMnRCZEM1eVlXNW5aVTFoY0VodmNtbDZiMjUwWVd4UGRYUmxjaXdnWkdWbVlYVnNkRTkxZEhCMWRGTmpZV3hsS1R0Y2JpQWdJQ0JqYjI1emRDQnRZWEJXUkNBOUlIUm9hWE11WDNZeFNXMXdiM0owVW1GdVoyVk5ZWEFvYzJOb1pXMWhURzl2YTBGMExuSmhibWRsVFdGd1ZtVnlkR2xqWVd4RWIzZHVMQ0JrWldaaGRXeDBUM1YwY0hWMFUyTmhiR1VwTzF4dUlDQWdJR052Ym5OMElHMWhjRlpWSUQwZ2RHaHBjeTVmZGpGSmJYQnZjblJTWVc1blpVMWhjQ2h6WTJobGJXRk1iMjlyUVhRdWNtRnVaMlZOWVhCV1pYSjBhV05oYkZWd0xDQmtaV1poZFd4MFQzVjBjSFYwVTJOaGJHVXBPMXh1WEc0Z0lDQWdiR1YwSUdGd2NHeHBaWEk3WEc1Y2JpQWdJQ0JwWmlBb2MyTm9aVzFoVEc5dmEwRjBMblI1Y0dVZ1BUMDlJQ2RsZUhCeVpYTnphVzl1SnlrZ2UxeHVJQ0FnSUNBZ1lYQndiR2xsY2lBOUlHNWxkeUJXVWsxTWIyOXJRWFJGZUhCeVpYTnphVzl1UVhCd2JHbGxjaWhsZUhCeVpYTnphVzl1Y3l3Z2JXRndTRWtzSUcxaGNFaFBMQ0J0WVhCV1JDd2diV0Z3VmxVcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JoY0hCc2FXVnlJRDBnYm1WM0lGWlNUVXh2YjJ0QmRFSnZibVZCY0hCc2FXVnlLR2gxYldGdWIybGtMQ0J0WVhCSVNTd2diV0Z3U0U4c0lHMWhjRlpFTENCdFlYQldWU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2JHOXZhMEYwSUQwZ2RHaHBjeTVmYVcxd2IzSjBURzl2YTBGMEtHaDFiV0Z1YjJsa0xDQmhjSEJzYVdWeUtUdGNibHh1SUNBZ0lHeHZiMnRCZEM1dlptWnpaWFJHY205dFNHVmhaRUp2Ym1VdVpuSnZiVUZ5Y21GNUtITmphR1Z0WVV4dmIydEJkQzV2Wm1aelpYUkdjbTl0U0dWaFpFSnZibVVnUHo4Z1d6QXVNQ3dnTUM0d05pd2dNQzR3WFNrN1hHNWNiaUFnSUNCeVpYUjFjbTRnYkc5dmEwRjBPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JmZGpGSmJYQnZjblJTWVc1blpVMWhjQ2hjYmlBZ0lDQnpZMmhsYldGU1lXNW5aVTFoY0RvZ1ZqRldVazFUWTJobGJXRXVURzl2YTBGMFVtRnVaMlZOWVhBZ2ZDQjFibVJsWm1sdVpXUXNYRzRnSUNBZ1pHVm1ZWFZzZEU5MWRIQjFkRk5qWVd4bE9pQnVkVzFpWlhJc1hHNGdJQ2s2SUZaU1RVeHZiMnRCZEZKaGJtZGxUV0Z3SUh0Y2JpQWdJQ0JzWlhRZ2FXNXdkWFJOWVhoV1lXeDFaU0E5SUhOamFHVnRZVkpoYm1kbFRXRndQeTVwYm5CMWRFMWhlRlpoYkhWbElEOC9JRGt3TGpBN1hHNGdJQ0FnWTI5dWMzUWdiM1YwY0hWMFUyTmhiR1VnUFNCelkyaGxiV0ZTWVc1blpVMWhjRDh1YjNWMGNIVjBVMk5oYkdVZ1B6OGdaR1ZtWVhWc2RFOTFkSEIxZEZOallXeGxPMXh1WEc0Z0lDQWdMeThnU1hRZ2JXbG5hSFFnWTJGMWMyVWdUbUZPSUhkb1pXNGdZR2x1Y0hWMFRXRjRWbUZzZFdWZ0lHbHpJSFJ2YnlCemJXRnNiRnh1SUNBZ0lDOHZJSGRvYVdOb0lHMWhhMlZ6SUhSb1pTQnRaWE5vSUc5bUlIUm9aU0JvWldGa0lHUnBjMkZ3Y0dWaGNseHVJQ0FnSUM4dklGTmxaVG9nYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDNCcGVHbDJMM1JvY21WbExYWnliUzlwYzNOMVpYTXZNVEl3TVZ4dUlDQWdJR2xtSUNocGJuQjFkRTFoZUZaaGJIVmxJRHdnU1U1UVZWUmZUVUZZWDFaQlRGVkZYMDFKVGtsTlZVMHBJSHRjYmlBZ0lDQWdJR052Ym5OdmJHVXVkMkZ5YmloY2JpQWdJQ0FnSUNBZ0oxWlNUVXh2YjJ0QmRFeHZZV1JsY2xCc2RXZHBiam9nYVc1d2RYUk5ZWGhXWVd4MVpTQnZaaUJoSUhKaGJtZGxJRzFoY0NCcGN5QjBiMjhnYzIxaGJHd3VJRU52Ym5OcFpHVnlJSEpsZG1sbGQybHVaeUIwYUdVZ2NtRnVaMlVnYldGd0lTY3NYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdhVzV3ZFhSTllYaFdZV3gxWlNBOUlFbE9VRlZVWDAxQldGOVdRVXhWUlY5TlNVNUpUVlZOTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnVaWGNnVmxKTlRHOXZhMEYwVW1GdVoyVk5ZWEFvYVc1d2RYUk5ZWGhXWVd4MVpTd2diM1YwY0hWMFUyTmhiR1VwTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCaGMzbHVZeUJmZGpCSmJYQnZjblFvWEc0Z0lDQWdaMngwWmpvZ1IweFVSaXhjYmlBZ0lDQm9kVzFoYm05cFpEb2dWbEpOU0hWdFlXNXZhV1FzWEc0Z0lDQWdaWGh3Y21WemMybHZibk02SUZaU1RVVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeUxGeHVJQ0FwT2lCUWNtOXRhWE5sUEZaU1RVeHZiMnRCZENCOElHNTFiR3crSUh0Y2JpQWdJQ0JqYjI1emRDQnFjMjl1SUQwZ2RHaHBjeTV3WVhKelpYSXVhbk52YmlCaGN5QkhURlJHVTJOb1pXMWhMa2xIVEZSR08xeHVYRzRnSUNBZ0x5OGdaV0Z5YkhrZ1lXSnZjblFnYVdZZ2FYUWdaRzlsYzI0bmRDQjFjMlVnZG5KdFhHNGdJQ0FnWTI5dWMzUWdkbkp0UlhoMElEMGdhbk52Ymk1bGVIUmxibk5wYjI1elB5NVdVazBnWVhNZ1ZqQldVazB1VmxKTklId2dkVzVrWldacGJtVmtPMXh1SUNBZ0lHbG1JQ2doZG5KdFJYaDBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQnpZMmhsYldGR2FYSnpkRkJsY25OdmJpQTlJSFp5YlVWNGRDNW1hWEp6ZEZCbGNuTnZianRjYmlBZ0lDQnBaaUFvSVhOamFHVnRZVVpwY25OMFVHVnljMjl1S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0JrWldaaGRXeDBUM1YwY0hWMFUyTmhiR1VnUFNCelkyaGxiV0ZHYVhKemRGQmxjbk52Ymk1c2IyOXJRWFJVZVhCbFRtRnRaU0E5UFQwZ0owSnNaVzVrVTJoaGNHVW5JRDhnTVM0d0lEb2dNVEF1TUR0Y2JseHVJQ0FnSUdOdmJuTjBJRzFoY0VoSklEMGdkR2hwY3k1ZmRqQkpiWEJ2Y25SRVpXZHlaV1ZOWVhBb2MyTm9aVzFoUm1seWMzUlFaWEp6YjI0dWJHOXZhMEYwU0c5eWFYcHZiblJoYkVsdWJtVnlMQ0JrWldaaGRXeDBUM1YwY0hWMFUyTmhiR1VwTzF4dUlDQWdJR052Ym5OMElHMWhjRWhQSUQwZ2RHaHBjeTVmZGpCSmJYQnZjblJFWldkeVpXVk5ZWEFvYzJOb1pXMWhSbWx5YzNSUVpYSnpiMjR1Ykc5dmEwRjBTRzl5YVhwdmJuUmhiRTkxZEdWeUxDQmtaV1poZFd4MFQzVjBjSFYwVTJOaGJHVXBPMXh1SUNBZ0lHTnZibk4wSUcxaGNGWkVJRDBnZEdocGN5NWZkakJKYlhCdmNuUkVaV2R5WldWTllYQW9jMk5vWlcxaFJtbHljM1JRWlhKemIyNHViRzl2YTBGMFZtVnlkR2xqWVd4RWIzZHVMQ0JrWldaaGRXeDBUM1YwY0hWMFUyTmhiR1VwTzF4dUlDQWdJR052Ym5OMElHMWhjRlpWSUQwZ2RHaHBjeTVmZGpCSmJYQnZjblJFWldkeVpXVk5ZWEFvYzJOb1pXMWhSbWx5YzNSUVpYSnpiMjR1Ykc5dmEwRjBWbVZ5ZEdsallXeFZjQ3dnWkdWbVlYVnNkRTkxZEhCMWRGTmpZV3hsS1R0Y2JseHVJQ0FnSUd4bGRDQmhjSEJzYVdWeU8xeHVYRzRnSUNBZ2FXWWdLSE5qYUdWdFlVWnBjbk4wVUdWeWMyOXVMbXh2YjJ0QmRGUjVjR1ZPWVcxbElEMDlQU0FuUW14bGJtUlRhR0Z3WlNjcElIdGNiaUFnSUNBZ0lHRndjR3hwWlhJZ1BTQnVaWGNnVmxKTlRHOXZhMEYwUlhod2NtVnpjMmx2YmtGd2NHeHBaWElvWlhod2NtVnpjMmx2Ym5Nc0lHMWhjRWhKTENCdFlYQklUeXdnYldGd1ZrUXNJRzFoY0ZaVktUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnWVhCd2JHbGxjaUE5SUc1bGR5QldVazFNYjI5clFYUkNiMjVsUVhCd2JHbGxjaWhvZFcxaGJtOXBaQ3dnYldGd1NFa3NJRzFoY0VoUExDQnRZWEJXUkN3Z2JXRndWbFVwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElHeHZiMnRCZENBOUlIUm9hWE11WDJsdGNHOXlkRXh2YjJ0QmRDaG9kVzFoYm05cFpDd2dZWEJ3YkdsbGNpazdYRzVjYmlBZ0lDQnBaaUFvYzJOb1pXMWhSbWx5YzNSUVpYSnpiMjR1Wm1seWMzUlFaWEp6YjI1Q2IyNWxUMlptYzJWMEtTQjdYRzRnSUNBZ0lDQnNiMjlyUVhRdWIyWm1jMlYwUm5KdmJVaGxZV1JDYjI1bExuTmxkQ2hjYmlBZ0lDQWdJQ0FnYzJOb1pXMWhSbWx5YzNSUVpYSnpiMjR1Wm1seWMzUlFaWEp6YjI1Q2IyNWxUMlptYzJWMExuZ2dQejhnTUM0d0xGeHVJQ0FnSUNBZ0lDQnpZMmhsYldGR2FYSnpkRkJsY25OdmJpNW1hWEp6ZEZCbGNuTnZia0p2Ym1WUFptWnpaWFF1ZVNBL1B5QXdMakEyTEZ4dUlDQWdJQ0FnSUNBdEtITmphR1Z0WVVacGNuTjBVR1Z5YzI5dUxtWnBjbk4wVUdWeWMyOXVRbTl1WlU5bVpuTmxkQzU2SUQ4L0lEQXVNQ2tzWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnNiMjlyUVhRdWIyWm1jMlYwUm5KdmJVaGxZV1JDYjI1bExuTmxkQ2d3TGpBc0lEQXVNRFlzSURBdU1DazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdWbEpOSURBdU1DQmhjbVVnWm1GamFXNW5JRm90SUdsdWMzUmxZV1FnYjJZZ1dpdGNiaUFnSUNCc2IyOXJRWFF1Wm1GalpVWnliMjUwTG5ObGRDZ3dMakFzSURBdU1Dd2dMVEV1TUNrN1hHNWNiaUFnSUNCcFppQW9ZWEJ3YkdsbGNpQnBibk4wWVc1alpXOW1JRlpTVFV4dmIydEJkRUp2Ym1WQmNIQnNhV1Z5S1NCN1hHNGdJQ0FnSUNCaGNIQnNhV1Z5TG1aaFkyVkdjbTl1ZEM1elpYUW9NQzR3TENBd0xqQXNJQzB4TGpBcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJzYjI5clFYUTdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJRjkyTUVsdGNHOXlkRVJsWjNKbFpVMWhjQ2hjYmlBZ0lDQnpZMmhsYldGRVpXZHlaV1ZOWVhBNklGWXdWbEpOTGtacGNuTjBVR1Z5YzI5dVJHVm5jbVZsVFdGd0lId2dkVzVrWldacGJtVmtMRnh1SUNBZ0lHUmxabUYxYkhSUGRYUndkWFJUWTJGc1pUb2diblZ0WW1WeUxGeHVJQ0FwT2lCV1VrMU1iMjlyUVhSU1lXNW5aVTFoY0NCN1hHNGdJQ0FnWTI5dWMzUWdZM1Z5ZG1VZ1BTQnpZMmhsYldGRVpXZHlaV1ZOWVhBL0xtTjFjblpsTzF4dUlDQWdJR2xtSUNoS1UwOU9Mbk4wY21sdVoybG1lU2hqZFhKMlpTa2dJVDA5SUNkYk1Dd3dMREFzTVN3eExERXNNU3d3WFNjcElIdGNiaUFnSUNBZ0lHTnZibk52YkdVdWQyRnliaWduUTNWeWRtVnpJRzltSUV4dmIydEJkRVJsWjNKbFpVMWhjQ0JrWldacGJtVmtJR2x1SUZaU1RTQXdMakFnWVhKbElHNXZkQ0J6ZFhCd2IzSjBaV1FuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JzWlhRZ2VGSmhibWRsSUQwZ2MyTm9aVzFoUkdWbmNtVmxUV0Z3UHk1NFVtRnVaMlVnUHo4Z09UQXVNRHRjYmlBZ0lDQmpiMjV6ZENCNVVtRnVaMlVnUFNCelkyaGxiV0ZFWldkeVpXVk5ZWEEvTG5sU1lXNW5aU0EvUHlCa1pXWmhkV3gwVDNWMGNIVjBVMk5oYkdVN1hHNWNiaUFnSUNBdkx5QkpkQ0J0YVdkb2RDQmpZWFZ6WlNCT1lVNGdkMmhsYmlCZ2VGSmhibWRsWUNCcGN5QjBiMjhnYzIxaGJHeGNiaUFnSUNBdkx5QjNhR2xqYUNCdFlXdGxjeUIwYUdVZ2JXVnphQ0J2WmlCMGFHVWdhR1ZoWkNCa2FYTmhjSEJsWVhKY2JpQWdJQ0F2THlCVFpXVTZJR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzl3YVhocGRpOTBhSEpsWlMxMmNtMHZhWE56ZFdWekx6RXlNREZjYmlBZ0lDQnBaaUFvZUZKaGJtZGxJRHdnU1U1UVZWUmZUVUZZWDFaQlRGVkZYMDFKVGtsTlZVMHBJSHRjYmlBZ0lDQWdJR052Ym5OdmJHVXVkMkZ5YmlnblZsSk5URzl2YTBGMFRHOWhaR1Z5VUd4MVoybHVPaUI0VW1GdVoyVWdiMllnWVNCa1pXZHlaV1VnYldGd0lHbHpJSFJ2YnlCemJXRnNiQzRnUTI5dWMybGtaWElnY21WMmFXVjNhVzVuSUhSb1pTQmtaV2R5WldVZ2JXRndJU2NwTzF4dUlDQWdJQ0FnZUZKaGJtZGxJRDBnU1U1UVZWUmZUVUZZWDFaQlRGVkZYMDFKVGtsTlZVMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QldVazFNYjI5clFYUlNZVzVuWlUxaGNDaDRVbUZ1WjJVc0lIbFNZVzVuWlNrN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElGOXBiWEJ2Y25STWIyOXJRWFFvYUhWdFlXNXZhV1E2SUZaU1RVaDFiV0Z1YjJsa0xDQmhjSEJzYVdWeU9pQldVazFNYjI5clFYUkJjSEJzYVdWeUtUb2dWbEpOVEc5dmEwRjBJSHRjYmlBZ0lDQmpiMjV6ZENCc2IyOXJRWFFnUFNCdVpYY2dWbEpOVEc5dmEwRjBLR2gxYldGdWIybGtMQ0JoY0hCc2FXVnlLVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbWhsYkhCbGNsSnZiM1FwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR2hsYkhCbGNpQTlJRzVsZHlCV1VrMU1iMjlyUVhSSVpXeHdaWElvYkc5dmEwRjBLVHRjYmlBZ0lDQWdJSFJvYVhNdWFHVnNjR1Z5VW05dmRDNWhaR1FvYUdWc2NHVnlLVHRjYmlBZ0lDQWdJR2hsYkhCbGNpNXlaVzVrWlhKUGNtUmxjaUE5SUhSb2FYTXVhR1ZzY0dWeVVtOXZkQzV5Wlc1a1pYSlBjbVJsY2p0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdiRzl2YTBGME8xeHVJQ0I5WEc1OVhHNGlMQ0l2S2lCbGMyeHBiblF0WkdsellXSnNaU0JBZEhsd1pYTmpjbWx3ZEMxbGMyeHBiblF2Ym1GdGFXNW5MV052Ym5abGJuUnBiMjRnS2k5Y2JseHVMeW9xWEc0Z0tpQlNaWEJ5WlhObGJuUnpJR0VnZEhsd1pTQnZaaUJoY0hCc2FXVnlMbHh1SUNvdlhHNWxlSEJ2Y25RZ1kyOXVjM1FnVmxKTlRHOXZhMEYwVkhsd1pVNWhiV1VnUFNCN1hHNGdJRUp2Ym1VNklDZGliMjVsSnl4Y2JpQWdSWGh3Y21WemMybHZiam9nSjJWNGNISmxjM05wYjI0bkxGeHVmVHRjYmx4dVpYaHdiM0owSUhSNWNHVWdWbEpOVEc5dmEwRjBWSGx3WlU1aGJXVWdQU0IwZVhCbGIyWWdWbEpOVEc5dmEwRjBWSGx3WlU1aGJXVmJhMlY1YjJZZ2RIbHdaVzltSUZaU1RVeHZiMnRCZEZSNWNHVk9ZVzFsWFR0Y2JpSXNJaThxS2x4dUlDb2dXVzlwYm10bFpDQm1jbTl0SUdoMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5dGNtUnZiMkl2ZEdoeVpXVXVhbk12WW14dllpOXRZWE4wWlhJdlpYaGhiWEJzWlhNdmFuTnRMMnh2WVdSbGNuTXZSMHhVUmt4dllXUmxjaTVxYzF4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjbVZ6YjJ4MlpWVlNUQ2gxY213NklITjBjbWx1Wnl3Z2NHRjBhRG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JSHRjYmlBZ0x5OGdTVzUyWVd4cFpDQlZVa3hjYmlBZ2FXWWdLSFI1Y0dWdlppQjFjbXdnSVQwOUlDZHpkSEpwYm1jbklIeDhJSFZ5YkNBOVBUMGdKeWNwSUhKbGRIVnliaUFuSnp0Y2JseHVJQ0F2THlCSWIzTjBJRkpsYkdGMGFYWmxJRlZTVEZ4dUlDQnBaaUFvTDE1b2RIUndjejg2WEZ3dlhGd3ZMMmt1ZEdWemRDaHdZWFJvS1NBbUppQXZYbHhjTHk4dWRHVnpkQ2gxY213cEtTQjdYRzRnSUNBZ2NHRjBhQ0E5SUhCaGRHZ3VjbVZ3YkdGalpTZ3ZLRjVvZEhSd2N6ODZYRnd2WEZ3dlcxNHZYU3NwTGlvdmFTd2dKeVF4SnlrN1hHNGdJSDFjYmx4dUlDQXZMeUJCWW5OdmJIVjBaU0JWVWt3Z2FIUjBjRG92THl4b2RIUndjem92THl3dkwxeHVJQ0JwWmlBb0wxNG9hSFIwY0hNL09pay9YRnd2WEZ3dkwya3VkR1Z6ZENoMWNtd3BLU0J5WlhSMWNtNGdkWEpzTzF4dVhHNGdJQzh2SUVSaGRHRWdWVkpKWEc0Z0lHbG1JQ2d2WG1SaGRHRTZMaW9zTGlva0wya3VkR1Z6ZENoMWNtd3BLU0J5WlhSMWNtNGdkWEpzTzF4dVhHNGdJQzh2SUVKc2IySWdWVkpNWEc0Z0lHbG1JQ2d2WG1Kc2IySTZMaW9rTDJrdWRHVnpkQ2gxY213cEtTQnlaWFIxY200Z2RYSnNPMXh1WEc0Z0lDOHZJRkpsYkdGMGFYWmxJRlZTVEZ4dUlDQnlaWFIxY200Z2NHRjBhQ0FySUhWeWJEdGNibjFjYmlJc0ltbHRjRzl5ZENCMGVYQmxJSHNnUjB4VVJpd2dSMHhVUmt4dllXUmxjbEJzZFdkcGJpd2dSMHhVUmxCaGNuTmxjaUI5SUdaeWIyMGdKM1JvY21WbEwyVjRZVzF3YkdWekwycHpiUzlzYjJGa1pYSnpMMGRNVkVaTWIyRmtaWEl1YW5Nbk8xeHVhVzF3YjNKMElIUjVjR1VnZXlCV1VrMHdUV1YwWVNCOUlHWnliMjBnSnk0dlZsSk5NRTFsZEdFbk8xeHVhVzF3YjNKMElIUjVjR1VnZXlCV1VrMHhUV1YwWVNCOUlHWnliMjBnSnk0dlZsSk5NVTFsZEdFbk8xeHVhVzF3YjNKMElIUjVjR1VnZXlCV1VrMU5aWFJoSUgwZ1puSnZiU0FuTGk5V1VrMU5aWFJoSnp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnVmxKTlRXVjBZVXh2WVdSbGNsQnNkV2RwYms5d2RHbHZibk1nZlNCbWNtOXRJQ2N1TDFaU1RVMWxkR0ZNYjJGa1pYSlFiSFZuYVc1UGNIUnBiMjV6Snp0Y2JtbHRjRzl5ZENCMGVYQmxJQ29nWVhNZ1ZqQldVazBnWm5KdmJTQW5RSEJwZUdsMkwzUjVjR1Z6TFhaeWJTMHdMakFuTzF4dWFXMXdiM0owSUhSNWNHVWdLaUJoY3lCV01WWlNUVk5qYUdWdFlTQm1jbTl0SUNkQWNHbDRhWFl2ZEhsd1pYTXRkbkp0WXkxMmNtMHRNUzR3Snp0Y2JtbHRjRzl5ZENBcUlHRnpJRlJJVWtWRklHWnliMjBnSjNSb2NtVmxKenRjYm1sdGNHOXlkQ0I3SUhKbGMyOXNkbVZWVWt3Z2ZTQm1jbTl0SUNjdUxpOTFkR2xzY3k5eVpYTnZiSFpsVlZKTUp6dGNibWx0Y0c5eWRDQjdJRWRNVkVZZ1lYTWdSMHhVUmxOamFHVnRZU0I5SUdaeWIyMGdKMEJuYkhSbUxYUnlZVzV6Wm05eWJTOWpiM0psSnp0Y2JseHVMeW9xWEc0Z0tpQlFiM056YVdKc1pTQnpjR1ZqSUhabGNuTnBiMjV6SUdsMElISmxZMjluYm1sNlpYTXVYRzRnS2k5Y2JtTnZibk4wSUZCUFUxTkpRa3hGWDFOUVJVTmZWa1ZTVTBsUFRsTWdQU0J1WlhjZ1UyVjBLRnNuTVM0d0p5d2dKekV1TUMxaVpYUmhKMTBwTzF4dVhHNHZLaXBjYmlBcUlFRWdjR3gxWjJsdUlHOW1JRWRNVkVaTWIyRmtaWElnZEdoaGRDQnBiWEJ2Y25SeklHRWdlMEJzYVc1cklGWlNUVEZOWlhSaGZTQm1jbTl0SUdFZ1ZsSk5JR1Y0ZEdWdWMybHZiaUJ2WmlCaElFZE1WRVl1WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCV1VrMU5aWFJoVEc5aFpHVnlVR3gxWjJsdUlHbHRjR3hsYldWdWRITWdSMHhVUmt4dllXUmxjbEJzZFdkcGJpQjdYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0J3WVhKelpYSTZJRWRNVkVaUVlYSnpaWEk3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWxtSUdCbVlXeHpaV0FzSUdsMElIZHZiaWQwSUd4dllXUWdhWFJ6SUhSb2RXMWlibUZwYkNCcGJXRm5aU0FvZTBCc2FXNXJJRlpTVFRGTlpYUmhMblJvZFcxaWJtRnBiRWx0WVdkbGZTa3VYRzRnSUNBcUlHQjBjblZsWUNCaWVTQmtaV1poZFd4MExseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHNWxaV1JVYUhWdFltNWhhV3hKYldGblpUb2dZbTl2YkdWaGJqdGNibHh1SUNBdktpcGNiaUFnSUNvZ1FTQnNhWE4wSUc5bUlHeHBZMlZ1YzJVZ2RYSnNjeTVjYmlBZ0lDb2dWR2hwY3lCdFpYUmhJR3h2WVdSbGNpQjNhV3hzSUdGalkyVndkQ0IwYUdWelpTQmdiR2xqWlc1elpWVnliR0J6TGx4dUlDQWdLaUJQZEdobGNuZHBjMlVnYVhRZ2QyOXVKM1FnWW1VZ2JHOWhaR1ZrTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdGalkyVndkRXhwWTJWdWMyVlZjbXh6T2lCemRISnBibWRiWFR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVjJobGRHaGxjaUJwZENCemFHOTFiR1FnWVdOalpYQjBJRlpTVFRBdU1DQnRaWFJoSUc5eUlHNXZkQzVjYmlBZ0lDb2dUbTkwWlNCMGFHRjBJR2wwSUcxcFoyaDBJR3h2WVdRZ2UwQnNhVzVySUZaU1RUQk5aWFJoZlNCcGJuTjBaV0ZrSUc5bUlIdEFiR2x1YXlCV1VrMHhUV1YwWVgwZ2QyaGxiaUIwYUdseklHbHpJR0IwY25WbFlDNWNiaUFnSUNvZ1lIUnlkV1ZnSUdKNUlHUmxabUYxYkhRdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1lXTmpaWEIwVmpCTlpYUmhPaUJpYjI5c1pXRnVPMXh1WEc0Z0lIQjFZbXhwWXlCblpYUWdibUZ0WlNncE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUM4dklGZGxJSE5vYjNWc1pDQjFjMlVnZEdobElHVjRkR1Z1YzJsdmJpQnVZVzFsSUdsdWMzUmxZV1FnWW5WMElIZGxJR2hoZG1VZ2JYVnNkR2x3YkdVZ2NHeDFaMmx1Y3lCbWIzSWdZVzRnWlhoMFpXNXphVzl1TGk0dVhHNGdJQ0FnY21WMGRYSnVJQ2RXVWsxTlpYUmhURzloWkdWeVVHeDFaMmx1Snp0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpaHdZWEp6WlhJNklFZE1WRVpRWVhKelpYSXNJRzl3ZEdsdmJuTS9PaUJXVWsxTlpYUmhURzloWkdWeVVHeDFaMmx1VDNCMGFXOXVjeWtnZTF4dUlDQWdJSFJvYVhNdWNHRnljMlZ5SUQwZ2NHRnljMlZ5TzF4dVhHNGdJQ0FnZEdocGN5NXVaV1ZrVkdoMWJXSnVZV2xzU1cxaFoyVWdQU0J2Y0hScGIyNXpQeTV1WldWa1ZHaDFiV0p1WVdsc1NXMWhaMlVnUHo4Z2RISjFaVHRjYmlBZ0lDQjBhR2x6TG1GalkyVndkRXhwWTJWdWMyVlZjbXh6SUQwZ2IzQjBhVzl1Y3o4dVlXTmpaWEIwVEdsalpXNXpaVlZ5YkhNZ1B6OGdXeWRvZEhSd2N6b3ZMM1p5YlM1a1pYWXZiR2xqWlc1elpYTXZNUzR3THlkZE8xeHVJQ0FnSUhSb2FYTXVZV05qWlhCMFZqQk5aWFJoSUQwZ2IzQjBhVzl1Y3o4dVlXTmpaWEIwVmpCTlpYUmhJRDgvSUhSeWRXVTdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdZWE41Ym1NZ1lXWjBaWEpTYjI5MEtHZHNkR1k2SUVkTVZFWXBPaUJRY205dGFYTmxQSFp2YVdRK0lIdGNiaUFnSUNCbmJIUm1MblZ6WlhKRVlYUmhMblp5YlUxbGRHRWdQU0JoZDJGcGRDQjBhR2x6TGw5cGJYQnZjblFvWjJ4MFppazdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR0Z6ZVc1aklGOXBiWEJ2Y25Rb1oyeDBaam9nUjB4VVJpazZJRkJ5YjIxcGMyVThWbEpOVFdWMFlTQjhJRzUxYkd3K0lIdGNiaUFnSUNCamIyNXpkQ0IyTVZKbGMzVnNkQ0E5SUdGM1lXbDBJSFJvYVhNdVgzWXhTVzF3YjNKMEtHZHNkR1lwTzF4dUlDQWdJR2xtSUNoMk1WSmxjM1ZzZENBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZGpGU1pYTjFiSFE3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2RqQlNaWE4xYkhRZ1BTQmhkMkZwZENCMGFHbHpMbDkyTUVsdGNHOXlkQ2huYkhSbUtUdGNiaUFnSUNCcFppQW9kakJTWlhOMWJIUWdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIWXdVbVZ6ZFd4ME8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQmhjM2x1WXlCZmRqRkpiWEJ2Y25Rb1oyeDBaam9nUjB4VVJpazZJRkJ5YjIxcGMyVThWbEpOTVUxbGRHRWdmQ0J1ZFd4c1BpQjdYRzRnSUNBZ1kyOXVjM1FnYW5OdmJpQTlJSFJvYVhNdWNHRnljMlZ5TG1wemIyNGdZWE1nUjB4VVJsTmphR1Z0WVM1SlIweFVSanRjYmx4dUlDQWdJQzh2SUdWaGNteDVJR0ZpYjNKMElHbG1JR2wwSUdSdlpYTnVKM1FnZFhObElIWnliVnh1SUNBZ0lHTnZibk4wSUdselZsSk5WWE5sWkNBOUlHcHpiMjR1WlhoMFpXNXphVzl1YzFWelpXUS9MbWx1WkdWNFQyWW9KMVpTVFVOZmRuSnRKeWtnSVQwOUlDMHhPMXh1SUNBZ0lHbG1JQ2doYVhOV1VrMVZjMlZrS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0JsZUhSbGJuTnBiMjRnUFNCcWMyOXVMbVY0ZEdWdWMybHZibk0vTGxzblZsSk5RMTkyY20wblhTQmhjeUJXTVZaU1RWTmphR1Z0WVM1V1VrMURWbEpOSUh3Z2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUdsbUlDaGxlSFJsYm5OcGIyNGdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2MzQmxZMVpsY25OcGIyNGdQU0JsZUhSbGJuTnBiMjR1YzNCbFkxWmxjbk5wYjI0N1hHNGdJQ0FnYVdZZ0tDRlFUMU5UU1VKTVJWOVRVRVZEWDFaRlVsTkpUMDVUTG1oaGN5aHpjR1ZqVm1WeWMybHZiaWtwSUh0Y2JpQWdJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpaGdWbEpOVFdWMFlVeHZZV1JsY2xCc2RXZHBiam9nVlc1cmJtOTNiaUJXVWsxRFgzWnliU0J6Y0dWalZtVnljMmx2YmlCY0lpUjdjM0JsWTFabGNuTnBiMjU5WENKZ0tUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhOamFHVnRZVTFsZEdFZ1BTQmxlSFJsYm5OcGIyNHViV1YwWVR0Y2JpQWdJQ0JwWmlBb0lYTmphR1Z0WVUxbGRHRXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUhSb2NtOTNJR0Z1SUdWeWNtOXlJR2xtSUdGalkyVndkRll3VFdWMFlTQnBjeUJtWVd4elpWeHVJQ0FnSUdOdmJuTjBJR3hwWTJWdWMyVlZjbXdnUFNCelkyaGxiV0ZOWlhSaExteHBZMlZ1YzJWVmNtdzdYRzRnSUNBZ1kyOXVjM1FnWVdOalpYQjBUR2xqWlc1elpWVnliSE5UWlhRZ1BTQnVaWGNnVTJWMEtIUm9hWE11WVdOalpYQjBUR2xqWlc1elpWVnliSE1wTzF4dUlDQWdJR2xtSUNnaFlXTmpaWEIwVEdsalpXNXpaVlZ5YkhOVFpYUXVhR0Z6S0d4cFkyVnVjMlZWY213cEtTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lGWlNUVTFsZEdGTWIyRmtaWEpRYkhWbmFXNDZJRlJvWlNCc2FXTmxibk5sSUhWeWJDQmNJaVI3YkdsalpXNXpaVlZ5YkgxY0lpQnBjeUJ1YjNRZ1lXTmpaWEIwWldSZ0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCc1pYUWdkR2gxYldKdVlXbHNTVzFoWjJVNklFaFVUVXhKYldGblpVVnNaVzFsYm5RZ2ZDQjFibVJsWm1sdVpXUWdQU0IxYm1SbFptbHVaV1E3WEc0Z0lDQWdhV1lnS0hSb2FYTXVibVZsWkZSb2RXMWlibUZwYkVsdFlXZGxJQ1ltSUhOamFHVnRZVTFsZEdFdWRHaDFiV0p1WVdsc1NXMWhaMlVnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnZEdoMWJXSnVZV2xzU1cxaFoyVWdQU0FvWVhkaGFYUWdkR2hwY3k1ZlpYaDBjbUZqZEVkTVZFWkpiV0ZuWlNoelkyaGxiV0ZOWlhSaExuUm9kVzFpYm1GcGJFbHRZV2RsS1NrZ1B6OGdkVzVrWldacGJtVmtPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNCdFpYUmhWbVZ5YzJsdmJqb2dKekVuTEZ4dUlDQWdJQ0FnYm1GdFpUb2djMk5vWlcxaFRXVjBZUzV1WVcxbExGeHVJQ0FnSUNBZ2RtVnljMmx2YmpvZ2MyTm9aVzFoVFdWMFlTNTJaWEp6YVc5dUxGeHVJQ0FnSUNBZ1lYVjBhRzl5Y3pvZ2MyTm9aVzFoVFdWMFlTNWhkWFJvYjNKekxGeHVJQ0FnSUNBZ1kyOXdlWEpwWjJoMFNXNW1iM0p0WVhScGIyNDZJSE5qYUdWdFlVMWxkR0V1WTI5d2VYSnBaMmgwU1c1bWIzSnRZWFJwYjI0c1hHNGdJQ0FnSUNCamIyNTBZV04wU1c1bWIzSnRZWFJwYjI0NklITmphR1Z0WVUxbGRHRXVZMjl1ZEdGamRFbHVabTl5YldGMGFXOXVMRnh1SUNBZ0lDQWdjbVZtWlhKbGJtTmxjem9nYzJOb1pXMWhUV1YwWVM1eVpXWmxjbVZ1WTJWekxGeHVJQ0FnSUNBZ2RHaHBjbVJRWVhKMGVVeHBZMlZ1YzJWek9pQnpZMmhsYldGTlpYUmhMblJvYVhKa1VHRnlkSGxNYVdObGJuTmxjeXhjYmlBZ0lDQWdJSFJvZFcxaWJtRnBiRWx0WVdkbExGeHVJQ0FnSUNBZ2JHbGpaVzV6WlZWeWJEb2djMk5vWlcxaFRXVjBZUzVzYVdObGJuTmxWWEpzTEZ4dUlDQWdJQ0FnWVhaaGRHRnlVR1Z5YldsemMybHZiam9nYzJOb1pXMWhUV1YwWVM1aGRtRjBZWEpRWlhKdGFYTnphVzl1TEZ4dUlDQWdJQ0FnWVd4c2IzZEZlR05sYzNOcGRtVnNlVlpwYjJ4bGJuUlZjMkZuWlRvZ2MyTm9aVzFoVFdWMFlTNWhiR3h2ZDBWNFkyVnpjMmwyWld4NVZtbHZiR1Z1ZEZWellXZGxMRnh1SUNBZ0lDQWdZV3hzYjNkRmVHTmxjM05wZG1Wc2VWTmxlSFZoYkZWellXZGxPaUJ6WTJobGJXRk5aWFJoTG1Gc2JHOTNSWGhqWlhOemFYWmxiSGxUWlhoMVlXeFZjMkZuWlN4Y2JpQWdJQ0FnSUdOdmJXMWxjbU5wWVd4VmMyRm5aVG9nYzJOb1pXMWhUV1YwWVM1amIyMXRaWEpqYVdGc1ZYTmhaMlVzWEc0Z0lDQWdJQ0JoYkd4dmQxQnZiR2wwYVdOaGJFOXlVbVZzYVdkcGIzVnpWWE5oWjJVNklITmphR1Z0WVUxbGRHRXVZV3hzYjNkUWIyeHBkR2xqWVd4UGNsSmxiR2xuYVc5MWMxVnpZV2RsTEZ4dUlDQWdJQ0FnWVd4c2IzZEJiblJwYzI5amFXRnNUM0pJWVhSbFZYTmhaMlU2SUhOamFHVnRZVTFsZEdFdVlXeHNiM2RCYm5ScGMyOWphV0ZzVDNKSVlYUmxWWE5oWjJVc1hHNGdJQ0FnSUNCamNtVmthWFJPYjNSaGRHbHZiam9nYzJOb1pXMWhUV1YwWVM1amNtVmthWFJPYjNSaGRHbHZiaXhjYmlBZ0lDQWdJR0ZzYkc5M1VtVmthWE4wY21saWRYUnBiMjQ2SUhOamFHVnRZVTFsZEdFdVlXeHNiM2RTWldScGMzUnlhV0oxZEdsdmJpeGNiaUFnSUNBZ0lHMXZaR2xtYVdOaGRHbHZiam9nYzJOb1pXMWhUV1YwWVM1dGIyUnBabWxqWVhScGIyNHNYRzRnSUNBZ0lDQnZkR2hsY2t4cFkyVnVjMlZWY213NklITmphR1Z0WVUxbGRHRXViM1JvWlhKTWFXTmxibk5sVlhKc0xGeHVJQ0FnSUgwN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHRnplVzVqSUY5Mk1FbHRjRzl5ZENobmJIUm1PaUJIVEZSR0tUb2dVSEp2YldselpUeFdVazB3VFdWMFlTQjhJRzUxYkd3K0lIdGNiaUFnSUNCamIyNXpkQ0JxYzI5dUlEMGdkR2hwY3k1d1lYSnpaWEl1YW5OdmJpQmhjeUJIVEZSR1UyTm9aVzFoTGtsSFRGUkdPMXh1WEc0Z0lDQWdMeThnWldGeWJIa2dZV0p2Y25RZ2FXWWdhWFFnWkc5bGMyNG5kQ0IxYzJVZ2RuSnRYRzRnSUNBZ1kyOXVjM1FnZG5KdFJYaDBJRDBnYW5OdmJpNWxlSFJsYm5OcGIyNXpQeTVXVWswZ1lYTWdWakJXVWswdVZsSk5JSHdnZFc1a1pXWnBibVZrTzF4dUlDQWdJR2xtSUNnaGRuSnRSWGgwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0J6WTJobGJXRk5aWFJoSUQwZ2RuSnRSWGgwTG0xbGRHRTdYRzRnSUNBZ2FXWWdLQ0Z6WTJobGJXRk5aWFJoS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QjBhSEp2ZHlCaGJpQmxjbkp2Y2lCcFppQmhZMk5sY0hSV01FMWxkR0VnYVhNZ1ptRnNjMlZjYmlBZ0lDQnBaaUFvSVhSb2FYTXVZV05qWlhCMFZqQk5aWFJoS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjFaU1RVMWxkR0ZNYjJGa1pYSlFiSFZuYVc0NklFRjBkR1Z0Y0hSbFpDQjBieUJzYjJGa0lGWlNUVEF1TUNCdFpYUmhJR0oxZENCaFkyTmxjSFJXTUUxbGRHRWdhWE1nWm1Gc2MyVW5LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJzYjJGa0lIUm9kVzFpYm1GcGJDQjBaWGgwZFhKbFhHNGdJQ0FnYkdWMElIUmxlSFIxY21VNklGUklVa1ZGTGxSbGVIUjFjbVVnZkNCdWRXeHNJSHdnZFc1a1pXWnBibVZrTzF4dUlDQWdJR2xtSUNoMGFHbHpMbTVsWldSVWFIVnRZbTVoYVd4SmJXRm5aU0FtSmlCelkyaGxiV0ZOWlhSaExuUmxlSFIxY21VZ0lUMGdiblZzYkNBbUppQnpZMmhsYldGTlpYUmhMblJsZUhSMWNtVWdJVDA5SUMweEtTQjdYRzRnSUNBZ0lDQjBaWGgwZFhKbElEMGdZWGRoYVhRZ2RHaHBjeTV3WVhKelpYSXVaMlYwUkdWd1pXNWtaVzVqZVNnbmRHVjRkSFZ5WlNjc0lITmphR1Z0WVUxbGRHRXVkR1Y0ZEhWeVpTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUcxbGRHRldaWEp6YVc5dU9pQW5NQ2NzWEc0Z0lDQWdJQ0JoYkd4dmQyVmtWWE5sY2s1aGJXVTZJSE5qYUdWdFlVMWxkR0V1WVd4c2IzZGxaRlZ6WlhKT1lXMWxMRnh1SUNBZ0lDQWdZWFYwYUc5eU9pQnpZMmhsYldGTlpYUmhMbUYxZEdodmNpeGNiaUFnSUNBZ0lHTnZiVzFsY21OcFlXeFZjM05oWjJWT1lXMWxPaUJ6WTJobGJXRk5aWFJoTG1OdmJXMWxjbU5wWVd4VmMzTmhaMlZPWVcxbExGeHVJQ0FnSUNBZ1kyOXVkR0ZqZEVsdVptOXliV0YwYVc5dU9pQnpZMmhsYldGTlpYUmhMbU52Ym5SaFkzUkpibVp2Y20xaGRHbHZiaXhjYmlBZ0lDQWdJR3hwWTJWdWMyVk9ZVzFsT2lCelkyaGxiV0ZOWlhSaExteHBZMlZ1YzJWT1lXMWxMRnh1SUNBZ0lDQWdiM1JvWlhKTWFXTmxibk5sVlhKc09pQnpZMmhsYldGTlpYUmhMbTkwYUdWeVRHbGpaVzV6WlZWeWJDeGNiaUFnSUNBZ0lHOTBhR1Z5VUdWeWJXbHpjMmx2YmxWeWJEb2djMk5vWlcxaFRXVjBZUzV2ZEdobGNsQmxjbTFwYzNOcGIyNVZjbXdzWEc0Z0lDQWdJQ0J5WldabGNtVnVZMlU2SUhOamFHVnRZVTFsZEdFdWNtVm1aWEpsYm1ObExGeHVJQ0FnSUNBZ2MyVjRkV0ZzVlhOellXZGxUbUZ0WlRvZ2MyTm9aVzFoVFdWMFlTNXpaWGgxWVd4VmMzTmhaMlZPWVcxbExGeHVJQ0FnSUNBZ2RHVjRkSFZ5WlRvZ2RHVjRkSFZ5WlNBL1B5QjFibVJsWm1sdVpXUXNYRzRnSUNBZ0lDQjBhWFJzWlRvZ2MyTm9aVzFoVFdWMFlTNTBhWFJzWlN4Y2JpQWdJQ0FnSUhabGNuTnBiMjQ2SUhOamFHVnRZVTFsZEdFdWRtVnljMmx2Yml4Y2JpQWdJQ0FnSUhacGIyeGxiblJWYzNOaFoyVk9ZVzFsT2lCelkyaGxiV0ZOWlhSaExuWnBiMnhsYm5SVmMzTmhaMlZPWVcxbExGeHVJQ0FnSUgwN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHRnplVzVqSUY5bGVIUnlZV04wUjB4VVJrbHRZV2RsS0dsdVpHVjRPaUJ1ZFcxaVpYSXBPaUJRY205dGFYTmxQRWhVVFV4SmJXRm5aVVZzWlcxbGJuUWdmQ0J1ZFd4c1BpQjdYRzRnSUNBZ1kyOXVjM1FnYW5OdmJpQTlJSFJvYVhNdWNHRnljMlZ5TG1wemIyNGdZWE1nUjB4VVJsTmphR1Z0WVM1SlIweFVSanRjYmx4dUlDQWdJR052Ym5OMElITnZkWEpqWlNBOUlHcHpiMjR1YVcxaFoyVnpQeTViYVc1a1pYaGRPMXh1WEc0Z0lDQWdhV1lnS0hOdmRYSmpaU0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0JqYjI1emIyeGxMbmRoY200b1hHNGdJQ0FnSUNBZ0lHQldVazFOWlhSaFRHOWhaR1Z5VUd4MVoybHVPaUJCZEhSbGJYQjBJSFJ2SUhWelpTQnBiV0ZuWlhOYkpIdHBibVJsZUgxZElHOW1JR2RzVkVZZ1lYTWdZU0IwYUhWdFltNWhhV3dnWW5WMElIUm9aU0JwYldGblpTQmtiMlZ6YmlkMElHVjRhWE4wWUN4Y2JpQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QlNaV1k2SUdoMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5dGNtUnZiMkl2ZEdoeVpXVXVhbk12WW14dllpOXlNVEkwTDJWNFlXMXdiR1Z6TDJwemJTOXNiMkZrWlhKekwwZE1WRVpNYjJGa1pYSXVhbk1qVERJME5qZGNibHh1SUNBZ0lDOHZJR0J6YjNWeVkyVXVkWEpwWUNCdGFXZG9kQ0JpWlNCaElISmxabVZ5Wlc1alpTQjBieUJoSUdacGJHVmNiaUFnSUNCc1pYUWdjMjkxY21ObFZWSkpPaUJ6ZEhKcGJtY2dmQ0IxYm1SbFptbHVaV1FnUFNCemIzVnlZMlV1ZFhKcE8xeHVYRzRnSUNBZ0x5OGdURzloWkNCMGFHVWdZbWx1WVhKNUlHRnpJR0VnWW14dllseHVJQ0FnSUdsbUlDaHpiM1Z5WTJVdVluVm1abVZ5Vm1sbGR5QWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCaWRXWm1aWEpXYVdWM0lEMGdZWGRoYVhRZ2RHaHBjeTV3WVhKelpYSXVaMlYwUkdWd1pXNWtaVzVqZVNnblluVm1abVZ5Vm1sbGR5Y3NJSE52ZFhKalpTNWlkV1ptWlhKV2FXVjNLVHRjYmlBZ0lDQWdJR052Ym5OMElHSnNiMklnUFNCdVpYY2dRbXh2WWloYlluVm1abVZ5Vm1sbGQxMHNJSHNnZEhsd1pUb2djMjkxY21ObExtMXBiV1ZVZVhCbElIMHBPMXh1SUNBZ0lDQWdjMjkxY21ObFZWSkpJRDBnVlZKTUxtTnlaV0YwWlU5aWFtVmpkRlZTVENoaWJHOWlLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYzI5MWNtTmxWVkpKSUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpaGNiaUFnSUNBZ0lDQWdZRlpTVFUxbGRHRk1iMkZrWlhKUWJIVm5hVzQ2SUVGMGRHVnRjSFFnZEc4Z2RYTmxJR2x0WVdkbGMxc2tlMmx1WkdWNGZWMGdiMllnWjJ4VVJpQmhjeUJoSUhSb2RXMWlibUZwYkNCaWRYUWdkR2hsSUdsdFlXZGxJR052ZFd4a2JpZDBJR3h2WVdRZ2NISnZjR1Z5YkhsZ0xGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUd4dllXUmxjaUE5SUc1bGR5QlVTRkpGUlM1SmJXRm5aVXh2WVdSbGNpZ3BPMXh1SUNBZ0lISmxkSFZ5YmlCaGQyRnBkQ0JzYjJGa1pYSXViRzloWkVGemVXNWpLSEpsYzI5c2RtVlZVa3dvYzI5MWNtTmxWVkpKTENBb2RHaHBjeTV3WVhKelpYSWdZWE1nWVc1NUtTNXZjSFJwYjI1ekxuQmhkR2dwS1M1allYUmphQ2dvWlhKeWIzSXBJRDArSUh0Y2JpQWdJQ0FnSUdOdmJuTnZiR1V1WlhKeWIzSW9aWEp5YjNJcE8xeHVJQ0FnSUNBZ1kyOXVjMjlzWlM1M1lYSnVLQ2RXVWsxTlpYUmhURzloWkdWeVVHeDFaMmx1T2lCR1lXbHNaV1FnZEc4Z2JHOWhaQ0JoSUhSb2RXMWlibUZwYkNCcGJXRm5aU2NwTzF4dUlDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnZlNrN1hHNGdJSDFjYm4xY2JpSXNJbWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCN0lGWlNUVVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlJSDBnWm5KdmJTQW5MaTlsZUhCeVpYTnphVzl1Y3k5V1VrMUZlSEJ5WlhOemFXOXVUV0Z1WVdkbGNpYzdYRzVwYlhCdmNuUWdleUJXVWsxR2FYSnpkRkJsY25OdmJpQjlJR1p5YjIwZ0p5NHZabWx5YzNSUVpYSnpiMjR2VmxKTlJtbHljM1JRWlhKemIyNG5PMXh1YVcxd2IzSjBJSHNnVmxKTlNIVnRZVzV2YVdRZ2ZTQm1jbTl0SUNjdUwyaDFiV0Z1YjJsa0wxWlNUVWgxYldGdWIybGtKenRjYm1sdGNHOXlkQ0I3SUZaU1RVeHZiMnRCZENCOUlHWnliMjBnSnk0dmJHOXZhMEYwTDFaU1RVeHZiMnRCZENjN1hHNXBiWEJ2Y25RZ2V5QldVazFOWlhSaElIMGdabkp2YlNBbkxpOXRaWFJoTDFaU1RVMWxkR0VuTzF4dWFXMXdiM0owSUhzZ1ZsSk5RMjl5WlZCaGNtRnRaWFJsY25NZ2ZTQm1jbTl0SUNjdUwxWlNUVU52Y21WUVlYSmhiV1YwWlhKekp6dGNibHh1THlvcVhHNGdLaUJCSUdOc1lYTnpJSFJvWVhRZ2NtVndjbVZ6Wlc1MGN5QmhJSE5wYm1kc1pTQldVazBnYlc5a1pXd3VYRzRnS2lCVWFHbHpJR05zWVhOeklHOXViSGtnYVc1amJIVmtaWE1nWTI5eVpTQnpjR1ZqSUc5bUlIUm9aU0JXVWswZ0tHQldVazFEWDNaeWJXQXBMbHh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVmxKTlEyOXlaU0I3WEc0Z0lDOHFLbHh1SUNBZ0tpQmdWRWhTUlVVdVIzSnZkWEJnSUhSb1lYUWdZMjl1ZEdGcGJuTWdkR2hsSUdWdWRHbHlaU0JXVWswdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2NtVmhaRzl1YkhrZ2MyTmxibVU2SUZSSVVrVkZMa2R5YjNWd08xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGIyNTBZV2x1Y3lCdFpYUmhJR1pwWld4a2N5QnZaaUIwYUdVZ1ZsSk5MbHh1SUNBZ0tpQlpiM1VnYldsbmFIUWdkMkZ1ZENCMGJ5QnlaV1psY2lCMGFHVnpaU0JzYVdObGJuTmxJR1pwWld4a2N5QmlaV1p2Y21VZ2RYTmxJSGx2ZFhJZ1ZsSk5jeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0J0WlhSaE9pQldVazFOWlhSaE8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGIyNTBZV2x1Y3lCN1FHeHBibXNnVmxKTlNIVnRZVzV2YVdSOUlHOW1JSFJvWlNCV1VrMHVYRzRnSUNBcUlGbHZkU0JqWVc0Z1kyOXVkSEp2YkNCbFlXTm9JR0p2Ym1WeklIVnphVzVuSUh0QWJHbHVheUJXVWsxSWRXMWhibTlwWkM1blpYUk9iM0p0WVd4cGVtVmtRbTl1WlU1dlpHVjlJRzl5SUh0QWJHbHVheUJXVWsxSWRXMWhibTlwWkM1blpYUlNZWGRDYjI1bFRtOWtaWDB1WEc0Z0lDQXFYRzRnSUNBcUlFQlVUMFJQSUVGa1pDQmhJR3hwYm1zZ2RHOGdWbEpOSUhOd1pXTmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnlaV0ZrYjI1c2VTQm9kVzFoYm05cFpEb2dWbEpOU0hWdFlXNXZhV1E3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU52Ym5SaGFXNXpJSHRBYkdsdWF5QldVazFGZUhCeVpYTnphVzl1VFdGdVlXZGxjbjBnYjJZZ2RHaGxJRlpTVFM1Y2JpQWdJQ29nV1c5MUlHMXBaMmgwSUhkaGJuUWdkRzhnWTI5dWRISnZiQ0IwYUdWelpTQm1ZV05wWVd3Z1pYaHdjbVZ6YzJsdmJuTWdkbWxoSUh0QWJHbHVheUJXVWsxRmVIQnlaWE56YVc5dVRXRnVZV2RsY2k1elpYUldZV3gxWlgwdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2NtVmhaRzl1YkhrZ1pYaHdjbVZ6YzJsdmJrMWhibUZuWlhJL09pQldVazFGZUhCeVpYTnphVzl1VFdGdVlXZGxjanRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMjl1ZEdGcGJuTWdlMEJzYVc1cklGWlNUVVpwY25OMFVHVnljMjl1ZlNCdlppQjBhR1VnVmxKTkxseHVJQ0FnS2lCV1VrMUdhWEp6ZEZCbGNuTnZiaUJwY3lCdGIzTjBiSGtnZFhObFpDQm1iM0lnYldWemFDQmpkV3hzYVc1bklHWnZjaUJtYVhKemRDQndaWEp6YjI0Z2RtbGxkeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0JtYVhKemRGQmxjbk52Ymo4NklGWlNUVVpwY25OMFVHVnljMjl1TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJEYjI1MFlXbHVjeUI3UUd4cGJtc2dWbEpOVEc5dmEwRjBmU0J2WmlCMGFHVWdWbEpOTGx4dUlDQWdLaUJaYjNVZ2JXbG5hSFFnZDJGdWRDQjBieUIxYzJVZ2UwQnNhVzVySUZaU1RVeHZiMnRCZEM1MFlYSm5aWFI5SUhSdklHTnZiblJ5YjJ3Z2RHaGxJR1Y1WlNCa2FYSmxZM1JwYjI0Z2IyWWdlVzkxY2lCV1VrMXpMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSEpsWVdSdmJteDVJR3h2YjJ0QmREODZJRlpTVFV4dmIydEJkRHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbElHRWdibVYzSUZaU1RTQnBibk4wWVc1alpTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSEJoY21GdGN5QmJXMVpTVFZCaGNtRnRaWFJsY25OZFhTQjBhR0YwSUhKbGNISmxjMlZ1ZEhNZ1kyOXRjRzl1Wlc1MGN5QnZaaUIwYUdVZ1ZsSk5YRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvY0dGeVlXMXpPaUJXVWsxRGIzSmxVR0Z5WVcxbGRHVnljeWtnZTF4dUlDQWdJSFJvYVhNdWMyTmxibVVnUFNCd1lYSmhiWE11YzJObGJtVTdYRzRnSUNBZ2RHaHBjeTV0WlhSaElEMGdjR0Z5WVcxekxtMWxkR0U3WEc0Z0lDQWdkR2hwY3k1b2RXMWhibTlwWkNBOUlIQmhjbUZ0Y3k1b2RXMWhibTlwWkR0Y2JpQWdJQ0IwYUdsekxtVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeUlEMGdjR0Z5WVcxekxtVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeU8xeHVJQ0FnSUhSb2FYTXVabWx5YzNSUVpYSnpiMjRnUFNCd1lYSmhiWE11Wm1seWMzUlFaWEp6YjI0N1hHNGdJQ0FnZEdocGN5NXNiMjlyUVhRZ1BTQndZWEpoYlhNdWJHOXZhMEYwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlDb3FXVzkxSUc1bFpXUWdkRzhnWTJGc2JDQjBhR2x6SUc5dUlIbHZkWElnZFhCa1lYUmxJR3h2YjNBdUtpcGNiaUFnSUNwY2JpQWdJQ29nVkdocGN5Qm1kVzVqZEdsdmJpQjFjR1JoZEdWeklHVjJaWEo1SUZaU1RTQmpiMjF3YjI1bGJuUnpMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnWkdWc2RHRWdaR1ZzZEdGVWFXMWxYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdkWEJrWVhSbEtHUmxiSFJoT2lCdWRXMWlaWElwT2lCMmIybGtJSHRjYmlBZ0lDQjBhR2x6TG1oMWJXRnViMmxrTG5Wd1pHRjBaU2dwTzF4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11Ykc5dmEwRjBLU0I3WEc0Z0lDQWdJQ0IwYUdsekxteHZiMnRCZEM1MWNHUmhkR1VvWkdWc2RHRXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2gwYUdsekxtVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeUtTQjdYRzRnSUNBZ0lDQjBhR2x6TG1WNGNISmxjM05wYjI1TllXNWhaMlZ5TG5Wd1pHRjBaU2dwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVmVnh1SWl3aWFXMXdiM0owSUhzZ1IweFVSaXdnUjB4VVJreHZZV1JsY2xCc2RXZHBiaXdnUjB4VVJsQmhjbk5sY2lCOUlHWnliMjBnSjNSb2NtVmxMMlY0WVcxd2JHVnpMMnB6YlM5c2IyRmtaWEp6TDBkTVZFWk1iMkZrWlhJdWFuTW5PMXh1YVcxd2IzSjBJSHNnVmxKTlEyOXlaVXh2WVdSbGNsQnNkV2RwYms5d2RHbHZibk1nZlNCbWNtOXRJQ2N1TDFaU1RVTnZjbVZNYjJGa1pYSlFiSFZuYVc1UGNIUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN0lGWlNUVU52Y21VZ2ZTQm1jbTl0SUNjdUwxWlNUVU52Y21Vbk8xeHVhVzF3YjNKMElIc2dWbEpOUlhod2NtVnpjMmx2Ymt4dllXUmxjbEJzZFdkcGJpQjlJR1p5YjIwZ0p5NHZaWGh3Y21WemMybHZibk12VmxKTlJYaHdjbVZ6YzJsdmJreHZZV1JsY2xCc2RXZHBiaWM3WEc1cGJYQnZjblFnZXlCV1VrMUdhWEp6ZEZCbGNuTnZia3h2WVdSbGNsQnNkV2RwYmlCOUlHWnliMjBnSnk0dlptbHljM1JRWlhKemIyNHZWbEpOUm1seWMzUlFaWEp6YjI1TWIyRmtaWEpRYkhWbmFXNG5PMXh1YVcxd2IzSjBJSHNnVmxKTlNIVnRZVzV2YVdSTWIyRmtaWEpRYkhWbmFXNGdmU0JtY205dElDY3VMMmgxYldGdWIybGtMMVpTVFVoMWJXRnViMmxrVEc5aFpHVnlVR3gxWjJsdUp6dGNibWx0Y0c5eWRDQjdJRlpTVFUxbGRHRk1iMkZrWlhKUWJIVm5hVzRnZlNCbWNtOXRJQ2N1TDIxbGRHRXZWbEpOVFdWMFlVeHZZV1JsY2xCc2RXZHBiaWM3WEc1cGJYQnZjblFnZXlCV1VrMU1iMjlyUVhSTWIyRmtaWEpRYkhWbmFXNGdmU0JtY205dElDY3VMMnh2YjJ0QmRDOVdVazFNYjI5clFYUk1iMkZrWlhKUWJIVm5hVzRuTzF4dWFXMXdiM0owSUhSNWNHVWdleUJXVWsxSWRXMWhibTlwWkNCOUlHWnliMjBnSnk0dmFIVnRZVzV2YVdRbk8xeHVhVzF3YjNKMElIUjVjR1VnZXlCV1VrMU5aWFJoSUgwZ1puSnZiU0FuTGk5dFpYUmhKenRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRlpTVFVOdmNtVk1iMkZrWlhKUWJIVm5hVzRnYVcxd2JHVnRaVzUwY3lCSFRGUkdURzloWkdWeVVHeDFaMmx1SUh0Y2JpQWdjSFZpYkdsaklHZGxkQ0J1WVcxbEtDazZJSE4wY21sdVp5QjdYRzRnSUNBZ0x5OGdWMlVnYzJodmRXeGtJSFZ6WlNCMGFHVWdaWGgwWlc1emFXOXVJRzVoYldVZ2FXNXpkR1ZoWkNCaWRYUWdkMlVnYUdGMlpTQnRkV3gwYVhCc1pTQndiSFZuYVc1eklHWnZjaUJoYmlCbGVIUmxibk5wYjI0dUxpNWNiaUFnSUNCeVpYUjFjbTRnSjFaU1RVTmZkbkp0Snp0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCeVpXRmtiMjVzZVNCd1lYSnpaWEk2SUVkTVZFWlFZWEp6WlhJN1hHNWNiaUFnY0hWaWJHbGpJSEpsWVdSdmJteDVJR1Y0Y0hKbGMzTnBiMjVRYkhWbmFXNDZJRlpTVFVWNGNISmxjM05wYjI1TWIyRmtaWEpRYkhWbmFXNDdYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0JtYVhKemRGQmxjbk52YmxCc2RXZHBiam9nVmxKTlJtbHljM1JRWlhKemIyNU1iMkZrWlhKUWJIVm5hVzQ3WEc0Z0lIQjFZbXhwWXlCeVpXRmtiMjVzZVNCb2RXMWhibTlwWkZCc2RXZHBiam9nVmxKTlNIVnRZVzV2YVdSTWIyRmtaWEpRYkhWbmFXNDdYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0JzYjI5clFYUlFiSFZuYVc0NklGWlNUVXh2YjJ0QmRFeHZZV1JsY2xCc2RXZHBianRjYmlBZ2NIVmliR2xqSUhKbFlXUnZibXg1SUcxbGRHRlFiSFZuYVc0NklGWlNUVTFsZEdGTWIyRmtaWEpRYkhWbmFXNDdYRzVjYmlBZ2NIVmliR2xqSUdOdmJuTjBjblZqZEc5eUtIQmhjbk5sY2pvZ1IweFVSbEJoY25ObGNpd2diM0IwYVc5dWN6ODZJRlpTVFVOdmNtVk1iMkZrWlhKUWJIVm5hVzVQY0hScGIyNXpLU0I3WEc0Z0lDQWdkR2hwY3k1d1lYSnpaWElnUFNCd1lYSnpaWEk3WEc1Y2JpQWdJQ0JqYjI1emRDQm9aV3h3WlhKU2IyOTBJRDBnYjNCMGFXOXVjejh1YUdWc2NHVnlVbTl2ZER0Y2JpQWdJQ0JqYjI1emRDQmhkWFJ2VlhCa1lYUmxTSFZ0WVc1Q2IyNWxjeUE5SUc5d2RHbHZibk0vTG1GMWRHOVZjR1JoZEdWSWRXMWhia0p2Ym1Wek8xeHVYRzRnSUNBZ2RHaHBjeTVsZUhCeVpYTnphVzl1VUd4MVoybHVJRDBnYjNCMGFXOXVjejh1Wlhod2NtVnpjMmx2YmxCc2RXZHBiaUEvUHlCdVpYY2dWbEpOUlhod2NtVnpjMmx2Ymt4dllXUmxjbEJzZFdkcGJpaHdZWEp6WlhJcE8xeHVJQ0FnSUhSb2FYTXVabWx5YzNSUVpYSnpiMjVRYkhWbmFXNGdQU0J2Y0hScGIyNXpQeTVtYVhKemRGQmxjbk52YmxCc2RXZHBiaUEvUHlCdVpYY2dWbEpOUm1seWMzUlFaWEp6YjI1TWIyRmtaWEpRYkhWbmFXNG9jR0Z5YzJWeUtUdGNiaUFnSUNCMGFHbHpMbWgxYldGdWIybGtVR3gxWjJsdUlEMWNiaUFnSUNBZ0lHOXdkR2x2Ym5NL0xtaDFiV0Z1YjJsa1VHeDFaMmx1SUQ4L0lHNWxkeUJXVWsxSWRXMWhibTlwWkV4dllXUmxjbEJzZFdkcGJpaHdZWEp6WlhJc0lIc2dhR1ZzY0dWeVVtOXZkQ3dnWVhWMGIxVndaR0YwWlVoMWJXRnVRbTl1WlhNZ2ZTazdYRzRnSUNBZ2RHaHBjeTVzYjI5clFYUlFiSFZuYVc0Z1BTQnZjSFJwYjI1elB5NXNiMjlyUVhSUWJIVm5hVzRnUHo4Z2JtVjNJRlpTVFV4dmIydEJkRXh2WVdSbGNsQnNkV2RwYmlod1lYSnpaWElzSUhzZ2FHVnNjR1Z5VW05dmRDQjlLVHRjYmlBZ0lDQjBhR2x6TG0xbGRHRlFiSFZuYVc0Z1BTQnZjSFJwYjI1elB5NXRaWFJoVUd4MVoybHVJRDgvSUc1bGR5QldVazFOWlhSaFRHOWhaR1Z5VUd4MVoybHVLSEJoY25ObGNpazdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdZWE41Ym1NZ1lXWjBaWEpTYjI5MEtHZHNkR1k2SUVkTVZFWXBPaUJRY205dGFYTmxQSFp2YVdRK0lIdGNiaUFnSUNCaGQyRnBkQ0IwYUdsekxtMWxkR0ZRYkhWbmFXNHVZV1owWlhKU2IyOTBLR2RzZEdZcE8xeHVJQ0FnSUdGM1lXbDBJSFJvYVhNdWFIVnRZVzV2YVdSUWJIVm5hVzR1WVdaMFpYSlNiMjkwS0dkc2RHWXBPMXh1SUNBZ0lHRjNZV2wwSUhSb2FYTXVaWGh3Y21WemMybHZibEJzZFdkcGJpNWhablJsY2xKdmIzUW9aMngwWmlrN1hHNGdJQ0FnWVhkaGFYUWdkR2hwY3k1c2IyOXJRWFJRYkhWbmFXNHVZV1owWlhKU2IyOTBLR2RzZEdZcE8xeHVJQ0FnSUdGM1lXbDBJSFJvYVhNdVptbHljM1JRWlhKemIyNVFiSFZuYVc0dVlXWjBaWEpTYjI5MEtHZHNkR1lwTzF4dVhHNGdJQ0FnWTI5dWMzUWdiV1YwWVNBOUlHZHNkR1l1ZFhObGNrUmhkR0V1ZG5KdFRXVjBZU0JoY3lCV1VrMU5aWFJoSUh3Z2JuVnNiRHRjYmlBZ0lDQmpiMjV6ZENCb2RXMWhibTlwWkNBOUlHZHNkR1l1ZFhObGNrUmhkR0V1ZG5KdFNIVnRZVzV2YVdRZ1lYTWdWbEpOU0hWdFlXNXZhV1FnZkNCdWRXeHNPMXh1WEc0Z0lDQWdMeThnYldWMFlTQmhibVFnYUhWdFlXNXZhV1FnWVhKbElISmxjWFZwY21Wa0lIUnZJR0psSUdFZ1ZsSk5MbHh1SUNBZ0lDOHZJRVJ2YmlkMElHTnlaV0YwWlNCV1VrMGdhV1lnZEdobGVTQmhjbVVnYm5Wc2JGeHVJQ0FnSUdsbUlDaHRaWFJoSUNZbUlHaDFiV0Z1YjJsa0tTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCMmNtMURiM0psSUQwZ2JtVjNJRlpTVFVOdmNtVW9lMXh1SUNBZ0lDQWdJQ0J6WTJWdVpUb2daMngwWmk1elkyVnVaU3hjYmlBZ0lDQWdJQ0FnWlhod2NtVnpjMmx2YmsxaGJtRm5aWEk2SUdkc2RHWXVkWE5sY2tSaGRHRXVkbkp0Ulhod2NtVnpjMmx2YmsxaGJtRm5aWElzWEc0Z0lDQWdJQ0FnSUdacGNuTjBVR1Z5YzI5dU9pQm5iSFJtTG5WelpYSkVZWFJoTG5aeWJVWnBjbk4wVUdWeWMyOXVMRnh1SUNBZ0lDQWdJQ0JvZFcxaGJtOXBaQ3hjYmlBZ0lDQWdJQ0FnYkc5dmEwRjBPaUJuYkhSbUxuVnpaWEpFWVhSaExuWnliVXh2YjJ0QmRDeGNiaUFnSUNBZ0lDQWdiV1YwWVN4Y2JpQWdJQ0FnSUgwcE8xeHVYRzRnSUNBZ0lDQm5iSFJtTG5WelpYSkVZWFJoTG5aeWJVTnZjbVVnUFNCMmNtMURiM0psTzF4dUlDQWdJSDFjYmlBZ2ZWeHVmVnh1SWwwc0ltNWhiV1Z6SWpwYklsQlBVMU5KUWt4RlgxTlFSVU5mVmtWU1UwbFBUbE1pTENKZmRqTkJJaXdpWDNZelFpSXNJbDl4ZFdGMFFTSXNJbDl4ZFdGMFFpSXNJbFpGUXpOZlVFOVRTVlJKVmtWZldpSXNJbDlsZFd4bGNrRWlYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN1FVRkpRVHRCUVVOQk8wRkJRMkVzVFVGQlFTeGhRVUZqTEZOQlFWRXNTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJRVHRCUVc5REwwTTdPenRCUVVkSE8wRkJRMGdzU1VGQlFTeEpRVUZYTEcxQ1FVRnRRaXhIUVVGQk8wRkJRelZDTEZGQlFVRXNTVUZCU1N4SlFVRkpMRU5CUVVNc1lVRkJZU3hMUVVGTExFOUJRVThzUlVGQlJUdEJRVU5zUXl4WlFVRkJMRTlCUVU4c1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJRenRCUVVOMFF5eFRRVUZCTzBGQlFVMHNZVUZCUVN4SlFVRkpMRWxCUVVrc1EwRkJReXhoUVVGaExFdEJRVXNzVDBGQlR5eEZRVUZGTzFsQlEzcERMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU53UWl4VFFVRkJPMEZCUVUwc1lVRkJRVHRCUVVOTUxGbEJRVUVzVDBGQlR5eEhRVUZITEVOQlFVTTdRVUZEV2l4VFFVRkJPMHRCUTBZN1FVRkZSRHM3TzBGQlIwYzdRVUZEU0N4SlFVRkJMRWxCUVZjc2IwSkJRVzlDTEVkQlFVRTdRVUZETjBJc1VVRkJRU3hKUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEV0QlFVc3NUMEZCVHl4RlFVRkZPMEZCUTI1RExGbEJRVUVzVDBGQlR5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETzBGQlEzUkRMRk5CUVVFN1FVRkJUU3hoUVVGQkxFbEJRVWtzU1VGQlNTeERRVUZETEdOQlFXTXNTMEZCU3l4UFFVRlBMRVZCUVVVN1dVRkRNVU1zVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMEZCUTNCQ0xGTkJRVUU3UVVGQlRTeGhRVUZCTzBGQlEwd3NXVUZCUVN4UFFVRlBMRWRCUVVjc1EwRkJRenRCUVVOYUxGTkJRVUU3UzBGRFJqdEJRVVZFT3pzN1FVRkhSenRCUVVOSUxFbEJRVUVzU1VGQlZ5eHRRa0ZCYlVJc1IwRkJRVHRCUVVNMVFpeFJRVUZCTEVsQlFVa3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1MwRkJTeXhQUVVGUExFVkJRVVU3UVVGRGJFTXNXVUZCUVN4UFFVRlBMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNN1FVRkRkRU1zVTBGQlFUdEJRVUZOTEdGQlFVRXNTVUZCU1N4SlFVRkpMRU5CUVVNc1lVRkJZU3hMUVVGTExFOUJRVThzUlVGQlJUdFpRVU42UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03UVVGRGNFSXNVMEZCUVR0QlFVRk5MR0ZCUVVFN1FVRkRUQ3haUVVGQkxFOUJRVThzUjBGQlJ5eERRVUZETzBGQlExb3NVMEZCUVR0TFFVTkdPMEZCUlVRc1NVRkJRU3hYUVVGQkxFTkJRVmtzWTBGQmMwSXNSVUZCUVR0QlFVTm9ReXhSUVVGQkxFdEJRVXNzUlVGQlJTeERRVUZETzBGQmVFVldPenRCUVVWSE8xRkJRMGtzU1VGQlRTeERRVUZCTEUxQlFVRXNSMEZCUnl4SFFVRkhMRU5CUVVNN1FVRkZjRUk3TzBGQlJVYzdVVUZEU1N4SlFVRlJMRU5CUVVFc1VVRkJRU3hIUVVGSExFdEJRVXNzUTBGQlF6dEJRVVY0UWpzN1FVRkZSenRSUVVOSkxFbEJRV0VzUTBGQlFTeGhRVUZCTEVkQlFUaENMRTFCUVUwc1EwRkJRenRCUVVWNlJEczdRVUZGUnp0UlFVTkpMRWxCUVdNc1EwRkJRU3hqUVVGQkxFZEJRVGhDTEUxQlFVMHNRMEZCUXp0QlFVVXhSRHM3UVVGRlJ6dFJRVU5KTEVsQlFXRXNRMEZCUVN4aFFVRkJMRWRCUVRoQ0xFMUJRVTBzUTBGQlF6dFJRVVZxUkN4SlFVRk5MRU5CUVVFc1RVRkJRU3hIUVVGM1FpeEZRVUZGTEVOQlFVTTdRVUZwUkhaRExGRkJRVUVzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRnBRaXhqUVVGQkxFVkJRVUVzWTBGQll5eEZRVUZGTEVOQlFVTTdRVUZET1VNc1VVRkJRU3hKUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEdOQlFXTXNRMEZCUXpzN1FVRkhja01zVVVGQlFTeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMR1ZCUVdVc1EwRkJRenM3TzBGQlNUVkNMRkZCUVVFc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eExRVUZMTEVOQlFVTTdTMEZEZEVJN1FVRkZUU3hKUVVGQkxFOUJRVThzUTBGQlF5eEpRVUYxUWl4RlFVRkJPMEZCUTNCRExGRkJRVUVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRGVFSTdRVUZGUkRzN08wRkJSMGM3UVVGRFNTeEpRVUZCTEZkQlFWY3NRMEZCUXl4UFFVOXNRaXhGUVVGQk96dEJRVU5ETEZGQlFVRXNTVUZCU1N4WlFVRlpMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRiRVlzV1VGQldTeEpRVUZKTEVOQlFVRXNSVUZCUVN4SFFVRkJMRTlCUVU4c1MwRkJVQ3hKUVVGQkxFbEJRVUVzVDBGQlR5eExRVUZRTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFOUJRVThzUTBGQlJTeFZRVUZWTEUxQlFVa3NTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVRXNSMEZCUnl4RFFVRkRPMEZCUlRORExGRkJRVUVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhKUVVGSkxFdEJRVXNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJReTlFTzBGQlJVUTdPMEZCUlVjN1NVRkRTU3hyUWtGQmEwSXNSMEZCUVR0QlFVTjJRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1NVRkJTU3hMUVVGTExFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1JVRkJSU3hEUVVGRExFTkJRVU03UzBGRE1VUTdRVUZEUmpzN1FVTTVTRVE3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFXOUhRVHRCUVVOUExGTkJRVk1zVTBGQlV5eERRVUZETEU5QlFVOHNSVUZCUlN4VlFVRlZMRVZCUVVVc1EwRkJReXhGUVVGRkxGTkJRVk1zUlVGQlJUdEJRVU0zUkN4SlFVRkpMRk5CUVZNc1MwRkJTeXhEUVVGRExFdEJRVXNzUlVGQlJTeEZRVUZGTEU5QlFVOHNTMEZCU3l4WlFVRlpMRU5CUVVNc1IwRkJSeXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNWVUZCVlN4UFFVRlBMRVZCUVVVc1JVRkJSU3hQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSVHRCUVVOb1NDeEpRVUZKTEU5QlFVOHNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFOUJRVThzUTBGQlF5eEZRVUZGTEZWQlFWVXNUMEZCVHl4RlFVRkZMRTFCUVUwc1JVRkJSVHRCUVVNdlJDeFJRVUZSTEZOQlFWTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FVRkRia2NzVVVGQlVTeFRRVUZUTEZGQlFWRXNRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FVRkRkRWNzVVVGQlVTeFRRVUZUTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hOUVVGTkxFTkJRVU1zU1VGQlNTeEhRVUZITEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRMRVZCUVVVN1FVRkRkRWdzVVVGQlVTeEpRVUZKTEVOQlFVTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNWVUZCVlN4SlFVRkpMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZET1VVc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRFVEczdRVU4yU0VFc1UwRkJVeXg1UWtGQmVVSXNRMEZCUXl4SlFVRlZMRVZCUVVVc1UwRkJhVUlzUlVGQlJTeEpRVUZ2UWl4RlFVRkJPenRCUVVOd1JpeEpRVUZCTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQmQwSXNRMEZCUXp0QlFVVnNSRHM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3p0QlFXbEVSenM3U1VGSFNDeE5RVUZOTEZWQlFWVXNSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxFTkJRVU1zUzBGQlN5eE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkhMRk5CUVZNc1EwRkJReXhEUVVGRE8wbEJRek5ETEVsQlFVa3NWVUZCVlN4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOMFFpeFJRVUZCTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc2JVUkJRVzFFTEZOQlFWTXNRMEZCUVN4dlEwRkJRU3hEUVVGelF5eERRVUZETEVOQlFVTTdRVUZEYWtnc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5pTEV0QlFVRTdRVUZGUkN4SlFVRkJMRTFCUVUwc1UwRkJVeXhIUVVGSExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTTdTVUZEYkVNc1NVRkJTU3hUUVVGVExFbEJRVWtzU1VGQlNTeEZRVUZGTzBGQlEzSkNMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFlpeExRVUZCT3p0SlFVZEVMRTFCUVUwc1ZVRkJWU3hIUVVGSExFTkJRVUVzUlVGQlFTeEhRVUZCTEVsQlFVa3NRMEZCUXl4TlFVRk5MRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVWNzVTBGQlV5eERRVUZETEVOQlFVTTdTVUZETlVNc1NVRkJTU3hWUVVGVkxFbEJRVWtzU1VGQlNTeEZRVUZGTzBGQlEzUkNMRkZCUVVFc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eHZSRUZCYjBRc1UwRkJVeXhEUVVGQkxHOURRVUZCTEVOQlFYTkRMRU5CUVVNc1EwRkJRenRCUVVOc1NDeFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJJc1MwRkJRVHRCUVVWRUxFbEJRVUVzVFVGQlRTeGpRVUZqTEVkQlFVY3NWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU03TzBsQlIzQkVMRTFCUVUwc1ZVRkJWU3hIUVVGcFFpeEZRVUZGTEVOQlFVTTdRVUZEY0VNc1NVRkJRU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNUVUZCVFN4TFFVRkpPMEZCUTNaQ0xGRkJRVUVzU1VGQlNTeFZRVUZWTEVOQlFVTXNUVUZCVFN4SFFVRkhMR05CUVdNc1JVRkJSVHRaUVVOMFF5eEpRVUZMTEUxQlFXTXNRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRNVUlzWjBKQlFVRXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGdlFpeERRVUZETEVOQlFVTTdRVUZEZGtNc1lVRkJRVHRCUVVOR0xGTkJRVUU3UVVGRFNDeExRVUZETEVOQlFVTXNRMEZCUXp0QlFVVklMRWxCUVVFc1QwRkJUeXhWUVVGVkxFTkJRVU03UVVGRGNFSXNRMEZCUXp0QlFVVkVPenM3T3pzN096dEJRVkZITzBGQlEyMUNMRk5CUVVFc05rSkJRVFpDTEVOQlFVTXNTVUZCVlN4RlFVRkZMRk5CUVdsQ0xFVkJRVUU3TzBGQlF5OUZMRkZCUVVFc1RVRkJUU3hKUVVGSkxFZEJRVzFDTEUxQlFVMHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zVFVGQlRTeEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUTJoR0xFOUJRVThzZVVKQlFYbENMRU5CUVVNc1NVRkJTU3hGUVVGRkxGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTjZSQ3hEUVVGQkxFTkJRVUU3UVVGQlFTeERRVUZCTzBGQlJVUTdPenM3T3pzN08wRkJVVWM3UVVGRFJ5eFRRVUZuUWl3NFFrRkJPRUlzUTBGQlF5eEpRVUZWTEVWQlFVRTdPMUZCUXpkRUxFMUJRVTBzUzBGQlN5eEhRVUZ4UWl4TlFVRk5MRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zWlVGQlpTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUXpGRkxGRkJRVUVzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVhkQ0xFTkJRVU03VVVGRk5VTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeExRVUZMTEV0QlFVazdXVUZETlVJc1RVRkJUU3hOUVVGTkxFZEJRVWNzZVVKQlFYbENMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0WlFVTTFSQ3hKUVVGSkxFMUJRVTBzU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZEYkVJc1owSkJRVUVzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRGVFSXNZVUZCUVR0QlFVTklMRk5CUVVNc1EwRkJReXhEUVVGRE8wRkJSVWdzVVVGQlFTeFBRVUZQTEVkQlFVY3NRMEZCUXp0TFFVTmFMRU5CUVVFc1EwRkJRVHRCUVVGQk96dEJRek5JUkRzN096czdPMEZCVFVjN1FVRkRZU3hUUVVGQkxEaENRVUU0UWl4RFFVRkRMRTFCUVd0Q0xFVkJRVVVzVVVGQmQwSXNSVUZCUVRzN1NVRkRla1lzVFVGQlRTeGhRVUZoTEVkQlFVY3NVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZGYmtRc1NVRkJTU3hMUVVGTExFZEJRV3RDTEVsQlFVa3NRMEZCUXp0SlFVVm9ReXhKUVVGSkxHRkJRV0VzU1VGQlNTeEhRVUZITEVWQlFVVTdRVUZEZUVJc1VVRkJRU3hMUVVGTExFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNRMEZCUVN4RlFVRkJMRWRCUVVFc1RVRkJUU3hEUVVGRExGbEJRVmtzUTBGQlF5eEhRVUZITEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVVVzVTBGQlV5eE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZKTEVsQlFVa3NRMEZCUXp0QlFVTTVSQ3hMUVVGQk8wRkJRVTBzVTBGQlFUdEJRVmRNTEZGQlFVRXNUVUZCVFN4WlFVRlpMRWRCUVVjc1RVRkJUU3hEUVVGRExGbEJRWE5ETEVOQlFVTTdVVUZGYmtVc1RVRkJUU3hUUVVGVExFZEJRVWNzV1VGQldTeERRVUZETEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRSUVVVM1F5eEpRVUZKTEVOQlFVRXNVMEZCVXl4TFFVRkJMRWxCUVVFc1NVRkJWQ3hUUVVGVExFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVZRc1UwRkJVeXhEUVVGRkxFbEJRVWtzVFVGQlN5eFhRVUZYTEVWQlFVVTdRVUZEYmtNc1dVRkJRU3hMUVVGTExFZEJRVWNzVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXp0QlFVTjZRaXhUUVVGQk8wRkJRMFlzUzBGQlFUdEJRVVZFTEVsQlFVRXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaanM3UVVOMFEwRTdRVUZGWVN4TlFVRkJMSFZDUVVGMVFpeEhRVUZITzBGQlEzSkRMRWxCUVVFc1JVRkJSU3hGUVVGRkxFbEJRVWs3UVVGRFVpeEpRVUZCTEVWQlFVVXNSVUZCUlN4SlFVRkpPMEZCUTFJc1NVRkJRU3hGUVVGRkxFVkJRVVVzU1VGQlNUdEJRVU5TTEVsQlFVRXNSVUZCUlN4RlFVRkZMRWxCUVVrN1FVRkRVaXhKUVVGQkxFVkJRVVVzUlVGQlJTeEpRVUZKTzBGQlExSXNTVUZCUVN4TFFVRkxMRVZCUVVVc1QwRkJUenRCUVVOa0xFbEJRVUVzUzBGQlN5eEZRVUZGTEU5QlFVODdRVUZEWkN4SlFVRkJMRXRCUVVzc1JVRkJSU3hQUVVGUE8wRkJRMlFzU1VGQlFTeEhRVUZITEVWQlFVVXNTMEZCU3p0QlFVTldMRWxCUVVFc1QwRkJUeXhGUVVGRkxGTkJRVk03UVVGRGJFSXNTVUZCUVN4TlFVRk5MRVZCUVVVc1VVRkJVVHRCUVVOb1FpeEpRVUZCTEZOQlFWTXNSVUZCUlN4WFFVRlhPMEZCUTNSQ0xFbEJRVUVzVVVGQlVTeEZRVUZGTEZWQlFWVTdRVUZEY0VJc1NVRkJRU3hSUVVGUkxFVkJRVVVzVlVGQlZUdEJRVU53UWl4SlFVRkJMRk5CUVZNc1JVRkJSU3hYUVVGWE8wRkJRM1JDTEVsQlFVRXNVMEZCVXl4RlFVRkZMRmRCUVZjN1FVRkRkRUlzU1VGQlFTeFZRVUZWTEVWQlFVVXNXVUZCV1R0QlFVTjRRaXhKUVVGQkxFOUJRVThzUlVGQlJTeFRRVUZUT3pzN1FVTndRbkJDT3pzN08wRkJTVWM3UVVGRFJ5eFRRVUZWTEZGQlFWRXNRMEZCUXl4TFFVRmhMRVZCUVVFN1FVRkRjRU1zU1VGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRE4wTTdPMDFEU0dFc2IwSkJRVzlDTEVOQlFVRTdRVUZ4UWk5Q0xFbEJRVUVzU1VGQlZ5eFhRVUZYTEVkQlFVRTdRVUZEY0VJc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1MwRkRia003UVVGTlJDeEpRVUZCTEVsQlFWY3NZVUZCWVN4SFFVRkJPMUZCUTNSQ0xFOUJRVThzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRVZCUVVVc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETzB0QlF5OURPMEZCUlVRN08wRkJSVWM3UVVGRFNDeEpRVUZCTEVsQlFWY3NiVUpCUVcxQ0xFZEJRVUU3VVVGRE5VSXNUVUZCVFN4TlFVRk5MRWRCUVRCRUxFVkJRVVVzUTBGQlF6dEJRVVY2UlN4UlFVRkJMRTFCUVUwc1lVRkJZU3hIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZUTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlRsRkxGRkJRVUVzVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1ZVRkJWU3hEUVVGRExFdEJRVWs3UVVGRGFrVXNXVUZCUVN4SlFVRkpMR0ZCUVdFc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVTdRVUZETTBJc1owSkJRVUVzVFVGQlRTeERRVUZETEVsQlFTdENMRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU03UVVGRGRFUXNZVUZCUVR0QlFVTklMRk5CUVVNc1EwRkJReXhEUVVGRE8wRkJSVWdzVVVGQlFTeFBRVUZQTEUxQlFVMHNRMEZCUXp0TFFVTm1PMEZCUlVRN08wRkJSVWM3UVVGRFNDeEpRVUZCTEVsQlFWY3NiVUpCUVcxQ0xFZEJRVUU3VVVGRE5VSXNUVUZCVFN4TlFVRk5MRWRCUVhORExFVkJRVVVzUTBGQlF6dEJRVVZ5UkN4UlFVRkJMRTFCUVUwc1lVRkJZU3hIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZUTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlRsRkxGRkJRVUVzVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1ZVRkJWU3hEUVVGRExFdEJRVWs3UVVGRGFrVXNXVUZCUVN4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0QlFVTTFRaXhuUWtGQlFTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRE8wRkJRek5DTEdGQlFVRTdRVUZEU0N4VFFVRkRMRU5CUVVNc1EwRkJRenRCUVVWSUxGRkJRVUVzVDBGQlR5eE5RVUZOTEVOQlFVTTdTMEZEWmp0QlFVVkVPenRCUVVWSE8wRkJRMGdzU1VGQlFTeFhRVUZCTEVkQlFVRTdRVUZ5UlVFN08wRkJSVWM3VVVGRFNTeEpRVUZ2UWl4RFFVRkJMRzlDUVVGQkxFZEJRVWNzUTBGQlF5eFBRVUZQTEVWQlFVVXNWMEZCVnl4RlFVRkZMRmxCUVZrc1EwRkJReXhEUVVGRE8wRkJSVzVGT3p0QlFVVkhPMUZCUTBrc1NVRkJjVUlzUTBGQlFTeHhRa0ZCUVN4SFFVRkhMRU5CUVVNc1ZVRkJWU3hGUVVGRkxGZEJRVmNzUlVGQlJTeFJRVUZSTEVWQlFVVXNWVUZCVlN4RFFVRkRMRU5CUVVNN1FVRkZMMFU3TzBGQlJVYzdRVUZEU1N4UlFVRkJMRWxCUVVFc1EwRkJRU3h2UWtGQmIwSXNSMEZCUnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVVM1JEczdPMEZCUjBjN1VVRkRTeXhKUVVGWkxFTkJRVUVzV1VGQlFTeEhRVUZ2UWl4RlFVRkZMRU5CUVVNN1FVRkxNME03TzBGQlJVYzdVVUZEU3l4SlFVRmpMRU5CUVVFc1kwRkJRU3hIUVVGelF5eEZRVUZGTEVOQlFVTTdPMHRCTkVNNVJEdEJRVVZFT3pzN08wRkJTVWM3UVVGRFNTeEpRVUZCTEVsQlFVa3NRMEZCUXl4TlFVRTBRaXhGUVVGQk96dFJRVVYwUXl4TlFVRk5MRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMEZCUXk5RExGRkJRVUVzVjBGQlZ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRlZCUVZVc1MwRkJTVHRCUVVOcVF5eFpRVUZCTEVsQlFVa3NRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0QlFVTjRReXhUUVVGRExFTkJRVU1zUTBGQlF6czdVVUZIU0N4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEZWQlFWVXNTMEZCU1R0QlFVTjZReXhaUVVGQkxFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dEJRVU4wUXl4VFFVRkRMRU5CUVVNc1EwRkJRenM3VVVGSFNDeEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFZEJRVWNzVFVGQlRTeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzFGQlEycEZMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNSMEZCUnl4TlFVRk5MRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1VVRkRia1VzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhIUVVGSExFMUJRVTBzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dEJRVVZxUlN4UlFVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRE8wdEJRMkk3UVVGRlJEczdPMEZCUjBjN1NVRkRTU3hMUVVGTExFZEJRVUU3VVVGRFZpeFBRVUZQTEVsQlFVa3NiMEpCUVc5Q0xFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRPVU03UVVGRlJEczdPenM3UVVGTFJ6dEJRVU5KTEVsQlFVRXNZVUZCWVN4RFFVRkRMRWxCUVhORExFVkJRVUU3TzFGQlEzcEVMRTlCUVU4c1EwRkJRU3hGUVVGQkxFZEJRVUVzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJTU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxFTkJRVU03UzBGRE1VTTdRVUZGUkRzN096dEJRVWxITzBGQlEwa3NTVUZCUVN4clFrRkJhMElzUTBGQlF5eFZRVUY1UWl4RlFVRkJPMEZCUTJwRUxGRkJRVUVzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03VVVGRGJrTXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhWUVVGVkxFTkJRVU1zWTBGQll5eERRVUZETEVkQlFVY3NWVUZCVlN4RFFVRkRPMHRCUXpkRU8wRkJSVVE3T3pzN1FVRkpSenRCUVVOSkxFbEJRVUVzYjBKQlFXOUNMRU5CUVVNc1ZVRkJlVUlzUlVGQlFUdFJRVU51UkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRCUVVOd1JDeFJRVUZCTEVsQlFVa3NTMEZCU3l4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRk8wRkJRMmhDTEZsQlFVRXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXh0UlVGQmJVVXNRMEZCUXl4RFFVRkRPMEZCUTI1R0xGTkJRVUU3VVVGRlJDeEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYmtNc1QwRkJUeXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEZWQlFWVXNRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRMUVVOMlJEdEJRVVZFT3pzN096dEJRVXRITzBGQlEwa3NTVUZCUVN4UlFVRlJMRU5CUVVNc1NVRkJjME1zUlVGQlFUczdVVUZEY0VRc1RVRkJUU3hWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVNMVF5eFBRVUZQTEVOQlFVRXNSVUZCUVN4SFFVRkJMRlZCUVZVc1MwRkJRU3hKUVVGQkxFbEJRVllzVlVGQlZTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGV0xGVkJRVlVzUTBGQlJTeE5RVUZOTEUxQlFVa3NTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVRXNTVUZCU1N4RFFVRkRPMHRCUTI1RE8wRkJSVVE3T3pzN08wRkJTMGM3U1VGRFNTeFJRVUZSTEVOQlFVTXNTVUZCYzBNc1JVRkJSU3hOUVVGakxFVkJRVUU3VVVGRGNFVXNUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTTFReXhSUVVGQkxFbEJRVWtzVlVGQlZTeEZRVUZGTzBGQlEyUXNXVUZCUVN4VlFVRlZMRU5CUVVNc1RVRkJUU3hIUVVGSExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTjBReXhUUVVGQk8wdEJRMFk3UVVGRlJEczdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3p0QlFYbENSenRCUVVOSkxFbEJRVUVzYzBKQlFYTkNMRU5CUVVNc1NVRkJjME1zUlVGQlFUdFJRVU5zUlN4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUXpWRExGRkJRVUVzVDBGQlR5eFZRVUZWTEVkQlFVY3NRMEZCUnl4RlFVRkJMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVk1zVDBGQlFTeERRVUZCTEVkQlFVY3NTVUZCU1N4RFFVRkRPMHRCUTNoRU8wRkJSVVE3TzBGQlJVYzdTVUZEU1N4TlFVRk5MRWRCUVVFN08wRkJSVmdzVVVGQlFTeE5RVUZOTEdsQ1FVRnBRaXhIUVVGSExFbEJRVWtzUTBGQlF5d3lRa0ZCTWtJc1JVRkJSU3hEUVVGRE96dFJRVWMzUkN4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEZWQlFWVXNTMEZCU1R0WlFVTjJReXhWUVVGVkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc1EwRkJRenRCUVVOc1F5eFRRVUZETEVOQlFVTXNRMEZCUXpzN1VVRkhTQ3hKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRlZCUVZVc1MwRkJTVHRaUVVOMlF5eEpRVUZKTEZWQlFWVXNSMEZCUnl4SFFVRkhMRU5CUVVNN1FVRkRja0lzV1VGQlFTeE5RVUZOTEVsQlFVa3NSMEZCUnl4VlFVRlZMRU5CUVVNc1kwRkJZeXhEUVVGRE8xbEJSWFpETEVsQlFVa3NTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUlVGQlJUdEJRVU5zUkN4blFrRkJRU3hWUVVGVkxFbEJRVWtzYVVKQlFXbENMRU5CUVVNc1MwRkJTeXhEUVVGRE8wRkJRM1pETEdGQlFVRTdXVUZGUkN4SlFVRkpMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVTdRVUZEYmtRc1owSkJRVUVzVlVGQlZTeEpRVUZKTEdsQ1FVRnBRaXhEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU40UXl4aFFVRkJPMWxCUlVRc1NVRkJTU3hKUVVGSkxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUTJ4RUxHZENRVUZCTEZWQlFWVXNTVUZCU1N4cFFrRkJhVUlzUTBGQlF5eExRVUZMTEVOQlFVTTdRVUZEZGtNc1lVRkJRVHRCUVVWRUxGbEJRVUVzVlVGQlZTeERRVUZETEZkQlFWY3NRMEZCUXl4RlFVRkZMRlZCUVZVc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGVrTXNVMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRTanRCUVVWRU96dEJRVVZITzBsQlEwc3NNa0pCUVRKQ0xFZEJRVUU3VVVGTGFrTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1IwRkJSeXhEUVVGRE8xRkJRMmhDTEVsQlFVa3NUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJRenRSUVVOcVFpeEpRVUZKTEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkZhRUlzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhWUVVGVkxFdEJRVWs3UVVGRGRrTXNXVUZCUVN4TFFVRkxMRWxCUVVrc1ZVRkJWU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRPMEZCUTNoRExGbEJRVUVzVFVGQlRTeEpRVUZKTEZWQlFWVXNRMEZCUXl4dlFrRkJiMElzUTBGQlF6dEJRVU14UXl4WlFVRkJMRXRCUVVzc1NVRkJTU3hWUVVGVkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNN1FVRkRNVU1zVTBGQlF5eERRVUZETEVOQlFVTTdVVUZGU0N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkROMElzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFGQlF5OUNMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVVM1FpeFJRVUZCTEU5QlFVOHNSVUZCUlN4TFFVRkxMRVZCUVVVc1RVRkJUU3hGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETzB0QlEycERPMEZCUTBZN08wRkRiRkZFTzBGQlJXRXNUVUZCUVN3NFFrRkJPRUlzUjBGQlJ6dEJRVU0xUXl4SlFVRkJMRXRCUVVzc1JVRkJSU3hQUVVGUE8wRkJRMlFzU1VGQlFTeGhRVUZoTEVWQlFVVXNaVUZCWlR0QlFVTTVRaXhKUVVGQkxGVkJRVlVzUlVGQlJTeFpRVUZaTzBGQlEzaENMRWxCUVVFc1YwRkJWeXhGUVVGRkxHRkJRV0U3UVVGRE1VSXNTVUZCUVN4UlFVRlJMRVZCUVVVc1ZVRkJWVHRCUVVOd1FpeEpRVUZCTEZsQlFWa3NSVUZCUlN4alFVRmpPMFZCUTI1Q08wRkJTMG9zVFVGQlRTdzBRa0ZCTkVJc1IwRkJhMFU3U1VGRGVrY3NUVUZCVFN4RlFVRkZMRGhDUVVFNFFpeERRVUZETEV0QlFVczdTVUZETlVNc1kwRkJZeXhGUVVGRkxEaENRVUU0UWl4RFFVRkRMR0ZCUVdFN1NVRkROVVFzVjBGQlZ5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExGVkJRVlU3U1VGRGRFUXNVMEZCVXl4RlFVRkZMRGhDUVVFNFFpeERRVUZETEZGQlFWRTdTVUZEYkVRc1lVRkJZU3hGUVVGRkxEaENRVUU0UWl4RFFVRkRMRmxCUVZrN1EwRkRNMFE3TzBGRGFFSkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMEZCUldwRE96dEJRVVZITzAxQlExVXNPRUpCUVRoQ0xFTkJRVUU3UVVGcFJIcERMRWxCUVVFc1YwRkJRU3hEUVVGdFFpeEZRVU5xUWl4UlFVRlJMRVZCUTFJc1NVRkJTU3hGUVVOS0xGZEJRVmNzUjBGblFsb3NSVUZCUVRzN1FVRkRReXhSUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NVVUZCVVN4RFFVRkRPMEZCUTNwQ0xGRkJRVUVzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRha0lzVVVGQlFTeEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRmRCUVZjc1EwRkJRenM3UVVGSEwwSXNVVUZCUVN4TlFVRk5MR1ZCUVdVc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRGhDUVVFNFFpeERRVUZETEcxQ1FVRnRRaXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVU0zUml4RFFVRkRMRU5CUVVNc1lVRkJZU3hEUVVGRExFdEJRVWs3UVVGRGJFSXNXVUZCUVN4UFFVRlJMRkZCUVdkQ0xFTkJRVU1zWVVGQllTeERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRPMEZCUTI1RUxGTkJRVU1zUTBGRFJpeE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMUFzVVVGQlFTeE5RVUZOTEZsQlFWa3NSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3hsUVVGbExFdEJRV1lzU1VGQlFTeEpRVUZCTEdWQlFXVXNTMEZCWml4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeGxRVUZsTEVOQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVrc1NVRkJTU3hEUVVGRE8xRkJSWEpFTEVsQlFVa3NXVUZCV1N4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVONFFpeFpRVUZCTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUTFZc1EwRkJRU3h0UkVGQlFTeEZRVU5GTEUxQlFVRXNVVUZCVVN4RFFVRkRMRWxCUVVrc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJTU3hYUVVOdVFpeERRVUZCTEZkQlFVRXNSVUZCWXl4SlFVRkpMRU5CUVVFc0swTkJRVUVzUTBGQmFVUXNRMEZEY0VVc1EwRkJRenRCUVVWR0xGbEJRVUVzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRjRUlzVTBGQlFUdEJRVUZOTEdGQlFVRTdRVUZEVEN4WlFVRkJMRTFCUVUwc1RVRkJUU3hIUVVGSkxGRkJRV2RDTEVOQlFVTXNXVUZCV1N4RFFVRm5RaXhEUVVGRE8wRkJSVGxFTEZsQlFVRXNUVUZCVFN4WlFVRlpMRWRCUVVjc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZET3p0QlFVZHdReXhaUVVGQkxFMUJRVTBzVlVGQlZTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkRhRU1zVjBGQlZ5eERRVUZETEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1EwRkJReXhGUVVNNVFpeFhRVUZYTEVOQlFVTXNRMEZCUXl4SFFVRkhMRmxCUVZrc1EwRkJReXhEUVVGRExFVkJRemxDTEZkQlFWY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGREwwSXNRMEZCUXp0WlFVVkdMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWM3WjBKQlExb3NXVUZCV1R0blFrRkRXaXhaUVVGWk8yZENRVU5hTEZWQlFWVTdZVUZEV0N4RFFVRkRPMEZCUTBnc1UwRkJRVHRMUVVOR08wRkJSVTBzU1VGQlFTeFhRVUZYTEVOQlFVTXNUVUZCWXl4RlFVRkJPMEZCUXk5Q0xGRkJRVUVzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1JVRkJSVHM3V1VGRmRrSXNUMEZCVHp0QlFVTlNMRk5CUVVFN1VVRkZSQ3hOUVVGTkxFVkJRVVVzV1VGQldTeEZRVUZGTEZWQlFWVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRmFrUXNUVUZCVFN4TlFVRk5MRWRCUVVrc1NVRkJTU3hEUVVGRExGRkJRV2RDTEVOQlFVTXNXVUZCV1N4RFFVRm5RaXhEUVVGRE8xRkJRMjVGTEVsQlFVa3NUVUZCVFN4TFFVRkxMRk5CUVZNc1JVRkJSVHRaUVVONFFpeFBRVUZQTzBGQlExSXNVMEZCUVR0QlFVVkVMRkZCUVVFc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExHTkJRV01zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlRORUxFbEJRVWtzVDBGQlVTeEpRVUZKTEVOQlFVTXNVVUZCWjBJc1EwRkJReXh0UWtGQmJVSXNTMEZCU3l4VFFVRlRMRVZCUVVVN1FVRkRiRVVzV1VGQlFTeEpRVUZKTEVOQlFVTXNVVUZCWjBJc1EwRkJReXh0UWtGQmJVSXNSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRia1FzVTBGQlFUdExRVU5HTzBsQlJVMHNhMEpCUVd0Q0xFZEJRVUU3UVVGRGRrSXNVVUZCUVN4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeEZRVUZGT3p0WlFVVjJRaXhQUVVGUE8wRkJRMUlzVTBGQlFUdFJRVVZFTEUxQlFVMHNSVUZCUlN4WlFVRlpMRVZCUVVVc1dVRkJXU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXp0UlFVVnVSQ3hOUVVGTkxFMUJRVTBzUjBGQlNTeEpRVUZKTEVOQlFVTXNVVUZCWjBJc1EwRkJReXhaUVVGWkxFTkJRV2RDTEVOQlFVTTdVVUZEYmtVc1NVRkJTU3hOUVVGTkxFdEJRVXNzVTBGQlV5eEZRVUZGTzFsQlEzaENMRTlCUVU4N1FVRkRVaXhUUVVGQk8wRkJSVVFzVVVGQlFTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xRkJSVEZDTEVsQlFVa3NUMEZCVVN4SlFVRkpMRU5CUVVNc1VVRkJaMElzUTBGQlF5eHRRa0ZCYlVJc1MwRkJTeXhUUVVGVExFVkJRVVU3UVVGRGJFVXNXVUZCUVN4SlFVRkpMRU5CUVVNc1VVRkJaMElzUTBGQlF5eHRRa0ZCYlVJc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRGJrUXNVMEZCUVR0TFFVTkdPenRCUVd4S1JEczdRVUZGUnp0QlFVTlpMRGhDUVVGQkxFTkJRVUVzYlVKQlFXMUNMRWRCUlRsQ08wRkJRMFlzU1VGQlFTeHpRa0ZCYzBJc1JVRkJSVHRCUVVOMFFpeFJRVUZCTEV0QlFVc3NSVUZCUlN4UFFVRlBPMEZCUTJRc1VVRkJRU3hoUVVGaExFVkJRVVVzVlVGQlZUdEJRVU14UWl4TFFVRkJPMEZCUTBRc1NVRkJRU3h0UWtGQmJVSXNSVUZCUlR0QlFVTnVRaXhSUVVGQkxFdEJRVXNzUlVGQlJTeFBRVUZQTzBGQlEyWXNTMEZCUVR0QlFVTkVMRWxCUVVFc1pVRkJaU3hGUVVGRk8wRkJRMllzVVVGQlFTeExRVUZMTEVWQlFVVXNUMEZCVHp0QlFVTmtMRkZCUVVFc1lVRkJZU3hGUVVGRkxGVkJRVlU3UVVGRGVrSXNVVUZCUVN4WlFVRlpMRVZCUVVVc2IwSkJRVzlDTzBGQlEyeERMRkZCUVVFc1YwRkJWeXhGUVVGRkxHTkJRV003UVVGRE0wSXNVVUZCUVN4UlFVRlJMRVZCUVVVc01FSkJRVEJDTzBGQlEzQkRMRkZCUVVFc1ZVRkJWU3hGUVVGRkxHdENRVUZyUWp0QlFVTXZRaXhMUVVGQk8wTkJRMFk3TzBGRE5VSklPenRCUVVWSE8wMUJRMVVzTkVKQlFUUkNMRU5CUVVFN1FVRm5RblpETEVsQlFVRXNWMEZCUVN4RFFVRnRRaXhGUVVOcVFpeFZRVUZWTEVWQlExWXNTMEZCU3l4RlFVTk1MRTFCUVUwc1IwRm5RbEFzUlVGQlFUdEJRVU5ETEZGQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhWUVVGVkxFTkJRVU03UVVGRE4wSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF6dEJRVU51UWl4UlFVRkJMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETzB0QlEzUkNPMEZCUlUwc1NVRkJRU3hYUVVGWExFTkJRVU1zVFVGQll5eEZRVUZCTzFGQlF5OUNMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkpPenRCUVVNdlFpeFpRVUZCTEVsQlFVa3NRMEZCUVN4RFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOd1JDeG5Ra0ZCUVN4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRPMEZCUTJoRkxHRkJRVUU3UVVGRFNDeFRRVUZETEVOQlFVTXNRMEZCUXp0TFFVTktPMGxCUlUwc2EwSkJRV3RDTEVkQlFVRTdVVUZEZGtJc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4SlFVRkpMRXRCUVVrN08wRkJReTlDTEZsQlFVRXNTVUZCU1N4RFFVRkJMRU5CUVVFc1JVRkJRU3hIUVVGQkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVrc1NVRkJTU3hGUVVGRk8yZENRVU53UkN4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dEJRVU01UXl4aFFVRkJPMEZCUTBnc1UwRkJReXhEUVVGRExFTkJRVU03UzBGRFNqdEJRVU5HT3p0QlF6TkVSQ3hOUVVGTkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVWb1F6czdRVUZGUnp0TlFVTlZMR2xEUVVGcFF5eERRVUZCTzBGQmEwUTFReXhKUVVGQkxGZEJRVUVzUTBGQmJVSXNSVUZEYWtJc1VVRkJVU3hGUVVOU0xFdEJRVXNzUlVGRFRDeE5RVUZOTEVkQlowSlFMRVZCUVVFN08wRkJRME1zVVVGQlFTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRkZCUVZFc1EwRkJRenRCUVVONlFpeFJRVUZCTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8wRkJRMjVDTEZGQlFVRXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU03UVVGRmNrSXNVVUZCUVN4TlFVRk5MR0ZCUVdFc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMR2xEUVVGcFF5eERRVUZETEdsQ1FVRnBRaXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVU0xUml4RFFVRkRMRU5CUVVNc1lVRkJZU3hEUVVGRExFdEJRVWs3UVVGRGJFSXNXVUZCUVN4UFFVRlJMRkZCUVdkQ0xFTkJRVU1zWVVGQllTeERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRPMEZCUTI1RUxGTkJRVU1zUTBGRFJpeE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVkFzU1VGQlNTeGhRVUZoTEVsQlFVa3NTVUZCU1N4RlFVRkZPMEZCUTNwQ0xGbEJRVUVzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZEVml4RFFVRkJMSE5FUVVGQkxFVkJRMFVzUTBGQlFTeEZRVUZCTEVkQlFVRXNVVUZCVVN4RFFVRkRMRWxCUVVrc1RVRkJTU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJRU3hYUVVOdVFpeERRVUZ4UXl4dFEwRkJRU3hEUVVGQkxFTkJRM1JETEVOQlFVTTdRVUZGUml4WlFVRkJMRWxCUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEzWkNMRk5CUVVFN1FVRkJUU3hoUVVGQk8wRkJRMHdzV1VGQlFTeEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVWMFFpeFpRVUZCTEdGQlFXRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhaUVVGWkxFdEJRVWs3TzJkQ1FVTnlReXhOUVVGTkxFOUJRVThzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUlN4UlFVRm5RaXhEUVVGRExGbEJRVmtzUTBGQkswSXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSU3hMUVVGTExFVkJRVVVzUTBGQlF6dG5Ra0ZEZUVZc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJUdEJRVU5hTEc5Q1FVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMklzYVVKQlFVRTdRVUZGUVN4blFrRkJRU3hSUVVGblFpeERRVUZETEZsQlFWa3NRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJRenRuUWtGRk1VTXNUVUZCVFN4aFFVRmhMRWRCUVVjc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0blFrRkROME1zVFVGQlRTeFpRVUZaTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dG5Ra0ZETlVNc1RVRkJUU3hYUVVGWExFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dG5Ra0ZEZEVRc1RVRkJUU3hWUVVGVkxFZEJRVWNzUzBGQlN5eERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dEJRVVZ1UkN4blFrRkJRU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXp0QlFVTndRaXh2UWtGQlFTeEpRVUZKTEVWQlFVVXNXVUZCV1R0dlFrRkRiRUlzWVVGQllUdHZRa0ZEWWl4WFFVRlhPMjlDUVVOWUxGbEJRVms3YjBKQlExb3NWVUZCVlR0QlFVTllMR2xDUVVGQkxFTkJRVU1zUTBGQlF6dEJRVU5NTEdGQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTBvc1UwRkJRVHRMUVVOR08wRkJSVTBzU1VGQlFTeFhRVUZYTEVOQlFVTXNUVUZCWXl4RlFVRkJPMUZCUXk5Q0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1VVRkJVU3hMUVVGSk8xbEJRM0JETEUxQlFVMHNUVUZCVFN4SFFVRkpMRWxCUVVrc1EwRkJReXhSUVVGblFpeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVd0Q0xFTkJRVU03V1VGRGRFVXNTVUZCU1N4TlFVRk5MRXRCUVVzc1UwRkJVeXhGUVVGRk8yZENRVU40UWl4UFFVRlBPMEZCUTFJc1lVRkJRVHRCUVVWRUxGbEJRVUVzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1kwRkJZeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZWtVc1dVRkJRU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4alFVRmpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVVY0UlN4WlFVRkJMRTFCUVUwc1EwRkJReXhYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETzBGQlF6VkNMRk5CUVVNc1EwRkJReXhEUVVGRE8wdEJRMG83U1VGRlRTeHJRa0ZCYTBJc1IwRkJRVHRSUVVOMlFpeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExGRkJRVkVzUzBGQlNUdFpRVU53UXl4TlFVRk5MRTFCUVUwc1IwRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlowSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGclFpeERRVUZETzFsQlEzUkZMRWxCUVVrc1RVRkJUU3hMUVVGTExGTkJRVk1zUlVGQlJUdG5Ra0ZEZUVJc1QwRkJUenRCUVVOU0xHRkJRVUU3V1VGRlJDeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTTdXVUZETTBNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8wRkJSVEZETEZsQlFVRXNUVUZCVFN4RFFVRkRMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRE5VSXNVMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRTanM3UVVFMVNXTXNhVU5CUVVFc1EwRkJRU3hwUWtGQmFVSXNSMEZCTUVNN1FVRkRlRVVzU1VGQlFTeHpRa0ZCYzBJc1JVRkJSVHRSUVVOMFFpeExRVUZMTzFGQlEwd3NZVUZCWVR0UlFVTmlMRk5CUVZNN1VVRkRWQ3hYUVVGWE8xRkJRMWdzYVVKQlFXbENPMUZCUTJwQ0xHTkJRV003VVVGRFpDeGpRVUZqTzFGQlEyUXNWVUZCVlR0QlFVTllMRXRCUVVFN1FVRkRSQ3hKUVVGQkxHMUNRVUZ0UWl4RlFVRkZMRU5CUVVNc1MwRkJTeXhGUVVGRkxHRkJRV0VzUlVGQlJTeFZRVUZWTEVOQlFVTTdRVUZEZGtRc1NVRkJRU3hsUVVGbExFVkJRVVU3VVVGRFppeExRVUZMTzFGQlEwd3NWMEZCVnp0UlFVTllMR0ZCUVdFN1VVRkRZaXh6UWtGQmMwSTdVVUZEZEVJc2IwSkJRVzlDTzFGQlEzQkNMRFpDUVVFMlFqdFJRVU0zUWl4M1FrRkJkMEk3UVVGRGVrSXNTMEZCUVR0RFFVTkdPenRCUTJaSU96dEJRVVZITzBGQlEwZ3NUVUZCVFVFc2QwSkJRWE5DTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVVTFSRHM3UVVGRlJ6dE5RVU5WTEhsQ1FVRjVRaXhEUVVGQk8wRkJlVUp3UXl4SlFVRkJMRWxCUVZjc1NVRkJTU3hIUVVGQk96dEJRVVZpTEZGQlFVRXNUMEZCVHl3eVFrRkJNa0lzUTBGQlF6dExRVU53UXp0QlFVVkVMRWxCUVVFc1YwRkJRU3hEUVVGdFFpeE5RVUZyUWl4RlFVRkJPMEZCUTI1RExGRkJRVUVzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4TlFVRk5MRU5CUVVNN1MwRkRkRUk3UVVGRldTeEpRVUZCTEZOQlFWTXNRMEZCUXl4SlFVRlZMRVZCUVVFN08wRkJReTlDTEZsQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXh2UWtGQmIwSXNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVMEZETDBRc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGQlFUdEJRVVZFT3pzN08wRkJTVWM3UVVGRFZ5eEpRVUZCTEU5QlFVOHNRMEZCUXl4SlFVRlZMRVZCUVVFN08xbEJRemxDTEUxQlFVMHNVVUZCVVN4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTTFReXhaUVVGQkxFbEJRVWtzVVVGQlVTeEZRVUZGTzBGQlExb3NaMEpCUVVFc1QwRkJUeXhSUVVGUkxFTkJRVU03UVVGRGFrSXNZVUZCUVR0WlFVVkVMRTFCUVUwc1VVRkJVU3hIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVNMVF5eFpRVUZCTEVsQlFVa3NVVUZCVVN4RlFVRkZPMEZCUTFvc1owSkJRVUVzVDBGQlR5eFJRVUZSTEVOQlFVTTdRVUZEYWtJc1lVRkJRVHRCUVVWRUxGbEJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTTdVMEZEWWl4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVGQk8wRkJSV0VzU1VGQlFTeFRRVUZUTEVOQlFVTXNTVUZCVlN4RlFVRkJPenM3UVVGRGFFTXNXVUZCUVN4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFYZENMRU5CUVVNN08wRkJSMnhFTEZsQlFVRXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJRU3hEUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZKTEVOQlFVTXNZMEZCWXl4TlFVRkZMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGQkxFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCU3l4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOc1JTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZPMEZCUTJRc1owSkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTTdRVUZEWWl4aFFVRkJPMWxCUlVRc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlJ5eFZRVUZWTEVOQlFXOURMRU5CUVVNN1dVRkRia1lzU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlR0QlFVTmtMR2RDUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETzBGQlEySXNZVUZCUVR0QlFVVkVMRmxCUVVFc1RVRkJUU3hYUVVGWExFZEJRVWNzVTBGQlV5eERRVUZETEZkQlFWY3NRMEZCUXp0QlFVTXhReXhaUVVGQkxFbEJRVWtzUTBGQlEwRXNkMEpCUVhOQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NRMEZCUXl4RlFVRkZPMEZCUXpWRExHZENRVUZCTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc05FUkJRVFJFTEZkQlFWY3NRMEZCUVN4RFFVRkJMRU5CUVVjc1EwRkJReXhEUVVGRE8wRkJRM3BHTEdkQ1FVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMklzWVVGQlFUdEJRVVZFTEZsQlFVRXNUVUZCVFN4cFFrRkJhVUlzUjBGQlJ5eFRRVUZUTEVOQlFVTXNWMEZCVnl4RFFVRkRPMWxCUTJoRUxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSVHRCUVVOMFFpeG5Ra0ZCUVN4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOaUxHRkJRVUU3TzBGQlIwUXNXVUZCUVN4TlFVRk5MR0ZCUVdFc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlV5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMSFZDUVVGMVFpeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVSU3haUVVGQkxFMUJRVTBzZFVKQlFYVkNMRWRCUVVjc1NVRkJTU3hIUVVGSExFVkJRV3RETEVOQlFVTTdRVUZGTVVVc1dVRkJRU3hKUVVGSkxHbENRVUZwUWl4RFFVRkRMRTFCUVUwc1NVRkJTU3hKUVVGSkxFVkJRVVU3UVVGRGNFTXNaMEpCUVVFc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3huUWtGQlowSXNRMEZCUXl4TFFVRkpPMjlDUVVNMVJTeEpRVUZKTEdkQ1FVRm5RaXhKUVVGSkxFbEJRVWtzUlVGQlJUdDNRa0ZETlVJc1QwRkJUenRCUVVOU0xIRkNRVUZCTzBGQlJVUXNiMEpCUVVFc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1FVRkROVUlzZDBKQlFVRXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXh0UkVGQmJVUXNTVUZCU1N4RFFVRkJMRzFEUVVGQkxFTkJRWEZETEVOQlFVTXNRMEZCUXp0M1FrRkRNMGNzVDBGQlR6dEJRVU5TTEhGQ1FVRkJPMEZCUlVRc2IwSkJRVUVzZFVKQlFYVkNMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUlVGQlJTeG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8wRkJRM1JFTEdsQ1FVRkRMRU5CUVVNc1EwRkJRenRCUVVOS0xHRkJRVUU3UVVGRlJDeFpRVUZCTEVsQlFVa3NhVUpCUVdsQ0xFTkJRVU1zVFVGQlRTeEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTndReXhuUWtGQlFTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEdkQ1FVRm5RaXhEUVVGRExFdEJRVWs3UVVGRE5VVXNiMEpCUVVFc1NVRkJTU3hoUVVGaExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZPMEZCUXpOQ0xIZENRVUZCTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUTFZc2VVVkJRWGxGTEVsQlFVa3NRMEZCUVN3d1FrRkJRU3hEUVVFMFFpeERRVU14Unl4RFFVRkRPM2RDUVVOR0xFOUJRVTg3UVVGRFVpeHhRa0ZCUVR0QlFVVkVMRzlDUVVGQkxIVkNRVUYxUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFVkJRVVVzWjBKQlFXZENMRU5CUVVNc1EwRkJRenRCUVVOMFJDeHBRa0ZCUXl4RFFVRkRMRU5CUVVNN1FVRkRTaXhoUVVGQk96dEJRVWRFTEZsQlFVRXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3h2UWtGQmIwSXNSVUZCUlN4RFFVRkRPenRaUVVjelF5eE5RVUZOTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUTJZc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRkxHZENRVUZuUWl4RFFVRkRMRXRCUVVrc1UwRkJRU3hEUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEVOQlFVRXNSVUZCUVN4TFFVRkJMRU5CUVVFc1JVRkJRU3hoUVVGQk96dEJRVU51Uml4blFrRkJRU3hOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVNelF5eG5Ra0ZCUVN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0blFrRkZNMElzVlVGQlZTeERRVUZETEZGQlFWRXNSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3huUWtGQlowSXNRMEZCUXl4UlFVRlJMRTFCUVVrc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVFc1MwRkJTeXhEUVVGRE8yZENRVU42UkN4VlFVRlZMRU5CUVVNc1lVRkJZU3hIUVVGSExFTkJRVUVzUlVGQlFTeEhRVUZCTEdkQ1FVRm5RaXhEUVVGRExHRkJRV0VzVFVGQlNTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUjBGQlFTeE5RVUZOTEVOQlFVTTdaMEpCUTNCRkxGVkJRVlVzUTBGQlF5eGpRVUZqTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1owSkJRV2RDTEVOQlFVTXNZMEZCWXl4TlFVRkpMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkJMRTFCUVUwc1EwRkJRenRuUWtGRGRFVXNWVUZCVlN4RFFVRkRMR0ZCUVdFc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeG5Ra0ZCWjBJc1EwRkJReXhoUVVGaExFMUJRVWtzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFZEJRVUVzVFVGQlRTeERRVUZETzJkQ1FVVndSU3hEUVVGQkxFVkJRVUVzUjBGQlFTeG5Ra0ZCWjBJc1EwRkJReXhuUWtGQlowSXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSU3hQUVVGUExFTkJRVU1zUTBGQlR5eEpRVUZKTEV0QlFVa3NVMEZCUVN4RFFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFTkJRVUVzUlVGQlFTeExRVUZCTEVOQlFVRXNSVUZCUVN4aFFVRkJPenR2UWtGRGVFUXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hMUVVGTExGTkJRVk1zU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4TFFVRkxMRk5CUVZNc1JVRkJSVHQzUWtGRGRrUXNUMEZCVHp0QlFVTlNMSEZDUVVGQk8wRkJSVVFzYjBKQlFVRXNUVUZCVFN4VlFVRlZMRWxCUVVrc1RVRkJUU3cyUWtGQk5rSXNRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZGTEVOQlFVTTdRVUZETTBVc2IwSkJRVUVzVFVGQlRTeG5Ra0ZCWjBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZET3p0QlFVZHdReXh2UWtGQlFTeEpRVU5GTEVOQlFVTXNWVUZCVlN4RFFVRkRMRXRCUVVzc1EwRkRaaXhEUVVGRExGTkJRVk1zUzBGRFVpeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRk5CUVZNc1EwRkJReXh4UWtGQmNVSXNRMEZCUXp0QlFVTTVReXgzUWtGQlFTeG5Ra0ZCWjBJc1IwRkJSeXhUUVVGVExFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1RVRkJUU3hEUVVNMVJDeEZRVU5FTzNkQ1FVTkJMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRMVlzUTBGQk9FSXNNa0pCUVVFc1JVRkJRU3huUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVRaQ0xEQkNRVUZCTEVWQlFVRXNaMEpCUVdkQ0xFTkJRV2xDTEdWQlFVRXNRMEZCUVN4RFFVTnNTQ3hEUVVGRE8zZENRVU5HTEU5QlFVODdRVUZEVWl4eFFrRkJRVHRCUVVWRUxHOUNRVUZCTEZWQlFWVXNRMEZCUXl4UFFVRlBMRU5CUTJoQ0xFbEJRVWtzTkVKQlFUUkNMRU5CUVVNN2QwSkJReTlDTEZWQlFWVTdRVUZEVml4M1FrRkJRU3hMUVVGTExFVkJRVVVzWjBKQlFXZENPMEZCUTNaQ0xIZENRVUZCTEUxQlFVMHNSVUZCUlN4RFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlRTeHRRMEZCU1N4SFFVRkhPMEZCUXpOQ0xIRkNRVUZCTEVOQlFVTXNRMEZEU0N4RFFVRkRPMmxDUVVOSUxFTkJRVUVzUTBGQlF5eERRVUZETzBGQlJVZ3NaMEpCUVVFc1NVRkJTU3huUWtGQlowSXNRMEZCUXl4clFrRkJhMElzU1VGQlNTeG5Ra0ZCWjBJc1EwRkJReXh4UWtGQmNVSXNSVUZCUlRzN2IwSkJSV3BHTEUxQlFVMHNZVUZCWVN4SFFVRnhRaXhGUVVGRkxFTkJRVU03YjBKQlF6TkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNUVUZCVFN4TFFVRkpPMEZCUXpkQ0xIZENRVUZCTEUxQlFVMHNVVUZCVVN4SFFVRkpMRTFCUVdNc1EwRkJReXhSUVVGelF5eERRVUZETzBGQlEzaEZMSGRDUVVGQkxFbEJRVWtzVVVGQlVTeEZRVUZGTzBGQlExb3NORUpCUVVFc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0QlFVTTVRaXg1UWtGQlFUdEJRVU5JTEhGQ1FVRkRMRU5CUVVNc1EwRkJRenR2UWtGRlNDeERRVUZCTEVWQlFVRXNSMEZCUVN4blFrRkJaMElzUTBGQlF5eHJRa0ZCYTBJc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlJTeFBRVUZQTEVOQlFVTXNRMEZCVHl4SlFVRkpMRXRCUVVrc1UwRkJRU3hEUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEVOQlFVRXNSVUZCUVN4TFFVRkJMRU5CUVVFc1JVRkJRU3hoUVVGQk8zZENRVU14UkN4TlFVRk5MRk5CUVZNc1IwRkJSeXhoUVVGaExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNVVUZCVVN4TFFVRkpPelJDUVVOc1JDeE5RVUZOTEdGQlFXRXNSMEZCUnl3NFFrRkJPRUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRelZGTERSQ1FVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRExGRkJRVkVzUzBGQlN5eGhRVUZoTEVOQlFVTTdRVUZEZWtNc2VVSkJRVU1zUTBGQlF5eERRVUZETzBGQlJVZ3NkMEpCUVVFc1UwRkJVeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEZGQlFWRXNTMEZCU1R0QlFVTTNRaXcwUWtGQlFTeFZRVUZWTEVOQlFVTXNUMEZCVHl4RFFVTm9RaXhKUVVGSkxEaENRVUU0UWl4RFFVRkRPMmREUVVOcVF5eFJRVUZSTzJkRFFVTlNMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNUdEJRVU5tTEdkRFFVRkJMRmRCUVZjc1JVRkJSU3hKUVVGSkxFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF6dEJRVU16UkN3MlFrRkJRU3hEUVVGRExFTkJRMGdzUTBGQlF6dEJRVU5LTEhsQ1FVRkRMRU5CUVVNc1EwRkJRenR4UWtGRFNpeERRVUZCTEVOQlFVTXNRMEZCUXp0dlFrRkZTQ3hEUVVGQkxFVkJRVUVzUjBGQlFTeG5Ra0ZCWjBJc1EwRkJReXh4UWtGQmNVSXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSU3hQUVVGUExFTkJRVU1zUTBGQlR5eEpRVUZKTEV0QlFVa3NVMEZCUVN4RFFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFTkJRVUVzUlVGQlFTeExRVUZCTEVOQlFVRXNSVUZCUVN4aFFVRkJPM2RDUVVNM1JDeE5RVUZOTEZOQlFWTXNSMEZCUnl4aFFVRmhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVVVGQlVTeExRVUZKT3pSQ1FVTnNSQ3hOUVVGTkxHRkJRV0VzUjBGQlJ5dzRRa0ZCT0VJc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUXpWRkxEUkNRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1MwRkJTeXhoUVVGaExFTkJRVU03UVVGRGVrTXNlVUpCUVVNc1EwRkJReXhEUVVGRE8wRkJSVWdzZDBKQlFVRXNVMEZCVXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExGRkJRVkVzUzBGQlNUczdRVUZETjBJc05FSkJRVUVzVlVGQlZTeERRVUZETEU5QlFVOHNRMEZEYUVJc1NVRkJTU3hwUTBGQmFVTXNRMEZCUXp0blEwRkRjRU1zVVVGQlVUdEJRVU5TTEdkRFFVRkJMRTFCUVUwc1JVRkJSU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlRTeE5RVUZKTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZCTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJRMmhGTEdkRFFVRkJMRXRCUVVzc1JVRkJSU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJRU3hKUVVGSkxFTkJRVU1zUzBGQlN5eE5RVUZKTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZCTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJReTlFTERaQ1FVRkJMRU5CUVVNc1EwRkRTQ3hEUVVGRE8wRkJRMG9zZVVKQlFVTXNRMEZCUXl4RFFVRkRPM0ZDUVVOS0xFTkJRVUVzUTBGQlF5eERRVUZETzBGQlEwb3NhVUpCUVVFN1FVRkZSQ3huUWtGQlFTeFBRVUZQTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdZVUZEZUVNc1EwRkJRU3hEUVVGRExFTkJRMGdzUTBGQlF6dEJRVVZHTEZsQlFVRXNUMEZCVHl4UFFVRlBMRU5CUVVNN08wRkJRMmhDTEV0QlFVRTdRVUZGWVN4SlFVRkJMRk5CUVZNc1EwRkJReXhKUVVGVkxFVkJRVUU3T3p0QlFVTm9ReXhaUVVGQkxFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJkMElzUTBGQlF6czdXVUZIYkVRc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlJTeEhRVUUwUWl4RFFVRkRPMWxCUXpkRUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZEV0N4blFrRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5pTEdGQlFVRTdRVUZGUkN4WlFVRkJMRTFCUVUwc1owSkJRV2RDTEVkQlFVY3NUVUZCVFN4RFFVRkRMR2RDUVVGblFpeERRVUZETzFsQlEycEVMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNSVUZCUlR0QlFVTnlRaXhuUWtGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmlMR0ZCUVVFN1FVRkZSQ3haUVVGQkxFMUJRVTBzVDBGQlR5eEhRVUZITEVsQlFVa3NiMEpCUVc5Q0xFVkJRVVVzUTBGQlF6dEJRVVV6UXl4WlFVRkJMRTFCUVUwc2MwSkJRWE5DTEVkQlFVY3NaMEpCUVdkQ0xFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1dVRkRha1VzU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhGUVVGRk8wRkJRek5DTEdkQ1FVRkJMRTlCUVU4c1QwRkJUeXhEUVVGRE8wRkJRMmhDTEdGQlFVRTdRVUZGUkN4WlFVRkJMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVZVc1EwRkJRenRaUVVVMVF5eE5RVUZOTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUTJZc2MwSkJRWE5DTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVU4c1YwRkJWeXhMUVVGSkxGTkJRVUVzUTBGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4RFFVRkJMRVZCUVVFc1MwRkJRU3hEUVVGQkxFVkJRVUVzWVVGQlFUczdRVUZETDBNc1owSkJRVUVzVFVGQlRTeFpRVUZaTEVkQlFVY3NWMEZCVnl4RFFVRkRMRlZCUVZVc1EwRkJRenRCUVVNMVF5eG5Ra0ZCUVN4TlFVRk5MRmxCUVZrc1IwRkRhRUlzUTBGQlF5eFpRVUZaTEVsQlFVa3NTVUZCU1N4SlFVRkpMSGxDUVVGNVFpeERRVUZETEdsQ1FVRnBRaXhEUVVGRExGbEJRVmtzUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXp0blFrRkRPVVlzVFVGQlRTeEpRVUZKTEVkQlFVY3NXVUZCV1N4TFFVRmFMRWxCUVVFc1NVRkJRU3haUVVGWkxFdEJRVm9zUzBGQlFTeERRVUZCTEVkQlFVRXNXVUZCV1N4SFFVRkpMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU03WjBKQlJUbERMRWxCUVVrc1NVRkJTU3hKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU5vUWl4dlFrRkJRU3hQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETERKR1FVRXlSaXhEUVVGRExFTkJRVU03YjBKQlF6RkhMRTlCUVU4N1FVRkRVaXhwUWtGQlFUczdRVUZIUkN4blFrRkJRU3hKUVVGSkxHbENRVUZwUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdEJRVU12UWl4dlFrRkJRU3hQUVVGUExFTkJRVU1zU1VGQlNTeERRVU5XTEcxRVFVRnRSQ3haUVVGWkxFTkJRVUVzWjBSQlFVRXNRMEZCYTBRc1EwRkRiRWdzUTBGQlF6dHZRa0ZEUml4UFFVRlBPMEZCUTFJc2FVSkJRVUU3UVVGRlJDeG5Ra0ZCUVN4cFFrRkJhVUlzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkZOVUlzWjBKQlFVRXNUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3hoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdRVUZETTBNc1owSkJRVUVzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03WjBKQlJUTkNMRlZCUVZVc1EwRkJReXhSUVVGUkxFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNWMEZCVnl4RFFVRkRMRkZCUVZFc1RVRkJTU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJRU3hMUVVGTExFTkJRVU03T3p0blFrRkpjRVFzU1VGQlNTeFhRVUZYTEVOQlFVTXNTMEZCU3l4RlFVRkZPMjlDUVVOeVFpeFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGUExFbEJRVWtzUzBGQlNTeFRRVUZCTEVOQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1EwRkJRU3hGUVVGQkxFdEJRVUVzUTBGQlFTeEZRVUZCTEdGQlFVRTdPM2RDUVVOMlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4SlFVRkpMRXRCUVVzc1UwRkJVeXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEV0QlFVc3NVMEZCVXl4RlFVRkZPelJDUVVOMlJDeFBRVUZQTzBGQlExSXNlVUpCUVVFN2QwSkJSVVFzVFVGQlRTeGpRVUZqTEVkQlFXRXNSVUZCUlN4RFFVRkRPM2RDUVVOd1F5eERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMRU5CUVVNc1MwRkJTeXhOUVVGRkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZCTEU5QlFVOHNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFdEJRVWs3UVVGRE9VSXNORUpCUVVFc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeExRVUZMTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVN1FVRkRNMElzWjBOQlFVRXNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU40UWl3MlFrRkJRVHRCUVVOSUxIbENRVUZETEVOQlFVTXNRMEZCUXp0QlFVVklMSGRDUVVGQkxFMUJRVTBzWjBKQlFXZENMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dDNRa0ZGY0VNc1RVRkJUU3hQUVVGUExFTkJRVU1zUjBGQlJ5eERRVU5tTEdOQlFXTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJUeXhUUVVGVExFdEJRVWtzVTBGQlFTeERRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRU5CUVVFc1JVRkJRU3hMUVVGQkxFTkJRVUVzUlVGQlFTeGhRVUZCT3pzMFFrRkRja01zVFVGQlRTeFZRVUZWTEVsQlFVa3NUVUZCVFN3MlFrRkJOa0lzUTBGQlF5eEpRVUZKTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVVc1EwRkJRenM3UVVGSE0wVXNORUpCUVVFc1NVRkRSU3hEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVOQlEyWXNRMEZCUXl4VFFVRlRMRXRCUTFJc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU03UVVGRE9VTXNaME5CUVVFc1owSkJRV2RDTEVkQlFVY3NVMEZCVXl4RFFVRkRMSEZDUVVGeFFpeERRVUZETEUxQlFVMHNRMEZETlVRc1JVRkRSRHRuUTBGRFFTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVTldMRU5CUVRoQ0xESkNRVUZCTEVWQlFVRXNWMEZCVnl4RFFVRkRMRWxCUVVrc1EwRkJjMElzYlVKQlFVRXNSVUZCUVN4blFrRkJaMElzUTBGQmVVSXNkVUpCUVVFc1EwRkJRU3hEUVVNNVJ5eERRVUZETzJkRFFVTkdMRTlCUVU4N1FVRkRVaXcyUWtGQlFUdEJRVVZFTERSQ1FVRkJMRlZCUVZVc1EwRkJReXhQUVVGUExFTkJRMmhDTEVsQlFVa3NORUpCUVRSQ0xFTkJRVU03WjBOQlF5OUNMRlZCUVZVN1FVRkRWaXhuUTBGQlFTeExRVUZMTEVWQlFVVXNaMEpCUVdkQ08wRkJRM1pDTEdkRFFVRkJMRTFCUVUwc1JVRkJSU3hKUVVGSkxFbEJRVWtzUTBGQlFTeEZRVUZCTEVkQlFVRXNTVUZCU1N4RFFVRkRMRTFCUVUwc1RVRkJTU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJRU3hIUVVGSExFTkJRVU03UVVGRGNFTXNOa0pCUVVFc1EwRkJReXhEUVVOSUxFTkJRVU03ZVVKQlEwZ3NRMEZCUVN4RFFVRkRMRU5CUTBnc1EwRkJRenR4UWtGRFNDeERRVUZCTEVOQlFVTXNRMEZCUXp0QlFVTktMR2xDUVVGQk96dEJRVWRFTEdkQ1FVRkJMRTFCUVUwc1kwRkJZeXhIUVVGSExGZEJRVmNzUTBGQlF5eGpRVUZqTEVOQlFVTTdRVUZEYkVRc1owSkJRVUVzU1VGQlNTeGpRVUZqTEVsQlFVa3NZMEZCWXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRExFVkJRVVU3UVVGRGFrUXNiMEpCUVVFc1kwRkJZeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEdGQlFXRXNTMEZCU1R0QlFVTjJReXgzUWtGQlFTeEpRVU5GTEdGQlFXRXNRMEZCUXl4WlFVRlpMRXRCUVVzc1UwRkJVenMwUWtGRGVFTXNZVUZCWVN4RFFVRkRMRmxCUVZrc1MwRkJTeXhUUVVGVE8wRkJRM2hETERSQ1FVRkJMR0ZCUVdFc1EwRkJReXhYUVVGWExFdEJRVXNzVTBGQlV5eEZRVU4yUXpzMFFrRkRRU3hQUVVGUE8wRkJRMUlzZVVKQlFVRTdRVUZGUkRzN096czdPMEZCVFVjN2QwSkJRMGdzVFVGQlRTeFRRVUZUTEVkQlFYRkNMRVZCUVVVc1EwRkJRenQzUWtGRGRrTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVazdORUpCUXpkQ0xFbEJRVXNzVFVGQll5eERRVUZETEZGQlFWRXNSVUZCUlR0QlFVTTFRaXhuUTBGQlFTeE5RVUZOTEZGQlFWRXNSMEZCZFVNc1RVRkJZeXhEUVVGRExGRkJRVkVzUTBGQlF6dEJRVU0zUlN4blEwRkJRU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUVVVN2IwTkJRek5DTEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUTFvc1IwRkJSeXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVU5vUWl4RFFVRkRMRWRCUVVjc1MwRkRSaXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEV0QlFVc3NZVUZCWVN4RFFVRkRMRmxCUVdFN2QwTkJRM1pETEVkQlFVY3NRMEZCUXl4SlFVRkpMRXRCUVVzc1lVRkJZU3hEUVVGRExGbEJRV0VzUjBGQlJ5eFpRVUZaTzNkRFFVTjZSQ3hUUVVGVExFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVOb1F5eERRVU5HTEVOQlFVTTdRVUZEU0N4cFEwRkJRVHRCUVVGTkxIRkRRVUZCTEVsQlFVa3NVVUZCVVN4RFFVRkRMRWxCUVVrc1MwRkJTeXhoUVVGaExFTkJRVU1zV1VGQldTeEpRVUZKTEZOQlFWTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVTdRVUZETjBZc2IwTkJRVUVzVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVNeFFpeHBRMEZCUVR0QlFVTkdMRFpDUVVGQk8wRkJRMGdzZVVKQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlVnc2QwSkJRVUVzVFVGQlRTeHZRa0ZCYjBJc1IwRkJSeXhoUVVGaExFTkJRVU1zV1VGQldTeERRVUZETzBGQlEzaEVMSGRDUVVGQkxGTkJRVk1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4UlFVRlJMRXRCUVVrN096UkNRVVUzUWl4SlFVRkpMRzlDUVVGdlFpeExRVUZMTEdGQlFXRXNSVUZCUlR0blEwRkRNVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUTBGQlF5eFhRVUZaTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1lVRkJZU3hEUVVGRExGZEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmREUVVNNVJpeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEZkQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hoUVVGaExFTkJRVU1zVjBGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkZMMFlzWjBOQlFVRXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFZEJRVWNzVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJSWEJETEdkRFFVRkJMRlZCUVZVc1EwRkJReXhQUVVGUExFTkJRMmhDTEVsQlFVa3NhVU5CUVdsRExFTkJRVU03YjBOQlEzQkRMRkZCUVZFN2IwTkJRMUlzUzBGQlN6dHZRMEZEVEN4TlFVRk5PMEZCUTFBc2FVTkJRVUVzUTBGQlF5eERRVU5JTEVOQlFVTTdaME5CUlVZc1QwRkJUenRCUVVOU0xEWkNRVUZCT3p0QlFVZEVMRFJDUVVGQkxFMUJRVTBzYVVKQlFXbENMRWRCUVVjc05FSkJRVFJDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zUTBGQlF6dEJRVU0zUlN3MFFrRkJRU3hKUVVGSkxHbENRVUZwUWl4RlFVRkZPMEZCUTNKQ0xHZERRVUZCTEZWQlFWVXNRMEZCUXl4UFFVRlBMRU5CUTJoQ0xFbEJRVWtzT0VKQlFUaENMRU5CUVVNN2IwTkJRMnBETEZGQlFWRTdRVUZEVWl4dlEwRkJRU3hKUVVGSkxFVkJRVVVzYVVKQlFXbENPMEZCUTNaQ0xHOURRVUZCTEZkQlFWY3NSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eGhRVUZoTEVOQlFVTXNWMEZCV1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZUVVc2FVTkJRVUVzUTBGQlF5eERRVU5JTEVOQlFVTTdaME5CUlVZc1QwRkJUenRCUVVOU0xEWkNRVUZCTzBGQlJVUXNORUpCUVVFc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1IwRkJSeXh0UWtGQmJVSXNRMEZCUXl4RFFVRkRPMEZCUXpORUxIbENRVUZETEVOQlFVTXNRMEZCUXp0QlFVTk1MSEZDUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5LTEdsQ1FVRkJPMEZCUlVRc1owSkJRVUVzVDBGQlR5eERRVUZETEd0Q1FVRnJRaXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzJGQlEzaERMRU5CUVVFc1EwRkJReXhEUVVOSUxFTkJRVU03UVVGRlJpeFpRVUZCTEU5QlFVOHNUMEZCVHl4RFFVRkRPenRCUVVOb1FpeExRVUZCT3p0QlFYSlpjMElzZVVKQlFVRXNRMEZCUVN4cFFrRkJhVUlzUjBGQmVVVTdRVUZETDBjc1NVRkJRU3hEUVVGRExFVkJRVVVzU1VGQlNUdEJRVU5RTEVsQlFVRXNRMEZCUXl4RlFVRkZMRWxCUVVrN1FVRkRVQ3hKUVVGQkxFTkJRVU1zUlVGQlJTeEpRVUZKTzBGQlExQXNTVUZCUVN4RFFVRkRMRVZCUVVVc1NVRkJTVHRCUVVOUUxFbEJRVUVzUTBGQlF5eEZRVUZGTEVsQlFVazdRVUZEVUN4SlFVRkJMRXRCUVVzc1JVRkJSU3hQUVVGUE8wRkJRMlFzU1VGQlFTeEhRVUZITEVWQlFVVXNUMEZCVHp0QlFVTmFMRWxCUVVFc1MwRkJTeXhGUVVGRkxFOUJRVTg3UVVGRFpDeEpRVUZCTEUxQlFVMHNSVUZCUlN4TFFVRkxPMEZCUTJJc1NVRkJRU3hIUVVGSExFVkJRVVVzVTBGQlV6dEJRVU5rTEVsQlFVRXNUVUZCVFN4RlFVRkZMRkZCUVZFN1FVRkRhRUlzU1VGQlFTeFJRVUZSTEVWQlFVVXNWVUZCVlR0QlFVTndRaXhKUVVGQkxGRkJRVkVzUlVGQlJTeFZRVUZWTzBGQlEzQkNMRWxCUVVFc1UwRkJVeXhGUVVGRkxGZEJRVmM3TzBGQlJYUkNMRWxCUVVFc1QwRkJUeXhGUVVGRkxGZEJRVmM3TzBGQlJYQkNMRWxCUVVFc1QwRkJUeXhGUVVGRkxGbEJRVms3UVVGRGNrSXNTVUZCUVN4UFFVRlBMRVZCUVVVc1UwRkJVenREUVVOdVFqczdRVU0xUTBnN1FVRkZZU3hOUVVGQkxIbENRVUY1UWl4SFFVRkhPMEZCUTNaRExFbEJRVUVzU1VGQlNTeEZRVUZGTEUxQlFVMDdRVUZEV2l4SlFVRkJMRXRCUVVzc1JVRkJSU3hQUVVGUE8wRkJRMlFzU1VGQlFTeExRVUZMTEVWQlFVVXNUMEZCVHpzN08wMURSRWdzWTBGQll5eERRVUZCTzBGQk1FSjZRanM3T3pzN1FVRkxSenRKUVVOSUxGZEJRVzFDTEVOQlFVRXNVVUZCY1VJc1JVRkJSU3hsUVVFclF5eEZRVUZCTzBGQldHcEdMRkZCUVVFc1NVRkJRU3hEUVVGQkxIRkNRVUZ4UWl4SFFVRkhMR05CUVdNc1EwRkJReXc0UWtGQk9FSXNRMEZCUXp0QlFVTjBSU3hSUVVGQkxFbEJRVUVzUTBGQlFTeHhRa0ZCY1VJc1IwRkJSeXhqUVVGakxFTkJRVU1zT0VKQlFUaENMRU5CUVVNN1VVRkZkRVVzU1VGQmEwSXNRMEZCUVN4clFrRkJRU3hIUVVGSExFdEJRVXNzUTBGQlF6dEJRVk5xUXl4UlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzVVVGQlVTeERRVUZETzBGQlEzcENMRkZCUVVFc1NVRkJTU3hEUVVGRExHVkJRV1VzUjBGQlJ5eGxRVUZsTEVOQlFVTTdTMEZEZUVNN1FVRkZSRHM3T3pzN1FVRkxSenRCUVVOSkxFbEJRVUVzU1VGQlNTeERRVUZETEUxQlFYTkNMRVZCUVVFN1FVRkRhRU1zVVVGQlFTeEpRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRXRCUVVzc1RVRkJUU3hEUVVGRExGRkJRVkVzUlVGQlJUdEJRVU55UXl4WlFVRkJMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zZDBSQlFYZEVMRU5CUVVNc1EwRkJRenRCUVVNelJTeFRRVUZCTzBGQlJVUXNVVUZCUVN4SlFVRkpMRU5CUVVNc1pVRkJaU3hIUVVGSExFMUJRVTBzUTBGQlF5eGxRVUZsTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hOUVVGTk8wRkJRMnBGTEZsQlFVRXNUVUZCVFN4RlFVRkZMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTzFsQlEyeERMRWxCUVVrc1JVRkJSU3hWUVVGVkxFTkJRVU1zU1VGQlNUdEJRVU4wUWl4VFFVRkJMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJSVW9zVVVGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXp0TFFVTmlPMEZCUlVRN096dEJRVWRITzBsQlEwa3NTMEZCU3l4SFFVRkJPMEZCUTFZc1VVRkJRU3hQUVVGUExFbEJRVWtzWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVNelJUdEJRVVZFT3pzN096czdPenRCUVZGSE8wRkJRMGdzU1VGQlFTeEpRVUZYTEc5Q1FVRnZRaXhIUVVGQk8xRkJRemRDTEU5QlFVOHNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETzB0QlEyNURPMEZCUlVRN096czdPenM3TzBGQlVVYzdRVUZEU0N4SlFVRkJMRWxCUVZjc2IwSkJRVzlDTEVkQlFVRTdVVUZETjBJc1QwRkJUeXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNN1MwRkRia003UVVGRlJEczdPenM3T3pzN096czdRVUZYUnp0QlFVTkpMRWxCUVVFc1MwRkJTeXhEUVVGRExFVkJRMWdzYjBKQlFXOUNMRWRCUVVjc1kwRkJZeXhEUVVGRExEaENRVUU0UWl4RlFVTndSU3h2UWtGQmIwSXNSMEZCUnl4alFVRmpMRU5CUVVNc09FSkJRVGhDTEVkQlEzSkZMRWRCUVVjc1JVRkJSU3hGUVVGQk8xRkJRMG9zU1VGQlNTeEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVU3V1VGRE0wSXNUMEZCVHp0QlFVTlNMRk5CUVVFN1FVRkRSQ3hSUVVGQkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1IwRkJSeXh2UWtGQmIwSXNRMEZCUXp0QlFVTnNSQ3hSUVVGQkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1IwRkJSeXh2UWtGQmIwSXNRMEZCUXp0UlFVVnNSQ3hKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTVHRaUVVOd1F5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlNUdEJRVU16UWl4blFrRkJRU3hKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEV0QlFVc3NhVUpCUVdsQ0xFVkJRVVU3YjBKQlEyNURMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eERRVUZETzBGQlF6VkRMRzlDUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4TFFVRkxMRXRCUVVzc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjRSU3hwUWtGQlFUdEJRVUZOTEhGQ1FVRkJMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUzBGQlN5eHBRa0ZCYVVJc1JVRkJSVHR2UWtGRE1VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFTkJRVU03UVVGRE5VTXNiMEpCUVVFc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEV0QlFVc3NTMEZCU3l4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzaEZMR2xDUVVGQk8wRkJRVTBzY1VKQlFVRXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hMUVVGTExFMUJRVTBzUlVGQlJUdEJRVU12UWl4dlFrRkJRU3hKUVVGSkxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRGFrTXNhVUpCUVVFN1FVRkRTQ3hoUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5NTEZOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlVnc1VVRkJRU3hKUVVGSkxFTkJRVU1zYTBKQlFXdENMRWRCUVVjc1NVRkJTU3hEUVVGRE8wdEJRMmhETzBGQlJVOHNTVUZCUVN4cFFrRkJhVUlzUTBGQlF5eFRRVUZ0UWl4RlFVRkZMRWRCUVdVc1JVRkJSU3hUUVVGeFFpeEZRVUZGTEU5QlFXbENMRVZCUVVFN1VVRkRkRWNzU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJRc1NVRkJTU3hIUVVGSExFbEJRVWtzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8wRkJRMnBETEZsQlFVRXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdEJRVU0xUXl4blFrRkJRU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRM1pDTEUxQlFVMHNRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXpOQ0xFMUJRVTBzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE0wSXNaMEpCUVVFc1RVRkJUU3hIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTI1Q0xHZENRVUZCTEUxQlFVMHNTMEZCU3l4SFFVRkhMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVVV6UWl4blFrRkJRU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRVVVzVTBGQlV6dEJRVU4yUkN4blFrRkJRU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRVVVzVTBGQlV6dEJRVU4yUkN4blFrRkJRU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRVVVzVTBGQlV6dEJRVU4yUkN4blFrRkJRU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRVVVzVTBGQlV6dEJRVVYyUkN4blFrRkJRU3hOUVVGTkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRia0lzWjBKQlFVRXNUVUZCVFN4TFFVRkxMRWRCUVVjc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6TkNMR2RDUVVGQkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGQlJTeFRRVUZUTzBGQlEzWkVMR2RDUVVGQkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGQlJTeFRRVUZUTzBGQlEzWkVMR2RDUVVGQkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGQlJTeFRRVUZUTzBGQlEzWkVMR2RDUVVGQkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGQlJTeFRRVUZUTzBGQlJYWkVMR2RDUVVGQkxFMUJRVTBzUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOdVFpeG5Ra0ZCUVN4TlFVRk5MRXRCUVVzc1IwRkJSeXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETTBJc1owSkJRVUVzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVUZGTEZOQlFWTTdRVUZEZGtRc1owSkJRVUVzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVUZGTEZOQlFWTTdRVUZEZGtRc1owSkJRVUVzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVUZGTEZOQlFWTTdRVUZEZGtRc1owSkJRVUVzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVUZGTEZOQlFWTTdRVUZGZGtRc1owSkJRVUVzVTBGQlV5eERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJRM1pDTEdkQ1FVRkJMRk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTjJRaXhuUWtGQlFTeFRRVUZUTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRGVFSXNZVUZCUVR0QlFVTkdMRk5CUVVFN1FVRkRSQ3hSUVVGQkxFOUJRVThzUzBGQlN5eERRVUZETzB0QlEyUTdTVUZGVHl4cFFrRkJhVUlzUTBGQlF5eEhRVUZ6UWl4RlFVRkZMR2xDUVVFeVFpeEZRVUZCTzBGQlF6TkZMRkZCUVVFc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWRCUVVjc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xRkJRM1JGTEVkQlFVY3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJRU3hGUVVGSExFZEJRVWNzUTBGQlF5eEpRVUZKTEZOQlFWTXNRMEZCUXp0QlFVTm9ReXhSUVVGQkxFZEJRVWNzUTBGQlF5eGhRVUZoTEVkQlFVY3NSMEZCUnl4RFFVRkRMR0ZCUVdFc1EwRkJRenRSUVVOMFF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1EwRkJRenRCUVVVelF5eFJRVUZCTEUxQlFVMHNVVUZCVVN4SFFVRkhMRWRCUVVjc1EwRkJReXhSUVVGUkxFTkJRVU03VVVGRk9VSXNUVUZCVFN4aFFVRmhMRWRCUVVjc1VVRkJVU3hEUVVGRExGbEJRVmtzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0QlFVTjZSQ3hSUVVGQkxFMUJRVTBzYTBKQlFXdENMRWRCUVVjc1lVRkJZU3haUVVGWkxFdEJRVXNzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhGUVVGRkxFZEJRVWNzWVVGQllTeERRVUZETEV0QlFVc3NRMEZCUXp0UlFVTjJSeXhOUVVGTkxGTkJRVk1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdRVUZEY2tJc1VVRkJRU3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc2EwSkJRV3RDTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3V1VGRGNrUXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJRenRuUWtGRFlpeHJRa0ZCYTBJc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGNrSXNaMEpCUVVFc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVONlFpeG5Ra0ZCUVN4clFrRkJhMElzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTNwQ0xHZENRVUZCTEd0Q1FVRnJRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZETVVJc1lVRkJRU3hEUVVGRExFTkJRVU03UVVGRFNpeFRRVUZCTzFGQlJVUXNUVUZCVFN4alFVRmpMRWRCUVVjc1VVRkJVU3hEUVVGRExGbEJRVmtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0QlFVTXpSQ3hSUVVGQkxFMUJRVTBzYlVKQlFXMUNMRWRCUVVjc1kwRkJZeXhaUVVGWkxFdEJRVXNzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhGUVVGRkxFZEJRVWNzWTBGQll5eERRVUZETEV0QlFVc3NRMEZCUXp0UlFVTXhSeXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdRVUZEZEVJc1VVRkJRU3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc2JVSkJRVzFDTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3V1VGRGRFUXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJRenRuUWtGRFpDeHRRa0ZCYlVJc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGRFSXNaMEpCUVVFc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVNeFFpeG5Ra0ZCUVN4dFFrRkJiVUlzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUXpGQ0xHZENRVUZCTEcxQ1FVRnRRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZETTBJc1lVRkJRU3hEUVVGRExFTkJRVU03UVVGRFNpeFRRVUZCTzBGQlJVUXNVVUZCUVN4TlFVRk5MRXRCUVVzc1IwRkJSeXhSUVVGUkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdVVUZEYkVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJUdEJRVU5XTEZsQlFVRXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXd5UTBGQk1rTXNRMEZCUXl4RFFVRkRPMEZCUXpsRUxGTkJRVUU3VVVGRFJDeE5RVUZOTEZsQlFWa3NSMEZCUnl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVVTNReXhSUVVGQkxFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eFpRVUZaTEVWQlFVVXNWVUZCVlN4RlFVRkZMRk5CUVZNc1JVRkJSU3hwUWtGQmFVSXNRMEZCUXl4RFFVRkRPMUZCUXpkR0xFMUJRVTBzVjBGQlZ5eEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVTnFReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlF6bENMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRiRU1zVTBGQlFUdEJRVU5FTEZGQlFVRXNVVUZCVVN4RFFVRkRMRkZCUVZFc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6czdVVUZITDBJc1NVRkJTU3hIUVVGSExFTkJRVU1zWTBGQll5eEZRVUZGTzBGQlEzUkNMRmxCUVVFc1IwRkJSeXhEUVVGRExHTkJRV01zUjBGQlJ5eEhRVUZITEVOQlFVTXNZMEZCWXl4RFFVRkRPMEZCUTNwRExGTkJRVUU3VVVGRFJDeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hIUVVGSExFTkJRVU1zVVVGQlVTeERRVUZETEZsQlFWa3NRMEZCUXl4RlFVRkZMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEYWtjc1VVRkJRU3hQUVVGUExFZEJRVWNzUTBGQlF6dExRVU5hTzBsQlJVOHNhME5CUVd0RExFTkJRVU1zVFVGQmMwSXNSVUZCUlN4SlFVRjFRaXhGUVVGQk8xRkJRM2hHTEUxQlFVMHNaMEpCUVdkQ0xFZEJRV0VzUlVGQlJTeERRVUZETzBGQlEzUkRMRkZCUVVFc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUzBGQlNUdEJRVU14UXl4WlFVRkJMRWxCUVVrc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTTdRVUZCUlN4blFrRkJRU3huUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRE9VUXNVMEZCUXl4RFFVRkRMRU5CUVVNN08wRkJSMGdzVVVGQlFTeEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeEZRVUZGTzFsQlF6VkNMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eERRVUZETzFsQlF5OURMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eERRVUZETzFsQlF5OURMRTlCUVU4N1FVRkRVaXhUUVVGQk8xRkJRMFFzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNN1VVRkROVU1zVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVsQlFVa3NSVUZCUlN4blFrRkJaMElzUTBGQlF5eERRVUZETzBGQlF5OUVMRkZCUVVFc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0TFFVTnlRanRCUVVWUExFbEJRVUVzYjBKQlFXOUNMRU5CUVVNc1NVRkJiMElzUlVGQlFUdEJRVU12UXl4UlFVRkJMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUzBGQlN5eFBRVUZQTEVWQlFVVTdXVUZEZWtJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdRVUZETlVNc1dVRkJRU3hKUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1FVRkROMElzWjBKQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFdEJRVXNzUzBGQlN5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM2hGTEdGQlFVRTdRVUZCVFN4cFFrRkJRVHRCUVVOTUxHZENRVUZCTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzJkQ1FVTnFReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVRXNWVUZCUVN4RlFVRmhMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdRVUZET1VNc1owSkJRVUVzU1VGQlNTeERRVUZETEUxQlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRGVrSXNaMEpCUVVFc1NVRkJTU3hEUVVGRExGRkJRVkU3Y1VKQlExWXNUVUZCVFN4RFFVRkRMRU5CUVVNc1MwRkJTeXhMUVVGTExFdEJRVXNzUTBGQlF5eEpRVUZKTEV0QlFVc3NZVUZCWVN4RFFVRkRPMEZCUXk5RExIRkNRVUZCTEU5QlFVOHNRMEZCUXl4RFFVRkRMRXRCUVVzc1MwRkJTVHR2UWtGRGFrSXNUVUZCVFN4WFFVRlhMRWRCUVVjc1MwRkJNRUlzUTBGQlF6dEJRVU12UXl4dlFrRkJRU3hKUVVGSkxFTkJRVU1zYTBOQlFXdERMRU5CUVVNc1RVRkJUU3hGUVVGRkxGZEJRVmNzUTBGQlF5eERRVUZETzBGQlF5OUVMR2xDUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5PTEdGQlFVRTdRVUZEUml4VFFVRkJPMEZCUVUwc1lVRkJRU3hKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEV0QlFVc3NZVUZCWVN4RlFVRkZPMWxCUTNSRExFMUJRVTBzVjBGQlZ5eEhRVUZITEVsQlFYbENMRU5CUVVNN1dVRkRPVU1zU1VGQlNTeERRVUZETEd0RFFVRnJReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZQTEVWQlFVVXNWMEZCVnl4RFFVRkRMRU5CUVVNN1FVRkRjRVVzVTBGQlFUdEJRVUZOTEdGQlFVRTdRVUZEVEN4WlFVRkJMRWxCUVVrc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0blFrRkROMElzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNN1FVRkROVU1zWjBKQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFdEJRVXNzUzBGQlN5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM2hGTEdGQlFVRTdRVUZEUml4VFFVRkJPMHRCUTBZN1FVRkZUeXhKUVVGQkxHTkJRV01zUTBGQlF5eEpRVUZ2UWl4RlFVRkJPMUZCUTNwRExFbEJRVWtzU1VGQlNTeExRVUZMTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1kwRkJZeXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTzBGQlEycEVMRmxCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFlpeFRRVUZCTzBGQlFVMHNZVUZCUVN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJUdEJRVU4yUWl4WlFVRkJMRTlCUVU4c1MwRkJTeXhEUVVGRE8wRkJRMlFzVTBGQlFUdEJRVUZOTEdGQlFVRTdXVUZEVEN4UFFVRlBMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTNwRExGTkJRVUU3UzBGRFJqczdRVUV2VVVRN096czdRVUZKUnp0QlFVTnZRaXhqUVVFNFFpeERRVUZCTERoQ1FVRkJMRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJSVEZFT3pzN08wRkJTVWM3UVVGRGIwSXNZMEZCT0VJc1EwRkJRU3c0UWtGQlFTeEhRVUZITEVWQlFVVTdPMEZEVURWRU96dEJRVVZITzBGQlEwZ3NUVUZCVFVFc2QwSkJRWE5DTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVVTFSRHM3UVVGRlJ6dE5RVU5WTERCQ1FVRXdRaXhEUVVGQk8wRkJSM0pETEVsQlFVRXNTVUZCVnl4SlFVRkpMRWRCUVVFN08wRkJSV0lzVVVGQlFTeFBRVUZQTERSQ1FVRTBRaXhEUVVGRE8wdEJRM0pETzBGQlJVUXNTVUZCUVN4WFFVRkJMRU5CUVcxQ0xFMUJRV3RDTEVWQlFVRTdRVUZEYmtNc1VVRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXp0TFFVTjBRanRCUVVWWkxFbEJRVUVzVTBGQlV5eERRVUZETEVsQlFWVXNSVUZCUVRzN1FVRkRMMElzV1VGQlFTeE5RVUZOTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGZEJRWE5ETEVOQlFVTTdPenRaUVVsNlJTeEpRVUZKTEZkQlFWY3NTMEZCU3l4SlFVRkpMRVZCUVVVN1owSkJRM2hDTEU5QlFVODdRVUZEVWl4aFFVRkJPMmxDUVVGTkxFbEJRVWtzVjBGQlZ5eExRVUZMTEZOQlFWTXNSVUZCUlR0QlFVTndReXhuUWtGQlFTeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVTmlMSEZIUVVGeFJ5eERRVU4wUnl4RFFVRkRPMEZCUTBnc1lVRkJRVHRCUVVWRUxGbEJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4alFVRmpMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRUUVVOMFJTeERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVRkJPMEZCUlVRN096czdPMEZCUzBjN1NVRkZWeXhQUVVGUExFTkJRVU1zU1VGQlZTeEZRVUZGTEZGQlFUUkNMRVZCUVVFN08xbEJRelZFTEVsQlFVa3NVVUZCVVN4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOd1FpeG5Ra0ZCUVN4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOaUxHRkJRVUU3V1VGRlJDeE5RVUZOTEZGQlFWRXNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUTNSRUxGbEJRVUVzU1VGQlNTeFJRVUZSTEVWQlFVVTdRVUZEV2l4blFrRkJRU3hQUVVGUExGRkJRVkVzUTBGQlF6dEJRVU5xUWl4aFFVRkJPMWxCUlVRc1RVRkJUU3hSUVVGUkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVU4wUkN4WlFVRkJMRWxCUVVrc1VVRkJVU3hGUVVGRk8wRkJRMW9zWjBKQlFVRXNUMEZCVHl4UlFVRlJMRU5CUVVNN1FVRkRha0lzWVVGQlFUdEJRVVZFTEZsQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1UwRkRZaXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVUZCTzBsQlJXRXNVMEZCVXl4RFFVRkRMRWxCUVZVc1JVRkJSU3hSUVVGeFFpeEZRVUZCT3pzN1FVRkRka1FzV1VGQlFTeE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRWGRDTEVOQlFVTTdPMEZCUjJ4RUxGbEJRVUVzVFVGQlRTeFRRVUZUTEVkQlFVY3NRMEZCUVN4RFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxFTkJRVU1zWTBGQll5eE5RVUZGTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkJMRTlCUVU4c1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnNSU3hKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTzBGQlEyUXNaMEpCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFlpeGhRVUZCTzFsQlJVUXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSeXhWUVVGVkxFTkJRVzlETEVOQlFVTTdXVUZEYmtZc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJUdEJRVU5rTEdkQ1FVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMklzWVVGQlFUdEJRVVZFTEZsQlFVRXNUVUZCVFN4WFFVRlhMRWRCUVVjc1UwRkJVeXhEUVVGRExGZEJRVmNzUTBGQlF6dEJRVU14UXl4WlFVRkJMRWxCUVVrc1EwRkJRMEVzZDBKQlFYTkNMRU5CUVVNc1IwRkJSeXhEUVVGRExGZEJRVmNzUTBGQlF5eEZRVUZGTzBGQlF6VkRMR2RDUVVGQkxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNOa1JCUVRaRUxGZEJRVmNzUTBGQlFTeERRVUZCTEVOQlFVY3NRMEZCUXl4RFFVRkRPMEZCUXpGR0xHZENRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJJc1lVRkJRVHRCUVVWRUxGbEJRVUVzVFVGQlRTeHBRa0ZCYVVJc1IwRkJSeXhUUVVGVExFTkJRVU1zVjBGQlZ5eERRVUZETzFsQlEyaEVMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSVUZCUlR0QlFVTjBRaXhuUWtGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmlMR0ZCUVVFN1dVRkZSQ3hOUVVGTkxHVkJRV1VzUjBGQmJVTXNSVUZCUlN4RFFVRkRPMEZCUXpORUxGbEJRVUVzVFVGQlRTeHBRa0ZCYVVJc1IwRkJSeXhOUVVGTkxEaENRVUU0UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wRkJRM0pGTEZsQlFVRXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRlZCUVZVc1EwRkJReXhMUVVGSk96dEJRVU14UlN4blFrRkJRU3hOUVVGTkxGVkJRVlVzUjBGQlJ5eHBRa0ZCYVVJc1EwRkJReXhsUVVGbE8wRkJRMnhFTEhOQ1FVRkZMR2xDUVVGcFFpeERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVsQlFVa3NTMEZCU3l4VFFVRlRMRU5CUVVNN2MwSkJRMjVGTEZOQlFWTXNRMEZCUXp0blFrRkZaQ3hsUVVGbExFTkJRVU1zU1VGQlNTeERRVUZETzBGQlEyNUNMRzlDUVVGQkxFMUJRVTBzUlVGQlJTeFZRVUZWTzI5Q1FVTnNRaXhKUVVGSkxFVkJRVVVzUTBGQlFTeEZRVUZCTEVkQlFVRXNWVUZCVlN4TFFVRldMRWxCUVVFc1NVRkJRU3hWUVVGVkxIVkNRVUZXTEZWQlFWVXNRMEZCUlN4SlFVRkpMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVrc1RVRkJUVHRCUVVOcVF5eHBRa0ZCUVN4RFFVRkRMRU5CUVVNN1FVRkRUQ3hoUVVGRExFTkJRVU1zUTBGQlF6dEJRVVZJTEZsQlFVRXNUMEZCVHl4SlFVRkpMR05CUVdNc1EwRkJReXhSUVVGUkxFVkJRVVVzWlVGQlpTeERRVUZETEVOQlFVTTdPMEZCUTNSRUxFdEJRVUU3U1VGRllTeFRRVUZUTEVOQlFVTXNTVUZCVlN4RlFVRkZMRkZCUVhGQ0xFVkJRVUU3T3p0QlFVTjJSQ3haUVVGQkxFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJkMElzUTBGQlF6dFpRVVZzUkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZKTEVOQlFVTXNWVUZCVlN4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGRkxFZEJRVFJDTEVOQlFVTTdXVUZETjBRc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJUdEJRVU5ZTEdkQ1FVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMklzWVVGQlFUdEJRVVZFTEZsQlFVRXNUVUZCVFN4cFFrRkJhVUlzUjBGQmEwTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJRenRaUVVNMVJTeEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVU3UVVGRGRFSXNaMEpCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFlpeGhRVUZCTzFsQlJVUXNUVUZCVFN4bFFVRmxMRWRCUVcxRExFVkJRVVVzUTBGQlF6dEJRVU16UkN4WlFVRkJMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NUVUZCVFN3NFFrRkJPRUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVVnlSU3haUVVGQkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeFZRVUZWTEVOQlFVTXNTMEZCU1R0blFrRkRNVVVzVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dEJRVVV4UXl4blFrRkJRU3hOUVVGTkxFbEJRVWtzUjBGQlJ5eHBRa0ZCYVVJc1EwRkJReXhsUVVGbE8wRkJRelZETEhOQ1FVRkZMR2xDUVVGcFFpeERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVsQlFVa3NTMEZCU3l4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRE8zTkNRVU42UlN4VFFVRlRMRU5CUVVNN1owSkJSV1FzWlVGQlpTeERRVUZETEVsQlFVa3NRMEZCUXp0QlFVTnVRaXh2UWtGQlFTeE5RVUZOTEVWQlFVVXNWVUZCVlR0QlFVTnNRaXh2UWtGQlFTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMSE5DUVVGelFpeERRVUZETEVsQlFVa3NTMEZCU2l4SlFVRkJMRWxCUVVFc1NVRkJTU3hMUVVGS0xFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRWxCUVVrc1EwRkJSU3hsUVVGbExFTkJRVU03UVVGRGVrUXNhVUpCUVVFc1EwRkJReXhEUVVGRE8wRkJRMHdzWVVGQlF5eERRVUZETEVOQlFVTTdRVUZGU0N4WlFVRkJMRTlCUVU4c1NVRkJTU3hqUVVGakxFTkJRVU1zVVVGQlVTeEZRVUZGTEdWQlFXVXNRMEZCUXl4RFFVRkRPenRCUVVOMFJDeExRVUZCTzBGQlJVOHNTVUZCUVN4elFrRkJjMElzUTBGQlF5eEpRVUYzUWl4RlFVRkJPMUZCUTNKRUxFbEJRVWtzU1VGQlNTeExRVUZMTEdsQ1FVRnBRaXhGUVVGRk8wRkJRemxDTEZsQlFVRXNUMEZCVHl4cFFrRkJhVUlzUTBGQlF6dEJRVU14UWl4VFFVRkJPMkZCUVUwc1NVRkJTU3hKUVVGSkxFdEJRVXNzYVVKQlFXbENMRVZCUVVVN1FVRkRja01zV1VGQlFTeFBRVUZQTEdsQ1FVRnBRaXhEUVVGRE8wRkJRekZDTEZOQlFVRTdZVUZCVFN4SlFVRkpMRWxCUVVrc1MwRkJTeXhOUVVGTkxFVkJRVVU3UVVGRE1VSXNXVUZCUVN4UFFVRlBMRTFCUVUwc1EwRkJRenRCUVVObUxGTkJRVUU3UVVGQlRTeGhRVUZCTzBGQlEwd3NXVUZCUVN4UFFVRlBMRTFCUVUwc1EwRkJRenRCUVVObUxGTkJRVUU3UzBGRFJqdEJRVU5HT3p0QlF6TktSRHRCUVVWaExFMUJRVUVzWjBOQlFXZERMRWRCUVVjN1FVRkRPVU1zU1VGQlFTeEpRVUZKTEVWQlFVVXNUVUZCVFR0QlFVTmFMRWxCUVVFc1NVRkJTU3hGUVVGRkxFMUJRVTA3UVVGRFdpeEpRVUZCTEdWQlFXVXNSVUZCUlN4cFFrRkJhVUk3UVVGRGJFTXNTVUZCUVN4bFFVRmxMRVZCUVVVc2FVSkJRV2xDT3pzN1FVTkdjRU1zVFVGQlRVTXNUVUZCU1N4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlEycERMRTFCUVUxRExFMUJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVOcVF5eE5RVUZOUXl4UlFVRk5MRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdRVUZGZWtJc1RVRkJRU3hwUWtGQmEwSXNVMEZCVVN4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGQk8wRkJTV2hFTEVsQlFVRXNWMEZCUVN4RFFVRnRRaXhSUVVGeFFpeEZRVUZCTzBGQlEzUkRMRkZCUVVFc1MwRkJTeXhGUVVGRkxFTkJRVU03UVVGRlVpeFJRVUZCTEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1VVRkJVU3hEUVVGRE8wRkJSVFZDTEZGQlFVRXNTVUZCU1N4RFFVRkRMRmxCUVZrc1IwRkJSeXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETzBGQlJUbENMRkZCUVVFc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zU1VGQlNTeExRVUZKTzFsQlEyeEVMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVWNlF5eFpRVUZCTEUxQlFVMHNRMEZCUXl4blFrRkJaMElzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZGTDBJc1dVRkJRU3hOUVVGTkxFTkJRVU1zVVVGQk1rSXNRMEZCUXl4VFFVRlRMRWRCUVVjc1MwRkJTeXhEUVVGRE8wRkJRM0pFTEZsQlFVRXNUVUZCVFN4RFFVRkRMRkZCUVRKQ0xFTkJRVU1zVlVGQlZTeEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVVjJSQ3haUVVGQkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkZha0lzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzBGQlEzUkRMRk5CUVVNc1EwRkJReXhEUVVGRE8wdEJRMG83U1VGRlRTeFBRVUZQTEVkQlFVRTdRVUZEV2l4UlFVRkJMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVsQlFVa3NTMEZCU1R0QlFVTjBSQ3haUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkRka0lzV1VGQlFTeEpRVUZKTEVOQlFVTXNVVUZCTWtJc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU01UXl4VFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOS08wRkJSVTBzU1VGQlFTeHBRa0ZCYVVJc1EwRkJReXhMUVVGakxFVkJRVUU3VVVGRGNrTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVrN1dVRkRMMFFzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkZla01zV1VGQlFTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhUUVVGVExFTkJRVU5HTEUxQlFVa3NSVUZCUlVVc1VVRkJUU3hGUVVGRlJDeE5RVUZKTEVOQlFVTXNRMEZCUXp0QlFVVndSQ3haUVVGQkxFMUJRVTBzUzBGQlN5eEhRVUZIUkN4TlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRFF5eE5RVUZKTEVOQlFVTXNRMEZCUXp0QlFVTnVSQ3haUVVGQkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRM1pFTEZOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlVnc1VVRkJRU3hMUVVGTExFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UzBGRGFFTTdRVUZEUmpzN1FVTndSRVE3UVVGSlFUczdRVUZGUnp0QlFVTlZMRTFCUVVFc1owSkJRV2RDTEVkQlFYVkNPMGxCUTJ4RUxFMUJRVTA3U1VGRFRpeFBRVUZQTzBsQlExQXNUMEZCVHp0SlFVTlFMRmxCUVZrN1NVRkRXaXhOUVVGTk8wbEJSVTRzVFVGQlRUdEpRVU5PTEZOQlFWTTdTVUZEVkN4VlFVRlZPMGxCUTFZc1MwRkJTenRKUVVWTUxHTkJRV003U1VGRFpDeGpRVUZqTzBsQlEyUXNWVUZCVlR0SlFVTldMRlZCUVZVN1NVRkZWaXhsUVVGbE8wbEJRMllzWlVGQlpUdEpRVU5tTEZkQlFWYzdTVUZEV0N4WFFVRlhPMGxCUlZnc1kwRkJZenRKUVVOa0xHTkJRV003U1VGRFpDeGpRVUZqTzBsQlEyUXNWVUZCVlR0SlFVVldMR1ZCUVdVN1NVRkRaaXhsUVVGbE8wbEJRMllzWlVGQlpUdEpRVU5tTEZkQlFWYzdTVUZGV0N4eFFrRkJjVUk3U1VGRGNrSXNiVUpCUVcxQ08wbEJRMjVDTEdsQ1FVRnBRanRKUVVOcVFpeHRRa0ZCYlVJN1NVRkRia0lzZFVKQlFYVkNPMGxCUTNaQ0xHbENRVUZwUWp0SlFVTnFRaXh2UWtGQmIwSTdTVUZEY0VJc2QwSkJRWGRDTzBsQlEzaENMR3RDUVVGclFqdEpRVU5zUWl4clFrRkJhMEk3U1VGRGJFSXNjMEpCUVhOQ08wbEJRM1JDTEdkQ1FVRm5RanRKUVVOb1FpeHZRa0ZCYjBJN1NVRkRjRUlzZDBKQlFYZENPMGxCUTNoQ0xHdENRVUZyUWp0SlFVVnNRaXh6UWtGQmMwSTdTVUZEZEVJc2IwSkJRVzlDTzBsQlEzQkNMR3RDUVVGclFqdEpRVU5zUWl4dlFrRkJiMEk3U1VGRGNFSXNkMEpCUVhkQ08wbEJRM2hDTEd0Q1FVRnJRanRKUVVOc1FpeHhRa0ZCY1VJN1NVRkRja0lzZVVKQlFYbENPMGxCUTNwQ0xHMUNRVUZ0UWp0SlFVTnVRaXh0UWtGQmJVSTdTVUZEYmtJc2RVSkJRWFZDTzBsQlEzWkNMR2xDUVVGcFFqdEpRVU5xUWl4eFFrRkJjVUk3U1VGRGNrSXNlVUpCUVhsQ08wbEJRM3BDTEcxQ1FVRnRRanM3TzBGRGNrVnlRanRCUVVWQk96czdPMEZCU1VjN1FVRkRWU3hOUVVGQkxHZENRVUZuUWl4SFFVRkhPMEZCUXpsQ0xFbEJRVUVzU1VGQlNTeEZRVUZGTEUxQlFVMDdRVUZEV2l4SlFVRkJMRXRCUVVzc1JVRkJSU3hQUVVGUE8wRkJRMlFzU1VGQlFTeExRVUZMTEVWQlFVVXNUMEZCVHp0QlFVTmtMRWxCUVVFc1ZVRkJWU3hGUVVGRkxGbEJRVms3UVVGRGVFSXNTVUZCUVN4SlFVRkpMRVZCUVVVc1RVRkJUVHRCUVVWYUxFbEJRVUVzU1VGQlNTeEZRVUZGTEUxQlFVMDdRVUZEV2l4SlFVRkJMRTlCUVU4c1JVRkJSU3hUUVVGVE8wRkJRMnhDTEVsQlFVRXNVVUZCVVN4RlFVRkZMRlZCUVZVN1FVRkRjRUlzU1VGQlFTeEhRVUZITEVWQlFVVXNTMEZCU3p0QlFVVldMRWxCUVVFc1dVRkJXU3hGUVVGRkxHTkJRV003UVVGRE5VSXNTVUZCUVN4WlFVRlpMRVZCUVVVc1kwRkJZenRCUVVNMVFpeEpRVUZCTEZGQlFWRXNSVUZCUlN4VlFVRlZPMEZCUTNCQ0xFbEJRVUVzVVVGQlVTeEZRVUZGTEZWQlFWVTdRVUZGY0VJc1NVRkJRU3hoUVVGaExFVkJRVVVzWlVGQlpUdEJRVU01UWl4SlFVRkJMR0ZCUVdFc1JVRkJSU3hsUVVGbE8wRkJRemxDTEVsQlFVRXNVMEZCVXl4RlFVRkZMRmRCUVZjN1FVRkRkRUlzU1VGQlFTeFRRVUZUTEVWQlFVVXNWMEZCVnp0QlFVVjBRaXhKUVVGQkxGbEJRVmtzUlVGQlJTeGpRVUZqTzBGQlF6VkNMRWxCUVVFc1dVRkJXU3hGUVVGRkxHTkJRV003UVVGRE5VSXNTVUZCUVN4WlFVRlpMRVZCUVVVc1kwRkJZenRCUVVNMVFpeEpRVUZCTEZGQlFWRXNSVUZCUlN4VlFVRlZPMEZCUlhCQ0xFbEJRVUVzWVVGQllTeEZRVUZGTEdWQlFXVTdRVUZET1VJc1NVRkJRU3hoUVVGaExFVkJRVVVzWlVGQlpUdEJRVU01UWl4SlFVRkJMR0ZCUVdFc1JVRkJSU3hsUVVGbE8wRkJRemxDTEVsQlFVRXNVMEZCVXl4RlFVRkZMRmRCUVZjN1FVRkZkRUlzU1VGQlFTeHRRa0ZCYlVJc1JVRkJSU3h4UWtGQmNVSTdRVUZETVVNc1NVRkJRU3hwUWtGQmFVSXNSVUZCUlN4dFFrRkJiVUk3UVVGRGRFTXNTVUZCUVN4bFFVRmxMRVZCUVVVc2FVSkJRV2xDTzBGQlEyeERMRWxCUVVFc2FVSkJRV2xDTEVWQlFVVXNiVUpCUVcxQ08wRkJRM1JETEVsQlFVRXNjVUpCUVhGQ0xFVkJRVVVzZFVKQlFYVkNPMEZCUXpsRExFbEJRVUVzWlVGQlpTeEZRVUZGTEdsQ1FVRnBRanRCUVVOc1F5eEpRVUZCTEd0Q1FVRnJRaXhGUVVGRkxHOUNRVUZ2UWp0QlFVTjRReXhKUVVGQkxITkNRVUZ6UWl4RlFVRkZMSGRDUVVGM1FqdEJRVU5vUkN4SlFVRkJMR2RDUVVGblFpeEZRVUZGTEd0Q1FVRnJRanRCUVVOd1F5eEpRVUZCTEdkQ1FVRm5RaXhGUVVGRkxHdENRVUZyUWp0QlFVTndReXhKUVVGQkxHOUNRVUZ2UWl4RlFVRkZMSE5DUVVGelFqdEJRVU0xUXl4SlFVRkJMR05CUVdNc1JVRkJSU3huUWtGQlowSTdRVUZEYUVNc1NVRkJRU3hyUWtGQmEwSXNSVUZCUlN4dlFrRkJiMEk3UVVGRGVFTXNTVUZCUVN4elFrRkJjMElzUlVGQlJTeDNRa0ZCZDBJN1FVRkRhRVFzU1VGQlFTeG5Ra0ZCWjBJc1JVRkJSU3hyUWtGQmEwSTdRVUZGY0VNc1NVRkJRU3h2UWtGQmIwSXNSVUZCUlN4elFrRkJjMEk3UVVGRE5VTXNTVUZCUVN4clFrRkJhMElzUlVGQlJTeHZRa0ZCYjBJN1FVRkRlRU1zU1VGQlFTeG5Ra0ZCWjBJc1JVRkJSU3hyUWtGQmEwSTdRVUZEY0VNc1NVRkJRU3hyUWtGQmEwSXNSVUZCUlN4dlFrRkJiMEk3UVVGRGVFTXNTVUZCUVN4elFrRkJjMElzUlVGQlJTeDNRa0ZCZDBJN1FVRkRhRVFzU1VGQlFTeG5Ra0ZCWjBJc1JVRkJSU3hyUWtGQmEwSTdRVUZEY0VNc1NVRkJRU3h0UWtGQmJVSXNSVUZCUlN4eFFrRkJjVUk3UVVGRE1VTXNTVUZCUVN4MVFrRkJkVUlzUlVGQlJTeDVRa0ZCZVVJN1FVRkRiRVFzU1VGQlFTeHBRa0ZCYVVJc1JVRkJSU3h0UWtGQmJVSTdRVUZEZEVNc1NVRkJRU3hwUWtGQmFVSXNSVUZCUlN4dFFrRkJiVUk3UVVGRGRFTXNTVUZCUVN4eFFrRkJjVUlzUlVGQlJTeDFRa0ZCZFVJN1FVRkRPVU1zU1VGQlFTeGxRVUZsTEVWQlFVVXNhVUpCUVdsQ08wRkJRMnhETEVsQlFVRXNiVUpCUVcxQ0xFVkJRVVVzY1VKQlFYRkNPMEZCUXpGRExFbEJRVUVzZFVKQlFYVkNMRVZCUVVVc2VVSkJRWGxDTzBGQlEyeEVMRWxCUVVFc2FVSkJRV2xDTEVWQlFVVXNiVUpCUVcxQ096czdRVU55UlhoRE8wRkJTVUU3T3pzN1FVRkpSenRCUVVOVkxFMUJRVUVzY1VKQlFYRkNMRWRCUVRSRU8wRkJRelZHTEVsQlFVRXNTVUZCU1N4RlFVRkZMRWxCUVVrN1FVRkRWaXhKUVVGQkxFdEJRVXNzUlVGQlJTeE5RVUZOTzBGQlEySXNTVUZCUVN4TFFVRkxMRVZCUVVVc1QwRkJUenRCUVVOa0xFbEJRVUVzVlVGQlZTeEZRVUZGTEU5QlFVODdRVUZEYmtJc1NVRkJRU3hKUVVGSkxFVkJRVVVzV1VGQldUdEJRVVZzUWl4SlFVRkJMRWxCUVVrc1JVRkJSU3hOUVVGTk8wRkJRMW9zU1VGQlFTeFBRVUZQTEVWQlFVVXNUVUZCVFR0QlFVTm1MRWxCUVVFc1VVRkJVU3hGUVVGRkxFMUJRVTA3UVVGRGFFSXNTVUZCUVN4SFFVRkhMRVZCUVVVc1RVRkJUVHRCUVVWWUxFbEJRVUVzV1VGQldTeEZRVUZGTEUxQlFVMDdRVUZEY0VJc1NVRkJRU3haUVVGWkxFVkJRVVVzWTBGQll6dEJRVU0xUWl4SlFVRkJMRkZCUVZFc1JVRkJSU3hqUVVGak8wRkJRM2hDTEVsQlFVRXNVVUZCVVN4RlFVRkZMRlZCUVZVN1FVRkZjRUlzU1VGQlFTeGhRVUZoTEVWQlFVVXNUVUZCVFR0QlFVTnlRaXhKUVVGQkxHRkJRV0VzUlVGQlJTeGxRVUZsTzBGQlF6bENMRWxCUVVFc1UwRkJVeXhGUVVGRkxHVkJRV1U3UVVGRE1VSXNTVUZCUVN4VFFVRlRMRVZCUVVVc1YwRkJWenRCUVVWMFFpeEpRVUZCTEZsQlFWa3NSVUZCUlN4WlFVRlpPMEZCUXpGQ0xFbEJRVUVzV1VGQldTeEZRVUZGTEdOQlFXTTdRVUZETlVJc1NVRkJRU3haUVVGWkxFVkJRVVVzWTBGQll6dEJRVU0xUWl4SlFVRkJMRkZCUVZFc1JVRkJSU3hqUVVGak8wRkJSWGhDTEVsQlFVRXNZVUZCWVN4RlFVRkZMRmxCUVZrN1FVRkRNMElzU1VGQlFTeGhRVUZoTEVWQlFVVXNaVUZCWlR0QlFVTTVRaXhKUVVGQkxHRkJRV0VzUlVGQlJTeGxRVUZsTzBGQlF6bENMRWxCUVVFc1UwRkJVeXhGUVVGRkxHVkJRV1U3UVVGRk1VSXNTVUZCUVN4dFFrRkJiVUlzUlVGQlJTeFZRVUZWTzBGQlF5OUNMRWxCUVVFc2FVSkJRV2xDTEVWQlFVVXNjVUpCUVhGQ08wRkJRM2hETEVsQlFVRXNaVUZCWlN4RlFVRkZMRzFDUVVGdFFqdEJRVU53UXl4SlFVRkJMR2xDUVVGcFFpeEZRVUZGTEZWQlFWVTdRVUZETjBJc1NVRkJRU3h4UWtGQmNVSXNSVUZCUlN4dFFrRkJiVUk3UVVGRE1VTXNTVUZCUVN4bFFVRmxMRVZCUVVVc2RVSkJRWFZDTzBGQlEzaERMRWxCUVVFc2EwSkJRV3RDTEVWQlFVVXNWVUZCVlR0QlFVTTVRaXhKUVVGQkxITkNRVUZ6UWl4RlFVRkZMRzlDUVVGdlFqdEJRVU0xUXl4SlFVRkJMR2RDUVVGblFpeEZRVUZGTEhkQ1FVRjNRanRCUVVNeFF5eEpRVUZCTEdkQ1FVRm5RaXhGUVVGRkxGVkJRVlU3UVVGRE5VSXNTVUZCUVN4dlFrRkJiMElzUlVGQlJTeHJRa0ZCYTBJN1FVRkRlRU1zU1VGQlFTeGpRVUZqTEVWQlFVVXNjMEpCUVhOQ08wRkJRM1JETEVsQlFVRXNhMEpCUVd0Q0xFVkJRVVVzVlVGQlZUdEJRVU01UWl4SlFVRkJMSE5DUVVGelFpeEZRVUZGTEc5Q1FVRnZRanRCUVVNMVF5eEpRVUZCTEdkQ1FVRm5RaXhGUVVGRkxIZENRVUYzUWp0QlFVVXhReXhKUVVGQkxHOUNRVUZ2UWl4RlFVRkZMRmRCUVZjN1FVRkRha01zU1VGQlFTeHJRa0ZCYTBJc1JVRkJSU3h6UWtGQmMwSTdRVUZETVVNc1NVRkJRU3huUWtGQlowSXNSVUZCUlN4dlFrRkJiMEk3UVVGRGRFTXNTVUZCUVN4clFrRkJhMElzUlVGQlJTeFhRVUZYTzBGQlF5OUNMRWxCUVVFc2MwSkJRWE5DTEVWQlFVVXNiMEpCUVc5Q08wRkJRelZETEVsQlFVRXNaMEpCUVdkQ0xFVkJRVVVzZDBKQlFYZENPMEZCUXpGRExFbEJRVUVzYlVKQlFXMUNMRVZCUVVVc1YwRkJWenRCUVVOb1F5eEpRVUZCTEhWQ1FVRjFRaXhGUVVGRkxIRkNRVUZ4UWp0QlFVTTVReXhKUVVGQkxHbENRVUZwUWl4RlFVRkZMSGxDUVVGNVFqdEJRVU0xUXl4SlFVRkJMR2xDUVVGcFFpeEZRVUZGTEZkQlFWYzdRVUZET1VJc1NVRkJRU3h4UWtGQmNVSXNSVUZCUlN4dFFrRkJiVUk3UVVGRE1VTXNTVUZCUVN4bFFVRmxMRVZCUVVVc2RVSkJRWFZDTzBGQlEzaERMRWxCUVVFc2JVSkJRVzFDTEVWQlFVVXNWMEZCVnp0QlFVTm9ReXhKUVVGQkxIVkNRVUYxUWl4RlFVRkZMSEZDUVVGeFFqdEJRVU01UXl4SlFVRkJMR2xDUVVGcFFpeEZRVUZGTEhsQ1FVRjVRanM3TzBGRGNrVTVRenM3T3pzN1FVRkxSenRCUVVOSExGTkJRVlVzWjBKQlFXZENMRU5CUVRaQ0xFMUJRVk1zUlVGQlFUdEpRVU53UlN4SlFVRkxMRTFCUVdNc1EwRkJReXhOUVVGTkxFVkJRVVU3VVVGRE1VSXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8wRkJRMnBDTEV0QlFVRTdRVUZCVFN4VFFVRkJPMUZCUTBvc1RVRkJZeXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlF6TkNMRXRCUVVFN1FVRkZSQ3hKUVVGQkxFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENPenRCUTFSQkxFMUJRVTFFTEUxQlFVa3NSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5xUXl4TlFVRk5SU3hSUVVGTkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1FVRkZkRU03TzBGQlJVYzdUVUZEVlN4TlFVRk5MRU5CUVVFN1FVRmhha0k3T3p0QlFVZEhPMEZCUTBnc1NVRkJRU3hYUVVGQkxFTkJRVzFDTEZWQlFYbENMRVZCUVVFN1FVRkRNVU1zVVVGQlFTeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRlZCUVZVc1EwRkJRenRCUVVVM1FpeFJRVUZCTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExHVkJRV1VzUlVGQlJTeERRVUZETzB0QlEzaERPMEZCUlVRN096czdRVUZKUnp0SlFVTkpMR1ZCUVdVc1IwRkJRVHRSUVVOd1FpeE5RVUZOTEVsQlFVa3NSMEZCUnl4RlFVRmhMRU5CUVVNN1FVRkZNMElzVVVGQlFTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4cFFrRkJhVUlzUzBGQlNUdFpRVU42UkN4TlFVRk5MRmRCUVZjc1IwRkJSeXhwUWtGQmNVTXNRMEZCUXp0WlFVTXhSQ3hOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE96dFpRVWN6UXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRk8yZENRVU5VTEU5QlFVODdRVUZEVWl4aFFVRkJPenRCUVVkRUxGbEJRVUZHTEUxQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBGQlEzcENMRmxCUVVGRkxGRkJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE96dFpRVWMzUWl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFZEJRVWM3UVVGRGJFSXNaMEpCUVVFc1VVRkJVU3hGUVVGRlJpeE5RVUZKTEVOQlFVTXNUMEZCVHl4RlFVRTRRanRCUVVOd1JDeG5Ra0ZCUVN4UlFVRlJMRVZCUVVWRkxGRkJRVTBzUTBGQlF5eFBRVUZQTEVWQlFYTkRPMkZCUXk5RUxFTkJRVU03UVVGRFNpeFRRVUZETEVOQlFVTXNRMEZCUXp0QlFVVklMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UzBGRFlqdEJRVVZFT3pzN08wRkJTVWM3U1VGRFNTeFBRVUZQTEVkQlFVRTdVVUZEV2l4TlFVRk5MRWxCUVVrc1IwRkJSeXhGUVVGaExFTkJRVU03UVVGRk0wSXNVVUZCUVN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhqUVVGakxFdEJRVWs3V1VGRGRFUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1kwRkJhME1zUTBGQlF6dFpRVU53UkN4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPenRaUVVkNFF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZPMmRDUVVOVUxFOUJRVTg3UVVGRFVpeGhRVUZCT3p0WlFVZEVSaXhOUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGJFSkZMRkZCUVUwc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dFpRVVZzUWl4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUXpGRExGbEJRVUVzU1VGQlNTeFRRVUZUTEV0QlFWUXNTVUZCUVN4SlFVRkJMRk5CUVZNc2RVSkJRVlFzVTBGQlV5eERRVUZGTEZGQlFWRXNSVUZCUlR0blFrRkRka0pHTEUxQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1UwRkJVeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMEZCUXpkRExHRkJRVUU3UVVGRFJDeFpRVUZCTEVsQlFVa3NVMEZCVXl4TFFVRlVMRWxCUVVFc1NVRkJRU3hUUVVGVExIVkNRVUZVTEZOQlFWTXNRMEZCUlN4UlFVRlJMRVZCUVVVN1owSkJRM1pDTEdkQ1FVRm5RaXhEUVVGRFJTeFJRVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRk5CUVZNc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzaEVMR0ZCUVVFN08wRkJSMFFzV1VGQlFVWXNUVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdRVUZEZUVJc1dVRkJRVVVzVVVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03TzFsQlIzQkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ6dEJRVU5tTEdkQ1FVRkJMRkZCUVZFc1JVRkJSVVlzVFVGQlNTeERRVUZETEU5QlFVOHNSVUZCT0VJN1FVRkRjRVFzWjBKQlFVRXNVVUZCVVN4RlFVRkZSU3hSUVVGTkxFTkJRVU1zVDBGQlR5eEZRVUZ6UXp0aFFVTXZSQ3hEUVVGRE8wRkJRMG9zVTBGQlF5eERRVUZETEVOQlFVTTdRVUZGU0N4UlFVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRE8wdEJRMkk3UVVGRlJEczdPenM3T3p0QlFVOUhPMEZCUTBrc1NVRkJRU3hQUVVGUExFTkJRVU1zVlVGQmJVSXNSVUZCUVR0QlFVTm9ReXhSUVVGQkxFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eGpRVUZqTEVWQlFVVXNTMEZCU3l4RFFVRkRMRXRCUVVrN1dVRkROMFFzVFVGQlRTeFJRVUZSTEVkQlFVY3NZMEZCYTBNc1EwRkJRenRaUVVOd1JDeE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZET3p0WlFVZDRReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTzJkQ1FVTlVMRTlCUVU4N1FVRkRVaXhoUVVGQk8xbEJSVVFzVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dFpRVU14UXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRk96dG5Ra0ZGWkN4UFFVRlBPMEZCUTFJc1lVRkJRVHM3UVVGSFJDeFpRVUZCTEVsQlFVa3NTMEZCU3l4TFFVRk1MRWxCUVVFc1NVRkJRU3hMUVVGTExIVkNRVUZNTEV0QlFVc3NRMEZCUlN4UlFVRlJMRVZCUVVVN1owSkJRMjVDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0blFrRkZlRU1zU1VGQlNTeFRRVUZUTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUTNSQ0xHOUNRVUZCTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRFJpeE5RVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRk5CUVZNc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzWkVMR2xDUVVGQk8wRkJRMFlzWVVGQlFUdEJRVVZFTEZsQlFVRXNTVUZCU1N4TFFVRkxMRXRCUVV3c1NVRkJRU3hKUVVGQkxFdEJRVXNzZFVKQlFVd3NTMEZCU3l4RFFVRkZMRkZCUVZFc1JVRkJSVHRuUWtGRGJrSXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMmRDUVVVeFF5eEpRVUZKTEZOQlFWTXNRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRkRUlzYjBKQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhSUVVGUkxFTkJRVU5GTEZGQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNc1UwRkJVeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYUVVc2FVSkJRVUU3UVVGRFJpeGhRVUZCTzBGQlEwZ3NVMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRTanRCUVVWRU96dEJRVVZITzBsQlEwa3NVMEZCVXl4SFFVRkJPMEZCUTJRc1VVRkJRU3hOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTVHRaUVVONlJDeE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGRkJRVFJDTEVOQlFVTXNRMEZCUXp0WlFVVTFSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTzJkQ1FVTlVMRTlCUVU4N1FVRkRVaXhoUVVGQk8wRkJSVVFzV1VGQlFTeEpRVUZKTEVsQlFVa3NTMEZCU2l4SlFVRkJMRWxCUVVFc1NVRkJTU3gxUWtGQlNpeEpRVUZKTEVOQlFVVXNVVUZCVVN4RlFVRkZPMmRDUVVOc1FpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdRVUZEZUVNc1lVRkJRVHRCUVVWRUxGbEJRVUVzU1VGQlNTeEpRVUZKTEV0QlFVb3NTVUZCUVN4SlFVRkJMRWxCUVVrc2RVSkJRVW9zU1VGQlNTeERRVUZGTEZGQlFWRXNSVUZCUlR0blFrRkRiRUlzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBGQlF6RkRMR0ZCUVVFN1FVRkRTQ3hUUVVGRExFTkJRVU1zUTBGQlF6dExRVU5LTzBGQlJVUTdPenM3UVVGSlJ6dEJRVU5KTEVsQlFVRXNUMEZCVHl4RFFVRkRMRWxCUVhOQ0xFVkJRVUU3TzFGQlEyNURMRTlCUVU4c1EwRkJRU3hGUVVGQkxFZEJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJTU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJRU3hUUVVGVExFTkJRVU03UzBGRE0wTTdRVUZGUkRzN096dEJRVWxITzBGQlEwa3NTVUZCUVN4WFFVRlhMRU5CUVVNc1NVRkJjMElzUlVGQlFUczdRVUZEZGtNc1VVRkJRU3hQUVVGUExFTkJRVUVzUlVGQlFTeEhRVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVVXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVFc1NVRkJTU3hOUVVGSkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGQkxFbEJRVWtzUTBGQlF6dExRVU0xUXp0QlFVTkdPenRCUTNwTVJDeE5RVUZOUml4TlFVRkpMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYWtNc1RVRkJUVVVzVVVGQlRTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8wRkJRM1JETEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlJURkRPenRCUVVWSE8wRkJRMGNzVFVGQlR5eGpRVUZsTEZOQlFWRXNUVUZCVFN4RFFVRkJPMGxCUXpsQ0xFOUJRVThzWjBKQlFXZENMRU5CUVVNc1VVRkJaMElzUlVGQlFUdEJRVTFvUkN4UlFVRkJMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMEZCUTJ4RExGRkJRVUVzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4blFrRkJaMElzUTBGQlF6czdVVUZITjBJc1RVRkJUU3hyUWtGQmEwSXNSMEZCZFVRc1JVRkJSU3hEUVVGRE8xRkJRMnhHTEUxQlFVMHNhMEpCUVd0Q0xFZEJRVEJFTEVWQlFVVXNRMEZCUXp0UlFVTnlSaXhOUVVGTkxHRkJRV0VzUjBGQk1FUXNSVUZCUlN4RFFVRkRPMEZCUldoR0xGRkJRVUVzWjBKQlFXZENMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zVVVGQlVTeExRVUZKTzFsQlEzQkRMRTFCUVUwc1VVRkJVU3hIUVVGSExGRkJRVkVzUTBGQlF5eFhRVUZYTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1FVRkZhRVFzV1VGQlFTeEpRVUZKTEZGQlFWRXNSVUZCUlR0QlFVTmFMR2RDUVVGQkxFMUJRVTBzYVVKQlFXbENMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZET1VNc1owSkJRVUVzVFVGQlRTeHBRa0ZCYVVJc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXp0QlFVVnFSQ3huUWtGQlFTeFJRVUZSTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMmRDUVVONFF5eFJRVUZSTEVOQlFVTXNWMEZCVnl4RFFVRkRMRk5CUVZNc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4cFFrRkJhVUlzUlVGQlJVWXNUVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkZNMFVzWjBKQlFVRXNhMEpCUVd0Q0xFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NhVUpCUVdsQ0xFTkJRVU03UVVGRGFrUXNaMEpCUVVFc2EwSkJRV3RDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWRCUVVjc2FVSkJRV2xDTEVOQlFVTTdaMEpCUTJwRUxHRkJRV0VzUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNc1ZVRkJWU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzBGQlEzWkVMR0ZCUVVFN1FVRkRTQ3hUUVVGRExFTkJRVU1zUTBGQlF6czdVVUZIU0N4TlFVRk5MRzlDUVVGdlFpeEhRVUV3UkN4RlFVRkZMRU5CUVVNN1VVRkZka1lzVFVGQlRTeFJRVUZSTEVkQlFUSkNMRVZCUVVVc1EwRkJRenRCUVVNMVF5eFJRVUZCTEdkQ1FVRm5RaXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEZGQlFWRXNTMEZCU1RzN1dVRkRjRU1zVFVGQlRTeFJRVUZSTEVkQlFVY3NVVUZCVVN4RFFVRkRMRmRCUVZjc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVVZvUkN4WlFVRkJMRWxCUVVrc1VVRkJVU3hGUVVGRk8wRkJRMW9zWjBKQlFVRXNUVUZCVFN4cFFrRkJhVUlzUjBGQlJ5eHJRa0ZCYTBJc1EwRkJReXhSUVVGUkxFTkJRV3RDTEVOQlFVTTdPMmRDUVVkNFJTeEpRVUZKTEdWQlFXVXNSMEZCTkVJc1VVRkJVU3hEUVVGRE8wRkJRM2hFTEdkQ1FVRkJMRWxCUVVrc2JVSkJRVGhETEVOQlFVTTdRVUZEYmtRc1owSkJRVUVzU1VGQlNTeHRRa0ZCYVVRc1EwRkJRenRuUWtGRGRFUXNUMEZCVHl4dFFrRkJiVUlzU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZEYkVNc2IwSkJRVUVzWlVGQlpTeEhRVUZITEhGQ1FVRnhRaXhEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETzI5Q1FVTjZSQ3hKUVVGSkxHVkJRV1VzU1VGQlNTeEpRVUZKTEVWQlFVVTdkMEpCUXpOQ0xFMUJRVTA3UVVGRFVDeHhRa0ZCUVR0QlFVTkVMRzlDUVVGQkxHMUNRVUZ0UWl4SFFVRkhMR3RDUVVGclFpeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRPMEZCUXpGRUxHOUNRVUZCTEcxQ1FVRnRRaXhIUVVGSExHdENRVUZyUWl4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8wRkJRek5FTEdsQ1FVRkJPenRCUVVkRUxHZENRVUZCTEUxQlFVMHNWMEZCVnl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzJkQ1FVTjZReXhYUVVGWExFTkJRVU1zU1VGQlNTeEhRVUZITEdGQlFXRXNSMEZCUnl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRE8wRkJSV3BFTEdkQ1FVRkJMRTFCUVUwc2FVSkJRV2xDTEVsQlFVa3NaVUZCWlN4SFFVRkhMRU5CUVVFc1JVRkJRU3hIUVVGQkxGRkJRVkVzUTBGQlF5eGxRVUZsTEVOQlFVTXNNRU5CUVVVc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQmJVSXNRMEZCUXp0QlFVVjJSeXhuUWtGQlFTeHBRa0ZCYVVJc1EwRkJReXhIUVVGSExFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdRVUZEYmtNc1owSkJRVUVzVjBGQlZ5eERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXp0QlFVTTNReXhuUWtGQlFTeEpRVUZKTEcxQ1FVRnRRaXhGUVVGRk8wRkJRM1pDTEc5Q1FVRkJMRmRCUVZjc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEcxQ1FVRnRRaXhEUVVGRExFTkJRVU03UVVGREwwTXNhVUpCUVVFN1owSkJSVVFzVVVGQlVTeERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRVZCUVVVc1NVRkJTU3hGUVVGRkxGZEJRVmNzUlVGQlJTeERRVUZET3p0QlFVY3pReXhuUWtGQlFTeHZRa0ZCYjBJc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eHRRa0ZCYlVJc1MwRkJia0lzU1VGQlFTeEpRVUZCTEcxQ1FVRnRRaXhMUVVGdVFpeExRVUZCTEVOQlFVRXNSMEZCUVN4dFFrRkJiVUlzUjBGQlNTeEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRCUVVOb1JpeGhRVUZCTzBGQlEwZ3NVMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZTQ3hQUVVGUE8wRkJRMHdzV1VGQlFTeFJRVUZSTEVWQlFVVXNVVUZCZVVJN1dVRkRia01zU1VGQlNUdFpRVU5LTEc5Q1FVRnZRanRaUVVOd1FpeGhRVUZoTzFOQlEyUXNRMEZCUXp0TFFVTklPMEZCVDBRc1NVRkJRU3hYUVVGQkxFTkJRVzFDTEZGQlFXZENMRVZCUVVFN1FVRkRha01zVVVGQlFTeE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRWxCUVVrc1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN4aFFVRmhMRVZCUVVVc1IwRkJSeXhqUVVGakxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRk1VY3NTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJSV2hDTEZGQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhSUVVGUkxFTkJRVU03UVVGRGVrSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dEJRVU5xUWl4UlFVRkJMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNSMEZCUnl4dlFrRkJiMElzUTBGQlF6dEJRVU5zUkN4UlFVRkJMRWxCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzWVVGQllTeERRVUZETzB0QlEzSkRPMEZCUlVRN08wRkJSVWM3U1VGRFNTeE5RVUZOTEVkQlFVRTdRVUZEV0N4UlFVRkJMR2RDUVVGblFpeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRkZCUVZFc1MwRkJTVHRaUVVOd1F5eE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0WlFVVnlSQ3hKUVVGSkxGRkJRVkVzU1VGQlNTeEpRVUZKTEVWQlFVVTdaMEpCUTNCQ0xFMUJRVTBzVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1VVRkJVU3hEUVVGRkxFTkJRVU03WjBKQlEyaEVMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEZGQlFWRXNRMEZCUlN4RFFVRkRPMmRDUVVOc1JTeE5RVUZOTEhOQ1FVRnpRaXhIUVVGSFJTeFJRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1owSkJRM3BGTEUxQlFVMHNXVUZCV1N4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zVVVGQlVTeERRVUZGTEVOQlFVTTdRVUZGY0VRc1owSkJRVUVzVVVGQlVTeERRVUZETEZWQlFWVTdRVUZEYUVJc2NVSkJRVUVzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4VlFVRlZMRU5CUVVNN2NVSkJRelZDTEZGQlFWRXNRMEZCUXl4dFFrRkJiVUlzUTBGQlF6dHhRa0ZETjBJc1YwRkJWeXhEUVVGRExITkNRVUZ6UWl4RFFVRkRPM0ZDUVVOdVF5eFJRVUZSTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN08yZENRVWN4UWl4SlFVRkpMRkZCUVZFc1MwRkJTeXhOUVVGTkxFVkJRVVU3YjBKQlEzWkNMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NWMEZCVnl4RFFVRkRMR2RDUVVGblFpeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRPMjlDUVVOMFJTeFJRVUZSTEVOQlFVTXNUVUZCVHl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVOb1JDeHZRa0ZCUVN4TlFVRk5MR2xDUVVGcFFpeEhRVUZITEZGQlFWRXNRMEZCUXl4TlFVRlBMRU5CUVVNc1YwRkJWeXhEUVVGRE8yOUNRVU4yUkN4TlFVRk5MR0ZCUVdFc1IwRkJSeXhwUWtGQmFVSXNRMEZCUXl4WlFVRlpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVOcVJpeHZRa0ZCUVN4UlFVRlJMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0QlFVTjJReXhwUWtGQlFUdEJRVU5HTEdGQlFVRTdRVUZEU0N4VFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOS08wRkJRMFk3TzBGRGNFbEVPenRCUVVWSE8wMUJRMVVzVjBGQlZ5eERRVUZCTzBGQmJVSjBRanM3UVVGRlJ6dEJRVU5JTEVsQlFVRXNTVUZCVnl4UlFVRlJMRWRCUVVFN1FVRkRha0lzVVVGQlFTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRFJHUVVFMFJpeERRVUZETEVOQlFVTTdVVUZGTTBjc1QwRkJUeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETzB0QlEzcENPMEZCUlVRN096dEJRVWRITzBGQlEwZ3NTVUZCUVN4SlFVRlhMRmRCUVZjc1IwRkJRVHRCUVVOd1FpeFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhSUVVGUkxFTkJRVU03UzBGRGNrTTdRVUZGUkRzN08wRkJSMGM3UVVGRFNDeEpRVUZCTEVsQlFWY3NhMEpCUVd0Q0xFZEJRVUU3UVVGRE0wSXNVVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4UlFVRlJMRU5CUVVNN1MwRkROVU03UVVGRlJEczdRVUZGUnp0QlFVTklMRWxCUVVFc1NVRkJWeXhWUVVGVkxFZEJRVUU3TzBGQlJXNUNMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEZWQlFWVXNRMEZCUXp0TFFVTjJRenRCUVVWRU96dEJRVVZITzBGQlEwZ3NTVUZCUVN4SlFVRlhMR0ZCUVdFc1IwRkJRVHRCUVVOMFFpeFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhWUVVGVkxFTkJRVU03UzBGRGRrTTdRVUZGUkRzN1FVRkZSenRCUVVOSUxFbEJRVUVzU1VGQlZ5eHZRa0ZCYjBJc1IwRkJRVHRCUVVNM1FpeFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEZWQlFWVXNRMEZCUXp0TFFVTTVRenRCUVVWRU96dEJRVVZITzBGQlEwZ3NTVUZCUVN4SlFVRlhMSGRDUVVGM1FpeEhRVUZCTzBGQlEycERMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1NVRkJTU3hEUVVGRE8wdEJRM2hETzBGQlJVUTdPenM3UVVGSlJ6dEpRVU5JTEZkQlFXMUNMRU5CUVVFc1ZVRkJlVUlzUlVGQlJTeFBRVUUwUXl4RlFVRkJPenRCUVVONFJpeFJRVUZCTEVsQlFVa3NRMEZCUXl4dlFrRkJiMElzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4UFFVRlBMRXRCUVVFc1NVRkJRU3hKUVVGUUxFOUJRVThzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJVQ3hQUVVGUExFTkJRVVVzYjBKQlFXOUNMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVrc1NVRkJTU3hEUVVGRE8xRkJRMnhGTEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1NVRkJTU3hOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdVVUZETjBNc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4SFFVRkhMRWxCUVVrc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXp0TFFVTjBSVHRCUVVWRU96czdPMEZCU1VjN1FVRkRTU3hKUVVGQkxFbEJRVWtzUTBGQlF5eE5RVUZ0UWl4RlFVRkJPMEZCUXpkQ0xGRkJRVUVzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhIUVVGSExFMUJRVTBzUTBGQlF5eHZRa0ZCYjBJc1EwRkJRenRSUVVONFJDeEpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRWxCUVVrc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0UlFVTndSQ3hKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRWRCUVVjc1NVRkJTU3hqUVVGakxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4RFFVRkRPMEZCUlhKRkxGRkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTTdTMEZEWWp0QlFVVkVPenM3UVVGSFJ6dEpRVU5KTEV0QlFVc3NSMEZCUVR0UlFVTldMRTlCUVU4c1NVRkJTU3hYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlN4RlFVRkZMRzlDUVVGdlFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4dlFrRkJiMElzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRM3BITzBGQlJVUTdPMEZCUlVjN1NVRkRTU3hsUVVGbExFZEJRVUU3UVVGRGNFSXNVVUZCUVN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVOV0xIVklRVUYxU0N4RFFVTjRTQ3hEUVVGRE8wRkJSVVlzVVVGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUlVGQlJTeERRVUZETzB0QlEyeERPMEZCUlVRN096czdRVUZKUnp0SlFVTkpMR3RDUVVGclFpeEhRVUZCTzBGQlEzWkNMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEdWQlFXVXNSVUZCUlN4RFFVRkRPMHRCUXpsRE8wRkJSVVE3T3pzN1FVRkpSenRKUVVOSkxIbENRVUY1UWl4SFFVRkJPMEZCUXpsQ0xGRkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zWlVGQlpTeEZRVUZGTEVOQlFVTTdTMEZEY2tRN1FVRkZSRHM3UVVGRlJ6dEpRVU5KTEU5QlFVOHNSMEZCUVR0QlFVTmFMRkZCUVVFc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5d3JSa0ZCSzBZc1EwRkJReXhEUVVGRE8wRkJSVGxITEZGQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03UzBGRE1VSTdRVUZGUkRzN096dEJRVWxITzBsQlEwa3NWVUZCVlN4SFFVRkJPMEZCUTJZc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1MwRkRkRU03UVVGRlJEczdPenRCUVVsSE8wbEJRMGtzYVVKQlFXbENMRWRCUVVFN1FVRkRkRUlzVVVGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0TFFVTTNRenRCUVVWRU96dEJRVVZITzBGQlEwa3NTVUZCUVN4UFFVRlBMRU5CUVVNc1ZVRkJiVUlzUlVGQlFUdEJRVU5vUXl4UlFVRkJMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zSzBaQlFTdEdMRU5CUVVNc1EwRkJRenRCUVVVNVJ5eFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dExRVU53UXp0QlFVVkVPenM3T3pzN096czdRVUZUUnp0QlFVTkpMRWxCUVVFc1ZVRkJWU3hEUVVGRExGVkJRVzFDTEVWQlFVRTdVVUZEYmtNc1QwRkJUeXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRMUVVOb1JEdEJRVVZFT3pzN096czdPMEZCVDBjN1FVRkRTU3hKUVVGQkxHbENRVUZwUWl4RFFVRkRMRlZCUVcxQ0xFVkJRVUU3VVVGRE1VTXNUMEZCVHl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wdEJRM1pFTzBGQlJVUTdPMEZCUlVjN1NVRkRTU3hUUVVGVExFZEJRVUU3UVVGRFpDeFJRVUZCTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc2NVZEJRWEZITEVOQlFVTXNRMEZCUXp0QlFVVndTQ3hSUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlN4RFFVRkRPMHRCUXpWQ08wRkJSVVE3T3pzN1FVRkpSenRKUVVOSkxGbEJRVmtzUjBGQlFUdEJRVU5xUWl4UlFVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0TFFVTjRRenRCUVVWRU96dEJRVVZITzBsQlEwa3NiVUpCUVcxQ0xFZEJRVUU3UVVGRGVFSXNVVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRMUVVNdlF6dEJRVVZFT3p0QlFVVkhPMEZCUTBrc1NVRkJRU3hQUVVGUExFTkJRVU1zU1VGQmMwSXNSVUZCUVR0QlFVTnVReXhSUVVGQkxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNLMFpCUVN0R0xFTkJRVU1zUTBGQlF6dEJRVVU1Unl4UlFVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTTVRanRCUVVWRU96czdPMEZCU1VjN1FVRkRTU3hKUVVGQkxGVkJRVlVzUTBGQlF5eEpRVUZ6UWl4RlFVRkJPMUZCUTNSRExFOUJRVThzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRE1VTTdRVUZGUkRzN096dEJRVWxITzBGQlEwa3NTVUZCUVN4cFFrRkJhVUlzUTBGQlF5eEpRVUZ6UWl4RlFVRkJPMUZCUXpkRExFOUJRVThzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTnFSRHRCUVVWRU96dEJRVVZITzBGQlEwa3NTVUZCUVN4WFFVRlhMRU5CUVVNc1NVRkJjMElzUlVGQlFUdEJRVU4yUXl4UlFVRkJMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRMVlzTWtkQlFUSkhMRU5CUXpWSExFTkJRVU03UVVGRlJpeFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU5zUXp0QlFVVkVPenM3TzBGQlNVYzdRVUZEU1N4SlFVRkJMR05CUVdNc1EwRkJReXhKUVVGelFpeEZRVUZCTzFGQlF6RkRMRTlCUVU4c1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRPVU03UVVGRlJEczdPenRCUVVsSE8wRkJRMGtzU1VGQlFTeHhRa0ZCY1VJc1EwRkJReXhKUVVGelFpeEZRVUZCTzFGQlEycEVMRTlCUVU4c1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU55UkR0QlFVVkVPenM3TzBGQlNVYzdTVUZEU1N4TlFVRk5MRWRCUVVFN1VVRkRXQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1JVRkJSVHRCUVVNM1FpeFpRVUZCTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXp0QlFVTnlReXhUUVVGQk8wdEJRMFk3UVVGRFJqczdRVU14VTBRN1FVRkZZU3hOUVVGQkxIZENRVUYzUWl4SFFVRkhPMEZCUTNSRExFbEJRVUVzU1VGQlNTeEZRVUZGTEUxQlFVMDdRVUZEV2l4SlFVRkJMRXRCUVVzc1JVRkJSU3hQUVVGUE8wRkJRMlFzU1VGQlFTeEpRVUZKTEVWQlFVVXNUVUZCVFR0QlFVTmFMRWxCUVVFc1dVRkJXU3hGUVVGRkxHTkJRV003UVVGRE5VSXNTVUZCUVN4WlFVRlpMRVZCUVVVc1kwRkJZenRCUVVNMVFpeEpRVUZCTEZGQlFWRXNSVUZCUlN4VlFVRlZPMEZCUTNCQ0xFbEJRVUVzWVVGQllTeEZRVUZGTEdWQlFXVTdRVUZET1VJc1NVRkJRU3hoUVVGaExFVkJRVVVzWlVGQlpUdEJRVU01UWl4SlFVRkJMRk5CUVZNc1JVRkJSU3hYUVVGWE8wRkJRM1JDTEVsQlFVRXNXVUZCV1N4RlFVRkZMR05CUVdNN1FVRkROVUlzU1VGQlFTeFpRVUZaTEVWQlFVVXNZMEZCWXp0QlFVTTFRaXhKUVVGQkxGRkJRVkVzUlVGQlJTeFZRVUZWTzBGQlEzQkNMRWxCUVVFc1lVRkJZU3hGUVVGRkxHVkJRV1U3UVVGRE9VSXNTVUZCUVN4aFFVRmhMRVZCUVVVc1pVRkJaVHRCUVVNNVFpeEpRVUZCTEZOQlFWTXNSVUZCUlN4WFFVRlhPenM3UVVOUWVFSTdPMEZCUlVjN1FVRkRTQ3hOUVVGTlNDeDNRa0ZCYzBJc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJSVFZFT3p0QlFVVkhPMEZCUTBnc1RVRkJUU3huUWtGQlowSXNSMEZCY1VVN1FVRkRla1lzU1VGQlFTeHBRa0ZCYVVJc1JVRkJSU3h4UWtGQmNVSTdRVUZEZUVNc1NVRkJRU3h4UWtGQmNVSXNSVUZCUlN4dFFrRkJiVUk3UVVGRE1VTXNTVUZCUVN4clFrRkJhMElzUlVGQlJTeHpRa0ZCYzBJN1FVRkRNVU1zU1VGQlFTeHpRa0ZCYzBJc1JVRkJSU3h2UWtGQmIwSTdRMEZETjBNc1EwRkJRenRCUVVWR096dEJRVVZITzAxQlExVXNkVUpCUVhWQ0xFTkJRVUU3UVVGWmJFTXNTVUZCUVN4SlFVRlhMRWxCUVVrc1IwRkJRVHM3UVVGRllpeFJRVUZCTEU5QlFVOHNlVUpCUVhsQ0xFTkJRVU03UzBGRGJFTTdTVUZGUkN4WFFVRnRRaXhEUVVGQkxFMUJRV3RDTEVWQlFVVXNUMEZCZDBNc1JVRkJRVHRCUVVNM1JTeFJRVUZCTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJSWEpDTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1QwRkJUeXhMUVVGQkxFbEJRVUVzU1VGQlVDeFBRVUZQTEV0QlFWQXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzVDBGQlR5eERRVUZGTEZWQlFWVXNRMEZCUXp0UlFVTjBReXhKUVVGSkxFTkJRVU1zYjBKQlFXOUNMRWRCUVVjc1QwRkJUeXhMUVVGQkxFbEJRVUVzU1VGQlVDeFBRVUZQTEV0QlFWQXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzVDBGQlR5eERRVUZGTEc5Q1FVRnZRaXhEUVVGRE8wdEJRek5FTzBGQlJWa3NTVUZCUVN4VFFVRlRMRU5CUVVNc1NVRkJWU3hGUVVGQk96dEJRVU12UWl4WlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVjBGQlZ5eEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFRRVU4wUkN4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVGQk8wRkJSVVE3T3pzN1FVRkpSenRCUVVOWExFbEJRVUVzVDBGQlR5eERRVUZETEVsQlFWVXNSVUZCUVRzN1dVRkRPVUlzVFVGQlRTeFJRVUZSTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlF6VkRMRmxCUVVFc1NVRkJTU3hSUVVGUkxFVkJRVVU3UVVGRFdpeG5Ra0ZCUVN4UFFVRlBMRkZCUVZFc1EwRkJRenRCUVVOcVFpeGhRVUZCTzFsQlJVUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUXpWRExGbEJRVUVzU1VGQlNTeFJRVUZSTEVWQlFVVTdRVUZEV2l4blFrRkJRU3hQUVVGUExGRkJRVkVzUTBGQlF6dEJRVU5xUWl4aFFVRkJPMEZCUlVRc1dVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dFRRVU5pTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUVVFN1FVRkZZU3hKUVVGQkxGTkJRVk1zUTBGQlF5eEpRVUZWTEVWQlFVRTdPenRCUVVOb1F5eFpRVUZCTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQmQwSXNRMEZCUXpzN1FVRkhiRVFzV1VGQlFTeE5RVUZOTEZOQlFWTXNSMEZCUnl4RFFVRkJMRU5CUVVFc1JVRkJRU3hIUVVGQkxFbEJRVWtzUTBGQlF5eGpRVUZqTEUxQlFVVXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVFc1QwRkJUeXhEUVVGRExGVkJRVlVzUTBGQlF5eE5RVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTJ4RkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVWQlFVVTdRVUZEWkN4blFrRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5pTEdGQlFVRTdXVUZGUkN4TlFVRk5MRk5CUVZNc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZKTEVOQlFVTXNWVUZCVlN4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGSExGVkJRVlVzUTBGQmIwTXNRMEZCUXp0WlFVTnVSaXhKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTzBGQlEyUXNaMEpCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFlpeGhRVUZCTzBGQlJVUXNXVUZCUVN4TlFVRk5MRmRCUVZjc1IwRkJSeXhUUVVGVExFTkJRVU1zVjBGQlZ5eERRVUZETzBGQlF6RkRMRmxCUVVFc1NVRkJTU3hEUVVGRFFTeDNRa0ZCYzBJc1EwRkJReXhIUVVGSExFTkJRVU1zVjBGQlZ5eERRVUZETEVWQlFVVTdRVUZETlVNc1owSkJRVUVzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl3d1JFRkJNRVFzVjBGQlZ5eERRVUZCTEVOQlFVRXNRMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRka1lzWjBKQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRZaXhoUVVGQk8wRkJSVVFzV1VGQlFTeE5RVUZOTEdOQlFXTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1VVRkJVU3hEUVVGRE8xbEJRekZETEVsQlFVa3NRMEZCUXl4alFVRmpMRVZCUVVVN1FVRkRia0lzWjBKQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRZaXhoUVVGQk8wRkJSVVE3T3pzN1FVRkpSenRaUVVOSUxFMUJRVTBzZFVKQlFYVkNMRWRCUXpGQ0xHTkJRV01zUTBGQlF5eFZRVUZyUWl4RFFVRkRMSEZDUVVGeFFpeEpRVUZKTEVsQlFVazdRVUZETDBRc1owSkJRVUVzWTBGQll5eERRVUZETEZWQlFXdENMRU5CUVVNc2MwSkJRWE5DTEVsQlFVa3NTVUZCU1N4RFFVRkRPMWxCUlhCRkxFMUJRVTBzVlVGQlZTeEhRVUV5UWl4RlFVRkZMRU5CUVVNN1FVRkRPVU1zV1VGQlFTeEpRVUZKTEdOQlFXTXNRMEZCUXl4VlFVRlZMRWxCUVVrc1NVRkJTU3hGUVVGRk8yZENRVU55UXl4TlFVRk5MRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRMllzVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4alFVRmpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVOHNRMEZCUXl4alFVRmpMRVZCUVVVc1pVRkJaU3hEUVVGRExFdEJRVWtzVTBGQlFTeERRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRU5CUVVFc1JVRkJRU3hMUVVGQkxFTkJRVUVzUlVGQlFTeGhRVUZCTzI5Q1FVTjRSaXhKUVVGSkxGRkJRVkVzUjBGQlJ5eGpRVUZ0UkN4RFFVRkRPMEZCUTI1RkxHOUNRVUZCTEUxQlFVMHNTMEZCU3l4SFFVRkhMR1ZCUVdVc1EwRkJReXhKUVVGSkxFTkJRVU03TzBGQlIyNURMRzlDUVVGQkxFbEJRVWtzZFVKQlFYVkNMRVZCUVVVN1FVRkRNMElzZDBKQlFVRXNUVUZCVFN4aFFVRmhMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN2QwSkJRMnBFTEVsQlFVa3NZVUZCWVN4SlFVRkpMRWxCUVVrc1JVRkJSVHMwUWtGRGVrSXNVVUZCVVN4SFFVRkhMR0ZCUVdFc1EwRkJRenRCUVVNeFFpeDVRa0ZCUVR0QlFVTkdMSEZDUVVGQk8wRkJSVVFzYjBKQlFVRXNUVUZCVFN4SlFVRkpMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03TzI5Q1FVYzFSQ3hKUVVGSkxFbEJRVWtzU1VGQlNTeEpRVUZKTEVWQlFVVTdkMEpCUTJoQ0xFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUVN4MVEwRkJRU3hGUVVFd1F5eFJRVUZSTEVOQlFXRXNWVUZCUVN4RlFVRkJMRXRCUVVzc1EwRkJhMElzWjBKQlFVRXNRMEZCUVN4RFFVRkRMRU5CUVVNN2QwSkJRM0pITEU5QlFVODdRVUZEVWl4eFFrRkJRVHM3UVVGSFJDeHZRa0ZCUVN4VlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUlVGQlJTeEpRVUZKTEVWQlFVVXNRMEZCUXp0cFFrRkRha01zUTBGQlFTeERRVUZETEVOQlEwZ3NRMEZCUXp0QlFVTklMR0ZCUVVFN1dVRkZSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc2VVSkJRWGxDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVN1owSkJRek5GTEc5Q1FVRnZRaXhGUVVGRkxFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJN1FVRkRhRVFzWVVGQlFTeERRVUZETEVOQlFVTTdXVUZEU0N4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVOQlFVTXNkMEpCUVhkQ0xFTkJRVU1zUTBGQlF6dFpRVVZzUkN4SlFVRkpMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVU3UVVGRGJrSXNaMEpCUVVFc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeHBRa0ZCYVVJc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVU12UXl4blFrRkJRU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRuUWtGRE5VSXNUVUZCVFN4RFFVRkRMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEZkQlFWY3NRMEZCUXp0QlFVTnNSQ3hoUVVGQk8wRkJSVVFzV1VGQlFTeFBRVUZQTEZGQlFWRXNRMEZCUXpzN1FVRkRha0lzUzBGQlFUdEJRVVZoTEVsQlFVRXNVMEZCVXl4RFFVRkRMRWxCUVZVc1JVRkJRVHM3TzBGQlEyaERMRmxCUVVFc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRjNRaXhEUVVGRE8xbEJSV3hFTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVFc1JVRkJRU3hIUVVGQkxFbEJRVWtzUTBGQlF5eFZRVUZWTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVVc1IwRkJORUlzUTBGQlF6dFpRVU0zUkN4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRMWdzWjBKQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRZaXhoUVVGQk8wRkJSVVFzV1VGQlFTeE5RVUZOTEdOQlFXTXNSMEZCSzBJc1RVRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF6dFpRVU51UlN4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRk8wRkJRMjVDTEdkQ1FVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMklzWVVGQlFUdFpRVVZFTEUxQlFVMHNWVUZCVlN4SFFVRXlRaXhGUVVGRkxFTkJRVU03UVVGRE9VTXNXVUZCUVN4SlFVRkpMR05CUVdNc1EwRkJReXhWUVVGVkxFbEJRVWtzU1VGQlNTeEZRVUZGTzBGQlEzSkRMR2RDUVVGQkxFMUJRVTBzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZEWml4alFVRmpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZQTEVsQlFVa3NTMEZCU1N4VFFVRkJMRU5CUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUTBGQlFTeEZRVUZCTEV0QlFVRXNRMEZCUVN4RlFVRkJMR0ZCUVVFN1FVRkRNME1zYjBKQlFVRXNUVUZCVFN4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF6dEJRVU16UWl4dlFrRkJRU3hOUVVGTkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMEZCUlhoQ0xHOUNRVUZCTEVsQlFVa3NVVUZCVVN4SlFVRkpMRWxCUVVrc1NVRkJTU3hMUVVGTExFbEJRVWtzU1VGQlNTeEZRVUZGTzNkQ1FVTnlReXhQUVVGUE8wRkJRMUlzY1VKQlFVRTdRVUZGUkN4dlFrRkJRU3hOUVVGTkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1lVRkJZU3hEUVVGRExFMUJRVTBzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXpzN2IwSkJSelZFTEVsQlFVa3NTVUZCU1N4SlFVRkpMRWxCUVVrc1JVRkJSVHQzUWtGRGFFSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGQkxIVkRRVUZCTEVWQlFUQkRMRkZCUVZFc1EwRkJZU3hWUVVGQkxFVkJRVUVzUzBGQlN5eERRVUZyUWl4blFrRkJRU3hEUVVGQkxFTkJRVU1zUTBGQlF6dDNRa0ZEY2tjc1QwRkJUenRCUVVOU0xIRkNRVUZCT3p0QlFVZEVMRzlDUVVGQkxFMUJRVTBzWVVGQllTeEhRVUZITEdkQ1FVRm5RaXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzI5Q1FVTnFSQ3hOUVVGTkxGZEJRVmNzU1VGQlNTeGhRVUZoTEV0QlFVRXNTVUZCUVN4SlFVRmlMR0ZCUVdFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQllpeGhRVUZoTEVkQlFVa3NVVUZCVVN4RFFVRnpReXhEUVVGRE96czdRVUZKY2tZc2IwSkJRVUVzU1VGQlNTeFZRVUZWTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1NVRkJTU3hGUVVGRk8zZENRVU51UXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVOV0xFTkJRVUVzTUVKQlFVRXNSVUZCTmtJc1YwRkJWeXhEUVVGelFpeHRRa0ZCUVN4RlFVRkJMRXRCUVVzc1EwRkJhVU1zSzBKQlFVRXNRMEZCUVN4RFFVTnlSeXhEUVVGRE8zZENRVU5HTEU5QlFVODdRVUZEVWl4eFFrRkJRVHM3UVVGSFJDeHZRa0ZCUVN4VlFVRlZMRU5CUVVNc1YwRkJWeXhEUVVGRExFZEJRVWNzUlVGQlJTeEpRVUZKTEVWQlFVVXNRMEZCUXp0cFFrRkRjRU1zUTBGQlFTeERRVUZETEVOQlEwZ3NRMEZCUXp0QlFVTklMR0ZCUVVFN1dVRkZSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc2VVSkJRWGxDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVN1owSkJRek5GTEc5Q1FVRnZRaXhGUVVGRkxFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJN1FVRkRhRVFzWVVGQlFTeERRVUZETEVOQlFVTTdXVUZEU0N4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVOQlFVTXNkMEpCUVhkQ0xFTkJRVU1zUTBGQlF6dFpRVVZzUkN4SlFVRkpMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVU3UVVGRGJrSXNaMEpCUVVFc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeHBRa0ZCYVVJc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVU12UXl4blFrRkJRU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRuUWtGRE5VSXNUVUZCVFN4RFFVRkRMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEZkQlFWY3NRMEZCUXp0QlFVTnNSQ3hoUVVGQk8wRkJSVVFzV1VGQlFTeFBRVUZQTEZGQlFWRXNRMEZCUXpzN1FVRkRha0lzUzBGQlFUdEJRVVZFT3pzN08wRkJTVWM3UVVGRFN5eEpRVUZCTEhsQ1FVRjVRaXhEUVVGRExGVkJRV3RETEVWQlFVRTdPMUZCUld4RkxFMUJRVTBzYjBKQlFXOUNMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eDNRa0ZCZDBJc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGRGVrVXNRMEZCUXl4blFrRkJaMElzUzBGQlN5eFZRVUZWTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlF6TkVMRU5CUVVNN08wRkJSMFlzVVVGQlFTeEpRVUZKTEc5Q1FVRnZRaXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdRVUZEYmtNc1dVRkJRU3hOUVVGTkxFbEJRVWtzUzBGQlN5eERRVU5pTEVOQlFVRXNNRVZCUVVFc1JVRkJOa1VzYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZGTEVOQlFVRXNRMEZETDBjc1EwRkJRenRCUVVOSUxGTkJRVUU3UVVGRlJDeFJRVUZCTEU5QlFVOHNWVUZCTWtJc1EwRkJRenRMUVVOd1F6dEJRVU5HT3p0QlF6TlBXU3hOUVVGQkxHbENRVUZyUWl4VFFVRlJMRXRCUVVzc1EwRkJReXhqUVVGakxFTkJRVUU3UVVGUmVrUXNTVUZCUVN4WFFVRkJMRWRCUVVFN1FVRkRSU3hSUVVGQkxFdEJRVXNzUlVGQlJTeERRVUZETzFGQlRrWXNTVUZCWVN4RFFVRkJMR0ZCUVVFc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGJFSXNTVUZCWXl4RFFVRkJMR05CUVVFc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGUGVrSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExFZEJRVWNzUTBGQlF6dEJRVU5xUWl4UlFVRkJMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUjBGQlJ5eERRVUZETzBGQlEyeENMRkZCUVVFc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZEZWtJc1VVRkJRU3hKUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEVkQlFVY3NRMEZCUXp0QlFVVXhRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1pVRkJaU3hEUVVGRExFbEJRVWtzV1VGQldTeERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUlN4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExGVkJRVlVzUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1FVRkZOME1zVVVGQlFTeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExHVkJRV1VzUTBGQlF5eEpRVUZKTEZkQlFWY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZUVVc1VVRkJRU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRSUVVVdlFpeEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNN1VVRkRia0lzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMHRCUTJZN1NVRkZUU3hOUVVGTkxFZEJRVUU3VVVGRFdDeEpRVUZKTEc5Q1FVRnZRaXhIUVVGSExFdEJRVXNzUTBGQlF6dEJRVVZxUXl4UlFVRkJMRWxCUVVrc1NVRkJTU3hEUVVGRExHRkJRV0VzUzBGQlN5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZPMEZCUTNKRExGbEJRVUVzU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8xbEJRMmhETEc5Q1FVRnZRaXhIUVVGSExFbEJRVWtzUTBGQlF6dEJRVU0zUWl4VFFVRkJPMEZCUlVRc1VVRkJRU3hKUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEV0QlFVc3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSVHRCUVVOMlF5eFpRVUZCTEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dFpRVU5zUXl4dlFrRkJiMElzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZETjBJc1UwRkJRVHRCUVVWRUxGRkJRVUVzU1VGQlNTeHZRa0ZCYjBJc1JVRkJSVHRaUVVONFFpeEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNN1FVRkRka0lzVTBGQlFUdExRVU5HTzBsQlJVOHNZMEZCWXl4SFFVRkJPMEZCUTNCQ0xGRkJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkZka01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTXpRaXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF6dEJRVVV4UXl4WlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeEpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjRSeXhUUVVGQk8wRkJSVVFzVVVGQlFTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03UzBGRGJFTTdTVUZGVHl4WFFVRlhMRWRCUVVFN1VVRkRha0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTXpRaXhaUVVGQkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEyaEVMRk5CUVVFN1FVRkZSQ3hSUVVGQkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenRMUVVOd1F6dEJRVU5HT3p0QlF5OUVXU3hOUVVGQkxESkNRVUUwUWl4VFFVRlJMRXRCUVVzc1EwRkJReXhqUVVGakxFTkJRVUU3UVVGUmJrVXNTVUZCUVN4WFFVRkJMRWRCUVVFN1FVRkRSU3hSUVVGQkxFdEJRVXNzUlVGQlJTeERRVUZETzBGQlJWSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF6dEJRVU5zUWl4UlFVRkJMRWxCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzUjBGQlJ5eERRVUZETzFGQlJURkNMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1VVRkRhRU1zU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVVY0UXl4UlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNCRkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNWVUZCVlN4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVVUzUXl4UlFVRkJMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1YwRkJWeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNKRkxGRkJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03VVVGRkwwSXNTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRE8xRkJRMjVDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRMUVVObU8wbEJSVTBzVFVGQlRTeEhRVUZCTzFGQlExZ3NTVUZCU1N4dlFrRkJiMElzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZGYWtNc1VVRkJRU3hKUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEV0QlFVc3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSVHRCUVVOMlF5eFpRVUZCTEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dFpRVU5zUXl4dlFrRkJiMElzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZETjBJc1UwRkJRVHRSUVVWRUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVTdXVUZEZUVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRMnhETEc5Q1FVRnZRaXhIUVVGSExFbEJRVWtzUTBGQlF6dEJRVU0zUWl4VFFVRkJPMEZCUlVRc1VVRkJRU3hKUVVGSkxHOUNRVUZ2UWl4RlFVRkZPMWxCUTNoQ0xFbEJRVWtzUTBGQlF5eGpRVUZqTEVWQlFVVXNRMEZCUXp0QlFVTjJRaXhUUVVGQk8wdEJRMFk3U1VGRlR5eGpRVUZqTEVkQlFVRTdVVUZEY0VJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU16UWl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVsQlFVa3NTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJRenRaUVVVdlFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRM1pFTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4RlFVRkZMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6VkVMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpkRUxGTkJRVUU3UVVGRlJDeFJRVUZCTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF6dFJRVU14UlN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRk9VVXNVVUZCUVN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5zUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVVjRSaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenRMUVVOc1F6dEpRVVZQTEZkQlFWY3NSMEZCUVR0UlFVTnFRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlF6TkNMRTFCUVUwc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN1FVRkZlRUlzV1VGQlFTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVOd1F5eFpRVUZCTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTI1RUxGbEJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEY2tRc1UwRkJRVHRSUVVORUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZGYmtNc1VVRkJRU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNN1MwRkRjRU03UVVGRFJqczdRVU40UlVRc1RVRkJUVWNzVVVGQlRTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8wRkJRM1JETEUxQlFVMURMRkZCUVUwc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXp0QlFVTjBReXhOUVVGTlNDeE5RVUZKTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRGFrTXNUVUZCVFVNc1RVRkJTU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMEZCUldwRExFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzBGQlF6TkRMRTFCUVUwc1dVRkJXU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zWVVGQllTeEZRVUZGTEdGQlFXRXNRMEZCUXl4RFFVRkRPMEZCUXk5RkxFMUJRVTBzWlVGQlpTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUlRWRExFMUJRVUVzWlVGQlowSXNVMEZCVVN4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGQk8wRkJUVGxETEVsQlFVRXNWMEZCUVN4RFFVRnRRaXhOUVVGcFFpeEZRVUZCTzBGQlEyeERMRkZCUVVFc1MwRkJTeXhGUVVGRkxFTkJRVU03UVVGRFVpeFJRVUZCTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZGT1VJc1VVRkJRU3hKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEUxQlFVMHNRMEZCUXp0QlFVVjRRaXhSUVVGQk8wRkJRMFVzV1VGQlFTeE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRkpMR2xDUVVGcFFpeEZRVUZGTEVOQlFVTTdRVUZEZWtNc1dVRkJRU3hSUVVGUkxFTkJRVU1zVFVGQlRTeEhRVUZITEVkQlFVY3NRMEZCUXp0QlFVVjBRaXhaUVVGQkxFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMR2xDUVVGcFFpeERRVUZETzBGQlF6TkRMR2RDUVVGQkxFdEJRVXNzUlVGQlJTeFJRVUZSTzBGQlEyWXNaMEpCUVVFc1YwRkJWeXhGUVVGRkxFbEJRVWs3UVVGRGFrSXNaMEpCUVVFc1QwRkJUeXhGUVVGRkxFZEJRVWM3WjBKQlExb3NTVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhWUVVGVk8wRkJRM1JDTEdkQ1FVRkJMRk5CUVZNc1JVRkJSU3hMUVVGTE8wRkJRMmhDTEdkQ1FVRkJMRlZCUVZVc1JVRkJSU3hMUVVGTE8wRkJRMnhDTEdGQlFVRXNRMEZCUXl4RFFVRkRPMEZCUlVnc1dVRkJRU3hKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdRVUZEY2tRc1dVRkJRU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRCUVVNelFpeFRRVUZCTzBGQlJVUXNVVUZCUVR0QlFVTkZMRmxCUVVFc1RVRkJUU3hSUVVGUkxFZEJRVWNzU1VGQlNTeHBRa0ZCYVVJc1JVRkJSU3hEUVVGRE8wRkJRM3BETEZsQlFVRXNVVUZCVVN4RFFVRkRMRTFCUVUwc1IwRkJSeXhIUVVGSExFTkJRVU03UVVGRmRFSXNXVUZCUVN4TlFVRk5MRkZCUVZFc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eHBRa0ZCYVVJc1EwRkJRenRCUVVNelF5eG5Ra0ZCUVN4TFFVRkxMRVZCUVVVc1VVRkJVVHRCUVVObUxHZENRVUZCTEZkQlFWY3NSVUZCUlN4SlFVRkpPMEZCUTJwQ0xHZENRVUZCTEU5QlFVOHNSVUZCUlN4SFFVRkhPMmRDUVVOYUxFbEJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTXNWVUZCVlR0QlFVTjBRaXhuUWtGQlFTeFRRVUZUTEVWQlFVVXNTMEZCU3p0QlFVTm9RaXhuUWtGQlFTeFZRVUZWTEVWQlFVVXNTMEZCU3p0QlFVTnNRaXhoUVVGQkxFTkJRVU1zUTBGQlF6dEJRVVZJTEZsQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRMjVFTEZsQlFVRXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdRVUZEZWtJc1UwRkJRVHRCUVVWRUxGRkJRVUU3UVVGRFJTeFpRVUZCTEUxQlFVMHNVVUZCVVN4SFFVRkhMRWxCUVVrc01rSkJRVEpDTEVWQlFVVXNRMEZCUXp0QlFVTnVSQ3haUVVGQkxGRkJRVkVzUTBGQlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4RFFVRkRPMEZCUlhSQ0xGbEJRVUVzVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTTdRVUZETTBNc1owSkJRVUVzUzBGQlN5eEZRVUZGTEZGQlFWRTdRVUZEWml4blFrRkJRU3hUUVVGVExFVkJRVVVzUzBGQlN6dEJRVU5vUWl4blFrRkJRU3hWUVVGVkxFVkJRVVVzUzBGQlN6dEJRVU5zUWl4aFFVRkJMRU5CUVVNc1EwRkJRenRCUVVWSUxGbEJRVUVzU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhaUVVGWkxFTkJRVU1zVVVGQlVTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUXpsRUxGbEJRVUVzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4aFFVRmhMRWRCUVVjc1MwRkJTeXhEUVVGRE8wRkJRM1pETEZsQlFVRXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdRVUZETlVJc1UwRkJRVHRMUVVOR08wbEJSVTBzVDBGQlR5eEhRVUZCTzBGQlExb3NVVUZCUVN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnFReXhSUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJSV3BETEZGQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYmtNc1VVRkJRU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEZGQlFWRXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVWdVF5eFJRVUZCTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1VVRkJVU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlEzQkRMRkZCUVVFc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1MwRkRja003UVVGRlRTeEpRVUZCTEdsQ1FVRnBRaXhEUVVGRExFdEJRV01zUlVGQlFUczdRVUZGY2tNc1VVRkJRU3hOUVVGTkxFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXp0UlFVTjZSQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRWRCUVVjc1IwRkJSeXhEUVVGRE8wRkJRMjVETEZGQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdRVUZGYUVNc1VVRkJRU3hOUVVGTkxFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXp0UlFVTTNSQ3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8wRkJRM1pETEZGQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdPMEZCUjJ4RExGRkJRVUVzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4elFrRkJjMElzUTBGQlEwUXNUVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkROVU1zVVVGQlFTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMSGRDUVVGM1FpeERRVUZEUlN4UlFVRk5MRU5CUVVNc1EwRkJRenM3UVVGSGFFUXNVVUZCUVVFc1VVRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMSE5DUVVGelFpeERRVUZEUXl4UlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRE96dFJRVWN2UkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTklMRTFCUVVrc1EwRkJReXhEUVVGRE8xRkJRMnhETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlEwVXNVVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkZkRU1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRFJpeE5RVUZKTEVOQlFVTXNRMEZCUXp0UlFVTndReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVORkxGRkJRVTBzUTBGQlF5eERRVUZETzBGQlEzaERMRkZCUVVFc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFZRVUZWTEVOQlFVTXNVVUZCVVN4RFFVRkRReXhSUVVGTkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1pVRkJaU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYmtZc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFZRVUZWTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE96dFJRVWRzUkN4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRkxGVkJRVlVzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN1FVRkRPVU1zVVVGQlFTeEpRVUZKTEUxQlFVMHNTVUZCU1N4SlFVRkpMRWxCUVVrc1ZVRkJWU3hGUVVGRk8xbEJRMmhETEUxQlFVMHNRMEZCUXl4blFrRkJaMElzUTBGQlEwWXNUVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRFJDeE5RVUZKTEVOQlFVTXNRMEZCUXp0WlFVTjRReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRFF5eE5RVUZKTEVOQlFVTXNRMEZCUXp0QlFVTXhReXhaUVVGQkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8xbEJRMjVETEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlEwUXNUVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRkRU1zVTBGQlFUczdRVUZIUkN4UlFVRkJMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOb1F6dEJRVU5HT3p0QlF6TklSQ3hOUVVGTkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVOMFF5eE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVVZ1UXpzN096czdPenRCUVU5SE8wRkJRMkVzVTBGQlFTeHpRa0ZCYzBJc1EwRkJReXhOUVVGelFpeEZRVUZGTEVkQlFYRkNMRVZCUVVFN1NVRkRiRVlzVFVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFZEJRVWNzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTnlSQ3hKUVVGQkxFOUJRVThzUjBGQlJ5eERRVUZETzBGQlEySTdPMEZEWkVFN096czdPenM3T3pzN1FVRlZSenRCUVVOSExGTkJRVlVzYlVKQlFXMUNMRU5CUVVNc1RVRkJjVUlzUlVGQlFUdEpRVU4yUkN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGSExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRka2c3TzBGRFprRTdPenM3T3pzN096dEJRVk5ITzBGQlEwY3NVMEZCVlN4aFFVRmhMRU5CUVVNc1MwRkJZU3hGUVVGQk8wRkJRM3BETEVsQlFVRXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dEpRVU53UkN4UFFVRlBMRXRCUVVzc1IwRkJSeXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4VFFVRlRMRU5CUVVNN1FVRkRNME03TzBGRFRFRXNUVUZCVFVrc2FVSkJRV1VzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVVjZSQ3hOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVOcVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5xUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnFReXhOUVVGTlJpeFJRVUZOTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03UVVGRGRFTXNUVUZCVFVNc1VVRkJUU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMEZCUTNSRExFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8wRkJRM1JETEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzBGQlEzUkRMRTFCUVUxRkxGTkJRVThzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRCUVVWc1F6czdRVUZGUnp0TlFVTlZMRk5CUVZNc1EwRkJRVHRCUVRoRGNFSTdPMEZCUlVjN1FVRkRTQ3hKUVVGQkxFbEJRVmNzUjBGQlJ5eEhRVUZCTzFGQlExb3NUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8wdEJRMnhDTzBGQlJVUTdPMEZCUlVjN1NVRkRTQ3hKUVVGWExFZEJRVWNzUTBGQlF5eExRVUZoTEVWQlFVRTdRVUZETVVJc1VVRkJRU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVTnNRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NTVUZCU1N4RFFVRkRPMHRCUXpGQ08wRkJUMFE3TzBGQlJVYzdRVUZEU0N4SlFVRkJMRWxCUVZjc1MwRkJTeXhIUVVGQk8xRkJRMlFzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMHRCUTNCQ08wRkJSVVE3TzBGQlJVYzdTVUZEU0N4SlFVRlhMRXRCUVVzc1EwRkJReXhMUVVGaExFVkJRVUU3UVVGRE5VSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF6dEJRVU53UWl4UlFVRkJMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzU1VGQlNTeERRVUZETzB0QlF6RkNPMEZCV1VRN08wRkJSVWM3UVVGRFNDeEpRVUZCTEVsQlFWY3NTMEZCU3l4SFFVRkJPMEZCUTJRc1VVRkJRU3hQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEhsRVFVRjVSQ3hEUVVGRExFTkJRVU03VVVGRmVFVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNN1MwRkRla003UVVGRlJEczdPenM3UVVGTFJ6dEpRVU5JTEZkQlFXMUNMRU5CUVVFc1VVRkJjVUlzUlVGQlJTeFBRVUY1UWl4RlFVRkJPMEZCZGtkdVJUczdRVUZGUnp0QlFVTkpMRkZCUVVFc1NVRkJRU3hEUVVGQkxHdENRVUZyUWl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQldXaEVPenM3T3p0QlFVdEhPMUZCUTBrc1NVRkJWU3hEUVVGQkxGVkJRVUVzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZWZWtJN096czdRVUZKUnp0QlFVTkpMRkZCUVVFc1NVRkJRU3hEUVVGQkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0QlFXOUZiRVFzVVVGQlFTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRkZCUVZFc1EwRkJRenRCUVVONlFpeFJRVUZCTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8wRkJSWFpDTEZGQlFVRXNTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU03UVVGRGFFSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF6dEJRVU5zUWl4UlFVRkJMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzU1VGQlNTeERRVUZETzBGQlJYcENMRkZCUVVFc1NVRkJTU3hEUVVGRExIZENRVUYzUWl4SFFVRkhMRWxCUVVrc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF5eERRVUZETzB0QlEzWkdPMEZCUlVRN096czdPMEZCUzBjN1FVRkRTU3hKUVVGQkxGRkJRVkVzUTBGQlF5eE5RVUZ0UWl4RlFVRkJPMEZCUTJwRExGRkJRVUVzVDBGQlR5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hIUVVGSExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdTMEZETTBjN1FVRkZSRHM3T3pzN08wRkJUVWM3UVVGRFNTeEpRVUZCTEVsQlFVa3NRMEZCUXl4TlFVRnBRaXhGUVVGQk8wRkJRek5DTEZGQlFVRXNTVUZCU1N4SlFVRkpMRU5CUVVNc1VVRkJVU3hMUVVGTExFMUJRVTBzUTBGQlF5eFJRVUZSTEVWQlFVVTdRVUZEY2tNc1dVRkJRU3hOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEcxRVFVRnRSQ3hEUVVGRExFTkJRVU03UVVGRGRFVXNVMEZCUVR0UlFVVkVMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNN1FVRkRlRVFzVVVGQlFTeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU03UVVGRE9VSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTTdRVUZEY0VNc1VVRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkROVUlzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzBGQlJYUkRMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UzBGRFlqdEJRVVZFT3pzN08wRkJTVWM3U1VGRFNTeExRVUZMTEVkQlFVRTdRVUZEVml4UlFVRkJMRTlCUVU4c1NVRkJTU3hUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUXpsRU8wRkJSVVE3TzBGQlJVYzdTVUZEU1N4TFFVRkxMRWRCUVVFN1FVRkRWaXhSUVVGQkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRPMEZCUTJoQ0xGRkJRVUVzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SFFVRkhMRU5CUVVNN1FVRkRiRUlzVVVGQlFTeEpRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRWxCUVVrc1EwRkJRenRMUVVNeFFqdEJRVVZFT3pzN08wRkJTVWM3UVVGRFNTeEpRVUZCTEhOQ1FVRnpRaXhEUVVGRExFMUJRWEZDTEVWQlFVRTdVVUZEYWtRc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4alFVRmpMRU5CUVVNc1RVRkJUU3hEUVVGRkxFTkJRVU03UVVGRmJrUXNVVUZCUVN4UFFVRlBMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRMUVVNMVJUdEJRVVZFT3pzN096dEJRVXRITzBGQlEwa3NTVUZCUVN4M1FrRkJkMElzUTBGQlF5eE5RVUYzUWl4RlFVRkJPMUZCUTNSRUxFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1kwRkJZeXhEUVVGRExFMUJRVTBzUTBGQlJTeERRVUZETzBGQlJXNUVMRkZCUVVFc1QwRkJUeXh6UWtGQmMwSXNRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03UzBGRE4wTTdRVUZGUkRzN096dEJRVWxITzBGQlEwa3NTVUZCUVN4elFrRkJjMElzUTBGQlF5eE5RVUYzUWl4RlFVRkJPMUZCUTNCRUxFbEJRVWtzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4cFFrRkJhVUlzUTBGQlEwUXNhVUpCUVdVc1EwRkJReXhIUVVGSExFbEJRVWtzUlVGQlJUdFpRVU0xUkN4UFFVRlBMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEhkQ1FVRjNRaXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdRVUZETlVRc1UwRkJRVHRCUVVWRUxGRkJRVUVzVFVGQlRTeERRVUZETEdkQ1FVRm5RaXhGUVVGRkxHbENRVUZwUWl4RFFVRkRMRWRCUVVjc2JVSkJRVzFDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJRMnhHTEZGQlFVRkRMRk5CUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1JVRkJSU3hIUVVGSExHZENRVUZuUWl4RlFVRkZMR2xDUVVGcFFpeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUlRkRkxFOUJRVThzVFVGQlRTeERRVUZETEZsQlFWa3NRMEZCUTBFc1UwRkJUeXhEUVVGRExFTkJRVU1zVjBGQlZ5eERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExIZENRVUYzUWl4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF6dExRVU4wUnp0QlFVVkVPenM3TzBGQlNVYzdRVUZEU1N4SlFVRkJMSFZDUVVGMVFpeERRVUZETEUxQlFYRkNMRVZCUVVFN1FVRkRiRVFzVVVGQlFTeEpRVUZKTEVOQlFVTXNkMEpCUVhkQ0xFTkJRVU5HTEZGQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTNSRExGRkJRVUVzU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlJYQkRMRkZCUVVFc1QwRkJUeXhOUVVGTk8yRkJRMVlzU1VGQlNTeERRVUZEUXl4cFFrRkJaU3hEUVVGRE8yRkJRM0pDTEdWQlFXVXNRMEZCUTBRc1VVRkJUU3hEUVVGRE8yRkJRM1pDTEdWQlFXVXNRMEZCUXl4TlFVRk5MRU5CUVVNN1lVRkRka0lzVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVORkxGTkJRVThzUTBGQlF5eERRVUZETEVOQlFVTTdTMEZEZGtNN1FVRkZSRHM3T3pzN096czdRVUZSUnp0QlFVTkpMRWxCUVVFc1RVRkJUU3hEUVVGRExGRkJRWFZDTEVWQlFVRTdPMUZCUlc1RExFMUJRVTBzWTBGQll5eEhRVUZIU0N4UlFVRk5PMEZCUXpGQ0xHRkJRVUVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4M1FrRkJkMElzUTBGQlF6dGhRVU51UXl4UlFVRlJMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMSGRDUVVGM1FpeERRVUZEUXl4UlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGNrVXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMnhFTEUxQlFVMHNVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExHVkJRV1VzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenM3UVVGSEwwWXNVVUZCUVN4TlFVRk5MRU5CUVVNc1YwRkJWeXhGUVVGRkxGbEJRVmtzUTBGQlF5eEhRVUZITEcxQ1FVRnRRaXhEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0UlFVTjRSU3hOUVVGTkxFTkJRVU1zVTBGQlV5eEZRVUZGTEZWQlFWVXNRMEZCUXl4SFFVRkhMRzFDUVVGdFFpeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUXk5RUxFMUJRVTBzUjBGQlJ5eEhRVUZITEdGQlFXRXNRMEZCUXl4VFFVRlRMRWRCUVVjc1YwRkJWeXhEUVVGRExFTkJRVU03VVVGRGJrUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1lVRkJZU3hEUVVGRExGbEJRVmtzUjBGQlJ5eFZRVUZWTEVOQlFVTXNRMEZCUXpzN1VVRkhka1FzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFOUJRVThzUjBGQlJ5eEhRVUZITEVOQlFVTTdVVUZETVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTlCUVU4c1IwRkJSeXhMUVVGTExFTkJRVU03UVVGRk9VTXNVVUZCUVN4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF6dExRVU14UWp0QlFVVkVPenM3T3p0QlFVdEhPMEZCUTBrc1NVRkJRU3hOUVVGTkxFTkJRVU1zUzBGQllTeEZRVUZCTzFGQlEzcENMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVsQlFVa3NTVUZCU1N4RFFVRkRMRlZCUVZVc1JVRkJSVHRCUVVNeFF5eFpRVUZCTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEycEVMRk5CUVVFN1VVRkZSQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVTdRVUZEY2tJc1dVRkJRU3hKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVVXhRaXhaUVVGQkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTNCRUxGTkJRVUU3UzBGRFJqczdRVUV4VVhOQ0xGTkJRVUVzUTBGQlFTeFhRVUZYTEVkQlFVY3NTMEZCU3l4RFFVRkRPenRCUTJoQ04wTXNUVUZCVFN4bFFVRmxMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRmVrUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdRVUZEZEVNc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1FVRkRkRU1zVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJSWFJFT3pzN1FVRkhSenROUVVOVkxHOUNRVUZ2UWl4RFFVRkJPMEZCTUVRdlFqczdPenM3T3pzN1FVRlJSenRKUVVOSUxGZEJRMFVzUTBGQlFTeFJRVUZ4UWl4RlFVTnlRaXgxUWtGQk1FTXNSVUZETVVNc2RVSkJRVEJETEVWQlF6RkRMRzlDUVVGMVF5eEZRVU4yUXl4clFrRkJjVU1zUlVGQlFUdEJRVVZ5UXl4UlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzVVVGQlVTeERRVUZETzBGQlJYcENMRkZCUVVFc1NVRkJTU3hEUVVGRExIVkNRVUYxUWl4SFFVRkhMSFZDUVVGMVFpeERRVUZETzBGQlEzWkVMRkZCUVVFc1NVRkJTU3hEUVVGRExIVkNRVUYxUWl4SFFVRkhMSFZDUVVGMVFpeERRVUZETzBGQlEzWkVMRkZCUVVFc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4SFFVRkhMRzlDUVVGdlFpeERRVUZETzBGQlEycEVMRkZCUVVFc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4SFFVRkhMR3RDUVVGclFpeERRVUZETzBGQlJUZERMRkZCUVVFc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXpzN1VVRkhiRVFzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMUZCUXk5RExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXp0UlFVTm9SQ3hKUVVGSkxFTkJRVU1zTWtKQlFUSkNMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdVVUZETVVRc1NVRkJTU3hEUVVGRExEUkNRVUUwUWl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzFGQlJUTkVMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNZMEZCWXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRM2hFTEUxQlFVMHNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zWTBGQll5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMEZCUlRGRUxGRkJRVUVzU1VGQlNTeFBRVUZQTEVWQlFVVTdXVUZEV0N4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dFpRVU12UXl4elFrRkJjMElzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVHl4RlFVRkZMRWxCUVVrc1EwRkJReXd5UWtGQk1rSXNRMEZCUXl4RFFVRkRPMEZCUXpORkxGTkJRVUU3UVVGRlJDeFJRVUZCTEVsQlFVa3NVVUZCVVN4RlFVRkZPMWxCUTFvc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdXVUZEYWtRc2MwSkJRWE5DTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVU4c1JVRkJSU3hKUVVGSkxFTkJRVU1zTkVKQlFUUkNMRU5CUVVNc1EwRkJRenRCUVVNM1JTeFRRVUZCTzB0QlEwWTdRVUZGUkRzN096czdRVUZMUnp0SlFVTkpMR0ZCUVdFc1EwRkJReXhIUVVGWExFVkJRVVVzUzBGQllTeEZRVUZCTzFGQlF6ZERMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNZMEZCWXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRM2hFTEUxQlFVMHNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zWTBGQll5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMUZCUXpGRUxFMUJRVTBzYVVKQlFXbENMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dFJRVU42UlN4TlFVRk5MR3RDUVVGclFpeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN08wRkJSVE5GTEZGQlFVRXNTVUZCU1N4UFFVRlBMRVZCUVVVN1dVRkRXQ3hKUVVGSkxFdEJRVXNzUjBGQlJ5eEhRVUZITEVWQlFVVTdRVUZEWml4blFrRkJRU3hQUVVGUExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUXpsRkxHRkJRVUU3UVVGQlRTeHBRa0ZCUVR0QlFVTk1MR2RDUVVGQkxFOUJRVThzUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTXhSU3hoUVVGQk8xbEJSVVFzU1VGQlNTeEhRVUZITEVkQlFVY3NSMEZCUnl4RlFVRkZPMEZCUTJJc1owSkJRVUVzVDBGQlR5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVNdlJTeGhRVUZCTzBGQlFVMHNhVUpCUVVFN1FVRkRUQ3huUWtGQlFTeFBRVUZQTEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkROMFVzWVVGQlFUdEJRVVZFTEZsQlFVRXNUVUZCVFN4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEJRVU0zUWl4WlFVRkJMRWxCUVVrc1EwRkJReXh6UWtGQmMwSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenM3T3p0WlFVdHdReXhwUWtGQmEwSXNRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkZkRVlzV1VGQlFTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXd5UWtGQk1rSXNRMEZCUXl4RFFVRkRPenM3UVVGSk9VTXNXVUZCUVN4UFFVRlBMRU5CUVVNc1ZVRkJWVHRCUVVObUxHbENRVUZCTEVsQlFVa3NRMEZCUXl4cFFrRkJhMElzUTBGQlF5eFZRVUZWTEVOQlFVTTdhVUpCUTI1RExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTTdRVUZEYUVJc2FVSkJRVUVzVjBGQlZ5eERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRCUVVNMVFpeHBRa0ZCUVN4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNN1FVRkRjRU1zVTBGQlFUczdRVUZIUkN4UlFVRkJMRWxCUVVrc1VVRkJVU3hGUVVGRk8xbEJRMW9zU1VGQlNTeExRVUZMTEVkQlFVY3NSMEZCUnl4RlFVRkZPMEZCUTJZc1owSkJRVUVzVDBGQlR5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4dlFrRkJiMElzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVNNVJTeGhRVUZCTzBGQlFVMHNhVUpCUVVFN1FVRkRUQ3huUWtGQlFTeFBRVUZQTEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkRNVVVzWVVGQlFUdFpRVVZFTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWRCUVVjc1JVRkJSVHRCUVVOaUxHZENRVUZCTEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGREwwVXNZVUZCUVR0QlFVRk5MR2xDUVVGQk8wRkJRMHdzWjBKQlFVRXNUMEZCVHl4RFFVRkRMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJRemRGTEdGQlFVRTdRVUZGUkN4WlFVRkJMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdRVUZETjBJc1dVRkJRU3hKUVVGSkxFTkJRVU1zYzBKQlFYTkNMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03T3pzN1dVRkxjRU1zYTBKQlFXMUNMRU5CUVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJSWFpHTEZsQlFVRXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zTkVKQlFUUkNMRU5CUVVNc1EwRkJRenM3TzBGQlNTOURMRmxCUVVFc1VVRkJVU3hEUVVGRExGVkJRVlU3UVVGRGFFSXNhVUpCUVVFc1NVRkJTU3hEUVVGRExHdENRVUZ0UWl4RFFVRkRMRlZCUVZVc1EwRkJRenRwUWtGRGNFTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVOb1FpeHBRa0ZCUVN4WFFVRlhMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzBGQlF6VkNMR2xDUVVGQkxGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlF6dEJRVU55UXl4VFFVRkJPMHRCUTBZN1FVRkZSRHM3UVVGRlJ6dEJRVU5KTEVsQlFVRXNUVUZCVFN4RFFVRkRMRXRCUVd0Q0xFVkJRVUU3UVVGRE9VSXNVVUZCUVN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExHOUZRVUZ2UlN4RFFVRkRMRU5CUVVNN1VVRkZia1lzVFVGQlRTeEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhQUVVGUExFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTVReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTlCUVU4c1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlJXaEVMRkZCUVVFc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEhRVUZITEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRhRU03UVVGRlJEczdPenRCUVVsSE8wRkJRMHNzU1VGQlFTeHpRa0ZCYzBJc1EwRkJReXhOUVVGM1FpeEZRVUZCTzFGQlEzSkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhsUVVGbExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVWQlFVVTdRVUZETlVRc1dVRkJRU3hQUVVGUExFMUJRVTBzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0QlFVTXhRaXhUUVVGQk8wRkJSVVFzVVVGQlFTeE5RVUZOTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzYVVKQlFXbENMRU5CUVVNc1IwRkJSeXh0UWtGQmJVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03UVVGRGJFWXNVVUZCUVN4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhuUWtGQlowSXNSVUZCUlN4cFFrRkJhVUlzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVVTNSU3hSUVVGQkxFOUJRVThzVFVGQlRTeERRVUZETEZsQlFWa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRMUVVOeVF6czdRVUU1VFVRN08wRkJSVWM3UVVGRGIwSXNiMEpCUVVrc1EwRkJRU3hKUVVGQkxFZEJRVWNzVFVGQlRUczdRVU5vUW5SRE96czdRVUZIUnp0TlFVTlZMREJDUVVFd1FpeERRVUZCTzBGQlowTnlRenM3T3pzN096czdRVUZSUnp0SlFVTklMRmRCUTBVc1EwRkJRU3hYUVVGcFF5eEZRVU5xUXl4MVFrRkJNRU1zUlVGRE1VTXNkVUpCUVRCRExFVkJRekZETEc5Q1FVRjFReXhGUVVOMlF5eHJRa0ZCY1VNc1JVRkJRVHRCUVVWeVF5eFJRVUZCTEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1YwRkJWeXhEUVVGRE8wRkJSUzlDTEZGQlFVRXNTVUZCU1N4RFFVRkRMSFZDUVVGMVFpeEhRVUZITEhWQ1FVRjFRaXhEUVVGRE8wRkJRM1pFTEZGQlFVRXNTVUZCU1N4RFFVRkRMSFZDUVVGMVFpeEhRVUZITEhWQ1FVRjFRaXhEUVVGRE8wRkJRM1pFTEZGQlFVRXNTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeEhRVUZITEc5Q1FVRnZRaXhEUVVGRE8wRkJRMnBFTEZGQlFVRXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeEhRVUZITEd0Q1FVRnJRaXhEUVVGRE8wdEJRemxETzBGQlJVUTdPenM3TzBGQlMwYzdTVUZEU1N4aFFVRmhMRU5CUVVNc1IwRkJWeXhGUVVGRkxFdEJRV0VzUlVGQlFUdFJRVU0zUXl4SlFVRkpMRXRCUVVzc1IwRkJSeXhIUVVGSExFVkJRVVU3V1VGRFppeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRkZCUVZFc1EwRkJReXhWUVVGVkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZETTBNc1dVRkJRU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNRMEZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETVVVc1UwRkJRVHRCUVVGTkxHRkJRVUU3V1VGRFRDeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRkZCUVZFc1EwRkJReXhSUVVGUkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEZWtNc1dVRkJRU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNRMEZCUXl4VlFVRlZMRVZCUVVVc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6ZEZMRk5CUVVFN1VVRkZSQ3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVWQlFVVTdXVUZEWWl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGRkJRVkVzUTBGQlF5eFZRVUZWTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRNME1zV1VGQlFTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRkZCUVZFc1EwRkJReXhYUVVGWExFVkJRVVVzU1VGQlNTeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRhRVlzVTBGQlFUdEJRVUZOTEdGQlFVRTdXVUZEVEN4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGRkJRVkVzUTBGQlF5eFhRVUZYTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkROVU1zV1VGQlFTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRkZCUVZFc1EwRkJReXhWUVVGVkxFVkJRVVVzU1VGQlNTeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpsRkxGTkJRVUU3UzBGRFJqdEJRVVZFT3p0QlFVVkhPMEZCUTBrc1NVRkJRU3hOUVVGTkxFTkJRVU1zUzBGQmEwSXNSVUZCUVR0QlFVTTVRaXhSUVVGQkxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNiMFZCUVc5RkxFTkJRVU1zUTBGQlF6dFJRVVZ1Uml4TlFVRk5MRWRCUVVjc1IwRkJSeXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRemxETEUxQlFVMHNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkZhRVFzVVVGQlFTeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWRCUVVjc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dExRVU5vUXpzN1FVRjZSa1E3TzBGQlJVYzdRVUZEYjBJc01FSkJRVWtzUTBGQlFTeEpRVUZCTEVkQlFVY3NXVUZCV1RzN1RVTllMMElzYVVKQlFXbENMRU5CUVVFN1FVRlpOVUk3T3pzN08wRkJTMGM3U1VGRFNDeFhRVUZ0UWl4RFFVRkJMR0ZCUVhGQ0xFVkJRVVVzVjBGQmJVSXNSVUZCUVR0QlFVTXpSQ3hSUVVGQkxFbEJRVWtzUTBGQlF5eGhRVUZoTEVkQlFVY3NZVUZCWVN4RFFVRkRPMEZCUTI1RExGRkJRVUVzU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4WFFVRlhMRU5CUVVNN1MwRkRhRU03UVVGRlJEczdPMEZCUjBjN1FVRkRTU3hKUVVGQkxFZEJRVWNzUTBGQlF5eEhRVUZYTEVWQlFVRTdRVUZEY0VJc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NVVUZCVVN4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTTdTMEZET1VRN1FVRkRSanM3UVVOc1FrUTdPMEZCUlVjN1FVRkRTQ3hOUVVGTlNpeDNRa0ZCYzBJc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJSVFZFT3pzN1FVRkhSenRCUVVOSUxFMUJRVTBzZFVKQlFYVkNMRWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJSWEpET3p0QlFVVkhPMDFCUTFVc2NVSkJRWEZDTEVOQlFVRTdRVUZWYUVNc1NVRkJRU3hKUVVGWExFbEJRVWtzUjBGQlFUczdRVUZGWWl4UlFVRkJMRTlCUVU4c2RVSkJRWFZDTEVOQlFVTTdTMEZEYUVNN1NVRkZSQ3hYUVVGdFFpeERRVUZCTEUxQlFXdENMRVZCUVVVc1QwRkJjME1zUlVGQlFUdEJRVU16UlN4UlFVRkJMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETzFGQlJYSkNMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzVDBGQlR5eExRVUZCTEVsQlFVRXNTVUZCVUN4UFFVRlBMRXRCUVZBc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNUMEZCVHl4RFFVRkZMRlZCUVZVc1EwRkJRenRMUVVOMlF6dEJRVVZaTEVsQlFVRXNVMEZCVXl4RFFVRkRMRWxCUVZVc1JVRkJRVHM3UVVGREwwSXNXVUZCUVN4TlFVRk5MRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZkQlFYTkRMRU5CUVVNN096dFpRVWw2UlN4SlFVRkpMRmRCUVZjc1MwRkJTeXhKUVVGSkxFVkJRVVU3WjBKQlEzaENMRTlCUVU4N1FVRkRVaXhoUVVGQk8ybENRVUZOTEVsQlFVa3NWMEZCVnl4TFFVRkxMRk5CUVZNc1JVRkJSVHRCUVVOd1F5eG5Ra0ZCUVN4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHZEhRVUZuUnl4RFFVRkRMRU5CUVVNN1FVRkRia2dzWVVGQlFUdEJRVVZFTEZsQlFVRXNUVUZCVFN4dlFrRkJiMElzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRzlDUVVGM1JDeERRVUZETzFsQlJYQkhMRWxCUVVrc2IwSkJRVzlDTEV0QlFVc3NTVUZCU1N4RlFVRkZPMmRDUVVOcVF5eFBRVUZQTzBGQlExSXNZVUZCUVR0cFFrRkJUU3hKUVVGSkxHOUNRVUZ2UWl4TFFVRkxMRk5CUVZNc1JVRkJSVHRCUVVNM1F5eG5Ra0ZCUVN4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVOaUxESkhRVUV5Unl4RFFVTTFSeXhEUVVGRE8wRkJRMGdzWVVGQlFUdEJRVVZFTEZsQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhUUVVGVExFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hYUVVGWExFVkJRVVVzYjBKQlFXOUNMRU5CUVVNc1EwRkJRenRUUVVOMlJpeERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVRkJPMEZCUlVRN096czdPenRCUVUxSE8wRkJRMWNzU1VGQlFTeFBRVUZQTEVOQlEyNUNMRWxCUVZVc1JVRkRWaXhSUVVFMFFpeEZRVU0xUWl4WFFVRjNReXhGUVVGQk96dEJRVVY0UXl4WlFVRkJMRWxCUVVrc1VVRkJVU3hKUVVGSkxFbEJRVWtzU1VGQlNTeFhRVUZYTEVsQlFVa3NTVUZCU1N4RlFVRkZPMEZCUXpORExHZENRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJJc1lVRkJRVHRCUVVWRUxGbEJRVUVzVFVGQlRTeFJRVUZSTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeFJRVUZSTEVWQlFVVXNWMEZCVnl4RFFVRkRMRU5CUVVNN1FVRkRia1VzV1VGQlFTeEpRVUZKTEZGQlFWRXNSVUZCUlR0QlFVTmFMR2RDUVVGQkxFOUJRVThzVVVGQlVTeERRVUZETzBGQlEycENMR0ZCUVVFN1FVRkZSQ3haUVVGQkxFMUJRVTBzVVVGQlVTeEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzVVVGQlVTeEZRVUZGTEZkQlFWY3NRMEZCUXl4RFFVRkRPMEZCUTI1RkxGbEJRVUVzU1VGQlNTeFJRVUZSTEVWQlFVVTdRVUZEV2l4blFrRkJRU3hQUVVGUExGRkJRVkVzUTBGQlF6dEJRVU5xUWl4aFFVRkJPMEZCUlVRc1dVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dFRRVU5pTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUVVFN1FVRkZZU3hKUVVGQkxGTkJRVk1zUTBGRGNrSXNTVUZCVlN4RlFVTldMRkZCUVhGQ0xFVkJRM0pDTEZkQlFXbERMRVZCUVVFN096dEJRVVZxUXl4WlFVRkJMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCZDBJc1EwRkJRenM3UVVGSGJFUXNXVUZCUVN4TlFVRk5MRk5CUVZNc1IwRkJSeXhEUVVGQkxFTkJRVUVzUlVGQlFTeEhRVUZCTEVsQlFVa3NRMEZCUXl4alFVRmpMRTFCUVVVc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVUVzVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMnhGTEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVN1FVRkRaQ3huUWtGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmlMR0ZCUVVFN1dVRkZSQ3hOUVVGTkxGTkJRVk1zUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZITEZWQlFWVXNRMEZCYjBNc1EwRkJRenRaUVVOdVJpeEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZPMEZCUTJRc1owSkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTTdRVUZEWWl4aFFVRkJPMEZCUlVRc1dVRkJRU3hOUVVGTkxGZEJRVmNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNWMEZCVnl4RFFVRkRPMEZCUXpGRExGbEJRVUVzU1VGQlNTeERRVUZEUVN4M1FrRkJjMElzUTBGQlF5eEhRVUZITEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVN1FVRkROVU1zWjBKQlFVRXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXgzUkVGQmQwUXNWMEZCVnl4RFFVRkJMRU5CUVVFc1EwRkJSeXhEUVVGRExFTkJRVU03UVVGRGNrWXNaMEpCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFlpeGhRVUZCTzBGQlJVUXNXVUZCUVN4TlFVRk5MRmxCUVZrc1IwRkJSeXhUUVVGVExFTkJRVU1zVFVGQlRTeERRVUZETzFsQlEzUkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVU3UVVGRGFrSXNaMEpCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFlpeGhRVUZCTzBGQlJVUXNXVUZCUVN4TlFVRk5MR3RDUVVGclFpeEhRVUZITEZsQlFWa3NRMEZCUXl4SlFVRkpMRXRCUVVzc1dVRkJXU3hIUVVGSExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZGTTBVc1dVRkJRU3hOUVVGTkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zV1VGQldTeERRVUZETEhWQ1FVRjFRaXhGUVVGRkxHdENRVUZyUWl4RFFVRkRMRU5CUVVNN1FVRkRMMFlzV1VGQlFTeE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNXVUZCV1N4RFFVRkRMSFZDUVVGMVFpeEZRVUZGTEd0Q1FVRnJRaXhEUVVGRExFTkJRVU03UVVGREwwWXNXVUZCUVN4TlFVRk5MRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1dVRkJXU3hEUVVGRExHOUNRVUZ2UWl4RlFVRkZMR3RDUVVGclFpeERRVUZETEVOQlFVTTdRVUZETlVZc1dVRkJRU3hOUVVGTkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zV1VGQldTeERRVUZETEd0Q1FVRnJRaXhGUVVGRkxHdENRVUZyUWl4RFFVRkRMRU5CUVVNN1FVRkZNVVlzV1VGQlFTeEpRVUZKTEU5QlFVOHNRMEZCUXp0QlFVVmFMRmxCUVVFc1NVRkJTU3haUVVGWkxFTkJRVU1zU1VGQlNTeExRVUZMTEZsQlFWa3NSVUZCUlR0QlFVTjBReXhuUWtGQlFTeFBRVUZQTEVkQlFVY3NTVUZCU1N3d1FrRkJNRUlzUTBGQlF5eFhRVUZYTEVWQlFVVXNTMEZCU3l4RlFVRkZMRXRCUVVzc1JVRkJSU3hMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdRVUZEYmtZc1lVRkJRVHRCUVVGTkxHbENRVUZCTzBGQlEwd3NaMEpCUVVFc1QwRkJUeXhIUVVGSExFbEJRVWtzYjBKQlFXOUNMRU5CUVVNc1VVRkJVU3hGUVVGRkxFdEJRVXNzUlVGQlJTeExRVUZMTEVWQlFVVXNTMEZCU3l4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRekZGTEdGQlFVRTdXVUZGUkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEZGQlFWRXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVWeVJDeFpRVUZCTEUxQlFVMHNRMEZCUXl4clFrRkJhMElzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUVN4RlFVRkJMRWRCUVVFc1dVRkJXU3hEUVVGRExHdENRVUZyUWl4TlFVRkpMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkJMRU5CUVVNc1IwRkJSeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlhwR0xGbEJRVUVzVDBGQlR5eE5RVUZOTEVOQlFVTTdPMEZCUTJZc1MwRkJRVHRKUVVWUExHbENRVUZwUWl4RFFVTjJRaXhqUVVGelJDeEZRVU4wUkN4clFrRkJNRUlzUlVGQlFUczdRVUZGTVVJc1VVRkJRU3hKUVVGSkxHRkJRV0VzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4alFVRmpMRXRCUVdRc1NVRkJRU3hKUVVGQkxHTkJRV01zUzBGQlpDeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hqUVVGakxFTkJRVVVzWVVGQllTeE5RVUZKTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZCTEVsQlFVa3NRMEZCUXp0QlFVTXhSQ3hSUVVGQkxFMUJRVTBzVjBGQlZ5eEhRVUZITEVOQlFVRXNSVUZCUVN4SFFVRkJMR05CUVdNc1MwRkJaQ3hKUVVGQkxFbEJRVUVzWTBGQll5eExRVUZrTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxHTkJRV01zUTBGQlJTeFhRVUZYTEUxQlFVa3NTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU03T3pzN1VVRkxkRVVzU1VGQlNTeGhRVUZoTEVkQlFVY3NkVUpCUVhWQ0xFVkJRVVU3UVVGRE0wTXNXVUZCUVN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVOV0xIRkhRVUZ4Unl4RFFVTjBSeXhEUVVGRE8xbEJRMFlzWVVGQllTeEhRVUZITEhWQ1FVRjFRaXhEUVVGRE8wRkJRM3BETEZOQlFVRTdRVUZGUkN4UlFVRkJMRTlCUVU4c1NVRkJTU3hwUWtGQmFVSXNRMEZCUXl4aFFVRmhMRVZCUVVVc1YwRkJWeXhEUVVGRExFTkJRVU03UzBGRE1VUTdRVUZGWVN4SlFVRkJMRk5CUVZNc1EwRkRja0lzU1VGQlZTeEZRVU5XTEZGQlFYRkNMRVZCUTNKQ0xGZEJRV2xETEVWQlFVRTdPenRCUVVWcVF5eFpRVUZCTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQmQwSXNRMEZCUXpzN1dVRkhiRVFzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1NVRkJTU3hEUVVGRExGVkJRVlVzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUlN4SFFVRTBRaXhEUVVGRE8xbEJRemRFTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRXQ3huUWtGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmlMR0ZCUVVFN1FVRkZSQ3haUVVGQkxFMUJRVTBzYVVKQlFXbENMRWRCUVVjc1RVRkJUU3hEUVVGRExGZEJRVmNzUTBGQlF6dFpRVU0zUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVTdRVUZEZEVJc1owSkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTTdRVUZEWWl4aFFVRkJPMEZCUlVRc1dVRkJRU3hOUVVGTkxHdENRVUZyUWl4SFFVRkhMR2xDUVVGcFFpeERRVUZETEdOQlFXTXNTMEZCU3l4WlFVRlpMRWRCUVVjc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF6dEJRVVV4Uml4WlFVRkJMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4eFFrRkJjVUlzUlVGQlJTeHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8wRkJRMjVITEZsQlFVRXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEhGQ1FVRnhRaXhGUVVGRkxHdENRVUZyUWl4RFFVRkRMRU5CUVVNN1FVRkRia2NzV1VGQlFTeE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXp0QlFVTm9SeXhaUVVGQkxFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhuUWtGQlowSXNSVUZCUlN4clFrRkJhMElzUTBGQlF5eERRVUZETzBGQlJUbEdMRmxCUVVFc1NVRkJTU3hQUVVGUExFTkJRVU03UVVGRldpeFpRVUZCTEVsQlFVa3NhVUpCUVdsQ0xFTkJRVU1zWTBGQll5eExRVUZMTEZsQlFWa3NSVUZCUlR0QlFVTnlSQ3huUWtGQlFTeFBRVUZQTEVkQlFVY3NTVUZCU1N3d1FrRkJNRUlzUTBGQlF5eFhRVUZYTEVWQlFVVXNTMEZCU3l4RlFVRkZMRXRCUVVzc1JVRkJSU3hMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdRVUZEYmtZc1lVRkJRVHRCUVVGTkxHbENRVUZCTzBGQlEwd3NaMEpCUVVFc1QwRkJUeXhIUVVGSExFbEJRVWtzYjBKQlFXOUNMRU5CUVVNc1VVRkJVU3hGUVVGRkxFdEJRVXNzUlVGQlJTeExRVUZMTEVWQlFVVXNTMEZCU3l4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRekZGTEdGQlFVRTdXVUZGUkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEZGQlFWRXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRaUVVWeVJDeEpRVUZKTEdsQ1FVRnBRaXhEUVVGRExIRkNRVUZ4UWl4RlFVRkZPMEZCUXpORExHZENRVUZCTEUxQlFVMHNRMEZCUXl4clFrRkJhMElzUTBGQlF5eEhRVUZITEVOQlF6TkNMRU5CUVVFc1JVRkJRU3hIUVVGQkxHbENRVUZwUWl4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNSMEZCU1N4SFFVRkhMRVZCUTJoRUxFMUJRVUVzYVVKQlFXbENMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNRMEZCUXl4TlFVRkpMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkJMRWxCUVVrc1JVRkRha1FzUlVGQlJTeERRVUZCTEVWQlFVRXNSMEZCUVN4cFFrRkJhVUlzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhEUVVGRExFMUJRVUVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFZEJRVWtzUjBGQlJ5eERRVUZETEVOQlEzQkVMRU5CUVVNN1FVRkRTQ3hoUVVGQk8wRkJRVTBzYVVKQlFVRTdaMEpCUTB3c1RVRkJUU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFVkJRVVVzU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUXk5RExHRkJRVUU3TzBGQlIwUXNXVUZCUVN4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRmNrTXNTVUZCU1N4UFFVRlBMRmxCUVZrc2IwSkJRVzlDTEVWQlFVVTdRVUZETTBNc1owSkJRVUVzVDBGQlR5eERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTNaRExHRkJRVUU3UVVGRlJDeFpRVUZCTEU5QlFVOHNUVUZCVFN4RFFVRkRPenRCUVVObUxFdEJRVUU3U1VGRlR5eHJRa0ZCYTBJc1EwRkRlRUlzWlVGQmRVUXNSVUZEZGtRc2EwSkJRVEJDTEVWQlFVRTdPMUZCUlRGQ0xFMUJRVTBzUzBGQlN5eEhRVUZITEdWQlFXVXNTMEZCUVN4SlFVRkJMRWxCUVdZc1pVRkJaU3hMUVVGbUxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMR1ZCUVdVc1EwRkJSU3hMUVVGTExFTkJRVU03VVVGRGNrTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEcxQ1FVRnRRaXhGUVVGRk8wRkJRMnBFTEZsQlFVRXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhuUlVGQlowVXNRMEZCUXl4RFFVRkRPMEZCUTJoR0xGTkJRVUU3UVVGRlJDeFJRVUZCTEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVFc1JVRkJRU3hIUVVGQkxHVkJRV1VzUzBGQlppeEpRVUZCTEVsQlFVRXNaVUZCWlN4TFFVRm1MRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEdWQlFXVXNRMEZCUlN4TlFVRk5MRTFCUVVrc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVFc1NVRkJTU3hEUVVGRE8wRkJRemRETEZGQlFVRXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzWlVGQlpTeExRVUZtTEVsQlFVRXNTVUZCUVN4bFFVRmxMRXRCUVdZc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNaVUZCWlN4RFFVRkZMRTFCUVUwc1RVRkJTU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJRU3hyUWtGQmEwSXNRMEZCUXpzN096dFJRVXMzUkN4SlFVRkpMRTFCUVUwc1IwRkJSeXgxUWtGQmRVSXNSVUZCUlR0QlFVTndReXhaUVVGQkxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMGRCUVdkSExFTkJRVU1zUTBGQlF6dFpRVU12Unl4TlFVRk5MRWRCUVVjc2RVSkJRWFZDTEVOQlFVTTdRVUZEYkVNc1UwRkJRVHRCUVVWRUxGRkJRVUVzVDBGQlR5eEpRVUZKTEdsQ1FVRnBRaXhEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0TFFVTTVRenRKUVVWUExHRkJRV0VzUTBGQlF5eFJRVUZ4UWl4RlFVRkZMRTlCUVhsQ0xFVkJRVUU3VVVGRGNFVXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hUUVVGVExFTkJRVU1zVVVGQlVTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUldoRUxFbEJRVWtzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlR0QlFVTnVRaXhaUVVGQkxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NaVUZCWlN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRek5ETEZsQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdXVUZETlVJc1RVRkJUU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRmRCUVZjc1EwRkJRenRCUVVOc1JDeFRRVUZCTzBGQlJVUXNVVUZCUVN4UFFVRlBMRTFCUVUwc1EwRkJRenRMUVVObU8wRkJRMFk3TzBGRGRGRkVPMEZCUlVFN08wRkJSVWM3UVVGRFZTeE5RVUZCTEdsQ1FVRnBRaXhIUVVGSE8wRkJReTlDTEVsQlFVRXNTVUZCU1N4RlFVRkZMRTFCUVUwN1FVRkRXaXhKUVVGQkxGVkJRVlVzUlVGQlJTeFpRVUZaT3pzN1FVTlFNVUk3TzBGQlJVYzdRVUZEWVN4VFFVRkJMRlZCUVZVc1EwRkJReXhIUVVGWExFVkJRVVVzU1VGQldTeEZRVUZCT3p0QlFVVnNSQ3hKUVVGQkxFbEJRVWtzVDBGQlR5eEhRVUZITEV0QlFVc3NVVUZCVVN4SlFVRkpMRWRCUVVjc1MwRkJTeXhGUVVGRk8wRkJRVVVzVVVGQlFTeFBRVUZQTEVWQlFVVXNRMEZCUXpzN1FVRkhja1FzU1VGQlFTeEpRVUZKTEdWQlFXVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSVHRSUVVOcVJDeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXgzUWtGQmQwSXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOeVJDeExRVUZCT3p0QlFVZEVMRWxCUVVFc1NVRkJTU3hyUWtGQmEwSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8wRkJRVVVzVVVGQlFTeFBRVUZQTEVkQlFVY3NRMEZCUXpzN1FVRkhOME1zU1VGQlFTeEpRVUZKTEdWQlFXVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8wRkJRVVVzVVVGQlFTeFBRVUZQTEVkQlFVY3NRMEZCUXpzN1FVRkhNVU1zU1VGQlFTeEpRVUZKTEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8wRkJRVVVzVVVGQlFTeFBRVUZQTEVkQlFVY3NRMEZCUXpzN1NVRkhka01zVDBGQlR5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRPMEZCUTNCQ096dEJRMXBCT3p0QlFVVkhPMEZCUTBnc1RVRkJUU3h6UWtGQmMwSXNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUlVGQlJTeFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlRWRU96dEJRVVZITzAxQlExVXNiVUpCUVcxQ0xFTkJRVUU3UVVGMVFqbENMRWxCUVVFc1NVRkJWeXhKUVVGSkxFZEJRVUU3TzBGQlJXSXNVVUZCUVN4UFFVRlBMSEZDUVVGeFFpeERRVUZETzB0QlF6bENPMGxCUlVRc1YwRkJiVUlzUTBGQlFTeE5RVUZyUWl4RlFVRkZMRTlCUVc5RExFVkJRVUU3TzBGQlEzcEZMRkZCUVVFc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTTdRVUZGY2tJc1VVRkJRU3hKUVVGSkxFTkJRVU1zYTBKQlFXdENMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzVDBGQlR5eExRVUZCTEVsQlFVRXNTVUZCVUN4UFFVRlBMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFWQXNUMEZCVHl4RFFVRkZMR3RDUVVGclFpeE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZKTEVsQlFVa3NRMEZCUXp0QlFVTTVSQ3hSUVVGQkxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeFBRVUZQTEV0QlFWQXNTVUZCUVN4SlFVRkJMRTlCUVU4c1MwRkJVQ3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4UFFVRlBMRU5CUVVVc2FVSkJRV2xDTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVa3NRMEZCUXl3clFrRkJLMElzUTBGQlF5eERRVUZETzBGQlEzcEdMRkZCUVVFc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4UFFVRlBMRXRCUVVFc1NVRkJRU3hKUVVGUUxFOUJRVThzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJVQ3hQUVVGUExFTkJRVVVzV1VGQldTeE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZKTEVsQlFVa3NRMEZCUXp0TFFVTnVSRHRCUVVWWkxFbEJRVUVzVTBGQlV5eERRVUZETEVsQlFWVXNSVUZCUVRzN1FVRkRMMElzV1VGQlFTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTlCUVU4c1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1UwRkRiRVFzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZCUVR0QlFVVmhMRWxCUVVFc1QwRkJUeXhEUVVGRExFbEJRVlVzUlVGQlFUczdXVUZET1VJc1RVRkJUU3hSUVVGUkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRelZETEVsQlFVa3NVVUZCVVN4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOd1FpeG5Ra0ZCUVN4UFFVRlBMRkZCUVZFc1EwRkJRenRCUVVOcVFpeGhRVUZCTzFsQlJVUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUXpWRExFbEJRVWtzVVVGQlVTeEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTndRaXhuUWtGQlFTeFBRVUZQTEZGQlFWRXNRMEZCUXp0QlFVTnFRaXhoUVVGQk8wRkJSVVFzV1VGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXp0VFFVTmlMRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRVUU3UVVGRllTeEpRVUZCTEZOQlFWTXNRMEZCUXl4SlFVRlZMRVZCUVVFN096dEJRVU5vUXl4WlFVRkJMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCZDBJc1EwRkJRenM3UVVGSGJFUXNXVUZCUVN4TlFVRk5MRk5CUVZNc1IwRkJSeXhEUVVGQkxFTkJRVUVzUlVGQlFTeEhRVUZCTEVsQlFVa3NRMEZCUXl4alFVRmpMRTFCUVVVc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVUVzVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMnhGTEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVN1FVRkRaQ3huUWtGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmlMR0ZCUVVFN1dVRkZSQ3hOUVVGTkxGTkJRVk1zUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZITEZWQlFWVXNRMEZCYjBNc1EwRkJRenRaUVVOdVJpeEpRVUZKTEZOQlFWTXNTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRja0lzWjBKQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRZaXhoUVVGQk8wRkJSVVFzV1VGQlFTeE5RVUZOTEZkQlFWY3NSMEZCUnl4VFFVRlRMRU5CUVVNc1YwRkJWeXhEUVVGRE8wRkJRekZETEZsQlFVRXNTVUZCU1N4RFFVRkRMSE5DUVVGelFpeERRVUZETEVkQlFVY3NRMEZCUXl4WFFVRlhMRU5CUVVNc1JVRkJSVHRCUVVNMVF5eG5Ra0ZCUVN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExITkVRVUZ6UkN4WFFVRlhMRU5CUVVFc1EwRkJRU3hEUVVGSExFTkJRVU1zUTBGQlF6dEJRVU51Uml4blFrRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5pTEdGQlFVRTdRVUZGUkN4WlFVRkJMRTFCUVUwc1ZVRkJWU3hIUVVGSExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTTdXVUZEYkVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJUdEJRVU5tTEdkQ1FVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMklzWVVGQlFUczdRVUZIUkN4WlFVRkJMRTFCUVUwc1ZVRkJWU3hIUVVGSExGVkJRVlVzUTBGQlF5eFZRVUZWTEVOQlFVTTdXVUZEZWtNc1RVRkJUU3h2UWtGQmIwSXNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1EwRkJRenRCUVVNM1JDeFpRVUZCTEVsQlFVa3NRMEZCUXl4dlFrRkJiMElzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVN1FVRkRla01zWjBKQlFVRXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXg1UTBGQmVVTXNWVUZCVlN4RFFVRkJMR2xDUVVGQkxFTkJRVzFDTEVOQlFVTXNRMEZCUXp0QlFVTjZSaXhoUVVGQk8xbEJSVVFzU1VGQlNTeGpRVUZqTEVkQlFXbERMRk5CUVZNc1EwRkJRenRaUVVNM1JDeEpRVUZKTEVsQlFVa3NRMEZCUXl4clFrRkJhMElzU1VGQlNTeFZRVUZWTEVOQlFVTXNZMEZCWXl4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOb1JTeG5Ra0ZCUVN4alFVRmpMRWRCUVVjc1EwRkJRU3hGUVVGQkxFbEJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVlVGQlZTeERRVUZETEdOQlFXTXNRMEZCUXl4RFFVRkRMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVrc1UwRkJVeXhEUVVGRE8wRkJRM3BHTEdGQlFVRTdXVUZGUkN4UFFVRlBPMEZCUTB3c1owSkJRVUVzVjBGQlZ5eEZRVUZGTEVkQlFVYzdaMEpCUTJoQ0xFbEJRVWtzUlVGQlJTeFZRVUZWTEVOQlFVTXNTVUZCU1R0blFrRkRja0lzVDBGQlR5eEZRVUZGTEZWQlFWVXNRMEZCUXl4UFFVRlBPMmRDUVVNelFpeFBRVUZQTEVWQlFVVXNWVUZCVlN4RFFVRkRMRTlCUVU4N1owSkJRek5DTEc5Q1FVRnZRaXhGUVVGRkxGVkJRVlVzUTBGQlF5eHZRa0ZCYjBJN1owSkJRM0pFTEd0Q1FVRnJRaXhGUVVGRkxGVkJRVlVzUTBGQlF5eHJRa0ZCYTBJN1owSkJRMnBFTEZWQlFWVXNSVUZCUlN4VlFVRlZMRU5CUVVNc1ZVRkJWVHRuUWtGRGFrTXNhMEpCUVd0Q0xFVkJRVVVzVlVGQlZTeERRVUZETEd0Q1FVRnJRanRuUWtGRGFrUXNZMEZCWXp0blFrRkRaQ3hWUVVGVkxFVkJRVVVzVlVGQlZTeERRVUZETEZWQlFWVTdaMEpCUTJwRExHZENRVUZuUWl4RlFVRkZMRlZCUVZVc1EwRkJReXhuUWtGQlowSTdaMEpCUXpkRExEUkNRVUUwUWl4RlFVRkZMRlZCUVZVc1EwRkJReXcwUWtGQk5FSTdaMEpCUTNKRkxESkNRVUV5UWl4RlFVRkZMRlZCUVZVc1EwRkJReXd5UWtGQk1rSTdaMEpCUTI1RkxHVkJRV1VzUlVGQlJTeFZRVUZWTEVOQlFVTXNaVUZCWlR0blFrRkRNME1zT0VKQlFUaENMRVZCUVVVc1ZVRkJWU3hEUVVGRExEaENRVUU0UWp0blFrRkRla1VzTUVKQlFUQkNMRVZCUVVVc1ZVRkJWU3hEUVVGRExEQkNRVUV3UWp0blFrRkRha1VzWTBGQll5eEZRVUZGTEZWQlFWVXNRMEZCUXl4alFVRmpPMmRDUVVONlF5eHRRa0ZCYlVJc1JVRkJSU3hWUVVGVkxFTkJRVU1zYlVKQlFXMUNPMmRDUVVOdVJDeFpRVUZaTEVWQlFVVXNWVUZCVlN4RFFVRkRMRmxCUVZrN1owSkJRM0pETEdWQlFXVXNSVUZCUlN4VlFVRlZMRU5CUVVNc1pVRkJaVHRoUVVNMVF5eERRVUZET3p0QlFVTklMRXRCUVVFN1FVRkZZU3hKUVVGQkxGTkJRVk1zUTBGQlF5eEpRVUZWTEVWQlFVRTdPenRCUVVOb1F5eFpRVUZCTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQmQwSXNRMEZCUXpzN1dVRkhiRVFzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1NVRkJTU3hEUVVGRExGVkJRVlVzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUlN4SFFVRTBRaXhEUVVGRE8xbEJRemRFTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRXQ3huUWtGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmlMR0ZCUVVFN1FVRkZSQ3haUVVGQkxFMUJRVTBzVlVGQlZTeEhRVUZITEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkRMMElzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlR0QlFVTm1MR2RDUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETzBGQlEySXNZVUZCUVRzN1FVRkhSQ3haUVVGQkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZPMEZCUTNSQ0xHZENRVUZCTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc09FVkJRVGhGTEVOQlFVTXNRMEZCUXp0QlFVTnFSeXhoUVVGQk96dEJRVWRFTEZsQlFVRXNTVUZCU1N4UFFVRjVReXhEUVVGRE8wRkJRemxETEZsQlFVRXNTVUZCU1N4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVsQlFVa3NWVUZCVlN4RFFVRkRMRTlCUVU4c1NVRkJTU3hKUVVGSkxFbEJRVWtzVlVGQlZTeERRVUZETEU5QlFVOHNTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSVHRCUVVOMFJpeG5Ra0ZCUVN4UFFVRlBMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4VFFVRlRMRVZCUVVVc1ZVRkJWU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBGQlF6RkZMR0ZCUVVFN1dVRkZSQ3hQUVVGUE8wRkJRMHdzWjBKQlFVRXNWMEZCVnl4RlFVRkZMRWRCUVVjN1owSkJRMmhDTEdWQlFXVXNSVUZCUlN4VlFVRlZMRU5CUVVNc1pVRkJaVHRuUWtGRE0wTXNUVUZCVFN4RlFVRkZMRlZCUVZVc1EwRkJReXhOUVVGTk8yZENRVU42UWl4dlFrRkJiMElzUlVGQlJTeFZRVUZWTEVOQlFVTXNiMEpCUVc5Q08yZENRVU55UkN4clFrRkJhMElzUlVGQlJTeFZRVUZWTEVOQlFVTXNhMEpCUVd0Q08yZENRVU5xUkN4WFFVRlhMRVZCUVVVc1ZVRkJWU3hEUVVGRExGZEJRVmM3WjBKQlEyNURMR1ZCUVdVc1JVRkJSU3hWUVVGVkxFTkJRVU1zWlVGQlpUdG5Ra0ZETTBNc2EwSkJRV3RDTEVWQlFVVXNWVUZCVlN4RFFVRkRMR3RDUVVGclFqdG5Ra0ZEYWtRc1UwRkJVeXhGUVVGRkxGVkJRVlVzUTBGQlF5eFRRVUZUTzJkQ1FVTXZRaXhuUWtGQlowSXNSVUZCUlN4VlFVRlZMRU5CUVVNc1owSkJRV2RDTzBGQlF6ZERMR2RDUVVGQkxFOUJRVThzUlVGQlJTeFBRVUZQTEV0QlFVRXNTVUZCUVN4SlFVRlFMRTlCUVU4c1MwRkJVQ3hMUVVGQkxFTkJRVUVzUjBGQlFTeFBRVUZQTEVkQlFVa3NVMEZCVXp0blFrRkROMElzUzBGQlN5eEZRVUZGTEZWQlFWVXNRMEZCUXl4TFFVRkxPMmRDUVVOMlFpeFBRVUZQTEVWQlFVVXNWVUZCVlN4RFFVRkRMRTlCUVU4N1owSkJRek5DTEdsQ1FVRnBRaXhGUVVGRkxGVkJRVlVzUTBGQlF5eHBRa0ZCYVVJN1lVRkRhRVFzUTBGQlF6czdRVUZEU0N4TFFVRkJPMEZCUldFc1NVRkJRU3hwUWtGQmFVSXNRMEZCUXl4TFFVRmhMRVZCUVVFN096dEJRVU16UXl4WlFVRkJMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCZDBJc1EwRkJRenRaUVVWc1JDeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlRTeE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJSWEJETEVsQlFVa3NUVUZCVFN4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOc1FpeG5Ra0ZCUVN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVOV0xEaERRVUU0UXl4TFFVRkxMRU5CUVVFc2IwUkJRVUVzUTBGQmMwUXNRMEZETVVjc1EwRkJRenRCUVVOR0xHZENRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJJc1lVRkJRVHM3TzBGQlMwUXNXVUZCUVN4SlFVRkpMRk5CUVZNc1IwRkJkVUlzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXpzN1FVRkhMME1zV1VGQlFTeEpRVUZKTEUxQlFVMHNRMEZCUXl4VlFVRlZMRWxCUVVrc1NVRkJTU3hGUVVGRk8wRkJRemRDTEdkQ1FVRkJMRTFCUVUwc1ZVRkJWU3hIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1dVRkJXU3hGUVVGRkxFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0QlFVTndSaXhuUWtGQlFTeE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRTFCUVUwc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlF5OUVMR2RDUVVGQkxGTkJRVk1zUjBGQlJ5eEhRVUZITEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wRkJRM1pETEdGQlFVRTdXVUZGUkN4SlFVRkpMRk5CUVZNc1NVRkJTU3hKUVVGSkxFVkJRVVU3UVVGRGNrSXNaMEpCUVVFc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGRFZpdzRRMEZCT0VNc1MwRkJTeXhEUVVGQkxEWkVRVUZCTEVOQlFTdEVMRU5CUTI1SUxFTkJRVU03UVVGRFJpeG5Ra0ZCUVN4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOaUxHRkJRVUU3UVVGRlJDeFpRVUZCTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETzFsQlEzWkRMRTlCUVU4c1RVRkJUU3hOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEZWQlFWVXNRMEZCUXl4VFFVRlRMRVZCUVVjc1NVRkJTU3hEUVVGRExFMUJRV01zUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eExRVUZMTEV0QlFVazdRVUZEZEVjc1owSkJRVUVzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVOeVFpeG5Ra0ZCUVN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExIVkVRVUYxUkN4RFFVRkRMRU5CUVVNN1FVRkRkRVVzWjBKQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRaQ3hoUVVGRExFTkJRVU1zUTBGQlF6czdRVUZEU2l4TFFVRkJPMEZCUTBZN08wRkRMMDFFT3pzN1FVRkhSenROUVVOVkxFOUJRVThzUTBGQlFUdEJRWE5EYkVJN096czdRVUZKUnp0QlFVTklMRWxCUVVFc1YwRkJRU3hEUVVGdFFpeE5RVUY1UWl4RlFVRkJPMEZCUXpGRExGRkJRVUVzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRE8wRkJRekZDTEZGQlFVRXNTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETzBGQlEzaENMRkZCUVVFc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRPMEZCUTJoRExGRkJRVUVzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFMUJRVTBzUTBGQlF5eHBRa0ZCYVVJc1EwRkJRenRCUVVOc1JDeFJRVUZCTEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1RVRkJUU3hEUVVGRExGZEJRVmNzUTBGQlF6dEJRVU4wUXl4UlFVRkJMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXp0TFFVTTNRanRCUVVWRU96czdPenM3UVVGTlJ6dEJRVU5KTEVsQlFVRXNUVUZCVFN4RFFVRkRMRXRCUVdFc1JVRkJRVHRCUVVONlFpeFJRVUZCTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03VVVGRmRrSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRMllzV1VGQlFTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEJRVU16UWl4VFFVRkJPMUZCUlVRc1NVRkJTU3hKUVVGSkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVN1FVRkRNVUlzV1VGQlFTeEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdRVUZEYWtNc1UwRkJRVHRMUVVOR08wRkJRMFk3TzAxRGRrVlpMRzFDUVVGdFFpeERRVUZCTzBGQlF6bENMRWxCUVVFc1NVRkJWeXhKUVVGSkxFZEJRVUU3TzBGQlJXSXNVVUZCUVN4UFFVRlBMRlZCUVZVc1EwRkJRenRMUVVOdVFqdEpRVlZFTEZkQlFXMUNMRU5CUVVFc1RVRkJhMElzUlVGQlJTeFBRVUZ2UXl4RlFVRkJPenRCUVVONlJTeFJRVUZCTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJSWEpDTEUxQlFVMHNWVUZCVlN4SFFVRkhMRTlCUVU4c1MwRkJRU3hKUVVGQkxFbEJRVkFzVDBGQlR5eExRVUZRTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFOUJRVThzUTBGQlJTeFZRVUZWTEVOQlFVTTdVVUZEZGtNc1RVRkJUU3h2UWtGQmIwSXNSMEZCUnl4UFFVRlBMRXRCUVVFc1NVRkJRU3hKUVVGUUxFOUJRVThzUzBGQlVDeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hQUVVGUExFTkJRVVVzYjBKQlFXOUNMRU5CUVVNN1FVRkZNMFFzVVVGQlFTeEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNUMEZCVHl4aFFVRlFMRTlCUVU4c1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCVUN4UFFVRlBMRU5CUVVVc1owSkJRV2RDTEUxQlFVa3NTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVRXNTVUZCU1N4NVFrRkJlVUlzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTXpSaXhSUVVGQkxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeFBRVUZQTEdGQlFWQXNUMEZCVHl4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZRTEU5QlFVOHNRMEZCUlN4cFFrRkJhVUlzVFVGQlNTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZKTERCQ1FVRXdRaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlF6bEdMRkZCUVVFc1NVRkJTU3hEUVVGRExHTkJRV003UVVGRGFrSXNXVUZCUVN4RFFVRkJMRVZCUVVFc1IwRkJRU3hQUVVGUExFdEJRVkFzU1VGQlFTeEpRVUZCTEU5QlFVOHNkVUpCUVZBc1QwRkJUeXhEUVVGRkxHTkJRV01zVFVGQlNTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZKTEhWQ1FVRjFRaXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEZWQlFWVXNSVUZCUlN4dlFrRkJiMElzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEZGtjc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4UFFVRlBMRXRCUVZBc1NVRkJRU3hKUVVGQkxFOUJRVThzZFVKQlFWQXNUMEZCVHl4RFFVRkZMRmxCUVZrc1RVRkJTU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxIRkNRVUZ4UWl4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxGVkJRVlVzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZETDBZc1VVRkJRU3hKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEVOQlFVRXNSVUZCUVN4SFFVRkJMRTlCUVU4c1lVRkJVQ3hQUVVGUExFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVZBc1QwRkJUeXhEUVVGRkxGVkJRVlVzVFVGQlNTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZKTEcxQ1FVRnRRaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzB0QlF6RkZPMEZCUlZrc1NVRkJRU3hUUVVGVExFTkJRVU1zU1VGQlZTeEZRVUZCT3p0WlFVTXZRaXhOUVVGTkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRM1JETEUxQlFVMHNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZETVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlF6VkRMRTFCUVUwc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkRlRU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUlRkRExGbEJRVUVzVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGNVFpeERRVUZETzBGQlEzSkVMRmxCUVVFc1RVRkJUU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4WFFVRnBReXhEUVVGRE96czdXVUZKYWtVc1NVRkJTU3hKUVVGSkxFbEJRVWtzVVVGQlVTeEZRVUZGTzBGQlEzQkNMR2RDUVVGQkxFMUJRVTBzVDBGQlR5eEhRVUZITEVsQlFVa3NUMEZCVHl4RFFVRkRPMjlDUVVNeFFpeExRVUZMTEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzN1FVRkRha0lzYjBKQlFVRXNhVUpCUVdsQ0xFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4dlFrRkJiMEk3UVVGRGNrUXNiMEpCUVVFc1YwRkJWeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNZMEZCWXp0dlFrRkRla01zVVVGQlVUdEJRVU5TTEc5Q1FVRkJMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTTdiMEpCUXk5Q0xFbEJRVWs3UVVGRFRDeHBRa0ZCUVN4RFFVRkRMRU5CUVVNN1FVRkZTQ3huUWtGQlFTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTlCUVU4c1IwRkJSeXhQUVVGUExFTkJRVU03UVVGRGFrTXNZVUZCUVR0VFFVTkdMRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRVUU3UVVGRFJqczdPenNpZlE9PVxuIiwiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgVlJNQ29yZSB9IGZyb20gJ0BwaXhpdi90aHJlZS12cm0tY29yZSc7XG5pbXBvcnQgeyBWUk1Ob2RlQ29uc3RyYWludE1hbmFnZXIgfSBmcm9tICdAcGl4aXYvdGhyZWUtdnJtLW5vZGUtY29uc3RyYWludCc7XG5pbXBvcnQgeyBWUk1TcHJpbmdCb25lTWFuYWdlciB9IGZyb20gJ0BwaXhpdi90aHJlZS12cm0tc3ByaW5nYm9uZSc7XG5pbXBvcnQgeyBWUk1QYXJhbWV0ZXJzIH0gZnJvbSAnLi9WUk1QYXJhbWV0ZXJzJztcblxuLyoqXG4gKiBBIGNsYXNzIHRoYXQgcmVwcmVzZW50cyBhIHNpbmdsZSBWUk0gbW9kZWwuXG4gKi9cbmV4cG9ydCBjbGFzcyBWUk0gZXh0ZW5kcyBWUk1Db3JlIHtcbiAgLyoqXG4gICAqIENvbnRhaW5zIG1hdGVyaWFscyBvZiB0aGUgVlJNLlxuICAgKiBgdXBkYXRlYCBtZXRob2Qgb2YgdGhlc2UgbWF0ZXJpYWxzIHdpbGwgYmUgY2FsbGVkIHZpYSBpdHMge0BsaW5rIFZSTS51cGRhdGV9IG1ldGhvZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtYXRlcmlhbHM/OiBUSFJFRS5NYXRlcmlhbFtdO1xuXG4gIC8qKlxuICAgKiBBIHtAbGluayBWUk1TcHJpbmdCb25lTWFuYWdlcn0gbWFuaXB1bGF0ZXMgYWxsIHNwcmluZyBib25lcyBhdHRhY2hlZCBvbiB0aGUgVlJNLlxuICAgKiBVc3VhbGx5IHlvdSBkb24ndCBoYXZlIHRvIGNhcmUgYWJvdXQgdGhpcyBwcm9wZXJ0eS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzcHJpbmdCb25lTWFuYWdlcj86IFZSTVNwcmluZ0JvbmVNYW5hZ2VyO1xuXG4gIC8qKlxuICAgKiBBIHtAbGluayBWUk1Ob2RlQ29uc3RyYWludE1hbmFnZXJ9IG1hbmlwdWxhdGVzIGFsbCBjb25zdHJhaW50cyBhdHRhY2hlZCBvbiB0aGUgVlJNLlxuICAgKiBVc3VhbGx5IHlvdSBkb24ndCBoYXZlIHRvIGNhcmUgYWJvdXQgdGhpcyBwcm9wZXJ0eS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBub2RlQ29uc3RyYWludE1hbmFnZXI/OiBWUk1Ob2RlQ29uc3RyYWludE1hbmFnZXI7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBWUk0gaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgW1tWUk1QYXJhbWV0ZXJzXV0gdGhhdCByZXByZXNlbnRzIGNvbXBvbmVudHMgb2YgdGhlIFZSTVxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogVlJNUGFyYW1ldGVycykge1xuICAgIHN1cGVyKHBhcmFtcyk7XG5cbiAgICB0aGlzLm1hdGVyaWFscyA9IHBhcmFtcy5tYXRlcmlhbHM7XG4gICAgdGhpcy5zcHJpbmdCb25lTWFuYWdlciA9IHBhcmFtcy5zcHJpbmdCb25lTWFuYWdlcjtcbiAgICB0aGlzLm5vZGVDb25zdHJhaW50TWFuYWdlciA9IHBhcmFtcy5ub2RlQ29uc3RyYWludE1hbmFnZXI7XG4gIH1cblxuICAvKipcbiAgICogKipZb3UgbmVlZCB0byBjYWxsIHRoaXMgb24geW91ciB1cGRhdGUgbG9vcC4qKlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHVwZGF0ZXMgZXZlcnkgVlJNIGNvbXBvbmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBkZWx0YSBkZWx0YVRpbWVcbiAgICovXG4gIHB1YmxpYyB1cGRhdGUoZGVsdGE6IG51bWJlcik6IHZvaWQge1xuICAgIHN1cGVyLnVwZGF0ZShkZWx0YSk7XG5cbiAgICBpZiAodGhpcy5ub2RlQ29uc3RyYWludE1hbmFnZXIpIHtcbiAgICAgIHRoaXMubm9kZUNvbnN0cmFpbnRNYW5hZ2VyLnVwZGF0ZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNwcmluZ0JvbmVNYW5hZ2VyKSB7XG4gICAgICB0aGlzLnNwcmluZ0JvbmVNYW5hZ2VyLnVwZGF0ZShkZWx0YSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWF0ZXJpYWxzKSB7XG4gICAgICB0aGlzLm1hdGVyaWFscy5mb3JFYWNoKChtYXRlcmlhbDogYW55KSA9PiB7XG4gICAgICAgIGlmIChtYXRlcmlhbC51cGRhdGUpIHtcbiAgICAgICAgICBtYXRlcmlhbC51cGRhdGUoZGVsdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19lc0RlY29yYXRlKGN0b3IsIGRlc2NyaXB0b3JJbiwgZGVjb3JhdG9ycywgY29udGV4dEluLCBpbml0aWFsaXplcnMsIGV4dHJhSW5pdGlhbGl6ZXJzKSB7XHJcbiAgICBmdW5jdGlvbiBhY2NlcHQoZikgeyBpZiAoZiAhPT0gdm9pZCAwICYmIHR5cGVvZiBmICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGdW5jdGlvbiBleHBlY3RlZFwiKTsgcmV0dXJuIGY7IH1cclxuICAgIHZhciBraW5kID0gY29udGV4dEluLmtpbmQsIGtleSA9IGtpbmQgPT09IFwiZ2V0dGVyXCIgPyBcImdldFwiIDoga2luZCA9PT0gXCJzZXR0ZXJcIiA/IFwic2V0XCIgOiBcInZhbHVlXCI7XHJcbiAgICB2YXIgdGFyZ2V0ID0gIWRlc2NyaXB0b3JJbiAmJiBjdG9yID8gY29udGV4dEluW1wic3RhdGljXCJdID8gY3RvciA6IGN0b3IucHJvdG90eXBlIDogbnVsbDtcclxuICAgIHZhciBkZXNjcmlwdG9yID0gZGVzY3JpcHRvckluIHx8ICh0YXJnZXQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgY29udGV4dEluLm5hbWUpIDoge30pO1xyXG4gICAgdmFyIF8sIGRvbmUgPSBmYWxzZTtcclxuICAgIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgdmFyIGNvbnRleHQgPSB7fTtcclxuICAgICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbikgY29udGV4dFtwXSA9IHAgPT09IFwiYWNjZXNzXCIgPyB7fSA6IGNvbnRleHRJbltwXTtcclxuICAgICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbi5hY2Nlc3MpIGNvbnRleHQuYWNjZXNzW3BdID0gY29udGV4dEluLmFjY2Vzc1twXTtcclxuICAgICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyID0gZnVuY3Rpb24gKGYpIHsgaWYgKGRvbmUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWRcIik7IGV4dHJhSW5pdGlhbGl6ZXJzLnB1c2goYWNjZXB0KGYgfHwgbnVsbCkpOyB9O1xyXG4gICAgICAgIHZhciByZXN1bHQgPSAoMCwgZGVjb3JhdG9yc1tpXSkoa2luZCA9PT0gXCJhY2Nlc3NvclwiID8geyBnZXQ6IGRlc2NyaXB0b3IuZ2V0LCBzZXQ6IGRlc2NyaXB0b3Iuc2V0IH0gOiBkZXNjcmlwdG9yW2tleV0sIGNvbnRleHQpO1xyXG4gICAgICAgIGlmIChraW5kID09PSBcImFjY2Vzc29yXCIpIHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdm9pZCAwKSBjb250aW51ZTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCB8fCB0eXBlb2YgcmVzdWx0ICE9PSBcIm9iamVjdFwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkXCIpO1xyXG4gICAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuZ2V0KSkgZGVzY3JpcHRvci5nZXQgPSBfO1xyXG4gICAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuc2V0KSkgZGVzY3JpcHRvci5zZXQgPSBfO1xyXG4gICAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuaW5pdCkpIGluaXRpYWxpemVycy5wdXNoKF8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChfID0gYWNjZXB0KHJlc3VsdCkpIHtcclxuICAgICAgICAgICAgaWYgKGtpbmQgPT09IFwiZmllbGRcIikgaW5pdGlhbGl6ZXJzLnB1c2goXyk7XHJcbiAgICAgICAgICAgIGVsc2UgZGVzY3JpcHRvcltrZXldID0gXztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGFyZ2V0KSBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSwgZGVzY3JpcHRvcik7XHJcbiAgICBkb25lID0gdHJ1ZTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3J1bkluaXRpYWxpemVycyh0aGlzQXJnLCBpbml0aWFsaXplcnMsIHZhbHVlKSB7XHJcbiAgICB2YXIgdXNlVmFsdWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMjtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5pdGlhbGl6ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFsdWUgPSB1c2VWYWx1ZSA/IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcsIHZhbHVlKSA6IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVzZVZhbHVlID8gdmFsdWUgOiB2b2lkIDA7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wcm9wS2V5KHgpIHtcclxuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gXCJzeW1ib2xcIiA/IHggOiBcIlwiLmNvbmNhdCh4KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NldEZ1bmN0aW9uTmFtZShmLCBuYW1lLCBwcmVmaXgpIHtcclxuICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJzeW1ib2xcIikgbmFtZSA9IG5hbWUuZGVzY3JpcHRpb24gPyBcIltcIi5jb25jYXQobmFtZS5kZXNjcmlwdGlvbiwgXCJdXCIpIDogXCJcIjtcclxuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwgXCJuYW1lXCIsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogcHJlZml4ID8gXCJcIi5jb25jYXQocHJlZml4LCBcIiBcIiwgbmFtZSkgOiBuYW1lIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xyXG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcclxuICAgICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xyXG4gICAgfVxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogZmFsc2UgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XHJcbn0pIDogZnVuY3Rpb24obywgdikge1xyXG4gICAgb1tcImRlZmF1bHRcIl0gPSB2O1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcclxuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XHJcbiAgICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJtXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIChraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlciwgdmFsdWUpIDogZiA/IGYudmFsdWUgPSB2YWx1ZSA6IHN0YXRlLnNldChyZWNlaXZlciwgdmFsdWUpKSwgdmFsdWU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4oc3RhdGUsIHJlY2VpdmVyKSB7XHJcbiAgICBpZiAocmVjZWl2ZXIgPT09IG51bGwgfHwgKHR5cGVvZiByZWNlaXZlciAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcmVjZWl2ZXIgIT09IFwiZnVuY3Rpb25cIikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgdXNlICdpbicgb3BlcmF0b3Igb24gbm9uLW9iamVjdFwiKTtcclxuICAgIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7XHJcbn1cclxuIiwiLyohXG4gKiBAcGl4aXYvdGhyZWUtdnJtLW1hdGVyaWFscy1tdG9vbiB2Mi4wLjZcbiAqIE1Ub29uICh0b29uIG1hdGVyaWFsKSBtb2R1bGUgZm9yIEBwaXhpdi90aHJlZS12cm1cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyMyBwaXhpdiBJbmMuXG4gKiBAcGl4aXYvdGhyZWUtdnJtLW1hdGVyaWFscy1tdG9vbiBpcyBkaXN0cmlidXRlZCB1bmRlciBNSVQgTGljZW5zZVxuICogaHR0cHM6Ly9naXRodWIuY29tL3BpeGl2L3RocmVlLXZybS9ibG9iL3JlbGVhc2UvTElDRU5TRVxuICovXG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG5cclxuZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxuXG52YXIgdmVydGV4U2hhZGVyID0gXCIvLyAjZGVmaW5lIFBIT05HXFxuXFxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XFxuXFxuI2lmbmRlZiBGTEFUX1NIQURFRFxcbiAgdmFyeWluZyB2ZWMzIHZOb3JtYWw7XFxuI2VuZGlmXFxuXFxuI2luY2x1ZGUgPGNvbW1vbj5cXG5cXG4vLyAjaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XFxuI2lmZGVmIE1UT09OX1VTRV9VVlxcbiAgdmFyeWluZyB2ZWMyIHZVdjtcXG5cXG4gIC8vIENPTVBBVDogcHJlLXIxNTEgdXNlcyBhIGNvbW1vbiB1dlRyYW5zZm9ybVxcbiAgI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA8IDE1MVxcbiAgICB1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XFxuICAjZW5kaWZcXG4jZW5kaWZcXG5cXG4vLyAjaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4Plxcbi8vIENPTUFQVDogcHJlLXIxNTEgdXNlcyB1djIgZm9yIGxpZ2h0TWFwIGFuZCBhb01hcFxcbiNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPCAxNTFcXG4gICNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKVxcbiAgICBhdHRyaWJ1dGUgdmVjMiB1djI7XFxuICAgIHZhcnlpbmcgdmVjMiB2VXYyO1xcbiAgICB1bmlmb3JtIG1hdDMgdXYyVHJhbnNmb3JtO1xcbiAgI2VuZGlmXFxuI2VuZGlmXFxuXFxuLy8gI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cXG4vLyAjaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxcbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cXG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxcbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cXG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XFxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cXG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XFxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cXG5cXG4jaWZkZWYgVVNFX09VVExJTkVXSURUSE1VTFRJUExZVEVYVFVSRVxcbiAgdW5pZm9ybSBzYW1wbGVyMkQgb3V0bGluZVdpZHRoTXVsdGlwbHlUZXh0dXJlO1xcbiAgdW5pZm9ybSBtYXQzIG91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZVV2VHJhbnNmb3JtO1xcbiNlbmRpZlxcblxcbnVuaWZvcm0gZmxvYXQgb3V0bGluZVdpZHRoRmFjdG9yO1xcblxcbnZvaWQgbWFpbigpIHtcXG5cXG4gIC8vICNpbmNsdWRlIDx1dl92ZXJ0ZXg+XFxuICAjaWZkZWYgTVRPT05fVVNFX1VWXFxuICAgIC8vIENPTVBBVDogcHJlLXIxNTEgdXNlcyBhIGNvbW1vbiB1dlRyYW5zZm9ybVxcbiAgICAjaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDE1MVxcbiAgICAgIHZVdiA9IHV2O1xcbiAgICAjZWxzZVxcbiAgICAgIHZVdiA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7XFxuICAgICNlbmRpZlxcbiAgI2VuZGlmXFxuXFxuICAvLyAjaW5jbHVkZSA8dXYyX3ZlcnRleD5cXG4gIC8vIENPTUFQVDogcHJlLXIxNTEgdXNlcyB1djIgZm9yIGxpZ2h0TWFwIGFuZCBhb01hcFxcbiAgI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA8IDE1MVxcbiAgICAjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcXG4gICAgICB2VXYyID0gKCB1djJUcmFuc2Zvcm0gKiB2ZWMzKCB1djIsIDEgKSApLnh5O1xcbiAgICAjZW5kaWZcXG4gICNlbmRpZlxcblxcbiAgI2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cXG5cXG4gICNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XFxuICAjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxcbiAgI2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cXG4gICNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cXG5cXG4gIC8vIHdlIG5lZWQgdGhpcyB0byBjb21wdXRlIHRoZSBvdXRsaW5lIHByb3Blcmx5XFxuICBvYmplY3ROb3JtYWwgPSBub3JtYWxpemUoIG9iamVjdE5vcm1hbCApO1xcblxcbiAgI2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxcblxcbiAgI2lmbmRlZiBGTEFUX1NIQURFRCAvLyBOb3JtYWwgY29tcHV0ZWQgd2l0aCBkZXJpdmF0aXZlcyB3aGVuIEZMQVRfU0hBREVEXFxuICAgIHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XFxuICAjZW5kaWZcXG5cXG4gICNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XFxuXFxuICAjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxcbiAgI2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cXG4gIC8vICNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxcbiAgI2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxcbiAgI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cXG4gICNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxcblxcbiAgdlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XFxuXFxuICBmbG9hdCBvdXRsaW5lVGV4ID0gMS4wO1xcblxcbiAgI2lmZGVmIE9VVExJTkVcXG4gICAgI2lmZGVmIFVTRV9PVVRMSU5FV0lEVEhNVUxUSVBMWVRFWFRVUkVcXG4gICAgICB2ZWMyIG91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZVV2ID0gKCBvdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmVVdlRyYW5zZm9ybSAqIHZlYzMoIHZVdiwgMSApICkueHk7XFxuICAgICAgb3V0bGluZVRleCA9IHRleHR1cmUyRCggb3V0bGluZVdpZHRoTXVsdGlwbHlUZXh0dXJlLCBvdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmVVdiApLmc7XFxuICAgICNlbmRpZlxcblxcbiAgICAjaWZkZWYgT1VUTElORV9XSURUSF9XT1JMRFxcbiAgICAgIGZsb2F0IHdvcmxkTm9ybWFsTGVuZ3RoID0gbGVuZ3RoKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xcbiAgICAgIHZlYzMgb3V0bGluZU9mZnNldCA9IG91dGxpbmVXaWR0aEZhY3RvciAqIG91dGxpbmVUZXggKiB3b3JsZE5vcm1hbExlbmd0aCAqIG9iamVjdE5vcm1hbDtcXG4gICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCBvdXRsaW5lT2Zmc2V0ICsgdHJhbnNmb3JtZWQsIDEuMCApO1xcbiAgICAjZW5kaWZcXG5cXG4gICAgI2lmZGVmIE9VVExJTkVfV0lEVEhfU0NSRUVOXFxuICAgICAgdmVjMyBjbGlwTm9ybWFsID0gKCBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNCggb2JqZWN0Tm9ybWFsLCAwLjAgKSApLnh5ejtcXG4gICAgICB2ZWMyIHByb2plY3RlZE5vcm1hbCA9IG5vcm1hbGl6ZSggY2xpcE5vcm1hbC54eSApO1xcbiAgICAgIHByb2plY3RlZE5vcm1hbC54ICo9IHByb2plY3Rpb25NYXRyaXhbIDAgXS54IC8gcHJvamVjdGlvbk1hdHJpeFsgMSBdLnk7XFxuICAgICAgZ2xfUG9zaXRpb24ueHkgKz0gMi4wICogb3V0bGluZVdpZHRoRmFjdG9yICogb3V0bGluZVRleCAqIHByb2plY3RlZE5vcm1hbC54eTtcXG4gICAgI2VuZGlmXFxuXFxuICAgIGdsX1Bvc2l0aW9uLnogKz0gMUUtNiAqIGdsX1Bvc2l0aW9uLnc7IC8vIGFudGktYXJ0aWZhY3QgbWFnaWNcXG4gICNlbmRpZlxcblxcbiAgI2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cXG4gIC8vICNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PlxcbiAgI2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XFxuICAjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cXG5cXG59XCI7XG5cbnZhciBmcmFnbWVudFNoYWRlciA9IFwiLy8gI2RlZmluZSBQSE9OR1xcblxcbnVuaWZvcm0gdmVjMyBsaXRGYWN0b3I7XFxuXFxudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xcblxcbnVuaWZvcm0gdmVjMyBzaGFkZUNvbG9yRmFjdG9yO1xcbiNpZmRlZiBVU0VfU0hBREVNVUxUSVBMWVRFWFRVUkVcXG4gIHVuaWZvcm0gc2FtcGxlcjJEIHNoYWRlTXVsdGlwbHlUZXh0dXJlO1xcbiAgdW5pZm9ybSBtYXQzIHNoYWRlTXVsdGlwbHlUZXh0dXJlVXZUcmFuc2Zvcm07XFxuI2VuZGlmXFxuXFxudW5pZm9ybSBmbG9hdCBzaGFkaW5nU2hpZnRGYWN0b3I7XFxudW5pZm9ybSBmbG9hdCBzaGFkaW5nVG9vbnlGYWN0b3I7XFxuXFxuI2lmZGVmIFVTRV9TSEFESU5HU0hJRlRURVhUVVJFXFxuICB1bmlmb3JtIHNhbXBsZXIyRCBzaGFkaW5nU2hpZnRUZXh0dXJlO1xcbiAgdW5pZm9ybSBtYXQzIHNoYWRpbmdTaGlmdFRleHR1cmVVdlRyYW5zZm9ybTtcXG4gIHVuaWZvcm0gZmxvYXQgc2hhZGluZ1NoaWZ0VGV4dHVyZVNjYWxlO1xcbiNlbmRpZlxcblxcbnVuaWZvcm0gZmxvYXQgZ2lFcXVhbGl6YXRpb25GYWN0b3I7XFxuXFxudW5pZm9ybSB2ZWMzIHBhcmFtZXRyaWNSaW1Db2xvckZhY3RvcjtcXG4jaWZkZWYgVVNFX1JJTU1VTFRJUExZVEVYVFVSRVxcbiAgdW5pZm9ybSBzYW1wbGVyMkQgcmltTXVsdGlwbHlUZXh0dXJlO1xcbiAgdW5pZm9ybSBtYXQzIHJpbU11bHRpcGx5VGV4dHVyZVV2VHJhbnNmb3JtO1xcbiNlbmRpZlxcbnVuaWZvcm0gZmxvYXQgcmltTGlnaHRpbmdNaXhGYWN0b3I7XFxudW5pZm9ybSBmbG9hdCBwYXJhbWV0cmljUmltRnJlc25lbFBvd2VyRmFjdG9yO1xcbnVuaWZvcm0gZmxvYXQgcGFyYW1ldHJpY1JpbUxpZnRGYWN0b3I7XFxuXFxuI2lmZGVmIFVTRV9NQVRDQVBURVhUVVJFXFxuICB1bmlmb3JtIHZlYzMgbWF0Y2FwRmFjdG9yO1xcbiAgdW5pZm9ybSBzYW1wbGVyMkQgbWF0Y2FwVGV4dHVyZTtcXG4gIHVuaWZvcm0gbWF0MyBtYXRjYXBUZXh0dXJlVXZUcmFuc2Zvcm07XFxuI2VuZGlmXFxuXFxudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xcbnVuaWZvcm0gZmxvYXQgZW1pc3NpdmVJbnRlbnNpdHk7XFxuXFxudW5pZm9ybSB2ZWMzIG91dGxpbmVDb2xvckZhY3RvcjtcXG51bmlmb3JtIGZsb2F0IG91dGxpbmVMaWdodGluZ01peEZhY3RvcjtcXG5cXG4jaWZkZWYgVVNFX1VWQU5JTUFUSU9OTUFTS1RFWFRVUkVcXG4gIHVuaWZvcm0gc2FtcGxlcjJEIHV2QW5pbWF0aW9uTWFza1RleHR1cmU7XFxuICB1bmlmb3JtIG1hdDMgdXZBbmltYXRpb25NYXNrVGV4dHVyZVV2VHJhbnNmb3JtO1xcbiNlbmRpZlxcblxcbnVuaWZvcm0gZmxvYXQgdXZBbmltYXRpb25TY3JvbGxYT2Zmc2V0O1xcbnVuaWZvcm0gZmxvYXQgdXZBbmltYXRpb25TY3JvbGxZT2Zmc2V0O1xcbnVuaWZvcm0gZmxvYXQgdXZBbmltYXRpb25Sb3RhdGlvblBoYXNlO1xcblxcbiNpbmNsdWRlIDxjb21tb24+XFxuI2luY2x1ZGUgPHBhY2tpbmc+XFxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxcbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50Plxcblxcbi8vICNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxcbiNpZiAoIGRlZmluZWQoIE1UT09OX1VTRV9VViApICYmICFkZWZpbmVkKCBNVE9PTl9VVlNfVkVSVEVYX09OTFkgKSApXFxuICB2YXJ5aW5nIHZlYzIgdlV2O1xcbiNlbmRpZlxcblxcbi8vICNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cXG4vLyBDT01BUFQ6IHByZS1yMTUxIHVzZXMgdXYyIGZvciBsaWdodE1hcCBhbmQgYW9NYXBcXG4jaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OIDwgMTUxXFxuICAjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcXG4gICAgdmFyeWluZyB2ZWMyIHZVdjI7XFxuICAjZW5kaWZcXG4jZW5kaWZcXG5cXG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XFxuXFxuI2lmZGVmIFVTRV9NQVBcXG4gIHVuaWZvcm0gbWF0MyBtYXBVdlRyYW5zZm9ybTtcXG4jZW5kaWZcXG5cXG4vLyAjaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cXG5cXG4jaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDEzMlxcbiAgI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PlxcbiNlbmRpZlxcblxcbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50Plxcbi8vICNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxcbiNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50PlxcblxcbiNpZmRlZiBVU0VfRU1JU1NJVkVNQVBcXG4gIHVuaWZvcm0gbWF0MyBlbWlzc2l2ZU1hcFV2VHJhbnNmb3JtO1xcbiNlbmRpZlxcblxcbi8vICNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XFxuLy8gI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50Plxcbi8vICNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XFxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50Plxcblxcbi8vICNpbmNsdWRlIDxic2Rmcz5cXG4vLyBDT01QQVQ6IHByZS1yMTUxIGRvZXNuJ3QgaGF2ZSBCUkRGX0xhbWJlcnQgaW4gPGNvbW1vbj5cXG4jaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OIDwgMTUxXFxuICB2ZWMzIEJSREZfTGFtYmVydCggY29uc3QgaW4gdmVjMyBkaWZmdXNlQ29sb3IgKSB7XFxuICAgIHJldHVybiBSRUNJUFJPQ0FMX1BJICogZGlmZnVzZUNvbG9yO1xcbiAgfVxcbiNlbmRpZlxcblxcbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cXG5cXG4jaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDEzMlxcbiAgI2luY2x1ZGUgPG5vcm1hbF9wYXJzX2ZyYWdtZW50PlxcbiNlbmRpZlxcblxcbi8vICNpbmNsdWRlIDxsaWdodHNfcGhvbmdfcGFyc19mcmFnbWVudD5cXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcXG5cXG4jaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OIDwgMTMyXFxuICAjaWZuZGVmIEZMQVRfU0hBREVEXFxuICAgIHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xcbiAgI2VuZGlmXFxuI2VuZGlmXFxuXFxuc3RydWN0IE1Ub29uTWF0ZXJpYWwge1xcbiAgdmVjMyBkaWZmdXNlQ29sb3I7XFxuICB2ZWMzIHNoYWRlQ29sb3I7XFxuICBmbG9hdCBzaGFkaW5nU2hpZnQ7XFxufTtcXG5cXG5mbG9hdCBsaW5lYXJzdGVwKCBmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCB0ICkge1xcbiAgcmV0dXJuIGNsYW1wKCAoIHQgLSBhICkgLyAoIGIgLSBhICksIDAuMCwgMS4wICk7XFxufVxcblxcbi8qKlxcbiAqIENvbnZlcnQgTmRvdEwgaW50byB0b29uIHNoYWRpbmcgZmFjdG9yIHVzaW5nIHNoYWRpbmdTaGlmdCBhbmQgc2hhZGluZ1Rvb255XFxuICovXFxuZmxvYXQgZ2V0U2hhZGluZyhcXG4gIGNvbnN0IGluIGZsb2F0IGRvdE5MLFxcbiAgY29uc3QgaW4gZmxvYXQgc2hhZG93LFxcbiAgY29uc3QgaW4gZmxvYXQgc2hhZGluZ1NoaWZ0XFxuKSB7XFxuICBmbG9hdCBzaGFkaW5nID0gZG90Tkw7XFxuICBzaGFkaW5nID0gc2hhZGluZyArIHNoYWRpbmdTaGlmdDtcXG4gIHNoYWRpbmcgPSBsaW5lYXJzdGVwKCAtMS4wICsgc2hhZGluZ1Rvb255RmFjdG9yLCAxLjAgLSBzaGFkaW5nVG9vbnlGYWN0b3IsIHNoYWRpbmcgKTtcXG4gIHNoYWRpbmcgKj0gc2hhZG93O1xcbiAgcmV0dXJuIHNoYWRpbmc7XFxufVxcblxcbi8qKlxcbiAqIE1peCBkaWZmdXNlQ29sb3IgYW5kIHNoYWRlQ29sb3IgdXNpbmcgc2hhZGluZyBmYWN0b3IgYW5kIGxpZ2h0IGNvbG9yXFxuICovXFxudmVjMyBnZXREaWZmdXNlKFxcbiAgY29uc3QgaW4gTVRvb25NYXRlcmlhbCBtYXRlcmlhbCxcXG4gIGNvbnN0IGluIGZsb2F0IHNoYWRpbmcsXFxuICBpbiB2ZWMzIGxpZ2h0Q29sb3JcXG4pIHtcXG4gICNpZmRlZiBERUJVR19MSVRTSEFERVJBVEVcXG4gICAgcmV0dXJuIHZlYzMoIEJSREZfTGFtYmVydCggc2hhZGluZyAqIGxpZ2h0Q29sb3IgKSApO1xcbiAgI2VuZGlmXFxuXFxuICAjaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OIDwgMTMyXFxuICAgICNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xcbiAgICAgIGxpZ2h0Q29sb3IgKj0gUEk7XFxuICAgICNlbmRpZlxcbiAgI2VuZGlmXFxuXFxuICB2ZWMzIGNvbCA9IGxpZ2h0Q29sb3IgKiBCUkRGX0xhbWJlcnQoIG1peCggbWF0ZXJpYWwuc2hhZGVDb2xvciwgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yLCBzaGFkaW5nICkgKTtcXG5cXG4gIC8vIFRoZSBcXFwiY29tbWVudCBvdXQgaWYgeW91IHdhbnQgdG8gUEJSIGFic29sdXRlbHlcXFwiIGxpbmVcXG4gICNpZmRlZiBWMF9DT01QQVRfU0hBREVcXG4gICAgY29sID0gbWluKCBjb2wsIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xcbiAgI2VuZGlmXFxuXFxuICByZXR1cm4gY29sO1xcbn1cXG5cXG4jaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDE1N1xcbiAgdm9pZCBSRV9EaXJlY3RfTVRvb24oIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIHZlYzMgZ2VvbWV0cnlQb3NpdGlvbiwgY29uc3QgaW4gdmVjMyBnZW9tZXRyeU5vcm1hbCwgY29uc3QgaW4gdmVjMyBnZW9tZXRyeVZpZXdEaXIsIGNvbnN0IGluIHZlYzMgZ2VvbWV0cnlDbGVhcmNvYXROb3JtYWwsIGNvbnN0IGluIE1Ub29uTWF0ZXJpYWwgbWF0ZXJpYWwsIGNvbnN0IGluIGZsb2F0IHNoYWRvdywgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XFxuICAgIGZsb2F0IGRvdE5MID0gY2xhbXAoIGRvdCggZ2VvbWV0cnlOb3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApLCAtMS4wLCAxLjAgKTtcXG4gICAgdmVjMyBpcnJhZGlhbmNlID0gZGlyZWN0TGlnaHQuY29sb3I7XFxuXFxuICAgICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPCAxMzJcXG4gICAgICAjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcXG4gICAgICAgIGlycmFkaWFuY2UgKj0gUEk7XFxuICAgICAgI2VuZGlmXFxuICAgICNlbmRpZlxcblxcbiAgICAvLyBkaXJlY3RTcGVjdWxhciB3aWxsIGJlIHVzZWQgZm9yIHJpbSBsaWdodGluZywgbm90IGFuIGFjdHVhbCBzcGVjdWxhclxcbiAgICByZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBpcnJhZGlhbmNlO1xcblxcbiAgICBpcnJhZGlhbmNlICo9IGRvdE5MO1xcblxcbiAgICBmbG9hdCBzaGFkaW5nID0gZ2V0U2hhZGluZyggZG90TkwsIHNoYWRvdywgbWF0ZXJpYWwuc2hhZGluZ1NoaWZ0ICk7XFxuXFxuICAgIC8vIHRvb24gc2hhZGVkIGRpZmZ1c2VcXG4gICAgcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSBnZXREaWZmdXNlKCBtYXRlcmlhbCwgc2hhZGluZywgZGlyZWN0TGlnaHQuY29sb3IgKTtcXG4gIH1cXG5cXG4gIHZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX01Ub29uKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIHZlYzMgZ2VvbWV0cnlQb3NpdGlvbiwgY29uc3QgaW4gdmVjMyBnZW9tZXRyeU5vcm1hbCwgY29uc3QgaW4gdmVjMyBnZW9tZXRyeVZpZXdEaXIsIGNvbnN0IGluIHZlYzMgZ2VvbWV0cnlDbGVhcmNvYXROb3JtYWwsIGNvbnN0IGluIE1Ub29uTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xcbiAgICAvLyBpbmRpcmVjdCBkaWZmdXNlIHdpbGwgdXNlIGRpZmZ1c2VDb2xvciwgbm8gc2hhZGVDb2xvciBpbnZvbHZlZFxcbiAgICByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XFxuXFxuICAgIC8vIGRpcmVjdFNwZWN1bGFyIHdpbGwgYmUgdXNlZCBmb3IgcmltIGxpZ2h0aW5nLCBub3QgYW4gYWN0dWFsIHNwZWN1bGFyXFxuICAgIHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGlycmFkaWFuY2U7XFxuICB9XFxuI2Vsc2VcXG4gIHZvaWQgUkVfRGlyZWN0X01Ub29uKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBNVG9vbk1hdGVyaWFsIG1hdGVyaWFsLCBjb25zdCBpbiBmbG9hdCBzaGFkb3csIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xcbiAgICBmbG9hdCBkb3ROTCA9IGNsYW1wKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICksIC0xLjAsIDEuMCApO1xcbiAgICB2ZWMzIGlycmFkaWFuY2UgPSBkaXJlY3RMaWdodC5jb2xvcjtcXG5cXG4gICAgI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA8IDEzMlxcbiAgICAgICNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xcbiAgICAgICAgaXJyYWRpYW5jZSAqPSBQSTtcXG4gICAgICAjZW5kaWZcXG4gICAgI2VuZGlmXFxuXFxuICAgIC8vIGRpcmVjdFNwZWN1bGFyIHdpbGwgYmUgdXNlZCBmb3IgcmltIGxpZ2h0aW5nLCBub3QgYW4gYWN0dWFsIHNwZWN1bGFyXFxuICAgIHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGlycmFkaWFuY2U7XFxuXFxuICAgIGlycmFkaWFuY2UgKj0gZG90Tkw7XFxuXFxuICAgIGZsb2F0IHNoYWRpbmcgPSBnZXRTaGFkaW5nKCBkb3ROTCwgc2hhZG93LCBtYXRlcmlhbC5zaGFkaW5nU2hpZnQgKTtcXG5cXG4gICAgLy8gdG9vbiBzaGFkZWQgZGlmZnVzZVxcbiAgICByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9IGdldERpZmZ1c2UoIG1hdGVyaWFsLCBzaGFkaW5nLCBkaXJlY3RMaWdodC5jb2xvciApO1xcbiAgfVxcblxcbiAgdm9pZCBSRV9JbmRpcmVjdERpZmZ1c2VfTVRvb24oIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gTVRvb25NYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XFxuICAgIC8vIGluZGlyZWN0IGRpZmZ1c2Ugd2lsbCB1c2UgZGlmZnVzZUNvbG9yLCBubyBzaGFkZUNvbG9yIGludm9sdmVkXFxuICAgIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcXG5cXG4gICAgLy8gZGlyZWN0U3BlY3VsYXIgd2lsbCBiZSB1c2VkIGZvciByaW0gbGlnaHRpbmcsIG5vdCBhbiBhY3R1YWwgc3BlY3VsYXJcXG4gICAgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gaXJyYWRpYW5jZTtcXG4gIH1cXG4jZW5kaWZcXG5cXG4jZGVmaW5lIFJFX0RpcmVjdCBSRV9EaXJlY3RfTVRvb25cXG4jZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZSBSRV9JbmRpcmVjdERpZmZ1c2VfTVRvb25cXG4jZGVmaW5lIE1hdGVyaWFsX0xpZ2h0UHJvYmVMT0QoIG1hdGVyaWFsICkgKDApXFxuXFxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50Plxcbi8vICNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XFxuXFxuLy8gI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PlxcbiNpZmRlZiBVU0VfTk9STUFMTUFQXFxuXFxuICB1bmlmb3JtIHNhbXBsZXIyRCBub3JtYWxNYXA7XFxuICB1bmlmb3JtIG1hdDMgbm9ybWFsTWFwVXZUcmFuc2Zvcm07XFxuICB1bmlmb3JtIHZlYzIgbm9ybWFsU2NhbGU7XFxuXFxuI2VuZGlmXFxuXFxuLy8gQ09NUEFUOiBVU0VfTk9STUFMTUFQX09CSkVDVFNQQUNFIHVzZWQgdG8gYmUgT0JKRUNUU1BBQ0VfTk9STUFMTUFQIGluIHByZS1yMTUxXFxuI2lmIGRlZmluZWQoIFVTRV9OT1JNQUxNQVBfT0JKRUNUU1BBQ0UgKSB8fCBkZWZpbmVkKCBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAgKVxcblxcbiAgdW5pZm9ybSBtYXQzIG5vcm1hbE1hdHJpeDtcXG5cXG4jZW5kaWZcXG5cXG4vLyBDT01QQVQ6IFVTRV9OT1JNQUxNQVBfVEFOR0VOVFNQQUNFIHVzZWQgdG8gYmUgVEFOR0VOVFNQQUNFX05PUk1BTE1BUCBpbiBwcmUtcjE1MVxcbiNpZiAhIGRlZmluZWQgKCBVU0VfVEFOR0VOVCApICYmICggZGVmaW5lZCAoIFVTRV9OT1JNQUxNQVBfVEFOR0VOVFNQQUNFICkgfHwgZGVmaW5lZCAoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKSApXFxuXFxuICAvLyBQZXItUGl4ZWwgVGFuZ2VudCBTcGFjZSBOb3JtYWwgTWFwcGluZ1xcbiAgLy8gaHR0cDovL2hhY2tzb2ZsaWZlLmJsb2dzcG90LmNoLzIwMDkvMTEvcGVyLXBpeGVsLXRhbmdlbnQtc3BhY2Utbm9ybWFsLW1hcHBpbmcuaHRtbFxcblxcbiAgLy8gdGhyZWUtdnJtIHNwZWNpZmljIGNoYW5nZTogaXQgcmVxdWlyZXMgYHV2YCBhcyBhbiBpbnB1dCBpbiBvcmRlciB0byBzdXBwb3J0IHV2IHNjcm9sbHNcXG5cXG4gIC8vIFRlbXBvcmFyeSBjb21wYXQgYWdhaW5zdCBzaGFkZXIgY2hhbmdlIEAgVGhyZWUuanMgcjEyNiwgcjE1MVxcbiAgI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxNTFcXG5cXG4gICAgbWF0MyBnZXRUYW5nZW50RnJhbWUoIHZlYzMgZXllX3BvcywgdmVjMyBzdXJmX25vcm0sIHZlYzIgdXYgKSB7XFxuXFxuICAgICAgdmVjMyBxMCA9IGRGZHgoIGV5ZV9wb3MueHl6ICk7XFxuICAgICAgdmVjMyBxMSA9IGRGZHkoIGV5ZV9wb3MueHl6ICk7XFxuICAgICAgdmVjMiBzdDAgPSBkRmR4KCB1di5zdCApO1xcbiAgICAgIHZlYzIgc3QxID0gZEZkeSggdXYuc3QgKTtcXG5cXG4gICAgICB2ZWMzIE4gPSBzdXJmX25vcm07XFxuXFxuICAgICAgdmVjMyBxMXBlcnAgPSBjcm9zcyggcTEsIE4gKTtcXG4gICAgICB2ZWMzIHEwcGVycCA9IGNyb3NzKCBOLCBxMCApO1xcblxcbiAgICAgIHZlYzMgVCA9IHExcGVycCAqIHN0MC54ICsgcTBwZXJwICogc3QxLng7XFxuICAgICAgdmVjMyBCID0gcTFwZXJwICogc3QwLnkgKyBxMHBlcnAgKiBzdDEueTtcXG5cXG4gICAgICBmbG9hdCBkZXQgPSBtYXgoIGRvdCggVCwgVCApLCBkb3QoIEIsIEIgKSApO1xcbiAgICAgIGZsb2F0IHNjYWxlID0gKCBkZXQgPT0gMC4wICkgPyAwLjAgOiBpbnZlcnNlc3FydCggZGV0ICk7XFxuXFxuICAgICAgcmV0dXJuIG1hdDMoIFQgKiBzY2FsZSwgQiAqIHNjYWxlLCBOICk7XFxuXFxuICAgIH1cXG5cXG4gICNlbGlmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxMjZcXG5cXG4gICAgdmVjMyBwZXJ0dXJiTm9ybWFsMkFyYiggdmVjMiB1diwgdmVjMyBleWVfcG9zLCB2ZWMzIHN1cmZfbm9ybSwgdmVjMyBtYXBOLCBmbG9hdCBmYWNlRGlyZWN0aW9uICkge1xcblxcbiAgICAgIHZlYzMgcTAgPSB2ZWMzKCBkRmR4KCBleWVfcG9zLnggKSwgZEZkeCggZXllX3Bvcy55ICksIGRGZHgoIGV5ZV9wb3MueiApICk7XFxuICAgICAgdmVjMyBxMSA9IHZlYzMoIGRGZHkoIGV5ZV9wb3MueCApLCBkRmR5KCBleWVfcG9zLnkgKSwgZEZkeSggZXllX3Bvcy56ICkgKTtcXG4gICAgICB2ZWMyIHN0MCA9IGRGZHgoIHV2LnN0ICk7XFxuICAgICAgdmVjMiBzdDEgPSBkRmR5KCB1di5zdCApO1xcblxcbiAgICAgIHZlYzMgTiA9IG5vcm1hbGl6ZSggc3VyZl9ub3JtICk7XFxuXFxuICAgICAgdmVjMyBxMXBlcnAgPSBjcm9zcyggcTEsIE4gKTtcXG4gICAgICB2ZWMzIHEwcGVycCA9IGNyb3NzKCBOLCBxMCApO1xcblxcbiAgICAgIHZlYzMgVCA9IHExcGVycCAqIHN0MC54ICsgcTBwZXJwICogc3QxLng7XFxuICAgICAgdmVjMyBCID0gcTFwZXJwICogc3QwLnkgKyBxMHBlcnAgKiBzdDEueTtcXG5cXG4gICAgICAvLyB0aHJlZS12cm0gc3BlY2lmaWMgY2hhbmdlOiBXb3JrYXJvdW5kIGZvciB0aGUgaXNzdWUgdGhhdCBoYXBwZW5zIHdoZW4gZGVsdGEgb2YgdXYgPSAwLjBcXG4gICAgICAvLyBUT0RPOiBJcyB0aGlzIHN0aWxsIHJlcXVpcmVkPyBPciBzaGFsbCBJIG1ha2UgYSBQUiBhYm91dCBpdD9cXG4gICAgICBpZiAoIGxlbmd0aCggVCApID09IDAuMCB8fCBsZW5ndGgoIEIgKSA9PSAwLjAgKSB7XFxuICAgICAgICByZXR1cm4gc3VyZl9ub3JtO1xcbiAgICAgIH1cXG5cXG4gICAgICBmbG9hdCBkZXQgPSBtYXgoIGRvdCggVCwgVCApLCBkb3QoIEIsIEIgKSApO1xcbiAgICAgIGZsb2F0IHNjYWxlID0gKCBkZXQgPT0gMC4wICkgPyAwLjAgOiBmYWNlRGlyZWN0aW9uICogaW52ZXJzZXNxcnQoIGRldCApO1xcblxcbiAgICAgIHJldHVybiBub3JtYWxpemUoIFQgKiAoIG1hcE4ueCAqIHNjYWxlICkgKyBCICogKCBtYXBOLnkgKiBzY2FsZSApICsgTiAqIG1hcE4ueiApO1xcblxcbiAgICB9XFxuXFxuICAjZWxzZVxcblxcbiAgICB2ZWMzIHBlcnR1cmJOb3JtYWwyQXJiKCB2ZWMyIHV2LCB2ZWMzIGV5ZV9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMzIG1hcE4gKSB7XFxuXFxuICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgQWRyZW5vIDNYWCBkRmQqKCB2ZWMzICkgYnVnLiBTZWUgIzk5ODhcXG5cXG4gICAgICB2ZWMzIHEwID0gdmVjMyggZEZkeCggZXllX3Bvcy54ICksIGRGZHgoIGV5ZV9wb3MueSApLCBkRmR4KCBleWVfcG9zLnogKSApO1xcbiAgICAgIHZlYzMgcTEgPSB2ZWMzKCBkRmR5KCBleWVfcG9zLnggKSwgZEZkeSggZXllX3Bvcy55ICksIGRGZHkoIGV5ZV9wb3MueiApICk7XFxuICAgICAgdmVjMiBzdDAgPSBkRmR4KCB1di5zdCApO1xcbiAgICAgIHZlYzIgc3QxID0gZEZkeSggdXYuc3QgKTtcXG5cXG4gICAgICBmbG9hdCBzY2FsZSA9IHNpZ24oIHN0MS50ICogc3QwLnMgLSBzdDAudCAqIHN0MS5zICk7IC8vIHdlIGRvIG5vdCBjYXJlIGFib3V0IHRoZSBtYWduaXR1ZGVcXG5cXG4gICAgICB2ZWMzIFMgPSAoIHEwICogc3QxLnQgLSBxMSAqIHN0MC50ICkgKiBzY2FsZTtcXG4gICAgICB2ZWMzIFQgPSAoIC0gcTAgKiBzdDEucyArIHExICogc3QwLnMgKSAqIHNjYWxlO1xcblxcbiAgICAgIC8vIHRocmVlLXZybSBzcGVjaWZpYyBjaGFuZ2U6IFdvcmthcm91bmQgZm9yIHRoZSBpc3N1ZSB0aGF0IGhhcHBlbnMgd2hlbiBkZWx0YSBvZiB1diA9IDAuMFxcbiAgICAgIC8vIFRPRE86IElzIHRoaXMgc3RpbGwgcmVxdWlyZWQ/IE9yIHNoYWxsIEkgbWFrZSBhIFBSIGFib3V0IGl0P1xcblxcbiAgICAgIGlmICggbGVuZ3RoKCBTICkgPT0gMC4wIHx8IGxlbmd0aCggVCApID09IDAuMCApIHtcXG4gICAgICAgIHJldHVybiBzdXJmX25vcm07XFxuICAgICAgfVxcblxcbiAgICAgIFMgPSBub3JtYWxpemUoIFMgKTtcXG4gICAgICBUID0gbm9ybWFsaXplKCBUICk7XFxuICAgICAgdmVjMyBOID0gbm9ybWFsaXplKCBzdXJmX25vcm0gKTtcXG5cXG4gICAgICAjaWZkZWYgRE9VQkxFX1NJREVEXFxuXFxuICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciBBZHJlbm8gR1BVcyBnbF9Gcm9udEZhY2luZyBidWcuIFNlZSAjMTU4NTAgYW5kICMxMDMzMVxcblxcbiAgICAgICAgYm9vbCBmcm9udEZhY2luZyA9IGRvdCggY3Jvc3MoIFMsIFQgKSwgTiApID4gMC4wO1xcblxcbiAgICAgICAgbWFwTi54eSAqPSAoIGZsb2F0KCBmcm9udEZhY2luZyApICogMi4wIC0gMS4wICk7XFxuXFxuICAgICAgI2Vsc2VcXG5cXG4gICAgICAgIG1hcE4ueHkgKj0gKCBmbG9hdCggZ2xfRnJvbnRGYWNpbmcgKSAqIDIuMCAtIDEuMCApO1xcblxcbiAgICAgICNlbmRpZlxcblxcbiAgICAgIG1hdDMgdHNuID0gbWF0MyggUywgVCwgTiApO1xcbiAgICAgIHJldHVybiBub3JtYWxpemUoIHRzbiAqIG1hcE4gKTtcXG5cXG4gICAgfVxcblxcbiAgI2VuZGlmXFxuXFxuI2VuZGlmXFxuXFxuLy8gI2luY2x1ZGUgPHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ+XFxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XFxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxcblxcbi8vID09IHBvc3QgY29ycmVjdGlvbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxudm9pZCBwb3N0Q29ycmVjdGlvbigpIHtcXG4gICNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cXG4gICNpbmNsdWRlIDxjb2xvcnNwYWNlX2ZyYWdtZW50PlxcbiAgI2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cXG4gICNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxcbiAgI2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cXG59XFxuXFxuLy8gPT0gbWFpbiBwcm9jZWR1cmUgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG52b2lkIG1haW4oKSB7XFxuICAjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxcblxcbiAgdmVjMiB1diA9IHZlYzIoMC41LCAwLjUpO1xcblxcbiAgI2lmICggZGVmaW5lZCggTVRPT05fVVNFX1VWICkgJiYgIWRlZmluZWQoIE1UT09OX1VWU19WRVJURVhfT05MWSApIClcXG4gICAgdXYgPSB2VXY7XFxuXFxuICAgIGZsb2F0IHV2QW5pbU1hc2sgPSAxLjA7XFxuICAgICNpZmRlZiBVU0VfVVZBTklNQVRJT05NQVNLVEVYVFVSRVxcbiAgICAgIHZlYzIgdXZBbmltYXRpb25NYXNrVGV4dHVyZVV2ID0gKCB1dkFuaW1hdGlvbk1hc2tUZXh0dXJlVXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7XFxuICAgICAgdXZBbmltTWFzayA9IHRleHR1cmUyRCggdXZBbmltYXRpb25NYXNrVGV4dHVyZSwgdXZBbmltYXRpb25NYXNrVGV4dHVyZVV2ICkuYjtcXG4gICAgI2VuZGlmXFxuXFxuICAgIHV2ID0gdXYgKyB2ZWMyKCB1dkFuaW1hdGlvblNjcm9sbFhPZmZzZXQsIHV2QW5pbWF0aW9uU2Nyb2xsWU9mZnNldCApICogdXZBbmltTWFzaztcXG4gICAgZmxvYXQgdXZSb3RDb3MgPSBjb3MoIHV2QW5pbWF0aW9uUm90YXRpb25QaGFzZSAqIHV2QW5pbU1hc2sgKTtcXG4gICAgZmxvYXQgdXZSb3RTaW4gPSBzaW4oIHV2QW5pbWF0aW9uUm90YXRpb25QaGFzZSAqIHV2QW5pbU1hc2sgKTtcXG4gICAgdXYgPSBtYXQyKCB1dlJvdENvcywgLXV2Um90U2luLCB1dlJvdFNpbiwgdXZSb3RDb3MgKSAqICggdXYgLSAwLjUgKSArIDAuNTtcXG4gICNlbmRpZlxcblxcbiAgI2lmZGVmIERFQlVHX1VWXFxuICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApO1xcbiAgICAjaWYgKCBkZWZpbmVkKCBNVE9PTl9VU0VfVVYgKSAmJiAhZGVmaW5lZCggTVRPT05fVVZTX1ZFUlRFWF9PTkxZICkgKVxcbiAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoIHV2LCAwLjAsIDEuMCApO1xcbiAgICAjZW5kaWZcXG4gICAgcmV0dXJuO1xcbiAgI2VuZGlmXFxuXFxuICB2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGxpdEZhY3Rvciwgb3BhY2l0eSApO1xcbiAgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcXG4gIHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmUgKiBlbWlzc2l2ZUludGVuc2l0eTtcXG5cXG4gICNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cXG5cXG4gIC8vICNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XFxuICAjaWZkZWYgVVNFX01BUFxcbiAgICB2ZWMyIG1hcFV2ID0gKCBtYXBVdlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTtcXG4gICAgdmVjNCBzYW1wbGVkRGlmZnVzZUNvbG9yID0gdGV4dHVyZTJEKCBtYXAsIG1hcFV2ICk7XFxuICAgICNpZmRlZiBERUNPREVfVklERU9fVEVYVFVSRVxcbiAgICAgIHNhbXBsZWREaWZmdXNlQ29sb3IgPSB2ZWM0KCBtaXgoIHBvdyggc2FtcGxlZERpZmZ1c2VDb2xvci5yZ2IgKiAwLjk0Nzg2NzI5ODYgKyB2ZWMzKCAwLjA1MjEzMjcwMTQgKSwgdmVjMyggMi40ICkgKSwgc2FtcGxlZERpZmZ1c2VDb2xvci5yZ2IgKiAwLjA3NzM5OTM4MDgsIHZlYzMoIGxlc3NUaGFuRXF1YWwoIHNhbXBsZWREaWZmdXNlQ29sb3IucmdiLCB2ZWMzKCAwLjA0MDQ1ICkgKSApICksIHNhbXBsZWREaWZmdXNlQ29sb3IudyApO1xcbiAgICAjZW5kaWZcXG4gICAgZGlmZnVzZUNvbG9yICo9IHNhbXBsZWREaWZmdXNlQ29sb3I7XFxuICAjZW5kaWZcXG5cXG4gIC8vICNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cXG4gICNpZiAoIGRlZmluZWQoIFVTRV9DT0xPUiApICYmICFkZWZpbmVkKCBJR05PUkVfVkVSVEVYX0NPTE9SICkgKVxcbiAgICBkaWZmdXNlQ29sb3IucmdiICo9IHZDb2xvcjtcXG4gICNlbmRpZlxcblxcbiAgLy8gI2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxcblxcbiAgI2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cXG5cXG4gIC8vICNpbmNsdWRlIDxzcGVjdWxhcm1hcF9mcmFnbWVudD5cXG5cXG4gIC8vICNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XFxuICBmbG9hdCBmYWNlRGlyZWN0aW9uID0gZ2xfRnJvbnRGYWNpbmcgPyAxLjAgOiAtMS4wO1xcblxcbiAgI2lmZGVmIEZMQVRfU0hBREVEXFxuXFxuICAgIHZlYzMgZmR4ID0gZEZkeCggdlZpZXdQb3NpdGlvbiApO1xcbiAgICB2ZWMzIGZkeSA9IGRGZHkoIHZWaWV3UG9zaXRpb24gKTtcXG4gICAgdmVjMyBub3JtYWwgPSBub3JtYWxpemUoIGNyb3NzKCBmZHgsIGZkeSApICk7XFxuXFxuICAjZWxzZVxcblxcbiAgICB2ZWMzIG5vcm1hbCA9IG5vcm1hbGl6ZSggdk5vcm1hbCApO1xcblxcbiAgICAjaWZkZWYgRE9VQkxFX1NJREVEXFxuXFxuICAgICAgbm9ybWFsICo9IGZhY2VEaXJlY3Rpb247XFxuXFxuICAgICNlbmRpZlxcblxcbiAgI2VuZGlmXFxuXFxuICAjaWZkZWYgVVNFX05PUk1BTE1BUFxcblxcbiAgICB2ZWMyIG5vcm1hbE1hcFV2ID0gKCBub3JtYWxNYXBVdlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTtcXG5cXG4gICNlbmRpZlxcblxcbiAgI2lmZGVmIFVTRV9OT1JNQUxNQVBfVEFOR0VOVFNQQUNFXFxuXFxuICAgICNpZmRlZiBVU0VfVEFOR0VOVFxcblxcbiAgICAgIG1hdDMgdGJuID0gbWF0Myggbm9ybWFsaXplKCB2VGFuZ2VudCApLCBub3JtYWxpemUoIHZCaXRhbmdlbnQgKSwgbm9ybWFsICk7XFxuXFxuICAgICNlbHNlXFxuXFxuICAgICAgbWF0MyB0Ym4gPSBnZXRUYW5nZW50RnJhbWUoIC0gdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCBub3JtYWxNYXBVdiApO1xcblxcbiAgICAjZW5kaWZcXG5cXG4gICAgI2lmIGRlZmluZWQoIERPVUJMRV9TSURFRCApICYmICEgZGVmaW5lZCggRkxBVF9TSEFERUQgKVxcblxcbiAgICAgIHRiblswXSAqPSBmYWNlRGlyZWN0aW9uO1xcbiAgICAgIHRiblsxXSAqPSBmYWNlRGlyZWN0aW9uO1xcblxcbiAgICAjZW5kaWZcXG5cXG4gICNlbmRpZlxcblxcbiAgI2lmZGVmIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQXFxuXFxuICAgICNpZmRlZiBVU0VfVEFOR0VOVFxcblxcbiAgICAgIG1hdDMgdGJuMiA9IG1hdDMoIG5vcm1hbGl6ZSggdlRhbmdlbnQgKSwgbm9ybWFsaXplKCB2Qml0YW5nZW50ICksIG5vcm1hbCApO1xcblxcbiAgICAjZWxzZVxcblxcbiAgICAgIG1hdDMgdGJuMiA9IGdldFRhbmdlbnRGcmFtZSggLSB2Vmlld1Bvc2l0aW9uLCBub3JtYWwsIHZDbGVhcmNvYXROb3JtYWxNYXBVdiApO1xcblxcbiAgICAjZW5kaWZcXG5cXG4gICAgI2lmIGRlZmluZWQoIERPVUJMRV9TSURFRCApICYmICEgZGVmaW5lZCggRkxBVF9TSEFERUQgKVxcblxcbiAgICAgIHRibjJbMF0gKj0gZmFjZURpcmVjdGlvbjtcXG4gICAgICB0Ym4yWzFdICo9IGZhY2VEaXJlY3Rpb247XFxuXFxuICAgICNlbmRpZlxcblxcbiAgI2VuZGlmXFxuXFxuICAvLyBub24gcGVydHVyYmVkIG5vcm1hbCBmb3IgY2xlYXJjb2F0IGFtb25nIG90aGVyc1xcblxcbiAgdmVjMyBub25QZXJ0dXJiZWROb3JtYWwgPSBub3JtYWw7XFxuXFxuICAjaWZkZWYgT1VUTElORVxcbiAgICBub3JtYWwgKj0gLTEuMDtcXG4gICNlbmRpZlxcblxcbiAgLy8gI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxcblxcbiAgLy8gQ09NUEFUOiBVU0VfTk9STUFMTUFQX09CSkVDVFNQQUNFIHVzZWQgdG8gYmUgT0JKRUNUU1BBQ0VfTk9STUFMTUFQIGluIHByZS1yMTUxXFxuICAjaWYgZGVmaW5lZCggVVNFX05PUk1BTE1BUF9PQkpFQ1RTUEFDRSApIHx8IGRlZmluZWQoIE9CSkVDVFNQQUNFX05PUk1BTE1BUCApXFxuXFxuICAgIG5vcm1hbCA9IHRleHR1cmUyRCggbm9ybWFsTWFwLCBub3JtYWxNYXBVdiApLnh5eiAqIDIuMCAtIDEuMDsgLy8gb3ZlcnJpZGVzIGJvdGggZmxhdFNoYWRpbmcgYW5kIGF0dHJpYnV0ZSBub3JtYWxzXFxuXFxuICAgICNpZmRlZiBGTElQX1NJREVEXFxuXFxuICAgICAgbm9ybWFsID0gLSBub3JtYWw7XFxuXFxuICAgICNlbmRpZlxcblxcbiAgICAjaWZkZWYgRE9VQkxFX1NJREVEXFxuXFxuICAgICAgLy8gVGVtcG9yYXJ5IGNvbXBhdCBhZ2FpbnN0IHNoYWRlciBjaGFuZ2UgQCBUaHJlZS5qcyByMTI2XFxuICAgICAgLy8gU2VlOiAjMjEyMDUsICMyMTMwNywgIzIxMjk5XFxuICAgICAgI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxMjZcXG5cXG4gICAgICAgIG5vcm1hbCA9IG5vcm1hbCAqIGZhY2VEaXJlY3Rpb247XFxuXFxuICAgICAgI2Vsc2VcXG5cXG4gICAgICAgIG5vcm1hbCA9IG5vcm1hbCAqICggZmxvYXQoIGdsX0Zyb250RmFjaW5nICkgKiAyLjAgLSAxLjAgKTtcXG5cXG4gICAgICAjZW5kaWZcXG5cXG4gICAgI2VuZGlmXFxuXFxuICAgIG5vcm1hbCA9IG5vcm1hbGl6ZSggbm9ybWFsTWF0cml4ICogbm9ybWFsICk7XFxuXFxuICAvLyBDT01QQVQ6IFVTRV9OT1JNQUxNQVBfVEFOR0VOVFNQQUNFIHVzZWQgdG8gYmUgVEFOR0VOVFNQQUNFX05PUk1BTE1BUCBpbiBwcmUtcjE1MVxcbiAgI2VsaWYgZGVmaW5lZCggVVNFX05PUk1BTE1BUF9UQU5HRU5UU1BBQ0UgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcXG5cXG4gICAgdmVjMyBtYXBOID0gdGV4dHVyZTJEKCBub3JtYWxNYXAsIG5vcm1hbE1hcFV2ICkueHl6ICogMi4wIC0gMS4wO1xcbiAgICBtYXBOLnh5ICo9IG5vcm1hbFNjYWxlO1xcblxcbiAgICAvLyBDT01QQVQ6IHByZS1yMTUxXFxuICAgICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTUxIHx8IGRlZmluZWQoIFVTRV9UQU5HRU5UIClcXG5cXG4gICAgICBub3JtYWwgPSBub3JtYWxpemUoIHRibiAqIG1hcE4gKTtcXG5cXG4gICAgI2Vsc2VcXG5cXG4gICAgICAvLyBwcmUtcjEyNlxcbiAgICAgICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTI2XFxuXFxuICAgICAgICBub3JtYWwgPSBwZXJ0dXJiTm9ybWFsMkFyYiggdXYsIC12Vmlld1Bvc2l0aW9uLCBub3JtYWwsIG1hcE4sIGZhY2VEaXJlY3Rpb24gKTtcXG5cXG4gICAgICAjZWxzZVxcblxcbiAgICAgICAgbm9ybWFsID0gcGVydHVyYk5vcm1hbDJBcmIoIHV2LCAtdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCBtYXBOICk7XFxuXFxuICAgICAgI2VuZGlmXFxuXFxuICAgICNlbmRpZlxcblxcbiAgI2VuZGlmXFxuXFxuICAvLyAjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XFxuICAjaWZkZWYgVVNFX0VNSVNTSVZFTUFQXFxuICAgIHZlYzIgZW1pc3NpdmVNYXBVdiA9ICggZW1pc3NpdmVNYXBVdlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTtcXG4gICAgdG90YWxFbWlzc2l2ZVJhZGlhbmNlICo9IHRleHR1cmUyRCggZW1pc3NpdmVNYXAsIGVtaXNzaXZlTWFwVXYgKS5yZ2I7XFxuICAjZW5kaWZcXG5cXG4gICNpZmRlZiBERUJVR19OT1JNQUxcXG4gICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCggMC41ICsgMC41ICogbm9ybWFsLCAxLjAgKTtcXG4gICAgcmV0dXJuO1xcbiAgI2VuZGlmXFxuXFxuICAvLyAtLSBNVG9vbjogbGlnaHRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gIC8vIGFjY3VtdWxhdGlvblxcbiAgLy8gI2luY2x1ZGUgPGxpZ2h0c19waG9uZ19mcmFnbWVudD5cXG4gIE1Ub29uTWF0ZXJpYWwgbWF0ZXJpYWw7XFxuXFxuICBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiO1xcblxcbiAgbWF0ZXJpYWwuc2hhZGVDb2xvciA9IHNoYWRlQ29sb3JGYWN0b3I7XFxuICAjaWZkZWYgVVNFX1NIQURFTVVMVElQTFlURVhUVVJFXFxuICAgIHZlYzIgc2hhZGVNdWx0aXBseVRleHR1cmVVdiA9ICggc2hhZGVNdWx0aXBseVRleHR1cmVVdlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTtcXG4gICAgbWF0ZXJpYWwuc2hhZGVDb2xvciAqPSB0ZXh0dXJlMkQoIHNoYWRlTXVsdGlwbHlUZXh0dXJlLCBzaGFkZU11bHRpcGx5VGV4dHVyZVV2ICkucmdiO1xcbiAgI2VuZGlmXFxuXFxuICAjaWYgKCBkZWZpbmVkKCBVU0VfQ09MT1IgKSAmJiAhZGVmaW5lZCggSUdOT1JFX1ZFUlRFWF9DT0xPUiApIClcXG4gICAgbWF0ZXJpYWwuc2hhZGVDb2xvci5yZ2IgKj0gdkNvbG9yO1xcbiAgI2VuZGlmXFxuXFxuICBtYXRlcmlhbC5zaGFkaW5nU2hpZnQgPSBzaGFkaW5nU2hpZnRGYWN0b3I7XFxuICAjaWZkZWYgVVNFX1NIQURJTkdTSElGVFRFWFRVUkVcXG4gICAgdmVjMiBzaGFkaW5nU2hpZnRUZXh0dXJlVXYgPSAoIHNoYWRpbmdTaGlmdFRleHR1cmVVdlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTtcXG4gICAgbWF0ZXJpYWwuc2hhZGluZ1NoaWZ0ICs9IHRleHR1cmUyRCggc2hhZGluZ1NoaWZ0VGV4dHVyZSwgc2hhZGluZ1NoaWZ0VGV4dHVyZVV2ICkuciAqIHNoYWRpbmdTaGlmdFRleHR1cmVTY2FsZTtcXG4gICNlbmRpZlxcblxcbiAgLy8gI2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cXG5cXG4gIC8vIE1Ub29uIFNwZWNpZmljIGNoYW5nZXM6XFxuICAvLyBTaW5jZSB3ZSB3YW50IHRvIHRha2Ugc2hhZG93cyBpbnRvIGFjY291bnQgb2Ygc2hhZGluZyBpbnN0ZWFkIG9mIGlycmFkaWFuY2UsXFxuICAvLyB3ZSBoYWQgdG8gbW9kaWZ5IHRoZSBjb2RlcyB0aGF0IG11bHRpcGxpZXMgdGhlIHJlc3VsdHMgb2Ygc2hhZG93bWFwIGludG8gY29sb3Igb2YgZGlyZWN0IGxpZ2h0cy5cXG5cXG4gICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTU3XFxuICAgIHZlYzMgZ2VvbWV0cnlQb3NpdGlvbiA9IC0gdlZpZXdQb3NpdGlvbjtcXG4gICAgdmVjMyBnZW9tZXRyeU5vcm1hbCA9IG5vcm1hbDtcXG4gICAgdmVjMyBnZW9tZXRyeVZpZXdEaXIgPSAoIGlzT3J0aG9ncmFwaGljICkgPyB2ZWMzKCAwLCAwLCAxICkgOiBub3JtYWxpemUoIHZWaWV3UG9zaXRpb24gKTtcXG4gICAgXFxuICAgIHZlYzMgZ2VvbWV0cnlDbGVhcmNvYXROb3JtYWw7XFxuXFxuICAgICNpZmRlZiBVU0VfQ0xFQVJDT0FUXFxuXFxuICAgICAgZ2VvbWV0cnlDbGVhcmNvYXROb3JtYWwgPSBjbGVhcmNvYXROb3JtYWw7XFxuXFxuICAgICNlbmRpZlxcbiAgI2Vsc2VcXG4gICAgR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTtcXG5cXG4gICAgZ2VvbWV0cnkucG9zaXRpb24gPSAtIHZWaWV3UG9zaXRpb247XFxuICAgIGdlb21ldHJ5Lm5vcm1hbCA9IG5vcm1hbDtcXG4gICAgZ2VvbWV0cnkudmlld0RpciA9ICggaXNPcnRob2dyYXBoaWMgKSA/IHZlYzMoIDAsIDAsIDEgKSA6IG5vcm1hbGl6ZSggdlZpZXdQb3NpdGlvbiApO1xcblxcbiAgICAjaWZkZWYgVVNFX0NMRUFSQ09BVFxcblxcbiAgICAgIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCA9IGNsZWFyY29hdE5vcm1hbDtcXG5cXG4gICAgI2VuZGlmXFxuICAjZW5kaWZcXG5cXG4gIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQ7XFxuXFxuICAvLyBzaW5jZSB0aGVzZSB2YXJpYWJsZXMgd2lsbCBiZSB1c2VkIGluIHVucm9sbGVkIGxvb3AsIHdlIGhhdmUgdG8gZGVmaW5lIGluIHByaW9yXFxuICBmbG9hdCBzaGFkb3c7XFxuXFxuICAjaWYgKCBOVU1fUE9JTlRfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXFxuXFxuICAgIFBvaW50TGlnaHQgcG9pbnRMaWdodDtcXG4gICAgI2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcXG4gICAgUG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0U2hhZG93O1xcbiAgICAjZW5kaWZcXG5cXG4gICAgI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxcbiAgICBmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRTOyBpICsrICkge1xcblxcbiAgICAgIHBvaW50TGlnaHQgPSBwb2ludExpZ2h0c1sgaSBdO1xcblxcbiAgICAgICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTU3XFxuICAgICAgICBnZXRQb2ludExpZ2h0SW5mbyggcG9pbnRMaWdodCwgZ2VvbWV0cnlQb3NpdGlvbiwgZGlyZWN0TGlnaHQgKTtcXG4gICAgICAjZWxpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTMyXFxuICAgICAgICBnZXRQb2ludExpZ2h0SW5mbyggcG9pbnRMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XFxuICAgICAgI2Vsc2VcXG4gICAgICAgIGdldFBvaW50RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBwb2ludExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcXG4gICAgICAjZW5kaWZcXG5cXG4gICAgICBzaGFkb3cgPSAxLjA7XFxuICAgICAgI2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyApXFxuICAgICAgcG9pbnRMaWdodFNoYWRvdyA9IHBvaW50TGlnaHRTaGFkb3dzWyBpIF07XFxuICAgICAgc2hhZG93ID0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRQb2ludFNoYWRvdyggcG9pbnRTaGFkb3dNYXBbIGkgXSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dNYXBTaXplLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0JpYXMsIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2UG9pbnRTaGFkb3dDb29yZFsgaSBdLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0NhbWVyYU5lYXIsIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93Q2FtZXJhRmFyICkgOiAxLjA7XFxuICAgICAgI2VuZGlmXFxuXFxuICAgICAgI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxNTdcXG4gICAgICAgIFJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5UG9zaXRpb24sIGdlb21ldHJ5Tm9ybWFsLCBnZW9tZXRyeVZpZXdEaXIsIGdlb21ldHJ5Q2xlYXJjb2F0Tm9ybWFsLCBtYXRlcmlhbCwgc2hhZG93LCByZWZsZWN0ZWRMaWdodCApO1xcbiAgICAgICNlbHNlXFxuICAgICAgICBSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHNoYWRvdywgcmVmbGVjdGVkTGlnaHQgKTtcXG4gICAgICAjZW5kaWZcXG5cXG4gICAgfVxcbiAgICAjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxcblxcbiAgI2VuZGlmXFxuXFxuICAjaWYgKCBOVU1fU1BPVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcXG5cXG4gICAgU3BvdExpZ2h0IHNwb3RMaWdodDtcXG4gICAgI2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxcbiAgICBTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93O1xcbiAgICAjZW5kaWZcXG5cXG4gICAgI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxcbiAgICBmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVFM7IGkgKysgKSB7XFxuXFxuICAgICAgc3BvdExpZ2h0ID0gc3BvdExpZ2h0c1sgaSBdO1xcblxcbiAgICAgICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTU3XFxuICAgICAgICBnZXRTcG90TGlnaHRJbmZvKCBzcG90TGlnaHQsIGdlb21ldHJ5UG9zaXRpb24sIGRpcmVjdExpZ2h0ICk7XFxuICAgICAgI2VsaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDEzMlxcbiAgICAgICAgZ2V0U3BvdExpZ2h0SW5mbyggc3BvdExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcXG4gICAgICAjZWxzZVxcbiAgICAgICAgZ2V0U3BvdERpcmVjdExpZ2h0SXJyYWRpYW5jZSggc3BvdExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcXG4gICAgICAjZW5kaWZcXG5cXG4gICAgICBzaGFkb3cgPSAxLjA7XFxuICAgICAgI2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIClcXG4gICAgICBzcG90TGlnaHRTaGFkb3cgPSBzcG90TGlnaHRTaGFkb3dzWyBpIF07XFxuICAgICAgc2hhZG93ID0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRTaGFkb3coIHNwb3RTaGFkb3dNYXBbIGkgXSwgc3BvdExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcXG4gICAgICAjZW5kaWZcXG5cXG4gICAgICAjaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDE1N1xcbiAgICAgICAgUkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnlQb3NpdGlvbiwgZ2VvbWV0cnlOb3JtYWwsIGdlb21ldHJ5Vmlld0RpciwgZ2VvbWV0cnlDbGVhcmNvYXROb3JtYWwsIG1hdGVyaWFsLCBzaGFkb3csIHJlZmxlY3RlZExpZ2h0ICk7XFxuICAgICAgI2Vsc2VcXG4gICAgICAgIFJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgc2hhZG93LCByZWZsZWN0ZWRMaWdodCApO1xcbiAgICAgICNlbmRpZlxcblxcbiAgICB9XFxuICAgICNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXFxuXFxuICAjZW5kaWZcXG5cXG4gICNpZiAoIE5VTV9ESVJfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXFxuXFxuICAgIERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodDtcXG4gICAgI2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXFxuICAgIERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodFNoYWRvdztcXG4gICAgI2VuZGlmXFxuXFxuICAgICNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcXG4gICAgZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVFM7IGkgKysgKSB7XFxuXFxuICAgICAgZGlyZWN0aW9uYWxMaWdodCA9IGRpcmVjdGlvbmFsTGlnaHRzWyBpIF07XFxuXFxuICAgICAgI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxNTdcXG4gICAgICAgIGdldERpcmVjdGlvbmFsTGlnaHRJbmZvKCBkaXJlY3Rpb25hbExpZ2h0LCBkaXJlY3RMaWdodCApO1xcbiAgICAgICNlbGlmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxMzJcXG4gICAgICAgIGdldERpcmVjdGlvbmFsTGlnaHRJbmZvKCBkaXJlY3Rpb25hbExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcXG4gICAgICAjZWxzZVxcbiAgICAgICAgZ2V0RGlyZWN0aW9uYWxEaXJlY3RMaWdodElycmFkaWFuY2UoIGRpcmVjdGlvbmFsTGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xcbiAgICAgICNlbmRpZlxcblxcbiAgICAgIHNoYWRvdyA9IDEuMDtcXG4gICAgICAjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmICggVU5ST0xMRURfTE9PUF9JTkRFWCA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUyApXFxuICAgICAgZGlyZWN0aW9uYWxMaWdodFNoYWRvdyA9IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBpIF07XFxuICAgICAgc2hhZG93ID0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRTaGFkb3coIGRpcmVjdGlvbmFsU2hhZG93TWFwWyBpIF0sIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93TWFwU2l6ZSwgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIGkgXSApIDogMS4wO1xcbiAgICAgICNlbmRpZlxcblxcbiAgICAgICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTU3XFxuICAgICAgICBSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeVBvc2l0aW9uLCBnZW9tZXRyeU5vcm1hbCwgZ2VvbWV0cnlWaWV3RGlyLCBnZW9tZXRyeUNsZWFyY29hdE5vcm1hbCwgbWF0ZXJpYWwsIHNoYWRvdywgcmVmbGVjdGVkTGlnaHQgKTtcXG4gICAgICAjZWxzZVxcbiAgICAgICAgUkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCBzaGFkb3csIHJlZmxlY3RlZExpZ2h0ICk7XFxuICAgICAgI2VuZGlmXFxuXFxuICAgIH1cXG4gICAgI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcXG5cXG4gICNlbmRpZlxcblxcbiAgLy8gI2lmICggTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0X1JlY3RBcmVhIClcXG5cXG4gIC8vICAgUmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0O1xcblxcbiAgLy8gICAjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XFxuICAvLyAgIGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9SRUNUX0FSRUFfTElHSFRTOyBpICsrICkge1xcblxcbiAgLy8gICAgIHJlY3RBcmVhTGlnaHQgPSByZWN0QXJlYUxpZ2h0c1sgaSBdO1xcbiAgLy8gICAgIFJFX0RpcmVjdF9SZWN0QXJlYSggcmVjdEFyZWFMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xcblxcbiAgLy8gICB9XFxuICAvLyAgICNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXFxuXFxuICAvLyAjZW5kaWZcXG5cXG4gICNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKVxcblxcbiAgICB2ZWMzIGlibElycmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTtcXG5cXG4gICAgdmVjMyBpcnJhZGlhbmNlID0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcXG5cXG4gICAgI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxNTdcXG4gICAgICAjaWYgZGVmaW5lZCggVVNFX0xJR0hUX1BST0JFUyApXFxuICAgICAgICBpcnJhZGlhbmNlICs9IGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBsaWdodFByb2JlLCBnZW9tZXRyeU5vcm1hbCApO1xcbiAgICAgICNlbmRpZlxcbiAgICAjZWxpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTMzXFxuICAgICAgaXJyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgZ2VvbWV0cnkubm9ybWFsICk7XFxuICAgICNlbHNlXFxuICAgICAgaXJyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgZ2VvbWV0cnkgKTtcXG4gICAgI2VuZGlmXFxuXFxuICAgICNpZiAoIE5VTV9IRU1JX0xJR0hUUyA+IDAgKVxcblxcbiAgICAgICNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcXG4gICAgICBmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fSEVNSV9MSUdIVFM7IGkgKysgKSB7XFxuXFxuICAgICAgICAjaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDE1N1xcbiAgICAgICAgICBpcnJhZGlhbmNlICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgZ2VvbWV0cnlOb3JtYWwgKTtcXG4gICAgICAgICNlbGlmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxMzNcXG4gICAgICAgICAgaXJyYWRpYW5jZSArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGdlb21ldHJ5Lm5vcm1hbCApO1xcbiAgICAgICAgI2Vsc2VcXG4gICAgICAgICAgaXJyYWRpYW5jZSArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGdlb21ldHJ5ICk7XFxuICAgICAgICAjZW5kaWZcXG5cXG4gICAgICB9XFxuICAgICAgI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcXG5cXG4gICAgI2VuZGlmXFxuXFxuICAjZW5kaWZcXG5cXG4gIC8vICNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyIClcXG5cXG4gIC8vICAgdmVjMyByYWRpYW5jZSA9IHZlYzMoIDAuMCApO1xcbiAgLy8gICB2ZWMzIGNsZWFyY29hdFJhZGlhbmNlID0gdmVjMyggMC4wICk7XFxuXFxuICAvLyAjZW5kaWZcXG5cXG4gICNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfbWFwcz5cXG4gICNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfZW5kPlxcblxcbiAgLy8gbW9kdWxhdGlvblxcbiAgI2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxcblxcbiAgdmVjMyBjb2wgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlO1xcblxcbiAgI2lmZGVmIERFQlVHX0xJVFNIQURFUkFURVxcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KCBjb2wsIGRpZmZ1c2VDb2xvci5hICk7XFxuICAgIHBvc3RDb3JyZWN0aW9uKCk7XFxuICAgIHJldHVybjtcXG4gICNlbmRpZlxcblxcbiAgLy8gLS0gTVRvb246IHJpbSBsaWdodGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgdmVjMyB2aWV3RGlyID0gbm9ybWFsaXplKCB2Vmlld1Bvc2l0aW9uICk7XFxuXFxuICAjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcXG4gICAgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgLz0gUEk7XFxuICAjZW5kaWZcXG4gIHZlYzMgcmltTWl4ID0gbWl4KCB2ZWMzKCAxLjAgKSwgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIsIDEuMCApO1xcblxcbiAgdmVjMyByaW0gPSBwYXJhbWV0cmljUmltQ29sb3JGYWN0b3IgKiBwb3coIHNhdHVyYXRlKCAxLjAgLSBkb3QoIHZpZXdEaXIsIG5vcm1hbCApICsgcGFyYW1ldHJpY1JpbUxpZnRGYWN0b3IgKSwgcGFyYW1ldHJpY1JpbUZyZXNuZWxQb3dlckZhY3RvciApO1xcblxcbiAgI2lmZGVmIFVTRV9NQVRDQVBURVhUVVJFXFxuICAgIHtcXG4gICAgICB2ZWMzIHggPSBub3JtYWxpemUoIHZlYzMoIHZpZXdEaXIueiwgMC4wLCAtdmlld0Rpci54ICkgKTtcXG4gICAgICB2ZWMzIHkgPSBjcm9zcyggdmlld0RpciwgeCApOyAvLyBndWFyYW50ZWVkIHRvIGJlIG5vcm1hbGl6ZWRcXG4gICAgICB2ZWMyIHNwaGVyZVV2ID0gMC41ICsgMC41ICogdmVjMiggZG90KCB4LCBub3JtYWwgKSwgLWRvdCggeSwgbm9ybWFsICkgKTtcXG4gICAgICBzcGhlcmVVdiA9ICggbWF0Y2FwVGV4dHVyZVV2VHJhbnNmb3JtICogdmVjMyggc3BoZXJlVXYsIDEgKSApLnh5O1xcbiAgICAgIHZlYzMgbWF0Y2FwID0gdGV4dHVyZTJEKCBtYXRjYXBUZXh0dXJlLCBzcGhlcmVVdiApLnJnYjtcXG4gICAgICByaW0gKz0gbWF0Y2FwRmFjdG9yICogbWF0Y2FwO1xcbiAgICB9XFxuICAjZW5kaWZcXG5cXG4gICNpZmRlZiBVU0VfUklNTVVMVElQTFlURVhUVVJFXFxuICAgIHZlYzIgcmltTXVsdGlwbHlUZXh0dXJlVXYgPSAoIHJpbU11bHRpcGx5VGV4dHVyZVV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xcbiAgICByaW0gKj0gdGV4dHVyZTJEKCByaW1NdWx0aXBseVRleHR1cmUsIHJpbU11bHRpcGx5VGV4dHVyZVV2ICkucmdiO1xcbiAgI2VuZGlmXFxuXFxuICBjb2wgKz0gcmltTWl4ICogcmltO1xcblxcbiAgLy8gLS0gTVRvb246IEVtaXNzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICBjb2wgKz0gdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xcblxcbiAgLy8gI2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD5cXG5cXG4gIC8vIC0tIEFsbW9zdCBkb25lISAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgI2lmIGRlZmluZWQoIE9VVExJTkUgKVxcbiAgICBjb2wgPSBvdXRsaW5lQ29sb3JGYWN0b3IucmdiICogbWl4KCB2ZWMzKCAxLjAgKSwgY29sLCBvdXRsaW5lTGlnaHRpbmdNaXhGYWN0b3IgKTtcXG4gICNlbmRpZlxcblxcbiAgI2lmZGVmIE9QQVFVRVxcbiAgICBkaWZmdXNlQ29sb3IuYSA9IDEuMDtcXG4gICNlbmRpZlxcblxcbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCggY29sLCBkaWZmdXNlQ29sb3IuYSApO1xcbiAgcG9zdENvcnJlY3Rpb24oKTtcXG59XFxuXCI7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuLyoqXG4gKiBTcGVjaWZpZXJzIG9mIGRlYnVnIG1vZGUgb2Yge0BsaW5rIE1Ub29uTWF0ZXJpYWx9LlxuICpcbiAqIFNlZToge0BsaW5rIE1Ub29uTWF0ZXJpYWwuZGVidWdNb2RlfVxuICovXG5jb25zdCBNVG9vbk1hdGVyaWFsRGVidWdNb2RlID0ge1xuICAgIC8qKlxuICAgICAqIFJlbmRlciBub3JtYWxseS5cbiAgICAgKi9cbiAgICBOb25lOiAnbm9uZScsXG4gICAgLyoqXG4gICAgICogVmlzdWFsaXplIG5vcm1hbHMgb2YgdGhlIHN1cmZhY2UuXG4gICAgICovXG4gICAgTm9ybWFsOiAnbm9ybWFsJyxcbiAgICAvKipcbiAgICAgKiBWaXN1YWxpemUgbGl0L3NoYWRlIG9mIHRoZSBzdXJmYWNlLlxuICAgICAqL1xuICAgIExpdFNoYWRlUmF0ZTogJ2xpdFNoYWRlUmF0ZScsXG4gICAgLyoqXG4gICAgICogVmlzdWFsaXplIFVWIG9mIHRoZSBzdXJmYWNlLlxuICAgICAqL1xuICAgIFVWOiAndXYnLFxufTtcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5jb25zdCBNVG9vbk1hdGVyaWFsT3V0bGluZVdpZHRoTW9kZSA9IHtcbiAgICBOb25lOiAnbm9uZScsXG4gICAgV29ybGRDb29yZGluYXRlczogJ3dvcmxkQ29vcmRpbmF0ZXMnLFxuICAgIFNjcmVlbkNvb3JkaW5hdGVzOiAnc2NyZWVuQ29vcmRpbmF0ZXMnLFxufTtcblxuY29uc3QgZW5jb2RpbmdDb2xvclNwYWNlTWFwID0ge1xuICAgIDMwMDA6ICcnLFxuICAgIDMwMDE6ICdzcmdiJyxcbn07XG4vKipcbiAqIEEgY29tcGF0IGZ1bmN0aW9uIHRvIGdldCB0ZXh0dXJlIGNvbG9yIHNwYWNlLlxuICpcbiAqIENPTVBBVDogcHJlLXIxNTJcbiAqIFN0YXJ0aW5nIGZyb20gVGhyZWUuanMgcjE1MiwgYHRleHR1cmUuZW5jb2RpbmdgIGlzIHJlbmFtZWQgdG8gYHRleHR1cmUuY29sb3JTcGFjZWAuXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgaGFuZGxlIHRoZSBjb21hcHQuXG4gKlxuICogQHBhcmFtIHRleHR1cmUgVGhlIHRleHR1cmUgeW91IHdhbnQgdG8gZ2V0IHRoZSBjb2xvciBzcGFjZSBmcm9tXG4gKi9cbmZ1bmN0aW9uIGdldFRleHR1cmVDb2xvclNwYWNlKHRleHR1cmUpIHtcbiAgICBpZiAocGFyc2VJbnQoVEhSRUUuUkVWSVNJT04sIDEwKSA+PSAxNTIpIHtcbiAgICAgICAgcmV0dXJuIHRleHR1cmUuY29sb3JTcGFjZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBlbmNvZGluZ0NvbG9yU3BhY2VNYXBbdGV4dHVyZS5lbmNvZGluZ107XG4gICAgfVxufVxuXG4vKiB0c2xpbnQ6ZGlzYWJsZTptZW1iZXItb3JkZXJpbmcgKi9cbi8qKlxuICogTVRvb24gaXMgYSBtYXRlcmlhbCBzcGVjaWZpY2F0aW9uIHRoYXQgaGFzIHZhcmlvdXMgZmVhdHVyZXMuXG4gKiBUaGUgc3BlYyBhbmQgaW1wbGVtZW50YXRpb24gYXJlIG9yaWdpbmFsbHkgZm91bmRlZCBmb3IgVW5pdHkgZW5naW5lIGFuZCB0aGlzIGlzIGEgcG9ydCBvZiB0aGUgbWF0ZXJpYWwuXG4gKlxuICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vU2FudGFyaC9NVG9vblxuICovXG5jbGFzcyBNVG9vbk1hdGVyaWFsIGV4dGVuZHMgVEhSRUUuU2hhZGVyTWF0ZXJpYWwge1xuICAgIGdldCBjb2xvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMubGl0RmFjdG9yLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgY29sb3IodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5saXRGYWN0b3IudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IG1hcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMubWFwLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgbWFwKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMubWFwLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBub3JtYWxNYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLm5vcm1hbE1hcC52YWx1ZTtcbiAgICB9XG4gICAgc2V0IG5vcm1hbE1hcCh2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLm5vcm1hbE1hcC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgbm9ybWFsU2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLm5vcm1hbFNjYWxlLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgbm9ybWFsU2NhbGUodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5ub3JtYWxTY2FsZS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgZW1pc3NpdmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLmVtaXNzaXZlLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgZW1pc3NpdmUodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5lbWlzc2l2ZS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgZW1pc3NpdmVJbnRlbnNpdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLmVtaXNzaXZlSW50ZW5zaXR5LnZhbHVlO1xuICAgIH1cbiAgICBzZXQgZW1pc3NpdmVJbnRlbnNpdHkodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5lbWlzc2l2ZUludGVuc2l0eS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgZW1pc3NpdmVNYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLmVtaXNzaXZlTWFwLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgZW1pc3NpdmVNYXAodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5lbWlzc2l2ZU1hcC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgc2hhZGVDb2xvckZhY3RvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMuc2hhZGVDb2xvckZhY3Rvci52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHNoYWRlQ29sb3JGYWN0b3IodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5zaGFkZUNvbG9yRmFjdG9yLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBzaGFkZU11bHRpcGx5VGV4dHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMuc2hhZGVNdWx0aXBseVRleHR1cmUudmFsdWU7XG4gICAgfVxuICAgIHNldCBzaGFkZU11bHRpcGx5VGV4dHVyZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLnNoYWRlTXVsdGlwbHlUZXh0dXJlLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBzaGFkaW5nU2hpZnRGYWN0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLnNoYWRpbmdTaGlmdEZhY3Rvci52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHNoYWRpbmdTaGlmdEZhY3Rvcih2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLnNoYWRpbmdTaGlmdEZhY3Rvci52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgc2hhZGluZ1NoaWZ0VGV4dHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMuc2hhZGluZ1NoaWZ0VGV4dHVyZS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHNoYWRpbmdTaGlmdFRleHR1cmUodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5zaGFkaW5nU2hpZnRUZXh0dXJlLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBzaGFkaW5nU2hpZnRUZXh0dXJlU2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLnNoYWRpbmdTaGlmdFRleHR1cmVTY2FsZS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHNoYWRpbmdTaGlmdFRleHR1cmVTY2FsZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLnNoYWRpbmdTaGlmdFRleHR1cmVTY2FsZS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgc2hhZGluZ1Rvb255RmFjdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5zaGFkaW5nVG9vbnlGYWN0b3IudmFsdWU7XG4gICAgfVxuICAgIHNldCBzaGFkaW5nVG9vbnlGYWN0b3IodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5zaGFkaW5nVG9vbnlGYWN0b3IudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGdpRXF1YWxpemF0aW9uRmFjdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5naUVxdWFsaXphdGlvbkZhY3Rvci52YWx1ZTtcbiAgICB9XG4gICAgc2V0IGdpRXF1YWxpemF0aW9uRmFjdG9yKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMuZ2lFcXVhbGl6YXRpb25GYWN0b3IudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IG1hdGNhcEZhY3RvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMubWF0Y2FwRmFjdG9yLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgbWF0Y2FwRmFjdG9yKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMubWF0Y2FwRmFjdG9yLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBtYXRjYXBUZXh0dXJlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5tYXRjYXBUZXh0dXJlLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgbWF0Y2FwVGV4dHVyZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLm1hdGNhcFRleHR1cmUudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHBhcmFtZXRyaWNSaW1Db2xvckZhY3RvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMucGFyYW1ldHJpY1JpbUNvbG9yRmFjdG9yLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgcGFyYW1ldHJpY1JpbUNvbG9yRmFjdG9yKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMucGFyYW1ldHJpY1JpbUNvbG9yRmFjdG9yLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCByaW1NdWx0aXBseVRleHR1cmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLnJpbU11bHRpcGx5VGV4dHVyZS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHJpbU11bHRpcGx5VGV4dHVyZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLnJpbU11bHRpcGx5VGV4dHVyZS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgcmltTGlnaHRpbmdNaXhGYWN0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLnJpbUxpZ2h0aW5nTWl4RmFjdG9yLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgcmltTGlnaHRpbmdNaXhGYWN0b3IodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5yaW1MaWdodGluZ01peEZhY3Rvci52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgcGFyYW1ldHJpY1JpbUZyZXNuZWxQb3dlckZhY3RvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMucGFyYW1ldHJpY1JpbUZyZXNuZWxQb3dlckZhY3Rvci52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHBhcmFtZXRyaWNSaW1GcmVzbmVsUG93ZXJGYWN0b3IodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5wYXJhbWV0cmljUmltRnJlc25lbFBvd2VyRmFjdG9yLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBwYXJhbWV0cmljUmltTGlmdEZhY3RvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMucGFyYW1ldHJpY1JpbUxpZnRGYWN0b3IudmFsdWU7XG4gICAgfVxuICAgIHNldCBwYXJhbWV0cmljUmltTGlmdEZhY3Rvcih2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLnBhcmFtZXRyaWNSaW1MaWZ0RmFjdG9yLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBvdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLm91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IG91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLm91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgb3V0bGluZVdpZHRoRmFjdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5vdXRsaW5lV2lkdGhGYWN0b3IudmFsdWU7XG4gICAgfVxuICAgIHNldCBvdXRsaW5lV2lkdGhGYWN0b3IodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5vdXRsaW5lV2lkdGhGYWN0b3IudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IG91dGxpbmVDb2xvckZhY3RvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMub3V0bGluZUNvbG9yRmFjdG9yLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgb3V0bGluZUNvbG9yRmFjdG9yKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMub3V0bGluZUNvbG9yRmFjdG9yLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBvdXRsaW5lTGlnaHRpbmdNaXhGYWN0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLm91dGxpbmVMaWdodGluZ01peEZhY3Rvci52YWx1ZTtcbiAgICB9XG4gICAgc2V0IG91dGxpbmVMaWdodGluZ01peEZhY3Rvcih2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLm91dGxpbmVMaWdodGluZ01peEZhY3Rvci52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgdXZBbmltYXRpb25NYXNrVGV4dHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMudXZBbmltYXRpb25NYXNrVGV4dHVyZS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHV2QW5pbWF0aW9uTWFza1RleHR1cmUodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy51dkFuaW1hdGlvbk1hc2tUZXh0dXJlLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCB1dkFuaW1hdGlvblNjcm9sbFhPZmZzZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLnV2QW5pbWF0aW9uU2Nyb2xsWE9mZnNldC52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHV2QW5pbWF0aW9uU2Nyb2xsWE9mZnNldCh2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLnV2QW5pbWF0aW9uU2Nyb2xsWE9mZnNldC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgdXZBbmltYXRpb25TY3JvbGxZT2Zmc2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy51dkFuaW1hdGlvblNjcm9sbFlPZmZzZXQudmFsdWU7XG4gICAgfVxuICAgIHNldCB1dkFuaW1hdGlvblNjcm9sbFlPZmZzZXQodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy51dkFuaW1hdGlvblNjcm9sbFlPZmZzZXQudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHV2QW5pbWF0aW9uUm90YXRpb25QaGFzZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMudXZBbmltYXRpb25Sb3RhdGlvblBoYXNlLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgdXZBbmltYXRpb25Sb3RhdGlvblBoYXNlKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMudXZBbmltYXRpb25Sb3RhdGlvblBoYXNlLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdoZW4gdGhpcyBpcyBgdHJ1ZWAsIHZlcnRleCBjb2xvcnMgd2lsbCBiZSBpZ25vcmVkLlxuICAgICAqIGB0cnVlYCBieSBkZWZhdWx0LlxuICAgICAqL1xuICAgIGdldCBpZ25vcmVWZXJ0ZXhDb2xvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lnbm9yZVZlcnRleENvbG9yO1xuICAgIH1cbiAgICBzZXQgaWdub3JlVmVydGV4Q29sb3IodmFsdWUpIHtcbiAgICAgICAgdGhpcy5faWdub3JlVmVydGV4Q29sb3IgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZXJlIGlzIGEgbGluZSBvZiB0aGUgc2hhZGVyIGNhbGxlZCBcImNvbW1lbnQgb3V0IGlmIHlvdSB3YW50IHRvIFBCUiBhYnNvbHV0ZWx5XCIgaW4gVlJNMC4wIE1Ub29uLlxuICAgICAqIFdoZW4gdGhpcyBpcyB0cnVlLCB0aGUgbWF0ZXJpYWwgZW5hYmxlcyB0aGUgbGluZSB0byBtYWtlIGl0IGNvbXBhdGlibGUgd2l0aCB0aGUgbGVnYWN5IHJlbmRlcmluZyBvZiBWUk0uXG4gICAgICogVXN1YWxseSBub3QgcmVjb21tZW5kZWQgdG8gdHVybiB0aGlzIG9uLlxuICAgICAqIGBmYWxzZWAgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBnZXQgdjBDb21wYXRTaGFkZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3YwQ29tcGF0U2hhZGU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZXJlIGlzIGEgbGluZSBvZiB0aGUgc2hhZGVyIGNhbGxlZCBcImNvbW1lbnQgb3V0IGlmIHlvdSB3YW50IHRvIFBCUiBhYnNvbHV0ZWx5XCIgaW4gVlJNMC4wIE1Ub29uLlxuICAgICAqIFdoZW4gdGhpcyBpcyB0cnVlLCB0aGUgbWF0ZXJpYWwgZW5hYmxlcyB0aGUgbGluZSB0byBtYWtlIGl0IGNvbXBhdGlibGUgd2l0aCB0aGUgbGVnYWN5IHJlbmRlcmluZyBvZiBWUk0uXG4gICAgICogVXN1YWxseSBub3QgcmVjb21tZW5kZWQgdG8gdHVybiB0aGlzIG9uLlxuICAgICAqIGBmYWxzZWAgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBzZXQgdjBDb21wYXRTaGFkZSh2KSB7XG4gICAgICAgIHRoaXMuX3YwQ29tcGF0U2hhZGUgPSB2O1xuICAgICAgICB0aGlzLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVidWcgbW9kZSBmb3IgdGhlIG1hdGVyaWFsLlxuICAgICAqIFlvdSBjYW4gdmlzdWFsaXplIHNldmVyYWwgY29tcG9uZW50cyBmb3IgZGlhZ25vc2lzIHVzaW5nIGRlYnVnIG1vZGUuXG4gICAgICpcbiAgICAgKiBTZWU6IHtAbGluayBNVG9vbk1hdGVyaWFsRGVidWdNb2RlfVxuICAgICAqL1xuICAgIGdldCBkZWJ1Z01vZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWJ1Z01vZGU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlYnVnIG1vZGUgZm9yIHRoZSBtYXRlcmlhbC5cbiAgICAgKiBZb3UgY2FuIHZpc3VhbGl6ZSBzZXZlcmFsIGNvbXBvbmVudHMgZm9yIGRpYWdub3NpcyB1c2luZyBkZWJ1ZyBtb2RlLlxuICAgICAqXG4gICAgICogU2VlOiB7QGxpbmsgTVRvb25NYXRlcmlhbERlYnVnTW9kZX1cbiAgICAgKi9cbiAgICBzZXQgZGVidWdNb2RlKG0pIHtcbiAgICAgICAgdGhpcy5fZGVidWdNb2RlID0gbTtcbiAgICAgICAgdGhpcy5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIGdldCBvdXRsaW5lV2lkdGhNb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3V0bGluZVdpZHRoTW9kZTtcbiAgICB9XG4gICAgc2V0IG91dGxpbmVXaWR0aE1vZGUobSkge1xuICAgICAgICB0aGlzLl9vdXRsaW5lV2lkdGhNb2RlID0gbTtcbiAgICAgICAgdGhpcy5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIGdldCBpc091dGxpbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc091dGxpbmU7XG4gICAgfVxuICAgIHNldCBpc091dGxpbmUoYikge1xuICAgICAgICB0aGlzLl9pc091dGxpbmUgPSBiO1xuICAgICAgICB0aGlzLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVhZG9ubHkgYm9vbGVhbiB0aGF0IGluZGljYXRlcyB0aGlzIGlzIGEgW1tNVG9vbk1hdGVyaWFsXV0uXG4gICAgICovXG4gICAgZ2V0IGlzTVRvb25NYXRlcmlhbCgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhcmFtZXRlcnMgPSB7fSkge1xuICAgICAgICBzdXBlcih7IHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIgfSk7XG4gICAgICAgIHRoaXMudXZBbmltYXRpb25TY3JvbGxYU3BlZWRGYWN0b3IgPSAwLjA7XG4gICAgICAgIHRoaXMudXZBbmltYXRpb25TY3JvbGxZU3BlZWRGYWN0b3IgPSAwLjA7XG4gICAgICAgIHRoaXMudXZBbmltYXRpb25Sb3RhdGlvblNwZWVkRmFjdG9yID0gMC4wO1xuICAgICAgICAvKipcbiAgICAgICAgICogV2hldGhlciB0aGUgbWF0ZXJpYWwgaXMgYWZmZWN0ZWQgYnkgZm9nLlxuICAgICAgICAgKiBgdHJ1ZWAgYnkgZGVmYXVsdC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZm9nID0gdHJ1ZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdpbGwgYmUgcmVhZCBpbiBXZWJHTFByb2dyYW1zXG4gICAgICAgICAqXG4gICAgICAgICAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL21yZG9vYi90aHJlZS5qcy9ibG9iLzRmNTIzNmFjM2Q2ZjQxZDkwNGFhNTg0MDFiNDA1NTRlOGZiZGNiMTUvc3JjL3JlbmRlcmVycy93ZWJnbC9XZWJHTFByb2dyYW1zLmpzI0wxOTAtTDE5MVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5ub3JtYWxNYXBUeXBlID0gVEhSRUUuVGFuZ2VudFNwYWNlTm9ybWFsTWFwO1xuICAgICAgICAvKipcbiAgICAgICAgICogV2hlbiB0aGlzIGlzIGB0cnVlYCwgdmVydGV4IGNvbG9ycyB3aWxsIGJlIGlnbm9yZWQuXG4gICAgICAgICAqIGB0cnVlYCBieSBkZWZhdWx0LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5faWdub3JlVmVydGV4Q29sb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLl92MENvbXBhdFNoYWRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2RlYnVnTW9kZSA9IE1Ub29uTWF0ZXJpYWxEZWJ1Z01vZGUuTm9uZTtcbiAgICAgICAgdGhpcy5fb3V0bGluZVdpZHRoTW9kZSA9IE1Ub29uTWF0ZXJpYWxPdXRsaW5lV2lkdGhNb2RlLk5vbmU7XG4gICAgICAgIHRoaXMuX2lzT3V0bGluZSA9IGZhbHNlO1xuICAgICAgICAvLyBvdmVycmlkZSBkZXB0aFdyaXRlIHdpdGggdHJhbnNwYXJlbnRXaXRoWldyaXRlXG4gICAgICAgIGlmIChwYXJhbWV0ZXJzLnRyYW5zcGFyZW50V2l0aFpXcml0ZSkge1xuICAgICAgICAgICAgcGFyYW1ldGVycy5kZXB0aFdyaXRlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgcGFyYW1ldGVycy50cmFuc3BhcmVudFdpdGhaV3JpdGU7XG4gICAgICAgIC8vID09IGVuYWJsaW5nIGJ1bmNoIG9mIHN0dWZmID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICBwYXJhbWV0ZXJzLmZvZyA9IHRydWU7XG4gICAgICAgIHBhcmFtZXRlcnMubGlnaHRzID0gdHJ1ZTtcbiAgICAgICAgcGFyYW1ldGVycy5jbGlwcGluZyA9IHRydWU7XG4gICAgICAgIC8vIENPTVBBVDogcHJlLXIxMjlcbiAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL3B1bGwvMjE3ODhcbiAgICAgICAgaWYgKHBhcnNlSW50KFRIUkVFLlJFVklTSU9OLCAxMCkgPCAxMjkpIHtcbiAgICAgICAgICAgIHBhcmFtZXRlcnMuc2tpbm5pbmcgPSBwYXJhbWV0ZXJzLnNraW5uaW5nIHx8IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIENPTVBBVDogcHJlLXIxMzFcbiAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL3B1bGwvMjIxNjlcbiAgICAgICAgaWYgKHBhcnNlSW50KFRIUkVFLlJFVklTSU9OLCAxMCkgPCAxMzEpIHtcbiAgICAgICAgICAgIHBhcmFtZXRlcnMubW9ycGhUYXJnZXRzID0gcGFyYW1ldGVycy5tb3JwaFRhcmdldHMgfHwgZmFsc2U7XG4gICAgICAgICAgICBwYXJhbWV0ZXJzLm1vcnBoTm9ybWFscyA9IHBhcmFtZXRlcnMubW9ycGhOb3JtYWxzIHx8IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vID09IHVuaWZvcm1zID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICB0aGlzLnVuaWZvcm1zID0gVEhSRUUuVW5pZm9ybXNVdGlscy5tZXJnZShbXG4gICAgICAgICAgICBUSFJFRS5Vbmlmb3Jtc0xpYi5jb21tb24sXG4gICAgICAgICAgICBUSFJFRS5Vbmlmb3Jtc0xpYi5ub3JtYWxtYXAsXG4gICAgICAgICAgICBUSFJFRS5Vbmlmb3Jtc0xpYi5lbWlzc2l2ZW1hcCxcbiAgICAgICAgICAgIFRIUkVFLlVuaWZvcm1zTGliLmZvZyxcbiAgICAgICAgICAgIFRIUkVFLlVuaWZvcm1zTGliLmxpZ2h0cyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsaXRGYWN0b3I6IHsgdmFsdWU6IG5ldyBUSFJFRS5Db2xvcigxLjAsIDEuMCwgMS4wKSB9LFxuICAgICAgICAgICAgICAgIG1hcFV2VHJhbnNmb3JtOiB7IHZhbHVlOiBuZXcgVEhSRUUuTWF0cml4MygpIH0sXG4gICAgICAgICAgICAgICAgY29sb3JBbHBoYTogeyB2YWx1ZTogMS4wIH0sXG4gICAgICAgICAgICAgICAgbm9ybWFsTWFwVXZUcmFuc2Zvcm06IHsgdmFsdWU6IG5ldyBUSFJFRS5NYXRyaXgzKCkgfSxcbiAgICAgICAgICAgICAgICBzaGFkZUNvbG9yRmFjdG9yOiB7IHZhbHVlOiBuZXcgVEhSRUUuQ29sb3IoMC45NywgMC44MSwgMC44NikgfSxcbiAgICAgICAgICAgICAgICBzaGFkZU11bHRpcGx5VGV4dHVyZTogeyB2YWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgICAgIHNoYWRlTXVsdGlwbHlUZXh0dXJlVXZUcmFuc2Zvcm06IHsgdmFsdWU6IG5ldyBUSFJFRS5NYXRyaXgzKCkgfSxcbiAgICAgICAgICAgICAgICBzaGFkaW5nU2hpZnRGYWN0b3I6IHsgdmFsdWU6IDAuMCB9LFxuICAgICAgICAgICAgICAgIHNoYWRpbmdTaGlmdFRleHR1cmU6IHsgdmFsdWU6IG51bGwgfSxcbiAgICAgICAgICAgICAgICBzaGFkaW5nU2hpZnRUZXh0dXJlVXZUcmFuc2Zvcm06IHsgdmFsdWU6IG5ldyBUSFJFRS5NYXRyaXgzKCkgfSxcbiAgICAgICAgICAgICAgICBzaGFkaW5nU2hpZnRUZXh0dXJlU2NhbGU6IHsgdmFsdWU6IDEuMCB9LFxuICAgICAgICAgICAgICAgIHNoYWRpbmdUb29ueUZhY3RvcjogeyB2YWx1ZTogMC45IH0sXG4gICAgICAgICAgICAgICAgZ2lFcXVhbGl6YXRpb25GYWN0b3I6IHsgdmFsdWU6IDAuOSB9LFxuICAgICAgICAgICAgICAgIG1hdGNhcEZhY3RvcjogeyB2YWx1ZTogbmV3IFRIUkVFLkNvbG9yKDAuMCwgMC4wLCAwLjApIH0sXG4gICAgICAgICAgICAgICAgbWF0Y2FwVGV4dHVyZTogeyB2YWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgICAgIG1hdGNhcFRleHR1cmVVdlRyYW5zZm9ybTogeyB2YWx1ZTogbmV3IFRIUkVFLk1hdHJpeDMoKSB9LFxuICAgICAgICAgICAgICAgIHBhcmFtZXRyaWNSaW1Db2xvckZhY3RvcjogeyB2YWx1ZTogbmV3IFRIUkVFLkNvbG9yKDAuMCwgMC4wLCAwLjApIH0sXG4gICAgICAgICAgICAgICAgcmltTXVsdGlwbHlUZXh0dXJlOiB7IHZhbHVlOiBudWxsIH0sXG4gICAgICAgICAgICAgICAgcmltTXVsdGlwbHlUZXh0dXJlVXZUcmFuc2Zvcm06IHsgdmFsdWU6IG5ldyBUSFJFRS5NYXRyaXgzKCkgfSxcbiAgICAgICAgICAgICAgICByaW1MaWdodGluZ01peEZhY3RvcjogeyB2YWx1ZTogMC4wIH0sXG4gICAgICAgICAgICAgICAgcGFyYW1ldHJpY1JpbUZyZXNuZWxQb3dlckZhY3RvcjogeyB2YWx1ZTogMS4wIH0sXG4gICAgICAgICAgICAgICAgcGFyYW1ldHJpY1JpbUxpZnRGYWN0b3I6IHsgdmFsdWU6IDAuMCB9LFxuICAgICAgICAgICAgICAgIGVtaXNzaXZlOiB7IHZhbHVlOiBuZXcgVEhSRUUuQ29sb3IoMC4wLCAwLjAsIDAuMCkgfSxcbiAgICAgICAgICAgICAgICBlbWlzc2l2ZUludGVuc2l0eTogeyB2YWx1ZTogMS4wIH0sXG4gICAgICAgICAgICAgICAgZW1pc3NpdmVNYXBVdlRyYW5zZm9ybTogeyB2YWx1ZTogbmV3IFRIUkVFLk1hdHJpeDMoKSB9LFxuICAgICAgICAgICAgICAgIG91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZTogeyB2YWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgICAgIG91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZVV2VHJhbnNmb3JtOiB7IHZhbHVlOiBuZXcgVEhSRUUuTWF0cml4MygpIH0sXG4gICAgICAgICAgICAgICAgb3V0bGluZVdpZHRoRmFjdG9yOiB7IHZhbHVlOiAwLjUgfSxcbiAgICAgICAgICAgICAgICBvdXRsaW5lQ29sb3JGYWN0b3I6IHsgdmFsdWU6IG5ldyBUSFJFRS5Db2xvcigwLjAsIDAuMCwgMC4wKSB9LFxuICAgICAgICAgICAgICAgIG91dGxpbmVMaWdodGluZ01peEZhY3RvcjogeyB2YWx1ZTogMS4wIH0sXG4gICAgICAgICAgICAgICAgdXZBbmltYXRpb25NYXNrVGV4dHVyZTogeyB2YWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgICAgIHV2QW5pbWF0aW9uTWFza1RleHR1cmVVdlRyYW5zZm9ybTogeyB2YWx1ZTogbmV3IFRIUkVFLk1hdHJpeDMoKSB9LFxuICAgICAgICAgICAgICAgIHV2QW5pbWF0aW9uU2Nyb2xsWE9mZnNldDogeyB2YWx1ZTogMC4wIH0sXG4gICAgICAgICAgICAgICAgdXZBbmltYXRpb25TY3JvbGxZT2Zmc2V0OiB7IHZhbHVlOiAwLjAgfSxcbiAgICAgICAgICAgICAgICB1dkFuaW1hdGlvblJvdGF0aW9uUGhhc2U6IHsgdmFsdWU6IDAuMCB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhcmFtZXRlcnMudW5pZm9ybXMsXG4gICAgICAgIF0pO1xuICAgICAgICAvLyA9PSBmaW5hbGx5IGNvbXBpbGUgdGhlIHNoYWRlciBwcm9ncmFtID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgdGhpcy5zZXRWYWx1ZXMocGFyYW1ldGVycyk7XG4gICAgICAgIC8vID09IHVwbG9hZCB1bmlmb3JtcyB0aGF0IG5lZWQgdG8gdXBsb2FkID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICB0aGlzLl91cGxvYWRVbmlmb3Jtc1dvcmthcm91bmQoKTtcbiAgICAgICAgLy8gPT0gdXBkYXRlIHNoYWRlciBzdHVmZiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIHRoaXMuY3VzdG9tUHJvZ3JhbUNhY2hlS2V5ID0gKCkgPT4gW1xuICAgICAgICAgICAgLi4uT2JqZWN0LmVudHJpZXModGhpcy5fZ2VuZXJhdGVEZWZpbmVzKCkpLm1hcCgoW3Rva2VuLCBtYWNyb10pID0+IGAke3Rva2VufToke21hY3JvfWApLFxuICAgICAgICAgICAgdGhpcy5tYXRjYXBUZXh0dXJlID8gYG1hdGNhcFRleHR1cmVDb2xvclNwYWNlOiR7Z2V0VGV4dHVyZUNvbG9yU3BhY2UodGhpcy5tYXRjYXBUZXh0dXJlKX1gIDogJycsXG4gICAgICAgICAgICB0aGlzLnNoYWRlTXVsdGlwbHlUZXh0dXJlXG4gICAgICAgICAgICAgICAgPyBgc2hhZGVNdWx0aXBseVRleHR1cmVDb2xvclNwYWNlOiR7Z2V0VGV4dHVyZUNvbG9yU3BhY2UodGhpcy5zaGFkZU11bHRpcGx5VGV4dHVyZSl9YFxuICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICB0aGlzLnJpbU11bHRpcGx5VGV4dHVyZSA/IGByaW1NdWx0aXBseVRleHR1cmVDb2xvclNwYWNlOiR7Z2V0VGV4dHVyZUNvbG9yU3BhY2UodGhpcy5yaW1NdWx0aXBseVRleHR1cmUpfWAgOiAnJyxcbiAgICAgICAgXS5qb2luKCcsJyk7XG4gICAgICAgIHRoaXMub25CZWZvcmVDb21waWxlID0gKHNoYWRlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGhyZWVSZXZpc2lvbiA9IHBhcnNlSW50KFRIUkVFLlJFVklTSU9OLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBkZWZpbmVzID0gT2JqZWN0LmVudHJpZXMoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9nZW5lcmF0ZURlZmluZXMoKSksIHRoaXMuZGVmaW5lcykpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoW3Rva2VuLCBtYWNyb10pID0+ICEhbWFjcm8pXG4gICAgICAgICAgICAgICAgLm1hcCgoW3Rva2VuLCBtYWNyb10pID0+IGAjZGVmaW5lICR7dG9rZW59ICR7bWFjcm99YClcbiAgICAgICAgICAgICAgICAuam9pbignXFxuJykgKyAnXFxuJztcbiAgICAgICAgICAgIC8vIC0tIGdlbmVyYXRlIHNoYWRlciBjb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIHNoYWRlci52ZXJ0ZXhTaGFkZXIgPSBkZWZpbmVzICsgc2hhZGVyLnZlcnRleFNoYWRlcjtcbiAgICAgICAgICAgIHNoYWRlci5mcmFnbWVudFNoYWRlciA9IGRlZmluZXMgKyBzaGFkZXIuZnJhZ21lbnRTaGFkZXI7XG4gICAgICAgICAgICAvLyAtLSBjb21wYXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBDT01QQVQ6IHByZS1yMTU0XG4gICAgICAgICAgICAvLyBUaHJlZS5qcyByMTU0IHJlbmFtZXMgdGhlIHNoYWRlciBjaHVuayA8Y29sb3JzcGFjZV9mcmFnbWVudD4gdG8gPGVuY29kaW5nc19mcmFnbWVudD5cbiAgICAgICAgICAgIGlmICh0aHJlZVJldmlzaW9uIDwgMTU0KSB7XG4gICAgICAgICAgICAgICAgc2hhZGVyLmZyYWdtZW50U2hhZGVyID0gc2hhZGVyLmZyYWdtZW50U2hhZGVyLnJlcGxhY2UoJyNpbmNsdWRlIDxjb2xvcnNwYWNlX2ZyYWdtZW50PicsICcjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ09NUEFUOiBwcmUtcjEzMlxuICAgICAgICAgICAgLy8gVGhyZWUuanMgcjEzMiBpbnRyb2R1Y2VzIG5ldyBzaGFkZXIgY2h1bmtzIDxub3JtYWxfcGFyc19mcmFnbWVudD4gYW5kIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD5cbiAgICAgICAgICAgIGlmICh0aHJlZVJldmlzaW9uIDwgMTMyKSB7XG4gICAgICAgICAgICAgICAgc2hhZGVyLmZyYWdtZW50U2hhZGVyID0gc2hhZGVyLmZyYWdtZW50U2hhZGVyLnJlcGxhY2UoJyNpbmNsdWRlIDxub3JtYWxfcGFyc19mcmFnbWVudD4nLCAnJyk7XG4gICAgICAgICAgICAgICAgc2hhZGVyLmZyYWdtZW50U2hhZGVyID0gc2hhZGVyLmZyYWdtZW50U2hhZGVyLnJlcGxhY2UoJyNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD4nLCAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGlzIG1hdGVyaWFsLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRlbHRhIGRlbHRhVGltZSBzaW5jZSBsYXN0IHVwZGF0ZVxuICAgICAqL1xuICAgIHVwZGF0ZShkZWx0YSkge1xuICAgICAgICB0aGlzLl91cGxvYWRVbmlmb3Jtc1dvcmthcm91bmQoKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVVZBbmltYXRpb24oZGVsdGEpO1xuICAgIH1cbiAgICBjb3B5KHNvdXJjZSkge1xuICAgICAgICBzdXBlci5jb3B5KHNvdXJjZSk7XG4gICAgICAgIC8vIHVuaWZvcm1zIGFyZSBhbHJlYWR5IGNvcGllZCBhdCB0aGlzIG1vbWVudFxuICAgICAgICAvLyBCZWdpbm5pbmcgZnJvbSByMTMzLCB1bmlmb3JtIHRleHR1cmVzIHdpbGwgYmUgY2xvbmVkIGluc3RlYWQgb2YgcmVmZXJlbmNlXG4gICAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL21yZG9vYi90aHJlZS5qcy9ibG9iL2E4ODEzYmUwNGE4NDliZDE1NWY3Y2Y2ZjFiMjNkOGVlMmUwZmI0OGIvZXhhbXBsZXMvanNtL2xvYWRlcnMvR0xURkxvYWRlci5qcyNMMzA0N1xuICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tcmRvb2IvdGhyZWUuanMvYmxvYi9hODgxM2JlMDRhODQ5YmQxNTVmN2NmNmYxYjIzZDhlZTJlMGZiNDhiL3NyYy9yZW5kZXJlcnMvc2hhZGVycy9Vbmlmb3Jtc1V0aWxzLmpzI0wyMlxuICAgICAgICAvLyBUaGlzIHdpbGwgbGVhdmUgdGhlaXIgYC52ZXJzaW9uYCB0byBiZSBgMGBcbiAgICAgICAgLy8gYW5kIHRoZXNlIHRleHR1cmVzIHdvbid0IGJlIHVwbG9hZGVkIHRvIEdQVVxuICAgICAgICAvLyBXZSBhcmUgZ29pbmcgdG8gd29ya2Fyb3VuZCB0aGlzIGluIGhlcmVcbiAgICAgICAgLy8gSSd2ZSBvcGVuZWQgYW4gaXNzdWUgZm9yIHRoaXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9tcmRvb2IvdGhyZWUuanMvaXNzdWVzLzIyNzE4XG4gICAgICAgIHRoaXMubWFwID0gc291cmNlLm1hcDtcbiAgICAgICAgdGhpcy5ub3JtYWxNYXAgPSBzb3VyY2Uubm9ybWFsTWFwO1xuICAgICAgICB0aGlzLmVtaXNzaXZlTWFwID0gc291cmNlLmVtaXNzaXZlTWFwO1xuICAgICAgICB0aGlzLnNoYWRlTXVsdGlwbHlUZXh0dXJlID0gc291cmNlLnNoYWRlTXVsdGlwbHlUZXh0dXJlO1xuICAgICAgICB0aGlzLnNoYWRpbmdTaGlmdFRleHR1cmUgPSBzb3VyY2Uuc2hhZGluZ1NoaWZ0VGV4dHVyZTtcbiAgICAgICAgdGhpcy5tYXRjYXBUZXh0dXJlID0gc291cmNlLm1hdGNhcFRleHR1cmU7XG4gICAgICAgIHRoaXMucmltTXVsdGlwbHlUZXh0dXJlID0gc291cmNlLnJpbU11bHRpcGx5VGV4dHVyZTtcbiAgICAgICAgdGhpcy5vdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmUgPSBzb3VyY2Uub3V0bGluZVdpZHRoTXVsdGlwbHlUZXh0dXJlO1xuICAgICAgICB0aGlzLnV2QW5pbWF0aW9uTWFza1RleHR1cmUgPSBzb3VyY2UudXZBbmltYXRpb25NYXNrVGV4dHVyZTtcbiAgICAgICAgLy8gPT0gY29weSBtZW1iZXJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIHRoaXMubm9ybWFsTWFwVHlwZSA9IHNvdXJjZS5ub3JtYWxNYXBUeXBlO1xuICAgICAgICB0aGlzLnV2QW5pbWF0aW9uU2Nyb2xsWFNwZWVkRmFjdG9yID0gc291cmNlLnV2QW5pbWF0aW9uU2Nyb2xsWFNwZWVkRmFjdG9yO1xuICAgICAgICB0aGlzLnV2QW5pbWF0aW9uU2Nyb2xsWVNwZWVkRmFjdG9yID0gc291cmNlLnV2QW5pbWF0aW9uU2Nyb2xsWVNwZWVkRmFjdG9yO1xuICAgICAgICB0aGlzLnV2QW5pbWF0aW9uUm90YXRpb25TcGVlZEZhY3RvciA9IHNvdXJjZS51dkFuaW1hdGlvblJvdGF0aW9uU3BlZWRGYWN0b3I7XG4gICAgICAgIHRoaXMuaWdub3JlVmVydGV4Q29sb3IgPSBzb3VyY2UuaWdub3JlVmVydGV4Q29sb3I7XG4gICAgICAgIHRoaXMudjBDb21wYXRTaGFkZSA9IHNvdXJjZS52MENvbXBhdFNoYWRlO1xuICAgICAgICB0aGlzLmRlYnVnTW9kZSA9IHNvdXJjZS5kZWJ1Z01vZGU7XG4gICAgICAgIHRoaXMub3V0bGluZVdpZHRoTW9kZSA9IHNvdXJjZS5vdXRsaW5lV2lkdGhNb2RlO1xuICAgICAgICB0aGlzLmlzT3V0bGluZSA9IHNvdXJjZS5pc091dGxpbmU7XG4gICAgICAgIC8vID09IHVwZGF0ZSBzaGFkZXIgc3R1ZmYgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICB0aGlzLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBVViBhbmltYXRpb24gc3RhdGUuXG4gICAgICogSW50ZW5kZWQgdG8gYmUgY2FsbGVkIHZpYSB7QGxpbmsgdXBkYXRlfS5cbiAgICAgKiBAcGFyYW0gZGVsdGEgZGVsdGFUaW1lXG4gICAgICovXG4gICAgX3VwZGF0ZVVWQW5pbWF0aW9uKGRlbHRhKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMudXZBbmltYXRpb25TY3JvbGxYT2Zmc2V0LnZhbHVlICs9IGRlbHRhICogdGhpcy51dkFuaW1hdGlvblNjcm9sbFhTcGVlZEZhY3RvcjtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy51dkFuaW1hdGlvblNjcm9sbFlPZmZzZXQudmFsdWUgKz0gZGVsdGEgKiB0aGlzLnV2QW5pbWF0aW9uU2Nyb2xsWVNwZWVkRmFjdG9yO1xuICAgICAgICB0aGlzLnVuaWZvcm1zLnV2QW5pbWF0aW9uUm90YXRpb25QaGFzZS52YWx1ZSArPSBkZWx0YSAqIHRoaXMudXZBbmltYXRpb25Sb3RhdGlvblNwZWVkRmFjdG9yO1xuICAgICAgICB0aGlzLnVuaWZvcm1zTmVlZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwbG9hZCB1bmlmb3JtcyB0aGF0IG5lZWQgdG8gdXBsb2FkIGJ1dCBkb2Vzbid0IGF1dG9tYXRpY2FsbHkgYmVjYXVzZSBvZiByZWFzb25zLlxuICAgICAqIEludGVuZGVkIHRvIGJlIGNhbGxlZCB2aWEge0BsaW5rIGNvbnN0cnVjdG9yfSBhbmQge0BsaW5rIHVwZGF0ZX0uXG4gICAgICovXG4gICAgX3VwbG9hZFVuaWZvcm1zV29ya2Fyb3VuZCgpIHtcbiAgICAgICAgLy8gd29ya2Fyb3VuZDogc2luY2Ugb3BhY2l0eSBpcyBkZWZpbmVkIGFzIGEgcHJvcGVydHkgaW4gVEhSRUUuTWF0ZXJpYWxcbiAgICAgICAgLy8gYW5kIGNhbm5vdCBiZSBvdmVycmlkZGVuIGFzIGFuIGFjY2Vzc29yLFxuICAgICAgICAvLyBXZSBhcmUgZ29pbmcgdG8gdXBkYXRlIG9wYWNpdHkgaGVyZVxuICAgICAgICB0aGlzLnVuaWZvcm1zLm9wYWNpdHkudmFsdWUgPSB0aGlzLm9wYWNpdHk7XG4gICAgICAgIC8vIHdvcmthcm91bmQ6IHRleHR1cmUgdHJhbnNmb3JtcyBhcmUgbm90IHVwZGF0ZWQgYXV0b21hdGljYWxseVxuICAgICAgICB0aGlzLl91cGRhdGVUZXh0dXJlTWF0cml4KHRoaXMudW5pZm9ybXMubWFwLCB0aGlzLnVuaWZvcm1zLm1hcFV2VHJhbnNmb3JtKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVGV4dHVyZU1hdHJpeCh0aGlzLnVuaWZvcm1zLm5vcm1hbE1hcCwgdGhpcy51bmlmb3Jtcy5ub3JtYWxNYXBVdlRyYW5zZm9ybSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVRleHR1cmVNYXRyaXgodGhpcy51bmlmb3Jtcy5lbWlzc2l2ZU1hcCwgdGhpcy51bmlmb3Jtcy5lbWlzc2l2ZU1hcFV2VHJhbnNmb3JtKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVGV4dHVyZU1hdHJpeCh0aGlzLnVuaWZvcm1zLnNoYWRlTXVsdGlwbHlUZXh0dXJlLCB0aGlzLnVuaWZvcm1zLnNoYWRlTXVsdGlwbHlUZXh0dXJlVXZUcmFuc2Zvcm0pO1xuICAgICAgICB0aGlzLl91cGRhdGVUZXh0dXJlTWF0cml4KHRoaXMudW5pZm9ybXMuc2hhZGluZ1NoaWZ0VGV4dHVyZSwgdGhpcy51bmlmb3Jtcy5zaGFkaW5nU2hpZnRUZXh0dXJlVXZUcmFuc2Zvcm0pO1xuICAgICAgICB0aGlzLl91cGRhdGVUZXh0dXJlTWF0cml4KHRoaXMudW5pZm9ybXMubWF0Y2FwVGV4dHVyZSwgdGhpcy51bmlmb3Jtcy5tYXRjYXBUZXh0dXJlVXZUcmFuc2Zvcm0pO1xuICAgICAgICB0aGlzLl91cGRhdGVUZXh0dXJlTWF0cml4KHRoaXMudW5pZm9ybXMucmltTXVsdGlwbHlUZXh0dXJlLCB0aGlzLnVuaWZvcm1zLnJpbU11bHRpcGx5VGV4dHVyZVV2VHJhbnNmb3JtKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVGV4dHVyZU1hdHJpeCh0aGlzLnVuaWZvcm1zLm91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZSwgdGhpcy51bmlmb3Jtcy5vdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmVVdlRyYW5zZm9ybSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVRleHR1cmVNYXRyaXgodGhpcy51bmlmb3Jtcy51dkFuaW1hdGlvbk1hc2tUZXh0dXJlLCB0aGlzLnVuaWZvcm1zLnV2QW5pbWF0aW9uTWFza1RleHR1cmVVdlRyYW5zZm9ybSk7XG4gICAgICAgIC8vIENPTVBBVCB3b3JrYXJvdW5kOiBzdGFydGluZyBmcm9tIHIxMzIsIGFscGhhVGVzdCBiZWNvbWVzIGEgdW5pZm9ybSBpbnN0ZWFkIG9mIHByZXByb2Nlc3NvciB2YWx1ZVxuICAgICAgICBjb25zdCB0aHJlZVJldmlzaW9uID0gcGFyc2VJbnQoVEhSRUUuUkVWSVNJT04sIDEwKTtcbiAgICAgICAgaWYgKHRocmVlUmV2aXNpb24gPj0gMTMyKSB7XG4gICAgICAgICAgICB0aGlzLnVuaWZvcm1zLmFscGhhVGVzdC52YWx1ZSA9IHRoaXMuYWxwaGFUZXN0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudW5pZm9ybXNOZWVkVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIG1hcCBvYmplY3Qgb2YgcHJlcHJvY2Vzc29yIHRva2VuIGFuZCBtYWNybyBvZiB0aGUgc2hhZGVyIHByb2dyYW0uXG4gICAgICovXG4gICAgX2dlbmVyYXRlRGVmaW5lcygpIHtcbiAgICAgICAgY29uc3QgdGhyZWVSZXZpc2lvbiA9IHBhcnNlSW50KFRIUkVFLlJFVklTSU9OLCAxMCk7XG4gICAgICAgIGNvbnN0IHVzZVV2SW5WZXJ0ID0gdGhpcy5vdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmUgIT09IG51bGw7XG4gICAgICAgIGNvbnN0IHVzZVV2SW5GcmFnID0gdGhpcy5tYXAgIT09IG51bGwgfHxcbiAgICAgICAgICAgIHRoaXMuZW1pc3NpdmVNYXAgIT09IG51bGwgfHxcbiAgICAgICAgICAgIHRoaXMuc2hhZGVNdWx0aXBseVRleHR1cmUgIT09IG51bGwgfHxcbiAgICAgICAgICAgIHRoaXMuc2hhZGluZ1NoaWZ0VGV4dHVyZSAhPT0gbnVsbCB8fFxuICAgICAgICAgICAgdGhpcy5yaW1NdWx0aXBseVRleHR1cmUgIT09IG51bGwgfHxcbiAgICAgICAgICAgIHRoaXMudXZBbmltYXRpb25NYXNrVGV4dHVyZSAhPT0gbnVsbDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC8vIFRlbXBvcmFyeSBjb21wYXQgYWdhaW5zdCBzaGFkZXIgY2hhbmdlIEAgVGhyZWUuanMgcjEyNlxuICAgICAgICAgICAgLy8gU2VlOiAjMjEyMDUsICMyMTMwNywgIzIxMjk5XG4gICAgICAgICAgICBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT046IHRocmVlUmV2aXNpb24sXG4gICAgICAgICAgICBPVVRMSU5FOiB0aGlzLl9pc091dGxpbmUsXG4gICAgICAgICAgICBNVE9PTl9VU0VfVVY6IHVzZVV2SW5WZXJ0IHx8IHVzZVV2SW5GcmFnLFxuICAgICAgICAgICAgTVRPT05fVVZTX1ZFUlRFWF9PTkxZOiB1c2VVdkluVmVydCAmJiAhdXNlVXZJbkZyYWcsXG4gICAgICAgICAgICBWMF9DT01QQVRfU0hBREU6IHRoaXMuX3YwQ29tcGF0U2hhZGUsXG4gICAgICAgICAgICBVU0VfU0hBREVNVUxUSVBMWVRFWFRVUkU6IHRoaXMuc2hhZGVNdWx0aXBseVRleHR1cmUgIT09IG51bGwsXG4gICAgICAgICAgICBVU0VfU0hBRElOR1NISUZUVEVYVFVSRTogdGhpcy5zaGFkaW5nU2hpZnRUZXh0dXJlICE9PSBudWxsLFxuICAgICAgICAgICAgVVNFX01BVENBUFRFWFRVUkU6IHRoaXMubWF0Y2FwVGV4dHVyZSAhPT0gbnVsbCxcbiAgICAgICAgICAgIFVTRV9SSU1NVUxUSVBMWVRFWFRVUkU6IHRoaXMucmltTXVsdGlwbHlUZXh0dXJlICE9PSBudWxsLFxuICAgICAgICAgICAgVVNFX09VVExJTkVXSURUSE1VTFRJUExZVEVYVFVSRTogdGhpcy5faXNPdXRsaW5lICYmIHRoaXMub3V0bGluZVdpZHRoTXVsdGlwbHlUZXh0dXJlICE9PSBudWxsLFxuICAgICAgICAgICAgVVNFX1VWQU5JTUFUSU9OTUFTS1RFWFRVUkU6IHRoaXMudXZBbmltYXRpb25NYXNrVGV4dHVyZSAhPT0gbnVsbCxcbiAgICAgICAgICAgIElHTk9SRV9WRVJURVhfQ09MT1I6IHRoaXMuX2lnbm9yZVZlcnRleENvbG9yID09PSB0cnVlLFxuICAgICAgICAgICAgREVCVUdfTk9STUFMOiB0aGlzLl9kZWJ1Z01vZGUgPT09ICdub3JtYWwnLFxuICAgICAgICAgICAgREVCVUdfTElUU0hBREVSQVRFOiB0aGlzLl9kZWJ1Z01vZGUgPT09ICdsaXRTaGFkZVJhdGUnLFxuICAgICAgICAgICAgREVCVUdfVVY6IHRoaXMuX2RlYnVnTW9kZSA9PT0gJ3V2JyxcbiAgICAgICAgICAgIE9VVExJTkVfV0lEVEhfV09STEQ6IHRoaXMuX2lzT3V0bGluZSAmJiB0aGlzLl9vdXRsaW5lV2lkdGhNb2RlID09PSBNVG9vbk1hdGVyaWFsT3V0bGluZVdpZHRoTW9kZS5Xb3JsZENvb3JkaW5hdGVzLFxuICAgICAgICAgICAgT1VUTElORV9XSURUSF9TQ1JFRU46IHRoaXMuX2lzT3V0bGluZSAmJiB0aGlzLl9vdXRsaW5lV2lkdGhNb2RlID09PSBNVG9vbk1hdGVyaWFsT3V0bGluZVdpZHRoTW9kZS5TY3JlZW5Db29yZGluYXRlcyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX3VwZGF0ZVRleHR1cmVNYXRyaXgoc3JjLCBkc3QpIHtcbiAgICAgICAgaWYgKHNyYy52YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHNyYy52YWx1ZS5tYXRyaXhBdXRvVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgc3JjLnZhbHVlLnVwZGF0ZU1hdHJpeCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZHN0LnZhbHVlLmNvcHkoc3JjLnZhbHVlLm1hdHJpeCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IGNvbG9yU3BhY2VFbmNvZGluZ01hcCA9IHtcbiAgICAnJzogMzAwMCxcbiAgICBzcmdiOiAzMDAxLFxufTtcbi8qKlxuICogQSBjb21wYXQgZnVuY3Rpb24gdG8gc2V0IHRleHR1cmUgY29sb3Igc3BhY2UuXG4gKlxuICogQ09NUEFUOiBwcmUtcjE1MlxuICogU3RhcnRpbmcgZnJvbSBUaHJlZS5qcyByMTUyLCBgdGV4dHVyZS5lbmNvZGluZ2AgaXMgcmVuYW1lZCB0byBgdGV4dHVyZS5jb2xvclNwYWNlYC5cbiAqIFRoaXMgZnVuY3Rpb24gd2lsbCBoYW5kbGUgdGhlIGNvbWFwdC5cbiAqXG4gKiBAcGFyYW0gdGV4dHVyZSBUaGUgdGV4dHVyZSB5b3Ugd2FudCB0byBzZXQgdGhlIGNvbG9yIHNwYWNlIHRvXG4gKiBAcGFyYW0gY29sb3JTcGFjZSBUaGUgY29sb3Igc3BhY2UgeW91IHdhbnQgdG8gc2V0IHRvIHRoZSB0ZXh0dXJlXG4gKi9cbmZ1bmN0aW9uIHNldFRleHR1cmVDb2xvclNwYWNlKHRleHR1cmUsIGNvbG9yU3BhY2UpIHtcbiAgICBpZiAocGFyc2VJbnQoVEhSRUUuUkVWSVNJT04sIDEwKSA+PSAxNTIpIHtcbiAgICAgICAgdGV4dHVyZS5jb2xvclNwYWNlID0gY29sb3JTcGFjZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRleHR1cmUuZW5jb2RpbmcgPSBjb2xvclNwYWNlRW5jb2RpbmdNYXBbY29sb3JTcGFjZV07XG4gICAgfVxufVxuXG4vKipcbiAqIE1hdGVyaWFsUGFyYW1ldGVycyBoYXRlcyBgdW5kZWZpbmVkYC4gVGhpcyBoZWxwZXIgYXV0b21hdGljYWxseSByZWplY3RzIGFzc2lnbiBvZiB0aGVzZSBgdW5kZWZpbmVkYC5cbiAqIEl0IGFsc28gaGFuZGxlcyBhc3luY2hyb25vdXMgcHJvY2VzcyBvZiB0ZXh0dXJlcy5cbiAqIE1ha2Ugc3VyZSBhd2FpdCBmb3Ige0BsaW5rIEdMVEZNVG9vbk1hdGVyaWFsUGFyYW1zQXNzaWduSGVscGVyLnBlbmRpbmd9LlxuICovXG5jbGFzcyBHTFRGTVRvb25NYXRlcmlhbFBhcmFtc0Fzc2lnbkhlbHBlciB7XG4gICAgZ2V0IHBlbmRpbmcoKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbCh0aGlzLl9wZW5kaW5ncyk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhcnNlciwgbWF0ZXJpYWxQYXJhbXMpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VyID0gcGFyc2VyO1xuICAgICAgICB0aGlzLl9tYXRlcmlhbFBhcmFtcyA9IG1hdGVyaWFsUGFyYW1zO1xuICAgICAgICB0aGlzLl9wZW5kaW5ncyA9IFtdO1xuICAgIH1cbiAgICBhc3NpZ25QcmltaXRpdmUoa2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fbWF0ZXJpYWxQYXJhbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzc2lnbkNvbG9yKGtleSwgdmFsdWUsIGNvbnZlcnRTUkdCVG9MaW5lYXIpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX21hdGVyaWFsUGFyYW1zW2tleV0gPSBuZXcgVEhSRUUuQ29sb3IoKS5mcm9tQXJyYXkodmFsdWUpO1xuICAgICAgICAgICAgaWYgKGNvbnZlcnRTUkdCVG9MaW5lYXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXRlcmlhbFBhcmFtc1trZXldLmNvbnZlcnRTUkdCVG9MaW5lYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3NpZ25UZXh0dXJlKGtleSwgdGV4dHVyZSwgaXNDb2xvclRleHR1cmUpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSAoKCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgdGhpcy5fcGFyc2VyLmFzc2lnblRleHR1cmUodGhpcy5fbWF0ZXJpYWxQYXJhbXMsIGtleSwgdGV4dHVyZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0NvbG9yVGV4dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGV4dHVyZUNvbG9yU3BhY2UodGhpcy5fbWF0ZXJpYWxQYXJhbXNba2V5XSwgJ3NyZ2InKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKSgpO1xuICAgICAgICAgICAgdGhpcy5fcGVuZGluZ3MucHVzaChwcm9taXNlKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXNzaWduVGV4dHVyZUJ5SW5kZXgoa2V5LCB0ZXh0dXJlSW5kZXgsIGlzQ29sb3JUZXh0dXJlKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hc3NpZ25UZXh0dXJlKGtleSwgdGV4dHVyZUluZGV4ICE9IG51bGwgPyB7IGluZGV4OiB0ZXh0dXJlSW5kZXggfSA6IHVuZGVmaW5lZCwgaXNDb2xvclRleHR1cmUpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKlxuICogUG9zc2libGUgc3BlYyB2ZXJzaW9ucyBpdCByZWNvZ25pemVzLlxuICovXG5jb25zdCBQT1NTSUJMRV9TUEVDX1ZFUlNJT05TID0gbmV3IFNldChbJzEuMCcsICcxLjAtYmV0YSddKTtcbmNsYXNzIE1Ub29uTWF0ZXJpYWxMb2FkZXJQbHVnaW4ge1xuICAgIGdldCBuYW1lKCkge1xuICAgICAgICByZXR1cm4gTVRvb25NYXRlcmlhbExvYWRlclBsdWdpbi5FWFRFTlNJT05fTkFNRTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGFyc2VyLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuICAgICAgICB0aGlzLnJlbmRlck9yZGVyT2Zmc2V0ID0gKF9hID0gb3B0aW9ucy5yZW5kZXJPcmRlck9mZnNldCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMDtcbiAgICAgICAgdGhpcy52MENvbXBhdFNoYWRlID0gKF9iID0gb3B0aW9ucy52MENvbXBhdFNoYWRlKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5kZWJ1Z01vZGUgPSAoX2MgPSBvcHRpb25zLmRlYnVnTW9kZSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJ25vbmUnO1xuICAgICAgICB0aGlzLl9tVG9vbk1hdGVyaWFsU2V0ID0gbmV3IFNldCgpO1xuICAgIH1cbiAgICBiZWZvcmVSb290KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlVW5saXRFeHRlbnNpb25JZk1Ub29uRXhpc3RzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhZnRlclJvb3QoZ2x0Zikge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgZ2x0Zi51c2VyRGF0YS52cm1NVG9vbk1hdGVyaWFscyA9IEFycmF5LmZyb20odGhpcy5fbVRvb25NYXRlcmlhbFNldCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRNYXRlcmlhbFR5cGUobWF0ZXJpYWxJbmRleCkge1xuICAgICAgICBjb25zdCB2MUV4dGVuc2lvbiA9IHRoaXMuX2dldE1Ub29uRXh0ZW5zaW9uKG1hdGVyaWFsSW5kZXgpO1xuICAgICAgICBpZiAodjFFeHRlbnNpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBNVG9vbk1hdGVyaWFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBleHRlbmRNYXRlcmlhbFBhcmFtcyhtYXRlcmlhbEluZGV4LCBtYXRlcmlhbFBhcmFtcykge1xuICAgICAgICBjb25zdCBleHRlbnNpb24gPSB0aGlzLl9nZXRNVG9vbkV4dGVuc2lvbihtYXRlcmlhbEluZGV4KTtcbiAgICAgICAgaWYgKGV4dGVuc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V4dGVuZE1hdGVyaWFsUGFyYW1zKGV4dGVuc2lvbiwgbWF0ZXJpYWxQYXJhbXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsb2FkTWVzaChtZXNoSW5kZXgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5wYXJzZXI7XG4gICAgICAgICAgICBjb25zdCBqc29uID0gcGFyc2VyLmpzb247XG4gICAgICAgICAgICBjb25zdCBtZXNoRGVmID0gKF9hID0ganNvbi5tZXNoZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVttZXNoSW5kZXhdO1xuICAgICAgICAgICAgaWYgKG1lc2hEZWYgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTVRvb25NYXRlcmlhbExvYWRlclBsdWdpbjogQXR0ZW1wdCB0byB1c2UgbWVzaGVzWyR7bWVzaEluZGV4fV0gb2YgZ2xURiBidXQgdGhlIG1lc2ggZG9lc24ndCBleGlzdGApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcHJpbWl0aXZlc0RlZiA9IG1lc2hEZWYucHJpbWl0aXZlcztcbiAgICAgICAgICAgIGNvbnN0IG1lc2hPckdyb3VwID0geWllbGQgcGFyc2VyLmxvYWRNZXNoKG1lc2hJbmRleCk7XG4gICAgICAgICAgICBpZiAocHJpbWl0aXZlc0RlZi5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNoID0gbWVzaE9yR3JvdXA7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxJbmRleCA9IHByaW1pdGl2ZXNEZWZbMF0ubWF0ZXJpYWw7XG4gICAgICAgICAgICAgICAgaWYgKG1hdGVyaWFsSW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cFByaW1pdGl2ZShtZXNoLCBtYXRlcmlhbEluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IG1lc2hPckdyb3VwO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJpbWl0aXZlc0RlZi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNoID0gZ3JvdXAuY2hpbGRyZW5baV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsSW5kZXggPSBwcmltaXRpdmVzRGVmW2ldLm1hdGVyaWFsO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0ZXJpYWxJbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cFByaW1pdGl2ZShtZXNoLCBtYXRlcmlhbEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBtZXNoT3JHcm91cDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlbGV0ZSB1c2Ugb2YgYEtIUl9tYXRlcmlhbHNfdW5saXRgIGZyb20gaXRzIGBtYXRlcmlhbHNgIGlmIHRoZSBtYXRlcmlhbCBpcyB1c2luZyBNVG9vbi5cbiAgICAgKlxuICAgICAqIFNpbmNlIEdMVEZMb2FkZXIgaGF2ZSBzbyBtYW55IGhhcmRjb2RlZCBwcm9jZWR1cmUgcmVsYXRlZCB0byBgS0hSX21hdGVyaWFsc191bmxpdGBcbiAgICAgKiB3ZSBoYXZlIHRvIGRlbGV0ZSB0aGUgZXh0ZW5zaW9uIGJlZm9yZSB3ZSBzdGFydCB0byBwYXJzZSB0aGUgZ2xURi5cbiAgICAgKi9cbiAgICBfcmVtb3ZlVW5saXRFeHRlbnNpb25JZk1Ub29uRXhpc3RzKCkge1xuICAgICAgICBjb25zdCBwYXJzZXIgPSB0aGlzLnBhcnNlcjtcbiAgICAgICAgY29uc3QganNvbiA9IHBhcnNlci5qc29uO1xuICAgICAgICBjb25zdCBtYXRlcmlhbERlZnMgPSBqc29uLm1hdGVyaWFscztcbiAgICAgICAgbWF0ZXJpYWxEZWZzID09PSBudWxsIHx8IG1hdGVyaWFsRGVmcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbWF0ZXJpYWxEZWZzLm1hcCgobWF0ZXJpYWxEZWYsIGlNYXRlcmlhbCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gdGhpcy5fZ2V0TVRvb25FeHRlbnNpb24oaU1hdGVyaWFsKTtcbiAgICAgICAgICAgIGlmIChleHRlbnNpb24gJiYgKChfYSA9IG1hdGVyaWFsRGVmLmV4dGVuc2lvbnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVsnS0hSX21hdGVyaWFsc191bmxpdCddKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBtYXRlcmlhbERlZi5leHRlbnNpb25zWydLSFJfbWF0ZXJpYWxzX3VubGl0J107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfZ2V0TVRvb25FeHRlbnNpb24obWF0ZXJpYWxJbmRleCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBjb25zdCBwYXJzZXIgPSB0aGlzLnBhcnNlcjtcbiAgICAgICAgY29uc3QganNvbiA9IHBhcnNlci5qc29uO1xuICAgICAgICBjb25zdCBtYXRlcmlhbERlZiA9IChfYSA9IGpzb24ubWF0ZXJpYWxzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbbWF0ZXJpYWxJbmRleF07XG4gICAgICAgIGlmIChtYXRlcmlhbERlZiA9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYE1Ub29uTWF0ZXJpYWxMb2FkZXJQbHVnaW46IEF0dGVtcHQgdG8gdXNlIG1hdGVyaWFsc1ske21hdGVyaWFsSW5kZXh9XSBvZiBnbFRGIGJ1dCB0aGUgbWF0ZXJpYWwgZG9lc24ndCBleGlzdGApO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleHRlbnNpb24gPSAoX2IgPSBtYXRlcmlhbERlZi5leHRlbnNpb25zKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2JbTVRvb25NYXRlcmlhbExvYWRlclBsdWdpbi5FWFRFTlNJT05fTkFNRV07XG4gICAgICAgIGlmIChleHRlbnNpb24gPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzcGVjVmVyc2lvbiA9IGV4dGVuc2lvbi5zcGVjVmVyc2lvbjtcbiAgICAgICAgaWYgKCFQT1NTSUJMRV9TUEVDX1ZFUlNJT05TLmhhcyhzcGVjVmVyc2lvbikpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgTVRvb25NYXRlcmlhbExvYWRlclBsdWdpbjogVW5rbm93biAke01Ub29uTWF0ZXJpYWxMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUV9IHNwZWNWZXJzaW9uIFwiJHtzcGVjVmVyc2lvbn1cImApO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXh0ZW5zaW9uO1xuICAgIH1cbiAgICBfZXh0ZW5kTWF0ZXJpYWxQYXJhbXMoZXh0ZW5zaW9uLCBtYXRlcmlhbFBhcmFtcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAvLyBSZW1vdmluZyBtYXRlcmlhbCBwYXJhbXMgdGhhdCBpcyBub3QgcmVxdWlyZWQgdG8gc3VwcmVzcyB3YXJuaW5ncy5cbiAgICAgICAgICAgIGRlbGV0ZSBtYXRlcmlhbFBhcmFtcy5tZXRhbG5lc3M7XG4gICAgICAgICAgICBkZWxldGUgbWF0ZXJpYWxQYXJhbXMucm91Z2huZXNzO1xuICAgICAgICAgICAgY29uc3QgYXNzaWduSGVscGVyID0gbmV3IEdMVEZNVG9vbk1hdGVyaWFsUGFyYW1zQXNzaWduSGVscGVyKHRoaXMucGFyc2VyLCBtYXRlcmlhbFBhcmFtcyk7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduUHJpbWl0aXZlKCd0cmFuc3BhcmVudFdpdGhaV3JpdGUnLCBleHRlbnNpb24udHJhbnNwYXJlbnRXaXRoWldyaXRlKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25Db2xvcignc2hhZGVDb2xvckZhY3RvcicsIGV4dGVuc2lvbi5zaGFkZUNvbG9yRmFjdG9yKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25UZXh0dXJlKCdzaGFkZU11bHRpcGx5VGV4dHVyZScsIGV4dGVuc2lvbi5zaGFkZU11bHRpcGx5VGV4dHVyZSwgdHJ1ZSk7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduUHJpbWl0aXZlKCdzaGFkaW5nU2hpZnRGYWN0b3InLCBleHRlbnNpb24uc2hhZGluZ1NoaWZ0RmFjdG9yKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25UZXh0dXJlKCdzaGFkaW5nU2hpZnRUZXh0dXJlJywgZXh0ZW5zaW9uLnNoYWRpbmdTaGlmdFRleHR1cmUsIHRydWUpO1xuICAgICAgICAgICAgYXNzaWduSGVscGVyLmFzc2lnblByaW1pdGl2ZSgnc2hhZGluZ1NoaWZ0VGV4dHVyZVNjYWxlJywgKF9hID0gZXh0ZW5zaW9uLnNoYWRpbmdTaGlmdFRleHR1cmUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zY2FsZSk7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduUHJpbWl0aXZlKCdzaGFkaW5nVG9vbnlGYWN0b3InLCBleHRlbnNpb24uc2hhZGluZ1Rvb255RmFjdG9yKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25QcmltaXRpdmUoJ2dpRXF1YWxpemF0aW9uRmFjdG9yJywgZXh0ZW5zaW9uLmdpRXF1YWxpemF0aW9uRmFjdG9yKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25Db2xvcignbWF0Y2FwRmFjdG9yJywgZXh0ZW5zaW9uLm1hdGNhcEZhY3Rvcik7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduVGV4dHVyZSgnbWF0Y2FwVGV4dHVyZScsIGV4dGVuc2lvbi5tYXRjYXBUZXh0dXJlLCB0cnVlKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25Db2xvcigncGFyYW1ldHJpY1JpbUNvbG9yRmFjdG9yJywgZXh0ZW5zaW9uLnBhcmFtZXRyaWNSaW1Db2xvckZhY3Rvcik7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduVGV4dHVyZSgncmltTXVsdGlwbHlUZXh0dXJlJywgZXh0ZW5zaW9uLnJpbU11bHRpcGx5VGV4dHVyZSwgdHJ1ZSk7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduUHJpbWl0aXZlKCdyaW1MaWdodGluZ01peEZhY3RvcicsIGV4dGVuc2lvbi5yaW1MaWdodGluZ01peEZhY3Rvcik7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduUHJpbWl0aXZlKCdwYXJhbWV0cmljUmltRnJlc25lbFBvd2VyRmFjdG9yJywgZXh0ZW5zaW9uLnBhcmFtZXRyaWNSaW1GcmVzbmVsUG93ZXJGYWN0b3IpO1xuICAgICAgICAgICAgYXNzaWduSGVscGVyLmFzc2lnblByaW1pdGl2ZSgncGFyYW1ldHJpY1JpbUxpZnRGYWN0b3InLCBleHRlbnNpb24ucGFyYW1ldHJpY1JpbUxpZnRGYWN0b3IpO1xuICAgICAgICAgICAgYXNzaWduSGVscGVyLmFzc2lnblByaW1pdGl2ZSgnb3V0bGluZVdpZHRoTW9kZScsIGV4dGVuc2lvbi5vdXRsaW5lV2lkdGhNb2RlKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25QcmltaXRpdmUoJ291dGxpbmVXaWR0aEZhY3RvcicsIGV4dGVuc2lvbi5vdXRsaW5lV2lkdGhGYWN0b3IpO1xuICAgICAgICAgICAgYXNzaWduSGVscGVyLmFzc2lnblRleHR1cmUoJ291dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZScsIGV4dGVuc2lvbi5vdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmUsIGZhbHNlKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25Db2xvcignb3V0bGluZUNvbG9yRmFjdG9yJywgZXh0ZW5zaW9uLm91dGxpbmVDb2xvckZhY3Rvcik7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduUHJpbWl0aXZlKCdvdXRsaW5lTGlnaHRpbmdNaXhGYWN0b3InLCBleHRlbnNpb24ub3V0bGluZUxpZ2h0aW5nTWl4RmFjdG9yKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25UZXh0dXJlKCd1dkFuaW1hdGlvbk1hc2tUZXh0dXJlJywgZXh0ZW5zaW9uLnV2QW5pbWF0aW9uTWFza1RleHR1cmUsIGZhbHNlKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25QcmltaXRpdmUoJ3V2QW5pbWF0aW9uU2Nyb2xsWFNwZWVkRmFjdG9yJywgZXh0ZW5zaW9uLnV2QW5pbWF0aW9uU2Nyb2xsWFNwZWVkRmFjdG9yKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25QcmltaXRpdmUoJ3V2QW5pbWF0aW9uU2Nyb2xsWVNwZWVkRmFjdG9yJywgZXh0ZW5zaW9uLnV2QW5pbWF0aW9uU2Nyb2xsWVNwZWVkRmFjdG9yKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25QcmltaXRpdmUoJ3V2QW5pbWF0aW9uUm90YXRpb25TcGVlZEZhY3RvcicsIGV4dGVuc2lvbi51dkFuaW1hdGlvblJvdGF0aW9uU3BlZWRGYWN0b3IpO1xuICAgICAgICAgICAgYXNzaWduSGVscGVyLmFzc2lnblByaW1pdGl2ZSgndjBDb21wYXRTaGFkZScsIHRoaXMudjBDb21wYXRTaGFkZSk7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduUHJpbWl0aXZlKCdkZWJ1Z01vZGUnLCB0aGlzLmRlYnVnTW9kZSk7XG4gICAgICAgICAgICB5aWVsZCBhc3NpZ25IZWxwZXIucGVuZGluZztcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgd2lsbCBkbyB0d28gcHJvY2Vzc2VzIHRoYXQgaXMgcmVxdWlyZWQgdG8gcmVuZGVyIE1Ub29uIHByb3Blcmx5LlxuICAgICAqXG4gICAgICogLSBTZXQgcmVuZGVyIG9yZGVyXG4gICAgICogLSBHZW5lcmF0ZSBvdXRsaW5lXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWVzaCBBIHRhcmdldCBHTFRGIHByaW1pdGl2ZVxuICAgICAqIEBwYXJhbSBtYXRlcmlhbEluZGV4IFRoZSBtYXRlcmlhbCBpbmRleCBvZiB0aGUgcHJpbWl0aXZlXG4gICAgICovXG4gICAgX3NldHVwUHJpbWl0aXZlKG1lc2gsIG1hdGVyaWFsSW5kZXgpIHtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gdGhpcy5fZ2V0TVRvb25FeHRlbnNpb24obWF0ZXJpYWxJbmRleCk7XG4gICAgICAgIGlmIChleHRlbnNpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlck9yZGVyID0gdGhpcy5fcGFyc2VSZW5kZXJPcmRlcihleHRlbnNpb24pO1xuICAgICAgICAgICAgbWVzaC5yZW5kZXJPcmRlciA9IHJlbmRlck9yZGVyICsgdGhpcy5yZW5kZXJPcmRlck9mZnNldDtcbiAgICAgICAgICAgIHRoaXMuX2dlbmVyYXRlT3V0bGluZShtZXNoKTtcbiAgICAgICAgICAgIHRoaXMuX2FkZFRvTWF0ZXJpYWxTZXQobWVzaCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogR2VuZXJhdGUgb3V0bGluZSBmb3IgdGhlIGdpdmVuIG1lc2gsIGlmIGl0IG5lZWRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIG1lc2ggVGhlIHRhcmdldCBtZXNoXG4gICAgICovXG4gICAgX2dlbmVyYXRlT3V0bGluZShtZXNoKSB7XG4gICAgICAgIC8vIE9LLCBpdCdzIHRoZSBoYWNreSBwYXJ0LlxuICAgICAgICAvLyBXZSBhcmUgZ29pbmcgdG8gZHVwbGljYXRlIHRoZSBNVG9vbk1hdGVyaWFsIGZvciBvdXRsaW5lIHVzZS5cbiAgICAgICAgLy8gVGhlbiB3ZSBhcmUgZ29pbmcgdG8gY3JlYXRlIHR3byBnZW9tZXRyeSBncm91cHMgYW5kIHJlZmVyIHNhbWUgYnVmZmVyIGJ1dCBkaWZmZXJlbnQgbWF0ZXJpYWwuXG4gICAgICAgIC8vIEl0J3MgaG93IHdlIGRyYXcgdHdvIG1hdGVyaWFscyBhdCBvbmNlIHVzaW5nIGEgc2luZ2xlIG1lc2guXG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgbWF0ZXJpYWwgaXMgbXRvb25cbiAgICAgICAgY29uc3Qgc3VyZmFjZU1hdGVyaWFsID0gbWVzaC5tYXRlcmlhbDtcbiAgICAgICAgaWYgKCEoc3VyZmFjZU1hdGVyaWFsIGluc3RhbmNlb2YgTVRvb25NYXRlcmlhbCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBjaGVjayB3aGV0aGVyIHdlIHJlYWxseSBoYXZlIHRvIHByZXBhcmUgb3V0bGluZSBvciBub3RcbiAgICAgICAgaWYgKHN1cmZhY2VNYXRlcmlhbC5vdXRsaW5lV2lkdGhNb2RlID09PSAnbm9uZScgfHwgc3VyZmFjZU1hdGVyaWFsLm91dGxpbmVXaWR0aEZhY3RvciA8PSAwLjApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBtYWtlIGl0cyBtYXRlcmlhbCBhbiBhcnJheVxuICAgICAgICBtZXNoLm1hdGVyaWFsID0gW3N1cmZhY2VNYXRlcmlhbF07IC8vIG1lc2gubWF0ZXJpYWwgaXMgZ3VhcmFudGVlZCB0byBiZSBhIE1hdGVyaWFsIGluIEdMVEZMb2FkZXJcbiAgICAgICAgLy8gZHVwbGljYXRlIHRoZSBtYXRlcmlhbCBmb3Igb3V0bGluZSB1c2VcbiAgICAgICAgY29uc3Qgb3V0bGluZU1hdGVyaWFsID0gc3VyZmFjZU1hdGVyaWFsLmNsb25lKCk7XG4gICAgICAgIG91dGxpbmVNYXRlcmlhbC5uYW1lICs9ICcgKE91dGxpbmUpJztcbiAgICAgICAgb3V0bGluZU1hdGVyaWFsLmlzT3V0bGluZSA9IHRydWU7XG4gICAgICAgIG91dGxpbmVNYXRlcmlhbC5zaWRlID0gVEhSRUUuQmFja1NpZGU7XG4gICAgICAgIG1lc2gubWF0ZXJpYWwucHVzaChvdXRsaW5lTWF0ZXJpYWwpO1xuICAgICAgICAvLyBtYWtlIHR3byBnZW9tZXRyeSBncm91cHMgb3V0IG9mIGEgc2FtZSBidWZmZXJcbiAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBtZXNoLmdlb21ldHJ5OyAvLyBtZXNoLmdlb21ldHJ5IGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBCdWZmZXJHZW9tZXRyeSBpbiBHTFRGTG9hZGVyXG4gICAgICAgIGNvbnN0IHByaW1pdGl2ZVZlcnRpY2VzID0gZ2VvbWV0cnkuaW5kZXggPyBnZW9tZXRyeS5pbmRleC5jb3VudCA6IGdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24uY291bnQgLyAzO1xuICAgICAgICBnZW9tZXRyeS5hZGRHcm91cCgwLCBwcmltaXRpdmVWZXJ0aWNlcywgMCk7XG4gICAgICAgIGdlb21ldHJ5LmFkZEdyb3VwKDAsIHByaW1pdGl2ZVZlcnRpY2VzLCAxKTtcbiAgICB9XG4gICAgX2FkZFRvTWF0ZXJpYWxTZXQobWVzaCkge1xuICAgICAgICBjb25zdCBtYXRlcmlhbE9yTWF0ZXJpYWxzID0gbWVzaC5tYXRlcmlhbDtcbiAgICAgICAgY29uc3QgbWF0ZXJpYWxTZXQgPSBuZXcgU2V0KCk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1hdGVyaWFsT3JNYXRlcmlhbHMpKSB7XG4gICAgICAgICAgICBtYXRlcmlhbE9yTWF0ZXJpYWxzLmZvckVhY2goKG1hdGVyaWFsKSA9PiBtYXRlcmlhbFNldC5hZGQobWF0ZXJpYWwpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG1hdGVyaWFsU2V0LmFkZChtYXRlcmlhbE9yTWF0ZXJpYWxzKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG1hdGVyaWFsIG9mIG1hdGVyaWFsU2V0KSB7XG4gICAgICAgICAgICBpZiAobWF0ZXJpYWwgaW5zdGFuY2VvZiBNVG9vbk1hdGVyaWFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbVRvb25NYXRlcmlhbFNldC5hZGQobWF0ZXJpYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIF9wYXJzZVJlbmRlck9yZGVyKGV4dGVuc2lvbikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIC8vIHRyYW5zcGFyZW50V2l0aFpXcml0ZSByYW5nZXMgZnJvbSAwIHRvICs5XG4gICAgICAgIC8vIG1lcmUgdHJhbnNwYXJlbnQgcmFuZ2VzIGZyb20gLTkgdG8gMFxuICAgICAgICBjb25zdCBlbmFibGVkWldyaXRlID0gZXh0ZW5zaW9uLnRyYW5zcGFyZW50V2l0aFpXcml0ZTtcbiAgICAgICAgcmV0dXJuIChlbmFibGVkWldyaXRlID8gMCA6IDE5KSArICgoX2EgPSBleHRlbnNpb24ucmVuZGVyUXVldWVPZmZzZXROdW1iZXIpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDApO1xuICAgIH1cbn1cbk1Ub29uTWF0ZXJpYWxMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUUgPSAnVlJNQ19tYXRlcmlhbHNfbXRvb24nO1xuXG5leHBvcnQgeyBNVG9vbk1hdGVyaWFsLCBNVG9vbk1hdGVyaWFsRGVidWdNb2RlLCBNVG9vbk1hdGVyaWFsTG9hZGVyUGx1Z2luLCBNVG9vbk1hdGVyaWFsT3V0bGluZVdpZHRoTW9kZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkR2h5WldVdGRuSnRMVzFoZEdWeWFXRnNjeTF0ZEc5dmJpNXRiMlIxYkdVdWFuTWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDI1dlpHVmZiVzlrZFd4bGN5OTBjMnhwWWk5MGMyeHBZaTVsY3pZdWFuTWlMQ0l1TGk5emNtTXZUVlJ2YjI1TllYUmxjbWxoYkVSbFluVm5UVzlrWlM1MGN5SXNJaTR1TDNOeVl5OU5WRzl2YmsxaGRHVnlhV0ZzVDNWMGJHbHVaVmRwWkhSb1RXOWtaUzUwY3lJc0lpNHVMM055WXk5MWRHbHNjeTluWlhSVVpYaDBkWEpsUTI5c2IzSlRjR0ZqWlM1MGN5SXNJaTR1TDNOeVl5OU5WRzl2YmsxaGRHVnlhV0ZzTG5Seklpd2lMaTR2YzNKakwzVjBhV3h6TDNObGRGUmxlSFIxY21WRGIyeHZjbE53WVdObExuUnpJaXdpTGk0dmMzSmpMMGRNVkVaTlZHOXZiazFoZEdWeWFXRnNVR0Z5WVcxelFYTnphV2R1U0dWc2NHVnlMblJ6SWl3aUxpNHZjM0pqTDAxVWIyOXVUV0YwWlhKcFlXeE1iMkZrWlhKUWJIVm5hVzR1ZEhNaVhTd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtseHlYRzVEYjNCNWNtbG5hSFFnS0dNcElFMXBZM0p2YzI5bWRDQkRiM0p3YjNKaGRHbHZiaTVjY2x4dVhISmNibEJsY20xcGMzTnBiMjRnZEc4Z2RYTmxMQ0JqYjNCNUxDQnRiMlJwWm5rc0lHRnVaQzl2Y2lCa2FYTjBjbWxpZFhSbElIUm9hWE1nYzI5bWRIZGhjbVVnWm05eUlHRnVlVnh5WEc1d2RYSndiM05sSUhkcGRHZ2diM0lnZDJsMGFHOTFkQ0JtWldVZ2FYTWdhR1Z5WldKNUlHZHlZVzUwWldRdVhISmNibHh5WEc1VVNFVWdVMDlHVkZkQlVrVWdTVk1nVUZKUFZrbEVSVVFnWENKQlV5QkpVMXdpSUVGT1JDQlVTRVVnUVZWVVNFOVNJRVJKVTBOTVFVbE5VeUJCVEV3Z1YwRlNVa0ZPVkVsRlV5QlhTVlJJWEhKY2JsSkZSMEZTUkNCVVR5QlVTRWxUSUZOUFJsUlhRVkpGSUVsT1EweFZSRWxPUnlCQlRFd2dTVTFRVEVsRlJDQlhRVkpTUVU1VVNVVlRJRTlHSUUxRlVrTklRVTVVUVVKSlRFbFVXVnh5WEc1QlRrUWdSa2xVVGtWVFV5NGdTVTRnVGs4Z1JWWkZUbFFnVTBoQlRFd2dWRWhGSUVGVlZFaFBVaUJDUlNCTVNVRkNURVVnUms5U0lFRk9XU0JUVUVWRFNVRk1MQ0JFU1ZKRlExUXNYSEpjYmtsT1JFbFNSVU5VTENCUFVpQkRUMDVUUlZGVlJVNVVTVUZNSUVSQlRVRkhSVk1nVDFJZ1FVNVpJRVJCVFVGSFJWTWdWMGhCVkZOUFJWWkZVaUJTUlZOVlRGUkpUa2NnUmxKUFRWeHlYRzVNVDFOVElFOUdJRlZUUlN3Z1JFRlVRU0JQVWlCUVVrOUdTVlJUTENCWFNFVlVTRVZTSUVsT0lFRk9JRUZEVkVsUFRpQlBSaUJEVDA1VVVrRkRWQ3dnVGtWSFRFbEhSVTVEUlNCUFVseHlYRzVQVkVoRlVpQlVUMUpVU1U5VlV5QkJRMVJKVDA0c0lFRlNTVk5KVGtjZ1QxVlVJRTlHSUU5U0lFbE9JRU5QVGs1RlExUkpUMDRnVjBsVVNDQlVTRVVnVlZORklFOVNYSEpjYmxCRlVrWlBVazFCVGtORklFOUdJRlJJU1ZNZ1UwOUdWRmRCVWtVdVhISmNiaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUlDb3ZYSEpjYmk4cUlHZHNiMkpoYkNCU1pXWnNaV04wTENCUWNtOXRhWE5sSUNvdlhISmNibHh5WEc1MllYSWdaWGgwWlc1a1UzUmhkR2xqY3lBOUlHWjFibU4wYVc5dUtHUXNJR0lwSUh0Y2NseHVJQ0FnSUdWNGRHVnVaRk4wWVhScFkzTWdQU0JQWW1wbFkzUXVjMlYwVUhKdmRHOTBlWEJsVDJZZ2ZIeGNjbHh1SUNBZ0lDQWdJQ0FvZXlCZlgzQnliM1J2WDE4NklGdGRJSDBnYVc1emRHRnVZMlZ2WmlCQmNuSmhlU0FtSmlCbWRXNWpkR2x2YmlBb1pDd2dZaWtnZXlCa0xsOWZjSEp2ZEc5Zlh5QTlJR0k3SUgwcElIeDhYSEpjYmlBZ0lDQWdJQ0FnWm5WdVkzUnBiMjRnS0dRc0lHSXBJSHNnWm05eUlDaDJZWElnY0NCcGJpQmlLU0JwWmlBb1QySnFaV04wTG5CeWIzUnZkSGx3WlM1b1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tHSXNJSEFwS1NCa1czQmRJRDBnWWx0d1hUc2dmVHRjY2x4dUlDQWdJSEpsZEhWeWJpQmxlSFJsYm1SVGRHRjBhV056S0dRc0lHSXBPMXh5WEc1OU8xeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZlpYaDBaVzVrY3loa0xDQmlLU0I3WEhKY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUdJZ0lUMDlJRndpWm5WdVkzUnBiMjVjSWlBbUppQmlJQ0U5UFNCdWRXeHNLVnh5WEc0Z0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSkRiR0Z6Y3lCbGVIUmxibVJ6SUhaaGJIVmxJRndpSUNzZ1UzUnlhVzVuS0dJcElDc2dYQ0lnYVhNZ2JtOTBJR0VnWTI5dWMzUnlkV04wYjNJZ2IzSWdiblZzYkZ3aUtUdGNjbHh1SUNBZ0lHVjRkR1Z1WkZOMFlYUnBZM01vWkN3Z1lpazdYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQmZYeWdwSUhzZ2RHaHBjeTVqYjI1emRISjFZM1J2Y2lBOUlHUTdJSDFjY2x4dUlDQWdJR1F1Y0hKdmRHOTBlWEJsSUQwZ1lpQTlQVDBnYm5Wc2JDQS9JRTlpYW1WamRDNWpjbVZoZEdVb1lpa2dPaUFvWDE4dWNISnZkRzkwZVhCbElEMGdZaTV3Y205MGIzUjVjR1VzSUc1bGR5QmZYeWdwS1R0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElIWmhjaUJmWDJGemMybG5iaUE5SUdaMWJtTjBhVzl1S0NrZ2UxeHlYRzRnSUNBZ1gxOWhjM05wWjI0Z1BTQlBZbXBsWTNRdVlYTnphV2R1SUh4OElHWjFibU4wYVc5dUlGOWZZWE56YVdkdUtIUXBJSHRjY2x4dUlDQWdJQ0FnSUNCbWIzSWdLSFpoY2lCekxDQnBJRDBnTVN3Z2JpQTlJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZzdJR2tnUENCdU95QnBLeXNwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnY3lBOUlHRnlaM1Z0Wlc1MGMxdHBYVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoMllYSWdjQ0JwYmlCektTQnBaaUFvVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzVvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0hNc0lIQXBLU0IwVzNCZElEMGdjMXR3WFR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFE3WEhKY2JpQWdJQ0I5WEhKY2JpQWdJQ0J5WlhSMWNtNGdYMTloYzNOcFoyNHVZWEJ3Ykhrb2RHaHBjeXdnWVhKbmRXMWxiblJ6S1R0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZjbVZ6ZENoekxDQmxLU0I3WEhKY2JpQWdJQ0IyWVhJZ2RDQTlJSHQ5TzF4eVhHNGdJQ0FnWm05eUlDaDJZWElnY0NCcGJpQnpLU0JwWmlBb1QySnFaV04wTG5CeWIzUnZkSGx3WlM1b1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tITXNJSEFwSUNZbUlHVXVhVzVrWlhoUFppaHdLU0E4SURBcFhISmNiaUFnSUNBZ0lDQWdkRnR3WFNBOUlITmJjRjA3WEhKY2JpQWdJQ0JwWmlBb2N5QWhQU0J1ZFd4c0lDWW1JSFI1Y0dWdlppQlBZbXBsWTNRdVoyVjBUM2R1VUhKdmNHVnlkSGxUZVcxaWIyeHpJRDA5UFNCY0ltWjFibU4wYVc5dVhDSXBYSEpjYmlBZ0lDQWdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQXNJSEFnUFNCUFltcGxZM1F1WjJWMFQzZHVVSEp2Y0dWeWRIbFRlVzFpYjJ4ektITXBPeUJwSUR3Z2NDNXNaVzVuZEdnN0lHa3JLeWtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1pTNXBibVJsZUU5bUtIQmJhVjBwSUR3Z01DQW1KaUJQWW1wbFkzUXVjSEp2ZEc5MGVYQmxMbkJ5YjNCbGNuUjVTWE5GYm5WdFpYSmhZbXhsTG1OaGJHd29jeXdnY0Z0cFhTa3BYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwVzNCYmFWMWRJRDBnYzF0d1cybGRYVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNCeVpYUjFjbTRnZER0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZaR1ZqYjNKaGRHVW9aR1ZqYjNKaGRHOXljeXdnZEdGeVoyVjBMQ0JyWlhrc0lHUmxjMk1wSUh0Y2NseHVJQ0FnSUhaaGNpQmpJRDBnWVhKbmRXMWxiblJ6TG14bGJtZDBhQ3dnY2lBOUlHTWdQQ0F6SUQ4Z2RHRnlaMlYwSURvZ1pHVnpZeUE5UFQwZ2JuVnNiQ0EvSUdSbGMyTWdQU0JQWW1wbFkzUXVaMlYwVDNkdVVISnZjR1Z5ZEhsRVpYTmpjbWx3ZEc5eUtIUmhjbWRsZEN3Z2EyVjVLU0E2SUdSbGMyTXNJR1E3WEhKY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUZKbFpteGxZM1FnUFQwOUlGd2liMkpxWldOMFhDSWdKaVlnZEhsd1pXOW1JRkpsWm14bFkzUXVaR1ZqYjNKaGRHVWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2djaUE5SUZKbFpteGxZM1F1WkdWamIzSmhkR1VvWkdWamIzSmhkRzl5Y3l3Z2RHRnlaMlYwTENCclpYa3NJR1JsYzJNcE8xeHlYRzRnSUNBZ1pXeHpaU0JtYjNJZ0tIWmhjaUJwSUQwZ1pHVmpiM0poZEc5eWN5NXNaVzVuZEdnZ0xTQXhPeUJwSUQ0OUlEQTdJR2t0TFNrZ2FXWWdLR1FnUFNCa1pXTnZjbUYwYjNKelcybGRLU0J5SUQwZ0tHTWdQQ0F6SUQ4Z1pDaHlLU0E2SUdNZ1BpQXpJRDhnWkNoMFlYSm5aWFFzSUd0bGVTd2djaWtnT2lCa0tIUmhjbWRsZEN3Z2EyVjVLU2tnZkh3Z2NqdGNjbHh1SUNBZ0lISmxkSFZ5YmlCaklENGdNeUFtSmlCeUlDWW1JRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNoMFlYSm5aWFFzSUd0bGVTd2djaWtzSUhJN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM0JoY21GdEtIQmhjbUZ0U1c1a1pYZ3NJR1JsWTI5eVlYUnZjaWtnZTF4eVhHNGdJQ0FnY21WMGRYSnVJR1oxYm1OMGFXOXVJQ2gwWVhKblpYUXNJR3RsZVNrZ2V5QmtaV052Y21GMGIzSW9kR0Z5WjJWMExDQnJaWGtzSUhCaGNtRnRTVzVrWlhncE95QjlYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJWelJHVmpiM0poZEdVb1kzUnZjaXdnWkdWelkzSnBjSFJ2Y2tsdUxDQmtaV052Y21GMGIzSnpMQ0JqYjI1MFpYaDBTVzRzSUdsdWFYUnBZV3hwZW1WeWN5d2daWGgwY21GSmJtbDBhV0ZzYVhwbGNuTXBJSHRjY2x4dUlDQWdJR1oxYm1OMGFXOXVJR0ZqWTJWd2RDaG1LU0I3SUdsbUlDaG1JQ0U5UFNCMmIybGtJREFnSmlZZ2RIbHdaVzltSUdZZ0lUMDlJRndpWm5WdVkzUnBiMjVjSWlrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJa1oxYm1OMGFXOXVJR1Y0Y0dWamRHVmtYQ0lwT3lCeVpYUjFjbTRnWmpzZ2ZWeHlYRzRnSUNBZ2RtRnlJR3RwYm1RZ1BTQmpiMjUwWlhoMFNXNHVhMmx1WkN3Z2EyVjVJRDBnYTJsdVpDQTlQVDBnWENKblpYUjBaWEpjSWlBL0lGd2laMlYwWENJZ09pQnJhVzVrSUQwOVBTQmNJbk5sZEhSbGNsd2lJRDhnWENKelpYUmNJaUE2SUZ3aWRtRnNkV1ZjSWp0Y2NseHVJQ0FnSUhaaGNpQjBZWEpuWlhRZ1BTQWhaR1Z6WTNKcGNIUnZja2x1SUNZbUlHTjBiM0lnUHlCamIyNTBaWGgwU1c1YlhDSnpkR0YwYVdOY0lsMGdQeUJqZEc5eUlEb2dZM1J2Y2k1d2NtOTBiM1I1Y0dVZ09pQnVkV3hzTzF4eVhHNGdJQ0FnZG1GeUlHUmxjMk55YVhCMGIzSWdQU0JrWlhOamNtbHdkRzl5U1c0Z2ZId2dLSFJoY21kbGRDQS9JRTlpYW1WamRDNW5aWFJQZDI1UWNtOXdaWEowZVVSbGMyTnlhWEIwYjNJb2RHRnlaMlYwTENCamIyNTBaWGgwU1c0dWJtRnRaU2tnT2lCN2ZTazdYSEpjYmlBZ0lDQjJZWElnWHl3Z1pHOXVaU0E5SUdaaGJITmxPMXh5WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SUdSbFkyOXlZWFJ2Y25NdWJHVnVaM1JvSUMwZ01Uc2dhU0ErUFNBd095QnBMUzBwSUh0Y2NseHVJQ0FnSUNBZ0lDQjJZWElnWTI5dWRHVjRkQ0E5SUh0OU8xeHlYRzRnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJSEFnYVc0Z1kyOXVkR1Y0ZEVsdUtTQmpiMjUwWlhoMFczQmRJRDBnY0NBOVBUMGdYQ0poWTJObGMzTmNJaUEvSUh0OUlEb2dZMjl1ZEdWNGRFbHVXM0JkTzF4eVhHNGdJQ0FnSUNBZ0lHWnZjaUFvZG1GeUlIQWdhVzRnWTI5dWRHVjRkRWx1TG1GalkyVnpjeWtnWTI5dWRHVjRkQzVoWTJObGMzTmJjRjBnUFNCamIyNTBaWGgwU1c0dVlXTmpaWE56VzNCZE8xeHlYRzRnSUNBZ0lDQWdJR052Ym5SbGVIUXVZV1JrU1c1cGRHbGhiR2w2WlhJZ1BTQm1kVzVqZEdsdmJpQW9aaWtnZXlCcFppQW9aRzl1WlNrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJa05oYm01dmRDQmhaR1FnYVc1cGRHbGhiR2w2WlhKeklHRm1kR1Z5SUdSbFkyOXlZWFJwYjI0Z2FHRnpJR052YlhCc1pYUmxaRndpS1RzZ1pYaDBjbUZKYm1sMGFXRnNhWHBsY25NdWNIVnphQ2hoWTJObGNIUW9aaUI4ZkNCdWRXeHNLU2s3SUgwN1hISmNiaUFnSUNBZ0lDQWdkbUZ5SUhKbGMzVnNkQ0E5SUNnd0xDQmtaV052Y21GMGIzSnpXMmxkS1NocmFXNWtJRDA5UFNCY0ltRmpZMlZ6YzI5eVhDSWdQeUI3SUdkbGREb2daR1Z6WTNKcGNIUnZjaTVuWlhRc0lITmxkRG9nWkdWelkzSnBjSFJ2Y2k1elpYUWdmU0E2SUdSbGMyTnlhWEIwYjNKYmEyVjVYU3dnWTI5dWRHVjRkQ2s3WEhKY2JpQWdJQ0FnSUNBZ2FXWWdLR3RwYm1RZ1BUMDlJRndpWVdOalpYTnpiM0pjSWlrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jbVZ6ZFd4MElEMDlQU0IyYjJsa0lEQXBJR052Ym5ScGJuVmxPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY21WemRXeDBJRDA5UFNCdWRXeHNJSHg4SUhSNWNHVnZaaUJ5WlhOMWJIUWdJVDA5SUZ3aWIySnFaV04wWENJcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pQWW1wbFkzUWdaWGh3WldOMFpXUmNJaWs3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoZklEMGdZV05qWlhCMEtISmxjM1ZzZEM1blpYUXBLU0JrWlhOamNtbHdkRzl5TG1kbGRDQTlJRjg3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoZklEMGdZV05qWlhCMEtISmxjM1ZzZEM1elpYUXBLU0JrWlhOamNtbHdkRzl5TG5ObGRDQTlJRjg3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoZklEMGdZV05qWlhCMEtISmxjM1ZzZEM1cGJtbDBLU2tnYVc1cGRHbGhiR2w2WlhKekxuQjFjMmdvWHlrN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdhV1lnS0Y4Z1BTQmhZMk5sY0hRb2NtVnpkV3gwS1NrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9hMmx1WkNBOVBUMGdYQ0ptYVdWc1pGd2lLU0JwYm1sMGFXRnNhWHBsY25NdWNIVnphQ2hmS1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQmtaWE5qY21sd2RHOXlXMnRsZVYwZ1BTQmZPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUgxY2NseHVJQ0FnSUdsbUlDaDBZWEpuWlhRcElFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2gwWVhKblpYUXNJR052Ym5SbGVIUkpiaTV1WVcxbExDQmtaWE5qY21sd2RHOXlLVHRjY2x4dUlDQWdJR1J2Ym1VZ1BTQjBjblZsTzF4eVhHNTlPMXh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZjblZ1U1c1cGRHbGhiR2w2WlhKektIUm9hWE5CY21jc0lHbHVhWFJwWVd4cGVtVnljeXdnZG1Gc2RXVXBJSHRjY2x4dUlDQWdJSFpoY2lCMWMyVldZV3gxWlNBOUlHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ1BpQXlPMXh5WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0JwYm1sMGFXRnNhWHBsY25NdWJHVnVaM1JvT3lCcEt5c3BJSHRjY2x4dUlDQWdJQ0FnSUNCMllXeDFaU0E5SUhWelpWWmhiSFZsSUQ4Z2FXNXBkR2xoYkdsNlpYSnpXMmxkTG1OaGJHd29kR2hwYzBGeVp5d2dkbUZzZFdVcElEb2dhVzVwZEdsaGJHbDZaWEp6VzJsZExtTmhiR3dvZEdocGMwRnlaeWs3WEhKY2JpQWdJQ0I5WEhKY2JpQWdJQ0J5WlhSMWNtNGdkWE5sVm1Gc2RXVWdQeUIyWVd4MVpTQTZJSFp2YVdRZ01EdGNjbHh1ZlR0Y2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNCeWIzQkxaWGtvZUNrZ2UxeHlYRzRnSUNBZ2NtVjBkWEp1SUhSNWNHVnZaaUI0SUQwOVBTQmNJbk41YldKdmJGd2lJRDhnZUNBNklGd2lYQ0l1WTI5dVkyRjBLSGdwTzF4eVhHNTlPMXh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZjMlYwUm5WdVkzUnBiMjVPWVcxbEtHWXNJRzVoYldVc0lIQnlaV1pwZUNrZ2UxeHlYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQnVZVzFsSUQwOVBTQmNJbk41YldKdmJGd2lLU0J1WVcxbElEMGdibUZ0WlM1a1pYTmpjbWx3ZEdsdmJpQS9JRndpVzF3aUxtTnZibU5oZENodVlXMWxMbVJsYzJOeWFYQjBhVzl1TENCY0lsMWNJaWtnT2lCY0lsd2lPMXh5WEc0Z0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2htTENCY0ltNWhiV1ZjSWl3Z2V5QmpiMjVtYVdkMWNtRmliR1U2SUhSeWRXVXNJSFpoYkhWbE9pQndjbVZtYVhnZ1B5QmNJbHdpTG1OdmJtTmhkQ2h3Y21WbWFYZ3NJRndpSUZ3aUxDQnVZVzFsS1NBNklHNWhiV1VnZlNrN1hISmNibjA3WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl0WlhSaFpHRjBZU2h0WlhSaFpHRjBZVXRsZVN3Z2JXVjBZV1JoZEdGV1lXeDFaU2tnZTF4eVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCU1pXWnNaV04wSUQwOVBTQmNJbTlpYW1WamRGd2lJQ1ltSUhSNWNHVnZaaUJTWldac1pXTjBMbTFsZEdGa1lYUmhJRDA5UFNCY0ltWjFibU4wYVc5dVhDSXBJSEpsZEhWeWJpQlNaV1pzWldOMExtMWxkR0ZrWVhSaEtHMWxkR0ZrWVhSaFMyVjVMQ0J0WlhSaFpHRjBZVlpoYkhWbEtUdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmWVhkaGFYUmxjaWgwYUdselFYSm5MQ0JmWVhKbmRXMWxiblJ6TENCUUxDQm5aVzVsY21GMGIzSXBJSHRjY2x4dUlDQWdJR1oxYm1OMGFXOXVJR0ZrYjNCMEtIWmhiSFZsS1NCN0lISmxkSFZ5YmlCMllXeDFaU0JwYm5OMFlXNWpaVzltSUZBZ1B5QjJZV3gxWlNBNklHNWxkeUJRS0daMWJtTjBhVzl1SUNoeVpYTnZiSFpsS1NCN0lISmxjMjlzZG1Vb2RtRnNkV1VwT3lCOUtUc2dmVnh5WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUFvVUNCOGZDQW9VQ0E5SUZCeWIyMXBjMlVwS1NobWRXNWpkR2x2YmlBb2NtVnpiMngyWlN3Z2NtVnFaV04wS1NCN1hISmNiaUFnSUNBZ0lDQWdablZ1WTNScGIyNGdablZzWm1sc2JHVmtLSFpoYkhWbEtTQjdJSFJ5ZVNCN0lITjBaWEFvWjJWdVpYSmhkRzl5TG01bGVIUW9kbUZzZFdVcEtUc2dmU0JqWVhSamFDQW9aU2tnZXlCeVpXcGxZM1FvWlNrN0lIMGdmVnh5WEc0Z0lDQWdJQ0FnSUdaMWJtTjBhVzl1SUhKbGFtVmpkR1ZrS0haaGJIVmxLU0I3SUhSeWVTQjdJSE4wWlhBb1oyVnVaWEpoZEc5eVcxd2lkR2h5YjNkY0lsMG9kbUZzZFdVcEtUc2dmU0JqWVhSamFDQW9aU2tnZXlCeVpXcGxZM1FvWlNrN0lIMGdmVnh5WEc0Z0lDQWdJQ0FnSUdaMWJtTjBhVzl1SUhOMFpYQW9jbVZ6ZFd4MEtTQjdJSEpsYzNWc2RDNWtiMjVsSUQ4Z2NtVnpiMngyWlNoeVpYTjFiSFF1ZG1Gc2RXVXBJRG9nWVdSdmNIUW9jbVZ6ZFd4MExuWmhiSFZsS1M1MGFHVnVLR1oxYkdacGJHeGxaQ3dnY21WcVpXTjBaV1FwT3lCOVhISmNiaUFnSUNBZ0lDQWdjM1JsY0Nnb1oyVnVaWEpoZEc5eUlEMGdaMlZ1WlhKaGRHOXlMbUZ3Y0d4NUtIUm9hWE5CY21jc0lGOWhjbWQxYldWdWRITWdmSHdnVzEwcEtTNXVaWGgwS0NrcE8xeHlYRzRnSUNBZ2ZTazdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJkbGJtVnlZWFJ2Y2loMGFHbHpRWEpuTENCaWIyUjVLU0I3WEhKY2JpQWdJQ0IyWVhJZ1h5QTlJSHNnYkdGaVpXdzZJREFzSUhObGJuUTZJR1oxYm1OMGFXOXVLQ2tnZXlCcFppQW9kRnN3WFNBbUlERXBJSFJvY205M0lIUmJNVjA3SUhKbGRIVnliaUIwV3pGZE95QjlMQ0IwY25sek9pQmJYU3dnYjNCek9pQmJYU0I5TENCbUxDQjVMQ0IwTENCbk8xeHlYRzRnSUNBZ2NtVjBkWEp1SUdjZ1BTQjdJRzVsZUhRNklIWmxjbUlvTUNrc0lGd2lkR2h5YjNkY0lqb2dkbVZ5WWlneEtTd2dYQ0p5WlhSMWNtNWNJam9nZG1WeVlpZ3lLU0I5TENCMGVYQmxiMllnVTNsdFltOXNJRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdKaVlnS0dkYlUzbHRZbTlzTG1sMFpYSmhkRzl5WFNBOUlHWjFibU4wYVc5dUtDa2dleUJ5WlhSMWNtNGdkR2hwY3pzZ2ZTa3NJR2M3WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUIyWlhKaUtHNHBJSHNnY21WMGRYSnVJR1oxYm1OMGFXOXVJQ2gyS1NCN0lISmxkSFZ5YmlCemRHVndLRnR1TENCMlhTazdJSDA3SUgxY2NseHVJQ0FnSUdaMWJtTjBhVzl1SUhOMFpYQW9iM0FwSUh0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvWmlrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJa2RsYm1WeVlYUnZjaUJwY3lCaGJISmxZV1I1SUdWNFpXTjFkR2x1Wnk1Y0lpazdYSEpjYmlBZ0lDQWdJQ0FnZDJocGJHVWdLR2NnSmlZZ0tHY2dQU0F3TENCdmNGc3dYU0FtSmlBb1h5QTlJREFwS1N3Z1h5a2dkSEo1SUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHWWdQU0F4TENCNUlDWW1JQ2gwSUQwZ2IzQmJNRjBnSmlBeUlEOGdlVnRjSW5KbGRIVnlibHdpWFNBNklHOXdXekJkSUQ4Z2VWdGNJblJvY205M1hDSmRJSHg4SUNnb2RDQTlJSGxiWENKeVpYUjFjbTVjSWwwcElDWW1JSFF1WTJGc2JDaDVLU3dnTUNrZ09pQjVMbTVsZUhRcElDWW1JQ0VvZENBOUlIUXVZMkZzYkNoNUxDQnZjRnN4WFNrcExtUnZibVVwSUhKbGRIVnliaUIwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2VTQTlJREFzSUhRcElHOXdJRDBnVzI5d1d6QmRJQ1lnTWl3Z2RDNTJZV3gxWlYwN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhOM2FYUmphQ0FvYjNCYk1GMHBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdNRG9nWTJGelpTQXhPaUIwSUQwZ2IzQTdJR0p5WldGck8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBME9pQmZMbXhoWW1Wc0t5czdJSEpsZEhWeWJpQjdJSFpoYkhWbE9pQnZjRnN4WFN3Z1pHOXVaVG9nWm1Gc2MyVWdmVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdOVG9nWHk1c1lXSmxiQ3NyT3lCNUlEMGdiM0JiTVYwN0lHOXdJRDBnV3pCZE95QmpiMjUwYVc1MVpUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ056b2diM0FnUFNCZkxtOXdjeTV3YjNBb0tUc2dYeTUwY25sekxuQnZjQ2dwT3lCamIyNTBhVzUxWlR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHUmxabUYxYkhRNlhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRW9kQ0E5SUY4dWRISjVjeXdnZENBOUlIUXViR1Z1WjNSb0lENGdNQ0FtSmlCMFczUXViR1Z1WjNSb0lDMGdNVjBwSUNZbUlDaHZjRnN3WFNBOVBUMGdOaUI4ZkNCdmNGc3dYU0E5UFQwZ01pa3BJSHNnWHlBOUlEQTdJR052Ym5ScGJuVmxPeUI5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0c5d1d6QmRJRDA5UFNBeklDWW1JQ2doZENCOGZDQW9iM0JiTVYwZ1BpQjBXekJkSUNZbUlHOXdXekZkSUR3Z2RGc3pYU2twS1NCN0lGOHViR0ZpWld3Z1BTQnZjRnN4WFRzZ1luSmxZV3M3SUgxY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2IzQmJNRjBnUFQwOUlEWWdKaVlnWHk1c1lXSmxiQ0E4SUhSYk1WMHBJSHNnWHk1c1lXSmxiQ0E5SUhSYk1WMDdJSFFnUFNCdmNEc2dZbkpsWVdzN0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kQ0FtSmlCZkxteGhZbVZzSUR3Z2RGc3lYU2tnZXlCZkxteGhZbVZzSUQwZ2RGc3lYVHNnWHk1dmNITXVjSFZ6YUNodmNDazdJR0p5WldGck95QjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFJiTWwwcElGOHViM0J6TG5CdmNDZ3BPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lGOHVkSEo1Y3k1d2IzQW9LVHNnWTI5dWRHbHVkV1U3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdiM0FnUFNCaWIyUjVMbU5oYkd3b2RHaHBjMEZ5Wnl3Z1h5azdYSEpjYmlBZ0lDQWdJQ0FnZlNCallYUmphQ0FvWlNrZ2V5QnZjQ0E5SUZzMkxDQmxYVHNnZVNBOUlEQTdJSDBnWm1sdVlXeHNlU0I3SUdZZ1BTQjBJRDBnTURzZ2ZWeHlYRzRnSUNBZ0lDQWdJR2xtSUNodmNGc3dYU0FtSURVcElIUm9jbTkzSUc5d1d6RmRPeUJ5WlhSMWNtNGdleUIyWVd4MVpUb2diM0JiTUYwZ1B5QnZjRnN4WFNBNklIWnZhV1FnTUN3Z1pHOXVaVG9nZEhKMVpTQjlPMXh5WEc0Z0lDQWdmVnh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnZG1GeUlGOWZZM0psWVhSbFFtbHVaR2x1WnlBOUlFOWlhbVZqZEM1amNtVmhkR1VnUHlBb1puVnVZM1JwYjI0b2J5d2diU3dnYXl3Z2F6SXBJSHRjY2x4dUlDQWdJR2xtSUNock1pQTlQVDBnZFc1a1pXWnBibVZrS1NCck1pQTlJR3M3WEhKY2JpQWdJQ0IyWVhJZ1pHVnpZeUE5SUU5aWFtVmpkQzVuWlhSUGQyNVFjbTl3WlhKMGVVUmxjMk55YVhCMGIzSW9iU3dnYXlrN1hISmNiaUFnSUNCcFppQW9JV1JsYzJNZ2ZId2dLRndpWjJWMFhDSWdhVzRnWkdWell5QS9JQ0Z0TGw5ZlpYTk5iMlIxYkdVZ09pQmtaWE5qTG5keWFYUmhZbXhsSUh4OElHUmxjMk11WTI5dVptbG5kWEpoWW14bEtTa2dlMXh5WEc0Z0lDQWdJQ0FnSUdSbGMyTWdQU0I3SUdWdWRXMWxjbUZpYkdVNklIUnlkV1VzSUdkbGREb2dablZ1WTNScGIyNG9LU0I3SUhKbGRIVnliaUJ0VzJ0ZE95QjlJSDA3WEhKY2JpQWdJQ0I5WEhKY2JpQWdJQ0JQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb2J5d2dheklzSUdSbGMyTXBPMXh5WEc1OUtTQTZJQ2htZFc1amRHbHZiaWh2TENCdExDQnJMQ0JyTWlrZ2UxeHlYRzRnSUNBZ2FXWWdLR3N5SUQwOVBTQjFibVJsWm1sdVpXUXBJR3N5SUQwZ2F6dGNjbHh1SUNBZ0lHOWJhekpkSUQwZ2JWdHJYVHRjY2x4dWZTazdYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWxlSEJ2Y25SVGRHRnlLRzBzSUc4cElIdGNjbHh1SUNBZ0lHWnZjaUFvZG1GeUlIQWdhVzRnYlNrZ2FXWWdLSEFnSVQwOUlGd2laR1ZtWVhWc2RGd2lJQ1ltSUNGUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG1oaGMwOTNibEJ5YjNCbGNuUjVMbU5oYkd3b2J5d2djQ2twSUY5ZlkzSmxZWFJsUW1sdVpHbHVaeWh2TENCdExDQndLVHRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmRtRnNkV1Z6S0c4cElIdGNjbHh1SUNBZ0lIWmhjaUJ6SUQwZ2RIbHdaVzltSUZONWJXSnZiQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJQ1ltSUZONWJXSnZiQzVwZEdWeVlYUnZjaXdnYlNBOUlITWdKaVlnYjF0elhTd2dhU0E5SURBN1hISmNiaUFnSUNCcFppQW9iU2tnY21WMGRYSnVJRzB1WTJGc2JDaHZLVHRjY2x4dUlDQWdJR2xtSUNodklDWW1JSFI1Y0dWdlppQnZMbXhsYm1kMGFDQTlQVDBnWENKdWRXMWlaWEpjSWlrZ2NtVjBkWEp1SUh0Y2NseHVJQ0FnSUNBZ0lDQnVaWGgwT2lCbWRXNWpkR2x2YmlBb0tTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h2SUNZbUlHa2dQajBnYnk1c1pXNW5kR2dwSUc4Z1BTQjJiMmxrSURBN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUI3SUhaaGJIVmxPaUJ2SUNZbUlHOWJhU3NyWFN3Z1pHOXVaVG9nSVc4Z2ZUdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0I5TzF4eVhHNGdJQ0FnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loeklEOGdYQ0pQWW1wbFkzUWdhWE1nYm05MElHbDBaWEpoWW14bExsd2lJRG9nWENKVGVXMWliMnd1YVhSbGNtRjBiM0lnYVhNZ2JtOTBJR1JsWm1sdVpXUXVYQ0lwTzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOXlaV0ZrS0c4c0lHNHBJSHRjY2x4dUlDQWdJSFpoY2lCdElEMGdkSGx3Wlc5bUlGTjViV0p2YkNBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUNZbUlHOWJVM2x0WW05c0xtbDBaWEpoZEc5eVhUdGNjbHh1SUNBZ0lHbG1JQ2doYlNrZ2NtVjBkWEp1SUc4N1hISmNiaUFnSUNCMllYSWdhU0E5SUcwdVkyRnNiQ2h2S1N3Z2Npd2dZWElnUFNCYlhTd2daVHRjY2x4dUlDQWdJSFJ5ZVNCN1hISmNiaUFnSUNBZ0lDQWdkMmhwYkdVZ0tDaHVJRDA5UFNCMmIybGtJREFnZkh3Z2JpMHRJRDRnTUNrZ0ppWWdJU2h5SUQwZ2FTNXVaWGgwS0NrcExtUnZibVVwSUdGeUxuQjFjMmdvY2k1MllXeDFaU2s3WEhKY2JpQWdJQ0I5WEhKY2JpQWdJQ0JqWVhSamFDQW9aWEp5YjNJcElIc2daU0E5SUhzZ1pYSnliM0k2SUdWeWNtOXlJSDA3SUgxY2NseHVJQ0FnSUdacGJtRnNiSGtnZTF4eVhHNGdJQ0FnSUNBZ0lIUnllU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoeUlDWW1JQ0Z5TG1SdmJtVWdKaVlnS0cwZ1BTQnBXMXdpY21WMGRYSnVYQ0pkS1NrZ2JTNWpZV3hzS0drcE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNCbWFXNWhiR3g1SUhzZ2FXWWdLR1VwSUhSb2NtOTNJR1V1WlhKeWIzSTdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQWdJSEpsZEhWeWJpQmhjanRjY2x4dWZWeHlYRzVjY2x4dUx5b3FJRUJrWlhCeVpXTmhkR1ZrSUNvdlhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM053Y21WaFpDZ3BJSHRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJR0Z5SUQwZ1cxMHNJR2tnUFNBd095QnBJRHdnWVhKbmRXMWxiblJ6TG14bGJtZDBhRHNnYVNzcktWeHlYRzRnSUNBZ0lDQWdJR0Z5SUQwZ1lYSXVZMjl1WTJGMEtGOWZjbVZoWkNoaGNtZDFiV1Z1ZEhOYmFWMHBLVHRjY2x4dUlDQWdJSEpsZEhWeWJpQmhjanRjY2x4dWZWeHlYRzVjY2x4dUx5b3FJRUJrWlhCeVpXTmhkR1ZrSUNvdlhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM053Y21WaFpFRnljbUY1Y3lncElIdGNjbHh1SUNBZ0lHWnZjaUFvZG1GeUlITWdQU0F3TENCcElEMGdNQ3dnYVd3Z1BTQmhjbWQxYldWdWRITXViR1Z1WjNSb095QnBJRHdnYVd3N0lHa3JLeWtnY3lBclBTQmhjbWQxYldWdWRITmJhVjB1YkdWdVozUm9PMXh5WEc0Z0lDQWdabTl5SUNoMllYSWdjaUE5SUVGeWNtRjVLSE1wTENCcklEMGdNQ3dnYVNBOUlEQTdJR2tnUENCcGJEc2dhU3NyS1Z4eVhHNGdJQ0FnSUNBZ0lHWnZjaUFvZG1GeUlHRWdQU0JoY21kMWJXVnVkSE5iYVYwc0lHb2dQU0F3TENCcWJDQTlJR0V1YkdWdVozUm9PeUJxSUR3Z2FtdzdJR29yS3l3Z2F5c3JLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlXMnRkSUQwZ1lWdHFYVHRjY2x4dUlDQWdJSEpsZEhWeWJpQnlPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5emNISmxZV1JCY25KaGVTaDBieXdnWm5KdmJTd2djR0ZqYXlrZ2UxeHlYRzRnSUNBZ2FXWWdLSEJoWTJzZ2ZId2dZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQTlQVDBnTWlrZ1ptOXlJQ2gyWVhJZ2FTQTlJREFzSUd3Z1BTQm1jbTl0TG14bGJtZDBhQ3dnWVhJN0lHa2dQQ0JzT3lCcEt5c3BJSHRjY2x4dUlDQWdJQ0FnSUNCcFppQW9ZWElnZkh3Z0lTaHBJR2x1SUdaeWIyMHBLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaFlYSXBJR0Z5SUQwZ1FYSnlZWGt1Y0hKdmRHOTBlWEJsTG5Oc2FXTmxMbU5oYkd3b1puSnZiU3dnTUN3Z2FTazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHRnlXMmxkSUQwZ1puSnZiVnRwWFR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ0lDQnlaWFIxY200Z2RHOHVZMjl1WTJGMEtHRnlJSHg4SUVGeWNtRjVMbkJ5YjNSdmRIbHdaUzV6YkdsalpTNWpZV3hzS0daeWIyMHBLVHRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZllYZGhhWFFvZGlrZ2UxeHlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTWdhVzV6ZEdGdVkyVnZaaUJmWDJGM1lXbDBJRDhnS0hSb2FYTXVkaUE5SUhZc0lIUm9hWE1wSURvZ2JtVjNJRjlmWVhkaGFYUW9kaWs3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyRnplVzVqUjJWdVpYSmhkRzl5S0hSb2FYTkJjbWNzSUY5aGNtZDFiV1Z1ZEhNc0lHZGxibVZ5WVhSdmNpa2dlMXh5WEc0Z0lDQWdhV1lnS0NGVGVXMWliMnd1WVhONWJtTkpkR1Z5WVhSdmNpa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWxONWJXSnZiQzVoYzNsdVkwbDBaWEpoZEc5eUlHbHpJRzV2ZENCa1pXWnBibVZrTGx3aUtUdGNjbHh1SUNBZ0lIWmhjaUJuSUQwZ1oyVnVaWEpoZEc5eUxtRndjR3g1S0hSb2FYTkJjbWNzSUY5aGNtZDFiV1Z1ZEhNZ2ZId2dXMTBwTENCcExDQnhJRDBnVzEwN1hISmNiaUFnSUNCeVpYUjFjbTRnYVNBOUlIdDlMQ0IyWlhKaUtGd2libVY0ZEZ3aUtTd2dkbVZ5WWloY0luUm9jbTkzWENJcExDQjJaWEppS0Z3aWNtVjBkWEp1WENJcExDQnBXMU41YldKdmJDNWhjM2x1WTBsMFpYSmhkRzl5WFNBOUlHWjFibU4wYVc5dUlDZ3BJSHNnY21WMGRYSnVJSFJvYVhNN0lIMHNJR2s3WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUIyWlhKaUtHNHBJSHNnYVdZZ0tHZGJibDBwSUdsYmJsMGdQU0JtZFc1amRHbHZiaUFvZGlrZ2V5QnlaWFIxY200Z2JtVjNJRkJ5YjIxcGMyVW9ablZ1WTNScGIyNGdLR0VzSUdJcElIc2djUzV3ZFhOb0tGdHVMQ0IyTENCaExDQmlYU2tnUGlBeElIeDhJSEpsYzNWdFpTaHVMQ0IyS1RzZ2ZTazdJSDA3SUgxY2NseHVJQ0FnSUdaMWJtTjBhVzl1SUhKbGMzVnRaU2h1TENCMktTQjdJSFJ5ZVNCN0lITjBaWEFvWjF0dVhTaDJLU2s3SUgwZ1kyRjBZMmdnS0dVcElIc2djMlYwZEd4bEtIRmJNRjFiTTEwc0lHVXBPeUI5SUgxY2NseHVJQ0FnSUdaMWJtTjBhVzl1SUhOMFpYQW9jaWtnZXlCeUxuWmhiSFZsSUdsdWMzUmhibU5sYjJZZ1gxOWhkMkZwZENBL0lGQnliMjFwYzJVdWNtVnpiMngyWlNoeUxuWmhiSFZsTG5ZcExuUm9aVzRvWm5Wc1ptbHNiQ3dnY21WcVpXTjBLU0E2SUhObGRIUnNaU2h4V3pCZFd6SmRMQ0J5S1RzZ2ZWeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z1puVnNabWxzYkNoMllXeDFaU2tnZXlCeVpYTjFiV1VvWENKdVpYaDBYQ0lzSUhaaGJIVmxLVHNnZlZ4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnY21WcVpXTjBLSFpoYkhWbEtTQjdJSEpsYzNWdFpTaGNJblJvY205M1hDSXNJSFpoYkhWbEtUc2dmVnh5WEc0Z0lDQWdablZ1WTNScGIyNGdjMlYwZEd4bEtHWXNJSFlwSUhzZ2FXWWdLR1lvZGlrc0lIRXVjMmhwWm5Rb0tTd2djUzVzWlc1bmRHZ3BJSEpsYzNWdFpTaHhXekJkV3pCZExDQnhXekJkV3pGZEtUc2dmVnh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5aGMzbHVZMFJsYkdWbllYUnZjaWh2S1NCN1hISmNiaUFnSUNCMllYSWdhU3dnY0R0Y2NseHVJQ0FnSUhKbGRIVnliaUJwSUQwZ2UzMHNJSFpsY21Jb1hDSnVaWGgwWENJcExDQjJaWEppS0Z3aWRHaHliM2RjSWl3Z1puVnVZM1JwYjI0Z0tHVXBJSHNnZEdoeWIzY2daVHNnZlNrc0lIWmxjbUlvWENKeVpYUjFjbTVjSWlrc0lHbGJVM2x0WW05c0xtbDBaWEpoZEc5eVhTQTlJR1oxYm1OMGFXOXVJQ2dwSUhzZ2NtVjBkWEp1SUhSb2FYTTdJSDBzSUdrN1hISmNiaUFnSUNCbWRXNWpkR2x2YmlCMlpYSmlLRzRzSUdZcElIc2dhVnR1WFNBOUlHOWJibDBnUHlCbWRXNWpkR2x2YmlBb2Rpa2dleUJ5WlhSMWNtNGdLSEFnUFNBaGNDa2dQeUI3SUhaaGJIVmxPaUJmWDJGM1lXbDBLRzliYmwwb2Rpa3BMQ0JrYjI1bE9pQm1ZV3h6WlNCOUlEb2daaUEvSUdZb2Rpa2dPaUIyT3lCOUlEb2daanNnZlZ4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWhjM2x1WTFaaGJIVmxjeWh2S1NCN1hISmNiaUFnSUNCcFppQW9JVk41YldKdmJDNWhjM2x1WTBsMFpYSmhkRzl5S1NCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lVM2x0WW05c0xtRnplVzVqU1hSbGNtRjBiM0lnYVhNZ2JtOTBJR1JsWm1sdVpXUXVYQ0lwTzF4eVhHNGdJQ0FnZG1GeUlHMGdQU0J2VzFONWJXSnZiQzVoYzNsdVkwbDBaWEpoZEc5eVhTd2dhVHRjY2x4dUlDQWdJSEpsZEhWeWJpQnRJRDhnYlM1allXeHNLRzhwSURvZ0tHOGdQU0IwZVhCbGIyWWdYMTkyWVd4MVpYTWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQS9JRjlmZG1Gc2RXVnpLRzhwSURvZ2IxdFRlVzFpYjJ3dWFYUmxjbUYwYjNKZEtDa3NJR2tnUFNCN2ZTd2dkbVZ5WWloY0ltNWxlSFJjSWlrc0lIWmxjbUlvWENKMGFISnZkMXdpS1N3Z2RtVnlZaWhjSW5KbGRIVnlibHdpS1N3Z2FWdFRlVzFpYjJ3dVlYTjVibU5KZEdWeVlYUnZjbDBnUFNCbWRXNWpkR2x2YmlBb0tTQjdJSEpsZEhWeWJpQjBhR2x6T3lCOUxDQnBLVHRjY2x4dUlDQWdJR1oxYm1OMGFXOXVJSFpsY21Jb2Jpa2dleUJwVzI1ZElEMGdiMXR1WFNBbUppQm1kVzVqZEdsdmJpQW9kaWtnZXlCeVpYUjFjbTRnYm1WM0lGQnliMjFwYzJVb1puVnVZM1JwYjI0Z0tISmxjMjlzZG1Vc0lISmxhbVZqZENrZ2V5QjJJRDBnYjF0dVhTaDJLU3dnYzJWMGRHeGxLSEpsYzI5c2RtVXNJSEpsYW1WamRDd2dkaTVrYjI1bExDQjJMblpoYkhWbEtUc2dmU2s3SUgwN0lIMWNjbHh1SUNBZ0lHWjFibU4wYVc5dUlITmxkSFJzWlNoeVpYTnZiSFpsTENCeVpXcGxZM1FzSUdRc0lIWXBJSHNnVUhKdmJXbHpaUzV5WlhOdmJIWmxLSFlwTG5Sb1pXNG9ablZ1WTNScGIyNG9kaWtnZXlCeVpYTnZiSFpsS0hzZ2RtRnNkV1U2SUhZc0lHUnZibVU2SUdRZ2ZTazdJSDBzSUhKbGFtVmpkQ2s3SUgxY2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZiV0ZyWlZSbGJYQnNZWFJsVDJKcVpXTjBLR052YjJ0bFpDd2djbUYzS1NCN1hISmNiaUFnSUNCcFppQW9UMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S1NCN0lFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2hqYjI5clpXUXNJRndpY21GM1hDSXNJSHNnZG1Gc2RXVTZJSEpoZHlCOUtUc2dmU0JsYkhObElIc2dZMjl2YTJWa0xuSmhkeUE5SUhKaGR6c2dmVnh5WEc0Z0lDQWdjbVYwZFhKdUlHTnZiMnRsWkR0Y2NseHVmVHRjY2x4dVhISmNiblpoY2lCZlgzTmxkRTF2WkhWc1pVUmxabUYxYkhRZ1BTQlBZbXBsWTNRdVkzSmxZWFJsSUQ4Z0tHWjFibU4wYVc5dUtHOHNJSFlwSUh0Y2NseHVJQ0FnSUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaHZMQ0JjSW1SbFptRjFiSFJjSWl3Z2V5QmxiblZ0WlhKaFlteGxPaUIwY25WbExDQjJZV3gxWlRvZ2RpQjlLVHRjY2x4dWZTa2dPaUJtZFc1amRHbHZiaWh2TENCMktTQjdYSEpjYmlBZ0lDQnZXMXdpWkdWbVlYVnNkRndpWFNBOUlIWTdYSEpjYm4wN1hISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5cGJYQnZjblJUZEdGeUtHMXZaQ2tnZTF4eVhHNGdJQ0FnYVdZZ0tHMXZaQ0FtSmlCdGIyUXVYMTlsYzAxdlpIVnNaU2tnY21WMGRYSnVJRzF2WkR0Y2NseHVJQ0FnSUhaaGNpQnlaWE4xYkhRZ1BTQjdmVHRjY2x4dUlDQWdJR2xtSUNodGIyUWdJVDBnYm5Wc2JDa2dabTl5SUNoMllYSWdheUJwYmlCdGIyUXBJR2xtSUNocklDRTlQU0JjSW1SbFptRjFiSFJjSWlBbUppQlBZbXBsWTNRdWNISnZkRzkwZVhCbExtaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29iVzlrTENCcktTa2dYMTlqY21WaGRHVkNhVzVrYVc1bktISmxjM1ZzZEN3Z2JXOWtMQ0JyS1R0Y2NseHVJQ0FnSUY5ZmMyVjBUVzlrZFd4bFJHVm1ZWFZzZENoeVpYTjFiSFFzSUcxdlpDazdYSEpjYmlBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOXBiWEJ2Y25SRVpXWmhkV3gwS0cxdlpDa2dlMXh5WEc0Z0lDQWdjbVYwZFhKdUlDaHRiMlFnSmlZZ2JXOWtMbDlmWlhOTmIyUjFiR1VwSUQ4Z2JXOWtJRG9nZXlCa1pXWmhkV3gwT2lCdGIyUWdmVHRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZlkyeGhjM05RY21sMllYUmxSbWxsYkdSSFpYUW9jbVZqWldsMlpYSXNJSE4wWVhSbExDQnJhVzVrTENCbUtTQjdYSEpjYmlBZ0lDQnBaaUFvYTJsdVpDQTlQVDBnWENKaFhDSWdKaVlnSVdZcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pRY21sMllYUmxJR0ZqWTJWemMyOXlJSGRoY3lCa1pXWnBibVZrSUhkcGRHaHZkWFFnWVNCblpYUjBaWEpjSWlrN1hISmNiaUFnSUNCcFppQW9kSGx3Wlc5bUlITjBZWFJsSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lnUHlCeVpXTmxhWFpsY2lBaFBUMGdjM1JoZEdVZ2ZId2dJV1lnT2lBaGMzUmhkR1V1YUdGektISmxZMlZwZG1WeUtTa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWtOaGJtNXZkQ0J5WldGa0lIQnlhWFpoZEdVZ2JXVnRZbVZ5SUdaeWIyMGdZVzRnYjJKcVpXTjBJSGRvYjNObElHTnNZWE56SUdScFpDQnViM1FnWkdWamJHRnlaU0JwZEZ3aUtUdGNjbHh1SUNBZ0lISmxkSFZ5YmlCcmFXNWtJRDA5UFNCY0ltMWNJaUEvSUdZZ09pQnJhVzVrSUQwOVBTQmNJbUZjSWlBL0lHWXVZMkZzYkNoeVpXTmxhWFpsY2lrZ09pQm1JRDhnWmk1MllXeDFaU0E2SUhOMFlYUmxMbWRsZENoeVpXTmxhWFpsY2lrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMk5zWVhOelVISnBkbUYwWlVacFpXeGtVMlYwS0hKbFkyVnBkbVZ5TENCemRHRjBaU3dnZG1Gc2RXVXNJR3RwYm1Rc0lHWXBJSHRjY2x4dUlDQWdJR2xtSUNocmFXNWtJRDA5UFNCY0ltMWNJaWtnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lsQnlhWFpoZEdVZ2JXVjBhRzlrSUdseklHNXZkQ0IzY21sMFlXSnNaVndpS1R0Y2NseHVJQ0FnSUdsbUlDaHJhVzVrSUQwOVBTQmNJbUZjSWlBbUppQWhaaWtnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lsQnlhWFpoZEdVZ1lXTmpaWE56YjNJZ2QyRnpJR1JsWm1sdVpXUWdkMmwwYUc5MWRDQmhJSE5sZEhSbGNsd2lLVHRjY2x4dUlDQWdJR2xtSUNoMGVYQmxiMllnYzNSaGRHVWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQS9JSEpsWTJWcGRtVnlJQ0U5UFNCemRHRjBaU0I4ZkNBaFppQTZJQ0Z6ZEdGMFpTNW9ZWE1vY21WalpXbDJaWElwS1NCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lRMkZ1Ym05MElIZHlhWFJsSUhCeWFYWmhkR1VnYldWdFltVnlJSFJ2SUdGdUlHOWlhbVZqZENCM2FHOXpaU0JqYkdGemN5QmthV1FnYm05MElHUmxZMnhoY21VZ2FYUmNJaWs3WEhKY2JpQWdJQ0J5WlhSMWNtNGdLR3RwYm1RZ1BUMDlJRndpWVZ3aUlEOGdaaTVqWVd4c0tISmxZMlZwZG1WeUxDQjJZV3gxWlNrZ09pQm1JRDhnWmk1MllXeDFaU0E5SUhaaGJIVmxJRG9nYzNSaGRHVXVjMlYwS0hKbFkyVnBkbVZ5TENCMllXeDFaU2twTENCMllXeDFaVHRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZlkyeGhjM05RY21sMllYUmxSbWxsYkdSSmJpaHpkR0YwWlN3Z2NtVmpaV2wyWlhJcElIdGNjbHh1SUNBZ0lHbG1JQ2h5WldObGFYWmxjaUE5UFQwZ2JuVnNiQ0I4ZkNBb2RIbHdaVzltSUhKbFkyVnBkbVZ5SUNFOVBTQmNJbTlpYW1WamRGd2lJQ1ltSUhSNWNHVnZaaUJ5WldObGFYWmxjaUFoUFQwZ1hDSm1kVzVqZEdsdmJsd2lLU2tnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lrTmhibTV2ZENCMWMyVWdKMmx1SnlCdmNHVnlZWFJ2Y2lCdmJpQnViMjR0YjJKcVpXTjBYQ0lwTzF4eVhHNGdJQ0FnY21WMGRYSnVJSFI1Y0dWdlppQnpkR0YwWlNBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUQ4Z2NtVmpaV2wyWlhJZ1BUMDlJSE4wWVhSbElEb2djM1JoZEdVdWFHRnpLSEpsWTJWcGRtVnlLVHRjY2x4dWZWeHlYRzRpTENJdktpQmxjMnhwYm5RdFpHbHpZV0pzWlNCQWRIbHdaWE5qY21sd2RDMWxjMnhwYm5RdmJtRnRhVzVuTFdOdmJuWmxiblJwYjI0Z0tpOWNibHh1THlvcVhHNGdLaUJUY0dWamFXWnBaWEp6SUc5bUlHUmxZblZuSUcxdlpHVWdiMllnZTBCc2FXNXJJRTFVYjI5dVRXRjBaWEpwWVd4OUxseHVJQ3BjYmlBcUlGTmxaVG9nZTBCc2FXNXJJRTFVYjI5dVRXRjBaWEpwWVd3dVpHVmlkV2ROYjJSbGZWeHVJQ292WEc1bGVIQnZjblFnWTI5dWMzUWdUVlJ2YjI1TllYUmxjbWxoYkVSbFluVm5UVzlrWlNBOUlIdGNiaUFnTHlvcVhHNGdJQ0FxSUZKbGJtUmxjaUJ1YjNKdFlXeHNlUzVjYmlBZ0lDb3ZYRzRnSUU1dmJtVTZJQ2R1YjI1bEp5eGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZtbHpkV0ZzYVhwbElHNXZjbTFoYkhNZ2IyWWdkR2hsSUhOMWNtWmhZMlV1WEc0Z0lDQXFMMXh1SUNCT2IzSnRZV3c2SUNkdWIzSnRZV3duTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJXYVhOMVlXeHBlbVVnYkdsMEwzTm9ZV1JsSUc5bUlIUm9aU0J6ZFhKbVlXTmxMbHh1SUNBZ0tpOWNiaUFnVEdsMFUyaGhaR1ZTWVhSbE9pQW5iR2wwVTJoaFpHVlNZWFJsSnl4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVm1semRXRnNhWHBsSUZWV0lHOW1JSFJvWlNCemRYSm1ZV05sTGx4dUlDQWdLaTljYmlBZ1ZWWTZJQ2QxZGljc1hHNTlJR0Z6SUdOdmJuTjBPMXh1WEc1bGVIQnZjblFnZEhsd1pTQk5WRzl2YmsxaGRHVnlhV0ZzUkdWaWRXZE5iMlJsSUQwZ2RIbHdaVzltSUUxVWIyOXVUV0YwWlhKcFlXeEVaV0oxWjAxdlpHVmJhMlY1YjJZZ2RIbHdaVzltSUUxVWIyOXVUV0YwWlhKcFlXeEVaV0oxWjAxdlpHVmRPMXh1SWl3aUx5b2daWE5zYVc1MExXUnBjMkZpYkdVZ1FIUjVjR1Z6WTNKcGNIUXRaWE5zYVc1MEwyNWhiV2x1WnkxamIyNTJaVzUwYVc5dUlDb3ZYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQk5WRzl2YmsxaGRHVnlhV0ZzVDNWMGJHbHVaVmRwWkhSb1RXOWtaU0E5SUh0Y2JpQWdUbTl1WlRvZ0oyNXZibVVuTEZ4dUlDQlhiM0pzWkVOdmIzSmthVzVoZEdWek9pQW5kMjl5YkdSRGIyOXlaR2x1WVhSbGN5Y3NYRzRnSUZOamNtVmxia052YjNKa2FXNWhkR1Z6T2lBbmMyTnlaV1Z1UTI5dmNtUnBibUYwWlhNbkxGeHVmU0JoY3lCamIyNXpkRHRjYmx4dVpYaHdiM0owSUhSNWNHVWdUVlJ2YjI1TllYUmxjbWxoYkU5MWRHeHBibVZYYVdSMGFFMXZaR1VnUFZ4dUlDQjBlWEJsYjJZZ1RWUnZiMjVOWVhSbGNtbGhiRTkxZEd4cGJtVlhhV1IwYUUxdlpHVmJhMlY1YjJZZ2RIbHdaVzltSUUxVWIyOXVUV0YwWlhKcFlXeFBkWFJzYVc1bFYybGtkR2hOYjJSbFhUdGNiaUlzSW1sdGNHOXlkQ0FxSUdGeklGUklVa1ZGSUdaeWIyMGdKM1JvY21WbEp6dGNibHh1WTI5dWMzUWdaVzVqYjJScGJtZERiMnh2Y2xOd1lXTmxUV0Z3T2lCU1pXTnZjbVE4WVc1NUxDQW5KeUI4SUNkemNtZGlKejRnUFNCN1hHNGdJRE13TURBNklDY25MRnh1SUNBek1EQXhPaUFuYzNKbllpY3NYRzU5TzF4dVhHNHZLaXBjYmlBcUlFRWdZMjl0Y0dGMElHWjFibU4wYVc5dUlIUnZJR2RsZENCMFpYaDBkWEpsSUdOdmJHOXlJSE53WVdObExseHVJQ3BjYmlBcUlFTlBUVkJCVkRvZ2NISmxMWEl4TlRKY2JpQXFJRk4wWVhKMGFXNW5JR1p5YjIwZ1ZHaHlaV1V1YW5NZ2NqRTFNaXdnWUhSbGVIUjFjbVV1Wlc1amIyUnBibWRnSUdseklISmxibUZ0WldRZ2RHOGdZSFJsZUhSMWNtVXVZMjlzYjNKVGNHRmpaV0F1WEc0Z0tpQlVhR2x6SUdaMWJtTjBhVzl1SUhkcGJHd2dhR0Z1Wkd4bElIUm9aU0JqYjIxaGNIUXVYRzRnS2x4dUlDb2dRSEJoY21GdElIUmxlSFIxY21VZ1ZHaGxJSFJsZUhSMWNtVWdlVzkxSUhkaGJuUWdkRzhnWjJWMElIUm9aU0JqYjJ4dmNpQnpjR0ZqWlNCbWNtOXRYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCblpYUlVaWGgwZFhKbFEyOXNiM0pUY0dGalpTaDBaWGgwZFhKbE9pQlVTRkpGUlM1VVpYaDBkWEpsS1RvZ0p5Y2dmQ0FuYzNKbllpY2dlMXh1SUNCcFppQW9jR0Z5YzJWSmJuUW9WRWhTUlVVdVVrVldTVk5KVDA0c0lERXdLU0ErUFNBeE5USXBJSHRjYmlBZ0lDQnlaWFIxY200Z2RHVjRkSFZ5WlM1amIyeHZjbE53WVdObElHRnpJQ2NuSUh3Z0ozTnlaMkluTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhKbGRIVnliaUJsYm1OdlpHbHVaME52Ykc5eVUzQmhZMlZOWVhCYktIUmxlSFIxY21VZ1lYTWdZVzU1S1M1bGJtTnZaR2x1WjEwN1hHNGdJSDFjYm4xY2JpSXNJaThxSUhSemJHbHVkRHBrYVhOaFlteGxPbTFsYldKbGNpMXZjbVJsY21sdVp5QXFMMXh1WEc1cGJYQnZjblFnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVwYlhCdmNuUWdkbVZ5ZEdWNFUyaGhaR1Z5SUdaeWIyMGdKeTR2YzJoaFpHVnljeTl0ZEc5dmJpNTJaWEowSnp0Y2JtbHRjRzl5ZENCbWNtRm5iV1Z1ZEZOb1lXUmxjaUJtY205dElDY3VMM05vWVdSbGNuTXZiWFJ2YjI0dVpuSmhaeWM3WEc1cGJYQnZjblFnZXlCTlZHOXZiazFoZEdWeWFXRnNSR1ZpZFdkTmIyUmxJSDBnWm5KdmJTQW5MaTlOVkc5dmJrMWhkR1Z5YVdGc1JHVmlkV2ROYjJSbEp6dGNibWx0Y0c5eWRDQjdJRTFVYjI5dVRXRjBaWEpwWVd4UGRYUnNhVzVsVjJsa2RHaE5iMlJsSUgwZ1puSnZiU0FuTGk5TlZHOXZiazFoZEdWeWFXRnNUM1YwYkdsdVpWZHBaSFJvVFc5a1pTYzdYRzVwYlhCdmNuUWdkSGx3WlNCN0lFMVViMjl1VFdGMFpYSnBZV3hRWVhKaGJXVjBaWEp6SUgwZ1puSnZiU0FuTGk5TlZHOXZiazFoZEdWeWFXRnNVR0Z5WVcxbGRHVnljeWM3WEc1cGJYQnZjblFnZXlCblpYUlVaWGgwZFhKbFEyOXNiM0pUY0dGalpTQjlJR1p5YjIwZ0p5NHZkWFJwYkhNdloyVjBWR1Y0ZEhWeVpVTnZiRzl5VTNCaFkyVW5PMXh1WEc0dktpcGNiaUFxSUUxVWIyOXVJR2x6SUdFZ2JXRjBaWEpwWVd3Z2MzQmxZMmxtYVdOaGRHbHZiaUIwYUdGMElHaGhjeUIyWVhKcGIzVnpJR1psWVhSMWNtVnpMbHh1SUNvZ1ZHaGxJSE53WldNZ1lXNWtJR2x0Y0d4bGJXVnVkR0YwYVc5dUlHRnlaU0J2Y21sbmFXNWhiR3g1SUdadmRXNWtaV1FnWm05eUlGVnVhWFI1SUdWdVoybHVaU0JoYm1RZ2RHaHBjeUJwY3lCaElIQnZjblFnYjJZZ2RHaGxJRzFoZEdWeWFXRnNMbHh1SUNwY2JpQXFJRk5sWlRvZ2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwxTmhiblJoY21ndlRWUnZiMjVjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUUxVWIyOXVUV0YwWlhKcFlXd2daWGgwWlc1a2N5QlVTRkpGUlM1VGFHRmtaWEpOWVhSbGNtbGhiQ0I3WEc0Z0lIQjFZbXhwWXlCMWJtbG1iM0p0Y3pvZ2UxeHVJQ0FnSUd4cGRFWmhZM1J2Y2pvZ1ZFaFNSVVV1U1ZWdWFXWnZjbTA4VkVoU1JVVXVRMjlzYjNJK08xeHVJQ0FnSUdGc2NHaGhWR1Z6ZERvZ1ZFaFNSVVV1U1ZWdWFXWnZjbTA4Ym5WdFltVnlQanRjYmlBZ0lDQnZjR0ZqYVhSNU9pQlVTRkpGUlM1SlZXNXBabTl5YlR4dWRXMWlaWEkrTzF4dUlDQWdJRzFoY0RvZ1ZFaFNSVVV1U1ZWdWFXWnZjbTA4VkVoU1JVVXVWR1Y0ZEhWeVpTQjhJRzUxYkd3K08xeHVJQ0FnSUcxaGNGVjJWSEpoYm5ObWIzSnRPaUJVU0ZKRlJTNUpWVzVwWm05eWJUeFVTRkpGUlM1TllYUnlhWGd6UGp0Y2JpQWdJQ0J1YjNKdFlXeE5ZWEE2SUZSSVVrVkZMa2xWYm1sbWIzSnRQRlJJVWtWRkxsUmxlSFIxY21VZ2ZDQnVkV3hzUGp0Y2JpQWdJQ0J1YjNKdFlXeE5ZWEJWZGxSeVlXNXpabTl5YlRvZ1ZFaFNSVVV1U1ZWdWFXWnZjbTA4VkVoU1JVVXVUV0YwY21sNE16NDdYRzRnSUNBZ2JtOXliV0ZzVTJOaGJHVTZJRlJJVWtWRkxrbFZibWxtYjNKdFBGUklVa1ZGTGxabFkzUnZjakkrTzF4dUlDQWdJR1Z0YVhOemFYWmxPaUJVU0ZKRlJTNUpWVzVwWm05eWJUeFVTRkpGUlM1RGIyeHZjajQ3WEc0Z0lDQWdaVzFwYzNOcGRtVkpiblJsYm5OcGRIazZJRlJJVWtWRkxrbFZibWxtYjNKdFBHNTFiV0psY2o0N1hHNGdJQ0FnWlcxcGMzTnBkbVZOWVhBNklGUklVa1ZGTGtsVmJtbG1iM0p0UEZSSVVrVkZMbFJsZUhSMWNtVWdmQ0J1ZFd4c1BqdGNiaUFnSUNCbGJXbHpjMmwyWlUxaGNGVjJWSEpoYm5ObWIzSnRPaUJVU0ZKRlJTNUpWVzVwWm05eWJUeFVTRkpGUlM1TllYUnlhWGd6UGp0Y2JpQWdJQ0J6YUdGa1pVTnZiRzl5Um1GamRHOXlPaUJVU0ZKRlJTNUpWVzVwWm05eWJUeFVTRkpGUlM1RGIyeHZjajQ3WEc0Z0lDQWdjMmhoWkdWTmRXeDBhWEJzZVZSbGVIUjFjbVU2SUZSSVVrVkZMa2xWYm1sbWIzSnRQRlJJVWtWRkxsUmxlSFIxY21VZ2ZDQnVkV3hzUGp0Y2JpQWdJQ0J6YUdGa1pVMTFiSFJwY0d4NVZHVjRkSFZ5WlZWMlZISmhibk5tYjNKdE9pQlVTRkpGUlM1SlZXNXBabTl5YlR4VVNGSkZSUzVOWVhSeWFYZ3pQanRjYmlBZ0lDQnphR0ZrYVc1blUyaHBablJHWVdOMGIzSTZJRlJJVWtWRkxrbFZibWxtYjNKdFBHNTFiV0psY2o0N1hHNGdJQ0FnYzJoaFpHbHVaMU5vYVdaMFZHVjRkSFZ5WlRvZ1ZFaFNSVVV1U1ZWdWFXWnZjbTA4VkVoU1JVVXVWR1Y0ZEhWeVpTQjhJRzUxYkd3K08xeHVJQ0FnSUhOb1lXUnBibWRUYUdsbWRGUmxlSFIxY21WVmRsUnlZVzV6Wm05eWJUb2dWRWhTUlVVdVNWVnVhV1p2Y20wOFZFaFNSVVV1VFdGMGNtbDRNejQ3WEc0Z0lDQWdjMmhoWkdsdVoxTm9hV1owVkdWNGRIVnlaVk5qWVd4bE9pQlVTRkpGUlM1SlZXNXBabTl5YlR4dWRXMWlaWEkrTzF4dUlDQWdJSE5vWVdScGJtZFViMjl1ZVVaaFkzUnZjam9nVkVoU1JVVXVTVlZ1YVdadmNtMDhiblZ0WW1WeVBqdGNiaUFnSUNCbmFVVnhkV0ZzYVhwaGRHbHZia1poWTNSdmNqb2dWRWhTUlVVdVNWVnVhV1p2Y20wOGJuVnRZbVZ5UGp0Y2JpQWdJQ0J0WVhSallYQkdZV04wYjNJNklGUklVa1ZGTGtsVmJtbG1iM0p0UEZSSVVrVkZMa052Ykc5eVBqdGNiaUFnSUNCdFlYUmpZWEJVWlhoMGRYSmxPaUJVU0ZKRlJTNUpWVzVwWm05eWJUeFVTRkpGUlM1VVpYaDBkWEpsSUh3Z2JuVnNiRDQ3WEc0Z0lDQWdiV0YwWTJGd1ZHVjRkSFZ5WlZWMlZISmhibk5tYjNKdE9pQlVTRkpGUlM1SlZXNXBabTl5YlR4VVNGSkZSUzVOWVhSeWFYZ3pQanRjYmlBZ0lDQndZWEpoYldWMGNtbGpVbWx0UTI5c2IzSkdZV04wYjNJNklGUklVa1ZGTGtsVmJtbG1iM0p0UEZSSVVrVkZMa052Ykc5eVBqdGNiaUFnSUNCeWFXMU5kV3gwYVhCc2VWUmxlSFIxY21VNklGUklVa1ZGTGtsVmJtbG1iM0p0UEZSSVVrVkZMbFJsZUhSMWNtVWdmQ0J1ZFd4c1BqdGNiaUFnSUNCeWFXMU5kV3gwYVhCc2VWUmxlSFIxY21WVmRsUnlZVzV6Wm05eWJUb2dWRWhTUlVVdVNWVnVhV1p2Y20wOFZFaFNSVVV1VFdGMGNtbDRNejQ3WEc0Z0lDQWdjbWx0VEdsbmFIUnBibWROYVhoR1lXTjBiM0k2SUZSSVVrVkZMa2xWYm1sbWIzSnRQRzUxYldKbGNqNDdYRzRnSUNBZ2NHRnlZVzFsZEhKcFkxSnBiVVp5WlhOdVpXeFFiM2RsY2taaFkzUnZjam9nVkVoU1JVVXVTVlZ1YVdadmNtMDhiblZ0WW1WeVBqdGNiaUFnSUNCd1lYSmhiV1YwY21salVtbHRUR2xtZEVaaFkzUnZjam9nVkVoU1JVVXVTVlZ1YVdadmNtMDhiblZ0WW1WeVBqdGNiaUFnSUNCdmRYUnNhVzVsVjJsa2RHaE5kV3gwYVhCc2VWUmxlSFIxY21VNklGUklVa1ZGTGtsVmJtbG1iM0p0UEZSSVVrVkZMbFJsZUhSMWNtVWdmQ0J1ZFd4c1BqdGNiaUFnSUNCdmRYUnNhVzVsVjJsa2RHaE5kV3gwYVhCc2VWUmxlSFIxY21WVmRsUnlZVzV6Wm05eWJUb2dWRWhTUlVVdVNWVnVhV1p2Y20wOFZFaFNSVVV1VFdGMGNtbDRNejQ3WEc0Z0lDQWdiM1YwYkdsdVpWZHBaSFJvUm1GamRHOXlPaUJVU0ZKRlJTNUpWVzVwWm05eWJUeHVkVzFpWlhJK08xeHVJQ0FnSUc5MWRHeHBibVZEYjJ4dmNrWmhZM1J2Y2pvZ1ZFaFNSVVV1U1ZWdWFXWnZjbTA4VkVoU1JVVXVRMjlzYjNJK08xeHVJQ0FnSUc5MWRHeHBibVZNYVdkb2RHbHVaMDFwZUVaaFkzUnZjam9nVkVoU1JVVXVTVlZ1YVdadmNtMDhiblZ0WW1WeVBqdGNiaUFnSUNCMWRrRnVhVzFoZEdsdmJrMWhjMnRVWlhoMGRYSmxPaUJVU0ZKRlJTNUpWVzVwWm05eWJUeFVTRkpGUlM1VVpYaDBkWEpsSUh3Z2JuVnNiRDQ3WEc0Z0lDQWdkWFpCYm1sdFlYUnBiMjVOWVhOclZHVjRkSFZ5WlZWMlZISmhibk5tYjNKdE9pQlVTRkpGUlM1SlZXNXBabTl5YlR4VVNGSkZSUzVOWVhSeWFYZ3pQanRjYmlBZ0lDQjFka0Z1YVcxaGRHbHZibE5qY205c2JGaFBabVp6WlhRNklGUklVa1ZGTGtsVmJtbG1iM0p0UEc1MWJXSmxjajQ3WEc0Z0lDQWdkWFpCYm1sdFlYUnBiMjVUWTNKdmJHeFpUMlptYzJWME9pQlVTRkpGUlM1SlZXNXBabTl5YlR4dWRXMWlaWEkrTzF4dUlDQWdJSFYyUVc1cGJXRjBhVzl1VW05MFlYUnBiMjVRYUdGelpUb2dWRWhTUlVVdVNWVnVhV1p2Y20wOGJuVnRZbVZ5UGp0Y2JpQWdmVHRjYmx4dUlDQndkV0pzYVdNZ1oyVjBJR052Ykc5eUtDazZJRlJJVWtWRkxrTnZiRzl5SUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1MWJtbG1iM0p0Y3k1c2FYUkdZV04wYjNJdWRtRnNkV1U3WEc0Z0lIMWNiaUFnY0hWaWJHbGpJSE5sZENCamIyeHZjaWgyWVd4MVpUb2dWRWhTUlVVdVEyOXNiM0lwSUh0Y2JpQWdJQ0IwYUdsekxuVnVhV1p2Y20xekxteHBkRVpoWTNSdmNpNTJZV3gxWlNBOUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQnRZWEFvS1RvZ1ZFaFNSVVV1VkdWNGRIVnlaU0I4SUc1MWJHd2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMblZ1YVdadmNtMXpMbTFoY0M1MllXeDFaVHRjYmlBZ2ZWeHVJQ0J3ZFdKc2FXTWdjMlYwSUcxaGNDaDJZV3gxWlRvZ1ZFaFNSVVV1VkdWNGRIVnlaU0I4SUc1MWJHd3BJSHRjYmlBZ0lDQjBhR2x6TG5WdWFXWnZjbTF6TG0xaGNDNTJZV3gxWlNBOUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQnViM0p0WVd4TllYQW9LVG9nVkVoU1JVVXVWR1Y0ZEhWeVpTQjhJRzUxYkd3Z2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuVnVhV1p2Y20xekxtNXZjbTFoYkUxaGNDNTJZV3gxWlR0Y2JpQWdmVnh1SUNCd2RXSnNhV01nYzJWMElHNXZjbTFoYkUxaGNDaDJZV3gxWlRvZ1ZFaFNSVVV1VkdWNGRIVnlaU0I4SUc1MWJHd3BJSHRjYmlBZ0lDQjBhR2x6TG5WdWFXWnZjbTF6TG01dmNtMWhiRTFoY0M1MllXeDFaU0E5SUhaaGJIVmxPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR2RsZENCdWIzSnRZV3hUWTJGc1pTZ3BPaUJVU0ZKRlJTNVdaV04wYjNJeUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NTFibWxtYjNKdGN5NXViM0p0WVd4VFkyRnNaUzUyWVd4MVpUdGNiaUFnZlZ4dUlDQndkV0pzYVdNZ2MyVjBJRzV2Y20xaGJGTmpZV3hsS0haaGJIVmxPaUJVU0ZKRlJTNVdaV04wYjNJeUtTQjdYRzRnSUNBZ2RHaHBjeTUxYm1sbWIzSnRjeTV1YjNKdFlXeFRZMkZzWlM1MllXeDFaU0E5SUhaaGJIVmxPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR2RsZENCbGJXbHpjMmwyWlNncE9pQlVTRkpGUlM1RGIyeHZjaUI3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11ZFc1cFptOXliWE11WlcxcGMzTnBkbVV1ZG1Gc2RXVTdYRzRnSUgxY2JpQWdjSFZpYkdsaklITmxkQ0JsYldsemMybDJaU2gyWVd4MVpUb2dWRWhTUlVVdVEyOXNiM0lwSUh0Y2JpQWdJQ0IwYUdsekxuVnVhV1p2Y20xekxtVnRhWE56YVhabExuWmhiSFZsSUQwZ2RtRnNkV1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMElHVnRhWE56YVhabFNXNTBaVzV6YVhSNUtDazZJRzUxYldKbGNpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkVzVwWm05eWJYTXVaVzFwYzNOcGRtVkpiblJsYm5OcGRIa3VkbUZzZFdVN1hHNGdJSDFjYmlBZ2NIVmliR2xqSUhObGRDQmxiV2x6YzJsMlpVbHVkR1Z1YzJsMGVTaDJZV3gxWlRvZ2JuVnRZbVZ5S1NCN1hHNGdJQ0FnZEdocGN5NTFibWxtYjNKdGN5NWxiV2x6YzJsMlpVbHVkR1Z1YzJsMGVTNTJZV3gxWlNBOUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQmxiV2x6YzJsMlpVMWhjQ2dwT2lCVVNGSkZSUzVVWlhoMGRYSmxJSHdnYm5Wc2JDQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkVzVwWm05eWJYTXVaVzFwYzNOcGRtVk5ZWEF1ZG1Gc2RXVTdYRzRnSUgxY2JpQWdjSFZpYkdsaklITmxkQ0JsYldsemMybDJaVTFoY0NoMllXeDFaVG9nVkVoU1JVVXVWR1Y0ZEhWeVpTQjhJRzUxYkd3cElIdGNiaUFnSUNCMGFHbHpMblZ1YVdadmNtMXpMbVZ0YVhOemFYWmxUV0Z3TG5aaGJIVmxJRDBnZG1Gc2RXVTdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaMlYwSUhOb1lXUmxRMjlzYjNKR1lXTjBiM0lvS1RvZ1ZFaFNSVVV1UTI5c2IzSWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMblZ1YVdadmNtMXpMbk5vWVdSbFEyOXNiM0pHWVdOMGIzSXVkbUZzZFdVN1hHNGdJSDFjYmlBZ2NIVmliR2xqSUhObGRDQnphR0ZrWlVOdmJHOXlSbUZqZEc5eUtIWmhiSFZsT2lCVVNGSkZSUzVEYjJ4dmNpa2dlMXh1SUNBZ0lIUm9hWE11ZFc1cFptOXliWE11YzJoaFpHVkRiMnh2Y2taaFkzUnZjaTUyWVd4MVpTQTlJSFpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ0J6YUdGa1pVMTFiSFJwY0d4NVZHVjRkSFZ5WlNncE9pQlVTRkpGUlM1VVpYaDBkWEpsSUh3Z2JuVnNiQ0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11ZFc1cFptOXliWE11YzJoaFpHVk5kV3gwYVhCc2VWUmxlSFIxY21VdWRtRnNkV1U3WEc0Z0lIMWNiaUFnY0hWaWJHbGpJSE5sZENCemFHRmtaVTExYkhScGNHeDVWR1Y0ZEhWeVpTaDJZV3gxWlRvZ1ZFaFNSVVV1VkdWNGRIVnlaU0I4SUc1MWJHd3BJSHRjYmlBZ0lDQjBhR2x6TG5WdWFXWnZjbTF6TG5Ob1lXUmxUWFZzZEdsd2JIbFVaWGgwZFhKbExuWmhiSFZsSUQwZ2RtRnNkV1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMElITm9ZV1JwYm1kVGFHbG1kRVpoWTNSdmNpZ3BPaUJ1ZFcxaVpYSWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMblZ1YVdadmNtMXpMbk5vWVdScGJtZFRhR2xtZEVaaFkzUnZjaTUyWVd4MVpUdGNiaUFnZlZ4dUlDQndkV0pzYVdNZ2MyVjBJSE5vWVdScGJtZFRhR2xtZEVaaFkzUnZjaWgyWVd4MVpUb2diblZ0WW1WeUtTQjdYRzRnSUNBZ2RHaHBjeTUxYm1sbWIzSnRjeTV6YUdGa2FXNW5VMmhwWm5SR1lXTjBiM0l1ZG1Gc2RXVWdQU0IyWVd4MVpUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5Qm5aWFFnYzJoaFpHbHVaMU5vYVdaMFZHVjRkSFZ5WlNncE9pQlVTRkpGUlM1VVpYaDBkWEpsSUh3Z2JuVnNiQ0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11ZFc1cFptOXliWE11YzJoaFpHbHVaMU5vYVdaMFZHVjRkSFZ5WlM1MllXeDFaVHRjYmlBZ2ZWeHVJQ0J3ZFdKc2FXTWdjMlYwSUhOb1lXUnBibWRUYUdsbWRGUmxlSFIxY21Vb2RtRnNkV1U2SUZSSVVrVkZMbFJsZUhSMWNtVWdmQ0J1ZFd4c0tTQjdYRzRnSUNBZ2RHaHBjeTUxYm1sbWIzSnRjeTV6YUdGa2FXNW5VMmhwWm5SVVpYaDBkWEpsTG5aaGJIVmxJRDBnZG1Gc2RXVTdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaMlYwSUhOb1lXUnBibWRUYUdsbWRGUmxlSFIxY21WVFkyRnNaU2dwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5WdWFXWnZjbTF6TG5Ob1lXUnBibWRUYUdsbWRGUmxlSFIxY21WVFkyRnNaUzUyWVd4MVpUdGNiaUFnZlZ4dUlDQndkV0pzYVdNZ2MyVjBJSE5vWVdScGJtZFRhR2xtZEZSbGVIUjFjbVZUWTJGc1pTaDJZV3gxWlRvZ2JuVnRZbVZ5S1NCN1hHNGdJQ0FnZEdocGN5NTFibWxtYjNKdGN5NXphR0ZrYVc1blUyaHBablJVWlhoMGRYSmxVMk5oYkdVdWRtRnNkV1VnUFNCMllXeDFaVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhRZ2MyaGhaR2x1WjFSdmIyNTVSbUZqZEc5eUtDazZJRzUxYldKbGNpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkVzVwWm05eWJYTXVjMmhoWkdsdVoxUnZiMjU1Um1GamRHOXlMblpoYkhWbE8xeHVJQ0I5WEc0Z0lIQjFZbXhwWXlCelpYUWdjMmhoWkdsdVoxUnZiMjU1Um1GamRHOXlLSFpoYkhWbE9pQnVkVzFpWlhJcElIdGNiaUFnSUNCMGFHbHpMblZ1YVdadmNtMXpMbk5vWVdScGJtZFViMjl1ZVVaaFkzUnZjaTUyWVd4MVpTQTlJSFpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ0JuYVVWeGRXRnNhWHBoZEdsdmJrWmhZM1J2Y2lncE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuVnVhV1p2Y20xekxtZHBSWEYxWVd4cGVtRjBhVzl1Um1GamRHOXlMblpoYkhWbE8xeHVJQ0I5WEc0Z0lIQjFZbXhwWXlCelpYUWdaMmxGY1hWaGJHbDZZWFJwYjI1R1lXTjBiM0lvZG1Gc2RXVTZJRzUxYldKbGNpa2dlMXh1SUNBZ0lIUm9hWE11ZFc1cFptOXliWE11WjJsRmNYVmhiR2w2WVhScGIyNUdZV04wYjNJdWRtRnNkV1VnUFNCMllXeDFaVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhRZ2JXRjBZMkZ3Um1GamRHOXlLQ2s2SUZSSVVrVkZMa052Ykc5eUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NTFibWxtYjNKdGN5NXRZWFJqWVhCR1lXTjBiM0l1ZG1Gc2RXVTdYRzRnSUgxY2JpQWdjSFZpYkdsaklITmxkQ0J0WVhSallYQkdZV04wYjNJb2RtRnNkV1U2SUZSSVVrVkZMa052Ykc5eUtTQjdYRzRnSUNBZ2RHaHBjeTUxYm1sbWIzSnRjeTV0WVhSallYQkdZV04wYjNJdWRtRnNkV1VnUFNCMllXeDFaVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhRZ2JXRjBZMkZ3VkdWNGRIVnlaU2dwT2lCVVNGSkZSUzVVWlhoMGRYSmxJSHdnYm5Wc2JDQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkVzVwWm05eWJYTXViV0YwWTJGd1ZHVjRkSFZ5WlM1MllXeDFaVHRjYmlBZ2ZWeHVJQ0J3ZFdKc2FXTWdjMlYwSUcxaGRHTmhjRlJsZUhSMWNtVW9kbUZzZFdVNklGUklVa1ZGTGxSbGVIUjFjbVVnZkNCdWRXeHNLU0I3WEc0Z0lDQWdkR2hwY3k1MWJtbG1iM0p0Y3k1dFlYUmpZWEJVWlhoMGRYSmxMblpoYkhWbElEMGdkbUZzZFdVN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1oyVjBJSEJoY21GdFpYUnlhV05TYVcxRGIyeHZja1poWTNSdmNpZ3BPaUJVU0ZKRlJTNURiMnh2Y2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWRXNXBabTl5YlhNdWNHRnlZVzFsZEhKcFkxSnBiVU52Ykc5eVJtRmpkRzl5TG5aaGJIVmxPMXh1SUNCOVhHNGdJSEIxWW14cFl5QnpaWFFnY0dGeVlXMWxkSEpwWTFKcGJVTnZiRzl5Um1GamRHOXlLSFpoYkhWbE9pQlVTRkpGUlM1RGIyeHZjaWtnZTF4dUlDQWdJSFJvYVhNdWRXNXBabTl5YlhNdWNHRnlZVzFsZEhKcFkxSnBiVU52Ykc5eVJtRmpkRzl5TG5aaGJIVmxJRDBnZG1Gc2RXVTdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaMlYwSUhKcGJVMTFiSFJwY0d4NVZHVjRkSFZ5WlNncE9pQlVTRkpGUlM1VVpYaDBkWEpsSUh3Z2JuVnNiQ0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11ZFc1cFptOXliWE11Y21sdFRYVnNkR2x3YkhsVVpYaDBkWEpsTG5aaGJIVmxPMXh1SUNCOVhHNGdJSEIxWW14cFl5QnpaWFFnY21sdFRYVnNkR2x3YkhsVVpYaDBkWEpsS0haaGJIVmxPaUJVU0ZKRlJTNVVaWGgwZFhKbElId2diblZzYkNrZ2UxeHVJQ0FnSUhSb2FYTXVkVzVwWm05eWJYTXVjbWx0VFhWc2RHbHdiSGxVWlhoMGRYSmxMblpoYkhWbElEMGdkbUZzZFdVN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1oyVjBJSEpwYlV4cFoyaDBhVzVuVFdsNFJtRmpkRzl5S0NrNklHNTFiV0psY2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWRXNXBabTl5YlhNdWNtbHRUR2xuYUhScGJtZE5hWGhHWVdOMGIzSXVkbUZzZFdVN1hHNGdJSDFjYmlBZ2NIVmliR2xqSUhObGRDQnlhVzFNYVdkb2RHbHVaMDFwZUVaaFkzUnZjaWgyWVd4MVpUb2diblZ0WW1WeUtTQjdYRzRnSUNBZ2RHaHBjeTUxYm1sbWIzSnRjeTV5YVcxTWFXZG9kR2x1WjAxcGVFWmhZM1J2Y2k1MllXeDFaU0E5SUhaaGJIVmxPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR2RsZENCd1lYSmhiV1YwY21salVtbHRSbkpsYzI1bGJGQnZkMlZ5Um1GamRHOXlLQ2s2SUc1MWJXSmxjaUI3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11ZFc1cFptOXliWE11Y0dGeVlXMWxkSEpwWTFKcGJVWnlaWE51Wld4UWIzZGxja1poWTNSdmNpNTJZV3gxWlR0Y2JpQWdmVnh1SUNCd2RXSnNhV01nYzJWMElIQmhjbUZ0WlhSeWFXTlNhVzFHY21WemJtVnNVRzkzWlhKR1lXTjBiM0lvZG1Gc2RXVTZJRzUxYldKbGNpa2dlMXh1SUNBZ0lIUm9hWE11ZFc1cFptOXliWE11Y0dGeVlXMWxkSEpwWTFKcGJVWnlaWE51Wld4UWIzZGxja1poWTNSdmNpNTJZV3gxWlNBOUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQndZWEpoYldWMGNtbGpVbWx0VEdsbWRFWmhZM1J2Y2lncE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuVnVhV1p2Y20xekxuQmhjbUZ0WlhSeWFXTlNhVzFNYVdaMFJtRmpkRzl5TG5aaGJIVmxPMXh1SUNCOVhHNGdJSEIxWW14cFl5QnpaWFFnY0dGeVlXMWxkSEpwWTFKcGJVeHBablJHWVdOMGIzSW9kbUZzZFdVNklHNTFiV0psY2lrZ2UxeHVJQ0FnSUhSb2FYTXVkVzVwWm05eWJYTXVjR0Z5WVcxbGRISnBZMUpwYlV4cFpuUkdZV04wYjNJdWRtRnNkV1VnUFNCMllXeDFaVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhRZ2IzVjBiR2x1WlZkcFpIUm9UWFZzZEdsd2JIbFVaWGgwZFhKbEtDazZJRlJJVWtWRkxsUmxlSFIxY21VZ2ZDQnVkV3hzSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1MWJtbG1iM0p0Y3k1dmRYUnNhVzVsVjJsa2RHaE5kV3gwYVhCc2VWUmxlSFIxY21VdWRtRnNkV1U3WEc0Z0lIMWNiaUFnY0hWaWJHbGpJSE5sZENCdmRYUnNhVzVsVjJsa2RHaE5kV3gwYVhCc2VWUmxlSFIxY21Vb2RtRnNkV1U2SUZSSVVrVkZMbFJsZUhSMWNtVWdmQ0J1ZFd4c0tTQjdYRzRnSUNBZ2RHaHBjeTUxYm1sbWIzSnRjeTV2ZFhSc2FXNWxWMmxrZEdoTmRXeDBhWEJzZVZSbGVIUjFjbVV1ZG1Gc2RXVWdQU0IyWVd4MVpUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5Qm5aWFFnYjNWMGJHbHVaVmRwWkhSb1JtRmpkRzl5S0NrNklHNTFiV0psY2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWRXNXBabTl5YlhNdWIzVjBiR2x1WlZkcFpIUm9SbUZqZEc5eUxuWmhiSFZsTzF4dUlDQjlYRzRnSUhCMVlteHBZeUJ6WlhRZ2IzVjBiR2x1WlZkcFpIUm9SbUZqZEc5eUtIWmhiSFZsT2lCdWRXMWlaWElwSUh0Y2JpQWdJQ0IwYUdsekxuVnVhV1p2Y20xekxtOTFkR3hwYm1WWGFXUjBhRVpoWTNSdmNpNTJZV3gxWlNBOUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQnZkWFJzYVc1bFEyOXNiM0pHWVdOMGIzSW9LVG9nVkVoU1JVVXVRMjlzYjNJZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuVnVhV1p2Y20xekxtOTFkR3hwYm1WRGIyeHZja1poWTNSdmNpNTJZV3gxWlR0Y2JpQWdmVnh1SUNCd2RXSnNhV01nYzJWMElHOTFkR3hwYm1WRGIyeHZja1poWTNSdmNpaDJZV3gxWlRvZ1ZFaFNSVVV1UTI5c2IzSXBJSHRjYmlBZ0lDQjBhR2x6TG5WdWFXWnZjbTF6TG05MWRHeHBibVZEYjJ4dmNrWmhZM1J2Y2k1MllXeDFaU0E5SUhaaGJIVmxPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR2RsZENCdmRYUnNhVzVsVEdsbmFIUnBibWROYVhoR1lXTjBiM0lvS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1MWJtbG1iM0p0Y3k1dmRYUnNhVzVsVEdsbmFIUnBibWROYVhoR1lXTjBiM0l1ZG1Gc2RXVTdYRzRnSUgxY2JpQWdjSFZpYkdsaklITmxkQ0J2ZFhSc2FXNWxUR2xuYUhScGJtZE5hWGhHWVdOMGIzSW9kbUZzZFdVNklHNTFiV0psY2lrZ2UxeHVJQ0FnSUhSb2FYTXVkVzVwWm05eWJYTXViM1YwYkdsdVpVeHBaMmgwYVc1blRXbDRSbUZqZEc5eUxuWmhiSFZsSUQwZ2RtRnNkV1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMElIVjJRVzVwYldGMGFXOXVUV0Z6YTFSbGVIUjFjbVVvS1RvZ1ZFaFNSVVV1VkdWNGRIVnlaU0I4SUc1MWJHd2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMblZ1YVdadmNtMXpMblYyUVc1cGJXRjBhVzl1VFdGemExUmxlSFIxY21VdWRtRnNkV1U3WEc0Z0lIMWNiaUFnY0hWaWJHbGpJSE5sZENCMWRrRnVhVzFoZEdsdmJrMWhjMnRVWlhoMGRYSmxLSFpoYkhWbE9pQlVTRkpGUlM1VVpYaDBkWEpsSUh3Z2JuVnNiQ2tnZTF4dUlDQWdJSFJvYVhNdWRXNXBabTl5YlhNdWRYWkJibWx0WVhScGIyNU5ZWE5yVkdWNGRIVnlaUzUyWVd4MVpTQTlJSFpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ0IxZGtGdWFXMWhkR2x2YmxOamNtOXNiRmhQWm1aelpYUW9LVG9nYm5WdFltVnlJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTUxYm1sbWIzSnRjeTUxZGtGdWFXMWhkR2x2YmxOamNtOXNiRmhQWm1aelpYUXVkbUZzZFdVN1hHNGdJSDFjYmlBZ2NIVmliR2xqSUhObGRDQjFka0Z1YVcxaGRHbHZibE5qY205c2JGaFBabVp6WlhRb2RtRnNkV1U2SUc1MWJXSmxjaWtnZTF4dUlDQWdJSFJvYVhNdWRXNXBabTl5YlhNdWRYWkJibWx0WVhScGIyNVRZM0p2Ykd4WVQyWm1jMlYwTG5aaGJIVmxJRDBnZG1Gc2RXVTdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaMlYwSUhWMlFXNXBiV0YwYVc5dVUyTnliMnhzV1U5bVpuTmxkQ2dwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5WdWFXWnZjbTF6TG5WMlFXNXBiV0YwYVc5dVUyTnliMnhzV1U5bVpuTmxkQzUyWVd4MVpUdGNiaUFnZlZ4dUlDQndkV0pzYVdNZ2MyVjBJSFYyUVc1cGJXRjBhVzl1VTJOeWIyeHNXVTltWm5ObGRDaDJZV3gxWlRvZ2JuVnRZbVZ5S1NCN1hHNGdJQ0FnZEdocGN5NTFibWxtYjNKdGN5NTFka0Z1YVcxaGRHbHZibE5qY205c2JGbFBabVp6WlhRdWRtRnNkV1VnUFNCMllXeDFaVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhRZ2RYWkJibWx0WVhScGIyNVNiM1JoZEdsdmJsQm9ZWE5sS0NrNklHNTFiV0psY2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWRXNXBabTl5YlhNdWRYWkJibWx0WVhScGIyNVNiM1JoZEdsdmJsQm9ZWE5sTG5aaGJIVmxPMXh1SUNCOVhHNGdJSEIxWW14cFl5QnpaWFFnZFhaQmJtbHRZWFJwYjI1U2IzUmhkR2x2YmxCb1lYTmxLSFpoYkhWbE9pQnVkVzFpWlhJcElIdGNiaUFnSUNCMGFHbHpMblZ1YVdadmNtMXpMblYyUVc1cGJXRjBhVzl1VW05MFlYUnBiMjVRYUdGelpTNTJZV3gxWlNBOUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUhWMlFXNXBiV0YwYVc5dVUyTnliMnhzV0ZOd1pXVmtSbUZqZEc5eUlEMGdNQzR3TzF4dUlDQndkV0pzYVdNZ2RYWkJibWx0WVhScGIyNVRZM0p2Ykd4WlUzQmxaV1JHWVdOMGIzSWdQU0F3TGpBN1hHNGdJSEIxWW14cFl5QjFka0Z1YVcxaGRHbHZibEp2ZEdGMGFXOXVVM0JsWldSR1lXTjBiM0lnUFNBd0xqQTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGZG9aWFJvWlhJZ2RHaGxJRzFoZEdWeWFXRnNJR2x6SUdGbVptVmpkR1ZrSUdKNUlHWnZaeTVjYmlBZ0lDb2dZSFJ5ZFdWZ0lHSjVJR1JsWm1GMWJIUXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdabTluSUQwZ2RISjFaVHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWMmxzYkNCaVpTQnlaV0ZrSUdsdUlGZGxZa2RNVUhKdlozSmhiWE5jYmlBZ0lDcGNiaUFnSUNvZ1UyVmxPaUJvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2YlhKa2IyOWlMM1JvY21WbExtcHpMMkpzYjJJdk5HWTFNak0yWVdNelpEWm1OREZrT1RBMFlXRTFPRFF3TVdJME1EVTFOR1U0Wm1Ka1kySXhOUzl6Y21NdmNtVnVaR1Z5WlhKekwzZGxZbWRzTDFkbFlrZE1VSEp2WjNKaGJYTXVhbk1qVERFNU1DMU1NVGt4WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nYm05eWJXRnNUV0Z3Vkhsd1pTQTlJRlJJVWtWRkxsUmhibWRsYm5SVGNHRmpaVTV2Y20xaGJFMWhjRHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWMmhsYmlCMGFHbHpJR2x6SUdCMGNuVmxZQ3dnZG1WeWRHVjRJR052Ykc5eWN5QjNhV3hzSUdKbElHbG5ibTl5WldRdVhHNGdJQ0FxSUdCMGNuVmxZQ0JpZVNCa1pXWmhkV3gwTGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCZmFXZHViM0psVm1WeWRHVjRRMjlzYjNJZ1BTQjBjblZsTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJYYUdWdUlIUm9hWE1nYVhNZ1lIUnlkV1ZnTENCMlpYSjBaWGdnWTI5c2IzSnpJSGRwYkd3Z1ltVWdhV2R1YjNKbFpDNWNiaUFnSUNvZ1lIUnlkV1ZnSUdKNUlHUmxabUYxYkhRdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBJR2xuYm05eVpWWmxjblJsZUVOdmJHOXlLQ2s2SUdKdmIyeGxZVzRnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5cFoyNXZjbVZXWlhKMFpYaERiMnh2Y2p0Y2JpQWdmVnh1SUNCd2RXSnNhV01nYzJWMElHbG5ibTl5WlZabGNuUmxlRU52Ykc5eUtIWmhiSFZsT2lCaWIyOXNaV0Z1S1NCN1hHNGdJQ0FnZEdocGN5NWZhV2R1YjNKbFZtVnlkR1Y0UTI5c2IzSWdQU0IyWVd4MVpUdGNibHh1SUNBZ0lIUm9hWE11Ym1WbFpITlZjR1JoZEdVZ1BTQjBjblZsTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCZmRqQkRiMjF3WVhSVGFHRmtaU0E5SUdaaGJITmxPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1Z5WlNCcGN5QmhJR3hwYm1VZ2IyWWdkR2hsSUhOb1lXUmxjaUJqWVd4c1pXUWdYQ0pqYjIxdFpXNTBJRzkxZENCcFppQjViM1VnZDJGdWRDQjBieUJRUWxJZ1lXSnpiMngxZEdWc2VWd2lJR2x1SUZaU1RUQXVNQ0JOVkc5dmJpNWNiaUFnSUNvZ1YyaGxiaUIwYUdseklHbHpJSFJ5ZFdVc0lIUm9aU0J0WVhSbGNtbGhiQ0JsYm1GaWJHVnpJSFJvWlNCc2FXNWxJSFJ2SUcxaGEyVWdhWFFnWTI5dGNHRjBhV0pzWlNCM2FYUm9JSFJvWlNCc1pXZGhZM2tnY21WdVpHVnlhVzVuSUc5bUlGWlNUUzVjYmlBZ0lDb2dWWE4xWVd4c2VTQnViM1FnY21WamIyMXRaVzVrWldRZ2RHOGdkSFZ5YmlCMGFHbHpJRzl1TGx4dUlDQWdLaUJnWm1Gc2MyVmdJR0o1SUdSbFptRjFiSFF1WEc0Z0lDQXFMMXh1SUNCblpYUWdkakJEYjIxd1lYUlRhR0ZrWlNncE9pQmliMjlzWldGdUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZkakJEYjIxd1lYUlRhR0ZrWlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1Z5WlNCcGN5QmhJR3hwYm1VZ2IyWWdkR2hsSUhOb1lXUmxjaUJqWVd4c1pXUWdYQ0pqYjIxdFpXNTBJRzkxZENCcFppQjViM1VnZDJGdWRDQjBieUJRUWxJZ1lXSnpiMngxZEdWc2VWd2lJR2x1SUZaU1RUQXVNQ0JOVkc5dmJpNWNiaUFnSUNvZ1YyaGxiaUIwYUdseklHbHpJSFJ5ZFdVc0lIUm9aU0J0WVhSbGNtbGhiQ0JsYm1GaWJHVnpJSFJvWlNCc2FXNWxJSFJ2SUcxaGEyVWdhWFFnWTI5dGNHRjBhV0pzWlNCM2FYUm9JSFJvWlNCc1pXZGhZM2tnY21WdVpHVnlhVzVuSUc5bUlGWlNUUzVjYmlBZ0lDb2dWWE4xWVd4c2VTQnViM1FnY21WamIyMXRaVzVrWldRZ2RHOGdkSFZ5YmlCMGFHbHpJRzl1TGx4dUlDQWdLaUJnWm1Gc2MyVmdJR0o1SUdSbFptRjFiSFF1WEc0Z0lDQXFMMXh1SUNCelpYUWdkakJEYjIxd1lYUlRhR0ZrWlNoMk9pQmliMjlzWldGdUtTQjdYRzRnSUNBZ2RHaHBjeTVmZGpCRGIyMXdZWFJUYUdGa1pTQTlJSFk3WEc1Y2JpQWdJQ0IwYUdsekxtNWxaV1J6VlhCa1lYUmxJRDBnZEhKMVpUdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdYMlJsWW5WblRXOWtaVG9nVFZSdmIyNU5ZWFJsY21saGJFUmxZblZuVFc5a1pTQTlJRTFVYjI5dVRXRjBaWEpwWVd4RVpXSjFaMDF2WkdVdVRtOXVaVHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSR1ZpZFdjZ2JXOWtaU0JtYjNJZ2RHaGxJRzFoZEdWeWFXRnNMbHh1SUNBZ0tpQlpiM1VnWTJGdUlIWnBjM1ZoYkdsNlpTQnpaWFpsY21Gc0lHTnZiWEJ2Ym1WdWRITWdabTl5SUdScFlXZHViM05wY3lCMWMybHVaeUJrWldKMVp5QnRiMlJsTGx4dUlDQWdLbHh1SUNBZ0tpQlRaV1U2SUh0QWJHbHVheUJOVkc5dmJrMWhkR1Z5YVdGc1JHVmlkV2ROYjJSbGZWeHVJQ0FnS2k5Y2JpQWdaMlYwSUdSbFluVm5UVzlrWlNncE9pQk5WRzl2YmsxaGRHVnlhV0ZzUkdWaWRXZE5iMlJsSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZlpHVmlkV2ROYjJSbE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVJsWW5WbklHMXZaR1VnWm05eUlIUm9aU0J0WVhSbGNtbGhiQzVjYmlBZ0lDb2dXVzkxSUdOaGJpQjJhWE4xWVd4cGVtVWdjMlYyWlhKaGJDQmpiMjF3YjI1bGJuUnpJR1p2Y2lCa2FXRm5ibTl6YVhNZ2RYTnBibWNnWkdWaWRXY2diVzlrWlM1Y2JpQWdJQ3BjYmlBZ0lDb2dVMlZsT2lCN1FHeHBibXNnVFZSdmIyNU5ZWFJsY21saGJFUmxZblZuVFc5a1pYMWNiaUFnSUNvdlhHNGdJSE5sZENCa1pXSjFaMDF2WkdVb2JUb2dUVlJ2YjI1TllYUmxjbWxoYkVSbFluVm5UVzlrWlNrZ2UxeHVJQ0FnSUhSb2FYTXVYMlJsWW5WblRXOWtaU0E5SUcwN1hHNWNiaUFnSUNCMGFHbHpMbTVsWldSelZYQmtZWFJsSUQwZ2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWDI5MWRHeHBibVZYYVdSMGFFMXZaR1U2SUUxVWIyOXVUV0YwWlhKcFlXeFBkWFJzYVc1bFYybGtkR2hOYjJSbElEMGdUVlJ2YjI1TllYUmxjbWxoYkU5MWRHeHBibVZYYVdSMGFFMXZaR1V1VG05dVpUdGNibHh1SUNCblpYUWdiM1YwYkdsdVpWZHBaSFJvVFc5a1pTZ3BPaUJOVkc5dmJrMWhkR1Z5YVdGc1QzVjBiR2x1WlZkcFpIUm9UVzlrWlNCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgyOTFkR3hwYm1WWGFXUjBhRTF2WkdVN1hHNGdJSDFjYmlBZ2MyVjBJRzkxZEd4cGJtVlhhV1IwYUUxdlpHVW9iVG9nVFZSdmIyNU5ZWFJsY21saGJFOTFkR3hwYm1WWGFXUjBhRTF2WkdVcElIdGNiaUFnSUNCMGFHbHpMbDl2ZFhSc2FXNWxWMmxrZEdoTmIyUmxJRDBnYlR0Y2JseHVJQ0FnSUhSb2FYTXVibVZsWkhOVmNHUmhkR1VnUFNCMGNuVmxPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JmYVhOUGRYUnNhVzVsSUQwZ1ptRnNjMlU3WEc1Y2JpQWdaMlYwSUdselQzVjBiR2x1WlNncE9pQmliMjlzWldGdUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZhWE5QZFhSc2FXNWxPMXh1SUNCOVhHNGdJSE5sZENCcGMwOTFkR3hwYm1Vb1lqb2dZbTl2YkdWaGJpa2dlMXh1SUNBZ0lIUm9hWE11WDJselQzVjBiR2x1WlNBOUlHSTdYRzVjYmlBZ0lDQjBhR2x6TG01bFpXUnpWWEJrWVhSbElEMGdkSEoxWlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaV0ZrYjI1c2VTQmliMjlzWldGdUlIUm9ZWFFnYVc1a2FXTmhkR1Z6SUhSb2FYTWdhWE1nWVNCYlcwMVViMjl1VFdGMFpYSnBZV3hkWFM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCblpYUWdhWE5OVkc5dmJrMWhkR1Z5YVdGc0tDazZJSFJ5ZFdVZ2UxeHVJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVJQ0I5WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvY0dGeVlXMWxkR1Z5Y3pvZ1RWUnZiMjVOWVhSbGNtbGhiRkJoY21GdFpYUmxjbk1nUFNCN2ZTa2dlMXh1SUNBZ0lITjFjR1Z5S0hzZ2RtVnlkR1Y0VTJoaFpHVnlMQ0JtY21GbmJXVnVkRk5vWVdSbGNpQjlLVHRjYmx4dUlDQWdJQzh2SUc5MlpYSnlhV1JsSUdSbGNIUm9WM0pwZEdVZ2QybDBhQ0IwY21GdWMzQmhjbVZ1ZEZkcGRHaGFWM0pwZEdWY2JpQWdJQ0JwWmlBb2NHRnlZVzFsZEdWeWN5NTBjbUZ1YzNCaGNtVnVkRmRwZEdoYVYzSnBkR1VwSUh0Y2JpQWdJQ0FnSUhCaGNtRnRaWFJsY25NdVpHVndkR2hYY21sMFpTQTlJSFJ5ZFdVN1hHNGdJQ0FnZlZ4dUlDQWdJR1JsYkdWMFpTQndZWEpoYldWMFpYSnpMblJ5WVc1emNHRnlaVzUwVjJsMGFGcFhjbWwwWlR0Y2JseHVJQ0FnSUM4dklEMDlJR1Z1WVdKc2FXNW5JR0oxYm1Ob0lHOW1JSE4wZFdabUlEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVnh1SUNBZ0lIQmhjbUZ0WlhSbGNuTXVabTluSUQwZ2RISjFaVHRjYmlBZ0lDQndZWEpoYldWMFpYSnpMbXhwWjJoMGN5QTlJSFJ5ZFdVN1hHNGdJQ0FnY0dGeVlXMWxkR1Z5Y3k1amJHbHdjR2x1WnlBOUlIUnlkV1U3WEc1Y2JpQWdJQ0F2THlCRFQwMVFRVlE2SUhCeVpTMXlNVEk1WEc0Z0lDQWdMeThnVTJWbE9pQm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZiWEprYjI5aUwzUm9jbVZsTG1wekwzQjFiR3d2TWpFM09EaGNiaUFnSUNCcFppQW9jR0Z5YzJWSmJuUW9WRWhTUlVVdVVrVldTVk5KVDA0c0lERXdLU0E4SURFeU9Ta2dlMXh1SUNBZ0lDQWdLSEJoY21GdFpYUmxjbk1nWVhNZ1lXNTVLUzV6YTJsdWJtbHVaeUE5SUNod1lYSmhiV1YwWlhKeklHRnpJR0Z1ZVNrdWMydHBibTVwYm1jZ2ZId2dabUZzYzJVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1EwOU5VRUZVT2lCd2NtVXRjakV6TVZ4dUlDQWdJQzh2SUZObFpUb2dhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjF5Wkc5dllpOTBhSEpsWlM1cWN5OXdkV3hzTHpJeU1UWTVYRzRnSUNBZ2FXWWdLSEJoY25ObFNXNTBLRlJJVWtWRkxsSkZWa2xUU1U5T0xDQXhNQ2tnUENBeE16RXBJSHRjYmlBZ0lDQWdJQ2h3WVhKaGJXVjBaWEp6SUdGeklHRnVlU2t1Ylc5eWNHaFVZWEpuWlhSeklEMGdLSEJoY21GdFpYUmxjbk1nWVhNZ1lXNTVLUzV0YjNKd2FGUmhjbWRsZEhNZ2ZId2dabUZzYzJVN1hHNGdJQ0FnSUNBb2NHRnlZVzFsZEdWeWN5QmhjeUJoYm5rcExtMXZjbkJvVG05eWJXRnNjeUE5SUNod1lYSmhiV1YwWlhKeklHRnpJR0Z1ZVNrdWJXOXljR2hPYjNKdFlXeHpJSHg4SUdaaGJITmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJRDA5SUhWdWFXWnZjbTF6SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFZ4dUlDQWdJSFJvYVhNdWRXNXBabTl5YlhNZ1BTQlVTRkpGUlM1VmJtbG1iM0p0YzFWMGFXeHpMbTFsY21kbEtGdGNiaUFnSUNBZ0lGUklVa1ZGTGxWdWFXWnZjbTF6VEdsaUxtTnZiVzF2Yml3Z0x5OGdiV0Z3WEc0Z0lDQWdJQ0JVU0ZKRlJTNVZibWxtYjNKdGMweHBZaTV1YjNKdFlXeHRZWEFzSUM4dklHNXZjbTFoYkUxaGNGeHVJQ0FnSUNBZ1ZFaFNSVVV1Vlc1cFptOXliWE5NYVdJdVpXMXBjM05wZG1WdFlYQXNJQzh2SUdWdGFYTnphWFpsVFdGd1hHNGdJQ0FnSUNCVVNGSkZSUzVWYm1sbWIzSnRjMHhwWWk1bWIyY3NYRzRnSUNBZ0lDQlVTRkpGUlM1VmJtbG1iM0p0YzB4cFlpNXNhV2RvZEhNc1hHNGdJQ0FnSUNCN1hHNGdJQ0FnSUNBZ0lHeHBkRVpoWTNSdmNqb2dleUIyWVd4MVpUb2dibVYzSUZSSVVrVkZMa052Ykc5eUtERXVNQ3dnTVM0d0xDQXhMakFwSUgwc1hHNGdJQ0FnSUNBZ0lHMWhjRlYyVkhKaGJuTm1iM0p0T2lCN0lIWmhiSFZsT2lCdVpYY2dWRWhTUlVVdVRXRjBjbWw0TXlncElIMHNYRzRnSUNBZ0lDQWdJR052Ykc5eVFXeHdhR0U2SUhzZ2RtRnNkV1U2SURFdU1DQjlMRnh1SUNBZ0lDQWdJQ0J1YjNKdFlXeE5ZWEJWZGxSeVlXNXpabTl5YlRvZ2V5QjJZV3gxWlRvZ2JtVjNJRlJJVWtWRkxrMWhkSEpwZURNb0tTQjlMRnh1SUNBZ0lDQWdJQ0J6YUdGa1pVTnZiRzl5Um1GamRHOXlPaUI3SUhaaGJIVmxPaUJ1WlhjZ1ZFaFNSVVV1UTI5c2IzSW9NQzQ1Tnl3Z01DNDRNU3dnTUM0NE5pa2dmU3hjYmlBZ0lDQWdJQ0FnYzJoaFpHVk5kV3gwYVhCc2VWUmxlSFIxY21VNklIc2dkbUZzZFdVNklHNTFiR3dnZlN4Y2JpQWdJQ0FnSUNBZ2MyaGhaR1ZOZFd4MGFYQnNlVlJsZUhSMWNtVlZkbFJ5WVc1elptOXliVG9nZXlCMllXeDFaVG9nYm1WM0lGUklVa1ZGTGsxaGRISnBlRE1vS1NCOUxGeHVJQ0FnSUNBZ0lDQnphR0ZrYVc1blUyaHBablJHWVdOMGIzSTZJSHNnZG1Gc2RXVTZJREF1TUNCOUxGeHVJQ0FnSUNBZ0lDQnphR0ZrYVc1blUyaHBablJVWlhoMGRYSmxPaUI3SUhaaGJIVmxPaUJ1ZFd4c0lIMHNYRzRnSUNBZ0lDQWdJSE5vWVdScGJtZFRhR2xtZEZSbGVIUjFjbVZWZGxSeVlXNXpabTl5YlRvZ2V5QjJZV3gxWlRvZ2JtVjNJRlJJVWtWRkxrMWhkSEpwZURNb0tTQjlMRnh1SUNBZ0lDQWdJQ0J6YUdGa2FXNW5VMmhwWm5SVVpYaDBkWEpsVTJOaGJHVTZJSHNnZG1Gc2RXVTZJREV1TUNCOUxGeHVJQ0FnSUNBZ0lDQnphR0ZrYVc1blZHOXZibmxHWVdOMGIzSTZJSHNnZG1Gc2RXVTZJREF1T1NCOUxGeHVJQ0FnSUNBZ0lDQm5hVVZ4ZFdGc2FYcGhkR2x2YmtaaFkzUnZjam9nZXlCMllXeDFaVG9nTUM0NUlIMHNYRzRnSUNBZ0lDQWdJRzFoZEdOaGNFWmhZM1J2Y2pvZ2V5QjJZV3gxWlRvZ2JtVjNJRlJJVWtWRkxrTnZiRzl5S0RBdU1Dd2dNQzR3TENBd0xqQXBJSDBzWEc0Z0lDQWdJQ0FnSUcxaGRHTmhjRlJsZUhSMWNtVTZJSHNnZG1Gc2RXVTZJRzUxYkd3Z2ZTeGNiaUFnSUNBZ0lDQWdiV0YwWTJGd1ZHVjRkSFZ5WlZWMlZISmhibk5tYjNKdE9pQjdJSFpoYkhWbE9pQnVaWGNnVkVoU1JVVXVUV0YwY21sNE15Z3BJSDBzWEc0Z0lDQWdJQ0FnSUhCaGNtRnRaWFJ5YVdOU2FXMURiMnh2Y2taaFkzUnZjam9nZXlCMllXeDFaVG9nYm1WM0lGUklVa1ZGTGtOdmJHOXlLREF1TUN3Z01DNHdMQ0F3TGpBcElIMHNYRzRnSUNBZ0lDQWdJSEpwYlUxMWJIUnBjR3g1VkdWNGRIVnlaVG9nZXlCMllXeDFaVG9nYm5Wc2JDQjlMRnh1SUNBZ0lDQWdJQ0J5YVcxTmRXeDBhWEJzZVZSbGVIUjFjbVZWZGxSeVlXNXpabTl5YlRvZ2V5QjJZV3gxWlRvZ2JtVjNJRlJJVWtWRkxrMWhkSEpwZURNb0tTQjlMRnh1SUNBZ0lDQWdJQ0J5YVcxTWFXZG9kR2x1WjAxcGVFWmhZM1J2Y2pvZ2V5QjJZV3gxWlRvZ01DNHdJSDBzWEc0Z0lDQWdJQ0FnSUhCaGNtRnRaWFJ5YVdOU2FXMUdjbVZ6Ym1Wc1VHOTNaWEpHWVdOMGIzSTZJSHNnZG1Gc2RXVTZJREV1TUNCOUxGeHVJQ0FnSUNBZ0lDQndZWEpoYldWMGNtbGpVbWx0VEdsbWRFWmhZM1J2Y2pvZ2V5QjJZV3gxWlRvZ01DNHdJSDBzWEc0Z0lDQWdJQ0FnSUdWdGFYTnphWFpsT2lCN0lIWmhiSFZsT2lCdVpYY2dWRWhTUlVVdVEyOXNiM0lvTUM0d0xDQXdMakFzSURBdU1Da2dmU3hjYmlBZ0lDQWdJQ0FnWlcxcGMzTnBkbVZKYm5SbGJuTnBkSGs2SUhzZ2RtRnNkV1U2SURFdU1DQjlMRnh1SUNBZ0lDQWdJQ0JsYldsemMybDJaVTFoY0ZWMlZISmhibk5tYjNKdE9pQjdJSFpoYkhWbE9pQnVaWGNnVkVoU1JVVXVUV0YwY21sNE15Z3BJSDBzWEc0Z0lDQWdJQ0FnSUc5MWRHeHBibVZYYVdSMGFFMTFiSFJwY0d4NVZHVjRkSFZ5WlRvZ2V5QjJZV3gxWlRvZ2JuVnNiQ0I5TEZ4dUlDQWdJQ0FnSUNCdmRYUnNhVzVsVjJsa2RHaE5kV3gwYVhCc2VWUmxlSFIxY21WVmRsUnlZVzV6Wm05eWJUb2dleUIyWVd4MVpUb2dibVYzSUZSSVVrVkZMazFoZEhKcGVETW9LU0I5TEZ4dUlDQWdJQ0FnSUNCdmRYUnNhVzVsVjJsa2RHaEdZV04wYjNJNklIc2dkbUZzZFdVNklEQXVOU0I5TEZ4dUlDQWdJQ0FnSUNCdmRYUnNhVzVsUTI5c2IzSkdZV04wYjNJNklIc2dkbUZzZFdVNklHNWxkeUJVU0ZKRlJTNURiMnh2Y2lnd0xqQXNJREF1TUN3Z01DNHdLU0I5TEZ4dUlDQWdJQ0FnSUNCdmRYUnNhVzVsVEdsbmFIUnBibWROYVhoR1lXTjBiM0k2SUhzZ2RtRnNkV1U2SURFdU1DQjlMRnh1SUNBZ0lDQWdJQ0IxZGtGdWFXMWhkR2x2YmsxaGMydFVaWGgwZFhKbE9pQjdJSFpoYkhWbE9pQnVkV3hzSUgwc1hHNGdJQ0FnSUNBZ0lIVjJRVzVwYldGMGFXOXVUV0Z6YTFSbGVIUjFjbVZWZGxSeVlXNXpabTl5YlRvZ2V5QjJZV3gxWlRvZ2JtVjNJRlJJVWtWRkxrMWhkSEpwZURNb0tTQjlMRnh1SUNBZ0lDQWdJQ0IxZGtGdWFXMWhkR2x2YmxOamNtOXNiRmhQWm1aelpYUTZJSHNnZG1Gc2RXVTZJREF1TUNCOUxGeHVJQ0FnSUNBZ0lDQjFka0Z1YVcxaGRHbHZibE5qY205c2JGbFBabVp6WlhRNklIc2dkbUZzZFdVNklEQXVNQ0I5TEZ4dUlDQWdJQ0FnSUNCMWRrRnVhVzFoZEdsdmJsSnZkR0YwYVc5dVVHaGhjMlU2SUhzZ2RtRnNkV1U2SURBdU1DQjlMRnh1SUNBZ0lDQWdmU3hjYmlBZ0lDQWdJSEJoY21GdFpYUmxjbk11ZFc1cFptOXliWE1zWEc0Z0lDQWdYU2s3WEc1Y2JpQWdJQ0F2THlBOVBTQm1hVzVoYkd4NUlHTnZiWEJwYkdVZ2RHaGxJSE5vWVdSbGNpQndjbTluY21GdElEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMWNiaUFnSUNCMGFHbHpMbk5sZEZaaGJIVmxjeWh3WVhKaGJXVjBaWEp6S1R0Y2JseHVJQ0FnSUM4dklEMDlJSFZ3Ykc5aFpDQjFibWxtYjNKdGN5QjBhR0YwSUc1bFpXUWdkRzhnZFhCc2IyRmtJRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVnh1SUNBZ0lIUm9hWE11WDNWd2JHOWhaRlZ1YVdadmNtMXpWMjl5YTJGeWIzVnVaQ2dwTzF4dVhHNGdJQ0FnTHk4Z1BUMGdkWEJrWVhSbElITm9ZV1JsY2lCemRIVm1aaUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlYRzRnSUNBZ2RHaHBjeTVqZFhOMGIyMVFjbTluY21GdFEyRmphR1ZMWlhrZ1BTQW9LU0E5UGx4dUlDQWdJQ0FnVzF4dUlDQWdJQ0FnSUNBdUxpNVBZbXBsWTNRdVpXNTBjbWxsY3loMGFHbHpMbDluWlc1bGNtRjBaVVJsWm1sdVpYTW9LU2t1YldGd0tDaGJkRzlyWlc0c0lHMWhZM0p2WFNrZ1BUNGdZQ1I3ZEc5clpXNTlPaVI3YldGamNtOTlZQ2tzWEc0Z0lDQWdJQ0FnSUhSb2FYTXViV0YwWTJGd1ZHVjRkSFZ5WlNBL0lHQnRZWFJqWVhCVVpYaDBkWEpsUTI5c2IzSlRjR0ZqWlRva2UyZGxkRlJsZUhSMWNtVkRiMnh2Y2xOd1lXTmxLSFJvYVhNdWJXRjBZMkZ3VkdWNGRIVnlaU2w5WUNBNklDY25MRnh1SUNBZ0lDQWdJQ0IwYUdsekxuTm9ZV1JsVFhWc2RHbHdiSGxVWlhoMGRYSmxYRzRnSUNBZ0lDQWdJQ0FnUHlCZ2MyaGhaR1ZOZFd4MGFYQnNlVlJsZUhSMWNtVkRiMnh2Y2xOd1lXTmxPaVI3WjJWMFZHVjRkSFZ5WlVOdmJHOXlVM0JoWTJVb2RHaHBjeTV6YUdGa1pVMTFiSFJwY0d4NVZHVjRkSFZ5WlNsOVlGeHVJQ0FnSUNBZ0lDQWdJRG9nSnljc1hHNGdJQ0FnSUNBZ0lIUm9hWE11Y21sdFRYVnNkR2x3YkhsVVpYaDBkWEpsSUQ4Z1lISnBiVTExYkhScGNHeDVWR1Y0ZEhWeVpVTnZiRzl5VTNCaFkyVTZKSHRuWlhSVVpYaDBkWEpsUTI5c2IzSlRjR0ZqWlNoMGFHbHpMbkpwYlUxMWJIUnBjR3g1VkdWNGRIVnlaU2w5WUNBNklDY25MRnh1SUNBZ0lDQWdYUzVxYjJsdUtDY3NKeWs3WEc1Y2JpQWdJQ0IwYUdsekxtOXVRbVZtYjNKbFEyOXRjR2xzWlNBOUlDaHphR0ZrWlhJcElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElIUm9jbVZsVW1WMmFYTnBiMjRnUFNCd1lYSnpaVWx1ZENoVVNGSkZSUzVTUlZaSlUwbFBUaXdnTVRBcE8xeHVYRzRnSUNBZ0lDQmpiMjV6ZENCa1pXWnBibVZ6SUQxY2JpQWdJQ0FnSUNBZ1QySnFaV04wTG1WdWRISnBaWE1vZXlBdUxpNTBhR2x6TGw5blpXNWxjbUYwWlVSbFptbHVaWE1vS1N3Z0xpNHVkR2hwY3k1a1pXWnBibVZ6SUgwcFhHNGdJQ0FnSUNBZ0lDQWdMbVpwYkhSbGNpZ29XM1J2YTJWdUxDQnRZV055YjEwcElEMCtJQ0VoYldGamNtOHBYRzRnSUNBZ0lDQWdJQ0FnTG0xaGNDZ29XM1J2YTJWdUxDQnRZV055YjEwcElEMCtJR0FqWkdWbWFXNWxJQ1I3ZEc5clpXNTlJQ1I3YldGamNtOTlZQ2xjYmlBZ0lDQWdJQ0FnSUNBdWFtOXBiaWduWEZ4dUp5a2dLeUFuWEZ4dUp6dGNibHh1SUNBZ0lDQWdMeThnTFMwZ1oyVnVaWEpoZEdVZ2MyaGhaR1Z5SUdOdlpHVWdMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFZ4dUlDQWdJQ0FnYzJoaFpHVnlMblpsY25SbGVGTm9ZV1JsY2lBOUlHUmxabWx1WlhNZ0t5QnphR0ZrWlhJdWRtVnlkR1Y0VTJoaFpHVnlPMXh1SUNBZ0lDQWdjMmhoWkdWeUxtWnlZV2R0Wlc1MFUyaGhaR1Z5SUQwZ1pHVm1hVzVsY3lBcklITm9ZV1JsY2k1bWNtRm5iV1Z1ZEZOb1lXUmxjanRjYmx4dUlDQWdJQ0FnTHk4Z0xTMGdZMjl0Y0dGMElDMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExWeHVYRzRnSUNBZ0lDQXZMeUJEVDAxUVFWUTZJSEJ5WlMxeU1UVTBYRzRnSUNBZ0lDQXZMeUJVYUhKbFpTNXFjeUJ5TVRVMElISmxibUZ0WlhNZ2RHaGxJSE5vWVdSbGNpQmphSFZ1YXlBOFkyOXNiM0p6Y0dGalpWOW1jbUZuYldWdWRENGdkRzhnUEdWdVkyOWthVzVuYzE5bWNtRm5iV1Z1ZEQ1Y2JpQWdJQ0FnSUdsbUlDaDBhSEpsWlZKbGRtbHphVzl1SUR3Z01UVTBLU0I3WEc0Z0lDQWdJQ0FnSUhOb1lXUmxjaTVtY21GbmJXVnVkRk5vWVdSbGNpQTlJSE5vWVdSbGNpNW1jbUZuYldWdWRGTm9ZV1JsY2k1eVpYQnNZV05sS0Z4dUlDQWdJQ0FnSUNBZ0lDY2phVzVqYkhWa1pTQThZMjlzYjNKemNHRmpaVjltY21GbmJXVnVkRDRuTEZ4dUlDQWdJQ0FnSUNBZ0lDY2phVzVqYkhWa1pTQThaVzVqYjJScGJtZHpYMlp5WVdkdFpXNTBQaWNzWEc0Z0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDOHZJRU5QVFZCQlZEb2djSEpsTFhJeE16SmNiaUFnSUNBZ0lDOHZJRlJvY21WbExtcHpJSEl4TXpJZ2FXNTBjbTlrZFdObGN5QnVaWGNnYzJoaFpHVnlJR05vZFc1cmN5QThibTl5YldGc1gzQmhjbk5mWm5KaFoyMWxiblErSUdGdVpDQThZV3h3YUdGMFpYTjBYM0JoY25OZlpuSmhaMjFsYm5RK1hHNGdJQ0FnSUNCcFppQW9kR2h5WldWU1pYWnBjMmx2YmlBOElERXpNaWtnZTF4dUlDQWdJQ0FnSUNCemFHRmtaWEl1Wm5KaFoyMWxiblJUYUdGa1pYSWdQU0J6YUdGa1pYSXVabkpoWjIxbGJuUlRhR0ZrWlhJdWNtVndiR0ZqWlNnbkkybHVZMngxWkdVZ1BHNXZjbTFoYkY5d1lYSnpYMlp5WVdkdFpXNTBQaWNzSUNjbktUdGNiaUFnSUNBZ0lDQWdjMmhoWkdWeUxtWnlZV2R0Wlc1MFUyaGhaR1Z5SUQwZ2MyaGhaR1Z5TG1aeVlXZHRaVzUwVTJoaFpHVnlMbkpsY0d4aFkyVW9KeU5wYm1Oc2RXUmxJRHhoYkhCb1lYUmxjM1JmY0dGeWMxOW1jbUZuYldWdWRENG5MQ0FuSnlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlZjR1JoZEdVZ2RHaHBjeUJ0WVhSbGNtbGhiQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUdSbGJIUmhJR1JsYkhSaFZHbHRaU0J6YVc1alpTQnNZWE4wSUhWd1pHRjBaVnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSFZ3WkdGMFpTaGtaV3gwWVRvZ2JuVnRZbVZ5S1RvZ2RtOXBaQ0I3WEc0Z0lDQWdkR2hwY3k1ZmRYQnNiMkZrVlc1cFptOXliWE5YYjNKcllYSnZkVzVrS0NrN1hHNGdJQ0FnZEdocGN5NWZkWEJrWVhSbFZWWkJibWx0WVhScGIyNG9aR1ZzZEdFcE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHTnZjSGtvYzI5MWNtTmxPaUIwYUdsektUb2dkR2hwY3lCN1hHNGdJQ0FnYzNWd1pYSXVZMjl3ZVNoemIzVnlZMlVwTzF4dUlDQWdJQzh2SUhWdWFXWnZjbTF6SUdGeVpTQmhiSEpsWVdSNUlHTnZjR2xsWkNCaGRDQjBhR2x6SUcxdmJXVnVkRnh1WEc0Z0lDQWdMeThnUW1WbmFXNXVhVzVuSUdaeWIyMGdjakV6TXl3Z2RXNXBabTl5YlNCMFpYaDBkWEpsY3lCM2FXeHNJR0psSUdOc2IyNWxaQ0JwYm5OMFpXRmtJRzltSUhKbFptVnlaVzVqWlZ4dUlDQWdJQzh2SUZObFpUb2dhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjF5Wkc5dllpOTBhSEpsWlM1cWN5OWliRzlpTDJFNE9ERXpZbVV3TkdFNE5EbGlaREUxTldZM1kyWTJaakZpTWpOa09HVmxNbVV3Wm1JME9HSXZaWGhoYlhCc1pYTXZhbk50TDJ4dllXUmxjbk12UjB4VVJreHZZV1JsY2k1cWN5Tk1NekEwTjF4dUlDQWdJQzh2SUZObFpUb2dhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjF5Wkc5dllpOTBhSEpsWlM1cWN5OWliRzlpTDJFNE9ERXpZbVV3TkdFNE5EbGlaREUxTldZM1kyWTJaakZpTWpOa09HVmxNbVV3Wm1JME9HSXZjM0pqTDNKbGJtUmxjbVZ5Y3k5emFHRmtaWEp6TDFWdWFXWnZjbTF6VlhScGJITXVhbk1qVERJeVhHNGdJQ0FnTHk4Z1ZHaHBjeUIzYVd4c0lHeGxZWFpsSUhSb1pXbHlJR0F1ZG1WeWMybHZibUFnZEc4Z1ltVWdZREJnWEc0Z0lDQWdMeThnWVc1a0lIUm9aWE5sSUhSbGVIUjFjbVZ6SUhkdmJpZDBJR0psSUhWd2JHOWhaR1ZrSUhSdklFZFFWVnh1SUNBZ0lDOHZJRmRsSUdGeVpTQm5iMmx1WnlCMGJ5QjNiM0pyWVhKdmRXNWtJSFJvYVhNZ2FXNGdhR1Z5WlZ4dUlDQWdJQzh2SUVrbmRtVWdiM0JsYm1Wa0lHRnVJR2x6YzNWbElHWnZjaUIwYUdsek9pQm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZiWEprYjI5aUwzUm9jbVZsTG1wekwybHpjM1ZsY3k4eU1qY3hPRnh1SUNBZ0lIUm9hWE11YldGd0lEMGdjMjkxY21ObExtMWhjRHRjYmlBZ0lDQjBhR2x6TG01dmNtMWhiRTFoY0NBOUlITnZkWEpqWlM1dWIzSnRZV3hOWVhBN1hHNGdJQ0FnZEdocGN5NWxiV2x6YzJsMlpVMWhjQ0E5SUhOdmRYSmpaUzVsYldsemMybDJaVTFoY0R0Y2JpQWdJQ0IwYUdsekxuTm9ZV1JsVFhWc2RHbHdiSGxVWlhoMGRYSmxJRDBnYzI5MWNtTmxMbk5vWVdSbFRYVnNkR2x3YkhsVVpYaDBkWEpsTzF4dUlDQWdJSFJvYVhNdWMyaGhaR2x1WjFOb2FXWjBWR1Y0ZEhWeVpTQTlJSE52ZFhKalpTNXphR0ZrYVc1blUyaHBablJVWlhoMGRYSmxPMXh1SUNBZ0lIUm9hWE11YldGMFkyRndWR1Y0ZEhWeVpTQTlJSE52ZFhKalpTNXRZWFJqWVhCVVpYaDBkWEpsTzF4dUlDQWdJSFJvYVhNdWNtbHRUWFZzZEdsd2JIbFVaWGgwZFhKbElEMGdjMjkxY21ObExuSnBiVTExYkhScGNHeDVWR1Y0ZEhWeVpUdGNiaUFnSUNCMGFHbHpMbTkxZEd4cGJtVlhhV1IwYUUxMWJIUnBjR3g1VkdWNGRIVnlaU0E5SUhOdmRYSmpaUzV2ZFhSc2FXNWxWMmxrZEdoTmRXeDBhWEJzZVZSbGVIUjFjbVU3WEc0Z0lDQWdkR2hwY3k1MWRrRnVhVzFoZEdsdmJrMWhjMnRVWlhoMGRYSmxJRDBnYzI5MWNtTmxMblYyUVc1cGJXRjBhVzl1VFdGemExUmxlSFIxY21VN1hHNWNiaUFnSUNBdkx5QTlQU0JqYjNCNUlHMWxiV0psY25NZ1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmlBZ0lDQjBhR2x6TG01dmNtMWhiRTFoY0ZSNWNHVWdQU0J6YjNWeVkyVXVibTl5YldGc1RXRndWSGx3WlR0Y2JseHVJQ0FnSUhSb2FYTXVkWFpCYm1sdFlYUnBiMjVUWTNKdmJHeFlVM0JsWldSR1lXTjBiM0lnUFNCemIzVnlZMlV1ZFhaQmJtbHRZWFJwYjI1VFkzSnZiR3hZVTNCbFpXUkdZV04wYjNJN1hHNGdJQ0FnZEdocGN5NTFka0Z1YVcxaGRHbHZibE5qY205c2JGbFRjR1ZsWkVaaFkzUnZjaUE5SUhOdmRYSmpaUzUxZGtGdWFXMWhkR2x2YmxOamNtOXNiRmxUY0dWbFpFWmhZM1J2Y2p0Y2JpQWdJQ0IwYUdsekxuVjJRVzVwYldGMGFXOXVVbTkwWVhScGIyNVRjR1ZsWkVaaFkzUnZjaUE5SUhOdmRYSmpaUzUxZGtGdWFXMWhkR2x2YmxKdmRHRjBhVzl1VTNCbFpXUkdZV04wYjNJN1hHNWNiaUFnSUNCMGFHbHpMbWxuYm05eVpWWmxjblJsZUVOdmJHOXlJRDBnYzI5MWNtTmxMbWxuYm05eVpWWmxjblJsZUVOdmJHOXlPMXh1WEc0Z0lDQWdkR2hwY3k1Mk1FTnZiWEJoZEZOb1lXUmxJRDBnYzI5MWNtTmxMbll3UTI5dGNHRjBVMmhoWkdVN1hHNGdJQ0FnZEdocGN5NWtaV0oxWjAxdlpHVWdQU0J6YjNWeVkyVXVaR1ZpZFdkTmIyUmxPMXh1SUNBZ0lIUm9hWE11YjNWMGJHbHVaVmRwWkhSb1RXOWtaU0E5SUhOdmRYSmpaUzV2ZFhSc2FXNWxWMmxrZEdoTmIyUmxPMXh1WEc0Z0lDQWdkR2hwY3k1cGMwOTFkR3hwYm1VZ1BTQnpiM1Z5WTJVdWFYTlBkWFJzYVc1bE8xeHVYRzRnSUNBZ0x5OGdQVDBnZFhCa1lYUmxJSE5vWVdSbGNpQnpkSFZtWmlBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc0Z0lDQWdkR2hwY3k1dVpXVmtjMVZ3WkdGMFpTQTlJSFJ5ZFdVN1hHNWNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJWY0dSaGRHVWdWVllnWVc1cGJXRjBhVzl1SUhOMFlYUmxMbHh1SUNBZ0tpQkpiblJsYm1SbFpDQjBieUJpWlNCallXeHNaV1FnZG1saElIdEFiR2x1YXlCMWNHUmhkR1Y5TGx4dUlDQWdLaUJBY0dGeVlXMGdaR1ZzZEdFZ1pHVnNkR0ZVYVcxbFhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElGOTFjR1JoZEdWVlZrRnVhVzFoZEdsdmJpaGtaV3gwWVRvZ2JuVnRZbVZ5S1RvZ2RtOXBaQ0I3WEc0Z0lDQWdkR2hwY3k1MWJtbG1iM0p0Y3k1MWRrRnVhVzFoZEdsdmJsTmpjbTlzYkZoUFptWnpaWFF1ZG1Gc2RXVWdLejBnWkdWc2RHRWdLaUIwYUdsekxuVjJRVzVwYldGMGFXOXVVMk55YjJ4c1dGTndaV1ZrUm1GamRHOXlPMXh1SUNBZ0lIUm9hWE11ZFc1cFptOXliWE11ZFhaQmJtbHRZWFJwYjI1VFkzSnZiR3haVDJabWMyVjBMblpoYkhWbElDczlJR1JsYkhSaElDb2dkR2hwY3k1MWRrRnVhVzFoZEdsdmJsTmpjbTlzYkZsVGNHVmxaRVpoWTNSdmNqdGNiaUFnSUNCMGFHbHpMblZ1YVdadmNtMXpMblYyUVc1cGJXRjBhVzl1VW05MFlYUnBiMjVRYUdGelpTNTJZV3gxWlNBclBTQmtaV3gwWVNBcUlIUm9hWE11ZFhaQmJtbHRZWFJwYjI1U2IzUmhkR2x2YmxOd1pXVmtSbUZqZEc5eU8xeHVYRzRnSUNBZ2RHaHBjeTUxYm1sbWIzSnRjMDVsWldSVmNHUmhkR1VnUFNCMGNuVmxPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWd2JHOWhaQ0IxYm1sbWIzSnRjeUIwYUdGMElHNWxaV1FnZEc4Z2RYQnNiMkZrSUdKMWRDQmtiMlZ6YmlkMElHRjFkRzl0WVhScFkyRnNiSGtnWW1WallYVnpaU0J2WmlCeVpXRnpiMjV6TGx4dUlDQWdLaUJKYm5SbGJtUmxaQ0IwYnlCaVpTQmpZV3hzWldRZ2RtbGhJSHRBYkdsdWF5QmpiMjV6ZEhKMVkzUnZjbjBnWVc1a0lIdEFiR2x1YXlCMWNHUmhkR1Y5TGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCZmRYQnNiMkZrVlc1cFptOXliWE5YYjNKcllYSnZkVzVrS0NrNklIWnZhV1FnZTF4dUlDQWdJQzh2SUhkdmNtdGhjbTkxYm1RNklITnBibU5sSUc5d1lXTnBkSGtnYVhNZ1pHVm1hVzVsWkNCaGN5QmhJSEJ5YjNCbGNuUjVJR2x1SUZSSVVrVkZMazFoZEdWeWFXRnNYRzRnSUNBZ0x5OGdZVzVrSUdOaGJtNXZkQ0JpWlNCdmRtVnljbWxrWkdWdUlHRnpJR0Z1SUdGalkyVnpjMjl5TEZ4dUlDQWdJQzh2SUZkbElHRnlaU0JuYjJsdVp5QjBieUIxY0dSaGRHVWdiM0JoWTJsMGVTQm9aWEpsWEc0Z0lDQWdkR2hwY3k1MWJtbG1iM0p0Y3k1dmNHRmphWFI1TG5aaGJIVmxJRDBnZEdocGN5NXZjR0ZqYVhSNU8xeHVYRzRnSUNBZ0x5OGdkMjl5YTJGeWIzVnVaRG9nZEdWNGRIVnlaU0IwY21GdWMyWnZjbTF6SUdGeVpTQnViM1FnZFhCa1lYUmxaQ0JoZFhSdmJXRjBhV05oYkd4NVhHNGdJQ0FnZEdocGN5NWZkWEJrWVhSbFZHVjRkSFZ5WlUxaGRISnBlQ2gwYUdsekxuVnVhV1p2Y20xekxtMWhjQ3dnZEdocGN5NTFibWxtYjNKdGN5NXRZWEJWZGxSeVlXNXpabTl5YlNrN1hHNGdJQ0FnZEdocGN5NWZkWEJrWVhSbFZHVjRkSFZ5WlUxaGRISnBlQ2gwYUdsekxuVnVhV1p2Y20xekxtNXZjbTFoYkUxaGNDd2dkR2hwY3k1MWJtbG1iM0p0Y3k1dWIzSnRZV3hOWVhCVmRsUnlZVzV6Wm05eWJTazdYRzRnSUNBZ2RHaHBjeTVmZFhCa1lYUmxWR1Y0ZEhWeVpVMWhkSEpwZUNoMGFHbHpMblZ1YVdadmNtMXpMbVZ0YVhOemFYWmxUV0Z3TENCMGFHbHpMblZ1YVdadmNtMXpMbVZ0YVhOemFYWmxUV0Z3VlhaVWNtRnVjMlp2Y20wcE8xeHVJQ0FnSUhSb2FYTXVYM1Z3WkdGMFpWUmxlSFIxY21WTllYUnlhWGdvZEdocGN5NTFibWxtYjNKdGN5NXphR0ZrWlUxMWJIUnBjR3g1VkdWNGRIVnlaU3dnZEdocGN5NTFibWxtYjNKdGN5NXphR0ZrWlUxMWJIUnBjR3g1VkdWNGRIVnlaVlYyVkhKaGJuTm1iM0p0S1R0Y2JpQWdJQ0IwYUdsekxsOTFjR1JoZEdWVVpYaDBkWEpsVFdGMGNtbDRLSFJvYVhNdWRXNXBabTl5YlhNdWMyaGhaR2x1WjFOb2FXWjBWR1Y0ZEhWeVpTd2dkR2hwY3k1MWJtbG1iM0p0Y3k1emFHRmthVzVuVTJocFpuUlVaWGgwZFhKbFZYWlVjbUZ1YzJadmNtMHBPMXh1SUNBZ0lIUm9hWE11WDNWd1pHRjBaVlJsZUhSMWNtVk5ZWFJ5YVhnb2RHaHBjeTUxYm1sbWIzSnRjeTV0WVhSallYQlVaWGgwZFhKbExDQjBhR2x6TG5WdWFXWnZjbTF6TG0xaGRHTmhjRlJsZUhSMWNtVlZkbFJ5WVc1elptOXliU2s3WEc0Z0lDQWdkR2hwY3k1ZmRYQmtZWFJsVkdWNGRIVnlaVTFoZEhKcGVDaDBhR2x6TG5WdWFXWnZjbTF6TG5KcGJVMTFiSFJwY0d4NVZHVjRkSFZ5WlN3Z2RHaHBjeTUxYm1sbWIzSnRjeTV5YVcxTmRXeDBhWEJzZVZSbGVIUjFjbVZWZGxSeVlXNXpabTl5YlNrN1hHNGdJQ0FnZEdocGN5NWZkWEJrWVhSbFZHVjRkSFZ5WlUxaGRISnBlQ2hjYmlBZ0lDQWdJSFJvYVhNdWRXNXBabTl5YlhNdWIzVjBiR2x1WlZkcFpIUm9UWFZzZEdsd2JIbFVaWGgwZFhKbExGeHVJQ0FnSUNBZ2RHaHBjeTUxYm1sbWIzSnRjeTV2ZFhSc2FXNWxWMmxrZEdoTmRXeDBhWEJzZVZSbGVIUjFjbVZWZGxSeVlXNXpabTl5YlN4Y2JpQWdJQ0FwTzF4dUlDQWdJSFJvYVhNdVgzVndaR0YwWlZSbGVIUjFjbVZOWVhSeWFYZ29kR2hwY3k1MWJtbG1iM0p0Y3k1MWRrRnVhVzFoZEdsdmJrMWhjMnRVWlhoMGRYSmxMQ0IwYUdsekxuVnVhV1p2Y20xekxuVjJRVzVwYldGMGFXOXVUV0Z6YTFSbGVIUjFjbVZWZGxSeVlXNXpabTl5YlNrN1hHNWNiaUFnSUNBdkx5QkRUMDFRUVZRZ2QyOXlhMkZ5YjNWdVpEb2djM1JoY25ScGJtY2dabkp2YlNCeU1UTXlMQ0JoYkhCb1lWUmxjM1FnWW1WamIyMWxjeUJoSUhWdWFXWnZjbTBnYVc1emRHVmhaQ0J2WmlCd2NtVndjbTlqWlhOemIzSWdkbUZzZFdWY2JpQWdJQ0JqYjI1emRDQjBhSEpsWlZKbGRtbHphVzl1SUQwZ2NHRnljMlZKYm5Rb1ZFaFNSVVV1VWtWV1NWTkpUMDRzSURFd0tUdGNibHh1SUNBZ0lHbG1JQ2gwYUhKbFpWSmxkbWx6YVc5dUlENDlJREV6TWlrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTUxYm1sbWIzSnRjeTVoYkhCb1lWUmxjM1F1ZG1Gc2RXVWdQU0IwYUdsekxtRnNjR2hoVkdWemREdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMblZ1YVdadmNtMXpUbVZsWkZWd1pHRjBaU0E5SUhSeWRXVTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUJoSUcxaGNDQnZZbXBsWTNRZ2IyWWdjSEpsY0hKdlkyVnpjMjl5SUhSdmEyVnVJR0Z1WkNCdFlXTnlieUJ2WmlCMGFHVWdjMmhoWkdWeUlIQnliMmR5WVcwdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElGOW5aVzVsY21GMFpVUmxabWx1WlhNb0tUb2dleUJiZEc5clpXNDZJSE4wY21sdVoxMDZJR0p2YjJ4bFlXNGdmQ0J1ZFcxaVpYSWdmQ0J6ZEhKcGJtY2dmU0I3WEc0Z0lDQWdZMjl1YzNRZ2RHaHlaV1ZTWlhacGMybHZiaUE5SUhCaGNuTmxTVzUwS0ZSSVVrVkZMbEpGVmtsVFNVOU9MQ0F4TUNrN1hHNWNiaUFnSUNCamIyNXpkQ0IxYzJWVmRrbHVWbVZ5ZENBOUlIUm9hWE11YjNWMGJHbHVaVmRwWkhSb1RYVnNkR2x3YkhsVVpYaDBkWEpsSUNFOVBTQnVkV3hzTzF4dUlDQWdJR052Ym5OMElIVnpaVlYyU1c1R2NtRm5JRDFjYmlBZ0lDQWdJSFJvYVhNdWJXRndJQ0U5UFNCdWRXeHNJSHg4WEc0Z0lDQWdJQ0IwYUdsekxtVnRhWE56YVhabFRXRndJQ0U5UFNCdWRXeHNJSHg4WEc0Z0lDQWdJQ0IwYUdsekxuTm9ZV1JsVFhWc2RHbHdiSGxVWlhoMGRYSmxJQ0U5UFNCdWRXeHNJSHg4WEc0Z0lDQWdJQ0IwYUdsekxuTm9ZV1JwYm1kVGFHbG1kRlJsZUhSMWNtVWdJVDA5SUc1MWJHd2dmSHhjYmlBZ0lDQWdJSFJvYVhNdWNtbHRUWFZzZEdsd2JIbFVaWGgwZFhKbElDRTlQU0J1ZFd4c0lIeDhYRzRnSUNBZ0lDQjBhR2x6TG5WMlFXNXBiV0YwYVc5dVRXRnphMVJsZUhSMWNtVWdJVDA5SUc1MWJHdzdYRzVjYmlBZ0lDQnlaWFIxY200Z2UxeHVJQ0FnSUNBZ0x5OGdWR1Z0Y0c5eVlYSjVJR052YlhCaGRDQmhaMkZwYm5OMElITm9ZV1JsY2lCamFHRnVaMlVnUUNCVWFISmxaUzVxY3lCeU1USTJYRzRnSUNBZ0lDQXZMeUJUWldVNklDTXlNVEl3TlN3Z0l6SXhNekEzTENBak1qRXlPVGxjYmlBZ0lDQWdJRlJJVWtWRlgxWlNUVjlVU0ZKRlJWOVNSVlpKVTBsUFRqb2dkR2h5WldWU1pYWnBjMmx2Yml4Y2JseHVJQ0FnSUNBZ1QxVlVURWxPUlRvZ2RHaHBjeTVmYVhOUGRYUnNhVzVsTEZ4dUlDQWdJQ0FnVFZSUFQwNWZWVk5GWDFWV09pQjFjMlZWZGtsdVZtVnlkQ0I4ZkNCMWMyVlZka2x1Um5KaFp5d2dMeThnZDJVZ1kyRnVKM1FnZFhObElHQlZVMFZmVlZaZ0lDd2dhWFFnZDJsc2JDQmlaU0J5WldSbFptbHVaV1FnYVc0Z1YyVmlSMHhRY205bmNtRnRMbXB6WEc0Z0lDQWdJQ0JOVkU5UFRsOVZWbE5mVmtWU1ZFVllYMDlPVEZrNklIVnpaVlYyU1c1V1pYSjBJQ1ltSUNGMWMyVlZka2x1Um5KaFp5eGNiaUFnSUNBZ0lGWXdYME5QVFZCQlZGOVRTRUZFUlRvZ2RHaHBjeTVmZGpCRGIyMXdZWFJUYUdGa1pTeGNiaUFnSUNBZ0lGVlRSVjlUU0VGRVJVMVZURlJKVUV4WlZFVllWRlZTUlRvZ2RHaHBjeTV6YUdGa1pVMTFiSFJwY0d4NVZHVjRkSFZ5WlNBaFBUMGdiblZzYkN4Y2JpQWdJQ0FnSUZWVFJWOVRTRUZFU1U1SFUwaEpSbFJVUlZoVVZWSkZPaUIwYUdsekxuTm9ZV1JwYm1kVGFHbG1kRlJsZUhSMWNtVWdJVDA5SUc1MWJHd3NYRzRnSUNBZ0lDQlZVMFZmVFVGVVEwRlFWRVZZVkZWU1JUb2dkR2hwY3k1dFlYUmpZWEJVWlhoMGRYSmxJQ0U5UFNCdWRXeHNMRnh1SUNBZ0lDQWdWVk5GWDFKSlRVMVZURlJKVUV4WlZFVllWRlZTUlRvZ2RHaHBjeTV5YVcxTmRXeDBhWEJzZVZSbGVIUjFjbVVnSVQwOUlHNTFiR3dzWEc0Z0lDQWdJQ0JWVTBWZlQxVlVURWxPUlZkSlJGUklUVlZNVkVsUVRGbFVSVmhVVlZKRk9pQjBhR2x6TGw5cGMwOTFkR3hwYm1VZ0ppWWdkR2hwY3k1dmRYUnNhVzVsVjJsa2RHaE5kV3gwYVhCc2VWUmxlSFIxY21VZ0lUMDlJRzUxYkd3c1hHNGdJQ0FnSUNCVlUwVmZWVlpCVGtsTlFWUkpUMDVOUVZOTFZFVllWRlZTUlRvZ2RHaHBjeTUxZGtGdWFXMWhkR2x2YmsxaGMydFVaWGgwZFhKbElDRTlQU0J1ZFd4c0xGeHVJQ0FnSUNBZ1NVZE9UMUpGWDFaRlVsUkZXRjlEVDB4UFVqb2dkR2hwY3k1ZmFXZHViM0psVm1WeWRHVjRRMjlzYjNJZ1BUMDlJSFJ5ZFdVc1hHNGdJQ0FnSUNCRVJVSlZSMTlPVDFKTlFVdzZJSFJvYVhNdVgyUmxZblZuVFc5a1pTQTlQVDBnSjI1dmNtMWhiQ2NzWEc0Z0lDQWdJQ0JFUlVKVlIxOU1TVlJUU0VGRVJWSkJWRVU2SUhSb2FYTXVYMlJsWW5WblRXOWtaU0E5UFQwZ0oyeHBkRk5vWVdSbFVtRjBaU2NzWEc0Z0lDQWdJQ0JFUlVKVlIxOVZWam9nZEdocGN5NWZaR1ZpZFdkTmIyUmxJRDA5UFNBbmRYWW5MRnh1SUNBZ0lDQWdUMVZVVEVsT1JWOVhTVVJVU0Y5WFQxSk1SRG9nZEdocGN5NWZhWE5QZFhSc2FXNWxJQ1ltSUhSb2FYTXVYMjkxZEd4cGJtVlhhV1IwYUUxdlpHVWdQVDA5SUUxVWIyOXVUV0YwWlhKcFlXeFBkWFJzYVc1bFYybGtkR2hOYjJSbExsZHZjbXhrUTI5dmNtUnBibUYwWlhNc1hHNGdJQ0FnSUNCUFZWUk1TVTVGWDFkSlJGUklYMU5EVWtWRlRqcGNiaUFnSUNBZ0lDQWdkR2hwY3k1ZmFYTlBkWFJzYVc1bElDWW1JSFJvYVhNdVgyOTFkR3hwYm1WWGFXUjBhRTF2WkdVZ1BUMDlJRTFVYjI5dVRXRjBaWEpwWVd4UGRYUnNhVzVsVjJsa2RHaE5iMlJsTGxOamNtVmxia052YjNKa2FXNWhkR1Z6TEZ4dUlDQWdJSDA3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUY5MWNHUmhkR1ZVWlhoMGRYSmxUV0YwY21sNEtITnlZem9nVkVoU1JVVXVTVlZ1YVdadmNtMDhWRWhTUlVVdVZHVjRkSFZ5WlNCOElHNTFiR3crTENCa2MzUTZJRlJJVWtWRkxrbFZibWxtYjNKdFBGUklVa1ZGTGsxaGRISnBlRE0rS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdhV1lnS0hOeVl5NTJZV3gxWlNrZ2UxeHVJQ0FnSUNBZ2FXWWdLSE55WXk1MllXeDFaUzV0WVhSeWFYaEJkWFJ2VlhCa1lYUmxLU0I3WEc0Z0lDQWdJQ0FnSUhOeVl5NTJZV3gxWlM1MWNHUmhkR1ZOWVhSeWFYZ29LVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnWkhOMExuWmhiSFZsTG1OdmNIa29jM0pqTG5aaGJIVmxMbTFoZEhKcGVDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OVhHNGlMQ0pwYlhCdmNuUWdLaUJoY3lCVVNGSkZSU0JtY205dElDZDBhSEpsWlNjN1hHNWNibU52Ym5OMElHTnZiRzl5VTNCaFkyVkZibU52WkdsdVowMWhjRG9nVW1WamIzSmtQQ2NuSUh3Z0ozTnlaMkluTENCaGJuaytJRDBnZTF4dUlDQW5Kem9nTXpBd01DeGNiaUFnYzNKbllqb2dNekF3TVN4Y2JuMDdYRzVjYmk4cUtseHVJQ29nUVNCamIyMXdZWFFnWm5WdVkzUnBiMjRnZEc4Z2MyVjBJSFJsZUhSMWNtVWdZMjlzYjNJZ2MzQmhZMlV1WEc0Z0tseHVJQ29nUTA5TlVFRlVPaUJ3Y21VdGNqRTFNbHh1SUNvZ1UzUmhjblJwYm1jZ1puSnZiU0JVYUhKbFpTNXFjeUJ5TVRVeUxDQmdkR1Y0ZEhWeVpTNWxibU52WkdsdVoyQWdhWE1nY21WdVlXMWxaQ0IwYnlCZ2RHVjRkSFZ5WlM1amIyeHZjbE53WVdObFlDNWNiaUFxSUZSb2FYTWdablZ1WTNScGIyNGdkMmxzYkNCb1lXNWtiR1VnZEdobElHTnZiV0Z3ZEM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZEdWNGRIVnlaU0JVYUdVZ2RHVjRkSFZ5WlNCNWIzVWdkMkZ1ZENCMGJ5QnpaWFFnZEdobElHTnZiRzl5SUhOd1lXTmxJSFJ2WEc0Z0tpQkFjR0Z5WVcwZ1kyOXNiM0pUY0dGalpTQlVhR1VnWTI5c2IzSWdjM0JoWTJVZ2VXOTFJSGRoYm5RZ2RHOGdjMlYwSUhSdklIUm9aU0IwWlhoMGRYSmxYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCelpYUlVaWGgwZFhKbFEyOXNiM0pUY0dGalpTaDBaWGgwZFhKbE9pQlVTRkpGUlM1VVpYaDBkWEpsTENCamIyeHZjbE53WVdObE9pQW5KeUI4SUNkemNtZGlKeWs2SUhadmFXUWdlMXh1SUNCcFppQW9jR0Z5YzJWSmJuUW9WRWhTUlVVdVVrVldTVk5KVDA0c0lERXdLU0ErUFNBeE5USXBJSHRjYmlBZ0lDQjBaWGgwZFhKbExtTnZiRzl5VTNCaFkyVWdQU0JqYjJ4dmNsTndZV05sTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNoMFpYaDBkWEpsSUdGeklHRnVlU2t1Wlc1amIyUnBibWNnUFNCamIyeHZjbE53WVdObFJXNWpiMlJwYm1kTllYQmJZMjlzYjNKVGNHRmpaVjA3WEc0Z0lIMWNibjFjYmlJc0ltbHRjRzl5ZENBcUlHRnpJRlJJVWtWRklHWnliMjBnSjNSb2NtVmxKenRjYm1sdGNHOXlkQ0I3SUVkTVZFWlFZWEp6WlhJZ2ZTQm1jbTl0SUNkMGFISmxaUzlsZUdGdGNHeGxjeTlxYzIwdmJHOWhaR1Z5Y3k5SFRGUkdURzloWkdWeUxtcHpKenRjYm1sdGNHOXlkQ0I3SUUxVWIyOXVUV0YwWlhKcFlXeFFZWEpoYldWMFpYSnpJSDBnWm5KdmJTQW5MaTlOVkc5dmJrMWhkR1Z5YVdGc1VHRnlZVzFsZEdWeWN5YzdYRzVwYlhCdmNuUWdleUJ6WlhSVVpYaDBkWEpsUTI5c2IzSlRjR0ZqWlNCOUlHWnliMjBnSnk0dmRYUnBiSE12YzJWMFZHVjRkSFZ5WlVOdmJHOXlVM0JoWTJVbk8xeHVYRzR2S2lwY2JpQXFJRTFoZEdWeWFXRnNVR0Z5WVcxbGRHVnljeUJvWVhSbGN5QmdkVzVrWldacGJtVmtZQzRnVkdocGN5Qm9aV3h3WlhJZ1lYVjBiMjFoZEdsallXeHNlU0J5WldwbFkzUnpJR0Z6YzJsbmJpQnZaaUIwYUdWelpTQmdkVzVrWldacGJtVmtZQzVjYmlBcUlFbDBJR0ZzYzI4Z2FHRnVaR3hsY3lCaGMzbHVZMmh5YjI1dmRYTWdjSEp2WTJWemN5QnZaaUIwWlhoMGRYSmxjeTVjYmlBcUlFMWhhMlVnYzNWeVpTQmhkMkZwZENCbWIzSWdlMEJzYVc1cklFZE1WRVpOVkc5dmJrMWhkR1Z5YVdGc1VHRnlZVzF6UVhOemFXZHVTR1ZzY0dWeUxuQmxibVJwYm1kOUxseHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdSMHhVUmsxVWIyOXVUV0YwWlhKcFlXeFFZWEpoYlhOQmMzTnBaMjVJWld4d1pYSWdlMXh1SUNCd2NtbDJZWFJsSUhKbFlXUnZibXg1SUY5d1lYSnpaWEk2SUVkTVZFWlFZWEp6WlhJN1hHNGdJSEJ5YVhaaGRHVWdYMjFoZEdWeWFXRnNVR0Z5WVcxek9pQk5WRzl2YmsxaGRHVnlhV0ZzVUdGeVlXMWxkR1Z5Y3p0Y2JpQWdjSEpwZG1GMFpTQmZjR1Z1WkdsdVozTTZJRkJ5YjIxcGMyVThZVzU1UGx0ZE8xeHVYRzRnSUhCMVlteHBZeUJuWlhRZ2NHVnVaR2x1WnlncE9pQlFjbTl0YVhObFBIVnVhMjV2ZDI0K0lIdGNiaUFnSUNCeVpYUjFjbTRnVUhKdmJXbHpaUzVoYkd3b2RHaHBjeTVmY0dWdVpHbHVaM01wTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdOdmJuTjBjblZqZEc5eUtIQmhjbk5sY2pvZ1IweFVSbEJoY25ObGNpd2diV0YwWlhKcFlXeFFZWEpoYlhNNklFMVViMjl1VFdGMFpYSnBZV3hRWVhKaGJXVjBaWEp6S1NCN1hHNGdJQ0FnZEdocGN5NWZjR0Z5YzJWeUlEMGdjR0Z5YzJWeU8xeHVJQ0FnSUhSb2FYTXVYMjFoZEdWeWFXRnNVR0Z5WVcxeklEMGdiV0YwWlhKcFlXeFFZWEpoYlhNN1hHNGdJQ0FnZEdocGN5NWZjR1Z1WkdsdVozTWdQU0JiWFR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCaGMzTnBaMjVRY21sdGFYUnBkbVU4VkNCbGVIUmxibVJ6SUd0bGVXOW1JRTFVYjI5dVRXRjBaWEpwWVd4UVlYSmhiV1YwWlhKelBpaHJaWGs2SUZRc0lIWmhiSFZsT2lCTlZHOXZiazFoZEdWeWFXRnNVR0Z5WVcxbGRHVnljMXRVWFNrNklIWnZhV1FnZTF4dUlDQWdJR2xtSUNoMllXeDFaU0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0IwYUdsekxsOXRZWFJsY21saGJGQmhjbUZ0YzF0clpYbGRJRDBnZG1Gc2RXVTdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHRnpjMmxuYmtOdmJHOXlQRlFnWlhoMFpXNWtjeUJyWlhsdlppQk5WRzl2YmsxaGRHVnlhV0ZzVUdGeVlXMWxkR1Z5Y3o0b1hHNGdJQ0FnYTJWNU9pQlVMRnh1SUNBZ0lIWmhiSFZsT2lCdWRXMWlaWEpiWFNCOElIVnVaR1ZtYVc1bFpDeGNiaUFnSUNCamIyNTJaWEowVTFKSFFsUnZUR2x1WldGeVB6b2dZbTl2YkdWaGJpeGNiaUFnS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdhV1lnS0haaGJIVmxJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSFJvYVhNdVgyMWhkR1Z5YVdGc1VHRnlZVzF6VzJ0bGVWMGdQU0J1WlhjZ1ZFaFNSVVV1UTI5c2IzSW9LUzVtY205dFFYSnlZWGtvZG1Gc2RXVXBPMXh1WEc0Z0lDQWdJQ0JwWmlBb1kyOXVkbVZ5ZEZOU1IwSlViMHhwYm1WaGNpa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxsOXRZWFJsY21saGJGQmhjbUZ0YzF0clpYbGRMbU52Ym5abGNuUlRVa2RDVkc5TWFXNWxZWElvS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWVhONWJtTWdZWE56YVdkdVZHVjRkSFZ5WlR4VUlHVjRkR1Z1WkhNZ2EyVjViMllnVFZSdmIyNU5ZWFJsY21saGJGQmhjbUZ0WlhSbGNuTStLRnh1SUNBZ0lHdGxlVG9nVkN4Y2JpQWdJQ0IwWlhoMGRYSmxPaUI3SUdsdVpHVjRPaUJ1ZFcxaVpYSWdmU0I4SUhWdVpHVm1hVzVsWkN4Y2JpQWdJQ0JwYzBOdmJHOXlWR1Y0ZEhWeVpUb2dZbTl2YkdWaGJpeGNiaUFnS1RvZ1VISnZiV2x6WlR4MmIybGtQaUI3WEc0Z0lDQWdZMjl1YzNRZ2NISnZiV2x6WlNBOUlDaGhjM2x1WXlBb0tTQTlQaUI3WEc0Z0lDQWdJQ0JwWmlBb2RHVjRkSFZ5WlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lHRjNZV2wwSUhSb2FYTXVYM0JoY25ObGNpNWhjM05wWjI1VVpYaDBkWEpsS0hSb2FYTXVYMjFoZEdWeWFXRnNVR0Z5WVcxekxDQnJaWGtzSUhSbGVIUjFjbVVwTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2hwYzBOdmJHOXlWR1Y0ZEhWeVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhObGRGUmxlSFIxY21WRGIyeHZjbE53WVdObEtIUm9hWE11WDIxaGRHVnlhV0ZzVUdGeVlXMXpXMnRsZVYwc0lDZHpjbWRpSnlrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOUtTZ3BPMXh1WEc0Z0lDQWdkR2hwY3k1ZmNHVnVaR2x1WjNNdWNIVnphQ2h3Y205dGFYTmxLVHRjYmx4dUlDQWdJSEpsZEhWeWJpQndjbTl0YVhObE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHRnplVzVqSUdGemMybG5ibFJsZUhSMWNtVkNlVWx1WkdWNFBGUWdaWGgwWlc1a2N5QnJaWGx2WmlCTlZHOXZiazFoZEdWeWFXRnNVR0Z5WVcxbGRHVnljejRvWEc0Z0lDQWdhMlY1T2lCVUxGeHVJQ0FnSUhSbGVIUjFjbVZKYm1SbGVEb2diblZ0WW1WeUlId2dkVzVrWldacGJtVmtMRnh1SUNBZ0lHbHpRMjlzYjNKVVpYaDBkWEpsT2lCaWIyOXNaV0Z1TEZ4dUlDQXBPaUJRY205dGFYTmxQSFp2YVdRK0lIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWhjM05wWjI1VVpYaDBkWEpsS0d0bGVTd2dkR1Y0ZEhWeVpVbHVaR1Y0SUNFOUlHNTFiR3dnUHlCN0lHbHVaR1Y0T2lCMFpYaDBkWEpsU1c1a1pYZ2dmU0E2SUhWdVpHVm1hVzVsWkN3Z2FYTkRiMnh2Y2xSbGVIUjFjbVVwTzF4dUlDQjlYRzU5WEc0aUxDSnBiWEJ2Y25RZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1cGJYQnZjblFnS2lCaGN5QldNVTFVYjI5dVUyTm9aVzFoSUdaeWIyMGdKMEJ3YVhocGRpOTBlWEJsY3kxMmNtMWpMVzFoZEdWeWFXRnNjeTF0ZEc5dmJpMHhMakFuTzF4dWFXMXdiM0owSUhSNWNHVWdleUJIVEZSR0xDQkhURlJHVEc5aFpHVnlVR3gxWjJsdUxDQkhURlJHVUdGeWMyVnlJSDBnWm5KdmJTQW5kR2h5WldVdlpYaGhiWEJzWlhNdmFuTnRMMnh2WVdSbGNuTXZSMHhVUmt4dllXUmxjaTVxY3ljN1hHNXBiWEJ2Y25RZ2V5Qk5WRzl2YmsxaGRHVnlhV0ZzSUgwZ1puSnZiU0FuTGk5TlZHOXZiazFoZEdWeWFXRnNKenRjYm1sdGNHOXlkQ0IwZVhCbElIc2dUVlJ2YjI1TllYUmxjbWxoYkZCaGNtRnRaWFJsY25NZ2ZTQm1jbTl0SUNjdUwwMVViMjl1VFdGMFpYSnBZV3hRWVhKaGJXVjBaWEp6Snp0Y2JtbHRjRzl5ZENCN0lFMVViMjl1VFdGMFpYSnBZV3hQZFhSc2FXNWxWMmxrZEdoTmIyUmxJSDBnWm5KdmJTQW5MaTlOVkc5dmJrMWhkR1Z5YVdGc1QzVjBiR2x1WlZkcFpIUm9UVzlrWlNjN1hHNXBiWEJ2Y25RZ2V5QkhURlJHVFZSdmIyNU5ZWFJsY21saGJGQmhjbUZ0YzBGemMybG5ia2hsYkhCbGNpQjlJR1p5YjIwZ0p5NHZSMHhVUmsxVWIyOXVUV0YwWlhKcFlXeFFZWEpoYlhOQmMzTnBaMjVJWld4d1pYSW5PMXh1YVcxd2IzSjBJSHNnVFZSdmIyNU5ZWFJsY21saGJFeHZZV1JsY2xCc2RXZHBiazl3ZEdsdmJuTWdmU0JtY205dElDY3VMMDFVYjI5dVRXRjBaWEpwWVd4TWIyRmtaWEpRYkhWbmFXNVBjSFJwYjI1ekp6dGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1RWUnZiMjVOWVhSbGNtbGhiRVJsWW5WblRXOWtaU0I5SUdaeWIyMGdKeTR2VFZSdmIyNU5ZWFJsY21saGJFUmxZblZuVFc5a1pTYzdYRzVwYlhCdmNuUWdleUJIVEZSR0lHRnpJRWRNVkVaVFkyaGxiV0VnZlNCbWNtOXRJQ2RBWjJ4MFppMTBjbUZ1YzJadmNtMHZZMjl5WlNjN1hHNWNiaThxS2x4dUlDb2dVRzl6YzJsaWJHVWdjM0JsWXlCMlpYSnphVzl1Y3lCcGRDQnlaV052WjI1cGVtVnpMbHh1SUNvdlhHNWpiMjV6ZENCUVQxTlRTVUpNUlY5VFVFVkRYMVpGVWxOSlQwNVRJRDBnYm1WM0lGTmxkQ2hiSnpFdU1DY3NJQ2N4TGpBdFltVjBZU2RkS1R0Y2JseHVaWGh3YjNKMElHTnNZWE56SUUxVWIyOXVUV0YwWlhKcFlXeE1iMkZrWlhKUWJIVm5hVzRnYVcxd2JHVnRaVzUwY3lCSFRGUkdURzloWkdWeVVHeDFaMmx1SUh0Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCRldGUkZUbE5KVDA1ZlRrRk5SU0E5SUNkV1VrMURYMjFoZEdWeWFXRnNjMTl0ZEc5dmJpYzdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUm9hWE1nZG1Gc2RXVWdkMmxzYkNCaVpTQmhaR1JsWkNCMGJ5QmdjbVZ1WkdWeVQzSmtaWEpnSUc5bUlHVjJaWEo1SUcxbGMyaGxjeUIzYUc4Z2FHRjJaU0JOWVhSbGNtbGhiSE5OVkc5dmJpNWNiaUFnSUNvZ1ZHaGxJR1pwYm1Gc0lISmxibVJsY2s5eVpHVnlJSGRwYkd3Z1ltVWdjM1Z0SUc5bUlIUm9hWE1nWUhKbGJtUmxjazl5WkdWeVQyWm1jMlYwWUNCaGJtUWdZSEpsYm1SbGNsRjFaWFZsVDJabWMyVjBUblZ0WW1WeVlDQm1iM0lnWldGamFDQnRZWFJsY21saGJITXVYRzRnSUNBcUlHQXdZQ0JpZVNCa1pXWmhkV3gwTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhKbGJtUmxjazl5WkdWeVQyWm1jMlYwT2lCdWRXMWlaWEk3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlhKbElHbHpJR0VnYkdsdVpTQnZaaUIwYUdVZ2MyaGhaR1Z5SUdOaGJHeGxaQ0JjSW1OdmJXMWxiblFnYjNWMElHbG1JSGx2ZFNCM1lXNTBJSFJ2SUZCQ1VpQmhZbk52YkhWMFpXeDVYQ0lnYVc0Z1ZsSk5NQzR3SUUxVWIyOXVMbHh1SUNBZ0tpQlhhR1Z1SUhSb2FYTWdhWE1nZEhKMVpTd2dkR2hsSUcxaGRHVnlhV0ZzSUdWdVlXSnNaWE1nZEdobElHeHBibVVnZEc4Z2JXRnJaU0JwZENCamIyMXdZWFJwWW14bElIZHBkR2dnZEdobElHeGxaMkZqZVNCeVpXNWtaWEpwYm1jZ2IyWWdWbEpOTGx4dUlDQWdLaUJWYzNWaGJHeDVJRzV2ZENCeVpXTnZiVzFsYm1SbFpDQjBieUIwZFhKdUlIUm9hWE1nYjI0dVhHNGdJQ0FxSUdCbVlXeHpaV0FnWW5rZ1pHVm1ZWFZzZEM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCMk1FTnZiWEJoZEZOb1lXUmxPaUJpYjI5c1pXRnVPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkVaV0oxWnlCdGIyUmxJR1p2Y2lCMGFHVWdiV0YwWlhKcFlXd3VYRzRnSUNBcUlGbHZkU0JqWVc0Z2RtbHpkV0ZzYVhwbElITmxkbVZ5WVd3Z1kyOXRjRzl1Wlc1MGN5Qm1iM0lnWkdsaFoyNXZjMmx6SUhWemFXNW5JR1JsWW5WbklHMXZaR1V1WEc0Z0lDQXFYRzRnSUNBcUlGTmxaVG9nZTBCc2FXNXJJRTFVYjI5dVRXRjBaWEpwWVd4RVpXSjFaMDF2WkdWOVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1pHVmlkV2ROYjJSbE9pQk5WRzl2YmsxaGRHVnlhV0ZzUkdWaWRXZE5iMlJsTzF4dVhHNGdJSEIxWW14cFl5QnlaV0ZrYjI1c2VTQndZWEp6WlhJNklFZE1WRVpRWVhKelpYSTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFeHZZV1JsWkNCdFlYUmxjbWxoYkhNZ2QybHNiQ0JpWlNCemRHOXlaV1FnYVc0Z2RHaHBjeUJ6WlhRdVhHNGdJQ0FxSUZkcGJHd2dZbVVnZEhKaGJuTm1aWEp5WldRZ2FXNTBieUJnWjJ4MFppNTFjMlZ5UkdGMFlTNTJjbTFOVkc5dmJrMWhkR1Z5YVdGc2MyQWdhVzRnZTBCc2FXNXJJR0ZtZEdWeVVtOXZkSDB1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUhKbFlXUnZibXg1SUY5dFZHOXZiazFoZEdWeWFXRnNVMlYwT2lCVFpYUThUVlJ2YjI1TllYUmxjbWxoYkQ0N1hHNWNiaUFnY0hWaWJHbGpJR2RsZENCdVlXMWxLQ2s2SUhOMGNtbHVaeUI3WEc0Z0lDQWdjbVYwZFhKdUlFMVViMjl1VFdGMFpYSnBZV3hNYjJGa1pYSlFiSFZuYVc0dVJWaFVSVTVUU1U5T1gwNUJUVVU3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2NHRnljMlZ5T2lCSFRGUkdVR0Z5YzJWeUxDQnZjSFJwYjI1ek9pQk5WRzl2YmsxaGRHVnlhV0ZzVEc5aFpHVnlVR3gxWjJsdVQzQjBhVzl1Y3lBOUlIdDlLU0I3WEc0Z0lDQWdkR2hwY3k1d1lYSnpaWElnUFNCd1lYSnpaWEk3WEc1Y2JpQWdJQ0IwYUdsekxuSmxibVJsY2s5eVpHVnlUMlptYzJWMElEMGdiM0IwYVc5dWN5NXlaVzVrWlhKUGNtUmxjazltWm5ObGRDQS9QeUF3TzF4dUlDQWdJSFJvYVhNdWRqQkRiMjF3WVhSVGFHRmtaU0E5SUc5d2RHbHZibk11ZGpCRGIyMXdZWFJUYUdGa1pTQS9QeUJtWVd4elpUdGNiaUFnSUNCMGFHbHpMbVJsWW5WblRXOWtaU0E5SUc5d2RHbHZibk11WkdWaWRXZE5iMlJsSUQ4L0lDZHViMjVsSnp0Y2JseHVJQ0FnSUhSb2FYTXVYMjFVYjI5dVRXRjBaWEpwWVd4VFpYUWdQU0J1WlhjZ1UyVjBLQ2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWVhONWJtTWdZbVZtYjNKbFVtOXZkQ2dwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQjBhR2x6TGw5eVpXMXZkbVZWYm14cGRFVjRkR1Z1YzJsdmJrbG1UVlJ2YjI1RmVHbHpkSE1vS1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCaGMzbHVZeUJoWm5SbGNsSnZiM1FvWjJ4MFpqb2dSMHhVUmlrNklGQnliMjFwYzJVOGRtOXBaRDRnZTF4dUlDQWdJR2RzZEdZdWRYTmxja1JoZEdFdWRuSnRUVlJ2YjI1TllYUmxjbWxoYkhNZ1BTQkJjbkpoZVM1bWNtOXRLSFJvYVhNdVgyMVViMjl1VFdGMFpYSnBZV3hUWlhRcE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHZGxkRTFoZEdWeWFXRnNWSGx3WlNodFlYUmxjbWxoYkVsdVpHVjRPaUJ1ZFcxaVpYSXBPaUIwZVhCbGIyWWdWRWhTUlVVdVRXRjBaWEpwWVd3Z2ZDQnVkV3hzSUh0Y2JpQWdJQ0JqYjI1emRDQjJNVVY0ZEdWdWMybHZiaUE5SUhSb2FYTXVYMmRsZEUxVWIyOXVSWGgwWlc1emFXOXVLRzFoZEdWeWFXRnNTVzVrWlhncE8xeHVJQ0FnSUdsbUlDaDJNVVY0ZEdWdWMybHZiaWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRTFVYjI5dVRXRjBaWEpwWVd3N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1pYaDBaVzVrVFdGMFpYSnBZV3hRWVhKaGJYTW9iV0YwWlhKcFlXeEpibVJsZURvZ2JuVnRZbVZ5TENCdFlYUmxjbWxoYkZCaGNtRnRjem9nVFZSdmIyNU5ZWFJsY21saGJGQmhjbUZ0WlhSbGNuTXBPaUJRY205dGFYTmxQR0Z1ZVQ0Z2ZDQnVkV3hzSUh0Y2JpQWdJQ0JqYjI1emRDQmxlSFJsYm5OcGIyNGdQU0IwYUdsekxsOW5aWFJOVkc5dmJrVjRkR1Z1YzJsdmJpaHRZWFJsY21saGJFbHVaR1Y0S1R0Y2JpQWdJQ0JwWmlBb1pYaDBaVzV6YVc5dUtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVmWlhoMFpXNWtUV0YwWlhKcFlXeFFZWEpoYlhNb1pYaDBaVzV6YVc5dUxDQnRZWFJsY21saGJGQmhjbUZ0Y3lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1lYTjVibU1nYkc5aFpFMWxjMmdvYldWemFFbHVaR1Y0T2lCdWRXMWlaWElwT2lCUWNtOXRhWE5sUEZSSVVrVkZMa2R5YjNWd0lId2dWRWhTUlVVdVRXVnphQ0I4SUZSSVVrVkZMbE5yYVc1dVpXUk5aWE5vUGlCN1hHNGdJQ0FnWTI5dWMzUWdjR0Z5YzJWeUlEMGdkR2hwY3k1d1lYSnpaWEk3WEc0Z0lDQWdZMjl1YzNRZ2FuTnZiaUE5SUhCaGNuTmxjaTVxYzI5dUlHRnpJRWRNVkVaVFkyaGxiV0V1U1VkTVZFWTdYRzVjYmlBZ0lDQmpiMjV6ZENCdFpYTm9SR1ZtSUQwZ2FuTnZiaTV0WlhOb1pYTS9MbHR0WlhOb1NXNWtaWGhkTzF4dVhHNGdJQ0FnYVdZZ0tHMWxjMmhFWldZZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0Z4dUlDQWdJQ0FnSUNCZ1RWUnZiMjVOWVhSbGNtbGhiRXh2WVdSbGNsQnNkV2RwYmpvZ1FYUjBaVzF3ZENCMGJ5QjFjMlVnYldWemFHVnpXeVI3YldWemFFbHVaR1Y0ZlYwZ2IyWWdaMnhVUmlCaWRYUWdkR2hsSUcxbGMyZ2daRzlsYzI0bmRDQmxlR2x6ZEdBc1hHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJSEJ5YVcxcGRHbDJaWE5FWldZZ1BTQnRaWE5vUkdWbUxuQnlhVzFwZEdsMlpYTTdYRzVjYmlBZ0lDQmpiMjV6ZENCdFpYTm9UM0pIY205MWNDQTlJR0YzWVdsMElIQmhjbk5sY2k1c2IyRmtUV1Z6YUNodFpYTm9TVzVrWlhncE8xeHVYRzRnSUNBZ2FXWWdLSEJ5YVcxcGRHbDJaWE5FWldZdWJHVnVaM1JvSUQwOVBTQXhLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnRaWE5vSUQwZ2JXVnphRTl5UjNKdmRYQWdZWE1nVkVoU1JVVXVUV1Z6YUR0Y2JpQWdJQ0FnSUdOdmJuTjBJRzFoZEdWeWFXRnNTVzVrWlhnZ1BTQndjbWx0YVhScGRtVnpSR1ZtV3pCZExtMWhkR1Z5YVdGc08xeHVYRzRnSUNBZ0lDQnBaaUFvYldGMFpYSnBZV3hKYm1SbGVDQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdVgzTmxkSFZ3VUhKcGJXbDBhWFpsS0cxbGMyZ3NJRzFoZEdWeWFXRnNTVzVrWlhncE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQm5jbTkxY0NBOUlHMWxjMmhQY2tkeWIzVndJR0Z6SUZSSVVrVkZMa2R5YjNWd08xeHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQndjbWx0YVhScGRtVnpSR1ZtTG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHMWxjMmdnUFNCbmNtOTFjQzVqYUdsc1pISmxibHRwWFNCaGN5QlVTRkpGUlM1TlpYTm9PMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnRZWFJsY21saGJFbHVaR1Y0SUQwZ2NISnBiV2wwYVhabGMwUmxabHRwWFM1dFlYUmxjbWxoYkR0Y2JseHVJQ0FnSUNBZ0lDQnBaaUFvYldGMFpYSnBZV3hKYm1SbGVDQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NWZjMlYwZFhCUWNtbHRhWFJwZG1Vb2JXVnphQ3dnYldGMFpYSnBZV3hKYm1SbGVDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2JXVnphRTl5UjNKdmRYQTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUkdWc1pYUmxJSFZ6WlNCdlppQmdTMGhTWDIxaGRHVnlhV0ZzYzE5MWJteHBkR0FnWm5KdmJTQnBkSE1nWUcxaGRHVnlhV0ZzYzJBZ2FXWWdkR2hsSUcxaGRHVnlhV0ZzSUdseklIVnphVzVuSUUxVWIyOXVMbHh1SUNBZ0tseHVJQ0FnS2lCVGFXNWpaU0JIVEZSR1RHOWhaR1Z5SUdoaGRtVWdjMjhnYldGdWVTQm9ZWEprWTI5a1pXUWdjSEp2WTJWa2RYSmxJSEpsYkdGMFpXUWdkRzhnWUV0SVVsOXRZWFJsY21saGJITmZkVzVzYVhSZ1hHNGdJQ0FxSUhkbElHaGhkbVVnZEc4Z1pHVnNaWFJsSUhSb1pTQmxlSFJsYm5OcGIyNGdZbVZtYjNKbElIZGxJSE4wWVhKMElIUnZJSEJoY25ObElIUm9aU0JuYkZSR0xseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmZjbVZ0YjNabFZXNXNhWFJGZUhSbGJuTnBiMjVKWmsxVWIyOXVSWGhwYzNSektDazZJSFp2YVdRZ2UxeHVJQ0FnSUdOdmJuTjBJSEJoY25ObGNpQTlJSFJvYVhNdWNHRnljMlZ5TzF4dUlDQWdJR052Ym5OMElHcHpiMjRnUFNCd1lYSnpaWEl1YW5OdmJpQmhjeUJIVEZSR1UyTm9aVzFoTGtsSFRGUkdPMXh1WEc0Z0lDQWdZMjl1YzNRZ2JXRjBaWEpwWVd4RVpXWnpJRDBnYW5OdmJpNXRZWFJsY21saGJITTdYRzRnSUNBZ2JXRjBaWEpwWVd4RVpXWnpQeTV0WVhBb0tHMWhkR1Z5YVdGc1JHVm1MQ0JwVFdGMFpYSnBZV3dwSUQwK0lIdGNiaUFnSUNBZ0lHTnZibk4wSUdWNGRHVnVjMmx2YmlBOUlIUm9hWE11WDJkbGRFMVViMjl1UlhoMFpXNXphVzl1S0dsTllYUmxjbWxoYkNrN1hHNWNiaUFnSUNBZ0lHbG1JQ2hsZUhSbGJuTnBiMjRnSmlZZ2JXRjBaWEpwWVd4RVpXWXVaWGgwWlc1emFXOXVjejh1V3lkTFNGSmZiV0YwWlhKcFlXeHpYM1Z1YkdsMEoxMHBJSHRjYmlBZ0lDQWdJQ0FnWkdWc1pYUmxJRzFoZEdWeWFXRnNSR1ZtTG1WNGRHVnVjMmx2Ym5OYkowdElVbDl0WVhSbGNtbGhiSE5mZFc1c2FYUW5YVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWDJkbGRFMVViMjl1UlhoMFpXNXphVzl1S0cxaGRHVnlhV0ZzU1c1a1pYZzZJRzUxYldKbGNpazZJRll4VFZSdmIyNVRZMmhsYldFdVZsSk5RMDFoZEdWeWFXRnNjMDFVYjI5dUlId2dkVzVrWldacGJtVmtJSHRjYmlBZ0lDQmpiMjV6ZENCd1lYSnpaWElnUFNCMGFHbHpMbkJoY25ObGNqdGNiaUFnSUNCamIyNXpkQ0JxYzI5dUlEMGdjR0Z5YzJWeUxtcHpiMjRnWVhNZ1IweFVSbE5qYUdWdFlTNUpSMHhVUmp0Y2JseHVJQ0FnSUdOdmJuTjBJRzFoZEdWeWFXRnNSR1ZtSUQwZ2FuTnZiaTV0WVhSbGNtbGhiSE0vTGx0dFlYUmxjbWxoYkVsdVpHVjRYVHRjYmx4dUlDQWdJR2xtSUNodFlYUmxjbWxoYkVSbFppQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQmpiMjV6YjJ4bExuZGhjbTRvWEc0Z0lDQWdJQ0FnSUdCTlZHOXZiazFoZEdWeWFXRnNURzloWkdWeVVHeDFaMmx1T2lCQmRIUmxiWEIwSUhSdklIVnpaU0J0WVhSbGNtbGhiSE5iSkh0dFlYUmxjbWxoYkVsdVpHVjRmVjBnYjJZZ1oyeFVSaUJpZFhRZ2RHaGxJRzFoZEdWeWFXRnNJR1J2WlhOdUozUWdaWGhwYzNSZ0xGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCMWJtUmxabWx1WldRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdaWGgwWlc1emFXOXVJRDBnYldGMFpYSnBZV3hFWldZdVpYaDBaVzV6YVc5dWN6OHVXMDFVYjI5dVRXRjBaWEpwWVd4TWIyRmtaWEpRYkhWbmFXNHVSVmhVUlU1VFNVOU9YMDVCVFVWZElHRnpYRzRnSUNBZ0lDQjhJRll4VFZSdmIyNVRZMmhsYldFdVZsSk5RMDFoZEdWeWFXRnNjMDFVYjI5dVhHNGdJQ0FnSUNCOElIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCcFppQW9aWGgwWlc1emFXOXVJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnYzNCbFkxWmxjbk5wYjI0Z1BTQmxlSFJsYm5OcGIyNHVjM0JsWTFabGNuTnBiMjQ3WEc0Z0lDQWdhV1lnS0NGUVQxTlRTVUpNUlY5VFVFVkRYMVpGVWxOSlQwNVRMbWhoY3loemNHVmpWbVZ5YzJsdmJpa3BJSHRjYmlBZ0lDQWdJR052Ym5OdmJHVXVkMkZ5YmloY2JpQWdJQ0FnSUNBZ1lFMVViMjl1VFdGMFpYSnBZV3hNYjJGa1pYSlFiSFZuYVc0NklGVnVhMjV2ZDI0Z0pIdE5WRzl2YmsxaGRHVnlhV0ZzVEc5aFpHVnlVR3gxWjJsdUxrVllWRVZPVTBsUFRsOU9RVTFGZlNCemNHVmpWbVZ5YzJsdmJpQmNJaVI3YzNCbFkxWmxjbk5wYjI1OVhDSmdMRnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUdWNGRHVnVjMmx2Ymp0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1lYTjVibU1nWDJWNGRHVnVaRTFoZEdWeWFXRnNVR0Z5WVcxektGeHVJQ0FnSUdWNGRHVnVjMmx2YmpvZ1ZqRk5WRzl2YmxOamFHVnRZUzVXVWsxRFRXRjBaWEpwWVd4elRWUnZiMjRzWEc0Z0lDQWdiV0YwWlhKcFlXeFFZWEpoYlhNNklFMVViMjl1VFdGMFpYSnBZV3hRWVhKaGJXVjBaWEp6TEZ4dUlDQXBPaUJRY205dGFYTmxQSFp2YVdRK0lIdGNiaUFnSUNBdkx5QlNaVzF2ZG1sdVp5QnRZWFJsY21saGJDQndZWEpoYlhNZ2RHaGhkQ0JwY3lCdWIzUWdjbVZ4ZFdseVpXUWdkRzhnYzNWd2NtVnpjeUIzWVhKdWFXNW5jeTVjYmlBZ0lDQmtaV3hsZEdVZ0tHMWhkR1Z5YVdGc1VHRnlZVzF6SUdGeklGUklVa1ZGTGsxbGMyaFRkR0Z1WkdGeVpFMWhkR1Z5YVdGc1VHRnlZVzFsZEdWeWN5a3ViV1YwWVd4dVpYTnpPMXh1SUNBZ0lHUmxiR1YwWlNBb2JXRjBaWEpwWVd4UVlYSmhiWE1nWVhNZ1ZFaFNSVVV1VFdWemFGTjBZVzVrWVhKa1RXRjBaWEpwWVd4UVlYSmhiV1YwWlhKektTNXliM1ZuYUc1bGMzTTdYRzVjYmlBZ0lDQmpiMjV6ZENCaGMzTnBaMjVJWld4d1pYSWdQU0J1WlhjZ1IweFVSazFVYjI5dVRXRjBaWEpwWVd4UVlYSmhiWE5CYzNOcFoyNUlaV3h3WlhJb2RHaHBjeTV3WVhKelpYSXNJRzFoZEdWeWFXRnNVR0Z5WVcxektUdGNibHh1SUNBZ0lHRnpjMmxuYmtobGJIQmxjaTVoYzNOcFoyNVFjbWx0YVhScGRtVW9KM1J5WVc1emNHRnlaVzUwVjJsMGFGcFhjbWwwWlNjc0lHVjRkR1Z1YzJsdmJpNTBjbUZ1YzNCaGNtVnVkRmRwZEdoYVYzSnBkR1VwTzF4dUlDQWdJR0Z6YzJsbmJraGxiSEJsY2k1aGMzTnBaMjVEYjJ4dmNpZ25jMmhoWkdWRGIyeHZja1poWTNSdmNpY3NJR1Y0ZEdWdWMybHZiaTV6YUdGa1pVTnZiRzl5Um1GamRHOXlLVHRjYmlBZ0lDQmhjM05wWjI1SVpXeHdaWEl1WVhOemFXZHVWR1Y0ZEhWeVpTZ25jMmhoWkdWTmRXeDBhWEJzZVZSbGVIUjFjbVVuTENCbGVIUmxibk5wYjI0dWMyaGhaR1ZOZFd4MGFYQnNlVlJsZUhSMWNtVXNJSFJ5ZFdVcE8xeHVJQ0FnSUdGemMybG5ia2hsYkhCbGNpNWhjM05wWjI1UWNtbHRhWFJwZG1Vb0ozTm9ZV1JwYm1kVGFHbG1kRVpoWTNSdmNpY3NJR1Y0ZEdWdWMybHZiaTV6YUdGa2FXNW5VMmhwWm5SR1lXTjBiM0lwTzF4dUlDQWdJR0Z6YzJsbmJraGxiSEJsY2k1aGMzTnBaMjVVWlhoMGRYSmxLQ2R6YUdGa2FXNW5VMmhwWm5SVVpYaDBkWEpsSnl3Z1pYaDBaVzV6YVc5dUxuTm9ZV1JwYm1kVGFHbG1kRlJsZUhSMWNtVXNJSFJ5ZFdVcE8xeHVJQ0FnSUdGemMybG5ia2hsYkhCbGNpNWhjM05wWjI1UWNtbHRhWFJwZG1Vb0ozTm9ZV1JwYm1kVGFHbG1kRlJsZUhSMWNtVlRZMkZzWlNjc0lHVjRkR1Z1YzJsdmJpNXphR0ZrYVc1blUyaHBablJVWlhoMGRYSmxQeTV6WTJGc1pTazdYRzRnSUNBZ1lYTnphV2R1U0dWc2NHVnlMbUZ6YzJsbmJsQnlhVzFwZEdsMlpTZ25jMmhoWkdsdVoxUnZiMjU1Um1GamRHOXlKeXdnWlhoMFpXNXphVzl1TG5Ob1lXUnBibWRVYjI5dWVVWmhZM1J2Y2lrN1hHNGdJQ0FnWVhOemFXZHVTR1ZzY0dWeUxtRnpjMmxuYmxCeWFXMXBkR2wyWlNnbloybEZjWFZoYkdsNllYUnBiMjVHWVdOMGIzSW5MQ0JsZUhSbGJuTnBiMjR1WjJsRmNYVmhiR2w2WVhScGIyNUdZV04wYjNJcE8xeHVJQ0FnSUdGemMybG5ia2hsYkhCbGNpNWhjM05wWjI1RGIyeHZjaWduYldGMFkyRndSbUZqZEc5eUp5d2daWGgwWlc1emFXOXVMbTFoZEdOaGNFWmhZM1J2Y2lrN1hHNGdJQ0FnWVhOemFXZHVTR1ZzY0dWeUxtRnpjMmxuYmxSbGVIUjFjbVVvSjIxaGRHTmhjRlJsZUhSMWNtVW5MQ0JsZUhSbGJuTnBiMjR1YldGMFkyRndWR1Y0ZEhWeVpTd2dkSEoxWlNrN1hHNGdJQ0FnWVhOemFXZHVTR1ZzY0dWeUxtRnpjMmxuYmtOdmJHOXlLQ2R3WVhKaGJXVjBjbWxqVW1sdFEyOXNiM0pHWVdOMGIzSW5MQ0JsZUhSbGJuTnBiMjR1Y0dGeVlXMWxkSEpwWTFKcGJVTnZiRzl5Um1GamRHOXlLVHRjYmlBZ0lDQmhjM05wWjI1SVpXeHdaWEl1WVhOemFXZHVWR1Y0ZEhWeVpTZ25jbWx0VFhWc2RHbHdiSGxVWlhoMGRYSmxKeXdnWlhoMFpXNXphVzl1TG5KcGJVMTFiSFJwY0d4NVZHVjRkSFZ5WlN3Z2RISjFaU2s3WEc0Z0lDQWdZWE56YVdkdVNHVnNjR1Z5TG1GemMybG5ibEJ5YVcxcGRHbDJaU2duY21sdFRHbG5hSFJwYm1kTmFYaEdZV04wYjNJbkxDQmxlSFJsYm5OcGIyNHVjbWx0VEdsbmFIUnBibWROYVhoR1lXTjBiM0lwTzF4dUlDQWdJR0Z6YzJsbmJraGxiSEJsY2k1aGMzTnBaMjVRY21sdGFYUnBkbVVvSjNCaGNtRnRaWFJ5YVdOU2FXMUdjbVZ6Ym1Wc1VHOTNaWEpHWVdOMGIzSW5MQ0JsZUhSbGJuTnBiMjR1Y0dGeVlXMWxkSEpwWTFKcGJVWnlaWE51Wld4UWIzZGxja1poWTNSdmNpazdYRzRnSUNBZ1lYTnphV2R1U0dWc2NHVnlMbUZ6YzJsbmJsQnlhVzFwZEdsMlpTZ25jR0Z5WVcxbGRISnBZMUpwYlV4cFpuUkdZV04wYjNJbkxDQmxlSFJsYm5OcGIyNHVjR0Z5WVcxbGRISnBZMUpwYlV4cFpuUkdZV04wYjNJcE8xeHVJQ0FnSUdGemMybG5ia2hsYkhCbGNpNWhjM05wWjI1UWNtbHRhWFJwZG1Vb0oyOTFkR3hwYm1WWGFXUjBhRTF2WkdVbkxDQmxlSFJsYm5OcGIyNHViM1YwYkdsdVpWZHBaSFJvVFc5a1pTQmhjeUJOVkc5dmJrMWhkR1Z5YVdGc1QzVjBiR2x1WlZkcFpIUm9UVzlrWlNrN1hHNGdJQ0FnWVhOemFXZHVTR1ZzY0dWeUxtRnpjMmxuYmxCeWFXMXBkR2wyWlNnbmIzVjBiR2x1WlZkcFpIUm9SbUZqZEc5eUp5d2daWGgwWlc1emFXOXVMbTkxZEd4cGJtVlhhV1IwYUVaaFkzUnZjaWs3WEc0Z0lDQWdZWE56YVdkdVNHVnNjR1Z5TG1GemMybG5ibFJsZUhSMWNtVW9KMjkxZEd4cGJtVlhhV1IwYUUxMWJIUnBjR3g1VkdWNGRIVnlaU2NzSUdWNGRHVnVjMmx2Ymk1dmRYUnNhVzVsVjJsa2RHaE5kV3gwYVhCc2VWUmxlSFIxY21Vc0lHWmhiSE5sS1R0Y2JpQWdJQ0JoYzNOcFoyNUlaV3h3WlhJdVlYTnphV2R1UTI5c2IzSW9KMjkxZEd4cGJtVkRiMnh2Y2taaFkzUnZjaWNzSUdWNGRHVnVjMmx2Ymk1dmRYUnNhVzVsUTI5c2IzSkdZV04wYjNJcE8xeHVJQ0FnSUdGemMybG5ia2hsYkhCbGNpNWhjM05wWjI1UWNtbHRhWFJwZG1Vb0oyOTFkR3hwYm1WTWFXZG9kR2x1WjAxcGVFWmhZM1J2Y2ljc0lHVjRkR1Z1YzJsdmJpNXZkWFJzYVc1bFRHbG5hSFJwYm1kTmFYaEdZV04wYjNJcE8xeHVJQ0FnSUdGemMybG5ia2hsYkhCbGNpNWhjM05wWjI1VVpYaDBkWEpsS0NkMWRrRnVhVzFoZEdsdmJrMWhjMnRVWlhoMGRYSmxKeXdnWlhoMFpXNXphVzl1TG5WMlFXNXBiV0YwYVc5dVRXRnphMVJsZUhSMWNtVXNJR1poYkhObEtUdGNiaUFnSUNCaGMzTnBaMjVJWld4d1pYSXVZWE56YVdkdVVISnBiV2wwYVhabEtDZDFka0Z1YVcxaGRHbHZibE5qY205c2JGaFRjR1ZsWkVaaFkzUnZjaWNzSUdWNGRHVnVjMmx2Ymk1MWRrRnVhVzFoZEdsdmJsTmpjbTlzYkZoVGNHVmxaRVpoWTNSdmNpazdYRzRnSUNBZ1lYTnphV2R1U0dWc2NHVnlMbUZ6YzJsbmJsQnlhVzFwZEdsMlpTZ25kWFpCYm1sdFlYUnBiMjVUWTNKdmJHeFpVM0JsWldSR1lXTjBiM0luTENCbGVIUmxibk5wYjI0dWRYWkJibWx0WVhScGIyNVRZM0p2Ykd4WlUzQmxaV1JHWVdOMGIzSXBPMXh1SUNBZ0lHRnpjMmxuYmtobGJIQmxjaTVoYzNOcFoyNVFjbWx0YVhScGRtVW9KM1YyUVc1cGJXRjBhVzl1VW05MFlYUnBiMjVUY0dWbFpFWmhZM1J2Y2ljc0lHVjRkR1Z1YzJsdmJpNTFka0Z1YVcxaGRHbHZibEp2ZEdGMGFXOXVVM0JsWldSR1lXTjBiM0lwTzF4dVhHNGdJQ0FnWVhOemFXZHVTR1ZzY0dWeUxtRnpjMmxuYmxCeWFXMXBkR2wyWlNnbmRqQkRiMjF3WVhSVGFHRmtaU2NzSUhSb2FYTXVkakJEYjIxd1lYUlRhR0ZrWlNrN1hHNGdJQ0FnWVhOemFXZHVTR1ZzY0dWeUxtRnpjMmxuYmxCeWFXMXBkR2wyWlNnblpHVmlkV2ROYjJSbEp5d2dkR2hwY3k1a1pXSjFaMDF2WkdVcE8xeHVYRzRnSUNBZ1lYZGhhWFFnWVhOemFXZHVTR1ZzY0dWeUxuQmxibVJwYm1jN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWR2hwY3lCM2FXeHNJR1J2SUhSM2J5QndjbTlqWlhOelpYTWdkR2hoZENCcGN5QnlaWEYxYVhKbFpDQjBieUJ5Wlc1a1pYSWdUVlJ2YjI0Z2NISnZjR1Z5YkhrdVhHNGdJQ0FxWEc0Z0lDQXFJQzBnVTJWMElISmxibVJsY2lCdmNtUmxjbHh1SUNBZ0tpQXRJRWRsYm1WeVlYUmxJRzkxZEd4cGJtVmNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJRzFsYzJnZ1FTQjBZWEpuWlhRZ1IweFVSaUJ3Y21sdGFYUnBkbVZjYmlBZ0lDb2dRSEJoY21GdElHMWhkR1Z5YVdGc1NXNWtaWGdnVkdobElHMWhkR1Z5YVdGc0lHbHVaR1Y0SUc5bUlIUm9aU0J3Y21sdGFYUnBkbVZjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWDNObGRIVndVSEpwYldsMGFYWmxLRzFsYzJnNklGUklVa1ZGTGsxbGMyZ3NJRzFoZEdWeWFXRnNTVzVrWlhnNklHNTFiV0psY2lrNklIWnZhV1FnZTF4dUlDQWdJR052Ym5OMElHVjRkR1Z1YzJsdmJpQTlJSFJvYVhNdVgyZGxkRTFVYjI5dVJYaDBaVzV6YVc5dUtHMWhkR1Z5YVdGc1NXNWtaWGdwTzF4dUlDQWdJR2xtSUNobGVIUmxibk5wYjI0cElIdGNiaUFnSUNBZ0lHTnZibk4wSUhKbGJtUmxjazl5WkdWeUlEMGdkR2hwY3k1ZmNHRnljMlZTWlc1a1pYSlBjbVJsY2lobGVIUmxibk5wYjI0cE8xeHVJQ0FnSUNBZ2JXVnphQzV5Wlc1a1pYSlBjbVJsY2lBOUlISmxibVJsY2s5eVpHVnlJQ3NnZEdocGN5NXlaVzVrWlhKUGNtUmxjazltWm5ObGREdGNibHh1SUNBZ0lDQWdkR2hwY3k1ZloyVnVaWEpoZEdWUGRYUnNhVzVsS0cxbGMyZ3BPMXh1WEc0Z0lDQWdJQ0IwYUdsekxsOWhaR1JVYjAxaGRHVnlhV0ZzVTJWMEtHMWxjMmdwTzF4dVhHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVkbGJtVnlZWFJsSUc5MWRHeHBibVVnWm05eUlIUm9aU0JuYVhabGJpQnRaWE5vTENCcFppQnBkQ0J1WldWa2N5NWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJRzFsYzJnZ1ZHaGxJSFJoY21kbGRDQnRaWE5vWEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUY5blpXNWxjbUYwWlU5MWRHeHBibVVvYldWemFEb2dWRWhTUlVVdVRXVnphQ2s2SUhadmFXUWdlMXh1SUNBZ0lDOHZJRTlMTENCcGRDZHpJSFJvWlNCb1lXTnJlU0J3WVhKMExseHVJQ0FnSUM4dklGZGxJR0Z5WlNCbmIybHVaeUIwYnlCa2RYQnNhV05oZEdVZ2RHaGxJRTFVYjI5dVRXRjBaWEpwWVd3Z1ptOXlJRzkxZEd4cGJtVWdkWE5sTGx4dUlDQWdJQzh2SUZSb1pXNGdkMlVnWVhKbElHZHZhVzVuSUhSdklHTnlaV0YwWlNCMGQyOGdaMlZ2YldWMGNua2daM0p2ZFhCeklHRnVaQ0J5WldabGNpQnpZVzFsSUdKMVptWmxjaUJpZFhRZ1pHbG1abVZ5Wlc1MElHMWhkR1Z5YVdGc0xseHVJQ0FnSUM4dklFbDBKM01nYUc5M0lIZGxJR1J5WVhjZ2RIZHZJRzFoZEdWeWFXRnNjeUJoZENCdmJtTmxJSFZ6YVc1bklHRWdjMmx1WjJ4bElHMWxjMmd1WEc1Y2JpQWdJQ0F2THlCdFlXdGxJSE4xY21VZ2RHaGxJRzFoZEdWeWFXRnNJR2x6SUcxMGIyOXVYRzRnSUNBZ1kyOXVjM1FnYzNWeVptRmpaVTFoZEdWeWFXRnNJRDBnYldWemFDNXRZWFJsY21saGJEdGNiaUFnSUNCcFppQW9JU2h6ZFhKbVlXTmxUV0YwWlhKcFlXd2dhVzV6ZEdGdVkyVnZaaUJOVkc5dmJrMWhkR1Z5YVdGc0tTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklHTm9aV05ySUhkb1pYUm9aWElnZDJVZ2NtVmhiR3g1SUdoaGRtVWdkRzhnY0hKbGNHRnlaU0J2ZFhSc2FXNWxJRzl5SUc1dmRGeHVJQ0FnSUdsbUlDaHpkWEptWVdObFRXRjBaWEpwWVd3dWIzVjBiR2x1WlZkcFpIUm9UVzlrWlNBOVBUMGdKMjV2Ym1VbklIeDhJSE4xY21aaFkyVk5ZWFJsY21saGJDNXZkWFJzYVc1bFYybGtkR2hHWVdOMGIzSWdQRDBnTUM0d0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z2JXRnJaU0JwZEhNZ2JXRjBaWEpwWVd3Z1lXNGdZWEp5WVhsY2JpQWdJQ0J0WlhOb0xtMWhkR1Z5YVdGc0lEMGdXM04xY21aaFkyVk5ZWFJsY21saGJGMDdJQzh2SUcxbGMyZ3ViV0YwWlhKcFlXd2dhWE1nWjNWaGNtRnVkR1ZsWkNCMGJ5QmlaU0JoSUUxaGRHVnlhV0ZzSUdsdUlFZE1WRVpNYjJGa1pYSmNibHh1SUNBZ0lDOHZJR1IxY0d4cFkyRjBaU0IwYUdVZ2JXRjBaWEpwWVd3Z1ptOXlJRzkxZEd4cGJtVWdkWE5sWEc0Z0lDQWdZMjl1YzNRZ2IzVjBiR2x1WlUxaGRHVnlhV0ZzSUQwZ2MzVnlabUZqWlUxaGRHVnlhV0ZzTG1Oc2IyNWxLQ2s3WEc0Z0lDQWdiM1YwYkdsdVpVMWhkR1Z5YVdGc0xtNWhiV1VnS3owZ0p5QW9UM1YwYkdsdVpTa25PMXh1SUNBZ0lHOTFkR3hwYm1WTllYUmxjbWxoYkM1cGMwOTFkR3hwYm1VZ1BTQjBjblZsTzF4dUlDQWdJRzkxZEd4cGJtVk5ZWFJsY21saGJDNXphV1JsSUQwZ1ZFaFNSVVV1UW1GamExTnBaR1U3WEc0Z0lDQWdiV1Z6YUM1dFlYUmxjbWxoYkM1d2RYTm9LRzkxZEd4cGJtVk5ZWFJsY21saGJDazdYRzVjYmlBZ0lDQXZMeUJ0WVd0bElIUjNieUJuWlc5dFpYUnllU0JuY205MWNITWdiM1YwSUc5bUlHRWdjMkZ0WlNCaWRXWm1aWEpjYmlBZ0lDQmpiMjV6ZENCblpXOXRaWFJ5ZVNBOUlHMWxjMmd1WjJWdmJXVjBjbms3SUM4dklHMWxjMmd1WjJWdmJXVjBjbmtnYVhNZ1ozVmhjbUZ1ZEdWbFpDQjBieUJpWlNCaElFSjFabVpsY2tkbGIyMWxkSEo1SUdsdUlFZE1WRVpNYjJGa1pYSmNiaUFnSUNCamIyNXpkQ0J3Y21sdGFYUnBkbVZXWlhKMGFXTmxjeUE5SUdkbGIyMWxkSEo1TG1sdVpHVjRJRDhnWjJWdmJXVjBjbmt1YVc1a1pYZ3VZMjkxYm5RZ09pQm5aVzl0WlhSeWVTNWhkSFJ5YVdKMWRHVnpMbkJ2YzJsMGFXOXVMbU52ZFc1MElDOGdNenRjYmlBZ0lDQm5aVzl0WlhSeWVTNWhaR1JIY205MWNDZ3dMQ0J3Y21sdGFYUnBkbVZXWlhKMGFXTmxjeXdnTUNrN1hHNGdJQ0FnWjJWdmJXVjBjbmt1WVdSa1IzSnZkWEFvTUN3Z2NISnBiV2wwYVhabFZtVnlkR2xqWlhNc0lERXBPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JmWVdSa1ZHOU5ZWFJsY21saGJGTmxkQ2h0WlhOb09pQlVTRkpGUlM1TlpYTm9LVG9nZG05cFpDQjdYRzRnSUNBZ1kyOXVjM1FnYldGMFpYSnBZV3hQY2sxaGRHVnlhV0ZzY3lBOUlHMWxjMmd1YldGMFpYSnBZV3c3WEc0Z0lDQWdZMjl1YzNRZ2JXRjBaWEpwWVd4VFpYUWdQU0J1WlhjZ1UyVjBQRlJJVWtWRkxrMWhkR1Z5YVdGc1BpZ3BPMXh1WEc0Z0lDQWdhV1lnS0VGeWNtRjVMbWx6UVhKeVlYa29iV0YwWlhKcFlXeFBjazFoZEdWeWFXRnNjeWtwSUh0Y2JpQWdJQ0FnSUcxaGRHVnlhV0ZzVDNKTllYUmxjbWxoYkhNdVptOXlSV0ZqYUNnb2JXRjBaWEpwWVd3cElEMCtJRzFoZEdWeWFXRnNVMlYwTG1Ga1pDaHRZWFJsY21saGJDa3BPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCdFlYUmxjbWxoYkZObGRDNWhaR1FvYldGMFpYSnBZV3hQY2sxaGRHVnlhV0ZzY3lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCdFlYUmxjbWxoYkNCdlppQnRZWFJsY21saGJGTmxkQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tHMWhkR1Z5YVdGc0lHbHVjM1JoYm1ObGIyWWdUVlJ2YjI1TllYUmxjbWxoYkNrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TGw5dFZHOXZiazFoZEdWeWFXRnNVMlYwTG1Ga1pDaHRZWFJsY21saGJDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQmZjR0Z5YzJWU1pXNWtaWEpQY21SbGNpaGxlSFJsYm5OcGIyNDZJRll4VFZSdmIyNVRZMmhsYldFdVZsSk5RMDFoZEdWeWFXRnNjMDFVYjI5dUtUb2diblZ0WW1WeUlIdGNiaUFnSUNBdkx5QjBjbUZ1YzNCaGNtVnVkRmRwZEdoYVYzSnBkR1VnY21GdVoyVnpJR1p5YjIwZ01DQjBieUFyT1Z4dUlDQWdJQzh2SUcxbGNtVWdkSEpoYm5Od1lYSmxiblFnY21GdVoyVnpJR1p5YjIwZ0xUa2dkRzhnTUZ4dUlDQWdJR052Ym5OMElHVnVZV0pzWldSYVYzSnBkR1VnUFNCbGVIUmxibk5wYjI0dWRISmhibk53WVhKbGJuUlhhWFJvV2xkeWFYUmxPMXh1SUNBZ0lISmxkSFZ5YmlBb1pXNWhZbXhsWkZwWGNtbDBaU0EvSURBZ09pQXhPU2tnS3lBb1pYaDBaVzV6YVc5dUxuSmxibVJsY2xGMVpYVmxUMlptYzJWMFRuVnRZbVZ5SUQ4L0lEQXBPMXh1SUNCOVhHNTlYRzRpWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPenRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZ2UjBFN1FVRkRUeXhUUVVGVExGTkJRVk1zUTBGQlF5eFBRVUZQTEVWQlFVVXNWVUZCVlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hUUVVGVExFVkJRVVU3UVVGRE4wUXNTVUZCU1N4VFFVRlRMRXRCUVVzc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJTeFBRVUZQTEV0QlFVc3NXVUZCV1N4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEZWQlFWVXNUMEZCVHl4RlFVRkZMRVZCUVVVc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVN1FVRkRhRWdzU1VGQlNTeFBRVUZQTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zUlVGQlJTeFZRVUZWTEU5QlFVOHNSVUZCUlN4TlFVRk5MRVZCUVVVN1FVRkRMMFFzVVVGQlVTeFRRVUZUTEZOQlFWTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTI1SExGRkJRVkVzVTBGQlV5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTNSSExGRkJRVkVzVTBGQlV5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVVc1RVRkJUU3hEUVVGRExFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUTNSSUxGRkJRVkVzU1VGQlNTeERRVUZETEVOQlFVTXNVMEZCVXl4SFFVRkhMRk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEZWQlFWVXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlF6bEZMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRMUE3T3pzN096dEJRekZJUVR0QlFVVkJPenM3TzBGQlNVYzdRVUZEVlN4TlFVRkJMSE5DUVVGelFpeEhRVUZITzBGQlEzQkRPenRCUVVWSE8wRkJRMGdzU1VGQlFTeEpRVUZKTEVWQlFVVXNUVUZCVFR0QlFVVmFPenRCUVVWSE8wRkJRMGdzU1VGQlFTeE5RVUZOTEVWQlFVVXNVVUZCVVR0QlFVVm9RanM3UVVGRlJ6dEJRVU5JTEVsQlFVRXNXVUZCV1N4RlFVRkZMR05CUVdNN1FVRkZOVUk3TzBGQlJVYzdRVUZEU0N4SlFVRkJMRVZCUVVVc1JVRkJSU3hKUVVGSk96czdRVU14UWxZN1FVRkZZU3hOUVVGQkxEWkNRVUUyUWl4SFFVRkhPMEZCUXpORExFbEJRVUVzU1VGQlNTeEZRVUZGTEUxQlFVMDdRVUZEV2l4SlFVRkJMR2RDUVVGblFpeEZRVUZGTEd0Q1FVRnJRanRCUVVOd1F5eEpRVUZCTEdsQ1FVRnBRaXhGUVVGRkxHMUNRVUZ0UWpzN08wRkRTSGhETEUxQlFVMHNjVUpCUVhGQ0xFZEJRVFpDTzBGQlEzUkVMRWxCUVVFc1NVRkJTU3hGUVVGRkxFVkJRVVU3UVVGRFVpeEpRVUZCTEVsQlFVa3NSVUZCUlN4TlFVRk5PME5CUTJJc1EwRkJRenRCUVVWR096czdPenM3T3p0QlFWRkhPMEZCUTBjc1UwRkJWU3h2UWtGQmIwSXNRMEZCUXl4UFFVRnpRaXhGUVVGQk8wbEJRM3BFTEVsQlFVa3NVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFVkJRVVVzUlVGQlJTeERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZPMUZCUTNaRExFOUJRVThzVDBGQlR5eERRVUZETEZWQlFYbENMRU5CUVVNN1FVRkRNVU1zUzBGQlFUdEJRVUZOTEZOQlFVRTdRVUZEVEN4UlFVRkJMRTlCUVU4c2NVSkJRWEZDTEVOQlFVVXNUMEZCWlN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM3BFTEV0QlFVRTdRVUZEU0RzN1FVTjBRa0U3UVVGVlFUczdPenM3UVVGTFJ6dEJRVU5WTEUxQlFVRXNZVUZCWXl4VFFVRlJMRXRCUVVzc1EwRkJReXhqUVVGakxFTkJRVUU3UVVFMFEzSkVMRWxCUVVFc1NVRkJWeXhMUVVGTExFZEJRVUU3UVVGRFpDeFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETzB0QlEzUkRPMGxCUTBRc1NVRkJWeXhMUVVGTExFTkJRVU1zUzBGQmEwSXNSVUZCUVR0UlFVTnFReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8wdEJRM1pETzBGQlJVUXNTVUZCUVN4SlFVRlhMRWRCUVVjc1IwRkJRVHRCUVVOYUxGRkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU03UzBGRGFFTTdTVUZEUkN4SlFVRlhMRWRCUVVjc1EwRkJReXhMUVVFeVFpeEZRVUZCTzFGQlEzaERMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1MwRkRha003UVVGRlJDeEpRVUZCTEVsQlFWY3NVMEZCVXl4SFFVRkJPMEZCUTJ4Q0xGRkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVU03UzBGRGRFTTdTVUZEUkN4SlFVRlhMRk5CUVZNc1EwRkJReXhMUVVFeVFpeEZRVUZCTzFGQlF6bERMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1MwRkRka003UVVGRlJDeEpRVUZCTEVsQlFWY3NWMEZCVnl4SFFVRkJPMEZCUTNCQ0xGRkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmRCUVZjc1EwRkJReXhMUVVGTExFTkJRVU03UzBGRGVFTTdTVUZEUkN4SlFVRlhMRmRCUVZjc1EwRkJReXhMUVVGdlFpeEZRVUZCTzFGQlEzcERMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVjBGQlZ5eERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1MwRkRla003UVVGRlJDeEpRVUZCTEVsQlFWY3NVVUZCVVN4SFFVRkJPMEZCUTJwQ0xGRkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU03UzBGRGNrTTdTVUZEUkN4SlFVRlhMRkZCUVZFc1EwRkJReXhMUVVGclFpeEZRVUZCTzFGQlEzQkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1MwRkRkRU03UVVGRlJDeEpRVUZCTEVsQlFWY3NhVUpCUVdsQ0xFZEJRVUU3UVVGRE1VSXNVVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1MwRkJTeXhEUVVGRE8wdEJRemxETzBsQlEwUXNTVUZCVnl4cFFrRkJhVUlzUTBGQlF5eExRVUZoTEVWQlFVRTdVVUZEZUVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzB0QlF5OURPMEZCUlVRc1NVRkJRU3hKUVVGWExGZEJRVmNzUjBGQlFUdEJRVU53UWl4UlFVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRPMHRCUTNoRE8wbEJRMFFzU1VGQlZ5eFhRVUZYTEVOQlFVTXNTMEZCTWtJc1JVRkJRVHRSUVVOb1JDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmRCUVZjc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzB0QlEzcERPMEZCUlVRc1NVRkJRU3hKUVVGWExHZENRVUZuUWl4SFFVRkJPMEZCUTNwQ0xGRkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMR2RDUVVGblFpeERRVUZETEV0QlFVc3NRMEZCUXp0TFFVTTNRenRKUVVORUxFbEJRVmNzWjBKQlFXZENMRU5CUVVNc1MwRkJhMElzUlVGQlFUdFJRVU0xUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU03UzBGRE9VTTdRVUZGUkN4SlFVRkJMRWxCUVZjc2IwSkJRVzlDTEVkQlFVRTdRVUZETjBJc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zUzBGQlN5eERRVUZETzB0QlEycEVPMGxCUTBRc1NVRkJWeXh2UWtGQmIwSXNRMEZCUXl4TFFVRXlRaXhGUVVGQk8xRkJRM3BFTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJRenRMUVVOc1JEdEJRVVZFTEVsQlFVRXNTVUZCVnl4clFrRkJhMElzUjBGQlFUdEJRVU16UWl4UlFVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhMUVVGTExFTkJRVU03UzBGREwwTTdTVUZEUkN4SlFVRlhMR3RDUVVGclFpeERRVUZETEV0QlFXRXNSVUZCUVR0UlFVTjZReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdTMEZEYUVRN1FVRkZSQ3hKUVVGQkxFbEJRVmNzYlVKQlFXMUNMRWRCUVVFN1FVRkROVUlzVVVGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNTMEZCU3l4RFFVRkRPMHRCUTJoRU8wbEJRMFFzU1VGQlZ5eHRRa0ZCYlVJc1EwRkJReXhMUVVFeVFpeEZRVUZCTzFGQlEzaEVMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF6dExRVU5xUkR0QlFVVkVMRWxCUVVFc1NVRkJWeXgzUWtGQmQwSXNSMEZCUVR0QlFVTnFReXhSUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eExRVUZMTEVOQlFVTTdTMEZEY2tRN1NVRkRSQ3hKUVVGWExIZENRVUYzUWl4RFFVRkRMRXRCUVdFc1JVRkJRVHRSUVVNdlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMSGRDUVVGM1FpeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1MwRkRkRVE3UVVGRlJDeEpRVUZCTEVsQlFWY3NhMEpCUVd0Q0xFZEJRVUU3UVVGRE0wSXNVVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhEUVVGRE8wdEJReTlETzBsQlEwUXNTVUZCVnl4clFrRkJhMElzUTBGQlF5eExRVUZoTEVWQlFVRTdVVUZEZWtNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzB0QlEyaEVPMEZCUlVRc1NVRkJRU3hKUVVGWExHOUNRVUZ2UWl4SFFVRkJPMEZCUXpkQ0xGRkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRzlDUVVGdlFpeERRVUZETEV0QlFVc3NRMEZCUXp0TFFVTnFSRHRKUVVORUxFbEJRVmNzYjBKQlFXOUNMRU5CUVVNc1MwRkJZU3hGUVVGQk8xRkJRek5ETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJRenRMUVVOc1JEdEJRVVZFTEVsQlFVRXNTVUZCVnl4WlFVRlpMRWRCUVVFN1FVRkRja0lzVVVGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF6dExRVU42UXp0SlFVTkVMRWxCUVZjc1dVRkJXU3hEUVVGRExFdEJRV3RDTEVWQlFVRTdVVUZEZUVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eFpRVUZaTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJRenRMUVVNeFF6dEJRVVZFTEVsQlFVRXNTVUZCVnl4aFFVRmhMRWRCUVVFN1FVRkRkRUlzVVVGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1lVRkJZU3hEUVVGRExFdEJRVXNzUTBGQlF6dExRVU14UXp0SlFVTkVMRWxCUVZjc1lVRkJZU3hEUVVGRExFdEJRVEpDTEVWQlFVRTdVVUZEYkVRc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eGhRVUZoTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJRenRMUVVNelF6dEJRVVZFTEVsQlFVRXNTVUZCVnl4M1FrRkJkMElzUjBGQlFUdEJRVU5xUXl4UlFVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eDNRa0ZCZDBJc1EwRkJReXhMUVVGTExFTkJRVU03UzBGRGNrUTdTVUZEUkN4SlFVRlhMSGRDUVVGM1FpeERRVUZETEV0QlFXdENMRVZCUVVFN1VVRkRjRVFzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMHRCUTNSRU8wRkJSVVFzU1VGQlFTeEpRVUZYTEd0Q1FVRnJRaXhIUVVGQk8wRkJRek5DTEZGQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRXRCUVVzc1EwRkJRenRMUVVNdlF6dEpRVU5FTEVsQlFWY3NhMEpCUVd0Q0xFTkJRVU1zUzBGQk1rSXNSVUZCUVR0UlFVTjJSQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdTMEZEYUVRN1FVRkZSQ3hKUVVGQkxFbEJRVmNzYjBKQlFXOUNMRWRCUVVFN1FVRkROMElzVVVGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTMEZCU3l4RFFVRkRPMHRCUTJwRU8wbEJRMFFzU1VGQlZ5eHZRa0ZCYjBJc1EwRkJReXhMUVVGaExFVkJRVUU3VVVGRE0wTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8wdEJRMnhFTzBGQlJVUXNTVUZCUVN4SlFVRlhMQ3RDUVVFclFpeEhRVUZCTzBGQlEzaERMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEN0Q1FVRXJRaXhEUVVGRExFdEJRVXNzUTBGQlF6dExRVU0xUkR0SlFVTkVMRWxCUVZjc0swSkJRU3RDTEVOQlFVTXNTMEZCWVN4RlFVRkJPMUZCUTNSRUxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNLMEpCUVN0Q0xFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0TFFVTTNSRHRCUVVWRUxFbEJRVUVzU1VGQlZ5eDFRa0ZCZFVJc1IwRkJRVHRCUVVOb1F5eFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4TFFVRkxMRU5CUVVNN1MwRkRjRVE3U1VGRFJDeEpRVUZYTEhWQ1FVRjFRaXhEUVVGRExFdEJRV0VzUlVGQlFUdFJRVU01UXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU03UzBGRGNrUTdRVUZGUkN4SlFVRkJMRWxCUVZjc01rSkJRVEpDTEVkQlFVRTdRVUZEY0VNc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNNa0pCUVRKQ0xFTkJRVU1zUzBGQlN5eERRVUZETzB0QlEzaEVPMGxCUTBRc1NVRkJWeXd5UWtGQk1rSXNRMEZCUXl4TFFVRXlRaXhGUVVGQk8xRkJRMmhGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc01rSkJRVEpDTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJRenRMUVVONlJEdEJRVVZFTEVsQlFVRXNTVUZCVnl4clFrRkJhMElzUjBGQlFUdEJRVU16UWl4UlFVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhMUVVGTExFTkJRVU03UzBGREwwTTdTVUZEUkN4SlFVRlhMR3RDUVVGclFpeERRVUZETEV0QlFXRXNSVUZCUVR0UlFVTjZReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdTMEZEYUVRN1FVRkZSQ3hKUVVGQkxFbEJRVmNzYTBKQlFXdENMRWRCUVVFN1FVRkRNMElzVVVGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNTMEZCU3l4RFFVRkRPMHRCUXk5RE8wbEJRMFFzU1VGQlZ5eHJRa0ZCYTBJc1EwRkJReXhMUVVGclFpeEZRVUZCTzFGQlF6bERMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF6dExRVU5vUkR0QlFVVkVMRWxCUVVFc1NVRkJWeXgzUWtGQmQwSXNSMEZCUVR0QlFVTnFReXhSUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eExRVUZMTEVOQlFVTTdTMEZEY2tRN1NVRkRSQ3hKUVVGWExIZENRVUYzUWl4RFFVRkRMRXRCUVdFc1JVRkJRVHRSUVVNdlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMSGRDUVVGM1FpeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1MwRkRkRVE3UVVGRlJDeEpRVUZCTEVsQlFWY3NjMEpCUVhOQ0xFZEJRVUU3UVVGREwwSXNVVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zYzBKQlFYTkNMRU5CUVVNc1MwRkJTeXhEUVVGRE8wdEJRMjVFTzBsQlEwUXNTVUZCVnl4elFrRkJjMElzUTBGQlF5eExRVUV5UWl4RlFVRkJPMUZCUXpORUxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNjMEpCUVhOQ0xFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0TFFVTndSRHRCUVVWRUxFbEJRVUVzU1VGQlZ5eDNRa0ZCZDBJc1IwRkJRVHRCUVVOcVF5eFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4TFFVRkxMRU5CUVVNN1MwRkRja1E3U1VGRFJDeEpRVUZYTEhkQ1FVRjNRaXhEUVVGRExFdEJRV0VzUlVGQlFUdFJRVU12UXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExIZENRVUYzUWl4RFFVRkRMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU03UzBGRGRFUTdRVUZGUkN4SlFVRkJMRWxCUVZjc2QwSkJRWGRDTEVkQlFVRTdRVUZEYWtNc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNkMEpCUVhkQ0xFTkJRVU1zUzBGQlN5eERRVUZETzB0QlEzSkVPMGxCUTBRc1NVRkJWeXgzUWtGQmQwSXNRMEZCUXl4TFFVRmhMRVZCUVVFN1VVRkRMME1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMHRCUTNSRU8wRkJSVVFzU1VGQlFTeEpRVUZYTEhkQ1FVRjNRaXhIUVVGQk8wRkJRMnBETEZGQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExIZENRVUYzUWl4RFFVRkRMRXRCUVVzc1EwRkJRenRMUVVOeVJEdEpRVU5FTEVsQlFWY3NkMEpCUVhkQ0xFTkJRVU1zUzBGQllTeEZRVUZCTzFGQlF5OURMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zZDBKQlFYZENMRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF6dExRVU4wUkR0QlFYbENSRHM3TzBGQlIwYzdRVUZEU0N4SlFVRkJMRWxCUVZjc2FVSkJRV2xDTEVkQlFVRTdVVUZETVVJc1QwRkJUeXhKUVVGSkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNN1MwRkRhRU03U1VGRFJDeEpRVUZYTEdsQ1FVRnBRaXhEUVVGRExFdEJRV01zUlVGQlFUdEJRVU42UXl4UlFVRkJMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkZhRU1zVVVGQlFTeEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenRMUVVONlFqdEJRVWxFT3pzN096dEJRVXRITzBGQlEwZ3NTVUZCUVN4SlFVRkpMR0ZCUVdFc1IwRkJRVHRSUVVObUxFOUJRVThzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXp0TFFVTTFRanRCUVVWRU96czdPenRCUVV0SE8wbEJRMGdzU1VGQlNTeGhRVUZoTEVOQlFVTXNRMEZCVlN4RlFVRkJPMEZCUXpGQ0xGRkJRVUVzU1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkZlRUlzVVVGQlFTeEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenRMUVVONlFqdEJRVWxFT3pzN096dEJRVXRITzBGQlEwZ3NTVUZCUVN4SlFVRkpMRk5CUVZNc1IwRkJRVHRSUVVOWUxFOUJRVThzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXp0TFFVTjRRanRCUVVWRU96czdPenRCUVV0SE8wbEJRMGdzU1VGQlNTeFRRVUZUTEVOQlFVTXNRMEZCZVVJc1JVRkJRVHRCUVVOeVF5eFJRVUZCTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJSWEJDTEZGQlFVRXNTVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03UzBGRGVrSTdRVUZKUkN4SlFVRkJMRWxCUVVrc1owSkJRV2RDTEVkQlFVRTdVVUZEYkVJc1QwRkJUeXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNN1MwRkRMMEk3U1VGRFJDeEpRVUZKTEdkQ1FVRm5RaXhEUVVGRExFTkJRV2RETEVWQlFVRTdRVUZEYmtRc1VVRkJRU3hKUVVGSkxFTkJRVU1zYVVKQlFXbENMRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJSVE5DTEZGQlFVRXNTVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03UzBGRGVrSTdRVUZKUkN4SlFVRkJMRWxCUVVrc1UwRkJVeXhIUVVGQk8xRkJRMWdzVDBGQlR5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRPMHRCUTNoQ08wbEJRMFFzU1VGQlNTeFRRVUZUTEVOQlFVTXNRMEZCVlN4RlFVRkJPMEZCUTNSQ0xGRkJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkZjRUlzVVVGQlFTeEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenRMUVVONlFqdEJRVVZFT3p0QlFVVkhPMEZCUTBnc1NVRkJRU3hKUVVGWExHVkJRV1VzUjBGQlFUdEJRVU40UWl4UlFVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRE8wdEJRMkk3UVVGRlJDeEpRVUZCTEZkQlFVRXNRMEZCV1N4aFFVRnpReXhGUVVGRkxFVkJRVUU3UVVGRGJFUXNVVUZCUVN4TFFVRkxMRU5CUVVNc1JVRkJSU3haUVVGWkxFVkJRVVVzWTBGQll5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFXeElia01zU1VGQk5rSXNRMEZCUVN3MlFrRkJRU3hIUVVGSExFZEJRVWNzUTBGQlF6dFJRVU53UXl4SlFVRTJRaXhEUVVGQkxEWkNRVUZCTEVkQlFVY3NSMEZCUnl4RFFVRkRPMUZCUTNCRExFbEJRVGhDTEVOQlFVRXNPRUpCUVVFc1IwRkJSeXhIUVVGSExFTkJRVU03UVVGRk5VTTdPenRCUVVkSE8xRkJRMGtzU1VGQlJ5eERRVUZCTEVkQlFVRXNSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkZiRUk3T3pzN1FVRkpSenRCUVVOSkxGRkJRVUVzU1VGQlFTeERRVUZCTEdGQlFXRXNSMEZCUnl4TFFVRkxMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTTdRVUZGYmtRN096dEJRVWRITzFGQlEwc3NTVUZCYTBJc1EwRkJRU3hyUWtGQlFTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFXVXhRaXhKUVVGakxFTkJRVUVzWTBGQlFTeEhRVUZITEV0QlFVc3NRMEZCUXp0QlFYZENka0lzVVVGQlFTeEpRVUZCTEVOQlFVRXNWVUZCVlN4SFFVRXlRaXh6UWtGQmMwSXNRMEZCUXl4SlFVRkpMRU5CUVVNN1FVRjNRbXBGTEZGQlFVRXNTVUZCUVN4RFFVRkJMR2xDUVVGcFFpeEhRVUZyUXl3MlFrRkJOa0lzUTBGQlF5eEpRVUZKTEVOQlFVTTdVVUZYZEVZc1NVRkJWU3hEUVVGQkxGVkJRVUVzUjBGQlJ5eExRVUZMTEVOQlFVTTdPMUZCYzBKNlFpeEpRVUZKTEZWQlFWVXNRMEZCUXl4eFFrRkJjVUlzUlVGQlJUdEJRVU53UXl4WlFVRkJMRlZCUVZVc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETzBGQlF6bENMRk5CUVVFN1VVRkRSQ3hQUVVGUExGVkJRVlVzUTBGQlF5eHhRa0ZCY1VJc1EwRkJRenM3UVVGSGVFTXNVVUZCUVN4VlFVRlZMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF6dEJRVU4wUWl4UlFVRkJMRlZCUVZVc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETzBGQlEzcENMRkZCUVVFc1ZVRkJWU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTTdPenRSUVVrelFpeEpRVUZKTEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlR0WlFVTnlReXhWUVVGclFpeERRVUZETEZGQlFWRXNSMEZCU1N4VlFVRnJRaXhEUVVGRExGRkJRVkVzU1VGQlNTeExRVUZMTEVOQlFVTTdRVUZEZEVVc1UwRkJRVHM3TzFGQlNVUXNTVUZCU1N4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExGRkJRVkVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRVZCUVVVN1dVRkRja01zVlVGQmEwSXNRMEZCUXl4WlFVRlpMRWRCUVVrc1ZVRkJhMElzUTBGQlF5eFpRVUZaTEVsQlFVa3NTMEZCU3l4RFFVRkRPMWxCUXpWRkxGVkJRV3RDTEVOQlFVTXNXVUZCV1N4SFFVRkpMRlZCUVd0Q0xFTkJRVU1zV1VGQldTeEpRVUZKTEV0QlFVc3NRMEZCUXp0QlFVTTVSU3hUUVVGQk96dFJRVWRFTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1MwRkJTeXhEUVVGRExHRkJRV0VzUTBGQlF5eExRVUZMTEVOQlFVTTdXVUZEZUVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eE5RVUZOTzFsQlEzaENMRXRCUVVzc1EwRkJReXhYUVVGWExFTkJRVU1zVTBGQlV6dFpRVU16UWl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExGZEJRVmM3V1VGRE4wSXNTMEZCU3l4RFFVRkRMRmRCUVZjc1EwRkJReXhIUVVGSE8xbEJRM0pDTEV0QlFVc3NRMEZCUXl4WFFVRlhMRU5CUVVNc1RVRkJUVHRCUVVONFFpeFpRVUZCTzBGQlEwVXNaMEpCUVVFc1UwRkJVeXhGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZPMmRDUVVOd1JDeGpRVUZqTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVWQlFVVTdRVUZET1VNc1owSkJRVUVzVlVGQlZTeEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWRCUVVjc1JVRkJSVHRuUWtGRE1VSXNiMEpCUVc5Q0xFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRkxFVkJRVVU3UVVGRGNFUXNaMEpCUVVFc1owSkJRV2RDTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFVkJRVVU3UVVGRE9VUXNaMEpCUVVFc2IwSkJRVzlDTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hGUVVGRk8yZENRVU55UXl3clFrRkJLMElzUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUlVGQlJUdEJRVU12UkN4blFrRkJRU3hyUWtGQmEwSXNSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hIUVVGSExFVkJRVVU3UVVGRGJFTXNaMEpCUVVFc2JVSkJRVzFDTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hGUVVGRk8yZENRVU53UXl3NFFrRkJPRUlzUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUlVGQlJUdEJRVU01UkN4blFrRkJRU3gzUWtGQmQwSXNSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hIUVVGSExFVkJRVVU3UVVGRGVFTXNaMEpCUVVFc2EwSkJRV3RDTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1IwRkJSeXhGUVVGRk8wRkJRMnhETEdkQ1FVRkJMRzlDUVVGdlFpeEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWRCUVVjc1JVRkJSVHRCUVVOd1F5eG5Ra0ZCUVN4WlFVRlpMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVTdRVUZEZGtRc1owSkJRVUVzWVVGQllTeEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1JVRkJSVHRuUWtGRE9VSXNkMEpCUVhkQ0xFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRkxFVkJRVVU3UVVGRGVFUXNaMEpCUVVFc2QwSkJRWGRDTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVU3UVVGRGJrVXNaMEpCUVVFc2EwSkJRV3RDTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hGUVVGRk8yZENRVU51UXl3MlFrRkJOa0lzUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUlVGQlJUdEJRVU0zUkN4blFrRkJRU3h2UWtGQmIwSXNSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hIUVVGSExFVkJRVVU3UVVGRGNFTXNaMEpCUVVFc0swSkJRU3RDTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1IwRkJSeXhGUVVGRk8wRkJReTlETEdkQ1FVRkJMSFZDUVVGMVFpeEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWRCUVVjc1JVRkJSVHRCUVVOMlF5eG5Ra0ZCUVN4UlFVRlJMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVTdRVUZEYmtRc1owSkJRVUVzYVVKQlFXbENMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzUjBGQlJ5eEZRVUZGTzJkQ1FVTnFReXh6UWtGQmMwSXNSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNSVUZCUlR0QlFVTjBSQ3huUWtGQlFTd3lRa0ZCTWtJc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVWQlFVVTdaMEpCUXpWRExITkRRVUZ6UXl4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlN4RlFVRkZPMEZCUTNSRkxHZENRVUZCTEd0Q1FVRnJRaXhGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVkQlFVY3NSVUZCUlR0QlFVTnNReXhuUWtGQlFTeHJRa0ZCYTBJc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlR0QlFVTTNSQ3huUWtGQlFTeDNRa0ZCZDBJc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEhRVUZITEVWQlFVVTdRVUZEZUVNc1owSkJRVUVzYzBKQlFYTkNMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeEZRVUZGTzJkQ1FVTjJReXhwUTBGQmFVTXNSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNSVUZCUlR0QlFVTnFSU3huUWtGQlFTeDNRa0ZCZDBJc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEhRVUZITEVWQlFVVTdRVUZEZUVNc1owSkJRVUVzZDBKQlFYZENMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzUjBGQlJ5eEZRVUZGTzBGQlEzaERMR2RDUVVGQkxIZENRVUYzUWl4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxFZEJRVWNzUlVGQlJUdEJRVU42UXl4aFFVRkJPMEZCUTBRc1dVRkJRU3hWUVVGVkxFTkJRVU1zVVVGQlVUdEJRVU53UWl4VFFVRkJMRU5CUVVNc1EwRkJRenM3UVVGSFNDeFJRVUZCTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03TzFGQlJ6TkNMRWxCUVVrc1EwRkJReXg1UWtGQmVVSXNSVUZCUlN4RFFVRkRPenRCUVVkcVF5eFJRVUZCTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUjBGQlJ5eE5RVU16UWp0WlFVTkZMRWRCUVVjc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVRXNSVUZCUnl4TFFVRkxMRU5CUVVFc1EwRkJRU3hGUVVGSkxFdEJRVXNzUTBGQlFTeERRVUZGTEVOQlFVTTdRVUZEZGtZc1dVRkJRU3hKUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITERKQ1FVRXlRaXh2UWtGQmIwSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVUVzUTBGQlJTeEhRVUZITEVWQlFVVTdRVUZETDBZc1dVRkJRU3hKUVVGSkxFTkJRVU1zYjBKQlFXOUNPMnRDUVVOeVFpeHJRMEZCYTBNc2IwSkJRVzlDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeERRVUZETEVOQlFVVXNRMEZCUVR0QlFVTnlSaXhyUWtGQlJTeEZRVUZGTzBGQlEwNHNXVUZCUVN4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVkQlFVY3NaME5CUVdkRExHOUNRVUZ2UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkJMRU5CUVVVc1IwRkJSeXhGUVVGRk8wRkJReTlITEZOQlFVRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRlpDeFJRVUZCTEVsQlFVa3NRMEZCUXl4bFFVRmxMRWRCUVVjc1EwRkJReXhOUVVGTkxFdEJRVWs3V1VGRGFFTXNUVUZCVFN4aFFVRmhMRWRCUVVjc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkZia1FzV1VGQlFTeE5RVUZOTEU5QlFVOHNSMEZEV0N4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGTkxFMUJRVUVzUTBGQlFTeE5RVUZCTEVOQlFVRXNUVUZCUVN4RFFVRkJMRTFCUVVFc1EwRkJRU3hGUVVGQkxFVkJRVUVzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhGUVVGRkxFTkJRVUVzUlVGQlN5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkhMRU5CUVVFN1FVRkROVVFzYVVKQlFVRXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJRenRCUVVOdVF5eHBRa0ZCUVN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRlhMRkZCUVVFc1JVRkJRU3hMUVVGTExFTkJRVWtzUTBGQlFTeEZRVUZCTEV0QlFVc3NSVUZCUlN4RFFVRkRPMEZCUTNCRUxHbENRVUZCTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU03TzFsQlIzWkNMRTFCUVUwc1EwRkJReXhaUVVGWkxFZEJRVWNzVDBGQlR5eEhRVUZITEUxQlFVMHNRMEZCUXl4WlFVRlpMRU5CUVVNN1dVRkRjRVFzVFVGQlRTeERRVUZETEdOQlFXTXNSMEZCUnl4UFFVRlBMRWRCUVVjc1RVRkJUU3hEUVVGRExHTkJRV01zUTBGQlF6czdPenRaUVUxNFJDeEpRVUZKTEdGQlFXRXNSMEZCUnl4SFFVRkhMRVZCUVVVN1FVRkRka0lzWjBKQlFVRXNUVUZCVFN4RFFVRkRMR05CUVdNc1IwRkJSeXhOUVVGTkxFTkJRVU1zWTBGQll5eERRVUZETEU5QlFVOHNRMEZEYmtRc1owTkJRV2RETEVWQlEyaERMQ3RDUVVFclFpeERRVU5vUXl4RFFVRkRPMEZCUTBnc1lVRkJRVHM3TzFsQlNVUXNTVUZCU1N4aFFVRmhMRWRCUVVjc1IwRkJSeXhGUVVGRk8wRkJRM1pDTEdkQ1FVRkJMRTFCUVUwc1EwRkJReXhqUVVGakxFZEJRVWNzVFVGQlRTeERRVUZETEdOQlFXTXNRMEZCUXl4UFFVRlBMRU5CUVVNc2FVTkJRV2xETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkROMFlzWjBKQlFVRXNUVUZCVFN4RFFVRkRMR05CUVdNc1IwRkJSeXhOUVVGTkxFTkJRVU1zWTBGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4dlEwRkJiME1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTnFSeXhoUVVGQk8wRkJRMGdzVTBGQlF5eERRVUZETzB0QlEwZzdRVUZGUkRzN096dEJRVWxITzBGQlEwa3NTVUZCUVN4TlFVRk5MRU5CUVVNc1MwRkJZU3hGUVVGQk8xRkJRM3BDTEVsQlFVa3NRMEZCUXl4NVFrRkJlVUlzUlVGQlJTeERRVUZETzBGQlEycERMRkZCUVVFc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wdEJRMmhETzBGQlJVMHNTVUZCUVN4SlFVRkpMRU5CUVVNc1RVRkJXU3hGUVVGQk8wRkJRM1JDTEZGQlFVRXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6czdPenM3T3pzN08wRkJWVzVDTEZGQlFVRXNTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETzBGQlEzUkNMRkZCUVVFc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRPMEZCUTJ4RExGRkJRVUVzU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRE8wRkJRM1JETEZGQlFVRXNTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeEhRVUZITEUxQlFVMHNRMEZCUXl4dlFrRkJiMElzUTBGQlF6dEJRVU40UkN4UlFVRkJMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNSMEZCUnl4TlFVRk5MRU5CUVVNc2JVSkJRVzFDTEVOQlFVTTdRVUZEZEVRc1VVRkJRU3hKUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEUxQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNN1FVRkRNVU1zVVVGQlFTeEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFZEJRVWNzVFVGQlRTeERRVUZETEd0Q1FVRnJRaXhEUVVGRE8wRkJRM0JFTEZGQlFVRXNTVUZCU1N4RFFVRkRMREpDUVVFeVFpeEhRVUZITEUxQlFVMHNRMEZCUXl3eVFrRkJNa0lzUTBGQlF6dEJRVU4wUlN4UlFVRkJMRWxCUVVrc1EwRkJReXh6UWtGQmMwSXNSMEZCUnl4TlFVRk5MRU5CUVVNc2MwSkJRWE5DTEVOQlFVTTdPMEZCUnpWRUxGRkJRVUVzU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4TlFVRk5MRU5CUVVNc1lVRkJZU3hEUVVGRE8wRkJSVEZETEZGQlFVRXNTVUZCU1N4RFFVRkRMRFpDUVVFMlFpeEhRVUZITEUxQlFVMHNRMEZCUXl3MlFrRkJOa0lzUTBGQlF6dEJRVU14UlN4UlFVRkJMRWxCUVVrc1EwRkJReXcyUWtGQk5rSXNSMEZCUnl4TlFVRk5MRU5CUVVNc05rSkJRVFpDTEVOQlFVTTdRVUZETVVVc1VVRkJRU3hKUVVGSkxFTkJRVU1zT0VKQlFUaENMRWRCUVVjc1RVRkJUU3hEUVVGRExEaENRVUU0UWl4RFFVRkRPMEZCUlRWRkxGRkJRVUVzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFMUJRVTBzUTBGQlF5eHBRa0ZCYVVJc1EwRkJRenRCUVVWc1JDeFJRVUZCTEVsQlFVa3NRMEZCUXl4aFFVRmhMRWRCUVVjc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF6dEJRVU14UXl4UlFVRkJMRWxCUVVrc1EwRkJReXhUUVVGVExFZEJRVWNzVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXp0QlFVTnNReXhSUVVGQkxFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1IwRkJSeXhOUVVGTkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1FVRkZhRVFzVVVGQlFTeEpRVUZKTEVOQlFVTXNVMEZCVXl4SFFVRkhMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU03TzBGQlIyeERMRkZCUVVFc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZGZUVJc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dExRVU5pTzBGQlJVUTdPenM3UVVGSlJ6dEJRVU5MTEVsQlFVRXNhMEpCUVd0Q0xFTkJRVU1zUzBGQllTeEZRVUZCTzBGQlEzUkRMRkZCUVVFc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eDNRa0ZCZDBJc1EwRkJReXhMUVVGTExFbEJRVWtzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl3MlFrRkJOa0lzUTBGQlF6dEJRVU16Uml4UlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zZDBKQlFYZENMRU5CUVVNc1MwRkJTeXhKUVVGSkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNOa0pCUVRaQ0xFTkJRVU03UVVGRE0wWXNVVUZCUVN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExIZENRVUYzUWl4RFFVRkRMRXRCUVVzc1NVRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETERoQ1FVRTRRaXhEUVVGRE8wRkJSVFZHTEZGQlFVRXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeEhRVUZITEVsQlFVa3NRMEZCUXp0TFFVTm9RenRCUVVWRU96czdRVUZIUnp0SlFVTkxMSGxDUVVGNVFpeEhRVUZCT3pzN08xRkJTUzlDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRPenRCUVVjelF5eFJRVUZCTEVsQlFVa3NRMEZCUXl4dlFrRkJiMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWRCUVVjc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEdOQlFXTXNRMEZCUXl4RFFVRkRPMEZCUXpORkxGRkJRVUVzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNVMEZCVXl4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1EwRkJRenRCUVVOMlJpeFJRVUZCTEVsQlFVa3NRMEZCUXl4dlFrRkJiMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmRCUVZjc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExFTkJRVU03UVVGRE0wWXNVVUZCUVN4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXh2UWtGQmIwSXNSVUZCUlN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExDdENRVUVyUWl4RFFVRkRMRU5CUVVNN1FVRkROMGNzVVVGQlFTeEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4dFFrRkJiVUlzUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRGhDUVVFNFFpeERRVUZETEVOQlFVTTdRVUZETTBjc1VVRkJRU3hKUVVGSkxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eGhRVUZoTEVWQlFVVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4RFFVRkRPMEZCUXk5R0xGRkJRVUVzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl3MlFrRkJOa0lzUTBGQlF5eERRVUZETzBGQlEzcEhMRkZCUVVFc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4RFFVTjJRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETERKQ1FVRXlRaXhGUVVONlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMSE5EUVVGelF5eERRVU55UkN4RFFVRkRPMEZCUTBZc1VVRkJRU3hKUVVGSkxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eHpRa0ZCYzBJc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEdsRFFVRnBReXhEUVVGRExFTkJRVU03TzFGQlIycElMRTFCUVUwc1lVRkJZU3hIUVVGSExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJSVzVFTEVsQlFVa3NZVUZCWVN4SlFVRkpMRWRCUVVjc1JVRkJSVHRaUVVONFFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXp0QlFVTm9SQ3hUUVVGQk8wRkJSVVFzVVVGQlFTeEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFZEJRVWNzU1VGQlNTeERRVUZETzB0QlEyaERPMEZCUlVRN08wRkJSVWM3U1VGRFN5eG5Ra0ZCWjBJc1IwRkJRVHRSUVVOMFFpeE5RVUZOTEdGQlFXRXNSMEZCUnl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExGRkJRVkVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVVnVSQ3hSUVVGQkxFMUJRVTBzVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXl3eVFrRkJNa0lzUzBGQlN5eEpRVUZKTEVOQlFVTTdRVUZET1VRc1VVRkJRU3hOUVVGTkxGZEJRVmNzUjBGRFppeEpRVUZKTEVOQlFVTXNSMEZCUnl4TFFVRkxMRWxCUVVrN1dVRkRha0lzU1VGQlNTeERRVUZETEZkQlFWY3NTMEZCU3l4SlFVRkpPMWxCUTNwQ0xFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1MwRkJTeXhKUVVGSk8xbEJRMnhETEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUzBGQlN5eEpRVUZKTzFsQlEycERMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNTMEZCU3l4SlFVRkpPMEZCUTJoRExGbEJRVUVzU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhMUVVGTExFbEJRVWtzUTBGQlF6dFJRVVYyUXl4UFFVRlBPenM3UVVGSFRDeFpRVUZCTEhkQ1FVRjNRaXhGUVVGRkxHRkJRV0U3V1VGRmRrTXNUMEZCVHl4RlFVRkZMRWxCUVVrc1EwRkJReXhWUVVGVk8xbEJRM2hDTEZsQlFWa3NSVUZCUlN4WFFVRlhMRWxCUVVrc1YwRkJWenRCUVVONFF5eFpRVUZCTEhGQ1FVRnhRaXhGUVVGRkxGZEJRVmNzU1VGQlNTeERRVUZETEZkQlFWYzdXVUZEYkVRc1pVRkJaU3hGUVVGRkxFbEJRVWtzUTBGQlF5eGpRVUZqTzBGQlEzQkRMRmxCUVVFc2QwSkJRWGRDTEVWQlFVVXNTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeExRVUZMTEVsQlFVazdRVUZETlVRc1dVRkJRU3gxUWtGQmRVSXNSVUZCUlN4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEV0QlFVc3NTVUZCU1R0QlFVTXhSQ3haUVVGQkxHbENRVUZwUWl4RlFVRkZMRWxCUVVrc1EwRkJReXhoUVVGaExFdEJRVXNzU1VGQlNUdEJRVU01UXl4WlFVRkJMSE5DUVVGelFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUzBGQlN5eEpRVUZKTzFsQlEzaEVMQ3RDUVVFclFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWxCUVVrc1NVRkJTU3hEUVVGRExESkNRVUV5UWl4TFFVRkxMRWxCUVVrN1FVRkROMFlzV1VGQlFTd3dRa0ZCTUVJc1JVRkJSU3hKUVVGSkxFTkJRVU1zYzBKQlFYTkNMRXRCUVVzc1NVRkJTVHRCUVVOb1JTeFpRVUZCTEcxQ1FVRnRRaXhGUVVGRkxFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1MwRkJTeXhKUVVGSk8wRkJRM0pFTEZsQlFVRXNXVUZCV1N4RlFVRkZMRWxCUVVrc1EwRkJReXhWUVVGVkxFdEJRVXNzVVVGQlVUdEJRVU14UXl4WlFVRkJMR3RDUVVGclFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4VlFVRlZMRXRCUVVzc1kwRkJZenRCUVVOMFJDeFpRVUZCTEZGQlFWRXNSVUZCUlN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hMUVVGTExFbEJRVWs3V1VGRGJFTXNiVUpCUVcxQ0xFVkJRVVVzU1VGQlNTeERRVUZETEZWQlFWVXNTVUZCU1N4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEV0QlFVc3NOa0pCUVRaQ0xFTkJRVU1zWjBKQlFXZENPMWxCUTJwSUxHOUNRVUZ2UWl4RlFVTnNRaXhKUVVGSkxFTkJRVU1zVlVGQlZTeEpRVUZKTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUzBGQlN5dzJRa0ZCTmtJc1EwRkJReXhwUWtGQmFVSTdVMEZEYUVjc1EwRkJRenRMUVVOSU8wbEJSVThzYjBKQlFXOUNMRU5CUVVNc1IwRkJlVU1zUlVGQlJTeEhRVUZyUXl4RlFVRkJPMUZCUTNoSExFbEJRVWtzUjBGQlJ5eERRVUZETEV0QlFVc3NSVUZCUlR0QlFVTmlMRmxCUVVFc1NVRkJTU3hIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEdkQ1FVRm5RaXhGUVVGRk8wRkJRemxDTEdkQ1FVRkJMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTTdRVUZETVVJc1lVRkJRVHRaUVVWRUxFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdRVUZEYkVNc1UwRkJRVHRMUVVOR08wRkJRMFk3TzBGRGRHOUNSQ3hOUVVGTkxIRkNRVUZ4UWl4SFFVRTJRanRCUVVOMFJDeEpRVUZCTEVWQlFVVXNSVUZCUlN4SlFVRkpPMEZCUTFJc1NVRkJRU3hKUVVGSkxFVkJRVVVzU1VGQlNUdERRVU5ZTEVOQlFVTTdRVUZGUmpzN096czdPenM3TzBGQlUwYzdRVUZEWVN4VFFVRkJMRzlDUVVGdlFpeERRVUZETEU5QlFYTkNMRVZCUVVVc1ZVRkJkVUlzUlVGQlFUdEpRVU5zUml4SlFVRkpMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRWRCUVVjc1JVRkJSVHRCUVVOMlF5eFJRVUZCTEU5QlFVOHNRMEZCUXl4VlFVRlZMRWRCUVVjc1ZVRkJWU3hEUVVGRE8wRkJRMnBETEV0QlFVRTdRVUZCVFN4VFFVRkJPMEZCUTBvc1VVRkJRU3hQUVVGbExFTkJRVU1zVVVGQlVTeEhRVUZITEhGQ1FVRnhRaXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzBGQlF5OUVMRXRCUVVFN1FVRkRTRHM3UVVOc1FrRTdPenM3UVVGSlJ6dE5RVU5WTEcxRFFVRnRReXhEUVVGQk8wRkJTemxETEVsQlFVRXNTVUZCVnl4UFFVRlBMRWRCUVVFN1VVRkRhRUlzVDBGQlR5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dExRVU53UXp0SlFVVkVMRmRCUVcxQ0xFTkJRVUVzVFVGQmEwSXNSVUZCUlN4alFVRjFReXhGUVVGQk8wRkJRelZGTEZGQlFVRXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhOUVVGTkxFTkJRVU03UVVGRGRFSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1pVRkJaU3hIUVVGSExHTkJRV01zUTBGQlF6dEJRVU4wUXl4UlFVRkJMRWxCUVVrc1EwRkJReXhUUVVGVExFZEJRVWNzUlVGQlJTeERRVUZETzB0QlEzSkNPMGxCUlUwc1pVRkJaU3hEUVVFd1F5eEhRVUZOTEVWQlFVVXNTMEZCYVVNc1JVRkJRVHRSUVVOMlJ5eEpRVUZKTEV0QlFVc3NTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRha0lzV1VGQlFTeEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF6dEJRVU51UXl4VFFVRkJPMHRCUTBZN1FVRkZUU3hKUVVGQkxGZEJRVmNzUTBGRGFFSXNSMEZCVFN4RlFVTk9MRXRCUVRKQ0xFVkJRek5DTEcxQ1FVRTJRaXhGUVVGQk8xRkJSVGRDTEVsQlFVa3NTMEZCU3l4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOcVFpeFpRVUZCTEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBGQlJTOUVMRmxCUVVFc1NVRkJTU3h0UWtGQmJVSXNSVUZCUlR0blFrRkRka0lzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXh0UWtGQmJVSXNSVUZCUlN4RFFVRkRPMEZCUTJwRUxHRkJRVUU3UVVGRFJpeFRRVUZCTzB0QlEwWTdRVUZGV1N4SlFVRkJMR0ZCUVdFc1EwRkRlRUlzUjBGQlRTeEZRVU5PTEU5QlFYTkRMRVZCUTNSRExHTkJRWFZDTEVWQlFVRTdPMEZCUlhaQ0xGbEJRVUVzVFVGQlRTeFBRVUZQTEVkQlFVY3NRMEZCUXl4TlFVRlhMRk5CUVVFc1EwRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeERRVUZCTEVWQlFVRXNTMEZCUVN4RFFVRkJMRVZCUVVFc1lVRkJRVHRuUWtGRE1VSXNTVUZCU1N4UFFVRlBMRWxCUVVrc1NVRkJTU3hGUVVGRk8wRkJRMjVDTEc5Q1FVRkJMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1JVRkJSU3hIUVVGSExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdRVUZGY2tVc2IwSkJRVUVzU1VGQlNTeGpRVUZqTEVWQlFVVTdkMEpCUTJ4Q0xHOUNRVUZ2UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1FVRkRla1FzY1VKQlFVRTdRVUZEUml4cFFrRkJRVHRoUVVOR0xFTkJRVUVzUjBGQlJ5eERRVUZETzBGQlJVd3NXVUZCUVN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVVTNRaXhaUVVGQkxFOUJRVThzVDBGQlR5eERRVUZETzFOQlEyaENMRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRVUU3UVVGRldTeEpRVUZCTEc5Q1FVRnZRaXhEUVVNdlFpeEhRVUZOTEVWQlEwNHNXVUZCWjBNc1JVRkRhRU1zWTBGQmRVSXNSVUZCUVRzN1dVRkZka0lzVDBGQlR5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWRCUVVjc1JVRkJSU3haUVVGWkxFbEJRVWtzU1VGQlNTeEhRVUZITEVWQlFVVXNTMEZCU3l4RlFVRkZMRmxCUVZrc1JVRkJSU3hIUVVGSExGTkJRVk1zUlVGQlJTeGpRVUZqTEVOQlFVTXNRMEZCUXp0VFFVTTFSeXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVUZCTzBGQlEwWTdPMEZETjBSRU96dEJRVVZITzBGQlEwZ3NUVUZCVFN4elFrRkJjMElzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETzAxQlJTOURMSGxDUVVGNVFpeERRVUZCTzBGQmEwTndReXhKUVVGQkxFbEJRVmNzU1VGQlNTeEhRVUZCTzFGQlEySXNUMEZCVHl4NVFrRkJlVUlzUTBGQlF5eGpRVUZqTEVOQlFVTTdTMEZEYWtRN1NVRkZSQ3hYUVVGdFFpeERRVUZCTEUxQlFXdENMRVZCUVVVc1QwRkJRU3hIUVVFMFF5eEZRVUZGTEVWQlFVRTdPMEZCUTI1R0xGRkJRVUVzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4TlFVRk5MRU5CUVVNN1VVRkZja0lzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFTkJRVUVzUlVGQlFTeEhRVUZCTEU5QlFVOHNRMEZCUXl4cFFrRkJhVUlzVFVGQlNTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUjBGQlFTeERRVUZETEVOQlFVTTdVVUZEZUVRc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4UFFVRlBMRU5CUVVNc1lVRkJZU3hOUVVGSkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGQkxFdEJRVXNzUTBGQlF6dFJRVU53UkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFTkJRVUVzUlVGQlFTeEhRVUZCTEU5QlFVOHNRMEZCUXl4VFFVRlRMRTFCUVVrc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVFc1RVRkJUU3hEUVVGRE8wRkJSVGRETEZGQlFVRXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeEhRVUZITEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNN1MwRkRjRU03U1VGRldTeFZRVUZWTEVkQlFVRTdPMWxCUTNKQ0xFbEJRVWtzUTBGQlF5eHJRMEZCYTBNc1JVRkJSU3hEUVVGRE8xTkJRek5ETEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUVVFN1FVRkZXU3hKUVVGQkxGTkJRVk1zUTBGQlF5eEpRVUZWTEVWQlFVRTdPMEZCUXk5Q0xGbEJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4cFFrRkJhVUlzUjBGQlJ5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRPMU5CUTNSRkxFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlFVRTdRVUZGVFN4SlFVRkJMR1ZCUVdVc1EwRkJReXhoUVVGeFFpeEZRVUZCTzFGQlF6RkRMRTFCUVUwc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dEJRVU16UkN4UlFVRkJMRWxCUVVrc1YwRkJWeXhGUVVGRk8wRkJRMllzV1VGQlFTeFBRVUZQTEdGQlFXRXNRMEZCUXp0QlFVTjBRaXhUUVVGQk8wRkJSVVFzVVVGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXp0TFFVTmlPMGxCUlUwc2IwSkJRVzlDTEVOQlFVTXNZVUZCY1VJc1JVRkJSU3hqUVVGMVF5eEZRVUZCTzFGQlEzaEdMRTFCUVUwc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dEJRVU42UkN4UlFVRkJMRWxCUVVrc1UwRkJVeXhGUVVGRk8xbEJRMklzVDBGQlR5eEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zVTBGQlV5eEZRVUZGTEdOQlFXTXNRMEZCUXl4RFFVRkRPMEZCUXpsRUxGTkJRVUU3UVVGRlJDeFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMHRCUTJJN1FVRkZXU3hKUVVGQkxGRkJRVkVzUTBGQlF5eFRRVUZwUWl4RlFVRkJPenM3UVVGRGNrTXNXVUZCUVN4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzBGQlF6TkNMRmxCUVVFc1RVRkJUU3hKUVVGSkxFZEJRVWNzVFVGQlRTeERRVUZETEVsQlFYZENMRU5CUVVNN1dVRkZOME1zVFVGQlRTeFBRVUZQTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1NVRkJTU3hEUVVGRExFMUJRVTBzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJRenRaUVVWNlF5eEpRVUZKTEU5QlFVOHNTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRia0lzWjBKQlFVRXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkRZaXh2UkVGQmIwUXNVMEZCVXl4RFFVRkJMRzlEUVVGQkxFTkJRWE5ETEVOQlEzQkhMRU5CUVVNN1FVRkRTQ3hoUVVGQk8wRkJSVVFzV1VGQlFTeE5RVUZOTEdGQlFXRXNSMEZCUnl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xbEJSWHBETEUxQlFVMHNWMEZCVnl4SFFVRkhMRTFCUVUwc1RVRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0QlFVVnlSQ3haUVVGQkxFbEJRVWtzWVVGQllTeERRVUZETEUxQlFVMHNTMEZCU3l4RFFVRkRMRVZCUVVVN1owSkJRemxDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRmRCUVhsQ0xFTkJRVU03WjBKQlEzWkRMRTFCUVUwc1lVRkJZU3hIUVVGSExHRkJRV0VzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNN1owSkJSV2hFTEVsQlFVa3NZVUZCWVN4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVONlFpeHZRa0ZCUVN4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFbEJRVWtzUlVGQlJTeGhRVUZoTEVOQlFVTXNRMEZCUXp0QlFVTXpReXhwUWtGQlFUdEJRVU5HTEdGQlFVRTdRVUZCVFN4cFFrRkJRVHRuUWtGRFRDeE5RVUZOTEV0QlFVc3NSMEZCUnl4WFFVRXdRaXhEUVVGRE8wRkJRM3BETEdkQ1FVRkJMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4aFFVRmhMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzI5Q1FVTTNReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJaU3hEUVVGRE8yOUNRVU0zUXl4TlFVRk5MR0ZCUVdFc1IwRkJSeXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRPMjlDUVVWb1JDeEpRVUZKTEdGQlFXRXNTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRla0lzZDBKQlFVRXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1EwRkJReXhKUVVGSkxFVkJRVVVzWVVGQllTeERRVUZETEVOQlFVTTdRVUZETTBNc2NVSkJRVUU3UVVGRFJpeHBRa0ZCUVR0QlFVTkdMR0ZCUVVFN1FVRkZSQ3haUVVGQkxFOUJRVThzVjBGQlZ5eERRVUZET3p0QlFVTndRaXhMUVVGQk8wRkJSVVE3T3pzN08wRkJTMGM3U1VGRFN5eHJRMEZCYTBNc1IwRkJRVHRCUVVONFF5eFJRVUZCTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03UVVGRE0wSXNVVUZCUVN4TlFVRk5MRWxCUVVrc1IwRkJSeXhOUVVGTkxFTkJRVU1zU1VGQmQwSXNRMEZCUXp0QlFVVTNReXhSUVVGQkxFMUJRVTBzV1VGQldTeEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN1FVRkRjRU1zVVVGQlFTeFpRVUZaTEV0QlFWb3NTVUZCUVN4SlFVRkJMRmxCUVZrc1MwRkJXaXhMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4WlFVRlpMRU5CUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVjBGQlZ5eEZRVUZGTEZOQlFWTXNTMEZCU1RzN1dVRkRNME1zVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMWxCUlhKRUxFbEJRVWtzVTBGQlV5eExRVUZKTEVOQlFVRXNSVUZCUVN4SFFVRkJMRmRCUVZjc1EwRkJReXhWUVVGVkxFMUJRVWNzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVRXNjVUpCUVhGQ0xFTkJRVU1zUTBGQlFTeEZRVUZGTzBGQlEyaEZMR2RDUVVGQkxFOUJRVThzVjBGQlZ5eERRVUZETEZWQlFWVXNRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eERRVUZETzBGQlEzUkVMR0ZCUVVFN1FVRkRTQ3hUUVVGRExFTkJRVU1zUTBGQlF6dExRVU5LTzBGQlJVOHNTVUZCUVN4clFrRkJhMElzUTBGQlF5eGhRVUZ4UWl4RlFVRkJPenRCUVVNNVF5eFJRVUZCTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03UVVGRE0wSXNVVUZCUVN4TlFVRk5MRWxCUVVrc1IwRkJSeXhOUVVGTkxFTkJRVU1zU1VGQmQwSXNRMEZCUXp0UlFVVTNReXhOUVVGTkxGZEJRVmNzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMRU5CUVVNc1UwRkJVeXhOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZITEdGQlFXRXNRMEZCUXl4RFFVRkRPMUZCUlhCRUxFbEJRVWtzVjBGQlZ5eEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTjJRaXhaUVVGQkxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlExWXNkVVJCUVhWRUxHRkJRV0VzUTBGQlFTeDNRMEZCUVN4RFFVRXdReXhEUVVNdlJ5eERRVUZETzBGQlEwWXNXVUZCUVN4UFFVRlBMRk5CUVZNc1EwRkJRenRCUVVOc1FpeFRRVUZCTzFGQlJVUXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzVjBGQlZ5eERRVUZETEZWQlFWVXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSeXg1UWtGQmVVSXNRMEZCUXl4alFVRmpMRU5CUlhSRkxFTkJRVU03VVVGRFpDeEpRVUZKTEZOQlFWTXNTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRja0lzV1VGQlFTeFBRVUZQTEZOQlFWTXNRMEZCUXp0QlFVTnNRaXhUUVVGQk8wRkJSVVFzVVVGQlFTeE5RVUZOTEZkQlFWY3NSMEZCUnl4VFFVRlRMRU5CUVVNc1YwRkJWeXhEUVVGRE8wRkJRekZETEZGQlFVRXNTVUZCU1N4RFFVRkRMSE5DUVVGelFpeERRVUZETEVkQlFVY3NRMEZCUXl4WFFVRlhMRU5CUVVNc1JVRkJSVHRaUVVNMVF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVTldMRU5CUVhORExHMURRVUZCTEVWQlFVRXNlVUpCUVhsQ0xFTkJRVU1zWTBGQll5eERRVUZwUWl4alFVRkJMRVZCUVVFc1YwRkJWeXhEUVVGSExFTkJRVUVzUTBGQlFTeERRVU01Unl4RFFVRkRPMEZCUTBZc1dVRkJRU3hQUVVGUExGTkJRVk1zUTBGQlF6dEJRVU5zUWl4VFFVRkJPMEZCUlVRc1VVRkJRU3hQUVVGUExGTkJRVk1zUTBGQlF6dExRVU5zUWp0SlFVVmhMSEZDUVVGeFFpeERRVU5xUXl4VFFVRXlReXhGUVVNelF5eGpRVUYxUXl4RlFVRkJPenM3TzFsQlIzWkRMRTlCUVZFc1kwRkJkVVFzUTBGQlF5eFRRVUZUTEVOQlFVTTdXVUZETVVVc1QwRkJVU3hqUVVGMVJDeERRVUZETEZOQlFWTXNRMEZCUXp0WlFVVXhSU3hOUVVGTkxGbEJRVmtzUjBGQlJ5eEpRVUZKTEcxRFFVRnRReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNZMEZCWXl4RFFVRkRMRU5CUVVNN1dVRkZNVVlzV1VGQldTeERRVUZETEdWQlFXVXNRMEZCUXl4MVFrRkJkVUlzUlVGQlJTeFRRVUZUTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUTBGQlF6dFpRVU4yUml4WlFVRlpMRU5CUVVNc1YwRkJWeXhEUVVGRExHdENRVUZyUWl4RlFVRkZMRk5CUVZNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRPMWxCUTNwRkxGbEJRVmtzUTBGQlF5eGhRVUZoTEVOQlFVTXNjMEpCUVhOQ0xFVkJRVVVzVTBGQlV5eERRVUZETEc5Q1FVRnZRaXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzcEdMRmxCUVZrc1EwRkJReXhsUVVGbExFTkJRVU1zYjBKQlFXOUNMRVZCUVVVc1UwRkJVeXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNN1dVRkRha1lzV1VGQldTeERRVUZETEdGQlFXRXNRMEZCUXl4eFFrRkJjVUlzUlVGQlJTeFRRVUZUTEVOQlFVTXNiVUpCUVcxQ0xFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdRVUZEZGtZc1dVRkJRU3haUVVGWkxFTkJRVU1zWlVGQlpTeERRVUZETERCQ1FVRXdRaXhGUVVGRkxFTkJRVUVzUlVGQlFTeEhRVUZCTEZOQlFWTXNRMEZCUXl4dFFrRkJiVUlzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRaUVVNdlJpeFpRVUZaTEVOQlFVTXNaVUZCWlN4RFFVRkRMRzlDUVVGdlFpeEZRVUZGTEZOQlFWTXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZETzFsQlEycEdMRmxCUVZrc1EwRkJReXhsUVVGbExFTkJRVU1zYzBKQlFYTkNMRVZCUVVVc1UwRkJVeXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRU5CUVVNN1dVRkRja1lzV1VGQldTeERRVUZETEZkQlFWY3NRMEZCUXl4alFVRmpMRVZCUVVVc1UwRkJVeXhEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETzFsQlEycEZMRmxCUVZrc1EwRkJReXhoUVVGaExFTkJRVU1zWlVGQlpTeEZRVUZGTEZOQlFWTXNRMEZCUXl4aFFVRmhMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRE0wVXNXVUZCV1N4RFFVRkRMRmRCUVZjc1EwRkJReXd3UWtGQk1FSXNSVUZCUlN4VFFVRlRMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNRMEZCUXp0WlFVTjZSaXhaUVVGWkxFTkJRVU1zWVVGQllTeERRVUZETEc5Q1FVRnZRaXhGUVVGRkxGTkJRVk1zUTBGQlF5eHJRa0ZCYTBJc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU55Uml4WlFVRlpMRU5CUVVNc1pVRkJaU3hEUVVGRExITkNRVUZ6UWl4RlFVRkZMRk5CUVZNc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4RFFVRkRPMWxCUTNKR0xGbEJRVmtzUTBGQlF5eGxRVUZsTEVOQlFVTXNhVU5CUVdsRExFVkJRVVVzVTBGQlV5eERRVUZETEN0Q1FVRXJRaXhEUVVGRExFTkJRVU03V1VGRE0wY3NXVUZCV1N4RFFVRkRMR1ZCUVdVc1EwRkJReXg1UWtGQmVVSXNSVUZCUlN4VFFVRlRMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNRMEZCUXp0WlFVTXpSaXhaUVVGWkxFTkJRVU1zWlVGQlpTeERRVUZETEd0Q1FVRnJRaXhGUVVGRkxGTkJRVk1zUTBGQlF5eG5Ra0ZCYVVRc1EwRkJReXhEUVVGRE8xbEJRemxITEZsQlFWa3NRMEZCUXl4bFFVRmxMRU5CUVVNc2IwSkJRVzlDTEVWQlFVVXNVMEZCVXl4RFFVRkRMR3RDUVVGclFpeERRVUZETEVOQlFVTTdXVUZEYWtZc1dVRkJXU3hEUVVGRExHRkJRV0VzUTBGQlF5dzJRa0ZCTmtJc1JVRkJSU3hUUVVGVExFTkJRVU1zTWtKQlFUSkNMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03V1VGRGVFY3NXVUZCV1N4RFFVRkRMRmRCUVZjc1EwRkJReXh2UWtGQmIwSXNSVUZCUlN4VFFVRlRMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXp0WlFVTTNSU3haUVVGWkxFTkJRVU1zWlVGQlpTeERRVUZETERCQ1FVRXdRaXhGUVVGRkxGTkJRVk1zUTBGQlF5eDNRa0ZCZDBJc1EwRkJReXhEUVVGRE8xbEJRemRHTEZsQlFWa3NRMEZCUXl4aFFVRmhMRU5CUVVNc2QwSkJRWGRDTEVWQlFVVXNVMEZCVXl4RFFVRkRMSE5DUVVGelFpeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMWxCUXpsR0xGbEJRVmtzUTBGQlF5eGxRVUZsTEVOQlFVTXNLMEpCUVN0Q0xFVkJRVVVzVTBGQlV5eERRVUZETERaQ1FVRTJRaXhEUVVGRExFTkJRVU03V1VGRGRrY3NXVUZCV1N4RFFVRkRMR1ZCUVdVc1EwRkJReXdyUWtGQkswSXNSVUZCUlN4VFFVRlRMRU5CUVVNc05rSkJRVFpDTEVOQlFVTXNRMEZCUXp0WlFVTjJSeXhaUVVGWkxFTkJRVU1zWlVGQlpTeERRVUZETEdkRFFVRm5ReXhGUVVGRkxGTkJRVk1zUTBGQlF5dzRRa0ZCT0VJc1EwRkJReXhEUVVGRE8xbEJSWHBITEZsQlFWa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1pVRkJaU3hGUVVGRkxFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0WlFVTnNSU3haUVVGWkxFTkJRVU1zWlVGQlpTeERRVUZETEZkQlFWY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03V1VGRk1VUXNUVUZCVFN4WlFVRlpMRU5CUVVNc1QwRkJUeXhEUVVGRE96dEJRVU0xUWl4TFFVRkJPMEZCUlVRN096czdPenM3TzBGQlVVYzdTVUZEU3l4bFFVRmxMRU5CUVVNc1NVRkJaMElzUlVGQlJTeGhRVUZ4UWl4RlFVRkJPMUZCUXpkRUxFMUJRVTBzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0QlFVTjZSQ3hSUVVGQkxFbEJRVWtzVTBGQlV5eEZRVUZGTzFsQlEySXNUVUZCVFN4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xbEJRM1JFTEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJRenRCUVVWNFJDeFpRVUZCTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVVTFRaXhaUVVGQkxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVVUzUWl4UFFVRlBPMEZCUTFJc1UwRkJRVHRMUVVOR08wRkJSVVE3T3pzN1FVRkpSenRCUVVOTExFbEJRVUVzWjBKQlFXZENMRU5CUVVNc1NVRkJaMElzUlVGQlFUczdPenM3TzBGQlQzWkRMRkZCUVVFc1RVRkJUU3hsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXp0QlFVTjBReXhSUVVGQkxFbEJRVWtzUlVGQlJTeGxRVUZsTEZsQlFWa3NZVUZCWVN4RFFVRkRMRVZCUVVVN1dVRkRMME1zVDBGQlR6dEJRVU5TTEZOQlFVRTdPMUZCUjBRc1NVRkJTU3hsUVVGbExFTkJRVU1zWjBKQlFXZENMRXRCUVVzc1RVRkJUU3hKUVVGSkxHVkJRV1VzUTBGQlF5eHJRa0ZCYTBJc1NVRkJTU3hIUVVGSExFVkJRVVU3V1VGRE5VWXNUMEZCVHp0QlFVTlNMRk5CUVVFN08xRkJSMFFzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE96dEJRVWRzUXl4UlFVRkJMRTFCUVUwc1pVRkJaU3hIUVVGSExHVkJRV1VzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0QlFVTm9SQ3hSUVVGQkxHVkJRV1VzUTBGQlF5eEpRVUZKTEVsQlFVa3NXVUZCV1N4RFFVRkRPMEZCUTNKRExGRkJRVUVzWlVGQlpTeERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRha01zVVVGQlFTeGxRVUZsTEVOQlFVTXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU03UVVGRGRFTXNVVUZCUVN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXpzN1FVRkhjRU1zVVVGQlFTeE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRE8xRkJReTlDTEUxQlFVMHNhVUpCUVdsQ0xFZEJRVWNzVVVGQlVTeERRVUZETEV0QlFVc3NSMEZCUnl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eFJRVUZSTEVOQlFVTXNWVUZCVlN4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEzcEhMRkZCUVZFc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eEZRVUZGTEdsQ1FVRnBRaXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6TkRMRkZCUVZFc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eEZRVUZGTEdsQ1FVRnBRaXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzB0QlF6VkRPMEZCUlU4c1NVRkJRU3hwUWtGQmFVSXNRMEZCUXl4SlFVRm5RaXhGUVVGQk8wRkJRM2hETEZGQlFVRXNUVUZCVFN4dFFrRkJiVUlzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRPMEZCUXpGRExGRkJRVUVzVFVGQlRTeFhRVUZYTEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVd0Q0xFTkJRVU03UVVGRk9VTXNVVUZCUVN4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1JVRkJSVHRCUVVOMFF5eFpRVUZCTEcxQ1FVRnRRaXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEZGQlFWRXNTMEZCU3l4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZEVVc1UwRkJRVHRCUVVGTkxHRkJRVUU3UVVGRFRDeFpRVUZCTEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXp0QlFVTjBReXhUUVVGQk8wRkJSVVFzVVVGQlFTeExRVUZMTEUxQlFVMHNVVUZCVVN4SlFVRkpMRmRCUVZjc1JVRkJSVHRaUVVOc1F5eEpRVUZKTEZGQlFWRXNXVUZCV1N4aFFVRmhMRVZCUVVVN1FVRkRja01zWjBKQlFVRXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVOMFF5eGhRVUZCTzBGQlEwWXNVMEZCUVR0TFFVTkdPMEZCUlU4c1NVRkJRU3hwUWtGQmFVSXNRMEZCUXl4VFFVRXlReXhGUVVGQk96czdPMEZCUjI1RkxGRkJRVUVzVFVGQlRTeGhRVUZoTEVkQlFVY3NVMEZCVXl4RFFVRkRMSEZDUVVGeFFpeERRVUZETzFGQlEzUkVMRTlCUVU4c1EwRkJReXhoUVVGaExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNTMEZCU3l4TlFVRkJMRk5CUVZNc1EwRkJReXgxUWtGQmRVSXNUVUZCU1N4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNSMEZCUVN4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVNMVJUczdRVUV2VW1Fc2VVSkJRV01zUTBGQlFTeGpRVUZCTEVkQlFVY3NjMEpCUVhOQ096czdPeUo5XG4iLCIvKiFcbiAqIEBwaXhpdi90aHJlZS12cm0tbWF0ZXJpYWxzLWhkci1lbWlzc2l2ZS1tdWx0aXBsaWVyIHYyLjAuNlxuICogU3VwcG9ydCBWUk1DX2hkcl9lbWlzc2l2ZU11bHRpcGxpZXIgZm9yIEBwaXhpdi90aHJlZS12cm1cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyMyBwaXhpdiBJbmMuXG4gKiBAcGl4aXYvdGhyZWUtdnJtLW1hdGVyaWFscy1oZHItZW1pc3NpdmUtbXVsdGlwbGllciBpcyBkaXN0cmlidXRlZCB1bmRlciBNSVQgTGljZW5zZVxuICogaHR0cHM6Ly9naXRodWIuY29tL3BpeGl2L3RocmVlLXZybS9ibG9iL3JlbGVhc2UvTElDRU5TRVxuICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuXHJcbmZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cblxuY2xhc3MgVlJNTWF0ZXJpYWxzSERSRW1pc3NpdmVNdWx0aXBsaWVyTG9hZGVyUGx1Z2luIHtcbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIFZSTU1hdGVyaWFsc0hEUkVtaXNzaXZlTXVsdGlwbGllckxvYWRlclBsdWdpbi5FWFRFTlNJT05fTkFNRTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGFyc2VyKSB7XG4gICAgICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuICAgIH1cbiAgICBleHRlbmRNYXRlcmlhbFBhcmFtcyhtYXRlcmlhbEluZGV4LCBtYXRlcmlhbFBhcmFtcykge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gdGhpcy5fZ2V0SERSRW1pc3NpdmVNdWx0aXBsaWVyRXh0ZW5zaW9uKG1hdGVyaWFsSW5kZXgpO1xuICAgICAgICAgICAgaWYgKGV4dGVuc2lvbiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVGhpcyBleHRlbnNpb24gaXMgYXJjaGl2ZWQuIEVtaXQgd2FybmluZ1xuICAgICAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vdnJtLWMvdnJtLXNwZWNpZmljYXRpb24vcHVsbC8zNzVcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVlJNTWF0ZXJpYWxzSERSRW1pc3NpdmVNdWx0aXBsaWVyTG9hZGVyUGx1Z2luOiBgVlJNQ19tYXRlcmlhbHNfaGRyX2VtaXNzaXZlTXVsdGlwbGllcmAgaXMgYXJjaGl2ZWQuIFVzZSBgS0hSX21hdGVyaWFsc19lbWlzc2l2ZV9zdHJlbmd0aGAgaW5zdGVhZC4nKTtcbiAgICAgICAgICAgIGNvbnN0IGVtaXNzaXZlTXVsdGlwbGllciA9IGV4dGVuc2lvbi5lbWlzc2l2ZU11bHRpcGxpZXI7XG4gICAgICAgICAgICBtYXRlcmlhbFBhcmFtcy5lbWlzc2l2ZUludGVuc2l0eSA9IGVtaXNzaXZlTXVsdGlwbGllcjtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9nZXRIRFJFbWlzc2l2ZU11bHRpcGxpZXJFeHRlbnNpb24obWF0ZXJpYWxJbmRleCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBjb25zdCBwYXJzZXIgPSB0aGlzLnBhcnNlcjtcbiAgICAgICAgY29uc3QganNvbiA9IHBhcnNlci5qc29uO1xuICAgICAgICBjb25zdCBtYXRlcmlhbERlZiA9IChfYSA9IGpzb24ubWF0ZXJpYWxzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbbWF0ZXJpYWxJbmRleF07XG4gICAgICAgIGlmIChtYXRlcmlhbERlZiA9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFZSTU1hdGVyaWFsc0hEUkVtaXNzaXZlTXVsdGlwbGllckxvYWRlclBsdWdpbjogQXR0ZW1wdCB0byB1c2UgbWF0ZXJpYWxzWyR7bWF0ZXJpYWxJbmRleH1dIG9mIGdsVEYgYnV0IHRoZSBtYXRlcmlhbCBkb2Vzbid0IGV4aXN0YCk7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IChfYiA9IG1hdGVyaWFsRGVmLmV4dGVuc2lvbnMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYltWUk1NYXRlcmlhbHNIRFJFbWlzc2l2ZU11bHRpcGxpZXJMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUVdO1xuICAgICAgICBpZiAoZXh0ZW5zaW9uID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV4dGVuc2lvbjtcbiAgICB9XG59XG5WUk1NYXRlcmlhbHNIRFJFbWlzc2l2ZU11bHRpcGxpZXJMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUUgPSAnVlJNQ19tYXRlcmlhbHNfaGRyX2VtaXNzaXZlTXVsdGlwbGllcic7XG5cbmV4cG9ydCB7IFZSTU1hdGVyaWFsc0hEUkVtaXNzaXZlTXVsdGlwbGllckxvYWRlclBsdWdpbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkR2h5WldVdGRuSnRMVzFoZEdWeWFXRnNjeTFvWkhJdFpXMXBjM05wZG1VdGJYVnNkR2x3YkdsbGNpNXRiMlIxYkdVdWFuTWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDI1dlpHVmZiVzlrZFd4bGN5OTBjMnhwWWk5MGMyeHBZaTVsY3pZdWFuTWlMQ0l1TGk5emNtTXZWbEpOVFdGMFpYSnBZV3h6U0VSU1JXMXBjM05wZG1WTmRXeDBhWEJzYVdWeVRHOWhaR1Z5VUd4MVoybHVMblJ6SWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lwY2NseHVRMjl3ZVhKcFoyaDBJQ2hqS1NCTmFXTnliM052Wm5RZ1EyOXljRzl5WVhScGIyNHVYSEpjYmx4eVhHNVFaWEp0YVhOemFXOXVJSFJ2SUhWelpTd2dZMjl3ZVN3Z2JXOWthV1o1TENCaGJtUXZiM0lnWkdsemRISnBZblYwWlNCMGFHbHpJSE52Wm5SM1lYSmxJR1p2Y2lCaGJubGNjbHh1Y0hWeWNHOXpaU0IzYVhSb0lHOXlJSGRwZEdodmRYUWdabVZsSUdseklHaGxjbVZpZVNCbmNtRnVkR1ZrTGx4eVhHNWNjbHh1VkVoRklGTlBSbFJYUVZKRklFbFRJRkJTVDFaSlJFVkVJRndpUVZNZ1NWTmNJaUJCVGtRZ1ZFaEZJRUZWVkVoUFVpQkVTVk5EVEVGSlRWTWdRVXhNSUZkQlVsSkJUbFJKUlZNZ1YwbFVTRnh5WEc1U1JVZEJVa1FnVkU4Z1ZFaEpVeUJUVDBaVVYwRlNSU0JKVGtOTVZVUkpUa2NnUVV4TUlFbE5VRXhKUlVRZ1YwRlNVa0ZPVkVsRlV5QlBSaUJOUlZKRFNFRk9WRUZDU1V4SlZGbGNjbHh1UVU1RUlFWkpWRTVGVTFNdUlFbE9JRTVQSUVWV1JVNVVJRk5JUVV4TUlGUklSU0JCVlZSSVQxSWdRa1VnVEVsQlFreEZJRVpQVWlCQlRsa2dVMUJGUTBsQlRDd2dSRWxTUlVOVUxGeHlYRzVKVGtSSlVrVkRWQ3dnVDFJZ1EwOU9VMFZSVlVWT1ZFbEJUQ0JFUVUxQlIwVlRJRTlTSUVGT1dTQkVRVTFCUjBWVElGZElRVlJUVDBWV1JWSWdVa1ZUVlV4VVNVNUhJRVpTVDAxY2NseHVURTlUVXlCUFJpQlZVMFVzSUVSQlZFRWdUMUlnVUZKUFJrbFVVeXdnVjBoRlZFaEZVaUJKVGlCQlRpQkJRMVJKVDA0Z1QwWWdRMDlPVkZKQlExUXNJRTVGUjB4SlIwVk9RMFVnVDFKY2NseHVUMVJJUlZJZ1ZFOVNWRWxQVlZNZ1FVTlVTVTlPTENCQlVrbFRTVTVISUU5VlZDQlBSaUJQVWlCSlRpQkRUMDVPUlVOVVNVOU9JRmRKVkVnZ1ZFaEZJRlZUUlNCUFVseHlYRzVRUlZKR1QxSk5RVTVEUlNCUFJpQlVTRWxUSUZOUFJsUlhRVkpGTGx4eVhHNHFLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lBcUwxeHlYRzR2S2lCbmJHOWlZV3dnVW1WbWJHVmpkQ3dnVUhKdmJXbHpaU0FxTDF4eVhHNWNjbHh1ZG1GeUlHVjRkR1Z1WkZOMFlYUnBZM01nUFNCbWRXNWpkR2x2Ymloa0xDQmlLU0I3WEhKY2JpQWdJQ0JsZUhSbGJtUlRkR0YwYVdOeklEMGdUMkpxWldOMExuTmxkRkJ5YjNSdmRIbHdaVTltSUh4OFhISmNiaUFnSUNBZ0lDQWdLSHNnWDE5d2NtOTBiMTlmT2lCYlhTQjlJR2x1YzNSaGJtTmxiMllnUVhKeVlYa2dKaVlnWm5WdVkzUnBiMjRnS0dRc0lHSXBJSHNnWkM1ZlgzQnliM1J2WDE4Z1BTQmlPeUI5S1NCOGZGeHlYRzRnSUNBZ0lDQWdJR1oxYm1OMGFXOXVJQ2hrTENCaUtTQjdJR1p2Y2lBb2RtRnlJSEFnYVc0Z1lpa2dhV1lnS0U5aWFtVmpkQzV3Y205MGIzUjVjR1V1YUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNoaUxDQndLU2tnWkZ0d1hTQTlJR0piY0YwN0lIMDdYSEpjYmlBZ0lDQnlaWFIxY200Z1pYaDBaVzVrVTNSaGRHbGpjeWhrTENCaUtUdGNjbHh1ZlR0Y2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJWNGRHVnVaSE1vWkN3Z1lpa2dlMXh5WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJpSUNFOVBTQmNJbVoxYm1OMGFXOXVYQ0lnSmlZZ1lpQWhQVDBnYm5Wc2JDbGNjbHh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0Z3aVEyeGhjM01nWlhoMFpXNWtjeUIyWVd4MVpTQmNJaUFySUZOMGNtbHVaeWhpS1NBcklGd2lJR2x6SUc1dmRDQmhJR052Ym5OMGNuVmpkRzl5SUc5eUlHNTFiR3hjSWlrN1hISmNiaUFnSUNCbGVIUmxibVJUZEdGMGFXTnpLR1FzSUdJcE8xeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z1gxOG9LU0I3SUhSb2FYTXVZMjl1YzNSeWRXTjBiM0lnUFNCa095QjlYSEpjYmlBZ0lDQmtMbkJ5YjNSdmRIbHdaU0E5SUdJZ1BUMDlJRzUxYkd3Z1B5QlBZbXBsWTNRdVkzSmxZWFJsS0dJcElEb2dLRjlmTG5CeWIzUnZkSGx3WlNBOUlHSXVjSEp2ZEc5MGVYQmxMQ0J1WlhjZ1gxOG9LU2s3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCMllYSWdYMTloYzNOcFoyNGdQU0JtZFc1amRHbHZiaWdwSUh0Y2NseHVJQ0FnSUY5ZllYTnphV2R1SUQwZ1QySnFaV04wTG1GemMybG5iaUI4ZkNCbWRXNWpkR2x2YmlCZlgyRnpjMmxuYmloMEtTQjdYSEpjYmlBZ0lDQWdJQ0FnWm05eUlDaDJZWElnY3l3Z2FTQTlJREVzSUc0Z1BTQmhjbWQxYldWdWRITXViR1Z1WjNSb095QnBJRHdnYmpzZ2FTc3JLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSE1nUFNCaGNtZDFiV1Z1ZEhOYmFWMDdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHWnZjaUFvZG1GeUlIQWdhVzRnY3lrZ2FXWWdLRTlpYW1WamRDNXdjbTkwYjNSNWNHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrdVkyRnNiQ2h6TENCd0tTa2dkRnR3WFNBOUlITmJjRjA3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lDQWdjbVYwZFhKdUlGOWZZWE56YVdkdUxtRndjR3g1S0hSb2FYTXNJR0Z5WjNWdFpXNTBjeWs3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgzSmxjM1FvY3l3Z1pTa2dlMXh5WEc0Z0lDQWdkbUZ5SUhRZ1BTQjdmVHRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJSEFnYVc0Z2N5a2dhV1lnS0U5aWFtVmpkQzV3Y205MGIzUjVjR1V1YUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNoekxDQndLU0FtSmlCbExtbHVaR1Y0VDJZb2NDa2dQQ0F3S1Z4eVhHNGdJQ0FnSUNBZ0lIUmJjRjBnUFNCelczQmRPMXh5WEc0Z0lDQWdhV1lnS0hNZ0lUMGdiblZzYkNBbUppQjBlWEJsYjJZZ1QySnFaV04wTG1kbGRFOTNibEJ5YjNCbGNuUjVVM2x0WW05c2N5QTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtWeHlYRzRnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd0xDQndJRDBnVDJKcVpXTjBMbWRsZEU5M2JsQnliM0JsY25SNVUzbHRZbTlzY3loektUc2dhU0E4SUhBdWJHVnVaM1JvT3lCcEt5c3BJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dVdWFXNWtaWGhQWmlod1cybGRLU0E4SURBZ0ppWWdUMkpxWldOMExuQnliM1J2ZEhsd1pTNXdjbTl3WlhKMGVVbHpSVzUxYldWeVlXSnNaUzVqWVd4c0tITXNJSEJiYVYwcEtWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkRnR3VzJsZFhTQTlJSE5iY0Z0cFhWMDdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJSFE3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyUmxZMjl5WVhSbEtHUmxZMjl5WVhSdmNuTXNJSFJoY21kbGRDd2dhMlY1TENCa1pYTmpLU0I3WEhKY2JpQWdJQ0IyWVhJZ1l5QTlJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ3NJSElnUFNCaklEd2dNeUEvSUhSaGNtZGxkQ0E2SUdSbGMyTWdQVDA5SUc1MWJHd2dQeUJrWlhOaklEMGdUMkpxWldOMExtZGxkRTkzYmxCeWIzQmxjblI1UkdWelkzSnBjSFJ2Y2loMFlYSm5aWFFzSUd0bGVTa2dPaUJrWlhOakxDQmtPMXh5WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJTWldac1pXTjBJRDA5UFNCY0ltOWlhbVZqZEZ3aUlDWW1JSFI1Y0dWdlppQlNaV1pzWldOMExtUmxZMjl5WVhSbElEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElISWdQU0JTWldac1pXTjBMbVJsWTI5eVlYUmxLR1JsWTI5eVlYUnZjbk1zSUhSaGNtZGxkQ3dnYTJWNUxDQmtaWE5qS1R0Y2NseHVJQ0FnSUdWc2MyVWdabTl5SUNoMllYSWdhU0E5SUdSbFkyOXlZWFJ2Y25NdWJHVnVaM1JvSUMwZ01Uc2dhU0ErUFNBd095QnBMUzBwSUdsbUlDaGtJRDBnWkdWamIzSmhkRzl5YzF0cFhTa2djaUE5SUNoaklEd2dNeUEvSUdRb2Npa2dPaUJqSUQ0Z015QS9JR1FvZEdGeVoyVjBMQ0JyWlhrc0lISXBJRG9nWkNoMFlYSm5aWFFzSUd0bGVTa3BJSHg4SUhJN1hISmNiaUFnSUNCeVpYUjFjbTRnWXlBK0lETWdKaVlnY2lBbUppQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvZEdGeVoyVjBMQ0JyWlhrc0lISXBMQ0J5TzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOXdZWEpoYlNod1lYSmhiVWx1WkdWNExDQmtaV052Y21GMGIzSXBJSHRjY2x4dUlDQWdJSEpsZEhWeWJpQm1kVzVqZEdsdmJpQW9kR0Z5WjJWMExDQnJaWGtwSUhzZ1pHVmpiM0poZEc5eUtIUmhjbWRsZEN3Z2EyVjVMQ0J3WVhKaGJVbHVaR1Y0S1RzZ2ZWeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTlsYzBSbFkyOXlZWFJsS0dOMGIzSXNJR1JsYzJOeWFYQjBiM0pKYml3Z1pHVmpiM0poZEc5eWN5d2dZMjl1ZEdWNGRFbHVMQ0JwYm1sMGFXRnNhWHBsY25Nc0lHVjRkSEpoU1c1cGRHbGhiR2w2WlhKektTQjdYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQmhZMk5sY0hRb1ppa2dleUJwWmlBb1ppQWhQVDBnZG05cFpDQXdJQ1ltSUhSNWNHVnZaaUJtSUNFOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSkdkVzVqZEdsdmJpQmxlSEJsWTNSbFpGd2lLVHNnY21WMGRYSnVJR1k3SUgxY2NseHVJQ0FnSUhaaGNpQnJhVzVrSUQwZ1kyOXVkR1Y0ZEVsdUxtdHBibVFzSUd0bGVTQTlJR3RwYm1RZ1BUMDlJRndpWjJWMGRHVnlYQ0lnUHlCY0ltZGxkRndpSURvZ2EybHVaQ0E5UFQwZ1hDSnpaWFIwWlhKY0lpQS9JRndpYzJWMFhDSWdPaUJjSW5aaGJIVmxYQ0k3WEhKY2JpQWdJQ0IyWVhJZ2RHRnlaMlYwSUQwZ0lXUmxjMk55YVhCMGIzSkpiaUFtSmlCamRHOXlJRDhnWTI5dWRHVjRkRWx1VzF3aWMzUmhkR2xqWENKZElEOGdZM1J2Y2lBNklHTjBiM0l1Y0hKdmRHOTBlWEJsSURvZ2JuVnNiRHRjY2x4dUlDQWdJSFpoY2lCa1pYTmpjbWx3ZEc5eUlEMGdaR1Z6WTNKcGNIUnZja2x1SUh4OElDaDBZWEpuWlhRZ1B5QlBZbXBsWTNRdVoyVjBUM2R1VUhKdmNHVnlkSGxFWlhOamNtbHdkRzl5S0hSaGNtZGxkQ3dnWTI5dWRHVjRkRWx1TG01aGJXVXBJRG9nZTMwcE8xeHlYRzRnSUNBZ2RtRnlJRjhzSUdSdmJtVWdQU0JtWVd4elpUdGNjbHh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0JrWldOdmNtRjBiM0p6TG14bGJtZDBhQ0F0SURFN0lHa2dQajBnTURzZ2FTMHRLU0I3WEhKY2JpQWdJQ0FnSUNBZ2RtRnlJR052Ym5SbGVIUWdQU0I3ZlR0Y2NseHVJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQndJR2x1SUdOdmJuUmxlSFJKYmlrZ1kyOXVkR1Y0ZEZ0d1hTQTlJSEFnUFQwOUlGd2lZV05qWlhOelhDSWdQeUI3ZlNBNklHTnZiblJsZUhSSmJsdHdYVHRjY2x4dUlDQWdJQ0FnSUNCbWIzSWdLSFpoY2lCd0lHbHVJR052Ym5SbGVIUkpiaTVoWTJObGMzTXBJR052Ym5SbGVIUXVZV05qWlhOelczQmRJRDBnWTI5dWRHVjRkRWx1TG1GalkyVnpjMXR3WFR0Y2NseHVJQ0FnSUNBZ0lDQmpiMjUwWlhoMExtRmtaRWx1YVhScFlXeHBlbVZ5SUQwZ1puVnVZM1JwYjI0Z0tHWXBJSHNnYVdZZ0tHUnZibVVwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSkRZVzV1YjNRZ1lXUmtJR2x1YVhScFlXeHBlbVZ5Y3lCaFpuUmxjaUJrWldOdmNtRjBhVzl1SUdoaGN5QmpiMjF3YkdWMFpXUmNJaWs3SUdWNGRISmhTVzVwZEdsaGJHbDZaWEp6TG5CMWMyZ29ZV05qWlhCMEtHWWdmSHdnYm5Wc2JDa3BPeUI5TzF4eVhHNGdJQ0FnSUNBZ0lIWmhjaUJ5WlhOMWJIUWdQU0FvTUN3Z1pHVmpiM0poZEc5eWMxdHBYU2tvYTJsdVpDQTlQVDBnWENKaFkyTmxjM052Y2x3aUlEOGdleUJuWlhRNklHUmxjMk55YVhCMGIzSXVaMlYwTENCelpYUTZJR1JsYzJOeWFYQjBiM0l1YzJWMElIMGdPaUJrWlhOamNtbHdkRzl5VzJ0bGVWMHNJR052Ym5SbGVIUXBPMXh5WEc0Z0lDQWdJQ0FnSUdsbUlDaHJhVzVrSUQwOVBTQmNJbUZqWTJWemMyOXlYQ0lwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tISmxjM1ZzZENBOVBUMGdkbTlwWkNBd0tTQmpiMjUwYVc1MVpUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSEpsYzNWc2RDQTlQVDBnYm5Wc2JDQjhmQ0IwZVhCbGIyWWdjbVZ6ZFd4MElDRTlQU0JjSW05aWFtVmpkRndpS1NCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lUMkpxWldOMElHVjRjR1ZqZEdWa1hDSXBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWHlBOUlHRmpZMlZ3ZENoeVpYTjFiSFF1WjJWMEtTa2daR1Z6WTNKcGNIUnZjaTVuWlhRZ1BTQmZPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWHlBOUlHRmpZMlZ3ZENoeVpYTjFiSFF1YzJWMEtTa2daR1Z6WTNKcGNIUnZjaTV6WlhRZ1BTQmZPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWHlBOUlHRmpZMlZ3ZENoeVpYTjFiSFF1YVc1cGRDa3BJR2x1YVhScFlXeHBlbVZ5Y3k1d2RYTm9LRjhwTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2hmSUQwZ1lXTmpaWEIwS0hKbGMzVnNkQ2twSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHdHBibVFnUFQwOUlGd2labWxsYkdSY0lpa2dhVzVwZEdsaGJHbDZaWEp6TG5CMWMyZ29YeWs3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ1pHVnpZM0pwY0hSdmNsdHJaWGxkSUQwZ1h6dGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdJQ0JwWmlBb2RHRnlaMlYwS1NCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29kR0Z5WjJWMExDQmpiMjUwWlhoMFNXNHVibUZ0WlN3Z1pHVnpZM0pwY0hSdmNpazdYSEpjYmlBZ0lDQmtiMjVsSUQwZ2RISjFaVHRjY2x4dWZUdGNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgzSjFia2x1YVhScFlXeHBlbVZ5Y3loMGFHbHpRWEpuTENCcGJtbDBhV0ZzYVhwbGNuTXNJSFpoYkhWbEtTQjdYSEpjYmlBZ0lDQjJZWElnZFhObFZtRnNkV1VnUFNCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvSUQ0Z01qdGNjbHh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2dhVzVwZEdsaGJHbDZaWEp6TG14bGJtZDBhRHNnYVNzcktTQjdYSEpjYmlBZ0lDQWdJQ0FnZG1Gc2RXVWdQU0IxYzJWV1lXeDFaU0EvSUdsdWFYUnBZV3hwZW1WeWMxdHBYUzVqWVd4c0tIUm9hWE5CY21jc0lIWmhiSFZsS1NBNklHbHVhWFJwWVd4cGVtVnljMXRwWFM1allXeHNLSFJvYVhOQmNtY3BPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lDQWdjbVYwZFhKdUlIVnpaVlpoYkhWbElEOGdkbUZzZFdVZ09pQjJiMmxrSURBN1hISmNibjA3WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl3Y205d1MyVjVLSGdwSUh0Y2NseHVJQ0FnSUhKbGRIVnliaUIwZVhCbGIyWWdlQ0E5UFQwZ1hDSnplVzFpYjJ4Y0lpQS9JSGdnT2lCY0lsd2lMbU52Ym1OaGRDaDRLVHRjY2x4dWZUdGNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgzTmxkRVoxYm1OMGFXOXVUbUZ0WlNobUxDQnVZVzFsTENCd2NtVm1hWGdwSUh0Y2NseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2JtRnRaU0E5UFQwZ1hDSnplVzFpYjJ4Y0lpa2dibUZ0WlNBOUlHNWhiV1V1WkdWelkzSnBjSFJwYjI0Z1B5QmNJbHRjSWk1amIyNWpZWFFvYm1GdFpTNWtaWE5qY21sd2RHbHZiaXdnWENKZFhDSXBJRG9nWENKY0lqdGNjbHh1SUNBZ0lISmxkSFZ5YmlCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29aaXdnWENKdVlXMWxYQ0lzSUhzZ1kyOXVabWxuZFhKaFlteGxPaUIwY25WbExDQjJZV3gxWlRvZ2NISmxabWw0SUQ4Z1hDSmNJaTVqYjI1allYUW9jSEpsWm1sNExDQmNJaUJjSWl3Z2JtRnRaU2tnT2lCdVlXMWxJSDBwTzF4eVhHNTlPMXh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZiV1YwWVdSaGRHRW9iV1YwWVdSaGRHRkxaWGtzSUcxbGRHRmtZWFJoVm1Gc2RXVXBJSHRjY2x4dUlDQWdJR2xtSUNoMGVYQmxiMllnVW1WbWJHVmpkQ0E5UFQwZ1hDSnZZbXBsWTNSY0lpQW1KaUIwZVhCbGIyWWdVbVZtYkdWamRDNXRaWFJoWkdGMFlTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQnlaWFIxY200Z1VtVm1iR1ZqZEM1dFpYUmhaR0YwWVNodFpYUmhaR0YwWVV0bGVTd2diV1YwWVdSaGRHRldZV3gxWlNrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMkYzWVdsMFpYSW9kR2hwYzBGeVp5d2dYMkZ5WjNWdFpXNTBjeXdnVUN3Z1oyVnVaWEpoZEc5eUtTQjdYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQmhaRzl3ZENoMllXeDFaU2tnZXlCeVpYUjFjbTRnZG1Gc2RXVWdhVzV6ZEdGdVkyVnZaaUJRSUQ4Z2RtRnNkV1VnT2lCdVpYY2dVQ2htZFc1amRHbHZiaUFvY21WemIyeDJaU2tnZXlCeVpYTnZiSFpsS0haaGJIVmxLVHNnZlNrN0lIMWNjbHh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dLRkFnZkh3Z0tGQWdQU0JRY205dGFYTmxLU2tvWm5WdVkzUnBiMjRnS0hKbGMyOXNkbVVzSUhKbGFtVmpkQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lHWjFibU4wYVc5dUlHWjFiR1pwYkd4bFpDaDJZV3gxWlNrZ2V5QjBjbmtnZXlCemRHVndLR2RsYm1WeVlYUnZjaTV1WlhoMEtIWmhiSFZsS1NrN0lIMGdZMkYwWTJnZ0tHVXBJSHNnY21WcVpXTjBLR1VwT3lCOUlIMWNjbHh1SUNBZ0lDQWdJQ0JtZFc1amRHbHZiaUJ5WldwbFkzUmxaQ2gyWVd4MVpTa2dleUIwY25rZ2V5QnpkR1Z3S0dkbGJtVnlZWFJ2Y2x0Y0luUm9jbTkzWENKZEtIWmhiSFZsS1NrN0lIMGdZMkYwWTJnZ0tHVXBJSHNnY21WcVpXTjBLR1VwT3lCOUlIMWNjbHh1SUNBZ0lDQWdJQ0JtZFc1amRHbHZiaUJ6ZEdWd0tISmxjM1ZzZENrZ2V5QnlaWE4xYkhRdVpHOXVaU0EvSUhKbGMyOXNkbVVvY21WemRXeDBMblpoYkhWbEtTQTZJR0ZrYjNCMEtISmxjM1ZzZEM1MllXeDFaU2t1ZEdobGJpaG1kV3htYVd4c1pXUXNJSEpsYW1WamRHVmtLVHNnZlZ4eVhHNGdJQ0FnSUNBZ0lITjBaWEFvS0dkbGJtVnlZWFJ2Y2lBOUlHZGxibVZ5WVhSdmNpNWhjSEJzZVNoMGFHbHpRWEpuTENCZllYSm5kVzFsYm5SeklIeDhJRnRkS1NrdWJtVjRkQ2dwS1R0Y2NseHVJQ0FnSUgwcE8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTluWlc1bGNtRjBiM0lvZEdocGMwRnlaeXdnWW05a2VTa2dlMXh5WEc0Z0lDQWdkbUZ5SUY4Z1BTQjdJR3hoWW1Wc09pQXdMQ0J6Wlc1ME9pQm1kVzVqZEdsdmJpZ3BJSHNnYVdZZ0tIUmJNRjBnSmlBeEtTQjBhSEp2ZHlCMFd6RmRPeUJ5WlhSMWNtNGdkRnN4WFRzZ2ZTd2dkSEo1Y3pvZ1cxMHNJRzl3Y3pvZ1cxMGdmU3dnWml3Z2VTd2dkQ3dnWnp0Y2NseHVJQ0FnSUhKbGRIVnliaUJuSUQwZ2V5QnVaWGgwT2lCMlpYSmlLREFwTENCY0luUm9jbTkzWENJNklIWmxjbUlvTVNrc0lGd2ljbVYwZFhKdVhDSTZJSFpsY21Jb01pa2dmU3dnZEhsd1pXOW1JRk41YldKdmJDQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlDWW1JQ2huVzFONWJXSnZiQzVwZEdWeVlYUnZjbDBnUFNCbWRXNWpkR2x2YmlncElIc2djbVYwZFhKdUlIUm9hWE03SUgwcExDQm5PMXh5WEc0Z0lDQWdablZ1WTNScGIyNGdkbVZ5WWlodUtTQjdJSEpsZEhWeWJpQm1kVzVqZEdsdmJpQW9kaWtnZXlCeVpYUjFjbTRnYzNSbGNDaGJiaXdnZGwwcE95QjlPeUI5WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJ6ZEdWd0tHOXdLU0I3WEhKY2JpQWdJQ0FnSUNBZ2FXWWdLR1lwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSkhaVzVsY21GMGIzSWdhWE1nWVd4eVpXRmtlU0JsZUdWamRYUnBibWN1WENJcE8xeHlYRzRnSUNBZ0lDQWdJSGRvYVd4bElDaG5JQ1ltSUNobklEMGdNQ3dnYjNCYk1GMGdKaVlnS0Y4Z1BTQXdLU2tzSUY4cElIUnllU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNobUlEMGdNU3dnZVNBbUppQW9kQ0E5SUc5d1d6QmRJQ1lnTWlBL0lIbGJYQ0p5WlhSMWNtNWNJbDBnT2lCdmNGc3dYU0EvSUhsYlhDSjBhSEp2ZDF3aVhTQjhmQ0FvS0hRZ1BTQjVXMXdpY21WMGRYSnVYQ0pkS1NBbUppQjBMbU5oYkd3b2VTa3NJREFwSURvZ2VTNXVaWGgwS1NBbUppQWhLSFFnUFNCMExtTmhiR3dvZVN3Z2IzQmJNVjBwS1M1a2IyNWxLU0J5WlhSMWNtNGdkRHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hrZ1BTQXdMQ0IwS1NCdmNDQTlJRnR2Y0Zzd1hTQW1JRElzSUhRdWRtRnNkV1ZkTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J6ZDJsMFkyZ2dLRzl3V3pCZEtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElEQTZJR05oYzJVZ01Ub2dkQ0E5SUc5d095QmljbVZoYXp0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnTkRvZ1h5NXNZV0psYkNzck95QnlaWFIxY200Z2V5QjJZV3gxWlRvZ2IzQmJNVjBzSUdSdmJtVTZJR1poYkhObElIMDdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElEVTZJRjh1YkdGaVpXd3JLenNnZVNBOUlHOXdXekZkT3lCdmNDQTlJRnN3WFRzZ1kyOXVkR2x1ZFdVN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSURjNklHOXdJRDBnWHk1dmNITXVjRzl3S0NrN0lGOHVkSEo1Y3k1d2IzQW9LVHNnWTI5dWRHbHVkV1U3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa1pXWmhkV3gwT2x4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaEtIUWdQU0JmTG5SeWVYTXNJSFFnUFNCMExteGxibWQwYUNBK0lEQWdKaVlnZEZ0MExteGxibWQwYUNBdElERmRLU0FtSmlBb2IzQmJNRjBnUFQwOUlEWWdmSHdnYjNCYk1GMGdQVDA5SURJcEtTQjdJRjhnUFNBd095QmpiMjUwYVc1MVpUc2dmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h2Y0Zzd1hTQTlQVDBnTXlBbUppQW9JWFFnZkh3Z0tHOXdXekZkSUQ0Z2RGc3dYU0FtSmlCdmNGc3hYU0E4SUhSYk0xMHBLU2tnZXlCZkxteGhZbVZzSUQwZ2IzQmJNVjA3SUdKeVpXRnJPeUI5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0c5d1d6QmRJRDA5UFNBMklDWW1JRjh1YkdGaVpXd2dQQ0IwV3pGZEtTQjdJRjh1YkdGaVpXd2dQU0IwV3pGZE95QjBJRDBnYjNBN0lHSnlaV0ZyT3lCOVhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUWdKaVlnWHk1c1lXSmxiQ0E4SUhSYk1sMHBJSHNnWHk1c1lXSmxiQ0E5SUhSYk1sMDdJRjh1YjNCekxuQjFjMmdvYjNBcE95QmljbVZoYXpzZ2ZWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBXekpkS1NCZkxtOXdjeTV3YjNBb0tUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCZkxuUnllWE11Y0c5d0tDazdJR052Ym5ScGJuVmxPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHOXdJRDBnWW05a2VTNWpZV3hzS0hSb2FYTkJjbWNzSUY4cE8xeHlYRzRnSUNBZ0lDQWdJSDBnWTJGMFkyZ2dLR1VwSUhzZ2IzQWdQU0JiTml3Z1pWMDdJSGtnUFNBd095QjlJR1pwYm1Gc2JIa2dleUJtSUQwZ2RDQTlJREE3SUgxY2NseHVJQ0FnSUNBZ0lDQnBaaUFvYjNCYk1GMGdKaUExS1NCMGFISnZkeUJ2Y0ZzeFhUc2djbVYwZFhKdUlIc2dkbUZzZFdVNklHOXdXekJkSUQ4Z2IzQmJNVjBnT2lCMmIybGtJREFzSUdSdmJtVTZJSFJ5ZFdVZ2ZUdGNjbHh1SUNBZ0lIMWNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJSFpoY2lCZlgyTnlaV0YwWlVKcGJtUnBibWNnUFNCUFltcGxZM1F1WTNKbFlYUmxJRDhnS0daMWJtTjBhVzl1S0c4c0lHMHNJR3NzSUdzeUtTQjdYSEpjYmlBZ0lDQnBaaUFvYXpJZ1BUMDlJSFZ1WkdWbWFXNWxaQ2tnYXpJZ1BTQnJPMXh5WEc0Z0lDQWdkbUZ5SUdSbGMyTWdQU0JQWW1wbFkzUXVaMlYwVDNkdVVISnZjR1Z5ZEhsRVpYTmpjbWx3ZEc5eUtHMHNJR3NwTzF4eVhHNGdJQ0FnYVdZZ0tDRmtaWE5qSUh4OElDaGNJbWRsZEZ3aUlHbHVJR1JsYzJNZ1B5QWhiUzVmWDJWelRXOWtkV3hsSURvZ1pHVnpZeTUzY21sMFlXSnNaU0I4ZkNCa1pYTmpMbU52Ym1acFozVnlZV0pzWlNrcElIdGNjbHh1SUNBZ0lDQWdJQ0JrWlhOaklEMGdleUJsYm5WdFpYSmhZbXhsT2lCMGNuVmxMQ0JuWlhRNklHWjFibU4wYVc5dUtDa2dleUJ5WlhSMWNtNGdiVnRyWFRzZ2ZTQjlPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lDQWdUMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S0c4c0lHc3lMQ0JrWlhOaktUdGNjbHh1ZlNrZ09pQW9ablZ1WTNScGIyNG9ieXdnYlN3Z2F5d2dheklwSUh0Y2NseHVJQ0FnSUdsbUlDaHJNaUE5UFQwZ2RXNWtaV1pwYm1Wa0tTQnJNaUE5SUdzN1hISmNiaUFnSUNCdlcyc3lYU0E5SUcxYmExMDdYSEpjYm4wcE8xeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZlpYaHdiM0owVTNSaGNpaHRMQ0J2S1NCN1hISmNiaUFnSUNCbWIzSWdLSFpoY2lCd0lHbHVJRzBwSUdsbUlDaHdJQ0U5UFNCY0ltUmxabUYxYkhSY0lpQW1KaUFoVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzVvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0c4c0lIQXBLU0JmWDJOeVpXRjBaVUpwYm1ScGJtY29ieXdnYlN3Z2NDazdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNaaGJIVmxjeWh2S1NCN1hISmNiaUFnSUNCMllYSWdjeUE5SUhSNWNHVnZaaUJUZVcxaWIyd2dQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQW1KaUJUZVcxaWIyd3VhWFJsY21GMGIzSXNJRzBnUFNCeklDWW1JRzliYzEwc0lHa2dQU0F3TzF4eVhHNGdJQ0FnYVdZZ0tHMHBJSEpsZEhWeWJpQnRMbU5oYkd3b2J5azdYSEpjYmlBZ0lDQnBaaUFvYnlBbUppQjBlWEJsYjJZZ2J5NXNaVzVuZEdnZ1BUMDlJRndpYm5WdFltVnlYQ0lwSUhKbGRIVnliaUI3WEhKY2JpQWdJQ0FnSUNBZ2JtVjRkRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9ieUFtSmlCcElENDlJRzh1YkdWdVozUm9LU0J2SUQwZ2RtOXBaQ0F3TzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdleUIyWVd4MVpUb2dieUFtSmlCdlcya3JLMTBzSUdSdmJtVTZJQ0Z2SUgwN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVHRjY2x4dUlDQWdJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvY3lBL0lGd2lUMkpxWldOMElHbHpJRzV2ZENCcGRHVnlZV0pzWlM1Y0lpQTZJRndpVTNsdFltOXNMbWwwWlhKaGRHOXlJR2x6SUc1dmRDQmtaV1pwYm1Wa0xsd2lLVHRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmNtVmhaQ2h2TENCdUtTQjdYSEpjYmlBZ0lDQjJZWElnYlNBOUlIUjVjR1Z2WmlCVGVXMWliMndnUFQwOUlGd2lablZ1WTNScGIyNWNJaUFtSmlCdlcxTjViV0p2YkM1cGRHVnlZWFJ2Y2wwN1hISmNiaUFnSUNCcFppQW9JVzBwSUhKbGRIVnliaUJ2TzF4eVhHNGdJQ0FnZG1GeUlHa2dQU0J0TG1OaGJHd29ieWtzSUhJc0lHRnlJRDBnVzEwc0lHVTdYSEpjYmlBZ0lDQjBjbmtnZTF4eVhHNGdJQ0FnSUNBZ0lIZG9hV3hsSUNnb2JpQTlQVDBnZG05cFpDQXdJSHg4SUc0dExTQStJREFwSUNZbUlDRW9jaUE5SUdrdWJtVjRkQ2dwS1M1a2IyNWxLU0JoY2k1d2RYTm9LSEl1ZG1Gc2RXVXBPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lDQWdZMkYwWTJnZ0tHVnljbTl5S1NCN0lHVWdQU0I3SUdWeWNtOXlPaUJsY25KdmNpQjlPeUI5WEhKY2JpQWdJQ0JtYVc1aGJHeDVJSHRjY2x4dUlDQWdJQ0FnSUNCMGNua2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY2lBbUppQWhjaTVrYjI1bElDWW1JQ2h0SUQwZ2FWdGNJbkpsZEhWeWJsd2lYU2twSUcwdVkyRnNiQ2hwS1R0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnWm1sdVlXeHNlU0I3SUdsbUlDaGxLU0IwYUhKdmR5QmxMbVZ5Y205eU95QjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ0lDQnlaWFIxY200Z1lYSTdYSEpjYm4xY2NseHVYSEpjYmk4cUtpQkFaR1Z3Y21WallYUmxaQ0FxTDF4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOXpjSEpsWVdRb0tTQjdYSEpjYmlBZ0lDQm1iM0lnS0haaGNpQmhjaUE5SUZ0ZExDQnBJRDBnTURzZ2FTQThJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZzdJR2tyS3lsY2NseHVJQ0FnSUNBZ0lDQmhjaUE5SUdGeUxtTnZibU5oZENoZlgzSmxZV1FvWVhKbmRXMWxiblJ6VzJsZEtTazdYSEpjYmlBZ0lDQnlaWFIxY200Z1lYSTdYSEpjYm4xY2NseHVYSEpjYmk4cUtpQkFaR1Z3Y21WallYUmxaQ0FxTDF4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOXpjSEpsWVdSQmNuSmhlWE1vS1NCN1hISmNiaUFnSUNCbWIzSWdLSFpoY2lCeklEMGdNQ3dnYVNBOUlEQXNJR2xzSUQwZ1lYSm5kVzFsYm5SekxteGxibWQwYURzZ2FTQThJR2xzT3lCcEt5c3BJSE1nS3owZ1lYSm5kVzFsYm5SelcybGRMbXhsYm1kMGFEdGNjbHh1SUNBZ0lHWnZjaUFvZG1GeUlISWdQU0JCY25KaGVTaHpLU3dnYXlBOUlEQXNJR2tnUFNBd095QnBJRHdnYVd3N0lHa3JLeWxjY2x4dUlDQWdJQ0FnSUNCbWIzSWdLSFpoY2lCaElEMGdZWEpuZFcxbGJuUnpXMmxkTENCcUlEMGdNQ3dnYW13Z1BTQmhMbXhsYm1kMGFEc2dhaUE4SUdwc095QnFLeXNzSUdzckt5bGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NsdHJYU0E5SUdGYmFsMDdYSEpjYmlBZ0lDQnlaWFIxY200Z2NqdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmYzNCeVpXRmtRWEp5WVhrb2RHOHNJR1p5YjIwc0lIQmhZMnNwSUh0Y2NseHVJQ0FnSUdsbUlDaHdZV05ySUh4OElHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ1BUMDlJRElwSUdadmNpQW9kbUZ5SUdrZ1BTQXdMQ0JzSUQwZ1puSnZiUzVzWlc1bmRHZ3NJR0Z5T3lCcElEd2diRHNnYVNzcktTQjdYSEpjYmlBZ0lDQWdJQ0FnYVdZZ0tHRnlJSHg4SUNFb2FTQnBiaUJtY205dEtTa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdGeUtTQmhjaUE5SUVGeWNtRjVMbkJ5YjNSdmRIbHdaUzV6YkdsalpTNWpZV3hzS0daeWIyMHNJREFzSUdrcE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCaGNsdHBYU0E5SUdaeWIyMWJhVjA3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzRnSUNBZ2NtVjBkWEp1SUhSdkxtTnZibU5oZENoaGNpQjhmQ0JCY25KaGVTNXdjbTkwYjNSNWNHVXVjMnhwWTJVdVkyRnNiQ2htY205dEtTazdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJGM1lXbDBLSFlwSUh0Y2NseHVJQ0FnSUhKbGRIVnliaUIwYUdseklHbHVjM1JoYm1ObGIyWWdYMTloZDJGcGRDQS9JQ2gwYUdsekxuWWdQU0IyTENCMGFHbHpLU0E2SUc1bGR5QmZYMkYzWVdsMEtIWXBPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5aGMzbHVZMGRsYm1WeVlYUnZjaWgwYUdselFYSm5MQ0JmWVhKbmRXMWxiblJ6TENCblpXNWxjbUYwYjNJcElIdGNjbHh1SUNBZ0lHbG1JQ2doVTNsdFltOXNMbUZ6ZVc1alNYUmxjbUYwYjNJcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pUZVcxaWIyd3VZWE41Ym1OSmRHVnlZWFJ2Y2lCcGN5QnViM1FnWkdWbWFXNWxaQzVjSWlrN1hISmNiaUFnSUNCMllYSWdaeUE5SUdkbGJtVnlZWFJ2Y2k1aGNIQnNlU2gwYUdselFYSm5MQ0JmWVhKbmRXMWxiblJ6SUh4OElGdGRLU3dnYVN3Z2NTQTlJRnRkTzF4eVhHNGdJQ0FnY21WMGRYSnVJR2tnUFNCN2ZTd2dkbVZ5WWloY0ltNWxlSFJjSWlrc0lIWmxjbUlvWENKMGFISnZkMXdpS1N3Z2RtVnlZaWhjSW5KbGRIVnlibHdpS1N3Z2FWdFRlVzFpYjJ3dVlYTjVibU5KZEdWeVlYUnZjbDBnUFNCbWRXNWpkR2x2YmlBb0tTQjdJSEpsZEhWeWJpQjBhR2x6T3lCOUxDQnBPMXh5WEc0Z0lDQWdablZ1WTNScGIyNGdkbVZ5WWlodUtTQjdJR2xtSUNoblcyNWRLU0JwVzI1ZElEMGdablZ1WTNScGIyNGdLSFlwSUhzZ2NtVjBkWEp1SUc1bGR5QlFjbTl0YVhObEtHWjFibU4wYVc5dUlDaGhMQ0JpS1NCN0lIRXVjSFZ6YUNoYmJpd2dkaXdnWVN3Z1lsMHBJRDRnTVNCOGZDQnlaWE4xYldVb2Jpd2dkaWs3SUgwcE95QjlPeUI5WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJ5WlhOMWJXVW9iaXdnZGlrZ2V5QjBjbmtnZXlCemRHVndLR2RiYmwwb2Rpa3BPeUI5SUdOaGRHTm9JQ2hsS1NCN0lITmxkSFJzWlNoeFd6QmRXek5kTENCbEtUc2dmU0I5WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJ6ZEdWd0tISXBJSHNnY2k1MllXeDFaU0JwYm5OMFlXNWpaVzltSUY5ZllYZGhhWFFnUHlCUWNtOXRhWE5sTG5KbGMyOXNkbVVvY2k1MllXeDFaUzUyS1M1MGFHVnVLR1oxYkdacGJHd3NJSEpsYW1WamRDa2dPaUJ6WlhSMGJHVW9jVnN3WFZzeVhTd2djaWs3SUgxY2NseHVJQ0FnSUdaMWJtTjBhVzl1SUdaMWJHWnBiR3dvZG1Gc2RXVXBJSHNnY21WemRXMWxLRndpYm1WNGRGd2lMQ0IyWVd4MVpTazdJSDFjY2x4dUlDQWdJR1oxYm1OMGFXOXVJSEpsYW1WamRDaDJZV3gxWlNrZ2V5QnlaWE4xYldVb1hDSjBhSEp2ZDF3aUxDQjJZV3gxWlNrN0lIMWNjbHh1SUNBZ0lHWjFibU4wYVc5dUlITmxkSFJzWlNobUxDQjJLU0I3SUdsbUlDaG1LSFlwTENCeExuTm9hV1owS0Nrc0lIRXViR1Z1WjNSb0tTQnlaWE4xYldVb2NWc3dYVnN3WFN3Z2NWc3dYVnN4WFNrN0lIMWNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmWVhONWJtTkVaV3hsWjJGMGIzSW9ieWtnZTF4eVhHNGdJQ0FnZG1GeUlHa3NJSEE3WEhKY2JpQWdJQ0J5WlhSMWNtNGdhU0E5SUh0OUxDQjJaWEppS0Z3aWJtVjRkRndpS1N3Z2RtVnlZaWhjSW5Sb2NtOTNYQ0lzSUdaMWJtTjBhVzl1SUNobEtTQjdJSFJvY205M0lHVTdJSDBwTENCMlpYSmlLRndpY21WMGRYSnVYQ0lwTENCcFcxTjViV0p2YkM1cGRHVnlZWFJ2Y2wwZ1BTQm1kVzVqZEdsdmJpQW9LU0I3SUhKbGRIVnliaUIwYUdsek95QjlMQ0JwTzF4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnZG1WeVlpaHVMQ0JtS1NCN0lHbGJibDBnUFNCdlcyNWRJRDhnWm5WdVkzUnBiMjRnS0hZcElIc2djbVYwZFhKdUlDaHdJRDBnSVhBcElEOGdleUIyWVd4MVpUb2dYMTloZDJGcGRDaHZXMjVkS0hZcEtTd2daRzl1WlRvZ1ptRnNjMlVnZlNBNklHWWdQeUJtS0hZcElEb2dkanNnZlNBNklHWTdJSDFjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZllYTjVibU5XWVd4MVpYTW9ieWtnZTF4eVhHNGdJQ0FnYVdZZ0tDRlRlVzFpYjJ3dVlYTjVibU5KZEdWeVlYUnZjaWtnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lsTjViV0p2YkM1aGMzbHVZMGwwWlhKaGRHOXlJR2x6SUc1dmRDQmtaV1pwYm1Wa0xsd2lLVHRjY2x4dUlDQWdJSFpoY2lCdElEMGdiMXRUZVcxaWIyd3VZWE41Ym1OSmRHVnlZWFJ2Y2wwc0lHazdYSEpjYmlBZ0lDQnlaWFIxY200Z2JTQS9JRzB1WTJGc2JDaHZLU0E2SUNodklEMGdkSGx3Wlc5bUlGOWZkbUZzZFdWeklEMDlQU0JjSW1aMWJtTjBhVzl1WENJZ1B5QmZYM1poYkhWbGN5aHZLU0E2SUc5YlUzbHRZbTlzTG1sMFpYSmhkRzl5WFNncExDQnBJRDBnZTMwc0lIWmxjbUlvWENKdVpYaDBYQ0lwTENCMlpYSmlLRndpZEdoeWIzZGNJaWtzSUhabGNtSW9YQ0p5WlhSMWNtNWNJaWtzSUdsYlUzbHRZbTlzTG1GemVXNWpTWFJsY21GMGIzSmRJRDBnWm5WdVkzUnBiMjRnS0NrZ2V5QnlaWFIxY200Z2RHaHBjenNnZlN3Z2FTazdYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQjJaWEppS0c0cElIc2dhVnR1WFNBOUlHOWJibDBnSmlZZ1puVnVZM1JwYjI0Z0tIWXBJSHNnY21WMGRYSnVJRzVsZHlCUWNtOXRhWE5sS0daMWJtTjBhVzl1SUNoeVpYTnZiSFpsTENCeVpXcGxZM1FwSUhzZ2RpQTlJRzliYmwwb2Rpa3NJSE5sZEhSc1pTaHlaWE52YkhabExDQnlaV3BsWTNRc0lIWXVaRzl1WlN3Z2RpNTJZV3gxWlNrN0lIMHBPeUI5T3lCOVhISmNiaUFnSUNCbWRXNWpkR2x2YmlCelpYUjBiR1VvY21WemIyeDJaU3dnY21WcVpXTjBMQ0JrTENCMktTQjdJRkJ5YjIxcGMyVXVjbVZ6YjJ4MlpTaDJLUzUwYUdWdUtHWjFibU4wYVc5dUtIWXBJSHNnY21WemIyeDJaU2g3SUhaaGJIVmxPaUIyTENCa2IyNWxPaUJrSUgwcE95QjlMQ0J5WldwbFkzUXBPeUI5WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyMWhhMlZVWlcxd2JHRjBaVTlpYW1WamRDaGpiMjlyWldRc0lISmhkeWtnZTF4eVhHNGdJQ0FnYVdZZ0tFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2tnZXlCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29ZMjl2YTJWa0xDQmNJbkpoZDF3aUxDQjdJSFpoYkhWbE9pQnlZWGNnZlNrN0lIMGdaV3h6WlNCN0lHTnZiMnRsWkM1eVlYY2dQU0J5WVhjN0lIMWNjbHh1SUNBZ0lISmxkSFZ5YmlCamIyOXJaV1E3WEhKY2JuMDdYSEpjYmx4eVhHNTJZWElnWDE5elpYUk5iMlIxYkdWRVpXWmhkV3gwSUQwZ1QySnFaV04wTG1OeVpXRjBaU0EvSUNobWRXNWpkR2x2YmlodkxDQjJLU0I3WEhKY2JpQWdJQ0JQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb2J5d2dYQ0prWldaaGRXeDBYQ0lzSUhzZ1pXNTFiV1Z5WVdKc1pUb2dkSEoxWlN3Z2RtRnNkV1U2SUhZZ2ZTazdYSEpjYm4wcElEb2dablZ1WTNScGIyNG9ieXdnZGlrZ2UxeHlYRzRnSUNBZ2IxdGNJbVJsWm1GMWJIUmNJbDBnUFNCMk8xeHlYRzU5TzF4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmYVcxd2IzSjBVM1JoY2lodGIyUXBJSHRjY2x4dUlDQWdJR2xtSUNodGIyUWdKaVlnYlc5a0xsOWZaWE5OYjJSMWJHVXBJSEpsZEhWeWJpQnRiMlE3WEhKY2JpQWdJQ0IyWVhJZ2NtVnpkV3gwSUQwZ2UzMDdYSEpjYmlBZ0lDQnBaaUFvYlc5a0lDRTlJRzUxYkd3cElHWnZjaUFvZG1GeUlHc2dhVzRnYlc5a0tTQnBaaUFvYXlBaFBUMGdYQ0prWldaaGRXeDBYQ0lnSmlZZ1QySnFaV04wTG5CeWIzUnZkSGx3WlM1b1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tHMXZaQ3dnYXlrcElGOWZZM0psWVhSbFFtbHVaR2x1WnloeVpYTjFiSFFzSUcxdlpDd2dheWs3WEhKY2JpQWdJQ0JmWDNObGRFMXZaSFZzWlVSbFptRjFiSFFvY21WemRXeDBMQ0J0YjJRcE8xeHlYRzRnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmFXMXdiM0owUkdWbVlYVnNkQ2h0YjJRcElIdGNjbHh1SUNBZ0lISmxkSFZ5YmlBb2JXOWtJQ1ltSUcxdlpDNWZYMlZ6VFc5a2RXeGxLU0EvSUcxdlpDQTZJSHNnWkdWbVlYVnNkRG9nYlc5a0lIMDdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJOc1lYTnpVSEpwZG1GMFpVWnBaV3hrUjJWMEtISmxZMlZwZG1WeUxDQnpkR0YwWlN3Z2EybHVaQ3dnWmlrZ2UxeHlYRzRnSUNBZ2FXWWdLR3RwYm1RZ1BUMDlJRndpWVZ3aUlDWW1JQ0ZtS1NCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lVSEpwZG1GMFpTQmhZMk5sYzNOdmNpQjNZWE1nWkdWbWFXNWxaQ0IzYVhSb2IzVjBJR0VnWjJWMGRHVnlYQ0lwTzF4eVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCemRHRjBaU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJRDhnY21WalpXbDJaWElnSVQwOUlITjBZWFJsSUh4OElDRm1JRG9nSVhOMFlYUmxMbWhoY3loeVpXTmxhWFpsY2lrcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pEWVc1dWIzUWdjbVZoWkNCd2NtbDJZWFJsSUcxbGJXSmxjaUJtY205dElHRnVJRzlpYW1WamRDQjNhRzl6WlNCamJHRnpjeUJrYVdRZ2JtOTBJR1JsWTJ4aGNtVWdhWFJjSWlrN1hISmNiaUFnSUNCeVpYUjFjbTRnYTJsdVpDQTlQVDBnWENKdFhDSWdQeUJtSURvZ2EybHVaQ0E5UFQwZ1hDSmhYQ0lnUHlCbUxtTmhiR3dvY21WalpXbDJaWElwSURvZ1ppQS9JR1l1ZG1Gc2RXVWdPaUJ6ZEdGMFpTNW5aWFFvY21WalpXbDJaWElwTzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWpiR0Z6YzFCeWFYWmhkR1ZHYVdWc1pGTmxkQ2h5WldObGFYWmxjaXdnYzNSaGRHVXNJSFpoYkhWbExDQnJhVzVrTENCbUtTQjdYSEpjYmlBZ0lDQnBaaUFvYTJsdVpDQTlQVDBnWENKdFhDSXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKUWNtbDJZWFJsSUcxbGRHaHZaQ0JwY3lCdWIzUWdkM0pwZEdGaWJHVmNJaWs3WEhKY2JpQWdJQ0JwWmlBb2EybHVaQ0E5UFQwZ1hDSmhYQ0lnSmlZZ0lXWXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKUWNtbDJZWFJsSUdGalkyVnpjMjl5SUhkaGN5QmtaV1pwYm1Wa0lIZHBkR2h2ZFhRZ1lTQnpaWFIwWlhKY0lpazdYSEpjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JSE4wWVhSbElEMDlQU0JjSW1aMWJtTjBhVzl1WENJZ1B5QnlaV05sYVhabGNpQWhQVDBnYzNSaGRHVWdmSHdnSVdZZ09pQWhjM1JoZEdVdWFHRnpLSEpsWTJWcGRtVnlLU2tnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lrTmhibTV2ZENCM2NtbDBaU0J3Y21sMllYUmxJRzFsYldKbGNpQjBieUJoYmlCdlltcGxZM1FnZDJodmMyVWdZMnhoYzNNZ1pHbGtJRzV2ZENCa1pXTnNZWEpsSUdsMFhDSXBPMXh5WEc0Z0lDQWdjbVYwZFhKdUlDaHJhVzVrSUQwOVBTQmNJbUZjSWlBL0lHWXVZMkZzYkNoeVpXTmxhWFpsY2l3Z2RtRnNkV1VwSURvZ1ppQS9JR1l1ZG1Gc2RXVWdQU0IyWVd4MVpTQTZJSE4wWVhSbExuTmxkQ2h5WldObGFYWmxjaXdnZG1Gc2RXVXBLU3dnZG1Gc2RXVTdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJOc1lYTnpVSEpwZG1GMFpVWnBaV3hrU1c0b2MzUmhkR1VzSUhKbFkyVnBkbVZ5S1NCN1hISmNiaUFnSUNCcFppQW9jbVZqWldsMlpYSWdQVDA5SUc1MWJHd2dmSHdnS0hSNWNHVnZaaUJ5WldObGFYWmxjaUFoUFQwZ1hDSnZZbXBsWTNSY0lpQW1KaUIwZVhCbGIyWWdjbVZqWldsMlpYSWdJVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa3BJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKRFlXNXViM1FnZFhObElDZHBiaWNnYjNCbGNtRjBiM0lnYjI0Z2JtOXVMVzlpYW1WamRGd2lLVHRjY2x4dUlDQWdJSEpsZEhWeWJpQjBlWEJsYjJZZ2MzUmhkR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaUEvSUhKbFkyVnBkbVZ5SUQwOVBTQnpkR0YwWlNBNklITjBZWFJsTG1oaGN5aHlaV05sYVhabGNpazdYSEpjYm4xY2NseHVJaXdpYVcxd2IzSjBJSHNnUjB4VVJreHZZV1JsY2xCc2RXZHBiaXdnUjB4VVJsQmhjbk5sY2lCOUlHWnliMjBnSjNSb2NtVmxMMlY0WVcxd2JHVnpMMnB6YlM5c2IyRmtaWEp6TDBkTVZFWk1iMkZrWlhJdWFuTW5PMXh1YVcxd2IzSjBJQ29nWVhNZ1NFUlNSVzFwYzNOcGRtVk5kV3gwYVhCc2FXVnlVMk5vWlcxaElHWnliMjBnSjBCd2FYaHBkaTkwZVhCbGN5MTJjbTFqTFcxaGRHVnlhV0ZzY3kxb1pISXRaVzFwYzNOcGRtVXRiWFZzZEdsd2JHbGxjaTB4TGpBbk8xeHVhVzF3YjNKMElIc2dSMHhVUmlCaGN5QkhURlJHVTJOb1pXMWhJSDBnWm5KdmJTQW5RR2RzZEdZdGRISmhibk5tYjNKdEwyTnZjbVVuTzF4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVmxKTlRXRjBaWEpwWVd4elNFUlNSVzFwYzNOcGRtVk5kV3gwYVhCc2FXVnlURzloWkdWeVVHeDFaMmx1SUdsdGNHeGxiV1Z1ZEhNZ1IweFVSa3h2WVdSbGNsQnNkV2RwYmlCN1hHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1JWaFVSVTVUU1U5T1gwNUJUVVVnUFNBblZsSk5RMTl0WVhSbGNtbGhiSE5mYUdSeVgyVnRhWE56YVhabFRYVnNkR2x3YkdsbGNpY2dZWE1nWTI5dWMzUTdYRzVjYmlBZ2NIVmliR2xqSUhKbFlXUnZibXg1SUhCaGNuTmxjam9nUjB4VVJsQmhjbk5sY2p0Y2JseHVJQ0J3ZFdKc2FXTWdaMlYwSUc1aGJXVW9LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnlaWFIxY200Z1ZsSk5UV0YwWlhKcFlXeHpTRVJTUlcxcGMzTnBkbVZOZFd4MGFYQnNhV1Z5VEc5aFpHVnlVR3gxWjJsdUxrVllWRVZPVTBsUFRsOU9RVTFGTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdOdmJuTjBjblZqZEc5eUtIQmhjbk5sY2pvZ1IweFVSbEJoY25ObGNpa2dlMXh1SUNBZ0lIUm9hWE11Y0dGeWMyVnlJRDBnY0dGeWMyVnlPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR0Z6ZVc1aklHVjRkR1Z1WkUxaGRHVnlhV0ZzVUdGeVlXMXpLRzFoZEdWeWFXRnNTVzVrWlhnNklHNTFiV0psY2l3Z2JXRjBaWEpwWVd4UVlYSmhiWE02SUhzZ1cydGxlVG9nYzNSeWFXNW5YVG9nWVc1NUlIMHBPaUJRY205dGFYTmxQSFp2YVdRK0lIdGNiaUFnSUNCamIyNXpkQ0JsZUhSbGJuTnBiMjRnUFNCMGFHbHpMbDluWlhSSVJGSkZiV2x6YzJsMlpVMTFiSFJwY0d4cFpYSkZlSFJsYm5OcGIyNG9iV0YwWlhKcFlXeEpibVJsZUNrN1hHNGdJQ0FnYVdZZ0tHVjRkR1Z1YzJsdmJpQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1ZHaHBjeUJsZUhSbGJuTnBiMjRnYVhNZ1lYSmphR2wyWldRdUlFVnRhWFFnZDJGeWJtbHVaMXh1SUNBZ0lDOHZJRk5sWlRvZ2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwzWnliUzFqTDNaeWJTMXpjR1ZqYVdacFkyRjBhVzl1TDNCMWJHd3ZNemMxWEc0Z0lDQWdZMjl1YzI5c1pTNTNZWEp1S0Z4dUlDQWdJQ0FnSjFaU1RVMWhkR1Z5YVdGc2MwaEVVa1Z0YVhOemFYWmxUWFZzZEdsd2JHbGxja3h2WVdSbGNsQnNkV2RwYmpvZ1lGWlNUVU5mYldGMFpYSnBZV3h6WDJoa2NsOWxiV2x6YzJsMlpVMTFiSFJwY0d4cFpYSmdJR2x6SUdGeVkyaHBkbVZrTGlCVmMyVWdZRXRJVWw5dFlYUmxjbWxoYkhOZlpXMXBjM05wZG1WZmMzUnlaVzVuZEdoZ0lHbHVjM1JsWVdRdUp5eGNiaUFnSUNBcE8xeHVYRzRnSUNBZ1kyOXVjM1FnWlcxcGMzTnBkbVZOZFd4MGFYQnNhV1Z5SUQwZ1pYaDBaVzV6YVc5dUxtVnRhWE56YVhabFRYVnNkR2x3YkdsbGNqdGNiaUFnSUNCdFlYUmxjbWxoYkZCaGNtRnRjeTVsYldsemMybDJaVWx1ZEdWdWMybDBlU0E5SUdWdGFYTnphWFpsVFhWc2RHbHdiR2xsY2p0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1gyZGxkRWhFVWtWdGFYTnphWFpsVFhWc2RHbHdiR2xsY2tWNGRHVnVjMmx2YmloY2JpQWdJQ0J0WVhSbGNtbGhiRWx1WkdWNE9pQnVkVzFpWlhJc1hHNGdJQ2s2SUVoRVVrVnRhWE56YVhabFRYVnNkR2x3YkdsbGNsTmphR1Z0WVM1V1VrMURUV0YwWlhKcFlXeHpTRVJTUlcxcGMzTnBkbVZOZFd4MGFYQnNhV1Z5SUh3Z2RXNWtaV1pwYm1Wa0lIdGNiaUFnSUNCamIyNXpkQ0J3WVhKelpYSWdQU0IwYUdsekxuQmhjbk5sY2p0Y2JpQWdJQ0JqYjI1emRDQnFjMjl1SUQwZ2NHRnljMlZ5TG1wemIyNGdZWE1nUjB4VVJsTmphR1Z0WVM1SlIweFVSanRjYmx4dUlDQWdJR052Ym5OMElHMWhkR1Z5YVdGc1JHVm1JRDBnYW5OdmJpNXRZWFJsY21saGJITS9MbHR0WVhSbGNtbGhiRWx1WkdWNFhUdGNibHh1SUNBZ0lHbG1JQ2h0WVhSbGNtbGhiRVJsWmlBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCamIyNXpiMnhsTG5kaGNtNG9YRzRnSUNBZ0lDQWdJR0JXVWsxTllYUmxjbWxoYkhOSVJGSkZiV2x6YzJsMlpVMTFiSFJwY0d4cFpYSk1iMkZrWlhKUWJIVm5hVzQ2SUVGMGRHVnRjSFFnZEc4Z2RYTmxJRzFoZEdWeWFXRnNjMXNrZTIxaGRHVnlhV0ZzU1c1a1pYaDlYU0J2WmlCbmJGUkdJR0oxZENCMGFHVWdiV0YwWlhKcFlXd2daRzlsYzI0bmRDQmxlR2x6ZEdBc1hHNGdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQmxlSFJsYm5OcGIyNGdQU0J0WVhSbGNtbGhiRVJsWmk1bGVIUmxibk5wYjI1elB5NWJWbEpOVFdGMFpYSnBZV3h6U0VSU1JXMXBjM05wZG1WTmRXeDBhWEJzYVdWeVRHOWhaR1Z5VUd4MVoybHVMa1ZZVkVWT1UwbFBUbDlPUVUxRlhTQmhjMXh1SUNBZ0lDQWdmQ0JJUkZKRmJXbHpjMmwyWlUxMWJIUnBjR3hwWlhKVFkyaGxiV0V1VmxKTlEwMWhkR1Z5YVdGc2MwaEVVa1Z0YVhOemFYWmxUWFZzZEdsd2JHbGxjbHh1SUNBZ0lDQWdmQ0IxYm1SbFptbHVaV1E3WEc0Z0lDQWdhV1lnS0dWNGRHVnVjMmx2YmlBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZFc1a1pXWnBibVZrTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQmxlSFJsYm5OcGIyNDdYRzRnSUgxY2JuMWNiaUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096dEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRnZSMEU3UVVGRFR5eFRRVUZUTEZOQlFWTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFTkJRVU1zUlVGQlJTeFRRVUZUTEVWQlFVVTdRVUZETjBRc1NVRkJTU3hUUVVGVExFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNSVUZCUlN4UFFVRlBMRXRCUVVzc1dVRkJXU3hEUVVGRExFZEJRVWNzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRlZCUVZVc1QwRkJUeXhGUVVGRkxFVkJRVVVzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVU3UVVGRGFFZ3NTVUZCU1N4UFFVRlBMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNSVUZCUlN4VlFVRlZMRTlCUVU4c1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGREwwUXNVVUZCVVN4VFFVRlRMRk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRMjVITEZGQlFWRXNVMEZCVXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRM1JITEZGQlFWRXNVMEZCVXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzVFVGQlRTeERRVUZETEVsQlFVa3NSMEZCUnl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4UlFVRlJMRU5CUVVNc1EwRkJReXhGUVVGRk8wRkJRM1JJTEZGQlFWRXNTVUZCU1N4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExGTkJRVk1zUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRlZCUVZVc1NVRkJTU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUXpsRkxFdEJRVXNzUTBGQlF5eERRVUZETzBGQlExQTdPMDFEZEVoaExEWkRRVUUyUXl4RFFVRkJPMEZCUzNoRUxFbEJRVUVzU1VGQlZ5eEpRVUZKTEVkQlFVRTdVVUZEWWl4UFFVRlBMRFpEUVVFMlF5eERRVUZETEdOQlFXTXNRMEZCUXp0TFFVTnlSVHRCUVVWRUxFbEJRVUVzVjBGQlFTeERRVUZ0UWl4TlFVRnJRaXhGUVVGQk8wRkJRMjVETEZGQlFVRXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU03UzBGRGRFSTdTVUZGV1N4dlFrRkJiMElzUTBGQlF5eGhRVUZ4UWl4RlFVRkZMR05CUVhORExFVkJRVUU3TzFsQlF6ZEdMRTFCUVUwc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eHJRMEZCYTBNc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dFpRVU42UlN4SlFVRkpMRk5CUVZNc1NVRkJTU3hKUVVGSkxFVkJRVVU3WjBKQlEzSkNMRTlCUVU4N1FVRkRVaXhoUVVGQk96czdRVUZKUkN4WlFVRkJMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRMVlzYjBwQlFXOUtMRU5CUTNKS0xFTkJRVU03UVVGRlJpeFpRVUZCTEUxQlFVMHNhMEpCUVd0Q0xFZEJRVWNzVTBGQlV5eERRVUZETEd0Q1FVRnJRaXhEUVVGRE8wRkJRM2hFTEZsQlFVRXNZMEZCWXl4RFFVRkRMR2xDUVVGcFFpeEhRVUZITEd0Q1FVRnJRaXhEUVVGRE8xTkJRM1pFTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUVVFN1FVRkZUeXhKUVVGQkxHdERRVUZyUXl4RFFVTjRReXhoUVVGeFFpeEZRVUZCT3p0QlFVVnlRaXhSUVVGQkxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRNMElzVVVGQlFTeE5RVUZOTEVsQlFVa3NSMEZCUnl4TlFVRk5MRU5CUVVNc1NVRkJkMElzUTBGQlF6dFJRVVUzUXl4TlFVRk5MRmRCUVZjc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZKTEVOQlFVTXNVMEZCVXl4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGSExHRkJRV0VzUTBGQlF5eERRVUZETzFGQlJYQkVMRWxCUVVrc1YwRkJWeXhKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU4yUWl4WlFVRkJMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRMVlzTWtWQlFUSkZMR0ZCUVdFc1EwRkJRU3gzUTBGQlFTeERRVUV3UXl4RFFVTnVTU3hEUVVGRE8wRkJRMFlzV1VGQlFTeFBRVUZQTEZOQlFWTXNRMEZCUXp0QlFVTnNRaXhUUVVGQk8xRkJSVVFzVFVGQlRTeFRRVUZUTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1YwRkJWeXhEUVVGRExGVkJRVlVzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUnl3MlEwRkJOa01zUTBGQlF5eGpRVUZqTEVOQlJURkdMRU5CUVVNN1VVRkRaQ3hKUVVGSkxGTkJRVk1zU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZEY2tJc1dVRkJRU3hQUVVGUExGTkJRVk1zUTBGQlF6dEJRVU5zUWl4VFFVRkJPMEZCUlVRc1VVRkJRU3hQUVVGUExGTkJRVk1zUTBGQlF6dExRVU5zUWpzN1FVRnVSR0VzTmtOQlFXTXNRMEZCUVN4alFVRkJMRWRCUVVjc2RVTkJRV2RFT3pzN095SjlcbiIsIi8qIVxuICogQHBpeGl2L3RocmVlLXZybS1tYXRlcmlhbHMtdjBjb21wYXQgdjIuMC42XG4gKiBWUk0wLjAgbWF0ZXJpYWxzIGNvbXBhdGliaWxpdHkgbGF5ZXIgcGx1Z2luIGZvciBAcGl4aXYvdGhyZWUtdnJtXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjMgcGl4aXYgSW5jLlxuICogQHBpeGl2L3RocmVlLXZybS1tYXRlcmlhbHMtdjBjb21wYXQgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgTUlUIExpY2Vuc2VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9waXhpdi90aHJlZS12cm0vYmxvYi9yZWxlYXNlL0xJQ0VOU0VcbiAqL1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuXHJcbmZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cblxuZnVuY3Rpb24gZ2FtbWFFT1RGKGUpIHtcbiAgICByZXR1cm4gTWF0aC5wb3coZSwgMi4yKTtcbn1cblxuY2xhc3MgVlJNTWF0ZXJpYWxzVjBDb21wYXRQbHVnaW4ge1xuICAgIGdldCBuYW1lKCkge1xuICAgICAgICByZXR1cm4gJ1ZSTU1hdGVyaWFsc1YwQ29tcGF0UGx1Z2luJztcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGFyc2VyKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG4gICAgICAgIHRoaXMuX3JlbmRlclF1ZXVlTWFwVHJhbnNwYXJlbnQgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuX3JlbmRlclF1ZXVlTWFwVHJhbnNwYXJlbnRaV3JpdGUgPSBuZXcgTWFwKCk7XG4gICAgICAgIC8vIFdPUktBUk9VTkQ6IEFkZCBLSFJfdGV4dHVyZV90cmFuc2Zvcm0gdG8gZXh0ZW5zaW9uc1VzZWRcbiAgICAgICAgLy8gSXQgaXMgdG9vIGxhdGUgdG8gYWRkIHRoaXMgaW4gYmVmb3JlUm9vdFxuICAgICAgICBjb25zdCBqc29uID0gdGhpcy5wYXJzZXIuanNvbjtcbiAgICAgICAganNvbi5leHRlbnNpb25zVXNlZCA9IChfYSA9IGpzb24uZXh0ZW5zaW9uc1VzZWQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFtdO1xuICAgICAgICBpZiAoanNvbi5leHRlbnNpb25zVXNlZC5pbmRleE9mKCdLSFJfdGV4dHVyZV90cmFuc2Zvcm0nKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGpzb24uZXh0ZW5zaW9uc1VzZWQucHVzaCgnS0hSX3RleHR1cmVfdHJhbnNmb3JtJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYmVmb3JlUm9vdCgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QganNvbiA9IHRoaXMucGFyc2VyLmpzb247XG4gICAgICAgICAgICAvLyBlYXJseSBhYm9ydCBpZiBpdCBkb2Vzbid0IHVzZSBWMFZSTVxuICAgICAgICAgICAgY29uc3QgdjBWUk1FeHRlbnNpb24gPSAoX2EgPSBqc29uLmV4dGVuc2lvbnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVsnVlJNJ107XG4gICAgICAgICAgICBjb25zdCB2ME1hdGVyaWFsUHJvcGVydGllcyA9IHYwVlJNRXh0ZW5zaW9uID09PSBudWxsIHx8IHYwVlJNRXh0ZW5zaW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2MFZSTUV4dGVuc2lvbi5tYXRlcmlhbFByb3BlcnRpZXM7XG4gICAgICAgICAgICBpZiAoIXYwTWF0ZXJpYWxQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcG9wdWxhdGUgcmVuZGVyIHF1ZXVlIG1hcFxuICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVSZW5kZXJRdWV1ZU1hcCh2ME1hdGVyaWFsUHJvcGVydGllcyk7XG4gICAgICAgICAgICAvLyBjb252ZXJ0IFYwIG1hdGVyaWFsIHByb3BlcnRpZXMgaW50byBWMSBjb21wYXRpYmxlIGZvcm1hdFxuICAgICAgICAgICAgdjBNYXRlcmlhbFByb3BlcnRpZXMuZm9yRWFjaCgobWF0ZXJpYWxQcm9wZXJ0aWVzLCBtYXRlcmlhbEluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRlcmlhbERlZiA9IChfYSA9IGpzb24ubWF0ZXJpYWxzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbbWF0ZXJpYWxJbmRleF07XG4gICAgICAgICAgICAgICAgaWYgKG1hdGVyaWFsRGVmID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBWUk1NYXRlcmlhbHNWMENvbXBhdFBsdWdpbjogQXR0ZW1wdCB0byB1c2UgbWF0ZXJpYWxzWyR7bWF0ZXJpYWxJbmRleH1dIG9mIGdsVEYgYnV0IHRoZSBtYXRlcmlhbCBkb2Vzbid0IGV4aXN0YCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1hdGVyaWFsUHJvcGVydGllcy5zaGFkZXIgPT09ICdWUk0vTVRvb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsID0gdGhpcy5fcGFyc2VWME1Ub29uUHJvcGVydGllcyhtYXRlcmlhbFByb3BlcnRpZXMsIG1hdGVyaWFsRGVmKTtcbiAgICAgICAgICAgICAgICAgICAganNvbi5tYXRlcmlhbHNbbWF0ZXJpYWxJbmRleF0gPSBtYXRlcmlhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKF9iID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnNoYWRlcikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnN0YXJ0c1dpdGgoJ1ZSTS9VbmxpdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsID0gdGhpcy5fcGFyc2VWMFVubGl0UHJvcGVydGllcyhtYXRlcmlhbFByb3BlcnRpZXMsIG1hdGVyaWFsRGVmKTtcbiAgICAgICAgICAgICAgICAgICAganNvbi5tYXRlcmlhbHNbbWF0ZXJpYWxJbmRleF0gPSBtYXRlcmlhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWF0ZXJpYWxQcm9wZXJ0aWVzLnNoYWRlciA9PT0gJ1ZSTV9VU0VfR0xURlNIQURFUicpIDtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBWUk1NYXRlcmlhbHNWMENvbXBhdFBsdWdpbjogVW5rbm93biBzaGFkZXI6ICR7bWF0ZXJpYWxQcm9wZXJ0aWVzLnNoYWRlcn1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9wYXJzZVYwTVRvb25Qcm9wZXJ0aWVzKG1hdGVyaWFsUHJvcGVydGllcywgc2NoZW1hTWF0ZXJpYWwpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rLCBfbCwgX20sIF9vLCBfcCwgX3EsIF9yLCBfcywgX3QsIF91LCBfdiwgX3csIF94LCBfeSwgX3osIF8wLCBfMSwgXzIsIF8zLCBfNCwgXzUsIF82LCBfNywgXzgsIF85LCBfMTAsIF8xMSwgXzEyLCBfMTMsIF8xNCwgXzE1LCBfMTYsIF8xNywgXzE4LCBfMTk7XG4gICAgICAgIGNvbnN0IGlzVHJhbnNwYXJlbnQgPSAoX2IgPSAoX2EgPSBtYXRlcmlhbFByb3BlcnRpZXMua2V5d29yZE1hcCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWydfQUxQSEFCTEVORF9PTiddKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBmYWxzZTtcbiAgICAgICAgY29uc3QgZW5hYmxlZFpXcml0ZSA9ICgoX2MgPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NbJ19aV3JpdGUnXSkgPT09IDE7XG4gICAgICAgIGNvbnN0IHRyYW5zcGFyZW50V2l0aFpXcml0ZSA9IGVuYWJsZWRaV3JpdGUgJiYgaXNUcmFuc3BhcmVudDtcbiAgICAgICAgY29uc3QgcmVuZGVyUXVldWVPZmZzZXROdW1iZXIgPSB0aGlzLl92MFBhcnNlUmVuZGVyUXVldWUobWF0ZXJpYWxQcm9wZXJ0aWVzKTtcbiAgICAgICAgY29uc3QgaXNDdXRvZmYgPSAoX2UgPSAoX2QgPSBtYXRlcmlhbFByb3BlcnRpZXMua2V5d29yZE1hcCkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kWydfQUxQSEFURVNUX09OJ10pICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6IGZhbHNlO1xuICAgICAgICBjb25zdCBhbHBoYU1vZGUgPSBpc1RyYW5zcGFyZW50ID8gJ0JMRU5EJyA6IGlzQ3V0b2ZmID8gJ01BU0snIDogJ09QQVFVRSc7XG4gICAgICAgIGNvbnN0IGFscGhhQ3V0b2ZmID0gaXNDdXRvZmYgPyAoX2YgPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2ZbJ19DdXRvZmYnXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgY3VsbE1vZGUgPSAoX2ggPSAoX2cgPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2dbJ19DdWxsTW9kZSddKSAhPT0gbnVsbCAmJiBfaCAhPT0gdm9pZCAwID8gX2ggOiAyOyAvLyBlbnVtLCB7IE9mZiwgRnJvbnQsIEJhY2sgfVxuICAgICAgICBjb25zdCBkb3VibGVTaWRlZCA9IGN1bGxNb2RlID09PSAwO1xuICAgICAgICBjb25zdCB0ZXh0dXJlVHJhbnNmb3JtRXh0ID0gdGhpcy5fcG9ydFRleHR1cmVUcmFuc2Zvcm0obWF0ZXJpYWxQcm9wZXJ0aWVzKTtcbiAgICAgICAgY29uc3QgYmFzZUNvbG9yRmFjdG9yID0gKF9rID0gKF9qID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnZlY3RvclByb3BlcnRpZXMpID09PSBudWxsIHx8IF9qID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfalsnX0NvbG9yJ10pID09PSBudWxsIHx8IF9rID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfay5tYXAoKHYsIGkpID0+IChpID09PSAzID8gdiA6IGdhbW1hRU9URih2KSkpO1xuICAgICAgICBjb25zdCBiYXNlQ29sb3JUZXh0dXJlSW5kZXggPSAoX2wgPSBtYXRlcmlhbFByb3BlcnRpZXMudGV4dHVyZVByb3BlcnRpZXMpID09PSBudWxsIHx8IF9sID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbFsnX01haW5UZXgnXTtcbiAgICAgICAgY29uc3QgYmFzZUNvbG9yVGV4dHVyZSA9IGJhc2VDb2xvclRleHR1cmVJbmRleCAhPSBudWxsXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBpbmRleDogYmFzZUNvbG9yVGV4dHVyZUluZGV4LFxuICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6IE9iamVjdC5hc3NpZ24oe30sIHRleHR1cmVUcmFuc2Zvcm1FeHQpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IG5vcm1hbFRleHR1cmVTY2FsZSA9IChfbSA9IG1hdGVyaWFsUHJvcGVydGllcy5mbG9hdFByb3BlcnRpZXMpID09PSBudWxsIHx8IF9tID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbVsnX0J1bXBTY2FsZSddO1xuICAgICAgICBjb25zdCBub3JtYWxUZXh0dXJlSW5kZXggPSAoX28gPSBtYXRlcmlhbFByb3BlcnRpZXMudGV4dHVyZVByb3BlcnRpZXMpID09PSBudWxsIHx8IF9vID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb1snX0J1bXBNYXAnXTtcbiAgICAgICAgY29uc3Qgbm9ybWFsVGV4dHVyZSA9IG5vcm1hbFRleHR1cmVJbmRleCAhPSBudWxsXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBpbmRleDogbm9ybWFsVGV4dHVyZUluZGV4LFxuICAgICAgICAgICAgICAgIHNjYWxlOiBub3JtYWxUZXh0dXJlU2NhbGUsXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uczogT2JqZWN0LmFzc2lnbih7fSwgdGV4dHVyZVRyYW5zZm9ybUV4dCksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgZW1pc3NpdmVGYWN0b3IgPSAoX3EgPSAoX3AgPSBtYXRlcmlhbFByb3BlcnRpZXMudmVjdG9yUHJvcGVydGllcykgPT09IG51bGwgfHwgX3AgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9wWydfRW1pc3Npb25Db2xvciddKSA9PT0gbnVsbCB8fCBfcSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3EubWFwKGdhbW1hRU9URik7XG4gICAgICAgIGNvbnN0IGVtaXNzaXZlVGV4dHVyZUluZGV4ID0gKF9yID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnRleHR1cmVQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfciA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3JbJ19FbWlzc2lvbk1hcCddO1xuICAgICAgICBjb25zdCBlbWlzc2l2ZVRleHR1cmUgPSBlbWlzc2l2ZVRleHR1cmVJbmRleCAhPSBudWxsXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBpbmRleDogZW1pc3NpdmVUZXh0dXJlSW5kZXgsXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uczogT2JqZWN0LmFzc2lnbih7fSwgdGV4dHVyZVRyYW5zZm9ybUV4dCksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3Qgc2hhZGVDb2xvckZhY3RvciA9IChfdCA9IChfcyA9IG1hdGVyaWFsUHJvcGVydGllcy52ZWN0b3JQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3NbJ19TaGFkZUNvbG9yJ10pID09PSBudWxsIHx8IF90ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdC5tYXAoZ2FtbWFFT1RGKTtcbiAgICAgICAgY29uc3Qgc2hhZGVNdWx0aXBseVRleHR1cmVJbmRleCA9IChfdSA9IG1hdGVyaWFsUHJvcGVydGllcy50ZXh0dXJlUHJvcGVydGllcykgPT09IG51bGwgfHwgX3UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF91WydfU2hhZGVUZXh0dXJlJ107XG4gICAgICAgIGNvbnN0IHNoYWRlTXVsdGlwbHlUZXh0dXJlID0gc2hhZGVNdWx0aXBseVRleHR1cmVJbmRleCAhPSBudWxsXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBpbmRleDogc2hhZGVNdWx0aXBseVRleHR1cmVJbmRleCxcbiAgICAgICAgICAgICAgICBleHRlbnNpb25zOiBPYmplY3QuYXNzaWduKHt9LCB0ZXh0dXJlVHJhbnNmb3JtRXh0KSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAvLyAvLyBjb252ZXJ0IHYwIHNoYWRlIHNoaWZ0IC8gc2hhZGUgdG9vbnlcbiAgICAgICAgbGV0IHNoYWRpbmdTaGlmdEZhY3RvciA9IChfdyA9IChfdiA9IG1hdGVyaWFsUHJvcGVydGllcy5mbG9hdFByb3BlcnRpZXMpID09PSBudWxsIHx8IF92ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdlsnX1NoYWRlU2hpZnQnXSkgIT09IG51bGwgJiYgX3cgIT09IHZvaWQgMCA/IF93IDogMC4wO1xuICAgICAgICBsZXQgc2hhZGluZ1Rvb255RmFjdG9yID0gKF95ID0gKF94ID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmZsb2F0UHJvcGVydGllcykgPT09IG51bGwgfHwgX3ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF94WydfU2hhZGVUb29ueSddKSAhPT0gbnVsbCAmJiBfeSAhPT0gdm9pZCAwID8gX3kgOiAwLjk7XG4gICAgICAgIHNoYWRpbmdUb29ueUZhY3RvciA9IFRIUkVFLk1hdGhVdGlscy5sZXJwKHNoYWRpbmdUb29ueUZhY3RvciwgMS4wLCAwLjUgKyAwLjUgKiBzaGFkaW5nU2hpZnRGYWN0b3IpO1xuICAgICAgICBzaGFkaW5nU2hpZnRGYWN0b3IgPSAtc2hhZGluZ1NoaWZ0RmFjdG9yIC0gKDEuMCAtIHNoYWRpbmdUb29ueUZhY3Rvcik7XG4gICAgICAgIGNvbnN0IGdpSW50ZW5zaXR5RmFjdG9yID0gKF96ID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmZsb2F0UHJvcGVydGllcykgPT09IG51bGwgfHwgX3ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF96WydfSW5kaXJlY3RMaWdodEludGVuc2l0eSddO1xuICAgICAgICBjb25zdCBnaUVxdWFsaXphdGlvbkZhY3RvciA9IGdpSW50ZW5zaXR5RmFjdG9yID8gMS4wIC0gZ2lJbnRlbnNpdHlGYWN0b3IgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IG1hdGNhcFRleHR1cmVJbmRleCA9IChfMCA9IG1hdGVyaWFsUHJvcGVydGllcy50ZXh0dXJlUHJvcGVydGllcykgPT09IG51bGwgfHwgXzAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF8wWydfU3BoZXJlQWRkJ107XG4gICAgICAgIGNvbnN0IG1hdGNhcEZhY3RvciA9IG1hdGNhcFRleHR1cmVJbmRleCAhPSBudWxsID8gWzEuMCwgMS4wLCAxLjBdIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBtYXRjYXBUZXh0dXJlID0gbWF0Y2FwVGV4dHVyZUluZGV4ICE9IG51bGxcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIGluZGV4OiBtYXRjYXBUZXh0dXJlSW5kZXgsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgcmltTGlnaHRpbmdNaXhGYWN0b3IgPSAoXzEgPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfMSA9PT0gdm9pZCAwID8gdm9pZCAwIDogXzFbJ19SaW1MaWdodGluZ01peCddO1xuICAgICAgICBjb25zdCByaW1NdWx0aXBseVRleHR1cmVJbmRleCA9IChfMiA9IG1hdGVyaWFsUHJvcGVydGllcy50ZXh0dXJlUHJvcGVydGllcykgPT09IG51bGwgfHwgXzIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF8yWydfUmltVGV4dHVyZSddO1xuICAgICAgICBjb25zdCByaW1NdWx0aXBseVRleHR1cmUgPSByaW1NdWx0aXBseVRleHR1cmVJbmRleCAhPSBudWxsXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBpbmRleDogcmltTXVsdGlwbHlUZXh0dXJlSW5kZXgsXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uczogT2JqZWN0LmFzc2lnbih7fSwgdGV4dHVyZVRyYW5zZm9ybUV4dCksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgcGFyYW1ldHJpY1JpbUNvbG9yRmFjdG9yID0gKF80ID0gKF8zID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnZlY3RvclByb3BlcnRpZXMpID09PSBudWxsIHx8IF8zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfM1snX1JpbUNvbG9yJ10pID09PSBudWxsIHx8IF80ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfNC5tYXAoZ2FtbWFFT1RGKTtcbiAgICAgICAgY29uc3QgcGFyYW1ldHJpY1JpbUZyZXNuZWxQb3dlckZhY3RvciA9IChfNSA9IG1hdGVyaWFsUHJvcGVydGllcy5mbG9hdFByb3BlcnRpZXMpID09PSBudWxsIHx8IF81ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfNVsnX1JpbUZyZXNuZWxQb3dlciddO1xuICAgICAgICBjb25zdCBwYXJhbWV0cmljUmltTGlmdEZhY3RvciA9IChfNiA9IG1hdGVyaWFsUHJvcGVydGllcy5mbG9hdFByb3BlcnRpZXMpID09PSBudWxsIHx8IF82ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfNlsnX1JpbUxpZnQnXTtcbiAgICAgICAgY29uc3Qgb3V0bGluZVdpZHRoTW9kZSA9IFsnbm9uZScsICd3b3JsZENvb3JkaW5hdGVzJywgJ3NjcmVlbkNvb3JkaW5hdGVzJ11bKF84ID0gKF83ID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmZsb2F0UHJvcGVydGllcykgPT09IG51bGwgfHwgXzcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF83WydfT3V0bGluZVdpZHRoTW9kZSddKSAhPT0gbnVsbCAmJiBfOCAhPT0gdm9pZCAwID8gXzggOiAwXTtcbiAgICAgICAgLy8gLy8gdjAgb3V0bGluZVdpZHRoRmFjdG9yIGlzIGluIGNlbnRpbWV0ZXJcbiAgICAgICAgbGV0IG91dGxpbmVXaWR0aEZhY3RvciA9IChfMTAgPSAoXzkgPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfOSA9PT0gdm9pZCAwID8gdm9pZCAwIDogXzlbJ19PdXRsaW5lV2lkdGgnXSkgIT09IG51bGwgJiYgXzEwICE9PSB2b2lkIDAgPyBfMTAgOiAwLjA7XG4gICAgICAgIG91dGxpbmVXaWR0aEZhY3RvciA9IDAuMDEgKiBvdXRsaW5lV2lkdGhGYWN0b3I7XG4gICAgICAgIGNvbnN0IG91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZUluZGV4ID0gKF8xMSA9IG1hdGVyaWFsUHJvcGVydGllcy50ZXh0dXJlUHJvcGVydGllcykgPT09IG51bGwgfHwgXzExID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfMTFbJ19PdXRsaW5lV2lkdGhUZXh0dXJlJ107XG4gICAgICAgIGNvbnN0IG91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZSA9IG91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZUluZGV4ICE9IG51bGxcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIGluZGV4OiBvdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmVJbmRleCxcbiAgICAgICAgICAgICAgICBleHRlbnNpb25zOiBPYmplY3QuYXNzaWduKHt9LCB0ZXh0dXJlVHJhbnNmb3JtRXh0KSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBvdXRsaW5lQ29sb3JGYWN0b3IgPSAoXzEzID0gKF8xMiA9IG1hdGVyaWFsUHJvcGVydGllcy52ZWN0b3JQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfMTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF8xMlsnX091dGxpbmVDb2xvciddKSA9PT0gbnVsbCB8fCBfMTMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF8xMy5tYXAoZ2FtbWFFT1RGKTtcbiAgICAgICAgY29uc3Qgb3V0bGluZUNvbG9yTW9kZSA9IChfMTQgPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfMTQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF8xNFsnX091dGxpbmVDb2xvck1vZGUnXTsgLy8gZW51bSwgeyBGaXhlZCwgTWl4ZWQgfVxuICAgICAgICBjb25zdCBvdXRsaW5lTGlnaHRpbmdNaXhGYWN0b3IgPSBvdXRsaW5lQ29sb3JNb2RlID09PSAxID8gKF8xNSA9IG1hdGVyaWFsUHJvcGVydGllcy5mbG9hdFByb3BlcnRpZXMpID09PSBudWxsIHx8IF8xNSA9PT0gdm9pZCAwID8gdm9pZCAwIDogXzE1WydfT3V0bGluZUxpZ2h0aW5nTWl4J10gOiAwLjA7XG4gICAgICAgIGNvbnN0IHV2QW5pbWF0aW9uTWFza1RleHR1cmVJbmRleCA9IChfMTYgPSBtYXRlcmlhbFByb3BlcnRpZXMudGV4dHVyZVByb3BlcnRpZXMpID09PSBudWxsIHx8IF8xNiA9PT0gdm9pZCAwID8gdm9pZCAwIDogXzE2WydfVXZBbmltTWFza1RleHR1cmUnXTtcbiAgICAgICAgY29uc3QgdXZBbmltYXRpb25NYXNrVGV4dHVyZSA9IHV2QW5pbWF0aW9uTWFza1RleHR1cmVJbmRleCAhPSBudWxsXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBpbmRleDogdXZBbmltYXRpb25NYXNrVGV4dHVyZUluZGV4LFxuICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6IE9iamVjdC5hc3NpZ24oe30sIHRleHR1cmVUcmFuc2Zvcm1FeHQpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHV2QW5pbWF0aW9uU2Nyb2xsWFNwZWVkRmFjdG9yID0gKF8xNyA9IG1hdGVyaWFsUHJvcGVydGllcy5mbG9hdFByb3BlcnRpZXMpID09PSBudWxsIHx8IF8xNyA9PT0gdm9pZCAwID8gdm9pZCAwIDogXzE3WydfVXZBbmltU2Nyb2xsWCddO1xuICAgICAgICAvLyB1dkFuaW1hdGlvblNjcm9sbFlTcGVlZEZhY3RvciB3aWxsIGJlIG9wcG9zaXRlIGJldHdlZW4gVjAgYW5kIFYxXG4gICAgICAgIGxldCB1dkFuaW1hdGlvblNjcm9sbFlTcGVlZEZhY3RvciA9IChfMTggPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfMTggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF8xOFsnX1V2QW5pbVNjcm9sbFknXTtcbiAgICAgICAgaWYgKHV2QW5pbWF0aW9uU2Nyb2xsWVNwZWVkRmFjdG9yICE9IG51bGwpIHtcbiAgICAgICAgICAgIHV2QW5pbWF0aW9uU2Nyb2xsWVNwZWVkRmFjdG9yID0gLXV2QW5pbWF0aW9uU2Nyb2xsWVNwZWVkRmFjdG9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHV2QW5pbWF0aW9uUm90YXRpb25TcGVlZEZhY3RvciA9IChfMTkgPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfMTkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF8xOVsnX1V2QW5pbVJvdGF0aW9uJ107XG4gICAgICAgIGNvbnN0IG10b29uRXh0ZW5zaW9uID0ge1xuICAgICAgICAgICAgc3BlY1ZlcnNpb246ICcxLjAnLFxuICAgICAgICAgICAgdHJhbnNwYXJlbnRXaXRoWldyaXRlLFxuICAgICAgICAgICAgcmVuZGVyUXVldWVPZmZzZXROdW1iZXIsXG4gICAgICAgICAgICBzaGFkZUNvbG9yRmFjdG9yLFxuICAgICAgICAgICAgc2hhZGVNdWx0aXBseVRleHR1cmUsXG4gICAgICAgICAgICBzaGFkaW5nU2hpZnRGYWN0b3IsXG4gICAgICAgICAgICBzaGFkaW5nVG9vbnlGYWN0b3IsXG4gICAgICAgICAgICBnaUVxdWFsaXphdGlvbkZhY3RvcixcbiAgICAgICAgICAgIG1hdGNhcEZhY3RvcixcbiAgICAgICAgICAgIG1hdGNhcFRleHR1cmUsXG4gICAgICAgICAgICByaW1MaWdodGluZ01peEZhY3RvcixcbiAgICAgICAgICAgIHJpbU11bHRpcGx5VGV4dHVyZSxcbiAgICAgICAgICAgIHBhcmFtZXRyaWNSaW1Db2xvckZhY3RvcixcbiAgICAgICAgICAgIHBhcmFtZXRyaWNSaW1GcmVzbmVsUG93ZXJGYWN0b3IsXG4gICAgICAgICAgICBwYXJhbWV0cmljUmltTGlmdEZhY3RvcixcbiAgICAgICAgICAgIG91dGxpbmVXaWR0aE1vZGUsXG4gICAgICAgICAgICBvdXRsaW5lV2lkdGhGYWN0b3IsXG4gICAgICAgICAgICBvdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmUsXG4gICAgICAgICAgICBvdXRsaW5lQ29sb3JGYWN0b3IsXG4gICAgICAgICAgICBvdXRsaW5lTGlnaHRpbmdNaXhGYWN0b3IsXG4gICAgICAgICAgICB1dkFuaW1hdGlvbk1hc2tUZXh0dXJlLFxuICAgICAgICAgICAgdXZBbmltYXRpb25TY3JvbGxYU3BlZWRGYWN0b3IsXG4gICAgICAgICAgICB1dkFuaW1hdGlvblNjcm9sbFlTcGVlZEZhY3RvcixcbiAgICAgICAgICAgIHV2QW5pbWF0aW9uUm90YXRpb25TcGVlZEZhY3RvcixcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc2NoZW1hTWF0ZXJpYWwpLCB7IHBick1ldGFsbGljUm91Z2huZXNzOiB7XG4gICAgICAgICAgICAgICAgYmFzZUNvbG9yRmFjdG9yLFxuICAgICAgICAgICAgICAgIGJhc2VDb2xvclRleHR1cmUsXG4gICAgICAgICAgICB9LCBub3JtYWxUZXh0dXJlLFxuICAgICAgICAgICAgZW1pc3NpdmVUZXh0dXJlLFxuICAgICAgICAgICAgZW1pc3NpdmVGYWN0b3IsXG4gICAgICAgICAgICBhbHBoYU1vZGUsXG4gICAgICAgICAgICBhbHBoYUN1dG9mZixcbiAgICAgICAgICAgIGRvdWJsZVNpZGVkLCBleHRlbnNpb25zOiB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICAgICAgICAgICAgIFZSTUNfbWF0ZXJpYWxzX210b29uOiBtdG9vbkV4dGVuc2lvbixcbiAgICAgICAgICAgIH0gfSk7XG4gICAgfVxuICAgIF9wYXJzZVYwVW5saXRQcm9wZXJ0aWVzKG1hdGVyaWFsUHJvcGVydGllcywgc2NoZW1hTWF0ZXJpYWwpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICBjb25zdCBpc1RyYW5zcGFyZW50WldyaXRlID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnNoYWRlciA9PT0gJ1ZSTS9VbmxpdFRyYW5zcGFyZW50WldyaXRlJztcbiAgICAgICAgY29uc3QgaXNUcmFuc3BhcmVudCA9IG1hdGVyaWFsUHJvcGVydGllcy5zaGFkZXIgPT09ICdWUk0vVW5saXRUcmFuc3BhcmVudCcgfHwgaXNUcmFuc3BhcmVudFpXcml0ZTtcbiAgICAgICAgY29uc3QgcmVuZGVyUXVldWVPZmZzZXROdW1iZXIgPSB0aGlzLl92MFBhcnNlUmVuZGVyUXVldWUobWF0ZXJpYWxQcm9wZXJ0aWVzKTtcbiAgICAgICAgY29uc3QgaXNDdXRvZmYgPSBtYXRlcmlhbFByb3BlcnRpZXMuc2hhZGVyID09PSAnVlJNL1VubGl0Q3V0b3V0JztcbiAgICAgICAgY29uc3QgYWxwaGFNb2RlID0gaXNUcmFuc3BhcmVudCA/ICdCTEVORCcgOiBpc0N1dG9mZiA/ICdNQVNLJyA6ICdPUEFRVUUnO1xuICAgICAgICBjb25zdCBhbHBoYUN1dG9mZiA9IGlzQ3V0b2ZmID8gKF9hID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmZsb2F0UHJvcGVydGllcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWydfQ3V0b2ZmJ10gOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHRleHR1cmVUcmFuc2Zvcm1FeHQgPSB0aGlzLl9wb3J0VGV4dHVyZVRyYW5zZm9ybShtYXRlcmlhbFByb3BlcnRpZXMpO1xuICAgICAgICBjb25zdCBiYXNlQ29sb3JGYWN0b3IgPSAoX2MgPSAoX2IgPSBtYXRlcmlhbFByb3BlcnRpZXMudmVjdG9yUHJvcGVydGllcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iWydfQ29sb3InXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm1hcChnYW1tYUVPVEYpO1xuICAgICAgICBjb25zdCBiYXNlQ29sb3JUZXh0dXJlSW5kZXggPSAoX2QgPSBtYXRlcmlhbFByb3BlcnRpZXMudGV4dHVyZVByb3BlcnRpZXMpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZFsnX01haW5UZXgnXTtcbiAgICAgICAgY29uc3QgYmFzZUNvbG9yVGV4dHVyZSA9IGJhc2VDb2xvclRleHR1cmVJbmRleCAhPSBudWxsXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBpbmRleDogYmFzZUNvbG9yVGV4dHVyZUluZGV4LFxuICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6IE9iamVjdC5hc3NpZ24oe30sIHRleHR1cmVUcmFuc2Zvcm1FeHQpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIC8vIHVzZSBtdG9vbiBpbnN0ZWFkIG9mIHVubGl0LCBzaW5jZSB0aGVyZSBtaWdodCBiZSBWUk0wLjAgc3BlY2lmaWMgZmVhdHVyZXMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSBnbHRmXG4gICAgICAgIGNvbnN0IG10b29uRXh0ZW5zaW9uID0ge1xuICAgICAgICAgICAgc3BlY1ZlcnNpb246ICcxLjAnLFxuICAgICAgICAgICAgdHJhbnNwYXJlbnRXaXRoWldyaXRlOiBpc1RyYW5zcGFyZW50WldyaXRlLFxuICAgICAgICAgICAgcmVuZGVyUXVldWVPZmZzZXROdW1iZXIsXG4gICAgICAgICAgICBzaGFkZUNvbG9yRmFjdG9yOiBiYXNlQ29sb3JGYWN0b3IsXG4gICAgICAgICAgICBzaGFkZU11bHRpcGx5VGV4dHVyZTogYmFzZUNvbG9yVGV4dHVyZSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc2NoZW1hTWF0ZXJpYWwpLCB7IHBick1ldGFsbGljUm91Z2huZXNzOiB7XG4gICAgICAgICAgICAgICAgYmFzZUNvbG9yRmFjdG9yLFxuICAgICAgICAgICAgICAgIGJhc2VDb2xvclRleHR1cmUsXG4gICAgICAgICAgICB9LCBhbHBoYU1vZGUsXG4gICAgICAgICAgICBhbHBoYUN1dG9mZiwgZXh0ZW5zaW9uczoge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAgICAgICAgICAgICBWUk1DX21hdGVyaWFsc19tdG9vbjogbXRvb25FeHRlbnNpb24sXG4gICAgICAgICAgICB9IH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBnbFRGIGBLSFJfdGV4dHVyZV90cmFuc2Zvcm1gIGV4dGVuc2lvbiBmcm9tIHYwIHRleHR1cmUgdHJhbnNmb3JtIGluZm8uXG4gICAgICovXG4gICAgX3BvcnRUZXh0dXJlVHJhbnNmb3JtKG1hdGVyaWFsUHJvcGVydGllcykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICBjb25zdCB0ZXh0dXJlVHJhbnNmb3JtID0gKF9hID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnZlY3RvclByb3BlcnRpZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVsnX01haW5UZXgnXTtcbiAgICAgICAgaWYgKHRleHR1cmVUcmFuc2Zvcm0gPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IFsoX2IgPSB0ZXh0dXJlVHJhbnNmb3JtID09PSBudWxsIHx8IHRleHR1cmVUcmFuc2Zvcm0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRleHR1cmVUcmFuc2Zvcm1bMF0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDAuMCwgKF9jID0gdGV4dHVyZVRyYW5zZm9ybSA9PT0gbnVsbCB8fCB0ZXh0dXJlVHJhbnNmb3JtID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0ZXh0dXJlVHJhbnNmb3JtWzFdKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwLjBdO1xuICAgICAgICBjb25zdCBzY2FsZSA9IFsoX2QgPSB0ZXh0dXJlVHJhbnNmb3JtID09PSBudWxsIHx8IHRleHR1cmVUcmFuc2Zvcm0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRleHR1cmVUcmFuc2Zvcm1bMl0pICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDEuMCwgKF9lID0gdGV4dHVyZVRyYW5zZm9ybSA9PT0gbnVsbCB8fCB0ZXh0dXJlVHJhbnNmb3JtID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0ZXh0dXJlVHJhbnNmb3JtWzNdKSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiAxLjBdO1xuICAgICAgICBvZmZzZXRbMV0gPSAxLjAgLSBzY2FsZVsxXSAtIG9mZnNldFsxXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAgICAgICAgIEtIUl90ZXh0dXJlX3RyYW5zZm9ybTogeyBvZmZzZXQsIHNjYWxlIH0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgdjAgcmVuZGVyIG9yZGVyIGludG8gdjEgcmVuZGVyIG9yZGVyLlxuICAgICAqIFRoaXMgdXNlcyBhIG1hcCBmcm9tIHYwIHJlbmRlciBxdWV1ZSB0byB2MSBjb21wbGlhbnQgcmVuZGVyIHF1ZXVlIG9mZnNldCB3aGljaCBpcyBnZW5lcmF0ZWQgaW4ge0BsaW5rIF9wb3B1bGF0ZVJlbmRlclF1ZXVlTWFwfS5cbiAgICAgKi9cbiAgICBfdjBQYXJzZVJlbmRlclF1ZXVlKG1hdGVyaWFsUHJvcGVydGllcykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgY29uc3QgaXNUcmFuc3BhcmVudCA9IChfYiA9IChfYSA9IG1hdGVyaWFsUHJvcGVydGllcy5rZXl3b3JkTWFwKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbJ19BTFBIQUJMRU5EX09OJ10pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGZhbHNlO1xuICAgICAgICBjb25zdCBlbmFibGVkWldyaXRlID0gKChfYyA9IG1hdGVyaWFsUHJvcGVydGllcy5mbG9hdFByb3BlcnRpZXMpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY1snX1pXcml0ZSddKSA9PT0gMTtcbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIGlmIChpc1RyYW5zcGFyZW50KSB7XG4gICAgICAgICAgICBjb25zdCB2MFF1ZXVlID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnJlbmRlclF1ZXVlO1xuICAgICAgICAgICAgaWYgKHYwUXVldWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChlbmFibGVkWldyaXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHRoaXMuX3JlbmRlclF1ZXVlTWFwVHJhbnNwYXJlbnRaV3JpdGUuZ2V0KHYwUXVldWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5fcmVuZGVyUXVldWVNYXBUcmFuc3BhcmVudC5nZXQodjBRdWV1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG1hcCB3aGljaCBtYXBzIHYwIHJlbmRlciBxdWV1ZSB0byB2MSBjb21wbGlhbnQgcmVuZGVyIHF1ZXVlIG9mZnNldC5cbiAgICAgKiBUaGlzIGxpc3RzIHVwIGFsbCByZW5kZXIgcXVldWVzIHRoZSBtb2RlbCB1c2UgYW5kIGNyZWF0ZXMgYSBtYXAgdG8gbmV3IHJlbmRlciBxdWV1ZSBvZmZzZXRzIGluIHRoZSBzYW1lIG9yZGVyLlxuICAgICAqL1xuICAgIF9wb3B1bGF0ZVJlbmRlclF1ZXVlTWFwKG1hdGVyaWFsUHJvcGVydGllc0xpc3QpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgc2V0IG9mIHVzZWQgcmVuZGVyIHF1ZXVlcyBpbiBUcmFuc3BhcmVudCBtYXRlcmlhbHMuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCByZW5kZXJRdWV1ZXNUcmFuc3BhcmVudCA9IG5ldyBTZXQoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgc2V0IG9mIHVzZWQgcmVuZGVyIHF1ZXVlcyBpbiBUcmFuc3BhcmVudFpXcml0ZSBtYXRlcmlhbHMuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCByZW5kZXJRdWV1ZXNUcmFuc3BhcmVudFpXcml0ZSA9IG5ldyBTZXQoKTtcbiAgICAgICAgLy8gcG9wdWxhdGUgdGhlIHJlbmRlciBxdWV1ZSBzZXRcbiAgICAgICAgbWF0ZXJpYWxQcm9wZXJ0aWVzTGlzdC5mb3JFYWNoKChtYXRlcmlhbFByb3BlcnRpZXMpID0+IHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgY29uc3QgaXNUcmFuc3BhcmVudCA9IChfYiA9IChfYSA9IG1hdGVyaWFsUHJvcGVydGllcy5rZXl3b3JkTWFwKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbJ19BTFBIQUJMRU5EX09OJ10pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgZW5hYmxlZFpXcml0ZSA9ICgoX2MgPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NbJ19aV3JpdGUnXSkgPT09IDE7XG4gICAgICAgICAgICBpZiAoaXNUcmFuc3BhcmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHYwUXVldWUgPSBtYXRlcmlhbFByb3BlcnRpZXMucmVuZGVyUXVldWU7XG4gICAgICAgICAgICAgICAgaWYgKHYwUXVldWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZW5hYmxlZFpXcml0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyUXVldWVzVHJhbnNwYXJlbnRaV3JpdGUuYWRkKHYwUXVldWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyUXVldWVzVHJhbnNwYXJlbnQuYWRkKHYwUXVldWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gc2hvdyBhIHdhcm5pbmcgaWYgdGhlIG1vZGVsIHVzZXMgdjEgaW5jb21wYXRpYmxlIG51bWJlciBvZiByZW5kZXIgcXVldWVzXG4gICAgICAgIGlmIChyZW5kZXJRdWV1ZXNUcmFuc3BhcmVudC5zaXplID4gMTApIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVlJNTWF0ZXJpYWxzVjBDb21wYXRQbHVnaW46IFRoaXMgVlJNIHVzZXMgJHtyZW5kZXJRdWV1ZXNUcmFuc3BhcmVudC5zaXplfSByZW5kZXIgcXVldWVzIGZvciBUcmFuc3BhcmVudCBtYXRlcmlhbHMgd2hpbGUgVlJNIDEuMCBvbmx5IHN1cHBvcnRzIHVwIHRvIDEwIHJlbmRlciBxdWV1ZXMuIFRoZSBtb2RlbCBtaWdodCBub3QgYmUgcmVuZGVyZWQgY29ycmVjdGx5LmApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZW5kZXJRdWV1ZXNUcmFuc3BhcmVudFpXcml0ZS5zaXplID4gMTApIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVlJNTWF0ZXJpYWxzVjBDb21wYXRQbHVnaW46IFRoaXMgVlJNIHVzZXMgJHtyZW5kZXJRdWV1ZXNUcmFuc3BhcmVudFpXcml0ZS5zaXplfSByZW5kZXIgcXVldWVzIGZvciBUcmFuc3BhcmVudFpXcml0ZSBtYXRlcmlhbHMgd2hpbGUgVlJNIDEuMCBvbmx5IHN1cHBvcnRzIHVwIHRvIDEwIHJlbmRlciBxdWV1ZXMuIFRoZSBtb2RlbCBtaWdodCBub3QgYmUgcmVuZGVyZWQgY29ycmVjdGx5LmApO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNyZWF0ZSBhIG1hcCBmcm9tIHYwIHJlbmRlciBxdWV1ZSB0byB2MSByZW5kZXIgcXVldWUgb2Zmc2V0XG4gICAgICAgIEFycmF5LmZyb20ocmVuZGVyUXVldWVzVHJhbnNwYXJlbnQpXG4gICAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgICAuZm9yRWFjaCgocXVldWUsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1F1ZXVlT2Zmc2V0ID0gTWF0aC5taW4oTWF0aC5tYXgoaSAtIHJlbmRlclF1ZXVlc1RyYW5zcGFyZW50LnNpemUgKyAxLCAtOSksIDApO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyUXVldWVNYXBUcmFuc3BhcmVudC5zZXQocXVldWUsIG5ld1F1ZXVlT2Zmc2V0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIEFycmF5LmZyb20ocmVuZGVyUXVldWVzVHJhbnNwYXJlbnRaV3JpdGUpXG4gICAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgICAuZm9yRWFjaCgocXVldWUsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1F1ZXVlT2Zmc2V0ID0gTWF0aC5taW4oTWF0aC5tYXgoaSwgMCksIDkpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyUXVldWVNYXBUcmFuc3BhcmVudFpXcml0ZS5zZXQocXVldWUsIG5ld1F1ZXVlT2Zmc2V0KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBWUk1NYXRlcmlhbHNWMENvbXBhdFBsdWdpbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkR2h5WldVdGRuSnRMVzFoZEdWeWFXRnNjeTEyTUdOdmJYQmhkQzV0YjJSMWJHVXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyNXZaR1ZmYlc5a2RXeGxjeTkwYzJ4cFlpOTBjMnhwWWk1bGN6WXVhbk1pTENJdUxpOXpjbU12ZFhScGJITXZaMkZ0YldGRlQxUkdMblJ6SWl3aUxpNHZjM0pqTDFaU1RVMWhkR1Z5YVdGc2MxWXdRMjl0Y0dGMFVHeDFaMmx1TG5SeklsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpcGNjbHh1UTI5d2VYSnBaMmgwSUNoaktTQk5hV055YjNOdlpuUWdRMjl5Y0c5eVlYUnBiMjR1WEhKY2JseHlYRzVRWlhKdGFYTnphVzl1SUhSdklIVnpaU3dnWTI5d2VTd2diVzlrYVdaNUxDQmhibVF2YjNJZ1pHbHpkSEpwWW5WMFpTQjBhR2x6SUhOdlpuUjNZWEpsSUdadmNpQmhibmxjY2x4dWNIVnljRzl6WlNCM2FYUm9JRzl5SUhkcGRHaHZkWFFnWm1WbElHbHpJR2hsY21WaWVTQm5jbUZ1ZEdWa0xseHlYRzVjY2x4dVZFaEZJRk5QUmxSWFFWSkZJRWxUSUZCU1QxWkpSRVZFSUZ3aVFWTWdTVk5jSWlCQlRrUWdWRWhGSUVGVlZFaFBVaUJFU1ZORFRFRkpUVk1nUVV4TUlGZEJVbEpCVGxSSlJWTWdWMGxVU0Z4eVhHNVNSVWRCVWtRZ1ZFOGdWRWhKVXlCVFQwWlVWMEZTUlNCSlRrTk1WVVJKVGtjZ1FVeE1JRWxOVUV4SlJVUWdWMEZTVWtGT1ZFbEZVeUJQUmlCTlJWSkRTRUZPVkVGQ1NVeEpWRmxjY2x4dVFVNUVJRVpKVkU1RlUxTXVJRWxPSUU1UElFVldSVTVVSUZOSVFVeE1JRlJJUlNCQlZWUklUMUlnUWtVZ1RFbEJRa3hGSUVaUFVpQkJUbGtnVTFCRlEwbEJUQ3dnUkVsU1JVTlVMRnh5WEc1SlRrUkpVa1ZEVkN3Z1QxSWdRMDlPVTBWUlZVVk9WRWxCVENCRVFVMUJSMFZUSUU5U0lFRk9XU0JFUVUxQlIwVlRJRmRJUVZSVFQwVldSVklnVWtWVFZVeFVTVTVISUVaU1QwMWNjbHh1VEU5VFV5QlBSaUJWVTBVc0lFUkJWRUVnVDFJZ1VGSlBSa2xVVXl3Z1YwaEZWRWhGVWlCSlRpQkJUaUJCUTFSSlQwNGdUMFlnUTA5T1ZGSkJRMVFzSUU1RlIweEpSMFZPUTBVZ1QxSmNjbHh1VDFSSVJWSWdWRTlTVkVsUFZWTWdRVU5VU1U5T0xDQkJVa2xUU1U1SElFOVZWQ0JQUmlCUFVpQkpUaUJEVDA1T1JVTlVTVTlPSUZkSlZFZ2dWRWhGSUZWVFJTQlBVbHh5WEc1UVJWSkdUMUpOUVU1RFJTQlBSaUJVU0VsVElGTlBSbFJYUVZKRkxseHlYRzRxS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpQXFMMXh5WEc0dktpQm5iRzlpWVd3Z1VtVm1iR1ZqZEN3Z1VISnZiV2x6WlNBcUwxeHlYRzVjY2x4dWRtRnlJR1Y0ZEdWdVpGTjBZWFJwWTNNZ1BTQm1kVzVqZEdsdmJpaGtMQ0JpS1NCN1hISmNiaUFnSUNCbGVIUmxibVJUZEdGMGFXTnpJRDBnVDJKcVpXTjBMbk5sZEZCeWIzUnZkSGx3WlU5bUlIeDhYSEpjYmlBZ0lDQWdJQ0FnS0hzZ1gxOXdjbTkwYjE5Zk9pQmJYU0I5SUdsdWMzUmhibU5sYjJZZ1FYSnlZWGtnSmlZZ1puVnVZM1JwYjI0Z0tHUXNJR0lwSUhzZ1pDNWZYM0J5YjNSdlgxOGdQU0JpT3lCOUtTQjhmRnh5WEc0Z0lDQWdJQ0FnSUdaMWJtTjBhVzl1SUNoa0xDQmlLU0I3SUdadmNpQW9kbUZ5SUhBZ2FXNGdZaWtnYVdZZ0tFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVdWFHRnpUM2R1VUhKdmNHVnlkSGt1WTJGc2JDaGlMQ0J3S1NrZ1pGdHdYU0E5SUdKYmNGMDdJSDA3WEhKY2JpQWdJQ0J5WlhSMWNtNGdaWGgwWlc1a1UzUmhkR2xqY3loa0xDQmlLVHRjY2x4dWZUdGNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyVjRkR1Z1WkhNb1pDd2dZaWtnZTF4eVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCaUlDRTlQU0JjSW1aMWJtTjBhVzl1WENJZ0ppWWdZaUFoUFQwZ2JuVnNiQ2xjY2x4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lRMnhoYzNNZ1pYaDBaVzVrY3lCMllXeDFaU0JjSWlBcklGTjBjbWx1WnloaUtTQXJJRndpSUdseklHNXZkQ0JoSUdOdmJuTjBjblZqZEc5eUlHOXlJRzUxYkd4Y0lpazdYSEpjYmlBZ0lDQmxlSFJsYm1SVGRHRjBhV056S0dRc0lHSXBPMXh5WEc0Z0lDQWdablZ1WTNScGIyNGdYMThvS1NCN0lIUm9hWE11WTI5dWMzUnlkV04wYjNJZ1BTQmtPeUI5WEhKY2JpQWdJQ0JrTG5CeWIzUnZkSGx3WlNBOUlHSWdQVDA5SUc1MWJHd2dQeUJQWW1wbFkzUXVZM0psWVhSbEtHSXBJRG9nS0Y5ZkxuQnliM1J2ZEhsd1pTQTlJR0l1Y0hKdmRHOTBlWEJsTENCdVpYY2dYMThvS1NrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQjJZWElnWDE5aGMzTnBaMjRnUFNCbWRXNWpkR2x2YmlncElIdGNjbHh1SUNBZ0lGOWZZWE56YVdkdUlEMGdUMkpxWldOMExtRnpjMmxuYmlCOGZDQm1kVzVqZEdsdmJpQmZYMkZ6YzJsbmJpaDBLU0I3WEhKY2JpQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2N5d2dhU0E5SURFc0lHNGdQU0JoY21kMWJXVnVkSE11YkdWdVozUm9PeUJwSUR3Z2Jqc2dhU3NyS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhNZ1BTQmhjbWQxYldWdWRITmJhVjA3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJSEFnYVc0Z2N5a2dhV1lnS0U5aWFtVmpkQzV3Y205MGIzUjVjR1V1YUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNoekxDQndLU2tnZEZ0d1hTQTlJSE5iY0YwN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwTzF4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJRjlmWVhOemFXZHVMbUZ3Y0d4NUtIUm9hWE1zSUdGeVozVnRaVzUwY3lrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM0psYzNRb2N5d2daU2tnZTF4eVhHNGdJQ0FnZG1GeUlIUWdQU0I3ZlR0Y2NseHVJQ0FnSUdadmNpQW9kbUZ5SUhBZ2FXNGdjeWtnYVdZZ0tFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVdWFHRnpUM2R1VUhKdmNHVnlkSGt1WTJGc2JDaHpMQ0J3S1NBbUppQmxMbWx1WkdWNFQyWW9jQ2tnUENBd0tWeHlYRzRnSUNBZ0lDQWdJSFJiY0YwZ1BTQnpXM0JkTzF4eVhHNGdJQ0FnYVdZZ0tITWdJVDBnYm5Wc2JDQW1KaUIwZVhCbGIyWWdUMkpxWldOMExtZGxkRTkzYmxCeWIzQmxjblI1VTNsdFltOXNjeUE5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLVnh5WEc0Z0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdMQ0J3SUQwZ1QySnFaV04wTG1kbGRFOTNibEJ5YjNCbGNuUjVVM2x0WW05c2N5aHpLVHNnYVNBOElIQXViR1Z1WjNSb095QnBLeXNwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHVXVhVzVrWlhoUFppaHdXMmxkS1NBOElEQWdKaVlnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzV3Y205d1pYSjBlVWx6Ulc1MWJXVnlZV0pzWlM1allXeHNLSE1zSUhCYmFWMHBLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEZ0d1cybGRYU0E5SUhOYmNGdHBYVjA3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2NtVjBkWEp1SUhRN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMlJsWTI5eVlYUmxLR1JsWTI5eVlYUnZjbk1zSUhSaGNtZGxkQ3dnYTJWNUxDQmtaWE5qS1NCN1hISmNiaUFnSUNCMllYSWdZeUE5SUdGeVozVnRaVzUwY3k1c1pXNW5kR2dzSUhJZ1BTQmpJRHdnTXlBL0lIUmhjbWRsZENBNklHUmxjMk1nUFQwOUlHNTFiR3dnUHlCa1pYTmpJRDBnVDJKcVpXTjBMbWRsZEU5M2JsQnliM0JsY25SNVJHVnpZM0pwY0hSdmNpaDBZWEpuWlhRc0lHdGxlU2tnT2lCa1pYTmpMQ0JrTzF4eVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCU1pXWnNaV04wSUQwOVBTQmNJbTlpYW1WamRGd2lJQ1ltSUhSNWNHVnZaaUJTWldac1pXTjBMbVJsWTI5eVlYUmxJRDA5UFNCY0ltWjFibU4wYVc5dVhDSXBJSElnUFNCU1pXWnNaV04wTG1SbFkyOXlZWFJsS0dSbFkyOXlZWFJ2Y25Nc0lIUmhjbWRsZEN3Z2EyVjVMQ0JrWlhOaktUdGNjbHh1SUNBZ0lHVnNjMlVnWm05eUlDaDJZWElnYVNBOUlHUmxZMjl5WVhSdmNuTXViR1Z1WjNSb0lDMGdNVHNnYVNBK1BTQXdPeUJwTFMwcElHbG1JQ2hrSUQwZ1pHVmpiM0poZEc5eWMxdHBYU2tnY2lBOUlDaGpJRHdnTXlBL0lHUW9jaWtnT2lCaklENGdNeUEvSUdRb2RHRnlaMlYwTENCclpYa3NJSElwSURvZ1pDaDBZWEpuWlhRc0lHdGxlU2twSUh4OElISTdYSEpjYmlBZ0lDQnlaWFIxY200Z1l5QStJRE1nSmlZZ2NpQW1KaUJQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb2RHRnlaMlYwTENCclpYa3NJSElwTENCeU8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl3WVhKaGJTaHdZWEpoYlVsdVpHVjRMQ0JrWldOdmNtRjBiM0lwSUh0Y2NseHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaUFvZEdGeVoyVjBMQ0JyWlhrcElIc2daR1ZqYjNKaGRHOXlLSFJoY21kbGRDd2dhMlY1TENCd1lYSmhiVWx1WkdWNEtUc2dmVnh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5bGMwUmxZMjl5WVhSbEtHTjBiM0lzSUdSbGMyTnlhWEIwYjNKSmJpd2daR1ZqYjNKaGRHOXljeXdnWTI5dWRHVjRkRWx1TENCcGJtbDBhV0ZzYVhwbGNuTXNJR1Y0ZEhKaFNXNXBkR2xoYkdsNlpYSnpLU0I3WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJoWTJObGNIUW9aaWtnZXlCcFppQW9aaUFoUFQwZ2RtOXBaQ0F3SUNZbUlIUjVjR1Z2WmlCbUlDRTlQU0JjSW1aMWJtTjBhVzl1WENJcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pHZFc1amRHbHZiaUJsZUhCbFkzUmxaRndpS1RzZ2NtVjBkWEp1SUdZN0lIMWNjbHh1SUNBZ0lIWmhjaUJyYVc1a0lEMGdZMjl1ZEdWNGRFbHVMbXRwYm1Rc0lHdGxlU0E5SUd0cGJtUWdQVDA5SUZ3aVoyVjBkR1Z5WENJZ1B5QmNJbWRsZEZ3aUlEb2dhMmx1WkNBOVBUMGdYQ0p6WlhSMFpYSmNJaUEvSUZ3aWMyVjBYQ0lnT2lCY0luWmhiSFZsWENJN1hISmNiaUFnSUNCMllYSWdkR0Z5WjJWMElEMGdJV1JsYzJOeWFYQjBiM0pKYmlBbUppQmpkRzl5SUQ4Z1kyOXVkR1Y0ZEVsdVcxd2ljM1JoZEdsalhDSmRJRDhnWTNSdmNpQTZJR04wYjNJdWNISnZkRzkwZVhCbElEb2diblZzYkR0Y2NseHVJQ0FnSUhaaGNpQmtaWE5qY21sd2RHOXlJRDBnWkdWelkzSnBjSFJ2Y2tsdUlIeDhJQ2gwWVhKblpYUWdQeUJQWW1wbFkzUXVaMlYwVDNkdVVISnZjR1Z5ZEhsRVpYTmpjbWx3ZEc5eUtIUmhjbWRsZEN3Z1kyOXVkR1Y0ZEVsdUxtNWhiV1VwSURvZ2UzMHBPMXh5WEc0Z0lDQWdkbUZ5SUY4c0lHUnZibVVnUFNCbVlXeHpaVHRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNCa1pXTnZjbUYwYjNKekxteGxibWQwYUNBdElERTdJR2tnUGowZ01Ec2dhUzB0S1NCN1hISmNiaUFnSUNBZ0lDQWdkbUZ5SUdOdmJuUmxlSFFnUFNCN2ZUdGNjbHh1SUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJ3SUdsdUlHTnZiblJsZUhSSmJpa2dZMjl1ZEdWNGRGdHdYU0E5SUhBZ1BUMDlJRndpWVdOalpYTnpYQ0lnUHlCN2ZTQTZJR052Ym5SbGVIUkpibHR3WFR0Y2NseHVJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQndJR2x1SUdOdmJuUmxlSFJKYmk1aFkyTmxjM01wSUdOdmJuUmxlSFF1WVdOalpYTnpXM0JkSUQwZ1kyOXVkR1Y0ZEVsdUxtRmpZMlZ6YzF0d1hUdGNjbHh1SUNBZ0lDQWdJQ0JqYjI1MFpYaDBMbUZrWkVsdWFYUnBZV3hwZW1WeUlEMGdablZ1WTNScGIyNGdLR1lwSUhzZ2FXWWdLR1J2Ym1VcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pEWVc1dWIzUWdZV1JrSUdsdWFYUnBZV3hwZW1WeWN5QmhablJsY2lCa1pXTnZjbUYwYVc5dUlHaGhjeUJqYjIxd2JHVjBaV1JjSWlrN0lHVjRkSEpoU1c1cGRHbGhiR2w2WlhKekxuQjFjMmdvWVdOalpYQjBLR1lnZkh3Z2JuVnNiQ2twT3lCOU8xeHlYRzRnSUNBZ0lDQWdJSFpoY2lCeVpYTjFiSFFnUFNBb01Dd2daR1ZqYjNKaGRHOXljMXRwWFNrb2EybHVaQ0E5UFQwZ1hDSmhZMk5sYzNOdmNsd2lJRDhnZXlCblpYUTZJR1JsYzJOeWFYQjBiM0l1WjJWMExDQnpaWFE2SUdSbGMyTnlhWEIwYjNJdWMyVjBJSDBnT2lCa1pYTmpjbWx3ZEc5eVcydGxlVjBzSUdOdmJuUmxlSFFwTzF4eVhHNGdJQ0FnSUNBZ0lHbG1JQ2hyYVc1a0lEMDlQU0JjSW1GalkyVnpjMjl5WENJcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSEpsYzNWc2RDQTlQVDBnZG05cFpDQXdLU0JqYjI1MGFXNTFaVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hKbGMzVnNkQ0E5UFQwZ2JuVnNiQ0I4ZkNCMGVYQmxiMllnY21WemRXeDBJQ0U5UFNCY0ltOWlhbVZqZEZ3aUtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpVDJKcVpXTjBJR1Y0Y0dWamRHVmtYQ0lwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1h5QTlJR0ZqWTJWd2RDaHlaWE4xYkhRdVoyVjBLU2tnWkdWelkzSnBjSFJ2Y2k1blpYUWdQU0JmTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1h5QTlJR0ZqWTJWd2RDaHlaWE4xYkhRdWMyVjBLU2tnWkdWelkzSnBjSFJ2Y2k1elpYUWdQU0JmTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1h5QTlJR0ZqWTJWd2RDaHlaWE4xYkhRdWFXNXBkQ2twSUdsdWFYUnBZV3hwZW1WeWN5NXdkWE5vS0Y4cE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoZklEMGdZV05qWlhCMEtISmxjM1ZzZENrcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR3RwYm1RZ1BUMDlJRndpWm1sbGJHUmNJaWtnYVc1cGRHbGhiR2w2WlhKekxuQjFjMmdvWHlrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdWc2MyVWdaR1Z6WTNKcGNIUnZjbHRyWlhsZElEMGdYenRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnSUNCcFppQW9kR0Z5WjJWMEtTQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvZEdGeVoyVjBMQ0JqYjI1MFpYaDBTVzR1Ym1GdFpTd2daR1Z6WTNKcGNIUnZjaWs3WEhKY2JpQWdJQ0JrYjI1bElEMGdkSEoxWlR0Y2NseHVmVHRjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM0oxYmtsdWFYUnBZV3hwZW1WeWN5aDBhR2x6UVhKbkxDQnBibWwwYVdGc2FYcGxjbk1zSUhaaGJIVmxLU0I3WEhKY2JpQWdJQ0IyWVhJZ2RYTmxWbUZzZFdVZ1BTQmhjbWQxYldWdWRITXViR1Z1WjNSb0lENGdNanRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnYVc1cGRHbGhiR2w2WlhKekxteGxibWQwYURzZ2FTc3JLU0I3WEhKY2JpQWdJQ0FnSUNBZ2RtRnNkV1VnUFNCMWMyVldZV3gxWlNBL0lHbHVhWFJwWVd4cGVtVnljMXRwWFM1allXeHNLSFJvYVhOQmNtY3NJSFpoYkhWbEtTQTZJR2x1YVhScFlXeHBlbVZ5YzF0cFhTNWpZV3hzS0hSb2FYTkJjbWNwTzF4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJSFZ6WlZaaGJIVmxJRDhnZG1Gc2RXVWdPaUIyYjJsa0lEQTdYSEpjYm4wN1hISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5d2NtOXdTMlY1S0hncElIdGNjbHh1SUNBZ0lISmxkSFZ5YmlCMGVYQmxiMllnZUNBOVBUMGdYQ0p6ZVcxaWIyeGNJaUEvSUhnZ09pQmNJbHdpTG1OdmJtTmhkQ2g0S1R0Y2NseHVmVHRjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM05sZEVaMWJtTjBhVzl1VG1GdFpTaG1MQ0J1WVcxbExDQndjbVZtYVhncElIdGNjbHh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdibUZ0WlNBOVBUMGdYQ0p6ZVcxaWIyeGNJaWtnYm1GdFpTQTlJRzVoYldVdVpHVnpZM0pwY0hScGIyNGdQeUJjSWx0Y0lpNWpiMjVqWVhRb2JtRnRaUzVrWlhOamNtbHdkR2x2Yml3Z1hDSmRYQ0lwSURvZ1hDSmNJanRjY2x4dUlDQWdJSEpsZEhWeWJpQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvWml3Z1hDSnVZVzFsWENJc0lIc2dZMjl1Wm1sbmRYSmhZbXhsT2lCMGNuVmxMQ0IyWVd4MVpUb2djSEpsWm1sNElEOGdYQ0pjSWk1amIyNWpZWFFvY0hKbFptbDRMQ0JjSWlCY0lpd2dibUZ0WlNrZ09pQnVZVzFsSUgwcE8xeHlYRzU5TzF4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmYldWMFlXUmhkR0VvYldWMFlXUmhkR0ZMWlhrc0lHMWxkR0ZrWVhSaFZtRnNkV1VwSUh0Y2NseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ1VtVm1iR1ZqZENBOVBUMGdYQ0p2WW1wbFkzUmNJaUFtSmlCMGVYQmxiMllnVW1WbWJHVmpkQzV0WlhSaFpHRjBZU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0J5WlhSMWNtNGdVbVZtYkdWamRDNXRaWFJoWkdGMFlTaHRaWFJoWkdGMFlVdGxlU3dnYldWMFlXUmhkR0ZXWVd4MVpTazdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJGM1lXbDBaWElvZEdocGMwRnlaeXdnWDJGeVozVnRaVzUwY3l3Z1VDd2daMlZ1WlhKaGRHOXlLU0I3WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJoWkc5d2RDaDJZV3gxWlNrZ2V5QnlaWFIxY200Z2RtRnNkV1VnYVc1emRHRnVZMlZ2WmlCUUlEOGdkbUZzZFdVZ09pQnVaWGNnVUNobWRXNWpkR2x2YmlBb2NtVnpiMngyWlNrZ2V5QnlaWE52YkhabEtIWmhiSFZsS1RzZ2ZTazdJSDFjY2x4dUlDQWdJSEpsZEhWeWJpQnVaWGNnS0ZBZ2ZId2dLRkFnUFNCUWNtOXRhWE5sS1Nrb1puVnVZM1JwYjI0Z0tISmxjMjlzZG1Vc0lISmxhbVZqZENrZ2UxeHlYRzRnSUNBZ0lDQWdJR1oxYm1OMGFXOXVJR1oxYkdacGJHeGxaQ2gyWVd4MVpTa2dleUIwY25rZ2V5QnpkR1Z3S0dkbGJtVnlZWFJ2Y2k1dVpYaDBLSFpoYkhWbEtTazdJSDBnWTJGMFkyZ2dLR1VwSUhzZ2NtVnFaV04wS0dVcE95QjlJSDFjY2x4dUlDQWdJQ0FnSUNCbWRXNWpkR2x2YmlCeVpXcGxZM1JsWkNoMllXeDFaU2tnZXlCMGNua2dleUJ6ZEdWd0tHZGxibVZ5WVhSdmNsdGNJblJvY205M1hDSmRLSFpoYkhWbEtTazdJSDBnWTJGMFkyZ2dLR1VwSUhzZ2NtVnFaV04wS0dVcE95QjlJSDFjY2x4dUlDQWdJQ0FnSUNCbWRXNWpkR2x2YmlCemRHVndLSEpsYzNWc2RDa2dleUJ5WlhOMWJIUXVaRzl1WlNBL0lISmxjMjlzZG1Vb2NtVnpkV3gwTG5aaGJIVmxLU0E2SUdGa2IzQjBLSEpsYzNWc2RDNTJZV3gxWlNrdWRHaGxiaWhtZFd4bWFXeHNaV1FzSUhKbGFtVmpkR1ZrS1RzZ2ZWeHlYRzRnSUNBZ0lDQWdJSE4wWlhBb0tHZGxibVZ5WVhSdmNpQTlJR2RsYm1WeVlYUnZjaTVoY0hCc2VTaDBhR2x6UVhKbkxDQmZZWEpuZFcxbGJuUnpJSHg4SUZ0ZEtTa3VibVY0ZENncEtUdGNjbHh1SUNBZ0lIMHBPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5blpXNWxjbUYwYjNJb2RHaHBjMEZ5Wnl3Z1ltOWtlU2tnZTF4eVhHNGdJQ0FnZG1GeUlGOGdQU0I3SUd4aFltVnNPaUF3TENCelpXNTBPaUJtZFc1amRHbHZiaWdwSUhzZ2FXWWdLSFJiTUYwZ0ppQXhLU0IwYUhKdmR5QjBXekZkT3lCeVpYUjFjbTRnZEZzeFhUc2dmU3dnZEhKNWN6b2dXMTBzSUc5d2N6b2dXMTBnZlN3Z1ppd2dlU3dnZEN3Z1p6dGNjbHh1SUNBZ0lISmxkSFZ5YmlCbklEMGdleUJ1WlhoME9pQjJaWEppS0RBcExDQmNJblJvY205M1hDSTZJSFpsY21Jb01Ta3NJRndpY21WMGRYSnVYQ0k2SUhabGNtSW9NaWtnZlN3Z2RIbHdaVzltSUZONWJXSnZiQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJQ1ltSUNoblcxTjViV0p2YkM1cGRHVnlZWFJ2Y2wwZ1BTQm1kVzVqZEdsdmJpZ3BJSHNnY21WMGRYSnVJSFJvYVhNN0lIMHBMQ0JuTzF4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnZG1WeVlpaHVLU0I3SUhKbGRIVnliaUJtZFc1amRHbHZiaUFvZGlrZ2V5QnlaWFIxY200Z2MzUmxjQ2hiYml3Z2RsMHBPeUI5T3lCOVhISmNiaUFnSUNCbWRXNWpkR2x2YmlCemRHVndLRzl3S1NCN1hISmNiaUFnSUNBZ0lDQWdhV1lnS0dZcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pIWlc1bGNtRjBiM0lnYVhNZ1lXeHlaV0ZrZVNCbGVHVmpkWFJwYm1jdVhDSXBPMXh5WEc0Z0lDQWdJQ0FnSUhkb2FXeGxJQ2huSUNZbUlDaG5JRDBnTUN3Z2IzQmJNRjBnSmlZZ0tGOGdQU0F3S1Nrc0lGOHBJSFJ5ZVNCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaG1JRDBnTVN3Z2VTQW1KaUFvZENBOUlHOXdXekJkSUNZZ01pQS9JSGxiWENKeVpYUjFjbTVjSWwwZ09pQnZjRnN3WFNBL0lIbGJYQ0owYUhKdmQxd2lYU0I4ZkNBb0tIUWdQU0I1VzF3aWNtVjBkWEp1WENKZEtTQW1KaUIwTG1OaGJHd29lU2tzSURBcElEb2dlUzV1WlhoMEtTQW1KaUFoS0hRZ1BTQjBMbU5oYkd3b2VTd2diM0JiTVYwcEtTNWtiMjVsS1NCeVpYUjFjbTRnZER0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIa2dQU0F3TENCMEtTQnZjQ0E5SUZ0dmNGc3dYU0FtSURJc0lIUXVkbUZzZFdWZE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCemQybDBZMmdnS0c5d1d6QmRLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJREE2SUdOaGMyVWdNVG9nZENBOUlHOXdPeUJpY21WaGF6dGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ05Eb2dYeTVzWVdKbGJDc3JPeUJ5WlhSMWNtNGdleUIyWVd4MVpUb2diM0JiTVYwc0lHUnZibVU2SUdaaGJITmxJSDA3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRFU2SUY4dWJHRmlaV3dyS3pzZ2VTQTlJRzl3V3pGZE95QnZjQ0E5SUZzd1hUc2dZMjl1ZEdsdWRXVTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElEYzZJRzl3SUQwZ1h5NXZjSE11Y0c5d0tDazdJRjh1ZEhKNWN5NXdiM0FvS1RzZ1kyOXVkR2x1ZFdVN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtaV1poZFd4ME9seHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hLSFFnUFNCZkxuUnllWE1zSUhRZ1BTQjBMbXhsYm1kMGFDQStJREFnSmlZZ2RGdDBMbXhsYm1kMGFDQXRJREZkS1NBbUppQW9iM0JiTUYwZ1BUMDlJRFlnZkh3Z2IzQmJNRjBnUFQwOUlESXBLU0I3SUY4Z1BTQXdPeUJqYjI1MGFXNTFaVHNnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodmNGc3dYU0E5UFQwZ015QW1KaUFvSVhRZ2ZId2dLRzl3V3pGZElENGdkRnN3WFNBbUppQnZjRnN4WFNBOElIUmJNMTBwS1NrZ2V5QmZMbXhoWW1Wc0lEMGdiM0JiTVYwN0lHSnlaV0ZyT3lCOVhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHOXdXekJkSUQwOVBTQTJJQ1ltSUY4dWJHRmlaV3dnUENCMFd6RmRLU0I3SUY4dWJHRmlaV3dnUFNCMFd6RmRPeUIwSUQwZ2IzQTdJR0p5WldGck95QjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFFnSmlZZ1h5NXNZV0psYkNBOElIUmJNbDBwSUhzZ1h5NXNZV0psYkNBOUlIUmJNbDA3SUY4dWIzQnpMbkIxYzJnb2IzQXBPeUJpY21WaGF6c2dmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwV3pKZEtTQmZMbTl3Y3k1d2IzQW9LVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmZMblJ5ZVhNdWNHOXdLQ2s3SUdOdmJuUnBiblZsTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJRzl3SUQwZ1ltOWtlUzVqWVd4c0tIUm9hWE5CY21jc0lGOHBPMXh5WEc0Z0lDQWdJQ0FnSUgwZ1kyRjBZMmdnS0dVcElIc2diM0FnUFNCYk5pd2daVjA3SUhrZ1BTQXdPeUI5SUdacGJtRnNiSGtnZXlCbUlEMGdkQ0E5SURBN0lIMWNjbHh1SUNBZ0lDQWdJQ0JwWmlBb2IzQmJNRjBnSmlBMUtTQjBhSEp2ZHlCdmNGc3hYVHNnY21WMGRYSnVJSHNnZG1Gc2RXVTZJRzl3V3pCZElEOGdiM0JiTVYwZ09pQjJiMmxrSURBc0lHUnZibVU2SUhSeWRXVWdmVHRjY2x4dUlDQWdJSDFjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUhaaGNpQmZYMk55WldGMFpVSnBibVJwYm1jZ1BTQlBZbXBsWTNRdVkzSmxZWFJsSUQ4Z0tHWjFibU4wYVc5dUtHOHNJRzBzSUdzc0lHc3lLU0I3WEhKY2JpQWdJQ0JwWmlBb2F6SWdQVDA5SUhWdVpHVm1hVzVsWkNrZ2F6SWdQU0JyTzF4eVhHNGdJQ0FnZG1GeUlHUmxjMk1nUFNCUFltcGxZM1F1WjJWMFQzZHVVSEp2Y0dWeWRIbEVaWE5qY21sd2RHOXlLRzBzSUdzcE8xeHlYRzRnSUNBZ2FXWWdLQ0ZrWlhOaklIeDhJQ2hjSW1kbGRGd2lJR2x1SUdSbGMyTWdQeUFoYlM1ZlgyVnpUVzlrZFd4bElEb2daR1Z6WXk1M2NtbDBZV0pzWlNCOGZDQmtaWE5qTG1OdmJtWnBaM1Z5WVdKc1pTa3BJSHRjY2x4dUlDQWdJQ0FnSUNCa1pYTmpJRDBnZXlCbGJuVnRaWEpoWW14bE9pQjBjblZsTENCblpYUTZJR1oxYm1OMGFXOXVLQ2tnZXlCeVpYUjFjbTRnYlZ0clhUc2dmU0I5TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtHOHNJR3N5TENCa1pYTmpLVHRjY2x4dWZTa2dPaUFvWm5WdVkzUnBiMjRvYnl3Z2JTd2dheXdnYXpJcElIdGNjbHh1SUNBZ0lHbG1JQ2hyTWlBOVBUMGdkVzVrWldacGJtVmtLU0JyTWlBOUlHczdYSEpjYmlBZ0lDQnZXMnN5WFNBOUlHMWJhMTA3WEhKY2JuMHBPMXh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZaWGh3YjNKMFUzUmhjaWh0TENCdktTQjdYSEpjYmlBZ0lDQm1iM0lnS0haaGNpQndJR2x1SUcwcElHbG1JQ2h3SUNFOVBTQmNJbVJsWm1GMWJIUmNJaUFtSmlBaFQySnFaV04wTG5CeWIzUnZkSGx3WlM1b1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tHOHNJSEFwS1NCZlgyTnlaV0YwWlVKcGJtUnBibWNvYnl3Z2JTd2djQ2s3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgzWmhiSFZsY3lodktTQjdYSEpjYmlBZ0lDQjJZWElnY3lBOUlIUjVjR1Z2WmlCVGVXMWliMndnUFQwOUlGd2lablZ1WTNScGIyNWNJaUFtSmlCVGVXMWliMnd1YVhSbGNtRjBiM0lzSUcwZ1BTQnpJQ1ltSUc5YmMxMHNJR2tnUFNBd08xeHlYRzRnSUNBZ2FXWWdLRzBwSUhKbGRIVnliaUJ0TG1OaGJHd29ieWs3WEhKY2JpQWdJQ0JwWmlBb2J5QW1KaUIwZVhCbGIyWWdieTVzWlc1bmRHZ2dQVDA5SUZ3aWJuVnRZbVZ5WENJcElISmxkSFZ5YmlCN1hISmNiaUFnSUNBZ0lDQWdibVY0ZERvZ1puVnVZM1JwYjI0Z0tDa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYnlBbUppQnBJRDQ5SUc4dWJHVnVaM1JvS1NCdklEMGdkbTlwWkNBd08xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZXlCMllXeDFaVG9nYnlBbUppQnZXMmtySzEwc0lHUnZibVU2SUNGdklIMDdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb2N5QS9JRndpVDJKcVpXTjBJR2x6SUc1dmRDQnBkR1Z5WVdKc1pTNWNJaUE2SUZ3aVUzbHRZbTlzTG1sMFpYSmhkRzl5SUdseklHNXZkQ0JrWldacGJtVmtMbHdpS1R0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZjbVZoWkNodkxDQnVLU0I3WEhKY2JpQWdJQ0IyWVhJZ2JTQTlJSFI1Y0dWdlppQlRlVzFpYjJ3Z1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBbUppQnZXMU41YldKdmJDNXBkR1Z5WVhSdmNsMDdYSEpjYmlBZ0lDQnBaaUFvSVcwcElISmxkSFZ5YmlCdk8xeHlYRzRnSUNBZ2RtRnlJR2tnUFNCdExtTmhiR3dvYnlrc0lISXNJR0Z5SUQwZ1cxMHNJR1U3WEhKY2JpQWdJQ0IwY25rZ2UxeHlYRzRnSUNBZ0lDQWdJSGRvYVd4bElDZ29iaUE5UFQwZ2RtOXBaQ0F3SUh4OElHNHRMU0ErSURBcElDWW1JQ0VvY2lBOUlHa3VibVY0ZENncEtTNWtiMjVsS1NCaGNpNXdkWE5vS0hJdWRtRnNkV1VwTzF4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnWTJGMFkyZ2dLR1Z5Y205eUtTQjdJR1VnUFNCN0lHVnljbTl5T2lCbGNuSnZjaUI5T3lCOVhISmNiaUFnSUNCbWFXNWhiR3g1SUh0Y2NseHVJQ0FnSUNBZ0lDQjBjbmtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NpQW1KaUFoY2k1a2IyNWxJQ1ltSUNodElEMGdhVnRjSW5KbGRIVnlibHdpWFNrcElHMHVZMkZzYkNocEtUdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ1ptbHVZV3hzZVNCN0lHbG1JQ2hsS1NCMGFISnZkeUJsTG1WeWNtOXlPeUI5WEhKY2JpQWdJQ0I5WEhKY2JpQWdJQ0J5WlhSMWNtNGdZWEk3WEhKY2JuMWNjbHh1WEhKY2JpOHFLaUJBWkdWd2NtVmpZWFJsWkNBcUwxeHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl6Y0hKbFlXUW9LU0I3WEhKY2JpQWdJQ0JtYjNJZ0tIWmhjaUJoY2lBOUlGdGRMQ0JwSUQwZ01Ec2dhU0E4SUdGeVozVnRaVzUwY3k1c1pXNW5kR2c3SUdrckt5bGNjbHh1SUNBZ0lDQWdJQ0JoY2lBOUlHRnlMbU52Ym1OaGRDaGZYM0psWVdRb1lYSm5kVzFsYm5SelcybGRLU2s3WEhKY2JpQWdJQ0J5WlhSMWNtNGdZWEk3WEhKY2JuMWNjbHh1WEhKY2JpOHFLaUJBWkdWd2NtVmpZWFJsWkNBcUwxeHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl6Y0hKbFlXUkJjbkpoZVhNb0tTQjdYSEpjYmlBZ0lDQm1iM0lnS0haaGNpQnpJRDBnTUN3Z2FTQTlJREFzSUdsc0lEMGdZWEpuZFcxbGJuUnpMbXhsYm1kMGFEc2dhU0E4SUdsc095QnBLeXNwSUhNZ0t6MGdZWEpuZFcxbGJuUnpXMmxkTG14bGJtZDBhRHRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJSElnUFNCQmNuSmhlU2h6S1N3Z2F5QTlJREFzSUdrZ1BTQXdPeUJwSUR3Z2FXdzdJR2tyS3lsY2NseHVJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQmhJRDBnWVhKbmRXMWxiblJ6VzJsZExDQnFJRDBnTUN3Z2Ftd2dQU0JoTG14bGJtZDBhRHNnYWlBOElHcHNPeUJxS3lzc0lHc3JLeWxjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbHRyWFNBOUlHRmJhbDA3WEhKY2JpQWdJQ0J5WlhSMWNtNGdjanRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmMzQnlaV0ZrUVhKeVlYa29kRzhzSUdaeWIyMHNJSEJoWTJzcElIdGNjbHh1SUNBZ0lHbG1JQ2h3WVdOcklIeDhJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dQVDA5SURJcElHWnZjaUFvZG1GeUlHa2dQU0F3TENCc0lEMGdabkp2YlM1c1pXNW5kR2dzSUdGeU95QnBJRHdnYkRzZ2FTc3JLU0I3WEhKY2JpQWdJQ0FnSUNBZ2FXWWdLR0Z5SUh4OElDRW9hU0JwYmlCbWNtOXRLU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lXRnlLU0JoY2lBOUlFRnljbUY1TG5CeWIzUnZkSGx3WlM1emJHbGpaUzVqWVd4c0tHWnliMjBzSURBc0lHa3BPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmhjbHRwWFNBOUlHWnliMjFiYVYwN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lDQWdjbVYwZFhKdUlIUnZMbU52Ym1OaGRDaGhjaUI4ZkNCQmNuSmhlUzV3Y205MGIzUjVjR1V1YzJ4cFkyVXVZMkZzYkNobWNtOXRLU2s3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyRjNZV2wwS0hZcElIdGNjbHh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpJR2x1YzNSaGJtTmxiMllnWDE5aGQyRnBkQ0EvSUNoMGFHbHpMbllnUFNCMkxDQjBhR2x6S1NBNklHNWxkeUJmWDJGM1lXbDBLSFlwTzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWhjM2x1WTBkbGJtVnlZWFJ2Y2loMGFHbHpRWEpuTENCZllYSm5kVzFsYm5SekxDQm5aVzVsY21GMGIzSXBJSHRjY2x4dUlDQWdJR2xtSUNnaFUzbHRZbTlzTG1GemVXNWpTWFJsY21GMGIzSXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKVGVXMWliMnd1WVhONWJtTkpkR1Z5WVhSdmNpQnBjeUJ1YjNRZ1pHVm1hVzVsWkM1Y0lpazdYSEpjYmlBZ0lDQjJZWElnWnlBOUlHZGxibVZ5WVhSdmNpNWhjSEJzZVNoMGFHbHpRWEpuTENCZllYSm5kVzFsYm5SeklIeDhJRnRkS1N3Z2FTd2djU0E5SUZ0ZE8xeHlYRzRnSUNBZ2NtVjBkWEp1SUdrZ1BTQjdmU3dnZG1WeVlpaGNJbTVsZUhSY0lpa3NJSFpsY21Jb1hDSjBhSEp2ZDF3aUtTd2dkbVZ5WWloY0luSmxkSFZ5Ymx3aUtTd2dhVnRUZVcxaWIyd3VZWE41Ym1OSmRHVnlZWFJ2Y2wwZ1BTQm1kVzVqZEdsdmJpQW9LU0I3SUhKbGRIVnliaUIwYUdsek95QjlMQ0JwTzF4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnZG1WeVlpaHVLU0I3SUdsbUlDaG5XMjVkS1NCcFcyNWRJRDBnWm5WdVkzUnBiMjRnS0hZcElIc2djbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLR1oxYm1OMGFXOXVJQ2hoTENCaUtTQjdJSEV1Y0hWemFDaGJiaXdnZGl3Z1lTd2dZbDBwSUQ0Z01TQjhmQ0J5WlhOMWJXVW9iaXdnZGlrN0lIMHBPeUI5T3lCOVhISmNiaUFnSUNCbWRXNWpkR2x2YmlCeVpYTjFiV1VvYml3Z2Rpa2dleUIwY25rZ2V5QnpkR1Z3S0dkYmJsMG9kaWtwT3lCOUlHTmhkR05vSUNobEtTQjdJSE5sZEhSc1pTaHhXekJkV3pOZExDQmxLVHNnZlNCOVhISmNiaUFnSUNCbWRXNWpkR2x2YmlCemRHVndLSElwSUhzZ2NpNTJZV3gxWlNCcGJuTjBZVzVqWlc5bUlGOWZZWGRoYVhRZ1B5QlFjbTl0YVhObExuSmxjMjlzZG1Vb2NpNTJZV3gxWlM1MktTNTBhR1Z1S0daMWJHWnBiR3dzSUhKbGFtVmpkQ2tnT2lCelpYUjBiR1VvY1Zzd1hWc3lYU3dnY2lrN0lIMWNjbHh1SUNBZ0lHWjFibU4wYVc5dUlHWjFiR1pwYkd3b2RtRnNkV1VwSUhzZ2NtVnpkVzFsS0Z3aWJtVjRkRndpTENCMllXeDFaU2s3SUgxY2NseHVJQ0FnSUdaMWJtTjBhVzl1SUhKbGFtVmpkQ2gyWVd4MVpTa2dleUJ5WlhOMWJXVW9YQ0owYUhKdmQxd2lMQ0IyWVd4MVpTazdJSDFjY2x4dUlDQWdJR1oxYm1OMGFXOXVJSE5sZEhSc1pTaG1MQ0IyS1NCN0lHbG1JQ2htS0hZcExDQnhMbk5vYVdaMEtDa3NJSEV1YkdWdVozUm9LU0J5WlhOMWJXVW9jVnN3WFZzd1hTd2djVnN3WFZzeFhTazdJSDFjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZllYTjVibU5FWld4bFoyRjBiM0lvYnlrZ2UxeHlYRzRnSUNBZ2RtRnlJR2tzSUhBN1hISmNiaUFnSUNCeVpYUjFjbTRnYVNBOUlIdDlMQ0IyWlhKaUtGd2libVY0ZEZ3aUtTd2dkbVZ5WWloY0luUm9jbTkzWENJc0lHWjFibU4wYVc5dUlDaGxLU0I3SUhSb2NtOTNJR1U3SUgwcExDQjJaWEppS0Z3aWNtVjBkWEp1WENJcExDQnBXMU41YldKdmJDNXBkR1Z5WVhSdmNsMGdQU0JtZFc1amRHbHZiaUFvS1NCN0lISmxkSFZ5YmlCMGFHbHpPeUI5TENCcE8xeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z2RtVnlZaWh1TENCbUtTQjdJR2xiYmwwZ1BTQnZXMjVkSUQ4Z1puVnVZM1JwYjI0Z0tIWXBJSHNnY21WMGRYSnVJQ2h3SUQwZ0lYQXBJRDhnZXlCMllXeDFaVG9nWDE5aGQyRnBkQ2h2VzI1ZEtIWXBLU3dnWkc5dVpUb2dabUZzYzJVZ2ZTQTZJR1lnUHlCbUtIWXBJRG9nZGpzZ2ZTQTZJR1k3SUgxY2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZZWE41Ym1OV1lXeDFaWE1vYnlrZ2UxeHlYRzRnSUNBZ2FXWWdLQ0ZUZVcxaWIyd3VZWE41Ym1OSmRHVnlZWFJ2Y2lrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJbE41YldKdmJDNWhjM2x1WTBsMFpYSmhkRzl5SUdseklHNXZkQ0JrWldacGJtVmtMbHdpS1R0Y2NseHVJQ0FnSUhaaGNpQnRJRDBnYjF0VGVXMWliMnd1WVhONWJtTkpkR1Z5WVhSdmNsMHNJR2s3WEhKY2JpQWdJQ0J5WlhSMWNtNGdiU0EvSUcwdVkyRnNiQ2h2S1NBNklDaHZJRDBnZEhsd1pXOW1JRjlmZG1Gc2RXVnpJRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdQeUJmWDNaaGJIVmxjeWh2S1NBNklHOWJVM2x0WW05c0xtbDBaWEpoZEc5eVhTZ3BMQ0JwSUQwZ2UzMHNJSFpsY21Jb1hDSnVaWGgwWENJcExDQjJaWEppS0Z3aWRHaHliM2RjSWlrc0lIWmxjbUlvWENKeVpYUjFjbTVjSWlrc0lHbGJVM2x0WW05c0xtRnplVzVqU1hSbGNtRjBiM0pkSUQwZ1puVnVZM1JwYjI0Z0tDa2dleUJ5WlhSMWNtNGdkR2hwY3pzZ2ZTd2dhU2s3WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUIyWlhKaUtHNHBJSHNnYVZ0dVhTQTlJRzliYmwwZ0ppWWdablZ1WTNScGIyNGdLSFlwSUhzZ2NtVjBkWEp1SUc1bGR5QlFjbTl0YVhObEtHWjFibU4wYVc5dUlDaHlaWE52YkhabExDQnlaV3BsWTNRcElIc2dkaUE5SUc5YmJsMG9kaWtzSUhObGRIUnNaU2h5WlhOdmJIWmxMQ0J5WldwbFkzUXNJSFl1Wkc5dVpTd2dkaTUyWVd4MVpTazdJSDBwT3lCOU95QjlYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQnpaWFIwYkdVb2NtVnpiMngyWlN3Z2NtVnFaV04wTENCa0xDQjJLU0I3SUZCeWIyMXBjMlV1Y21WemIyeDJaU2gyS1M1MGFHVnVLR1oxYm1OMGFXOXVLSFlwSUhzZ2NtVnpiMngyWlNoN0lIWmhiSFZsT2lCMkxDQmtiMjVsT2lCa0lIMHBPeUI5TENCeVpXcGxZM1FwT3lCOVhISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMjFoYTJWVVpXMXdiR0YwWlU5aWFtVmpkQ2hqYjI5clpXUXNJSEpoZHlrZ2UxeHlYRzRnSUNBZ2FXWWdLRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNrZ2V5QlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvWTI5dmEyVmtMQ0JjSW5KaGQxd2lMQ0I3SUhaaGJIVmxPaUJ5WVhjZ2ZTazdJSDBnWld4elpTQjdJR052YjJ0bFpDNXlZWGNnUFNCeVlYYzdJSDFjY2x4dUlDQWdJSEpsZEhWeWJpQmpiMjlyWldRN1hISmNibjA3WEhKY2JseHlYRzUyWVhJZ1gxOXpaWFJOYjJSMWJHVkVaV1poZFd4MElEMGdUMkpxWldOMExtTnlaV0YwWlNBL0lDaG1kVzVqZEdsdmJpaHZMQ0IyS1NCN1hISmNiaUFnSUNCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29ieXdnWENKa1pXWmhkV3gwWENJc0lIc2daVzUxYldWeVlXSnNaVG9nZEhKMVpTd2dkbUZzZFdVNklIWWdmU2s3WEhKY2JuMHBJRG9nWm5WdVkzUnBiMjRvYnl3Z2Rpa2dlMXh5WEc0Z0lDQWdiMXRjSW1SbFptRjFiSFJjSWwwZ1BTQjJPMXh5WEc1OU8xeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmFXMXdiM0owVTNSaGNpaHRiMlFwSUh0Y2NseHVJQ0FnSUdsbUlDaHRiMlFnSmlZZ2JXOWtMbDlmWlhOTmIyUjFiR1VwSUhKbGRIVnliaUJ0YjJRN1hISmNiaUFnSUNCMllYSWdjbVZ6ZFd4MElEMGdlMzA3WEhKY2JpQWdJQ0JwWmlBb2JXOWtJQ0U5SUc1MWJHd3BJR1p2Y2lBb2RtRnlJR3NnYVc0Z2JXOWtLU0JwWmlBb2F5QWhQVDBnWENKa1pXWmhkV3gwWENJZ0ppWWdUMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLRzF2WkN3Z2F5a3BJRjlmWTNKbFlYUmxRbWx1WkdsdVp5aHlaWE4xYkhRc0lHMXZaQ3dnYXlrN1hISmNiaUFnSUNCZlgzTmxkRTF2WkhWc1pVUmxabUYxYkhRb2NtVnpkV3gwTENCdGIyUXBPMXh5WEc0Z0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZhVzF3YjNKMFJHVm1ZWFZzZENodGIyUXBJSHRjY2x4dUlDQWdJSEpsZEhWeWJpQW9iVzlrSUNZbUlHMXZaQzVmWDJWelRXOWtkV3hsS1NBL0lHMXZaQ0E2SUhzZ1pHVm1ZWFZzZERvZ2JXOWtJSDA3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyTnNZWE56VUhKcGRtRjBaVVpwWld4a1IyVjBLSEpsWTJWcGRtVnlMQ0J6ZEdGMFpTd2dhMmx1WkN3Z1ppa2dlMXh5WEc0Z0lDQWdhV1lnS0d0cGJtUWdQVDA5SUZ3aVlWd2lJQ1ltSUNGbUtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpVUhKcGRtRjBaU0JoWTJObGMzTnZjaUIzWVhNZ1pHVm1hVzVsWkNCM2FYUm9iM1YwSUdFZ1oyVjBkR1Z5WENJcE8xeHlYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQnpkR0YwWlNBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUQ4Z2NtVmpaV2wyWlhJZ0lUMDlJSE4wWVhSbElIeDhJQ0ZtSURvZ0lYTjBZWFJsTG1oaGN5aHlaV05sYVhabGNpa3BJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKRFlXNXViM1FnY21WaFpDQndjbWwyWVhSbElHMWxiV0psY2lCbWNtOXRJR0Z1SUc5aWFtVmpkQ0IzYUc5elpTQmpiR0Z6Y3lCa2FXUWdibTkwSUdSbFkyeGhjbVVnYVhSY0lpazdYSEpjYmlBZ0lDQnlaWFIxY200Z2EybHVaQ0E5UFQwZ1hDSnRYQ0lnUHlCbUlEb2dhMmx1WkNBOVBUMGdYQ0poWENJZ1B5Qm1MbU5oYkd3b2NtVmpaV2wyWlhJcElEb2daaUEvSUdZdWRtRnNkV1VnT2lCemRHRjBaUzVuWlhRb2NtVmpaV2wyWlhJcE8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTlqYkdGemMxQnlhWFpoZEdWR2FXVnNaRk5sZENoeVpXTmxhWFpsY2l3Z2MzUmhkR1VzSUhaaGJIVmxMQ0JyYVc1a0xDQm1LU0I3WEhKY2JpQWdJQ0JwWmlBb2EybHVaQ0E5UFQwZ1hDSnRYQ0lwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSlFjbWwyWVhSbElHMWxkR2h2WkNCcGN5QnViM1FnZDNKcGRHRmliR1ZjSWlrN1hISmNiaUFnSUNCcFppQW9hMmx1WkNBOVBUMGdYQ0poWENJZ0ppWWdJV1lwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSlFjbWwyWVhSbElHRmpZMlZ6YzI5eUlIZGhjeUJrWldacGJtVmtJSGRwZEdodmRYUWdZU0J6WlhSMFpYSmNJaWs3WEhKY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUhOMFlYUmxJRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdQeUJ5WldObGFYWmxjaUFoUFQwZ2MzUmhkR1VnZkh3Z0lXWWdPaUFoYzNSaGRHVXVhR0Z6S0hKbFkyVnBkbVZ5S1NrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJa05oYm01dmRDQjNjbWwwWlNCd2NtbDJZWFJsSUcxbGJXSmxjaUIwYnlCaGJpQnZZbXBsWTNRZ2QyaHZjMlVnWTJ4aGMzTWdaR2xrSUc1dmRDQmtaV05zWVhKbElHbDBYQ0lwTzF4eVhHNGdJQ0FnY21WMGRYSnVJQ2hyYVc1a0lEMDlQU0JjSW1GY0lpQS9JR1l1WTJGc2JDaHlaV05sYVhabGNpd2dkbUZzZFdVcElEb2daaUEvSUdZdWRtRnNkV1VnUFNCMllXeDFaU0E2SUhOMFlYUmxMbk5sZENoeVpXTmxhWFpsY2l3Z2RtRnNkV1VwS1N3Z2RtRnNkV1U3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyTnNZWE56VUhKcGRtRjBaVVpwWld4a1NXNG9jM1JoZEdVc0lISmxZMlZwZG1WeUtTQjdYSEpjYmlBZ0lDQnBaaUFvY21WalpXbDJaWElnUFQwOUlHNTFiR3dnZkh3Z0tIUjVjR1Z2WmlCeVpXTmxhWFpsY2lBaFBUMGdYQ0p2WW1wbFkzUmNJaUFtSmlCMGVYQmxiMllnY21WalpXbDJaWElnSVQwOUlGd2lablZ1WTNScGIyNWNJaWtwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSkRZVzV1YjNRZ2RYTmxJQ2RwYmljZ2IzQmxjbUYwYjNJZ2IyNGdibTl1TFc5aWFtVmpkRndpS1R0Y2NseHVJQ0FnSUhKbGRIVnliaUIwZVhCbGIyWWdjM1JoZEdVZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBL0lISmxZMlZwZG1WeUlEMDlQU0J6ZEdGMFpTQTZJSE4wWVhSbExtaGhjeWh5WldObGFYWmxjaWs3WEhKY2JuMWNjbHh1SWl3aVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkaGJXMWhSVTlVUmlobE9pQnVkVzFpWlhJcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdUV0YwYUM1d2IzY29aU3dnTWk0eUtUdGNibjFjYmlJc0ltbHRjRzl5ZENBcUlHRnpJRlJJVWtWRklHWnliMjBnSjNSb2NtVmxKenRjYm1sdGNHOXlkQ0I3SUZaU1RTQmhjeUJXTUZaU1RTd2dUV0YwWlhKcFlXd2dZWE1nVmpCTllYUmxjbWxoYkNCOUlHWnliMjBnSjBCd2FYaHBkaTkwZVhCbGN5MTJjbTB0TUM0d0p6dGNibWx0Y0c5eWRDQXFJR0Z6SUZZeFRWUnZiMjVUWTJobGJXRWdabkp2YlNBblFIQnBlR2wyTDNSNWNHVnpMWFp5YldNdGJXRjBaWEpwWVd4ekxXMTBiMjl1TFRFdU1DYzdYRzVwYlhCdmNuUWdkSGx3WlNCN0lFZE1WRVpNYjJGa1pYSlFiSFZuYVc0c0lFZE1WRVpRWVhKelpYSWdmU0JtY205dElDZDBhSEpsWlM5bGVHRnRjR3hsY3k5cWMyMHZiRzloWkdWeWN5OUhURlJHVEc5aFpHVnlMbXB6Snp0Y2JtbHRjRzl5ZENCN0lHZGhiVzFoUlU5VVJpQjlJR1p5YjIwZ0p5NHZkWFJwYkhNdloyRnRiV0ZGVDFSR0p6dGNibWx0Y0c5eWRDQjdJRWRNVkVZZ1lYTWdSMHhVUmxOamFHVnRZU0I5SUdaeWIyMGdKMEJuYkhSbUxYUnlZVzV6Wm05eWJTOWpiM0psSnp0Y2JseHVaWGh3YjNKMElHTnNZWE56SUZaU1RVMWhkR1Z5YVdGc2MxWXdRMjl0Y0dGMFVHeDFaMmx1SUdsdGNHeGxiV1Z1ZEhNZ1IweFVSa3h2WVdSbGNsQnNkV2RwYmlCN1hHNGdJSEIxWW14cFl5QnlaV0ZrYjI1c2VTQndZWEp6WlhJNklFZE1WRVpRWVhKelpYSTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFRWdiV0Z3SUdaeWIyMGdkakFnY21WdVpHVnlJSEYxWlhWbElIUnZJSFl4SUhKbGJtUmxjaUJ4ZFdWMVpTQnZabVp6WlhRc0lHWnZjaUJVY21GdWMzQmhjbVZ1ZENCdFlYUmxjbWxoYkhNdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElISmxZV1J2Ym14NUlGOXlaVzVrWlhKUmRXVjFaVTFoY0ZSeVlXNXpjR0Z5Wlc1ME9pQk5ZWEE4Ym5WdFltVnlMQ0J1ZFcxaVpYSStPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJJRzFoY0NCbWNtOXRJSFl3SUhKbGJtUmxjaUJ4ZFdWMVpTQjBieUIyTVNCeVpXNWtaWElnY1hWbGRXVWdiMlptYzJWMExDQm1iM0lnVkhKaGJuTndZWEpsYm5SYVYzSnBkR1VnYldGMFpYSnBZV3h6TGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCeVpXRmtiMjVzZVNCZmNtVnVaR1Z5VVhWbGRXVk5ZWEJVY21GdWMzQmhjbVZ1ZEZwWGNtbDBaVG9nVFdGd1BHNTFiV0psY2l3Z2JuVnRZbVZ5UGp0Y2JseHVJQ0J3ZFdKc2FXTWdaMlYwSUc1aGJXVW9LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnlaWFIxY200Z0oxWlNUVTFoZEdWeWFXRnNjMVl3UTI5dGNHRjBVR3gxWjJsdUp6dGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWh3WVhKelpYSTZJRWRNVkVaUVlYSnpaWElwSUh0Y2JpQWdJQ0IwYUdsekxuQmhjbk5sY2lBOUlIQmhjbk5sY2p0Y2JseHVJQ0FnSUhSb2FYTXVYM0psYm1SbGNsRjFaWFZsVFdGd1ZISmhibk53WVhKbGJuUWdQU0J1WlhjZ1RXRndLQ2s3WEc0Z0lDQWdkR2hwY3k1ZmNtVnVaR1Z5VVhWbGRXVk5ZWEJVY21GdWMzQmhjbVZ1ZEZwWGNtbDBaU0E5SUc1bGR5Qk5ZWEFvS1R0Y2JseHVJQ0FnSUM4dklGZFBVa3RCVWs5VlRrUTZJRUZrWkNCTFNGSmZkR1Y0ZEhWeVpWOTBjbUZ1YzJadmNtMGdkRzhnWlhoMFpXNXphVzl1YzFWelpXUmNiaUFnSUNBdkx5QkpkQ0JwY3lCMGIyOGdiR0YwWlNCMGJ5QmhaR1FnZEdocGN5QnBiaUJpWldadmNtVlNiMjkwWEc0Z0lDQWdZMjl1YzNRZ2FuTnZiaUE5SUhSb2FYTXVjR0Z5YzJWeUxtcHpiMjRnWVhNZ1IweFVSbE5qYUdWdFlTNUpSMHhVUmp0Y2JseHVJQ0FnSUdwemIyNHVaWGgwWlc1emFXOXVjMVZ6WldRZ1BTQnFjMjl1TG1WNGRHVnVjMmx2Ym5OVmMyVmtJRDgvSUZ0ZE8xeHVJQ0FnSUdsbUlDaHFjMjl1TG1WNGRHVnVjMmx2Ym5OVmMyVmtMbWx1WkdWNFQyWW9KMHRJVWw5MFpYaDBkWEpsWDNSeVlXNXpabTl5YlNjcElEMDlQU0F0TVNrZ2UxeHVJQ0FnSUNBZ2FuTnZiaTVsZUhSbGJuTnBiMjV6VlhObFpDNXdkWE5vS0NkTFNGSmZkR1Y0ZEhWeVpWOTBjbUZ1YzJadmNtMG5LVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdZWE41Ym1NZ1ltVm1iM0psVW05dmRDZ3BPaUJRY205dGFYTmxQSFp2YVdRK0lIdGNiaUFnSUNCamIyNXpkQ0JxYzI5dUlEMGdkR2hwY3k1d1lYSnpaWEl1YW5OdmJpQmhjeUJIVEZSR1UyTm9aVzFoTGtsSFRGUkdPMXh1WEc0Z0lDQWdMeThnWldGeWJIa2dZV0p2Y25RZ2FXWWdhWFFnWkc5bGMyNG5kQ0IxYzJVZ1ZqQldVazFjYmlBZ0lDQmpiMjV6ZENCMk1GWlNUVVY0ZEdWdWMybHZiaUE5SUdwemIyNHVaWGgwWlc1emFXOXVjejh1V3lkV1VrMG5YU0JoY3lCV01GWlNUU0I4SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JqYjI1emRDQjJNRTFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeUE5SUhZd1ZsSk5SWGgwWlc1emFXOXVQeTV0WVhSbGNtbGhiRkJ5YjNCbGNuUnBaWE03WEc0Z0lDQWdhV1lnS0NGMk1FMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklIQnZjSFZzWVhSbElISmxibVJsY2lCeGRXVjFaU0J0WVhCY2JpQWdJQ0IwYUdsekxsOXdiM0IxYkdGMFpWSmxibVJsY2xGMVpYVmxUV0Z3S0hZd1RXRjBaWEpwWVd4UWNtOXdaWEowYVdWektUdGNibHh1SUNBZ0lDOHZJR052Ym5abGNuUWdWakFnYldGMFpYSnBZV3dnY0hKdmNHVnlkR2xsY3lCcGJuUnZJRll4SUdOdmJYQmhkR2xpYkdVZ1ptOXliV0YwWEc0Z0lDQWdkakJOWVhSbGNtbGhiRkJ5YjNCbGNuUnBaWE11Wm05eVJXRmphQ2dvYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TENCdFlYUmxjbWxoYkVsdVpHVjRLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0J0WVhSbGNtbGhiRVJsWmlBOUlHcHpiMjR1YldGMFpYSnBZV3h6UHk1YmJXRjBaWEpwWVd4SmJtUmxlRjA3WEc1Y2JpQWdJQ0FnSUdsbUlDaHRZWFJsY21saGJFUmxaaUE5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpaGNiaUFnSUNBZ0lDQWdJQ0JnVmxKTlRXRjBaWEpwWVd4elZqQkRiMjF3WVhSUWJIVm5hVzQ2SUVGMGRHVnRjSFFnZEc4Z2RYTmxJRzFoZEdWeWFXRnNjMXNrZTIxaGRHVnlhV0ZzU1c1a1pYaDlYU0J2WmlCbmJGUkdJR0oxZENCMGFHVWdiV0YwWlhKcFlXd2daRzlsYzI0bmRDQmxlR2x6ZEdBc1hHNGdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdhV1lnS0cxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsY3k1emFHRmtaWElnUFQwOUlDZFdVazB2VFZSdmIyNG5LU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJRzFoZEdWeWFXRnNJRDBnZEdocGN5NWZjR0Z5YzJWV01FMVViMjl1VUhKdmNHVnlkR2xsY3lodFlYUmxjbWxoYkZCeWIzQmxjblJwWlhNc0lHMWhkR1Z5YVdGc1JHVm1LVHRjYmlBZ0lDQWdJQ0FnYW5OdmJpNXRZWFJsY21saGJITWhXMjFoZEdWeWFXRnNTVzVrWlhoZElEMGdiV0YwWlhKcFlXdzdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeTV6YUdGa1pYSS9Mbk4wWVhKMGMxZHBkR2dvSjFaU1RTOVZibXhwZENjcEtTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHMWhkR1Z5YVdGc0lEMGdkR2hwY3k1ZmNHRnljMlZXTUZWdWJHbDBVSEp2Y0dWeWRHbGxjeWh0WVhSbGNtbGhiRkJ5YjNCbGNuUnBaWE1zSUcxaGRHVnlhV0ZzUkdWbUtUdGNiaUFnSUNBZ0lDQWdhbk52Ymk1dFlYUmxjbWxoYkhNaFcyMWhkR1Z5YVdGc1NXNWtaWGhkSUQwZ2JXRjBaWEpwWVd3N1hHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5NXphR0ZrWlhJZ1BUMDlJQ2RXVWsxZlZWTkZYMGRNVkVaVFNFRkVSVkluS1NCN1hHNGdJQ0FnSUNBZ0lDOHZJR0JxYzI5dUxtMWhkR1Z5YVdGc2MxdHRZWFJsY21saGJFbHVaR1Y0WFdBZ2MyaHZkV3hrSUdKbElHRnNjbVZoWkhrZ2RtRnNhV1JjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR052Ym5OdmJHVXVkMkZ5YmloZ1ZsSk5UV0YwWlhKcFlXeHpWakJEYjIxd1lYUlFiSFZuYVc0NklGVnVhMjV2ZDI0Z2MyaGhaR1Z5T2lBa2UyMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5NXphR0ZrWlhKOVlDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJRjl3WVhKelpWWXdUVlJ2YjI1UWNtOXdaWEowYVdWektGeHVJQ0FnSUcxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsY3pvZ1ZqQk5ZWFJsY21saGJDeGNiaUFnSUNCelkyaGxiV0ZOWVhSbGNtbGhiRG9nUjB4VVJsTmphR1Z0WVM1SlRXRjBaWEpwWVd3c1hHNGdJQ2s2SUVkTVZFWlRZMmhsYldFdVNVMWhkR1Z5YVdGc0lIdGNiaUFnSUNCamIyNXpkQ0JwYzFSeVlXNXpjR0Z5Wlc1MElEMGdiV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpMbXRsZVhkdmNtUk5ZWEEvTGxzblgwRk1VRWhCUWt4RlRrUmZUMDRuWFNBL1B5Qm1ZV3h6WlR0Y2JpQWdJQ0JqYjI1emRDQmxibUZpYkdWa1dsZHlhWFJsSUQwZ2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxtWnNiMkYwVUhKdmNHVnlkR2xsY3o4dVd5ZGZXbGR5YVhSbEoxMGdQVDA5SURFN1hHNGdJQ0FnWTI5dWMzUWdkSEpoYm5Od1lYSmxiblJYYVhSb1dsZHlhWFJsSUQwZ1pXNWhZbXhsWkZwWGNtbDBaU0FtSmlCcGMxUnlZVzV6Y0dGeVpXNTBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2NtVnVaR1Z5VVhWbGRXVlBabVp6WlhST2RXMWlaWElnUFNCMGFHbHpMbDkyTUZCaGNuTmxVbVZ1WkdWeVVYVmxkV1VvYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6S1R0Y2JseHVJQ0FnSUdOdmJuTjBJR2x6UTNWMGIyWm1JRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG10bGVYZHZjbVJOWVhBL0xsc25YMEZNVUVoQlZFVlRWRjlQVGlkZElEOC9JR1poYkhObE8xeHVJQ0FnSUdOdmJuTjBJR0ZzY0doaFRXOWtaU0E5SUdselZISmhibk53WVhKbGJuUWdQeUFuUWt4RlRrUW5JRG9nYVhORGRYUnZabVlnUHlBblRVRlRTeWNnT2lBblQxQkJVVlZGSnp0Y2JpQWdJQ0JqYjI1emRDQmhiSEJvWVVOMWRHOW1aaUE5SUdselEzVjBiMlptSUQ4Z2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxtWnNiMkYwVUhKdmNHVnlkR2xsY3o4dVd5ZGZRM1YwYjJabUoxMGdPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0JqYjI1emRDQmpkV3hzVFc5a1pTQTlJRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeTVtYkc5aGRGQnliM0JsY25ScFpYTS9MbHNuWDBOMWJHeE5iMlJsSjEwZ1B6OGdNanNnTHk4Z1pXNTFiU3dnZXlCUFptWXNJRVp5YjI1MExDQkNZV05ySUgxY2JpQWdJQ0JqYjI1emRDQmtiM1ZpYkdWVGFXUmxaQ0E5SUdOMWJHeE5iMlJsSUQwOVBTQXdPMXh1WEc0Z0lDQWdZMjl1YzNRZ2RHVjRkSFZ5WlZSeVlXNXpabTl5YlVWNGRDQTlJSFJvYVhNdVgzQnZjblJVWlhoMGRYSmxWSEpoYm5ObWIzSnRLRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeWs3WEc1Y2JpQWdJQ0JqYjI1emRDQmlZWE5sUTI5c2IzSkdZV04wYjNJZ1BTQnRZWFJsY21saGJGQnliM0JsY25ScFpYTXVkbVZqZEc5eVVISnZjR1Z5ZEdsbGN6OHVXeWRmUTI5c2IzSW5YVDh1YldGd0tGeHVJQ0FnSUNBZ0tIWTZJRzUxYldKbGNpd2dhVG9nYm5WdFltVnlLU0E5UGlBb2FTQTlQVDBnTXlBL0lIWWdPaUJuWVcxdFlVVlBWRVlvZGlrcExDQXZMeUJoYkhCb1lTQmphR0Z1Ym1Wc0lHbHpJSE4wYjNKbFpDQnBiaUJzYVc1bFlYSmNiaUFnSUNBcE8xeHVJQ0FnSUdOdmJuTjBJR0poYzJWRGIyeHZjbFJsZUhSMWNtVkpibVJsZUNBOUlHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5NTBaWGgwZFhKbFVISnZjR1Z5ZEdsbGN6OHVXeWRmVFdGcGJsUmxlQ2RkTzF4dUlDQWdJR052Ym5OMElHSmhjMlZEYjJ4dmNsUmxlSFIxY21VZ1BWeHVJQ0FnSUNBZ1ltRnpaVU52Ykc5eVZHVjRkSFZ5WlVsdVpHVjRJQ0U5SUc1MWJHeGNiaUFnSUNBZ0lDQWdQeUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBibVJsZURvZ1ltRnpaVU52Ykc5eVZHVjRkSFZ5WlVsdVpHVjRMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1pYaDBaVzV6YVc5dWN6b2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXVMaTUwWlhoMGRYSmxWSEpoYm5ObWIzSnRSWGgwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdZMjl1YzNRZ2JtOXliV0ZzVkdWNGRIVnlaVk5qWVd4bElEMGdiV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpMbVpzYjJGMFVISnZjR1Z5ZEdsbGN6OHVXeWRmUW5WdGNGTmpZV3hsSjEwN1hHNGdJQ0FnWTI5dWMzUWdibTl5YldGc1ZHVjRkSFZ5WlVsdVpHVjRJRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG5SbGVIUjFjbVZRY205d1pYSjBhV1Z6UHk1YkoxOUNkVzF3VFdGd0oxMDdYRzRnSUNBZ1kyOXVjM1FnYm05eWJXRnNWR1Y0ZEhWeVpTQTlYRzRnSUNBZ0lDQnViM0p0WVd4VVpYaDBkWEpsU1c1a1pYZ2dJVDBnYm5Wc2JGeHVJQ0FnSUNBZ0lDQS9JSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbHVaR1Y0T2lCdWIzSnRZV3hVWlhoMGRYSmxTVzVrWlhnc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6WTJGc1pUb2dibTl5YldGc1ZHVjRkSFZ5WlZOallXeGxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1pYaDBaVzV6YVc5dWN6b2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXVMaTUwWlhoMGRYSmxWSEpoYm5ObWIzSnRSWGgwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdZMjl1YzNRZ1pXMXBjM05wZG1WR1lXTjBiM0lnUFNCdFlYUmxjbWxoYkZCeWIzQmxjblJwWlhNdWRtVmpkRzl5VUhKdmNHVnlkR2xsY3o4dVd5ZGZSVzFwYzNOcGIyNURiMnh2Y2lkZFB5NXRZWEFvWjJGdGJXRkZUMVJHS1R0Y2JpQWdJQ0JqYjI1emRDQmxiV2x6YzJsMlpWUmxlSFIxY21WSmJtUmxlQ0E5SUcxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsY3k1MFpYaDBkWEpsVUhKdmNHVnlkR2xsY3o4dVd5ZGZSVzFwYzNOcGIyNU5ZWEFuWFR0Y2JpQWdJQ0JqYjI1emRDQmxiV2x6YzJsMlpWUmxlSFIxY21VZ1BWeHVJQ0FnSUNBZ1pXMXBjM05wZG1WVVpYaDBkWEpsU1c1a1pYZ2dJVDBnYm5Wc2JGeHVJQ0FnSUNBZ0lDQS9JSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbHVaR1Y0T2lCbGJXbHpjMmwyWlZSbGVIUjFjbVZKYm1SbGVDeGNiaUFnSUNBZ0lDQWdJQ0FnSUdWNGRHVnVjMmx2Ym5NNklIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0xpNHVkR1Y0ZEhWeVpWUnlZVzV6Wm05eWJVVjRkQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lHTnZibk4wSUhOb1lXUmxRMjlzYjNKR1lXTjBiM0lnUFNCdFlYUmxjbWxoYkZCeWIzQmxjblJwWlhNdWRtVmpkRzl5VUhKdmNHVnlkR2xsY3o4dVd5ZGZVMmhoWkdWRGIyeHZjaWRkUHk1dFlYQW9aMkZ0YldGRlQxUkdLVHRjYmlBZ0lDQmpiMjV6ZENCemFHRmtaVTExYkhScGNHeDVWR1Y0ZEhWeVpVbHVaR1Y0SUQwZ2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxuUmxlSFIxY21WUWNtOXdaWEowYVdWelB5NWJKMTlUYUdGa1pWUmxlSFIxY21VblhUdGNiaUFnSUNCamIyNXpkQ0J6YUdGa1pVMTFiSFJwY0d4NVZHVjRkSFZ5WlNBOVhHNGdJQ0FnSUNCemFHRmtaVTExYkhScGNHeDVWR1Y0ZEhWeVpVbHVaR1Y0SUNFOUlHNTFiR3hjYmlBZ0lDQWdJQ0FnUHlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwYm1SbGVEb2djMmhoWkdWTmRXeDBhWEJzZVZSbGVIUjFjbVZKYm1SbGVDeGNiaUFnSUNBZ0lDQWdJQ0FnSUdWNGRHVnVjMmx2Ym5NNklIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0xpNHVkR1Y0ZEhWeVpWUnlZVzV6Wm05eWJVVjRkQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lDOHZJQzh2SUdOdmJuWmxjblFnZGpBZ2MyaGhaR1VnYzJocFpuUWdMeUJ6YUdGa1pTQjBiMjl1ZVZ4dUlDQWdJR3hsZENCemFHRmthVzVuVTJocFpuUkdZV04wYjNJZ1BTQnRZWFJsY21saGJGQnliM0JsY25ScFpYTXVabXh2WVhSUWNtOXdaWEowYVdWelB5NWJKMTlUYUdGa1pWTm9hV1owSjEwZ1B6OGdNQzR3TzF4dUlDQWdJR3hsZENCemFHRmthVzVuVkc5dmJubEdZV04wYjNJZ1BTQnRZWFJsY21saGJGQnliM0JsY25ScFpYTXVabXh2WVhSUWNtOXdaWEowYVdWelB5NWJKMTlUYUdGa1pWUnZiMjU1SjEwZ1B6OGdNQzQ1TzF4dUlDQWdJSE5vWVdScGJtZFViMjl1ZVVaaFkzUnZjaUE5SUZSSVVrVkZMazFoZEdoVmRHbHNjeTVzWlhKd0tITm9ZV1JwYm1kVWIyOXVlVVpoWTNSdmNpd2dNUzR3TENBd0xqVWdLeUF3TGpVZ0tpQnphR0ZrYVc1blUyaHBablJHWVdOMGIzSXBPMXh1SUNBZ0lITm9ZV1JwYm1kVGFHbG1kRVpoWTNSdmNpQTlJQzF6YUdGa2FXNW5VMmhwWm5SR1lXTjBiM0lnTFNBb01TNHdJQzBnYzJoaFpHbHVaMVJ2YjI1NVJtRmpkRzl5S1R0Y2JseHVJQ0FnSUdOdmJuTjBJR2RwU1c1MFpXNXphWFI1Um1GamRHOXlJRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG1ac2IyRjBVSEp2Y0dWeWRHbGxjejh1V3lkZlNXNWthWEpsWTNSTWFXZG9kRWx1ZEdWdWMybDBlU2RkTzF4dUlDQWdJR052Ym5OMElHZHBSWEYxWVd4cGVtRjBhVzl1Um1GamRHOXlJRDBnWjJsSmJuUmxibk5wZEhsR1lXTjBiM0lnUHlBeExqQWdMU0JuYVVsdWRHVnVjMmwwZVVaaFkzUnZjaUE2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUdOdmJuTjBJRzFoZEdOaGNGUmxlSFIxY21WSmJtUmxlQ0E5SUcxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsY3k1MFpYaDBkWEpsVUhKdmNHVnlkR2xsY3o4dVd5ZGZVM0JvWlhKbFFXUmtKMTA3WEc0Z0lDQWdZMjl1YzNRZ2JXRjBZMkZ3Um1GamRHOXlJRDBnYldGMFkyRndWR1Y0ZEhWeVpVbHVaR1Y0SUNFOUlHNTFiR3dnUHlCYk1TNHdMQ0F4TGpBc0lERXVNRjBnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnWTI5dWMzUWdiV0YwWTJGd1ZHVjRkSFZ5WlNBOVhHNGdJQ0FnSUNCdFlYUmpZWEJVWlhoMGRYSmxTVzVrWlhnZ0lUMGdiblZzYkZ4dUlDQWdJQ0FnSUNBL0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsdVpHVjRPaUJ0WVhSallYQlVaWGgwZFhKbFNXNWtaWGdzWEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJR052Ym5OMElISnBiVXhwWjJoMGFXNW5UV2w0Um1GamRHOXlJRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG1ac2IyRjBVSEp2Y0dWeWRHbGxjejh1V3lkZlVtbHRUR2xuYUhScGJtZE5hWGduWFR0Y2JpQWdJQ0JqYjI1emRDQnlhVzFOZFd4MGFYQnNlVlJsZUhSMWNtVkpibVJsZUNBOUlHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5NTBaWGgwZFhKbFVISnZjR1Z5ZEdsbGN6OHVXeWRmVW1sdFZHVjRkSFZ5WlNkZE8xeHVJQ0FnSUdOdmJuTjBJSEpwYlUxMWJIUnBjR3g1VkdWNGRIVnlaU0E5WEc0Z0lDQWdJQ0J5YVcxTmRXeDBhWEJzZVZSbGVIUjFjbVZKYm1SbGVDQWhQU0J1ZFd4c1hHNGdJQ0FnSUNBZ0lEOGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXNWtaWGc2SUhKcGJVMTFiSFJwY0d4NVZHVjRkSFZ5WlVsdVpHVjRMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1pYaDBaVzV6YVc5dWN6b2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXVMaTUwWlhoMGRYSmxWSEpoYm5ObWIzSnRSWGgwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdZMjl1YzNRZ2NHRnlZVzFsZEhKcFkxSnBiVU52Ykc5eVJtRmpkRzl5SUQwZ2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxuWmxZM1J2Y2xCeWIzQmxjblJwWlhNL0xsc25YMUpwYlVOdmJHOXlKMTAvTG0xaGNDaG5ZVzF0WVVWUFZFWXBPMXh1SUNBZ0lHTnZibk4wSUhCaGNtRnRaWFJ5YVdOU2FXMUdjbVZ6Ym1Wc1VHOTNaWEpHWVdOMGIzSWdQU0J0WVhSbGNtbGhiRkJ5YjNCbGNuUnBaWE11Wm14dllYUlFjbTl3WlhKMGFXVnpQeTViSjE5U2FXMUdjbVZ6Ym1Wc1VHOTNaWEluWFR0Y2JpQWdJQ0JqYjI1emRDQndZWEpoYldWMGNtbGpVbWx0VEdsbWRFWmhZM1J2Y2lBOUlHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5NW1iRzloZEZCeWIzQmxjblJwWlhNL0xsc25YMUpwYlV4cFpuUW5YVHRjYmx4dUlDQWdJR052Ym5OMElHOTFkR3hwYm1WWGFXUjBhRTF2WkdVZ1BTQmJKMjV2Ym1VbkxDQW5kMjl5YkdSRGIyOXlaR2x1WVhSbGN5Y3NJQ2R6WTNKbFpXNURiMjl5WkdsdVlYUmxjeWRkVzF4dUlDQWdJQ0FnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG1ac2IyRjBVSEp2Y0dWeWRHbGxjejh1V3lkZlQzVjBiR2x1WlZkcFpIUm9UVzlrWlNkZElEOC9JREJjYmlBZ0lDQmRJR0Z6SUZZeFRWUnZiMjVUWTJobGJXRXVUV0YwWlhKcFlXeHpUVlJ2YjI1UGRYUnNhVzVsVjJsa2RHaE5iMlJsTzF4dVhHNGdJQ0FnTHk4Z0x5OGdkakFnYjNWMGJHbHVaVmRwWkhSb1JtRmpkRzl5SUdseklHbHVJR05sYm5ScGJXVjBaWEpjYmlBZ0lDQnNaWFFnYjNWMGJHbHVaVmRwWkhSb1JtRmpkRzl5SUQwZ2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxtWnNiMkYwVUhKdmNHVnlkR2xsY3o4dVd5ZGZUM1YwYkdsdVpWZHBaSFJvSjEwZ1B6OGdNQzR3TzF4dUlDQWdJRzkxZEd4cGJtVlhhV1IwYUVaaFkzUnZjaUE5SURBdU1ERWdLaUJ2ZFhSc2FXNWxWMmxrZEdoR1lXTjBiM0k3WEc1Y2JpQWdJQ0JqYjI1emRDQnZkWFJzYVc1bFYybGtkR2hOZFd4MGFYQnNlVlJsZUhSMWNtVkpibVJsZUNBOUlHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5NTBaWGgwZFhKbFVISnZjR1Z5ZEdsbGN6OHVXeWRmVDNWMGJHbHVaVmRwWkhSb1ZHVjRkSFZ5WlNkZE8xeHVJQ0FnSUdOdmJuTjBJRzkxZEd4cGJtVlhhV1IwYUUxMWJIUnBjR3g1VkdWNGRIVnlaU0E5WEc0Z0lDQWdJQ0J2ZFhSc2FXNWxWMmxrZEdoTmRXeDBhWEJzZVZSbGVIUjFjbVZKYm1SbGVDQWhQU0J1ZFd4c1hHNGdJQ0FnSUNBZ0lEOGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXNWtaWGc2SUc5MWRHeHBibVZYYVdSMGFFMTFiSFJwY0d4NVZHVjRkSFZ5WlVsdVpHVjRMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1pYaDBaVzV6YVc5dWN6b2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXVMaTUwWlhoMGRYSmxWSEpoYm5ObWIzSnRSWGgwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdZMjl1YzNRZ2IzVjBiR2x1WlVOdmJHOXlSbUZqZEc5eUlEMGdiV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpMblpsWTNSdmNsQnliM0JsY25ScFpYTS9MbHNuWDA5MWRHeHBibVZEYjJ4dmNpZGRQeTV0WVhBb1oyRnRiV0ZGVDFSR0tUdGNiaUFnSUNCamIyNXpkQ0J2ZFhSc2FXNWxRMjlzYjNKTmIyUmxJRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG1ac2IyRjBVSEp2Y0dWeWRHbGxjejh1V3lkZlQzVjBiR2x1WlVOdmJHOXlUVzlrWlNkZE95QXZMeUJsYm5WdExDQjdJRVpwZUdWa0xDQk5hWGhsWkNCOVhHNGdJQ0FnWTI5dWMzUWdiM1YwYkdsdVpVeHBaMmgwYVc1blRXbDRSbUZqZEc5eUlEMWNiaUFnSUNBZ0lHOTFkR3hwYm1WRGIyeHZjazF2WkdVZ1BUMDlJREVnUHlCdFlYUmxjbWxoYkZCeWIzQmxjblJwWlhNdVpteHZZWFJRY205d1pYSjBhV1Z6UHk1YkoxOVBkWFJzYVc1bFRHbG5hSFJwYm1kTmFYZ25YU0E2SURBdU1EdGNibHh1SUNBZ0lHTnZibk4wSUhWMlFXNXBiV0YwYVc5dVRXRnphMVJsZUhSMWNtVkpibVJsZUNBOUlHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5NTBaWGgwZFhKbFVISnZjR1Z5ZEdsbGN6OHVXeWRmVlhaQmJtbHRUV0Z6YTFSbGVIUjFjbVVuWFR0Y2JpQWdJQ0JqYjI1emRDQjFka0Z1YVcxaGRHbHZiazFoYzJ0VVpYaDBkWEpsSUQxY2JpQWdJQ0FnSUhWMlFXNXBiV0YwYVc5dVRXRnphMVJsZUhSMWNtVkpibVJsZUNBaFBTQnVkV3hzWEc0Z0lDQWdJQ0FnSUQ4Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVc1a1pYZzZJSFYyUVc1cGJXRjBhVzl1VFdGemExUmxlSFIxY21WSmJtUmxlQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHVjRkR1Z1YzJsdmJuTTZJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMaTR1ZEdWNGRIVnlaVlJ5WVc1elptOXliVVY0ZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJR052Ym5OMElIVjJRVzVwYldGMGFXOXVVMk55YjJ4c1dGTndaV1ZrUm1GamRHOXlJRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG1ac2IyRjBVSEp2Y0dWeWRHbGxjejh1V3lkZlZYWkJibWx0VTJOeWIyeHNXQ2RkTzF4dVhHNGdJQ0FnTHk4Z2RYWkJibWx0WVhScGIyNVRZM0p2Ykd4WlUzQmxaV1JHWVdOMGIzSWdkMmxzYkNCaVpTQnZjSEJ2YzJsMFpTQmlaWFIzWldWdUlGWXdJR0Z1WkNCV01WeHVJQ0FnSUd4bGRDQjFka0Z1YVcxaGRHbHZibE5qY205c2JGbFRjR1ZsWkVaaFkzUnZjaUE5SUcxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsY3k1bWJHOWhkRkJ5YjNCbGNuUnBaWE0vTGxzblgxVjJRVzVwYlZOamNtOXNiRmtuWFR0Y2JpQWdJQ0JwWmlBb2RYWkJibWx0WVhScGIyNVRZM0p2Ykd4WlUzQmxaV1JHWVdOMGIzSWdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdkWFpCYm1sdFlYUnBiMjVUWTNKdmJHeFpVM0JsWldSR1lXTjBiM0lnUFNBdGRYWkJibWx0WVhScGIyNVRZM0p2Ykd4WlUzQmxaV1JHWVdOMGIzSTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnZFhaQmJtbHRZWFJwYjI1U2IzUmhkR2x2YmxOd1pXVmtSbUZqZEc5eUlEMGdiV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpMbVpzYjJGMFVISnZjR1Z5ZEdsbGN6OHVXeWRmVlhaQmJtbHRVbTkwWVhScGIyNG5YVHRjYmx4dUlDQWdJR052Ym5OMElHMTBiMjl1UlhoMFpXNXphVzl1T2lCV01VMVViMjl1VTJOb1pXMWhMbFpTVFVOTllYUmxjbWxoYkhOTlZHOXZiaUE5SUh0Y2JpQWdJQ0FnSUhOd1pXTldaWEp6YVc5dU9pQW5NUzR3Snl4Y2JpQWdJQ0FnSUhSeVlXNXpjR0Z5Wlc1MFYybDBhRnBYY21sMFpTeGNiaUFnSUNBZ0lISmxibVJsY2xGMVpYVmxUMlptYzJWMFRuVnRZbVZ5TEZ4dUlDQWdJQ0FnYzJoaFpHVkRiMnh2Y2taaFkzUnZjaXhjYmlBZ0lDQWdJSE5vWVdSbFRYVnNkR2x3YkhsVVpYaDBkWEpsTEZ4dUlDQWdJQ0FnYzJoaFpHbHVaMU5vYVdaMFJtRmpkRzl5TEZ4dUlDQWdJQ0FnYzJoaFpHbHVaMVJ2YjI1NVJtRmpkRzl5TEZ4dUlDQWdJQ0FnWjJsRmNYVmhiR2w2WVhScGIyNUdZV04wYjNJc1hHNGdJQ0FnSUNCdFlYUmpZWEJHWVdOMGIzSXNYRzRnSUNBZ0lDQnRZWFJqWVhCVVpYaDBkWEpsTEZ4dUlDQWdJQ0FnY21sdFRHbG5hSFJwYm1kTmFYaEdZV04wYjNJc1hHNGdJQ0FnSUNCeWFXMU5kV3gwYVhCc2VWUmxlSFIxY21Vc1hHNGdJQ0FnSUNCd1lYSmhiV1YwY21salVtbHRRMjlzYjNKR1lXTjBiM0lzWEc0Z0lDQWdJQ0J3WVhKaGJXVjBjbWxqVW1sdFJuSmxjMjVsYkZCdmQyVnlSbUZqZEc5eUxGeHVJQ0FnSUNBZ2NHRnlZVzFsZEhKcFkxSnBiVXhwWm5SR1lXTjBiM0lzWEc0Z0lDQWdJQ0J2ZFhSc2FXNWxWMmxrZEdoTmIyUmxMRnh1SUNBZ0lDQWdiM1YwYkdsdVpWZHBaSFJvUm1GamRHOXlMRnh1SUNBZ0lDQWdiM1YwYkdsdVpWZHBaSFJvVFhWc2RHbHdiSGxVWlhoMGRYSmxMRnh1SUNBZ0lDQWdiM1YwYkdsdVpVTnZiRzl5Um1GamRHOXlMRnh1SUNBZ0lDQWdiM1YwYkdsdVpVeHBaMmgwYVc1blRXbDRSbUZqZEc5eUxGeHVJQ0FnSUNBZ2RYWkJibWx0WVhScGIyNU5ZWE5yVkdWNGRIVnlaU3hjYmlBZ0lDQWdJSFYyUVc1cGJXRjBhVzl1VTJOeWIyeHNXRk53WldWa1JtRmpkRzl5TEZ4dUlDQWdJQ0FnZFhaQmJtbHRZWFJwYjI1VFkzSnZiR3haVTNCbFpXUkdZV04wYjNJc1hHNGdJQ0FnSUNCMWRrRnVhVzFoZEdsdmJsSnZkR0YwYVc5dVUzQmxaV1JHWVdOMGIzSXNYRzRnSUNBZ2ZUdGNibHh1SUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNBdUxpNXpZMmhsYldGTllYUmxjbWxoYkN4Y2JseHVJQ0FnSUNBZ2NHSnlUV1YwWVd4c2FXTlNiM1ZuYUc1bGMzTTZJSHRjYmlBZ0lDQWdJQ0FnWW1GelpVTnZiRzl5Um1GamRHOXlMRnh1SUNBZ0lDQWdJQ0JpWVhObFEyOXNiM0pVWlhoMGRYSmxMRnh1SUNBZ0lDQWdmU3hjYmlBZ0lDQWdJRzV2Y20xaGJGUmxlSFIxY21Vc1hHNGdJQ0FnSUNCbGJXbHpjMmwyWlZSbGVIUjFjbVVzWEc0Z0lDQWdJQ0JsYldsemMybDJaVVpoWTNSdmNpeGNiaUFnSUNBZ0lHRnNjR2hoVFc5a1pTeGNiaUFnSUNBZ0lHRnNjR2hoUTNWMGIyWm1MRnh1SUNBZ0lDQWdaRzkxWW14bFUybGtaV1FzWEc0Z0lDQWdJQ0JsZUhSbGJuTnBiMjV6T2lCN1hHNGdJQ0FnSUNBZ0lDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXNWxlSFF0YkdsdVpTQkFkSGx3WlhOamNtbHdkQzFsYzJ4cGJuUXZibUZ0YVc1bkxXTnZiblpsYm5ScGIyNWNiaUFnSUNBZ0lDQWdWbEpOUTE5dFlYUmxjbWxoYkhOZmJYUnZiMjQ2SUcxMGIyOXVSWGgwWlc1emFXOXVMRnh1SUNBZ0lDQWdmU3hjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JmY0dGeWMyVldNRlZ1YkdsMFVISnZjR1Z5ZEdsbGN5aGNiaUFnSUNCdFlYUmxjbWxoYkZCeWIzQmxjblJwWlhNNklGWXdUV0YwWlhKcFlXd3NYRzRnSUNBZ2MyTm9aVzFoVFdGMFpYSnBZV3c2SUVkTVZFWlRZMmhsYldFdVNVMWhkR1Z5YVdGc0xGeHVJQ0FwT2lCSFRGUkdVMk5vWlcxaExrbE5ZWFJsY21saGJDQjdYRzRnSUNBZ1kyOXVjM1FnYVhOVWNtRnVjM0JoY21WdWRGcFhjbWwwWlNBOUlHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5NXphR0ZrWlhJZ1BUMDlJQ2RXVWswdlZXNXNhWFJVY21GdWMzQmhjbVZ1ZEZwWGNtbDBaU2M3WEc0Z0lDQWdZMjl1YzNRZ2FYTlVjbUZ1YzNCaGNtVnVkQ0E5SUcxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsY3k1emFHRmtaWElnUFQwOUlDZFdVazB2Vlc1c2FYUlVjbUZ1YzNCaGNtVnVkQ2NnZkh3Z2FYTlVjbUZ1YzNCaGNtVnVkRnBYY21sMFpUdGNibHh1SUNBZ0lHTnZibk4wSUhKbGJtUmxjbEYxWlhWbFQyWm1jMlYwVG5WdFltVnlJRDBnZEdocGN5NWZkakJRWVhKelpWSmxibVJsY2xGMVpYVmxLRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeWs3WEc1Y2JpQWdJQ0JqYjI1emRDQnBjME4xZEc5bVppQTlJRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeTV6YUdGa1pYSWdQVDA5SUNkV1VrMHZWVzVzYVhSRGRYUnZkWFFuTzF4dUlDQWdJR052Ym5OMElHRnNjR2hoVFc5a1pTQTlJR2x6VkhKaGJuTndZWEpsYm5RZ1B5QW5Ra3hGVGtRbklEb2dhWE5EZFhSdlptWWdQeUFuVFVGVFN5Y2dPaUFuVDFCQlVWVkZKenRjYmlBZ0lDQmpiMjV6ZENCaGJIQm9ZVU4xZEc5bVppQTlJR2x6UTNWMGIyWm1JRDhnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG1ac2IyRjBVSEp2Y0dWeWRHbGxjejh1V3lkZlEzVjBiMlptSjEwZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQmpiMjV6ZENCMFpYaDBkWEpsVkhKaGJuTm1iM0p0UlhoMElEMGdkR2hwY3k1ZmNHOXlkRlJsZUhSMWNtVlVjbUZ1YzJadmNtMG9iV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpLVHRjYmx4dUlDQWdJR052Ym5OMElHSmhjMlZEYjJ4dmNrWmhZM1J2Y2lBOUlHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5NTJaV04wYjNKUWNtOXdaWEowYVdWelB5NWJKMTlEYjJ4dmNpZGRQeTV0WVhBb1oyRnRiV0ZGVDFSR0tUdGNiaUFnSUNCamIyNXpkQ0JpWVhObFEyOXNiM0pVWlhoMGRYSmxTVzVrWlhnZ1BTQnRZWFJsY21saGJGQnliM0JsY25ScFpYTXVkR1Y0ZEhWeVpWQnliM0JsY25ScFpYTS9MbHNuWDAxaGFXNVVaWGduWFR0Y2JpQWdJQ0JqYjI1emRDQmlZWE5sUTI5c2IzSlVaWGgwZFhKbElEMWNiaUFnSUNBZ0lHSmhjMlZEYjJ4dmNsUmxlSFIxY21WSmJtUmxlQ0FoUFNCdWRXeHNYRzRnSUNBZ0lDQWdJRDhnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhVzVrWlhnNklHSmhjMlZEYjJ4dmNsUmxlSFIxY21WSmJtUmxlQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHVjRkR1Z1YzJsdmJuTTZJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMaTR1ZEdWNGRIVnlaVlJ5WVc1elptOXliVVY0ZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJQzh2SUhWelpTQnRkRzl2YmlCcGJuTjBaV0ZrSUc5bUlIVnViR2wwTENCemFXNWpaU0IwYUdWeVpTQnRhV2RvZENCaVpTQldVazB3TGpBZ2MzQmxZMmxtYVdNZ1ptVmhkSFZ5WlhNZ2RHaGhkQ0JoY21VZ2JtOTBJSE4xY0hCdmNuUmxaQ0JpZVNCbmJIUm1YRzRnSUNBZ1kyOXVjM1FnYlhSdmIyNUZlSFJsYm5OcGIyNDZJRll4VFZSdmIyNVRZMmhsYldFdVZsSk5RMDFoZEdWeWFXRnNjMDFVYjI5dUlEMGdlMXh1SUNBZ0lDQWdjM0JsWTFabGNuTnBiMjQ2SUNjeExqQW5MRnh1SUNBZ0lDQWdkSEpoYm5Od1lYSmxiblJYYVhSb1dsZHlhWFJsT2lCcGMxUnlZVzV6Y0dGeVpXNTBXbGR5YVhSbExGeHVJQ0FnSUNBZ2NtVnVaR1Z5VVhWbGRXVlBabVp6WlhST2RXMWlaWElzWEc0Z0lDQWdJQ0J6YUdGa1pVTnZiRzl5Um1GamRHOXlPaUJpWVhObFEyOXNiM0pHWVdOMGIzSXNYRzRnSUNBZ0lDQnphR0ZrWlUxMWJIUnBjR3g1VkdWNGRIVnlaVG9nWW1GelpVTnZiRzl5VkdWNGRIVnlaU3hjYmlBZ0lDQjlPMXh1WEc0Z0lDQWdjbVYwZFhKdUlIdGNiaUFnSUNBZ0lDNHVMbk5qYUdWdFlVMWhkR1Z5YVdGc0xGeHVYRzRnSUNBZ0lDQndZbkpOWlhSaGJHeHBZMUp2ZFdkb2JtVnpjem9nZTF4dUlDQWdJQ0FnSUNCaVlYTmxRMjlzYjNKR1lXTjBiM0lzWEc0Z0lDQWdJQ0FnSUdKaGMyVkRiMnh2Y2xSbGVIUjFjbVVzWEc0Z0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnWVd4d2FHRk5iMlJsTEZ4dUlDQWdJQ0FnWVd4d2FHRkRkWFJ2Wm1Zc1hHNGdJQ0FnSUNCbGVIUmxibk5wYjI1ek9pQjdYRzRnSUNBZ0lDQWdJQzh2SUdWemJHbHVkQzFrYVhOaFlteGxMVzVsZUhRdGJHbHVaU0JBZEhsd1pYTmpjbWx3ZEMxbGMyeHBiblF2Ym1GdGFXNW5MV052Ym5abGJuUnBiMjVjYmlBZ0lDQWdJQ0FnVmxKTlExOXRZWFJsY21saGJITmZiWFJ2YjI0NklHMTBiMjl1UlhoMFpXNXphVzl1TEZ4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0I5TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlNCaElHZHNWRVlnWUV0SVVsOTBaWGgwZFhKbFgzUnlZVzV6Wm05eWJXQWdaWGgwWlc1emFXOXVJR1p5YjIwZ2RqQWdkR1Y0ZEhWeVpTQjBjbUZ1YzJadmNtMGdhVzVtYnk1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1gzQnZjblJVWlhoMGRYSmxWSEpoYm5ObWIzSnRLRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjem9nVmpCTllYUmxjbWxoYkNrNklIc2dXMjVoYldVNklITjBjbWx1WjEwNklHRnVlU0I5SUh0Y2JpQWdJQ0JqYjI1emRDQjBaWGgwZFhKbFZISmhibk5tYjNKdElEMGdiV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpMblpsWTNSdmNsQnliM0JsY25ScFpYTS9MbHNuWDAxaGFXNVVaWGduWFR0Y2JpQWdJQ0JwWmlBb2RHVjRkSFZ5WlZSeVlXNXpabTl5YlNBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZTMwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdiMlptYzJWMElEMGdXM1JsZUhSMWNtVlVjbUZ1YzJadmNtMC9MbHN3WFNBL1B5QXdMakFzSUhSbGVIUjFjbVZVY21GdWMyWnZjbTAvTGxzeFhTQS9QeUF3TGpCZE8xeHVJQ0FnSUdOdmJuTjBJSE5qWVd4bElEMGdXM1JsZUhSMWNtVlVjbUZ1YzJadmNtMC9MbHN5WFNBL1B5QXhMakFzSUhSbGVIUjFjbVZVY21GdWMyWnZjbTAvTGxzelhTQS9QeUF4TGpCZE8xeHVYRzRnSUNBZ2IyWm1jMlYwV3pGZElEMGdNUzR3SUMwZ2MyTmhiR1ZiTVYwZ0xTQnZabVp6WlhSYk1WMDdYRzVjYmlBZ0lDQnlaWFIxY200Z2UxeHVJQ0FnSUNBZ0x5OGdaWE5zYVc1MExXUnBjMkZpYkdVdGJtVjRkQzFzYVc1bElFQjBlWEJsYzJOeWFYQjBMV1Z6YkdsdWRDOXVZVzFwYm1jdFkyOXVkbVZ1ZEdsdmJseHVJQ0FnSUNBZ1MwaFNYM1JsZUhSMWNtVmZkSEpoYm5ObWIzSnRPaUI3SUc5bVpuTmxkQ3dnYzJOaGJHVWdmU3hjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOdmJuWmxjblFnZGpBZ2NtVnVaR1Z5SUc5eVpHVnlJR2x1ZEc4Z2RqRWdjbVZ1WkdWeUlHOXlaR1Z5TGx4dUlDQWdLaUJVYUdseklIVnpaWE1nWVNCdFlYQWdabkp2YlNCMk1DQnlaVzVrWlhJZ2NYVmxkV1VnZEc4Z2RqRWdZMjl0Y0d4cFlXNTBJSEpsYm1SbGNpQnhkV1YxWlNCdlptWnpaWFFnZDJocFkyZ2dhWE1nWjJWdVpYSmhkR1ZrSUdsdUlIdEFiR2x1YXlCZmNHOXdkV3hoZEdWU1pXNWtaWEpSZFdWMVpVMWhjSDB1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUY5Mk1GQmhjbk5sVW1WdVpHVnlVWFZsZFdVb2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWek9pQldNRTFoZEdWeWFXRnNLVG9nYm5WdFltVnlJSHRjYmlBZ0lDQmpiMjV6ZENCcGMxUnlZVzV6Y0dGeVpXNTBJRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG10bGVYZHZjbVJOWVhBL0xsc25YMEZNVUVoQlFreEZUa1JmVDA0blhTQS9QeUJtWVd4elpUdGNiaUFnSUNCamIyNXpkQ0JsYm1GaWJHVmtXbGR5YVhSbElEMGdiV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpMbVpzYjJGMFVISnZjR1Z5ZEdsbGN6OHVXeWRmV2xkeWFYUmxKMTBnUFQwOUlERTdYRzVjYmlBZ0lDQnNaWFFnYjJabWMyVjBJRDBnTUR0Y2JseHVJQ0FnSUdsbUlDaHBjMVJ5WVc1emNHRnlaVzUwS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0IyTUZGMVpYVmxJRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG5KbGJtUmxjbEYxWlhWbE8xeHVYRzRnSUNBZ0lDQnBaaUFvZGpCUmRXVjFaU0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaGxibUZpYkdWa1dsZHlhWFJsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdiMlptYzJWMElEMGdkR2hwY3k1ZmNtVnVaR1Z5VVhWbGRXVk5ZWEJVY21GdWMzQmhjbVZ1ZEZwWGNtbDBaUzVuWlhRb2RqQlJkV1YxWlNraE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJRzltWm5ObGRDQTlJSFJvYVhNdVgzSmxibVJsY2xGMVpYVmxUV0Z3VkhKaGJuTndZWEpsYm5RdVoyVjBLSFl3VVhWbGRXVXBJVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnZabVp6WlhRN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbElHRWdiV0Z3SUhkb2FXTm9JRzFoY0hNZ2RqQWdjbVZ1WkdWeUlIRjFaWFZsSUhSdklIWXhJR052YlhCc2FXRnVkQ0J5Wlc1a1pYSWdjWFZsZFdVZ2IyWm1jMlYwTGx4dUlDQWdLaUJVYUdseklHeHBjM1J6SUhWd0lHRnNiQ0J5Wlc1a1pYSWdjWFZsZFdWeklIUm9aU0J0YjJSbGJDQjFjMlVnWVc1a0lHTnlaV0YwWlhNZ1lTQnRZWEFnZEc4Z2JtVjNJSEpsYm1SbGNpQnhkV1YxWlNCdlptWnpaWFJ6SUdsdUlIUm9aU0J6WVcxbElHOXlaR1Z5TGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCZmNHOXdkV3hoZEdWU1pXNWtaWEpSZFdWMVpVMWhjQ2h0WVhSbGNtbGhiRkJ5YjNCbGNuUnBaWE5NYVhOME9pQldNRTFoZEdWeWFXRnNXMTBwSUh0Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCQklITmxkQ0J2WmlCMWMyVmtJSEpsYm1SbGNpQnhkV1YxWlhNZ2FXNGdWSEpoYm5Od1lYSmxiblFnYldGMFpYSnBZV3h6TGx4dUlDQWdJQ0FxTDF4dUlDQWdJR052Ym5OMElISmxibVJsY2xGMVpYVmxjMVJ5WVc1emNHRnlaVzUwSUQwZ2JtVjNJRk5sZER4dWRXMWlaWEkrS0NrN1hHNWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkJJSE5sZENCdlppQjFjMlZrSUhKbGJtUmxjaUJ4ZFdWMVpYTWdhVzRnVkhKaGJuTndZWEpsYm5SYVYzSnBkR1VnYldGMFpYSnBZV3h6TGx4dUlDQWdJQ0FxTDF4dUlDQWdJR052Ym5OMElISmxibVJsY2xGMVpYVmxjMVJ5WVc1emNHRnlaVzUwV2xkeWFYUmxJRDBnYm1WM0lGTmxkRHh1ZFcxaVpYSStLQ2s3WEc1Y2JpQWdJQ0F2THlCd2IzQjFiR0YwWlNCMGFHVWdjbVZ1WkdWeUlIRjFaWFZsSUhObGRGeHVJQ0FnSUcxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsYzB4cGMzUXVabTl5UldGamFDZ29iV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0JwYzFSeVlXNXpjR0Z5Wlc1MElEMGdiV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpMbXRsZVhkdmNtUk5ZWEEvTGxzblgwRk1VRWhCUWt4RlRrUmZUMDRuWFNBL1B5Qm1ZV3h6WlR0Y2JpQWdJQ0FnSUdOdmJuTjBJR1Z1WVdKc1pXUmFWM0pwZEdVZ1BTQnRZWFJsY21saGJGQnliM0JsY25ScFpYTXVabXh2WVhSUWNtOXdaWEowYVdWelB5NWJKMTlhVjNKcGRHVW5YU0E5UFQwZ01UdGNibHh1SUNBZ0lDQWdhV1lnS0dselZISmhibk53WVhKbGJuUXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdkakJSZFdWMVpTQTlJRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeTV5Wlc1a1pYSlJkV1YxWlR0Y2JseHVJQ0FnSUNBZ0lDQnBaaUFvZGpCUmRXVjFaU0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR1Z1WVdKc1pXUmFWM0pwZEdVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGJtUmxjbEYxWlhWbGMxUnlZVzV6Y0dGeVpXNTBXbGR5YVhSbExtRmtaQ2gyTUZGMVpYVmxLVHRjYmlBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVZ1WkdWeVVYVmxkV1Z6VkhKaGJuTndZWEpsYm5RdVlXUmtLSFl3VVhWbGRXVXBPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ0x5OGdjMmh2ZHlCaElIZGhjbTVwYm1jZ2FXWWdkR2hsSUcxdlpHVnNJSFZ6WlhNZ2RqRWdhVzVqYjIxd1lYUnBZbXhsSUc1MWJXSmxjaUJ2WmlCeVpXNWtaWElnY1hWbGRXVnpYRzRnSUNBZ2FXWWdLSEpsYm1SbGNsRjFaWFZsYzFSeVlXNXpjR0Z5Wlc1MExuTnBlbVVnUGlBeE1Da2dlMXh1SUNBZ0lDQWdZMjl1YzI5c1pTNTNZWEp1S0Z4dUlDQWdJQ0FnSUNCZ1ZsSk5UV0YwWlhKcFlXeHpWakJEYjIxd1lYUlFiSFZuYVc0NklGUm9hWE1nVmxKTklIVnpaWE1nSkh0eVpXNWtaWEpSZFdWMVpYTlVjbUZ1YzNCaGNtVnVkQzV6YVhwbGZTQnlaVzVrWlhJZ2NYVmxkV1Z6SUdadmNpQlVjbUZ1YzNCaGNtVnVkQ0J0WVhSbGNtbGhiSE1nZDJocGJHVWdWbEpOSURFdU1DQnZibXg1SUhOMWNIQnZjblJ6SUhWd0lIUnZJREV3SUhKbGJtUmxjaUJ4ZFdWMVpYTXVJRlJvWlNCdGIyUmxiQ0J0YVdkb2RDQnViM1FnWW1VZ2NtVnVaR1Z5WldRZ1kyOXljbVZqZEd4NUxtQXNYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h5Wlc1a1pYSlJkV1YxWlhOVWNtRnVjM0JoY21WdWRGcFhjbWwwWlM1emFYcGxJRDRnTVRBcElIdGNiaUFnSUNBZ0lHTnZibk52YkdVdWQyRnliaWhjYmlBZ0lDQWdJQ0FnWUZaU1RVMWhkR1Z5YVdGc2MxWXdRMjl0Y0dGMFVHeDFaMmx1T2lCVWFHbHpJRlpTVFNCMWMyVnpJQ1I3Y21WdVpHVnlVWFZsZFdWelZISmhibk53WVhKbGJuUmFWM0pwZEdVdWMybDZaWDBnY21WdVpHVnlJSEYxWlhWbGN5Qm1iM0lnVkhKaGJuTndZWEpsYm5SYVYzSnBkR1VnYldGMFpYSnBZV3h6SUhkb2FXeGxJRlpTVFNBeExqQWdiMjVzZVNCemRYQndiM0owY3lCMWNDQjBieUF4TUNCeVpXNWtaWElnY1hWbGRXVnpMaUJVYUdVZ2JXOWtaV3dnYldsbmFIUWdibTkwSUdKbElISmxibVJsY21Wa0lHTnZjbkpsWTNSc2VTNWdMRnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJqY21WaGRHVWdZU0J0WVhBZ1puSnZiU0IyTUNCeVpXNWtaWElnY1hWbGRXVWdkRzhnZGpFZ2NtVnVaR1Z5SUhGMVpYVmxJRzltWm5ObGRGeHVJQ0FnSUVGeWNtRjVMbVp5YjIwb2NtVnVaR1Z5VVhWbGRXVnpWSEpoYm5Od1lYSmxiblFwWEc0Z0lDQWdJQ0F1YzI5eWRDZ3BYRzRnSUNBZ0lDQXVabTl5UldGamFDZ29jWFZsZFdVc0lHa3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYm1WM1VYVmxkV1ZQWm1aelpYUWdQU0JOWVhSb0xtMXBiaWhOWVhSb0xtMWhlQ2hwSUMwZ2NtVnVaR1Z5VVhWbGRXVnpWSEpoYm5Od1lYSmxiblF1YzJsNlpTQXJJREVzSUMwNUtTd2dNQ2s3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVYM0psYm1SbGNsRjFaWFZsVFdGd1ZISmhibk53WVhKbGJuUXVjMlYwS0hGMVpYVmxMQ0J1WlhkUmRXVjFaVTltWm5ObGRDazdYRzRnSUNBZ0lDQjlLVHRjYmx4dUlDQWdJRUZ5Y21GNUxtWnliMjBvY21WdVpHVnlVWFZsZFdWelZISmhibk53WVhKbGJuUmFWM0pwZEdVcFhHNGdJQ0FnSUNBdWMyOXlkQ2dwWEc0Z0lDQWdJQ0F1Wm05eVJXRmphQ2dvY1hWbGRXVXNJR2twSUQwK0lIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2JtVjNVWFZsZFdWUFptWnpaWFFnUFNCTllYUm9MbTFwYmloTllYUm9MbTFoZUNocExDQXdLU3dnT1NrN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WDNKbGJtUmxjbEYxWlhWbFRXRndWSEpoYm5Od1lYSmxiblJhVjNKcGRHVXVjMlYwS0hGMVpYVmxMQ0J1WlhkUmRXVjFaVTltWm5ObGRDazdYRzRnSUNBZ0lDQjlLVHRjYmlBZ2ZWeHVmVnh1SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdPenM3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCYjBkQk8wRkJRMDhzVTBGQlV5eFRRVUZUTEVOQlFVTXNUMEZCVHl4RlFVRkZMRlZCUVZVc1JVRkJSU3hEUVVGRExFVkJRVVVzVTBGQlV5eEZRVUZGTzBGQlF6ZEVMRWxCUVVrc1UwRkJVeXhMUVVGTExFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVXNUMEZCVHl4TFFVRkxMRmxCUVZrc1EwRkJReXhIUVVGSExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4VlFVRlZMRTlCUVU4c1JVRkJSU3hGUVVGRkxFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRk8wRkJRMmhJTEVsQlFVa3NUMEZCVHl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEVWQlFVVXNWVUZCVlN4UFFVRlBMRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJReTlFTEZGQlFWRXNVMEZCVXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVOdVJ5eFJRVUZSTEZOQlFWTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVOMFJ5eFJRVUZSTEZOQlFWTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNc1JVRkJSVHRCUVVOMFNDeFJRVUZSTEVsQlFVa3NRMEZCUXl4RFFVRkRMRk5CUVZNc1IwRkJSeXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlN4VlFVRlZMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTTVSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEJRVU5RT3p0QlF6RklUU3hUUVVGVkxGTkJRVk1zUTBGQlF5eERRVUZUTEVWQlFVRTdTVUZEYWtNc1QwRkJUeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVNeFFqczdUVU5MWVN3d1FrRkJNRUlzUTBGQlFUdEJRV0Z5UXl4SlFVRkJMRWxCUVZjc1NVRkJTU3hIUVVGQk8wRkJRMklzVVVGQlFTeFBRVUZQTERSQ1FVRTBRaXhEUVVGRE8wdEJRM0pETzBGQlJVUXNTVUZCUVN4WFFVRkJMRU5CUVcxQ0xFMUJRV3RDTEVWQlFVRTdPMEZCUTI1RExGRkJRVUVzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4TlFVRk5MRU5CUVVNN1FVRkZja0lzVVVGQlFTeEpRVUZKTEVOQlFVTXNNRUpCUVRCQ0xFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTTFReXhSUVVGQkxFbEJRVWtzUTBGQlF5eG5RMEZCWjBNc1IwRkJSeXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZET3pzN1FVRkpiRVFzVVVGQlFTeE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRWGRDTEVOQlFVTTdVVUZGYkVRc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMRU5CUVVNc1kwRkJZeXhOUVVGSkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGQkxFVkJRVVVzUTBGQlF6dFJRVU5vUkN4SlFVRkpMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zVDBGQlR5eERRVUZETEhWQ1FVRjFRaXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVTdRVUZETDBRc1dVRkJRU3hKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eERRVUZETzBGQlEyNUVMRk5CUVVFN1MwRkRSanRKUVVWWkxGVkJRVlVzUjBGQlFUczdPMEZCUTNKQ0xGbEJRVUVzVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGM1FpeERRVUZET3p0WlFVZHNSQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZITEV0QlFVc3NRMEZCYzBJc1EwRkJRenRaUVVOeVJTeE5RVUZOTEc5Q1FVRnZRaXhIUVVGSExHTkJRV01zUzBGQlFTeEpRVUZCTEVsQlFXUXNZMEZCWXl4TFFVRmtMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEdOQlFXTXNRMEZCUlN4clFrRkJhMElzUTBGQlF6dFpRVU5vUlN4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVWQlFVVTdaMEpCUTNwQ0xFOUJRVTg3UVVGRFVpeGhRVUZCT3p0QlFVZEVMRmxCUVVFc1NVRkJTU3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEVOQlFVTTdPMWxCUjI1RUxHOUNRVUZ2UWl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExHdENRVUZyUWl4RlFVRkZMR0ZCUVdFc1MwRkJTVHM3WjBKQlEycEZMRTFCUVUwc1YwRkJWeXhIUVVGSExFTkJRVUVzUlVGQlFTeEhRVUZCTEVsQlFVa3NRMEZCUXl4VFFVRlRMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVWNzWVVGQllTeERRVUZETEVOQlFVTTdaMEpCUlhCRUxFbEJRVWtzVjBGQlZ5eEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTjJRaXh2UWtGQlFTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVTldMSGRFUVVGM1JDeGhRVUZoTEVOQlFVRXNkME5CUVVFc1EwRkJNRU1zUTBGRGFFZ3NRMEZCUXp0dlFrRkRSaXhQUVVGUE8wRkJRMUlzYVVKQlFVRTdRVUZGUkN4blFrRkJRU3hKUVVGSkxHdENRVUZyUWl4RFFVRkRMRTFCUVUwc1MwRkJTeXhYUVVGWExFVkJRVVU3YjBKQlF6ZERMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhyUWtGQmEwSXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRCUVVNdlJTeHZRa0ZCUVN4SlFVRkpMRU5CUVVNc1UwRkJWU3hEUVVGRExHRkJRV0VzUTBGQlF5eEhRVUZITEZGQlFWRXNRMEZCUXp0QlFVTXpReXhwUWtGQlFUdHhRa0ZCVFN4SlFVRkpMRU5CUVVFc1JVRkJRU3hIUVVGQkxHdENRVUZyUWl4RFFVRkRMRTFCUVUwc01FTkJRVVVzVlVGQlZTeERRVUZETEZkQlFWY3NRMEZCUXl4RlFVRkZPMjlDUVVNM1JDeE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTTdRVUZETDBVc2IwSkJRVUVzU1VGQlNTeERRVUZETEZOQlFWVXNRMEZCUXl4aFFVRmhMRU5CUVVNc1IwRkJSeXhSUVVGUkxFTkJRVU03UVVGRE0wTXNhVUpCUVVFN1FVRkJUU3h4UWtGQlFTeEpRVUZKTEd0Q1FVRnJRaXhEUVVGRExFMUJRVTBzUzBGQlN5eHZRa0ZCYjBJc1JVRkJSU3hEUVVVNVJEdEJRVUZOTEhGQ1FVRkJPMjlDUVVOTUxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUVN3MFEwRkJRU3hGUVVFclF5eHJRa0ZCYTBJc1EwRkJReXhOUVVGTkxFTkJRVVVzUTBGQlFTeERRVUZETEVOQlFVTTdRVUZETVVZc2FVSkJRVUU3UVVGRFNDeGhRVUZETEVOQlFVTXNRMEZCUXpzN1FVRkRTaXhMUVVGQk8wbEJSVThzZFVKQlFYVkNMRU5CUXpkQ0xHdENRVUU0UWl4RlFVTTVRaXhqUVVGdlF5eEZRVUZCT3p0QlFVVndReXhSUVVGQkxFMUJRVTBzWVVGQllTeEhRVUZITEVOQlFVRXNSVUZCUVN4SFFVRkJMRU5CUVVFc1JVRkJRU3hIUVVGQkxHdENRVUZyUWl4RFFVRkRMRlZCUVZVc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhOUVVGSkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGQkxFdEJRVXNzUTBGQlF6dEJRVU5xUml4UlFVRkJMRTFCUVUwc1lVRkJZU3hIUVVGSExFTkJRVUVzUTBGQlFTeEZRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU1zWlVGQlpTeE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkhMRk5CUVZNc1EwRkJReXhOUVVGTExFTkJRVU1zUTBGQlF6dEJRVU0xUlN4UlFVRkJMRTFCUVUwc2NVSkJRWEZDTEVkQlFVY3NZVUZCWVN4SlFVRkpMR0ZCUVdFc1EwRkJRenRSUVVVM1JDeE5RVUZOTEhWQ1FVRjFRaXhIUVVGSExFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRPMEZCUlRkRkxGRkJRVUVzVFVGQlRTeFJRVUZSTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1EwRkJRU3hGUVVGQkxFZEJRVUVzYTBKQlFXdENMRU5CUVVNc1ZVRkJWU3hOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZITEdWQlFXVXNRMEZCUXl4TlFVRkpMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkJMRXRCUVVzc1EwRkJRenRCUVVNelJTeFJRVUZCTEUxQlFVMHNVMEZCVXl4SFFVRkhMR0ZCUVdFc1IwRkJSeXhQUVVGUExFZEJRVWNzVVVGQlVTeEhRVUZITEUxQlFVMHNSMEZCUnl4UlFVRlJMRU5CUVVNN1FVRkRla1VzVVVGQlFTeE5RVUZOTEZkQlFWY3NSMEZCUnl4UlFVRlJMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzYTBKQlFXdENMRU5CUVVNc1pVRkJaU3d3UTBGQlJ5eFRRVUZUTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNN1FVRkZNMFlzVVVGQlFTeE5RVUZOTEZGQlFWRXNSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3hEUVVGQkxFVkJRVUVzUjBGQlFTeHJRa0ZCYTBJc1EwRkJReXhsUVVGbExFMUJRVWNzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVRXNWMEZCVnl4RFFVRkRMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVrc1EwRkJReXhEUVVGRE8wRkJRM2hGTEZGQlFVRXNUVUZCVFN4WFFVRlhMRWRCUVVjc1VVRkJVU3hMUVVGTExFTkJRVU1zUTBGQlF6dFJRVVZ1UXl4TlFVRk5MRzFDUVVGdFFpeEhRVUZITEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8wRkJSVE5GTEZGQlFVRXNUVUZCVFN4bFFVRmxMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzUTBGQlFTeEZRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU1zWjBKQlFXZENMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVWNzVVVGQlVTeERRVUZETERCRFFVRkZMRWRCUVVjc1EwRkRNVVVzUTBGQlF5eERRVUZUTEVWQlFVVXNRMEZCVXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVOMlJDeERRVUZETzFGQlEwWXNUVUZCVFN4eFFrRkJjVUlzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4clFrRkJhMElzUTBGQlF5eHBRa0ZCYVVJc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlJ5eFZRVUZWTEVOQlFVTXNRMEZCUXp0QlFVTnFSaXhSUVVGQkxFMUJRVTBzWjBKQlFXZENMRWRCUTNCQ0xIRkNRVUZ4UWl4SlFVRkpMRWxCUVVrN1FVRkRNMElzWTBGQlJUdEJRVU5GTEdkQ1FVRkJMRXRCUVVzc1JVRkJSU3h4UWtGQmNVSTdaMEpCUXpWQ0xGVkJRVlVzUlVGQlFTeE5RVUZCTEVOQlFVRXNUVUZCUVN4RFFVRkJMRVZCUVVFc1JVRkRUQ3h0UWtGQmJVSXNRMEZEZGtJN1FVRkRSaXhoUVVGQk8yTkJRMFFzVTBGQlV5eERRVUZETzFGQlJXaENMRTFCUVUwc2EwSkJRV3RDTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc2EwSkJRV3RDTEVOQlFVTXNaVUZCWlN4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETzFGQlF6bEZMRTFCUVUwc2EwSkJRV3RDTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc2EwSkJRV3RDTEVOQlFVTXNhVUpCUVdsQ0xFMUJRVUVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVY3NWVUZCVlN4RFFVRkRMRU5CUVVNN1FVRkRPVVVzVVVGQlFTeE5RVUZOTEdGQlFXRXNSMEZEYWtJc2EwSkJRV3RDTEVsQlFVa3NTVUZCU1R0QlFVTjRRaXhqUVVGRk8wRkJRMFVzWjBKQlFVRXNTMEZCU3l4RlFVRkZMR3RDUVVGclFqdEJRVU42UWl4blFrRkJRU3hMUVVGTExFVkJRVVVzYTBKQlFXdENPMmRDUVVONlFpeFZRVUZWTEVWQlFVRXNUVUZCUVN4RFFVRkJMRTFCUVVFc1EwRkJRU3hGUVVGQkxFVkJRMHdzYlVKQlFXMUNMRU5CUTNaQ08wRkJRMFlzWVVGQlFUdGpRVU5FTEZOQlFWTXNRMEZCUXp0QlFVVm9RaXhSUVVGQkxFMUJRVTBzWTBGQll5eEhRVUZITEVOQlFVRXNSVUZCUVN4SFFVRkJMRU5CUVVFc1JVRkJRU3hIUVVGQkxHdENRVUZyUWl4RFFVRkRMR2RDUVVGblFpeE5RVUZITEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkJMR2RDUVVGblFpeERRVUZETEUxQlFVVXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVFc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFGQlF5OUdMRTFCUVUwc2IwSkJRVzlDTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc2EwSkJRV3RDTEVOQlFVTXNhVUpCUVdsQ0xFMUJRVUVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVY3NZMEZCWXl4RFFVRkRMRU5CUVVNN1FVRkRjRVlzVVVGQlFTeE5RVUZOTEdWQlFXVXNSMEZEYmtJc2IwSkJRVzlDTEVsQlFVa3NTVUZCU1R0QlFVTXhRaXhqUVVGRk8wRkJRMFVzWjBKQlFVRXNTMEZCU3l4RlFVRkZMRzlDUVVGdlFqdG5Ra0ZETTBJc1ZVRkJWU3hGUVVGQkxFMUJRVUVzUTBGQlFTeE5RVUZCTEVOQlFVRXNSVUZCUVN4RlFVTk1MRzFDUVVGdFFpeERRVU4yUWp0QlFVTkdMR0ZCUVVFN1kwRkRSQ3hUUVVGVExFTkJRVU03UVVGRmFFSXNVVUZCUVN4TlFVRk5MR2RDUVVGblFpeEhRVUZITEVOQlFVRXNSVUZCUVN4SFFVRkJMRU5CUVVFc1JVRkJRU3hIUVVGQkxHdENRVUZyUWl4RFFVRkRMR2RDUVVGblFpeE5RVUZITEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkJMR0ZCUVdFc1EwRkJReXhOUVVGRkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZCTEVkQlFVY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRSUVVNNVJpeE5RVUZOTEhsQ1FVRjVRaXhIUVVGSExFTkJRVUVzUlVGQlFTeEhRVUZCTEd0Q1FVRnJRaXhEUVVGRExHbENRVUZwUWl4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGSExHVkJRV1VzUTBGQlF5eERRVUZETzBGQlF6RkdMRkZCUVVFc1RVRkJUU3h2UWtGQmIwSXNSMEZEZUVJc2VVSkJRWGxDTEVsQlFVa3NTVUZCU1R0QlFVTXZRaXhqUVVGRk8wRkJRMFVzWjBKQlFVRXNTMEZCU3l4RlFVRkZMSGxDUVVGNVFqdG5Ra0ZEYUVNc1ZVRkJWU3hGUVVGQkxFMUJRVUVzUTBGQlFTeE5RVUZCTEVOQlFVRXNSVUZCUVN4RlFVTk1MRzFDUVVGdFFpeERRVU4yUWp0QlFVTkdMR0ZCUVVFN1kwRkRSQ3hUUVVGVExFTkJRVU03TzBGQlIyaENMRkZCUVVFc1NVRkJTU3hyUWtGQmEwSXNSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3hEUVVGQkxFVkJRVUVzUjBGQlFTeHJRa0ZCYTBJc1EwRkJReXhsUVVGbExFMUJRVUVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVY3NZVUZCWVN4RFFVRkRMRTFCUVVrc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVFc1IwRkJSeXhEUVVGRE8wRkJRM0JHTEZGQlFVRXNTVUZCU1N4clFrRkJhMElzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4RFFVRkJMRVZCUVVFc1IwRkJRU3hyUWtGQmEwSXNRMEZCUXl4bFFVRmxMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVWNzWVVGQllTeERRVUZETEUxQlFVa3NTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVRXNSMEZCUnl4RFFVRkRPMEZCUTNCR0xGRkJRVUVzYTBKQlFXdENMRWRCUVVjc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWRCUVVjc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXp0UlFVTnVSeXhyUWtGQmEwSXNSMEZCUnl4RFFVRkRMR3RDUVVGclFpeEpRVUZKTEVkQlFVY3NSMEZCUnl4clFrRkJhMElzUTBGQlF5eERRVUZETzFGQlJYUkZMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc2EwSkJRV3RDTEVOQlFVTXNaVUZCWlN4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGSExIbENRVUY1UWl4RFFVRkRMRU5CUVVNN1FVRkRNVVlzVVVGQlFTeE5RVUZOTEc5Q1FVRnZRaXhIUVVGSExHbENRVUZwUWl4SFFVRkhMRWRCUVVjc1IwRkJSeXhwUWtGQmFVSXNSMEZCUnl4VFFVRlRMRU5CUVVNN1VVRkZja1lzVFVGQlRTeHJRa0ZCYTBJc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeHJRa0ZCYTBJc1EwRkJReXhwUWtGQmFVSXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSeXhaUVVGWkxFTkJRVU1zUTBGQlF6dEJRVU5vUml4UlFVRkJMRTFCUVUwc1dVRkJXU3hIUVVGSExHdENRVUZyUWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRE8wRkJRemxGTEZGQlFVRXNUVUZCVFN4aFFVRmhMRWRCUTJwQ0xHdENRVUZyUWl4SlFVRkpMRWxCUVVrN1FVRkRlRUlzWTBGQlJUdEJRVU5GTEdkQ1FVRkJMRXRCUVVzc1JVRkJSU3hyUWtGQmEwSTdRVUZETVVJc1lVRkJRVHRqUVVORUxGTkJRVk1zUTBGQlF6dFJRVVZvUWl4TlFVRk5MRzlDUVVGdlFpeEhRVUZITEVOQlFVRXNSVUZCUVN4SFFVRkJMR3RDUVVGclFpeERRVUZETEdWQlFXVXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSeXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRPMUZCUTNKR0xFMUJRVTBzZFVKQlFYVkNMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzYTBKQlFXdENMRU5CUVVNc2FVSkJRV2xDTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVjc1lVRkJZU3hEUVVGRExFTkJRVU03UVVGRGRFWXNVVUZCUVN4TlFVRk5MR3RDUVVGclFpeEhRVU4wUWl4MVFrRkJkVUlzU1VGQlNTeEpRVUZKTzBGQlF6ZENMR05CUVVVN1FVRkRSU3huUWtGQlFTeExRVUZMTEVWQlFVVXNkVUpCUVhWQ08yZENRVU01UWl4VlFVRlZMRVZCUVVFc1RVRkJRU3hEUVVGQkxFMUJRVUVzUTBGQlFTeEZRVUZCTEVWQlEwd3NiVUpCUVcxQ0xFTkJRM1pDTzBGQlEwWXNZVUZCUVR0alFVTkVMRk5CUVZNc1EwRkJRenRCUVVWb1FpeFJRVUZCTEUxQlFVMHNkMEpCUVhkQ0xFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNRMEZCUVN4RlFVRkJMRWRCUVVFc2EwSkJRV3RDTEVOQlFVTXNaMEpCUVdkQ0xFMUJRVWNzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVRXNWMEZCVnl4RFFVRkRMRTFCUVVVc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVUVzUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUTNCSExFMUJRVTBzSzBKQlFTdENMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzYTBKQlFXdENMRU5CUVVNc1pVRkJaU3hOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZITEd0Q1FVRnJRaXhEUVVGRExFTkJRVU03VVVGRGFrY3NUVUZCVFN4MVFrRkJkVUlzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4clFrRkJhMElzUTBGQlF5eGxRVUZsTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVjc1ZVRkJWU3hEUVVGRExFTkJRVU03VVVGRmFrWXNUVUZCVFN4blFrRkJaMElzUjBGQlJ5eERRVUZETEUxQlFVMHNSVUZCUlN4clFrRkJhMElzUlVGQlJTeHRRa0ZCYlVJc1EwRkJReXhEUVVONFJTeE5RVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMR3RDUVVGclFpeERRVUZETEdWQlFXVXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSeXh0UWtGQmJVSXNRMEZCUXl4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkpMRU5CUVVNc1EwRkRaaXhEUVVGRE96dEJRVWRzUkN4UlFVRkJMRWxCUVVrc2EwSkJRV3RDTEVkQlFVY3NRMEZCUVN4SFFVRkJMRWRCUVVFc1EwRkJRU3hGUVVGQkxFZEJRVUVzYTBKQlFXdENMRU5CUVVNc1pVRkJaU3hOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZITEdWQlFXVXNRMEZCUXl4TlFVRkpMRWxCUVVFc1NVRkJRU3hIUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSMEZCUVN4SFFVRkJMRWRCUVVjc1EwRkJRenRCUVVOMFJpeFJRVUZCTEd0Q1FVRnJRaXhIUVVGSExFbEJRVWtzUjBGQlJ5eHJRa0ZCYTBJc1EwRkJRenRSUVVVdlF5eE5RVUZOTEdkRFFVRm5ReXhIUVVGSExFTkJRVUVzUjBGQlFTeEhRVUZCTEd0Q1FVRnJRaXhEUVVGRExHbENRVUZwUWl4TlFVRkJMRWxCUVVFc1NVRkJRU3hIUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1IwRkJRU3hEUVVGSExITkNRVUZ6UWl4RFFVRkRMRU5CUVVNN1FVRkRlRWNzVVVGQlFTeE5RVUZOTERKQ1FVRXlRaXhIUVVNdlFpeG5RMEZCWjBNc1NVRkJTU3hKUVVGSk8wRkJRM1JETEdOQlFVVTdRVUZEUlN4blFrRkJRU3hMUVVGTExFVkJRVVVzWjBOQlFXZERPMmRDUVVOMlF5eFZRVUZWTEVWQlFVRXNUVUZCUVN4RFFVRkJMRTFCUVVFc1EwRkJRU3hGUVVGQkxFVkJRMHdzYlVKQlFXMUNMRU5CUTNaQ08wRkJRMFlzWVVGQlFUdGpRVU5FTEZOQlFWTXNRMEZCUXp0QlFVVm9RaXhSUVVGQkxFMUJRVTBzYTBKQlFXdENMRWRCUVVjc1EwRkJRU3hIUVVGQkxFZEJRVUVzUTBGQlFTeEhRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU1zWjBKQlFXZENMRTFCUVVjc1NVRkJRU3hKUVVGQkxFZEJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hIUVVGQkxFTkJRVUVzWlVGQlpTeERRVUZETEUxQlFVVXNTVUZCUVN4SlFVRkJMRWRCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4SFFVRkJMRU5CUVVFc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFGQlEyeEhMRTFCUVUwc1owSkJRV2RDTEVkQlFVY3NRMEZCUVN4SFFVRkJMRWRCUVVFc2EwSkJRV3RDTEVOQlFVTXNaVUZCWlN4TlFVRkJMRWxCUVVFc1NVRkJRU3hIUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1IwRkJRU3hEUVVGSExHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNN1FVRkRia1lzVVVGQlFTeE5RVUZOTEhkQ1FVRjNRaXhIUVVNMVFpeG5Ra0ZCWjBJc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlFTeEhRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU1zWlVGQlpTdzBRMEZCUnl4eFFrRkJjVUlzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXp0UlFVVTNSaXhOUVVGTkxESkNRVUV5UWl4SFFVRkhMRU5CUVVFc1IwRkJRU3hIUVVGQkxHdENRVUZyUWl4RFFVRkRMR2xDUVVGcFFpeE5RVUZCTEVsQlFVRXNTVUZCUVN4SFFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSMEZCUVN4RFFVRkhMRzlDUVVGdlFpeERRVUZETEVOQlFVTTdRVUZEYWtjc1VVRkJRU3hOUVVGTkxITkNRVUZ6UWl4SFFVTXhRaXd5UWtGQk1rSXNTVUZCU1N4SlFVRkpPMEZCUTJwRExHTkJRVVU3UVVGRFJTeG5Ra0ZCUVN4TFFVRkxMRVZCUVVVc01rSkJRVEpDTzJkQ1FVTnNReXhWUVVGVkxFVkJRVUVzVFVGQlFTeERRVUZCTEUxQlFVRXNRMEZCUVN4RlFVRkJMRVZCUTB3c2JVSkJRVzFDTEVOQlEzWkNPMEZCUTBZc1lVRkJRVHRqUVVORUxGTkJRVk1zUTBGQlF6dFJRVVZvUWl4TlFVRk5MRFpDUVVFMlFpeEhRVUZITEVOQlFVRXNSMEZCUVN4SFFVRkJMR3RDUVVGclFpeERRVUZETEdWQlFXVXNUVUZCUVN4SlFVRkJMRWxCUVVFc1IwRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRWRCUVVFc1EwRkJSeXhuUWtGQlowSXNRMEZCUXl4RFFVRkRPenRSUVVjM1JpeEpRVUZKTERaQ1FVRTJRaXhIUVVGSExFTkJRVUVzUjBGQlFTeEhRVUZCTEd0Q1FVRnJRaXhEUVVGRExHVkJRV1VzVFVGQlFTeEpRVUZCTEVsQlFVRXNSMEZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVkQlFVRXNRMEZCUnl4blFrRkJaMElzUTBGQlF5eERRVUZETzFGQlF6TkdMRWxCUVVrc05rSkJRVFpDTEVsQlFVa3NTVUZCU1N4RlFVRkZPMWxCUTNwRExEWkNRVUUyUWl4SFFVRkhMRU5CUVVNc05rSkJRVFpDTEVOQlFVTTdRVUZEYUVVc1UwRkJRVHRSUVVWRUxFMUJRVTBzT0VKQlFUaENMRWRCUVVjc1EwRkJRU3hIUVVGQkxFZEJRVUVzYTBKQlFXdENMRU5CUVVNc1pVRkJaU3hOUVVGQkxFbEJRVUVzU1VGQlFTeEhRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUjBGQlFTeERRVUZITEdsQ1FVRnBRaXhEUVVGRExFTkJRVU03UVVGRkwwWXNVVUZCUVN4TlFVRk5MR05CUVdNc1IwRkJjVU03UVVGRGRrUXNXVUZCUVN4WFFVRlhMRVZCUVVVc1MwRkJTenRaUVVOc1FpeHhRa0ZCY1VJN1dVRkRja0lzZFVKQlFYVkNPMWxCUTNaQ0xHZENRVUZuUWp0WlFVTm9RaXh2UWtGQmIwSTdXVUZEY0VJc2EwSkJRV3RDTzFsQlEyeENMR3RDUVVGclFqdFpRVU5zUWl4dlFrRkJiMEk3V1VGRGNFSXNXVUZCV1R0WlFVTmFMR0ZCUVdFN1dVRkRZaXh2UWtGQmIwSTdXVUZEY0VJc2EwSkJRV3RDTzFsQlEyeENMSGRDUVVGM1FqdFpRVU40UWl3clFrRkJLMEk3V1VGREwwSXNkVUpCUVhWQ08xbEJRM1pDTEdkQ1FVRm5RanRaUVVOb1FpeHJRa0ZCYTBJN1dVRkRiRUlzTWtKQlFUSkNPMWxCUXpOQ0xHdENRVUZyUWp0WlFVTnNRaXgzUWtGQmQwSTdXVUZEZUVJc2MwSkJRWE5DTzFsQlEzUkNMRFpDUVVFMlFqdFpRVU0zUWl3MlFrRkJOa0k3V1VGRE4wSXNPRUpCUVRoQ08xTkJReTlDTEVOQlFVTTdVVUZGUml4UFFVTkxMRTFCUVVFc1EwRkJRU3hOUVVGQkxFTkJRVUVzVFVGQlFTeERRVUZCTEUxQlFVRXNRMEZCUVN4RlFVRkJMRVZCUVVFc1kwRkJZeXhEUVVWcVFpeEZRVUZCTEVWQlFVRXNiMEpCUVc5Q0xFVkJRVVU3WjBKQlEzQkNMR1ZCUVdVN1owSkJRMllzWjBKQlFXZENPMEZCUTJwQ0xHRkJRVUVzUlVGRFJDeGhRVUZoTzFsQlEySXNaVUZCWlR0WlFVTm1MR05CUVdNN1dVRkRaQ3hUUVVGVE8xbEJRMVFzVjBGQlZ6dFpRVU5ZTEZkQlFWY3NSVUZEV0N4VlFVRlZMRVZCUVVVN08wRkJSVllzWjBKQlFVRXNiMEpCUVc5Q0xFVkJRVVVzWTBGQll6dGhRVU55UXl4RlFVTkVMRU5CUVVFc1EwRkJRVHRMUVVOSU8wbEJSVThzZFVKQlFYVkNMRU5CUXpkQ0xHdENRVUU0UWl4RlFVTTVRaXhqUVVGdlF5eEZRVUZCT3p0QlFVVndReXhSUVVGQkxFMUJRVTBzYlVKQlFXMUNMRWRCUVVjc2EwSkJRV3RDTEVOQlFVTXNUVUZCVFN4TFFVRkxMRFJDUVVFMFFpeERRVUZETzFGQlEzWkdMRTFCUVUwc1lVRkJZU3hIUVVGSExHdENRVUZyUWl4RFFVRkRMRTFCUVUwc1MwRkJTeXh6UWtGQmMwSXNTVUZCU1N4dFFrRkJiVUlzUTBGQlF6dFJRVVZzUnl4TlFVRk5MSFZDUVVGMVFpeEhRVUZITEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8wRkJSVGRGTEZGQlFVRXNUVUZCVFN4UlFVRlJMRWRCUVVjc2EwSkJRV3RDTEVOQlFVTXNUVUZCVFN4TFFVRkxMR2xDUVVGcFFpeERRVUZETzBGQlEycEZMRkZCUVVFc1RVRkJUU3hUUVVGVExFZEJRVWNzWVVGQllTeEhRVUZITEU5QlFVOHNSMEZCUnl4UlFVRlJMRWRCUVVjc1RVRkJUU3hIUVVGSExGRkJRVkVzUTBGQlF6dEJRVU42UlN4UlFVRkJMRTFCUVUwc1YwRkJWeXhIUVVGSExGRkJRVkVzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4clFrRkJhMElzUTBGQlF5eGxRVUZsTERCRFFVRkhMRk5CUVZNc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF6dFJRVVV6Uml4TlFVRk5MRzFDUVVGdFFpeEhRVUZITEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8wRkJSVE5GTEZGQlFVRXNUVUZCVFN4bFFVRmxMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzUTBGQlFTeEZRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU1zWjBKQlFXZENMRTFCUVVjc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVUVzVVVGQlVTeERRVUZETEUxQlFVVXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVFc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFGQlEzaEdMRTFCUVUwc2NVSkJRWEZDTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc2EwSkJRV3RDTEVOQlFVTXNhVUpCUVdsQ0xFMUJRVUVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVY3NWVUZCVlN4RFFVRkRMRU5CUVVNN1FVRkRha1lzVVVGQlFTeE5RVUZOTEdkQ1FVRm5RaXhIUVVOd1FpeHhRa0ZCY1VJc1NVRkJTU3hKUVVGSk8wRkJRek5DTEdOQlFVVTdRVUZEUlN4blFrRkJRU3hMUVVGTExFVkJRVVVzY1VKQlFYRkNPMmRDUVVNMVFpeFZRVUZWTEVWQlFVRXNUVUZCUVN4RFFVRkJMRTFCUVVFc1EwRkJRU3hGUVVGQkxFVkJRMHdzYlVKQlFXMUNMRU5CUTNaQ08wRkJRMFlzWVVGQlFUdGpRVU5FTEZOQlFWTXNRMEZCUXpzN1FVRkhhRUlzVVVGQlFTeE5RVUZOTEdOQlFXTXNSMEZCY1VNN1FVRkRka1FzV1VGQlFTeFhRVUZYTEVWQlFVVXNTMEZCU3p0QlFVTnNRaXhaUVVGQkxIRkNRVUZ4UWl4RlFVRkZMRzFDUVVGdFFqdFpRVU14UXl4MVFrRkJkVUk3UVVGRGRrSXNXVUZCUVN4blFrRkJaMElzUlVGQlJTeGxRVUZsTzBGQlEycERMRmxCUVVFc2IwSkJRVzlDTEVWQlFVVXNaMEpCUVdkQ08xTkJRM1pETEVOQlFVTTdVVUZGUml4UFFVTkxMRTFCUVVFc1EwRkJRU3hOUVVGQkxFTkJRVUVzVFVGQlFTeERRVUZCTEUxQlFVRXNRMEZCUVN4RlFVRkJMRVZCUVVFc1kwRkJZeXhEUVVWcVFpeEZRVUZCTEVWQlFVRXNiMEpCUVc5Q0xFVkJRVVU3WjBKQlEzQkNMR1ZCUVdVN1owSkJRMllzWjBKQlFXZENPMEZCUTJwQ0xHRkJRVUVzUlVGRFJDeFRRVUZUTzFsQlExUXNWMEZCVnl4RlFVTllMRlZCUVZVc1JVRkJSVHM3UVVGRlZpeG5Ra0ZCUVN4dlFrRkJiMElzUlVGQlJTeGpRVUZqTzJGQlEzSkRMRVZCUTBRc1EwRkJRU3hEUVVGQk8wdEJRMGc3UVVGRlJEczdRVUZGUnp0QlFVTkxMRWxCUVVFc2NVSkJRWEZDTEVOQlFVTXNhMEpCUVRoQ0xFVkJRVUU3TzFGQlF6RkVMRTFCUVUwc1owSkJRV2RDTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc2EwSkJRV3RDTEVOQlFVTXNaMEpCUVdkQ0xFMUJRVUVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVY3NWVUZCVlN4RFFVRkRMRU5CUVVNN1VVRkRNMFVzU1VGQlNTeG5Ra0ZCWjBJc1NVRkJTU3hKUVVGSkxFVkJRVVU3UVVGRE5VSXNXVUZCUVN4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVOWUxGTkJRVUU3VVVGRlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVFc1JVRkJRU3hIUVVGQkxHZENRVUZuUWl4TFFVRm9RaXhKUVVGQkxFbEJRVUVzWjBKQlFXZENMRXRCUVdoQ0xFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMR2RDUVVGblFpeERRVUZITEVOQlFVTXNRMEZCUXl4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGQkxFVkJRVUVzUjBGQlFTeG5Ra0ZCWjBJc1MwRkJhRUlzU1VGQlFTeEpRVUZCTEdkQ1FVRm5RaXhMUVVGb1FpeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3huUWtGQlowSXNRMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU0xUlN4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVUVzUlVGQlFTeEhRVUZCTEdkQ1FVRm5RaXhMUVVGb1FpeEpRVUZCTEVsQlFVRXNaMEpCUVdkQ0xFdEJRV2hDTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxHZENRVUZuUWl4RFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZCTEVWQlFVRXNSMEZCUVN4blFrRkJaMElzUzBGQmFFSXNTVUZCUVN4SlFVRkJMR2RDUVVGblFpeExRVUZvUWl4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeG5Ra0ZCWjBJc1EwRkJSeXhEUVVGRExFTkJRVU1zVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUjBGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVVXpSU3hSUVVGQkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVWMlF5eFBRVUZQT3p0QlFVVk1MRmxCUVVFc2NVSkJRWEZDTEVWQlFVVXNSVUZCUlN4TlFVRk5MRVZCUVVVc1MwRkJTeXhGUVVGRk8xTkJRM3BETEVOQlFVTTdTMEZEU0R0QlFVVkVPenM3UVVGSFJ6dEJRVU5MTEVsQlFVRXNiVUpCUVcxQ0xFTkJRVU1zYTBKQlFUaENMRVZCUVVFN08wRkJRM2hFTEZGQlFVRXNUVUZCVFN4aFFVRmhMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzUTBGQlFTeEZRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU1zVlVGQlZTeE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkhMR2RDUVVGblFpeERRVUZETEUxQlFVa3NTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVRXNTMEZCU3l4RFFVRkRPMEZCUTJwR0xGRkJRVUVzVFVGQlRTeGhRVUZoTEVkQlFVY3NRMEZCUVN4RFFVRkJMRVZCUVVFc1IwRkJRU3hyUWtGQmEwSXNRMEZCUXl4bFFVRmxMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVWNzVTBGQlV5eERRVUZETEUxQlFVc3NRMEZCUXl4RFFVRkRPMUZCUlRWRkxFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVVm1MRkZCUVVFc1NVRkJTU3hoUVVGaExFVkJRVVU3UVVGRGFrSXNXVUZCUVN4TlFVRk5MRTlCUVU4c1IwRkJSeXhyUWtGQmEwSXNRMEZCUXl4WFFVRlhMRU5CUVVNN1dVRkZMME1zU1VGQlNTeFBRVUZQTEVsQlFVa3NTVUZCU1N4RlFVRkZPMEZCUTI1Q0xHZENRVUZCTEVsQlFVa3NZVUZCWVN4RlFVRkZPMjlDUVVOcVFpeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2REUVVGblF5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVVc1EwRkJRenRCUVVNNVJDeHBRa0ZCUVR0QlFVRk5MSEZDUVVGQk8yOUNRVU5NTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc01FSkJRVEJDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJSU3hEUVVGRE8wRkJRM2hFTEdsQ1FVRkJPMEZCUTBZc1lVRkJRVHRCUVVOR0xGTkJRVUU3UVVGRlJDeFJRVUZCTEU5QlFVOHNUVUZCVFN4RFFVRkRPMHRCUTJZN1FVRkZSRHM3TzBGQlIwYzdRVUZEU3l4SlFVRkJMSFZDUVVGMVFpeERRVUZETEhOQ1FVRnZReXhGUVVGQk8wRkJRMnhGT3p0QlFVVkhPMEZCUTBnc1VVRkJRU3hOUVVGTkxIVkNRVUYxUWl4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGVkxFTkJRVU03UVVGRmJFUTdPMEZCUlVjN1FVRkRTQ3hSUVVGQkxFMUJRVTBzTmtKQlFUWkNMRWRCUVVjc1NVRkJTU3hIUVVGSExFVkJRVlVzUTBGQlF6czdRVUZIZUVRc1VVRkJRU3h6UWtGQmMwSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhyUWtGQmEwSXNTMEZCU1RzN1FVRkRjRVFzV1VGQlFTeE5RVUZOTEdGQlFXRXNSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3hEUVVGQkxFVkJRVUVzUjBGQlFTeHJRa0ZCYTBJc1EwRkJReXhWUVVGVkxFMUJRVUVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVY3NaMEpCUVdkQ0xFTkJRVU1zVFVGQlNTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUjBGQlFTeExRVUZMTEVOQlFVTTdRVUZEYWtZc1dVRkJRU3hOUVVGTkxHRkJRV0VzUjBGQlJ5eERRVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMR3RDUVVGclFpeERRVUZETEdWQlFXVXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSeXhUUVVGVExFTkJRVU1zVFVGQlN5eERRVUZETEVOQlFVTTdRVUZGTlVVc1dVRkJRU3hKUVVGSkxHRkJRV0VzUlVGQlJUdEJRVU5xUWl4blFrRkJRU3hOUVVGTkxFOUJRVThzUjBGQlJ5eHJRa0ZCYTBJc1EwRkJReXhYUVVGWExFTkJRVU03WjBKQlJTOURMRWxCUVVrc1QwRkJUeXhKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU51UWl4dlFrRkJRU3hKUVVGSkxHRkJRV0VzUlVGQlJUdEJRVU5xUWl4M1FrRkJRU3cyUWtGQk5rSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRE5VTXNjVUpCUVVFN1FVRkJUU3g1UWtGQlFUdEJRVU5NTEhkQ1FVRkJMSFZDUVVGMVFpeERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOMFF5eHhRa0ZCUVR0QlFVTkdMR2xDUVVGQk8wRkJRMFlzWVVGQlFUdEJRVU5JTEZOQlFVTXNRMEZCUXl4RFFVRkRPenRCUVVkSUxGRkJRVUVzU1VGQlNTeDFRa0ZCZFVJc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJTeEZRVUZGTzFsQlEzSkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRMVlzUTBGQlFTd3dRMEZCUVN4RlFVRTJReXgxUWtGQmRVSXNRMEZCUXl4SlFVRkpMRU5CUVhsSkxIVkpRVUZCTEVOQlFVRXNRMEZEYms0c1EwRkJRenRCUVVOSUxGTkJRVUU3UVVGRlJDeFJRVUZCTEVsQlFVa3NOa0pCUVRaQ0xFTkJRVU1zU1VGQlNTeEhRVUZITEVWQlFVVXNSVUZCUlR0WlFVTXpReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVU5XTEVOQlFVRXNNRU5CUVVFc1JVRkJOa01zTmtKQlFUWkNMRU5CUVVNc1NVRkJTU3hEUVVFclNTdzJTVUZCUVN4RFFVRkJMRU5CUXk5T0xFTkJRVU03UVVGRFNDeFRRVUZCT3p0QlFVZEVMRkZCUVVFc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eDFRa0ZCZFVJc1EwRkJRenRCUVVOb1F5eGhRVUZCTEVsQlFVa3NSVUZCUlR0QlFVTk9MR0ZCUVVFc1QwRkJUeXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNTMEZCU1R0WlFVTndRaXhOUVVGTkxHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEhWQ1FVRjFRaXhEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU4yUml4SlFVRkpMRU5CUVVNc01FSkJRVEJDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hqUVVGakxFTkJRVU1zUTBGQlF6dEJRVU0zUkN4VFFVRkRMRU5CUVVNc1EwRkJRenRCUVVWTUxGRkJRVUVzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl3MlFrRkJOa0lzUTBGQlF6dEJRVU4wUXl4aFFVRkJMRWxCUVVrc1JVRkJSVHRCUVVOT0xHRkJRVUVzVDBGQlR5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1MwRkJTVHRCUVVOd1FpeFpRVUZCTEUxQlFVMHNZMEZCWXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYmtRc1NVRkJTU3hEUVVGRExHZERRVUZuUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFVkJRVVVzWTBGQll5eERRVUZETEVOQlFVTTdRVUZEYmtVc1UwRkJReXhEUVVGRExFTkJRVU03UzBGRFRqdEJRVU5HT3pzN095SjlcbiIsIi8qIVxuICogQHBpeGl2L3RocmVlLXZybS1ub2RlLWNvbnN0cmFpbnQgdjIuMC42XG4gKiBOb2RlIGNvbnN0cmFpbnQgbW9kdWxlIGZvciBAcGl4aXYvdGhyZWUtdnJtXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjMgcGl4aXYgSW5jLlxuICogQHBpeGl2L3RocmVlLXZybS1ub2RlLWNvbnN0cmFpbnQgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgTUlUIExpY2Vuc2VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9waXhpdi90aHJlZS12cm0vYmxvYi9yZWxlYXNlL0xJQ0VOU0VcbiAqL1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5jb25zdCBfdjNBJDMgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY2xhc3MgVlJNTm9kZUNvbnN0cmFpbnRIZWxwZXIgZXh0ZW5kcyBUSFJFRS5Hcm91cCB7XG4gICAgY29uc3RydWN0b3IoY29uc3RyYWludCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9hdHRyUG9zaXRpb24gPSBuZXcgVEhSRUUuQnVmZmVyQXR0cmlidXRlKG5ldyBGbG9hdDMyQXJyYXkoWzAsIDAsIDAsIDAsIDAsIDBdKSwgMyk7XG4gICAgICAgIHRoaXMuX2F0dHJQb3NpdGlvbi5zZXRVc2FnZShUSFJFRS5EeW5hbWljRHJhd1VzYWdlKTtcbiAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgVEhSRUUuQnVmZmVyR2VvbWV0cnkoKTtcbiAgICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCdwb3NpdGlvbicsIHRoaXMuX2F0dHJQb3NpdGlvbik7XG4gICAgICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IFRIUkVFLkxpbmVCYXNpY01hdGVyaWFsKHtcbiAgICAgICAgICAgIGNvbG9yOiAweGZmMDBmZixcbiAgICAgICAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgICAgICAgICBkZXB0aFdyaXRlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2xpbmUgPSBuZXcgVEhSRUUuTGluZShnZW9tZXRyeSwgbWF0ZXJpYWwpO1xuICAgICAgICB0aGlzLmFkZCh0aGlzLl9saW5lKTtcbiAgICAgICAgdGhpcy5jb25zdHJhaW50ID0gY29uc3RyYWludDtcbiAgICB9XG4gICAgdXBkYXRlTWF0cml4V29ybGQoZm9yY2UpIHtcbiAgICAgICAgX3YzQSQzLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLmNvbnN0cmFpbnQuZGVzdGluYXRpb24ubWF0cml4V29ybGQpO1xuICAgICAgICB0aGlzLl9hdHRyUG9zaXRpb24uc2V0WFlaKDAsIF92M0EkMy54LCBfdjNBJDMueSwgX3YzQSQzLnopO1xuICAgICAgICBpZiAodGhpcy5jb25zdHJhaW50LnNvdXJjZSkge1xuICAgICAgICAgICAgX3YzQSQzLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLmNvbnN0cmFpbnQuc291cmNlLm1hdHJpeFdvcmxkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hdHRyUG9zaXRpb24uc2V0WFlaKDEsIF92M0EkMy54LCBfdjNBJDMueSwgX3YzQSQzLnopO1xuICAgICAgICB0aGlzLl9hdHRyUG9zaXRpb24ubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgICAgICBzdXBlci51cGRhdGVNYXRyaXhXb3JsZChmb3JjZSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkZWNvbXBvc2VQb3NpdGlvbihtYXRyaXgsIHRhcmdldCkge1xuICAgIHJldHVybiB0YXJnZXQuc2V0KG1hdHJpeC5lbGVtZW50c1sxMl0sIG1hdHJpeC5lbGVtZW50c1sxM10sIG1hdHJpeC5lbGVtZW50c1sxNF0pO1xufVxuXG5jb25zdCBfdjNBJDIgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgX3YzQiQxID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmZ1bmN0aW9uIGRlY29tcG9zZVJvdGF0aW9uKG1hdHJpeCwgdGFyZ2V0KSB7XG4gICAgbWF0cml4LmRlY29tcG9zZShfdjNBJDIsIHRhcmdldCwgX3YzQiQxKTtcbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuXG4vKipcbiAqIEEgY29tcGF0IGZ1bmN0aW9uIGZvciBgUXVhdGVybmlvbi5pbnZlcnQoKWAgLyBgUXVhdGVybmlvbi5pbnZlcnNlKClgLlxuICogYFF1YXRlcm5pb24uaW52ZXJ0KClgIGlzIGludHJvZHVjZWQgaW4gcjEyMyBhbmQgYFF1YXRlcm5pb24uaW52ZXJzZSgpYCBlbWl0cyBhIHdhcm5pbmcuXG4gKiBXZSBhcmUgZ29pbmcgdG8gdXNlIHRoaXMgY29tcGF0IGZvciBhIHdoaWxlLlxuICogQHBhcmFtIHRhcmdldCBBIHRhcmdldCBxdWF0ZXJuaW9uXG4gKi9cbmZ1bmN0aW9uIHF1YXRJbnZlcnRDb21wYXQodGFyZ2V0KSB7XG4gICAgaWYgKHRhcmdldC5pbnZlcnQpIHtcbiAgICAgICAgdGFyZ2V0LmludmVydCgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGFyZ2V0LmludmVyc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cblxuLyoqXG4gKiBBIGJhc2UgY2xhc3Mgb2YgVlJNIGNvbnN0cmFpbnQgY2xhc3Nlcy5cbiAqL1xuY2xhc3MgVlJNTm9kZUNvbnN0cmFpbnQge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkZXN0aW5hdGlvbiBUaGUgZGVzdGluYXRpb24gb2JqZWN0XG4gICAgICogQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdFxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGRlc3RpbmF0aW9uLCBzb3VyY2UpIHtcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uO1xuICAgICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgICAgdGhpcy53ZWlnaHQgPSAxLjA7XG4gICAgfVxufVxuXG5jb25zdCBfdjNBJDEgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgX3YzQiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jb25zdCBfdjNDID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IF9xdWF0QSQyID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IF9xdWF0QiQyID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IF9xdWF0QyA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4vKipcbiAqIEEgY29uc3RyYWludCB0aGF0IG1ha2VzIGl0IGxvb2sgYXQgYSBzb3VyY2Ugb2JqZWN0LlxuICpcbiAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3ZybS1jL3ZybS1zcGVjaWZpY2F0aW9uL3RyZWUvbWFzdGVyL3NwZWNpZmljYXRpb24vVlJNQ19ub2RlX2NvbnN0cmFpbnQtMS4wX2JldGEjcm9sbC1jb25zdHJhaW50XG4gKi9cbmNsYXNzIFZSTUFpbUNvbnN0cmFpbnQgZXh0ZW5kcyBWUk1Ob2RlQ29uc3RyYWludCB7XG4gICAgLyoqXG4gICAgICogVGhlIGFpbSBheGlzIG9mIHRoZSBjb25zdHJhaW50LlxuICAgICAqL1xuICAgIGdldCBhaW1BeGlzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWltQXhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIGFpbSBheGlzIG9mIHRoZSBjb25zdHJhaW50LlxuICAgICAqL1xuICAgIHNldCBhaW1BeGlzKGFpbUF4aXMpIHtcbiAgICAgICAgdGhpcy5fYWltQXhpcyA9IGFpbUF4aXM7XG4gICAgICAgIHRoaXMuX3YzQWltQXhpcy5zZXQoYWltQXhpcyA9PT0gJ1Bvc2l0aXZlWCcgPyAxLjAgOiBhaW1BeGlzID09PSAnTmVnYXRpdmVYJyA/IC0xLjAgOiAwLjAsIGFpbUF4aXMgPT09ICdQb3NpdGl2ZVknID8gMS4wIDogYWltQXhpcyA9PT0gJ05lZ2F0aXZlWScgPyAtMS4wIDogMC4wLCBhaW1BeGlzID09PSAnUG9zaXRpdmVaJyA/IDEuMCA6IGFpbUF4aXMgPT09ICdOZWdhdGl2ZVonID8gLTEuMCA6IDAuMCk7XG4gICAgfVxuICAgIGdldCBkZXBlbmRlbmNpZXMoKSB7XG4gICAgICAgIGNvbnN0IHNldCA9IG5ldyBTZXQoW3RoaXMuc291cmNlXSk7XG4gICAgICAgIGlmICh0aGlzLmRlc3RpbmF0aW9uLnBhcmVudCkge1xuICAgICAgICAgICAgc2V0LmFkZCh0aGlzLmRlc3RpbmF0aW9uLnBhcmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldDtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoZGVzdGluYXRpb24sIHNvdXJjZSkge1xuICAgICAgICBzdXBlcihkZXN0aW5hdGlvbiwgc291cmNlKTtcbiAgICAgICAgdGhpcy5fYWltQXhpcyA9ICdQb3NpdGl2ZVgnO1xuICAgICAgICB0aGlzLl92M0FpbUF4aXMgPSBuZXcgVEhSRUUuVmVjdG9yMygxLCAwLCAwKTtcbiAgICAgICAgdGhpcy5fZHN0UmVzdFF1YXQgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuICAgIH1cbiAgICBzZXRJbml0U3RhdGUoKSB7XG4gICAgICAgIHRoaXMuX2RzdFJlc3RRdWF0LmNvcHkodGhpcy5kZXN0aW5hdGlvbi5xdWF0ZXJuaW9uKTtcbiAgICB9XG4gICAgdXBkYXRlKCkge1xuICAgICAgICAvLyB1cGRhdGUgd29ybGQgbWF0cml4IG9mIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2UgbWFudWFsbHlcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbi51cGRhdGVXb3JsZE1hdHJpeCh0cnVlLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuc291cmNlLnVwZGF0ZVdvcmxkTWF0cml4KHRydWUsIGZhbHNlKTtcbiAgICAgICAgLy8gZ2V0IHdvcmxkIHF1YXRlcm5pb24gb2YgdGhlIHBhcmVudCBvZiB0aGUgZGVzdGluYXRpb25cbiAgICAgICAgY29uc3QgZHN0UGFyZW50V29ybGRRdWF0ID0gX3F1YXRBJDIuaWRlbnRpdHkoKTtcbiAgICAgICAgY29uc3QgaW52RHN0UGFyZW50V29ybGRRdWF0ID0gX3F1YXRCJDIuaWRlbnRpdHkoKTtcbiAgICAgICAgaWYgKHRoaXMuZGVzdGluYXRpb24ucGFyZW50KSB7XG4gICAgICAgICAgICBkZWNvbXBvc2VSb3RhdGlvbih0aGlzLmRlc3RpbmF0aW9uLnBhcmVudC5tYXRyaXhXb3JsZCwgZHN0UGFyZW50V29ybGRRdWF0KTtcbiAgICAgICAgICAgIHF1YXRJbnZlcnRDb21wYXQoaW52RHN0UGFyZW50V29ybGRRdWF0LmNvcHkoZHN0UGFyZW50V29ybGRRdWF0KSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2FsY3VsYXRlIGZyb20tdG8gdmVjdG9ycyBpbiB3b3JsZCBjb29yZFxuICAgICAgICBjb25zdCBhMCA9IF92M0EkMS5jb3B5KHRoaXMuX3YzQWltQXhpcykuYXBwbHlRdWF0ZXJuaW9uKHRoaXMuX2RzdFJlc3RRdWF0KS5hcHBseVF1YXRlcm5pb24oZHN0UGFyZW50V29ybGRRdWF0KTtcbiAgICAgICAgY29uc3QgYTEgPSBkZWNvbXBvc2VQb3NpdGlvbih0aGlzLnNvdXJjZS5tYXRyaXhXb3JsZCwgX3YzQilcbiAgICAgICAgICAgIC5zdWIoZGVjb21wb3NlUG9zaXRpb24odGhpcy5kZXN0aW5hdGlvbi5tYXRyaXhXb3JsZCwgX3YzQykpXG4gICAgICAgICAgICAubm9ybWFsaXplKCk7XG4gICAgICAgIC8vIGNyZWF0ZSBhIGZyb20tdG8gcXVhdGVybmlvbiwgY29udmVydCB0byBkZXN0aW5hdGlvbiBsb2NhbCBjb29yZCwgdGhlbiBtdWx0aXBseSByZXN0IHF1YXRlcm5pb25cbiAgICAgICAgY29uc3QgdGFyZ2V0UXVhdCA9IF9xdWF0Q1xuICAgICAgICAgICAgLnNldEZyb21Vbml0VmVjdG9ycyhhMCwgYTEpXG4gICAgICAgICAgICAucHJlbXVsdGlwbHkoaW52RHN0UGFyZW50V29ybGRRdWF0KVxuICAgICAgICAgICAgLm11bHRpcGx5KGRzdFBhcmVudFdvcmxkUXVhdClcbiAgICAgICAgICAgIC5tdWx0aXBseSh0aGlzLl9kc3RSZXN0UXVhdCk7XG4gICAgICAgIC8vIGJsZW5kIHdpdGggdGhlIHJlc3QgcXVhdGVybmlvbiB1c2luZyB3ZWlnaHRcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbi5xdWF0ZXJuaW9uLmNvcHkodGhpcy5fZHN0UmVzdFF1YXQpLnNsZXJwKHRhcmdldFF1YXQsIHRoaXMud2VpZ2h0KTtcbiAgICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG5cclxuZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxuXG4vKipcbiAqIFRyYXZlcnNlIGFuY2VzdG9ycyBvZiBnaXZlbiBvYmplY3QgYW5kIGNhbGwgZ2l2ZW4gY2FsbGJhY2sgZnJvbSByb290IHNpZGUuXG4gKiBJdCB3aWxsIGluY2x1ZGUgdGhlIGdpdmVuIG9iamVjdCBpdHNlbGYuXG4gKlxuICogQHBhcmFtIG9iamVjdCBUaGUgb2JqZWN0IHlvdSB3YW50IHRvIHRyYXZlcnNlXG4gKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGwgYmFjayBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoIGFuY2VzdG9yc1xuICovXG5mdW5jdGlvbiB0cmF2ZXJzZUFuY2VzdG9yc0Zyb21Sb290KG9iamVjdCwgY2FsbGJhY2spIHtcbiAgICBjb25zdCBhbmNlc3RvcnMgPSBbb2JqZWN0XTtcbiAgICBsZXQgaGVhZCA9IG9iamVjdC5wYXJlbnQ7XG4gICAgd2hpbGUgKGhlYWQgIT09IG51bGwpIHtcbiAgICAgICAgYW5jZXN0b3JzLnVuc2hpZnQoaGVhZCk7XG4gICAgICAgIGhlYWQgPSBoZWFkLnBhcmVudDtcbiAgICB9XG4gICAgYW5jZXN0b3JzLmZvckVhY2goKGFuY2VzdG9yKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKGFuY2VzdG9yKTtcbiAgICB9KTtcbn1cblxuY2xhc3MgVlJNTm9kZUNvbnN0cmFpbnRNYW5hZ2VyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5fY29uc3RyYWludHMgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMuX29iamVjdENvbnN0cmFpbnRzTWFwID0gbmV3IE1hcCgpO1xuICAgIH1cbiAgICBnZXQgY29uc3RyYWludHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25zdHJhaW50cztcbiAgICB9XG4gICAgYWRkQ29uc3RyYWludChjb25zdHJhaW50KSB7XG4gICAgICAgIHRoaXMuX2NvbnN0cmFpbnRzLmFkZChjb25zdHJhaW50KTtcbiAgICAgICAgbGV0IG9iamVjdFNldCA9IHRoaXMuX29iamVjdENvbnN0cmFpbnRzTWFwLmdldChjb25zdHJhaW50LmRlc3RpbmF0aW9uKTtcbiAgICAgICAgaWYgKG9iamVjdFNldCA9PSBudWxsKSB7XG4gICAgICAgICAgICBvYmplY3RTZXQgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICB0aGlzLl9vYmplY3RDb25zdHJhaW50c01hcC5zZXQoY29uc3RyYWludC5kZXN0aW5hdGlvbiwgb2JqZWN0U2V0KTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3RTZXQuYWRkKGNvbnN0cmFpbnQpO1xuICAgIH1cbiAgICBkZWxldGVDb25zdHJhaW50KGNvbnN0cmFpbnQpIHtcbiAgICAgICAgdGhpcy5fY29uc3RyYWludHMuZGVsZXRlKGNvbnN0cmFpbnQpO1xuICAgICAgICBjb25zdCBvYmplY3RTZXQgPSB0aGlzLl9vYmplY3RDb25zdHJhaW50c01hcC5nZXQoY29uc3RyYWludC5kZXN0aW5hdGlvbik7XG4gICAgICAgIG9iamVjdFNldC5kZWxldGUoY29uc3RyYWludCk7XG4gICAgfVxuICAgIHNldEluaXRTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uc3RyYWludHNUcmllZCA9IG5ldyBTZXQoKTtcbiAgICAgICAgY29uc3QgY29uc3RyYWludHNEb25lID0gbmV3IFNldCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbnN0cmFpbnQgb2YgdGhpcy5fY29uc3RyYWludHMpIHtcbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NDb25zdHJhaW50KGNvbnN0cmFpbnQsIGNvbnN0cmFpbnRzVHJpZWQsIGNvbnN0cmFpbnRzRG9uZSwgKGNvbnN0cmFpbnQpID0+IGNvbnN0cmFpbnQuc2V0SW5pdFN0YXRlKCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uc3RyYWludHNUcmllZCA9IG5ldyBTZXQoKTtcbiAgICAgICAgY29uc3QgY29uc3RyYWludHNEb25lID0gbmV3IFNldCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbnN0cmFpbnQgb2YgdGhpcy5fY29uc3RyYWludHMpIHtcbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NDb25zdHJhaW50KGNvbnN0cmFpbnQsIGNvbnN0cmFpbnRzVHJpZWQsIGNvbnN0cmFpbnRzRG9uZSwgKGNvbnN0cmFpbnQpID0+IGNvbnN0cmFpbnQudXBkYXRlKCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBhIGNvbnN0cmFpbnQuXG4gICAgICogSWYgdGhlcmUgYXJlIG90aGVyIGNvbnN0cmFpbnRzIHRoYXQgYXJlIGRlcGVuZGFudCwgaXQgd2lsbCB0cnkgdG8gdXBkYXRlIHRoZW0gcmVjdXJzaXZlbHkuXG4gICAgICogSXQgbWlnaHQgdGhyb3cgYW4gZXJyb3IgaWYgdGhlcmUgYXJlIGNpcmN1bGFyIGRlcGVuZGVuY2llcy5cbiAgICAgKlxuICAgICAqIEludGVuZGVkIHRvIGJlIHVzZWQgaW4ge0BsaW5rIHVwZGF0ZX0gYW5kIHtAbGluayBfcHJvY2Vzc0NvbnN0cmFpbnR9IGl0c2VsZiByZWN1cnNpdmVseS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb25zdHJhaW50IEEgY29uc3RyYWludCB5b3Ugd2FudCB0byB1cGRhdGVcbiAgICAgKiBAcGFyYW0gY29uc3RyYWludHNUcmllZCBTZXQgb2YgY29uc3RyYWludHMgdGhhdCBhcmUgYWxyZWFkeSB0cmllZCB0byBiZSB1cGRhdGVkXG4gICAgICogQHBhcmFtIGNvbnN0cmFpbnRzRG9uZSBTZXQgb2YgY29uc3RyYWludHMgdGhhdCBhcmUgYWxyZWFkeSB1cCB0byBkYXRlXG4gICAgICovXG4gICAgX3Byb2Nlc3NDb25zdHJhaW50KGNvbnN0cmFpbnQsIGNvbnN0cmFpbnRzVHJpZWQsIGNvbnN0cmFpbnRzRG9uZSwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKGNvbnN0cmFpbnRzRG9uZS5oYXMoY29uc3RyYWludCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uc3RyYWludHNUcmllZC5oYXMoY29uc3RyYWludCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVlJNTm9kZUNvbnN0cmFpbnRNYW5hZ2VyOiBDaXJjdWxhciBkZXBlbmRlbmN5IGRldGVjdGVkIHdoaWxlIHVwZGF0aW5nIGNvbnN0cmFpbnRzJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3RyYWludHNUcmllZC5hZGQoY29uc3RyYWludCk7XG4gICAgICAgIGNvbnN0IGRlcE9iamVjdHMgPSBjb25zdHJhaW50LmRlcGVuZGVuY2llcztcbiAgICAgICAgZm9yIChjb25zdCBkZXBPYmplY3Qgb2YgZGVwT2JqZWN0cykge1xuICAgICAgICAgICAgdHJhdmVyc2VBbmNlc3RvcnNGcm9tUm9vdChkZXBPYmplY3QsIChkZXBPYmplY3RBbmNlc3RvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9iamVjdFNldCA9IHRoaXMuX29iamVjdENvbnN0cmFpbnRzTWFwLmdldChkZXBPYmplY3RBbmNlc3Rvcik7XG4gICAgICAgICAgICAgICAgaWYgKG9iamVjdFNldCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcENvbnN0cmFpbnQgb2Ygb2JqZWN0U2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzQ29uc3RyYWludChkZXBDb25zdHJhaW50LCBjb25zdHJhaW50c1RyaWVkLCBjb25zdHJhaW50c0RvbmUsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhbGxiYWNrKGNvbnN0cmFpbnQpO1xuICAgICAgICBjb25zdHJhaW50c0RvbmUuYWRkKGNvbnN0cmFpbnQpO1xuICAgIH1cbn1cblxuY29uc3QgX3F1YXRBJDEgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuY29uc3QgX3F1YXRCJDEgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuLyoqXG4gKiBBIGNvbnN0cmFpbnQgdGhhdCB0cmFuc2ZlcnMgYSByb3RhdGlvbiBhcm91bmQgb25lIGF4aXMgb2YgYSBzb3VyY2UuXG4gKlxuICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vdnJtLWMvdnJtLXNwZWNpZmljYXRpb24vdHJlZS9tYXN0ZXIvc3BlY2lmaWNhdGlvbi9WUk1DX25vZGVfY29uc3RyYWludC0xLjBfYmV0YSNyb2xsLWNvbnN0cmFpbnRcbiAqL1xuY2xhc3MgVlJNUm90YXRpb25Db25zdHJhaW50IGV4dGVuZHMgVlJNTm9kZUNvbnN0cmFpbnQge1xuICAgIGdldCBkZXBlbmRlbmNpZXMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KFt0aGlzLnNvdXJjZV0pO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihkZXN0aW5hdGlvbiwgc291cmNlKSB7XG4gICAgICAgIHN1cGVyKGRlc3RpbmF0aW9uLCBzb3VyY2UpO1xuICAgICAgICB0aGlzLl9kc3RSZXN0UXVhdCA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4gICAgICAgIHRoaXMuX2ludlNyY1Jlc3RRdWF0ID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbiAgICB9XG4gICAgc2V0SW5pdFN0YXRlKCkge1xuICAgICAgICB0aGlzLl9kc3RSZXN0UXVhdC5jb3B5KHRoaXMuZGVzdGluYXRpb24ucXVhdGVybmlvbik7XG4gICAgICAgIHF1YXRJbnZlcnRDb21wYXQodGhpcy5faW52U3JjUmVzdFF1YXQuY29weSh0aGlzLnNvdXJjZS5xdWF0ZXJuaW9uKSk7XG4gICAgfVxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBkZWx0YSByb3RhdGlvbiBmcm9tIHRoZSByZXN0IGFib3V0IHRoZSBzb3VyY2VcbiAgICAgICAgY29uc3Qgc3JjRGVsdGFRdWF0ID0gX3F1YXRBJDEuY29weSh0aGlzLl9pbnZTcmNSZXN0UXVhdCkubXVsdGlwbHkodGhpcy5zb3VyY2UucXVhdGVybmlvbik7XG4gICAgICAgIC8vIG11bHRpcGx5IHRoZSBkZWx0YSB0byB0aGUgcmVzdCBvZiB0aGUgZGVzdGluYXRpb25cbiAgICAgICAgY29uc3QgdGFyZ2V0UXVhdCA9IF9xdWF0QiQxLmNvcHkodGhpcy5fZHN0UmVzdFF1YXQpLm11bHRpcGx5KHNyY0RlbHRhUXVhdCk7XG4gICAgICAgIC8vIGJsZW5kIHdpdGggdGhlIHJlc3QgcXVhdGVybmlvbiB1c2luZyB3ZWlnaHRcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbi5xdWF0ZXJuaW9uLmNvcHkodGhpcy5fZHN0UmVzdFF1YXQpLnNsZXJwKHRhcmdldFF1YXQsIHRoaXMud2VpZ2h0KTtcbiAgICB9XG59XG5cbmNvbnN0IF92M0EgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgX3F1YXRBID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IF9xdWF0QiA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4vKipcbiAqIEEgY29uc3RyYWludCB0aGF0IHRyYW5zZmVycyBhIHJvdGF0aW9uIGFyb3VuZCBvbmUgYXhpcyBvZiBhIHNvdXJjZS5cbiAqXG4gKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS92cm0tYy92cm0tc3BlY2lmaWNhdGlvbi90cmVlL21hc3Rlci9zcGVjaWZpY2F0aW9uL1ZSTUNfbm9kZV9jb25zdHJhaW50LTEuMF9iZXRhI3JvbGwtY29uc3RyYWludFxuICovXG5jbGFzcyBWUk1Sb2xsQ29uc3RyYWludCBleHRlbmRzIFZSTU5vZGVDb25zdHJhaW50IHtcbiAgICAvKipcbiAgICAgKiBUaGUgcm9sbCBheGlzIG9mIHRoZSBjb25zdHJhaW50LlxuICAgICAqL1xuICAgIGdldCByb2xsQXhpcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JvbGxBeGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgcm9sbCBheGlzIG9mIHRoZSBjb25zdHJhaW50LlxuICAgICAqL1xuICAgIHNldCByb2xsQXhpcyhyb2xsQXhpcykge1xuICAgICAgICB0aGlzLl9yb2xsQXhpcyA9IHJvbGxBeGlzO1xuICAgICAgICB0aGlzLl92M1JvbGxBeGlzLnNldChyb2xsQXhpcyA9PT0gJ1gnID8gMS4wIDogMC4wLCByb2xsQXhpcyA9PT0gJ1knID8gMS4wIDogMC4wLCByb2xsQXhpcyA9PT0gJ1onID8gMS4wIDogMC4wKTtcbiAgICB9XG4gICAgZ2V0IGRlcGVuZGVuY2llcygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoW3RoaXMuc291cmNlXSk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGRlc3RpbmF0aW9uLCBzb3VyY2UpIHtcbiAgICAgICAgc3VwZXIoZGVzdGluYXRpb24sIHNvdXJjZSk7XG4gICAgICAgIHRoaXMuX3JvbGxBeGlzID0gJ1gnO1xuICAgICAgICB0aGlzLl92M1JvbGxBeGlzID0gbmV3IFRIUkVFLlZlY3RvcjMoMSwgMCwgMCk7XG4gICAgICAgIHRoaXMuX2RzdFJlc3RRdWF0ID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbiAgICAgICAgdGhpcy5faW52RHN0UmVzdFF1YXQgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuICAgICAgICB0aGlzLl9pbnZTcmNSZXN0UXVhdE11bERzdFJlc3RRdWF0ID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbiAgICB9XG4gICAgc2V0SW5pdFN0YXRlKCkge1xuICAgICAgICB0aGlzLl9kc3RSZXN0UXVhdC5jb3B5KHRoaXMuZGVzdGluYXRpb24ucXVhdGVybmlvbik7XG4gICAgICAgIHF1YXRJbnZlcnRDb21wYXQodGhpcy5faW52RHN0UmVzdFF1YXQuY29weSh0aGlzLl9kc3RSZXN0UXVhdCkpO1xuICAgICAgICBxdWF0SW52ZXJ0Q29tcGF0KHRoaXMuX2ludlNyY1Jlc3RRdWF0TXVsRHN0UmVzdFF1YXQuY29weSh0aGlzLnNvdXJjZS5xdWF0ZXJuaW9uKSkubXVsdGlwbHkodGhpcy5fZHN0UmVzdFF1YXQpO1xuICAgIH1cbiAgICB1cGRhdGUoKSB7XG4gICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgZGVsdGEgcm90YXRpb24gZnJvbSB0aGUgcmVzdCBhYm91dCB0aGUgc291cmNlLCB0aGVuIGNvbnZlcnQgdG8gdGhlIGRlc3RpbmF0aW9uIGxvY2FsIGNvb3JkXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaGF0IHRoZSBxdWF0RGVsdGEgaXMgaW50ZW5kZWQgdG8gYmU6XG4gICAgICAgICAqXG4gICAgICAgICAqIGBgYHRzXG4gICAgICAgICAqIGNvbnN0IHF1YXRTcmNEZWx0YSA9IF9xdWF0QVxuICAgICAgICAgKiAgIC5jb3B5KCB0aGlzLl9pbnZTcmNSZXN0UXVhdCApXG4gICAgICAgICAqICAgLm11bHRpcGx5KCB0aGlzLnNvdXJjZS5xdWF0ZXJuaW9uICk7XG4gICAgICAgICAqIGNvbnN0IHF1YXRTcmNEZWx0YUluUGFyZW50ID0gX3F1YXRCXG4gICAgICAgICAqICAgLmNvcHkoIHRoaXMuX3NyY1Jlc3RRdWF0IClcbiAgICAgICAgICogICAubXVsdGlwbHkoIHF1YXRTcmNEZWx0YSApXG4gICAgICAgICAqICAgLm11bHRpcGx5KCB0aGlzLl9pbnZTcmNSZXN0UXVhdCApO1xuICAgICAgICAgKiBjb25zdCBxdWF0U3JjRGVsdGFJbkRzdCA9IF9xdWF0QVxuICAgICAgICAgKiAgIC5jb3B5KCB0aGlzLl9pbnZEc3RSZXN0UXVhdCApXG4gICAgICAgICAqICAgLm11bHRpcGx5KCBxdWF0U3JjRGVsdGFJblBhcmVudCApXG4gICAgICAgICAqICAgLm11bHRpcGx5KCB0aGlzLl9kc3RSZXN0UXVhdCApO1xuICAgICAgICAgKiBgYGBcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IHF1YXREZWx0YSA9IF9xdWF0QVxuICAgICAgICAgICAgLmNvcHkodGhpcy5faW52RHN0UmVzdFF1YXQpXG4gICAgICAgICAgICAubXVsdGlwbHkodGhpcy5zb3VyY2UucXVhdGVybmlvbilcbiAgICAgICAgICAgIC5tdWx0aXBseSh0aGlzLl9pbnZTcmNSZXN0UXVhdE11bERzdFJlc3RRdWF0KTtcbiAgICAgICAgLy8gY3JlYXRlIGEgZnJvbS10byBxdWF0ZXJuaW9uXG4gICAgICAgIGNvbnN0IG4xID0gX3YzQS5jb3B5KHRoaXMuX3YzUm9sbEF4aXMpLmFwcGx5UXVhdGVybmlvbihxdWF0RGVsdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogV2hhdCB0aGUgcXVhdEZyb21UbyBpcyBpbnRlbmRlZCB0byBiZTpcbiAgICAgICAgICpcbiAgICAgICAgICogYGBgdHNcbiAgICAgICAgICogY29uc3QgcXVhdEZyb21UbyA9IF9xdWF0Qi5zZXRGcm9tVW5pdFZlY3RvcnMoIHRoaXMuX3YzUm9sbEF4aXMsIG4xICkuaW52ZXJzZSgpO1xuICAgICAgICAgKiBgYGBcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IHF1YXRGcm9tVG8gPSBfcXVhdEIuc2V0RnJvbVVuaXRWZWN0b3JzKG4xLCB0aGlzLl92M1JvbGxBeGlzKTtcbiAgICAgICAgLy8gcXVhdEZyb21UbyAqIHF1YXREZWx0YSA9PSByb2xsIGV4dHJhY3RlZCBmcm9tIHF1YXREZWx0YVxuICAgICAgICBjb25zdCB0YXJnZXRRdWF0ID0gcXVhdEZyb21Uby5wcmVtdWx0aXBseSh0aGlzLl9kc3RSZXN0UXVhdCkubXVsdGlwbHkocXVhdERlbHRhKTtcbiAgICAgICAgLy8gYmxlbmQgd2l0aCB0aGUgcmVzdCBxdWF0ZXJuaW9uIHVzaW5nIHdlaWdodFxuICAgICAgICB0aGlzLmRlc3RpbmF0aW9uLnF1YXRlcm5pb24uY29weSh0aGlzLl9kc3RSZXN0UXVhdCkuc2xlcnAodGFyZ2V0UXVhdCwgdGhpcy53ZWlnaHQpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBQb3NzaWJsZSBzcGVjIHZlcnNpb25zIGl0IHJlY29nbml6ZXMuXG4gKi9cbmNvbnN0IFBPU1NJQkxFX1NQRUNfVkVSU0lPTlMgPSBuZXcgU2V0KFsnMS4wJywgJzEuMC1iZXRhJ10pO1xuY2xhc3MgVlJNTm9kZUNvbnN0cmFpbnRMb2FkZXJQbHVnaW4ge1xuICAgIGdldCBuYW1lKCkge1xuICAgICAgICByZXR1cm4gVlJNTm9kZUNvbnN0cmFpbnRMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUU7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhcnNlciwgb3B0aW9ucykge1xuICAgICAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICAgICAgdGhpcy5oZWxwZXJSb290ID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmhlbHBlclJvb3Q7XG4gICAgfVxuICAgIGFmdGVyUm9vdChnbHRmKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBnbHRmLnVzZXJEYXRhLnZybU5vZGVDb25zdHJhaW50TWFuYWdlciA9IHlpZWxkIHRoaXMuX2ltcG9ydChnbHRmKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEltcG9ydCBjb25zdHJhaW50cyBmcm9tIGEgR0xURiBhbmQgcmV0dXJucyBhIHtAbGluayBWUk1Ob2RlQ29uc3RyYWludE1hbmFnZXJ9LlxuICAgICAqIEl0IG1pZ2h0IHJldHVybiBgbnVsbGAgaW5zdGVhZCB3aGVuIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgY3JlYXRlZCBvciBzb21ldGhpbmcgZ28gd3JvbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZ2x0ZiBBIHBhcnNlZCByZXN1bHQgb2YgR0xURiB0YWtlbiBmcm9tIEdMVEZMb2FkZXJcbiAgICAgKi9cbiAgICBfaW1wb3J0KGdsdGYpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QganNvbiA9IHRoaXMucGFyc2VyLmpzb247XG4gICAgICAgICAgICAvLyBlYXJseSBhYm9ydCBpZiBpdCBkb2Vzbid0IHVzZSBjb25zdHJhaW50c1xuICAgICAgICAgICAgY29uc3QgaXNDb25zdHJhaW50c1VzZWQgPSAoKF9hID0ganNvbi5leHRlbnNpb25zVXNlZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmluZGV4T2YoVlJNTm9kZUNvbnN0cmFpbnRMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUUpKSAhPT0gLTE7XG4gICAgICAgICAgICBpZiAoIWlzQ29uc3RyYWludHNVc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZSTU5vZGVDb25zdHJhaW50TWFuYWdlcigpO1xuICAgICAgICAgICAgY29uc3QgdGhyZWVOb2RlcyA9IHlpZWxkIHRoaXMucGFyc2VyLmdldERlcGVuZGVuY2llcygnbm9kZScpO1xuICAgICAgICAgICAgLy8gaW1wb3J0IGNvbnN0cmFpbnRzIGZvciBlYWNoIG5vZGVzXG4gICAgICAgICAgICB0aHJlZU5vZGVzLmZvckVhY2goKG5vZGUsIG5vZGVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBjb25zdCBzY2hlbWFOb2RlID0ganNvbi5ub2Rlc1tub2RlSW5kZXhdO1xuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSBleHRlbnNpb24gdXNlcyB0aGUgZXh0ZW5zaW9uXG4gICAgICAgICAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gKF9hID0gc2NoZW1hTm9kZSA9PT0gbnVsbCB8fCBzY2hlbWFOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzY2hlbWFOb2RlLmV4dGVuc2lvbnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVtWUk1Ob2RlQ29uc3RyYWludExvYWRlclBsdWdpbi5FWFRFTlNJT05fTkFNRV07XG4gICAgICAgICAgICAgICAgaWYgKGV4dGVuc2lvbiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgc3BlY1ZlcnNpb24gPSBleHRlbnNpb24uc3BlY1ZlcnNpb247XG4gICAgICAgICAgICAgICAgaWYgKCFQT1NTSUJMRV9TUEVDX1ZFUlNJT05TLmhhcyhzcGVjVmVyc2lvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBWUk1Ob2RlQ29uc3RyYWludExvYWRlclBsdWdpbjogVW5rbm93biAke1ZSTU5vZGVDb25zdHJhaW50TG9hZGVyUGx1Z2luLkVYVEVOU0lPTl9OQU1FfSBzcGVjVmVyc2lvbiBcIiR7c3BlY1ZlcnNpb259XCJgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjb25zdHJhaW50RGVmID0gZXh0ZW5zaW9uLmNvbnN0cmFpbnQ7XG4gICAgICAgICAgICAgICAgLy8gaW1wb3J0IGNvbnN0cmFpbnRzXG4gICAgICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnREZWYucm9sbCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPSB0aGlzLl9pbXBvcnRSb2xsQ29uc3RyYWludChub2RlLCB0aHJlZU5vZGVzLCBjb25zdHJhaW50RGVmLnJvbGwpO1xuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyLmFkZENvbnN0cmFpbnQoY29uc3RyYWludCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN0cmFpbnREZWYuYWltICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29uc3RyYWludCA9IHRoaXMuX2ltcG9ydEFpbUNvbnN0cmFpbnQobm9kZSwgdGhyZWVOb2RlcywgY29uc3RyYWludERlZi5haW0pO1xuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyLmFkZENvbnN0cmFpbnQoY29uc3RyYWludCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN0cmFpbnREZWYucm90YXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb25zdHJhaW50ID0gdGhpcy5faW1wb3J0Um90YXRpb25Db25zdHJhaW50KG5vZGUsIHRocmVlTm9kZXMsIGNvbnN0cmFpbnREZWYucm90YXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyLmFkZENvbnN0cmFpbnQoY29uc3RyYWludCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBpbml0IGNvbnN0cmFpbnRzXG4gICAgICAgICAgICBnbHRmLnNjZW5lLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG4gICAgICAgICAgICBtYW5hZ2VyLnNldEluaXRTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIG1hbmFnZXI7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfaW1wb3J0Um9sbENvbnN0cmFpbnQoZGVzdGluYXRpb24sIG5vZGVzLCByb2xsQ29uc3RyYWludERlZikge1xuICAgICAgICBjb25zdCB7IHNvdXJjZTogc291cmNlSW5kZXgsIHJvbGxBeGlzLCB3ZWlnaHQgfSA9IHJvbGxDb25zdHJhaW50RGVmO1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBub2Rlc1tzb3VyY2VJbmRleF07XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPSBuZXcgVlJNUm9sbENvbnN0cmFpbnQoZGVzdGluYXRpb24sIHNvdXJjZSk7XG4gICAgICAgIGlmIChyb2xsQXhpcyAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdHJhaW50LnJvbGxBeGlzID0gcm9sbEF4aXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdlaWdodCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdHJhaW50LndlaWdodCA9IHdlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5oZWxwZXJSb290KSB7XG4gICAgICAgICAgICBjb25zdCBoZWxwZXIgPSBuZXcgVlJNTm9kZUNvbnN0cmFpbnRIZWxwZXIoY29uc3RyYWludCk7XG4gICAgICAgICAgICB0aGlzLmhlbHBlclJvb3QuYWRkKGhlbHBlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gICAgfVxuICAgIF9pbXBvcnRBaW1Db25zdHJhaW50KGRlc3RpbmF0aW9uLCBub2RlcywgYWltQ29uc3RyYWludERlZikge1xuICAgICAgICBjb25zdCB7IHNvdXJjZTogc291cmNlSW5kZXgsIGFpbUF4aXMsIHdlaWdodCB9ID0gYWltQ29uc3RyYWludERlZjtcbiAgICAgICAgY29uc3Qgc291cmNlID0gbm9kZXNbc291cmNlSW5kZXhdO1xuICAgICAgICBjb25zdCBjb25zdHJhaW50ID0gbmV3IFZSTUFpbUNvbnN0cmFpbnQoZGVzdGluYXRpb24sIHNvdXJjZSk7XG4gICAgICAgIGlmIChhaW1BeGlzICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnQuYWltQXhpcyA9IGFpbUF4aXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdlaWdodCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdHJhaW50LndlaWdodCA9IHdlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5oZWxwZXJSb290KSB7XG4gICAgICAgICAgICBjb25zdCBoZWxwZXIgPSBuZXcgVlJNTm9kZUNvbnN0cmFpbnRIZWxwZXIoY29uc3RyYWludCk7XG4gICAgICAgICAgICB0aGlzLmhlbHBlclJvb3QuYWRkKGhlbHBlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gICAgfVxuICAgIF9pbXBvcnRSb3RhdGlvbkNvbnN0cmFpbnQoZGVzdGluYXRpb24sIG5vZGVzLCByb3RhdGlvbkNvbnN0cmFpbnREZWYpIHtcbiAgICAgICAgY29uc3QgeyBzb3VyY2U6IHNvdXJjZUluZGV4LCB3ZWlnaHQgfSA9IHJvdGF0aW9uQ29uc3RyYWludERlZjtcbiAgICAgICAgY29uc3Qgc291cmNlID0gbm9kZXNbc291cmNlSW5kZXhdO1xuICAgICAgICBjb25zdCBjb25zdHJhaW50ID0gbmV3IFZSTVJvdGF0aW9uQ29uc3RyYWludChkZXN0aW5hdGlvbiwgc291cmNlKTtcbiAgICAgICAgaWYgKHdlaWdodCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdHJhaW50LndlaWdodCA9IHdlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5oZWxwZXJSb290KSB7XG4gICAgICAgICAgICBjb25zdCBoZWxwZXIgPSBuZXcgVlJNTm9kZUNvbnN0cmFpbnRIZWxwZXIoY29uc3RyYWludCk7XG4gICAgICAgICAgICB0aGlzLmhlbHBlclJvb3QuYWRkKGhlbHBlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gICAgfVxufVxuVlJNTm9kZUNvbnN0cmFpbnRMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUUgPSAnVlJNQ19ub2RlX2NvbnN0cmFpbnQnO1xuXG5leHBvcnQgeyBWUk1BaW1Db25zdHJhaW50LCBWUk1Ob2RlQ29uc3RyYWludCwgVlJNTm9kZUNvbnN0cmFpbnRIZWxwZXIsIFZSTU5vZGVDb25zdHJhaW50TG9hZGVyUGx1Z2luLCBWUk1Ob2RlQ29uc3RyYWludE1hbmFnZXIsIFZSTVJvbGxDb25zdHJhaW50LCBWUk1Sb3RhdGlvbkNvbnN0cmFpbnQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEdoeVpXVXRkbkp0TFc1dlpHVXRZMjl1YzNSeVlXbHVkQzV0YjJSMWJHVXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMM055WXk5b1pXeHdaWEp6TDFaU1RVNXZaR1ZEYjI1emRISmhhVzUwU0dWc2NHVnlMblJ6SWl3aUxpNHZjM0pqTDNWMGFXeHpMMlJsWTI5dGNHOXpaVkJ2YzJsMGFXOXVMblJ6SWl3aUxpNHZjM0pqTDNWMGFXeHpMMlJsWTI5dGNHOXpaVkp2ZEdGMGFXOXVMblJ6SWl3aUxpNHZjM0pqTDNWMGFXeHpMM0YxWVhSSmJuWmxjblJEYjIxd1lYUXVkSE1pTENJdUxpOXpjbU12VmxKTlRtOWtaVU52Ym5OMGNtRnBiblF1ZEhNaUxDSXVMaTl6Y21NdlZsSk5RV2x0UTI5dWMzUnlZV2x1ZEM1MGN5SXNJaTR1THk0dUx5NHVMMjV2WkdWZmJXOWtkV3hsY3k5MGMyeHBZaTkwYzJ4cFlpNWxjell1YW5NaUxDSXVMaTl6Y21NdmRYUnBiSE12ZEhKaGRtVnljMlZCYm1ObGMzUnZjbk5HY205dFVtOXZkQzUwY3lJc0lpNHVMM055WXk5V1VrMU9iMlJsUTI5dWMzUnlZV2x1ZEUxaGJtRm5aWEl1ZEhNaUxDSXVMaTl6Y21NdlZsSk5VbTkwWVhScGIyNURiMjV6ZEhKaGFXNTBMblJ6SWl3aUxpNHZjM0pqTDFaU1RWSnZiR3hEYjI1emRISmhhVzUwTG5Seklpd2lMaTR2YzNKakwxWlNUVTV2WkdWRGIyNXpkSEpoYVc1MFRHOWhaR1Z5VUd4MVoybHVMblJ6SWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJRlJJVWtWRklHWnliMjBnSjNSb2NtVmxKenRjYm1sdGNHOXlkQ0I3SUZaU1RVNXZaR1ZEYjI1emRISmhhVzUwSUgwZ1puSnZiU0FuTGk0dlZsSk5UbTlrWlVOdmJuTjBjbUZwYm5Rbk8xeHVYRzVqYjI1emRDQmZkak5CSUQwZ2JtVjNJRlJJVWtWRkxsWmxZM1J2Y2pNb0tUdGNibHh1Wlhod2IzSjBJR05zWVhOeklGWlNUVTV2WkdWRGIyNXpkSEpoYVc1MFNHVnNjR1Z5SUdWNGRHVnVaSE1nVkVoU1JVVXVSM0p2ZFhBZ2UxeHVJQ0J3ZFdKc2FXTWdjbVZoWkc5dWJIa2dZMjl1YzNSeVlXbHVkRG9nVmxKTlRtOWtaVU52Ym5OMGNtRnBiblE3WEc0Z0lIQnlhWFpoZEdVZ1gyeHBibVU2SUZSSVVrVkZMa3hwYm1VN1hHNGdJSEJ5YVhaaGRHVWdYMkYwZEhKUWIzTnBkR2x2YmpvZ1ZFaFNSVVV1UW5WbVptVnlRWFIwY21saWRYUmxPMXh1WEc0Z0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpaGpiMjV6ZEhKaGFXNTBPaUJXVWsxT2IyUmxRMjl1YzNSeVlXbHVkQ2tnZTF4dUlDQWdJSE4xY0dWeUtDazdYRzVjYmlBZ0lDQjBhR2x6TGw5aGRIUnlVRzl6YVhScGIyNGdQU0J1WlhjZ1ZFaFNSVVV1UW5WbVptVnlRWFIwY21saWRYUmxLRzVsZHlCR2JHOWhkRE15UVhKeVlYa29XekFzSURBc0lEQXNJREFzSURBc0lEQmRLU3dnTXlrN1hHNGdJQ0FnZEdocGN5NWZZWFIwY2xCdmMybDBhVzl1TG5ObGRGVnpZV2RsS0ZSSVVrVkZMa1I1Ym1GdGFXTkVjbUYzVlhOaFoyVXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ1oyVnZiV1YwY25rZ1BTQnVaWGNnVkVoU1JVVXVRblZtWm1WeVIyVnZiV1YwY25rb0tUdGNiaUFnSUNCblpXOXRaWFJ5ZVM1elpYUkJkSFJ5YVdKMWRHVW9KM0J2YzJsMGFXOXVKeXdnZEdocGN5NWZZWFIwY2xCdmMybDBhVzl1S1R0Y2JseHVJQ0FnSUdOdmJuTjBJRzFoZEdWeWFXRnNJRDBnYm1WM0lGUklVa1ZGTGt4cGJtVkNZWE5wWTAxaGRHVnlhV0ZzS0h0Y2JpQWdJQ0FnSUdOdmJHOXlPaUF3ZUdabU1EQm1aaXhjYmlBZ0lDQWdJR1JsY0hSb1ZHVnpkRG9nWm1Gc2MyVXNYRzRnSUNBZ0lDQmtaWEIwYUZkeWFYUmxPaUJtWVd4elpTeGNiaUFnSUNCOUtUdGNibHh1SUNBZ0lIUm9hWE11WDJ4cGJtVWdQU0J1WlhjZ1ZFaFNSVVV1VEdsdVpTaG5aVzl0WlhSeWVTd2diV0YwWlhKcFlXd3BPMXh1SUNBZ0lIUm9hWE11WVdSa0tIUm9hWE11WDJ4cGJtVXBPMXh1WEc0Z0lDQWdkR2hwY3k1amIyNXpkSEpoYVc1MElEMGdZMjl1YzNSeVlXbHVkRHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUIxY0dSaGRHVk5ZWFJ5YVhoWGIzSnNaQ2htYjNKalpUODZJR0p2YjJ4bFlXNHBPaUIyYjJsa0lIdGNiaUFnSUNCZmRqTkJMbk5sZEVaeWIyMU5ZWFJ5YVhoUWIzTnBkR2x2YmloMGFHbHpMbU52Ym5OMGNtRnBiblF1WkdWemRHbHVZWFJwYjI0dWJXRjBjbWw0VjI5eWJHUXBPMXh1SUNBZ0lIUm9hWE11WDJGMGRISlFiM05wZEdsdmJpNXpaWFJZV1Zvb01Dd2dYM1l6UVM1NExDQmZkak5CTG5rc0lGOTJNMEV1ZWlrN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1amIyNXpkSEpoYVc1MExuTnZkWEpqWlNrZ2UxeHVJQ0FnSUNBZ1gzWXpRUzV6WlhSR2NtOXRUV0YwY21sNFVHOXphWFJwYjI0b2RHaHBjeTVqYjI1emRISmhhVzUwTG5OdmRYSmpaUzV0WVhSeWFYaFhiM0pzWkNrN1hHNGdJQ0FnZlZ4dUlDQWdJSFJvYVhNdVgyRjBkSEpRYjNOcGRHbHZiaTV6WlhSWVdWb29NU3dnWDNZelFTNTRMQ0JmZGpOQkxua3NJRjkyTTBFdWVpazdYRzVjYmlBZ0lDQjBhR2x6TGw5aGRIUnlVRzl6YVhScGIyNHVibVZsWkhOVmNHUmhkR1VnUFNCMGNuVmxPMXh1WEc0Z0lDQWdjM1Z3WlhJdWRYQmtZWFJsVFdGMGNtbDRWMjl5YkdRb1ptOXlZMlVwTzF4dUlDQjlYRzU5WEc0aUxDSnBiWEJ2Y25RZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCa1pXTnZiWEJ2YzJWUWIzTnBkR2x2Ymp4VUlHVjRkR1Z1WkhNZ1ZFaFNSVVV1Vm1WamRHOXlNejRvYldGMGNtbDRPaUJVU0ZKRlJTNU5ZWFJ5YVhnMExDQjBZWEpuWlhRNklGUXBPaUJVSUh0Y2JpQWdjbVYwZFhKdUlIUmhjbWRsZEM1elpYUW9iV0YwY21sNExtVnNaVzFsYm5Seld6RXlYU3dnYldGMGNtbDRMbVZzWlcxbGJuUnpXekV6WFN3Z2JXRjBjbWw0TG1Wc1pXMWxiblJ6V3pFMFhTazdYRzU5WEc0aUxDSnBiWEJ2Y25RZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1Y2JtTnZibk4wSUY5Mk0wRWdQU0J1WlhjZ1ZFaFNSVVV1Vm1WamRHOXlNeWdwTzF4dVkyOXVjM1FnWDNZelFpQTlJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLQ2s3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCa1pXTnZiWEJ2YzJWU2IzUmhkR2x2Ymp4VUlHVjRkR1Z1WkhNZ1ZFaFNSVVV1VVhWaGRHVnlibWx2Ymo0b2JXRjBjbWw0T2lCVVNGSkZSUzVOWVhSeWFYZzBMQ0IwWVhKblpYUTZJRlFwT2lCVUlIdGNiaUFnYldGMGNtbDRMbVJsWTI5dGNHOXpaU2hmZGpOQkxDQjBZWEpuWlhRc0lGOTJNMElwTzF4dUlDQnlaWFIxY200Z2RHRnlaMlYwTzF4dWZWeHVJaXdpYVcxd2IzSjBJQ29nWVhNZ1ZFaFNSVVVnWm5KdmJTQW5kR2h5WldVbk8xeHVYRzR2S2lwY2JpQXFJRUVnWTI5dGNHRjBJR1oxYm1OMGFXOXVJR1p2Y2lCZ1VYVmhkR1Z5Ym1sdmJpNXBiblpsY25Rb0tXQWdMeUJnVVhWaGRHVnlibWx2Ymk1cGJuWmxjbk5sS0NsZ0xseHVJQ29nWUZGMVlYUmxjbTVwYjI0dWFXNTJaWEowS0NsZ0lHbHpJR2x1ZEhKdlpIVmpaV1FnYVc0Z2NqRXlNeUJoYm1RZ1lGRjFZWFJsY201cGIyNHVhVzUyWlhKelpTZ3BZQ0JsYldsMGN5QmhJSGRoY201cGJtY3VYRzRnS2lCWFpTQmhjbVVnWjI5cGJtY2dkRzhnZFhObElIUm9hWE1nWTI5dGNHRjBJR1p2Y2lCaElIZG9hV3hsTGx4dUlDb2dRSEJoY21GdElIUmhjbWRsZENCQklIUmhjbWRsZENCeGRXRjBaWEp1YVc5dVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ4ZFdGMFNXNTJaWEowUTI5dGNHRjBQRlFnWlhoMFpXNWtjeUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVQaWgwWVhKblpYUTZJRlFwT2lCVUlIdGNiaUFnYVdZZ0tDaDBZWEpuWlhRZ1lYTWdZVzU1S1M1cGJuWmxjblFwSUh0Y2JpQWdJQ0IwWVhKblpYUXVhVzUyWlhKMEtDazdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdLSFJoY21kbGRDQmhjeUJoYm5rcExtbHVkbVZ5YzJVb0tUdGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQjBZWEpuWlhRN1hHNTlYRzRpTENKcGJYQnZjblFnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVjYmk4cUtseHVJQ29nUVNCaVlYTmxJR05zWVhOeklHOW1JRlpTVFNCamIyNXpkSEpoYVc1MElHTnNZWE56WlhNdVhHNGdLaTljYm1WNGNHOXlkQ0JoWW5OMGNtRmpkQ0JqYkdGemN5QldVazFPYjJSbFEyOXVjM1J5WVdsdWRDQjdYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdiMkpxWldOMElHSmxhVzVuSUdOdmJuTjBjbUZwYm1Wa0lHSjVJSFJvWlNCN1FHeHBibXNnYzI5MWNtTmxmUzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJrWlhOMGFXNWhkR2x2YmpvZ1ZFaFNSVVV1VDJKcVpXTjBNMFE3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlNCdlltcGxZM1FnWTI5dWMzUnlZV2x1Y3lCMGFHVWdlMEJzYVc1cklHUmxjM1JwYm1GMGFXOXVmUzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6YjNWeVkyVTZJRlJJVWtWRkxrOWlhbVZqZERORU8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdkMlZwWjJoMElHOW1JSFJvWlNCamIyNXpkSEpoYVc1MExseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklIZGxhV2RvZERvZ2JuVnRZbVZ5TzF4dVhHNGdJSEIxWW14cFl5QmhZbk4wY21GamRDQm5aWFFnWkdWd1pXNWtaVzVqYVdWektDazZJRk5sZER4VVNGSkZSUzVQWW1wbFkzUXpSRDQ3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJ3WVhKaGJTQmtaWE4wYVc1aGRHbHZiaUJVYUdVZ1pHVnpkR2x1WVhScGIyNGdiMkpxWldOMFhHNGdJQ0FxSUVCd1lYSmhiU0J6YjNWeVkyVWdWR2hsSUhOdmRYSmpaU0J2WW1wbFkzUmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWhrWlhOMGFXNWhkR2x2YmpvZ1ZFaFNSVVV1VDJKcVpXTjBNMFFzSUhOdmRYSmpaVG9nVkVoU1JVVXVUMkpxWldOME0wUXBJSHRjYmlBZ0lDQjBhR2x6TG1SbGMzUnBibUYwYVc5dUlEMGdaR1Z6ZEdsdVlYUnBiMjQ3WEc0Z0lDQWdkR2hwY3k1emIzVnlZMlVnUFNCemIzVnlZMlU3WEc1Y2JpQWdJQ0IwYUdsekxuZGxhV2RvZENBOUlERXVNRHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCVFpYUWdhVzVwZEdsaGJDQnpkR0YwWlNCdlppQjBhR1VnWTI5dWMzUnlZV2x1ZEM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCaFluTjBjbUZqZENCelpYUkpibWwwVTNSaGRHVW9LVG9nZG05cFpEdGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZYQmtZWFJsSUdGdVpDQmhjSEJzZVNCMGFHVWdZMjl1YzNSeVlXbHVkQzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJoWW5OMGNtRmpkQ0IxY0dSaGRHVW9LVG9nZG05cFpEdGNibjFjYmlJc0ltbHRjRzl5ZENBcUlHRnpJRlJJVWtWRklHWnliMjBnSjNSb2NtVmxKenRjYm1sdGNHOXlkQ0I3SUdSbFkyOXRjRzl6WlZCdmMybDBhVzl1SUgwZ1puSnZiU0FuTGk5MWRHbHNjeTlrWldOdmJYQnZjMlZRYjNOcGRHbHZiaWM3WEc1cGJYQnZjblFnZXlCa1pXTnZiWEJ2YzJWU2IzUmhkR2x2YmlCOUlHWnliMjBnSnk0dmRYUnBiSE12WkdWamIyMXdiM05sVW05MFlYUnBiMjRuTzF4dWFXMXdiM0owSUhzZ2NYVmhkRWx1ZG1WeWRFTnZiWEJoZENCOUlHWnliMjBnSnk0dmRYUnBiSE12Y1hWaGRFbHVkbVZ5ZEVOdmJYQmhkQ2M3WEc1cGJYQnZjblFnZXlCV1VrMU9iMlJsUTI5dWMzUnlZV2x1ZENCOUlHWnliMjBnSnk0dlZsSk5UbTlrWlVOdmJuTjBjbUZwYm5Rbk8xeHVYRzVqYjI1emRDQmZkak5CSUQwZ2JtVjNJRlJJVWtWRkxsWmxZM1J2Y2pNb0tUdGNibU52Ym5OMElGOTJNMElnUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncE8xeHVZMjl1YzNRZ1gzWXpReUE5SUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0NrN1hHNWpiMjV6ZENCZmNYVmhkRUVnUFNCdVpYY2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJpZ3BPMXh1WTI5dWMzUWdYM0YxWVhSQ0lEMGdibVYzSUZSSVVrVkZMbEYxWVhSbGNtNXBiMjRvS1R0Y2JtTnZibk4wSUY5eGRXRjBReUE5SUc1bGR5QlVTRkpGUlM1UmRXRjBaWEp1YVc5dUtDazdYRzVjYmk4cUtseHVJQ29nUVNCamIyNXpkSEpoYVc1MElIUm9ZWFFnYldGclpYTWdhWFFnYkc5dmF5QmhkQ0JoSUhOdmRYSmpaU0J2WW1wbFkzUXVYRzRnS2x4dUlDb2dVMlZsT2lCb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdmRuSnRMV012ZG5KdExYTndaV05wWm1sallYUnBiMjR2ZEhKbFpTOXRZWE4wWlhJdmMzQmxZMmxtYVdOaGRHbHZiaTlXVWsxRFgyNXZaR1ZmWTI5dWMzUnlZV2x1ZEMweExqQmZZbVYwWVNOeWIyeHNMV052Ym5OMGNtRnBiblJjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUZaU1RVRnBiVU52Ym5OMGNtRnBiblFnWlhoMFpXNWtjeUJXVWsxT2IyUmxRMjl1YzNSeVlXbHVkQ0I3WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1VnWVdsdElHRjRhWE1nYjJZZ2RHaGxJR052Ym5OMGNtRnBiblF1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWjJWMElHRnBiVUY0YVhNb0tUb2dKMUJ2YzJsMGFYWmxXQ2NnZkNBblRtVm5ZWFJwZG1WWUp5QjhJQ2RRYjNOcGRHbDJaVmtuSUh3Z0owNWxaMkYwYVhabFdTY2dmQ0FuVUc5emFYUnBkbVZhSnlCOElDZE9aV2RoZEdsMlpWb25JSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmWVdsdFFYaHBjenRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdZV2x0SUdGNGFYTWdiMllnZEdobElHTnZibk4wY21GcGJuUXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjMlYwSUdGcGJVRjRhWE1vWVdsdFFYaHBjem9nSjFCdmMybDBhWFpsV0NjZ2ZDQW5UbVZuWVhScGRtVllKeUI4SUNkUWIzTnBkR2wyWlZrbklId2dKMDVsWjJGMGFYWmxXU2NnZkNBblVHOXphWFJwZG1WYUp5QjhJQ2RPWldkaGRHbDJaVm9uS1NCN1hHNGdJQ0FnZEdocGN5NWZZV2x0UVhocGN5QTlJR0ZwYlVGNGFYTTdYRzRnSUNBZ2RHaHBjeTVmZGpOQmFXMUJlR2x6TG5ObGRDaGNiaUFnSUNBZ0lHRnBiVUY0YVhNZ1BUMDlJQ2RRYjNOcGRHbDJaVmduSUQ4Z01TNHdJRG9nWVdsdFFYaHBjeUE5UFQwZ0owNWxaMkYwYVhabFdDY2dQeUF0TVM0d0lEb2dNQzR3TEZ4dUlDQWdJQ0FnWVdsdFFYaHBjeUE5UFQwZ0oxQnZjMmwwYVhabFdTY2dQeUF4TGpBZ09pQmhhVzFCZUdseklEMDlQU0FuVG1WbllYUnBkbVZaSnlBL0lDMHhMakFnT2lBd0xqQXNYRzRnSUNBZ0lDQmhhVzFCZUdseklEMDlQU0FuVUc5emFYUnBkbVZhSnlBL0lERXVNQ0E2SUdGcGJVRjRhWE1nUFQwOUlDZE9aV2RoZEdsMlpWb25JRDhnTFRFdU1DQTZJREF1TUN4Y2JpQWdJQ0FwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aU0JoYVcwZ1lYaHBjeUJ2WmlCMGFHVWdZMjl1YzNSeVlXbHVkQzVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWDJGcGJVRjRhWE02SUNkUWIzTnBkR2wyWlZnbklId2dKMDVsWjJGMGFYWmxXQ2NnZkNBblVHOXphWFJwZG1WWkp5QjhJQ2RPWldkaGRHbDJaVmtuSUh3Z0oxQnZjMmwwYVhabFdpY2dmQ0FuVG1WbllYUnBkbVZhSnp0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdobElIdEFiR2x1YXlCZllXbHRRWGhwYzMwZ1luVjBJR2x1SUdGdUlHRmpkSFZoYkNCV1pXTjBiM0l6SUdadmNtMHVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjkyTTBGcGJVRjRhWE02SUZSSVVrVkZMbFpsWTNSdmNqTTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aU0J5WlhOMElIRjFZWFJsY201cGIyNGdiMllnZEdobElIdEFiR2x1YXlCa1pYTjBhVzVoZEdsdmJuMHVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjlrYzNSU1pYTjBVWFZoZERvZ1ZFaFNSVVV1VVhWaGRHVnlibWx2Ymp0Y2JseHVJQ0J3ZFdKc2FXTWdaMlYwSUdSbGNHVnVaR1Z1WTJsbGN5Z3BPaUJUWlhROFZFaFNSVVV1VDJKcVpXTjBNMFE4VkVoU1JVVXVSWFpsYm5RK1BpQjdYRzRnSUNBZ1kyOXVjM1FnYzJWMElEMGdibVYzSUZObGREeFVTRkpGUlM1UFltcGxZM1F6UkQ0b1czUm9hWE11YzI5MWNtTmxYU2s3WEc1Y2JpQWdJQ0JwWmlBb2RHaHBjeTVrWlhOMGFXNWhkR2x2Ymk1d1lYSmxiblFwSUh0Y2JpQWdJQ0FnSUhObGRDNWhaR1FvZEdocGN5NWtaWE4wYVc1aGRHbHZiaTV3WVhKbGJuUXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCelpYUTdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvWkdWemRHbHVZWFJwYjI0NklGUklVa1ZGTGs5aWFtVmpkRE5FTENCemIzVnlZMlU2SUZSSVVrVkZMazlpYW1WamRETkVLU0I3WEc0Z0lDQWdjM1Z3WlhJb1pHVnpkR2x1WVhScGIyNHNJSE52ZFhKalpTazdYRzVjYmlBZ0lDQjBhR2x6TGw5aGFXMUJlR2x6SUQwZ0oxQnZjMmwwYVhabFdDYzdYRzRnSUNBZ2RHaHBjeTVmZGpOQmFXMUJlR2x6SUQwZ2JtVjNJRlJJVWtWRkxsWmxZM1J2Y2pNb01Td2dNQ3dnTUNrN1hHNWNiaUFnSUNCMGFHbHpMbDlrYzNSU1pYTjBVWFZoZENBOUlHNWxkeUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVLQ2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYzJWMFNXNXBkRk4wWVhSbEtDazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVYMlJ6ZEZKbGMzUlJkV0YwTG1OdmNIa29kR2hwY3k1a1pYTjBhVzVoZEdsdmJpNXhkV0YwWlhKdWFXOXVLVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUIxY0dSaGRHVW9LVG9nZG05cFpDQjdYRzRnSUNBZ0x5OGdkWEJrWVhSbElIZHZjbXhrSUcxaGRISnBlQ0J2WmlCa1pYTjBhVzVoZEdsdmJpQmhibVFnYzI5MWNtTmxJRzFoYm5WaGJHeDVYRzRnSUNBZ2RHaHBjeTVrWlhOMGFXNWhkR2x2Ymk1MWNHUmhkR1ZYYjNKc1pFMWhkSEpwZUNoMGNuVmxMQ0JtWVd4elpTazdYRzRnSUNBZ2RHaHBjeTV6YjNWeVkyVXVkWEJrWVhSbFYyOXliR1JOWVhSeWFYZ29kSEoxWlN3Z1ptRnNjMlVwTzF4dVhHNGdJQ0FnTHk4Z1oyVjBJSGR2Y214a0lIRjFZWFJsY201cGIyNGdiMllnZEdobElIQmhjbVZ1ZENCdlppQjBhR1VnWkdWemRHbHVZWFJwYjI1Y2JpQWdJQ0JqYjI1emRDQmtjM1JRWVhKbGJuUlhiM0pzWkZGMVlYUWdQU0JmY1hWaGRFRXVhV1JsYm5ScGRIa29LVHRjYmlBZ0lDQmpiMjV6ZENCcGJuWkVjM1JRWVhKbGJuUlhiM0pzWkZGMVlYUWdQU0JmY1hWaGRFSXVhV1JsYm5ScGRIa29LVHRjYmlBZ0lDQnBaaUFvZEdocGN5NWtaWE4wYVc1aGRHbHZiaTV3WVhKbGJuUXBJSHRjYmlBZ0lDQWdJR1JsWTI5dGNHOXpaVkp2ZEdGMGFXOXVLSFJvYVhNdVpHVnpkR2x1WVhScGIyNHVjR0Z5Wlc1MExtMWhkSEpwZUZkdmNteGtMQ0JrYzNSUVlYSmxiblJYYjNKc1pGRjFZWFFwTzF4dUlDQWdJQ0FnY1hWaGRFbHVkbVZ5ZEVOdmJYQmhkQ2hwYm5aRWMzUlFZWEpsYm5SWGIzSnNaRkYxWVhRdVkyOXdlU2hrYzNSUVlYSmxiblJYYjNKc1pGRjFZWFFwS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCallXeGpkV3hoZEdVZ1puSnZiUzEwYnlCMlpXTjBiM0p6SUdsdUlIZHZjbXhrSUdOdmIzSmtYRzRnSUNBZ1kyOXVjM1FnWVRBZ1BTQmZkak5CTG1OdmNIa29kR2hwY3k1ZmRqTkJhVzFCZUdsektTNWhjSEJzZVZGMVlYUmxjbTVwYjI0b2RHaHBjeTVmWkhOMFVtVnpkRkYxWVhRcExtRndjR3g1VVhWaGRHVnlibWx2Ymloa2MzUlFZWEpsYm5SWGIzSnNaRkYxWVhRcE8xeHVJQ0FnSUdOdmJuTjBJR0V4SUQwZ1pHVmpiMjF3YjNObFVHOXphWFJwYjI0b2RHaHBjeTV6YjNWeVkyVXViV0YwY21sNFYyOXliR1FzSUY5Mk0wSXBYRzRnSUNBZ0lDQXVjM1ZpS0dSbFkyOXRjRzl6WlZCdmMybDBhVzl1S0hSb2FYTXVaR1Z6ZEdsdVlYUnBiMjR1YldGMGNtbDRWMjl5YkdRc0lGOTJNME1wS1Z4dUlDQWdJQ0FnTG01dmNtMWhiR2w2WlNncE8xeHVYRzRnSUNBZ0x5OGdZM0psWVhSbElHRWdabkp2YlMxMGJ5QnhkV0YwWlhKdWFXOXVMQ0JqYjI1MlpYSjBJSFJ2SUdSbGMzUnBibUYwYVc5dUlHeHZZMkZzSUdOdmIzSmtMQ0IwYUdWdUlHMTFiSFJwY0d4NUlISmxjM1FnY1hWaGRHVnlibWx2Ymx4dUlDQWdJR052Ym5OMElIUmhjbWRsZEZGMVlYUWdQU0JmY1hWaGRFTmNiaUFnSUNBZ0lDNXpaWFJHY205dFZXNXBkRlpsWTNSdmNuTW9ZVEFzSUdFeEtWeHVJQ0FnSUNBZ0xuQnlaVzExYkhScGNHeDVLR2x1ZGtSemRGQmhjbVZ1ZEZkdmNteGtVWFZoZENsY2JpQWdJQ0FnSUM1dGRXeDBhWEJzZVNoa2MzUlFZWEpsYm5SWGIzSnNaRkYxWVhRcFhHNGdJQ0FnSUNBdWJYVnNkR2x3Ykhrb2RHaHBjeTVmWkhOMFVtVnpkRkYxWVhRcE8xeHVYRzRnSUNBZ0x5OGdZbXhsYm1RZ2QybDBhQ0IwYUdVZ2NtVnpkQ0J4ZFdGMFpYSnVhVzl1SUhWemFXNW5JSGRsYVdkb2RGeHVJQ0FnSUhSb2FYTXVaR1Z6ZEdsdVlYUnBiMjR1Y1hWaGRHVnlibWx2Ymk1amIzQjVLSFJvYVhNdVgyUnpkRkpsYzNSUmRXRjBLUzV6YkdWeWNDaDBZWEpuWlhSUmRXRjBMQ0IwYUdsekxuZGxhV2RvZENrN1hHNGdJSDFjYm4xY2JpSXNJaThxS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpcGNjbHh1UTI5d2VYSnBaMmgwSUNoaktTQk5hV055YjNOdlpuUWdRMjl5Y0c5eVlYUnBiMjR1WEhKY2JseHlYRzVRWlhKdGFYTnphVzl1SUhSdklIVnpaU3dnWTI5d2VTd2diVzlrYVdaNUxDQmhibVF2YjNJZ1pHbHpkSEpwWW5WMFpTQjBhR2x6SUhOdlpuUjNZWEpsSUdadmNpQmhibmxjY2x4dWNIVnljRzl6WlNCM2FYUm9JRzl5SUhkcGRHaHZkWFFnWm1WbElHbHpJR2hsY21WaWVTQm5jbUZ1ZEdWa0xseHlYRzVjY2x4dVZFaEZJRk5QUmxSWFFWSkZJRWxUSUZCU1QxWkpSRVZFSUZ3aVFWTWdTVk5jSWlCQlRrUWdWRWhGSUVGVlZFaFBVaUJFU1ZORFRFRkpUVk1nUVV4TUlGZEJVbEpCVGxSSlJWTWdWMGxVU0Z4eVhHNVNSVWRCVWtRZ1ZFOGdWRWhKVXlCVFQwWlVWMEZTUlNCSlRrTk1WVVJKVGtjZ1FVeE1JRWxOVUV4SlJVUWdWMEZTVWtGT1ZFbEZVeUJQUmlCTlJWSkRTRUZPVkVGQ1NVeEpWRmxjY2x4dVFVNUVJRVpKVkU1RlUxTXVJRWxPSUU1UElFVldSVTVVSUZOSVFVeE1JRlJJUlNCQlZWUklUMUlnUWtVZ1RFbEJRa3hGSUVaUFVpQkJUbGtnVTFCRlEwbEJUQ3dnUkVsU1JVTlVMRnh5WEc1SlRrUkpVa1ZEVkN3Z1QxSWdRMDlPVTBWUlZVVk9WRWxCVENCRVFVMUJSMFZUSUU5U0lFRk9XU0JFUVUxQlIwVlRJRmRJUVZSVFQwVldSVklnVWtWVFZVeFVTVTVISUVaU1QwMWNjbHh1VEU5VFV5QlBSaUJWVTBVc0lFUkJWRUVnVDFJZ1VGSlBSa2xVVXl3Z1YwaEZWRWhGVWlCSlRpQkJUaUJCUTFSSlQwNGdUMFlnUTA5T1ZGSkJRMVFzSUU1RlIweEpSMFZPUTBVZ1QxSmNjbHh1VDFSSVJWSWdWRTlTVkVsUFZWTWdRVU5VU1U5T0xDQkJVa2xUU1U1SElFOVZWQ0JQUmlCUFVpQkpUaUJEVDA1T1JVTlVTVTlPSUZkSlZFZ2dWRWhGSUZWVFJTQlBVbHh5WEc1UVJWSkdUMUpOUVU1RFJTQlBSaUJVU0VsVElGTlBSbFJYUVZKRkxseHlYRzRxS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpQXFMMXh5WEc0dktpQm5iRzlpWVd3Z1VtVm1iR1ZqZEN3Z1VISnZiV2x6WlNBcUwxeHlYRzVjY2x4dWRtRnlJR1Y0ZEdWdVpGTjBZWFJwWTNNZ1BTQm1kVzVqZEdsdmJpaGtMQ0JpS1NCN1hISmNiaUFnSUNCbGVIUmxibVJUZEdGMGFXTnpJRDBnVDJKcVpXTjBMbk5sZEZCeWIzUnZkSGx3WlU5bUlIeDhYSEpjYmlBZ0lDQWdJQ0FnS0hzZ1gxOXdjbTkwYjE5Zk9pQmJYU0I5SUdsdWMzUmhibU5sYjJZZ1FYSnlZWGtnSmlZZ1puVnVZM1JwYjI0Z0tHUXNJR0lwSUhzZ1pDNWZYM0J5YjNSdlgxOGdQU0JpT3lCOUtTQjhmRnh5WEc0Z0lDQWdJQ0FnSUdaMWJtTjBhVzl1SUNoa0xDQmlLU0I3SUdadmNpQW9kbUZ5SUhBZ2FXNGdZaWtnYVdZZ0tFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVdWFHRnpUM2R1VUhKdmNHVnlkSGt1WTJGc2JDaGlMQ0J3S1NrZ1pGdHdYU0E5SUdKYmNGMDdJSDA3WEhKY2JpQWdJQ0J5WlhSMWNtNGdaWGgwWlc1a1UzUmhkR2xqY3loa0xDQmlLVHRjY2x4dWZUdGNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyVjRkR1Z1WkhNb1pDd2dZaWtnZTF4eVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCaUlDRTlQU0JjSW1aMWJtTjBhVzl1WENJZ0ppWWdZaUFoUFQwZ2JuVnNiQ2xjY2x4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lRMnhoYzNNZ1pYaDBaVzVrY3lCMllXeDFaU0JjSWlBcklGTjBjbWx1WnloaUtTQXJJRndpSUdseklHNXZkQ0JoSUdOdmJuTjBjblZqZEc5eUlHOXlJRzUxYkd4Y0lpazdYSEpjYmlBZ0lDQmxlSFJsYm1SVGRHRjBhV056S0dRc0lHSXBPMXh5WEc0Z0lDQWdablZ1WTNScGIyNGdYMThvS1NCN0lIUm9hWE11WTI5dWMzUnlkV04wYjNJZ1BTQmtPeUI5WEhKY2JpQWdJQ0JrTG5CeWIzUnZkSGx3WlNBOUlHSWdQVDA5SUc1MWJHd2dQeUJQWW1wbFkzUXVZM0psWVhSbEtHSXBJRG9nS0Y5ZkxuQnliM1J2ZEhsd1pTQTlJR0l1Y0hKdmRHOTBlWEJsTENCdVpYY2dYMThvS1NrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQjJZWElnWDE5aGMzTnBaMjRnUFNCbWRXNWpkR2x2YmlncElIdGNjbHh1SUNBZ0lGOWZZWE56YVdkdUlEMGdUMkpxWldOMExtRnpjMmxuYmlCOGZDQm1kVzVqZEdsdmJpQmZYMkZ6YzJsbmJpaDBLU0I3WEhKY2JpQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2N5d2dhU0E5SURFc0lHNGdQU0JoY21kMWJXVnVkSE11YkdWdVozUm9PeUJwSUR3Z2Jqc2dhU3NyS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhNZ1BTQmhjbWQxYldWdWRITmJhVjA3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJSEFnYVc0Z2N5a2dhV1lnS0U5aWFtVmpkQzV3Y205MGIzUjVjR1V1YUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNoekxDQndLU2tnZEZ0d1hTQTlJSE5iY0YwN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwTzF4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJRjlmWVhOemFXZHVMbUZ3Y0d4NUtIUm9hWE1zSUdGeVozVnRaVzUwY3lrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM0psYzNRb2N5d2daU2tnZTF4eVhHNGdJQ0FnZG1GeUlIUWdQU0I3ZlR0Y2NseHVJQ0FnSUdadmNpQW9kbUZ5SUhBZ2FXNGdjeWtnYVdZZ0tFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVdWFHRnpUM2R1VUhKdmNHVnlkSGt1WTJGc2JDaHpMQ0J3S1NBbUppQmxMbWx1WkdWNFQyWW9jQ2tnUENBd0tWeHlYRzRnSUNBZ0lDQWdJSFJiY0YwZ1BTQnpXM0JkTzF4eVhHNGdJQ0FnYVdZZ0tITWdJVDBnYm5Wc2JDQW1KaUIwZVhCbGIyWWdUMkpxWldOMExtZGxkRTkzYmxCeWIzQmxjblI1VTNsdFltOXNjeUE5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLVnh5WEc0Z0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdMQ0J3SUQwZ1QySnFaV04wTG1kbGRFOTNibEJ5YjNCbGNuUjVVM2x0WW05c2N5aHpLVHNnYVNBOElIQXViR1Z1WjNSb095QnBLeXNwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHVXVhVzVrWlhoUFppaHdXMmxkS1NBOElEQWdKaVlnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzV3Y205d1pYSjBlVWx6Ulc1MWJXVnlZV0pzWlM1allXeHNLSE1zSUhCYmFWMHBLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEZ0d1cybGRYU0E5SUhOYmNGdHBYVjA3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2NtVjBkWEp1SUhRN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMlJsWTI5eVlYUmxLR1JsWTI5eVlYUnZjbk1zSUhSaGNtZGxkQ3dnYTJWNUxDQmtaWE5qS1NCN1hISmNiaUFnSUNCMllYSWdZeUE5SUdGeVozVnRaVzUwY3k1c1pXNW5kR2dzSUhJZ1BTQmpJRHdnTXlBL0lIUmhjbWRsZENBNklHUmxjMk1nUFQwOUlHNTFiR3dnUHlCa1pYTmpJRDBnVDJKcVpXTjBMbWRsZEU5M2JsQnliM0JsY25SNVJHVnpZM0pwY0hSdmNpaDBZWEpuWlhRc0lHdGxlU2tnT2lCa1pYTmpMQ0JrTzF4eVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCU1pXWnNaV04wSUQwOVBTQmNJbTlpYW1WamRGd2lJQ1ltSUhSNWNHVnZaaUJTWldac1pXTjBMbVJsWTI5eVlYUmxJRDA5UFNCY0ltWjFibU4wYVc5dVhDSXBJSElnUFNCU1pXWnNaV04wTG1SbFkyOXlZWFJsS0dSbFkyOXlZWFJ2Y25Nc0lIUmhjbWRsZEN3Z2EyVjVMQ0JrWlhOaktUdGNjbHh1SUNBZ0lHVnNjMlVnWm05eUlDaDJZWElnYVNBOUlHUmxZMjl5WVhSdmNuTXViR1Z1WjNSb0lDMGdNVHNnYVNBK1BTQXdPeUJwTFMwcElHbG1JQ2hrSUQwZ1pHVmpiM0poZEc5eWMxdHBYU2tnY2lBOUlDaGpJRHdnTXlBL0lHUW9jaWtnT2lCaklENGdNeUEvSUdRb2RHRnlaMlYwTENCclpYa3NJSElwSURvZ1pDaDBZWEpuWlhRc0lHdGxlU2twSUh4OElISTdYSEpjYmlBZ0lDQnlaWFIxY200Z1l5QStJRE1nSmlZZ2NpQW1KaUJQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb2RHRnlaMlYwTENCclpYa3NJSElwTENCeU8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl3WVhKaGJTaHdZWEpoYlVsdVpHVjRMQ0JrWldOdmNtRjBiM0lwSUh0Y2NseHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaUFvZEdGeVoyVjBMQ0JyWlhrcElIc2daR1ZqYjNKaGRHOXlLSFJoY21kbGRDd2dhMlY1TENCd1lYSmhiVWx1WkdWNEtUc2dmVnh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5bGMwUmxZMjl5WVhSbEtHTjBiM0lzSUdSbGMyTnlhWEIwYjNKSmJpd2daR1ZqYjNKaGRHOXljeXdnWTI5dWRHVjRkRWx1TENCcGJtbDBhV0ZzYVhwbGNuTXNJR1Y0ZEhKaFNXNXBkR2xoYkdsNlpYSnpLU0I3WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJoWTJObGNIUW9aaWtnZXlCcFppQW9aaUFoUFQwZ2RtOXBaQ0F3SUNZbUlIUjVjR1Z2WmlCbUlDRTlQU0JjSW1aMWJtTjBhVzl1WENJcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pHZFc1amRHbHZiaUJsZUhCbFkzUmxaRndpS1RzZ2NtVjBkWEp1SUdZN0lIMWNjbHh1SUNBZ0lIWmhjaUJyYVc1a0lEMGdZMjl1ZEdWNGRFbHVMbXRwYm1Rc0lHdGxlU0E5SUd0cGJtUWdQVDA5SUZ3aVoyVjBkR1Z5WENJZ1B5QmNJbWRsZEZ3aUlEb2dhMmx1WkNBOVBUMGdYQ0p6WlhSMFpYSmNJaUEvSUZ3aWMyVjBYQ0lnT2lCY0luWmhiSFZsWENJN1hISmNiaUFnSUNCMllYSWdkR0Z5WjJWMElEMGdJV1JsYzJOeWFYQjBiM0pKYmlBbUppQmpkRzl5SUQ4Z1kyOXVkR1Y0ZEVsdVcxd2ljM1JoZEdsalhDSmRJRDhnWTNSdmNpQTZJR04wYjNJdWNISnZkRzkwZVhCbElEb2diblZzYkR0Y2NseHVJQ0FnSUhaaGNpQmtaWE5qY21sd2RHOXlJRDBnWkdWelkzSnBjSFJ2Y2tsdUlIeDhJQ2gwWVhKblpYUWdQeUJQWW1wbFkzUXVaMlYwVDNkdVVISnZjR1Z5ZEhsRVpYTmpjbWx3ZEc5eUtIUmhjbWRsZEN3Z1kyOXVkR1Y0ZEVsdUxtNWhiV1VwSURvZ2UzMHBPMXh5WEc0Z0lDQWdkbUZ5SUY4c0lHUnZibVVnUFNCbVlXeHpaVHRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNCa1pXTnZjbUYwYjNKekxteGxibWQwYUNBdElERTdJR2tnUGowZ01Ec2dhUzB0S1NCN1hISmNiaUFnSUNBZ0lDQWdkbUZ5SUdOdmJuUmxlSFFnUFNCN2ZUdGNjbHh1SUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJ3SUdsdUlHTnZiblJsZUhSSmJpa2dZMjl1ZEdWNGRGdHdYU0E5SUhBZ1BUMDlJRndpWVdOalpYTnpYQ0lnUHlCN2ZTQTZJR052Ym5SbGVIUkpibHR3WFR0Y2NseHVJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQndJR2x1SUdOdmJuUmxlSFJKYmk1aFkyTmxjM01wSUdOdmJuUmxlSFF1WVdOalpYTnpXM0JkSUQwZ1kyOXVkR1Y0ZEVsdUxtRmpZMlZ6YzF0d1hUdGNjbHh1SUNBZ0lDQWdJQ0JqYjI1MFpYaDBMbUZrWkVsdWFYUnBZV3hwZW1WeUlEMGdablZ1WTNScGIyNGdLR1lwSUhzZ2FXWWdLR1J2Ym1VcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pEWVc1dWIzUWdZV1JrSUdsdWFYUnBZV3hwZW1WeWN5QmhablJsY2lCa1pXTnZjbUYwYVc5dUlHaGhjeUJqYjIxd2JHVjBaV1JjSWlrN0lHVjRkSEpoU1c1cGRHbGhiR2w2WlhKekxuQjFjMmdvWVdOalpYQjBLR1lnZkh3Z2JuVnNiQ2twT3lCOU8xeHlYRzRnSUNBZ0lDQWdJSFpoY2lCeVpYTjFiSFFnUFNBb01Dd2daR1ZqYjNKaGRHOXljMXRwWFNrb2EybHVaQ0E5UFQwZ1hDSmhZMk5sYzNOdmNsd2lJRDhnZXlCblpYUTZJR1JsYzJOeWFYQjBiM0l1WjJWMExDQnpaWFE2SUdSbGMyTnlhWEIwYjNJdWMyVjBJSDBnT2lCa1pYTmpjbWx3ZEc5eVcydGxlVjBzSUdOdmJuUmxlSFFwTzF4eVhHNGdJQ0FnSUNBZ0lHbG1JQ2hyYVc1a0lEMDlQU0JjSW1GalkyVnpjMjl5WENJcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSEpsYzNWc2RDQTlQVDBnZG05cFpDQXdLU0JqYjI1MGFXNTFaVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hKbGMzVnNkQ0E5UFQwZ2JuVnNiQ0I4ZkNCMGVYQmxiMllnY21WemRXeDBJQ0U5UFNCY0ltOWlhbVZqZEZ3aUtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpVDJKcVpXTjBJR1Y0Y0dWamRHVmtYQ0lwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1h5QTlJR0ZqWTJWd2RDaHlaWE4xYkhRdVoyVjBLU2tnWkdWelkzSnBjSFJ2Y2k1blpYUWdQU0JmTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1h5QTlJR0ZqWTJWd2RDaHlaWE4xYkhRdWMyVjBLU2tnWkdWelkzSnBjSFJ2Y2k1elpYUWdQU0JmTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1h5QTlJR0ZqWTJWd2RDaHlaWE4xYkhRdWFXNXBkQ2twSUdsdWFYUnBZV3hwZW1WeWN5NXdkWE5vS0Y4cE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoZklEMGdZV05qWlhCMEtISmxjM1ZzZENrcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR3RwYm1RZ1BUMDlJRndpWm1sbGJHUmNJaWtnYVc1cGRHbGhiR2w2WlhKekxuQjFjMmdvWHlrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdWc2MyVWdaR1Z6WTNKcGNIUnZjbHRyWlhsZElEMGdYenRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnSUNCcFppQW9kR0Z5WjJWMEtTQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvZEdGeVoyVjBMQ0JqYjI1MFpYaDBTVzR1Ym1GdFpTd2daR1Z6WTNKcGNIUnZjaWs3WEhKY2JpQWdJQ0JrYjI1bElEMGdkSEoxWlR0Y2NseHVmVHRjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM0oxYmtsdWFYUnBZV3hwZW1WeWN5aDBhR2x6UVhKbkxDQnBibWwwYVdGc2FYcGxjbk1zSUhaaGJIVmxLU0I3WEhKY2JpQWdJQ0IyWVhJZ2RYTmxWbUZzZFdVZ1BTQmhjbWQxYldWdWRITXViR1Z1WjNSb0lENGdNanRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnYVc1cGRHbGhiR2w2WlhKekxteGxibWQwYURzZ2FTc3JLU0I3WEhKY2JpQWdJQ0FnSUNBZ2RtRnNkV1VnUFNCMWMyVldZV3gxWlNBL0lHbHVhWFJwWVd4cGVtVnljMXRwWFM1allXeHNLSFJvYVhOQmNtY3NJSFpoYkhWbEtTQTZJR2x1YVhScFlXeHBlbVZ5YzF0cFhTNWpZV3hzS0hSb2FYTkJjbWNwTzF4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJSFZ6WlZaaGJIVmxJRDhnZG1Gc2RXVWdPaUIyYjJsa0lEQTdYSEpjYm4wN1hISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5d2NtOXdTMlY1S0hncElIdGNjbHh1SUNBZ0lISmxkSFZ5YmlCMGVYQmxiMllnZUNBOVBUMGdYQ0p6ZVcxaWIyeGNJaUEvSUhnZ09pQmNJbHdpTG1OdmJtTmhkQ2g0S1R0Y2NseHVmVHRjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM05sZEVaMWJtTjBhVzl1VG1GdFpTaG1MQ0J1WVcxbExDQndjbVZtYVhncElIdGNjbHh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdibUZ0WlNBOVBUMGdYQ0p6ZVcxaWIyeGNJaWtnYm1GdFpTQTlJRzVoYldVdVpHVnpZM0pwY0hScGIyNGdQeUJjSWx0Y0lpNWpiMjVqWVhRb2JtRnRaUzVrWlhOamNtbHdkR2x2Yml3Z1hDSmRYQ0lwSURvZ1hDSmNJanRjY2x4dUlDQWdJSEpsZEhWeWJpQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvWml3Z1hDSnVZVzFsWENJc0lIc2dZMjl1Wm1sbmRYSmhZbXhsT2lCMGNuVmxMQ0IyWVd4MVpUb2djSEpsWm1sNElEOGdYQ0pjSWk1amIyNWpZWFFvY0hKbFptbDRMQ0JjSWlCY0lpd2dibUZ0WlNrZ09pQnVZVzFsSUgwcE8xeHlYRzU5TzF4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmYldWMFlXUmhkR0VvYldWMFlXUmhkR0ZMWlhrc0lHMWxkR0ZrWVhSaFZtRnNkV1VwSUh0Y2NseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ1VtVm1iR1ZqZENBOVBUMGdYQ0p2WW1wbFkzUmNJaUFtSmlCMGVYQmxiMllnVW1WbWJHVmpkQzV0WlhSaFpHRjBZU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0J5WlhSMWNtNGdVbVZtYkdWamRDNXRaWFJoWkdGMFlTaHRaWFJoWkdGMFlVdGxlU3dnYldWMFlXUmhkR0ZXWVd4MVpTazdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJGM1lXbDBaWElvZEdocGMwRnlaeXdnWDJGeVozVnRaVzUwY3l3Z1VDd2daMlZ1WlhKaGRHOXlLU0I3WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJoWkc5d2RDaDJZV3gxWlNrZ2V5QnlaWFIxY200Z2RtRnNkV1VnYVc1emRHRnVZMlZ2WmlCUUlEOGdkbUZzZFdVZ09pQnVaWGNnVUNobWRXNWpkR2x2YmlBb2NtVnpiMngyWlNrZ2V5QnlaWE52YkhabEtIWmhiSFZsS1RzZ2ZTazdJSDFjY2x4dUlDQWdJSEpsZEhWeWJpQnVaWGNnS0ZBZ2ZId2dLRkFnUFNCUWNtOXRhWE5sS1Nrb1puVnVZM1JwYjI0Z0tISmxjMjlzZG1Vc0lISmxhbVZqZENrZ2UxeHlYRzRnSUNBZ0lDQWdJR1oxYm1OMGFXOXVJR1oxYkdacGJHeGxaQ2gyWVd4MVpTa2dleUIwY25rZ2V5QnpkR1Z3S0dkbGJtVnlZWFJ2Y2k1dVpYaDBLSFpoYkhWbEtTazdJSDBnWTJGMFkyZ2dLR1VwSUhzZ2NtVnFaV04wS0dVcE95QjlJSDFjY2x4dUlDQWdJQ0FnSUNCbWRXNWpkR2x2YmlCeVpXcGxZM1JsWkNoMllXeDFaU2tnZXlCMGNua2dleUJ6ZEdWd0tHZGxibVZ5WVhSdmNsdGNJblJvY205M1hDSmRLSFpoYkhWbEtTazdJSDBnWTJGMFkyZ2dLR1VwSUhzZ2NtVnFaV04wS0dVcE95QjlJSDFjY2x4dUlDQWdJQ0FnSUNCbWRXNWpkR2x2YmlCemRHVndLSEpsYzNWc2RDa2dleUJ5WlhOMWJIUXVaRzl1WlNBL0lISmxjMjlzZG1Vb2NtVnpkV3gwTG5aaGJIVmxLU0E2SUdGa2IzQjBLSEpsYzNWc2RDNTJZV3gxWlNrdWRHaGxiaWhtZFd4bWFXeHNaV1FzSUhKbGFtVmpkR1ZrS1RzZ2ZWeHlYRzRnSUNBZ0lDQWdJSE4wWlhBb0tHZGxibVZ5WVhSdmNpQTlJR2RsYm1WeVlYUnZjaTVoY0hCc2VTaDBhR2x6UVhKbkxDQmZZWEpuZFcxbGJuUnpJSHg4SUZ0ZEtTa3VibVY0ZENncEtUdGNjbHh1SUNBZ0lIMHBPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5blpXNWxjbUYwYjNJb2RHaHBjMEZ5Wnl3Z1ltOWtlU2tnZTF4eVhHNGdJQ0FnZG1GeUlGOGdQU0I3SUd4aFltVnNPaUF3TENCelpXNTBPaUJtZFc1amRHbHZiaWdwSUhzZ2FXWWdLSFJiTUYwZ0ppQXhLU0IwYUhKdmR5QjBXekZkT3lCeVpYUjFjbTRnZEZzeFhUc2dmU3dnZEhKNWN6b2dXMTBzSUc5d2N6b2dXMTBnZlN3Z1ppd2dlU3dnZEN3Z1p6dGNjbHh1SUNBZ0lISmxkSFZ5YmlCbklEMGdleUJ1WlhoME9pQjJaWEppS0RBcExDQmNJblJvY205M1hDSTZJSFpsY21Jb01Ta3NJRndpY21WMGRYSnVYQ0k2SUhabGNtSW9NaWtnZlN3Z2RIbHdaVzltSUZONWJXSnZiQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJQ1ltSUNoblcxTjViV0p2YkM1cGRHVnlZWFJ2Y2wwZ1BTQm1kVzVqZEdsdmJpZ3BJSHNnY21WMGRYSnVJSFJvYVhNN0lIMHBMQ0JuTzF4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnZG1WeVlpaHVLU0I3SUhKbGRIVnliaUJtZFc1amRHbHZiaUFvZGlrZ2V5QnlaWFIxY200Z2MzUmxjQ2hiYml3Z2RsMHBPeUI5T3lCOVhISmNiaUFnSUNCbWRXNWpkR2x2YmlCemRHVndLRzl3S1NCN1hISmNiaUFnSUNBZ0lDQWdhV1lnS0dZcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pIWlc1bGNtRjBiM0lnYVhNZ1lXeHlaV0ZrZVNCbGVHVmpkWFJwYm1jdVhDSXBPMXh5WEc0Z0lDQWdJQ0FnSUhkb2FXeGxJQ2huSUNZbUlDaG5JRDBnTUN3Z2IzQmJNRjBnSmlZZ0tGOGdQU0F3S1Nrc0lGOHBJSFJ5ZVNCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaG1JRDBnTVN3Z2VTQW1KaUFvZENBOUlHOXdXekJkSUNZZ01pQS9JSGxiWENKeVpYUjFjbTVjSWwwZ09pQnZjRnN3WFNBL0lIbGJYQ0owYUhKdmQxd2lYU0I4ZkNBb0tIUWdQU0I1VzF3aWNtVjBkWEp1WENKZEtTQW1KaUIwTG1OaGJHd29lU2tzSURBcElEb2dlUzV1WlhoMEtTQW1KaUFoS0hRZ1BTQjBMbU5oYkd3b2VTd2diM0JiTVYwcEtTNWtiMjVsS1NCeVpYUjFjbTRnZER0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIa2dQU0F3TENCMEtTQnZjQ0E5SUZ0dmNGc3dYU0FtSURJc0lIUXVkbUZzZFdWZE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCemQybDBZMmdnS0c5d1d6QmRLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJREE2SUdOaGMyVWdNVG9nZENBOUlHOXdPeUJpY21WaGF6dGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ05Eb2dYeTVzWVdKbGJDc3JPeUJ5WlhSMWNtNGdleUIyWVd4MVpUb2diM0JiTVYwc0lHUnZibVU2SUdaaGJITmxJSDA3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRFU2SUY4dWJHRmlaV3dyS3pzZ2VTQTlJRzl3V3pGZE95QnZjQ0E5SUZzd1hUc2dZMjl1ZEdsdWRXVTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElEYzZJRzl3SUQwZ1h5NXZjSE11Y0c5d0tDazdJRjh1ZEhKNWN5NXdiM0FvS1RzZ1kyOXVkR2x1ZFdVN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtaV1poZFd4ME9seHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hLSFFnUFNCZkxuUnllWE1zSUhRZ1BTQjBMbXhsYm1kMGFDQStJREFnSmlZZ2RGdDBMbXhsYm1kMGFDQXRJREZkS1NBbUppQW9iM0JiTUYwZ1BUMDlJRFlnZkh3Z2IzQmJNRjBnUFQwOUlESXBLU0I3SUY4Z1BTQXdPeUJqYjI1MGFXNTFaVHNnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodmNGc3dYU0E5UFQwZ015QW1KaUFvSVhRZ2ZId2dLRzl3V3pGZElENGdkRnN3WFNBbUppQnZjRnN4WFNBOElIUmJNMTBwS1NrZ2V5QmZMbXhoWW1Wc0lEMGdiM0JiTVYwN0lHSnlaV0ZyT3lCOVhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHOXdXekJkSUQwOVBTQTJJQ1ltSUY4dWJHRmlaV3dnUENCMFd6RmRLU0I3SUY4dWJHRmlaV3dnUFNCMFd6RmRPeUIwSUQwZ2IzQTdJR0p5WldGck95QjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFFnSmlZZ1h5NXNZV0psYkNBOElIUmJNbDBwSUhzZ1h5NXNZV0psYkNBOUlIUmJNbDA3SUY4dWIzQnpMbkIxYzJnb2IzQXBPeUJpY21WaGF6c2dmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwV3pKZEtTQmZMbTl3Y3k1d2IzQW9LVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmZMblJ5ZVhNdWNHOXdLQ2s3SUdOdmJuUnBiblZsTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJRzl3SUQwZ1ltOWtlUzVqWVd4c0tIUm9hWE5CY21jc0lGOHBPMXh5WEc0Z0lDQWdJQ0FnSUgwZ1kyRjBZMmdnS0dVcElIc2diM0FnUFNCYk5pd2daVjA3SUhrZ1BTQXdPeUI5SUdacGJtRnNiSGtnZXlCbUlEMGdkQ0E5SURBN0lIMWNjbHh1SUNBZ0lDQWdJQ0JwWmlBb2IzQmJNRjBnSmlBMUtTQjBhSEp2ZHlCdmNGc3hYVHNnY21WMGRYSnVJSHNnZG1Gc2RXVTZJRzl3V3pCZElEOGdiM0JiTVYwZ09pQjJiMmxrSURBc0lHUnZibVU2SUhSeWRXVWdmVHRjY2x4dUlDQWdJSDFjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUhaaGNpQmZYMk55WldGMFpVSnBibVJwYm1jZ1BTQlBZbXBsWTNRdVkzSmxZWFJsSUQ4Z0tHWjFibU4wYVc5dUtHOHNJRzBzSUdzc0lHc3lLU0I3WEhKY2JpQWdJQ0JwWmlBb2F6SWdQVDA5SUhWdVpHVm1hVzVsWkNrZ2F6SWdQU0JyTzF4eVhHNGdJQ0FnZG1GeUlHUmxjMk1nUFNCUFltcGxZM1F1WjJWMFQzZHVVSEp2Y0dWeWRIbEVaWE5qY21sd2RHOXlLRzBzSUdzcE8xeHlYRzRnSUNBZ2FXWWdLQ0ZrWlhOaklIeDhJQ2hjSW1kbGRGd2lJR2x1SUdSbGMyTWdQeUFoYlM1ZlgyVnpUVzlrZFd4bElEb2daR1Z6WXk1M2NtbDBZV0pzWlNCOGZDQmtaWE5qTG1OdmJtWnBaM1Z5WVdKc1pTa3BJSHRjY2x4dUlDQWdJQ0FnSUNCa1pYTmpJRDBnZXlCbGJuVnRaWEpoWW14bE9pQjBjblZsTENCblpYUTZJR1oxYm1OMGFXOXVLQ2tnZXlCeVpYUjFjbTRnYlZ0clhUc2dmU0I5TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtHOHNJR3N5TENCa1pYTmpLVHRjY2x4dWZTa2dPaUFvWm5WdVkzUnBiMjRvYnl3Z2JTd2dheXdnYXpJcElIdGNjbHh1SUNBZ0lHbG1JQ2hyTWlBOVBUMGdkVzVrWldacGJtVmtLU0JyTWlBOUlHczdYSEpjYmlBZ0lDQnZXMnN5WFNBOUlHMWJhMTA3WEhKY2JuMHBPMXh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZaWGh3YjNKMFUzUmhjaWh0TENCdktTQjdYSEpjYmlBZ0lDQm1iM0lnS0haaGNpQndJR2x1SUcwcElHbG1JQ2h3SUNFOVBTQmNJbVJsWm1GMWJIUmNJaUFtSmlBaFQySnFaV04wTG5CeWIzUnZkSGx3WlM1b1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tHOHNJSEFwS1NCZlgyTnlaV0YwWlVKcGJtUnBibWNvYnl3Z2JTd2djQ2s3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgzWmhiSFZsY3lodktTQjdYSEpjYmlBZ0lDQjJZWElnY3lBOUlIUjVjR1Z2WmlCVGVXMWliMndnUFQwOUlGd2lablZ1WTNScGIyNWNJaUFtSmlCVGVXMWliMnd1YVhSbGNtRjBiM0lzSUcwZ1BTQnpJQ1ltSUc5YmMxMHNJR2tnUFNBd08xeHlYRzRnSUNBZ2FXWWdLRzBwSUhKbGRIVnliaUJ0TG1OaGJHd29ieWs3WEhKY2JpQWdJQ0JwWmlBb2J5QW1KaUIwZVhCbGIyWWdieTVzWlc1bmRHZ2dQVDA5SUZ3aWJuVnRZbVZ5WENJcElISmxkSFZ5YmlCN1hISmNiaUFnSUNBZ0lDQWdibVY0ZERvZ1puVnVZM1JwYjI0Z0tDa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYnlBbUppQnBJRDQ5SUc4dWJHVnVaM1JvS1NCdklEMGdkbTlwWkNBd08xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZXlCMllXeDFaVG9nYnlBbUppQnZXMmtySzEwc0lHUnZibVU2SUNGdklIMDdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb2N5QS9JRndpVDJKcVpXTjBJR2x6SUc1dmRDQnBkR1Z5WVdKc1pTNWNJaUE2SUZ3aVUzbHRZbTlzTG1sMFpYSmhkRzl5SUdseklHNXZkQ0JrWldacGJtVmtMbHdpS1R0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZjbVZoWkNodkxDQnVLU0I3WEhKY2JpQWdJQ0IyWVhJZ2JTQTlJSFI1Y0dWdlppQlRlVzFpYjJ3Z1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBbUppQnZXMU41YldKdmJDNXBkR1Z5WVhSdmNsMDdYSEpjYmlBZ0lDQnBaaUFvSVcwcElISmxkSFZ5YmlCdk8xeHlYRzRnSUNBZ2RtRnlJR2tnUFNCdExtTmhiR3dvYnlrc0lISXNJR0Z5SUQwZ1cxMHNJR1U3WEhKY2JpQWdJQ0IwY25rZ2UxeHlYRzRnSUNBZ0lDQWdJSGRvYVd4bElDZ29iaUE5UFQwZ2RtOXBaQ0F3SUh4OElHNHRMU0ErSURBcElDWW1JQ0VvY2lBOUlHa3VibVY0ZENncEtTNWtiMjVsS1NCaGNpNXdkWE5vS0hJdWRtRnNkV1VwTzF4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnWTJGMFkyZ2dLR1Z5Y205eUtTQjdJR1VnUFNCN0lHVnljbTl5T2lCbGNuSnZjaUI5T3lCOVhISmNiaUFnSUNCbWFXNWhiR3g1SUh0Y2NseHVJQ0FnSUNBZ0lDQjBjbmtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NpQW1KaUFoY2k1a2IyNWxJQ1ltSUNodElEMGdhVnRjSW5KbGRIVnlibHdpWFNrcElHMHVZMkZzYkNocEtUdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ1ptbHVZV3hzZVNCN0lHbG1JQ2hsS1NCMGFISnZkeUJsTG1WeWNtOXlPeUI5WEhKY2JpQWdJQ0I5WEhKY2JpQWdJQ0J5WlhSMWNtNGdZWEk3WEhKY2JuMWNjbHh1WEhKY2JpOHFLaUJBWkdWd2NtVmpZWFJsWkNBcUwxeHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl6Y0hKbFlXUW9LU0I3WEhKY2JpQWdJQ0JtYjNJZ0tIWmhjaUJoY2lBOUlGdGRMQ0JwSUQwZ01Ec2dhU0E4SUdGeVozVnRaVzUwY3k1c1pXNW5kR2c3SUdrckt5bGNjbHh1SUNBZ0lDQWdJQ0JoY2lBOUlHRnlMbU52Ym1OaGRDaGZYM0psWVdRb1lYSm5kVzFsYm5SelcybGRLU2s3WEhKY2JpQWdJQ0J5WlhSMWNtNGdZWEk3WEhKY2JuMWNjbHh1WEhKY2JpOHFLaUJBWkdWd2NtVmpZWFJsWkNBcUwxeHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl6Y0hKbFlXUkJjbkpoZVhNb0tTQjdYSEpjYmlBZ0lDQm1iM0lnS0haaGNpQnpJRDBnTUN3Z2FTQTlJREFzSUdsc0lEMGdZWEpuZFcxbGJuUnpMbXhsYm1kMGFEc2dhU0E4SUdsc095QnBLeXNwSUhNZ0t6MGdZWEpuZFcxbGJuUnpXMmxkTG14bGJtZDBhRHRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJSElnUFNCQmNuSmhlU2h6S1N3Z2F5QTlJREFzSUdrZ1BTQXdPeUJwSUR3Z2FXdzdJR2tyS3lsY2NseHVJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQmhJRDBnWVhKbmRXMWxiblJ6VzJsZExDQnFJRDBnTUN3Z2Ftd2dQU0JoTG14bGJtZDBhRHNnYWlBOElHcHNPeUJxS3lzc0lHc3JLeWxjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbHRyWFNBOUlHRmJhbDA3WEhKY2JpQWdJQ0J5WlhSMWNtNGdjanRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmMzQnlaV0ZrUVhKeVlYa29kRzhzSUdaeWIyMHNJSEJoWTJzcElIdGNjbHh1SUNBZ0lHbG1JQ2h3WVdOcklIeDhJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dQVDA5SURJcElHWnZjaUFvZG1GeUlHa2dQU0F3TENCc0lEMGdabkp2YlM1c1pXNW5kR2dzSUdGeU95QnBJRHdnYkRzZ2FTc3JLU0I3WEhKY2JpQWdJQ0FnSUNBZ2FXWWdLR0Z5SUh4OElDRW9hU0JwYmlCbWNtOXRLU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lXRnlLU0JoY2lBOUlFRnljbUY1TG5CeWIzUnZkSGx3WlM1emJHbGpaUzVqWVd4c0tHWnliMjBzSURBc0lHa3BPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmhjbHRwWFNBOUlHWnliMjFiYVYwN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lDQWdjbVYwZFhKdUlIUnZMbU52Ym1OaGRDaGhjaUI4ZkNCQmNuSmhlUzV3Y205MGIzUjVjR1V1YzJ4cFkyVXVZMkZzYkNobWNtOXRLU2s3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyRjNZV2wwS0hZcElIdGNjbHh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpJR2x1YzNSaGJtTmxiMllnWDE5aGQyRnBkQ0EvSUNoMGFHbHpMbllnUFNCMkxDQjBhR2x6S1NBNklHNWxkeUJmWDJGM1lXbDBLSFlwTzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWhjM2x1WTBkbGJtVnlZWFJ2Y2loMGFHbHpRWEpuTENCZllYSm5kVzFsYm5SekxDQm5aVzVsY21GMGIzSXBJSHRjY2x4dUlDQWdJR2xtSUNnaFUzbHRZbTlzTG1GemVXNWpTWFJsY21GMGIzSXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKVGVXMWliMnd1WVhONWJtTkpkR1Z5WVhSdmNpQnBjeUJ1YjNRZ1pHVm1hVzVsWkM1Y0lpazdYSEpjYmlBZ0lDQjJZWElnWnlBOUlHZGxibVZ5WVhSdmNpNWhjSEJzZVNoMGFHbHpRWEpuTENCZllYSm5kVzFsYm5SeklIeDhJRnRkS1N3Z2FTd2djU0E5SUZ0ZE8xeHlYRzRnSUNBZ2NtVjBkWEp1SUdrZ1BTQjdmU3dnZG1WeVlpaGNJbTVsZUhSY0lpa3NJSFpsY21Jb1hDSjBhSEp2ZDF3aUtTd2dkbVZ5WWloY0luSmxkSFZ5Ymx3aUtTd2dhVnRUZVcxaWIyd3VZWE41Ym1OSmRHVnlZWFJ2Y2wwZ1BTQm1kVzVqZEdsdmJpQW9LU0I3SUhKbGRIVnliaUIwYUdsek95QjlMQ0JwTzF4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnZG1WeVlpaHVLU0I3SUdsbUlDaG5XMjVkS1NCcFcyNWRJRDBnWm5WdVkzUnBiMjRnS0hZcElIc2djbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLR1oxYm1OMGFXOXVJQ2hoTENCaUtTQjdJSEV1Y0hWemFDaGJiaXdnZGl3Z1lTd2dZbDBwSUQ0Z01TQjhmQ0J5WlhOMWJXVW9iaXdnZGlrN0lIMHBPeUI5T3lCOVhISmNiaUFnSUNCbWRXNWpkR2x2YmlCeVpYTjFiV1VvYml3Z2Rpa2dleUIwY25rZ2V5QnpkR1Z3S0dkYmJsMG9kaWtwT3lCOUlHTmhkR05vSUNobEtTQjdJSE5sZEhSc1pTaHhXekJkV3pOZExDQmxLVHNnZlNCOVhISmNiaUFnSUNCbWRXNWpkR2x2YmlCemRHVndLSElwSUhzZ2NpNTJZV3gxWlNCcGJuTjBZVzVqWlc5bUlGOWZZWGRoYVhRZ1B5QlFjbTl0YVhObExuSmxjMjlzZG1Vb2NpNTJZV3gxWlM1MktTNTBhR1Z1S0daMWJHWnBiR3dzSUhKbGFtVmpkQ2tnT2lCelpYUjBiR1VvY1Zzd1hWc3lYU3dnY2lrN0lIMWNjbHh1SUNBZ0lHWjFibU4wYVc5dUlHWjFiR1pwYkd3b2RtRnNkV1VwSUhzZ2NtVnpkVzFsS0Z3aWJtVjRkRndpTENCMllXeDFaU2s3SUgxY2NseHVJQ0FnSUdaMWJtTjBhVzl1SUhKbGFtVmpkQ2gyWVd4MVpTa2dleUJ5WlhOMWJXVW9YQ0owYUhKdmQxd2lMQ0IyWVd4MVpTazdJSDFjY2x4dUlDQWdJR1oxYm1OMGFXOXVJSE5sZEhSc1pTaG1MQ0IyS1NCN0lHbG1JQ2htS0hZcExDQnhMbk5vYVdaMEtDa3NJSEV1YkdWdVozUm9LU0J5WlhOMWJXVW9jVnN3WFZzd1hTd2djVnN3WFZzeFhTazdJSDFjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZllYTjVibU5FWld4bFoyRjBiM0lvYnlrZ2UxeHlYRzRnSUNBZ2RtRnlJR2tzSUhBN1hISmNiaUFnSUNCeVpYUjFjbTRnYVNBOUlIdDlMQ0IyWlhKaUtGd2libVY0ZEZ3aUtTd2dkbVZ5WWloY0luUm9jbTkzWENJc0lHWjFibU4wYVc5dUlDaGxLU0I3SUhSb2NtOTNJR1U3SUgwcExDQjJaWEppS0Z3aWNtVjBkWEp1WENJcExDQnBXMU41YldKdmJDNXBkR1Z5WVhSdmNsMGdQU0JtZFc1amRHbHZiaUFvS1NCN0lISmxkSFZ5YmlCMGFHbHpPeUI5TENCcE8xeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z2RtVnlZaWh1TENCbUtTQjdJR2xiYmwwZ1BTQnZXMjVkSUQ4Z1puVnVZM1JwYjI0Z0tIWXBJSHNnY21WMGRYSnVJQ2h3SUQwZ0lYQXBJRDhnZXlCMllXeDFaVG9nWDE5aGQyRnBkQ2h2VzI1ZEtIWXBLU3dnWkc5dVpUb2dabUZzYzJVZ2ZTQTZJR1lnUHlCbUtIWXBJRG9nZGpzZ2ZTQTZJR1k3SUgxY2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZZWE41Ym1OV1lXeDFaWE1vYnlrZ2UxeHlYRzRnSUNBZ2FXWWdLQ0ZUZVcxaWIyd3VZWE41Ym1OSmRHVnlZWFJ2Y2lrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJbE41YldKdmJDNWhjM2x1WTBsMFpYSmhkRzl5SUdseklHNXZkQ0JrWldacGJtVmtMbHdpS1R0Y2NseHVJQ0FnSUhaaGNpQnRJRDBnYjF0VGVXMWliMnd1WVhONWJtTkpkR1Z5WVhSdmNsMHNJR2s3WEhKY2JpQWdJQ0J5WlhSMWNtNGdiU0EvSUcwdVkyRnNiQ2h2S1NBNklDaHZJRDBnZEhsd1pXOW1JRjlmZG1Gc2RXVnpJRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdQeUJmWDNaaGJIVmxjeWh2S1NBNklHOWJVM2x0WW05c0xtbDBaWEpoZEc5eVhTZ3BMQ0JwSUQwZ2UzMHNJSFpsY21Jb1hDSnVaWGgwWENJcExDQjJaWEppS0Z3aWRHaHliM2RjSWlrc0lIWmxjbUlvWENKeVpYUjFjbTVjSWlrc0lHbGJVM2x0WW05c0xtRnplVzVqU1hSbGNtRjBiM0pkSUQwZ1puVnVZM1JwYjI0Z0tDa2dleUJ5WlhSMWNtNGdkR2hwY3pzZ2ZTd2dhU2s3WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUIyWlhKaUtHNHBJSHNnYVZ0dVhTQTlJRzliYmwwZ0ppWWdablZ1WTNScGIyNGdLSFlwSUhzZ2NtVjBkWEp1SUc1bGR5QlFjbTl0YVhObEtHWjFibU4wYVc5dUlDaHlaWE52YkhabExDQnlaV3BsWTNRcElIc2dkaUE5SUc5YmJsMG9kaWtzSUhObGRIUnNaU2h5WlhOdmJIWmxMQ0J5WldwbFkzUXNJSFl1Wkc5dVpTd2dkaTUyWVd4MVpTazdJSDBwT3lCOU95QjlYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQnpaWFIwYkdVb2NtVnpiMngyWlN3Z2NtVnFaV04wTENCa0xDQjJLU0I3SUZCeWIyMXBjMlV1Y21WemIyeDJaU2gyS1M1MGFHVnVLR1oxYm1OMGFXOXVLSFlwSUhzZ2NtVnpiMngyWlNoN0lIWmhiSFZsT2lCMkxDQmtiMjVsT2lCa0lIMHBPeUI5TENCeVpXcGxZM1FwT3lCOVhISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMjFoYTJWVVpXMXdiR0YwWlU5aWFtVmpkQ2hqYjI5clpXUXNJSEpoZHlrZ2UxeHlYRzRnSUNBZ2FXWWdLRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNrZ2V5QlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvWTI5dmEyVmtMQ0JjSW5KaGQxd2lMQ0I3SUhaaGJIVmxPaUJ5WVhjZ2ZTazdJSDBnWld4elpTQjdJR052YjJ0bFpDNXlZWGNnUFNCeVlYYzdJSDFjY2x4dUlDQWdJSEpsZEhWeWJpQmpiMjlyWldRN1hISmNibjA3WEhKY2JseHlYRzUyWVhJZ1gxOXpaWFJOYjJSMWJHVkVaV1poZFd4MElEMGdUMkpxWldOMExtTnlaV0YwWlNBL0lDaG1kVzVqZEdsdmJpaHZMQ0IyS1NCN1hISmNiaUFnSUNCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29ieXdnWENKa1pXWmhkV3gwWENJc0lIc2daVzUxYldWeVlXSnNaVG9nZEhKMVpTd2dkbUZzZFdVNklIWWdmU2s3WEhKY2JuMHBJRG9nWm5WdVkzUnBiMjRvYnl3Z2Rpa2dlMXh5WEc0Z0lDQWdiMXRjSW1SbFptRjFiSFJjSWwwZ1BTQjJPMXh5WEc1OU8xeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmFXMXdiM0owVTNSaGNpaHRiMlFwSUh0Y2NseHVJQ0FnSUdsbUlDaHRiMlFnSmlZZ2JXOWtMbDlmWlhOTmIyUjFiR1VwSUhKbGRIVnliaUJ0YjJRN1hISmNiaUFnSUNCMllYSWdjbVZ6ZFd4MElEMGdlMzA3WEhKY2JpQWdJQ0JwWmlBb2JXOWtJQ0U5SUc1MWJHd3BJR1p2Y2lBb2RtRnlJR3NnYVc0Z2JXOWtLU0JwWmlBb2F5QWhQVDBnWENKa1pXWmhkV3gwWENJZ0ppWWdUMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLRzF2WkN3Z2F5a3BJRjlmWTNKbFlYUmxRbWx1WkdsdVp5aHlaWE4xYkhRc0lHMXZaQ3dnYXlrN1hISmNiaUFnSUNCZlgzTmxkRTF2WkhWc1pVUmxabUYxYkhRb2NtVnpkV3gwTENCdGIyUXBPMXh5WEc0Z0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZhVzF3YjNKMFJHVm1ZWFZzZENodGIyUXBJSHRjY2x4dUlDQWdJSEpsZEhWeWJpQW9iVzlrSUNZbUlHMXZaQzVmWDJWelRXOWtkV3hsS1NBL0lHMXZaQ0E2SUhzZ1pHVm1ZWFZzZERvZ2JXOWtJSDA3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyTnNZWE56VUhKcGRtRjBaVVpwWld4a1IyVjBLSEpsWTJWcGRtVnlMQ0J6ZEdGMFpTd2dhMmx1WkN3Z1ppa2dlMXh5WEc0Z0lDQWdhV1lnS0d0cGJtUWdQVDA5SUZ3aVlWd2lJQ1ltSUNGbUtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpVUhKcGRtRjBaU0JoWTJObGMzTnZjaUIzWVhNZ1pHVm1hVzVsWkNCM2FYUm9iM1YwSUdFZ1oyVjBkR1Z5WENJcE8xeHlYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQnpkR0YwWlNBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUQ4Z2NtVmpaV2wyWlhJZ0lUMDlJSE4wWVhSbElIeDhJQ0ZtSURvZ0lYTjBZWFJsTG1oaGN5aHlaV05sYVhabGNpa3BJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKRFlXNXViM1FnY21WaFpDQndjbWwyWVhSbElHMWxiV0psY2lCbWNtOXRJR0Z1SUc5aWFtVmpkQ0IzYUc5elpTQmpiR0Z6Y3lCa2FXUWdibTkwSUdSbFkyeGhjbVVnYVhSY0lpazdYSEpjYmlBZ0lDQnlaWFIxY200Z2EybHVaQ0E5UFQwZ1hDSnRYQ0lnUHlCbUlEb2dhMmx1WkNBOVBUMGdYQ0poWENJZ1B5Qm1MbU5oYkd3b2NtVmpaV2wyWlhJcElEb2daaUEvSUdZdWRtRnNkV1VnT2lCemRHRjBaUzVuWlhRb2NtVmpaV2wyWlhJcE8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTlqYkdGemMxQnlhWFpoZEdWR2FXVnNaRk5sZENoeVpXTmxhWFpsY2l3Z2MzUmhkR1VzSUhaaGJIVmxMQ0JyYVc1a0xDQm1LU0I3WEhKY2JpQWdJQ0JwWmlBb2EybHVaQ0E5UFQwZ1hDSnRYQ0lwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSlFjbWwyWVhSbElHMWxkR2h2WkNCcGN5QnViM1FnZDNKcGRHRmliR1ZjSWlrN1hISmNiaUFnSUNCcFppQW9hMmx1WkNBOVBUMGdYQ0poWENJZ0ppWWdJV1lwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSlFjbWwyWVhSbElHRmpZMlZ6YzI5eUlIZGhjeUJrWldacGJtVmtJSGRwZEdodmRYUWdZU0J6WlhSMFpYSmNJaWs3WEhKY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUhOMFlYUmxJRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdQeUJ5WldObGFYWmxjaUFoUFQwZ2MzUmhkR1VnZkh3Z0lXWWdPaUFoYzNSaGRHVXVhR0Z6S0hKbFkyVnBkbVZ5S1NrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJa05oYm01dmRDQjNjbWwwWlNCd2NtbDJZWFJsSUcxbGJXSmxjaUIwYnlCaGJpQnZZbXBsWTNRZ2QyaHZjMlVnWTJ4aGMzTWdaR2xrSUc1dmRDQmtaV05zWVhKbElHbDBYQ0lwTzF4eVhHNGdJQ0FnY21WMGRYSnVJQ2hyYVc1a0lEMDlQU0JjSW1GY0lpQS9JR1l1WTJGc2JDaHlaV05sYVhabGNpd2dkbUZzZFdVcElEb2daaUEvSUdZdWRtRnNkV1VnUFNCMllXeDFaU0E2SUhOMFlYUmxMbk5sZENoeVpXTmxhWFpsY2l3Z2RtRnNkV1VwS1N3Z2RtRnNkV1U3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyTnNZWE56VUhKcGRtRjBaVVpwWld4a1NXNG9jM1JoZEdVc0lISmxZMlZwZG1WeUtTQjdYSEpjYmlBZ0lDQnBaaUFvY21WalpXbDJaWElnUFQwOUlHNTFiR3dnZkh3Z0tIUjVjR1Z2WmlCeVpXTmxhWFpsY2lBaFBUMGdYQ0p2WW1wbFkzUmNJaUFtSmlCMGVYQmxiMllnY21WalpXbDJaWElnSVQwOUlGd2lablZ1WTNScGIyNWNJaWtwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSkRZVzV1YjNRZ2RYTmxJQ2RwYmljZ2IzQmxjbUYwYjNJZ2IyNGdibTl1TFc5aWFtVmpkRndpS1R0Y2NseHVJQ0FnSUhKbGRIVnliaUIwZVhCbGIyWWdjM1JoZEdVZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBL0lISmxZMlZwZG1WeUlEMDlQU0J6ZEdGMFpTQTZJSE4wWVhSbExtaGhjeWh5WldObGFYWmxjaWs3WEhKY2JuMWNjbHh1SWl3aWFXMXdiM0owSUhSNWNHVWdLaUJoY3lCVVNGSkZSU0JtY205dElDZDBhSEpsWlNjN1hHNWNiaThxS2x4dUlDb2dWSEpoZG1WeWMyVWdZVzVqWlhOMGIzSnpJRzltSUdkcGRtVnVJRzlpYW1WamRDQmhibVFnWTJGc2JDQm5hWFpsYmlCallXeHNZbUZqYXlCbWNtOXRJSEp2YjNRZ2MybGtaUzVjYmlBcUlFbDBJSGRwYkd3Z2FXNWpiSFZrWlNCMGFHVWdaMmwyWlc0Z2IySnFaV04wSUdsMGMyVnNaaTVjYmlBcVhHNGdLaUJBY0dGeVlXMGdiMkpxWldOMElGUm9aU0J2WW1wbFkzUWdlVzkxSUhkaGJuUWdkRzhnZEhKaGRtVnljMlZjYmlBcUlFQndZWEpoYlNCallXeHNZbUZqYXlCVWFHVWdZMkZzYkNCaVlXTnJJR1oxYm1OMGFXOXVJSFJvWVhRZ2QybHNiQ0JpWlNCallXeHNaV1FnWm05eUlHVmhZMmdnWVc1alpYTjBiM0p6WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjBjbUYyWlhKelpVRnVZMlZ6ZEc5eWMwWnliMjFTYjI5MEtHOWlhbVZqZERvZ1ZFaFNSVVV1VDJKcVpXTjBNMFFzSUdOaGJHeGlZV05yT2lBb2IySnFaV04wT2lCVVNGSkZSUzVQWW1wbFkzUXpSQ2tnUFQ0Z2RtOXBaQ2s2SUhadmFXUWdlMXh1SUNCamIyNXpkQ0JoYm1ObGMzUnZjbk02SUZSSVVrVkZMazlpYW1WamRETkVXMTBnUFNCYmIySnFaV04wWFR0Y2JseHVJQ0JzWlhRZ2FHVmhaRG9nVkVoU1JVVXVUMkpxWldOME0wUWdmQ0J1ZFd4c0lEMGdiMkpxWldOMExuQmhjbVZ1ZER0Y2JpQWdkMmhwYkdVZ0tHaGxZV1FnSVQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0JoYm1ObGMzUnZjbk11ZFc1emFHbG1kQ2hvWldGa0tUdGNiaUFnSUNCb1pXRmtJRDBnYUdWaFpDNXdZWEpsYm5RN1hHNGdJSDFjYmx4dUlDQmhibU5sYzNSdmNuTXVabTl5UldGamFDZ29ZVzVqWlhOMGIzSXBJRDArSUh0Y2JpQWdJQ0JqWVd4c1ltRmpheWhoYm1ObGMzUnZjaWs3WEc0Z0lIMHBPMXh1ZlZ4dUlpd2lhVzF3YjNKMElIUjVjR1VnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVwYlhCdmNuUWdkSGx3WlNCN0lGWlNUVTV2WkdWRGIyNXpkSEpoYVc1MElIMGdabkp2YlNBbkxpOVdVazFPYjJSbFEyOXVjM1J5WVdsdWRDYzdYRzVwYlhCdmNuUWdleUIwY21GMlpYSnpaVUZ1WTJWemRHOXljMFp5YjIxU2IyOTBJSDBnWm5KdmJTQW5MaTkxZEdsc2N5OTBjbUYyWlhKelpVRnVZMlZ6ZEc5eWMwWnliMjFTYjI5MEp6dGNibHh1Wlhod2IzSjBJR05zWVhOeklGWlNUVTV2WkdWRGIyNXpkSEpoYVc1MFRXRnVZV2RsY2lCN1hHNGdJSEJ5YVhaaGRHVWdYMk52Ym5OMGNtRnBiblJ6SUQwZ2JtVjNJRk5sZER4V1VrMU9iMlJsUTI5dWMzUnlZV2x1ZEQ0b0tUdGNiaUFnY0hWaWJHbGpJR2RsZENCamIyNXpkSEpoYVc1MGN5Z3BPaUJUWlhROFZsSk5UbTlrWlVOdmJuTjBjbUZwYm5RK0lIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZZMjl1YzNSeVlXbHVkSE03WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUY5dlltcGxZM1JEYjI1emRISmhhVzUwYzAxaGNDQTlJRzVsZHlCTllYQThWRWhTUlVVdVQySnFaV04wTTBRc0lGTmxkRHhXVWsxT2IyUmxRMjl1YzNSeVlXbHVkRDQrS0NrN1hHNWNiaUFnY0hWaWJHbGpJR0ZrWkVOdmJuTjBjbUZwYm5Rb1kyOXVjM1J5WVdsdWREb2dWbEpOVG05a1pVTnZibk4wY21GcGJuUXBPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbDlqYjI1emRISmhhVzUwY3k1aFpHUW9ZMjl1YzNSeVlXbHVkQ2s3WEc1Y2JpQWdJQ0JzWlhRZ2IySnFaV04wVTJWMElEMGdkR2hwY3k1ZmIySnFaV04wUTI5dWMzUnlZV2x1ZEhOTllYQXVaMlYwS0dOdmJuTjBjbUZwYm5RdVpHVnpkR2x1WVhScGIyNHBPMXh1SUNBZ0lHbG1JQ2h2WW1wbFkzUlRaWFFnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnYjJKcVpXTjBVMlYwSUQwZ2JtVjNJRk5sZER4V1VrMU9iMlJsUTI5dWMzUnlZV2x1ZEQ0b0tUdGNiaUFnSUNBZ0lIUm9hWE11WDI5aWFtVmpkRU52Ym5OMGNtRnBiblJ6VFdGd0xuTmxkQ2hqYjI1emRISmhhVzUwTG1SbGMzUnBibUYwYVc5dUxDQnZZbXBsWTNSVFpYUXBPMXh1SUNBZ0lIMWNiaUFnSUNCdlltcGxZM1JUWlhRdVlXUmtLR052Ym5OMGNtRnBiblFwTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdSbGJHVjBaVU52Ym5OMGNtRnBiblFvWTI5dWMzUnlZV2x1ZERvZ1ZsSk5UbTlrWlVOdmJuTjBjbUZwYm5RcE9pQjJiMmxrSUh0Y2JpQWdJQ0IwYUdsekxsOWpiMjV6ZEhKaGFXNTBjeTVrWld4bGRHVW9ZMjl1YzNSeVlXbHVkQ2s3WEc1Y2JpQWdJQ0JqYjI1emRDQnZZbXBsWTNSVFpYUWdQU0IwYUdsekxsOXZZbXBsWTNSRGIyNXpkSEpoYVc1MGMwMWhjQzVuWlhRb1kyOXVjM1J5WVdsdWRDNWtaWE4wYVc1aGRHbHZiaWtoTzF4dUlDQWdJRzlpYW1WamRGTmxkQzVrWld4bGRHVW9ZMjl1YzNSeVlXbHVkQ2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYzJWMFNXNXBkRk4wWVhSbEtDazZJSFp2YVdRZ2UxeHVJQ0FnSUdOdmJuTjBJR052Ym5OMGNtRnBiblJ6VkhKcFpXUWdQU0J1WlhjZ1UyVjBQRlpTVFU1dlpHVkRiMjV6ZEhKaGFXNTBQaWdwTzF4dUlDQWdJR052Ym5OMElHTnZibk4wY21GcGJuUnpSRzl1WlNBOUlHNWxkeUJUWlhROFZsSk5UbTlrWlVOdmJuTjBjbUZwYm5RK0tDazdYRzVjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJR052Ym5OMGNtRnBiblFnYjJZZ2RHaHBjeTVmWTI5dWMzUnlZV2x1ZEhNcElIdGNiaUFnSUNBZ0lIUm9hWE11WDNCeWIyTmxjM05EYjI1emRISmhhVzUwS0dOdmJuTjBjbUZwYm5Rc0lHTnZibk4wY21GcGJuUnpWSEpwWldRc0lHTnZibk4wY21GcGJuUnpSRzl1WlN3Z0tHTnZibk4wY21GcGJuUXBJRDArSUdOdmJuTjBjbUZwYm5RdWMyVjBTVzVwZEZOMFlYUmxLQ2twTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUIxY0dSaGRHVW9LVG9nZG05cFpDQjdYRzRnSUNBZ1kyOXVjM1FnWTI5dWMzUnlZV2x1ZEhOVWNtbGxaQ0E5SUc1bGR5QlRaWFE4VmxKTlRtOWtaVU52Ym5OMGNtRnBiblErS0NrN1hHNGdJQ0FnWTI5dWMzUWdZMjl1YzNSeVlXbHVkSE5FYjI1bElEMGdibVYzSUZObGREeFdVazFPYjJSbFEyOXVjM1J5WVdsdWRENG9LVHRjYmx4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnWTI5dWMzUnlZV2x1ZENCdlppQjBhR2x6TGw5amIyNXpkSEpoYVc1MGN5a2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZmNISnZZMlZ6YzBOdmJuTjBjbUZwYm5Rb1kyOXVjM1J5WVdsdWRDd2dZMjl1YzNSeVlXbHVkSE5VY21sbFpDd2dZMjl1YzNSeVlXbHVkSE5FYjI1bExDQW9ZMjl1YzNSeVlXbHVkQ2tnUFQ0Z1kyOXVjM1J5WVdsdWRDNTFjR1JoZEdVb0tTazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlZ3WkdGMFpTQmhJR052Ym5OMGNtRnBiblF1WEc0Z0lDQXFJRWxtSUhSb1pYSmxJR0Z5WlNCdmRHaGxjaUJqYjI1emRISmhhVzUwY3lCMGFHRjBJR0Z5WlNCa1pYQmxibVJoYm5Rc0lHbDBJSGRwYkd3Z2RISjVJSFJ2SUhWd1pHRjBaU0IwYUdWdElISmxZM1Z5YzJsMlpXeDVMbHh1SUNBZ0tpQkpkQ0J0YVdkb2RDQjBhSEp2ZHlCaGJpQmxjbkp2Y2lCcFppQjBhR1Z5WlNCaGNtVWdZMmx5WTNWc1lYSWdaR1Z3Wlc1a1pXNWphV1Z6TGx4dUlDQWdLbHh1SUNBZ0tpQkpiblJsYm1SbFpDQjBieUJpWlNCMWMyVmtJR2x1SUh0QWJHbHVheUIxY0dSaGRHVjlJR0Z1WkNCN1FHeHBibXNnWDNCeWIyTmxjM05EYjI1emRISmhhVzUwZlNCcGRITmxiR1lnY21WamRYSnphWFpsYkhrdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQmpiMjV6ZEhKaGFXNTBJRUVnWTI5dWMzUnlZV2x1ZENCNWIzVWdkMkZ1ZENCMGJ5QjFjR1JoZEdWY2JpQWdJQ29nUUhCaGNtRnRJR052Ym5OMGNtRnBiblJ6VkhKcFpXUWdVMlYwSUc5bUlHTnZibk4wY21GcGJuUnpJSFJvWVhRZ1lYSmxJR0ZzY21WaFpIa2dkSEpwWldRZ2RHOGdZbVVnZFhCa1lYUmxaRnh1SUNBZ0tpQkFjR0Z5WVcwZ1kyOXVjM1J5WVdsdWRITkViMjVsSUZObGRDQnZaaUJqYjI1emRISmhhVzUwY3lCMGFHRjBJR0Z5WlNCaGJISmxZV1I1SUhWd0lIUnZJR1JoZEdWY2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1gzQnliMk5sYzNORGIyNXpkSEpoYVc1MEtGeHVJQ0FnSUdOdmJuTjBjbUZwYm5RNklGWlNUVTV2WkdWRGIyNXpkSEpoYVc1MExGeHVJQ0FnSUdOdmJuTjBjbUZwYm5SelZISnBaV1E2SUZObGREeFdVazFPYjJSbFEyOXVjM1J5WVdsdWRENHNYRzRnSUNBZ1kyOXVjM1J5WVdsdWRITkViMjVsT2lCVFpYUThWbEpOVG05a1pVTnZibk4wY21GcGJuUStMRnh1SUNBZ0lHTmhiR3hpWVdOck9pQW9ZMjl1YzNSeVlXbHVkRG9nVmxKTlRtOWtaVU52Ym5OMGNtRnBiblFwSUQwK0lIWnZhV1FzWEc0Z0lDazZJSFp2YVdRZ2UxeHVJQ0FnSUdsbUlDaGpiMjV6ZEhKaGFXNTBjMFJ2Ym1VdWFHRnpLR052Ym5OMGNtRnBiblFwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0dOdmJuTjBjbUZwYm5SelZISnBaV1F1YUdGektHTnZibk4wY21GcGJuUXBLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMVpTVFU1dlpHVkRiMjV6ZEhKaGFXNTBUV0Z1WVdkbGNqb2dRMmx5WTNWc1lYSWdaR1Z3Wlc1a1pXNWplU0JrWlhSbFkzUmxaQ0IzYUdsc1pTQjFjR1JoZEdsdVp5QmpiMjV6ZEhKaGFXNTBjeWNwTzF4dUlDQWdJSDFjYmlBZ0lDQmpiMjV6ZEhKaGFXNTBjMVJ5YVdWa0xtRmtaQ2hqYjI1emRISmhhVzUwS1R0Y2JseHVJQ0FnSUdOdmJuTjBJR1JsY0U5aWFtVmpkSE1nUFNCamIyNXpkSEpoYVc1MExtUmxjR1Z1WkdWdVkybGxjenRjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJR1JsY0U5aWFtVmpkQ0J2WmlCa1pYQlBZbXBsWTNSektTQjdYRzRnSUNBZ0lDQjBjbUYyWlhKelpVRnVZMlZ6ZEc5eWMwWnliMjFTYjI5MEtHUmxjRTlpYW1WamRDd2dLR1JsY0U5aWFtVmpkRUZ1WTJWemRHOXlLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUc5aWFtVmpkRk5sZENBOUlIUm9hWE11WDI5aWFtVmpkRU52Ym5OMGNtRnBiblJ6VFdGd0xtZGxkQ2hrWlhCUFltcGxZM1JCYm1ObGMzUnZjaWs3WEc0Z0lDQWdJQ0FnSUdsbUlDaHZZbXBsWTNSVFpYUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCbWIzSWdLR052Ym5OMElHUmxjRU52Ym5OMGNtRnBiblFnYjJZZ2IySnFaV04wVTJWMEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbDl3Y205alpYTnpRMjl1YzNSeVlXbHVkQ2hrWlhCRGIyNXpkSEpoYVc1MExDQmpiMjV6ZEhKaGFXNTBjMVJ5YVdWa0xDQmpiMjV6ZEhKaGFXNTBjMFJ2Ym1Vc0lHTmhiR3hpWVdOcktUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOaGJHeGlZV05yS0dOdmJuTjBjbUZwYm5RcE8xeHVYRzRnSUNBZ1kyOXVjM1J5WVdsdWRITkViMjVsTG1Ga1pDaGpiMjV6ZEhKaGFXNTBLVHRjYmlBZ2ZWeHVmVnh1SWl3aWFXMXdiM0owSUNvZ1lYTWdWRWhTUlVVZ1puSnZiU0FuZEdoeVpXVW5PMXh1YVcxd2IzSjBJSHNnY1hWaGRFbHVkbVZ5ZEVOdmJYQmhkQ0I5SUdaeWIyMGdKeTR2ZFhScGJITXZjWFZoZEVsdWRtVnlkRU52YlhCaGRDYzdYRzVwYlhCdmNuUWdleUJXVWsxT2IyUmxRMjl1YzNSeVlXbHVkQ0I5SUdaeWIyMGdKeTR2VmxKTlRtOWtaVU52Ym5OMGNtRnBiblFuTzF4dVhHNWpiMjV6ZENCZmNYVmhkRUVnUFNCdVpYY2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJpZ3BPMXh1WTI5dWMzUWdYM0YxWVhSQ0lEMGdibVYzSUZSSVVrVkZMbEYxWVhSbGNtNXBiMjRvS1R0Y2JseHVMeW9xWEc0Z0tpQkJJR052Ym5OMGNtRnBiblFnZEdoaGRDQjBjbUZ1YzJabGNuTWdZU0J5YjNSaGRHbHZiaUJoY205MWJtUWdiMjVsSUdGNGFYTWdiMllnWVNCemIzVnlZMlV1WEc0Z0tseHVJQ29nVTJWbE9pQm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZkbkp0TFdNdmRuSnRMWE53WldOcFptbGpZWFJwYjI0dmRISmxaUzl0WVhOMFpYSXZjM0JsWTJsbWFXTmhkR2x2Ymk5V1VrMURYMjV2WkdWZlkyOXVjM1J5WVdsdWRDMHhMakJmWW1WMFlTTnliMnhzTFdOdmJuTjBjbUZwYm5SY2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklGWlNUVkp2ZEdGMGFXOXVRMjl1YzNSeVlXbHVkQ0JsZUhSbGJtUnpJRlpTVFU1dlpHVkRiMjV6ZEhKaGFXNTBJSHRjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aU0J5WlhOMElIRjFZWFJsY201cGIyNGdiMllnZEdobElIdEFiR2x1YXlCa1pYTjBhVzVoZEdsdmJuMHVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjlrYzNSU1pYTjBVWFZoZERvZ1ZFaFNSVVV1VVhWaGRHVnlibWx2Ymp0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdobElHbHVkbVZ5YzJVZ2IyWWdkR2hsSUhKbGMzUWdjWFZoZEdWeWJtbHZiaUJ2WmlCMGFHVWdlMEJzYVc1cklITnZkWEpqWlgwdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElGOXBiblpUY21OU1pYTjBVWFZoZERvZ1ZFaFNSVVV1VVhWaGRHVnlibWx2Ymp0Y2JseHVJQ0J3ZFdKc2FXTWdaMlYwSUdSbGNHVnVaR1Z1WTJsbGN5Z3BPaUJUWlhROFZFaFNSVVV1VDJKcVpXTjBNMFE4VkVoU1JVVXVSWFpsYm5RK1BpQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlRaWFFvVzNSb2FYTXVjMjkxY21ObFhTazdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvWkdWemRHbHVZWFJwYjI0NklGUklVa1ZGTGs5aWFtVmpkRE5FTENCemIzVnlZMlU2SUZSSVVrVkZMazlpYW1WamRETkVLU0I3WEc0Z0lDQWdjM1Z3WlhJb1pHVnpkR2x1WVhScGIyNHNJSE52ZFhKalpTazdYRzVjYmlBZ0lDQjBhR2x6TGw5a2MzUlNaWE4wVVhWaGRDQTlJRzVsZHlCVVNGSkZSUzVSZFdGMFpYSnVhVzl1S0NrN1hHNGdJQ0FnZEdocGN5NWZhVzUyVTNKalVtVnpkRkYxWVhRZ1BTQnVaWGNnVkVoU1JVVXVVWFZoZEdWeWJtbHZiaWdwTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUhObGRFbHVhWFJUZEdGMFpTZ3BPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbDlrYzNSU1pYTjBVWFZoZEM1amIzQjVLSFJvYVhNdVpHVnpkR2x1WVhScGIyNHVjWFZoZEdWeWJtbHZiaWs3WEc0Z0lDQWdjWFZoZEVsdWRtVnlkRU52YlhCaGRDaDBhR2x6TGw5cGJuWlRjbU5TWlhOMFVYVmhkQzVqYjNCNUtIUm9hWE11YzI5MWNtTmxMbkYxWVhSbGNtNXBiMjRwS1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCMWNHUmhkR1VvS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdMeThnWTJGc1kzVnNZWFJsSUhSb1pTQmtaV3gwWVNCeWIzUmhkR2x2YmlCbWNtOXRJSFJvWlNCeVpYTjBJR0ZpYjNWMElIUm9aU0J6YjNWeVkyVmNiaUFnSUNCamIyNXpkQ0J6Y21ORVpXeDBZVkYxWVhRZ1BTQmZjWFZoZEVFdVkyOXdlU2gwYUdsekxsOXBiblpUY21OU1pYTjBVWFZoZENrdWJYVnNkR2x3Ykhrb2RHaHBjeTV6YjNWeVkyVXVjWFZoZEdWeWJtbHZiaWs3WEc1Y2JpQWdJQ0F2THlCdGRXeDBhWEJzZVNCMGFHVWdaR1ZzZEdFZ2RHOGdkR2hsSUhKbGMzUWdiMllnZEdobElHUmxjM1JwYm1GMGFXOXVYRzRnSUNBZ1kyOXVjM1FnZEdGeVoyVjBVWFZoZENBOUlGOXhkV0YwUWk1amIzQjVLSFJvYVhNdVgyUnpkRkpsYzNSUmRXRjBLUzV0ZFd4MGFYQnNlU2h6Y21ORVpXeDBZVkYxWVhRcE8xeHVYRzRnSUNBZ0x5OGdZbXhsYm1RZ2QybDBhQ0IwYUdVZ2NtVnpkQ0J4ZFdGMFpYSnVhVzl1SUhWemFXNW5JSGRsYVdkb2RGeHVJQ0FnSUhSb2FYTXVaR1Z6ZEdsdVlYUnBiMjR1Y1hWaGRHVnlibWx2Ymk1amIzQjVLSFJvYVhNdVgyUnpkRkpsYzNSUmRXRjBLUzV6YkdWeWNDaDBZWEpuWlhSUmRXRjBMQ0IwYUdsekxuZGxhV2RvZENrN1hHNGdJSDFjYm4xY2JpSXNJbWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCN0lIRjFZWFJKYm5abGNuUkRiMjF3WVhRZ2ZTQm1jbTl0SUNjdUwzVjBhV3h6TDNGMVlYUkpiblpsY25SRGIyMXdZWFFuTzF4dWFXMXdiM0owSUhzZ1ZsSk5UbTlrWlVOdmJuTjBjbUZwYm5RZ2ZTQm1jbTl0SUNjdUwxWlNUVTV2WkdWRGIyNXpkSEpoYVc1MEp6dGNibHh1WTI5dWMzUWdYM1l6UVNBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektDazdYRzVqYjI1emRDQmZjWFZoZEVFZ1BTQnVaWGNnVkVoU1JVVXVVWFZoZEdWeWJtbHZiaWdwTzF4dVkyOXVjM1FnWDNGMVlYUkNJRDBnYm1WM0lGUklVa1ZGTGxGMVlYUmxjbTVwYjI0b0tUdGNibHh1THlvcVhHNGdLaUJCSUdOdmJuTjBjbUZwYm5RZ2RHaGhkQ0IwY21GdWMyWmxjbk1nWVNCeWIzUmhkR2x2YmlCaGNtOTFibVFnYjI1bElHRjRhWE1nYjJZZ1lTQnpiM1Z5WTJVdVhHNGdLbHh1SUNvZ1UyVmxPaUJvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2ZG5KdExXTXZkbkp0TFhOd1pXTnBabWxqWVhScGIyNHZkSEpsWlM5dFlYTjBaWEl2YzNCbFkybG1hV05oZEdsdmJpOVdVazFEWDI1dlpHVmZZMjl1YzNSeVlXbHVkQzB4TGpCZlltVjBZU055YjJ4c0xXTnZibk4wY21GcGJuUmNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRlpTVFZKdmJHeERiMjV6ZEhKaGFXNTBJR1Y0ZEdWdVpITWdWbEpOVG05a1pVTnZibk4wY21GcGJuUWdlMXh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJSEp2Ykd3Z1lYaHBjeUJ2WmlCMGFHVWdZMjl1YzNSeVlXbHVkQzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJuWlhRZ2NtOXNiRUY0YVhNb0tUb2dKMWduSUh3Z0oxa25JSHdnSjFvbklIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZjbTlzYkVGNGFYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdobElISnZiR3dnWVhocGN5QnZaaUIwYUdVZ1kyOXVjM1J5WVdsdWRDNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnpaWFFnY205c2JFRjRhWE1vY205c2JFRjRhWE02SUNkWUp5QjhJQ2RaSnlCOElDZGFKeWtnZTF4dUlDQWdJSFJvYVhNdVgzSnZiR3hCZUdseklEMGdjbTlzYkVGNGFYTTdYRzRnSUNBZ2RHaHBjeTVmZGpOU2IyeHNRWGhwY3k1elpYUW9jbTlzYkVGNGFYTWdQVDA5SUNkWUp5QS9JREV1TUNBNklEQXVNQ3dnY205c2JFRjRhWE1nUFQwOUlDZFpKeUEvSURFdU1DQTZJREF1TUN3Z2NtOXNiRUY0YVhNZ1BUMDlJQ2RhSnlBL0lERXVNQ0E2SURBdU1DazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdobElISnZiR3dnWVhocGN5QnZaaUIwYUdVZ1kyOXVjM1J5WVdsdWRDNWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdYM0p2Ykd4QmVHbHpPaUFuV0NjZ2ZDQW5XU2NnZkNBbldpYzdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aU0I3UUd4cGJtc2dYM0p2Ykd4QmVHbHpmU0JpZFhRZ2FXNGdZVzRnWVdOMGRXRnNJRlpsWTNSdmNqTWdabTl5YlM1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1gzWXpVbTlzYkVGNGFYTTZJRlJJVWtWRkxsWmxZM1J2Y2pNN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSb1pTQnlaWE4wSUhGMVlYUmxjbTVwYjI0Z2IyWWdkR2hsSUh0QWJHbHVheUJrWlhOMGFXNWhkR2x2Ym4wdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElGOWtjM1JTWlhOMFVYVmhkRG9nVkVoU1JVVXVVWFZoZEdWeWJtbHZianRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWR2hsSUdsdWRtVnljMlVnYjJZZ2RHaGxJSEpsYzNRZ2NYVmhkR1Z5Ym1sdmJpQnZaaUIwYUdVZ2UwQnNhVzVySUdSbGMzUnBibUYwYVc5dWZTNWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdYMmx1ZGtSemRGSmxjM1JSZFdGME9pQlVTRkpGUlM1UmRXRjBaWEp1YVc5dU8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCZ2MzSmpVbVZ6ZEZGMVlYUXVhVzUyWlhKMEtDa2dLaUJrYzNSU1pYTjBVWFZoZEdBdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElGOXBiblpUY21OU1pYTjBVWFZoZEUxMWJFUnpkRkpsYzNSUmRXRjBPaUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVPMXh1WEc0Z0lIQjFZbXhwWXlCblpYUWdaR1Z3Wlc1a1pXNWphV1Z6S0NrNklGTmxkRHhVU0ZKRlJTNVBZbXBsWTNRelJEeFVTRkpGUlM1RmRtVnVkRDQrSUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZObGRDaGJkR2hwY3k1emIzVnlZMlZkS1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpaGtaWE4wYVc1aGRHbHZiam9nVkVoU1JVVXVUMkpxWldOME0wUXNJSE52ZFhKalpUb2dWRWhTUlVVdVQySnFaV04wTTBRcElIdGNiaUFnSUNCemRYQmxjaWhrWlhOMGFXNWhkR2x2Yml3Z2MyOTFjbU5sS1R0Y2JseHVJQ0FnSUhSb2FYTXVYM0p2Ykd4QmVHbHpJRDBnSjFnbk8xeHVJQ0FnSUhSb2FYTXVYM1l6VW05c2JFRjRhWE1nUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlneExDQXdMQ0F3S1R0Y2JseHVJQ0FnSUhSb2FYTXVYMlJ6ZEZKbGMzUlJkV0YwSUQwZ2JtVjNJRlJJVWtWRkxsRjFZWFJsY201cGIyNG9LVHRjYmlBZ0lDQjBhR2x6TGw5cGJuWkVjM1JTWlhOMFVYVmhkQ0E5SUc1bGR5QlVTRkpGUlM1UmRXRjBaWEp1YVc5dUtDazdYRzRnSUNBZ2RHaHBjeTVmYVc1MlUzSmpVbVZ6ZEZGMVlYUk5kV3hFYzNSU1pYTjBVWFZoZENBOUlHNWxkeUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVLQ2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYzJWMFNXNXBkRk4wWVhSbEtDazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVYMlJ6ZEZKbGMzUlJkV0YwTG1OdmNIa29kR2hwY3k1a1pYTjBhVzVoZEdsdmJpNXhkV0YwWlhKdWFXOXVLVHRjYmlBZ0lDQnhkV0YwU1c1MlpYSjBRMjl0Y0dGMEtIUm9hWE11WDJsdWRrUnpkRkpsYzNSUmRXRjBMbU52Y0hrb2RHaHBjeTVmWkhOMFVtVnpkRkYxWVhRcEtUdGNiaUFnSUNCeGRXRjBTVzUyWlhKMFEyOXRjR0YwS0hSb2FYTXVYMmx1ZGxOeVkxSmxjM1JSZFdGMFRYVnNSSE4wVW1WemRGRjFZWFF1WTI5d2VTaDBhR2x6TG5OdmRYSmpaUzV4ZFdGMFpYSnVhVzl1S1NrdWJYVnNkR2x3Ykhrb2RHaHBjeTVmWkhOMFVtVnpkRkYxWVhRcE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklIVndaR0YwWlNncE9pQjJiMmxrSUh0Y2JpQWdJQ0F2THlCallXeGpkV3hoZEdVZ2RHaGxJR1JsYkhSaElISnZkR0YwYVc5dUlHWnliMjBnZEdobElISmxjM1FnWVdKdmRYUWdkR2hsSUhOdmRYSmpaU3dnZEdobGJpQmpiMjUyWlhKMElIUnZJSFJvWlNCa1pYTjBhVzVoZEdsdmJpQnNiMk5oYkNCamIyOXlaRnh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRmRvWVhRZ2RHaGxJSEYxWVhSRVpXeDBZU0JwY3lCcGJuUmxibVJsWkNCMGJ5QmlaVHBjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJR0JnWUhSelhHNGdJQ0FnSUNvZ1kyOXVjM1FnY1hWaGRGTnlZMFJsYkhSaElEMGdYM0YxWVhSQlhHNGdJQ0FnSUNvZ0lDQXVZMjl3ZVNnZ2RHaHBjeTVmYVc1MlUzSmpVbVZ6ZEZGMVlYUWdLVnh1SUNBZ0lDQXFJQ0FnTG0xMWJIUnBjR3g1S0NCMGFHbHpMbk52ZFhKalpTNXhkV0YwWlhKdWFXOXVJQ2s3WEc0Z0lDQWdJQ29nWTI5dWMzUWdjWFZoZEZOeVkwUmxiSFJoU1c1UVlYSmxiblFnUFNCZmNYVmhkRUpjYmlBZ0lDQWdLaUFnSUM1amIzQjVLQ0IwYUdsekxsOXpjbU5TWlhOMFVYVmhkQ0FwWEc0Z0lDQWdJQ29nSUNBdWJYVnNkR2x3Ykhrb0lIRjFZWFJUY21ORVpXeDBZU0FwWEc0Z0lDQWdJQ29nSUNBdWJYVnNkR2x3Ykhrb0lIUm9hWE11WDJsdWRsTnlZMUpsYzNSUmRXRjBJQ2s3WEc0Z0lDQWdJQ29nWTI5dWMzUWdjWFZoZEZOeVkwUmxiSFJoU1c1RWMzUWdQU0JmY1hWaGRFRmNiaUFnSUNBZ0tpQWdJQzVqYjNCNUtDQjBhR2x6TGw5cGJuWkVjM1JTWlhOMFVYVmhkQ0FwWEc0Z0lDQWdJQ29nSUNBdWJYVnNkR2x3Ykhrb0lIRjFZWFJUY21ORVpXeDBZVWx1VUdGeVpXNTBJQ2xjYmlBZ0lDQWdLaUFnSUM1dGRXeDBhWEJzZVNnZ2RHaHBjeTVmWkhOMFVtVnpkRkYxWVhRZ0tUdGNiaUFnSUNBZ0tpQmdZR0JjYmlBZ0lDQWdLaTljYmlBZ0lDQmpiMjV6ZENCeGRXRjBSR1ZzZEdFZ1BTQmZjWFZoZEVGY2JpQWdJQ0FnSUM1amIzQjVLSFJvYVhNdVgybHVka1J6ZEZKbGMzUlJkV0YwS1Z4dUlDQWdJQ0FnTG0xMWJIUnBjR3g1S0hSb2FYTXVjMjkxY21ObExuRjFZWFJsY201cGIyNHBYRzRnSUNBZ0lDQXViWFZzZEdsd2JIa29kR2hwY3k1ZmFXNTJVM0pqVW1WemRGRjFZWFJOZFd4RWMzUlNaWE4wVVhWaGRDazdYRzVjYmlBZ0lDQXZMeUJqY21WaGRHVWdZU0JtY205dExYUnZJSEYxWVhSbGNtNXBiMjVjYmlBZ0lDQmpiMjV6ZENCdU1TQTlJRjkyTTBFdVkyOXdlU2gwYUdsekxsOTJNMUp2Ykd4QmVHbHpLUzVoY0hCc2VWRjFZWFJsY201cGIyNG9jWFZoZEVSbGJIUmhLVHRjYmx4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUZkb1lYUWdkR2hsSUhGMVlYUkdjbTl0Vkc4Z2FYTWdhVzUwWlc1a1pXUWdkRzhnWW1VNlhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCZ1lHQjBjMXh1SUNBZ0lDQXFJR052Ym5OMElIRjFZWFJHY205dFZHOGdQU0JmY1hWaGRFSXVjMlYwUm5KdmJWVnVhWFJXWldOMGIzSnpLQ0IwYUdsekxsOTJNMUp2Ykd4QmVHbHpMQ0J1TVNBcExtbHVkbVZ5YzJVb0tUdGNiaUFnSUNBZ0tpQmdZR0JjYmlBZ0lDQWdLaTljYmlBZ0lDQmpiMjV6ZENCeGRXRjBSbkp2YlZSdklEMGdYM0YxWVhSQ0xuTmxkRVp5YjIxVmJtbDBWbVZqZEc5eWN5aHVNU3dnZEdocGN5NWZkak5TYjJ4c1FYaHBjeWs3WEc1Y2JpQWdJQ0F2THlCeGRXRjBSbkp2YlZSdklDb2djWFZoZEVSbGJIUmhJRDA5SUhKdmJHd2daWGgwY21GamRHVmtJR1p5YjIwZ2NYVmhkRVJsYkhSaFhHNGdJQ0FnWTI5dWMzUWdkR0Z5WjJWMFVYVmhkQ0E5SUhGMVlYUkdjbTl0Vkc4dWNISmxiWFZzZEdsd2JIa29kR2hwY3k1ZlpITjBVbVZ6ZEZGMVlYUXBMbTExYkhScGNHeDVLSEYxWVhSRVpXeDBZU2s3WEc1Y2JpQWdJQ0F2THlCaWJHVnVaQ0IzYVhSb0lIUm9aU0J5WlhOMElIRjFZWFJsY201cGIyNGdkWE5wYm1jZ2QyVnBaMmgwWEc0Z0lDQWdkR2hwY3k1a1pYTjBhVzVoZEdsdmJpNXhkV0YwWlhKdWFXOXVMbU52Y0hrb2RHaHBjeTVmWkhOMFVtVnpkRkYxWVhRcExuTnNaWEp3S0hSaGNtZGxkRkYxWVhRc0lIUm9hWE11ZDJWcFoyaDBLVHRjYmlBZ2ZWeHVmVnh1SWl3aWFXMXdiM0owSUhSNWNHVWdLaUJoY3lCRGIyNXpkSEpoYVc1MFUyTm9aVzFoSUdaeWIyMGdKMEJ3YVhocGRpOTBlWEJsY3kxMmNtMWpMVzV2WkdVdFkyOXVjM1J5WVdsdWRDMHhMakFuTzF4dWFXMXdiM0owSUhSNWNHVWdLaUJoY3lCVVNGSkZSU0JtY205dElDZDBhSEpsWlNjN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3SUVkTVZFWXNJRWRNVkVaTWIyRmtaWEpRYkhWbmFXNHNJRWRNVkVaUVlYSnpaWElnZlNCbWNtOXRJQ2QwYUhKbFpTOWxlR0Z0Y0d4bGN5OXFjMjB2Ykc5aFpHVnljeTlIVEZSR1RHOWhaR1Z5TG1wekp6dGNibWx0Y0c5eWRDQjdJRlpTVFU1dlpHVkRiMjV6ZEhKaGFXNTBTR1ZzY0dWeUlIMGdabkp2YlNBbkxpOW9aV3h3WlhKekp6dGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1ZsSk5UbTlrWlVOdmJuTjBjbUZwYm5STWIyRmtaWEpRYkhWbmFXNVBjSFJwYjI1eklIMGdabkp2YlNBbkxpOVdVazFPYjJSbFEyOXVjM1J5WVdsdWRFeHZZV1JsY2xCc2RXZHBiazl3ZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHNnVmxKTlRtOWtaVU52Ym5OMGNtRnBiblJOWVc1aFoyVnlJSDBnWm5KdmJTQW5MaTlXVWsxT2IyUmxRMjl1YzNSeVlXbHVkRTFoYm1GblpYSW5PMXh1YVcxd2IzSjBJSHNnVmxKTlVtOTBZWFJwYjI1RGIyNXpkSEpoYVc1MElIMGdabkp2YlNBbkxpOVdVazFTYjNSaGRHbHZia052Ym5OMGNtRnBiblFuTzF4dWFXMXdiM0owSUhzZ1IweFVSaUJoY3lCSFRGUkdVMk5vWlcxaElIMGdabkp2YlNBblFHZHNkR1l0ZEhKaGJuTm1iM0p0TDJOdmNtVW5PMXh1YVcxd2IzSjBJSHNnVmxKTlFXbHRRMjl1YzNSeVlXbHVkQ0I5SUdaeWIyMGdKeTR2VmxKTlFXbHRRMjl1YzNSeVlXbHVkQ2M3WEc1cGJYQnZjblFnZXlCV1VrMVNiMnhzUTI5dWMzUnlZV2x1ZENCOUlHWnliMjBnSnk0dlZsSk5VbTlzYkVOdmJuTjBjbUZwYm5Rbk8xeHVYRzR2S2lwY2JpQXFJRkJ2YzNOcFlteGxJSE53WldNZ2RtVnljMmx2Ym5NZ2FYUWdjbVZqYjJkdWFYcGxjeTVjYmlBcUwxeHVZMjl1YzNRZ1VFOVRVMGxDVEVWZlUxQkZRMTlXUlZKVFNVOU9VeUE5SUc1bGR5QlRaWFFvV3ljeExqQW5MQ0FuTVM0d0xXSmxkR0VuWFNrN1hHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCV1VrMU9iMlJsUTI5dWMzUnlZV2x1ZEV4dllXUmxjbEJzZFdkcGJpQnBiWEJzWlcxbGJuUnpJRWRNVkVaTWIyRmtaWEpRYkhWbmFXNGdlMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJSEpsWVdSdmJteDVJRVZZVkVWT1UwbFBUbDlPUVUxRklEMGdKMVpTVFVOZmJtOWtaVjlqYjI1emRISmhhVzUwSnp0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVTNCbFkybG1lU0JoYmlCUFltcGxZM1F6UkNCMGJ5QmhaR1FnZTBCc2FXNXJJRlpTVFU1dlpHVkRiMjV6ZEhKaGFXNTBTR1ZzY0dWeWZTQnpMbHh1SUNBZ0tpQkpaaUJ1YjNRZ2MzQmxZMmxtYVdWa0xDQm9aV3h3WlhJZ2QybHNiQ0J1YjNRZ1ltVWdZM0psWVhSbFpDNWNiaUFnSUNvZ1NXWWdZSEpsYm1SbGNrOXlaR1Z5WUNCcGN5QnpaWFFnZEc4Z2RHaGxJSEp2YjNRc0lHaGxiSEJsY25NZ2QybHNiQ0JqYjNCNUlIUm9aU0J6WVcxbElHQnlaVzVrWlhKUGNtUmxjbUFnTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdobGJIQmxjbEp2YjNRL09pQlVTRkpGUlM1UFltcGxZM1F6UkR0Y2JseHVJQ0J3ZFdKc2FXTWdjbVZoWkc5dWJIa2djR0Z5YzJWeU9pQkhURlJHVUdGeWMyVnlPMXh1WEc0Z0lIQjFZbXhwWXlCblpYUWdibUZ0WlNncE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUhKbGRIVnliaUJXVWsxT2IyUmxRMjl1YzNSeVlXbHVkRXh2WVdSbGNsQnNkV2RwYmk1RldGUkZUbE5KVDA1ZlRrRk5SVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJqYjI1emRISjFZM1J2Y2lod1lYSnpaWEk2SUVkTVZFWlFZWEp6WlhJc0lHOXdkR2x2Ym5NL09pQldVazFPYjJSbFEyOXVjM1J5WVdsdWRFeHZZV1JsY2xCc2RXZHBiazl3ZEdsdmJuTXBJSHRjYmlBZ0lDQjBhR2x6TG5CaGNuTmxjaUE5SUhCaGNuTmxjanRjYmx4dUlDQWdJSFJvYVhNdWFHVnNjR1Z5VW05dmRDQTlJRzl3ZEdsdmJuTS9MbWhsYkhCbGNsSnZiM1E3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWVhONWJtTWdZV1owWlhKU2IyOTBLR2RzZEdZNklFZE1WRVlwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQm5iSFJtTG5WelpYSkVZWFJoTG5aeWJVNXZaR1ZEYjI1emRISmhhVzUwVFdGdVlXZGxjaUE5SUdGM1lXbDBJSFJvYVhNdVgybHRjRzl5ZENobmJIUm1LVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmJYQnZjblFnWTI5dWMzUnlZV2x1ZEhNZ1puSnZiU0JoSUVkTVZFWWdZVzVrSUhKbGRIVnlibk1nWVNCN1FHeHBibXNnVmxKTlRtOWtaVU52Ym5OMGNtRnBiblJOWVc1aFoyVnlmUzVjYmlBZ0lDb2dTWFFnYldsbmFIUWdjbVYwZFhKdUlHQnVkV3hzWUNCcGJuTjBaV0ZrSUhkb1pXNGdhWFFnWkc5bGN5QnViM1FnYm1WbFpDQjBieUJpWlNCamNtVmhkR1ZrSUc5eUlITnZiV1YwYUdsdVp5Qm5ieUIzY205dVp5NWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJR2RzZEdZZ1FTQndZWEp6WldRZ2NtVnpkV3gwSUc5bUlFZE1WRVlnZEdGclpXNGdabkp2YlNCSFRGUkdURzloWkdWeVhHNGdJQ0FxTDF4dUlDQndjbTkwWldOMFpXUWdZWE41Ym1NZ1gybHRjRzl5ZENobmJIUm1PaUJIVEZSR0tUb2dVSEp2YldselpUeFdVazFPYjJSbFEyOXVjM1J5WVdsdWRFMWhibUZuWlhJZ2ZDQnVkV3hzUGlCN1hHNGdJQ0FnWTI5dWMzUWdhbk52YmlBOUlIUm9hWE11Y0dGeWMyVnlMbXB6YjI0Z1lYTWdSMHhVUmxOamFHVnRZUzVKUjB4VVJqdGNibHh1SUNBZ0lDOHZJR1ZoY214NUlHRmliM0owSUdsbUlHbDBJR1J2WlhOdUozUWdkWE5sSUdOdmJuTjBjbUZwYm5SelhHNGdJQ0FnWTI5dWMzUWdhWE5EYjI1emRISmhhVzUwYzFWelpXUWdQU0JxYzI5dUxtVjRkR1Z1YzJsdmJuTlZjMlZrUHk1cGJtUmxlRTltS0ZaU1RVNXZaR1ZEYjI1emRISmhhVzUwVEc5aFpHVnlVR3gxWjJsdUxrVllWRVZPVTBsUFRsOU9RVTFGS1NBaFBUMGdMVEU3WEc0Z0lDQWdhV1lnS0NGcGMwTnZibk4wY21GcGJuUnpWWE5sWkNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnYldGdVlXZGxjaUE5SUc1bGR5QldVazFPYjJSbFEyOXVjM1J5WVdsdWRFMWhibUZuWlhJb0tUdGNiaUFnSUNCamIyNXpkQ0IwYUhKbFpVNXZaR1Z6T2lCVVNGSkZSUzVQWW1wbFkzUXpSRnRkSUQwZ1lYZGhhWFFnZEdocGN5NXdZWEp6WlhJdVoyVjBSR1Z3Wlc1a1pXNWphV1Z6S0NkdWIyUmxKeWs3WEc1Y2JpQWdJQ0F2THlCcGJYQnZjblFnWTI5dWMzUnlZV2x1ZEhNZ1ptOXlJR1ZoWTJnZ2JtOWtaWE5jYmlBZ0lDQjBhSEpsWlU1dlpHVnpMbVp2Y2tWaFkyZ29LRzV2WkdVc0lHNXZaR1ZKYm1SbGVDa2dQVDRnZTF4dUlDQWdJQ0FnWTI5dWMzUWdjMk5vWlcxaFRtOWtaU0E5SUdwemIyNHVibTlrWlhNaFcyNXZaR1ZKYm1SbGVGMDdYRzVjYmlBZ0lDQWdJQzh2SUdOb1pXTnJJR2xtSUhSb1pTQmxlSFJsYm5OcGIyNGdkWE5sY3lCMGFHVWdaWGgwWlc1emFXOXVYRzRnSUNBZ0lDQmpiMjV6ZENCbGVIUmxibk5wYjI0Z1BTQnpZMmhsYldGT2IyUmxQeTVsZUhSbGJuTnBiMjV6UHk1YlZsSk5UbTlrWlVOdmJuTjBjbUZwYm5STWIyRmtaWEpRYkhWbmFXNHVSVmhVUlU1VFNVOU9YMDVCVFVWZElHRnpYRzRnSUNBZ0lDQWdJSHdnUTI5dWMzUnlZV2x1ZEZOamFHVnRZUzVXVWsxRFRtOWtaVU52Ym5OMGNtRnBiblJjYmlBZ0lDQWdJQ0FnZkNCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNBZ0lHbG1JQ2hsZUhSbGJuTnBiMjRnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJSE53WldOV1pYSnphVzl1SUQwZ1pYaDBaVzV6YVc5dUxuTndaV05XWlhKemFXOXVPMXh1SUNBZ0lDQWdhV1lnS0NGUVQxTlRTVUpNUlY5VFVFVkRYMVpGVWxOSlQwNVRMbWhoY3loemNHVmpWbVZ5YzJsdmJpa3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMyOXNaUzUzWVhKdUtGeHVJQ0FnSUNBZ0lDQWdJR0JXVWsxT2IyUmxRMjl1YzNSeVlXbHVkRXh2WVdSbGNsQnNkV2RwYmpvZ1ZXNXJibTkzYmlBa2UxWlNUVTV2WkdWRGIyNXpkSEpoYVc1MFRHOWhaR1Z5VUd4MVoybHVMa1ZZVkVWT1UwbFBUbDlPUVUxRmZTQnpjR1ZqVm1WeWMybHZiaUJjSWlSN2MzQmxZMVpsY25OcGIyNTlYQ0pnTEZ4dUlDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHTnZibk4wSUdOdmJuTjBjbUZwYm5SRVpXWWdQU0JsZUhSbGJuTnBiMjR1WTI5dWMzUnlZV2x1ZER0Y2JseHVJQ0FnSUNBZ0x5OGdhVzF3YjNKMElHTnZibk4wY21GcGJuUnpYRzRnSUNBZ0lDQnBaaUFvWTI5dWMzUnlZV2x1ZEVSbFppNXliMnhzSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWTI5dWMzUnlZV2x1ZENBOUlIUm9hWE11WDJsdGNHOXlkRkp2Ykd4RGIyNXpkSEpoYVc1MEtHNXZaR1VzSUhSb2NtVmxUbTlrWlhNc0lHTnZibk4wY21GcGJuUkVaV1l1Y205c2JDazdYRzRnSUNBZ0lDQWdJRzFoYm1GblpYSXVZV1JrUTI5dWMzUnlZV2x1ZENoamIyNXpkSEpoYVc1MEtUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9ZMjl1YzNSeVlXbHVkRVJsWmk1aGFXMGdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmpiMjV6ZEhKaGFXNTBJRDBnZEdocGN5NWZhVzF3YjNKMFFXbHRRMjl1YzNSeVlXbHVkQ2h1YjJSbExDQjBhSEpsWlU1dlpHVnpMQ0JqYjI1emRISmhhVzUwUkdWbUxtRnBiU2s3WEc0Z0lDQWdJQ0FnSUcxaGJtRm5aWEl1WVdSa1EyOXVjM1J5WVdsdWRDaGpiMjV6ZEhKaGFXNTBLVHRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvWTI5dWMzUnlZV2x1ZEVSbFppNXliM1JoZEdsdmJpQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHTnZibk4wY21GcGJuUWdQU0IwYUdsekxsOXBiWEJ2Y25SU2IzUmhkR2x2YmtOdmJuTjBjbUZwYm5Rb2JtOWtaU3dnZEdoeVpXVk9iMlJsY3l3Z1kyOXVjM1J5WVdsdWRFUmxaaTV5YjNSaGRHbHZiaWs3WEc0Z0lDQWdJQ0FnSUcxaGJtRm5aWEl1WVdSa1EyOXVjM1J5WVdsdWRDaGpiMjV6ZEhKaGFXNTBLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJQzh2SUdsdWFYUWdZMjl1YzNSeVlXbHVkSE5jYmlBZ0lDQm5iSFJtTG5OalpXNWxMblZ3WkdGMFpVMWhkSEpwZUZkdmNteGtLQ2s3WEc0Z0lDQWdiV0Z1WVdkbGNpNXpaWFJKYm1sMFUzUmhkR1VvS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ0WVc1aFoyVnlPMXh1SUNCOVhHNWNiaUFnY0hKdmRHVmpkR1ZrSUY5cGJYQnZjblJTYjJ4c1EyOXVjM1J5WVdsdWRDaGNiaUFnSUNCa1pYTjBhVzVoZEdsdmJqb2dWRWhTUlVVdVQySnFaV04wTTBRc1hHNGdJQ0FnYm05a1pYTTZJRlJJVWtWRkxrOWlhbVZqZERORVcxMHNYRzRnSUNBZ2NtOXNiRU52Ym5OMGNtRnBiblJFWldZNklFTnZibk4wY21GcGJuUlRZMmhsYldFdVVtOXNiRU52Ym5OMGNtRnBiblFzWEc0Z0lDazZJRlpTVFZKdmJHeERiMjV6ZEhKaGFXNTBJSHRjYmlBZ0lDQmpiMjV6ZENCN0lITnZkWEpqWlRvZ2MyOTFjbU5sU1c1a1pYZ3NJSEp2Ykd4QmVHbHpMQ0IzWldsbmFIUWdmU0E5SUhKdmJHeERiMjV6ZEhKaGFXNTBSR1ZtTzF4dUlDQWdJR052Ym5OMElITnZkWEpqWlNBOUlHNXZaR1Z6VzNOdmRYSmpaVWx1WkdWNFhUdGNiaUFnSUNCamIyNXpkQ0JqYjI1emRISmhhVzUwSUQwZ2JtVjNJRlpTVFZKdmJHeERiMjV6ZEhKaGFXNTBLR1JsYzNScGJtRjBhVzl1TENCemIzVnlZMlVwTzF4dVhHNGdJQ0FnYVdZZ0tISnZiR3hCZUdseklDRTlJRzUxYkd3cElIdGNiaUFnSUNBZ0lHTnZibk4wY21GcGJuUXVjbTlzYkVGNGFYTWdQU0J5YjJ4c1FYaHBjenRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSGRsYVdkb2RDQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQmpiMjV6ZEhKaGFXNTBMbmRsYVdkb2RDQTlJSGRsYVdkb2REdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9kR2hwY3k1b1pXeHdaWEpTYjI5MEtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCb1pXeHdaWElnUFNCdVpYY2dWbEpOVG05a1pVTnZibk4wY21GcGJuUklaV3h3WlhJb1kyOXVjM1J5WVdsdWRDazdYRzRnSUNBZ0lDQjBhR2x6TG1obGJIQmxjbEp2YjNRdVlXUmtLR2hsYkhCbGNpazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUdOdmJuTjBjbUZwYm5RN1hHNGdJSDFjYmx4dUlDQndjbTkwWldOMFpXUWdYMmx0Y0c5eWRFRnBiVU52Ym5OMGNtRnBiblFvWEc0Z0lDQWdaR1Z6ZEdsdVlYUnBiMjQ2SUZSSVVrVkZMazlpYW1WamRETkVMRnh1SUNBZ0lHNXZaR1Z6T2lCVVNGSkZSUzVQWW1wbFkzUXpSRnRkTEZ4dUlDQWdJR0ZwYlVOdmJuTjBjbUZwYm5SRVpXWTZJRU52Ym5OMGNtRnBiblJUWTJobGJXRXVRV2x0UTI5dWMzUnlZV2x1ZEN4Y2JpQWdLVG9nVmxKTlFXbHRRMjl1YzNSeVlXbHVkQ0I3WEc0Z0lDQWdZMjl1YzNRZ2V5QnpiM1Z5WTJVNklITnZkWEpqWlVsdVpHVjRMQ0JoYVcxQmVHbHpMQ0IzWldsbmFIUWdmU0E5SUdGcGJVTnZibk4wY21GcGJuUkVaV1k3WEc0Z0lDQWdZMjl1YzNRZ2MyOTFjbU5sSUQwZ2JtOWtaWE5iYzI5MWNtTmxTVzVrWlhoZE8xeHVJQ0FnSUdOdmJuTjBJR052Ym5OMGNtRnBiblFnUFNCdVpYY2dWbEpOUVdsdFEyOXVjM1J5WVdsdWRDaGtaWE4wYVc1aGRHbHZiaXdnYzI5MWNtTmxLVHRjYmx4dUlDQWdJR2xtSUNoaGFXMUJlR2x6SUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBjbUZwYm5RdVlXbHRRWGhwY3lBOUlHRnBiVUY0YVhNN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoM1pXbG5hSFFnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnWTI5dWMzUnlZV2x1ZEM1M1pXbG5hSFFnUFNCM1pXbG5hSFE3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVhR1ZzY0dWeVVtOXZkQ2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdhR1ZzY0dWeUlEMGdibVYzSUZaU1RVNXZaR1ZEYjI1emRISmhhVzUwU0dWc2NHVnlLR052Ym5OMGNtRnBiblFwTzF4dUlDQWdJQ0FnZEdocGN5NW9aV3h3WlhKU2IyOTBMbUZrWkNob1pXeHdaWElwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQmpiMjV6ZEhKaGFXNTBPMXh1SUNCOVhHNWNiaUFnY0hKdmRHVmpkR1ZrSUY5cGJYQnZjblJTYjNSaGRHbHZia052Ym5OMGNtRnBiblFvWEc0Z0lDQWdaR1Z6ZEdsdVlYUnBiMjQ2SUZSSVVrVkZMazlpYW1WamRETkVMRnh1SUNBZ0lHNXZaR1Z6T2lCVVNGSkZSUzVQWW1wbFkzUXpSRnRkTEZ4dUlDQWdJSEp2ZEdGMGFXOXVRMjl1YzNSeVlXbHVkRVJsWmpvZ1EyOXVjM1J5WVdsdWRGTmphR1Z0WVM1U2IzUmhkR2x2YmtOdmJuTjBjbUZwYm5Rc1hHNGdJQ2s2SUZaU1RWSnZkR0YwYVc5dVEyOXVjM1J5WVdsdWRDQjdYRzRnSUNBZ1kyOXVjM1FnZXlCemIzVnlZMlU2SUhOdmRYSmpaVWx1WkdWNExDQjNaV2xuYUhRZ2ZTQTlJSEp2ZEdGMGFXOXVRMjl1YzNSeVlXbHVkRVJsWmp0Y2JpQWdJQ0JqYjI1emRDQnpiM1Z5WTJVZ1BTQnViMlJsYzF0emIzVnlZMlZKYm1SbGVGMDdYRzRnSUNBZ1kyOXVjM1FnWTI5dWMzUnlZV2x1ZENBOUlHNWxkeUJXVWsxU2IzUmhkR2x2YmtOdmJuTjBjbUZwYm5Rb1pHVnpkR2x1WVhScGIyNHNJSE52ZFhKalpTazdYRzVjYmlBZ0lDQnBaaUFvZDJWcFoyaDBJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJR052Ym5OMGNtRnBiblF1ZDJWcFoyaDBJRDBnZDJWcFoyaDBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2gwYUdsekxtaGxiSEJsY2xKdmIzUXBJSHRjYmlBZ0lDQWdJR052Ym5OMElHaGxiSEJsY2lBOUlHNWxkeUJXVWsxT2IyUmxRMjl1YzNSeVlXbHVkRWhsYkhCbGNpaGpiMjV6ZEhKaGFXNTBLVHRjYmlBZ0lDQWdJSFJvYVhNdWFHVnNjR1Z5VW05dmRDNWhaR1FvYUdWc2NHVnlLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z1kyOXVjM1J5WVdsdWREdGNiaUFnZlZ4dWZWeHVJbDBzSW01aGJXVnpJanBiSWw5Mk0wRWlMQ0pmZGpOQ0lpd2lYM0YxWVhSQklpd2lYM0YxWVhSQ0lsMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPenM3TzBGQlIwRXNUVUZCVFVFc1RVRkJTU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMEZCUlhCQ0xFMUJRVUVzZFVKQlFYZENMRk5CUVZFc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlFUdEJRVXQwUkN4SlFVRkJMRmRCUVVFc1EwRkJiVUlzVlVGQk5rSXNSVUZCUVR0QlFVTTVReXhSUVVGQkxFdEJRVXNzUlVGQlJTeERRVUZETzBGQlJWSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONFJpeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJRenRCUVVWd1JDeFJRVUZCTEUxQlFVMHNVVUZCVVN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExHTkJRV01zUlVGQlJTeERRVUZETzFGQlF6VkRMRkZCUVZFc1EwRkJReXhaUVVGWkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJRenRCUVVWMFJDeFJRVUZCTEUxQlFVMHNVVUZCVVN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVRkRPMEZCUXpORExGbEJRVUVzUzBGQlN5eEZRVUZGTEZGQlFWRTdRVUZEWml4WlFVRkJMRk5CUVZNc1JVRkJSU3hMUVVGTE8wRkJRMmhDTEZsQlFVRXNWVUZCVlN4RlFVRkZMRXRCUVVzN1FVRkRiRUlzVTBGQlFTeERRVUZETEVOQlFVTTdRVUZGU0N4UlFVRkJMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVU5vUkN4UlFVRkJMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUlhKQ0xGRkJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNSMEZCUnl4VlFVRlZMRU5CUVVNN1MwRkRPVUk3UVVGRlRTeEpRVUZCTEdsQ1FVRnBRaXhEUVVGRExFdEJRV1VzUlVGQlFUdFJRVU4wUTBFc1RVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVjBGQlZ5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMEZCUTNCRkxGRkJRVUVzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhGUVVGRlFTeE5RVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZRU3hOUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGUVN4TlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRmNrUXNVVUZCUVN4SlFVRkpMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUZGTzFsQlF6RkNRU3hOUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNN1FVRkRhRVVzVTBGQlFUdEJRVU5FTEZGQlFVRXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEZRVUZGUVN4TlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRlFTeE5RVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZRU3hOUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZGY2tRc1VVRkJRU3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkZkRU1zVVVGQlFTeExRVUZMTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdTMEZEYUVNN1FVRkRSanM3UVVNeFEyVXNVMEZCUVN4cFFrRkJhVUlzUTBGQk1FSXNUVUZCY1VJc1JVRkJSU3hOUVVGVExFVkJRVUU3U1VGRGVrWXNUMEZCVHl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYmtZN08wRkRSa0VzVFVGQlRVRXNUVUZCU1N4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlEycERMRTFCUVUxRExFMUJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVWcVFpeFRRVUZCTEdsQ1FVRnBRaXhEUVVFMlFpeE5RVUZ4UWl4RlFVRkZMRTFCUVZNc1JVRkJRVHRKUVVNMVJpeE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRSQ3hOUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGUXl4TlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOeVF5eEpRVUZCTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ096dEJRMDVCT3pzN096dEJRVXRITzBGQlEwY3NVMEZCVlN4blFrRkJaMElzUTBGQk5rSXNUVUZCVXl4RlFVRkJPMGxCUTNCRkxFbEJRVXNzVFVGQll5eERRVUZETEUxQlFVMHNSVUZCUlR0UlFVTXhRaXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdRVUZEYWtJc1MwRkJRVHRCUVVGTkxGTkJRVUU3VVVGRFNpeE5RVUZqTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkRNMElzUzBGQlFUdEJRVVZFTEVsQlFVRXNUMEZCVHl4TlFVRk5MRU5CUVVNN1FVRkRhRUk3TzBGRFpFRTdPMEZCUlVjN1RVRkRiVUlzYVVKQlFXbENMRU5CUVVFN1FVRnJRbkpET3pzN1FVRkhSenRKUVVOSUxGZEJRVzFDTEVOQlFVRXNWMEZCTWtJc1JVRkJSU3hOUVVGelFpeEZRVUZCTzBGQlEzQkZMRkZCUVVFc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eFhRVUZYTEVOQlFVTTdRVUZETDBJc1VVRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXp0QlFVVnlRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4RFFVRkRPMHRCUTI1Q08wRkJWMFk3TzBGRGNrTkVMRTFCUVUxRUxFMUJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVOcVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5xUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnFReXhOUVVGTlJTeFJRVUZOTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03UVVGRGRFTXNUVUZCVFVNc1VVRkJUU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMEZCUTNSRExFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8wRkJSWFJET3pzN08wRkJTVWM3UVVGRFJ5eE5RVUZQTEdkQ1FVRnBRaXhUUVVGUkxHbENRVUZwUWl4RFFVRkJPMEZCUTNKRU96dEJRVVZITzBGQlEwZ3NTVUZCUVN4SlFVRlhMRTlCUVU4c1IwRkJRVHRSUVVOb1FpeFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN1MwRkRkRUk3UVVGRlJEczdRVUZGUnp0SlFVTklMRWxCUVZjc1QwRkJUeXhEUVVGRExFOUJRVEJHTEVWQlFVRTdRVUZETTBjc1VVRkJRU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEU5QlFVOHNRMEZCUXp0QlFVTjRRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNSMEZCUnl4RFFVTnFRaXhQUVVGUExFdEJRVXNzVjBGQlZ5eEhRVUZITEVkQlFVY3NSMEZCUnl4UFFVRlBMRXRCUVVzc1YwRkJWeXhIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEVkQlFVY3NSVUZEY0VVc1QwRkJUeXhMUVVGTExGZEJRVmNzUjBGQlJ5eEhRVUZITEVkQlFVY3NUMEZCVHl4TFFVRkxMRmRCUVZjc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVWQlEzQkZMRTlCUVU4c1MwRkJTeXhYUVVGWExFZEJRVWNzUjBGQlJ5eEhRVUZITEU5QlFVOHNTMEZCU3l4WFFVRlhMRWRCUVVjc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVU55UlN4RFFVRkRPMHRCUTBnN1FVRnBRa1FzU1VGQlFTeEpRVUZYTEZsQlFWa3NSMEZCUVR0UlFVTnlRaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCYVVJc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVVnVSQ3hSUVVGQkxFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4TlFVRk5MRVZCUVVVN1dVRkRNMElzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlEyeERMRk5CUVVFN1FVRkZSQ3hSUVVGQkxFOUJRVThzUjBGQlJ5eERRVUZETzB0QlExbzdTVUZGUkN4WFFVRnRRaXhEUVVGQkxGZEJRVEpDTEVWQlFVVXNUVUZCYzBJc1JVRkJRVHRCUVVOd1JTeFJRVUZCTEV0QlFVc3NRMEZCUXl4WFFVRlhMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRk0wSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExGZEJRVmNzUTBGQlF6dEJRVU0xUWl4UlFVRkJMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGTjBNc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRMUVVNMVF6dEpRVVZOTEZsQlFWa3NSMEZCUVR0UlFVTnFRaXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzB0QlEzSkVPMGxCUlUwc1RVRkJUU3hIUVVGQk96dFJRVVZZTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJRMmhFTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE96dEJRVWN6UXl4UlFVRkJMRTFCUVUwc2EwSkJRV3RDTEVkQlFVZEVMRkZCUVUwc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU0zUXl4UlFVRkJMRTFCUVUwc2NVSkJRWEZDTEVkQlFVZERMRkZCUVUwc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU5vUkN4UlFVRkJMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eE5RVUZOTEVWQlFVVTdXVUZETTBJc2FVSkJRV2xDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEd0Q1FVRnJRaXhEUVVGRExFTkJRVU03V1VGRE0wVXNaMEpCUVdkQ0xFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOc1JTeFRRVUZCT3p0UlFVZEVMRTFCUVUwc1JVRkJSU3hIUVVGSFNDeE5RVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eGxRVUZsTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExHVkJRV1VzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8xRkJRemRITEUxQlFVMHNSVUZCUlN4SFFVRkhMR2xDUVVGcFFpeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhGUVVGRkxFbEJRVWtzUTBGQlF6dGhRVU40UkN4SFFVRkhMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhYUVVGWExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdRVUZETVVRc1lVRkJRU3hUUVVGVExFVkJRVVVzUTBGQlF6czdVVUZIWml4TlFVRk5MRlZCUVZVc1IwRkJSeXhOUVVGTk8wRkJRM1JDTEdGQlFVRXNhMEpCUVd0Q0xFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXp0aFFVTXhRaXhYUVVGWExFTkJRVU1zY1VKQlFYRkNMRU5CUVVNN1lVRkRiRU1zVVVGQlVTeERRVUZETEd0Q1FVRnJRaXhEUVVGRE8wRkJRelZDTEdGQlFVRXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6czdVVUZITDBJc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNWVUZCVlN4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dExRVU53Ump0QlFVTkdPenRCUTNwSFJEdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCYjBkQk8wRkJRMDhzVTBGQlV5eFRRVUZUTEVOQlFVTXNUMEZCVHl4RlFVRkZMRlZCUVZVc1JVRkJSU3hEUVVGRExFVkJRVVVzVTBGQlV5eEZRVUZGTzBGQlF6ZEVMRWxCUVVrc1UwRkJVeXhMUVVGTExFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVXNUMEZCVHl4TFFVRkxMRmxCUVZrc1EwRkJReXhIUVVGSExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4VlFVRlZMRTlCUVU4c1JVRkJSU3hGUVVGRkxFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRk8wRkJRMmhJTEVsQlFVa3NUMEZCVHl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEVWQlFVVXNWVUZCVlN4UFFVRlBMRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJReTlFTEZGQlFWRXNVMEZCVXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVOdVJ5eFJRVUZSTEZOQlFWTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVOMFJ5eFJRVUZSTEZOQlFWTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNc1JVRkJSVHRCUVVOMFNDeFJRVUZSTEVsQlFVa3NRMEZCUXl4RFFVRkRMRk5CUVZNc1IwRkJSeXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlN4VlFVRlZMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTTVSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEJRVU5RT3p0QlEzaElRVHM3T3pzN08wRkJUVWM3UVVGRFlTeFRRVUZCTEhsQ1FVRjVRaXhEUVVGRExFMUJRWE5DTEVWQlFVVXNVVUZCTUVNc1JVRkJRVHRCUVVNeFJ5eEpRVUZCTEUxQlFVMHNVMEZCVXl4SFFVRnhRaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlJUZERMRWxCUVVFc1NVRkJTU3hKUVVGSkxFZEJRVEJDTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRhRVFzVDBGQlR5eEpRVUZKTEV0QlFVc3NTVUZCU1N4RlFVRkZPMEZCUTNCQ0xGRkJRVUVzVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVONFFpeFJRVUZCTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRM0JDTEV0QlFVRTdRVUZGUkN4SlFVRkJMRk5CUVZNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eFJRVUZSTEV0QlFVazdVVUZETjBJc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBGQlEzSkNMRXRCUVVNc1EwRkJReXhEUVVGRE8wRkJRMHc3TzAxRGFrSmhMSGRDUVVGM1FpeERRVUZCTzBGQlFYSkRMRWxCUVVFc1YwRkJRU3hIUVVGQk8wRkJRMVVzVVVGQlFTeEpRVUZCTEVOQlFVRXNXVUZCV1N4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGeFFpeERRVUZETzBGQlN6VkRMRkZCUVVFc1NVRkJRU3hEUVVGQkxIRkNRVUZ4UWl4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVFd1F5eERRVUZETzB0QlowWnVSanRCUVhCR1F5eEpRVUZCTEVsQlFWY3NWMEZCVnl4SFFVRkJPMUZCUTNCQ0xFOUJRVThzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXp0TFFVTXhRanRCUVVsTkxFbEJRVUVzWVVGQllTeERRVUZETEZWQlFUWkNMRVZCUVVFN1FVRkRhRVFzVVVGQlFTeEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dEJRVVZzUXl4UlFVRkJMRWxCUVVrc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlZTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMUZCUTNaRkxFbEJRVWtzVTBGQlV5eEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTnlRaXhaUVVGQkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCY1VJc1EwRkJRenRaUVVONlF5eEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNRMEZCUXl4WFFVRlhMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03UVVGRGJrVXNVMEZCUVR0QlFVTkVMRkZCUVVFc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0TFFVTXpRanRCUVVWTkxFbEJRVUVzWjBKQlFXZENMRU5CUVVNc1ZVRkJOa0lzUlVGQlFUdEJRVU51UkN4UlFVRkJMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMEZCUlhKRExGRkJRVUVzVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1YwRkJWeXhEUVVGRkxFTkJRVU03UVVGRE1VVXNVVUZCUVN4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzB0QlF6bENPMGxCUlUwc1dVRkJXU3hIUVVGQk8wRkJRMnBDTEZGQlFVRXNUVUZCVFN4blFrRkJaMElzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCY1VJc1EwRkJRenRCUVVOMFJDeFJRVUZCTEUxQlFVMHNaVUZCWlN4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGeFFpeERRVUZETzBGQlJYSkVMRkZCUVVFc1MwRkJTeXhOUVVGTkxGVkJRVlVzU1VGQlNTeEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZPMEZCUXpGRExGbEJRVUVzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExGVkJRVlVzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3hsUVVGbExFVkJRVVVzUTBGQlF5eFZRVUZWTEV0QlFVc3NWVUZCVlN4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGJrZ3NVMEZCUVR0TFFVTkdPMGxCUlUwc1RVRkJUU3hIUVVGQk8wRkJRMWdzVVVGQlFTeE5RVUZOTEdkQ1FVRm5RaXhIUVVGSExFbEJRVWtzUjBGQlJ5eEZRVUZ4UWl4RFFVRkRPMEZCUTNSRUxGRkJRVUVzVFVGQlRTeGxRVUZsTEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVhGQ0xFTkJRVU03UVVGRmNrUXNVVUZCUVN4TFFVRkxMRTFCUVUwc1ZVRkJWU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVTdRVUZETVVNc1dVRkJRU3hKUVVGSkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1ZVRkJWU3hGUVVGRkxHZENRVUZuUWl4RlFVRkZMR1ZCUVdVc1JVRkJSU3hEUVVGRExGVkJRVlVzUzBGQlN5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVNM1J5eFRRVUZCTzB0QlEwWTdRVUZGUkRzN096czdPenM3T3p0QlFWVkhPMEZCUTBzc1NVRkJRU3hyUWtGQmEwSXNRMEZEZUVJc1ZVRkJOa0lzUlVGRE4wSXNaMEpCUVhkRExFVkJRM2hETEdWQlFYVkRMRVZCUTNaRExGRkJRV2xFTEVWQlFVRTdRVUZGYWtRc1VVRkJRU3hKUVVGSkxHVkJRV1VzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVN1dVRkRia01zVDBGQlR6dEJRVU5TTEZOQlFVRTdRVUZGUkN4UlFVRkJMRWxCUVVrc1owSkJRV2RDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRk8wRkJRM0JETEZsQlFVRXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXh0UmtGQmJVWXNRMEZCUXl4RFFVRkRPMEZCUTNSSExGTkJRVUU3UVVGRFJDeFJRVUZCTEdkQ1FVRm5RaXhEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0QlFVVnFReXhSUVVGQkxFMUJRVTBzVlVGQlZTeEhRVUZITEZWQlFWVXNRMEZCUXl4WlFVRlpMRU5CUVVNN1FVRkRNME1zVVVGQlFTeExRVUZMTEUxQlFVMHNVMEZCVXl4SlFVRkpMRlZCUVZVc1JVRkJSVHRCUVVOc1F5eFpRVUZCTEhsQ1FVRjVRaXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEdsQ1FVRnBRaXhMUVVGSk8yZENRVU42UkN4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1IwRkJSeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNN1FVRkRjRVVzWjBKQlFVRXNTVUZCU1N4VFFVRlRMRVZCUVVVN1FVRkRZaXh2UWtGQlFTeExRVUZMTEUxQlFVMHNZVUZCWVN4SlFVRkpMRk5CUVZNc1JVRkJSVHQzUWtGRGNrTXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEdGQlFXRXNSVUZCUlN4blFrRkJaMElzUlVGQlJTeGxRVUZsTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1FVRkRja1lzY1VKQlFVRTdRVUZEUml4cFFrRkJRVHRCUVVOSUxHRkJRVU1zUTBGQlF5eERRVUZETzBGQlEwb3NVMEZCUVR0UlFVVkVMRkZCUVZFc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dEJRVVZ5UWl4UlFVRkJMR1ZCUVdVc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdTMEZEYWtNN1FVRkRSanM3UVVOMFJrUXNUVUZCVFVVc1VVRkJUU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMEZCUTNSRExFMUJRVTFETEZGQlFVMHNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF6dEJRVVYwUXpzN096dEJRVWxITzBGQlEwY3NUVUZCVHl4eFFrRkJjMElzVTBGQlVTeHBRa0ZCYVVJc1EwRkJRVHRCUVZjeFJDeEpRVUZCTEVsQlFWY3NXVUZCV1N4SFFVRkJPMUZCUTNKQ0xFOUJRVThzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dExRVU12UWp0SlFVVkVMRmRCUVcxQ0xFTkJRVUVzVjBGQk1rSXNSVUZCUlN4TlFVRnpRaXhGUVVGQk8wRkJRM0JGTEZGQlFVRXNTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVVV6UWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMUZCUXpORExFbEJRVWtzUTBGQlF5eGxRVUZsTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03UzBGREwwTTdTVUZGVFN4WlFVRlpMRWRCUVVFN1VVRkRha0lzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0QlFVTndSQ3hSUVVGQkxHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF6dExRVU55UlR0SlFVVk5MRTFCUVUwc1IwRkJRVHM3UVVGRldDeFJRVUZCTEUxQlFVMHNXVUZCV1N4SFFVRkhSQ3hSUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenM3UVVGSGVFWXNVVUZCUVN4TlFVRk5MRlZCUVZVc1IwRkJSME1zVVVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPenRSUVVkNlJTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhWUVVGVkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMHRCUTNCR08wRkJRMFk3TzBGRE4wTkVMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJwRExFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8wRkJRM1JETEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzBGQlJYUkRPenM3TzBGQlNVYzdRVUZEUnl4TlFVRlBMR2xDUVVGclFpeFRRVUZSTEdsQ1FVRnBRaXhEUVVGQk8wRkJRM1JFT3p0QlFVVkhPMEZCUTBnc1NVRkJRU3hKUVVGWExGRkJRVkVzUjBGQlFUdFJRVU5xUWl4UFFVRlBMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU03UzBGRGRrSTdRVUZGUkRzN1FVRkZSenRKUVVOSUxFbEJRVmNzVVVGQlVTeERRVUZETEZGQlFYbENMRVZCUVVFN1FVRkRNME1zVVVGQlFTeEpRVUZKTEVOQlFVTXNVMEZCVXl4SFFVRkhMRkZCUVZFc1EwRkJRenRCUVVNeFFpeFJRVUZCTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExGRkJRVkVzUzBGQlN5eEhRVUZITEVkQlFVY3NSMEZCUnl4SFFVRkhMRWRCUVVjc1JVRkJSU3hSUVVGUkxFdEJRVXNzUjBGQlJ5eEhRVUZITEVkQlFVY3NSMEZCUnl4SFFVRkhMRVZCUVVVc1VVRkJVU3hMUVVGTExFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1MwRkRhRWc3UVVFeVFrUXNTVUZCUVN4SlFVRlhMRmxCUVZrc1IwRkJRVHRSUVVOeVFpeFBRVUZQTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdTMEZETDBJN1NVRkZSQ3hYUVVGdFFpeERRVUZCTEZkQlFUSkNMRVZCUVVVc1RVRkJjMElzUlVGQlFUdEJRVU53UlN4UlFVRkJMRXRCUVVzc1EwRkJReXhYUVVGWExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdRVUZGTTBJc1VVRkJRU3hKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEVkQlFVY3NRMEZCUXp0QlFVTnlRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZPVU1zU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF6dFJRVU16UXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMUZCUXpsRExFbEJRVWtzUTBGQlF5dzJRa0ZCTmtJc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXp0TFFVTTNSRHRKUVVWTkxGbEJRVmtzUjBGQlFUdFJRVU5xUWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wRkJRM0JFTEZGQlFVRXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETDBRc1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRFpDUVVFMlFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dExRVU12Unp0SlFVVk5MRTFCUVUwc1IwRkJRVHM3UVVGRldEczdPenM3T3pzN096czdPenM3T3p0QlFXZENSenRSUVVOSUxFMUJRVTBzVTBGQlV5eEhRVUZITEUxQlFVMDdRVUZEY2tJc1lVRkJRU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXp0QlFVTXhRaXhoUVVGQkxGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJRenRCUVVOb1F5eGhRVUZCTEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc05rSkJRVFpDTEVOQlFVTXNRMEZCUXpzN1FVRkhhRVFzVVVGQlFTeE5RVUZOTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4bFFVRmxMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03UVVGRmJFVTdPenM3T3p0QlFVMUhPMEZCUTBnc1VVRkJRU3hOUVVGTkxGVkJRVlVzUjBGQlJ5eE5RVUZOTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUlVGQlJTeEZRVUZGTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenM3UVVGSGJrVXNVVUZCUVN4TlFVRk5MRlZCUVZVc1IwRkJSeXhWUVVGVkxFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdPMUZCUjJwR0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRlZCUVZVc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTMEZEY0VZN1FVRkRSanM3UVVNeFIwUTdPMEZCUlVjN1FVRkRTQ3hOUVVGTkxITkNRVUZ6UWl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1RVRkZMME1zTmtKQlFUWkNMRU5CUVVFN1FVRlplRU1zU1VGQlFTeEpRVUZYTEVsQlFVa3NSMEZCUVR0UlFVTmlMRTlCUVU4c05rSkJRVFpDTEVOQlFVTXNZMEZCWXl4RFFVRkRPMHRCUTNKRU8wbEJSVVFzVjBGQmJVSXNRMEZCUVN4TlFVRnJRaXhGUVVGRkxFOUJRVGhETEVWQlFVRTdRVUZEYmtZc1VVRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXp0UlFVVnlRaXhKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEU5QlFVOHNTMEZCUVN4SlFVRkJMRWxCUVZBc1QwRkJUeXhMUVVGUUxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRTlCUVU4c1EwRkJSU3hWUVVGVkxFTkJRVU03UzBGRGRrTTdRVUZGV1N4SlFVRkJMRk5CUVZNc1EwRkJReXhKUVVGVkxFVkJRVUU3TzBGQlF5OUNMRmxCUVVFc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eDNRa0ZCZDBJc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1UwRkRia1VzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZCUVR0QlFVVkVPenM3T3p0QlFVdEhPMEZCUTJFc1NVRkJRU3hQUVVGUExFTkJRVU1zU1VGQlZTeEZRVUZCT3pzN1FVRkRhRU1zV1VGQlFTeE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRWGRDTEVOQlFVTTdPMEZCUjJ4RUxGbEJRVUVzVFVGQlRTeHBRa0ZCYVVJc1IwRkJSeXhEUVVGQkxFTkJRVUVzUlVGQlFTeEhRVUZCTEVsQlFVa3NRMEZCUXl4alFVRmpMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVVVzVDBGQlR5eERRVUZETERaQ1FVRTJRaXhEUVVGRExHTkJRV01zUTBGQlF5eE5RVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpWSExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSVHRCUVVOMFFpeG5Ra0ZCUVN4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOaUxHRkJRVUU3UVVGRlJDeFpRVUZCTEUxQlFVMHNUMEZCVHl4SFFVRkhMRWxCUVVrc2QwSkJRWGRDTEVWQlFVVXNRMEZCUXp0WlFVTXZReXhOUVVGTkxGVkJRVlVzUjBGQmNVSXNUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHVkJRV1VzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXpzN1dVRkhMMFVzVlVGQlZTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hUUVVGVExFdEJRVWs3TzJkQ1FVTnlReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE96dEJRVWN4UXl4blFrRkJRU3hOUVVGTkxGTkJRVk1zUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4VlFVRlZMR0ZCUVZZc1ZVRkJWU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRldMRlZCUVZVc1EwRkJSU3hWUVVGVkxFMUJRVWNzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVRXNOa0pCUVRaQ0xFTkJRVU1zWTBGQll5eERRVVV4UlN4RFFVRkRPMmRDUVVWa0xFbEJRVWtzVTBGQlV5eEpRVUZKTEVsQlFVa3NSVUZCUlR0dlFrRkRja0lzVDBGQlR6dEJRVU5TTEdsQ1FVRkJPMEZCUlVRc1owSkJRVUVzVFVGQlRTeFhRVUZYTEVkQlFVY3NVMEZCVXl4RFFVRkRMRmRCUVZjc1EwRkJRenRCUVVNeFF5eG5Ra0ZCUVN4SlFVRkpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNSMEZCUnl4RFFVRkRMRmRCUVZjc1EwRkJReXhGUVVGRk8yOUNRVU0xUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVOV0xFTkJRVEJETEhWRFFVRkJMRVZCUVVFc05rSkJRVFpDTEVOQlFVTXNZMEZCWXl4RFFVRnBRaXhqUVVGQkxFVkJRVUVzVjBGQlZ5eERRVUZITEVOQlFVRXNRMEZCUVN4RFFVTjBTQ3hEUVVGRE8yOUNRVU5HTEU5QlFVODdRVUZEVWl4cFFrRkJRVHRCUVVWRUxHZENRVUZCTEUxQlFVMHNZVUZCWVN4SFFVRkhMRk5CUVZNc1EwRkJReXhWUVVGVkxFTkJRVU03TzBGQlJ6TkRMR2RDUVVGQkxFbEJRVWtzWVVGQllTeERRVUZETEVsQlFVa3NTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRPVUlzYjBKQlFVRXNUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hWUVVGVkxFVkJRVVVzWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUTNCR0xHOUNRVUZCTEU5QlFVOHNRMEZCUXl4aFFVRmhMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03UVVGRGJrTXNhVUpCUVVFN1FVRkJUU3h4UWtGQlFTeEpRVUZKTEdGQlFXRXNRMEZCUXl4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRk8wRkJRM0JETEc5Q1FVRkJMRTFCUVUwc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhKUVVGSkxFVkJRVVVzVlVGQlZTeEZRVUZGTEdGQlFXRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVOc1JpeHZRa0ZCUVN4UFFVRlBMRU5CUVVNc1lVRkJZU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzBGQlEyNURMR2xDUVVGQk8wRkJRVTBzY1VKQlFVRXNTVUZCU1N4aFFVRmhMRU5CUVVNc1VVRkJVU3hKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU42UXl4dlFrRkJRU3hOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNlVUpCUVhsQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTEZWQlFWVXNSVUZCUlN4aFFVRmhMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03UVVGRE5VWXNiMEpCUVVFc1QwRkJUeXhEUVVGRExHRkJRV0VzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0QlFVTnVReXhwUWtGQlFUdEJRVU5JTEdGQlFVTXNRMEZCUXl4RFFVRkRPenRCUVVkSUxGbEJRVUVzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeERRVUZETzFsQlF5OUNMRTlCUVU4c1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF6dEJRVVYyUWl4WlFVRkJMRTlCUVU4c1QwRkJUeXhEUVVGRE96dEJRVU5vUWl4TFFVRkJPMEZCUlZNc1NVRkJRU3h4UWtGQmNVSXNRMEZETjBJc1YwRkJNa0lzUlVGRE0wSXNTMEZCZFVJc1JVRkRka0lzYVVKQlFXdEVMRVZCUVVFN1VVRkZiRVFzVFVGQlRTeEZRVUZGTEUxQlFVMHNSVUZCUlN4WFFVRlhMRVZCUVVVc1VVRkJVU3hGUVVGRkxFMUJRVTBzUlVGQlJTeEhRVUZITEdsQ1FVRnBRaXhEUVVGRE8wRkJRM0JGTEZGQlFVRXNUVUZCVFN4TlFVRk5MRWRCUVVjc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzFGQlEyeERMRTFCUVUwc1ZVRkJWU3hIUVVGSExFbEJRVWtzYVVKQlFXbENMRU5CUVVNc1YwRkJWeXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFGQlJUbEVMRWxCUVVrc1VVRkJVU3hKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU53UWl4WlFVRkJMRlZCUVZVc1EwRkJReXhSUVVGUkxFZEJRVWNzVVVGQlVTeERRVUZETzBGQlEyaERMRk5CUVVFN1VVRkRSQ3hKUVVGSkxFMUJRVTBzU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZEYkVJc1dVRkJRU3hWUVVGVkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXp0QlFVTTFRaXhUUVVGQk8xRkJSVVFzU1VGQlNTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZPMEZCUTI1Q0xGbEJRVUVzVFVGQlRTeE5RVUZOTEVkQlFVY3NTVUZCU1N4MVFrRkJkVUlzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0QlFVTjJSQ3haUVVGQkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRemRDTEZOQlFVRTdRVUZGUkN4UlFVRkJMRTlCUVU4c1ZVRkJWU3hEUVVGRE8wdEJRMjVDTzBGQlJWTXNTVUZCUVN4dlFrRkJiMElzUTBGRE5VSXNWMEZCTWtJc1JVRkRNMElzUzBGQmRVSXNSVUZEZGtJc1owSkJRV2RFTEVWQlFVRTdVVUZGYUVRc1RVRkJUU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFhRVUZYTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTFCUVUwc1JVRkJSU3hIUVVGSExHZENRVUZuUWl4RFFVRkRPMEZCUTJ4RkxGRkJRVUVzVFVGQlRTeE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8xRkJRMnhETEUxQlFVMHNWVUZCVlN4SFFVRkhMRWxCUVVrc1owSkJRV2RDTEVOQlFVTXNWMEZCVnl4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJSVGRFTEVsQlFVa3NUMEZCVHl4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOdVFpeFpRVUZCTEZWQlFWVXNRMEZCUXl4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8wRkJRemxDTEZOQlFVRTdVVUZEUkN4SlFVRkpMRTFCUVUwc1NVRkJTU3hKUVVGSkxFVkJRVVU3UVVGRGJFSXNXVUZCUVN4VlFVRlZMRU5CUVVNc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF6dEJRVU0xUWl4VFFVRkJPMUZCUlVRc1NVRkJTU3hKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTzBGQlEyNUNMRmxCUVVFc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeDFRa0ZCZFVJc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dEJRVU4yUkN4WlFVRkJMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUXpkQ0xGTkJRVUU3UVVGRlJDeFJRVUZCTEU5QlFVOHNWVUZCVlN4RFFVRkRPMHRCUTI1Q08wRkJSVk1zU1VGQlFTeDVRa0ZCZVVJc1EwRkRha01zVjBGQk1rSXNSVUZETTBJc1MwRkJkVUlzUlVGRGRrSXNjVUpCUVRCRUxFVkJRVUU3VVVGRk1VUXNUVUZCVFN4RlFVRkZMRTFCUVUwc1JVRkJSU3hYUVVGWExFVkJRVVVzVFVGQlRTeEZRVUZGTEVkQlFVY3NjVUpCUVhGQ0xFTkJRVU03UVVGRE9VUXNVVUZCUVN4TlFVRk5MRTFCUVUwc1IwRkJSeXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdVVUZEYkVNc1RVRkJUU3hWUVVGVkxFZEJRVWNzU1VGQlNTeHhRa0ZCY1VJc1EwRkJReXhYUVVGWExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdVVUZGYkVVc1NVRkJTU3hOUVVGTkxFbEJRVWtzU1VGQlNTeEZRVUZGTzBGQlEyeENMRmxCUVVFc1ZVRkJWU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTTdRVUZETlVJc1UwRkJRVHRSUVVWRUxFbEJRVWtzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlR0QlFVTnVRaXhaUVVGQkxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NkVUpCUVhWQ0xFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdRVUZEZGtRc1dVRkJRU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNM1FpeFRRVUZCTzBGQlJVUXNVVUZCUVN4UFFVRlBMRlZCUVZVc1EwRkJRenRMUVVOdVFqczdRVUY2U25OQ0xEWkNRVUZqTEVOQlFVRXNZMEZCUVN4SFFVRkhMSE5DUVVGelFqczdPenNpZlE9PVxuIiwiLyohXG4gKiBAcGl4aXYvdGhyZWUtdnJtLXNwcmluZ2JvbmUgdjIuMC42XG4gKiBTcHJpbmcgYm9uZSBtb2R1bGUgZm9yIEBwaXhpdi90aHJlZS12cm1cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyMyBwaXhpdiBJbmMuXG4gKiBAcGl4aXYvdGhyZWUtdnJtLXNwcmluZ2JvbmUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgTUlUIExpY2Vuc2VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9waXhpdi90aHJlZS12cm0vYmxvYi9yZWxlYXNlL0xJQ0VOU0VcbiAqL1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzaGFwZSBvZiBhIGNvbGxpZGVyLlxuICovXG5jbGFzcyBWUk1TcHJpbmdCb25lQ29sbGlkZXJTaGFwZSB7XG59XG5cbmNvbnN0IF92M0EkNCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jb25zdCBfdjNCJDEgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY2xhc3MgVlJNU3ByaW5nQm9uZUNvbGxpZGVyU2hhcGVDYXBzdWxlIGV4dGVuZHMgVlJNU3ByaW5nQm9uZUNvbGxpZGVyU2hhcGUge1xuICAgIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gJ2NhcHN1bGUnO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihwYXJhbXMpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gKF9hID0gcGFyYW1zID09PSBudWxsIHx8IHBhcmFtcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFyYW1zLm9mZnNldCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbmV3IFRIUkVFLlZlY3RvcjMoMC4wLCAwLjAsIDAuMCk7XG4gICAgICAgIHRoaXMudGFpbCA9IChfYiA9IHBhcmFtcyA9PT0gbnVsbCB8fCBwYXJhbXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhcmFtcy50YWlsKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBuZXcgVEhSRUUuVmVjdG9yMygwLjAsIDAuMCwgMC4wKTtcbiAgICAgICAgdGhpcy5yYWRpdXMgPSAoX2MgPSBwYXJhbXMgPT09IG51bGwgfHwgcGFyYW1zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJhbXMucmFkaXVzKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwLjA7XG4gICAgfVxuICAgIGNhbGN1bGF0ZUNvbGxpc2lvbihjb2xsaWRlck1hdHJpeCwgb2JqZWN0UG9zaXRpb24sIG9iamVjdFJhZGl1cywgdGFyZ2V0KSB7XG4gICAgICAgIF92M0EkNC5jb3B5KHRoaXMub2Zmc2V0KS5hcHBseU1hdHJpeDQoY29sbGlkZXJNYXRyaXgpOyAvLyB0cmFuc2Zvcm1lZCBoZWFkXG4gICAgICAgIF92M0IkMS5jb3B5KHRoaXMudGFpbCkuYXBwbHlNYXRyaXg0KGNvbGxpZGVyTWF0cml4KTsgLy8gdHJhbnNmb3JtZWQgdGFpbFxuICAgICAgICBfdjNCJDEuc3ViKF92M0EkNCk7IC8vIGZyb20gaGVhZCB0byB0YWlsXG4gICAgICAgIGNvbnN0IGxlbmd0aFNxQ2Fwc3VsZSA9IF92M0IkMS5sZW5ndGhTcSgpO1xuICAgICAgICB0YXJnZXQuY29weShvYmplY3RQb3NpdGlvbikuc3ViKF92M0EkNCk7IC8vIGZyb20gaGVhZCB0byBvYmplY3RcbiAgICAgICAgY29uc3QgZG90ID0gX3YzQiQxLmRvdCh0YXJnZXQpOyAvLyBkb3QgcHJvZHVjdCBvZiBvZmZzZXRUb1RhaWwgYW5kIG9mZnNldFRvT2JqZWN0XG4gICAgICAgIGlmIChkb3QgPD0gMC4wKSA7XG4gICAgICAgIGVsc2UgaWYgKGxlbmd0aFNxQ2Fwc3VsZSA8PSBkb3QpIHtcbiAgICAgICAgICAgIC8vIGlmIG9iamVjdCBpcyBuZWFyIGZyb20gdGhlIHRhaWxcbiAgICAgICAgICAgIHRhcmdldC5zdWIoX3YzQiQxKTsgLy8gZnJvbSB0YWlsIHRvIG9iamVjdFxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaWYgb2JqZWN0IGlzIGJldHdlZW4gdHdvIGVuZHNcbiAgICAgICAgICAgIF92M0IkMS5tdWx0aXBseVNjYWxhcihkb3QgLyBsZW5ndGhTcUNhcHN1bGUpOyAvLyBmcm9tIGhlYWQgdG8gdGhlIG5lYXJlc3QgcG9pbnQgb2YgdGhlIHNoYWZ0XG4gICAgICAgICAgICB0YXJnZXQuc3ViKF92M0IkMSk7IC8vIGZyb20gdGhlIHNoYWZ0IHBvaW50IHRvIG9iamVjdFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJhZGl1cyA9IG9iamVjdFJhZGl1cyArIHRoaXMucmFkaXVzO1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IHRhcmdldC5sZW5ndGgoKSAtIHJhZGl1cztcbiAgICAgICAgdGFyZ2V0Lm5vcm1hbGl6ZSgpO1xuICAgICAgICByZXR1cm4gZGlzdGFuY2U7XG4gICAgfVxufVxuXG5jbGFzcyBWUk1TcHJpbmdCb25lQ29sbGlkZXJTaGFwZVNwaGVyZSBleHRlbmRzIFZSTVNwcmluZ0JvbmVDb2xsaWRlclNoYXBlIHtcbiAgICBnZXQgdHlwZSgpIHtcbiAgICAgICAgcmV0dXJuICdzcGhlcmUnO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihwYXJhbXMpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5vZmZzZXQgPSAoX2EgPSBwYXJhbXMgPT09IG51bGwgfHwgcGFyYW1zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJhbXMub2Zmc2V0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBuZXcgVEhSRUUuVmVjdG9yMygwLjAsIDAuMCwgMC4wKTtcbiAgICAgICAgdGhpcy5yYWRpdXMgPSAoX2IgPSBwYXJhbXMgPT09IG51bGwgfHwgcGFyYW1zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJhbXMucmFkaXVzKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwLjA7XG4gICAgfVxuICAgIGNhbGN1bGF0ZUNvbGxpc2lvbihjb2xsaWRlck1hdHJpeCwgb2JqZWN0UG9zaXRpb24sIG9iamVjdFJhZGl1cywgdGFyZ2V0KSB7XG4gICAgICAgIHRhcmdldC5jb3B5KHRoaXMub2Zmc2V0KS5hcHBseU1hdHJpeDQoY29sbGlkZXJNYXRyaXgpOyAvLyB0cmFuc2Zvcm1lZCBvZmZzZXRcbiAgICAgICAgdGFyZ2V0Lm5lZ2F0ZSgpLmFkZChvYmplY3RQb3NpdGlvbik7IC8vIGEgdmVjdG9yIGZyb20gY29sbGlkZXIgY2VudGVyIHRvIG9iamVjdCBwb3NpdGlvblxuICAgICAgICBjb25zdCByYWRpdXMgPSBvYmplY3RSYWRpdXMgKyB0aGlzLnJhZGl1cztcbiAgICAgICAgY29uc3QgZGlzdGFuY2UgPSB0YXJnZXQubGVuZ3RoKCkgLSByYWRpdXM7XG4gICAgICAgIHRhcmdldC5ub3JtYWxpemUoKTtcbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlO1xuICAgIH1cbn1cblxuY29uc3QgX3YzQSQzID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNsYXNzIENvbGxpZGVyU2hhcGVDYXBzdWxlQnVmZmVyR2VvbWV0cnkgZXh0ZW5kcyBUSFJFRS5CdWZmZXJHZW9tZXRyeSB7XG4gICAgY29uc3RydWN0b3Ioc2hhcGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy53b3JsZFNjYWxlID0gMS4wO1xuICAgICAgICB0aGlzLl9jdXJyZW50UmFkaXVzID0gMDtcbiAgICAgICAgdGhpcy5fY3VycmVudE9mZnNldCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRUYWlsID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICAgICAgdGhpcy5fc2hhcGUgPSBzaGFwZTtcbiAgICAgICAgdGhpcy5fYXR0clBvcyA9IG5ldyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUobmV3IEZsb2F0MzJBcnJheSgzOTYpLCAzKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgdGhpcy5fYXR0clBvcyk7XG4gICAgICAgIHRoaXMuX2F0dHJJbmRleCA9IG5ldyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUobmV3IFVpbnQxNkFycmF5KDI2NCksIDEpO1xuICAgICAgICB0aGlzLnNldEluZGV4KHRoaXMuX2F0dHJJbmRleCk7XG4gICAgICAgIHRoaXMuX2J1aWxkSW5kZXgoKTtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG4gICAgdXBkYXRlKCkge1xuICAgICAgICBsZXQgc2hvdWxkVXBkYXRlR2VvbWV0cnkgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgcmFkaXVzID0gdGhpcy5fc2hhcGUucmFkaXVzIC8gdGhpcy53b3JsZFNjYWxlO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudFJhZGl1cyAhPT0gcmFkaXVzKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50UmFkaXVzID0gcmFkaXVzO1xuICAgICAgICAgICAgc2hvdWxkVXBkYXRlR2VvbWV0cnkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fY3VycmVudE9mZnNldC5lcXVhbHModGhpcy5fc2hhcGUub2Zmc2V0KSkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudE9mZnNldC5jb3B5KHRoaXMuX3NoYXBlLm9mZnNldCk7XG4gICAgICAgICAgICBzaG91bGRVcGRhdGVHZW9tZXRyeSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGFpbCA9IF92M0EkMy5jb3B5KHRoaXMuX3NoYXBlLnRhaWwpLmRpdmlkZVNjYWxhcih0aGlzLndvcmxkU2NhbGUpO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudFRhaWwuZGlzdGFuY2VUb1NxdWFyZWQodGFpbCkgPiAxZS0xMCkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFRhaWwuY29weSh0YWlsKTtcbiAgICAgICAgICAgIHNob3VsZFVwZGF0ZUdlb21ldHJ5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hvdWxkVXBkYXRlR2VvbWV0cnkpIHtcbiAgICAgICAgICAgIHRoaXMuX2J1aWxkUG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfYnVpbGRQb3NpdGlvbigpIHtcbiAgICAgICAgX3YzQSQzLmNvcHkodGhpcy5fY3VycmVudFRhaWwpLnN1Yih0aGlzLl9jdXJyZW50T2Zmc2V0KTtcbiAgICAgICAgY29uc3QgbCA9IF92M0EkMy5sZW5ndGgoKSAvIHRoaXMuX2N1cnJlbnRSYWRpdXM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDE2OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSAoaSAvIDE2LjApICogTWF0aC5QSTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJQb3Muc2V0WFlaKGksIC1NYXRoLnNpbih0KSwgLU1hdGguY29zKHQpLCAwLjApO1xuICAgICAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooMTcgKyBpLCBsICsgTWF0aC5zaW4odCksIE1hdGguY29zKHQpLCAwLjApO1xuICAgICAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooMzQgKyBpLCAtTWF0aC5zaW4odCksIDAuMCwgLU1hdGguY29zKHQpKTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJQb3Muc2V0WFlaKDUxICsgaSwgbCArIE1hdGguc2luKHQpLCAwLjAsIE1hdGguY29zKHQpKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDMyOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSAoaSAvIDE2LjApICogTWF0aC5QSTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJQb3Muc2V0WFlaKDY4ICsgaSwgMC4wLCBNYXRoLnNpbih0KSwgTWF0aC5jb3ModCkpO1xuICAgICAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooMTAwICsgaSwgbCwgTWF0aC5zaW4odCksIE1hdGguY29zKHQpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0aGV0YSA9IE1hdGguYXRhbjIoX3YzQSQzLnksIE1hdGguc3FydChfdjNBJDMueCAqIF92M0EkMy54ICsgX3YzQSQzLnogKiBfdjNBJDMueikpO1xuICAgICAgICBjb25zdCBwaGkgPSAtTWF0aC5hdGFuMihfdjNBJDMueiwgX3YzQSQzLngpO1xuICAgICAgICB0aGlzLnJvdGF0ZVoodGhldGEpO1xuICAgICAgICB0aGlzLnJvdGF0ZVkocGhpKTtcbiAgICAgICAgdGhpcy5zY2FsZSh0aGlzLl9jdXJyZW50UmFkaXVzLCB0aGlzLl9jdXJyZW50UmFkaXVzLCB0aGlzLl9jdXJyZW50UmFkaXVzKTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGUodGhpcy5fY3VycmVudE9mZnNldC54LCB0aGlzLl9jdXJyZW50T2Zmc2V0LnksIHRoaXMuX2N1cnJlbnRPZmZzZXQueik7XG4gICAgICAgIHRoaXMuX2F0dHJQb3MubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIH1cbiAgICBfYnVpbGRJbmRleCgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzNDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpMSA9IChpICsgMSkgJSAzNDtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJJbmRleC5zZXRYWShpICogMiwgaSwgaTEpO1xuICAgICAgICAgICAgdGhpcy5fYXR0ckluZGV4LnNldFhZKDY4ICsgaSAqIDIsIDM0ICsgaSwgMzQgKyBpMSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzMjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpMSA9IChpICsgMSkgJSAzMjtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJJbmRleC5zZXRYWSgxMzYgKyBpICogMiwgNjggKyBpLCA2OCArIGkxKTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJJbmRleC5zZXRYWSgyMDAgKyBpICogMiwgMTAwICsgaSwgMTAwICsgaTEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2F0dHJJbmRleC5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxufVxuXG5jbGFzcyBDb2xsaWRlclNoYXBlU3BoZXJlQnVmZmVyR2VvbWV0cnkgZXh0ZW5kcyBUSFJFRS5CdWZmZXJHZW9tZXRyeSB7XG4gICAgY29uc3RydWN0b3Ioc2hhcGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy53b3JsZFNjYWxlID0gMS4wO1xuICAgICAgICB0aGlzLl9jdXJyZW50UmFkaXVzID0gMDtcbiAgICAgICAgdGhpcy5fY3VycmVudE9mZnNldCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgIHRoaXMuX3NoYXBlID0gc2hhcGU7XG4gICAgICAgIHRoaXMuX2F0dHJQb3MgPSBuZXcgVEhSRUUuQnVmZmVyQXR0cmlidXRlKG5ldyBGbG9hdDMyQXJyYXkoMzIgKiAzICogMyksIDMpO1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCB0aGlzLl9hdHRyUG9zKTtcbiAgICAgICAgdGhpcy5fYXR0ckluZGV4ID0gbmV3IFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZShuZXcgVWludDE2QXJyYXkoNjQgKiAzKSwgMSk7XG4gICAgICAgIHRoaXMuc2V0SW5kZXgodGhpcy5fYXR0ckluZGV4KTtcbiAgICAgICAgdGhpcy5fYnVpbGRJbmRleCgpO1xuICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH1cbiAgICB1cGRhdGUoKSB7XG4gICAgICAgIGxldCBzaG91bGRVcGRhdGVHZW9tZXRyeSA9IGZhbHNlO1xuICAgICAgICBjb25zdCByYWRpdXMgPSB0aGlzLl9zaGFwZS5yYWRpdXMgLyB0aGlzLndvcmxkU2NhbGU7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50UmFkaXVzICE9PSByYWRpdXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRSYWRpdXMgPSByYWRpdXM7XG4gICAgICAgICAgICBzaG91bGRVcGRhdGVHZW9tZXRyeSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9jdXJyZW50T2Zmc2V0LmVxdWFscyh0aGlzLl9zaGFwZS5vZmZzZXQpKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50T2Zmc2V0LmNvcHkodGhpcy5fc2hhcGUub2Zmc2V0KTtcbiAgICAgICAgICAgIHNob3VsZFVwZGF0ZUdlb21ldHJ5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hvdWxkVXBkYXRlR2VvbWV0cnkpIHtcbiAgICAgICAgICAgIHRoaXMuX2J1aWxkUG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfYnVpbGRQb3NpdGlvbigpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzMjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gKGkgLyAxNi4wKSAqIE1hdGguUEk7XG4gICAgICAgICAgICB0aGlzLl9hdHRyUG9zLnNldFhZWihpLCBNYXRoLmNvcyh0KSwgTWF0aC5zaW4odCksIDAuMCk7XG4gICAgICAgICAgICB0aGlzLl9hdHRyUG9zLnNldFhZWigzMiArIGksIDAuMCwgTWF0aC5jb3ModCksIE1hdGguc2luKHQpKTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJQb3Muc2V0WFlaKDY0ICsgaSwgTWF0aC5zaW4odCksIDAuMCwgTWF0aC5jb3ModCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2NhbGUodGhpcy5fY3VycmVudFJhZGl1cywgdGhpcy5fY3VycmVudFJhZGl1cywgdGhpcy5fY3VycmVudFJhZGl1cyk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlKHRoaXMuX2N1cnJlbnRPZmZzZXQueCwgdGhpcy5fY3VycmVudE9mZnNldC55LCB0aGlzLl9jdXJyZW50T2Zmc2V0LnopO1xuICAgICAgICB0aGlzLl9hdHRyUG9zLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgX2J1aWxkSW5kZXgoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzI7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaTEgPSAoaSArIDEpICUgMzI7XG4gICAgICAgICAgICB0aGlzLl9hdHRySW5kZXguc2V0WFkoaSAqIDIsIGksIGkxKTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJJbmRleC5zZXRYWSg2NCArIGkgKiAyLCAzMiArIGksIDMyICsgaTEpO1xuICAgICAgICAgICAgdGhpcy5fYXR0ckluZGV4LnNldFhZKDEyOCArIGkgKiAyLCA2NCArIGksIDY0ICsgaTEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2F0dHJJbmRleC5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxufVxuXG5jb25zdCBfdjNBJDIgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY2xhc3MgVlJNU3ByaW5nQm9uZUNvbGxpZGVySGVscGVyIGV4dGVuZHMgVEhSRUUuR3JvdXAge1xuICAgIGNvbnN0cnVjdG9yKGNvbGxpZGVyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvbGxpZGVyID0gY29sbGlkZXI7XG4gICAgICAgIGlmICh0aGlzLmNvbGxpZGVyLnNoYXBlIGluc3RhbmNlb2YgVlJNU3ByaW5nQm9uZUNvbGxpZGVyU2hhcGVTcGhlcmUpIHtcbiAgICAgICAgICAgIHRoaXMuX2dlb21ldHJ5ID0gbmV3IENvbGxpZGVyU2hhcGVTcGhlcmVCdWZmZXJHZW9tZXRyeSh0aGlzLmNvbGxpZGVyLnNoYXBlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmNvbGxpZGVyLnNoYXBlIGluc3RhbmNlb2YgVlJNU3ByaW5nQm9uZUNvbGxpZGVyU2hhcGVDYXBzdWxlKSB7XG4gICAgICAgICAgICB0aGlzLl9nZW9tZXRyeSA9IG5ldyBDb2xsaWRlclNoYXBlQ2Fwc3VsZUJ1ZmZlckdlb21ldHJ5KHRoaXMuY29sbGlkZXIuc2hhcGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWUk1TcHJpbmdCb25lQ29sbGlkZXJIZWxwZXI6IFVua25vd24gY29sbGlkZXIgc2hhcGUgdHlwZSBkZXRlY3RlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IFRIUkVFLkxpbmVCYXNpY01hdGVyaWFsKHtcbiAgICAgICAgICAgIGNvbG9yOiAweGZmMDBmZixcbiAgICAgICAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgICAgICAgICBkZXB0aFdyaXRlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2xpbmUgPSBuZXcgVEhSRUUuTGluZVNlZ21lbnRzKHRoaXMuX2dlb21ldHJ5LCBtYXRlcmlhbCk7XG4gICAgICAgIHRoaXMuYWRkKHRoaXMuX2xpbmUpO1xuICAgIH1cbiAgICBkaXNwb3NlKCkge1xuICAgICAgICB0aGlzLl9nZW9tZXRyeS5kaXNwb3NlKCk7XG4gICAgfVxuICAgIHVwZGF0ZU1hdHJpeFdvcmxkKGZvcmNlKSB7XG4gICAgICAgIHRoaXMuY29sbGlkZXIudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgZmFsc2UpO1xuICAgICAgICB0aGlzLm1hdHJpeC5jb3B5KHRoaXMuY29sbGlkZXIubWF0cml4V29ybGQpO1xuICAgICAgICBjb25zdCBtYXRyaXhXb3JsZEVsZW1lbnRzID0gdGhpcy5tYXRyaXguZWxlbWVudHM7XG4gICAgICAgIHRoaXMuX2dlb21ldHJ5LndvcmxkU2NhbGUgPSBfdjNBJDJcbiAgICAgICAgICAgIC5zZXQobWF0cml4V29ybGRFbGVtZW50c1swXSwgbWF0cml4V29ybGRFbGVtZW50c1sxXSwgbWF0cml4V29ybGRFbGVtZW50c1syXSlcbiAgICAgICAgICAgIC5sZW5ndGgoKTsgLy8gY2FsY3VsYXRlIHNjYWxlIG9mIHggY29tcG9uZW50XG4gICAgICAgIHRoaXMuX2dlb21ldHJ5LnVwZGF0ZSgpO1xuICAgICAgICBzdXBlci51cGRhdGVNYXRyaXhXb3JsZChmb3JjZSk7XG4gICAgfVxufVxuXG5jbGFzcyBTcHJpbmdCb25lQnVmZmVyR2VvbWV0cnkgZXh0ZW5kcyBUSFJFRS5CdWZmZXJHZW9tZXRyeSB7XG4gICAgY29uc3RydWN0b3Ioc3ByaW5nQm9uZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLndvcmxkU2NhbGUgPSAxLjA7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRSYWRpdXMgPSAwO1xuICAgICAgICB0aGlzLl9jdXJyZW50VGFpbCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgIHRoaXMuX3NwcmluZ0JvbmUgPSBzcHJpbmdCb25lO1xuICAgICAgICB0aGlzLl9hdHRyUG9zID0gbmV3IFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZShuZXcgRmxvYXQzMkFycmF5KDI5NCksIDMpO1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCB0aGlzLl9hdHRyUG9zKTtcbiAgICAgICAgdGhpcy5fYXR0ckluZGV4ID0gbmV3IFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZShuZXcgVWludDE2QXJyYXkoMTk0KSwgMSk7XG4gICAgICAgIHRoaXMuc2V0SW5kZXgodGhpcy5fYXR0ckluZGV4KTtcbiAgICAgICAgdGhpcy5fYnVpbGRJbmRleCgpO1xuICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH1cbiAgICB1cGRhdGUoKSB7XG4gICAgICAgIGxldCBzaG91bGRVcGRhdGVHZW9tZXRyeSA9IGZhbHNlO1xuICAgICAgICBjb25zdCByYWRpdXMgPSB0aGlzLl9zcHJpbmdCb25lLnNldHRpbmdzLmhpdFJhZGl1cyAvIHRoaXMud29ybGRTY2FsZTtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRSYWRpdXMgIT09IHJhZGl1cykge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFJhZGl1cyA9IHJhZGl1cztcbiAgICAgICAgICAgIHNob3VsZFVwZGF0ZUdlb21ldHJ5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2N1cnJlbnRUYWlsLmVxdWFscyh0aGlzLl9zcHJpbmdCb25lLmluaXRpYWxMb2NhbENoaWxkUG9zaXRpb24pKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50VGFpbC5jb3B5KHRoaXMuX3NwcmluZ0JvbmUuaW5pdGlhbExvY2FsQ2hpbGRQb3NpdGlvbik7XG4gICAgICAgICAgICBzaG91bGRVcGRhdGVHZW9tZXRyeSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZUdlb21ldHJ5KSB7XG4gICAgICAgICAgICB0aGlzLl9idWlsZFBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2J1aWxkUG9zaXRpb24oKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzI7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdCA9IChpIC8gMTYuMCkgKiBNYXRoLlBJO1xuICAgICAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooaSwgTWF0aC5jb3ModCksIE1hdGguc2luKHQpLCAwLjApO1xuICAgICAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooMzIgKyBpLCAwLjAsIE1hdGguY29zKHQpLCBNYXRoLnNpbih0KSk7XG4gICAgICAgICAgICB0aGlzLl9hdHRyUG9zLnNldFhZWig2NCArIGksIE1hdGguc2luKHQpLCAwLjAsIE1hdGguY29zKHQpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNjYWxlKHRoaXMuX2N1cnJlbnRSYWRpdXMsIHRoaXMuX2N1cnJlbnRSYWRpdXMsIHRoaXMuX2N1cnJlbnRSYWRpdXMpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZSh0aGlzLl9jdXJyZW50VGFpbC54LCB0aGlzLl9jdXJyZW50VGFpbC55LCB0aGlzLl9jdXJyZW50VGFpbC56KTtcbiAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooOTYsIDAsIDAsIDApO1xuICAgICAgICB0aGlzLl9hdHRyUG9zLnNldFhZWig5NywgdGhpcy5fY3VycmVudFRhaWwueCwgdGhpcy5fY3VycmVudFRhaWwueSwgdGhpcy5fY3VycmVudFRhaWwueik7XG4gICAgICAgIHRoaXMuX2F0dHJQb3MubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIH1cbiAgICBfYnVpbGRJbmRleCgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzMjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpMSA9IChpICsgMSkgJSAzMjtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJJbmRleC5zZXRYWShpICogMiwgaSwgaTEpO1xuICAgICAgICAgICAgdGhpcy5fYXR0ckluZGV4LnNldFhZKDY0ICsgaSAqIDIsIDMyICsgaSwgMzIgKyBpMSk7XG4gICAgICAgICAgICB0aGlzLl9hdHRySW5kZXguc2V0WFkoMTI4ICsgaSAqIDIsIDY0ICsgaSwgNjQgKyBpMSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYXR0ckluZGV4LnNldFhZKDE5MiwgOTYsIDk3KTtcbiAgICAgICAgdGhpcy5fYXR0ckluZGV4Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG59XG5cbmNvbnN0IF92M0EkMSA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jbGFzcyBWUk1TcHJpbmdCb25lSm9pbnRIZWxwZXIgZXh0ZW5kcyBUSFJFRS5Hcm91cCB7XG4gICAgY29uc3RydWN0b3Ioc3ByaW5nQm9uZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1hdHJpeEF1dG9VcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zcHJpbmdCb25lID0gc3ByaW5nQm9uZTtcbiAgICAgICAgdGhpcy5fZ2VvbWV0cnkgPSBuZXcgU3ByaW5nQm9uZUJ1ZmZlckdlb21ldHJ5KHRoaXMuc3ByaW5nQm9uZSk7XG4gICAgICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IFRIUkVFLkxpbmVCYXNpY01hdGVyaWFsKHtcbiAgICAgICAgICAgIGNvbG9yOiAweGZmZmYwMCxcbiAgICAgICAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgICAgICAgICBkZXB0aFdyaXRlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2xpbmUgPSBuZXcgVEhSRUUuTGluZVNlZ21lbnRzKHRoaXMuX2dlb21ldHJ5LCBtYXRlcmlhbCk7XG4gICAgICAgIHRoaXMuYWRkKHRoaXMuX2xpbmUpO1xuICAgIH1cbiAgICBkaXNwb3NlKCkge1xuICAgICAgICB0aGlzLl9nZW9tZXRyeS5kaXNwb3NlKCk7XG4gICAgfVxuICAgIHVwZGF0ZU1hdHJpeFdvcmxkKGZvcmNlKSB7XG4gICAgICAgIHRoaXMuc3ByaW5nQm9uZS5ib25lLnVwZGF0ZVdvcmxkTWF0cml4KHRydWUsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5tYXRyaXguY29weSh0aGlzLnNwcmluZ0JvbmUuYm9uZS5tYXRyaXhXb3JsZCk7XG4gICAgICAgIGNvbnN0IG1hdHJpeFdvcmxkRWxlbWVudHMgPSB0aGlzLm1hdHJpeC5lbGVtZW50cztcbiAgICAgICAgdGhpcy5fZ2VvbWV0cnkud29ybGRTY2FsZSA9IF92M0EkMVxuICAgICAgICAgICAgLnNldChtYXRyaXhXb3JsZEVsZW1lbnRzWzBdLCBtYXRyaXhXb3JsZEVsZW1lbnRzWzFdLCBtYXRyaXhXb3JsZEVsZW1lbnRzWzJdKVxuICAgICAgICAgICAgLmxlbmd0aCgpOyAvLyBjYWxjdWxhdGUgc2NhbGUgb2YgeCBjb21wb25lbnRcbiAgICAgICAgdGhpcy5fZ2VvbWV0cnkudXBkYXRlKCk7XG4gICAgICAgIHN1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKGZvcmNlKTtcbiAgICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNvbGxpZGVyIG9mIGEgVlJNLlxuICovXG5jbGFzcyBWUk1TcHJpbmdCb25lQ29sbGlkZXIgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCB7XG4gICAgY29uc3RydWN0b3Ioc2hhcGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zaGFwZSA9IHNoYXBlO1xuICAgIH1cbn1cblxuY29uc3QgX21hdEEkMSA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7XG4vKipcbiAqIEEgY29tcGF0IGZ1bmN0aW9uIGZvciBgTWF0cml4NC5pbnZlcnQoKWAgLyBgTWF0cml4NC5nZXRJbnZlcnNlKClgLlxuICogYE1hdHJpeDQuaW52ZXJ0KClgIGlzIGludHJvZHVjZWQgaW4gcjEyMyBhbmQgYE1hdHJpeDQuZ2V0SW52ZXJzZSgpYCBlbWl0cyBhIHdhcm5pbmcuXG4gKiBXZSBhcmUgZ29pbmcgdG8gdXNlIHRoaXMgY29tcGF0IGZvciBhIHdoaWxlLlxuICogQHBhcmFtIHRhcmdldCBBIHRhcmdldCBtYXRyaXhcbiAqL1xuZnVuY3Rpb24gbWF0NEludmVydENvbXBhdCh0YXJnZXQpIHtcbiAgICBpZiAodGFyZ2V0LmludmVydCkge1xuICAgICAgICB0YXJnZXQuaW52ZXJ0KCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0YXJnZXQuZ2V0SW52ZXJzZShfbWF0QSQxLmNvcHkodGFyZ2V0KSk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59XG5cbmNsYXNzIE1hdHJpeDRJbnZlcnNlQ2FjaGUge1xuICAgIC8qKlxuICAgICAqIEludmVyc2Ugb2YgZ2l2ZW4gbWF0cml4LlxuICAgICAqIE5vdGUgdGhhdCBpdCB3aWxsIHJldHVybiBpdHMgaW50ZXJuYWwgcHJpdmF0ZSBpbnN0YW5jZS5cbiAgICAgKiBNYWtlIHN1cmUgY29weWluZyB0aGlzIGJlZm9yZSBtdXRhdGUgdGhpcy5cbiAgICAgKi9cbiAgICBnZXQgaW52ZXJzZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZFVwZGF0ZUludmVyc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2ludmVyc2VDYWNoZS5jb3B5KHRoaXMubWF0cml4KTtcbiAgICAgICAgICAgIG1hdDRJbnZlcnRDb21wYXQodGhpcy5faW52ZXJzZUNhY2hlKTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3VsZFVwZGF0ZUludmVyc2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faW52ZXJzZUNhY2hlO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihtYXRyaXgpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgY2FjaGUgb2YgaW52ZXJzZSBvZiBjdXJyZW50IG1hdHJpeC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2ludmVyc2VDYWNoZSA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIGZsYWcgdGhhdCBtYWtlcyBpdCB3YW50IHRvIHJlY2FsY3VsYXRlIGl0cyB7QGxpbmsgX2ludmVyc2VDYWNoZX0uXG4gICAgICAgICAqIFdpbGwgYmUgc2V0IGB0cnVlYCB3aGVuIGBlbGVtZW50c2AgYXJlIG11dGF0ZWQgYW5kIGJlIHVzZWQgaW4gYGdldEludmVyc2VgLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fc2hvdWxkVXBkYXRlSW52ZXJzZSA9IHRydWU7XG4gICAgICAgIHRoaXMubWF0cml4ID0gbWF0cml4O1xuICAgICAgICBjb25zdCBoYW5kbGVyID0ge1xuICAgICAgICAgICAgc2V0OiAob2JqLCBwcm9wLCBuZXdWYWwpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG91bGRVcGRhdGVJbnZlcnNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBvYmpbcHJvcF0gPSBuZXdWYWw7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzID0gbWF0cml4LmVsZW1lbnRzO1xuICAgICAgICBtYXRyaXguZWxlbWVudHMgPSBuZXcgUHJveHkobWF0cml4LmVsZW1lbnRzLCBoYW5kbGVyKTtcbiAgICB9XG4gICAgcmV2ZXJ0KCkge1xuICAgICAgICB0aGlzLm1hdHJpeC5lbGVtZW50cyA9IHRoaXMuX29yaWdpbmFsRWxlbWVudHM7XG4gICAgfVxufVxuXG4vLyBiYXNlZCBvblxuLy8gaHR0cDovL3JvY2tldGp1bXAuc2tyLmpwL3VuaXR5M2QvMTA5L1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2R3YW5nby9VbmlWUk0vYmxvYi9tYXN0ZXIvU2NyaXB0cy9TcHJpbmdCb25lL1ZSTVNwcmluZ0JvbmUuY3NcbmNvbnN0IElERU5USVRZX01BVFJJWDQgPSBuZXcgVEhSRUUuTWF0cml4NCgpO1xuLy8g6KiI566X5Lit44Gu5LiA5pmC5L+d5a2Y55So5aSJ5pWw77yI5LiA5bqm44Kk44Oz44K544K/44Oz44K544KS5L2c44Gj44Gf44KJ44GC44Go44Gv5L2/44GE5Zue44GZ77yJXG5jb25zdCBfdjNBID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IF92M0IgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgX3YzQyA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4vKipcbiAqIEEgdGVtcG9yYXJ5IHZhcmlhYmxlIHdoaWNoIGlzIHVzZWQgaW4gYHVwZGF0ZWBcbiAqL1xuY29uc3QgX3dvcmxkU3BhY2VQb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4vKipcbiAqIEEgdGVtcG9yYXJ5IHZhcmlhYmxlIHdoaWNoIGlzIHVzZWQgaW4gYHVwZGF0ZWBcbiAqL1xuY29uc3QgX2NlbnRlclNwYWNlUG9zaXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuLyoqXG4gKiBBIHRlbXBvcmFyeSB2YXJpYWJsZSB3aGljaCBpcyB1c2VkIGluIGB1cGRhdGVgXG4gKi9cbmNvbnN0IF9uZXh0VGFpbCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jb25zdCBfcXVhdEEgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuY29uc3QgX21hdEEgPSBuZXcgVEhSRUUuTWF0cml4NCgpO1xuY29uc3QgX21hdEIgPSBuZXcgVEhSRUUuTWF0cml4NCgpO1xuLyoqXG4gKiBBIGNsYXNzIHJlcHJlc2VudHMgYSBzaW5nbGUgam9pbnQgb2YgYSBzcHJpbmcgYm9uZS5cbiAqIEl0IHNob3VsZCBiZSBtYW5hZ2VkIGJ5IGEgW1tWUk1TcHJpbmdCb25lTWFuYWdlcl1dLlxuICovXG5jbGFzcyBWUk1TcHJpbmdCb25lSm9pbnQge1xuICAgIGdldCBjZW50ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jZW50ZXI7XG4gICAgfVxuICAgIHNldCBjZW50ZXIoY2VudGVyKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgLy8gdW5pbnN0YWxsIGludmVyc2UgY2FjaGVcbiAgICAgICAgaWYgKChfYSA9IHRoaXMuX2NlbnRlcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnVzZXJEYXRhLmludmVyc2VDYWNoZVByb3h5KSB7XG4gICAgICAgICAgICB0aGlzLl9jZW50ZXIudXNlckRhdGEuaW52ZXJzZUNhY2hlUHJveHkucmV2ZXJ0KCk7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5fY2VudGVyLnVzZXJEYXRhLmludmVyc2VDYWNoZVByb3h5O1xuICAgICAgICB9XG4gICAgICAgIC8vIGNoYW5nZSB0aGUgY2VudGVyXG4gICAgICAgIHRoaXMuX2NlbnRlciA9IGNlbnRlcjtcbiAgICAgICAgLy8gaW5zdGFsbCBpbnZlcnNlIGNhY2hlXG4gICAgICAgIGlmICh0aGlzLl9jZW50ZXIpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fY2VudGVyLnVzZXJEYXRhLmludmVyc2VDYWNoZVByb3h5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2VudGVyLnVzZXJEYXRhLmludmVyc2VDYWNoZVByb3h5ID0gbmV3IE1hdHJpeDRJbnZlcnNlQ2FjaGUodGhpcy5fY2VudGVyLm1hdHJpeFdvcmxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgaW5pdGlhbExvY2FsQ2hpbGRQb3NpdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luaXRpYWxMb2NhbENoaWxkUG9zaXRpb247XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHdvcmxkIG1hdHJpeCBvZiBpdHMgcGFyZW50IG9iamVjdC5cbiAgICAgKiBOb3RlIHRoYXQgaXQgcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgbWF0cml4LiBEb24ndCBtdXRhdGUgdGhpcyBkaXJlY3RseSFcbiAgICAgKi9cbiAgICBnZXQgX3BhcmVudE1hdHJpeFdvcmxkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ib25lLnBhcmVudCA/IHRoaXMuYm9uZS5wYXJlbnQubWF0cml4V29ybGQgOiBJREVOVElUWV9NQVRSSVg0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgVlJNU3ByaW5nQm9uZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBib25lIEFuIE9iamVjdDNEIHRoYXQgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGlzIGJvbmVcbiAgICAgKiBAcGFyYW0gY2hpbGQgQW4gT2JqZWN0M0QgdGhhdCB3aWxsIGJlIHVzZWQgYXMgYSB0YWlsIG9mIHRoaXMgc3ByaW5nIGJvbmUuIEl0IGNhbiBiZSBudWxsIHdoZW4gdGhlIHNwcmluZyBib25lIGlzIGltcG9ydGVkIGZyb20gVlJNIDAuMFxuICAgICAqIEBwYXJhbSBzZXR0aW5ncyBTZXZlcmFsIHBhcmFtZXRlcnMgcmVsYXRlZCB0byBiZWhhdmlvciBvZiB0aGUgc3ByaW5nIGJvbmVcbiAgICAgKiBAcGFyYW0gY29sbGlkZXJHcm91cHMgQ29sbGlkZXIgZ3JvdXBzIHRoYXQgd2lsbCBiZSBjb2xsaWRlZCB3aXRoIHRoaXMgc3ByaW5nIGJvbmVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihib25lLCBjaGlsZCwgc2V0dGluZ3MgPSB7fSwgY29sbGlkZXJHcm91cHMgPSBbXSkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEN1cnJlbnQgcG9zaXRpb24gb2YgY2hpbGQgdGFpbCwgaW4gY2VudGVyIHVuaXQuIFdpbGwgYmUgdXNlZCBmb3IgdmVybGV0IGludGVncmF0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fY3VycmVudFRhaWwgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJldmlvdXMgcG9zaXRpb24gb2YgY2hpbGQgdGFpbCwgaW4gY2VudGVyIHVuaXQuIFdpbGwgYmUgdXNlZCBmb3IgdmVybGV0IGludGVncmF0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fcHJldlRhaWwgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICAvKipcbiAgICAgICAgICogSW5pdGlhbCBheGlzIG9mIHRoZSBib25lLCBpbiBsb2NhbCB1bml0LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fYm9uZUF4aXMgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGVuZ3RoIG9mIHRoZSBib25lIGluIHdvcmxkIHVuaXQuXG4gICAgICAgICAqIFdpbGwgYmUgdXNlZCBmb3Igbm9ybWFsaXphdGlvbiBpbiB1cGRhdGUgbG9vcCwgd2lsbCBiZSB1cGRhdGVkIGJ5IHtAbGluayBfY2FsY1dvcmxkU3BhY2VCb25lTGVuZ3RofS5cbiAgICAgICAgICpcbiAgICAgICAgICogSXQncyBzYW1lIGFzIGxvY2FsIHVuaXQgbGVuZ3RoIHVubGVzcyB0aGVyZSBhcmUgc2NhbGUgdHJhbnNmb3JtYXRpb25zIGluIHRoZSB3b3JsZCBzcGFjZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX3dvcmxkU3BhY2VCb25lTGVuZ3RoID0gMC4wO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhpcyBzcHJpbmdib25lIHdpbGwgYmUgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgc3BhY2UgcmVsYXRpdmUgZnJvbSB0aGlzIG9iamVjdC5cbiAgICAgICAgICogSWYgdGhpcyBpcyBgbnVsbGAsIHNwcmluZ2JvbmUgd2lsbCBiZSBjYWxjdWxhdGVkIGluIHdvcmxkIHNwYWNlLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fY2VudGVyID0gbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluaXRpYWwgc3RhdGUgb2YgdGhlIGxvY2FsIG1hdHJpeCBvZiB0aGUgYm9uZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2luaXRpYWxMb2NhbE1hdHJpeCA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbml0aWFsIHN0YXRlIG9mIHRoZSByb3RhdGlvbiBvZiB0aGUgYm9uZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2luaXRpYWxMb2NhbFJvdGF0aW9uID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluaXRpYWwgc3RhdGUgb2YgdGhlIHBvc2l0aW9uIG9mIGl0cyBjaGlsZC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2luaXRpYWxMb2NhbENoaWxkUG9zaXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICB0aGlzLmJvbmUgPSBib25lOyAvLyB1bmlWUk3jgafjga4gcGFyZW50XG4gICAgICAgIHRoaXMuYm9uZS5tYXRyaXhBdXRvVXBkYXRlID0gZmFsc2U7IC8vIHVwZGF0ZeOBq+OCiOOCiuioiOeul+OBleOCjOOCi+OBruOBp3RocmVlLmpz5YaF44Gn44Gu6Ieq5YuV5Yem55CG44Gv5LiN6KaBXG4gICAgICAgIHRoaXMuY2hpbGQgPSBjaGlsZDtcbiAgICAgICAgdGhpcy5zZXR0aW5ncyA9IHtcbiAgICAgICAgICAgIGhpdFJhZGl1czogKF9hID0gc2V0dGluZ3MuaGl0UmFkaXVzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwLjAsXG4gICAgICAgICAgICBzdGlmZm5lc3M6IChfYiA9IHNldHRpbmdzLnN0aWZmbmVzcykgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMS4wLFxuICAgICAgICAgICAgZ3Jhdml0eVBvd2VyOiAoX2MgPSBzZXR0aW5ncy5ncmF2aXR5UG93ZXIpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDAuMCxcbiAgICAgICAgICAgIGdyYXZpdHlEaXI6IChfZSA9IChfZCA9IHNldHRpbmdzLmdyYXZpdHlEaXIpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5jbG9uZSgpKSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiBuZXcgVEhSRUUuVmVjdG9yMygwLjAsIC0xLjAsIDAuMCksXG4gICAgICAgICAgICBkcmFnRm9yY2U6IChfZiA9IHNldHRpbmdzLmRyYWdGb3JjZSkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMC40LFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbGxpZGVyR3JvdXBzID0gY29sbGlkZXJHcm91cHM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGlzIHNwcmluZyBib25lLlxuICAgICAqIFlvdSBtaWdodCB3YW50IHRvIGNhbGwge0BsaW5rIFZSTVNwcmluZ0JvbmVNYW5hZ2VyLnNldEluaXRTdGF0ZX0gaW5zdGVhZC5cbiAgICAgKi9cbiAgICBzZXRJbml0U3RhdGUoKSB7XG4gICAgICAgIC8vIHJlbWVtYmVyIGluaXRpYWwgcG9zaXRpb24gb2YgaXRzZWxmXG4gICAgICAgIHRoaXMuX2luaXRpYWxMb2NhbE1hdHJpeC5jb3B5KHRoaXMuYm9uZS5tYXRyaXgpO1xuICAgICAgICB0aGlzLl9pbml0aWFsTG9jYWxSb3RhdGlvbi5jb3B5KHRoaXMuYm9uZS5xdWF0ZXJuaW9uKTtcbiAgICAgICAgLy8gc2VlIGluaXRpYWwgcG9zaXRpb24gb2YgaXRzIGxvY2FsIGNoaWxkXG4gICAgICAgIGlmICh0aGlzLmNoaWxkKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsTG9jYWxDaGlsZFBvc2l0aW9uLmNvcHkodGhpcy5jaGlsZC5wb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyB2cm0wIHJlcXVpcmVzIGEgN2NtIGZpeGVkIGJvbmUgbGVuZ3RoIGZvciB0aGUgZmluYWwgbm9kZSBpbiBhIGNoYWluXG4gICAgICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS92cm0tYy92cm0tc3BlY2lmaWNhdGlvbi90cmVlL21hc3Rlci9zcGVjaWZpY2F0aW9uL1ZSTUNfc3ByaW5nQm9uZS0xLjAjYWJvdXQtc3ByaW5nLWNvbmZpZ3VyYXRpb25cbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxMb2NhbENoaWxkUG9zaXRpb24uY29weSh0aGlzLmJvbmUucG9zaXRpb24pLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKDAuMDcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvcHkgdGhlIGNoaWxkIHBvc2l0aW9uIHRvIHRhaWxzXG4gICAgICAgIGNvbnN0IG1hdHJpeFdvcmxkVG9DZW50ZXIgPSB0aGlzLl9nZXRNYXRyaXhXb3JsZFRvQ2VudGVyKF9tYXRBKTtcbiAgICAgICAgdGhpcy5ib25lLmxvY2FsVG9Xb3JsZCh0aGlzLl9jdXJyZW50VGFpbC5jb3B5KHRoaXMuX2luaXRpYWxMb2NhbENoaWxkUG9zaXRpb24pKS5hcHBseU1hdHJpeDQobWF0cml4V29ybGRUb0NlbnRlcik7XG4gICAgICAgIHRoaXMuX3ByZXZUYWlsLmNvcHkodGhpcy5fY3VycmVudFRhaWwpO1xuICAgICAgICAvLyBzZXQgaW5pdGlhbCBzdGF0ZXMgdGhhdCBhcmUgcmVsYXRlZCB0byBsb2NhbCBjaGlsZCBwb3NpdGlvblxuICAgICAgICB0aGlzLl9ib25lQXhpcy5jb3B5KHRoaXMuX2luaXRpYWxMb2NhbENoaWxkUG9zaXRpb24pLm5vcm1hbGl6ZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXNldCB0aGUgc3RhdGUgb2YgdGhpcyBib25lLlxuICAgICAqIFlvdSBtaWdodCB3YW50IHRvIGNhbGwgW1tWUk1TcHJpbmdCb25lTWFuYWdlci5yZXNldF1dIGluc3RlYWQuXG4gICAgICovXG4gICAgcmVzZXQoKSB7XG4gICAgICAgIHRoaXMuYm9uZS5xdWF0ZXJuaW9uLmNvcHkodGhpcy5faW5pdGlhbExvY2FsUm90YXRpb24pO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSBpdHMgbWF0cml4V29ybGQgbWFudWFsbHksIHNpbmNlIHdlIHR3ZWFrZWQgdGhlIGJvbmUgYnkgb3VyIGhhbmRcbiAgICAgICAgdGhpcy5ib25lLnVwZGF0ZU1hdHJpeCgpO1xuICAgICAgICB0aGlzLmJvbmUubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyh0aGlzLl9wYXJlbnRNYXRyaXhXb3JsZCwgdGhpcy5ib25lLm1hdHJpeCk7XG4gICAgICAgIC8vIEFwcGx5IHVwZGF0ZWQgcG9zaXRpb24gdG8gdGFpbCBzdGF0ZXNcbiAgICAgICAgY29uc3QgbWF0cml4V29ybGRUb0NlbnRlciA9IHRoaXMuX2dldE1hdHJpeFdvcmxkVG9DZW50ZXIoX21hdEEpO1xuICAgICAgICB0aGlzLmJvbmUubG9jYWxUb1dvcmxkKHRoaXMuX2N1cnJlbnRUYWlsLmNvcHkodGhpcy5faW5pdGlhbExvY2FsQ2hpbGRQb3NpdGlvbikpLmFwcGx5TWF0cml4NChtYXRyaXhXb3JsZFRvQ2VudGVyKTtcbiAgICAgICAgdGhpcy5fcHJldlRhaWwuY29weSh0aGlzLl9jdXJyZW50VGFpbCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhpcyBib25lLlxuICAgICAqIFlvdSBtaWdodCB3YW50IHRvIGNhbGwgW1tWUk1TcHJpbmdCb25lTWFuYWdlci51cGRhdGVdXSBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRlbHRhIGRlbHRhVGltZVxuICAgICAqL1xuICAgIHVwZGF0ZShkZWx0YSkge1xuICAgICAgICBpZiAoZGVsdGEgPD0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBfd29ybGRTcGFjZUJvbmVMZW5ndGhcbiAgICAgICAgdGhpcy5fY2FsY1dvcmxkU3BhY2VCb25lTGVuZ3RoKCk7XG4gICAgICAgIC8vIEdldCBib25lIHBvc2l0aW9uIGluIGNlbnRlciBzcGFjZVxuICAgICAgICBfd29ybGRTcGFjZVBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLmJvbmUubWF0cml4V29ybGQpO1xuICAgICAgICBsZXQgbWF0cml4V29ybGRUb0NlbnRlciA9IHRoaXMuX2dldE1hdHJpeFdvcmxkVG9DZW50ZXIoX21hdEEpO1xuICAgICAgICBfY2VudGVyU3BhY2VQb3NpdGlvbi5jb3B5KF93b3JsZFNwYWNlUG9zaXRpb24pLmFwcGx5TWF0cml4NChtYXRyaXhXb3JsZFRvQ2VudGVyKTtcbiAgICAgICAgY29uc3QgcXVhdFdvcmxkVG9DZW50ZXIgPSBfcXVhdEEuc2V0RnJvbVJvdGF0aW9uTWF0cml4KG1hdHJpeFdvcmxkVG9DZW50ZXIpO1xuICAgICAgICAvLyBHZXQgcGFyZW50IG1hdHJpeCBpbiBjZW50ZXIgc3BhY2VcbiAgICAgICAgY29uc3QgY2VudGVyU3BhY2VQYXJlbnRNYXRyaXggPSBfbWF0Qi5jb3B5KG1hdHJpeFdvcmxkVG9DZW50ZXIpLm11bHRpcGx5KHRoaXMuX3BhcmVudE1hdHJpeFdvcmxkKTtcbiAgICAgICAgLy8gR2V0IGJvbmVBeGlzIGluIGNlbnRlciBzcGFjZVxuICAgICAgICBjb25zdCBjZW50ZXJTcGFjZUJvbmVBeGlzID0gX3YzQlxuICAgICAgICAgICAgLmNvcHkodGhpcy5fYm9uZUF4aXMpXG4gICAgICAgICAgICAuYXBwbHlNYXRyaXg0KHRoaXMuX2luaXRpYWxMb2NhbE1hdHJpeClcbiAgICAgICAgICAgIC5hcHBseU1hdHJpeDQoY2VudGVyU3BhY2VQYXJlbnRNYXRyaXgpXG4gICAgICAgICAgICAuc3ViKF9jZW50ZXJTcGFjZVBvc2l0aW9uKVxuICAgICAgICAgICAgLm5vcm1hbGl6ZSgpO1xuICAgICAgICAvLyBncmF2aXR5IGluIGNlbnRlciBzcGFjZVxuICAgICAgICBjb25zdCBjZW50ZXJTcGFjZUdyYXZpdHkgPSBfdjNDLmNvcHkodGhpcy5zZXR0aW5ncy5ncmF2aXR5RGlyKS5hcHBseVF1YXRlcm5pb24ocXVhdFdvcmxkVG9DZW50ZXIpLm5vcm1hbGl6ZSgpO1xuICAgICAgICBjb25zdCBtYXRyaXhDZW50ZXJUb1dvcmxkID0gdGhpcy5fZ2V0TWF0cml4Q2VudGVyVG9Xb3JsZChfbWF0QSk7XG4gICAgICAgIC8vIHZlcmxldOepjeWIhuOBp+asoeOBruS9jee9ruOCkuioiOeul1xuICAgICAgICBfbmV4dFRhaWxcbiAgICAgICAgICAgIC5jb3B5KHRoaXMuX2N1cnJlbnRUYWlsKVxuICAgICAgICAgICAgLmFkZChfdjNBXG4gICAgICAgICAgICAuY29weSh0aGlzLl9jdXJyZW50VGFpbClcbiAgICAgICAgICAgIC5zdWIodGhpcy5fcHJldlRhaWwpXG4gICAgICAgICAgICAubXVsdGlwbHlTY2FsYXIoMSAtIHRoaXMuc2V0dGluZ3MuZHJhZ0ZvcmNlKSkgLy8g5YmN44OV44Os44O844Og44Gu56e75YuV44KS57aZ57aa44GZ44KLKOa4m+ihsOOCguOBguOCi+OCiClcbiAgICAgICAgICAgIC5hZGQoX3YzQS5jb3B5KGNlbnRlclNwYWNlQm9uZUF4aXMpLm11bHRpcGx5U2NhbGFyKHRoaXMuc2V0dGluZ3Muc3RpZmZuZXNzICogZGVsdGEpKSAvLyDopqrjga7lm57ou6LjgavjgojjgovlrZDjg5zjg7zjg7Pjga7np7vli5Xnm67mqJlcbiAgICAgICAgICAgIC5hZGQoX3YzQS5jb3B5KGNlbnRlclNwYWNlR3Jhdml0eSkubXVsdGlwbHlTY2FsYXIodGhpcy5zZXR0aW5ncy5ncmF2aXR5UG93ZXIgKiBkZWx0YSkpIC8vIOWkluWKm+OBq+OCiOOCi+enu+WLlemHj1xuICAgICAgICAgICAgLmFwcGx5TWF0cml4NChtYXRyaXhDZW50ZXJUb1dvcmxkKTsgLy8gdGFpbOOCkndvcmxkIHNwYWNl44Gr5oi744GZXG4gICAgICAgIC8vIG5vcm1hbGl6ZSBib25lIGxlbmd0aFxuICAgICAgICBfbmV4dFRhaWwuc3ViKF93b3JsZFNwYWNlUG9zaXRpb24pLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHRoaXMuX3dvcmxkU3BhY2VCb25lTGVuZ3RoKS5hZGQoX3dvcmxkU3BhY2VQb3NpdGlvbik7XG4gICAgICAgIC8vIENvbGxpc2lvbuOBp+enu+WLlVxuICAgICAgICB0aGlzLl9jb2xsaXNpb24oX25leHRUYWlsKTtcbiAgICAgICAgLy8gdXBkYXRlIHByZXZUYWlsIGFuZCBjdXJyZW50VGFpbFxuICAgICAgICBtYXRyaXhXb3JsZFRvQ2VudGVyID0gdGhpcy5fZ2V0TWF0cml4V29ybGRUb0NlbnRlcihfbWF0QSk7XG4gICAgICAgIHRoaXMuX3ByZXZUYWlsLmNvcHkodGhpcy5fY3VycmVudFRhaWwpO1xuICAgICAgICB0aGlzLl9jdXJyZW50VGFpbC5jb3B5KF92M0EuY29weShfbmV4dFRhaWwpLmFwcGx5TWF0cml4NChtYXRyaXhXb3JsZFRvQ2VudGVyKSk7XG4gICAgICAgIC8vIEFwcGx5IHJvdGF0aW9uLCBjb252ZXJ0IHZlY3RvcjMgdGhpbmcgaW50byBhY3R1YWwgcXVhdGVybmlvblxuICAgICAgICAvLyBPcmlnaW5hbCBVbmlWUk0gaXMgZG9pbmcgY2VudGVyIHVuaXQgY2FsY3VsdXMgYXQgaGVyZSBidXQgd2UncmUgZ29ubmEgZG8gdGhpcyBvbiBsb2NhbCB1bml0XG4gICAgICAgIGNvbnN0IHdvcmxkU3BhY2VJbml0aWFsTWF0cml4SW52ID0gbWF0NEludmVydENvbXBhdChfbWF0QS5jb3B5KHRoaXMuX3BhcmVudE1hdHJpeFdvcmxkKS5tdWx0aXBseSh0aGlzLl9pbml0aWFsTG9jYWxNYXRyaXgpKTtcbiAgICAgICAgY29uc3QgYXBwbHlSb3RhdGlvbiA9IF9xdWF0QS5zZXRGcm9tVW5pdFZlY3RvcnModGhpcy5fYm9uZUF4aXMsIF92M0EuY29weShfbmV4dFRhaWwpLmFwcGx5TWF0cml4NCh3b3JsZFNwYWNlSW5pdGlhbE1hdHJpeEludikubm9ybWFsaXplKCkpO1xuICAgICAgICB0aGlzLmJvbmUucXVhdGVybmlvbi5jb3B5KHRoaXMuX2luaXRpYWxMb2NhbFJvdGF0aW9uKS5tdWx0aXBseShhcHBseVJvdGF0aW9uKTtcbiAgICAgICAgLy8gV2UgbmVlZCB0byB1cGRhdGUgaXRzIG1hdHJpeFdvcmxkIG1hbnVhbGx5LCBzaW5jZSB3ZSB0d2Vha2VkIHRoZSBib25lIGJ5IG91ciBoYW5kXG4gICAgICAgIHRoaXMuYm9uZS51cGRhdGVNYXRyaXgoKTtcbiAgICAgICAgdGhpcy5ib25lLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5fcGFyZW50TWF0cml4V29ybGQsIHRoaXMuYm9uZS5tYXRyaXgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEbyBjb2xsaXNpb24gbWF0aCBhZ2FpbnN0IGV2ZXJ5IGNvbGxpZGVycyBhdHRhY2hlZCB0byB0aGlzIGJvbmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFpbCBUaGUgdGFpbCB5b3Ugd2FudCB0byBwcm9jZXNzXG4gICAgICovXG4gICAgX2NvbGxpc2lvbih0YWlsKSB7XG4gICAgICAgIHRoaXMuY29sbGlkZXJHcm91cHMuZm9yRWFjaCgoY29sbGlkZXJHcm91cCkgPT4ge1xuICAgICAgICAgICAgY29sbGlkZXJHcm91cC5jb2xsaWRlcnMuZm9yRWFjaCgoY29sbGlkZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0ID0gY29sbGlkZXIuc2hhcGUuY2FsY3VsYXRlQ29sbGlzaW9uKGNvbGxpZGVyLm1hdHJpeFdvcmxkLCB0YWlsLCB0aGlzLnNldHRpbmdzLmhpdFJhZGl1cywgX3YzQSk7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3QgPCAwLjApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaGl0XG4gICAgICAgICAgICAgICAgICAgIHRhaWwuYWRkKF92M0EubXVsdGlwbHlTY2FsYXIoLWRpc3QpKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gbm9ybWFsaXplIGJvbmUgbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIHRhaWwuc3ViKF93b3JsZFNwYWNlUG9zaXRpb24pLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHRoaXMuX3dvcmxkU3BhY2VCb25lTGVuZ3RoKS5hZGQoX3dvcmxkU3BhY2VQb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGUgdGhlIHtAbGluayBfd29ybGRTcGFjZUJvbmVMZW5ndGh9LlxuICAgICAqIEludGVuZGVkIHRvIGJlIHVzZWQgaW4ge0BsaW5rIHVwZGF0ZX0uXG4gICAgICovXG4gICAgX2NhbGNXb3JsZFNwYWNlQm9uZUxlbmd0aCgpIHtcbiAgICAgICAgX3YzQS5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5ib25lLm1hdHJpeFdvcmxkKTsgLy8gZ2V0IHdvcmxkIHBvc2l0aW9uIG9mIHRoaXMuYm9uZVxuICAgICAgICBpZiAodGhpcy5jaGlsZCkge1xuICAgICAgICAgICAgX3YzQi5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5jaGlsZC5tYXRyaXhXb3JsZCk7IC8vIGdldCB3b3JsZCBwb3NpdGlvbiBvZiB0aGlzLmNoaWxkXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBfdjNCLmNvcHkodGhpcy5faW5pdGlhbExvY2FsQ2hpbGRQb3NpdGlvbik7XG4gICAgICAgICAgICBfdjNCLmFwcGx5TWF0cml4NCh0aGlzLmJvbmUubWF0cml4V29ybGQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3dvcmxkU3BhY2VCb25lTGVuZ3RoID0gX3YzQS5zdWIoX3YzQikubGVuZ3RoKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG1hdHJpeCB0aGF0IGNvbnZlcnRzIGNlbnRlciBzcGFjZSBpbnRvIHdvcmxkIHNwYWNlLlxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGFyZ2V0IG1hdHJpeFxuICAgICAqL1xuICAgIF9nZXRNYXRyaXhDZW50ZXJUb1dvcmxkKHRhcmdldCkge1xuICAgICAgICBpZiAodGhpcy5fY2VudGVyKSB7XG4gICAgICAgICAgICB0YXJnZXQuY29weSh0aGlzLl9jZW50ZXIubWF0cml4V29ybGQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0LmlkZW50aXR5KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbWF0cml4IHRoYXQgY29udmVydHMgd29ybGQgc3BhY2UgaW50byBjZW50ZXIgc3BhY2UuXG4gICAgICogQHBhcmFtIHRhcmdldCBUYXJnZXQgbWF0cml4XG4gICAgICovXG4gICAgX2dldE1hdHJpeFdvcmxkVG9DZW50ZXIodGFyZ2V0KSB7XG4gICAgICAgIGlmICh0aGlzLl9jZW50ZXIpIHtcbiAgICAgICAgICAgIHRhcmdldC5jb3B5KHRoaXMuX2NlbnRlci51c2VyRGF0YS5pbnZlcnNlQ2FjaGVQcm94eS5pbnZlcnNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldC5pZGVudGl0eSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuXHJcbmZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cblxuZnVuY3Rpb24gdHJhdmVyc2VBbmNlc3RvcnNGcm9tUm9vdChvYmplY3QsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgYW5jZXN0b3JzID0gW107XG4gICAgbGV0IGhlYWQgPSBvYmplY3Q7XG4gICAgd2hpbGUgKGhlYWQgIT09IG51bGwpIHtcbiAgICAgICAgYW5jZXN0b3JzLnVuc2hpZnQoaGVhZCk7XG4gICAgICAgIGhlYWQgPSBoZWFkLnBhcmVudDtcbiAgICB9XG4gICAgYW5jZXN0b3JzLmZvckVhY2goKGFuY2VzdG9yKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKGFuY2VzdG9yKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBUcmF2ZXJzZSBjaGlsZHJlbiBvZiBnaXZlbiBvYmplY3QgYW5kIGV4ZWN1dGUgZ2l2ZW4gY2FsbGJhY2suXG4gKiBUaGUgZ2l2ZW4gb2JqZWN0IGl0c2VsZiB3b250IGJlIGdpdmVuIHRvIHRoZSBjYWxsYmFjay5cbiAqIElmIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGNhbGxiYWNrIGlzIGB0cnVlYCwgaXQgd2lsbCBoYWx0IHRoZSB0cmF2ZXJzYWwgb2YgaXRzIGNoaWxkcmVuLlxuICogQHBhcmFtIG9iamVjdCBBIHJvb3Qgb2JqZWN0XG4gKiBAcGFyYW0gY2FsbGJhY2sgQSBjYWxsYmFjayBmdW5jdGlvbiBjYWxsZWQgZm9yIGVhY2ggY2hpbGRyZW5cbiAqL1xuZnVuY3Rpb24gdHJhdmVyc2VDaGlsZHJlblVudGlsQ29uZGl0aW9uTWV0KG9iamVjdCwgY2FsbGJhY2spIHtcbiAgICBvYmplY3QuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY2FsbGJhY2soY2hpbGQpO1xuICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgdHJhdmVyc2VDaGlsZHJlblVudGlsQ29uZGl0aW9uTWV0KGNoaWxkLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuY2xhc3MgVlJNU3ByaW5nQm9uZU1hbmFnZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl9qb2ludHMgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMuX29iamVjdFNwcmluZ0JvbmVzTWFwID0gbmV3IE1hcCgpO1xuICAgIH1cbiAgICBnZXQgam9pbnRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fam9pbnRzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIGpvaW50c30gaW5zdGVhZC5cbiAgICAgKi9cbiAgICBnZXQgc3ByaW5nQm9uZXMoKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignVlJNU3ByaW5nQm9uZU1hbmFnZXI6IHNwcmluZ0JvbmVzIGlzIGRlcHJlY2F0ZWQuIHVzZSBqb2ludHMgaW5zdGVhZC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2pvaW50cztcbiAgICB9XG4gICAgZ2V0IGNvbGxpZGVyR3JvdXBzKCkge1xuICAgICAgICBjb25zdCBzZXQgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMuX2pvaW50cy5mb3JFYWNoKChzcHJpbmdCb25lKSA9PiB7XG4gICAgICAgICAgICBzcHJpbmdCb25lLmNvbGxpZGVyR3JvdXBzLmZvckVhY2goKGNvbGxpZGVyR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICBzZXQuYWRkKGNvbGxpZGVyR3JvdXApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShzZXQpO1xuICAgIH1cbiAgICBnZXQgY29sbGlkZXJzKCkge1xuICAgICAgICBjb25zdCBzZXQgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMuY29sbGlkZXJHcm91cHMuZm9yRWFjaCgoY29sbGlkZXJHcm91cCkgPT4ge1xuICAgICAgICAgICAgY29sbGlkZXJHcm91cC5jb2xsaWRlcnMuZm9yRWFjaCgoY29sbGlkZXIpID0+IHtcbiAgICAgICAgICAgICAgICBzZXQuYWRkKGNvbGxpZGVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oc2V0KTtcbiAgICB9XG4gICAgYWRkSm9pbnQoam9pbnQpIHtcbiAgICAgICAgdGhpcy5fam9pbnRzLmFkZChqb2ludCk7XG4gICAgICAgIGxldCBvYmplY3RTZXQgPSB0aGlzLl9vYmplY3RTcHJpbmdCb25lc01hcC5nZXQoam9pbnQuYm9uZSk7XG4gICAgICAgIGlmIChvYmplY3RTZXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgb2JqZWN0U2V0ID0gbmV3IFNldCgpO1xuICAgICAgICAgICAgdGhpcy5fb2JqZWN0U3ByaW5nQm9uZXNNYXAuc2V0KGpvaW50LmJvbmUsIG9iamVjdFNldCk7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0U2V0LmFkZChqb2ludCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgYWRkSm9pbnR9IGluc3RlYWQuXG4gICAgICovXG4gICAgYWRkU3ByaW5nQm9uZShqb2ludCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTVNwcmluZ0JvbmVNYW5hZ2VyOiBhZGRTcHJpbmdCb25lKCkgaXMgZGVwcmVjYXRlZC4gdXNlIGFkZEpvaW50KCkgaW5zdGVhZC4nKTtcbiAgICAgICAgdGhpcy5hZGRKb2ludChqb2ludCk7XG4gICAgfVxuICAgIGRlbGV0ZUpvaW50KGpvaW50KSB7XG4gICAgICAgIHRoaXMuX2pvaW50cy5kZWxldGUoam9pbnQpO1xuICAgICAgICBjb25zdCBvYmplY3RTZXQgPSB0aGlzLl9vYmplY3RTcHJpbmdCb25lc01hcC5nZXQoam9pbnQuYm9uZSk7XG4gICAgICAgIG9iamVjdFNldC5kZWxldGUoam9pbnQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIGRlbGV0ZUpvaW50fSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGRlbGV0ZVNwcmluZ0JvbmUoam9pbnQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdWUk1TcHJpbmdCb25lTWFuYWdlcjogZGVsZXRlU3ByaW5nQm9uZSgpIGlzIGRlcHJlY2F0ZWQuIHVzZSBkZWxldGVKb2ludCgpIGluc3RlYWQuJyk7XG4gICAgICAgIHRoaXMuZGVsZXRlSm9pbnQoam9pbnQpO1xuICAgIH1cbiAgICBzZXRJbml0U3RhdGUoKSB7XG4gICAgICAgIGNvbnN0IHNwcmluZ0JvbmVzVHJpZWQgPSBuZXcgU2V0KCk7XG4gICAgICAgIGNvbnN0IHNwcmluZ0JvbmVzRG9uZSA9IG5ldyBTZXQoKTtcbiAgICAgICAgY29uc3Qgb2JqZWN0VXBkYXRlZCA9IG5ldyBTZXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBzcHJpbmdCb25lIG9mIHRoaXMuX2pvaW50cykge1xuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1NwcmluZ0JvbmUoc3ByaW5nQm9uZSwgc3ByaW5nQm9uZXNUcmllZCwgc3ByaW5nQm9uZXNEb25lLCBvYmplY3RVcGRhdGVkLCAoc3ByaW5nQm9uZSkgPT4gc3ByaW5nQm9uZS5zZXRJbml0U3RhdGUoKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVzZXQoKSB7XG4gICAgICAgIGNvbnN0IHNwcmluZ0JvbmVzVHJpZWQgPSBuZXcgU2V0KCk7XG4gICAgICAgIGNvbnN0IHNwcmluZ0JvbmVzRG9uZSA9IG5ldyBTZXQoKTtcbiAgICAgICAgY29uc3Qgb2JqZWN0VXBkYXRlZCA9IG5ldyBTZXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBzcHJpbmdCb25lIG9mIHRoaXMuX2pvaW50cykge1xuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1NwcmluZ0JvbmUoc3ByaW5nQm9uZSwgc3ByaW5nQm9uZXNUcmllZCwgc3ByaW5nQm9uZXNEb25lLCBvYmplY3RVcGRhdGVkLCAoc3ByaW5nQm9uZSkgPT4gc3ByaW5nQm9uZS5yZXNldCgpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1cGRhdGUoZGVsdGEpIHtcbiAgICAgICAgY29uc3Qgc3ByaW5nQm9uZXNUcmllZCA9IG5ldyBTZXQoKTtcbiAgICAgICAgY29uc3Qgc3ByaW5nQm9uZXNEb25lID0gbmV3IFNldCgpO1xuICAgICAgICBjb25zdCBvYmplY3RVcGRhdGVkID0gbmV3IFNldCgpO1xuICAgICAgICBmb3IgKGNvbnN0IHNwcmluZ0JvbmUgb2YgdGhpcy5fam9pbnRzKSB7XG4gICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHNwcmluZ2JvbmVcbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NTcHJpbmdCb25lKHNwcmluZ0JvbmUsIHNwcmluZ0JvbmVzVHJpZWQsIHNwcmluZ0JvbmVzRG9uZSwgb2JqZWN0VXBkYXRlZCwgKHNwcmluZ0JvbmUpID0+IHNwcmluZ0JvbmUudXBkYXRlKGRlbHRhKSk7XG4gICAgICAgICAgICAvLyB1cGRhdGUgY2hpbGRyZW4gd29ybGQgbWF0cmljZXNcbiAgICAgICAgICAgIC8vIGl0IGlzIHJlcXVpcmVkIHdoZW4gdGhlIHNwcmluZyBib25lIGNoYWluIGlzIHNwYXJzZVxuICAgICAgICAgICAgdHJhdmVyc2VDaGlsZHJlblVudGlsQ29uZGl0aW9uTWV0KHNwcmluZ0JvbmUuYm9uZSwgKG9iamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIG9iamVjdCBoYXMgYXR0YWNoZWQgc3ByaW5nYm9uZSwgaGFsdCB0aGUgdHJhdmVyc2FsXG4gICAgICAgICAgICAgICAgaWYgKCgoX2IgPSAoX2EgPSB0aGlzLl9vYmplY3RTcHJpbmdCb25lc01hcC5nZXQob2JqZWN0KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNpemUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDApID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHVwZGF0ZSBpdHMgd29ybGQgbWF0cml4XG4gICAgICAgICAgICAgICAgb2JqZWN0LnVwZGF0ZVdvcmxkTWF0cml4KGZhbHNlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogVXBkYXRlIGEgc3ByaW5nIGJvbmUuXG4gICAgICogSWYgdGhlcmUgYXJlIG90aGVyIHNwcmluZyBib25lIHRoYXQgYXJlIGRlcGVuZGFudCwgaXQgd2lsbCB0cnkgdG8gdXBkYXRlIHRoZW0gcmVjdXJzaXZlbHkuXG4gICAgICogSXQgdXBkYXRlcyBtYXRyaXhXb3JsZCBvZiBhbGwgYW5jZXN0b3JzIGFuZCBteXNlbGYuXG4gICAgICogSXQgbWlnaHQgdGhyb3cgYW4gZXJyb3IgaWYgdGhlcmUgYXJlIGNpcmN1bGFyIGRlcGVuZGVuY2llcy5cbiAgICAgKlxuICAgICAqIEludGVuZGVkIHRvIGJlIHVzZWQgaW4ge0BsaW5rIHVwZGF0ZX0gYW5kIHtAbGluayBfcHJvY2Vzc1NwcmluZ0JvbmV9IGl0c2VsZiByZWN1cnNpdmVseS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzcHJpbmdCb25lIEEgc3ByaW5nQm9uZSB5b3Ugd2FudCB0byB1cGRhdGVcbiAgICAgKiBAcGFyYW0gc3ByaW5nQm9uZXNUcmllZCBTZXQgb2Ygc3ByaW5nQm9uZXMgdGhhdCBhcmUgYWxyZWFkeSB0cmllZCB0byBiZSB1cGRhdGVkXG4gICAgICogQHBhcmFtIHNwcmluZ0JvbmVzRG9uZSBTZXQgb2Ygc3ByaW5nQm9uZXMgdGhhdCBhcmUgYWxyZWFkeSB1cCB0byBkYXRlXG4gICAgICogQHBhcmFtIG9iamVjdFVwZGF0ZWQgU2V0IG9mIG9iamVjdDNEIHdob3NlIG1hdHJpeFdvcmxkIGlzIHVwZGF0ZWRcbiAgICAgKi9cbiAgICBfcHJvY2Vzc1NwcmluZ0JvbmUoc3ByaW5nQm9uZSwgc3ByaW5nQm9uZXNUcmllZCwgc3ByaW5nQm9uZXNEb25lLCBvYmplY3RVcGRhdGVkLCBjYWxsYmFjaykge1xuICAgICAgICBpZiAoc3ByaW5nQm9uZXNEb25lLmhhcyhzcHJpbmdCb25lKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzcHJpbmdCb25lc1RyaWVkLmhhcyhzcHJpbmdCb25lKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWUk1TcHJpbmdCb25lTWFuYWdlcjogQ2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZCB3aGlsZSB1cGRhdGluZyBzcHJpbmdib25lcycpO1xuICAgICAgICB9XG4gICAgICAgIHNwcmluZ0JvbmVzVHJpZWQuYWRkKHNwcmluZ0JvbmUpO1xuICAgICAgICBjb25zdCBkZXBPYmplY3RzID0gdGhpcy5fZ2V0RGVwZW5kZW5jaWVzKHNwcmluZ0JvbmUpO1xuICAgICAgICBmb3IgKGNvbnN0IGRlcE9iamVjdCBvZiBkZXBPYmplY3RzKSB7XG4gICAgICAgICAgICB0cmF2ZXJzZUFuY2VzdG9yc0Zyb21Sb290KGRlcE9iamVjdCwgKGRlcE9iamVjdEFuY2VzdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2JqZWN0U2V0ID0gdGhpcy5fb2JqZWN0U3ByaW5nQm9uZXNNYXAuZ2V0KGRlcE9iamVjdEFuY2VzdG9yKTtcbiAgICAgICAgICAgICAgICBpZiAob2JqZWN0U2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZGVwU3ByaW5nQm9uZSBvZiBvYmplY3RTZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NTcHJpbmdCb25lKGRlcFNwcmluZ0JvbmUsIHNwcmluZ0JvbmVzVHJpZWQsIHNwcmluZ0JvbmVzRG9uZSwgb2JqZWN0VXBkYXRlZCwgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFvYmplY3RVcGRhdGVkLmhhcyhkZXBPYmplY3RBbmNlc3RvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIG1hdHJpeCBvZiBub24tc3ByaW5nYm9uZVxuICAgICAgICAgICAgICAgICAgICBkZXBPYmplY3RBbmNlc3Rvci51cGRhdGVXb3JsZE1hdHJpeChmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3RVcGRhdGVkLmFkZChkZXBPYmplY3RBbmNlc3Rvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdXBkYXRlIG15IG1hdHJpeFxuICAgICAgICBzcHJpbmdCb25lLmJvbmUudXBkYXRlTWF0cml4KCk7XG4gICAgICAgIHNwcmluZ0JvbmUuYm9uZS51cGRhdGVXb3JsZE1hdHJpeChmYWxzZSwgZmFsc2UpO1xuICAgICAgICBjYWxsYmFjayhzcHJpbmdCb25lKTtcbiAgICAgICAgb2JqZWN0VXBkYXRlZC5hZGQoc3ByaW5nQm9uZS5ib25lKTtcbiAgICAgICAgc3ByaW5nQm9uZXNEb25lLmFkZChzcHJpbmdCb25lKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgc2V0IG9mIG9iamVjdHMgdGhhdCBhcmUgZGVwZW5kYW50IG9mIGdpdmVuIHNwcmluZyBib25lLlxuICAgICAqIEBwYXJhbSBzcHJpbmdCb25lIEEgc3ByaW5nIGJvbmVcbiAgICAgKiBAcmV0dXJuIEEgc2V0IG9mIG9iamVjdHMgdGhhdCBhcmUgZGVwZW5kYW50IG9mIGdpdmVuIHNwcmluZyBib25lXG4gICAgICovXG4gICAgX2dldERlcGVuZGVuY2llcyhzcHJpbmdCb25lKSB7XG4gICAgICAgIGNvbnN0IHNldCA9IG5ldyBTZXQoKTtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gc3ByaW5nQm9uZS5ib25lLnBhcmVudDtcbiAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgc2V0LmFkZChwYXJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHNwcmluZ0JvbmUuY29sbGlkZXJHcm91cHMuZm9yRWFjaCgoY29sbGlkZXJHcm91cCkgPT4ge1xuICAgICAgICAgICAgY29sbGlkZXJHcm91cC5jb2xsaWRlcnMuZm9yRWFjaCgoY29sbGlkZXIpID0+IHtcbiAgICAgICAgICAgICAgICBzZXQuYWRkKGNvbGxpZGVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNldDtcbiAgICB9XG59XG5cbi8qKlxuICogUG9zc2libGUgc3BlYyB2ZXJzaW9ucyBpdCByZWNvZ25pemVzLlxuICovXG5jb25zdCBQT1NTSUJMRV9TUEVDX1ZFUlNJT05TID0gbmV3IFNldChbJzEuMCcsICcxLjAtYmV0YSddKTtcbmNsYXNzIFZSTVNwcmluZ0JvbmVMb2FkZXJQbHVnaW4ge1xuICAgIGdldCBuYW1lKCkge1xuICAgICAgICByZXR1cm4gVlJNU3ByaW5nQm9uZUxvYWRlclBsdWdpbi5FWFRFTlNJT05fTkFNRTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGFyc2VyLCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuICAgICAgICB0aGlzLmpvaW50SGVscGVyUm9vdCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5qb2ludEhlbHBlclJvb3Q7XG4gICAgICAgIHRoaXMuY29sbGlkZXJIZWxwZXJSb290ID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmNvbGxpZGVySGVscGVyUm9vdDtcbiAgICB9XG4gICAgYWZ0ZXJSb290KGdsdGYpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGdsdGYudXNlckRhdGEudnJtU3ByaW5nQm9uZU1hbmFnZXIgPSB5aWVsZCB0aGlzLl9pbXBvcnQoZ2x0Zik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbXBvcnQgc3ByaW5nIGJvbmVzIGZyb20gYSBHTFRGIGFuZCByZXR1cm4gYSB7QGxpbmsgVlJNU3ByaW5nQm9uZU1hbmFnZXJ9LlxuICAgICAqIEl0IG1pZ2h0IHJldHVybiBgbnVsbGAgaW5zdGVhZCB3aGVuIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgY3JlYXRlZCBvciBzb21ldGhpbmcgZ28gd3JvbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZ2x0ZiBBIHBhcnNlZCByZXN1bHQgb2YgR0xURiB0YWtlbiBmcm9tIEdMVEZMb2FkZXJcbiAgICAgKi9cbiAgICBfaW1wb3J0KGdsdGYpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHYxUmVzdWx0ID0geWllbGQgdGhpcy5fdjFJbXBvcnQoZ2x0Zik7XG4gICAgICAgICAgICBpZiAodjFSZXN1bHQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2MVJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHYwUmVzdWx0ID0geWllbGQgdGhpcy5fdjBJbXBvcnQoZ2x0Zik7XG4gICAgICAgICAgICBpZiAodjBSZXN1bHQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2MFJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX3YxSW1wb3J0KGdsdGYpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSBnbHRmLnBhcnNlci5qc29uO1xuICAgICAgICAgICAgLy8gZWFybHkgYWJvcnQgaWYgaXQgZG9lc24ndCB1c2Ugc3ByaW5nIGJvbmVzXG4gICAgICAgICAgICBjb25zdCBpc1NwcmluZ0JvbmVVc2VkID0gKChfYSA9IGpzb24uZXh0ZW5zaW9uc1VzZWQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pbmRleE9mKFZSTVNwcmluZ0JvbmVMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUUpKSAhPT0gLTE7XG4gICAgICAgICAgICBpZiAoIWlzU3ByaW5nQm9uZVVzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVlJNU3ByaW5nQm9uZU1hbmFnZXIoKTtcbiAgICAgICAgICAgIGNvbnN0IHRocmVlTm9kZXMgPSB5aWVsZCBnbHRmLnBhcnNlci5nZXREZXBlbmRlbmNpZXMoJ25vZGUnKTtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IChfYiA9IGpzb24uZXh0ZW5zaW9ucykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iW1ZSTVNwcmluZ0JvbmVMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUVdO1xuICAgICAgICAgICAgaWYgKCFleHRlbnNpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNwZWNWZXJzaW9uID0gZXh0ZW5zaW9uLnNwZWNWZXJzaW9uO1xuICAgICAgICAgICAgaWYgKCFQT1NTSUJMRV9TUEVDX1ZFUlNJT05TLmhhcyhzcGVjVmVyc2lvbikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFZSTVNwcmluZ0JvbmVMb2FkZXJQbHVnaW46IFVua25vd24gJHtWUk1TcHJpbmdCb25lTG9hZGVyUGx1Z2luLkVYVEVOU0lPTl9OQU1FfSBzcGVjVmVyc2lvbiBcIiR7c3BlY1ZlcnNpb259XCJgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGNvbGxpZGVycyA9IChfYyA9IGV4dGVuc2lvbi5jb2xsaWRlcnMpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5tYXAoKHNjaGVtYUNvbGxpZGVyLCBpQ29sbGlkZXIpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aHJlZU5vZGVzW3NjaGVtYUNvbGxpZGVyLm5vZGVdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjaGVtYVNoYXBlID0gc2NoZW1hQ29sbGlkZXIuc2hhcGU7XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYVNoYXBlLnNwaGVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5faW1wb3J0U3BoZXJlQ29sbGlkZXIobm9kZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBuZXcgVEhSRUUuVmVjdG9yMygpLmZyb21BcnJheSgoX2EgPSBzY2hlbWFTaGFwZS5zcGhlcmUub2Zmc2V0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbMC4wLCAwLjAsIDAuMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiAoX2IgPSBzY2hlbWFTaGFwZS5zcGhlcmUucmFkaXVzKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwLjAsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY2hlbWFTaGFwZS5jYXBzdWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pbXBvcnRDYXBzdWxlQ29sbGlkZXIobm9kZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBuZXcgVEhSRUUuVmVjdG9yMygpLmZyb21BcnJheSgoX2MgPSBzY2hlbWFTaGFwZS5jYXBzdWxlLm9mZnNldCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogWzAuMCwgMC4wLCAwLjBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhZGl1czogKF9kID0gc2NoZW1hU2hhcGUuY2Fwc3VsZS5yYWRpdXMpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDAuMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhaWw6IG5ldyBUSFJFRS5WZWN0b3IzKCkuZnJvbUFycmF5KChfZSA9IHNjaGVtYVNoYXBlLmNhcHN1bGUudGFpbCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogWzAuMCwgMC4wLCAwLjBdKSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVlJNU3ByaW5nQm9uZUxvYWRlclBsdWdpbjogVGhlIGNvbGxpZGVyICMke2lDb2xsaWRlcn0gaGFzIG5vIHZhbGlkIHNoYXBlYCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGNvbGxpZGVyR3JvdXBzID0gKF9kID0gZXh0ZW5zaW9uLmNvbGxpZGVyR3JvdXBzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QubWFwKChzY2hlbWFDb2xsaWRlckdyb3VwLCBpQ29sbGlkZXJHcm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2xzID0gKChfYSA9IHNjaGVtYUNvbGxpZGVyR3JvdXAuY29sbGlkZXJzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXSkubWFwKChpQ29sbGlkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sID0gY29sbGlkZXJzID09PSBudWxsIHx8IGNvbGxpZGVycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29sbGlkZXJzW2lDb2xsaWRlcl07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2wgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBWUk1TcHJpbmdCb25lTG9hZGVyUGx1Z2luOiBUaGUgY29sbGlkZXJHcm91cCAjJHtpQ29sbGlkZXJHcm91cH0gYXR0ZW1wdGVkIHRvIHVzZSBhIGNvbGxpZGVyICMke2lDb2xsaWRlcn0gYnV0IG5vdCBmb3VuZGApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2w7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgY29sbGlkZXJzOiBjb2xzLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBzY2hlbWFDb2xsaWRlckdyb3VwLm5hbWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgKF9lID0gZXh0ZW5zaW9uLnNwcmluZ3MpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5mb3JFYWNoKChzY2hlbWFTcHJpbmcsIGlTcHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NoZW1hSm9pbnRzID0gc2NoZW1hU3ByaW5nLmpvaW50cztcbiAgICAgICAgICAgICAgICAvLyBwcmVwYXJlIGNvbGxpZGVyc1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbGxpZGVyR3JvdXBzRm9yU3ByaW5nID0gKF9hID0gc2NoZW1hU3ByaW5nLmNvbGxpZGVyR3JvdXBzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubWFwKChpQ29sbGlkZXJHcm91cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IGNvbGxpZGVyR3JvdXBzID09PSBudWxsIHx8IGNvbGxpZGVyR3JvdXBzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb2xsaWRlckdyb3Vwc1tpQ29sbGlkZXJHcm91cF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChncm91cCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFZSTVNwcmluZ0JvbmVMb2FkZXJQbHVnaW46IFRoZSBzcHJpbmcgIyR7aVNwcmluZ30gYXR0ZW1wdGVkIHRvIHVzZSBhIGNvbGxpZGVyR3JvdXAgJHtpQ29sbGlkZXJHcm91cH0gYnV0IG5vdCBmb3VuZGApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBncm91cDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZW50ZXIgPSBzY2hlbWFTcHJpbmcuY2VudGVyICE9IG51bGwgPyB0aHJlZU5vZGVzW3NjaGVtYVNwcmluZy5jZW50ZXJdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGxldCBwcmV2U2NoZW1hSm9pbnQ7XG4gICAgICAgICAgICAgICAgc2NoZW1hSm9pbnRzLmZvckVhY2goKHNjaGVtYUpvaW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2U2NoZW1hSm9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXBhcmUgbm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZUluZGV4ID0gcHJldlNjaGVtYUpvaW50Lm5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gdGhyZWVOb2Rlc1tub2RlSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRJbmRleCA9IHNjaGVtYUpvaW50Lm5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IHRocmVlTm9kZXNbY2hpbGRJbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmVwYXJlIHNldHRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGl0UmFkaXVzOiBwcmV2U2NoZW1hSm9pbnQuaGl0UmFkaXVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdGb3JjZTogcHJldlNjaGVtYUpvaW50LmRyYWdGb3JjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmF2aXR5UG93ZXI6IHByZXZTY2hlbWFKb2ludC5ncmF2aXR5UG93ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpZmZuZXNzOiBwcmV2U2NoZW1hSm9pbnQuc3RpZmZuZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYXZpdHlEaXI6IHByZXZTY2hlbWFKb2ludC5ncmF2aXR5RGlyICE9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXcgVEhSRUUuVmVjdG9yMygpLmZyb21BcnJheShwcmV2U2NoZW1hSm9pbnQuZ3Jhdml0eURpcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIHNwcmluZyBib25lc1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgam9pbnQgPSB0aGlzLl9pbXBvcnRKb2ludChub2RlLCBjaGlsZCwgc2V0dGluZywgY29sbGlkZXJHcm91cHNGb3JTcHJpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW50LmNlbnRlciA9IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIuYWRkSm9pbnQoam9pbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHByZXZTY2hlbWFKb2ludCA9IHNjaGVtYUpvaW50O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBpbml0IHNwcmluZyBib25lc1xuICAgICAgICAgICAgbWFuYWdlci5zZXRJbml0U3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBtYW5hZ2VyO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX3YwSW1wb3J0KGdsdGYpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBqc29uID0gZ2x0Zi5wYXJzZXIuanNvbjtcbiAgICAgICAgICAgIC8vIGVhcmx5IGFib3J0IGlmIGl0IGRvZXNuJ3QgdXNlIHZybVxuICAgICAgICAgICAgY29uc3QgaXNWUk1Vc2VkID0gKChfYSA9IGpzb24uZXh0ZW5zaW9uc1VzZWQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pbmRleE9mKCdWUk0nKSkgIT09IC0xO1xuICAgICAgICAgICAgaWYgKCFpc1ZSTVVzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGVhcmx5IGFib3J0IGlmIGl0IGRvZXNuJ3QgaGF2ZSBib25lIGdyb3Vwc1xuICAgICAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gKF9iID0ganNvbi5leHRlbnNpb25zKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2JbJ1ZSTSddO1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hU2Vjb25kYXJ5QW5pbWF0aW9uID0gZXh0ZW5zaW9uID09PSBudWxsIHx8IGV4dGVuc2lvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXh0ZW5zaW9uLnNlY29uZGFyeUFuaW1hdGlvbjtcbiAgICAgICAgICAgIGlmICghc2NoZW1hU2Vjb25kYXJ5QW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzY2hlbWFCb25lR3JvdXBzID0gc2NoZW1hU2Vjb25kYXJ5QW5pbWF0aW9uID09PSBudWxsIHx8IHNjaGVtYVNlY29uZGFyeUFuaW1hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2NoZW1hU2Vjb25kYXJ5QW5pbWF0aW9uLmJvbmVHcm91cHM7XG4gICAgICAgICAgICBpZiAoIXNjaGVtYUJvbmVHcm91cHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVlJNU3ByaW5nQm9uZU1hbmFnZXIoKTtcbiAgICAgICAgICAgIGNvbnN0IHRocmVlTm9kZXMgPSB5aWVsZCBnbHRmLnBhcnNlci5nZXREZXBlbmRlbmNpZXMoJ25vZGUnKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbGxpZGVyR3JvdXBzID0gKF9jID0gc2NoZW1hU2Vjb25kYXJ5QW5pbWF0aW9uLmNvbGxpZGVyR3JvdXBzKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubWFwKChzY2hlbWFDb2xsaWRlckdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aHJlZU5vZGVzW3NjaGVtYUNvbGxpZGVyR3JvdXAubm9kZV07XG4gICAgICAgICAgICAgICAgY29uc3QgY29sbGlkZXJzID0gKChfYSA9IHNjaGVtYUNvbGxpZGVyR3JvdXAuY29sbGlkZXJzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXSkubWFwKChzY2hlbWFDb2xsaWRlciwgaUNvbGxpZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBuZXcgVEhSRUUuVmVjdG9yMygwLjAsIDAuMCwgMC4wKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjaGVtYUNvbGxpZGVyLm9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LnNldCgoX2EgPSBzY2hlbWFDb2xsaWRlci5vZmZzZXQueCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMC4wLCAoX2IgPSBzY2hlbWFDb2xsaWRlci5vZmZzZXQueSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMC4wLCBzY2hlbWFDb2xsaWRlci5vZmZzZXQueiA/IC1zY2hlbWFDb2xsaWRlci5vZmZzZXQueiA6IDAuMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ltcG9ydFNwaGVyZUNvbGxpZGVyKG5vZGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhZGl1czogKF9jID0gc2NoZW1hQ29sbGlkZXIucmFkaXVzKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwLjAsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNvbGxpZGVycyB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBpbXBvcnQgc3ByaW5nIGJvbmVzIGZvciBlYWNoIHNwcmluZyBib25lIGdyb3Vwc1xuICAgICAgICAgICAgc2NoZW1hQm9uZUdyb3VwcyA9PT0gbnVsbCB8fCBzY2hlbWFCb25lR3JvdXBzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzY2hlbWFCb25lR3JvdXBzLmZvckVhY2goKHNjaGVtYUJvbmVHcm91cCwgaUJvbmVHcm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvb3RJbmRpY2VzID0gc2NoZW1hQm9uZUdyb3VwLmJvbmVzO1xuICAgICAgICAgICAgICAgIGlmICghcm9vdEluZGljZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByb290SW5kaWNlcy5mb3JFYWNoKChyb290SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb290ID0gdGhyZWVOb2Rlc1tyb290SW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAvLyBwcmVwYXJlIHNldHRpbmdcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3Jhdml0eURpciA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzY2hlbWFCb25lR3JvdXAuZ3Jhdml0eURpcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3Jhdml0eURpci5zZXQoKF9hID0gc2NoZW1hQm9uZUdyb3VwLmdyYXZpdHlEaXIueCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMC4wLCAoX2IgPSBzY2hlbWFCb25lR3JvdXAuZ3Jhdml0eURpci55KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwLjAsIChfYyA9IHNjaGVtYUJvbmVHcm91cC5ncmF2aXR5RGlyLnopICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDAuMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmF2aXR5RGlyLnNldCgwLjAsIC0xLjAsIDAuMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VudGVyID0gc2NoZW1hQm9uZUdyb3VwLmNlbnRlciAhPSBudWxsID8gdGhyZWVOb2Rlc1tzY2hlbWFCb25lR3JvdXAuY2VudGVyXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpdFJhZGl1czogc2NoZW1hQm9uZUdyb3VwLmhpdFJhZGl1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdGb3JjZTogc2NoZW1hQm9uZUdyb3VwLmRyYWdGb3JjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyYXZpdHlQb3dlcjogc2NoZW1hQm9uZUdyb3VwLmdyYXZpdHlQb3dlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0aWZmbmVzczogc2NoZW1hQm9uZUdyb3VwLnN0aWZmaW5lc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncmF2aXR5RGlyLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAvLyBwcmVwYXJlIGNvbGxpZGVyc1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xsaWRlckdyb3Vwc0ZvclNwcmluZyA9IChfZCA9IHNjaGVtYUJvbmVHcm91cC5jb2xsaWRlckdyb3VwcykgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLm1hcCgoaUNvbGxpZGVyR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gY29sbGlkZXJHcm91cHMgPT09IG51bGwgfHwgY29sbGlkZXJHcm91cHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbGxpZGVyR3JvdXBzW2lDb2xsaWRlckdyb3VwXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBWUk1TcHJpbmdCb25lTG9hZGVyUGx1Z2luOiBUaGUgc3ByaW5nICMke2lCb25lR3JvdXB9IGF0dGVtcHRlZCB0byB1c2UgYSBjb2xsaWRlckdyb3VwICR7aUNvbGxpZGVyR3JvdXB9IGJ1dCBub3QgZm91bmRgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBncm91cDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBzcHJpbmcgYm9uZXNcbiAgICAgICAgICAgICAgICAgICAgcm9vdC50cmF2ZXJzZSgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSAoX2EgPSBub2RlLmNoaWxkcmVuWzBdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgam9pbnQgPSB0aGlzLl9pbXBvcnRKb2ludChub2RlLCBjaGlsZCwgc2V0dGluZywgY29sbGlkZXJHcm91cHNGb3JTcHJpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW50LmNlbnRlciA9IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIuYWRkSm9pbnQoam9pbnQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gaW5pdCBzcHJpbmcgYm9uZXNcbiAgICAgICAgICAgIGdsdGYuc2NlbmUudXBkYXRlTWF0cml4V29ybGQoKTtcbiAgICAgICAgICAgIG1hbmFnZXIuc2V0SW5pdFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gbWFuYWdlcjtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9pbXBvcnRKb2ludChub2RlLCBjaGlsZCwgc2V0dGluZywgY29sbGlkZXJHcm91cHNGb3JTcHJpbmcpIHtcbiAgICAgICAgY29uc3Qgc3ByaW5nQm9uZSA9IG5ldyBWUk1TcHJpbmdCb25lSm9pbnQobm9kZSwgY2hpbGQsIHNldHRpbmcsIGNvbGxpZGVyR3JvdXBzRm9yU3ByaW5nKTtcbiAgICAgICAgaWYgKHRoaXMuam9pbnRIZWxwZXJSb290KSB7XG4gICAgICAgICAgICBjb25zdCBoZWxwZXIgPSBuZXcgVlJNU3ByaW5nQm9uZUpvaW50SGVscGVyKHNwcmluZ0JvbmUpO1xuICAgICAgICAgICAgdGhpcy5qb2ludEhlbHBlclJvb3QuYWRkKGhlbHBlcik7XG4gICAgICAgICAgICBoZWxwZXIucmVuZGVyT3JkZXIgPSB0aGlzLmpvaW50SGVscGVyUm9vdC5yZW5kZXJPcmRlcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3ByaW5nQm9uZTtcbiAgICB9XG4gICAgX2ltcG9ydFNwaGVyZUNvbGxpZGVyKGRlc3RpbmF0aW9uLCBwYXJhbXMpIHtcbiAgICAgICAgY29uc3QgeyBvZmZzZXQsIHJhZGl1cyB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCBzaGFwZSA9IG5ldyBWUk1TcHJpbmdCb25lQ29sbGlkZXJTaGFwZVNwaGVyZSh7IG9mZnNldCwgcmFkaXVzIH0pO1xuICAgICAgICBjb25zdCBjb2xsaWRlciA9IG5ldyBWUk1TcHJpbmdCb25lQ29sbGlkZXIoc2hhcGUpO1xuICAgICAgICBkZXN0aW5hdGlvbi5hZGQoY29sbGlkZXIpO1xuICAgICAgICBpZiAodGhpcy5jb2xsaWRlckhlbHBlclJvb3QpIHtcbiAgICAgICAgICAgIGNvbnN0IGhlbHBlciA9IG5ldyBWUk1TcHJpbmdCb25lQ29sbGlkZXJIZWxwZXIoY29sbGlkZXIpO1xuICAgICAgICAgICAgdGhpcy5jb2xsaWRlckhlbHBlclJvb3QuYWRkKGhlbHBlcik7XG4gICAgICAgICAgICBoZWxwZXIucmVuZGVyT3JkZXIgPSB0aGlzLmNvbGxpZGVySGVscGVyUm9vdC5yZW5kZXJPcmRlcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sbGlkZXI7XG4gICAgfVxuICAgIF9pbXBvcnRDYXBzdWxlQ29sbGlkZXIoZGVzdGluYXRpb24sIHBhcmFtcykge1xuICAgICAgICBjb25zdCB7IG9mZnNldCwgcmFkaXVzLCB0YWlsIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IHNoYXBlID0gbmV3IFZSTVNwcmluZ0JvbmVDb2xsaWRlclNoYXBlQ2Fwc3VsZSh7IG9mZnNldCwgcmFkaXVzLCB0YWlsIH0pO1xuICAgICAgICBjb25zdCBjb2xsaWRlciA9IG5ldyBWUk1TcHJpbmdCb25lQ29sbGlkZXIoc2hhcGUpO1xuICAgICAgICBkZXN0aW5hdGlvbi5hZGQoY29sbGlkZXIpO1xuICAgICAgICBpZiAodGhpcy5jb2xsaWRlckhlbHBlclJvb3QpIHtcbiAgICAgICAgICAgIGNvbnN0IGhlbHBlciA9IG5ldyBWUk1TcHJpbmdCb25lQ29sbGlkZXJIZWxwZXIoY29sbGlkZXIpO1xuICAgICAgICAgICAgdGhpcy5jb2xsaWRlckhlbHBlclJvb3QuYWRkKGhlbHBlcik7XG4gICAgICAgICAgICBoZWxwZXIucmVuZGVyT3JkZXIgPSB0aGlzLmNvbGxpZGVySGVscGVyUm9vdC5yZW5kZXJPcmRlcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sbGlkZXI7XG4gICAgfVxufVxuVlJNU3ByaW5nQm9uZUxvYWRlclBsdWdpbi5FWFRFTlNJT05fTkFNRSA9ICdWUk1DX3NwcmluZ0JvbmUnO1xuXG5leHBvcnQgeyBWUk1TcHJpbmdCb25lQ29sbGlkZXIsIFZSTVNwcmluZ0JvbmVDb2xsaWRlckhlbHBlciwgVlJNU3ByaW5nQm9uZUNvbGxpZGVyU2hhcGUsIFZSTVNwcmluZ0JvbmVDb2xsaWRlclNoYXBlQ2Fwc3VsZSwgVlJNU3ByaW5nQm9uZUNvbGxpZGVyU2hhcGVTcGhlcmUsIFZSTVNwcmluZ0JvbmVKb2ludCwgVlJNU3ByaW5nQm9uZUpvaW50SGVscGVyLCBWUk1TcHJpbmdCb25lTG9hZGVyUGx1Z2luLCBWUk1TcHJpbmdCb25lTWFuYWdlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkR2h5WldVdGRuSnRMWE53Y21sdVoySnZibVV1Ylc5a2RXeGxMbXB6SWl3aWMyOTFjbU5sY3lJNld5SXVMaTl6Y21NdlZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlVMmhoY0dVdWRITWlMQ0l1TGk5emNtTXZWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5VTJoaGNHVkRZWEJ6ZFd4bExuUnpJaXdpTGk0dmMzSmpMMVpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2xOb1lYQmxVM0JvWlhKbExuUnpJaXdpTGk0dmMzSmpMMmhsYkhCbGNuTXZkWFJwYkhNdlEyOXNiR2xrWlhKVGFHRndaVU5oY0hOMWJHVkNkV1ptWlhKSFpXOXRaWFJ5ZVM1MGN5SXNJaTR1TDNOeVl5OW9aV3h3WlhKekwzVjBhV3h6TDBOdmJHeHBaR1Z5VTJoaGNHVlRjR2hsY21WQ2RXWm1aWEpIWlc5dFpYUnllUzUwY3lJc0lpNHVMM055WXk5b1pXeHdaWEp6TDFaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNraGxiSEJsY2k1MGN5SXNJaTR1TDNOeVl5OW9aV3h3WlhKekwzVjBhV3h6TDFOd2NtbHVaMEp2Ym1WQ2RXWm1aWEpIWlc5dFpYUnllUzUwY3lJc0lpNHVMM055WXk5b1pXeHdaWEp6TDFaU1RWTndjbWx1WjBKdmJtVktiMmx1ZEVobGJIQmxjaTUwY3lJc0lpNHVMM055WXk5V1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSXVkSE1pTENJdUxpOXpjbU12ZFhScGJITXZiV0YwTkVsdWRtVnlkRU52YlhCaGRDNTBjeUlzSWk0dUwzTnlZeTkxZEdsc2N5OU5ZWFJ5YVhnMFNXNTJaWEp6WlVOaFkyaGxMblJ6SWl3aUxpNHZjM0pqTDFaU1RWTndjbWx1WjBKdmJtVktiMmx1ZEM1MGN5SXNJaTR1THk0dUx5NHVMMjV2WkdWZmJXOWtkV3hsY3k5MGMyeHBZaTkwYzJ4cFlpNWxjell1YW5NaUxDSXVMaTl6Y21NdmRYUnBiSE12ZEhKaGRtVnljMlZCYm1ObGMzUnZjbk5HY205dFVtOXZkQzUwY3lJc0lpNHVMM055WXk5MWRHbHNjeTkwY21GMlpYSnpaVU5vYVd4a2NtVnVWVzUwYVd4RGIyNWthWFJwYjI1TlpYUXVkSE1pTENJdUxpOXpjbU12VmxKTlUzQnlhVzVuUW05dVpVMWhibUZuWlhJdWRITWlMQ0l1TGk5emNtTXZWbEpOVTNCeWFXNW5RbTl1WlV4dllXUmxjbEJzZFdkcGJpNTBjeUpkTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUZKbGNISmxjMlZ1ZEhNZ1lTQnphR0Z3WlNCdlppQmhJR052Ykd4cFpHVnlMbHh1SUNvdlhHNWxlSEJ2Y25RZ1lXSnpkSEpoWTNRZ1kyeGhjM01nVmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVUyaGhjR1VnZTF4dUlDQXZLaXBjYmlBZ0lDb2dWR2hsSUhSNWNHVWdiMllnZEdobElITm9ZWEJsTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdGaWMzUnlZV04wSUdkbGRDQjBlWEJsS0NrNklITjBjbWx1Wnp0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTJGc1kzVnNZWFJsSUdFZ1pHbHpkR0Z1WTJVZ1lXNWtJR0VnWkdseVpXTjBhVzl1SUdaeWIyMGdkR2hsSUdOdmJHeHBaR1Z5SUhSdklHRWdkR0Z5WjJWMElHOWlhbVZqZEM1Y2JpQWdJQ29nU1hRbmN5Qm9hWFFnYVdZZ2RHaGxJR1JwYzNSaGJtTmxJR2x6SUc1bFoyRjBhWFpsTGx4dUlDQWdLaUJVYUdVZ1pHbHlaV04wYVc5dUlIZHBiR3dnWW1VZ1kyOXVkR0ZwYm1Wa0lHbHVJSFJvWlNCbmFYWmxiaUIwWVhKblpYUWdkbVZqZEc5eUxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdZMjlzYkdsa1pYSk5ZWFJ5YVhnZ1FTQnRZWFJ5YVhnZ2NtVndjbVZ6Wlc1MGN5QjBhR1VnZEhKaGJuTm1iM0p0SUc5bUlIUm9aU0JqYjJ4c2FXUmxjbHh1SUNBZ0tpQkFjR0Z5WVcwZ2IySnFaV04wVUc5emFYUnBiMjRnUVNCMlpXTjBiM0lnY21Wd2NtVnpaVzUwY3lCMGFHVWdjRzl6YVhScGIyNGdiMllnZEdobElIUmhjbWRsZENCdlltcGxZM1JjYmlBZ0lDb2dRSEJoY21GdElHOWlhbVZqZEZKaFpHbDFjeUJVYUdVZ2NtRmthWFZ6SUc5bUlIUm9aU0J2WW1wbFkzUmNiaUFnSUNvZ1FIQmhjbUZ0SUhSaGNtZGxkQ0JVYUdVZ2NtVnpkV3gwSUdScGNtVmpkR2x2YmlCM2FXeHNJR0psSUdOdmJuUmhhVzVsWkNCcGJpQjBhR2x6SUhabFkzUnZjbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0ZpYzNSeVlXTjBJR05oYkdOMWJHRjBaVU52Ykd4cGMybHZiaWhjYmlBZ0lDQmpiMnhzYVdSbGNrMWhkSEpwZURvZ1ZFaFNSVVV1VFdGMGNtbDROQ3hjYmlBZ0lDQnZZbXBsWTNSUWIzTnBkR2x2YmpvZ1ZFaFNSVVV1Vm1WamRHOXlNeXhjYmlBZ0lDQnZZbXBsWTNSU1lXUnBkWE02SUc1MWJXSmxjaXhjYmlBZ0lDQjBZWEpuWlhRNklGUklVa1ZGTGxabFkzUnZjak1zWEc0Z0lDazZJRzUxYldKbGNqdGNibjFjYmlJc0ltbHRjRzl5ZENBcUlHRnpJRlJJVWtWRklHWnliMjBnSjNSb2NtVmxKenRjYm1sdGNHOXlkQ0I3SUZaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNsTm9ZWEJsSUgwZ1puSnZiU0FuTGk5V1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSlRhR0Z3WlNjN1hHNWNibU52Ym5OMElGOTJNMEVnUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncE8xeHVZMjl1YzNRZ1gzWXpRaUE5SUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0NrN1hHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCV1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSlRhR0Z3WlVOaGNITjFiR1VnWlhoMFpXNWtjeUJXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhKVGFHRndaU0I3WEc0Z0lIQjFZbXhwWXlCblpYUWdkSGx3WlNncE9pQW5ZMkZ3YzNWc1pTY2dlMXh1SUNBZ0lISmxkSFZ5YmlBblkyRndjM1ZzWlNjN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWR2hsSUc5bVpuTmxkQ0J2WmlCMGFHVWdhR1ZoWkNCbWNtOXRJSFJvWlNCdmNtbG5hVzR1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nYjJabWMyVjBPaUJVU0ZKRlJTNVdaV04wYjNJek8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdiMlptYzJWMElHOW1JSFJvWlNCMFlXbHNJR1p5YjIwZ2RHaGxJRzl5YVdkcGJpNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QjBZV2xzT2lCVVNGSkZSUzVXWldOMGIzSXpPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1VnY21Ga2FYVnpMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSEpoWkdsMWN6b2diblZ0WW1WeU8xeHVYRzRnSUhCMVlteHBZeUJqYjI1emRISjFZM1J2Y2lod1lYSmhiWE0vT2lCN0lISmhaR2wxY3o4NklHNTFiV0psY2pzZ2IyWm1jMlYwUHpvZ1ZFaFNSVVV1Vm1WamRHOXlNenNnZEdGcGJEODZJRlJJVWtWRkxsWmxZM1J2Y2pNZ2ZTa2dlMXh1SUNBZ0lITjFjR1Z5S0NrN1hHNWNiaUFnSUNCMGFHbHpMbTltWm5ObGRDQTlJSEJoY21GdGN6OHViMlptYzJWMElEOC9JRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLREF1TUN3Z01DNHdMQ0F3TGpBcE8xeHVJQ0FnSUhSb2FYTXVkR0ZwYkNBOUlIQmhjbUZ0Y3o4dWRHRnBiQ0EvUHlCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlnd0xqQXNJREF1TUN3Z01DNHdLVHRjYmlBZ0lDQjBhR2x6TG5KaFpHbDFjeUE5SUhCaGNtRnRjejh1Y21Ga2FYVnpJRDgvSURBdU1EdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QmpZV3hqZFd4aGRHVkRiMnhzYVhOcGIyNG9YRzRnSUNBZ1kyOXNiR2xrWlhKTllYUnlhWGc2SUZSSVVrVkZMazFoZEhKcGVEUXNYRzRnSUNBZ2IySnFaV04wVUc5emFYUnBiMjQ2SUZSSVVrVkZMbFpsWTNSdmNqTXNYRzRnSUNBZ2IySnFaV04wVW1Ga2FYVnpPaUJ1ZFcxaVpYSXNYRzRnSUNBZ2RHRnlaMlYwT2lCVVNGSkZSUzVXWldOMGIzSXpMRnh1SUNBcE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUY5Mk0wRXVZMjl3ZVNoMGFHbHpMbTltWm5ObGRDa3VZWEJ3YkhsTllYUnlhWGcwS0dOdmJHeHBaR1Z5VFdGMGNtbDRLVHNnTHk4Z2RISmhibk5tYjNKdFpXUWdhR1ZoWkZ4dUlDQWdJRjkyTTBJdVkyOXdlU2gwYUdsekxuUmhhV3dwTG1Gd2NHeDVUV0YwY21sNE5DaGpiMnhzYVdSbGNrMWhkSEpwZUNrN0lDOHZJSFJ5WVc1elptOXliV1ZrSUhSaGFXeGNiaUFnSUNCZmRqTkNMbk4xWWloZmRqTkJLVHNnTHk4Z1puSnZiU0JvWldGa0lIUnZJSFJoYVd4Y2JpQWdJQ0JqYjI1emRDQnNaVzVuZEdoVGNVTmhjSE4xYkdVZ1BTQmZkak5DTG14bGJtZDBhRk54S0NrN1hHNWNiaUFnSUNCMFlYSm5aWFF1WTI5d2VTaHZZbXBsWTNSUWIzTnBkR2x2YmlrdWMzVmlLRjkyTTBFcE95QXZMeUJtY205dElHaGxZV1FnZEc4Z2IySnFaV04wWEc0Z0lDQWdZMjl1YzNRZ1pHOTBJRDBnWDNZelFpNWtiM1FvZEdGeVoyVjBLVHNnTHk4Z1pHOTBJSEJ5YjJSMVkzUWdiMllnYjJabWMyVjBWRzlVWVdsc0lHRnVaQ0J2Wm1aelpYUlViMDlpYW1WamRGeHVYRzRnSUNBZ2FXWWdLR1J2ZENBOFBTQXdMakFwSUh0Y2JpQWdJQ0FnSUM4dklHbG1JRzlpYW1WamRDQnBjeUJ1WldGeUlHWnliMjBnZEdobElHaGxZV1JjYmlBZ0lDQWdJQzh2SUdSdklHNXZkR2hwYm1jc0lIVnpaU0IwYUdVZ1kzVnljbVZ1ZENCMllXeDFaU0JrYVhKbFkzUnNlVnh1SUNBZ0lIMGdaV3h6WlNCcFppQW9iR1Z1WjNSb1UzRkRZWEJ6ZFd4bElEdzlJR1J2ZENrZ2UxeHVJQ0FnSUNBZ0x5OGdhV1lnYjJKcVpXTjBJR2x6SUc1bFlYSWdabkp2YlNCMGFHVWdkR0ZwYkZ4dUlDQWdJQ0FnZEdGeVoyVjBMbk4xWWloZmRqTkNLVHNnTHk4Z1puSnZiU0IwWVdsc0lIUnZJRzlpYW1WamRGeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0F2THlCcFppQnZZbXBsWTNRZ2FYTWdZbVYwZDJWbGJpQjBkMjhnWlc1a2MxeHVJQ0FnSUNBZ1gzWXpRaTV0ZFd4MGFYQnNlVk5qWVd4aGNpaGtiM1FnTHlCc1pXNW5kR2hUY1VOaGNITjFiR1VwT3lBdkx5Qm1jbTl0SUdobFlXUWdkRzhnZEdobElHNWxZWEpsYzNRZ2NHOXBiblFnYjJZZ2RHaGxJSE5vWVdaMFhHNGdJQ0FnSUNCMFlYSm5aWFF1YzNWaUtGOTJNMElwT3lBdkx5Qm1jbTl0SUhSb1pTQnphR0ZtZENCd2IybHVkQ0IwYnlCdlltcGxZM1JjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCeVlXUnBkWE1nUFNCdlltcGxZM1JTWVdScGRYTWdLeUIwYUdsekxuSmhaR2wxY3p0Y2JpQWdJQ0JqYjI1emRDQmthWE4wWVc1alpTQTlJSFJoY21kbGRDNXNaVzVuZEdnb0tTQXRJSEpoWkdsMWN6dGNiaUFnSUNCMFlYSm5aWFF1Ym05eWJXRnNhWHBsS0NrN1hHNGdJQ0FnY21WMGRYSnVJR1JwYzNSaGJtTmxPMXh1SUNCOVhHNTlYRzRpTENKcGJYQnZjblFnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVwYlhCdmNuUWdleUJXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhKVGFHRndaU0I5SUdaeWIyMGdKeTR2VmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVUyaGhjR1VuTzF4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVUyaGhjR1ZUY0dobGNtVWdaWGgwWlc1a2N5QldVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWEpUYUdGd1pTQjdYRzRnSUhCMVlteHBZeUJuWlhRZ2RIbHdaU2dwT2lBbmMzQm9aWEpsSnlCN1hHNGdJQ0FnY21WMGRYSnVJQ2R6Y0dobGNtVW5PMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSb1pTQnZabVp6WlhRZ1puSnZiU0IwYUdVZ2IzSnBaMmx1TGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUc5bVpuTmxkRG9nVkVoU1JVVXVWbVZqZEc5eU16dGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJSEpoWkdsMWN5NWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnlZV1JwZFhNNklHNTFiV0psY2p0Y2JseHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvY0dGeVlXMXpQem9nZXlCeVlXUnBkWE0vT2lCdWRXMWlaWEk3SUc5bVpuTmxkRDg2SUZSSVVrVkZMbFpsWTNSdmNqTWdmU2tnZTF4dUlDQWdJSE4xY0dWeUtDazdYRzVjYmlBZ0lDQjBhR2x6TG05bVpuTmxkQ0E5SUhCaGNtRnRjejh1YjJabWMyVjBJRDgvSUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0RBdU1Dd2dNQzR3TENBd0xqQXBPMXh1SUNBZ0lIUm9hWE11Y21Ga2FYVnpJRDBnY0dGeVlXMXpQeTV5WVdScGRYTWdQejhnTUM0d08xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHTmhiR04xYkdGMFpVTnZiR3hwYzJsdmJpaGNiaUFnSUNCamIyeHNhV1JsY2sxaGRISnBlRG9nVkVoU1JVVXVUV0YwY21sNE5DeGNiaUFnSUNCdlltcGxZM1JRYjNOcGRHbHZiam9nVkVoU1JVVXVWbVZqZEc5eU15eGNiaUFnSUNCdlltcGxZM1JTWVdScGRYTTZJRzUxYldKbGNpeGNiaUFnSUNCMFlYSm5aWFE2SUZSSVVrVkZMbFpsWTNSdmNqTXNYRzRnSUNrNklHNTFiV0psY2lCN1hHNGdJQ0FnZEdGeVoyVjBMbU52Y0hrb2RHaHBjeTV2Wm1aelpYUXBMbUZ3Y0d4NVRXRjBjbWw0TkNoamIyeHNhV1JsY2sxaGRISnBlQ2s3SUM4dklIUnlZVzV6Wm05eWJXVmtJRzltWm5ObGRGeHVJQ0FnSUhSaGNtZGxkQzV1WldkaGRHVW9LUzVoWkdRb2IySnFaV04wVUc5emFYUnBiMjRwT3lBdkx5QmhJSFpsWTNSdmNpQm1jbTl0SUdOdmJHeHBaR1Z5SUdObGJuUmxjaUIwYnlCdlltcGxZM1FnY0c5emFYUnBiMjVjYmlBZ0lDQmpiMjV6ZENCeVlXUnBkWE1nUFNCdlltcGxZM1JTWVdScGRYTWdLeUIwYUdsekxuSmhaR2wxY3p0Y2JpQWdJQ0JqYjI1emRDQmthWE4wWVc1alpTQTlJSFJoY21kbGRDNXNaVzVuZEdnb0tTQXRJSEpoWkdsMWN6dGNiaUFnSUNCMFlYSm5aWFF1Ym05eWJXRnNhWHBsS0NrN1hHNGdJQ0FnY21WMGRYSnVJR1JwYzNSaGJtTmxPMXh1SUNCOVhHNTlYRzRpTENKcGJYQnZjblFnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVwYlhCdmNuUWdleUJXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhKVGFHRndaVU5oY0hOMWJHVWdmU0JtY205dElDY3VMaTh1TGk5V1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSlRhR0Z3WlVOaGNITjFiR1VuTzF4dWFXMXdiM0owSUhzZ1EyOXNiR2xrWlhKVGFHRndaVUoxWm1abGNrZGxiMjFsZEhKNUlIMGdabkp2YlNBbkxpOURiMnhzYVdSbGNsTm9ZWEJsUW5WbVptVnlSMlZ2YldWMGNua25PMXh1WEc1amIyNXpkQ0JmZGpOQklEMGdibVYzSUZSSVVrVkZMbFpsWTNSdmNqTW9LVHRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRU52Ykd4cFpHVnlVMmhoY0dWRFlYQnpkV3hsUW5WbVptVnlSMlZ2YldWMGNua2daWGgwWlc1a2N5QlVTRkpGUlM1Q2RXWm1aWEpIWlc5dFpYUnllU0JwYlhCc1pXMWxiblJ6SUVOdmJHeHBaR1Z5VTJoaGNHVkNkV1ptWlhKSFpXOXRaWFJ5ZVNCN1hHNGdJSEIxWW14cFl5QjNiM0pzWkZOallXeGxJRDBnTVM0d08xeHVYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnWDJGMGRISlFiM002SUZSSVVrVkZMa0oxWm1abGNrRjBkSEpwWW5WMFpUdGNiaUFnY0hKcGRtRjBaU0J5WldGa2IyNXNlU0JmWVhSMGNrbHVaR1Y0T2lCVVNGSkZSUzVDZFdabVpYSkJkSFJ5YVdKMWRHVTdYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnWDNOb1lYQmxPaUJXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhKVGFHRndaVU5oY0hOMWJHVTdYRzRnSUhCeWFYWmhkR1VnWDJOMWNuSmxiblJTWVdScGRYTWdQU0F3TzF4dUlDQndjbWwyWVhSbElISmxZV1J2Ym14NUlGOWpkWEp5Wlc1MFQyWm1jMlYwSUQwZ2JtVjNJRlJJVWtWRkxsWmxZM1J2Y2pNb0tUdGNiaUFnY0hKcGRtRjBaU0J5WldGa2IyNXNlU0JmWTNWeWNtVnVkRlJoYVd3Z1BTQnVaWGNnVkVoU1JVVXVWbVZqZEc5eU15Z3BPMXh1WEc0Z0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpaHphR0Z3WlRvZ1ZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlVMmhoY0dWRFlYQnpkV3hsS1NCN1hHNGdJQ0FnYzNWd1pYSW9LVHRjYmx4dUlDQWdJSFJvYVhNdVgzTm9ZWEJsSUQwZ2MyaGhjR1U3WEc1Y2JpQWdJQ0IwYUdsekxsOWhkSFJ5VUc5eklEMGdibVYzSUZSSVVrVkZMa0oxWm1abGNrRjBkSEpwWW5WMFpTaHVaWGNnUm14dllYUXpNa0Z5Y21GNUtETTVOaWtzSURNcE8xeHVJQ0FnSUhSb2FYTXVjMlYwUVhSMGNtbGlkWFJsS0Nkd2IzTnBkR2x2Ymljc0lIUm9hWE11WDJGMGRISlFiM01wTzF4dVhHNGdJQ0FnZEdocGN5NWZZWFIwY2tsdVpHVjRJRDBnYm1WM0lGUklVa1ZGTGtKMVptWmxja0YwZEhKcFluVjBaU2h1WlhjZ1ZXbHVkREUyUVhKeVlYa29NalkwS1N3Z01TazdYRzRnSUNBZ2RHaHBjeTV6WlhSSmJtUmxlQ2gwYUdsekxsOWhkSFJ5U1c1a1pYZ3BPMXh1WEc0Z0lDQWdkR2hwY3k1ZlluVnBiR1JKYm1SbGVDZ3BPMXh1SUNBZ0lIUm9hWE11ZFhCa1lYUmxLQ2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nZFhCa1lYUmxLQ2s2SUhadmFXUWdlMXh1SUNBZ0lHeGxkQ0J6YUc5MWJHUlZjR1JoZEdWSFpXOXRaWFJ5ZVNBOUlHWmhiSE5sTzF4dVhHNGdJQ0FnWTI5dWMzUWdjbUZrYVhWeklEMGdkR2hwY3k1ZmMyaGhjR1V1Y21Ga2FYVnpJQzhnZEdocGN5NTNiM0pzWkZOallXeGxPMXh1SUNBZ0lHbG1JQ2gwYUdsekxsOWpkWEp5Wlc1MFVtRmthWFZ6SUNFOVBTQnlZV1JwZFhNcElIdGNiaUFnSUNBZ0lIUm9hWE11WDJOMWNuSmxiblJTWVdScGRYTWdQU0J5WVdScGRYTTdYRzRnSUNBZ0lDQnphRzkxYkdSVmNHUmhkR1ZIWlc5dFpYUnllU0E5SUhSeWRXVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLQ0YwYUdsekxsOWpkWEp5Wlc1MFQyWm1jMlYwTG1WeGRXRnNjeWgwYUdsekxsOXphR0Z3WlM1dlptWnpaWFFwS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDlqZFhKeVpXNTBUMlptYzJWMExtTnZjSGtvZEdocGN5NWZjMmhoY0dVdWIyWm1jMlYwS1R0Y2JpQWdJQ0FnSUhOb2IzVnNaRlZ3WkdGMFpVZGxiMjFsZEhKNUlEMGdkSEoxWlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQjBZV2xzSUQwZ1gzWXpRUzVqYjNCNUtIUm9hWE11WDNOb1lYQmxMblJoYVd3cExtUnBkbWxrWlZOallXeGhjaWgwYUdsekxuZHZjbXhrVTJOaGJHVXBPMXh1SUNBZ0lHbG1JQ2gwYUdsekxsOWpkWEp5Wlc1MFZHRnBiQzVrYVhOMFlXNWpaVlJ2VTNGMVlYSmxaQ2gwWVdsc0tTQStJREZsTFRFd0tTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5amRYSnlaVzUwVkdGcGJDNWpiM0I1S0hSaGFXd3BPMXh1SUNBZ0lDQWdjMmh2ZFd4a1ZYQmtZWFJsUjJWdmJXVjBjbmtnUFNCMGNuVmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h6YUc5MWJHUlZjR1JoZEdWSFpXOXRaWFJ5ZVNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmWW5WcGJHUlFiM05wZEdsdmJpZ3BPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdYMkoxYVd4a1VHOXphWFJwYjI0b0tUb2dkbTlwWkNCN1hHNGdJQ0FnWDNZelFTNWpiM0I1S0hSb2FYTXVYMk4xY25KbGJuUlVZV2xzS1M1emRXSW9kR2hwY3k1ZlkzVnljbVZ1ZEU5bVpuTmxkQ2s3WEc0Z0lDQWdZMjl1YzNRZ2JDQTlJRjkyTTBFdWJHVnVaM1JvS0NrZ0x5QjBhR2x6TGw5amRYSnlaVzUwVW1Ga2FYVnpPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQRDBnTVRZN0lHa3JLeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdkQ0E5SUNocElDOGdNVFl1TUNrZ0tpQk5ZWFJvTGxCSk8xeHVYRzRnSUNBZ0lDQjBhR2x6TGw5aGRIUnlVRzl6TG5ObGRGaFpXaWhwTENBdFRXRjBhQzV6YVc0b2RDa3NJQzFOWVhSb0xtTnZjeWgwS1N3Z01DNHdLVHRjYmlBZ0lDQWdJSFJvYVhNdVgyRjBkSEpRYjNNdWMyVjBXRmxhS0RFM0lDc2dhU3dnYkNBcklFMWhkR2d1YzJsdUtIUXBMQ0JOWVhSb0xtTnZjeWgwS1N3Z01DNHdLVHRjYmlBZ0lDQWdJSFJvYVhNdVgyRjBkSEpRYjNNdWMyVjBXRmxhS0RNMElDc2dhU3dnTFUxaGRHZ3VjMmx1S0hRcExDQXdMakFzSUMxTllYUm9MbU52Y3loMEtTazdYRzRnSUNBZ0lDQjBhR2x6TGw5aGRIUnlVRzl6TG5ObGRGaFpXaWcxTVNBcklHa3NJR3dnS3lCTllYUm9Mbk5wYmloMEtTd2dNQzR3TENCTllYUm9MbU52Y3loMEtTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQXpNanNnYVNzcktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCMElEMGdLR2tnTHlBeE5pNHdLU0FxSUUxaGRHZ3VVRWs3WEc0Z0lDQWdJQ0IwYUdsekxsOWhkSFJ5VUc5ekxuTmxkRmhaV2lnMk9DQXJJR2tzSURBdU1Dd2dUV0YwYUM1emFXNG9kQ2tzSUUxaGRHZ3VZMjl6S0hRcEtUdGNiaUFnSUNBZ0lIUm9hWE11WDJGMGRISlFiM011YzJWMFdGbGFLREV3TUNBcklHa3NJR3dzSUUxaGRHZ3VjMmx1S0hRcExDQk5ZWFJvTG1OdmN5aDBLU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2RHaGxkR0VnUFNCTllYUm9MbUYwWVc0eUtGOTJNMEV1ZVN3Z1RXRjBhQzV6Y1hKMEtGOTJNMEV1ZUNBcUlGOTJNMEV1ZUNBcklGOTJNMEV1ZWlBcUlGOTJNMEV1ZWlrcE8xeHVJQ0FnSUdOdmJuTjBJSEJvYVNBOUlDMU5ZWFJvTG1GMFlXNHlLRjkyTTBFdWVpd2dYM1l6UVM1NEtUdGNibHh1SUNBZ0lIUm9hWE11Y205MFlYUmxXaWgwYUdWMFlTazdYRzRnSUNBZ2RHaHBjeTV5YjNSaGRHVlpLSEJvYVNrN1hHNGdJQ0FnZEdocGN5NXpZMkZzWlNoMGFHbHpMbDlqZFhKeVpXNTBVbUZrYVhWekxDQjBhR2x6TGw5amRYSnlaVzUwVW1Ga2FYVnpMQ0IwYUdsekxsOWpkWEp5Wlc1MFVtRmthWFZ6S1R0Y2JpQWdJQ0IwYUdsekxuUnlZVzV6YkdGMFpTaDBhR2x6TGw5amRYSnlaVzUwVDJabWMyVjBMbmdzSUhSb2FYTXVYMk4xY25KbGJuUlBabVp6WlhRdWVTd2dkR2hwY3k1ZlkzVnljbVZ1ZEU5bVpuTmxkQzU2S1R0Y2JseHVJQ0FnSUhSb2FYTXVYMkYwZEhKUWIzTXVibVZsWkhOVmNHUmhkR1VnUFNCMGNuVmxPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JmWW5WcGJHUkpibVJsZUNncE9pQjJiMmxrSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SURNME95QnBLeXNwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR2t4SUQwZ0tHa2dLeUF4S1NBbElETTBPMXh1WEc0Z0lDQWdJQ0IwYUdsekxsOWhkSFJ5U1c1a1pYZ3VjMlYwV0Zrb2FTQXFJRElzSUdrc0lHa3hLVHRjYmlBZ0lDQWdJSFJvYVhNdVgyRjBkSEpKYm1SbGVDNXpaWFJZV1NnMk9DQXJJR2tnS2lBeUxDQXpOQ0FySUdrc0lETTBJQ3NnYVRFcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z016STdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYVRFZ1BTQW9hU0FySURFcElDVWdNekk3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVYMkYwZEhKSmJtUmxlQzV6WlhSWVdTZ3hNellnS3lCcElDb2dNaXdnTmpnZ0t5QnBMQ0EyT0NBcklHa3hLVHRjYmlBZ0lDQWdJSFJvYVhNdVgyRjBkSEpKYm1SbGVDNXpaWFJZV1NneU1EQWdLeUJwSUNvZ01pd2dNVEF3SUNzZ2FTd2dNVEF3SUNzZ2FURXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11WDJGMGRISkpibVJsZUM1dVpXVmtjMVZ3WkdGMFpTQTlJSFJ5ZFdVN1hHNGdJSDFjYm4xY2JpSXNJbWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCN0lGWlNUVk53Y21sdVowSnZibVZEYjJ4c2FXUmxjbE5vWVhCbFUzQm9aWEpsSUgwZ1puSnZiU0FuTGk0dkxpNHZWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5VTJoaGNHVlRjR2hsY21Vbk8xeHVhVzF3YjNKMElIc2dRMjlzYkdsa1pYSlRhR0Z3WlVKMVptWmxja2RsYjIxbGRISjVJSDBnWm5KdmJTQW5MaTlEYjJ4c2FXUmxjbE5vWVhCbFFuVm1abVZ5UjJWdmJXVjBjbmtuTzF4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nUTI5c2JHbGtaWEpUYUdGd1pWTndhR1Z5WlVKMVptWmxja2RsYjIxbGRISjVJR1Y0ZEdWdVpITWdWRWhTUlVVdVFuVm1abVZ5UjJWdmJXVjBjbmtnYVcxd2JHVnRaVzUwY3lCRGIyeHNhV1JsY2xOb1lYQmxRblZtWm1WeVIyVnZiV1YwY25rZ2UxeHVJQ0J3ZFdKc2FXTWdkMjl5YkdSVFkyRnNaU0E5SURFdU1EdGNibHh1SUNCd2NtbDJZWFJsSUhKbFlXUnZibXg1SUY5aGRIUnlVRzl6T2lCVVNGSkZSUzVDZFdabVpYSkJkSFJ5YVdKMWRHVTdYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnWDJGMGRISkpibVJsZURvZ1ZFaFNSVVV1UW5WbVptVnlRWFIwY21saWRYUmxPMXh1SUNCd2NtbDJZWFJsSUhKbFlXUnZibXg1SUY5emFHRndaVG9nVmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVUyaGhjR1ZUY0dobGNtVTdYRzRnSUhCeWFYWmhkR1VnWDJOMWNuSmxiblJTWVdScGRYTWdQU0F3TzF4dUlDQndjbWwyWVhSbElISmxZV1J2Ym14NUlGOWpkWEp5Wlc1MFQyWm1jMlYwSUQwZ2JtVjNJRlJJVWtWRkxsWmxZM1J2Y2pNb0tUdGNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2MyaGhjR1U2SUZaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNsTm9ZWEJsVTNCb1pYSmxLU0I3WEc0Z0lDQWdjM1Z3WlhJb0tUdGNibHh1SUNBZ0lIUm9hWE11WDNOb1lYQmxJRDBnYzJoaGNHVTdYRzVjYmlBZ0lDQjBhR2x6TGw5aGRIUnlVRzl6SUQwZ2JtVjNJRlJJVWtWRkxrSjFabVpsY2tGMGRISnBZblYwWlNodVpYY2dSbXh2WVhRek1rRnljbUY1S0RNeUlDb2dNeUFxSURNcExDQXpLVHRjYmlBZ0lDQjBhR2x6TG5ObGRFRjBkSEpwWW5WMFpTZ25jRzl6YVhScGIyNG5MQ0IwYUdsekxsOWhkSFJ5VUc5ektUdGNibHh1SUNBZ0lIUm9hWE11WDJGMGRISkpibVJsZUNBOUlHNWxkeUJVU0ZKRlJTNUNkV1ptWlhKQmRIUnlhV0oxZEdVb2JtVjNJRlZwYm5ReE5rRnljbUY1S0RZMElDb2dNeWtzSURFcE8xeHVJQ0FnSUhSb2FYTXVjMlYwU1c1a1pYZ29kR2hwY3k1ZllYUjBja2x1WkdWNEtUdGNibHh1SUNBZ0lIUm9hWE11WDJKMWFXeGtTVzVrWlhnb0tUdGNiaUFnSUNCMGFHbHpMblZ3WkdGMFpTZ3BPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJSFZ3WkdGMFpTZ3BPaUIyYjJsa0lIdGNiaUFnSUNCc1pYUWdjMmh2ZFd4a1ZYQmtZWFJsUjJWdmJXVjBjbmtnUFNCbVlXeHpaVHRjYmx4dUlDQWdJR052Ym5OMElISmhaR2wxY3lBOUlIUm9hWE11WDNOb1lYQmxMbkpoWkdsMWN5QXZJSFJvYVhNdWQyOXliR1JUWTJGc1pUdGNiaUFnSUNCcFppQW9kR2hwY3k1ZlkzVnljbVZ1ZEZKaFpHbDFjeUFoUFQwZ2NtRmthWFZ6S1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDlqZFhKeVpXNTBVbUZrYVhWeklEMGdjbUZrYVhWek8xeHVJQ0FnSUNBZ2MyaHZkV3hrVlhCa1lYUmxSMlZ2YldWMGNua2dQU0IwY25WbE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDZ2hkR2hwY3k1ZlkzVnljbVZ1ZEU5bVpuTmxkQzVsY1hWaGJITW9kR2hwY3k1ZmMyaGhjR1V1YjJabWMyVjBLU2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZZM1Z5Y21WdWRFOW1abk5sZEM1amIzQjVLSFJvYVhNdVgzTm9ZWEJsTG05bVpuTmxkQ2s3WEc0Z0lDQWdJQ0J6YUc5MWJHUlZjR1JoZEdWSFpXOXRaWFJ5ZVNBOUlIUnlkV1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hOb2IzVnNaRlZ3WkdGMFpVZGxiMjFsZEhKNUtTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5aWRXbHNaRkJ2YzJsMGFXOXVLQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JmWW5WcGJHUlFiM05wZEdsdmJpZ3BPaUIyYjJsa0lIdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElETXlPeUJwS3lzcElIdGNiaUFnSUNBZ0lHTnZibk4wSUhRZ1BTQW9hU0F2SURFMkxqQXBJQ29nVFdGMGFDNVFTVHRjYmx4dUlDQWdJQ0FnZEdocGN5NWZZWFIwY2xCdmN5NXpaWFJZV1Zvb2FTd2dUV0YwYUM1amIzTW9kQ2tzSUUxaGRHZ3VjMmx1S0hRcExDQXdMakFwTzF4dUlDQWdJQ0FnZEdocGN5NWZZWFIwY2xCdmN5NXpaWFJZV1Zvb016SWdLeUJwTENBd0xqQXNJRTFoZEdndVkyOXpLSFFwTENCTllYUm9Mbk5wYmloMEtTazdYRzRnSUNBZ0lDQjBhR2x6TGw5aGRIUnlVRzl6TG5ObGRGaFpXaWcyTkNBcklHa3NJRTFoZEdndWMybHVLSFFwTENBd0xqQXNJRTFoZEdndVkyOXpLSFFwS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxuTmpZV3hsS0hSb2FYTXVYMk4xY25KbGJuUlNZV1JwZFhNc0lIUm9hWE11WDJOMWNuSmxiblJTWVdScGRYTXNJSFJvYVhNdVgyTjFjbkpsYm5SU1lXUnBkWE1wTzF4dUlDQWdJSFJvYVhNdWRISmhibk5zWVhSbEtIUm9hWE11WDJOMWNuSmxiblJQWm1aelpYUXVlQ3dnZEdocGN5NWZZM1Z5Y21WdWRFOW1abk5sZEM1NUxDQjBhR2x6TGw5amRYSnlaVzUwVDJabWMyVjBMbm9wTzF4dVhHNGdJQ0FnZEdocGN5NWZZWFIwY2xCdmN5NXVaV1ZrYzFWd1pHRjBaU0E5SUhSeWRXVTdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJRjlpZFdsc1pFbHVaR1Y0S0NrNklIWnZhV1FnZTF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnTXpJN0lHa3JLeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdhVEVnUFNBb2FTQXJJREVwSUNVZ016STdYRzVjYmlBZ0lDQWdJSFJvYVhNdVgyRjBkSEpKYm1SbGVDNXpaWFJZV1NocElDb2dNaXdnYVN3Z2FURXBPMXh1SUNBZ0lDQWdkR2hwY3k1ZllYUjBja2x1WkdWNExuTmxkRmhaS0RZMElDc2dhU0FxSURJc0lETXlJQ3NnYVN3Z016SWdLeUJwTVNrN1hHNGdJQ0FnSUNCMGFHbHpMbDloZEhSeVNXNWtaWGd1YzJWMFdGa29NVEk0SUNzZ2FTQXFJRElzSURZMElDc2dhU3dnTmpRZ0t5QnBNU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkR2hwY3k1ZllYUjBja2x1WkdWNExtNWxaV1J6VlhCa1lYUmxJRDBnZEhKMVpUdGNiaUFnZlZ4dWZWeHVJaXdpYVcxd2IzSjBJQ29nWVhNZ1ZFaFNSVVVnWm5KdmJTQW5kR2h5WldVbk8xeHVhVzF3YjNKMElIc2dWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5SUgwZ1puSnZiU0FuTGk0dlZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlKenRjYm1sdGNHOXlkQ0I3SUZaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNsTm9ZWEJsUTJGd2MzVnNaU0I5SUdaeWIyMGdKeTR1TDFaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNsTm9ZWEJsUTJGd2MzVnNaU2M3WEc1cGJYQnZjblFnZXlCV1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSlRhR0Z3WlZOd2FHVnlaU0I5SUdaeWIyMGdKeTR1TDFaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNsTm9ZWEJsVTNCb1pYSmxKenRjYm1sdGNHOXlkQ0I3SUVOdmJHeHBaR1Z5VTJoaGNHVkNkV1ptWlhKSFpXOXRaWFJ5ZVNCOUlHWnliMjBnSnk0dmRYUnBiSE12UTI5c2JHbGtaWEpUYUdGd1pVSjFabVpsY2tkbGIyMWxkSEo1Snp0Y2JtbHRjRzl5ZENCN0lFTnZiR3hwWkdWeVUyaGhjR1ZEWVhCemRXeGxRblZtWm1WeVIyVnZiV1YwY25rZ2ZTQm1jbTl0SUNjdUwzVjBhV3h6TDBOdmJHeHBaR1Z5VTJoaGNHVkRZWEJ6ZFd4bFFuVm1abVZ5UjJWdmJXVjBjbmtuTzF4dWFXMXdiM0owSUhzZ1EyOXNiR2xrWlhKVGFHRndaVk53YUdWeVpVSjFabVpsY2tkbGIyMWxkSEo1SUgwZ1puSnZiU0FuTGk5MWRHbHNjeTlEYjJ4c2FXUmxjbE5vWVhCbFUzQm9aWEpsUW5WbVptVnlSMlZ2YldWMGNua25PMXh1WEc1amIyNXpkQ0JmZGpOQklEMGdibVYzSUZSSVVrVkZMbFpsWTNSdmNqTW9LVHRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRlpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2tobGJIQmxjaUJsZUhSbGJtUnpJRlJJVWtWRkxrZHliM1Z3SUh0Y2JpQWdjSFZpYkdsaklISmxZV1J2Ym14NUlHTnZiR3hwWkdWeU9pQldVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWEk3WEc0Z0lIQnlhWFpoZEdVZ2NtVmhaRzl1YkhrZ1gyZGxiMjFsZEhKNU9pQkRiMnhzYVdSbGNsTm9ZWEJsUW5WbVptVnlSMlZ2YldWMGNuazdYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnWDJ4cGJtVTZJRlJJVWtWRkxreHBibVZUWldkdFpXNTBjenRjYmx4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9ZMjlzYkdsa1pYSTZJRlpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2lrZ2UxeHVJQ0FnSUhOMWNHVnlLQ2s3WEc0Z0lDQWdkR2hwY3k1dFlYUnlhWGhCZFhSdlZYQmtZWFJsSUQwZ1ptRnNjMlU3WEc1Y2JpQWdJQ0IwYUdsekxtTnZiR3hwWkdWeUlEMGdZMjlzYkdsa1pYSTdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NWpiMnhzYVdSbGNpNXphR0Z3WlNCcGJuTjBZVzVqWlc5bUlGWlNUVk53Y21sdVowSnZibVZEYjJ4c2FXUmxjbE5vWVhCbFUzQm9aWEpsS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDluWlc5dFpYUnllU0E5SUc1bGR5QkRiMnhzYVdSbGNsTm9ZWEJsVTNCb1pYSmxRblZtWm1WeVIyVnZiV1YwY25rb2RHaHBjeTVqYjJ4c2FXUmxjaTV6YUdGd1pTazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBhR2x6TG1OdmJHeHBaR1Z5TG5Ob1lYQmxJR2x1YzNSaGJtTmxiMllnVmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVUyaGhjR1ZEWVhCemRXeGxLU0I3WEc0Z0lDQWdJQ0IwYUdsekxsOW5aVzl0WlhSeWVTQTlJRzVsZHlCRGIyeHNhV1JsY2xOb1lYQmxRMkZ3YzNWc1pVSjFabVpsY2tkbGIyMWxkSEo1S0hSb2FYTXVZMjlzYkdsa1pYSXVjMmhoY0dVcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMVpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2tobGJIQmxjam9nVlc1cmJtOTNiaUJqYjJ4c2FXUmxjaUJ6YUdGd1pTQjBlWEJsSUdSbGRHVmpkR1ZrSnlrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdiV0YwWlhKcFlXd2dQU0J1WlhjZ1ZFaFNSVVV1VEdsdVpVSmhjMmxqVFdGMFpYSnBZV3dvZTF4dUlDQWdJQ0FnWTI5c2IzSTZJREI0Wm1Zd01HWm1MRnh1SUNBZ0lDQWdaR1Z3ZEdoVVpYTjBPaUJtWVd4elpTeGNiaUFnSUNBZ0lHUmxjSFJvVjNKcGRHVTZJR1poYkhObExGeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ2RHaHBjeTVmYkdsdVpTQTlJRzVsZHlCVVNGSkZSUzVNYVc1bFUyVm5iV1Z1ZEhNb2RHaHBjeTVmWjJWdmJXVjBjbmtzSUcxaGRHVnlhV0ZzS1R0Y2JpQWdJQ0IwYUdsekxtRmtaQ2gwYUdsekxsOXNhVzVsS1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCa2FYTndiM05sS0NrNklIWnZhV1FnZTF4dUlDQWdJSFJvYVhNdVgyZGxiMjFsZEhKNUxtUnBjM0J2YzJVb0tUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QjFjR1JoZEdWTllYUnlhWGhYYjNKc1pDaG1iM0pqWlRvZ1ltOXZiR1ZoYmlrNklIWnZhV1FnZTF4dUlDQWdJSFJvYVhNdVkyOXNiR2xrWlhJdWRYQmtZWFJsVjI5eWJHUk5ZWFJ5YVhnb2RISjFaU3dnWm1Gc2MyVXBPMXh1WEc0Z0lDQWdkR2hwY3k1dFlYUnlhWGd1WTI5d2VTaDBhR2x6TG1OdmJHeHBaR1Z5TG0xaGRISnBlRmR2Y214a0tUdGNibHh1SUNBZ0lHTnZibk4wSUcxaGRISnBlRmR2Y214a1JXeGxiV1Z1ZEhNZ1BTQjBhR2x6TG0xaGRISnBlQzVsYkdWdFpXNTBjenRjYmlBZ0lDQjBhR2x6TGw5blpXOXRaWFJ5ZVM1M2IzSnNaRk5qWVd4bElEMGdYM1l6UVZ4dUlDQWdJQ0FnTG5ObGRDaHRZWFJ5YVhoWGIzSnNaRVZzWlcxbGJuUnpXekJkTENCdFlYUnlhWGhYYjNKc1pFVnNaVzFsYm5Seld6RmRMQ0J0WVhSeWFYaFhiM0pzWkVWc1pXMWxiblJ6V3pKZEtWeHVJQ0FnSUNBZ0xteGxibWQwYUNncE95QXZMeUJqWVd4amRXeGhkR1VnYzJOaGJHVWdiMllnZUNCamIyMXdiMjVsYm5SY2JseHVJQ0FnSUhSb2FYTXVYMmRsYjIxbGRISjVMblZ3WkdGMFpTZ3BPMXh1WEc0Z0lDQWdjM1Z3WlhJdWRYQmtZWFJsVFdGMGNtbDRWMjl5YkdRb1ptOXlZMlVwTzF4dUlDQjlYRzU5WEc0aUxDSnBiWEJ2Y25RZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1cGJYQnZjblFnZXlCV1VrMVRjSEpwYm1kQ2IyNWxTbTlwYm5RZ2ZTQm1jbTl0SUNjdUxpOHVMaTlXVWsxVGNISnBibWRDYjI1bFNtOXBiblFuTzF4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVTNCeWFXNW5RbTl1WlVKMVptWmxja2RsYjIxbGRISjVJR1Y0ZEdWdVpITWdWRWhTUlVVdVFuVm1abVZ5UjJWdmJXVjBjbmtnZTF4dUlDQndkV0pzYVdNZ2QyOXliR1JUWTJGc1pTQTlJREV1TUR0Y2JseHVJQ0J3Y21sMllYUmxJSEpsWVdSdmJteDVJRjloZEhSeVVHOXpPaUJVU0ZKRlJTNUNkV1ptWlhKQmRIUnlhV0oxZEdVN1hHNGdJSEJ5YVhaaGRHVWdjbVZoWkc5dWJIa2dYMkYwZEhKSmJtUmxlRG9nVkVoU1JVVXVRblZtWm1WeVFYUjBjbWxpZFhSbE8xeHVJQ0J3Y21sMllYUmxJSEpsWVdSdmJteDVJRjl6Y0hKcGJtZENiMjVsT2lCV1VrMVRjSEpwYm1kQ2IyNWxTbTlwYm5RN1hHNGdJSEJ5YVhaaGRHVWdYMk4xY25KbGJuUlNZV1JwZFhNZ1BTQXdPMXh1SUNCd2NtbDJZWFJsSUhKbFlXUnZibXg1SUY5amRYSnlaVzUwVkdGcGJDQTlJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLQ2s3WEc1Y2JpQWdjSFZpYkdsaklHTnZibk4wY25WamRHOXlLSE53Y21sdVowSnZibVU2SUZaU1RWTndjbWx1WjBKdmJtVktiMmx1ZENrZ2UxeHVJQ0FnSUhOMWNHVnlLQ2s3WEc1Y2JpQWdJQ0IwYUdsekxsOXpjSEpwYm1kQ2IyNWxJRDBnYzNCeWFXNW5RbTl1WlR0Y2JseHVJQ0FnSUhSb2FYTXVYMkYwZEhKUWIzTWdQU0J1WlhjZ1ZFaFNSVVV1UW5WbVptVnlRWFIwY21saWRYUmxLRzVsZHlCR2JHOWhkRE15UVhKeVlYa29NamswS1N3Z015azdYRzRnSUNBZ2RHaHBjeTV6WlhSQmRIUnlhV0oxZEdVb0ozQnZjMmwwYVc5dUp5d2dkR2hwY3k1ZllYUjBjbEJ2Y3lrN1hHNWNiaUFnSUNCMGFHbHpMbDloZEhSeVNXNWtaWGdnUFNCdVpYY2dWRWhTUlVVdVFuVm1abVZ5UVhSMGNtbGlkWFJsS0c1bGR5QlZhVzUwTVRaQmNuSmhlU2d4T1RRcExDQXhLVHRjYmlBZ0lDQjBhR2x6TG5ObGRFbHVaR1Y0S0hSb2FYTXVYMkYwZEhKSmJtUmxlQ2s3WEc1Y2JpQWdJQ0IwYUdsekxsOWlkV2xzWkVsdVpHVjRLQ2s3WEc0Z0lDQWdkR2hwY3k1MWNHUmhkR1VvS1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCMWNHUmhkR1VvS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdiR1YwSUhOb2IzVnNaRlZ3WkdGMFpVZGxiMjFsZEhKNUlEMGdabUZzYzJVN1hHNWNiaUFnSUNCamIyNXpkQ0J5WVdScGRYTWdQU0IwYUdsekxsOXpjSEpwYm1kQ2IyNWxMbk5sZEhScGJtZHpMbWhwZEZKaFpHbDFjeUF2SUhSb2FYTXVkMjl5YkdSVFkyRnNaVHRjYmlBZ0lDQnBaaUFvZEdocGN5NWZZM1Z5Y21WdWRGSmhaR2wxY3lBaFBUMGdjbUZrYVhWektTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5amRYSnlaVzUwVW1Ga2FYVnpJRDBnY21Ga2FYVnpPMXh1SUNBZ0lDQWdjMmh2ZFd4a1ZYQmtZWFJsUjJWdmJXVjBjbmtnUFNCMGNuVmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2doZEdocGN5NWZZM1Z5Y21WdWRGUmhhV3d1WlhGMVlXeHpLSFJvYVhNdVgzTndjbWx1WjBKdmJtVXVhVzVwZEdsaGJFeHZZMkZzUTJocGJHUlFiM05wZEdsdmJpa3BJSHRjYmlBZ0lDQWdJSFJvYVhNdVgyTjFjbkpsYm5SVVlXbHNMbU52Y0hrb2RHaHBjeTVmYzNCeWFXNW5RbTl1WlM1cGJtbDBhV0ZzVEc5allXeERhR2xzWkZCdmMybDBhVzl1S1R0Y2JpQWdJQ0FnSUhOb2IzVnNaRlZ3WkdGMFpVZGxiMjFsZEhKNUlEMGdkSEoxWlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2MyaHZkV3hrVlhCa1lYUmxSMlZ2YldWMGNua3BJSHRjYmlBZ0lDQWdJSFJvYVhNdVgySjFhV3hrVUc5emFYUnBiMjRvS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUY5aWRXbHNaRkJ2YzJsMGFXOXVLQ2s2SUhadmFXUWdlMXh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dNekk3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2RDQTlJQ2hwSUM4Z01UWXVNQ2tnS2lCTllYUm9MbEJKTzF4dVhHNGdJQ0FnSUNCMGFHbHpMbDloZEhSeVVHOXpMbk5sZEZoWldpaHBMQ0JOWVhSb0xtTnZjeWgwS1N3Z1RXRjBhQzV6YVc0b2RDa3NJREF1TUNrN1hHNGdJQ0FnSUNCMGFHbHpMbDloZEhSeVVHOXpMbk5sZEZoWldpZ3pNaUFySUdrc0lEQXVNQ3dnVFdGMGFDNWpiM01vZENrc0lFMWhkR2d1YzJsdUtIUXBLVHRjYmlBZ0lDQWdJSFJvYVhNdVgyRjBkSEpRYjNNdWMyVjBXRmxhS0RZMElDc2dhU3dnVFdGMGFDNXphVzRvZENrc0lEQXVNQ3dnVFdGMGFDNWpiM01vZENrcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVjMk5oYkdVb2RHaHBjeTVmWTNWeWNtVnVkRkpoWkdsMWN5d2dkR2hwY3k1ZlkzVnljbVZ1ZEZKaFpHbDFjeXdnZEdocGN5NWZZM1Z5Y21WdWRGSmhaR2wxY3lrN1hHNGdJQ0FnZEdocGN5NTBjbUZ1YzJ4aGRHVW9kR2hwY3k1ZlkzVnljbVZ1ZEZSaGFXd3VlQ3dnZEdocGN5NWZZM1Z5Y21WdWRGUmhhV3d1ZVN3Z2RHaHBjeTVmWTNWeWNtVnVkRlJoYVd3dWVpazdYRzVjYmlBZ0lDQjBhR2x6TGw5aGRIUnlVRzl6TG5ObGRGaFpXaWc1Tml3Z01Dd2dNQ3dnTUNrN1hHNGdJQ0FnZEdocGN5NWZZWFIwY2xCdmN5NXpaWFJZV1Zvb09UY3NJSFJvYVhNdVgyTjFjbkpsYm5SVVlXbHNMbmdzSUhSb2FYTXVYMk4xY25KbGJuUlVZV2xzTG5rc0lIUm9hWE11WDJOMWNuSmxiblJVWVdsc0xub3BPMXh1WEc0Z0lDQWdkR2hwY3k1ZllYUjBjbEJ2Y3k1dVpXVmtjMVZ3WkdGMFpTQTlJSFJ5ZFdVN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElGOWlkV2xzWkVsdVpHVjRLQ2s2SUhadmFXUWdlMXh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dNekk3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2FURWdQU0FvYVNBcklERXBJQ1VnTXpJN1hHNWNiaUFnSUNBZ0lIUm9hWE11WDJGMGRISkpibVJsZUM1elpYUllXU2hwSUNvZ01pd2dhU3dnYVRFcE8xeHVJQ0FnSUNBZ2RHaHBjeTVmWVhSMGNrbHVaR1Y0TG5ObGRGaFpLRFkwSUNzZ2FTQXFJRElzSURNeUlDc2dhU3dnTXpJZ0t5QnBNU2s3WEc0Z0lDQWdJQ0IwYUdsekxsOWhkSFJ5U1c1a1pYZ3VjMlYwV0Zrb01USTRJQ3NnYVNBcUlESXNJRFkwSUNzZ2FTd2dOalFnS3lCcE1TazdYRzRnSUNBZ2ZWeHVJQ0FnSUhSb2FYTXVYMkYwZEhKSmJtUmxlQzV6WlhSWVdTZ3hPVElzSURrMkxDQTVOeWs3WEc1Y2JpQWdJQ0IwYUdsekxsOWhkSFJ5U1c1a1pYZ3VibVZsWkhOVmNHUmhkR1VnUFNCMGNuVmxPMXh1SUNCOVhHNTlYRzRpTENKcGJYQnZjblFnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVwYlhCdmNuUWdleUJXVWsxVGNISnBibWRDYjI1bFNtOXBiblFnZlNCbWNtOXRJQ2N1TGk5V1VrMVRjSEpwYm1kQ2IyNWxTbTlwYm5Rbk8xeHVhVzF3YjNKMElIc2dVM0J5YVc1blFtOXVaVUoxWm1abGNrZGxiMjFsZEhKNUlIMGdabkp2YlNBbkxpOTFkR2xzY3k5VGNISnBibWRDYjI1bFFuVm1abVZ5UjJWdmJXVjBjbmtuTzF4dVhHNWpiMjV6ZENCZmRqTkJJRDBnYm1WM0lGUklVa1ZGTGxabFkzUnZjak1vS1R0Y2JseHVaWGh3YjNKMElHTnNZWE56SUZaU1RWTndjbWx1WjBKdmJtVktiMmx1ZEVobGJIQmxjaUJsZUhSbGJtUnpJRlJJVWtWRkxrZHliM1Z3SUh0Y2JpQWdjSFZpYkdsaklISmxZV1J2Ym14NUlITndjbWx1WjBKdmJtVTZJRlpTVFZOd2NtbHVaMEp2Ym1WS2IybHVkRHRjYmlBZ2NISnBkbUYwWlNCeVpXRmtiMjVzZVNCZloyVnZiV1YwY25rNklGTndjbWx1WjBKdmJtVkNkV1ptWlhKSFpXOXRaWFJ5ZVR0Y2JpQWdjSEpwZG1GMFpTQnlaV0ZrYjI1c2VTQmZiR2x1WlRvZ1ZFaFNSVVV1VEdsdVpWTmxaMjFsYm5Sek8xeHVYRzRnSUhCMVlteHBZeUJqYjI1emRISjFZM1J2Y2loemNISnBibWRDYjI1bE9pQldVazFUY0hKcGJtZENiMjVsU205cGJuUXBJSHRjYmlBZ0lDQnpkWEJsY2lncE8xeHVJQ0FnSUhSb2FYTXViV0YwY21sNFFYVjBiMVZ3WkdGMFpTQTlJR1poYkhObE8xeHVYRzRnSUNBZ2RHaHBjeTV6Y0hKcGJtZENiMjVsSUQwZ2MzQnlhVzVuUW05dVpUdGNibHh1SUNBZ0lIUm9hWE11WDJkbGIyMWxkSEo1SUQwZ2JtVjNJRk53Y21sdVowSnZibVZDZFdabVpYSkhaVzl0WlhSeWVTaDBhR2x6TG5Od2NtbHVaMEp2Ym1VcE8xeHVYRzRnSUNBZ1kyOXVjM1FnYldGMFpYSnBZV3dnUFNCdVpYY2dWRWhTUlVVdVRHbHVaVUpoYzJsalRXRjBaWEpwWVd3b2UxeHVJQ0FnSUNBZ1kyOXNiM0k2SURCNFptWm1aakF3TEZ4dUlDQWdJQ0FnWkdWd2RHaFVaWE4wT2lCbVlXeHpaU3hjYmlBZ0lDQWdJR1JsY0hSb1YzSnBkR1U2SUdaaGJITmxMRnh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdkR2hwY3k1ZmJHbHVaU0E5SUc1bGR5QlVTRkpGUlM1TWFXNWxVMlZuYldWdWRITW9kR2hwY3k1ZloyVnZiV1YwY25rc0lHMWhkR1Z5YVdGc0tUdGNiaUFnSUNCMGFHbHpMbUZrWkNoMGFHbHpMbDlzYVc1bEtUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QmthWE53YjNObEtDazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVYMmRsYjIxbGRISjVMbVJwYzNCdmMyVW9LVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUIxY0dSaGRHVk5ZWFJ5YVhoWGIzSnNaQ2htYjNKalpUb2dZbTl2YkdWaGJpazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVjM0J5YVc1blFtOXVaUzVpYjI1bExuVndaR0YwWlZkdmNteGtUV0YwY21sNEtIUnlkV1VzSUdaaGJITmxLVHRjYmx4dUlDQWdJSFJvYVhNdWJXRjBjbWw0TG1OdmNIa29kR2hwY3k1emNISnBibWRDYjI1bExtSnZibVV1YldGMGNtbDRWMjl5YkdRcE8xeHVYRzRnSUNBZ1kyOXVjM1FnYldGMGNtbDRWMjl5YkdSRmJHVnRaVzUwY3lBOUlIUm9hWE11YldGMGNtbDRMbVZzWlcxbGJuUnpPMXh1SUNBZ0lIUm9hWE11WDJkbGIyMWxkSEo1TG5kdmNteGtVMk5oYkdVZ1BTQmZkak5CWEc0Z0lDQWdJQ0F1YzJWMEtHMWhkSEpwZUZkdmNteGtSV3hsYldWdWRITmJNRjBzSUcxaGRISnBlRmR2Y214a1JXeGxiV1Z1ZEhOYk1WMHNJRzFoZEhKcGVGZHZjbXhrUld4bGJXVnVkSE5iTWwwcFhHNGdJQ0FnSUNBdWJHVnVaM1JvS0NrN0lDOHZJR05oYkdOMWJHRjBaU0J6WTJGc1pTQnZaaUI0SUdOdmJYQnZibVZ1ZEZ4dVhHNGdJQ0FnZEdocGN5NWZaMlZ2YldWMGNua3VkWEJrWVhSbEtDazdYRzVjYmlBZ0lDQnpkWEJsY2k1MWNHUmhkR1ZOWVhSeWFYaFhiM0pzWkNobWIzSmpaU2s3WEc0Z0lIMWNibjFjYmlJc0ltbHRjRzl5ZENBcUlHRnpJRlJJVWtWRklHWnliMjBnSjNSb2NtVmxKenRjYm1sdGNHOXlkQ0IwZVhCbElIc2dWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5VTJoaGNHVWdmU0JtY205dElDY3VMMVpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2xOb1lYQmxKenRjYmx4dUx5b3FYRzRnS2lCU1pYQnlaWE5sYm5SeklHRWdZMjlzYkdsa1pYSWdiMllnWVNCV1VrMHVYRzRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhJZ1pYaDBaVzVrY3lCVVNGSkZSUzVQWW1wbFkzUXpSQ0I3WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1VnYzJoaGNHVWdiMllnZEdobElHTnZiR3hwWkdWeUxseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklISmxZV1J2Ym14NUlITm9ZWEJsT2lCV1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSlRhR0Z3WlR0Y2JseHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvYzJoaGNHVTZJRlpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2xOb1lYQmxLU0I3WEc0Z0lDQWdjM1Z3WlhJb0tUdGNibHh1SUNBZ0lIUm9hWE11YzJoaGNHVWdQU0J6YUdGd1pUdGNiaUFnZlZ4dWZWeHVJaXdpYVcxd2IzSjBJQ29nWVhNZ1ZFaFNSVVVnWm5KdmJTQW5kR2h5WldVbk8xeHVYRzVqYjI1emRDQmZiV0YwUVNBOUlHNWxkeUJVU0ZKRlJTNU5ZWFJ5YVhnMEtDazdYRzVjYmk4cUtseHVJQ29nUVNCamIyMXdZWFFnWm5WdVkzUnBiMjRnWm05eUlHQk5ZWFJ5YVhnMExtbHVkbVZ5ZENncFlDQXZJR0JOWVhSeWFYZzBMbWRsZEVsdWRtVnljMlVvS1dBdVhHNGdLaUJnVFdGMGNtbDROQzVwYm5abGNuUW9LV0FnYVhNZ2FXNTBjbTlrZFdObFpDQnBiaUJ5TVRJeklHRnVaQ0JnVFdGMGNtbDROQzVuWlhSSmJuWmxjbk5sS0NsZ0lHVnRhWFJ6SUdFZ2QyRnlibWx1Wnk1Y2JpQXFJRmRsSUdGeVpTQm5iMmx1WnlCMGJ5QjFjMlVnZEdocGN5QmpiMjF3WVhRZ1ptOXlJR0VnZDJocGJHVXVYRzRnS2lCQWNHRnlZVzBnZEdGeVoyVjBJRUVnZEdGeVoyVjBJRzFoZEhKcGVGeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYldGME5FbHVkbVZ5ZEVOdmJYQmhkRHhVSUdWNGRHVnVaSE1nVkVoU1JVVXVUV0YwY21sNE5ENG9kR0Z5WjJWME9pQlVLVG9nVkNCN1hHNGdJR2xtSUNnb2RHRnlaMlYwSUdGeklHRnVlU2t1YVc1MlpYSjBLU0I3WEc0Z0lDQWdkR0Z5WjJWMExtbHVkbVZ5ZENncE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDaDBZWEpuWlhRZ1lYTWdZVzU1S1M1blpYUkpiblpsY25ObEtGOXRZWFJCTG1OdmNIa29kR0Z5WjJWMEtTazdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdkR0Z5WjJWME8xeHVmVnh1SWl3aWFXMXdiM0owSUNvZ1lYTWdWRWhTUlVVZ1puSnZiU0FuZEdoeVpXVW5PMXh1YVcxd2IzSjBJSHNnYldGME5FbHVkbVZ5ZEVOdmJYQmhkQ0I5SUdaeWIyMGdKeTR2YldGME5FbHVkbVZ5ZEVOdmJYQmhkQ2M3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJOWVhSeWFYZzBTVzUyWlhKelpVTmhZMmhsSUh0Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlNCMFlYSm5aWFFnYldGMGNtbDRMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSEpsWVdSdmJteDVJRzFoZEhKcGVEb2dWRWhTUlVVdVRXRjBjbWw0TkR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUVNCallXTm9aU0J2WmlCcGJuWmxjbk5sSUc5bUlHTjFjbkpsYm5RZ2JXRjBjbWw0TGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCeVpXRmtiMjVzZVNCZmFXNTJaWEp6WlVOaFkyaGxJRDBnYm1WM0lGUklVa1ZGTGsxaGRISnBlRFFvS1R0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUVNCbWJHRm5JSFJvWVhRZ2JXRnJaWE1nYVhRZ2QyRnVkQ0IwYnlCeVpXTmhiR04xYkdGMFpTQnBkSE1nZTBCc2FXNXJJRjlwYm5abGNuTmxRMkZqYUdWOUxseHVJQ0FnS2lCWGFXeHNJR0psSUhObGRDQmdkSEoxWldBZ2QyaGxiaUJnWld4bGJXVnVkSE5nSUdGeVpTQnRkWFJoZEdWa0lHRnVaQ0JpWlNCMWMyVmtJR2x1SUdCblpYUkpiblpsY25ObFlDNWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdYM05vYjNWc1pGVndaR0YwWlVsdWRtVnljMlVnUFNCMGNuVmxPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1VnYjNKcFoybHVZV3dnYjJZZ1lHMWhkSEpwZUM1bGJHVnRaVzUwYzJCY2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ2NtVmhaRzl1YkhrZ1gyOXlhV2RwYm1Gc1JXeGxiV1Z1ZEhNNklHNTFiV0psY2x0ZE8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmJuWmxjbk5sSUc5bUlHZHBkbVZ1SUcxaGRISnBlQzVjYmlBZ0lDb2dUbTkwWlNCMGFHRjBJR2wwSUhkcGJHd2djbVYwZFhKdUlHbDBjeUJwYm5SbGNtNWhiQ0J3Y21sMllYUmxJR2x1YzNSaGJtTmxMbHh1SUNBZ0tpQk5ZV3RsSUhOMWNtVWdZMjl3ZVdsdVp5QjBhR2x6SUdKbFptOXlaU0J0ZFhSaGRHVWdkR2hwY3k1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCblpYUWdhVzUyWlhKelpTZ3BPaUJVU0ZKRlJTNU5ZWFJ5YVhnMElIdGNiaUFnSUNCcFppQW9kR2hwY3k1ZmMyaHZkV3hrVlhCa1lYUmxTVzUyWlhKelpTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZmFXNTJaWEp6WlVOaFkyaGxMbU52Y0hrb2RHaHBjeTV0WVhSeWFYZ3BPMXh1SUNBZ0lDQWdiV0YwTkVsdWRtVnlkRU52YlhCaGRDaDBhR2x6TGw5cGJuWmxjbk5sUTJGamFHVXBPMXh1SUNBZ0lDQWdkR2hwY3k1ZmMyaHZkV3hrVlhCa1lYUmxTVzUyWlhKelpTQTlJR1poYkhObE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUIwYUdsekxsOXBiblpsY25ObFEyRmphR1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2JXRjBjbWw0T2lCVVNGSkZSUzVOWVhSeWFYZzBLU0I3WEc0Z0lDQWdkR2hwY3k1dFlYUnlhWGdnUFNCdFlYUnlhWGc3WEc1Y2JpQWdJQ0JqYjI1emRDQm9ZVzVrYkdWeU9pQlFjbTk0ZVVoaGJtUnNaWEk4Ym5WdFltVnlXMTArSUQwZ2UxeHVJQ0FnSUNBZ2MyVjBPaUFvYjJKcUxDQndjbTl3T2lCaGJua3NJRzVsZDFaaGJDa2dQVDRnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbDl6YUc5MWJHUlZjR1JoZEdWSmJuWmxjbk5sSUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnYjJKcVczQnliM0JkSUQwZ2JtVjNWbUZzTzF4dVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNBZ0lDQWdmU3hjYmlBZ0lDQjlPMXh1WEc0Z0lDQWdkR2hwY3k1ZmIzSnBaMmx1WVd4RmJHVnRaVzUwY3lBOUlHMWhkSEpwZUM1bGJHVnRaVzUwY3p0Y2JpQWdJQ0J0WVhSeWFYZ3VaV3hsYldWdWRITWdQU0J1WlhjZ1VISnZlSGtvYldGMGNtbDRMbVZzWlcxbGJuUnpMQ0JvWVc1a2JHVnlLVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJ5WlhabGNuUW9LVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTV0WVhSeWFYZ3VaV3hsYldWdWRITWdQU0IwYUdsekxsOXZjbWxuYVc1aGJFVnNaVzFsYm5Sek8xeHVJQ0I5WEc1OVhHNGlMQ0pwYlhCdmNuUWdLaUJoY3lCVVNGSkZSU0JtY205dElDZDBhSEpsWlNjN1hHNXBiWEJ2Y25RZ2V5QnRZWFEwU1c1MlpYSjBRMjl0Y0dGMElIMGdabkp2YlNBbkxpOTFkR2xzY3k5dFlYUTBTVzUyWlhKMFEyOXRjR0YwSnp0Y2JtbHRjRzl5ZENCN0lFMWhkSEpwZURSSmJuWmxjbk5sUTJGamFHVWdmU0JtY205dElDY3VMM1YwYVd4ekwwMWhkSEpwZURSSmJuWmxjbk5sUTJGamFHVW5PMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QldVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWEpIY205MWNDQjlJR1p5YjIwZ0p5NHZWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5UjNKdmRYQW5PMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QldVazFUY0hKcGJtZENiMjVsU205cGJuUlRaWFIwYVc1bmN5QjlJR1p5YjIwZ0p5NHZWbEpOVTNCeWFXNW5RbTl1WlVwdmFXNTBVMlYwZEdsdVozTW5PMXh1WEc0dkx5QmlZWE5sWkNCdmJseHVMeThnYUhSMGNEb3ZMM0p2WTJ0bGRHcDFiWEF1YzJ0eUxtcHdMM1Z1YVhSNU0yUXZNVEE1TDF4dUx5OGdhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMlIzWVc1bmJ5OVZibWxXVWswdllteHZZaTl0WVhOMFpYSXZVMk55YVhCMGN5OVRjSEpwYm1kQ2IyNWxMMVpTVFZOd2NtbHVaMEp2Ym1VdVkzTmNibHh1WTI5dWMzUWdTVVJGVGxSSlZGbGZUVUZVVWtsWU5DQTlJRzVsZHlCVVNGSkZSUzVOWVhSeWFYZzBLQ2s3WEc1Y2JpOHZJT2lvaU9ldWwrUzRyZU9CcnVTNGdPYVpndVMvbmVXdG1PZVVxT1draWVhVnNPKzhpT1M0Z09XNnB1T0NwT09EcytPQ3VlT0N2K09EcytPQ3VlT0NrdVM5bk9PQm8rT0JuK09DaWVPQmd1T0JxT09CcitTOXYrT0JoT1dibnVPQm1lKzhpVnh1WTI5dWMzUWdYM1l6UVNBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektDazdYRzVqYjI1emRDQmZkak5DSUQwZ2JtVjNJRlJJVWtWRkxsWmxZM1J2Y2pNb0tUdGNibU52Ym5OMElGOTJNME1nUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncE8xeHVYRzR2S2lwY2JpQXFJRUVnZEdWdGNHOXlZWEo1SUhaaGNtbGhZbXhsSUhkb2FXTm9JR2x6SUhWelpXUWdhVzRnWUhWd1pHRjBaV0JjYmlBcUwxeHVZMjl1YzNRZ1gzZHZjbXhrVTNCaFkyVlFiM05wZEdsdmJpQTlJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLQ2s3WEc1Y2JpOHFLbHh1SUNvZ1FTQjBaVzF3YjNKaGNua2dkbUZ5YVdGaWJHVWdkMmhwWTJnZ2FYTWdkWE5sWkNCcGJpQmdkWEJrWVhSbFlGeHVJQ292WEc1amIyNXpkQ0JmWTJWdWRHVnlVM0JoWTJWUWIzTnBkR2x2YmlBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektDazdYRzVjYmk4cUtseHVJQ29nUVNCMFpXMXdiM0poY25rZ2RtRnlhV0ZpYkdVZ2QyaHBZMmdnYVhNZ2RYTmxaQ0JwYmlCZ2RYQmtZWFJsWUZ4dUlDb3ZYRzVqYjI1emRDQmZibVY0ZEZSaGFXd2dQU0J1WlhjZ1ZFaFNSVVV1Vm1WamRHOXlNeWdwTzF4dVhHNWpiMjV6ZENCZmNYVmhkRUVnUFNCdVpYY2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJpZ3BPMXh1WTI5dWMzUWdYMjFoZEVFZ1BTQnVaWGNnVkVoU1JVVXVUV0YwY21sNE5DZ3BPMXh1WTI5dWMzUWdYMjFoZEVJZ1BTQnVaWGNnVkVoU1JVVXVUV0YwY21sNE5DZ3BPMXh1WEc0dktpcGNiaUFxSUVFZ1kyeGhjM01nY21Wd2NtVnpaVzUwY3lCaElITnBibWRzWlNCcWIybHVkQ0J2WmlCaElITndjbWx1WnlCaWIyNWxMbHh1SUNvZ1NYUWdjMmh2ZFd4a0lHSmxJRzFoYm1GblpXUWdZbmtnWVNCYlcxWlNUVk53Y21sdVowSnZibVZOWVc1aFoyVnlYVjB1WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCV1VrMVRjSEpwYm1kQ2IyNWxTbTlwYm5RZ2UxeHVJQ0F2S2lwY2JpQWdJQ29nVTJWMGRHbHVaM01nYjJZZ2RHaGxJR0p2Ym1VdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2MyVjBkR2x1WjNNNklGWlNUVk53Y21sdVowSnZibVZLYjJsdWRGTmxkSFJwYm1kek8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGIyeHNhV1JsY2lCbmNtOTFjSE1nWVhSMFlXTm9aV1FnZEc4Z2RHaHBjeUJpYjI1bExseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHTnZiR3hwWkdWeVIzSnZkWEJ6T2lCV1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSkhjbTkxY0Z0ZE8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCQmJpQlBZbXBsWTNRelJDQmhkSFJoWTJobFpDQjBieUIwYUdseklHSnZibVV1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nY21WaFpHOXViSGtnWW05dVpUb2dWRWhTUlVVdVQySnFaV04wTTBRN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVGdUlFOWlhbVZqZERORUlIUm9ZWFFnZDJsc2JDQmlaU0IxYzJWa0lHRnpJR0VnZEdGcGJDQnZaaUIwYUdseklITndjbWx1WnlCaWIyNWxMbHh1SUNBZ0tpQkpkQ0JqWVc0Z1ltVWdiblZzYkNCM2FHVnVJSFJvWlNCemNISnBibWNnWW05dVpTQnBjeUJwYlhCdmNuUmxaQ0JtY205dElGWlNUU0F3TGpBdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2NtVmhaRzl1YkhrZ1kyaHBiR1E2SUZSSVVrVkZMazlpYW1WamRETkVJSHdnYm5Wc2JEdGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzVnljbVZ1ZENCd2IzTnBkR2x2YmlCdlppQmphR2xzWkNCMFlXbHNMQ0JwYmlCalpXNTBaWElnZFc1cGRDNGdWMmxzYkNCaVpTQjFjMlZrSUdadmNpQjJaWEpzWlhRZ2FXNTBaV2R5WVhScGIyNHVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjlqZFhKeVpXNTBWR0ZwYkNBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektDazdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGQnlaWFpwYjNWeklIQnZjMmwwYVc5dUlHOW1JR05vYVd4a0lIUmhhV3dzSUdsdUlHTmxiblJsY2lCMWJtbDBMaUJYYVd4c0lHSmxJSFZ6WldRZ1ptOXlJSFpsY214bGRDQnBiblJsWjNKaGRHbHZiaTVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWDNCeVpYWlVZV2xzSUQwZ2JtVjNJRlJJVWtWRkxsWmxZM1J2Y2pNb0tUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1NXNXBkR2xoYkNCaGVHbHpJRzltSUhSb1pTQmliMjVsTENCcGJpQnNiMk5oYkNCMWJtbDBMbHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0JmWW05dVpVRjRhWE1nUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncE8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCTVpXNW5kR2dnYjJZZ2RHaGxJR0p2Ym1VZ2FXNGdkMjl5YkdRZ2RXNXBkQzVjYmlBZ0lDb2dWMmxzYkNCaVpTQjFjMlZrSUdadmNpQnViM0p0WVd4cGVtRjBhVzl1SUdsdUlIVndaR0YwWlNCc2IyOXdMQ0IzYVd4c0lHSmxJSFZ3WkdGMFpXUWdZbmtnZTBCc2FXNXJJRjlqWVd4alYyOXliR1JUY0dGalpVSnZibVZNWlc1bmRHaDlMbHh1SUNBZ0tseHVJQ0FnS2lCSmRDZHpJSE5oYldVZ1lYTWdiRzlqWVd3Z2RXNXBkQ0JzWlc1bmRHZ2dkVzVzWlhOeklIUm9aWEpsSUdGeVpTQnpZMkZzWlNCMGNtRnVjMlp2Y20xaGRHbHZibk1nYVc0Z2RHaGxJSGR2Y214a0lITndZV05sTGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCZmQyOXliR1JUY0dGalpVSnZibVZNWlc1bmRHZ2dQU0F3TGpBN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSb2FYTWdjM0J5YVc1blltOXVaU0IzYVd4c0lHSmxJR05oYkdOMWJHRjBaV1FnWW1GelpXUWdiMjRnZEdobElITndZV05sSUhKbGJHRjBhWFpsSUdaeWIyMGdkR2hwY3lCdlltcGxZM1F1WEc0Z0lDQXFJRWxtSUhSb2FYTWdhWE1nWUc1MWJHeGdMQ0J6Y0hKcGJtZGliMjVsSUhkcGJHd2dZbVVnWTJGc1kzVnNZWFJsWkNCcGJpQjNiM0pzWkNCemNHRmpaUzVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWDJObGJuUmxjam9nVkVoU1JVVXVUMkpxWldOME0wUWdmQ0J1ZFd4c0lEMGdiblZzYkR0Y2JpQWdjSFZpYkdsaklHZGxkQ0JqWlc1MFpYSW9LVG9nVkVoU1JVVXVUMkpxWldOME0wUWdmQ0J1ZFd4c0lIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZZMlZ1ZEdWeU8xeHVJQ0I5WEc0Z0lIQjFZbXhwWXlCelpYUWdZMlZ1ZEdWeUtHTmxiblJsY2pvZ1ZFaFNSVVV1VDJKcVpXTjBNMFFnZkNCdWRXeHNLU0I3WEc0Z0lDQWdMeThnZFc1cGJuTjBZV3hzSUdsdWRtVnljMlVnWTJGamFHVmNiaUFnSUNCcFppQW9kR2hwY3k1ZlkyVnVkR1Z5UHk1MWMyVnlSR0YwWVM1cGJuWmxjbk5sUTJGamFHVlFjbTk0ZVNrZ2UxeHVJQ0FnSUNBZ0tIUm9hWE11WDJObGJuUmxjaTUxYzJWeVJHRjBZUzVwYm5abGNuTmxRMkZqYUdWUWNtOTRlU0JoY3lCTllYUnlhWGcwU1c1MlpYSnpaVU5oWTJobEtTNXlaWFpsY25Rb0tUdGNiaUFnSUNBZ0lHUmxiR1YwWlNCMGFHbHpMbDlqWlc1MFpYSXVkWE5sY2tSaGRHRXVhVzUyWlhKelpVTmhZMmhsVUhKdmVIazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdZMmhoYm1kbElIUm9aU0JqWlc1MFpYSmNiaUFnSUNCMGFHbHpMbDlqWlc1MFpYSWdQU0JqWlc1MFpYSTdYRzVjYmlBZ0lDQXZMeUJwYm5OMFlXeHNJR2x1ZG1WeWMyVWdZMkZqYUdWY2JpQWdJQ0JwWmlBb2RHaHBjeTVmWTJWdWRHVnlLU0I3WEc0Z0lDQWdJQ0JwWmlBb0lYUm9hWE11WDJObGJuUmxjaTUxYzJWeVJHRjBZUzVwYm5abGNuTmxRMkZqYUdWUWNtOTRlU2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbDlqWlc1MFpYSXVkWE5sY2tSaGRHRXVhVzUyWlhKelpVTmhZMmhsVUhKdmVIa2dQU0J1WlhjZ1RXRjBjbWw0TkVsdWRtVnljMlZEWVdOb1pTaDBhR2x6TGw5alpXNTBaWEl1YldGMGNtbDRWMjl5YkdRcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpibWwwYVdGc0lITjBZWFJsSUc5bUlIUm9aU0JzYjJOaGJDQnRZWFJ5YVhnZ2IyWWdkR2hsSUdKdmJtVXVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjlwYm1sMGFXRnNURzlqWVd4TllYUnlhWGdnUFNCdVpYY2dWRWhTUlVVdVRXRjBjbWw0TkNncE8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmJtbDBhV0ZzSUhOMFlYUmxJRzltSUhSb1pTQnliM1JoZEdsdmJpQnZaaUIwYUdVZ1ltOXVaUzVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWDJsdWFYUnBZV3hNYjJOaGJGSnZkR0YwYVc5dUlEMGdibVYzSUZSSVVrVkZMbEYxWVhSbGNtNXBiMjRvS1R0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nU1c1cGRHbGhiQ0J6ZEdGMFpTQnZaaUIwYUdVZ2NHOXphWFJwYjI0Z2IyWWdhWFJ6SUdOb2FXeGtMbHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0JmYVc1cGRHbGhiRXh2WTJGc1EyaHBiR1JRYjNOcGRHbHZiaUE5SUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0NrN1hHNGdJSEIxWW14cFl5Qm5aWFFnYVc1cGRHbGhiRXh2WTJGc1EyaHBiR1JRYjNOcGRHbHZiaWdwT2lCVVNGSkZSUzVXWldOMGIzSXpJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmYVc1cGRHbGhiRXh2WTJGc1EyaHBiR1JRYjNOcGRHbHZianRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUhSb1pTQjNiM0pzWkNCdFlYUnlhWGdnYjJZZ2FYUnpJSEJoY21WdWRDQnZZbXBsWTNRdVhHNGdJQ0FxSUU1dmRHVWdkR2hoZENCcGRDQnlaWFIxY201eklHRWdjbVZtWlhKbGJtTmxJSFJ2SUhSb1pTQnRZWFJ5YVhndUlFUnZiaWQwSUcxMWRHRjBaU0IwYUdseklHUnBjbVZqZEd4NUlWeHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQm5aWFFnWDNCaGNtVnVkRTFoZEhKcGVGZHZjbXhrS0NrNklGUklVa1ZGTGsxaGRISnBlRFFnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1KdmJtVXVjR0Z5Wlc1MElEOGdkR2hwY3k1aWIyNWxMbkJoY21WdWRDNXRZWFJ5YVhoWGIzSnNaQ0E2SUVsRVJVNVVTVlJaWDAxQlZGSkpXRFE3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsSUdFZ2JtVjNJRlpTVFZOd2NtbHVaMEp2Ym1VdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQmliMjVsSUVGdUlFOWlhbVZqZERORUlIUm9ZWFFnZDJsc2JDQmlaU0JoZEhSaFkyaGxaQ0IwYnlCMGFHbHpJR0p2Ym1WY2JpQWdJQ29nUUhCaGNtRnRJR05vYVd4a0lFRnVJRTlpYW1WamRETkVJSFJvWVhRZ2QybHNiQ0JpWlNCMWMyVmtJR0Z6SUdFZ2RHRnBiQ0J2WmlCMGFHbHpJSE53Y21sdVp5QmliMjVsTGlCSmRDQmpZVzRnWW1VZ2JuVnNiQ0IzYUdWdUlIUm9aU0J6Y0hKcGJtY2dZbTl1WlNCcGN5QnBiWEJ2Y25SbFpDQm1jbTl0SUZaU1RTQXdMakJjYmlBZ0lDb2dRSEJoY21GdElITmxkSFJwYm1keklGTmxkbVZ5WVd3Z2NHRnlZVzFsZEdWeWN5QnlaV3hoZEdWa0lIUnZJR0psYUdGMmFXOXlJRzltSUhSb1pTQnpjSEpwYm1jZ1ltOXVaVnh1SUNBZ0tpQkFjR0Z5WVcwZ1kyOXNiR2xrWlhKSGNtOTFjSE1nUTI5c2JHbGtaWElnWjNKdmRYQnpJSFJvWVhRZ2QybHNiQ0JpWlNCamIyeHNhV1JsWkNCM2FYUm9JSFJvYVhNZ2MzQnlhVzVuSUdKdmJtVmNiaUFnSUNvdlhHNGdJR052Ym5OMGNuVmpkRzl5S0Z4dUlDQWdJR0p2Ym1VNklGUklVa1ZGTGs5aWFtVmpkRE5FTEZ4dUlDQWdJR05vYVd4a09pQlVTRkpGUlM1UFltcGxZM1F6UkNCOElHNTFiR3dzWEc0Z0lDQWdjMlYwZEdsdVozTTZJRkJoY25ScFlXdzhWbEpOVTNCeWFXNW5RbTl1WlVwdmFXNTBVMlYwZEdsdVozTStJRDBnZTMwc1hHNGdJQ0FnWTI5c2JHbGtaWEpIY205MWNITTZJRlpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2tkeWIzVndXMTBnUFNCYlhTeGNiaUFnS1NCN1hHNGdJQ0FnZEdocGN5NWliMjVsSUQwZ1ltOXVaVHNnTHk4Z2RXNXBWbEpONDRHbjQ0R3VJSEJoY21WdWRGeHVJQ0FnSUhSb2FYTXVZbTl1WlM1dFlYUnlhWGhCZFhSdlZYQmtZWFJsSUQwZ1ptRnNjMlU3SUM4dklIVndaR0YwWmVPQnErT0NpT09DaXVpb2lPZXVsK09CbGVPQ2pPT0NpK09CcnVPQnAzUm9jbVZsTG1wejVZYUY0NEduNDRHdTZJZXE1WXVWNVllbTU1Q0c0NEd2NUxpTjZLYUJYRzVjYmlBZ0lDQjBhR2x6TG1Ob2FXeGtJRDBnWTJocGJHUTdYRzVjYmlBZ0lDQjBhR2x6TG5ObGRIUnBibWR6SUQwZ2UxeHVJQ0FnSUNBZ2FHbDBVbUZrYVhWek9pQnpaWFIwYVc1bmN5NW9hWFJTWVdScGRYTWdQejhnTUM0d0xGeHVJQ0FnSUNBZ2MzUnBabVp1WlhOek9pQnpaWFIwYVc1bmN5NXpkR2xtWm01bGMzTWdQejhnTVM0d0xGeHVJQ0FnSUNBZ1ozSmhkbWwwZVZCdmQyVnlPaUJ6WlhSMGFXNW5jeTVuY21GMmFYUjVVRzkzWlhJZ1B6OGdNQzR3TEZ4dUlDQWdJQ0FnWjNKaGRtbDBlVVJwY2pvZ2MyVjBkR2x1WjNNdVozSmhkbWwwZVVScGNqOHVZMnh2Ym1Vb0tTQS9QeUJ1WlhjZ1ZFaFNSVVV1Vm1WamRHOXlNeWd3TGpBc0lDMHhMakFzSURBdU1Da3NYRzRnSUNBZ0lDQmtjbUZuUm05eVkyVTZJSE5sZEhScGJtZHpMbVJ5WVdkR2IzSmpaU0EvUHlBd0xqUXNYRzRnSUNBZ2ZUdGNibHh1SUNBZ0lIUm9hWE11WTI5c2JHbGtaWEpIY205MWNITWdQU0JqYjJ4c2FXUmxja2R5YjNWd2N6dGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJUWlhRZ2RHaGxJR2x1YVhScFlXd2djM1JoZEdVZ2IyWWdkR2hwY3lCemNISnBibWNnWW05dVpTNWNiaUFnSUNvZ1dXOTFJRzFwWjJoMElIZGhiblFnZEc4Z1kyRnNiQ0I3UUd4cGJtc2dWbEpOVTNCeWFXNW5RbTl1WlUxaGJtRm5aWEl1YzJWMFNXNXBkRk4wWVhSbGZTQnBibk4wWldGa0xseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITmxkRWx1YVhSVGRHRjBaU2dwT2lCMmIybGtJSHRjYmlBZ0lDQXZMeUJ5WlcxbGJXSmxjaUJwYm1sMGFXRnNJSEJ2YzJsMGFXOXVJRzltSUdsMGMyVnNabHh1SUNBZ0lIUm9hWE11WDJsdWFYUnBZV3hNYjJOaGJFMWhkSEpwZUM1amIzQjVLSFJvYVhNdVltOXVaUzV0WVhSeWFYZ3BPMXh1SUNBZ0lIUm9hWE11WDJsdWFYUnBZV3hNYjJOaGJGSnZkR0YwYVc5dUxtTnZjSGtvZEdocGN5NWliMjVsTG5GMVlYUmxjbTVwYjI0cE8xeHVYRzRnSUNBZ0x5OGdjMlZsSUdsdWFYUnBZV3dnY0c5emFYUnBiMjRnYjJZZ2FYUnpJR3h2WTJGc0lHTm9hV3hrWEc0Z0lDQWdhV1lnS0hSb2FYTXVZMmhwYkdRcElIdGNiaUFnSUNBZ0lIUm9hWE11WDJsdWFYUnBZV3hNYjJOaGJFTm9hV3hrVUc5emFYUnBiMjR1WTI5d2VTaDBhR2x6TG1Ob2FXeGtMbkJ2YzJsMGFXOXVLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0x5OGdkbkp0TUNCeVpYRjFhWEpsY3lCaElEZGpiU0JtYVhobFpDQmliMjVsSUd4bGJtZDBhQ0JtYjNJZ2RHaGxJR1pwYm1Gc0lHNXZaR1VnYVc0Z1lTQmphR0ZwYmx4dUlDQWdJQ0FnTHk4Z1UyVmxPaUJvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2ZG5KdExXTXZkbkp0TFhOd1pXTnBabWxqWVhScGIyNHZkSEpsWlM5dFlYTjBaWEl2YzNCbFkybG1hV05oZEdsdmJpOVdVazFEWDNOd2NtbHVaMEp2Ym1VdE1TNHdJMkZpYjNWMExYTndjbWx1WnkxamIyNW1hV2QxY21GMGFXOXVYRzRnSUNBZ0lDQjBhR2x6TGw5cGJtbDBhV0ZzVEc5allXeERhR2xzWkZCdmMybDBhVzl1TG1OdmNIa29kR2hwY3k1aWIyNWxMbkJ2YzJsMGFXOXVLUzV1YjNKdFlXeHBlbVVvS1M1dGRXeDBhWEJzZVZOallXeGhjaWd3TGpBM0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QmpiM0I1SUhSb1pTQmphR2xzWkNCd2IzTnBkR2x2YmlCMGJ5QjBZV2xzYzF4dUlDQWdJR052Ym5OMElHMWhkSEpwZUZkdmNteGtWRzlEWlc1MFpYSWdQU0IwYUdsekxsOW5aWFJOWVhSeWFYaFhiM0pzWkZSdlEyVnVkR1Z5S0Y5dFlYUkJLVHRjYmlBZ0lDQjBhR2x6TG1KdmJtVXViRzlqWVd4VWIxZHZjbXhrS0hSb2FYTXVYMk4xY25KbGJuUlVZV2xzTG1OdmNIa29kR2hwY3k1ZmFXNXBkR2xoYkV4dlkyRnNRMmhwYkdSUWIzTnBkR2x2YmlrcExtRndjR3g1VFdGMGNtbDROQ2h0WVhSeWFYaFhiM0pzWkZSdlEyVnVkR1Z5S1R0Y2JpQWdJQ0IwYUdsekxsOXdjbVYyVkdGcGJDNWpiM0I1S0hSb2FYTXVYMk4xY25KbGJuUlVZV2xzS1R0Y2JseHVJQ0FnSUM4dklITmxkQ0JwYm1sMGFXRnNJSE4wWVhSbGN5QjBhR0YwSUdGeVpTQnlaV3hoZEdWa0lIUnZJR3h2WTJGc0lHTm9hV3hrSUhCdmMybDBhVzl1WEc0Z0lDQWdkR2hwY3k1ZlltOXVaVUY0YVhNdVkyOXdlU2gwYUdsekxsOXBibWwwYVdGc1RHOWpZV3hEYUdsc1pGQnZjMmwwYVc5dUtTNXViM0p0WVd4cGVtVW9LVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYTmxkQ0IwYUdVZ2MzUmhkR1VnYjJZZ2RHaHBjeUJpYjI1bExseHVJQ0FnS2lCWmIzVWdiV2xuYUhRZ2QyRnVkQ0IwYnlCallXeHNJRnRiVmxKTlUzQnlhVzVuUW05dVpVMWhibUZuWlhJdWNtVnpaWFJkWFNCcGJuTjBaV0ZrTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhKbGMyVjBLQ2s2SUhadmFXUWdlMXh1SUNBZ0lIUm9hWE11WW05dVpTNXhkV0YwWlhKdWFXOXVMbU52Y0hrb2RHaHBjeTVmYVc1cGRHbGhiRXh2WTJGc1VtOTBZWFJwYjI0cE8xeHVYRzRnSUNBZ0x5OGdWMlVnYm1WbFpDQjBieUIxY0dSaGRHVWdhWFJ6SUcxaGRISnBlRmR2Y214a0lHMWhiblZoYkd4NUxDQnphVzVqWlNCM1pTQjBkMlZoYTJWa0lIUm9aU0JpYjI1bElHSjVJRzkxY2lCb1lXNWtYRzRnSUNBZ2RHaHBjeTVpYjI1bExuVndaR0YwWlUxaGRISnBlQ2dwTzF4dUlDQWdJSFJvYVhNdVltOXVaUzV0WVhSeWFYaFhiM0pzWkM1dGRXeDBhWEJzZVUxaGRISnBZMlZ6S0hSb2FYTXVYM0JoY21WdWRFMWhkSEpwZUZkdmNteGtMQ0IwYUdsekxtSnZibVV1YldGMGNtbDRLVHRjYmx4dUlDQWdJQzh2SUVGd2NHeDVJSFZ3WkdGMFpXUWdjRzl6YVhScGIyNGdkRzhnZEdGcGJDQnpkR0YwWlhOY2JpQWdJQ0JqYjI1emRDQnRZWFJ5YVhoWGIzSnNaRlJ2UTJWdWRHVnlJRDBnZEdocGN5NWZaMlYwVFdGMGNtbDRWMjl5YkdSVWIwTmxiblJsY2loZmJXRjBRU2s3WEc0Z0lDQWdkR2hwY3k1aWIyNWxMbXh2WTJGc1ZHOVhiM0pzWkNoMGFHbHpMbDlqZFhKeVpXNTBWR0ZwYkM1amIzQjVLSFJvYVhNdVgybHVhWFJwWVd4TWIyTmhiRU5vYVd4a1VHOXphWFJwYjI0cEtTNWhjSEJzZVUxaGRISnBlRFFvYldGMGNtbDRWMjl5YkdSVWIwTmxiblJsY2lrN1hHNGdJQ0FnZEdocGN5NWZjSEpsZGxSaGFXd3VZMjl3ZVNoMGFHbHpMbDlqZFhKeVpXNTBWR0ZwYkNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWWEJrWVhSbElIUm9aU0J6ZEdGMFpTQnZaaUIwYUdseklHSnZibVV1WEc0Z0lDQXFJRmx2ZFNCdGFXZG9kQ0IzWVc1MElIUnZJR05oYkd3Z1cxdFdVazFUY0hKcGJtZENiMjVsVFdGdVlXZGxjaTUxY0dSaGRHVmRYU0JwYm5OMFpXRmtMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnWkdWc2RHRWdaR1ZzZEdGVWFXMWxYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdkWEJrWVhSbEtHUmxiSFJoT2lCdWRXMWlaWElwT2lCMmIybGtJSHRjYmlBZ0lDQnBaaUFvWkdWc2RHRWdQRDBnTUNrZ2NtVjBkWEp1TzF4dVhHNGdJQ0FnTHk4Z1ZYQmtZWFJsSUhSb1pTQmZkMjl5YkdSVGNHRmpaVUp2Ym1WTVpXNW5kR2hjYmlBZ0lDQjBhR2x6TGw5allXeGpWMjl5YkdSVGNHRmpaVUp2Ym1WTVpXNW5kR2dvS1R0Y2JseHVJQ0FnSUM4dklFZGxkQ0JpYjI1bElIQnZjMmwwYVc5dUlHbHVJR05sYm5SbGNpQnpjR0ZqWlZ4dUlDQWdJRjkzYjNKc1pGTndZV05sVUc5emFYUnBiMjR1YzJWMFJuSnZiVTFoZEhKcGVGQnZjMmwwYVc5dUtIUm9hWE11WW05dVpTNXRZWFJ5YVhoWGIzSnNaQ2s3WEc0Z0lDQWdiR1YwSUcxaGRISnBlRmR2Y214a1ZHOURaVzUwWlhJZ1BTQjBhR2x6TGw5blpYUk5ZWFJ5YVhoWGIzSnNaRlJ2UTJWdWRHVnlLRjl0WVhSQktUdGNiaUFnSUNCZlkyVnVkR1Z5VTNCaFkyVlFiM05wZEdsdmJpNWpiM0I1S0Y5M2IzSnNaRk53WVdObFVHOXphWFJwYjI0cExtRndjR3g1VFdGMGNtbDROQ2h0WVhSeWFYaFhiM0pzWkZSdlEyVnVkR1Z5S1R0Y2JpQWdJQ0JqYjI1emRDQnhkV0YwVjI5eWJHUlViME5sYm5SbGNpQTlJRjl4ZFdGMFFTNXpaWFJHY205dFVtOTBZWFJwYjI1TllYUnlhWGdvYldGMGNtbDRWMjl5YkdSVWIwTmxiblJsY2lrN1hHNWNiaUFnSUNBdkx5QkhaWFFnY0dGeVpXNTBJRzFoZEhKcGVDQnBiaUJqWlc1MFpYSWdjM0JoWTJWY2JpQWdJQ0JqYjI1emRDQmpaVzUwWlhKVGNHRmpaVkJoY21WdWRFMWhkSEpwZUNBOUlGOXRZWFJDTG1OdmNIa29iV0YwY21sNFYyOXliR1JVYjBObGJuUmxjaWt1YlhWc2RHbHdiSGtvZEdocGN5NWZjR0Z5Wlc1MFRXRjBjbWw0VjI5eWJHUXBPMXh1WEc0Z0lDQWdMeThnUjJWMElHSnZibVZCZUdseklHbHVJR05sYm5SbGNpQnpjR0ZqWlZ4dUlDQWdJR052Ym5OMElHTmxiblJsY2xOd1lXTmxRbTl1WlVGNGFYTWdQU0JmZGpOQ1hHNGdJQ0FnSUNBdVkyOXdlU2gwYUdsekxsOWliMjVsUVhocGN5bGNiaUFnSUNBZ0lDNWhjSEJzZVUxaGRISnBlRFFvZEdocGN5NWZhVzVwZEdsaGJFeHZZMkZzVFdGMGNtbDRLVnh1SUNBZ0lDQWdMbUZ3Y0d4NVRXRjBjbWw0TkNoalpXNTBaWEpUY0dGalpWQmhjbVZ1ZEUxaGRISnBlQ2xjYmlBZ0lDQWdJQzV6ZFdJb1gyTmxiblJsY2xOd1lXTmxVRzl6YVhScGIyNHBYRzRnSUNBZ0lDQXVibTl5YldGc2FYcGxLQ2s3WEc1Y2JpQWdJQ0F2THlCbmNtRjJhWFI1SUdsdUlHTmxiblJsY2lCemNHRmpaVnh1SUNBZ0lHTnZibk4wSUdObGJuUmxjbE53WVdObFIzSmhkbWwwZVNBOUlGOTJNME11WTI5d2VTaDBhR2x6TG5ObGRIUnBibWR6TG1keVlYWnBkSGxFYVhJcExtRndjR3g1VVhWaGRHVnlibWx2YmloeGRXRjBWMjl5YkdSVWIwTmxiblJsY2lrdWJtOXliV0ZzYVhwbEtDazdYRzVjYmlBZ0lDQmpiMjV6ZENCdFlYUnlhWGhEWlc1MFpYSlViMWR2Y214a0lEMGdkR2hwY3k1ZloyVjBUV0YwY21sNFEyVnVkR1Z5Vkc5WGIzSnNaQ2hmYldGMFFTazdYRzVjYmlBZ0lDQXZMeUIyWlhKc1pYVG5xWTNsaUliamdhZm1yS0hqZ2E3a3ZZM252YTdqZ3BMb3FJam5ycGRjYmlBZ0lDQmZibVY0ZEZSaGFXeGNiaUFnSUNBZ0lDNWpiM0I1S0hSb2FYTXVYMk4xY25KbGJuUlVZV2xzS1Z4dUlDQWdJQ0FnTG1Ga1pDaGNiaUFnSUNBZ0lDQWdYM1l6UVZ4dUlDQWdJQ0FnSUNBZ0lDNWpiM0I1S0hSb2FYTXVYMk4xY25KbGJuUlVZV2xzS1Z4dUlDQWdJQ0FnSUNBZ0lDNXpkV0lvZEdocGN5NWZjSEpsZGxSaGFXd3BYRzRnSUNBZ0lDQWdJQ0FnTG0xMWJIUnBjR3g1VTJOaGJHRnlLREVnTFNCMGFHbHpMbk5sZEhScGJtZHpMbVJ5WVdkR2IzSmpaU2tzWEc0Z0lDQWdJQ0FwSUM4dklPV0pqZU9EbGVPRHJPT0R2T09Eb09PQnJ1ZW51K1dMbGVPQ2t1ZTJtZWUybXVPQm1lT0NpeWptdUp2b29iRGpnb0xqZ1lMamdvdmpnb2dwWEc0Z0lDQWdJQ0F1WVdSa0tGOTJNMEV1WTI5d2VTaGpaVzUwWlhKVGNHRmpaVUp2Ym1WQmVHbHpLUzV0ZFd4MGFYQnNlVk5qWVd4aGNpaDBhR2x6TG5ObGRIUnBibWR6TG5OMGFXWm1ibVZ6Y3lBcUlHUmxiSFJoS1NrZ0x5OGc2S2FxNDRHdTVadWU2THVpNDRHcjQ0S0k0NEtMNWEyUTQ0T2M0NE84NDRPejQ0R3U1NmU3NVl1VjU1dXU1cWlaWEc0Z0lDQWdJQ0F1WVdSa0tGOTJNMEV1WTI5d2VTaGpaVzUwWlhKVGNHRmpaVWR5WVhacGRIa3BMbTExYkhScGNHeDVVMk5oYkdGeUtIUm9hWE11YzJWMGRHbHVaM011WjNKaGRtbDBlVkJ2ZDJWeUlDb2daR1ZzZEdFcEtTQXZMeURscEpibGlwdmpnYXZqZ29qamdvdm5wN3ZsaTVYcGg0OWNiaUFnSUNBZ0lDNWhjSEJzZVUxaGRISnBlRFFvYldGMGNtbDRRMlZ1ZEdWeVZHOVhiM0pzWkNrN0lDOHZJSFJoYVd6amdwSjNiM0pzWkNCemNHRmpaZU9CcSthSXUrT0JtVnh1WEc0Z0lDQWdMeThnYm05eWJXRnNhWHBsSUdKdmJtVWdiR1Z1WjNSb1hHNGdJQ0FnWDI1bGVIUlVZV2xzTG5OMVlpaGZkMjl5YkdSVGNHRmpaVkJ2YzJsMGFXOXVLUzV1YjNKdFlXeHBlbVVvS1M1dGRXeDBhWEJzZVZOallXeGhjaWgwYUdsekxsOTNiM0pzWkZOd1lXTmxRbTl1WlV4bGJtZDBhQ2t1WVdSa0tGOTNiM0pzWkZOd1lXTmxVRzl6YVhScGIyNHBPMXh1WEc0Z0lDQWdMeThnUTI5c2JHbHphVzl1NDRHbjU2ZTc1WXVWWEc0Z0lDQWdkR2hwY3k1ZlkyOXNiR2x6YVc5dUtGOXVaWGgwVkdGcGJDazdYRzVjYmlBZ0lDQXZMeUIxY0dSaGRHVWdjSEpsZGxSaGFXd2dZVzVrSUdOMWNuSmxiblJVWVdsc1hHNGdJQ0FnYldGMGNtbDRWMjl5YkdSVWIwTmxiblJsY2lBOUlIUm9hWE11WDJkbGRFMWhkSEpwZUZkdmNteGtWRzlEWlc1MFpYSW9YMjFoZEVFcE8xeHVYRzRnSUNBZ2RHaHBjeTVmY0hKbGRsUmhhV3d1WTI5d2VTaDBhR2x6TGw5amRYSnlaVzUwVkdGcGJDazdYRzRnSUNBZ2RHaHBjeTVmWTNWeWNtVnVkRlJoYVd3dVkyOXdlU2hmZGpOQkxtTnZjSGtvWDI1bGVIUlVZV2xzS1M1aGNIQnNlVTFoZEhKcGVEUW9iV0YwY21sNFYyOXliR1JVYjBObGJuUmxjaWtwTzF4dVhHNGdJQ0FnTHk4Z1FYQndiSGtnY205MFlYUnBiMjRzSUdOdmJuWmxjblFnZG1WamRHOXlNeUIwYUdsdVp5QnBiblJ2SUdGamRIVmhiQ0J4ZFdGMFpYSnVhVzl1WEc0Z0lDQWdMeThnVDNKcFoybHVZV3dnVlc1cFZsSk5JR2x6SUdSdmFXNW5JR05sYm5SbGNpQjFibWwwSUdOaGJHTjFiSFZ6SUdGMElHaGxjbVVnWW5WMElIZGxKM0psSUdkdmJtNWhJR1J2SUhSb2FYTWdiMjRnYkc5allXd2dkVzVwZEZ4dUlDQWdJR052Ym5OMElIZHZjbXhrVTNCaFkyVkpibWwwYVdGc1RXRjBjbWw0U1c1MklEMGdiV0YwTkVsdWRtVnlkRU52YlhCaGRDaGNiaUFnSUNBZ0lGOXRZWFJCTG1OdmNIa29kR2hwY3k1ZmNHRnlaVzUwVFdGMGNtbDRWMjl5YkdRcExtMTFiSFJwY0d4NUtIUm9hWE11WDJsdWFYUnBZV3hNYjJOaGJFMWhkSEpwZUNrc1hHNGdJQ0FnS1R0Y2JpQWdJQ0JqYjI1emRDQmhjSEJzZVZKdmRHRjBhVzl1SUQwZ1gzRjFZWFJCTG5ObGRFWnliMjFWYm1sMFZtVmpkRzl5Y3loY2JpQWdJQ0FnSUhSb2FYTXVYMkp2Ym1WQmVHbHpMRnh1SUNBZ0lDQWdYM1l6UVM1amIzQjVLRjl1WlhoMFZHRnBiQ2t1WVhCd2JIbE5ZWFJ5YVhnMEtIZHZjbXhrVTNCaFkyVkpibWwwYVdGc1RXRjBjbWw0U1c1MktTNXViM0p0WVd4cGVtVW9LU3hjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdkR2hwY3k1aWIyNWxMbkYxWVhSbGNtNXBiMjR1WTI5d2VTaDBhR2x6TGw5cGJtbDBhV0ZzVEc5allXeFNiM1JoZEdsdmJpa3ViWFZzZEdsd2JIa29ZWEJ3YkhsU2IzUmhkR2x2YmlrN1hHNWNiaUFnSUNBdkx5QlhaU0J1WldWa0lIUnZJSFZ3WkdGMFpTQnBkSE1nYldGMGNtbDRWMjl5YkdRZ2JXRnVkV0ZzYkhrc0lITnBibU5sSUhkbElIUjNaV0ZyWldRZ2RHaGxJR0p2Ym1VZ1lua2diM1Z5SUdoaGJtUmNiaUFnSUNCMGFHbHpMbUp2Ym1VdWRYQmtZWFJsVFdGMGNtbDRLQ2s3WEc0Z0lDQWdkR2hwY3k1aWIyNWxMbTFoZEhKcGVGZHZjbXhrTG0xMWJIUnBjR3g1VFdGMGNtbGpaWE1vZEdocGN5NWZjR0Z5Wlc1MFRXRjBjbWw0VjI5eWJHUXNJSFJvYVhNdVltOXVaUzV0WVhSeWFYZ3BPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVSdklHTnZiR3hwYzJsdmJpQnRZWFJvSUdGbllXbHVjM1FnWlhabGNua2dZMjlzYkdsa1pYSnpJR0YwZEdGamFHVmtJSFJ2SUhSb2FYTWdZbTl1WlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIUmhhV3dnVkdobElIUmhhV3dnZVc5MUlIZGhiblFnZEc4Z2NISnZZMlZ6YzF4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCZlkyOXNiR2x6YVc5dUtIUmhhV3c2SUZSSVVrVkZMbFpsWTNSdmNqTXBPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbU52Ykd4cFpHVnlSM0p2ZFhCekxtWnZja1ZoWTJnb0tHTnZiR3hwWkdWeVIzSnZkWEFwSUQwK0lIdGNiaUFnSUNBZ0lHTnZiR3hwWkdWeVIzSnZkWEF1WTI5c2JHbGtaWEp6TG1admNrVmhZMmdvS0dOdmJHeHBaR1Z5S1NBOVBpQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHUnBjM1FnUFNCamIyeHNhV1JsY2k1emFHRndaUzVqWVd4amRXeGhkR1ZEYjJ4c2FYTnBiMjRvWTI5c2JHbGtaWEl1YldGMGNtbDRWMjl5YkdRc0lIUmhhV3dzSUhSb2FYTXVjMlYwZEdsdVozTXVhR2wwVW1Ga2FYVnpMQ0JmZGpOQktUdGNibHh1SUNBZ0lDQWdJQ0JwWmlBb1pHbHpkQ0E4SURBdU1Da2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dklHaHBkRnh1SUNBZ0lDQWdJQ0FnSUhSaGFXd3VZV1JrS0Y5Mk0wRXViWFZzZEdsd2JIbFRZMkZzWVhJb0xXUnBjM1FwS1R0Y2JseHVJQ0FnSUNBZ0lDQWdJQzh2SUc1dmNtMWhiR2w2WlNCaWIyNWxJR3hsYm1kMGFGeHVJQ0FnSUNBZ0lDQWdJSFJoYVd3dWMzVmlLRjkzYjNKc1pGTndZV05sVUc5emFYUnBiMjRwTG01dmNtMWhiR2w2WlNncExtMTFiSFJwY0d4NVUyTmhiR0Z5S0hSb2FYTXVYM2R2Y214a1UzQmhZMlZDYjI1bFRHVnVaM1JvS1M1aFpHUW9YM2R2Y214a1UzQmhZMlZRYjNOcGRHbHZiaWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgwcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU5oYkdOMWJHRjBaU0IwYUdVZ2UwQnNhVzVySUY5M2IzSnNaRk53WVdObFFtOXVaVXhsYm1kMGFIMHVYRzRnSUNBcUlFbHVkR1Z1WkdWa0lIUnZJR0psSUhWelpXUWdhVzRnZTBCc2FXNXJJSFZ3WkdGMFpYMHVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjlqWVd4alYyOXliR1JUY0dGalpVSnZibVZNWlc1bmRHZ29LVG9nZG05cFpDQjdYRzRnSUNBZ1gzWXpRUzV6WlhSR2NtOXRUV0YwY21sNFVHOXphWFJwYjI0b2RHaHBjeTVpYjI1bExtMWhkSEpwZUZkdmNteGtLVHNnTHk4Z1oyVjBJSGR2Y214a0lIQnZjMmwwYVc5dUlHOW1JSFJvYVhNdVltOXVaVnh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVZMmhwYkdRcElIdGNiaUFnSUNBZ0lGOTJNMEl1YzJWMFJuSnZiVTFoZEhKcGVGQnZjMmwwYVc5dUtIUm9hWE11WTJocGJHUXViV0YwY21sNFYyOXliR1FwT3lBdkx5Qm5aWFFnZDI5eWJHUWdjRzl6YVhScGIyNGdiMllnZEdocGN5NWphR2xzWkZ4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQmZkak5DTG1OdmNIa29kR2hwY3k1ZmFXNXBkR2xoYkV4dlkyRnNRMmhwYkdSUWIzTnBkR2x2YmlrN1hHNGdJQ0FnSUNCZmRqTkNMbUZ3Y0d4NVRXRjBjbWw0TkNoMGFHbHpMbUp2Ym1VdWJXRjBjbWw0VjI5eWJHUXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11WDNkdmNteGtVM0JoWTJWQ2IyNWxUR1Z1WjNSb0lEMGdYM1l6UVM1emRXSW9YM1l6UWlrdWJHVnVaM1JvS0NrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbElHRWdiV0YwY21sNElIUm9ZWFFnWTI5dWRtVnlkSE1nWTJWdWRHVnlJSE53WVdObElHbHVkRzhnZDI5eWJHUWdjM0JoWTJVdVhHNGdJQ0FxSUVCd1lYSmhiU0IwWVhKblpYUWdWR0Z5WjJWMElHMWhkSEpwZUZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCZloyVjBUV0YwY21sNFEyVnVkR1Z5Vkc5WGIzSnNaQ2gwWVhKblpYUTZJRlJJVWtWRkxrMWhkSEpwZURRcE9pQlVTRkpGUlM1TllYUnlhWGcwSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmWTJWdWRHVnlLU0I3WEc0Z0lDQWdJQ0IwWVhKblpYUXVZMjl3ZVNoMGFHbHpMbDlqWlc1MFpYSXViV0YwY21sNFYyOXliR1FwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQjBZWEpuWlhRdWFXUmxiblJwZEhrb0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnZEdGeVoyVjBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOeVpXRjBaU0JoSUcxaGRISnBlQ0IwYUdGMElHTnZiblpsY25SeklIZHZjbXhrSUhOd1lXTmxJR2x1ZEc4Z1kyVnVkR1Z5SUhOd1lXTmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2RHRnlaMlYwSUZSaGNtZGxkQ0J0WVhSeWFYaGNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdYMmRsZEUxaGRISnBlRmR2Y214a1ZHOURaVzUwWlhJb2RHRnlaMlYwT2lCVVNGSkZSUzVOWVhSeWFYZzBLVG9nVkVoU1JVVXVUV0YwY21sNE5DQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVgyTmxiblJsY2lrZ2UxeHVJQ0FnSUNBZ2RHRnlaMlYwTG1OdmNIa29LSFJvYVhNdVgyTmxiblJsY2k1MWMyVnlSR0YwWVM1cGJuWmxjbk5sUTJGamFHVlFjbTk0ZVNCaGN5Qk5ZWFJ5YVhnMFNXNTJaWEp6WlVOaFkyaGxLUzVwYm5abGNuTmxLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHRnlaMlYwTG1sa1pXNTBhWFI1S0NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSFJoY21kbGREdGNiaUFnZlZ4dWZWeHVJaXdpTHlvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLbHh5WEc1RGIzQjVjbWxuYUhRZ0tHTXBJRTFwWTNKdmMyOW1kQ0JEYjNKd2IzSmhkR2x2Ymk1Y2NseHVYSEpjYmxCbGNtMXBjM05wYjI0Z2RHOGdkWE5sTENCamIzQjVMQ0J0YjJScFpua3NJR0Z1WkM5dmNpQmthWE4wY21saWRYUmxJSFJvYVhNZ2MyOW1kSGRoY21VZ1ptOXlJR0Z1ZVZ4eVhHNXdkWEp3YjNObElIZHBkR2dnYjNJZ2QybDBhRzkxZENCbVpXVWdhWE1nYUdWeVpXSjVJR2R5WVc1MFpXUXVYSEpjYmx4eVhHNVVTRVVnVTA5R1ZGZEJVa1VnU1ZNZ1VGSlBWa2xFUlVRZ1hDSkJVeUJKVTF3aUlFRk9SQ0JVU0VVZ1FWVlVTRTlTSUVSSlUwTk1RVWxOVXlCQlRFd2dWMEZTVWtGT1ZFbEZVeUJYU1ZSSVhISmNibEpGUjBGU1JDQlVUeUJVU0VsVElGTlBSbFJYUVZKRklFbE9RMHhWUkVsT1J5QkJURXdnU1UxUVRFbEZSQ0JYUVZKU1FVNVVTVVZUSUU5R0lFMUZVa05JUVU1VVFVSkpURWxVV1Z4eVhHNUJUa1FnUmtsVVRrVlRVeTRnU1U0Z1RrOGdSVlpGVGxRZ1UwaEJURXdnVkVoRklFRlZWRWhQVWlCQ1JTQk1TVUZDVEVVZ1JrOVNJRUZPV1NCVFVFVkRTVUZNTENCRVNWSkZRMVFzWEhKY2JrbE9SRWxTUlVOVUxDQlBVaUJEVDA1VFJWRlZSVTVVU1VGTUlFUkJUVUZIUlZNZ1QxSWdRVTVaSUVSQlRVRkhSVk1nVjBoQlZGTlBSVlpGVWlCU1JWTlZURlJKVGtjZ1JsSlBUVnh5WEc1TVQxTlRJRTlHSUZWVFJTd2dSRUZVUVNCUFVpQlFVazlHU1ZSVExDQlhTRVZVU0VWU0lFbE9JRUZPSUVGRFZFbFBUaUJQUmlCRFQwNVVVa0ZEVkN3Z1RrVkhURWxIUlU1RFJTQlBVbHh5WEc1UFZFaEZVaUJVVDFKVVNVOVZVeUJCUTFSSlQwNHNJRUZTU1ZOSlRrY2dUMVZVSUU5R0lFOVNJRWxPSUVOUFRrNUZRMVJKVDA0Z1YwbFVTQ0JVU0VVZ1ZWTkZJRTlTWEhKY2JsQkZVa1pQVWsxQlRrTkZJRTlHSUZSSVNWTWdVMDlHVkZkQlVrVXVYSEpjYmlvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FJQ292WEhKY2JpOHFJR2RzYjJKaGJDQlNaV1pzWldOMExDQlFjbTl0YVhObElDb3ZYSEpjYmx4eVhHNTJZWElnWlhoMFpXNWtVM1JoZEdsamN5QTlJR1oxYm1OMGFXOXVLR1FzSUdJcElIdGNjbHh1SUNBZ0lHVjRkR1Z1WkZOMFlYUnBZM01nUFNCUFltcGxZM1F1YzJWMFVISnZkRzkwZVhCbFQyWWdmSHhjY2x4dUlDQWdJQ0FnSUNBb2V5QmZYM0J5YjNSdlgxODZJRnRkSUgwZ2FXNXpkR0Z1WTJWdlppQkJjbkpoZVNBbUppQm1kVzVqZEdsdmJpQW9aQ3dnWWlrZ2V5QmtMbDlmY0hKdmRHOWZYeUE5SUdJN0lIMHBJSHg4WEhKY2JpQWdJQ0FnSUNBZ1puVnVZM1JwYjI0Z0tHUXNJR0lwSUhzZ1ptOXlJQ2gyWVhJZ2NDQnBiaUJpS1NCcFppQW9UMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLR0lzSUhBcEtTQmtXM0JkSUQwZ1lsdHdYVHNnZlR0Y2NseHVJQ0FnSUhKbGRIVnliaUJsZUhSbGJtUlRkR0YwYVdOektHUXNJR0lwTzF4eVhHNTlPMXh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZaWGgwWlc1a2N5aGtMQ0JpS1NCN1hISmNiaUFnSUNCcFppQW9kSGx3Wlc5bUlHSWdJVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQW1KaUJpSUNFOVBTQnVkV3hzS1Z4eVhHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pEYkdGemN5QmxlSFJsYm1SeklIWmhiSFZsSUZ3aUlDc2dVM1J5YVc1bktHSXBJQ3NnWENJZ2FYTWdibTkwSUdFZ1kyOXVjM1J5ZFdOMGIzSWdiM0lnYm5Wc2JGd2lLVHRjY2x4dUlDQWdJR1Y0ZEdWdVpGTjBZWFJwWTNNb1pDd2dZaWs3WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJmWHlncElIc2dkR2hwY3k1amIyNXpkSEoxWTNSdmNpQTlJR1E3SUgxY2NseHVJQ0FnSUdRdWNISnZkRzkwZVhCbElEMGdZaUE5UFQwZ2JuVnNiQ0EvSUU5aWFtVmpkQzVqY21WaGRHVW9ZaWtnT2lBb1gxOHVjSEp2ZEc5MGVYQmxJRDBnWWk1d2NtOTBiM1I1Y0dVc0lHNWxkeUJmWHlncEtUdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJSFpoY2lCZlgyRnpjMmxuYmlBOUlHWjFibU4wYVc5dUtDa2dlMXh5WEc0Z0lDQWdYMTloYzNOcFoyNGdQU0JQWW1wbFkzUXVZWE56YVdkdUlIeDhJR1oxYm1OMGFXOXVJRjlmWVhOemFXZHVLSFFwSUh0Y2NseHVJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQnpMQ0JwSUQwZ01Td2diaUE5SUdGeVozVnRaVzUwY3k1c1pXNW5kR2c3SUdrZ1BDQnVPeUJwS3lzcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2N5QTlJR0Z5WjNWdFpXNTBjMXRwWFR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaDJZWElnY0NCcGJpQnpLU0JwWmlBb1QySnFaV04wTG5CeWIzUnZkSGx3WlM1b1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tITXNJSEFwS1NCMFczQmRJRDBnYzF0d1hUdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhRN1hISmNiaUFnSUNCOVhISmNiaUFnSUNCeVpYUjFjbTRnWDE5aGMzTnBaMjR1WVhCd2JIa29kR2hwY3l3Z1lYSm5kVzFsYm5SektUdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmY21WemRDaHpMQ0JsS1NCN1hISmNiaUFnSUNCMllYSWdkQ0E5SUh0OU8xeHlYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2NDQnBiaUJ6S1NCcFppQW9UMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLSE1zSUhBcElDWW1JR1V1YVc1a1pYaFBaaWh3S1NBOElEQXBYSEpjYmlBZ0lDQWdJQ0FnZEZ0d1hTQTlJSE5iY0YwN1hISmNiaUFnSUNCcFppQW9jeUFoUFNCdWRXeHNJQ1ltSUhSNWNHVnZaaUJQWW1wbFkzUXVaMlYwVDNkdVVISnZjR1Z5ZEhsVGVXMWliMnh6SUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwWEhKY2JpQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREFzSUhBZ1BTQlBZbXBsWTNRdVoyVjBUM2R1VUhKdmNHVnlkSGxUZVcxaWIyeHpLSE1wT3lCcElEd2djQzVzWlc1bmRHZzdJR2tyS3lrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9aUzVwYm1SbGVFOW1LSEJiYVYwcElEd2dNQ0FtSmlCUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG5CeWIzQmxjblI1U1hORmJuVnRaWEpoWW14bExtTmhiR3dvY3l3Z2NGdHBYU2twWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMFczQmJhVjFkSUQwZ2MxdHdXMmxkWFR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQnlaWFIxY200Z2REdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmWkdWamIzSmhkR1VvWkdWamIzSmhkRzl5Y3l3Z2RHRnlaMlYwTENCclpYa3NJR1JsYzJNcElIdGNjbHh1SUNBZ0lIWmhjaUJqSUQwZ1lYSm5kVzFsYm5SekxteGxibWQwYUN3Z2NpQTlJR01nUENBeklEOGdkR0Z5WjJWMElEb2daR1Z6WXlBOVBUMGdiblZzYkNBL0lHUmxjMk1nUFNCUFltcGxZM1F1WjJWMFQzZHVVSEp2Y0dWeWRIbEVaWE5qY21sd2RHOXlLSFJoY21kbGRDd2dhMlY1S1NBNklHUmxjMk1zSUdRN1hISmNiaUFnSUNCcFppQW9kSGx3Wlc5bUlGSmxabXhsWTNRZ1BUMDlJRndpYjJKcVpXTjBYQ0lnSmlZZ2RIbHdaVzltSUZKbFpteGxZM1F1WkdWamIzSmhkR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnY2lBOUlGSmxabXhsWTNRdVpHVmpiM0poZEdVb1pHVmpiM0poZEc5eWN5d2dkR0Z5WjJWMExDQnJaWGtzSUdSbGMyTXBPMXh5WEc0Z0lDQWdaV3h6WlNCbWIzSWdLSFpoY2lCcElEMGdaR1ZqYjNKaGRHOXljeTVzWlc1bmRHZ2dMU0F4T3lCcElENDlJREE3SUdrdExTa2dhV1lnS0dRZ1BTQmtaV052Y21GMGIzSnpXMmxkS1NCeUlEMGdLR01nUENBeklEOGdaQ2h5S1NBNklHTWdQaUF6SUQ4Z1pDaDBZWEpuWlhRc0lHdGxlU3dnY2lrZ09pQmtLSFJoY21kbGRDd2dhMlY1S1NrZ2ZId2djanRjY2x4dUlDQWdJSEpsZEhWeWJpQmpJRDRnTXlBbUppQnlJQ1ltSUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaDBZWEpuWlhRc0lHdGxlU3dnY2lrc0lISTdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNCaGNtRnRLSEJoY21GdFNXNWtaWGdzSUdSbFkyOXlZWFJ2Y2lrZ2UxeHlYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1SUNoMFlYSm5aWFFzSUd0bGVTa2dleUJrWldOdmNtRjBiM0lvZEdGeVoyVjBMQ0JyWlhrc0lIQmhjbUZ0U1c1a1pYZ3BPeUI5WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyVnpSR1ZqYjNKaGRHVW9ZM1J2Y2l3Z1pHVnpZM0pwY0hSdmNrbHVMQ0JrWldOdmNtRjBiM0p6TENCamIyNTBaWGgwU1c0c0lHbHVhWFJwWVd4cGVtVnljeXdnWlhoMGNtRkpibWwwYVdGc2FYcGxjbk1wSUh0Y2NseHVJQ0FnSUdaMWJtTjBhVzl1SUdGalkyVndkQ2htS1NCN0lHbG1JQ2htSUNFOVBTQjJiMmxrSURBZ0ppWWdkSGx3Wlc5bUlHWWdJVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWtaMWJtTjBhVzl1SUdWNGNHVmpkR1ZrWENJcE95QnlaWFIxY200Z1pqc2dmVnh5WEc0Z0lDQWdkbUZ5SUd0cGJtUWdQU0JqYjI1MFpYaDBTVzR1YTJsdVpDd2dhMlY1SUQwZ2EybHVaQ0E5UFQwZ1hDSm5aWFIwWlhKY0lpQS9JRndpWjJWMFhDSWdPaUJyYVc1a0lEMDlQU0JjSW5ObGRIUmxjbHdpSUQ4Z1hDSnpaWFJjSWlBNklGd2lkbUZzZFdWY0lqdGNjbHh1SUNBZ0lIWmhjaUIwWVhKblpYUWdQU0FoWkdWelkzSnBjSFJ2Y2tsdUlDWW1JR04wYjNJZ1B5QmpiMjUwWlhoMFNXNWJYQ0p6ZEdGMGFXTmNJbDBnUHlCamRHOXlJRG9nWTNSdmNpNXdjbTkwYjNSNWNHVWdPaUJ1ZFd4c08xeHlYRzRnSUNBZ2RtRnlJR1JsYzJOeWFYQjBiM0lnUFNCa1pYTmpjbWx3ZEc5eVNXNGdmSHdnS0hSaGNtZGxkQ0EvSUU5aWFtVmpkQzVuWlhSUGQyNVFjbTl3WlhKMGVVUmxjMk55YVhCMGIzSW9kR0Z5WjJWMExDQmpiMjUwWlhoMFNXNHVibUZ0WlNrZ09pQjdmU2s3WEhKY2JpQWdJQ0IyWVhJZ1h5d2daRzl1WlNBOUlHWmhiSE5sTzF4eVhHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlHUmxZMjl5WVhSdmNuTXViR1Z1WjNSb0lDMGdNVHNnYVNBK1BTQXdPeUJwTFMwcElIdGNjbHh1SUNBZ0lDQWdJQ0IyWVhJZ1kyOXVkR1Y0ZENBOUlIdDlPMXh5WEc0Z0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUhBZ2FXNGdZMjl1ZEdWNGRFbHVLU0JqYjI1MFpYaDBXM0JkSUQwZ2NDQTlQVDBnWENKaFkyTmxjM05jSWlBL0lIdDlJRG9nWTI5dWRHVjRkRWx1VzNCZE8xeHlYRzRnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJSEFnYVc0Z1kyOXVkR1Y0ZEVsdUxtRmpZMlZ6Y3lrZ1kyOXVkR1Y0ZEM1aFkyTmxjM05iY0YwZ1BTQmpiMjUwWlhoMFNXNHVZV05qWlhOelczQmRPMXh5WEc0Z0lDQWdJQ0FnSUdOdmJuUmxlSFF1WVdSa1NXNXBkR2xoYkdsNlpYSWdQU0JtZFc1amRHbHZiaUFvWmlrZ2V5QnBaaUFvWkc5dVpTa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWtOaGJtNXZkQ0JoWkdRZ2FXNXBkR2xoYkdsNlpYSnpJR0ZtZEdWeUlHUmxZMjl5WVhScGIyNGdhR0Z6SUdOdmJYQnNaWFJsWkZ3aUtUc2daWGgwY21GSmJtbDBhV0ZzYVhwbGNuTXVjSFZ6YUNoaFkyTmxjSFFvWmlCOGZDQnVkV3hzS1NrN0lIMDdYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlISmxjM1ZzZENBOUlDZ3dMQ0JrWldOdmNtRjBiM0p6VzJsZEtTaHJhVzVrSUQwOVBTQmNJbUZqWTJWemMyOXlYQ0lnUHlCN0lHZGxkRG9nWkdWelkzSnBjSFJ2Y2k1blpYUXNJSE5sZERvZ1pHVnpZM0pwY0hSdmNpNXpaWFFnZlNBNklHUmxjMk55YVhCMGIzSmJhMlY1WFN3Z1kyOXVkR1Y0ZENrN1hISmNiaUFnSUNBZ0lDQWdhV1lnS0d0cGJtUWdQVDA5SUZ3aVlXTmpaWE56YjNKY0lpa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY21WemRXeDBJRDA5UFNCMmIybGtJREFwSUdOdmJuUnBiblZsTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NtVnpkV3gwSUQwOVBTQnVkV3hzSUh4OElIUjVjR1Z2WmlCeVpYTjFiSFFnSVQwOUlGd2liMkpxWldOMFhDSXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKUFltcGxZM1FnWlhod1pXTjBaV1JjSWlrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaGZJRDBnWVdOalpYQjBLSEpsYzNWc2RDNW5aWFFwS1NCa1pYTmpjbWx3ZEc5eUxtZGxkQ0E5SUY4N1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaGZJRDBnWVdOalpYQjBLSEpsYzNWc2RDNXpaWFFwS1NCa1pYTmpjbWx3ZEc5eUxuTmxkQ0E5SUY4N1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaGZJRDBnWVdOalpYQjBLSEpsYzNWc2RDNXBibWwwS1NrZ2FXNXBkR2xoYkdsNlpYSnpMbkIxYzJnb1h5azdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tGOGdQU0JoWTJObGNIUW9jbVZ6ZFd4MEtTa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYTJsdVpDQTlQVDBnWENKbWFXVnNaRndpS1NCcGJtbDBhV0ZzYVhwbGNuTXVjSFZ6YUNoZktUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0JrWlhOamNtbHdkRzl5VzJ0bGVWMGdQU0JmTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNBZ0lHbG1JQ2gwWVhKblpYUXBJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNoMFlYSm5aWFFzSUdOdmJuUmxlSFJKYmk1dVlXMWxMQ0JrWlhOamNtbHdkRzl5S1R0Y2NseHVJQ0FnSUdSdmJtVWdQU0IwY25WbE8xeHlYRzU5TzF4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmY25WdVNXNXBkR2xoYkdsNlpYSnpLSFJvYVhOQmNtY3NJR2x1YVhScFlXeHBlbVZ5Y3l3Z2RtRnNkV1VwSUh0Y2NseHVJQ0FnSUhaaGNpQjFjMlZXWVd4MVpTQTlJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dQaUF5TzF4eVhHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCcGJtbDBhV0ZzYVhwbGNuTXViR1Z1WjNSb095QnBLeXNwSUh0Y2NseHVJQ0FnSUNBZ0lDQjJZV3gxWlNBOUlIVnpaVlpoYkhWbElEOGdhVzVwZEdsaGJHbDZaWEp6VzJsZExtTmhiR3dvZEdocGMwRnlaeXdnZG1Gc2RXVXBJRG9nYVc1cGRHbGhiR2w2WlhKelcybGRMbU5oYkd3b2RHaHBjMEZ5WnlrN1hISmNiaUFnSUNCOVhISmNiaUFnSUNCeVpYUjFjbTRnZFhObFZtRnNkV1VnUHlCMllXeDFaU0E2SUhadmFXUWdNRHRjY2x4dWZUdGNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgzQnliM0JMWlhrb2VDa2dlMXh5WEc0Z0lDQWdjbVYwZFhKdUlIUjVjR1Z2WmlCNElEMDlQU0JjSW5ONWJXSnZiRndpSUQ4Z2VDQTZJRndpWENJdVkyOXVZMkYwS0hncE8xeHlYRzU5TzF4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmYzJWMFJuVnVZM1JwYjI1T1lXMWxLR1lzSUc1aGJXVXNJSEJ5WldacGVDa2dlMXh5WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ1WVcxbElEMDlQU0JjSW5ONWJXSnZiRndpS1NCdVlXMWxJRDBnYm1GdFpTNWtaWE5qY21sd2RHbHZiaUEvSUZ3aVcxd2lMbU52Ym1OaGRDaHVZVzFsTG1SbGMyTnlhWEIwYVc5dUxDQmNJbDFjSWlrZ09pQmNJbHdpTzF4eVhHNGdJQ0FnY21WMGRYSnVJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNobUxDQmNJbTVoYldWY0lpd2dleUJqYjI1bWFXZDFjbUZpYkdVNklIUnlkV1VzSUhaaGJIVmxPaUJ3Y21WbWFYZ2dQeUJjSWx3aUxtTnZibU5oZENod2NtVm1hWGdzSUZ3aUlGd2lMQ0J1WVcxbEtTQTZJRzVoYldVZ2ZTazdYSEpjYm4wN1hISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5dFpYUmhaR0YwWVNodFpYUmhaR0YwWVV0bGVTd2diV1YwWVdSaGRHRldZV3gxWlNrZ2UxeHlYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQlNaV1pzWldOMElEMDlQU0JjSW05aWFtVmpkRndpSUNZbUlIUjVjR1Z2WmlCU1pXWnNaV04wTG0xbGRHRmtZWFJoSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUhKbGRIVnliaUJTWldac1pXTjBMbTFsZEdGa1lYUmhLRzFsZEdGa1lYUmhTMlY1TENCdFpYUmhaR0YwWVZaaGJIVmxLVHRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZllYZGhhWFJsY2loMGFHbHpRWEpuTENCZllYSm5kVzFsYm5SekxDQlFMQ0JuWlc1bGNtRjBiM0lwSUh0Y2NseHVJQ0FnSUdaMWJtTjBhVzl1SUdGa2IzQjBLSFpoYkhWbEtTQjdJSEpsZEhWeWJpQjJZV3gxWlNCcGJuTjBZVzVqWlc5bUlGQWdQeUIyWVd4MVpTQTZJRzVsZHlCUUtHWjFibU4wYVc5dUlDaHlaWE52YkhabEtTQjdJSEpsYzI5c2RtVW9kbUZzZFdVcE95QjlLVHNnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJRzVsZHlBb1VDQjhmQ0FvVUNBOUlGQnliMjFwYzJVcEtTaG1kVzVqZEdsdmJpQW9jbVZ6YjJ4MlpTd2djbVZxWldOMEtTQjdYSEpjYmlBZ0lDQWdJQ0FnWm5WdVkzUnBiMjRnWm5Wc1ptbHNiR1ZrS0haaGJIVmxLU0I3SUhSeWVTQjdJSE4wWlhBb1oyVnVaWEpoZEc5eUxtNWxlSFFvZG1Gc2RXVXBLVHNnZlNCallYUmphQ0FvWlNrZ2V5QnlaV3BsWTNRb1pTazdJSDBnZlZ4eVhHNGdJQ0FnSUNBZ0lHWjFibU4wYVc5dUlISmxhbVZqZEdWa0tIWmhiSFZsS1NCN0lIUnllU0I3SUhOMFpYQW9aMlZ1WlhKaGRHOXlXMXdpZEdoeWIzZGNJbDBvZG1Gc2RXVXBLVHNnZlNCallYUmphQ0FvWlNrZ2V5QnlaV3BsWTNRb1pTazdJSDBnZlZ4eVhHNGdJQ0FnSUNBZ0lHWjFibU4wYVc5dUlITjBaWEFvY21WemRXeDBLU0I3SUhKbGMzVnNkQzVrYjI1bElEOGdjbVZ6YjJ4MlpTaHlaWE4xYkhRdWRtRnNkV1VwSURvZ1lXUnZjSFFvY21WemRXeDBMblpoYkhWbEtTNTBhR1Z1S0daMWJHWnBiR3hsWkN3Z2NtVnFaV04wWldRcE95QjlYSEpjYmlBZ0lDQWdJQ0FnYzNSbGNDZ29aMlZ1WlhKaGRHOXlJRDBnWjJWdVpYSmhkRzl5TG1Gd2NHeDVLSFJvYVhOQmNtY3NJRjloY21kMWJXVnVkSE1nZkh3Z1cxMHBLUzV1WlhoMEtDa3BPMXh5WEc0Z0lDQWdmU2s3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyZGxibVZ5WVhSdmNpaDBhR2x6UVhKbkxDQmliMlI1S1NCN1hISmNiaUFnSUNCMllYSWdYeUE5SUhzZ2JHRmlaV3c2SURBc0lITmxiblE2SUdaMWJtTjBhVzl1S0NrZ2V5QnBaaUFvZEZzd1hTQW1JREVwSUhSb2NtOTNJSFJiTVYwN0lISmxkSFZ5YmlCMFd6RmRPeUI5TENCMGNubHpPaUJiWFN3Z2IzQnpPaUJiWFNCOUxDQm1MQ0I1TENCMExDQm5PMXh5WEc0Z0lDQWdjbVYwZFhKdUlHY2dQU0I3SUc1bGVIUTZJSFpsY21Jb01Da3NJRndpZEdoeWIzZGNJam9nZG1WeVlpZ3hLU3dnWENKeVpYUjFjbTVjSWpvZ2RtVnlZaWd5S1NCOUxDQjBlWEJsYjJZZ1UzbHRZbTlzSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lnSmlZZ0tHZGJVM2x0WW05c0xtbDBaWEpoZEc5eVhTQTlJR1oxYm1OMGFXOXVLQ2tnZXlCeVpYUjFjbTRnZEdocGN6c2dmU2tzSUdjN1hISmNiaUFnSUNCbWRXNWpkR2x2YmlCMlpYSmlLRzRwSUhzZ2NtVjBkWEp1SUdaMWJtTjBhVzl1SUNoMktTQjdJSEpsZEhWeWJpQnpkR1Z3S0Z0dUxDQjJYU2s3SUgwN0lIMWNjbHh1SUNBZ0lHWjFibU4wYVc5dUlITjBaWEFvYjNBcElIdGNjbHh1SUNBZ0lDQWdJQ0JwWmlBb1ppa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWtkbGJtVnlZWFJ2Y2lCcGN5QmhiSEpsWVdSNUlHVjRaV04xZEdsdVp5NWNJaWs3WEhKY2JpQWdJQ0FnSUNBZ2QyaHBiR1VnS0djZ0ppWWdLR2NnUFNBd0xDQnZjRnN3WFNBbUppQW9YeUE5SURBcEtTd2dYeWtnZEhKNUlIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR1lnUFNBeExDQjVJQ1ltSUNoMElEMGdiM0JiTUYwZ0ppQXlJRDhnZVZ0Y0luSmxkSFZ5Ymx3aVhTQTZJRzl3V3pCZElEOGdlVnRjSW5Sb2NtOTNYQ0pkSUh4OElDZ29kQ0E5SUhsYlhDSnlaWFIxY201Y0lsMHBJQ1ltSUhRdVkyRnNiQ2g1S1N3Z01Da2dPaUI1TG01bGVIUXBJQ1ltSUNFb2RDQTlJSFF1WTJGc2JDaDVMQ0J2Y0ZzeFhTa3BMbVJ2Ym1VcElISmxkSFZ5YmlCME8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9lU0E5SURBc0lIUXBJRzl3SUQwZ1cyOXdXekJkSUNZZ01pd2dkQzUyWVd4MVpWMDdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lITjNhWFJqYUNBb2IzQmJNRjBwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnTURvZ1kyRnpaU0F4T2lCMElEMGdiM0E3SUdKeVpXRnJPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQTBPaUJmTG14aFltVnNLeXM3SUhKbGRIVnliaUI3SUhaaGJIVmxPaUJ2Y0ZzeFhTd2daRzl1WlRvZ1ptRnNjMlVnZlR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnTlRvZ1h5NXNZV0psYkNzck95QjVJRDBnYjNCYk1WMDdJRzl3SUQwZ1d6QmRPeUJqYjI1MGFXNTFaVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdOem9nYjNBZ1BTQmZMbTl3Y3k1d2IzQW9LVHNnWHk1MGNubHpMbkJ2Y0NncE95QmpiMjUwYVc1MVpUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1JsWm1GMWJIUTZYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0VvZENBOUlGOHVkSEo1Y3l3Z2RDQTlJSFF1YkdWdVozUm9JRDRnTUNBbUppQjBXM1F1YkdWdVozUm9JQzBnTVYwcElDWW1JQ2h2Y0Zzd1hTQTlQVDBnTmlCOGZDQnZjRnN3WFNBOVBUMGdNaWtwSUhzZ1h5QTlJREE3SUdOdmJuUnBiblZsT3lCOVhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHOXdXekJkSUQwOVBTQXpJQ1ltSUNnaGRDQjhmQ0FvYjNCYk1WMGdQaUIwV3pCZElDWW1JRzl3V3pGZElEd2dkRnN6WFNrcEtTQjdJRjh1YkdGaVpXd2dQU0J2Y0ZzeFhUc2dZbkpsWVdzN0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iM0JiTUYwZ1BUMDlJRFlnSmlZZ1h5NXNZV0psYkNBOElIUmJNVjBwSUhzZ1h5NXNZV0psYkNBOUlIUmJNVjA3SUhRZ1BTQnZjRHNnWW5KbFlXczdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZENBbUppQmZMbXhoWW1Wc0lEd2dkRnN5WFNrZ2V5QmZMbXhoWW1Wc0lEMGdkRnN5WFRzZ1h5NXZjSE11Y0hWemFDaHZjQ2s3SUdKeVpXRnJPeUI5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSYk1sMHBJRjh1YjNCekxuQnZjQ2dwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRjh1ZEhKNWN5NXdiM0FvS1RzZ1kyOXVkR2x1ZFdVN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYjNBZ1BTQmliMlI1TG1OaGJHd29kR2hwYzBGeVp5d2dYeWs3WEhKY2JpQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pTa2dleUJ2Y0NBOUlGczJMQ0JsWFRzZ2VTQTlJREE3SUgwZ1ptbHVZV3hzZVNCN0lHWWdQU0IwSUQwZ01Ec2dmVnh5WEc0Z0lDQWdJQ0FnSUdsbUlDaHZjRnN3WFNBbUlEVXBJSFJvY205M0lHOXdXekZkT3lCeVpYUjFjbTRnZXlCMllXeDFaVG9nYjNCYk1GMGdQeUJ2Y0ZzeFhTQTZJSFp2YVdRZ01Dd2daRzl1WlRvZ2RISjFaU0I5TzF4eVhHNGdJQ0FnZlZ4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ2RtRnlJRjlmWTNKbFlYUmxRbWx1WkdsdVp5QTlJRTlpYW1WamRDNWpjbVZoZEdVZ1B5QW9ablZ1WTNScGIyNG9ieXdnYlN3Z2F5d2dheklwSUh0Y2NseHVJQ0FnSUdsbUlDaHJNaUE5UFQwZ2RXNWtaV1pwYm1Wa0tTQnJNaUE5SUdzN1hISmNiaUFnSUNCMllYSWdaR1Z6WXlBOUlFOWlhbVZqZEM1blpYUlBkMjVRY205d1pYSjBlVVJsYzJOeWFYQjBiM0lvYlN3Z2F5azdYSEpjYmlBZ0lDQnBaaUFvSVdSbGMyTWdmSHdnS0Z3aVoyVjBYQ0lnYVc0Z1pHVnpZeUEvSUNGdExsOWZaWE5OYjJSMWJHVWdPaUJrWlhOakxuZHlhWFJoWW14bElIeDhJR1JsYzJNdVkyOXVabWxuZFhKaFlteGxLU2tnZTF4eVhHNGdJQ0FnSUNBZ0lHUmxjMk1nUFNCN0lHVnVkVzFsY21GaWJHVTZJSFJ5ZFdVc0lHZGxkRG9nWm5WdVkzUnBiMjRvS1NCN0lISmxkSFZ5YmlCdFcydGRPeUI5SUgwN1hISmNiaUFnSUNCOVhISmNiaUFnSUNCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29ieXdnYXpJc0lHUmxjMk1wTzF4eVhHNTlLU0E2SUNobWRXNWpkR2x2YmlodkxDQnRMQ0JyTENCck1pa2dlMXh5WEc0Z0lDQWdhV1lnS0dzeUlEMDlQU0IxYm1SbFptbHVaV1FwSUdzeUlEMGdhenRjY2x4dUlDQWdJRzliYXpKZElEMGdiVnRyWFR0Y2NseHVmU2s3WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTlsZUhCdmNuUlRkR0Z5S0cwc0lHOHBJSHRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJSEFnYVc0Z2JTa2dhV1lnS0hBZ0lUMDlJRndpWkdWbVlYVnNkRndpSUNZbUlDRlBZbXBsWTNRdWNISnZkRzkwZVhCbExtaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29ieXdnY0NrcElGOWZZM0psWVhSbFFtbHVaR2x1WnlodkxDQnRMQ0J3S1R0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZkbUZzZFdWektHOHBJSHRjY2x4dUlDQWdJSFpoY2lCeklEMGdkSGx3Wlc5bUlGTjViV0p2YkNBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUNZbUlGTjViV0p2YkM1cGRHVnlZWFJ2Y2l3Z2JTQTlJSE1nSmlZZ2IxdHpYU3dnYVNBOUlEQTdYSEpjYmlBZ0lDQnBaaUFvYlNrZ2NtVjBkWEp1SUcwdVkyRnNiQ2h2S1R0Y2NseHVJQ0FnSUdsbUlDaHZJQ1ltSUhSNWNHVnZaaUJ2TG14bGJtZDBhQ0E5UFQwZ1hDSnVkVzFpWlhKY0lpa2djbVYwZFhKdUlIdGNjbHh1SUNBZ0lDQWdJQ0J1WlhoME9pQm1kVzVqZEdsdmJpQW9LU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodklDWW1JR2tnUGowZ2J5NXNaVzVuZEdncElHOGdQU0IyYjJsa0lEQTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCN0lIWmhiSFZsT2lCdklDWW1JRzliYVNzclhTd2daRzl1WlRvZ0lXOGdmVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNCOU8xeHlYRzRnSUNBZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaHpJRDhnWENKUFltcGxZM1FnYVhNZ2JtOTBJR2wwWlhKaFlteGxMbHdpSURvZ1hDSlRlVzFpYjJ3dWFYUmxjbUYwYjNJZ2FYTWdibTkwSUdSbFptbHVaV1F1WENJcE8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl5WldGa0tHOHNJRzRwSUh0Y2NseHVJQ0FnSUhaaGNpQnRJRDBnZEhsd1pXOW1JRk41YldKdmJDQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlDWW1JRzliVTNsdFltOXNMbWwwWlhKaGRHOXlYVHRjY2x4dUlDQWdJR2xtSUNnaGJTa2djbVYwZFhKdUlHODdYSEpjYmlBZ0lDQjJZWElnYVNBOUlHMHVZMkZzYkNodktTd2djaXdnWVhJZ1BTQmJYU3dnWlR0Y2NseHVJQ0FnSUhSeWVTQjdYSEpjYmlBZ0lDQWdJQ0FnZDJocGJHVWdLQ2h1SUQwOVBTQjJiMmxrSURBZ2ZId2diaTB0SUQ0Z01Da2dKaVlnSVNoeUlEMGdhUzV1WlhoMEtDa3BMbVJ2Ym1VcElHRnlMbkIxYzJnb2NpNTJZV3gxWlNrN1hISmNiaUFnSUNCOVhISmNiaUFnSUNCallYUmphQ0FvWlhKeWIzSXBJSHNnWlNBOUlIc2daWEp5YjNJNklHVnljbTl5SUgwN0lIMWNjbHh1SUNBZ0lHWnBibUZzYkhrZ2UxeHlYRzRnSUNBZ0lDQWdJSFJ5ZVNCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHlJQ1ltSUNGeUxtUnZibVVnSmlZZ0tHMGdQU0JwVzF3aWNtVjBkWEp1WENKZEtTa2diUzVqWVd4c0tHa3BPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQm1hVzVoYkd4NUlIc2dhV1lnS0dVcElIUm9jbTkzSUdVdVpYSnliM0k3SUgxY2NseHVJQ0FnSUgxY2NseHVJQ0FnSUhKbGRIVnliaUJoY2p0Y2NseHVmVnh5WEc1Y2NseHVMeW9xSUVCa1pYQnlaV05oZEdWa0lDb3ZYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNOd2NtVmhaQ2dwSUh0Y2NseHVJQ0FnSUdadmNpQW9kbUZ5SUdGeUlEMGdXMTBzSUdrZ1BTQXdPeUJwSUR3Z1lYSm5kVzFsYm5SekxteGxibWQwYURzZ2FTc3JLVnh5WEc0Z0lDQWdJQ0FnSUdGeUlEMGdZWEl1WTI5dVkyRjBLRjlmY21WaFpDaGhjbWQxYldWdWRITmJhVjBwS1R0Y2NseHVJQ0FnSUhKbGRIVnliaUJoY2p0Y2NseHVmVnh5WEc1Y2NseHVMeW9xSUVCa1pYQnlaV05oZEdWa0lDb3ZYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNOd2NtVmhaRUZ5Y21GNWN5Z3BJSHRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJSE1nUFNBd0xDQnBJRDBnTUN3Z2FXd2dQU0JoY21kMWJXVnVkSE11YkdWdVozUm9PeUJwSUR3Z2FXdzdJR2tyS3lrZ2N5QXJQU0JoY21kMWJXVnVkSE5iYVYwdWJHVnVaM1JvTzF4eVhHNGdJQ0FnWm05eUlDaDJZWElnY2lBOUlFRnljbUY1S0hNcExDQnJJRDBnTUN3Z2FTQTlJREE3SUdrZ1BDQnBiRHNnYVNzcktWeHlYRzRnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJR0VnUFNCaGNtZDFiV1Z1ZEhOYmFWMHNJR29nUFNBd0xDQnFiQ0E5SUdFdWJHVnVaM1JvT3lCcUlEd2dhbXc3SUdvckt5d2dheXNyS1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5VzJ0ZElEMGdZVnRxWFR0Y2NseHVJQ0FnSUhKbGRIVnliaUJ5TzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOXpjSEpsWVdSQmNuSmhlU2gwYnl3Z1puSnZiU3dnY0dGamF5a2dlMXh5WEc0Z0lDQWdhV1lnS0hCaFkyc2dmSHdnWVhKbmRXMWxiblJ6TG14bGJtZDBhQ0E5UFQwZ01pa2dabTl5SUNoMllYSWdhU0E5SURBc0lHd2dQU0JtY205dExteGxibWQwYUN3Z1lYSTdJR2tnUENCc095QnBLeXNwSUh0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvWVhJZ2ZId2dJU2hwSUdsdUlHWnliMjBwS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hZWElwSUdGeUlEMGdRWEp5WVhrdWNISnZkRzkwZVhCbExuTnNhV05sTG1OaGJHd29abkp2YlN3Z01Dd2dhU2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR0Z5VzJsZElEMGdabkp2YlZ0cFhUdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdJQ0J5WlhSMWNtNGdkRzh1WTI5dVkyRjBLR0Z5SUh4OElFRnljbUY1TG5CeWIzUnZkSGx3WlM1emJHbGpaUzVqWVd4c0tHWnliMjBwS1R0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZZWGRoYVhRb2Rpa2dlMXh5WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE1nYVc1emRHRnVZMlZ2WmlCZlgyRjNZV2wwSUQ4Z0tIUm9hWE11ZGlBOUlIWXNJSFJvYVhNcElEb2dibVYzSUY5ZllYZGhhWFFvZGlrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMkZ6ZVc1alIyVnVaWEpoZEc5eUtIUm9hWE5CY21jc0lGOWhjbWQxYldWdWRITXNJR2RsYm1WeVlYUnZjaWtnZTF4eVhHNGdJQ0FnYVdZZ0tDRlRlVzFpYjJ3dVlYTjVibU5KZEdWeVlYUnZjaWtnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lsTjViV0p2YkM1aGMzbHVZMGwwWlhKaGRHOXlJR2x6SUc1dmRDQmtaV1pwYm1Wa0xsd2lLVHRjY2x4dUlDQWdJSFpoY2lCbklEMGdaMlZ1WlhKaGRHOXlMbUZ3Y0d4NUtIUm9hWE5CY21jc0lGOWhjbWQxYldWdWRITWdmSHdnVzEwcExDQnBMQ0J4SUQwZ1cxMDdYSEpjYmlBZ0lDQnlaWFIxY200Z2FTQTlJSHQ5TENCMlpYSmlLRndpYm1WNGRGd2lLU3dnZG1WeVlpaGNJblJvY205M1hDSXBMQ0IyWlhKaUtGd2ljbVYwZFhKdVhDSXBMQ0JwVzFONWJXSnZiQzVoYzNsdVkwbDBaWEpoZEc5eVhTQTlJR1oxYm1OMGFXOXVJQ2dwSUhzZ2NtVjBkWEp1SUhSb2FYTTdJSDBzSUdrN1hISmNiaUFnSUNCbWRXNWpkR2x2YmlCMlpYSmlLRzRwSUhzZ2FXWWdLR2RiYmwwcElHbGJibDBnUFNCbWRXNWpkR2x2YmlBb2Rpa2dleUJ5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvWm5WdVkzUnBiMjRnS0dFc0lHSXBJSHNnY1M1d2RYTm9LRnR1TENCMkxDQmhMQ0JpWFNrZ1BpQXhJSHg4SUhKbGMzVnRaU2h1TENCMktUc2dmU2s3SUgwN0lIMWNjbHh1SUNBZ0lHWjFibU4wYVc5dUlISmxjM1Z0WlNodUxDQjJLU0I3SUhSeWVTQjdJSE4wWlhBb1oxdHVYU2gyS1NrN0lIMGdZMkYwWTJnZ0tHVXBJSHNnYzJWMGRHeGxLSEZiTUYxYk0xMHNJR1VwT3lCOUlIMWNjbHh1SUNBZ0lHWjFibU4wYVc5dUlITjBaWEFvY2lrZ2V5QnlMblpoYkhWbElHbHVjM1JoYm1ObGIyWWdYMTloZDJGcGRDQS9JRkJ5YjIxcGMyVXVjbVZ6YjJ4MlpTaHlMblpoYkhWbExuWXBMblJvWlc0b1puVnNabWxzYkN3Z2NtVnFaV04wS1NBNklITmxkSFJzWlNoeFd6QmRXekpkTENCeUtUc2dmVnh5WEc0Z0lDQWdablZ1WTNScGIyNGdablZzWm1sc2JDaDJZV3gxWlNrZ2V5QnlaWE4xYldVb1hDSnVaWGgwWENJc0lIWmhiSFZsS1RzZ2ZWeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z2NtVnFaV04wS0haaGJIVmxLU0I3SUhKbGMzVnRaU2hjSW5Sb2NtOTNYQ0lzSUhaaGJIVmxLVHNnZlZ4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnYzJWMGRHeGxLR1lzSUhZcElIc2dhV1lnS0dZb2Rpa3NJSEV1YzJocFpuUW9LU3dnY1M1c1pXNW5kR2dwSUhKbGMzVnRaU2h4V3pCZFd6QmRMQ0J4V3pCZFd6RmRLVHNnZlZ4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWhjM2x1WTBSbGJHVm5ZWFJ2Y2lodktTQjdYSEpjYmlBZ0lDQjJZWElnYVN3Z2NEdGNjbHh1SUNBZ0lISmxkSFZ5YmlCcElEMGdlMzBzSUhabGNtSW9YQ0p1WlhoMFhDSXBMQ0IyWlhKaUtGd2lkR2h5YjNkY0lpd2dablZ1WTNScGIyNGdLR1VwSUhzZ2RHaHliM2NnWlRzZ2ZTa3NJSFpsY21Jb1hDSnlaWFIxY201Y0lpa3NJR2xiVTNsdFltOXNMbWwwWlhKaGRHOXlYU0E5SUdaMWJtTjBhVzl1SUNncElIc2djbVYwZFhKdUlIUm9hWE03SUgwc0lHazdYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQjJaWEppS0c0c0lHWXBJSHNnYVZ0dVhTQTlJRzliYmwwZ1B5Qm1kVzVqZEdsdmJpQW9kaWtnZXlCeVpYUjFjbTRnS0hBZ1BTQWhjQ2tnUHlCN0lIWmhiSFZsT2lCZlgyRjNZV2wwS0c5YmJsMG9kaWtwTENCa2IyNWxPaUJtWVd4elpTQjlJRG9nWmlBL0lHWW9kaWtnT2lCMk95QjlJRG9nWmpzZ2ZWeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTloYzNsdVkxWmhiSFZsY3lodktTQjdYSEpjYmlBZ0lDQnBaaUFvSVZONWJXSnZiQzVoYzNsdVkwbDBaWEpoZEc5eUtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpVTNsdFltOXNMbUZ6ZVc1alNYUmxjbUYwYjNJZ2FYTWdibTkwSUdSbFptbHVaV1F1WENJcE8xeHlYRzRnSUNBZ2RtRnlJRzBnUFNCdlcxTjViV0p2YkM1aGMzbHVZMGwwWlhKaGRHOXlYU3dnYVR0Y2NseHVJQ0FnSUhKbGRIVnliaUJ0SUQ4Z2JTNWpZV3hzS0c4cElEb2dLRzhnUFNCMGVYQmxiMllnWDE5MllXeDFaWE1nUFQwOUlGd2lablZ1WTNScGIyNWNJaUEvSUY5ZmRtRnNkV1Z6S0c4cElEb2diMXRUZVcxaWIyd3VhWFJsY21GMGIzSmRLQ2tzSUdrZ1BTQjdmU3dnZG1WeVlpaGNJbTVsZUhSY0lpa3NJSFpsY21Jb1hDSjBhSEp2ZDF3aUtTd2dkbVZ5WWloY0luSmxkSFZ5Ymx3aUtTd2dhVnRUZVcxaWIyd3VZWE41Ym1OSmRHVnlZWFJ2Y2wwZ1BTQm1kVzVqZEdsdmJpQW9LU0I3SUhKbGRIVnliaUIwYUdsek95QjlMQ0JwS1R0Y2NseHVJQ0FnSUdaMWJtTjBhVzl1SUhabGNtSW9iaWtnZXlCcFcyNWRJRDBnYjF0dVhTQW1KaUJtZFc1amRHbHZiaUFvZGlrZ2V5QnlaWFIxY200Z2JtVjNJRkJ5YjIxcGMyVW9ablZ1WTNScGIyNGdLSEpsYzI5c2RtVXNJSEpsYW1WamRDa2dleUIySUQwZ2IxdHVYU2gyS1N3Z2MyVjBkR3hsS0hKbGMyOXNkbVVzSUhKbGFtVmpkQ3dnZGk1a2IyNWxMQ0IyTG5aaGJIVmxLVHNnZlNrN0lIMDdJSDFjY2x4dUlDQWdJR1oxYm1OMGFXOXVJSE5sZEhSc1pTaHlaWE52YkhabExDQnlaV3BsWTNRc0lHUXNJSFlwSUhzZ1VISnZiV2x6WlM1eVpYTnZiSFpsS0hZcExuUm9aVzRvWm5WdVkzUnBiMjRvZGlrZ2V5QnlaWE52YkhabEtIc2dkbUZzZFdVNklIWXNJR1J2Ym1VNklHUWdmU2s3SUgwc0lISmxhbVZqZENrN0lIMWNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmYldGclpWUmxiWEJzWVhSbFQySnFaV04wS0dOdmIydGxaQ3dnY21GM0tTQjdYSEpjYmlBZ0lDQnBaaUFvVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtTQjdJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNoamIyOXJaV1FzSUZ3aWNtRjNYQ0lzSUhzZ2RtRnNkV1U2SUhKaGR5QjlLVHNnZlNCbGJITmxJSHNnWTI5dmEyVmtMbkpoZHlBOUlISmhkenNnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJR052YjJ0bFpEdGNjbHh1ZlR0Y2NseHVYSEpjYm5aaGNpQmZYM05sZEUxdlpIVnNaVVJsWm1GMWJIUWdQU0JQWW1wbFkzUXVZM0psWVhSbElEOGdLR1oxYm1OMGFXOXVLRzhzSUhZcElIdGNjbHh1SUNBZ0lFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2h2TENCY0ltUmxabUYxYkhSY0lpd2dleUJsYm5WdFpYSmhZbXhsT2lCMGNuVmxMQ0IyWVd4MVpUb2dkaUI5S1R0Y2NseHVmU2tnT2lCbWRXNWpkR2x2YmlodkxDQjJLU0I3WEhKY2JpQWdJQ0J2VzF3aVpHVm1ZWFZzZEZ3aVhTQTlJSFk3WEhKY2JuMDdYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOXBiWEJ2Y25SVGRHRnlLRzF2WkNrZ2UxeHlYRzRnSUNBZ2FXWWdLRzF2WkNBbUppQnRiMlF1WDE5bGMwMXZaSFZzWlNrZ2NtVjBkWEp1SUcxdlpEdGNjbHh1SUNBZ0lIWmhjaUJ5WlhOMWJIUWdQU0I3ZlR0Y2NseHVJQ0FnSUdsbUlDaHRiMlFnSVQwZ2JuVnNiQ2tnWm05eUlDaDJZWElnYXlCcGJpQnRiMlFwSUdsbUlDaHJJQ0U5UFNCY0ltUmxabUYxYkhSY0lpQW1KaUJQWW1wbFkzUXVjSEp2ZEc5MGVYQmxMbWhoYzA5M2JsQnliM0JsY25SNUxtTmhiR3dvYlc5a0xDQnJLU2tnWDE5amNtVmhkR1ZDYVc1a2FXNW5LSEpsYzNWc2RDd2diVzlrTENCcktUdGNjbHh1SUNBZ0lGOWZjMlYwVFc5a2RXeGxSR1ZtWVhWc2RDaHlaWE4xYkhRc0lHMXZaQ2s3WEhKY2JpQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTlwYlhCdmNuUkVaV1poZFd4MEtHMXZaQ2tnZTF4eVhHNGdJQ0FnY21WMGRYSnVJQ2h0YjJRZ0ppWWdiVzlrTGw5ZlpYTk5iMlIxYkdVcElEOGdiVzlrSURvZ2V5QmtaV1poZFd4ME9pQnRiMlFnZlR0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZZMnhoYzNOUWNtbDJZWFJsUm1sbGJHUkhaWFFvY21WalpXbDJaWElzSUhOMFlYUmxMQ0JyYVc1a0xDQm1LU0I3WEhKY2JpQWdJQ0JwWmlBb2EybHVaQ0E5UFQwZ1hDSmhYQ0lnSmlZZ0lXWXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKUWNtbDJZWFJsSUdGalkyVnpjMjl5SUhkaGN5QmtaV1pwYm1Wa0lIZHBkR2h2ZFhRZ1lTQm5aWFIwWlhKY0lpazdYSEpjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JSE4wWVhSbElEMDlQU0JjSW1aMWJtTjBhVzl1WENJZ1B5QnlaV05sYVhabGNpQWhQVDBnYzNSaGRHVWdmSHdnSVdZZ09pQWhjM1JoZEdVdWFHRnpLSEpsWTJWcGRtVnlLU2tnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lrTmhibTV2ZENCeVpXRmtJSEJ5YVhaaGRHVWdiV1Z0WW1WeUlHWnliMjBnWVc0Z2IySnFaV04wSUhkb2IzTmxJR05zWVhOeklHUnBaQ0J1YjNRZ1pHVmpiR0Z5WlNCcGRGd2lLVHRjY2x4dUlDQWdJSEpsZEhWeWJpQnJhVzVrSUQwOVBTQmNJbTFjSWlBL0lHWWdPaUJyYVc1a0lEMDlQU0JjSW1GY0lpQS9JR1l1WTJGc2JDaHlaV05sYVhabGNpa2dPaUJtSUQ4Z1ppNTJZV3gxWlNBNklITjBZWFJsTG1kbGRDaHlaV05sYVhabGNpazdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJOc1lYTnpVSEpwZG1GMFpVWnBaV3hrVTJWMEtISmxZMlZwZG1WeUxDQnpkR0YwWlN3Z2RtRnNkV1VzSUd0cGJtUXNJR1lwSUh0Y2NseHVJQ0FnSUdsbUlDaHJhVzVrSUQwOVBTQmNJbTFjSWlrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJbEJ5YVhaaGRHVWdiV1YwYUc5a0lHbHpJRzV2ZENCM2NtbDBZV0pzWlZ3aUtUdGNjbHh1SUNBZ0lHbG1JQ2hyYVc1a0lEMDlQU0JjSW1GY0lpQW1KaUFoWmlrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJbEJ5YVhaaGRHVWdZV05qWlhOemIzSWdkMkZ6SUdSbFptbHVaV1FnZDJsMGFHOTFkQ0JoSUhObGRIUmxjbHdpS1R0Y2NseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2MzUmhkR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaUEvSUhKbFkyVnBkbVZ5SUNFOVBTQnpkR0YwWlNCOGZDQWhaaUE2SUNGemRHRjBaUzVvWVhNb2NtVmpaV2wyWlhJcEtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpUTJGdWJtOTBJSGR5YVhSbElIQnlhWFpoZEdVZ2JXVnRZbVZ5SUhSdklHRnVJRzlpYW1WamRDQjNhRzl6WlNCamJHRnpjeUJrYVdRZ2JtOTBJR1JsWTJ4aGNtVWdhWFJjSWlrN1hISmNiaUFnSUNCeVpYUjFjbTRnS0d0cGJtUWdQVDA5SUZ3aVlWd2lJRDhnWmk1allXeHNLSEpsWTJWcGRtVnlMQ0IyWVd4MVpTa2dPaUJtSUQ4Z1ppNTJZV3gxWlNBOUlIWmhiSFZsSURvZ2MzUmhkR1V1YzJWMEtISmxZMlZwZG1WeUxDQjJZV3gxWlNrcExDQjJZV3gxWlR0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZZMnhoYzNOUWNtbDJZWFJsUm1sbGJHUkpiaWh6ZEdGMFpTd2djbVZqWldsMlpYSXBJSHRjY2x4dUlDQWdJR2xtSUNoeVpXTmxhWFpsY2lBOVBUMGdiblZzYkNCOGZDQW9kSGx3Wlc5bUlISmxZMlZwZG1WeUlDRTlQU0JjSW05aWFtVmpkRndpSUNZbUlIUjVjR1Z2WmlCeVpXTmxhWFpsY2lBaFBUMGdYQ0ptZFc1amRHbHZibHdpS1NrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJa05oYm01dmRDQjFjMlVnSjJsdUp5QnZjR1Z5WVhSdmNpQnZiaUJ1YjI0dGIySnFaV04wWENJcE8xeHlYRzRnSUNBZ2NtVjBkWEp1SUhSNWNHVnZaaUJ6ZEdGMFpTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlEOGdjbVZqWldsMlpYSWdQVDA5SUhOMFlYUmxJRG9nYzNSaGRHVXVhR0Z6S0hKbFkyVnBkbVZ5S1R0Y2NseHVmVnh5WEc0aUxDSnBiWEJ2Y25RZ2RIbHdaU0FxSUdGeklGUklVa1ZGSUdaeWIyMGdKM1JvY21WbEp6dGNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSFJ5WVhabGNuTmxRVzVqWlhOMGIzSnpSbkp2YlZKdmIzUW9iMkpxWldOME9pQlVTRkpGUlM1UFltcGxZM1F6UkN3Z1kyRnNiR0poWTJzNklDaHZZbXBsWTNRNklGUklVa1ZGTGs5aWFtVmpkRE5FS1NBOVBpQjJiMmxrS1RvZ2RtOXBaQ0I3WEc0Z0lHTnZibk4wSUdGdVkyVnpkRzl5Y3pvZ1ZFaFNSVVV1VDJKcVpXTjBNMFJiWFNBOUlGdGRPMXh1WEc0Z0lHeGxkQ0JvWldGa09pQlVTRkpGUlM1UFltcGxZM1F6UkNCOElHNTFiR3dnUFNCdlltcGxZM1E3WEc0Z0lIZG9hV3hsSUNob1pXRmtJQ0U5UFNCdWRXeHNLU0I3WEc0Z0lDQWdZVzVqWlhOMGIzSnpMblZ1YzJocFpuUW9hR1ZoWkNrN1hHNGdJQ0FnYUdWaFpDQTlJR2hsWVdRdWNHRnlaVzUwTzF4dUlDQjlYRzVjYmlBZ1lXNWpaWE4wYjNKekxtWnZja1ZoWTJnb0tHRnVZMlZ6ZEc5eUtTQTlQaUI3WEc0Z0lDQWdZMkZzYkdKaFkyc29ZVzVqWlhOMGIzSXBPMXh1SUNCOUtUdGNibjFjYmlJc0lpOHFLbHh1SUNvZ1ZISmhkbVZ5YzJVZ1kyaHBiR1J5Wlc0Z2IyWWdaMmwyWlc0Z2IySnFaV04wSUdGdVpDQmxlR1ZqZFhSbElHZHBkbVZ1SUdOaGJHeGlZV05yTGx4dUlDb2dWR2hsSUdkcGRtVnVJRzlpYW1WamRDQnBkSE5sYkdZZ2QyOXVkQ0JpWlNCbmFYWmxiaUIwYnlCMGFHVWdZMkZzYkdKaFkyc3VYRzRnS2lCSlppQjBhR1VnY21WMGRYSnVJSFpoYkhWbElHOW1JSFJvWlNCallXeHNZbUZqYXlCcGN5QmdkSEoxWldBc0lHbDBJSGRwYkd3Z2FHRnNkQ0IwYUdVZ2RISmhkbVZ5YzJGc0lHOW1JR2wwY3lCamFHbHNaSEpsYmk1Y2JpQXFJRUJ3WVhKaGJTQnZZbXBsWTNRZ1FTQnliMjkwSUc5aWFtVmpkRnh1SUNvZ1FIQmhjbUZ0SUdOaGJHeGlZV05ySUVFZ1kyRnNiR0poWTJzZ1puVnVZM1JwYjI0Z1kyRnNiR1ZrSUdadmNpQmxZV05vSUdOb2FXeGtjbVZ1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjBjbUYyWlhKelpVTm9hV3hrY21WdVZXNTBhV3hEYjI1a2FYUnBiMjVOWlhRb1hHNGdJRzlpYW1WamREb2dWRWhTUlVVdVQySnFaV04wTTBRc1hHNGdJR05oYkd4aVlXTnJPaUFvYjJKcVpXTjBPaUJVU0ZKRlJTNVBZbXBsWTNRelJDa2dQVDRnWW05dmJHVmhiaXhjYmlrNklIWnZhV1FnZTF4dUlDQnZZbXBsWTNRdVkyaHBiR1J5Wlc0dVptOXlSV0ZqYUNnb1kyaHBiR1FwSUQwK0lIdGNiaUFnSUNCamIyNXpkQ0J5WlhOMWJIUWdQU0JqWVd4c1ltRmpheWhqYUdsc1pDazdYRzRnSUNBZ2FXWWdLQ0Z5WlhOMWJIUXBJSHRjYmlBZ0lDQWdJSFJ5WVhabGNuTmxRMmhwYkdSeVpXNVZiblJwYkVOdmJtUnBkR2x2YmsxbGRDaGphR2xzWkN3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUgxY2JpQWdmU2s3WEc1OVhHNGlMQ0pwYlhCdmNuUWdkSGx3WlNBcUlHRnpJRlJJVWtWRklHWnliMjBnSjNSb2NtVmxKenRjYm1sdGNHOXlkQ0IwZVhCbElIc2dWbEpOVTNCeWFXNW5RbTl1WlVwdmFXNTBJSDBnWm5KdmJTQW5MaTlXVWsxVGNISnBibWRDYjI1bFNtOXBiblFuTzF4dWFXMXdiM0owSUhzZ2RISmhkbVZ5YzJWQmJtTmxjM1J2Y25OR2NtOXRVbTl2ZENCOUlHWnliMjBnSnk0dmRYUnBiSE12ZEhKaGRtVnljMlZCYm1ObGMzUnZjbk5HY205dFVtOXZkQ2M3WEc1cGJYQnZjblFnZEhsd1pTQjdJRlpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2lCOUlHWnliMjBnSnk0dlZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlKenRjYm1sdGNHOXlkQ0IwZVhCbElIc2dWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5UjNKdmRYQWdmU0JtY205dElDY3VMMVpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2tkeWIzVndKenRjYm1sdGNHOXlkQ0I3SUhSeVlYWmxjbk5sUTJocGJHUnlaVzVWYm5ScGJFTnZibVJwZEdsdmJrMWxkQ0I5SUdaeWIyMGdKeTR2ZFhScGJITXZkSEpoZG1WeWMyVkRhR2xzWkhKbGJsVnVkR2xzUTI5dVpHbDBhVzl1VFdWMEp6dGNibHh1Wlhod2IzSjBJR05zWVhOeklGWlNUVk53Y21sdVowSnZibVZOWVc1aFoyVnlJSHRjYmlBZ2NISnBkbUYwWlNCZmFtOXBiblJ6SUQwZ2JtVjNJRk5sZER4V1VrMVRjSEpwYm1kQ2IyNWxTbTlwYm5RK0tDazdYRzRnSUhCMVlteHBZeUJuWlhRZ2FtOXBiblJ6S0NrNklGTmxkRHhXVWsxVGNISnBibWRDYjI1bFNtOXBiblErSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmFtOXBiblJ6TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWEJ5WldOaGRHVmtJRlZ6WlNCN1FHeHBibXNnYW05cGJuUnpmU0JwYm5OMFpXRmtMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZENCemNISnBibWRDYjI1bGN5Z3BPaUJUWlhROFZsSk5VM0J5YVc1blFtOXVaVXB2YVc1MFBpQjdYRzRnSUNBZ1kyOXVjMjlzWlM1M1lYSnVLQ2RXVWsxVGNISnBibWRDYjI1bFRXRnVZV2RsY2pvZ2MzQnlhVzVuUW05dVpYTWdhWE1nWkdWd2NtVmpZWFJsWkM0Z2RYTmxJR3B2YVc1MGN5QnBibk4wWldGa0xpY3BPMXh1WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDJwdmFXNTBjenRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhRZ1kyOXNiR2xrWlhKSGNtOTFjSE1vS1RvZ1ZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlSM0p2ZFhCYlhTQjdYRzRnSUNBZ1kyOXVjM1FnYzJWMElEMGdibVYzSUZObGREeFdVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWEpIY205MWNENG9LVHRjYmlBZ0lDQjBhR2x6TGw5cWIybHVkSE11Wm05eVJXRmphQ2dvYzNCeWFXNW5RbTl1WlNrZ1BUNGdlMXh1SUNBZ0lDQWdjM0J5YVc1blFtOXVaUzVqYjJ4c2FXUmxja2R5YjNWd2N5NW1iM0pGWVdOb0tDaGpiMnhzYVdSbGNrZHliM1Z3S1NBOVBpQjdYRzRnSUNBZ0lDQWdJSE5sZEM1aFpHUW9ZMjlzYkdsa1pYSkhjbTkxY0NrN1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOUtUdGNiaUFnSUNCeVpYUjFjbTRnUVhKeVlYa3Vabkp2YlNoelpYUXBPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR2RsZENCamIyeHNhV1JsY25Nb0tUb2dWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5VzEwZ2UxeHVJQ0FnSUdOdmJuTjBJSE5sZENBOUlHNWxkeUJUWlhROFZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlQaWdwTzF4dUlDQWdJSFJvYVhNdVkyOXNiR2xrWlhKSGNtOTFjSE11Wm05eVJXRmphQ2dvWTI5c2JHbGtaWEpIY205MWNDa2dQVDRnZTF4dUlDQWdJQ0FnWTI5c2JHbGtaWEpIY205MWNDNWpiMnhzYVdSbGNuTXVabTl5UldGamFDZ29ZMjlzYkdsa1pYSXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2MyVjBMbUZrWkNoamIyeHNhV1JsY2lrN1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOUtUdGNiaUFnSUNCeVpYUjFjbTRnUVhKeVlYa3Vabkp2YlNoelpYUXBPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JmYjJKcVpXTjBVM0J5YVc1blFtOXVaWE5OWVhBZ1BTQnVaWGNnVFdGd1BGUklVa1ZGTGs5aWFtVmpkRE5FTENCVFpYUThWbEpOVTNCeWFXNW5RbTl1WlVwdmFXNTBQajRvS1R0Y2JseHVJQ0J3ZFdKc2FXTWdZV1JrU205cGJuUW9hbTlwYm5RNklGWlNUVk53Y21sdVowSnZibVZLYjJsdWRDazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVYMnB2YVc1MGN5NWhaR1FvYW05cGJuUXBPMXh1WEc0Z0lDQWdiR1YwSUc5aWFtVmpkRk5sZENBOUlIUm9hWE11WDI5aWFtVmpkRk53Y21sdVowSnZibVZ6VFdGd0xtZGxkQ2hxYjJsdWRDNWliMjVsS1R0Y2JpQWdJQ0JwWmlBb2IySnFaV04wVTJWMElEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lHOWlhbVZqZEZObGRDQTlJRzVsZHlCVFpYUThWbEpOVTNCeWFXNW5RbTl1WlVwdmFXNTBQaWdwTzF4dUlDQWdJQ0FnZEdocGN5NWZiMkpxWldOMFUzQnlhVzVuUW05dVpYTk5ZWEF1YzJWMEtHcHZhVzUwTG1KdmJtVXNJRzlpYW1WamRGTmxkQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHOWlhbVZqZEZObGRDNWhaR1FvYW05cGJuUXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYQnlaV05oZEdWa0lGVnpaU0I3UUd4cGJtc2dZV1JrU205cGJuUjlJR2x1YzNSbFlXUXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdZV1JrVTNCeWFXNW5RbTl1WlNocWIybHVkRG9nVmxKTlUzQnlhVzVuUW05dVpVcHZhVzUwS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdZMjl1YzI5c1pTNTNZWEp1S0NkV1VrMVRjSEpwYm1kQ2IyNWxUV0Z1WVdkbGNqb2dZV1JrVTNCeWFXNW5RbTl1WlNncElHbHpJR1JsY0hKbFkyRjBaV1F1SUhWelpTQmhaR1JLYjJsdWRDZ3BJR2x1YzNSbFlXUXVKeWs3WEc1Y2JpQWdJQ0IwYUdsekxtRmtaRXB2YVc1MEtHcHZhVzUwS1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCa1pXeGxkR1ZLYjJsdWRDaHFiMmx1ZERvZ1ZsSk5VM0J5YVc1blFtOXVaVXB2YVc1MEtUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NWZhbTlwYm5SekxtUmxiR1YwWlNocWIybHVkQ2s3WEc1Y2JpQWdJQ0JqYjI1emRDQnZZbXBsWTNSVFpYUWdQU0IwYUdsekxsOXZZbXBsWTNSVGNISnBibWRDYjI1bGMwMWhjQzVuWlhRb2FtOXBiblF1WW05dVpTa2hPMXh1SUNBZ0lHOWlhbVZqZEZObGRDNWtaV3hsZEdVb2FtOXBiblFwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWEJ5WldOaGRHVmtJRlZ6WlNCN1FHeHBibXNnWkdWc1pYUmxTbTlwYm5SOUlHbHVjM1JsWVdRdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1pHVnNaWFJsVTNCeWFXNW5RbTl1WlNocWIybHVkRG9nVmxKTlUzQnlhVzVuUW05dVpVcHZhVzUwS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdZMjl1YzI5c1pTNTNZWEp1S0NkV1VrMVRjSEpwYm1kQ2IyNWxUV0Z1WVdkbGNqb2daR1ZzWlhSbFUzQnlhVzVuUW05dVpTZ3BJR2x6SUdSbGNISmxZMkYwWldRdUlIVnpaU0JrWld4bGRHVktiMmx1ZENncElHbHVjM1JsWVdRdUp5azdYRzVjYmlBZ0lDQjBhR2x6TG1SbGJHVjBaVXB2YVc1MEtHcHZhVzUwS1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCelpYUkpibWwwVTNSaGRHVW9LVG9nZG05cFpDQjdYRzRnSUNBZ1kyOXVjM1FnYzNCeWFXNW5RbTl1WlhOVWNtbGxaQ0E5SUc1bGR5QlRaWFE4VmxKTlUzQnlhVzVuUW05dVpVcHZhVzUwUGlncE8xeHVJQ0FnSUdOdmJuTjBJSE53Y21sdVowSnZibVZ6Ukc5dVpTQTlJRzVsZHlCVFpYUThWbEpOVTNCeWFXNW5RbTl1WlVwdmFXNTBQaWdwTzF4dUlDQWdJR052Ym5OMElHOWlhbVZqZEZWd1pHRjBaV1FnUFNCdVpYY2dVMlYwUEZSSVVrVkZMazlpYW1WamRETkVQaWdwTzF4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCemNISnBibWRDYjI1bElHOW1JSFJvYVhNdVgycHZhVzUwY3lrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmY0hKdlkyVnpjMU53Y21sdVowSnZibVVvYzNCeWFXNW5RbTl1WlN3Z2MzQnlhVzVuUW05dVpYTlVjbWxsWkN3Z2MzQnlhVzVuUW05dVpYTkViMjVsTENCdlltcGxZM1JWY0dSaGRHVmtMQ0FvYzNCeWFXNW5RbTl1WlNrZ1BUNWNiaUFnSUNBZ0lDQWdjM0J5YVc1blFtOXVaUzV6WlhSSmJtbDBVM1JoZEdVb0tTeGNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklISmxjMlYwS0NrNklIWnZhV1FnZTF4dUlDQWdJR052Ym5OMElITndjbWx1WjBKdmJtVnpWSEpwWldRZ1BTQnVaWGNnVTJWMFBGWlNUVk53Y21sdVowSnZibVZLYjJsdWRENG9LVHRjYmlBZ0lDQmpiMjV6ZENCemNISnBibWRDYjI1bGMwUnZibVVnUFNCdVpYY2dVMlYwUEZaU1RWTndjbWx1WjBKdmJtVktiMmx1ZEQ0b0tUdGNiaUFnSUNCamIyNXpkQ0J2WW1wbFkzUlZjR1JoZEdWa0lEMGdibVYzSUZObGREeFVTRkpGUlM1UFltcGxZM1F6UkQ0b0tUdGNibHh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdjM0J5YVc1blFtOXVaU0J2WmlCMGFHbHpMbDlxYjJsdWRITXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVgzQnliMk5sYzNOVGNISnBibWRDYjI1bEtITndjbWx1WjBKdmJtVXNJSE53Y21sdVowSnZibVZ6VkhKcFpXUXNJSE53Y21sdVowSnZibVZ6Ukc5dVpTd2diMkpxWldOMFZYQmtZWFJsWkN3Z0tITndjbWx1WjBKdmJtVXBJRDArWEc0Z0lDQWdJQ0FnSUhOd2NtbHVaMEp2Ym1VdWNtVnpaWFFvS1N4Y2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUhWd1pHRjBaU2hrWld4MFlUb2diblZ0WW1WeUtUb2dkbTlwWkNCN1hHNGdJQ0FnWTI5dWMzUWdjM0J5YVc1blFtOXVaWE5VY21sbFpDQTlJRzVsZHlCVFpYUThWbEpOVTNCeWFXNW5RbTl1WlVwdmFXNTBQaWdwTzF4dUlDQWdJR052Ym5OMElITndjbWx1WjBKdmJtVnpSRzl1WlNBOUlHNWxkeUJUWlhROFZsSk5VM0J5YVc1blFtOXVaVXB2YVc1MFBpZ3BPMXh1SUNBZ0lHTnZibk4wSUc5aWFtVmpkRlZ3WkdGMFpXUWdQU0J1WlhjZ1UyVjBQRlJJVWtWRkxrOWlhbVZqZERORVBpZ3BPMXh1WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0J6Y0hKcGJtZENiMjVsSUc5bUlIUm9hWE11WDJwdmFXNTBjeWtnZTF4dUlDQWdJQ0FnTHk4Z2RYQmtZWFJsSUhSb1pTQnpjSEpwYm1kaWIyNWxYRzRnSUNBZ0lDQjBhR2x6TGw5d2NtOWpaWE56VTNCeWFXNW5RbTl1WlNoemNISnBibWRDYjI1bExDQnpjSEpwYm1kQ2IyNWxjMVJ5YVdWa0xDQnpjSEpwYm1kQ2IyNWxjMFJ2Ym1Vc0lHOWlhbVZqZEZWd1pHRjBaV1FzSUNoemNISnBibWRDYjI1bEtTQTlQbHh1SUNBZ0lDQWdJQ0J6Y0hKcGJtZENiMjVsTG5Wd1pHRjBaU2hrWld4MFlTa3NYRzRnSUNBZ0lDQXBPMXh1WEc0Z0lDQWdJQ0F2THlCMWNHUmhkR1VnWTJocGJHUnlaVzRnZDI5eWJHUWdiV0YwY21salpYTmNiaUFnSUNBZ0lDOHZJR2wwSUdseklISmxjWFZwY21Wa0lIZG9aVzRnZEdobElITndjbWx1WnlCaWIyNWxJR05vWVdsdUlHbHpJSE53WVhKelpWeHVJQ0FnSUNBZ2RISmhkbVZ5YzJWRGFHbHNaSEpsYmxWdWRHbHNRMjl1WkdsMGFXOXVUV1YwS0hOd2NtbHVaMEp2Ym1VdVltOXVaU3dnS0c5aWFtVmpkQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQXZMeUJwWmlCMGFHVWdiMkpxWldOMElHaGhjeUJoZEhSaFkyaGxaQ0J6Y0hKcGJtZGliMjVsTENCb1lXeDBJSFJvWlNCMGNtRjJaWEp6WVd4Y2JpQWdJQ0FnSUNBZ2FXWWdLQ2gwYUdsekxsOXZZbXBsWTNSVGNISnBibWRDYjI1bGMwMWhjQzVuWlhRb2IySnFaV04wS1Q4dWMybDZaU0EvUHlBd0tTQStJREFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDOHZJRzkwYUdWeWQybHpaU0IxY0dSaGRHVWdhWFJ6SUhkdmNteGtJRzFoZEhKcGVGeHVJQ0FnSUNBZ0lDQnZZbXBsWTNRdWRYQmtZWFJsVjI5eWJHUk5ZWFJ5YVhnb1ptRnNjMlVzSUdaaGJITmxLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlZ3WkdGMFpTQmhJSE53Y21sdVp5QmliMjVsTGx4dUlDQWdLaUJKWmlCMGFHVnlaU0JoY21VZ2IzUm9aWElnYzNCeWFXNW5JR0p2Ym1VZ2RHaGhkQ0JoY21VZ1pHVndaVzVrWVc1MExDQnBkQ0IzYVd4c0lIUnllU0IwYnlCMWNHUmhkR1VnZEdobGJTQnlaV04xY25OcGRtVnNlUzVjYmlBZ0lDb2dTWFFnZFhCa1lYUmxjeUJ0WVhSeWFYaFhiM0pzWkNCdlppQmhiR3dnWVc1alpYTjBiM0p6SUdGdVpDQnRlWE5sYkdZdVhHNGdJQ0FxSUVsMElHMXBaMmgwSUhSb2NtOTNJR0Z1SUdWeWNtOXlJR2xtSUhSb1pYSmxJR0Z5WlNCamFYSmpkV3hoY2lCa1pYQmxibVJsYm1OcFpYTXVYRzRnSUNBcVhHNGdJQ0FxSUVsdWRHVnVaR1ZrSUhSdklHSmxJSFZ6WldRZ2FXNGdlMEJzYVc1cklIVndaR0YwWlgwZ1lXNWtJSHRBYkdsdWF5QmZjSEp2WTJWemMxTndjbWx1WjBKdmJtVjlJR2wwYzJWc1ppQnlaV04xY25OcGRtVnNlUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUhOd2NtbHVaMEp2Ym1VZ1FTQnpjSEpwYm1kQ2IyNWxJSGx2ZFNCM1lXNTBJSFJ2SUhWd1pHRjBaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2MzQnlhVzVuUW05dVpYTlVjbWxsWkNCVFpYUWdiMllnYzNCeWFXNW5RbTl1WlhNZ2RHaGhkQ0JoY21VZ1lXeHlaV0ZrZVNCMGNtbGxaQ0IwYnlCaVpTQjFjR1JoZEdWa1hHNGdJQ0FxSUVCd1lYSmhiU0J6Y0hKcGJtZENiMjVsYzBSdmJtVWdVMlYwSUc5bUlITndjbWx1WjBKdmJtVnpJSFJvWVhRZ1lYSmxJR0ZzY21WaFpIa2dkWEFnZEc4Z1pHRjBaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2IySnFaV04wVlhCa1lYUmxaQ0JUWlhRZ2IyWWdiMkpxWldOME0wUWdkMmh2YzJVZ2JXRjBjbWw0VjI5eWJHUWdhWE1nZFhCa1lYUmxaRnh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0JmY0hKdlkyVnpjMU53Y21sdVowSnZibVVvWEc0Z0lDQWdjM0J5YVc1blFtOXVaVG9nVmxKTlUzQnlhVzVuUW05dVpVcHZhVzUwTEZ4dUlDQWdJSE53Y21sdVowSnZibVZ6VkhKcFpXUTZJRk5sZER4V1VrMVRjSEpwYm1kQ2IyNWxTbTlwYm5RK0xGeHVJQ0FnSUhOd2NtbHVaMEp2Ym1WelJHOXVaVG9nVTJWMFBGWlNUVk53Y21sdVowSnZibVZLYjJsdWRENHNYRzRnSUNBZ2IySnFaV04wVlhCa1lYUmxaRG9nVTJWMFBGUklVa1ZGTGs5aWFtVmpkRE5FUGl4Y2JpQWdJQ0JqWVd4c1ltRmphem9nS0hOd2NtbHVaMEp2Ym1VNklGWlNUVk53Y21sdVowSnZibVZLYjJsdWRDa2dQVDRnZG05cFpDeGNiaUFnS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdhV1lnS0hOd2NtbHVaMEp2Ym1WelJHOXVaUzVvWVhNb2MzQnlhVzVuUW05dVpTa3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9jM0J5YVc1blFtOXVaWE5VY21sbFpDNW9ZWE1vYzNCeWFXNW5RbTl1WlNrcElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblZsSk5VM0J5YVc1blFtOXVaVTFoYm1GblpYSTZJRU5wY21OMWJHRnlJR1JsY0dWdVpHVnVZM2tnWkdWMFpXTjBaV1FnZDJocGJHVWdkWEJrWVhScGJtY2djM0J5YVc1blltOXVaWE1uS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjM0J5YVc1blFtOXVaWE5VY21sbFpDNWhaR1FvYzNCeWFXNW5RbTl1WlNrN1hHNWNiaUFnSUNCamIyNXpkQ0JrWlhCUFltcGxZM1J6SUQwZ2RHaHBjeTVmWjJWMFJHVndaVzVrWlc1amFXVnpLSE53Y21sdVowSnZibVVwTzF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnWkdWd1QySnFaV04wSUc5bUlHUmxjRTlpYW1WamRITXBJSHRjYmlBZ0lDQWdJSFJ5WVhabGNuTmxRVzVqWlhOMGIzSnpSbkp2YlZKdmIzUW9aR1Z3VDJKcVpXTjBMQ0FvWkdWd1QySnFaV04wUVc1alpYTjBiM0lwSUQwK0lIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2IySnFaV04wVTJWMElEMGdkR2hwY3k1ZmIySnFaV04wVTNCeWFXNW5RbTl1WlhOTllYQXVaMlYwS0dSbGNFOWlhbVZqZEVGdVkyVnpkRzl5S1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLRzlpYW1WamRGTmxkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHWnZjaUFvWTI5dWMzUWdaR1Z3VTNCeWFXNW5RbTl1WlNCdlppQnZZbXBsWTNSVFpYUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WDNCeWIyTmxjM05UY0hKcGJtZENiMjVsS0dSbGNGTndjbWx1WjBKdmJtVXNJSE53Y21sdVowSnZibVZ6VkhKcFpXUXNJSE53Y21sdVowSnZibVZ6Ukc5dVpTd2diMkpxWldOMFZYQmtZWFJsWkN3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJR2xtSUNnaGIySnFaV04wVlhCa1lYUmxaQzVvWVhNb1pHVndUMkpxWldOMFFXNWpaWE4wYjNJcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z2RYQmtZWFJsSUcxaGRISnBlQ0J2WmlCdWIyNHRjM0J5YVc1blltOXVaVnh1SUNBZ0lDQWdJQ0FnSUdSbGNFOWlhbVZqZEVGdVkyVnpkRzl5TG5Wd1pHRjBaVmR2Y214a1RXRjBjbWw0S0daaGJITmxMQ0JtWVd4elpTazdYRzRnSUNBZ0lDQWdJQ0FnYjJKcVpXTjBWWEJrWVhSbFpDNWhaR1FvWkdWd1QySnFaV04wUVc1alpYTjBiM0lwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QjFjR1JoZEdVZ2JYa2diV0YwY21sNFhHNGdJQ0FnYzNCeWFXNW5RbTl1WlM1aWIyNWxMblZ3WkdGMFpVMWhkSEpwZUNncE8xeHVJQ0FnSUhOd2NtbHVaMEp2Ym1VdVltOXVaUzUxY0dSaGRHVlhiM0pzWkUxaGRISnBlQ2htWVd4elpTd2dabUZzYzJVcE8xeHVYRzRnSUNBZ1kyRnNiR0poWTJzb2MzQnlhVzVuUW05dVpTazdYRzVjYmlBZ0lDQnZZbXBsWTNSVmNHUmhkR1ZrTG1Ga1pDaHpjSEpwYm1kQ2IyNWxMbUp2Ym1VcE8xeHVYRzRnSUNBZ2MzQnlhVzVuUW05dVpYTkViMjVsTG1Ga1pDaHpjSEpwYm1kQ2IyNWxLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTRnWVNCelpYUWdiMllnYjJKcVpXTjBjeUIwYUdGMElHRnlaU0JrWlhCbGJtUmhiblFnYjJZZ1oybDJaVzRnYzNCeWFXNW5JR0p2Ym1VdVhHNGdJQ0FxSUVCd1lYSmhiU0J6Y0hKcGJtZENiMjVsSUVFZ2MzQnlhVzVuSUdKdmJtVmNiaUFnSUNvZ1FISmxkSFZ5YmlCQklITmxkQ0J2WmlCdlltcGxZM1J6SUhSb1lYUWdZWEpsSUdSbGNHVnVaR0Z1ZENCdlppQm5hWFpsYmlCemNISnBibWNnWW05dVpWeHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmZaMlYwUkdWd1pXNWtaVzVqYVdWektITndjbWx1WjBKdmJtVTZJRlpTVFZOd2NtbHVaMEp2Ym1WS2IybHVkQ2s2SUZObGREeFVTRkpGUlM1UFltcGxZM1F6UkQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSE5sZENBOUlHNWxkeUJUWlhROFZFaFNSVVV1VDJKcVpXTjBNMFErS0NrN1hHNWNiaUFnSUNCamIyNXpkQ0J3WVhKbGJuUWdQU0J6Y0hKcGJtZENiMjVsTG1KdmJtVXVjR0Z5Wlc1ME8xeHVJQ0FnSUdsbUlDaHdZWEpsYm5RcElIdGNiaUFnSUNBZ0lITmxkQzVoWkdRb2NHRnlaVzUwS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J6Y0hKcGJtZENiMjVsTG1OdmJHeHBaR1Z5UjNKdmRYQnpMbVp2Y2tWaFkyZ29LR052Ykd4cFpHVnlSM0p2ZFhBcElEMCtJSHRjYmlBZ0lDQWdJR052Ykd4cFpHVnlSM0p2ZFhBdVkyOXNiR2xrWlhKekxtWnZja1ZoWTJnb0tHTnZiR3hwWkdWeUtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUhObGRDNWhaR1FvWTI5c2JHbGtaWElwTzF4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnZlNrN1hHNWNiaUFnSUNCeVpYUjFjbTRnYzJWME8xeHVJQ0I5WEc1OVhHNGlMQ0pwYlhCdmNuUWdkSGx3WlNBcUlHRnpJRll3VmxKTklHWnliMjBnSjBCd2FYaHBkaTkwZVhCbGN5MTJjbTB0TUM0d0p6dGNibWx0Y0c5eWRDQjBlWEJsSUNvZ1lYTWdWakZUY0hKcGJtZENiMjVsVTJOb1pXMWhJR1p5YjIwZ0owQndhWGhwZGk5MGVYQmxjeTEyY20xakxYTndjbWx1WjJKdmJtVXRNUzR3Snp0Y2JtbHRjRzl5ZENBcUlHRnpJRlJJVWtWRklHWnliMjBnSjNSb2NtVmxKenRjYm1sdGNHOXlkQ0IwZVhCbElIc2dSMHhVUml3Z1IweFVSa3h2WVdSbGNsQnNkV2RwYml3Z1IweFVSbEJoY25ObGNpQjlJR1p5YjIwZ0ozUm9jbVZsTDJWNFlXMXdiR1Z6TDJwemJTOXNiMkZrWlhKekwwZE1WRVpNYjJGa1pYSXVhbk1uTzF4dWFXMXdiM0owSUhzZ1ZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlTR1ZzY0dWeUxDQldVazFUY0hKcGJtZENiMjVsU205cGJuUklaV3h3WlhJZ2ZTQm1jbTl0SUNjdUwyaGxiSEJsY25Nbk8xeHVhVzF3YjNKMElIc2dWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5SUgwZ1puSnZiU0FuTGk5V1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSW5PMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QldVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWEpIY205MWNDQjlJR1p5YjIwZ0p5NHZWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5UjNKdmRYQW5PMXh1YVcxd2IzSjBJSHNnVmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVUyaGhjR1ZEWVhCemRXeGxJSDBnWm5KdmJTQW5MaTlXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhKVGFHRndaVU5oY0hOMWJHVW5PMXh1YVcxd2IzSjBJSHNnVmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVUyaGhjR1ZUY0dobGNtVWdmU0JtY205dElDY3VMMVpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2xOb1lYQmxVM0JvWlhKbEp6dGNibWx0Y0c5eWRDQjdJRlpTVFZOd2NtbHVaMEp2Ym1WS2IybHVkQ0I5SUdaeWIyMGdKeTR2VmxKTlUzQnlhVzVuUW05dVpVcHZhVzUwSnp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnVmxKTlUzQnlhVzVuUW05dVpVeHZZV1JsY2xCc2RXZHBiazl3ZEdsdmJuTWdmU0JtY205dElDY3VMMVpTVFZOd2NtbHVaMEp2Ym1WTWIyRmtaWEpRYkhWbmFXNVBjSFJwYjI1ekp6dGNibWx0Y0c5eWRDQjdJRlpTVFZOd2NtbHVaMEp2Ym1WTllXNWhaMlZ5SUgwZ1puSnZiU0FuTGk5V1VrMVRjSEpwYm1kQ2IyNWxUV0Z1WVdkbGNpYzdYRzVwYlhCdmNuUWdkSGx3WlNCN0lGWlNUVk53Y21sdVowSnZibVZLYjJsdWRGTmxkSFJwYm1keklIMGdabkp2YlNBbkxpOVdVazFUY0hKcGJtZENiMjVsU205cGJuUlRaWFIwYVc1bmN5YzdYRzVwYlhCdmNuUWdleUJIVEZSR0lHRnpJRWRNVkVaVFkyaGxiV0VnZlNCbWNtOXRJQ2RBWjJ4MFppMTBjbUZ1YzJadmNtMHZZMjl5WlNjN1hHNWNiaThxS2x4dUlDb2dVRzl6YzJsaWJHVWdjM0JsWXlCMlpYSnphVzl1Y3lCcGRDQnlaV052WjI1cGVtVnpMbHh1SUNvdlhHNWpiMjV6ZENCUVQxTlRTVUpNUlY5VFVFVkRYMVpGVWxOSlQwNVRJRDBnYm1WM0lGTmxkQ2hiSnpFdU1DY3NJQ2N4TGpBdFltVjBZU2RkS1R0Y2JseHVaWGh3YjNKMElHTnNZWE56SUZaU1RWTndjbWx1WjBKdmJtVk1iMkZrWlhKUWJIVm5hVzRnYVcxd2JHVnRaVzUwY3lCSFRGUkdURzloWkdWeVVHeDFaMmx1SUh0Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCeVpXRmtiMjVzZVNCRldGUkZUbE5KVDA1ZlRrRk5SU0E5SUNkV1VrMURYM053Y21sdVowSnZibVVuTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJUY0dWamFXWjVJR0Z1SUU5aWFtVmpkRE5FSUhSdklHRmtaQ0I3UUd4cGJtc2dWbEpOVTNCeWFXNW5RbTl1WlVwdmFXNTBTR1ZzY0dWeWZTQnpMbHh1SUNBZ0tpQkpaaUJ1YjNRZ2MzQmxZMmxtYVdWa0xDQm9aV3h3WlhJZ2QybHNiQ0J1YjNRZ1ltVWdZM0psWVhSbFpDNWNiaUFnSUNvZ1NXWWdZSEpsYm1SbGNrOXlaR1Z5WUNCcGN5QnpaWFFnZEc4Z2RHaGxJSEp2YjNRc0lHaGxiSEJsY25NZ2QybHNiQ0JqYjNCNUlIUm9aU0J6WVcxbElHQnlaVzVrWlhKUGNtUmxjbUFnTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdwdmFXNTBTR1ZzY0dWeVVtOXZkRDg2SUZSSVVrVkZMazlpYW1WamRETkVPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlRjR1ZqYVdaNUlHRnVJRTlpYW1WamRETkVJSFJ2SUdGa1pDQjdRR3hwYm1zZ1ZsSk5VM0J5YVc1blFtOXVaVXB2YVc1MFNHVnNjR1Z5ZlNCekxseHVJQ0FnS2lCSlppQnViM1FnYzNCbFkybG1hV1ZrTENCb1pXeHdaWElnZDJsc2JDQnViM1FnWW1VZ1kzSmxZWFJsWkM1Y2JpQWdJQ29nU1dZZ1lISmxibVJsY2s5eVpHVnlZQ0JwY3lCelpYUWdkRzhnZEdobElISnZiM1FzSUdobGJIQmxjbk1nZDJsc2JDQmpiM0I1SUhSb1pTQnpZVzFsSUdCeVpXNWtaWEpQY21SbGNtQWdMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR052Ykd4cFpHVnlTR1ZzY0dWeVVtOXZkRDg2SUZSSVVrVkZMazlpYW1WamRETkVPMXh1WEc0Z0lIQjFZbXhwWXlCeVpXRmtiMjVzZVNCd1lYSnpaWEk2SUVkTVZFWlFZWEp6WlhJN1hHNWNiaUFnY0hWaWJHbGpJR2RsZENCdVlXMWxLQ2s2SUhOMGNtbHVaeUI3WEc0Z0lDQWdjbVYwZFhKdUlGWlNUVk53Y21sdVowSnZibVZNYjJGa1pYSlFiSFZuYVc0dVJWaFVSVTVUU1U5T1gwNUJUVVU3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2NHRnljMlZ5T2lCSFRGUkdVR0Z5YzJWeUxDQnZjSFJwYjI1elB6b2dWbEpOVTNCeWFXNW5RbTl1WlV4dllXUmxjbEJzZFdkcGJrOXdkR2x2Ym5NcElIdGNiaUFnSUNCMGFHbHpMbkJoY25ObGNpQTlJSEJoY25ObGNqdGNibHh1SUNBZ0lIUm9hWE11YW05cGJuUklaV3h3WlhKU2IyOTBJRDBnYjNCMGFXOXVjejh1YW05cGJuUklaV3h3WlhKU2IyOTBPMXh1SUNBZ0lIUm9hWE11WTI5c2JHbGtaWEpJWld4d1pYSlNiMjkwSUQwZ2IzQjBhVzl1Y3o4dVkyOXNiR2xrWlhKSVpXeHdaWEpTYjI5ME8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHRnplVzVqSUdGbWRHVnlVbTl2ZENobmJIUm1PaUJIVEZSR0tUb2dVSEp2YldselpUeDJiMmxrUGlCN1hHNGdJQ0FnWjJ4MFppNTFjMlZ5UkdGMFlTNTJjbTFUY0hKcGJtZENiMjVsVFdGdVlXZGxjaUE5SUdGM1lXbDBJSFJvYVhNdVgybHRjRzl5ZENobmJIUm1LVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmJYQnZjblFnYzNCeWFXNW5JR0p2Ym1WeklHWnliMjBnWVNCSFRGUkdJR0Z1WkNCeVpYUjFjbTRnWVNCN1FHeHBibXNnVmxKTlUzQnlhVzVuUW05dVpVMWhibUZuWlhKOUxseHVJQ0FnS2lCSmRDQnRhV2RvZENCeVpYUjFjbTRnWUc1MWJHeGdJR2x1YzNSbFlXUWdkMmhsYmlCcGRDQmtiMlZ6SUc1dmRDQnVaV1ZrSUhSdklHSmxJR055WldGMFpXUWdiM0lnYzI5dFpYUm9hVzVuSUdkdklIZHliMjVuTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ1oyeDBaaUJCSUhCaGNuTmxaQ0J5WlhOMWJIUWdiMllnUjB4VVJpQjBZV3RsYmlCbWNtOXRJRWRNVkVaTWIyRmtaWEpjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWVhONWJtTWdYMmx0Y0c5eWRDaG5iSFJtT2lCSFRGUkdLVG9nVUhKdmJXbHpaVHhXVWsxVGNISnBibWRDYjI1bFRXRnVZV2RsY2lCOElHNTFiR3crSUh0Y2JpQWdJQ0JqYjI1emRDQjJNVkpsYzNWc2RDQTlJR0YzWVdsMElIUm9hWE11WDNZeFNXMXdiM0owS0dkc2RHWXBPMXh1SUNBZ0lHbG1JQ2gyTVZKbGMzVnNkQ0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkakZTWlhOMWJIUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnZGpCU1pYTjFiSFFnUFNCaGQyRnBkQ0IwYUdsekxsOTJNRWx0Y0c5eWRDaG5iSFJtS1R0Y2JpQWdJQ0JwWmlBb2RqQlNaWE4xYkhRZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhZd1VtVnpkV3gwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCaGMzbHVZeUJmZGpGSmJYQnZjblFvWjJ4MFpqb2dSMHhVUmlrNklGQnliMjFwYzJVOFZsSk5VM0J5YVc1blFtOXVaVTFoYm1GblpYSWdmQ0J1ZFd4c1BpQjdYRzRnSUNBZ1kyOXVjM1FnYW5OdmJpQTlJR2RzZEdZdWNHRnljMlZ5TG1wemIyNGdZWE1nUjB4VVJsTmphR1Z0WVM1SlIweFVSanRjYmx4dUlDQWdJQzh2SUdWaGNteDVJR0ZpYjNKMElHbG1JR2wwSUdSdlpYTnVKM1FnZFhObElITndjbWx1WnlCaWIyNWxjMXh1SUNBZ0lHTnZibk4wSUdselUzQnlhVzVuUW05dVpWVnpaV1FnUFNCcWMyOXVMbVY0ZEdWdWMybHZibk5WYzJWa1B5NXBibVJsZUU5bUtGWlNUVk53Y21sdVowSnZibVZNYjJGa1pYSlFiSFZuYVc0dVJWaFVSVTVUU1U5T1gwNUJUVVVwSUNFOVBTQXRNVHRjYmlBZ0lDQnBaaUFvSVdselUzQnlhVzVuUW05dVpWVnpaV1FwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJRzFoYm1GblpYSWdQU0J1WlhjZ1ZsSk5VM0J5YVc1blFtOXVaVTFoYm1GblpYSW9LVHRjYmx4dUlDQWdJR052Ym5OMElIUm9jbVZsVG05a1pYTTZJRlJJVWtWRkxrOWlhbVZqZERORVcxMGdQU0JoZDJGcGRDQm5iSFJtTG5CaGNuTmxjaTVuWlhSRVpYQmxibVJsYm1OcFpYTW9KMjV2WkdVbktUdGNibHh1SUNBZ0lHTnZibk4wSUdWNGRHVnVjMmx2YmlBOUlHcHpiMjR1WlhoMFpXNXphVzl1Y3o4dVcxWlNUVk53Y21sdVowSnZibVZNYjJGa1pYSlFiSFZuYVc0dVJWaFVSVTVUU1U5T1gwNUJUVVZkSUdGelhHNGdJQ0FnSUNCOElGWXhVM0J5YVc1blFtOXVaVk5qYUdWdFlTNVdVazFEVTNCeWFXNW5RbTl1WlZ4dUlDQWdJQ0FnZkNCMWJtUmxabWx1WldRN1hHNGdJQ0FnYVdZZ0tDRmxlSFJsYm5OcGIyNHBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElITndaV05XWlhKemFXOXVJRDBnWlhoMFpXNXphVzl1TG5Od1pXTldaWEp6YVc5dU8xeHVJQ0FnSUdsbUlDZ2hVRTlUVTBsQ1RFVmZVMUJGUTE5V1JWSlRTVTlPVXk1b1lYTW9jM0JsWTFabGNuTnBiMjRwS1NCN1hHNGdJQ0FnSUNCamIyNXpiMnhsTG5kaGNtNG9YRzRnSUNBZ0lDQWdJR0JXVWsxVGNISnBibWRDYjI1bFRHOWhaR1Z5VUd4MVoybHVPaUJWYm10dWIzZHVJQ1I3VmxKTlUzQnlhVzVuUW05dVpVeHZZV1JsY2xCc2RXZHBiaTVGV0ZSRlRsTkpUMDVmVGtGTlJYMGdjM0JsWTFabGNuTnBiMjRnWENJa2UzTndaV05XWlhKemFXOXVmVndpWUN4Y2JpQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0JqYjJ4c2FXUmxjbk1nUFNCbGVIUmxibk5wYjI0dVkyOXNiR2xrWlhKelB5NXRZWEFvS0hOamFHVnRZVU52Ykd4cFpHVnlMQ0JwUTI5c2JHbGtaWElwSUQwK0lIdGNiaUFnSUNBZ0lHTnZibk4wSUc1dlpHVWdQU0IwYUhKbFpVNXZaR1Z6VzNOamFHVnRZVU52Ykd4cFpHVnlMbTV2WkdVaFhUdGNiaUFnSUNBZ0lHTnZibk4wSUhOamFHVnRZVk5vWVhCbElEMGdjMk5vWlcxaFEyOXNiR2xrWlhJdWMyaGhjR1VoTzF4dVhHNGdJQ0FnSUNCcFppQW9jMk5vWlcxaFUyaGhjR1V1YzNCb1pYSmxLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxsOXBiWEJ2Y25SVGNHaGxjbVZEYjJ4c2FXUmxjaWh1YjJSbExDQjdYRzRnSUNBZ0lDQWdJQ0FnYjJabWMyVjBPaUJ1WlhjZ1ZFaFNSVVV1Vm1WamRHOXlNeWdwTG1aeWIyMUJjbkpoZVNoelkyaGxiV0ZUYUdGd1pTNXpjR2hsY21VdWIyWm1jMlYwSUQ4L0lGc3dMakFzSURBdU1Dd2dNQzR3WFNrc1hHNGdJQ0FnSUNBZ0lDQWdjbUZrYVhWek9pQnpZMmhsYldGVGFHRndaUzV6Y0dobGNtVXVjbUZrYVhWeklEOC9JREF1TUN4Y2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSE5qYUdWdFlWTm9ZWEJsTG1OaGNITjFiR1VwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYMmx0Y0c5eWRFTmhjSE4xYkdWRGIyeHNhV1JsY2lodWIyUmxMQ0I3WEc0Z0lDQWdJQ0FnSUNBZ2IyWm1jMlYwT2lCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncExtWnliMjFCY25KaGVTaHpZMmhsYldGVGFHRndaUzVqWVhCemRXeGxMbTltWm5ObGRDQS9QeUJiTUM0d0xDQXdMakFzSURBdU1GMHBMRnh1SUNBZ0lDQWdJQ0FnSUhKaFpHbDFjem9nYzJOb1pXMWhVMmhoY0dVdVkyRndjM1ZzWlM1eVlXUnBkWE1nUHo4Z01DNHdMRnh1SUNBZ0lDQWdJQ0FnSUhSaGFXdzZJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLQ2t1Wm5KdmJVRnljbUY1S0hOamFHVnRZVk5vWVhCbExtTmhjSE4xYkdVdWRHRnBiQ0EvUHlCYk1DNHdMQ0F3TGpBc0lEQXVNRjBwTEZ4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQldVazFUY0hKcGJtZENiMjVsVEc5aFpHVnlVR3gxWjJsdU9pQlVhR1VnWTI5c2JHbGtaWElnSXlSN2FVTnZiR3hwWkdWeWZTQm9ZWE1nYm04Z2RtRnNhV1FnYzJoaGNHVmdLVHRjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJR052Ym5OMElHTnZiR3hwWkdWeVIzSnZkWEJ6SUQwZ1pYaDBaVzV6YVc5dUxtTnZiR3hwWkdWeVIzSnZkWEJ6UHk1dFlYQW9YRzRnSUNBZ0lDQW9jMk5vWlcxaFEyOXNiR2xrWlhKSGNtOTFjQ3dnYVVOdmJHeHBaR1Z5UjNKdmRYQXBPaUJXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhKSGNtOTFjQ0E5UGlCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdOdmJITWdQU0FvYzJOb1pXMWhRMjlzYkdsa1pYSkhjbTkxY0M1amIyeHNhV1JsY25NZ1B6OGdXMTBwTG0xaGNDZ29hVU52Ykd4cFpHVnlLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1kyOXNJRDBnWTI5c2JHbGtaWEp6UHk1YmFVTnZiR3hwWkdWeVhUdGNibHh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGpiMndnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCZ1ZsSk5VM0J5YVc1blFtOXVaVXh2WVdSbGNsQnNkV2RwYmpvZ1ZHaGxJR052Ykd4cFpHVnlSM0p2ZFhBZ0l5UjdhVU52Ykd4cFpHVnlSM0p2ZFhCOUlHRjBkR1Z0Y0hSbFpDQjBieUIxYzJVZ1lTQmpiMnhzYVdSbGNpQWpKSHRwUTI5c2JHbGtaWEo5SUdKMWRDQnViM1FnWm05MWJtUmdMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyOXNPMXh1SUNBZ0lDQWdJQ0I5S1R0Y2JseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2UxeHVJQ0FnSUNBZ0lDQWdJR052Ykd4cFpHVnljem9nWTI5c2N5eGNiaUFnSUNBZ0lDQWdJQ0J1WVcxbE9pQnpZMmhsYldGRGIyeHNhV1JsY2tkeWIzVndMbTVoYldVc1hHNGdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ0lDQjlMRnh1SUNBZ0lDazdYRzVjYmlBZ0lDQmxlSFJsYm5OcGIyNHVjM0J5YVc1bmN6OHVabTl5UldGamFDZ29jMk5vWlcxaFUzQnlhVzVuTENCcFUzQnlhVzVuS1NBOVBpQjdYRzRnSUNBZ0lDQmpiMjV6ZENCelkyaGxiV0ZLYjJsdWRITWdQU0J6WTJobGJXRlRjSEpwYm1jdWFtOXBiblJ6TzF4dVhHNGdJQ0FnSUNBdkx5QndjbVZ3WVhKbElHTnZiR3hwWkdWeWMxeHVJQ0FnSUNBZ1kyOXVjM1FnWTI5c2JHbGtaWEpIY205MWNITkdiM0pUY0hKcGJtY2dQU0J6WTJobGJXRlRjSEpwYm1jdVkyOXNiR2xrWlhKSGNtOTFjSE0vTG0xaGNDZ29hVU52Ykd4cFpHVnlSM0p2ZFhBcElEMCtJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaM0p2ZFhBZ1BTQmpiMnhzYVdSbGNrZHliM1Z3Y3o4dVcybERiMnhzYVdSbGNrZHliM1Z3WFR0Y2JseHVJQ0FnSUNBZ0lDQnBaaUFvWjNKdmRYQWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lHQldVazFUY0hKcGJtZENiMjVsVEc5aFpHVnlVR3gxWjJsdU9pQlVhR1VnYzNCeWFXNW5JQ01rZTJsVGNISnBibWQ5SUdGMGRHVnRjSFJsWkNCMGJ5QjFjMlVnWVNCamIyeHNhV1JsY2tkeWIzVndJQ1I3YVVOdmJHeHBaR1Z5UjNKdmRYQjlJR0oxZENCdWIzUWdabTkxYm1SZ0xGeHVJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1ozSnZkWEE3WEc0Z0lDQWdJQ0I5S1R0Y2JseHVJQ0FnSUNBZ1kyOXVjM1FnWTJWdWRHVnlJRDBnYzJOb1pXMWhVM0J5YVc1bkxtTmxiblJsY2lBaFBTQnVkV3hzSUQ4Z2RHaHlaV1ZPYjJSbGMxdHpZMmhsYldGVGNISnBibWN1WTJWdWRHVnlYU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUNBZ2JHVjBJSEJ5WlhaVFkyaGxiV0ZLYjJsdWREb2dWakZUY0hKcGJtZENiMjVsVTJOb1pXMWhMbE53Y21sdVowSnZibVZLYjJsdWRDQjhJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJSE5qYUdWdFlVcHZhVzUwY3k1bWIzSkZZV05vS0NoelkyaGxiV0ZLYjJsdWRDa2dQVDRnZTF4dUlDQWdJQ0FnSUNCcFppQW9jSEpsZGxOamFHVnRZVXB2YVc1MEtTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z2NISmxjR0Z5WlNCdWIyUmxYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdibTlrWlVsdVpHVjRJRDBnY0hKbGRsTmphR1Z0WVVwdmFXNTBMbTV2WkdVN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JtOWtaU0E5SUhSb2NtVmxUbTlrWlhOYmJtOWtaVWx1WkdWNFhUdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQmphR2xzWkVsdVpHVjRJRDBnYzJOb1pXMWhTbTlwYm5RdWJtOWtaVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JqYUdsc1pDQTlJSFJvY21WbFRtOWtaWE5iWTJocGJHUkpibVJsZUYwN1hHNWNiaUFnSUNBZ0lDQWdJQ0F2THlCd2NtVndZWEpsSUhObGRIUnBibWRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J6WlhSMGFXNW5PaUJRWVhKMGFXRnNQRlpTVFZOd2NtbHVaMEp2Ym1WS2IybHVkRk5sZEhScGJtZHpQaUE5SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2hwZEZKaFpHbDFjem9nY0hKbGRsTmphR1Z0WVVwdmFXNTBMbWhwZEZKaFpHbDFjeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lHUnlZV2RHYjNKalpUb2djSEpsZGxOamFHVnRZVXB2YVc1MExtUnlZV2RHYjNKalpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUdkeVlYWnBkSGxRYjNkbGNqb2djSEpsZGxOamFHVnRZVXB2YVc1MExtZHlZWFpwZEhsUWIzZGxjaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lITjBhV1ptYm1WemN6b2djSEpsZGxOamFHVnRZVXB2YVc1MExuTjBhV1ptYm1WemN5eGNiaUFnSUNBZ0lDQWdJQ0FnSUdkeVlYWnBkSGxFYVhJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhCeVpYWlRZMmhsYldGS2IybHVkQzVuY21GMmFYUjVSR2x5SUNFOUlHNTFiR3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0EvSUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0NrdVpuSnZiVUZ5Y21GNUtIQnlaWFpUWTJobGJXRktiMmx1ZEM1bmNtRjJhWFI1UkdseUtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEb2dkVzVrWldacGJtVmtMRnh1SUNBZ0lDQWdJQ0FnSUgwN1hHNWNiaUFnSUNBZ0lDQWdJQ0F2THlCamNtVmhkR1VnYzNCeWFXNW5JR0p2Ym1WelhHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2FtOXBiblFnUFNCMGFHbHpMbDlwYlhCdmNuUktiMmx1ZENodWIyUmxMQ0JqYUdsc1pDd2djMlYwZEdsdVp5d2dZMjlzYkdsa1pYSkhjbTkxY0hOR2IzSlRjSEpwYm1jcE8xeHVJQ0FnSUNBZ0lDQWdJR2xtSUNoalpXNTBaWElwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3B2YVc1MExtTmxiblJsY2lBOUlHTmxiblJsY2p0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNCdFlXNWhaMlZ5TG1Ga1pFcHZhVzUwS0dwdmFXNTBLVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lIQnlaWFpUWTJobGJXRktiMmx1ZENBOUlITmphR1Z0WVVwdmFXNTBPMXh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0F2THlCcGJtbDBJSE53Y21sdVp5QmliMjVsYzF4dUlDQWdJRzFoYm1GblpYSXVjMlYwU1c1cGRGTjBZWFJsS0NrN1hHNWNiaUFnSUNCeVpYUjFjbTRnYldGdVlXZGxjanRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWVhONWJtTWdYM1l3U1cxd2IzSjBLR2RzZEdZNklFZE1WRVlwT2lCUWNtOXRhWE5sUEZaU1RWTndjbWx1WjBKdmJtVk5ZVzVoWjJWeUlId2diblZzYkQ0Z2UxeHVJQ0FnSUdOdmJuTjBJR3B6YjI0Z1BTQm5iSFJtTG5CaGNuTmxjaTVxYzI5dUlHRnpJRWRNVkVaVFkyaGxiV0V1U1VkTVZFWTdYRzVjYmlBZ0lDQXZMeUJsWVhKc2VTQmhZbTl5ZENCcFppQnBkQ0JrYjJWemJpZDBJSFZ6WlNCMmNtMWNiaUFnSUNCamIyNXpkQ0JwYzFaU1RWVnpaV1FnUFNCcWMyOXVMbVY0ZEdWdWMybHZibk5WYzJWa1B5NXBibVJsZUU5bUtDZFdVazBuS1NBaFBUMGdMVEU3WEc0Z0lDQWdhV1lnS0NGcGMxWlNUVlZ6WldRcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJR1ZoY214NUlHRmliM0owSUdsbUlHbDBJR1J2WlhOdUozUWdhR0YyWlNCaWIyNWxJR2R5YjNWd2MxeHVJQ0FnSUdOdmJuTjBJR1Y0ZEdWdWMybHZiaUE5SUdwemIyNHVaWGgwWlc1emFXOXVjejh1V3lkV1VrMG5YU0JoY3lCV01GWlNUUzVXVWswZ2ZDQjFibVJsWm1sdVpXUTdYRzRnSUNBZ1kyOXVjM1FnYzJOb1pXMWhVMlZqYjI1a1lYSjVRVzVwYldGMGFXOXVJRDBnWlhoMFpXNXphVzl1UHk1elpXTnZibVJoY25sQmJtbHRZWFJwYjI0N1hHNGdJQ0FnYVdZZ0tDRnpZMmhsYldGVFpXTnZibVJoY25sQmJtbHRZWFJwYjI0cElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhOamFHVnRZVUp2Ym1WSGNtOTFjSE1nUFNCelkyaGxiV0ZUWldOdmJtUmhjbmxCYm1sdFlYUnBiMjQvTG1KdmJtVkhjbTkxY0hNN1hHNGdJQ0FnYVdZZ0tDRnpZMmhsYldGQ2IyNWxSM0p2ZFhCektTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCdFlXNWhaMlZ5SUQwZ2JtVjNJRlpTVFZOd2NtbHVaMEp2Ym1WTllXNWhaMlZ5S0NrN1hHNWNiaUFnSUNCamIyNXpkQ0IwYUhKbFpVNXZaR1Z6T2lCVVNGSkZSUzVQWW1wbFkzUXpSRnRkSUQwZ1lYZGhhWFFnWjJ4MFppNXdZWEp6WlhJdVoyVjBSR1Z3Wlc1a1pXNWphV1Z6S0NkdWIyUmxKeWs3WEc1Y2JpQWdJQ0JqYjI1emRDQmpiMnhzYVdSbGNrZHliM1Z3Y3lBOUlITmphR1Z0WVZObFkyOXVaR0Z5ZVVGdWFXMWhkR2x2Ymk1amIyeHNhV1JsY2tkeWIzVndjejh1YldGd0tGeHVJQ0FnSUNBZ0tITmphR1Z0WVVOdmJHeHBaR1Z5UjNKdmRYQXBPaUJXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhKSGNtOTFjQ0E5UGlCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUc1dlpHVWdQU0IwYUhKbFpVNXZaR1Z6VzNOamFHVnRZVU52Ykd4cFpHVnlSM0p2ZFhBdWJtOWtaU0ZkTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JqYjJ4c2FXUmxjbk1nUFNBb2MyTm9aVzFoUTI5c2JHbGtaWEpIY205MWNDNWpiMnhzYVdSbGNuTWdQejhnVzEwcExtMWhjQ2dvYzJOb1pXMWhRMjlzYkdsa1pYSXNJR2xEYjJ4c2FXUmxjaWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHOW1abk5sZENBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektEQXVNQ3dnTUM0d0xDQXdMakFwTzF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2h6WTJobGJXRkRiMnhzYVdSbGNpNXZabVp6WlhRcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUc5bVpuTmxkQzV6WlhRb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhOamFHVnRZVU52Ykd4cFpHVnlMbTltWm5ObGRDNTRJRDgvSURBdU1DeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2MyTm9aVzFoUTI5c2JHbGtaWEl1YjJabWMyVjBMbmtnUHo4Z01DNHdMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnpZMmhsYldGRGIyeHNhV1JsY2k1dlptWnpaWFF1ZWlBL0lDMXpZMmhsYldGRGIyeHNhV1JsY2k1dlptWnpaWFF1ZWlBNklEQXVNQ3dnTHk4Z2VpQnBjeUJ2Y0hCdmMybDBaU0JwYmlCV1VrMHdMakJjYmlBZ0lDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11WDJsdGNHOXlkRk53YUdWeVpVTnZiR3hwWkdWeUtHNXZaR1VzSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJRzltWm5ObGRDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhKaFpHbDFjem9nYzJOb1pXMWhRMjlzYkdsa1pYSXVjbUZrYVhWeklEOC9JREF1TUN4Y2JpQWdJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnZlNrN1hHNWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIc2dZMjlzYkdsa1pYSnpJSDA3WEc0Z0lDQWdJQ0I5TEZ4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0F2THlCcGJYQnZjblFnYzNCeWFXNW5JR0p2Ym1WeklHWnZjaUJsWVdOb0lITndjbWx1WnlCaWIyNWxJR2R5YjNWd2MxeHVJQ0FnSUhOamFHVnRZVUp2Ym1WSGNtOTFjSE0vTG1admNrVmhZMmdvS0hOamFHVnRZVUp2Ym1WSGNtOTFjQ3dnYVVKdmJtVkhjbTkxY0NrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2NtOXZkRWx1WkdsalpYTWdQU0J6WTJobGJXRkNiMjVsUjNKdmRYQXVZbTl1WlhNN1hHNGdJQ0FnSUNCcFppQW9JWEp2YjNSSmJtUnBZMlZ6S1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2NtOXZkRWx1WkdsalpYTXVabTl5UldGamFDZ29jbTl2ZEVsdVpHVjRLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhKdmIzUWdQU0IwYUhKbFpVNXZaR1Z6VzNKdmIzUkpibVJsZUYwN1hHNWNiaUFnSUNBZ0lDQWdMeThnY0hKbGNHRnlaU0J6WlhSMGFXNW5YRzRnSUNBZ0lDQWdJR052Ym5OMElHZHlZWFpwZEhsRWFYSWdQU0J1WlhjZ1ZFaFNSVVV1Vm1WamRHOXlNeWdwTzF4dUlDQWdJQ0FnSUNCcFppQW9jMk5vWlcxaFFtOXVaVWR5YjNWd0xtZHlZWFpwZEhsRWFYSXBJSHRjYmlBZ0lDQWdJQ0FnSUNCbmNtRjJhWFI1UkdseUxuTmxkQ2hjYmlBZ0lDQWdJQ0FnSUNBZ0lITmphR1Z0WVVKdmJtVkhjbTkxY0M1bmNtRjJhWFI1UkdseUxuZ2dQejhnTUM0d0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnYzJOb1pXMWhRbTl1WlVkeWIzVndMbWR5WVhacGRIbEVhWEl1ZVNBL1B5QXdMakFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpZMmhsYldGQ2IyNWxSM0p2ZFhBdVozSmhkbWwwZVVScGNpNTZJRDgvSURBdU1DeGNiaUFnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lHZHlZWFpwZEhsRWFYSXVjMlYwS0RBdU1Dd2dMVEV1TUN3Z01DNHdLVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHTnZibk4wSUdObGJuUmxjaUE5SUhOamFHVnRZVUp2Ym1WSGNtOTFjQzVqWlc1MFpYSWdJVDBnYm5Wc2JDQS9JSFJvY21WbFRtOWtaWE5iYzJOb1pXMWhRbTl1WlVkeWIzVndMbU5sYm5SbGNsMGdPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYzJWMGRHbHVaem9nVUdGeWRHbGhiRHhXVWsxVGNISnBibWRDYjI1bFNtOXBiblJUWlhSMGFXNW5jejRnUFNCN1hHNGdJQ0FnSUNBZ0lDQWdhR2wwVW1Ga2FYVnpPaUJ6WTJobGJXRkNiMjVsUjNKdmRYQXVhR2wwVW1Ga2FYVnpMRnh1SUNBZ0lDQWdJQ0FnSUdSeVlXZEdiM0pqWlRvZ2MyTm9aVzFoUW05dVpVZHliM1Z3TG1SeVlXZEdiM0pqWlN4Y2JpQWdJQ0FnSUNBZ0lDQm5jbUYyYVhSNVVHOTNaWEk2SUhOamFHVnRZVUp2Ym1WSGNtOTFjQzVuY21GMmFYUjVVRzkzWlhJc1hHNGdJQ0FnSUNBZ0lDQWdjM1JwWm1adVpYTnpPaUJ6WTJobGJXRkNiMjVsUjNKdmRYQXVjM1JwWm1acGJtVnpjeXhjYmlBZ0lDQWdJQ0FnSUNCbmNtRjJhWFI1UkdseUxGeHVJQ0FnSUNBZ0lDQjlPMXh1WEc0Z0lDQWdJQ0FnSUM4dklIQnlaWEJoY21VZ1kyOXNiR2xrWlhKelhHNGdJQ0FnSUNBZ0lHTnZibk4wSUdOdmJHeHBaR1Z5UjNKdmRYQnpSbTl5VTNCeWFXNW5JRDBnYzJOb1pXMWhRbTl1WlVkeWIzVndMbU52Ykd4cFpHVnlSM0p2ZFhCelB5NXRZWEFvS0dsRGIyeHNhV1JsY2tkeWIzVndLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1ozSnZkWEFnUFNCamIyeHNhV1JsY2tkeWIzVndjejh1VzJsRGIyeHNhV1JsY2tkeWIzVndYVHRjYmx4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2huY205MWNDQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR0JXVWsxVGNISnBibWRDYjI1bFRHOWhaR1Z5VUd4MVoybHVPaUJVYUdVZ2MzQnlhVzVuSUNNa2UybENiMjVsUjNKdmRYQjlJR0YwZEdWdGNIUmxaQ0IwYnlCMWMyVWdZU0JqYjJ4c2FXUmxja2R5YjNWd0lDUjdhVU52Ykd4cFpHVnlSM0p2ZFhCOUlHSjFkQ0J1YjNRZ1ptOTFibVJnTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdaM0p2ZFhBN1hHNGdJQ0FnSUNBZ0lIMHBPMXh1WEc0Z0lDQWdJQ0FnSUM4dklHTnlaV0YwWlNCemNISnBibWNnWW05dVpYTmNiaUFnSUNBZ0lDQWdjbTl2ZEM1MGNtRjJaWEp6WlNnb2JtOWtaU2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHTm9hV3hrT2lCVVNGSkZSUzVQWW1wbFkzUXpSQ0I4SUc1MWJHd2dQU0J1YjJSbExtTm9hV3hrY21WdVd6QmRJRDgvSUc1MWJHdzdYRzVjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JxYjJsdWRDQTlJSFJvYVhNdVgybHRjRzl5ZEVwdmFXNTBLRzV2WkdVc0lHTm9hV3hrTENCelpYUjBhVzVuTENCamIyeHNhV1JsY2tkeWIzVndjMFp2Y2xOd2NtbHVaeWs3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR05sYm5SbGNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FtOXBiblF1WTJWdWRHVnlJRDBnWTJWdWRHVnlPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQWdJRzFoYm1GblpYSXVZV1JrU205cGJuUW9hbTlwYm5RcE8xeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnTHk4Z2FXNXBkQ0J6Y0hKcGJtY2dZbTl1WlhOY2JpQWdJQ0JuYkhSbUxuTmpaVzVsTG5Wd1pHRjBaVTFoZEhKcGVGZHZjbXhrS0NrN1hHNGdJQ0FnYldGdVlXZGxjaTV6WlhSSmJtbDBVM1JoZEdVb0tUdGNibHh1SUNBZ0lISmxkSFZ5YmlCdFlXNWhaMlZ5TzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCZmFXMXdiM0owU205cGJuUW9YRzRnSUNBZ2JtOWtaVG9nVkVoU1JVVXVUMkpxWldOME0wUXNYRzRnSUNBZ1kyaHBiR1E2SUZSSVVrVkZMazlpYW1WamRETkVMRnh1SUNBZ0lITmxkSFJwYm1jL09pQlFZWEowYVdGc1BGWlNUVk53Y21sdVowSnZibVZLYjJsdWRGTmxkSFJwYm1kelBpeGNiaUFnSUNCamIyeHNhV1JsY2tkeWIzVndjMFp2Y2xOd2NtbHVaejg2SUZaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNrZHliM1Z3VzEwc1hHNGdJQ2s2SUZaU1RWTndjbWx1WjBKdmJtVktiMmx1ZENCN1hHNGdJQ0FnWTI5dWMzUWdjM0J5YVc1blFtOXVaU0E5SUc1bGR5QldVazFUY0hKcGJtZENiMjVsU205cGJuUW9ibTlrWlN3Z1kyaHBiR1FzSUhObGRIUnBibWNzSUdOdmJHeHBaR1Z5UjNKdmRYQnpSbTl5VTNCeWFXNW5LVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbXB2YVc1MFNHVnNjR1Z5VW05dmRDa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2FHVnNjR1Z5SUQwZ2JtVjNJRlpTVFZOd2NtbHVaMEp2Ym1WS2IybHVkRWhsYkhCbGNpaHpjSEpwYm1kQ2IyNWxLVHRjYmlBZ0lDQWdJSFJvYVhNdWFtOXBiblJJWld4d1pYSlNiMjkwTG1Ga1pDaG9aV3h3WlhJcE8xeHVJQ0FnSUNBZ2FHVnNjR1Z5TG5KbGJtUmxjazl5WkdWeUlEMGdkR2hwY3k1cWIybHVkRWhsYkhCbGNsSnZiM1F1Y21WdVpHVnlUM0prWlhJN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSE53Y21sdVowSnZibVU3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUY5cGJYQnZjblJUY0dobGNtVkRiMnhzYVdSbGNpaGNiaUFnSUNCa1pYTjBhVzVoZEdsdmJqb2dWRWhTUlVVdVQySnFaV04wTTBRc1hHNGdJQ0FnY0dGeVlXMXpPaUI3WEc0Z0lDQWdJQ0J2Wm1aelpYUTZJRlJJVWtWRkxsWmxZM1J2Y2pNN1hHNGdJQ0FnSUNCeVlXUnBkWE02SUc1MWJXSmxjanRjYmlBZ0lDQjlMRnh1SUNBcE9pQldVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWElnZTF4dUlDQWdJR052Ym5OMElIc2diMlptYzJWMExDQnlZV1JwZFhNZ2ZTQTlJSEJoY21GdGN6dGNibHh1SUNBZ0lHTnZibk4wSUhOb1lYQmxJRDBnYm1WM0lGWlNUVk53Y21sdVowSnZibVZEYjJ4c2FXUmxjbE5vWVhCbFUzQm9aWEpsS0hzZ2IyWm1jMlYwTENCeVlXUnBkWE1nZlNrN1hHNWNiaUFnSUNCamIyNXpkQ0JqYjJ4c2FXUmxjaUE5SUc1bGR5QldVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWElvYzJoaGNHVXBPMXh1WEc0Z0lDQWdaR1Z6ZEdsdVlYUnBiMjR1WVdSa0tHTnZiR3hwWkdWeUtUdGNibHh1SUNBZ0lHbG1JQ2gwYUdsekxtTnZiR3hwWkdWeVNHVnNjR1Z5VW05dmRDa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2FHVnNjR1Z5SUQwZ2JtVjNJRlpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2tobGJIQmxjaWhqYjJ4c2FXUmxjaWs3WEc0Z0lDQWdJQ0IwYUdsekxtTnZiR3hwWkdWeVNHVnNjR1Z5VW05dmRDNWhaR1FvYUdWc2NHVnlLVHRjYmlBZ0lDQWdJR2hsYkhCbGNpNXlaVzVrWlhKUGNtUmxjaUE5SUhSb2FYTXVZMjlzYkdsa1pYSklaV3h3WlhKU2IyOTBMbkpsYm1SbGNrOXlaR1Z5TzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQmpiMnhzYVdSbGNqdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdYMmx0Y0c5eWRFTmhjSE4xYkdWRGIyeHNhV1JsY2loY2JpQWdJQ0JrWlhOMGFXNWhkR2x2YmpvZ1ZFaFNSVVV1VDJKcVpXTjBNMFFzWEc0Z0lDQWdjR0Z5WVcxek9pQjdYRzRnSUNBZ0lDQnZabVp6WlhRNklGUklVa1ZGTGxabFkzUnZjak03WEc0Z0lDQWdJQ0J5WVdScGRYTTZJRzUxYldKbGNqdGNiaUFnSUNBZ0lIUmhhV3c2SUZSSVVrVkZMbFpsWTNSdmNqTTdYRzRnSUNBZ2ZTeGNiaUFnS1RvZ1ZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlJSHRjYmlBZ0lDQmpiMjV6ZENCN0lHOW1abk5sZEN3Z2NtRmthWFZ6TENCMFlXbHNJSDBnUFNCd1lYSmhiWE03WEc1Y2JpQWdJQ0JqYjI1emRDQnphR0Z3WlNBOUlHNWxkeUJXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhKVGFHRndaVU5oY0hOMWJHVW9leUJ2Wm1aelpYUXNJSEpoWkdsMWN5d2dkR0ZwYkNCOUtUdGNibHh1SUNBZ0lHTnZibk4wSUdOdmJHeHBaR1Z5SUQwZ2JtVjNJRlpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2loemFHRndaU2s3WEc1Y2JpQWdJQ0JrWlhOMGFXNWhkR2x2Ymk1aFpHUW9ZMjlzYkdsa1pYSXBPMXh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVZMjlzYkdsa1pYSklaV3h3WlhKU2IyOTBLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQm9aV3h3WlhJZ1BTQnVaWGNnVmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVNHVnNjR1Z5S0dOdmJHeHBaR1Z5S1R0Y2JpQWdJQ0FnSUhSb2FYTXVZMjlzYkdsa1pYSklaV3h3WlhKU2IyOTBMbUZrWkNob1pXeHdaWElwTzF4dUlDQWdJQ0FnYUdWc2NHVnlMbkpsYm1SbGNrOXlaR1Z5SUQwZ2RHaHBjeTVqYjJ4c2FXUmxja2hsYkhCbGNsSnZiM1F1Y21WdVpHVnlUM0prWlhJN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJR052Ykd4cFpHVnlPMXh1SUNCOVhHNTlYRzRpWFN3aWJtRnRaWE1pT2xzaVgzWXpRU0lzSWw5Mk0wSWlMQ0pmYldGMFFTSmRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3p0QlFVRkJPenRCUVVWSE8wMUJRMjFDTERCQ1FVRXdRaXhEUVVGQk8wRkJjMEl2UXpzN1FVTjBRa1FzVFVGQlRVRXNUVUZCU1N4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlEycERMRTFCUVUxRExFMUJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVVelFpeE5RVUZQTEdsRFFVRnJReXhUUVVGUkxEQkNRVUV3UWl4RFFVRkJPMEZCUXk5RkxFbEJRVUVzU1VGQlZ5eEpRVUZKTEVkQlFVRTdRVUZEWWl4UlFVRkJMRTlCUVU4c1UwRkJVeXhEUVVGRE8wdEJRMnhDTzBGQmFVSkVMRWxCUVVFc1YwRkJRU3hEUVVGdFFpeE5RVUV3UlN4RlFVRkJPenRCUVVNelJpeFJRVUZCTEV0QlFVc3NSVUZCUlN4RFFVRkRPMUZCUlZJc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4TlFVRk5MRXRCUVU0c1NVRkJRU3hKUVVGQkxFMUJRVTBzUzBGQlRpeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hOUVVGTkxFTkJRVVVzVFVGQlRTeHRRMEZCU1N4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOcVJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVFc1JVRkJRU3hIUVVGQkxFMUJRVTBzUzBGQlRpeEpRVUZCTEVsQlFVRXNUVUZCVFN4TFFVRk9MRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEUxQlFVMHNRMEZCUlN4SlFVRkpMRzFEUVVGSkxFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzBGQlF6ZEVMRkZCUVVFc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4TlFVRk5MRXRCUVVFc1NVRkJRU3hKUVVGT0xFMUJRVTBzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJUaXhOUVVGTkxFTkJRVVVzVFVGQlRTeE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZKTEVkQlFVY3NRMEZCUXp0TFFVTnlRenRCUVVWTkxFbEJRVUVzYTBKQlFXdENMRU5CUTNaQ0xHTkJRVFpDTEVWQlF6ZENMR05CUVRaQ0xFVkJRemRDTEZsQlFXOUNMRVZCUTNCQ0xFMUJRWEZDTEVWQlFVRTdRVUZGY2tJc1VVRkJRVVFzVFVGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEdOQlFXTXNRMEZCUXl4RFFVRkRPMEZCUTNCRUxGRkJRVUZETEUxQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEZsQlFWa3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRCUVVOc1JDeFJRVUZCUVN4TlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRFJDeE5RVUZKTEVOQlFVTXNRMEZCUXp0QlFVTm1MRkZCUVVFc1RVRkJUU3hsUVVGbExFZEJRVWRETEUxQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRCUVVWNFF5eFJRVUZCTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZEUkN4TlFVRkpMRU5CUVVNc1EwRkJRenRSUVVOMFF5eE5RVUZOTEVkQlFVY3NSMEZCUjBNc1RVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVVTNRaXhKUVVGSkxFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZIWmp0aFFVRk5MRWxCUVVrc1pVRkJaU3hKUVVGSkxFZEJRVWNzUlVGQlJUczdRVUZGYWtNc1dVRkJRU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZEUVN4TlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOc1FpeFRRVUZCTzBGQlFVMHNZVUZCUVRzN1dVRkZURUVzVFVGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1pVRkJaU3hEUVVGRExFTkJRVU03UVVGRE0wTXNXVUZCUVN4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRFFTeE5RVUZKTEVOQlFVTXNRMEZCUXp0QlFVTnNRaXhUUVVGQk8wRkJSVVFzVVVGQlFTeE5RVUZOTEUxQlFVMHNSMEZCUnl4WlFVRlpMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU14UXl4TlFVRk5MRkZCUVZFc1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NUVUZCVFN4RFFVRkRPMUZCUXpGRExFMUJRVTBzUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0QlFVTnVRaXhSUVVGQkxFOUJRVThzVVVGQlVTeERRVUZETzB0QlEycENPMEZCUTBZN08wRkRPVVJMTEUxQlFVOHNaME5CUVdsRExGTkJRVkVzTUVKQlFUQkNMRU5CUVVFN1FVRkRPVVVzU1VGQlFTeEpRVUZYTEVsQlFVa3NSMEZCUVR0QlFVTmlMRkZCUVVFc1QwRkJUeXhSUVVGUkxFTkJRVU03UzBGRGFrSTdRVUZaUkN4SlFVRkJMRmRCUVVFc1EwRkJiVUlzVFVGQmIwUXNSVUZCUVRzN1FVRkRja1VzVVVGQlFTeExRVUZMTEVWQlFVVXNRMEZCUXp0UlFVVlNMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNUVUZCVFN4TFFVRk9MRWxCUVVFc1NVRkJRU3hOUVVGTkxFdEJRVTRzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1RVRkJUU3hEUVVGRkxFMUJRVTBzYlVOQlFVa3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRha1VzVVVGQlFTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVFc1JVRkJRU3hIUVVGQkxFMUJRVTBzUzBGQlFTeEpRVUZCTEVsQlFVNHNUVUZCVFN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZPTEUxQlFVMHNRMEZCUlN4TlFVRk5MRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVrc1IwRkJSeXhEUVVGRE8wdEJRM0pETzBGQlJVMHNTVUZCUVN4clFrRkJhMElzUTBGRGRrSXNZMEZCTmtJc1JVRkROMElzWTBGQk5rSXNSVUZETjBJc1dVRkJiMElzUlVGRGNFSXNUVUZCY1VJc1JVRkJRVHRCUVVWeVFpeFJRVUZCTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEZsQlFWa3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRSUVVOMFJDeE5RVUZOTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETzBGQlEzQkRMRkZCUVVFc1RVRkJUU3hOUVVGTkxFZEJRVWNzV1VGQldTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRNVU1zVFVGQlRTeFJRVUZSTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hIUVVGSExFMUJRVTBzUTBGQlF6dFJRVU14UXl4TlFVRk5MRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03UVVGRGJrSXNVVUZCUVN4UFFVRlBMRkZCUVZFc1EwRkJRenRMUVVOcVFqdEJRVU5HT3p0QlEyeERSQ3hOUVVGTlJDeE5RVUZKTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRmNFSXNUVUZCUVN4clEwRkJiVU1zVTBGQlVTeExRVUZMTEVOQlFVTXNZMEZCWXl4RFFVRkJPMEZCVlRGRkxFbEJRVUVzVjBGQlFTeERRVUZ0UWl4TFFVRjNReXhGUVVGQk8wRkJRM3BFTEZGQlFVRXNTMEZCU3l4RlFVRkZMRU5CUVVNN1VVRldTQ3hKUVVGVkxFTkJRVUVzVlVGQlFTeEhRVUZITEVkQlFVY3NRMEZCUXp0UlFVdG9RaXhKUVVGakxFTkJRVUVzWTBGQlFTeEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTldMRkZCUVVFc1NVRkJRU3hEUVVGQkxHTkJRV01zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVOeVF5eFJRVUZCTEVsQlFVRXNRMEZCUVN4WlFVRlpMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZMYkVRc1VVRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVVndRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1pVRkJaU3hEUVVGRExFbEJRVWtzV1VGQldTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0JGTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0QlFVVTNReXhSUVVGQkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1pVRkJaU3hEUVVGRExFbEJRVWtzVjBGQlZ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM0pGTEZGQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdVVUZGTDBJc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETzFGQlEyNUNMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dExRVU5tTzBsQlJVMHNUVUZCVFN4SFFVRkJPMUZCUTFnc1NVRkJTU3h2UWtGQmIwSXNSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkZha01zVFVGQlRTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXp0QlFVTndSQ3hSUVVGQkxFbEJRVWtzU1VGQlNTeERRVUZETEdOQlFXTXNTMEZCU3l4TlFVRk5MRVZCUVVVN1FVRkRiRU1zV1VGQlFTeEpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRTFCUVUwc1EwRkJRenRaUVVNM1FpeHZRa0ZCYjBJc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRE4wSXNVMEZCUVR0QlFVVkVMRkZCUVVFc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVTdXVUZEYmtRc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFpRVU0zUXl4dlFrRkJiMElzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZETjBJc1UwRkJRVHRCUVVWRUxGRkJRVUVzVFVGQlRTeEpRVUZKTEVkQlFVZEJMRTFCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMUZCUTNaRkxFbEJRVWtzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4TFFVRkxMRVZCUVVVN1FVRkRja1FzV1VGQlFTeEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU0zUWl4dlFrRkJiMElzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZETjBJc1UwRkJRVHRCUVVWRUxGRkJRVUVzU1VGQlNTeHZRa0ZCYjBJc1JVRkJSVHRaUVVONFFpeEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNN1FVRkRka0lzVTBGQlFUdExRVU5HTzBsQlJVOHNZMEZCWXl4SFFVRkJPMEZCUTNCQ0xGRkJRVUZCTEUxQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU03VVVGRGRFUXNUVUZCVFN4RFFVRkRMRWRCUVVkQkxFMUJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRE8xRkJSVGxETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkROVUlzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZGTDBJc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRla1FzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEyaEZMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNNVJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYWtVc1UwRkJRVHRSUVVWRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETTBJc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU03V1VGREwwSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETlVRc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkROVVFzVTBGQlFUdEJRVVZFTEZGQlFVRXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlEwRXNUVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZEUVN4TlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSFFTeE5RVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhRU3hOUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZIUVN4TlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU12UlN4UlFVRkJMRTFCUVUwc1IwRkJSeXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUTBFc1RVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJVRXNUVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJSWGhETEZGQlFVRXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEJRVU53UWl4UlFVRkJMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEYkVJc1VVRkJRU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRVZCUVVVc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNN1VVRkRNVVVzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlhCR0xGRkJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRE8wdEJRMnhETzBsQlJVOHNWMEZCVnl4SFFVRkJPMUZCUTJwQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETTBJc1RVRkJUU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRCUVVWNFFpeFpRVUZCTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM0JETEZsQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRjRVFzVTBGQlFUdFJRVVZFTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRNMElzVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dEJRVVY0UWl4WlFVRkJMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM0JFTEZsQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRka1FzVTBGQlFUdEJRVVZFTEZGQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETzB0QlEzQkRPMEZCUTBZN08wRkRia2RaTEUxQlFVRXNhVU5CUVd0RExGTkJRVkVzUzBGQlN5eERRVUZETEdOQlFXTXNRMEZCUVR0QlFWTjZSU3hKUVVGQkxGZEJRVUVzUTBGQmJVSXNTMEZCZFVNc1JVRkJRVHRCUVVONFJDeFJRVUZCTEV0QlFVc3NSVUZCUlN4RFFVRkRPMUZCVkVnc1NVRkJWU3hEUVVGQkxGVkJRVUVzUjBGQlJ5eEhRVUZITEVOQlFVTTdVVUZMYUVJc1NVRkJZeXhEUVVGQkxHTkJRVUVzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEVml4UlFVRkJMRWxCUVVFc1EwRkJRU3hqUVVGakxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkxjRVFzVVVGQlFTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJRenRSUVVWd1FpeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExHVkJRV1VzUTBGQlF5eEpRVUZKTEZsQlFWa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpORkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNWVUZCVlN4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVVUzUXl4UlFVRkJMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1YwRkJWeXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVONFJTeFJRVUZCTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzFGQlJTOUNMRWxCUVVrc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6dFJRVU51UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03UzBGRFpqdEpRVVZOTEUxQlFVMHNSMEZCUVR0UlFVTllMRWxCUVVrc2IwSkJRVzlDTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUldwRExFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTTdRVUZEY0VRc1VVRkJRU3hKUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEV0QlFVc3NUVUZCVFN4RlFVRkZPMEZCUTJ4RExGbEJRVUVzU1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4TlFVRk5MRU5CUVVNN1dVRkROMElzYjBKQlFXOUNMRWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJRemRDTEZOQlFVRTdRVUZGUkN4UlFVRkJMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTzFsQlEyNUVMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGRE4wTXNiMEpCUVc5Q0xFZEJRVWNzU1VGQlNTeERRVUZETzBGQlF6ZENMRk5CUVVFN1FVRkZSQ3hSUVVGQkxFbEJRVWtzYjBKQlFXOUNMRVZCUVVVN1dVRkRlRUlzU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4RFFVRkRPMEZCUTNaQ0xGTkJRVUU3UzBGRFJqdEpRVVZQTEdOQlFXTXNSMEZCUVR0UlFVTndRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlF6TkNMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRE8xbEJSUzlDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGRrUXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETlVRc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkROMFFzVTBGQlFUdEJRVVZFTEZGQlFVRXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTEVsQlFVa3NRMEZCUXl4alFVRmpMRVZCUVVVc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETzFGQlF6RkZMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVVZ3Uml4UlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXp0TFFVTnNRenRKUVVWUExGZEJRVmNzUjBGQlFUdFJRVU5xUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRek5DTEUxQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdRVUZGZUVJc1dVRkJRU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTndReXhaUVVGQkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEyNUVMRmxCUVVFc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGNrUXNVMEZCUVR0QlFVVkVMRkZCUVVFc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRPMHRCUTNCRE8wRkJRMFk3TzBGRGFrVkVMRTFCUVUxQkxFMUJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVWd1FpeE5RVUZCTERKQ1FVRTBRaXhUUVVGUkxFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVRTdRVUZMTVVRc1NVRkJRU3hYUVVGQkxFTkJRVzFDTEZGQlFTdENMRVZCUVVFN1FVRkRhRVFzVVVGQlFTeExRVUZMTEVWQlFVVXNRMEZCUXp0QlFVTlNMRkZCUVVFc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRXRCUVVzc1EwRkJRenRCUVVVNVFpeFJRVUZCTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1VVRkJVU3hEUVVGRE8wRkJSWHBDTEZGQlFVRXNTVUZCU1N4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzV1VGQldTeG5RMEZCWjBNc1JVRkJSVHRCUVVOdVJTeFpRVUZCTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1NVRkJTU3hwUTBGQmFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBGQlF6ZEZMRk5CUVVFN1FVRkJUU3hoUVVGQkxFbEJRVWtzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRmxCUVZrc2FVTkJRV2xETEVWQlFVVTdRVUZETTBVc1dVRkJRU3hKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEVsQlFVa3NhME5CUVd0RExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVNNVJTeFRRVUZCTzBGQlFVMHNZVUZCUVR0QlFVTk1MRmxCUVVFc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eHRSVUZCYlVVc1EwRkJReXhEUVVGRE8wRkJRM1JHTEZOQlFVRTdRVUZGUkN4UlFVRkJMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEdsQ1FVRnBRaXhEUVVGRE8wRkJRek5ETEZsQlFVRXNTMEZCU3l4RlFVRkZMRkZCUVZFN1FVRkRaaXhaUVVGQkxGTkJRVk1zUlVGQlJTeExRVUZMTzBGQlEyaENMRmxCUVVFc1ZVRkJWU3hGUVVGRkxFdEJRVXM3UVVGRGJFSXNVMEZCUVN4RFFVRkRMRU5CUVVNN1FVRkZTQ3hSUVVGQkxFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1FVRkRPVVFzVVVGQlFTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dExRVU4wUWp0SlFVVk5MRTlCUVU4c1IwRkJRVHRCUVVOYUxGRkJRVUVzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRMUVVNeFFqdEJRVVZOTEVsQlFVRXNhVUpCUVdsQ0xFTkJRVU1zUzBGQll5eEZRVUZCTzFGQlEzSkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlJUZERMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03UVVGRk5VTXNVVUZCUVN4TlFVRk5MRzFDUVVGdFFpeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRE8wRkJRMnBFTEZGQlFVRXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhWUVVGVkxFZEJRVWRCTEUxQlFVazdRVUZETjBJc1lVRkJRU3hIUVVGSExFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzYlVKQlFXMUNMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzYlVKQlFXMUNMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRE0wVXNUVUZCVFN4RlFVRkZMRU5CUVVNN1FVRkZXaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1FVRkZlRUlzVVVGQlFTeExRVUZMTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdTMEZEYUVNN1FVRkRSanM3UVVOMFJGa3NUVUZCUVN4M1FrRkJlVUlzVTBGQlVTeExRVUZMTEVOQlFVTXNZMEZCWXl4RFFVRkJPMEZCVTJoRkxFbEJRVUVzVjBGQlFTeERRVUZ0UWl4VlFVRTRRaXhGUVVGQk8wRkJReTlETEZGQlFVRXNTMEZCU3l4RlFVRkZMRU5CUVVNN1VVRlVTQ3hKUVVGVkxFTkJRVUVzVlVGQlFTeEhRVUZITEVkQlFVY3NRMEZCUXp0UlFVdG9RaXhKUVVGakxFTkJRVUVzWTBGQlFTeEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTldMRkZCUVVFc1NVRkJRU3hEUVVGQkxGbEJRVmtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVV0c1JDeFJRVUZCTEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1ZVRkJWU3hEUVVGRE8wRkJSVGxDTEZGQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eGxRVUZsTEVOQlFVTXNTVUZCU1N4WlFVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEY0VVc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eFZRVUZWTEVWQlFVVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJSVGRETEZGQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eGxRVUZsTEVOQlFVTXNTVUZCU1N4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEY2tVc1VVRkJRU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRSUVVVdlFpeEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNN1VVRkRia0lzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMHRCUTJZN1NVRkZUU3hOUVVGTkxFZEJRVUU3VVVGRFdDeEpRVUZKTEc5Q1FVRnZRaXhIUVVGSExFdEJRVXNzUTBGQlF6dEJRVVZxUXl4UlFVRkJMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNVVUZCVVN4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETzBGQlEzSkZMRkZCUVVFc1NVRkJTU3hKUVVGSkxFTkJRVU1zWTBGQll5eExRVUZMTEUxQlFVMHNSVUZCUlR0QlFVTnNReXhaUVVGQkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NUVUZCVFN4RFFVRkRPMWxCUXpkQ0xHOUNRVUZ2UWl4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVNM1FpeFRRVUZCTzBGQlJVUXNVVUZCUVN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXg1UWtGQmVVSXNRMEZCUXl4RlFVRkZPMWxCUTNwRkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zZVVKQlFYbENMRU5CUVVNc1EwRkJRenRaUVVOdVJTeHZRa0ZCYjBJc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRE4wSXNVMEZCUVR0QlFVVkVMRkZCUVVFc1NVRkJTU3h2UWtGQmIwSXNSVUZCUlR0WlFVTjRRaXhKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTEVOQlFVTTdRVUZEZGtJc1UwRkJRVHRMUVVOR08wbEJSVThzWTBGQll5eEhRVUZCTzFGQlEzQkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE0wSXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeEpRVUZKTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkZMMElzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOMlJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU0xUkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RlFVRkZMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTNSQ3hUUVVGQk8wRkJSVVFzVVVGQlFTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhqUVVGakxFVkJRVVVzU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU03VVVGRE1VVXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJSVGxGTEZGQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGJFTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZGZUVZc1VVRkJRU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNN1MwRkRiRU03U1VGRlR5eFhRVUZYTEVkQlFVRTdVVUZEYWtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU16UWl4TlFVRk5MRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRPMEZCUlhoQ0xGbEJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRjRU1zV1VGQlFTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTnVSQ3haUVVGQkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzSkVMRk5CUVVFN1VVRkRSQ3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlJXNURMRkZCUVVFc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRPMHRCUTNCRE8wRkJRMFk3TzBGRGVFVkVMRTFCUVUxQkxFMUJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVWd1FpeE5RVUZCTEhkQ1FVRjVRaXhUUVVGUkxFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVRTdRVUZMZGtRc1NVRkJRU3hYUVVGQkxFTkJRVzFDTEZWQlFUaENMRVZCUVVFN1FVRkRMME1zVVVGQlFTeExRVUZMTEVWQlFVVXNRMEZCUXp0QlFVTlNMRkZCUVVFc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRXRCUVVzc1EwRkJRenRCUVVVNVFpeFJRVUZCTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1ZVRkJWU3hEUVVGRE8xRkJSVGRDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1NVRkJTU3gzUWtGQmQwSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03UVVGRkwwUXNVVUZCUVN4TlFVRk5MRkZCUVZFc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eHBRa0ZCYVVJc1EwRkJRenRCUVVNelF5eFpRVUZCTEV0QlFVc3NSVUZCUlN4UlFVRlJPMEZCUTJZc1dVRkJRU3hUUVVGVExFVkJRVVVzUzBGQlN6dEJRVU5vUWl4WlFVRkJMRlZCUVZVc1JVRkJSU3hMUVVGTE8wRkJRMnhDTEZOQlFVRXNRMEZCUXl4RFFVRkRPMEZCUlVnc1VVRkJRU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUXpsRUxGRkJRVUVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UzBGRGRFSTdTVUZGVFN4UFFVRlBMRWRCUVVFN1FVRkRXaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1MwRkRNVUk3UVVGRlRTeEpRVUZCTEdsQ1FVRnBRaXhEUVVGRExFdEJRV01zUlVGQlFUdFJRVU55UXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdRVUZGY0VRc1VVRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0QlFVVnVSQ3hSUVVGQkxFMUJRVTBzYlVKQlFXMUNMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTTdRVUZEYWtRc1VVRkJRU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEZWQlFWVXNSMEZCUjBFc1RVRkJTVHRCUVVNM1FpeGhRVUZCTEVkQlFVY3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4dFFrRkJiVUlzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4dFFrRkJiVUlzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTXpSU3hOUVVGTkxFVkJRVVVzUTBGQlF6dEJRVVZhTEZGQlFVRXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dEJRVVY0UWl4UlFVRkJMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOb1F6dEJRVU5HT3p0QlF6VkRSRHM3UVVGRlJ6dEJRVU5WTEUxQlFVRXNjVUpCUVhOQ0xGTkJRVkVzUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUVR0QlFVMTJSQ3hKUVVGQkxGZEJRVUVzUTBGQmJVSXNTMEZCYVVNc1JVRkJRVHRCUVVOc1JDeFJRVUZCTEV0QlFVc3NSVUZCUlN4RFFVRkRPMEZCUlZJc1VVRkJRU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0TFFVTndRanRCUVVOR096dEJRMlpFTEUxQlFVMUZMRTlCUVVzc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVVnNRenM3T3pzN1FVRkxSenRCUVVOSExGTkJRVlVzWjBKQlFXZENMRU5CUVRCQ0xFMUJRVk1zUlVGQlFUdEpRVU5xUlN4SlFVRkxMRTFCUVdNc1EwRkJReXhOUVVGTkxFVkJRVVU3VVVGRE1VSXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8wRkJRMnBDTEV0QlFVRTdRVUZCVFN4VFFVRkJPMUZCUTBvc1RVRkJZeXhEUVVGRExGVkJRVlVzUTBGQlEwRXNUMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEyaEVMRXRCUVVFN1FVRkZSQ3hKUVVGQkxFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENPenROUTJaaExHMUNRVUZ0UWl4RFFVRkJPMEZCYzBJNVFqczdPenRCUVVsSE8wRkJRMGdzU1VGQlFTeEpRVUZYTEU5QlFVOHNSMEZCUVR0UlFVTm9RaXhKUVVGSkxFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1JVRkJSVHRaUVVNM1FpeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdRVUZEY2tNc1dVRkJRU3huUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03UVVGRGNrTXNXVUZCUVN4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVkQlFVY3NTMEZCU3l4RFFVRkRPMEZCUTI1RExGTkJRVUU3VVVGRlJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNN1MwRkRNMEk3UVVGRlJDeEpRVUZCTEZkQlFVRXNRMEZCYlVJc1RVRkJjVUlzUlVGQlFUdEJRUzlDZUVNN08wRkJSVWM3UVVGRFl5eFJRVUZCTEVsQlFVRXNRMEZCUVN4aFFVRmhMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZGY2tRN096dEJRVWRITzFGQlEwc3NTVUZCYjBJc1EwRkJRU3h2UWtGQlFTeEhRVUZITEVsQlFVa3NRMEZCUXp0QlFYVkNiRU1zVVVGQlFTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenRCUVVWeVFpeFJRVUZCTEUxQlFVMHNUMEZCVHl4SFFVRXlRanRaUVVOMFF5eEhRVUZITEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1NVRkJVeXhGUVVGRkxFMUJRVTBzUzBGQlNUdEJRVU01UWl4blFrRkJRU3hKUVVGSkxFTkJRVU1zYjBKQlFXOUNMRWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJRMnBETEdkQ1FVRkJMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTTdRVUZGYmtJc1owSkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTTdZVUZEWWp0VFFVTkdMRU5CUVVNN1FVRkZSaXhSUVVGQkxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETzBGQlEzcERMRkZCUVVFc1RVRkJUU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzB0QlEzWkVPMGxCUlUwc1RVRkJUU3hIUVVGQk8xRkJRMWdzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRPMHRCUXk5RE8wRkJRMFk3TzBGRGNrUkVPMEZCUTBFN1FVRkRRVHRCUVVWQkxFMUJRVTBzWjBKQlFXZENMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZGTjBNN1FVRkRRU3hOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVOcVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5xUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVVnFRenM3UVVGRlJ6dEJRVU5JTEUxQlFVMHNiVUpCUVcxQ0xFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkZhRVE3TzBGQlJVYzdRVUZEU0N4TlFVRk5MRzlDUVVGdlFpeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJSV3BFT3p0QlFVVkhPMEZCUTBnc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkZkRU1zVFVGQlRTeE5RVUZOTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03UVVGRGRFTXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYkVNc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkZiRU03T3p0QlFVZEhPMDFCUTFVc2EwSkJRV3RDTEVOQlFVRTdRVUZyUkRkQ0xFbEJRVUVzU1VGQlZ5eE5RVUZOTEVkQlFVRTdVVUZEWml4UFFVRlBMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU03UzBGRGNrSTdTVUZEUkN4SlFVRlhMRTFCUVUwc1EwRkJReXhOUVVFMlFpeEZRVUZCT3pzN1VVRkZOME1zU1VGQlNTeERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMRU5CUVVNc1QwRkJUeXd3UTBGQlJTeFJRVUZSTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVU3V1VGRE0wTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zYVVKQlFYbERMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03UVVGRE1VVXNXVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEdsQ1FVRnBRaXhEUVVGRE8wRkJRMmhFTEZOQlFVRTdPMEZCUjBRc1VVRkJRU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEUxQlFVMHNRMEZCUXpzN1VVRkhkRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZPMWxCUTJoQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhwUWtGQmFVSXNSVUZCUlR0QlFVTTFReXhuUWtGQlFTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhwUWtGQmFVSXNSMEZCUnl4SlFVRkpMRzFDUVVGdFFpeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03UVVGRE4wWXNZVUZCUVR0QlFVTkdMRk5CUVVFN1MwRkRSanRCUVdkQ1JDeEpRVUZCTEVsQlFWY3NlVUpCUVhsQ0xFZEJRVUU3VVVGRGJFTXNUMEZCVHl4SlFVRkpMRU5CUVVNc01FSkJRVEJDTEVOQlFVTTdTMEZEZUVNN1FVRkZSRHM3TzBGQlIwYzdRVUZEU0N4SlFVRkJMRWxCUVZrc2EwSkJRV3RDTEVkQlFVRTdRVUZETlVJc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZkQlFWY3NSMEZCUnl4blFrRkJaMElzUTBGQlF6dExRVU16UlR0QlFVVkVPenM3T3pzN08wRkJUMGM3U1VGRFNDeFhRVU5GTEVOQlFVRXNTVUZCYjBJc1JVRkRjRUlzUzBGQk5FSXNSVUZETlVJc1YwRkJaMFFzUlVGQlJTeEZRVU5zUkN4cFFrRkJLME1zUlVGQlJTeEZRVUZCT3p0QlFYWkdia1E3TzBGQlJVYzdRVUZEU3l4UlFVRkJMRWxCUVVFc1EwRkJRU3haUVVGWkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkZNME03TzBGQlJVYzdRVUZEU3l4UlFVRkJMRWxCUVVFc1EwRkJRU3hUUVVGVExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkZlRU03TzBGQlJVYzdRVUZEU3l4UlFVRkJMRWxCUVVFc1EwRkJRU3hUUVVGVExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkZlRU03T3pzN08wRkJTMGM3VVVGRFN5eEpRVUZ4UWl4RFFVRkJMSEZDUVVGQkxFZEJRVWNzUjBGQlJ5eERRVUZETzBGQlJYQkRPenM3UVVGSFJ6dFJRVU5MTEVsQlFVOHNRMEZCUVN4UFFVRkJMRWRCUVRCQ0xFbEJRVWtzUTBGQlF6dEJRWE5DT1VNN08wRkJSVWM3UVVGRFN5eFJRVUZCTEVsQlFVRXNRMEZCUVN4dFFrRkJiVUlzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVWc1JEczdRVUZGUnp0QlFVTkxMRkZCUVVFc1NVRkJRU3hEUVVGQkxIRkNRVUZ4UWl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzBGQlJYWkVPenRCUVVWSE8wRkJRMHNzVVVGQlFTeEpRVUZCTEVOQlFVRXNNRUpCUVRCQ0xFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRXlRblpFTEZGQlFVRXNTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRGFrSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkZia01zVVVGQlFTeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJRenRSUVVWdVFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhPMEZCUTJRc1dVRkJRU3hUUVVGVExFVkJRVVVzUTBGQlFTeEZRVUZCTEVkQlFVRXNVVUZCVVN4RFFVRkRMRk5CUVZNc2JVTkJRVWtzUjBGQlJ6dEJRVU53UXl4WlFVRkJMRk5CUVZNc1JVRkJSU3hEUVVGQkxFVkJRVUVzUjBGQlFTeFJRVUZSTEVOQlFVTXNVMEZCVXl4dFEwRkJTU3hIUVVGSE8wRkJRM0JETEZsQlFVRXNXVUZCV1N4RlFVRkZMRU5CUVVFc1JVRkJRU3hIUVVGQkxGRkJRVkVzUTBGQlF5eFpRVUZaTEcxRFFVRkpMRWRCUVVjN1dVRkRNVU1zVlVGQlZTeEZRVUZGTEUxQlFVRXNRMEZCUVN4RlFVRkJMRWRCUVVFc1VVRkJVU3hEUVVGRExGVkJRVlVzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUlN4TFFVRkxMRVZCUVVVc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJTU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF6dEJRVU0zUlN4WlFVRkJMRk5CUVZNc1JVRkJSU3hEUVVGQkxFVkJRVUVzUjBGQlFTeFJRVUZSTEVOQlFVTXNVMEZCVXl4dFEwRkJTU3hIUVVGSE8xTkJRM0pETEVOQlFVTTdRVUZGUml4UlFVRkJMRWxCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzWTBGQll5eERRVUZETzB0QlEzUkRPMEZCUlVRN096dEJRVWRITzBsQlEwa3NXVUZCV1N4SFFVRkJPenRSUVVWcVFpeEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRGFFUXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZET3p0UlFVZDBSQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZEWkN4SlFVRkpMRU5CUVVNc01FSkJRVEJDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdRVUZETTBRc1UwRkJRVHRCUVVGTkxHRkJRVUU3T3p0QlFVZE1MRmxCUVVFc1NVRkJTU3hEUVVGRExEQkNRVUV3UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTXpSaXhUUVVGQk96dFJRVWRFTEUxQlFVMHNiVUpCUVcxQ0xFZEJRVWNzU1VGQlNTeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEyaEZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5d3dRa0ZCTUVJc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExFTkJRVU03VVVGRGJFZ3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPenRCUVVkMlF5eFJRVUZCTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5d3dRa0ZCTUVJc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzB0QlEyeEZPMEZCUlVRN096dEJRVWRITzBsQlEwa3NTMEZCU3l4SFFVRkJPMUZCUTFZc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4RFFVRkRPenRCUVVkMFJDeFJRVUZCTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03UVVGRGVrSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXpzN1VVRkhiRVlzVFVGQlRTeHRRa0ZCYlVJc1IwRkJSeXhKUVVGSkxFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGFFVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExEQkNRVUV3UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhaUVVGWkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1EwRkJRenRSUVVOc1NDeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdTMEZEZUVNN1FVRkZSRHM3T3pzN1FVRkxSenRCUVVOSkxFbEJRVUVzVFVGQlRTeERRVUZETEV0QlFXRXNSVUZCUVR0UlFVTjZRaXhKUVVGSkxFdEJRVXNzU1VGQlNTeERRVUZETzFsQlFVVXNUMEZCVHpzN1VVRkhka0lzU1VGQlNTeERRVUZETEhsQ1FVRjVRaXhGUVVGRkxFTkJRVU03TzFGQlIycERMRzFDUVVGdFFpeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNN1VVRkRha1VzU1VGQlNTeHRRa0ZCYlVJc1IwRkJSeXhKUVVGSkxFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRE9VUXNiMEpCUVc5Q0xFTkJRVU1zU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExFTkJRVU03VVVGRGFrWXNUVUZCVFN4cFFrRkJhVUlzUjBGQlJ5eE5RVUZOTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1EwRkJRenM3UVVGSE5VVXNVVUZCUVN4TlFVRk5MSFZDUVVGMVFpeEhRVUZITEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNN08xRkJSMnhITEUxQlFVMHNiVUpCUVcxQ0xFZEJRVWNzU1VGQlNUdEJRVU0zUWl4aFFVRkJMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETzBGQlEzQkNMR0ZCUVVFc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJRenRoUVVOMFF5eFpRVUZaTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU03WVVGRGNrTXNSMEZCUnl4RFFVRkRMRzlDUVVGdlFpeERRVUZETzBGQlEzcENMR0ZCUVVFc1UwRkJVeXhGUVVGRkxFTkJRVU03TzFGQlIyWXNUVUZCVFN4clFrRkJhMElzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNaVUZCWlN4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1VVRkZPVWNzVFVGQlRTeHRRa0ZCYlVJc1IwRkJSeXhKUVVGSkxFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03TzFGQlIyaEZMRk5CUVZNN1FVRkRUaXhoUVVGQkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRPMEZCUTNaQ0xHRkJRVUVzUjBGQlJ5eERRVU5HTEVsQlFVazdRVUZEUkN4aFFVRkJMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETzBGQlEzWkNMR0ZCUVVFc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTTdZVUZEYmtJc1kwRkJZeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVNdlF6dGhRVU5CTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNVMEZCVXl4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRE8yRkJRMjVHTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNXVUZCV1N4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRM0pHTEdGQlFVRXNXVUZCV1N4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVOQlFVTTdPMUZCUjNKRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNN08wRkJSMjVJTEZGQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6czdRVUZITTBJc1VVRkJRU3h0UWtGQmJVSXNSMEZCUnl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkZNVVFzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETzBGQlEzWkRMRkZCUVVFc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eFpRVUZaTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUTBGQlF5eERRVUZET3pzN1VVRkpMMFVzVFVGQlRTd3dRa0ZCTUVJc1IwRkJSeXhuUWtGQlowSXNRMEZEYWtRc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVOQlEzWkZMRU5CUVVNN1VVRkRSaXhOUVVGTkxHRkJRV0VzUjBGQlJ5eE5RVUZOTEVOQlFVTXNhMEpCUVd0Q0xFTkJRemRETEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUTJRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4WlFVRlpMRU5CUVVNc01FSkJRVEJDTEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkRNVVVzUTBGQlF6dEJRVVZHTEZGQlFVRXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJRenM3UVVGSE9VVXNVVUZCUVN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETzBGQlEzcENMRkZCUVVFc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhGUVVGRkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1MwRkRia1k3UVVGRlJEczdPenRCUVVsSE8wRkJRMHNzU1VGQlFTeFZRVUZWTEVOQlFVTXNTVUZCYlVJc1JVRkJRVHRSUVVOd1F5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExHRkJRV0VzUzBGQlNUdFpRVU0xUXl4aFFVRmhMRU5CUVVNc1UwRkJVeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEZGQlFWRXNTMEZCU1R0blFrRkRNME1zVFVGQlRTeEpRVUZKTEVkQlFVY3NVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1YwRkJWeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRk5CUVZNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZGTVVjc1NVRkJTU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEZRVUZGT3p0dlFrRkZaQ3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZET3p0dlFrRkhja01zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1EwRkJRenRCUVVNdlJ5eHBRa0ZCUVR0QlFVTklMR0ZCUVVNc1EwRkJReXhEUVVGRE8wRkJRMHdzVTBGQlF5eERRVUZETEVOQlFVTTdTMEZEU2p0QlFVVkVPenM3UVVGSFJ6dEpRVU5MTEhsQ1FVRjVRaXhIUVVGQk8xRkJReTlDTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8xRkJSV3hFTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSVHRaUVVOa0xFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMEZCUTNCRUxGTkJRVUU3UVVGQlRTeGhRVUZCTzBGQlEwd3NXVUZCUVN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5d3dRa0ZCTUVJc1EwRkJReXhEUVVGRE8xbEJRek5ETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0QlFVTXhReXhUUVVGQk8wRkJSVVFzVVVGQlFTeEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dExRVU4wUkR0QlFVVkVPenM3UVVGSFJ6dEJRVU5MTEVsQlFVRXNkVUpCUVhWQ0xFTkJRVU1zVFVGQmNVSXNSVUZCUVR0UlFVTnVSQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVTdXVUZEYUVJc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8wRkJRM1pETEZOQlFVRTdRVUZCVFN4aFFVRkJPMWxCUTB3c1RVRkJUU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBGQlEyNUNMRk5CUVVFN1FVRkZSQ3hSUVVGQkxFOUJRVThzVFVGQlRTeERRVUZETzB0QlEyWTdRVUZGUkRzN08wRkJSMGM3UVVGRFN5eEpRVUZCTEhWQ1FVRjFRaXhEUVVGRExFMUJRWEZDTEVWQlFVRTdVVUZEYmtRc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTzBGQlEyaENMRmxCUVVFc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhwUWtGQmVVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOMlJpeFRRVUZCTzBGQlFVMHNZVUZCUVR0WlFVTk1MRTFCUVUwc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU51UWl4VFFVRkJPMEZCUlVRc1VVRkJRU3hQUVVGUExFMUJRVTBzUTBGQlF6dExRVU5tTzBGQlEwWTdPMEZEYUZkRU8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZ2UjBFN1FVRkRUeXhUUVVGVExGTkJRVk1zUTBGQlF5eFBRVUZQTEVWQlFVVXNWVUZCVlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hUUVVGVExFVkJRVVU3UVVGRE4wUXNTVUZCU1N4VFFVRlRMRXRCUVVzc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJTeFBRVUZQTEV0QlFVc3NXVUZCV1N4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEZWQlFWVXNUMEZCVHl4RlFVRkZMRVZCUVVVc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVN1FVRkRhRWdzU1VGQlNTeFBRVUZQTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zUlVGQlJTeFZRVUZWTEU5QlFVOHNSVUZCUlN4TlFVRk5MRVZCUVVVN1FVRkRMMFFzVVVGQlVTeFRRVUZUTEZOQlFWTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTI1SExGRkJRVkVzVTBGQlV5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTNSSExGRkJRVkVzVTBGQlV5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVVc1RVRkJUU3hEUVVGRExFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUTNSSUxGRkJRVkVzU1VGQlNTeERRVUZETEVOQlFVTXNVMEZCVXl4SFFVRkhMRk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEZWQlFWVXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlF6bEZMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRMUE3TzBGRGVFaG5RaXhUUVVGQkxIbENRVUY1UWl4RFFVRkRMRTFCUVhOQ0xFVkJRVVVzVVVGQk1FTXNSVUZCUVR0SlFVTXhSeXhOUVVGTkxGTkJRVk1zUjBGQmNVSXNSVUZCUlN4RFFVRkRPMGxCUlhaRExFbEJRVWtzU1VGQlNTeEhRVUV3UWl4TlFVRk5MRU5CUVVNN1NVRkRla01zVDBGQlR5eEpRVUZKTEV0QlFVc3NTVUZCU1N4RlFVRkZPMEZCUTNCQ0xGRkJRVUVzVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVONFFpeFJRVUZCTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRM0JDTEV0QlFVRTdRVUZGUkN4SlFVRkJMRk5CUVZNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eFJRVUZSTEV0QlFVazdVVUZETjBJc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBGQlEzSkNMRXRCUVVNc1EwRkJReXhEUVVGRE8wRkJRMHc3TzBGRFpFRTdPenM3T3p0QlFVMUhPMEZCUTJFc1UwRkJRU3hwUTBGQmFVTXNRMEZETDBNc1RVRkJjMElzUlVGRGRFSXNVVUZCTmtNc1JVRkJRVHRKUVVVM1F5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFdEJRVXNzUzBGQlNUdEJRVU5vUXl4UlFVRkJMRTFCUVUwc1RVRkJUU3hIUVVGSExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVTXZRaXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlExZ3NXVUZCUVN4cFEwRkJhVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1FVRkRjRVFzVTBGQlFUdEJRVU5JTEV0QlFVTXNRMEZCUXl4RFFVRkRPMEZCUTB3N08wMURWbUVzYjBKQlFXOUNMRU5CUVVFN1FVRkJha01zU1VGQlFTeFhRVUZCTEVkQlFVRTdRVUZEVlN4UlFVRkJMRWxCUVVFc1EwRkJRU3hQUVVGUExFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFYTkNMRU5CUVVNN1FVRnJRM2hETEZGQlFVRXNTVUZCUVN4RFFVRkJMSEZDUVVGeFFpeEhRVUZITEVsQlFVa3NSMEZCUnl4RlFVRXlReXhEUVVGRE8wdEJjVXR3Ump0QlFYUk5ReXhKUVVGQkxFbEJRVmNzVFVGQlRTeEhRVUZCTzFGQlEyWXNUMEZCVHl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRE8wdEJRM0pDTzBGQlJVUTdPMEZCUlVjN1FVRkRTQ3hKUVVGQkxFbEJRVmNzVjBGQlZ5eEhRVUZCTzBGQlEzQkNMRkZCUVVFc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eHpSVUZCYzBVc1EwRkJReXhEUVVGRE8xRkJSWEpHTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRMUVVOeVFqdEJRVVZFTEVsQlFVRXNTVUZCVnl4alFVRmpMRWRCUVVFN1FVRkRka0lzVVVGQlFTeE5RVUZOTEVkQlFVY3NSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJPRUlzUTBGQlF6dFJRVU5zUkN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEZWQlFWVXNTMEZCU1R0WlFVTnNReXhWUVVGVkxFTkJRVU1zWTBGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMR0ZCUVdFc1MwRkJTVHRCUVVOc1JDeG5Ra0ZCUVN4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETzBGQlEzcENMR0ZCUVVNc1EwRkJReXhEUVVGRE8wRkJRMHdzVTBGQlF5eERRVUZETEVOQlFVTTdRVUZEU0N4UlFVRkJMRTlCUVU4c1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0TFFVTjRRanRCUVVWRUxFbEJRVUVzU1VGQlZ5eFRRVUZUTEVkQlFVRTdRVUZEYkVJc1VVRkJRU3hOUVVGTkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCZVVJc1EwRkJRenRSUVVNM1F5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExHRkJRV0VzUzBGQlNUdFpRVU0xUXl4aFFVRmhMRU5CUVVNc1UwRkJVeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEZGQlFWRXNTMEZCU1R0QlFVTXpReXhuUWtGQlFTeEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM0JDTEdGQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTB3c1UwRkJReXhEUVVGRExFTkJRVU03UVVGRFNDeFJRVUZCTEU5QlFVOHNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dExRVU40UWp0QlFVbE5MRWxCUVVFc1VVRkJVU3hEUVVGRExFdEJRWGxDTEVWQlFVRTdRVUZEZGtNc1VVRkJRU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVWNFFpeFJRVUZCTEVsQlFVa3NVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlF6TkVMRWxCUVVrc1UwRkJVeXhKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU55UWl4WlFVRkJMRk5CUVZNc1IwRkJSeXhKUVVGSkxFZEJRVWNzUlVGQmMwSXNRMEZCUXp0WlFVTXhReXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNN1FVRkRka1FzVTBGQlFUdEJRVU5FTEZGQlFVRXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dExRVU4wUWp0QlFVVkVPenRCUVVWSE8wRkJRMGtzU1VGQlFTeGhRVUZoTEVOQlFVTXNTMEZCZVVJc1JVRkJRVHRCUVVNMVF5eFJRVUZCTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc09FVkJRVGhGTEVOQlFVTXNRMEZCUXp0QlFVVTNSaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRkRUk3UVVGRlRTeEpRVUZCTEZkQlFWY3NRMEZCUXl4TFFVRjVRaXhGUVVGQk8wRkJRekZETEZGQlFVRXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdRVUZGTTBJc1VVRkJRU3hOUVVGTkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVVc1EwRkJRenRCUVVNNVJDeFJRVUZCTEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UzBGRGVrSTdRVUZGUkRzN1FVRkZSenRCUVVOSkxFbEJRVUVzWjBKQlFXZENMRU5CUVVNc1MwRkJlVUlzUlVGQlFUdEJRVU12UXl4UlFVRkJMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zYjBaQlFXOUdMRU5CUVVNc1EwRkJRenRCUVVWdVJ5eFJRVUZCTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UzBGRGVrSTdTVUZGVFN4WlFVRlpMRWRCUVVFN1FVRkRha0lzVVVGQlFTeE5RVUZOTEdkQ1FVRm5RaXhIUVVGSExFbEJRVWtzUjBGQlJ5eEZRVUZ6UWl4RFFVRkRPMEZCUTNaRUxGRkJRVUVzVFVGQlRTeGxRVUZsTEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVhOQ0xFTkJRVU03UVVGRGRFUXNVVUZCUVN4TlFVRk5MR0ZCUVdFc1IwRkJSeXhKUVVGSkxFZEJRVWNzUlVGQmEwSXNRMEZCUXp0QlFVVm9SQ3hSUVVGQkxFdEJRVXNzVFVGQlRTeFZRVUZWTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSVHRaUVVOeVF5eEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVlVGQlZTeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxHVkJRV1VzUlVGQlJTeGhRVUZoTEVWQlFVVXNRMEZCUXl4VlFVRlZMRXRCUXk5R0xGVkJRVlVzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZETVVJc1EwRkJRenRCUVVOSUxGTkJRVUU3UzBGRFJqdEpRVVZOTEV0QlFVc3NSMEZCUVR0QlFVTldMRkZCUVVFc1RVRkJUU3huUWtGQlowSXNSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJjMElzUTBGQlF6dEJRVU4yUkN4UlFVRkJMRTFCUVUwc1pVRkJaU3hIUVVGSExFbEJRVWtzUjBGQlJ5eEZRVUZ6UWl4RFFVRkRPMEZCUTNSRUxGRkJRVUVzVFVGQlRTeGhRVUZoTEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVd0Q0xFTkJRVU03UVVGRmFFUXNVVUZCUVN4TFFVRkxMRTFCUVUwc1ZVRkJWU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVTdXVUZEY2tNc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRlZCUVZVc1JVRkJSU3huUWtGQlowSXNSVUZCUlN4bFFVRmxMRVZCUVVVc1lVRkJZU3hGUVVGRkxFTkJRVU1zVlVGQlZTeExRVU12Uml4VlFVRlZMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRMjVDTEVOQlFVTTdRVUZEU0N4VFFVRkJPMHRCUTBZN1FVRkZUU3hKUVVGQkxFMUJRVTBzUTBGQlF5eExRVUZoTEVWQlFVRTdRVUZEZWtJc1VVRkJRU3hOUVVGTkxHZENRVUZuUWl4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGelFpeERRVUZETzBGQlEzWkVMRkZCUVVFc1RVRkJUU3hsUVVGbExFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFYTkNMRU5CUVVNN1FVRkRkRVFzVVVGQlFTeE5RVUZOTEdGQlFXRXNSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJhMElzUTBGQlF6dEJRVVZvUkN4UlFVRkJMRXRCUVVzc1RVRkJUU3hWUVVGVkxFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlRzN1dVRkZja01zU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExGVkJRVlVzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3hsUVVGbExFVkJRVVVzWVVGQllTeEZRVUZGTEVOQlFVTXNWVUZCVlN4TFFVTXZSaXhWUVVGVkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVTjZRaXhEUVVGRE96czdXVUZKUml4cFEwRkJhVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1RVRkJUU3hMUVVGSk96czdRVUZGTlVRc1owSkJRVUVzU1VGQlNTeERRVUZETEVOQlFVRXNSVUZCUVN4SFFVRkJMRU5CUVVFc1JVRkJRU3hIUVVGQkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETERCRFFVRkZMRWxCUVVrc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTzBGQlF6TkVMRzlDUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETzBGQlEySXNhVUpCUVVFN08wRkJSMFFzWjBKQlFVRXNUVUZCVFN4RFFVRkRMR2xDUVVGcFFpeERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVOMlF5eG5Ra0ZCUVN4UFFVRlBMRXRCUVVzc1EwRkJRenRCUVVObUxHRkJRVU1zUTBGQlF5eERRVUZETzBGQlEwb3NVMEZCUVR0TFFVTkdPMEZCUlVRN096czdPenM3T3pzN096dEJRVmxITzBsQlEwc3NhMEpCUVd0Q0xFTkJRM2hDTEZWQlFUaENMRVZCUXpsQ0xHZENRVUY1UXl4RlFVTjZReXhsUVVGM1F5eEZRVU40UXl4aFFVRnJReXhGUVVOc1F5eFJRVUZyUkN4RlFVRkJPMEZCUld4RUxGRkJRVUVzU1VGQlNTeGxRVUZsTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRk8xbEJRMjVETEU5QlFVODdRVUZEVWl4VFFVRkJPMEZCUlVRc1VVRkJRU3hKUVVGSkxHZENRVUZuUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJUdEJRVU53UXl4WlFVRkJMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zSzBWQlFTdEZMRU5CUVVNc1EwRkJRenRCUVVOc1J5eFRRVUZCTzBGQlEwUXNVVUZCUVN4blFrRkJaMElzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1VVRkZha01zVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMEZCUTNKRUxGRkJRVUVzUzBGQlN5eE5RVUZOTEZOQlFWTXNTVUZCU1N4VlFVRlZMRVZCUVVVN1FVRkRiRU1zV1VGQlFTeDVRa0ZCZVVJc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF5eHBRa0ZCYVVJc1MwRkJTVHRuUWtGRGVrUXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRWRCUVVjc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRPMEZCUTNCRkxHZENRVUZCTEVsQlFVa3NVMEZCVXl4RlFVRkZPMEZCUTJJc2IwSkJRVUVzUzBGQlN5eE5RVUZOTEdGQlFXRXNTVUZCU1N4VFFVRlRMRVZCUVVVN1FVRkRja01zZDBKQlFVRXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEdGQlFXRXNSVUZCUlN4blFrRkJaMElzUlVGQlJTeGxRVUZsTEVWQlFVVXNZVUZCWVN4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM0JITEhGQ1FVRkJPMEZCUTBZc2FVSkJRVUU3UVVGQlRTeHhRa0ZCUVN4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFZEJRVWNzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhGUVVGRk96dEJRVVZvUkN4dlFrRkJRU3hwUWtGQmFVSXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eExRVUZMTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkRiRVFzYjBKQlFVRXNZVUZCWVN4RFFVRkRMRWRCUVVjc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRPMEZCUTNSRExHbENRVUZCTzBGQlEwZ3NZVUZCUXl4RFFVRkRMRU5CUVVNN1FVRkRTaXhUUVVGQk96dEJRVWRFTEZGQlFVRXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF6dFJRVU12UWl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFJRVVZvUkN4UlFVRlJMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03UVVGRmNrSXNVVUZCUVN4aFFVRmhMRU5CUVVNc1IwRkJSeXhEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVVnVReXhSUVVGQkxHVkJRV1VzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1MwRkRha003UVVGRlJEczdPenRCUVVsSE8wRkJRMHNzU1VGQlFTeG5Ra0ZCWjBJc1EwRkJReXhWUVVFNFFpeEZRVUZCTzBGQlEzSkVMRkZCUVVFc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFXdENMRU5CUVVNN1FVRkZkRU1zVVVGQlFTeE5RVUZOTEUxQlFVMHNSMEZCUnl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU4wUXl4UlFVRkJMRWxCUVVrc1RVRkJUU3hGUVVGRk8wRkJRMVlzV1VGQlFTeEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRMnBDTEZOQlFVRTdVVUZGUkN4VlFVRlZMRU5CUVVNc1kwRkJZeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEdGQlFXRXNTMEZCU1R0WlFVTnNSQ3hoUVVGaExFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRkZCUVZFc1MwRkJTVHRCUVVNelF5eG5Ra0ZCUVN4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBGQlEzQkNMR0ZCUVVNc1EwRkJReXhEUVVGRE8wRkJRMHdzVTBGQlF5eERRVUZETEVOQlFVTTdRVUZGU0N4UlFVRkJMRTlCUVU4c1IwRkJSeXhEUVVGRE8wdEJRMW83UVVGRFJqczdRVU5vVFVRN08wRkJSVWM3UVVGRFNDeE5RVUZOTEhOQ1FVRnpRaXhIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU03VFVGRkwwTXNlVUpCUVhsQ0xFTkJRVUU3UVVGdFFuQkRMRWxCUVVFc1NVRkJWeXhKUVVGSkxFZEJRVUU3VVVGRFlpeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHTkJRV01zUTBGQlF6dExRVU5xUkR0SlFVVkVMRmRCUVcxQ0xFTkJRVUVzVFVGQmEwSXNSVUZCUlN4UFFVRXdReXhGUVVGQk8wRkJReTlGTEZGQlFVRXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU03VVVGRmNrSXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1IwRkJSeXhQUVVGUExFdEJRVUVzU1VGQlFTeEpRVUZRTEU5QlFVOHNTMEZCVUN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeFBRVUZQTEVOQlFVVXNaVUZCWlN4RFFVRkRPMUZCUTJoRUxFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1IwRkJSeXhQUVVGUExFdEJRVUVzU1VGQlFTeEpRVUZRTEU5QlFVOHNTMEZCVUN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeFBRVUZQTEVOQlFVVXNhMEpCUVd0Q0xFTkJRVU03UzBGRGRrUTdRVUZGV1N4SlFVRkJMRk5CUVZNc1EwRkJReXhKUVVGVkxFVkJRVUU3TzBGQlF5OUNMRmxCUVVFc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eHZRa0ZCYjBJc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1UwRkRMMFFzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZCUVR0QlFVVkVPenM3T3p0QlFVdEhPMEZCUTFjc1NVRkJRU3hQUVVGUExFTkJRVU1zU1VGQlZTeEZRVUZCT3p0WlFVTTVRaXhOUVVGTkxGRkJRVkVzUjBGQlJ5eE5RVUZOTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRE5VTXNTVUZCU1N4UlFVRlJMRWxCUVVrc1NVRkJTU3hGUVVGRk8wRkJRM0JDTEdkQ1FVRkJMRTlCUVU4c1VVRkJVU3hEUVVGRE8wRkJRMnBDTEdGQlFVRTdXVUZGUkN4TlFVRk5MRkZCUVZFc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkROVU1zU1VGQlNTeFJRVUZSTEVsQlFVa3NTVUZCU1N4RlFVRkZPMEZCUTNCQ0xHZENRVUZCTEU5QlFVOHNVVUZCVVN4RFFVRkRPMEZCUTJwQ0xHRkJRVUU3UVVGRlJDeFpRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMU5CUTJJc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGQlFUdEJRVVZoTEVsQlFVRXNVMEZCVXl4RFFVRkRMRWxCUVZVc1JVRkJRVHM3TzBGQlEyaERMRmxCUVVFc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRjNRaXhEUVVGRE96dEJRVWRzUkN4WlFVRkJMRTFCUVUwc1owSkJRV2RDTEVkQlFVY3NRMEZCUVN4RFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxFTkJRVU1zWTBGQll5eE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkZMRTlCUVU4c1EwRkJReXg1UWtGQmVVSXNRMEZCUXl4alFVRmpMRU5CUVVNc1RVRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU4yUnl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVWQlFVVTdRVUZEY2tJc1owSkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTTdRVUZEWWl4aFFVRkJPMEZCUlVRc1dVRkJRU3hOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEc5Q1FVRnZRaXhGUVVGRkxFTkJRVU03V1VGRk0wTXNUVUZCVFN4VlFVRlZMRWRCUVhGQ0xFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGRkwwVXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSeXg1UWtGQmVVSXNRMEZCUXl4alFVRmpMRU5CUlM5RUxFTkJRVU03V1VGRFpDeEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZPMEZCUTJRc1owSkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTTdRVUZEWWl4aFFVRkJPMEZCUlVRc1dVRkJRU3hOUVVGTkxGZEJRVmNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNWMEZCVnl4RFFVRkRPMEZCUXpGRExGbEJRVUVzU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExFZEJRVWNzUTBGQlF5eFhRVUZYTEVOQlFVTXNSVUZCUlR0blFrRkROVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZEVml4RFFVRnpReXh0UTBGQlFTeEZRVUZCTEhsQ1FVRjVRaXhEUVVGRExHTkJRV01zUTBGQmFVSXNZMEZCUVN4RlFVRkJMRmRCUVZjc1EwRkJSeXhEUVVGQkxFTkJRVUVzUTBGRE9VY3NRMEZCUXp0QlFVTkdMR2RDUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETzBGQlEySXNZVUZCUVR0QlFVVkVMRmxCUVVFc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNVMEZCVXl4RFFVRkRMRk5CUVZNc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4alFVRmpMRVZCUVVVc1UwRkJVeXhMUVVGSk96dG5Ra0ZEZGtVc1RVRkJUU3hKUVVGSkxFZEJRVWNzVlVGQlZTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkxMRU5CUVVNc1EwRkJRenRCUVVNNVF5eG5Ra0ZCUVN4TlFVRk5MRmRCUVZjc1IwRkJSeXhqUVVGakxFTkJRVU1zUzBGQlRTeERRVUZETzJkQ1FVVXhReXhKUVVGSkxGZEJRVmNzUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZEZEVJc2IwSkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTzNkQ1FVTjBReXhOUVVGTkxFVkJRVVVzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVUVzUlVGQlFTeEhRVUZCTEZkQlFWY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenQzUWtGRGJrWXNUVUZCVFN4RlFVRkZMRTFCUVVFc1YwRkJWeXhEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEcxRFFVRkpMRWRCUVVjN1FVRkRla01zY1VKQlFVRXNRMEZCUXl4RFFVRkRPMEZCUTBvc2FVSkJRVUU3Y1VKQlFVMHNTVUZCU1N4WFFVRlhMRU5CUVVNc1QwRkJUeXhGUVVGRk8wRkJRemxDTEc5Q1FVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRWxCUVVrc1JVRkJSVHQzUWtGRGRrTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkJMRVZCUVVFc1IwRkJRU3hYUVVGWExFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNSMEZCU1N4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdkMEpCUTNCR0xFMUJRVTBzUlVGQlJTeE5RVUZCTEZkQlFWY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3h0UTBGQlNTeEhRVUZITzNkQ1FVTjZReXhKUVVGSkxFVkJRVVVzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVUVzUlVGQlFTeEhRVUZCTEZkQlFWY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVOcVJpeHhRa0ZCUVN4RFFVRkRMRU5CUVVNN1FVRkRTaXhwUWtGQlFUdEJRVVZFTEdkQ1FVRkJMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zTkVOQlFUUkRMRk5CUVZNc1EwRkJRU3h0UWtGQlFTeERRVUZ4UWl4RFFVRkRMRU5CUVVNN1FVRkRPVVlzWVVGQlF5eERRVUZETEVOQlFVTTdRVUZGU0N4WlFVRkJMRTFCUVUwc1kwRkJZeXhIUVVGSExFTkJRVUVzUlVGQlFTeEhRVUZCTEZOQlFWTXNRMEZCUXl4alFVRmpMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVVVzUjBGQlJ5eERRVU5zUkN4RFFVRkRMRzFDUVVGdFFpeEZRVUZGTEdOQlFXTXNTMEZCWjBNN08wRkJRMnhGTEdkQ1FVRkJMRTFCUVUwc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlFTeEZRVUZCTEVkQlFVRXNiVUpCUVcxQ0xFTkJRVU1zVTBGQlV5eE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZKTEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFdEJRVWs3YjBKQlEyNUZMRTFCUVUwc1IwRkJSeXhIUVVGSExGTkJRVk1zUzBGQlZDeEpRVUZCTEVsQlFVRXNVMEZCVXl4MVFrRkJWQ3hUUVVGVExFTkJRVWNzVTBGQlV5eERRVUZETEVOQlFVTTdiMEpCUlc1RExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVsQlFVa3NSVUZCUlR0M1FrRkRaaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVU5pTEVOQlFVRXNPRU5CUVVFc1JVRkJhVVFzWTBGQll5eERRVUZwUXl3NFFrRkJRU3hGUVVGQkxGTkJRVk1zUTBGQlowSXNZMEZCUVN4RFFVRkJMRU5CUXpGSUxFTkJRVU03UVVGRFNDeHhRa0ZCUVR0QlFVVkVMRzlDUVVGQkxFOUJRVThzUjBGQlJ5eERRVUZETzBGQlEySXNhVUpCUVVNc1EwRkJReXhEUVVGRE8yZENRVVZJTEU5QlFVODdRVUZEVEN4dlFrRkJRU3hUUVVGVExFVkJRVVVzU1VGQlNUdHZRa0ZEWml4SlFVRkpMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTXNTVUZCU1R0cFFrRkRMMElzUTBGQlF6dEJRVU5LTEdGQlFVTXNRMEZEUml4RFFVRkRPMWxCUlVZc1EwRkJRU3hGUVVGQkxFZEJRVUVzVTBGQlV5eERRVUZETEU5QlFVOHNUVUZCUlN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJRU3hQUVVGUExFTkJRVU1zUTBGQlF5eFpRVUZaTEVWQlFVVXNUMEZCVHl4TFFVRkpPenRCUVVOdVJDeG5Ra0ZCUVN4TlFVRk5MRmxCUVZrc1IwRkJSeXhaUVVGWkxFTkJRVU1zVFVGQlRTeERRVUZET3p0QlFVZDZReXhuUWtGQlFTeE5RVUZOTEhWQ1FVRjFRaXhIUVVGSExFTkJRVUVzUlVGQlFTeEhRVUZCTEZsQlFWa3NRMEZCUXl4alFVRmpMRTFCUVVVc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVUVzUjBGQlJ5eERRVUZETEVOQlFVTXNZMEZCWXl4TFFVRkpPMjlDUVVOc1JpeE5RVUZOTEV0QlFVc3NSMEZCUnl4alFVRmpMRXRCUVdRc1NVRkJRU3hKUVVGQkxHTkJRV01zZFVKQlFXUXNZMEZCWXl4RFFVRkhMR05CUVdNc1EwRkJReXhEUVVGRE8yOUNRVVV2UXl4SlFVRkpMRXRCUVVzc1NVRkJTU3hKUVVGSkxFVkJRVVU3ZDBKQlEycENMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRMklzUTBGQlFTeDFRMEZCUVN4RlFVRXdReXhQUVVGUExFTkJRWEZETEd0RFFVRkJMRVZCUVVFc1kwRkJZeXhEUVVGblFpeGpRVUZCTEVOQlFVRXNRMEZEY2tnc1EwRkJRenRCUVVOSUxIRkNRVUZCTzBGQlJVUXNiMEpCUVVFc1QwRkJUeXhMUVVGTExFTkJRVU03UVVGRFppeHBRa0ZCUXl4RFFVRkRMRU5CUVVNN1owSkJSVWdzVFVGQlRTeE5RVUZOTEVkQlFVY3NXVUZCV1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hKUVVGSkxFZEJRVWNzVlVGQlZTeERRVUZETEZsQlFWa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU03UVVGRmVrWXNaMEpCUVVFc1NVRkJTU3hsUVVFclJDeERRVUZETzBGQlEzQkZMR2RDUVVGQkxGbEJRVmtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4WFFVRlhMRXRCUVVrN1FVRkRia01zYjBKQlFVRXNTVUZCU1N4bFFVRmxMRVZCUVVVN08wRkJSVzVDTEhkQ1FVRkJMRTFCUVUwc1UwRkJVeXhIUVVGSExHVkJRV1VzUTBGQlF5eEpRVUZKTEVOQlFVTTdRVUZEZGtNc2QwSkJRVUVzVFVGQlRTeEpRVUZKTEVkQlFVY3NWVUZCVlN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJRMjVETEhkQ1FVRkJMRTFCUVUwc1ZVRkJWU3hIUVVGSExGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTTdRVUZEY0VNc2QwSkJRVUVzVFVGQlRTeExRVUZMTEVkQlFVY3NWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE96dEJRVWR5UXl4M1FrRkJRU3hOUVVGTkxFOUJRVThzUjBGQmQwTTdORUpCUTI1RUxGTkJRVk1zUlVGQlJTeGxRVUZsTEVOQlFVTXNVMEZCVXpzMFFrRkRjRU1zVTBGQlV5eEZRVUZGTEdWQlFXVXNRMEZCUXl4VFFVRlRPelJDUVVOd1F5eFpRVUZaTEVWQlFVVXNaVUZCWlN4RFFVRkRMRmxCUVZrN05FSkJRekZETEZOQlFWTXNSVUZCUlN4bFFVRmxMRU5CUVVNc1UwRkJVenRCUVVOd1F5dzBRa0ZCUVN4VlFVRlZMRVZCUTFJc1pVRkJaU3hEUVVGRExGVkJRVlVzU1VGQlNTeEpRVUZKTzBGQlEyaERMR3REUVVGRkxFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhsUVVGbExFTkJRVU1zVlVGQlZTeERRVUZETzBGQlF6TkVMR3REUVVGRkxGTkJRVk03ZVVKQlEyaENMRU5CUVVNN08wRkJSMFlzZDBKQlFVRXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JVRkJSU3gxUWtGQmRVSXNRMEZCUXl4RFFVRkRPMEZCUXk5RkxIZENRVUZCTEVsQlFVa3NUVUZCVFN4RlFVRkZPMEZCUTFZc05FSkJRVUVzUzBGQlN5eERRVUZETEUxQlFVMHNSMEZCUnl4TlFVRk5MRU5CUVVNN1FVRkRka0lzZVVKQlFVRTdRVUZGUkN4M1FrRkJRU3hQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTNwQ0xIRkNRVUZCTzI5Q1FVVkVMR1ZCUVdVc1IwRkJSeXhYUVVGWExFTkJRVU03UVVGRGFFTXNhVUpCUVVNc1EwRkJReXhEUVVGRE8wRkJRMHdzWVVGQlF5eERRVUZETEVOQlFVTTdPMWxCUjBnc1QwRkJUeXhEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETzBGQlJYWkNMRmxCUVVFc1QwRkJUeXhQUVVGUExFTkJRVU03TzBGQlEyaENMRXRCUVVFN1FVRkZZU3hKUVVGQkxGTkJRVk1zUTBGQlF5eEpRVUZWTEVWQlFVRTdPenRCUVVOb1F5eFpRVUZCTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQmQwSXNRMEZCUXpzN1FVRkhiRVFzV1VGQlFTeE5RVUZOTEZOQlFWTXNSMEZCUnl4RFFVRkJMRU5CUVVFc1JVRkJRU3hIUVVGQkxFbEJRVWtzUTBGQlF5eGpRVUZqTEUxQlFVVXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVFc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpkRUxFbEJRVWtzUTBGQlF5eFRRVUZUTEVWQlFVVTdRVUZEWkN4blFrRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5pTEdGQlFVRTdPMWxCUjBRc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlJ5eExRVUZMTEVOQlFUQkNMRU5CUVVNN1dVRkRjRVVzVFVGQlRTeDNRa0ZCZDBJc1IwRkJSeXhUUVVGVExFdEJRVUVzU1VGQlFTeEpRVUZVTEZOQlFWTXNTMEZCVkN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeFRRVUZUTEVOQlFVVXNhMEpCUVd0Q0xFTkJRVU03V1VGREwwUXNTVUZCU1N4RFFVRkRMSGRDUVVGM1FpeEZRVUZGTzBGQlF6ZENMR2RDUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETzBGQlEySXNZVUZCUVR0WlFVVkVMRTFCUVUwc1owSkJRV2RDTEVkQlFVY3NkMEpCUVhkQ0xFdEJRVUVzU1VGQlFTeEpRVUY0UWl4M1FrRkJkMElzUzBGQmVFSXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzZDBKQlFYZENMRU5CUVVVc1ZVRkJWU3hEUVVGRE8xbEJRemxFTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUlVGQlJUdEJRVU55UWl4blFrRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5pTEdGQlFVRTdRVUZGUkN4WlFVRkJMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzYjBKQlFXOUNMRVZCUVVVc1EwRkJRenRaUVVVelF5eE5RVUZOTEZWQlFWVXNSMEZCY1VJc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEdWQlFXVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVVdlJTeFpRVUZCTEUxQlFVMHNZMEZCWXl4SFFVRkhMRU5CUVVFc1JVRkJRU3hIUVVGQkxIZENRVUYzUWl4RFFVRkRMR05CUVdNc1RVRkJSU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlFTeEhRVUZITEVOQlEycEZMRU5CUVVNc2JVSkJRVzFDTEV0QlFXZERPenRuUWtGRGJFUXNUVUZCVFN4SlFVRkpMRWRCUVVjc1ZVRkJWU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRWxCUVVzc1EwRkJReXhEUVVGRE8wRkJRMjVFTEdkQ1FVRkJMRTFCUVUwc1UwRkJVeXhIUVVGSExFTkJRVU1zVFVGQlFTeHRRa0ZCYlVJc1EwRkJReXhUUVVGVExFMUJRVWtzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFZEJRVUVzUlVGQlJTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMR05CUVdNc1JVRkJSU3hUUVVGVExFdEJRVWs3TzBGQlEzaEdMRzlDUVVGQkxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMjlDUVVOb1JDeEpRVUZKTEdOQlFXTXNRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRla0lzZDBKQlFVRXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkRVaXhOUVVGQkxHTkJRV01zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4TlFVRkpMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkJMRWRCUVVjc1JVRkRPVUlzUTBGQlFTeEZRVUZCTEVkQlFVRXNZMEZCWXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFMUJRVWtzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFZEJRVUVzUjBGQlJ5eEZRVU01UWl4alFVRmpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEdOQlFXTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGRGVrUXNRMEZCUXp0QlFVTklMSEZDUVVGQk8wRkJSVVFzYjBKQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNTVUZCU1N4RlFVRkZPM2RDUVVOMFF5eE5RVUZOTzBGQlEwNHNkMEpCUVVFc1RVRkJUU3hGUVVGRkxFTkJRVUVzUlVGQlFTeEhRVUZCTEdOQlFXTXNRMEZCUXl4TlFVRk5MRzFEUVVGSkxFZEJRVWM3UVVGRGNrTXNjVUpCUVVFc1EwRkJReXhEUVVGRE8wRkJRMHdzYVVKQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVWSUxFOUJRVThzUlVGQlJTeFRRVUZUTEVWQlFVVXNRMEZCUXp0QlFVTjJRaXhoUVVGRExFTkJRMFlzUTBGQlF6czdRVUZIUml4WlFVRkJMR2RDUVVGblFpeExRVUZvUWl4SlFVRkJMRWxCUVVFc1owSkJRV2RDTEV0QlFXaENMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEdkQ1FVRm5RaXhEUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETEdWQlFXVXNSVUZCUlN4VlFVRlZMRXRCUVVrN1FVRkRlRVFzWjBKQlFVRXNUVUZCVFN4WFFVRlhMRWRCUVVjc1pVRkJaU3hEUVVGRExFdEJRVXNzUTBGQlF6dG5Ra0ZETVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJUdHZRa0ZEYUVJc1QwRkJUenRCUVVOU0xHbENRVUZCTzBGQlJVUXNaMEpCUVVFc1YwRkJWeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEZOQlFWTXNTMEZCU1RzN1FVRkRhRU1zYjBKQlFVRXNUVUZCVFN4SlFVRkpMRWRCUVVjc1ZVRkJWU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZET3p0QlFVZHVReXh2UWtGQlFTeE5RVUZOTEZWQlFWVXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dHZRa0ZEZGtNc1NVRkJTU3hsUVVGbExFTkJRVU1zVlVGQlZTeEZRVUZGTzBGQlF6bENMSGRDUVVGQkxGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlExb3NRMEZCUVN4RlFVRkJMRWRCUVVFc1pVRkJaU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVa3NSMEZCUnl4RlFVTnVReXhOUVVGQkxHVkJRV1VzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkpMRWRCUVVjc1JVRkRia01zUTBGQlFTeEZRVUZCTEVkQlFVRXNaVUZCWlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFMUJRVWtzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFZEJRVUVzUjBGQlJ5eERRVU53UXl4RFFVRkRPMEZCUTBnc2NVSkJRVUU3UVVGQlRTeDVRa0ZCUVR0M1FrRkRUQ3hWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU5vUXl4eFFrRkJRVHR2UWtGRlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4bFFVRmxMRU5CUVVNc1RVRkJUU3hKUVVGSkxFbEJRVWtzUjBGQlJ5eFZRVUZWTEVOQlFVTXNaVUZCWlN4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF6dEJRVVV2Uml4dlFrRkJRU3hOUVVGTkxFOUJRVThzUjBGQmQwTTdkMEpCUTI1RUxGTkJRVk1zUlVGQlJTeGxRVUZsTEVOQlFVTXNVMEZCVXp0M1FrRkRjRU1zVTBGQlV5eEZRVUZGTEdWQlFXVXNRMEZCUXl4VFFVRlRPM2RDUVVOd1F5eFpRVUZaTEVWQlFVVXNaVUZCWlN4RFFVRkRMRmxCUVZrN2QwSkJRekZETEZOQlFWTXNSVUZCUlN4bFFVRmxMRU5CUVVNc1ZVRkJWVHQzUWtGRGNrTXNWVUZCVlR0eFFrRkRXQ3hEUVVGRE96dEJRVWRHTEc5Q1FVRkJMRTFCUVUwc2RVSkJRWFZDTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1pVRkJaU3hEUVVGRExHTkJRV01zVFVGQlJTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUVN4SFFVRkhMRU5CUVVNc1EwRkJReXhqUVVGakxFdEJRVWs3ZDBKQlEzSkdMRTFCUVUwc1MwRkJTeXhIUVVGSExHTkJRV01zUzBGQlpDeEpRVUZCTEVsQlFVRXNZMEZCWXl4MVFrRkJaQ3hqUVVGakxFTkJRVWNzWTBGQll5eERRVUZETEVOQlFVTTdkMEpCUlM5RExFbEJRVWtzUzBGQlN5eEpRVUZKTEVsQlFVa3NSVUZCUlRzMFFrRkRha0lzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZEWWl4RFFVRkJMSFZEUVVGQkxFVkJRVEJETEZWQlFWVXNRMEZCY1VNc2EwTkJRVUVzUlVGQlFTeGpRVUZqTEVOQlFXZENMR05CUVVFc1EwRkJRU3hEUVVONFNDeERRVUZETzBGQlEwZ3NlVUpCUVVFN1FVRkZSQ3gzUWtGQlFTeFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MSEZDUVVGRExFTkJRVU1zUTBGQlF6czdRVUZIU0N4dlFrRkJRU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkpPenQzUWtGRGNrSXNUVUZCVFN4TFFVRkxMRWRCUVRCQ0xFTkJRVUVzUlVGQlFTeEhRVUZCTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVWtzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFZEJRVUVzU1VGQlNTeERRVUZETzBGQlJUbEVMSGRDUVVGQkxFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUlVGQlJTeFBRVUZQTEVWQlFVVXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF6dEJRVU12UlN4M1FrRkJRU3hKUVVGSkxFMUJRVTBzUlVGQlJUdEJRVU5XTERSQ1FVRkJMRXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETzBGQlEzWkNMSGxDUVVGQk8wRkJSVVFzZDBKQlFVRXNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEJRVU14UWl4eFFrRkJReXhEUVVGRExFTkJRVU03UVVGRFRDeHBRa0ZCUXl4RFFVRkRMRU5CUVVNN1FVRkRUQ3hoUVVGRExFTkJRVU1zUTBGQlF6czdRVUZIU0N4WlFVRkJMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zYVVKQlFXbENMRVZCUVVVc1EwRkJRenRaUVVNdlFpeFBRVUZQTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNN1FVRkZka0lzV1VGQlFTeFBRVUZQTEU5QlFVOHNRMEZCUXpzN1FVRkRhRUlzUzBGQlFUdEJRVVZQTEVsQlFVRXNXVUZCV1N4RFFVTnNRaXhKUVVGdlFpeEZRVU53UWl4TFFVRnhRaXhGUVVOeVFpeFBRVUUyUXl4RlFVTTNReXgxUWtGQmMwUXNSVUZCUVR0QlFVVjBSQ3hSUVVGQkxFMUJRVTBzVlVGQlZTeEhRVUZITEVsQlFVa3NhMEpCUVd0Q0xFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZCUVVVc2RVSkJRWFZDTEVOQlFVTXNRMEZCUXp0UlFVVjZSaXhKUVVGSkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVWQlFVVTdRVUZEZUVJc1dVRkJRU3hOUVVGTkxFMUJRVTBzUjBGQlJ5eEpRVUZKTEhkQ1FVRjNRaXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzBGQlEzaEVMRmxCUVVFc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRha01zVFVGQlRTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExGZEJRVmNzUTBGQlF6dEJRVU4yUkN4VFFVRkJPMEZCUlVRc1VVRkJRU3hQUVVGUExGVkJRVlVzUTBGQlF6dExRVU51UWp0SlFVVlBMSEZDUVVGeFFpeERRVU16UWl4WFFVRXlRaXhGUVVNelFpeE5RVWRETEVWQlFVRTdRVUZGUkN4UlFVRkJMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVkQlFVY3NUVUZCVFN4RFFVRkRPMUZCUld4RExFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NaME5CUVdkRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVWMlJTeFJRVUZCTEUxQlFVMHNVVUZCVVN4SFFVRkhMRWxCUVVrc2NVSkJRWEZDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkZiRVFzVVVGQlFTeFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xRkJSVEZDTEVsQlFVa3NTVUZCU1N4RFFVRkRMR3RDUVVGclFpeEZRVUZGTzBGQlF6TkNMRmxCUVVFc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTd3lRa0ZCTWtJc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVU42UkN4WlFVRkJMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGRGNFTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1YwRkJWeXhEUVVGRE8wRkJRekZFTEZOQlFVRTdRVUZGUkN4UlFVRkJMRTlCUVU4c1VVRkJVU3hEUVVGRE8wdEJRMnBDTzBsQlJVOHNjMEpCUVhOQ0xFTkJRelZDTEZkQlFUSkNMRVZCUXpOQ0xFMUJTVU1zUlVGQlFUdFJRVVZFTEUxQlFVMHNSVUZCUlN4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEhRVUZITEUxQlFVMHNRMEZCUXp0QlFVVjRReXhSUVVGQkxFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NhVU5CUVdsRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRk9VVXNVVUZCUVN4TlFVRk5MRkZCUVZFc1IwRkJSeXhKUVVGSkxIRkNRVUZ4UWl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJSV3hFTEZGQlFVRXNWMEZCVnl4RFFVRkRMRWRCUVVjc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dFJRVVV4UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNSVUZCUlR0QlFVTXpRaXhaUVVGQkxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NNa0pCUVRKQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdRVUZEZWtRc1dVRkJRU3hKUVVGSkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFsQlEzQkRMRTFCUVUwc1EwRkJReXhYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExGZEJRVmNzUTBGQlF6dEJRVU14UkN4VFFVRkJPMEZCUlVRc1VVRkJRU3hQUVVGUExGRkJRVkVzUTBGQlF6dExRVU5xUWpzN1FVRjBWM05DTEhsQ1FVRmpMRU5CUVVFc1kwRkJRU3hIUVVGSExHbENRVUZwUWpzN096c2lmUT09XG4iLCJpbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBHTFRGLCBHTFRGTG9hZGVyUGx1Z2luLCBHTFRGUGFyc2VyIH0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2xvYWRlcnMvR0xURkxvYWRlci5qcyc7XG5pbXBvcnQge1xuICBWUk1FeHByZXNzaW9uTG9hZGVyUGx1Z2luLFxuICBWUk1GaXJzdFBlcnNvbkxvYWRlclBsdWdpbixcbiAgVlJNSHVtYW5vaWQsXG4gIFZSTUh1bWFub2lkTG9hZGVyUGx1Z2luLFxuICBWUk1Mb29rQXRMb2FkZXJQbHVnaW4sXG4gIFZSTU1ldGEsXG4gIFZSTU1ldGFMb2FkZXJQbHVnaW4sXG59IGZyb20gJ0BwaXhpdi90aHJlZS12cm0tY29yZSc7XG5pbXBvcnQgeyBNVG9vbk1hdGVyaWFsTG9hZGVyUGx1Z2luIH0gZnJvbSAnQHBpeGl2L3RocmVlLXZybS1tYXRlcmlhbHMtbXRvb24nO1xuaW1wb3J0IHsgVlJNTWF0ZXJpYWxzSERSRW1pc3NpdmVNdWx0aXBsaWVyTG9hZGVyUGx1Z2luIH0gZnJvbSAnQHBpeGl2L3RocmVlLXZybS1tYXRlcmlhbHMtaGRyLWVtaXNzaXZlLW11bHRpcGxpZXInO1xuaW1wb3J0IHsgVlJNTWF0ZXJpYWxzVjBDb21wYXRQbHVnaW4gfSBmcm9tICdAcGl4aXYvdGhyZWUtdnJtLW1hdGVyaWFscy12MGNvbXBhdCc7XG5pbXBvcnQgeyBWUk1Ob2RlQ29uc3RyYWludExvYWRlclBsdWdpbiB9IGZyb20gJ0BwaXhpdi90aHJlZS12cm0tbm9kZS1jb25zdHJhaW50JztcbmltcG9ydCB7IFZSTVNwcmluZ0JvbmVMb2FkZXJQbHVnaW4gfSBmcm9tICdAcGl4aXYvdGhyZWUtdnJtLXNwcmluZ2JvbmUnO1xuaW1wb3J0IHsgVlJNTG9hZGVyUGx1Z2luT3B0aW9ucyB9IGZyb20gJy4vVlJNTG9hZGVyUGx1Z2luT3B0aW9ucyc7XG5pbXBvcnQgeyBWUk0gfSBmcm9tICcuL1ZSTSc7XG5cbmV4cG9ydCBjbGFzcyBWUk1Mb2FkZXJQbHVnaW4gaW1wbGVtZW50cyBHTFRGTG9hZGVyUGx1Z2luIHtcbiAgcHVibGljIHJlYWRvbmx5IHBhcnNlcjogR0xURlBhcnNlcjtcblxuICBwdWJsaWMgcmVhZG9ubHkgZXhwcmVzc2lvblBsdWdpbjogVlJNRXhwcmVzc2lvbkxvYWRlclBsdWdpbjtcbiAgcHVibGljIHJlYWRvbmx5IGZpcnN0UGVyc29uUGx1Z2luOiBWUk1GaXJzdFBlcnNvbkxvYWRlclBsdWdpbjtcbiAgcHVibGljIHJlYWRvbmx5IGh1bWFub2lkUGx1Z2luOiBWUk1IdW1hbm9pZExvYWRlclBsdWdpbjtcbiAgcHVibGljIHJlYWRvbmx5IGxvb2tBdFBsdWdpbjogVlJNTG9va0F0TG9hZGVyUGx1Z2luO1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0YVBsdWdpbjogVlJNTWV0YUxvYWRlclBsdWdpbjtcbiAgcHVibGljIHJlYWRvbmx5IG10b29uTWF0ZXJpYWxQbHVnaW46IE1Ub29uTWF0ZXJpYWxMb2FkZXJQbHVnaW47XG4gIHB1YmxpYyByZWFkb25seSBtYXRlcmlhbHNIRFJFbWlzc2l2ZU11bHRpcGxpZXJQbHVnaW46IFZSTU1hdGVyaWFsc0hEUkVtaXNzaXZlTXVsdGlwbGllckxvYWRlclBsdWdpbjtcbiAgcHVibGljIHJlYWRvbmx5IG1hdGVyaWFsc1YwQ29tcGF0UGx1Z2luOiBWUk1NYXRlcmlhbHNWMENvbXBhdFBsdWdpbjtcbiAgcHVibGljIHJlYWRvbmx5IHNwcmluZ0JvbmVQbHVnaW46IFZSTVNwcmluZ0JvbmVMb2FkZXJQbHVnaW47XG4gIHB1YmxpYyByZWFkb25seSBub2RlQ29uc3RyYWludFBsdWdpbjogVlJNTm9kZUNvbnN0cmFpbnRMb2FkZXJQbHVnaW47XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdWUk1Mb2FkZXJQbHVnaW4nO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcnNlcjogR0xURlBhcnNlciwgb3B0aW9ucz86IFZSTUxvYWRlclBsdWdpbk9wdGlvbnMpIHtcbiAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcblxuICAgIGNvbnN0IGhlbHBlclJvb3QgPSBvcHRpb25zPy5oZWxwZXJSb290O1xuICAgIGNvbnN0IGF1dG9VcGRhdGVIdW1hbkJvbmVzID0gb3B0aW9ucz8uYXV0b1VwZGF0ZUh1bWFuQm9uZXM7XG5cbiAgICB0aGlzLmV4cHJlc3Npb25QbHVnaW4gPSBvcHRpb25zPy5leHByZXNzaW9uUGx1Z2luID8/IG5ldyBWUk1FeHByZXNzaW9uTG9hZGVyUGx1Z2luKHBhcnNlcik7XG4gICAgdGhpcy5maXJzdFBlcnNvblBsdWdpbiA9IG9wdGlvbnM/LmZpcnN0UGVyc29uUGx1Z2luID8/IG5ldyBWUk1GaXJzdFBlcnNvbkxvYWRlclBsdWdpbihwYXJzZXIpO1xuICAgIHRoaXMuaHVtYW5vaWRQbHVnaW4gPVxuICAgICAgb3B0aW9ucz8uaHVtYW5vaWRQbHVnaW4gPz9cbiAgICAgIG5ldyBWUk1IdW1hbm9pZExvYWRlclBsdWdpbihwYXJzZXIsIHtcbiAgICAgICAgaGVscGVyUm9vdCxcbiAgICAgICAgYXV0b1VwZGF0ZUh1bWFuQm9uZXMsXG4gICAgICB9KTtcbiAgICB0aGlzLmxvb2tBdFBsdWdpbiA9IG9wdGlvbnM/Lmxvb2tBdFBsdWdpbiA/PyBuZXcgVlJNTG9va0F0TG9hZGVyUGx1Z2luKHBhcnNlciwgeyBoZWxwZXJSb290IH0pO1xuICAgIHRoaXMubWV0YVBsdWdpbiA9IG9wdGlvbnM/Lm1ldGFQbHVnaW4gPz8gbmV3IFZSTU1ldGFMb2FkZXJQbHVnaW4ocGFyc2VyKTtcbiAgICB0aGlzLm10b29uTWF0ZXJpYWxQbHVnaW4gPSBvcHRpb25zPy5tdG9vbk1hdGVyaWFsUGx1Z2luID8/IG5ldyBNVG9vbk1hdGVyaWFsTG9hZGVyUGx1Z2luKHBhcnNlcik7XG4gICAgdGhpcy5tYXRlcmlhbHNIRFJFbWlzc2l2ZU11bHRpcGxpZXJQbHVnaW4gPVxuICAgICAgb3B0aW9ucz8ubWF0ZXJpYWxzSERSRW1pc3NpdmVNdWx0aXBsaWVyUGx1Z2luID8/IG5ldyBWUk1NYXRlcmlhbHNIRFJFbWlzc2l2ZU11bHRpcGxpZXJMb2FkZXJQbHVnaW4ocGFyc2VyKTtcbiAgICB0aGlzLm1hdGVyaWFsc1YwQ29tcGF0UGx1Z2luID0gb3B0aW9ucz8ubWF0ZXJpYWxzVjBDb21wYXRQbHVnaW4gPz8gbmV3IFZSTU1hdGVyaWFsc1YwQ29tcGF0UGx1Z2luKHBhcnNlcik7XG5cbiAgICB0aGlzLnNwcmluZ0JvbmVQbHVnaW4gPVxuICAgICAgb3B0aW9ucz8uc3ByaW5nQm9uZVBsdWdpbiA/P1xuICAgICAgbmV3IFZSTVNwcmluZ0JvbmVMb2FkZXJQbHVnaW4ocGFyc2VyLCB7XG4gICAgICAgIGNvbGxpZGVySGVscGVyUm9vdDogaGVscGVyUm9vdCxcbiAgICAgICAgam9pbnRIZWxwZXJSb290OiBoZWxwZXJSb290LFxuICAgICAgfSk7XG5cbiAgICB0aGlzLm5vZGVDb25zdHJhaW50UGx1Z2luID1cbiAgICAgIG9wdGlvbnM/Lm5vZGVDb25zdHJhaW50UGx1Z2luID8/IG5ldyBWUk1Ob2RlQ29uc3RyYWludExvYWRlclBsdWdpbihwYXJzZXIsIHsgaGVscGVyUm9vdCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBiZWZvcmVSb290KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubWF0ZXJpYWxzVjBDb21wYXRQbHVnaW4uYmVmb3JlUm9vdCgpO1xuICAgIGF3YWl0IHRoaXMubXRvb25NYXRlcmlhbFBsdWdpbi5iZWZvcmVSb290KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZE1lc2gobWVzaEluZGV4OiBudW1iZXIpOiBQcm9taXNlPFRIUkVFLkdyb3VwIHwgVEhSRUUuTWVzaCB8IFRIUkVFLlNraW5uZWRNZXNoPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubXRvb25NYXRlcmlhbFBsdWdpbi5sb2FkTWVzaChtZXNoSW5kZXgpO1xuICB9XG5cbiAgcHVibGljIGdldE1hdGVyaWFsVHlwZShtYXRlcmlhbEluZGV4OiBudW1iZXIpOiB0eXBlb2YgVEhSRUUuTWF0ZXJpYWwgfCBudWxsIHtcbiAgICBjb25zdCBtdG9vblR5cGUgPSB0aGlzLm10b29uTWF0ZXJpYWxQbHVnaW4uZ2V0TWF0ZXJpYWxUeXBlKG1hdGVyaWFsSW5kZXgpO1xuICAgIGlmIChtdG9vblR5cGUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG10b29uVHlwZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBleHRlbmRNYXRlcmlhbFBhcmFtcyhtYXRlcmlhbEluZGV4OiBudW1iZXIsIG1hdGVyaWFsUGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogUHJvbWlzZTxhbnk+IHtcbiAgICBhd2FpdCB0aGlzLm1hdGVyaWFsc0hEUkVtaXNzaXZlTXVsdGlwbGllclBsdWdpbi5leHRlbmRNYXRlcmlhbFBhcmFtcyhtYXRlcmlhbEluZGV4LCBtYXRlcmlhbFBhcmFtcyk7XG4gICAgYXdhaXQgdGhpcy5tdG9vbk1hdGVyaWFsUGx1Z2luLmV4dGVuZE1hdGVyaWFsUGFyYW1zKG1hdGVyaWFsSW5kZXgsIG1hdGVyaWFsUGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZnRlclJvb3QoZ2x0ZjogR0xURik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubWV0YVBsdWdpbi5hZnRlclJvb3QoZ2x0Zik7XG4gICAgYXdhaXQgdGhpcy5odW1hbm9pZFBsdWdpbi5hZnRlclJvb3QoZ2x0Zik7XG4gICAgYXdhaXQgdGhpcy5leHByZXNzaW9uUGx1Z2luLmFmdGVyUm9vdChnbHRmKTtcbiAgICBhd2FpdCB0aGlzLmxvb2tBdFBsdWdpbi5hZnRlclJvb3QoZ2x0Zik7XG4gICAgYXdhaXQgdGhpcy5maXJzdFBlcnNvblBsdWdpbi5hZnRlclJvb3QoZ2x0Zik7XG4gICAgYXdhaXQgdGhpcy5zcHJpbmdCb25lUGx1Z2luLmFmdGVyUm9vdChnbHRmKTtcbiAgICBhd2FpdCB0aGlzLm5vZGVDb25zdHJhaW50UGx1Z2luLmFmdGVyUm9vdChnbHRmKTtcbiAgICBhd2FpdCB0aGlzLm10b29uTWF0ZXJpYWxQbHVnaW4uYWZ0ZXJSb290KGdsdGYpO1xuXG4gICAgY29uc3QgbWV0YSA9IGdsdGYudXNlckRhdGEudnJtTWV0YSBhcyBWUk1NZXRhIHwgbnVsbDtcbiAgICBjb25zdCBodW1hbm9pZCA9IGdsdGYudXNlckRhdGEudnJtSHVtYW5vaWQgYXMgVlJNSHVtYW5vaWQgfCBudWxsO1xuXG4gICAgLy8gbWV0YSBhbmQgaHVtYW5vaWQgYXJlIHJlcXVpcmVkIHRvIGJlIGEgVlJNLlxuICAgIC8vIERvbid0IGNyZWF0ZSBWUk0gaWYgdGhleSBhcmUgbnVsbFxuICAgIGlmIChtZXRhICYmIGh1bWFub2lkKSB7XG4gICAgICBjb25zdCB2cm0gPSBuZXcgVlJNKHtcbiAgICAgICAgc2NlbmU6IGdsdGYuc2NlbmUsXG4gICAgICAgIGV4cHJlc3Npb25NYW5hZ2VyOiBnbHRmLnVzZXJEYXRhLnZybUV4cHJlc3Npb25NYW5hZ2VyLFxuICAgICAgICBmaXJzdFBlcnNvbjogZ2x0Zi51c2VyRGF0YS52cm1GaXJzdFBlcnNvbixcbiAgICAgICAgaHVtYW5vaWQsXG4gICAgICAgIGxvb2tBdDogZ2x0Zi51c2VyRGF0YS52cm1Mb29rQXQsXG4gICAgICAgIG1ldGEsXG4gICAgICAgIG1hdGVyaWFsczogZ2x0Zi51c2VyRGF0YS52cm1NVG9vbk1hdGVyaWFscyxcbiAgICAgICAgc3ByaW5nQm9uZU1hbmFnZXI6IGdsdGYudXNlckRhdGEudnJtU3ByaW5nQm9uZU1hbmFnZXIsXG4gICAgICAgIG5vZGVDb25zdHJhaW50TWFuYWdlcjogZ2x0Zi51c2VyRGF0YS52cm1Ob2RlQ29uc3RyYWludE1hbmFnZXIsXG4gICAgICB9KTtcblxuICAgICAgZ2x0Zi51c2VyRGF0YS52cm0gPSB2cm07XG4gICAgfVxuICB9XG59XG4iLCIvLyBTZWU6IGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jbWFudWFsL2VuL2ludHJvZHVjdGlvbi9Ib3ctdG8tZGlzcG9zZS1vZi1vYmplY3RzXG5cbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuZnVuY3Rpb24gZGlzcG9zZU1hdGVyaWFsKG1hdGVyaWFsOiBUSFJFRS5NYXRlcmlhbCk6IHZvaWQge1xuICBPYmplY3QudmFsdWVzKG1hdGVyaWFsKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh2YWx1ZT8uaXNUZXh0dXJlKSB7XG4gICAgICBjb25zdCB0ZXh0dXJlID0gdmFsdWUgYXMgVEhSRUUuVGV4dHVyZTtcbiAgICAgIHRleHR1cmUuZGlzcG9zZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKChtYXRlcmlhbCBhcyBhbnkpLmlzU2hhZGVyTWF0ZXJpYWwpIHtcbiAgICBjb25zdCB1bmlmb3JtczogeyBbdW5pZm9ybTogc3RyaW5nXTogVEhSRUUuSVVuaWZvcm08YW55PiB9ID0gKG1hdGVyaWFsIGFzIGFueSkudW5pZm9ybXM7XG4gICAgaWYgKHVuaWZvcm1zKSB7XG4gICAgICBPYmplY3QudmFsdWVzKHVuaWZvcm1zKS5mb3JFYWNoKCh1bmlmb3JtKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdW5pZm9ybS52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlPy5pc1RleHR1cmUpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0dXJlID0gdmFsdWUgYXMgVEhSRUUuVGV4dHVyZTtcbiAgICAgICAgICB0ZXh0dXJlLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbWF0ZXJpYWwuZGlzcG9zZSgpO1xufVxuXG5mdW5jdGlvbiBkaXNwb3NlKG9iamVjdDNEOiBUSFJFRS5PYmplY3QzRCk6IHZvaWQge1xuICBjb25zdCBnZW9tZXRyeTogVEhSRUUuQnVmZmVyR2VvbWV0cnkgfCB1bmRlZmluZWQgPSAob2JqZWN0M0QgYXMgYW55KS5nZW9tZXRyeTtcbiAgaWYgKGdlb21ldHJ5KSB7XG4gICAgZ2VvbWV0cnkuZGlzcG9zZSgpO1xuICB9XG5cbiAgY29uc3Qgc2tlbGV0b246IFRIUkVFLlNrZWxldG9uIHwgdW5kZWZpbmVkID0gKG9iamVjdDNEIGFzIGFueSkuc2tlbGV0b247XG4gIGlmIChza2VsZXRvbikge1xuICAgIHNrZWxldG9uLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIGNvbnN0IG1hdGVyaWFsOiBUSFJFRS5NYXRlcmlhbCB8IFRIUkVFLk1hdGVyaWFsW10gfCB1bmRlZmluZWQgPSAob2JqZWN0M0QgYXMgYW55KS5tYXRlcmlhbDtcbiAgaWYgKG1hdGVyaWFsKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobWF0ZXJpYWwpKSB7XG4gICAgICBtYXRlcmlhbC5mb3JFYWNoKChtYXRlcmlhbDogVEhSRUUuTWF0ZXJpYWwpID0+IGRpc3Bvc2VNYXRlcmlhbChtYXRlcmlhbCkpO1xuICAgIH0gZWxzZSBpZiAobWF0ZXJpYWwpIHtcbiAgICAgIGRpc3Bvc2VNYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRGlzcG9zZShvYmplY3QzRDogVEhSRUUuT2JqZWN0M0QpOiB2b2lkIHtcbiAgb2JqZWN0M0QudHJhdmVyc2UoZGlzcG9zZSk7XG59XG4iLCJpbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbi8qKlxuICogVHJhdmVyc2UgZ2l2ZW4gb2JqZWN0IGFuZCByZW1vdmUgdW5uZWNlc3NhcmlseSBib3VuZCBqb2ludHMgZnJvbSBldmVyeSBgVEhSRUUuU2tpbm5lZE1lc2hgLlxuICogU29tZSBlbnZpcm9ubWVudHMgbGlrZSBtb2JpbGUgZGV2aWNlcyBoYXZlIGEgbG93ZXIgbGltaXQgb2YgYm9uZXMgYW5kIG1pZ2h0IGJlIHVuYWJsZSB0byBwZXJmb3JtIG1lc2ggc2tpbm5pbmcsIHRoaXMgZnVuY3Rpb24gbWlnaHQgcmVzb2x2ZSBzdWNoIGFuIGlzc3VlLlxuICogQWxzbyB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGdyZWF0bHkgaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgbWVzaCBza2lubmluZy5cbiAqXG4gKiBAcGFyYW0gcm9vdCBSb290IG9iamVjdCB0aGF0IHdpbGwgYmUgdHJhdmVyc2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVVbm5lY2Vzc2FyeUpvaW50cyhyb290OiBUSFJFRS5PYmplY3QzRCk6IHZvaWQge1xuICAvLyBzb21lIG1lc2hlcyBtaWdodCBzaGFyZSBhIHNhbWUgc2tpbkluZGV4IGF0dHJpYnV0ZSBhbmQgdGhpcyBtYXAgcHJldmVudHMgdG8gY29udmVydCB0aGUgYXR0cmlidXRlIHR3aWNlXG4gIGNvbnN0IHNrZWxldG9uTGlzdDogTWFwPFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZSwgVEhSRUUuU2tlbGV0b24+ID0gbmV3IE1hcCgpO1xuXG4gIC8vIFRyYXZlcnNlIGFuIGVudGlyZSB0cmVlXG4gIHJvb3QudHJhdmVyc2UoKG9iaikgPT4ge1xuICAgIGlmIChvYmoudHlwZSAhPT0gJ1NraW5uZWRNZXNoJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1lc2ggPSBvYmogYXMgVEhSRUUuU2tpbm5lZE1lc2g7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSBtZXNoLmdlb21ldHJ5O1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGdlb21ldHJ5LmdldEF0dHJpYnV0ZSgnc2tpbkluZGV4JykgYXMgVEhSRUUuQnVmZmVyQXR0cmlidXRlO1xuXG4gICAgLy8gbG9vayBmb3IgZXhpc3Rpbmcgc2tlbGV0b25cbiAgICBsZXQgc2tlbGV0b24gPSBza2VsZXRvbkxpc3QuZ2V0KGF0dHJpYnV0ZSk7XG5cbiAgICBpZiAoIXNrZWxldG9uKSB7XG4gICAgICAvLyBnZW5lcmF0ZSByZWR1Y2VkIGJvbmUgbGlzdFxuICAgICAgY29uc3QgYm9uZXM6IFRIUkVFLkJvbmVbXSA9IFtdOyAvLyBuZXcgbGlzdCBvZiBib25lXG4gICAgICBjb25zdCBib25lSW52ZXJzZXM6IFRIUkVFLk1hdHJpeDRbXSA9IFtdOyAvLyBuZXcgbGlzdCBvZiBib25lSW52ZXJzZVxuICAgICAgY29uc3QgYm9uZUluZGV4TWFwOiB7IFtpbmRleDogbnVtYmVyXTogbnVtYmVyIH0gPSB7fTsgLy8gbWFwIG9mIG9sZCBib25lIGluZGV4IHZzLiBuZXcgYm9uZSBpbmRleFxuXG4gICAgICAvLyBjcmVhdGUgYSBuZXcgYm9uZSBtYXBcbiAgICAgIGNvbnN0IGFycmF5ID0gYXR0cmlidXRlLmFycmF5O1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBpbmRleCA9IGFycmF5W2ldO1xuXG4gICAgICAgIC8vIG5ldyBza2luSW5kZXggYnVmZmVyXG4gICAgICAgIGlmIChib25lSW5kZXhNYXBbaW5kZXhdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBib25lSW5kZXhNYXBbaW5kZXhdID0gYm9uZXMubGVuZ3RoO1xuICAgICAgICAgIGJvbmVzLnB1c2gobWVzaC5za2VsZXRvbi5ib25lc1tpbmRleF0pO1xuICAgICAgICAgIGJvbmVJbnZlcnNlcy5wdXNoKG1lc2guc2tlbGV0b24uYm9uZUludmVyc2VzW2luZGV4XSk7XG4gICAgICAgIH1cblxuICAgICAgICBhcnJheVtpXSA9IGJvbmVJbmRleE1hcFtpbmRleF07XG4gICAgICB9XG5cbiAgICAgIC8vIHJlcGxhY2Ugd2l0aCBuZXcgaW5kaWNlc1xuICAgICAgYXR0cmlidXRlLmNvcHlBcnJheShhcnJheSk7XG4gICAgICBhdHRyaWJ1dGUubmVlZHNVcGRhdGUgPSB0cnVlO1xuXG4gICAgICAvLyByZXBsYWNlIHdpdGggbmV3IGluZGljZXNcbiAgICAgIHNrZWxldG9uID0gbmV3IFRIUkVFLlNrZWxldG9uKGJvbmVzLCBib25lSW52ZXJzZXMpO1xuICAgICAgc2tlbGV0b25MaXN0LnNldChhdHRyaWJ1dGUsIHNrZWxldG9uKTtcbiAgICB9XG5cbiAgICBtZXNoLmJpbmQoc2tlbGV0b24sIG5ldyBUSFJFRS5NYXRyaXg0KCkpO1xuICAgIC8vICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXiB0cmFuc2Zvcm0gb2YgbWVzaGVzIHNob3VsZCBiZSBpZ25vcmVkXG4gICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL2dsVEYvdHJlZS9tYXN0ZXIvc3BlY2lmaWNhdGlvbi8yLjAjc2tpbnNcbiAgfSk7XG59XG4iLCJpbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBCdWZmZXJBdHRyaWJ1dGUgfSBmcm9tICd0aHJlZSc7XG5cbi8qKlxuICogVHJhdmVyc2UgZ2l2ZW4gb2JqZWN0IGFuZCByZW1vdmUgdW5uZWNlc3NhcnkgdmVydGljZXMgZnJvbSBldmVyeSBCdWZmZXJHZW9tZXRyaWVzLlxuICogVGhpcyBvbmx5IHByb2Nlc3NlcyBidWZmZXIgZ2VvbWV0cmllcyB3aXRoIGluZGV4IGJ1ZmZlci5cbiAqXG4gKiBUaHJlZS5qcyBjcmVhdGVzIG1vcnBoIHRleHR1cmVzIGZvciBlYWNoIGdlb21ldHJpZXMgYW5kIGl0IHNvbWV0aW1lcyBjb25zdW1lcyB1bm5lY2Vzc2FyeSBhbW91bnQgb2YgVlJBTSBmb3IgY2VydGFpbiBtb2RlbHMuXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgb3B0aW1pemUgZ2VvbWV0cmllcyB0byByZWR1Y2UgdGhlIHNpemUgb2YgbW9ycGggdGV4dHVyZS5cbiAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL21yZG9vYi90aHJlZS5qcy9pc3N1ZXMvMjMwOTVcbiAqXG4gKiBAcGFyYW0gcm9vdCBSb290IG9iamVjdCB0aGF0IHdpbGwgYmUgdHJhdmVyc2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVVbm5lY2Vzc2FyeVZlcnRpY2VzKHJvb3Q6IFRIUkVFLk9iamVjdDNEKTogdm9pZCB7XG4gIGNvbnN0IGdlb21ldHJ5TWFwID0gbmV3IE1hcDxUSFJFRS5CdWZmZXJHZW9tZXRyeSwgVEhSRUUuQnVmZmVyR2VvbWV0cnk+KCk7XG5cbiAgLy8gVHJhdmVyc2UgYW4gZW50aXJlIHRyZWVcbiAgcm9vdC50cmF2ZXJzZSgob2JqKSA9PiB7XG4gICAgaWYgKCEob2JqIGFzIGFueSkuaXNNZXNoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWVzaCA9IG9iaiBhcyBUSFJFRS5NZXNoO1xuICAgIGNvbnN0IGdlb21ldHJ5ID0gbWVzaC5nZW9tZXRyeTtcblxuICAgIC8vIGlmIHRoZSBnZW9tZXRyeSBkb2VzIG5vdCBoYXZlIGFuIGluZGV4IGJ1ZmZlciBpdCBkb2VzIG5vdCBuZWVkIHRvIHByb2Nlc3NcbiAgICBjb25zdCBvcmlnaWFubEluZGV4ID0gZ2VvbWV0cnkuaW5kZXg7XG4gICAgaWYgKG9yaWdpYW5sSW5kZXggPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHNraXAgYWxyZWFkeSBwcm9jZXNzZWQgZ2VvbWV0cnlcbiAgICBjb25zdCBuZXdHZW9tZXRyeUFscmVhZHlFeGlzdGVkID0gZ2VvbWV0cnlNYXAuZ2V0KGdlb21ldHJ5KTtcbiAgICBpZiAobmV3R2VvbWV0cnlBbHJlYWR5RXhpc3RlZCAhPSBudWxsKSB7XG4gICAgICBtZXNoLmdlb21ldHJ5ID0gbmV3R2VvbWV0cnlBbHJlYWR5RXhpc3RlZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdHZW9tZXRyeSA9IG5ldyBUSFJFRS5CdWZmZXJHZW9tZXRyeSgpO1xuXG4gICAgLy8gY29weSB2YXJpb3VzIHByb3BlcnRpZXNcbiAgICAvLyBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9tcmRvb2IvdGhyZWUuanMvYmxvYi8xYTI0MWVmMTAwNDg3NzBkNTZlMDZkNmNkNmE2NGM3NmNjNzIwZjk1L3NyYy9jb3JlL0J1ZmZlckdlb21ldHJ5LmpzI0wxMDExXG4gICAgbmV3R2VvbWV0cnkubmFtZSA9IGdlb21ldHJ5Lm5hbWU7XG5cbiAgICBuZXdHZW9tZXRyeS5tb3JwaFRhcmdldHNSZWxhdGl2ZSA9IGdlb21ldHJ5Lm1vcnBoVGFyZ2V0c1JlbGF0aXZlO1xuXG4gICAgZ2VvbWV0cnkuZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICBuZXdHZW9tZXRyeS5hZGRHcm91cChncm91cC5zdGFydCwgZ3JvdXAuY291bnQsIGdyb3VwLm1hdGVyaWFsSW5kZXgpO1xuICAgIH0pO1xuXG4gICAgbmV3R2VvbWV0cnkuYm91bmRpbmdCb3ggPSBnZW9tZXRyeS5ib3VuZGluZ0JveD8uY2xvbmUoKSA/PyBudWxsO1xuICAgIG5ld0dlb21ldHJ5LmJvdW5kaW5nU3BoZXJlID0gZ2VvbWV0cnkuYm91bmRpbmdTcGhlcmU/LmNsb25lKCkgPz8gbnVsbDtcblxuICAgIG5ld0dlb21ldHJ5LnNldERyYXdSYW5nZShnZW9tZXRyeS5kcmF3UmFuZ2Uuc3RhcnQsIGdlb21ldHJ5LmRyYXdSYW5nZS5jb3VudCk7XG5cbiAgICBuZXdHZW9tZXRyeS51c2VyRGF0YSA9IGdlb21ldHJ5LnVzZXJEYXRhO1xuXG4gICAgLy8gc2V0IHRvIGdlb21ldHJ5TWFwXG4gICAgZ2VvbWV0cnlNYXAuc2V0KGdlb21ldHJ5LCBuZXdHZW9tZXRyeSk7XG5cbiAgICAvKiogZnJvbSBvcmlnaW5hbCBpbmRleCB0byBuZXcgaW5kZXggKi9cbiAgICBjb25zdCBvcmlnaW5hbEluZGV4TmV3SW5kZXhNYXA6IG51bWJlcltdID0gW107XG5cbiAgICAvKiogZnJvbSBuZXcgaW5kZXggdG8gb3JpZ2luYWwgaW5kZXggKi9cbiAgICBjb25zdCBuZXdJbmRleE9yaWdpbmFsSW5kZXhNYXA6IG51bWJlcltdID0gW107XG5cbiAgICAvLyByZW9yZ2FuaXplIGluZGljZXNcbiAgICB7XG4gICAgICBjb25zdCBvcmlnaW5hbEluZGV4QXJyYXkgPSBvcmlnaWFubEluZGV4LmFycmF5O1xuICAgICAgY29uc3QgbmV3SW5kZXhBcnJheSA9IG5ldyAob3JpZ2luYWxJbmRleEFycmF5LmNvbnN0cnVjdG9yIGFzIGFueSkob3JpZ2luYWxJbmRleEFycmF5Lmxlbmd0aCk7XG5cbiAgICAgIGxldCBpbmRleEhlYWQgPSAwO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9yaWdpbmFsSW5kZXhBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBvcmlnaW5hbEluZGV4ID0gb3JpZ2luYWxJbmRleEFycmF5W2ldO1xuXG4gICAgICAgIGxldCBuZXdJbmRleCA9IG9yaWdpbmFsSW5kZXhOZXdJbmRleE1hcFtvcmlnaW5hbEluZGV4XTtcbiAgICAgICAgaWYgKG5ld0luZGV4ID09IG51bGwpIHtcbiAgICAgICAgICBvcmlnaW5hbEluZGV4TmV3SW5kZXhNYXBbb3JpZ2luYWxJbmRleF0gPSBpbmRleEhlYWQ7XG4gICAgICAgICAgbmV3SW5kZXhPcmlnaW5hbEluZGV4TWFwW2luZGV4SGVhZF0gPSBvcmlnaW5hbEluZGV4O1xuICAgICAgICAgIG5ld0luZGV4ID0gaW5kZXhIZWFkO1xuICAgICAgICAgIGluZGV4SGVhZCsrO1xuICAgICAgICB9XG4gICAgICAgIG5ld0luZGV4QXJyYXlbaV0gPSBuZXdJbmRleDtcbiAgICAgIH1cblxuICAgICAgbmV3R2VvbWV0cnkuc2V0SW5kZXgobmV3IEJ1ZmZlckF0dHJpYnV0ZShuZXdJbmRleEFycmF5LCAxLCBmYWxzZSkpO1xuICAgIH1cblxuICAgIC8vIHJlb3JnYW5pemUgYXR0cmlidXRlc1xuICAgIE9iamVjdC5rZXlzKGdlb21ldHJ5LmF0dHJpYnV0ZXMpLmZvckVhY2goKGF0dHJpYnV0ZU5hbWUpID0+IHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsQXR0cmlidXRlID0gZ2VvbWV0cnkuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSBhcyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGU7XG5cbiAgICAgIGlmICgob3JpZ2luYWxBdHRyaWJ1dGUgYXMgYW55KS5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncmVtb3ZlVW5uZWNlc3NhcnlWZXJ0aWNlczogSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUgaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvcmlnaW5hbEF0dHJpYnV0ZUFycmF5ID0gb3JpZ2luYWxBdHRyaWJ1dGUuYXJyYXk7XG4gICAgICBjb25zdCB7IGl0ZW1TaXplLCBub3JtYWxpemVkIH0gPSBvcmlnaW5hbEF0dHJpYnV0ZTtcblxuICAgICAgY29uc3QgbmV3QXR0cmlidXRlQXJyYXkgPSBuZXcgKG9yaWdpbmFsQXR0cmlidXRlQXJyYXkuY29uc3RydWN0b3IgYXMgYW55KShcbiAgICAgICAgbmV3SW5kZXhPcmlnaW5hbEluZGV4TWFwLmxlbmd0aCAqIGl0ZW1TaXplLFxuICAgICAgKTtcblxuICAgICAgbmV3SW5kZXhPcmlnaW5hbEluZGV4TWFwLmZvckVhY2goKG9yaWdpbmFsSW5kZXgsIGkpID0+IHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpdGVtU2l6ZTsgaisrKSB7XG4gICAgICAgICAgbmV3QXR0cmlidXRlQXJyYXlbaSAqIGl0ZW1TaXplICsgal0gPSBvcmlnaW5hbEF0dHJpYnV0ZUFycmF5W29yaWdpbmFsSW5kZXggKiBpdGVtU2l6ZSArIGpdO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgbmV3R2VvbWV0cnkuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG5ldyBCdWZmZXJBdHRyaWJ1dGUobmV3QXR0cmlidXRlQXJyYXksIGl0ZW1TaXplLCBub3JtYWxpemVkKSk7XG4gICAgfSk7XG5cbiAgICAvLyByZW9yZ2FuaXplIG1vcnBoIGF0dHJpYnV0ZXNcbiAgICAvKiogVHJ1ZSBpZiBhbGwgbW9ycGhzIGFyZSB6ZXJvLiAqL1xuICAgIGxldCBpc051bGxNb3JwaCA9IHRydWU7XG5cbiAgICBPYmplY3Qua2V5cyhnZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMpLmZvckVhY2goKGF0dHJpYnV0ZU5hbWUpID0+IHtcbiAgICAgIG5ld0dlb21ldHJ5Lm1vcnBoQXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSA9IFtdO1xuXG4gICAgICBjb25zdCBtb3JwaHMgPSBnZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV07XG4gICAgICBmb3IgKGxldCBpTW9ycGggPSAwOyBpTW9ycGggPCBtb3JwaHMubGVuZ3RoOyBpTW9ycGgrKykge1xuICAgICAgICBjb25zdCBvcmlnaW5hbEF0dHJpYnV0ZSA9IG1vcnBoc1tpTW9ycGhdIGFzIFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTtcblxuICAgICAgICBpZiAoKG9yaWdpbmFsQXR0cmlidXRlIGFzIGFueSkuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncmVtb3ZlVW5uZWNlc3NhcnlWZXJ0aWNlczogSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUgaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3JpZ2luYWxBdHRyaWJ1dGVBcnJheSA9IG9yaWdpbmFsQXR0cmlidXRlLmFycmF5O1xuICAgICAgICBjb25zdCB7IGl0ZW1TaXplLCBub3JtYWxpemVkIH0gPSBvcmlnaW5hbEF0dHJpYnV0ZTtcblxuICAgICAgICBjb25zdCBuZXdBdHRyaWJ1dGVBcnJheSA9IG5ldyAob3JpZ2luYWxBdHRyaWJ1dGVBcnJheS5jb25zdHJ1Y3RvciBhcyBhbnkpKFxuICAgICAgICAgIG5ld0luZGV4T3JpZ2luYWxJbmRleE1hcC5sZW5ndGggKiBpdGVtU2l6ZSxcbiAgICAgICAgKTtcblxuICAgICAgICBuZXdJbmRleE9yaWdpbmFsSW5kZXhNYXAuZm9yRWFjaCgob3JpZ2luYWxJbmRleCwgaSkgPT4ge1xuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaXRlbVNpemU7IGorKykge1xuICAgICAgICAgICAgbmV3QXR0cmlidXRlQXJyYXlbaSAqIGl0ZW1TaXplICsgal0gPSBvcmlnaW5hbEF0dHJpYnV0ZUFycmF5W29yaWdpbmFsSW5kZXggKiBpdGVtU2l6ZSArIGpdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXNOdWxsTW9ycGggPSBpc051bGxNb3JwaCAmJiBuZXdBdHRyaWJ1dGVBcnJheS5ldmVyeSgodjogbnVtYmVyKSA9PiB2ID09PSAwKTtcblxuICAgICAgICBuZXdHZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV1baU1vcnBoXSA9IG5ldyBCdWZmZXJBdHRyaWJ1dGUoXG4gICAgICAgICAgbmV3QXR0cmlidXRlQXJyYXksXG4gICAgICAgICAgaXRlbVNpemUsXG4gICAgICAgICAgbm9ybWFsaXplZCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIElmIGFsbCBtb3JwaHMgYXJlIHplcm8sIGp1c3QgZGlzY2FyZCB0aGUgbW9ycGggYXR0cmlidXRlcyB3ZSd2ZSBqdXN0IG1hZGVcbiAgICBpZiAoaXNOdWxsTW9ycGgpIHtcbiAgICAgIG5ld0dlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcyA9IHt9O1xuICAgIH1cblxuICAgIG1lc2guZ2VvbWV0cnkgPSBuZXdHZW9tZXRyeTtcbiAgfSk7XG5cbiAgQXJyYXkuZnJvbShnZW9tZXRyeU1hcC5rZXlzKCkpLmZvckVhY2goKG9yaWdpbmFsR2VvbWV0cnkpID0+IHtcbiAgICBvcmlnaW5hbEdlb21ldHJ5LmRpc3Bvc2UoKTtcbiAgfSk7XG59XG4iLCJpbXBvcnQgeyBWUk0gfSBmcm9tICcuLi9WUk0nO1xuXG4vKipcbiAqIElmIHRoZSBnaXZlbiBWUk0gaXMgVlJNMC4wLCByb3RhdGUgdGhlIGB2cm0uc2NlbmVgIGJ5IDE4MCBkZWdyZWVzIGFyb3VuZCB0aGUgWSBheGlzLlxuICpcbiAqIEBwYXJhbSB2cm0gVGhlIHRhcmdldCBWUk1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZVZSTTAodnJtOiBWUk0pOiB2b2lkIHtcbiAgaWYgKHZybS5tZXRhPy5tZXRhVmVyc2lvbiA9PT0gJzAnKSB7XG4gICAgdnJtLnNjZW5lLnJvdGF0aW9uLnkgPSBNYXRoLlBJO1xuICB9XG59XG4iLCJpbXBvcnQgeyBkZWVwRGlzcG9zZSB9IGZyb20gJy4vZGVlcERpc3Bvc2UnO1xuaW1wb3J0IHsgcmVtb3ZlVW5uZWNlc3NhcnlKb2ludHMgfSBmcm9tICcuL3JlbW92ZVVubmVjZXNzYXJ5Sm9pbnRzJztcbmltcG9ydCB7IHJlbW92ZVVubmVjZXNzYXJ5VmVydGljZXMgfSBmcm9tICcuL3JlbW92ZVVubmVjZXNzYXJ5VmVydGljZXMnO1xuaW1wb3J0IHsgcm90YXRlVlJNMCB9IGZyb20gJy4vcm90YXRlVlJNMCc7XG5cbmV4cG9ydCBjbGFzcyBWUk1VdGlscyB7XG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gdGhpcyBjbGFzcyBpcyBub3QgbWVhbnQgdG8gYmUgaW5zdGFudGlhdGVkXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGRlZXBEaXNwb3NlID0gZGVlcERpc3Bvc2U7XG4gIHB1YmxpYyBzdGF0aWMgcmVtb3ZlVW5uZWNlc3NhcnlKb2ludHMgPSByZW1vdmVVbm5lY2Vzc2FyeUpvaW50cztcbiAgcHVibGljIHN0YXRpYyByZW1vdmVVbm5lY2Vzc2FyeVZlcnRpY2VzID0gcmVtb3ZlVW5uZWNlc3NhcnlWZXJ0aWNlcztcbiAgcHVibGljIHN0YXRpYyByb3RhdGVWUk0wID0gcm90YXRlVlJNMDtcbn1cbiJdLCJuYW1lcyI6WyJUSFJFRSIsIl9fYXdhaXRlciIsIl92M0EkNCIsIl92M0IkMiIsInF1YXRJbnZlcnRDb21wYXQiLCJfdjNBJDMiLCJfdjNBJDIiLCJfcXVhdEEkMyIsIlBPU1NJQkxFX1NQRUNfVkVSU0lPTlMkMiIsIl9xdWF0QSQyIiwiX3F1YXRCJDIiLCJfdjNBJDEiLCJfdjNCJDEiLCJfdjNBIiwiX3YzQiIsIl92M0MiLCJfcXVhdEEkMSIsIl9xdWF0QiQxIiwiX3F1YXRDIiwiX3F1YXRBIiwiX3F1YXRCIiwiUE9TU0lCTEVfU1BFQ19WRVJTSU9OUyQxIiwiUE9TU0lCTEVfU1BFQ19WRVJTSU9OUyIsInRyYXZlcnNlQW5jZXN0b3JzRnJvbVJvb3QiLCJCdWZmZXJBdHRyaWJ1dGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBRUE7SUFDQTtJQUNBO0lBQ0EsTUFBTSxhQUFhLFNBQVNBLGdCQUFLLENBQUMsUUFBUSxDQUFDO0lBQzNDO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLG1CQUFtQixHQUFHO0lBQzlCLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLE9BQU8sRUFBRTtJQUM1QyxZQUFZLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqRCxTQUFTO0lBQ1QsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssT0FBTyxFQUFFO0lBQ2pELFlBQVksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQy9CLFNBQVM7SUFDVCxhQUFhO0lBQ2IsWUFBWSxPQUFPLEdBQUcsQ0FBQztJQUN2QixTQUFTO0lBQ1QsS0FBSztJQUNMO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLG9CQUFvQixHQUFHO0lBQy9CLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLE9BQU8sRUFBRTtJQUM3QyxZQUFZLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqRCxTQUFTO0lBQ1QsYUFBYSxJQUFJLElBQUksQ0FBQyxjQUFjLEtB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Q0E7SUFDQTtJQUNBO0FBQ0E7SUFDQSxTQUFTQyxXQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0lBQ3RELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUN0RyxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtJQUN0SCxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUks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R0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDckMsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkUsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsRixRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDekMsS0FBSztJQUNMLElBQUksV0FBVyxHQUFHO0lBQ2xCLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNyQyxZQUFZLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsWUFBWSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoRCxZQUFZLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEUsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzQyxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMzQyxLQUFLO0lBQ0wsQ0FBQztBQUNEO0lBQ0EsTUFBTVMsVUFBUSxHQUFHLElBQUlULGdCQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEMsTUFBTVUsVUFBUSxHQUFHLElBQUlWLGdCQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7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S0FBSyxDQUFDO0lBQ3JFLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUMvQyxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFDO0lBQ0EsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDVyxRQUFNLENBQUMsQ0FBQztJQUN0RCxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUNGLFVBQVEsQ0FBQyxDQUFDO0lBQzFEO0lBQ0EsUUFBUUEsVUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDQyxVQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzNFO0lBQ0EsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUNDLFFBQU0sQ0FBQyxDQUFDO0lBQzVDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDRixVQUFRLENBQUMsQ0FBQztJQUNoRCxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQ0UsUUFBTSxDQUFDLENBQUM7SUFDOUMsUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUNGLFVBQVEsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDQyxVQUFRLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0YsUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUQ7SUFDQSxRQUFRLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN0RCxRQUFRLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxVQUFVLEVBQUU7SUFDMUMsWUFBWSxNQUFNLENBQUMsZ0JBQWdCLENBQUNFLFFBQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQ0QsUUFBTSxDQUFDLENBQUM7SUFDeEQsWUFBWSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDQyxRQUFNLENBQUMsQ0FBQztJQUN4RCxZQUFZLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQy9DLFlBQVksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDRCxRQUFNLENBQUMsQ0FBQztJQUNuRCxTQUFTO0lBQ1Q7SUFDQSxRQUFRLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxLQUFLO0lBQ0wsQ0FBQztBQUNEO0lBQ0EsTUFBTSxTQUFTLEdBQUcsSUFBSVgsZ0JBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFJQSxnQkFBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxTQUFTLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7SUFDN0MsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsU0FBUyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUU7SUFDckMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekgsQ0FBQztBQUNEO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxTQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUU7SUFDOUIsSUFBSSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELElBQUksT0FBTyxLQUFLLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQzdDLENBQUM7QUFDRDtJQUNBLE1BQU0saUJBQWlCLEdBQUcsSUFBSUEsZ0JBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzRCxNQUFNYSxNQUFJLEdBQUcsSUFBSWIsZ0JBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQyxNQUFNYyxNQUFJLEdBQUcsSUFBSWQsZ0JBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQyxNQUFNZSxNQUFJLEdBQUcsSUFBSWYsZ0JBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQyxNQUFNZ0IsVUFBUSxHQUFHLElBQUloQixnQkFBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3hDLE1BQU1pQixVQUFRLEdBQUcsSUFBSWpCLGdCQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEMsTUFBTWtCLFFBQU0sR0FBRyxJQUFJbEIsZ0JBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFJQSxnQkFBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RDLE1BQU0sU0FBUyxHQUFHLElBQUlBLGdCQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEM7SUFDQTtJQUNBO0lBQ0EsTUFBTSxTQUFTLENBQUM7SUFDaEI7SUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLEdBQUcsR0FBRztJQUNkLFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3pCLEtBQUs7SUFDTDtJQUNBO0lBQ0E7SUFDQSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRTtJQUNuQixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFFBQVEsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDakMsS0FBSztJQUNMO0lBQ0E7SUFDQTtJQUNBLElBQUksSUFBSSxLQUFLLEdBQUc7SUFDaEIsUUFBUSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDM0IsS0FBSztJQUNMO0lBQ0E7SUFDQTtJQUNBLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO0lBQ3JCLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDNUIsUUFBUSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUNqQyxLQUFLO0lBQ0w7SUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRztJQUNoQixRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMseURBQXlELENBQUMsQ0FBQztJQUNoRixRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJQSxnQkFBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDaEQsS0FBSztJQUNMO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUU7SUFDbkM7SUFDQTtJQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSUEsZ0JBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN0RDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxRQUFRLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQy9CO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxRQUFRLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSUEsZ0JBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxRCxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ2pDLFFBQVEsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDL0IsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUN4QixRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBQzFCLFFBQVEsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDakMsUUFBUSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUlBLGdCQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM5RixLQUFLO0lBQ0w7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO0lBQ3JCLFFBQVEsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDQSxnQkFBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRUEsZ0JBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xILEtBQUs7SUFDTDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtJQUNqQixRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFO0lBQy9DLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO0lBQ2pGLFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDaEUsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDNUMsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDcEMsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLO0lBQ0w7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksS0FBSyxHQUFHO0lBQ1osUUFBUSxPQUFPLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRSxLQUFLO0lBQ0w7SUFDQTtJQUNBO0lBQ0EsSUFBSSxLQUFLLEdBQUc7SUFDWixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ3hCLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDMUIsUUFBUSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUNqQyxLQUFLO0lBQ0w7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksc0JBQXNCLENBQUMsTUFBTSxFQUFFO0lBQ25DLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsUUFBUSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRixLQUFLO0lBQ0w7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSx3QkFBd0IsQ0FBQyxNQUFNLEVBQUU7SUFDckMsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxRQUFRLE9BQU8sc0JBQXNCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELEtBQUs7SUFDTDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLEVBQUU7SUFDbkMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLEVBQUU7SUFDeEUsWUFBWSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdkUsU0FBUztJQUNULFFBQVEsTUFBTSxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFGLFFBQVEsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkYsUUFBUSxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMvRyxLQUFLO0lBQ0w7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksdUJBQXVCLENBQUMsTUFBTSxFQUFFO0lBQ3BDLFFBQVEsSUFBSSxDQUFDLHdCQUF3QixDQUFDaUIsVUFBUSxDQUFDLENBQUM7SUFDaEQsUUFBUSxJQUFJLENBQUMsc0JBQXNCLENBQUNDLFFBQU0sQ0FBQyxDQUFDO0lBQzVDLFFBQVEsT0FBTyxNQUFNO0lBQ3JCLGFBQWEsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ3BDLGFBQWEsZUFBZSxDQUFDRCxVQUFRLENBQUM7SUFDdEMsYUFBYSxlQUFlLENBQUNDLFFBQU0sQ0FBQztJQUNwQyxhQUFhLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsS0FBSztJQUNMO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtJQUNyQjtJQUNBLFFBQVEsTUFBTSxjQUFjLEdBQUdGLFVBQVE7SUFDdkMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQ2hELGFBQWEsUUFBUSxDQUFDWixrQkFBZ0IsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUNhLFVBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRixRQUFRLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQ0gsTUFBSSxDQUFDLENBQUM7SUFDMUQsUUFBUSxNQUFNLFNBQVMsR0FBR0MsTUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3ZHO0lBQ0EsUUFBUSxNQUFNLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRixRQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkUsUUFBUSxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxDQUFDO0lBQzNELFFBQVEsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsQ0FBQztJQUMvRDtJQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBR2YsZ0JBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUNsRCxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUdBLGdCQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdEQsUUFBUSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUNqQyxLQUFLO0lBQ0w7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO0lBQ2xCLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO0lBQ3BELFlBQVksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDYSxNQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVELFNBQVM7SUFDVCxRQUFRLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtJQUMvQixZQUFZLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3RDLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0QsU0FBUztJQUNULEtBQUs7SUFDTCxDQUFDO0lBQ0QsU0FBUyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFDOUI7SUFDQSxNQUFNLGVBQWUsR0FBRyxJQUFJYixnQkFBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELE1BQU1tQixRQUFNLEdBQUcsSUFBSW5CLGdCQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEMsTUFBTW9CLFFBQU0sR0FBRyxJQUFJcEIsZ0JBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QyxNQUFNLE9BQU8sR0FBRyxJQUFJQSxnQkFBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RDtJQUNBO0lBQ0E7SUFDQTtJQUNBLE1BQU0sb0JBQW9CLENBQUM7SUFDM0I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFO0lBQ3RILFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDakMsUUFBUSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDL0QsUUFBUSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDL0QsUUFBUSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFDekQsUUFBUSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7SUFDckQsUUFBUSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUlBLGdCQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUQ7SUFDQSxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJQSxnQkFBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3ZELFFBQVEsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUlBLGdCQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEQsUUFBUSxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSUEsZ0JBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNsRSxRQUFRLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJQSxnQkFBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ25FLFFBQVEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRSxRQUFRLElBQUksT0FBTyxFQUFFO0lBQ3JCLFlBQVksSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0QsWUFBWSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQ3JGLFNBQVM7SUFDVCxRQUFRLElBQUksUUFBUSxFQUFFO0lBQ3RCLFlBQVksSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0QsWUFBWSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3ZGLFNBQVM7SUFDVCxLQUFLO0lBQ0w7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRTtJQUM5QixRQUFRLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEUsUUFBUSxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakYsUUFBUSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkY7SUFDQSxRQUFRLElBQUksT0FBTyxFQUFFO0lBQ3JCLFlBQVksSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFO0lBQzdCLGdCQUFnQixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUNBLGdCQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0YsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixnQkFBZ0IsT0FBTyxDQUFDLENBQUMsR0FBR0EsZ0JBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekYsYUFBYTtJQUNiLFlBQVksSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFO0lBQzNCLGdCQUFnQixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUNBLGdCQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUYsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixnQkFBZ0IsT0FBTyxDQUFDLENBQUMsR0FBR0EsZ0JBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUYsYUFBYTtJQUNiLFlBQVltQixRQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLFlBQVksSUFBSSxDQUFDLHNCQUFzQixDQUFDQyxRQUFNLENBQUMsQ0FBQztJQUNoRDtJQUNBO0lBQ0E7SUFDQSxZQUFZLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUNBLFFBQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQ0QsUUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDQyxRQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNqRyxZQUFZRCxRQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzFEO0lBQ0E7SUFDQSxZQUFZLE9BQU8sQ0FBQyxVQUFVO0lBQzlCLGlCQUFpQixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDO0lBQ25ELGlCQUFpQixRQUFRLENBQUNBLFFBQU0sQ0FBQztJQUNqQyxpQkFBaUIsV0FBVyxDQUFDQSxRQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0MsaUJBQWlCLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNqRCxTQUFTO0lBQ1Q7SUFDQSxRQUFRLElBQUksUUFBUSxFQUFFO0lBQ3RCLFlBQVksSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFO0lBQzdCLGdCQUFnQixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUNuQixnQkFBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdGLGFBQWE7SUFDYixpQkFBaUI7SUFDakIsZ0JBQWdCLE9BQU8sQ0FBQyxDQUFDLEdBQUdBLGdCQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pGLGFBQWE7SUFDYixZQUFZLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRTtJQUMzQixnQkFBZ0IsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDQSxnQkFBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlGLGFBQWE7SUFDYixpQkFBaUI7SUFDakIsZ0JBQWdCLE9BQU8sQ0FBQyxDQUFDLEdBQUdBLGdCQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVGLGFBQWE7SUFDYixZQUFZbUIsUUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxZQUFZLElBQUksQ0FBQyxzQkFBc0IsQ0FBQ0MsUUFBTSxDQUFDLENBQUM7SUFDaEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDQSxRQUFNLENBQUMsQ0FBQyxRQUFRLENBQUNELFFBQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQ0MsUUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbEcsWUFBWUQsUUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUMzRDtJQUNBO0lBQ0EsWUFBWSxRQUFRLENBQUMsVUFBVTtJQUMvQixpQkFBaUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztJQUNwRCxpQkFBaUIsUUFBUSxDQUFDQSxRQUFNLENBQUM7SUFDakMsaUJBQWlCLFdBQVcsQ0FBQ0EsUUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdDLGlCQUFpQixRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsU0FBUztJQUNULEtBQUs7SUFDTDtJQUNBO0lBQ0E7SUFDQSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7SUFDbEIsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLG9FQUFvRSxDQUFDLENBQUM7SUFDM0YsUUFBUSxNQUFNLEdBQUcsR0FBR25CLGdCQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxLQUFLLEdBQUdBLGdCQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsS0FBSztJQUNMO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxJQUFJLHNCQUFzQixDQUFDLE1BQU0sRUFBRTtJQUNuQyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLEVBQUU7SUFDdEUsWUFBWSxPQUFPLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQyxTQUFTO0lBQ1QsUUFBUSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUYsUUFBUSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRixRQUFRLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxLQUFLO0lBQ0wsQ0FBQztJQUNEO0lBQ0E7SUFDQTtJQUNBLG9CQUFvQixDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7QUFDbkM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLE1BQU0sMEJBQTBCLENBQUM7SUFDakM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxXQUFXLENBQUMsV0FBVyxFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFO0lBQ3pILFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDdkMsUUFBUSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDL0QsUUFBUSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDL0QsUUFBUSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFDekQsUUFBUSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7SUFDckQsS0FBSztJQUNMO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksYUFBYSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7SUFDOUIsUUFBUSxJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUU7SUFDekIsWUFBWSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkQsWUFBWSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckYsU0FBUztJQUNULGFBQWE7SUFDYixZQUFZLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyRCxZQUFZLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEYsU0FBUztJQUNULFFBQVEsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFO0lBQ3ZCLFlBQVksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNGLFNBQVM7SUFDVCxhQUFhO0lBQ2IsWUFBWSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEQsWUFBWSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLFNBQVM7SUFDVCxLQUFLO0lBQ0w7SUFDQTtJQUNBO0lBQ0EsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO0lBQ2xCLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO0lBQzNGLFFBQVEsTUFBTSxHQUFHLEdBQUdBLGdCQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxLQUFLLEdBQUdBLGdCQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsS0FBSztJQUNMLENBQUM7SUFDRDtJQUNBO0lBQ0E7SUFDQSwwQkFBMEIsQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO0FBQy9DO0lBQ0EsTUFBTSxpQkFBaUIsQ0FBQztJQUN4QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxJQUFJLFdBQVcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFO0lBQzVDLFFBQVEsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDM0MsUUFBUSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUN2QyxLQUFLO0lBQ0w7SUFDQTtJQUNBO0lBQ0E7SUFDQSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUU7SUFDYixRQUFRLE9BQU8sSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyRSxLQUFLO0lBQ0wsQ0FBQztBQUNEO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsTUFBTXFCLDBCQUF3QixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDOUQ7SUFDQTtJQUNBO0lBQ0E7SUFDQSxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQztJQUNyQztJQUNBO0lBQ0E7SUFDQSxNQUFNLHFCQUFxQixDQUFDO0lBQzVCLElBQUksSUFBSSxJQUFJLEdBQUc7SUFDZjtJQUNBLFFBQVEsT0FBTyx1QkFBdUIsQ0FBQztJQUN2QyxLQUFLO0lBQ0wsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUNqQyxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQzdCLFFBQVEsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQy9GLEtBQUs7SUFDTCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUU7SUFDcEIsUUFBUSxPQUFPcEIsV0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxhQUFhO0lBQzVELFlBQVksTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDMUQ7SUFDQTtJQUNBLFlBQVksSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFO0lBQ3RDLGdCQUFnQixPQUFPO0lBQ3ZCLGFBQWE7SUFDYixpQkFBaUIsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFO0lBQ2hELGdCQUFnQixNQUFNLElBQUksS0FBSyxDQUFDLGdHQUFnRyxDQUFDLENBQUM7SUFDbEksYUFBYTtJQUNiLFlBQVksTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDO0lBQzVFLFlBQVksSUFBSSxvQkFBb0IsS0FBSyxJQUFJLEVBQUU7SUFDL0MsZ0JBQWdCLE9BQU87SUFDdkIsYUFBYTtJQUNiLGlCQUFpQixJQUFJLG9CQUFvQixLQUFLLFNBQVMsRUFBRTtJQUN6RCxnQkFBZ0IsTUFBTSxJQUFJLEtBQUssQ0FBQywyR0FBMkcsQ0FBQyxDQUFDO0lBQzdJLGFBQWE7SUFDYixZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDbEcsU0FBUyxDQUFDLENBQUM7SUFDWCxLQUFLO0lBQ0w7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtJQUN6QyxRQUFRLE9BQU9BLFdBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsYUFBYTtJQUM1RCxZQUFZLElBQUksUUFBUSxJQUFJLElBQUksSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFO0lBQ3pELGdCQUFnQixPQUFPLElBQUksQ0FBQztJQUM1QixhQUFhO0lBQ2IsWUFBWSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMvRSxZQUFZLElBQUksUUFBUSxFQUFFO0lBQzFCLGdCQUFnQixPQUFPLFFBQVEsQ0FBQztJQUNoQyxhQUFhO0lBQ2IsWUFBWSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMvRSxZQUFZLElBQUksUUFBUSxFQUFFO0lBQzFCLGdCQUFnQixPQUFPLFFBQVEsQ0FBQztJQUNoQyxhQUFhO0lBQ2IsWUFBWSxPQUFPLElBQUksQ0FBQztJQUN4QixTQUFTLENBQUMsQ0FBQztJQUNYLEtBQUs7SUFDTCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtJQUMzQyxRQUFRLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkIsUUFBUSxPQUFPQSxXQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLGFBQWE7SUFDNUQsWUFBWSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUMxQztJQUNBLFlBQVksTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM5SCxZQUFZLElBQUksQ0FBQyxTQUFTLEVBQUU7SUFDNUIsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDO0lBQzVCLGFBQWE7SUFDYixZQUFZLE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekcsWUFBWSxJQUFJLENBQUMsU0FBUyxFQUFFO0lBQzVCLGdCQUFnQixPQUFPLElBQUksQ0FBQztJQUM1QixhQUFhO0lBQ2IsWUFBWSxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO0lBQ3RELFlBQVksSUFBSSxDQUFDb0IsMEJBQXdCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO0lBQzVELGdCQUFnQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMscURBQXFELEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckcsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDO0lBQzVCLGFBQWE7SUFDYixZQUFZLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDbEQsWUFBWSxJQUFJLENBQUMsWUFBWSxFQUFFO0lBQy9CLGdCQUFnQixPQUFPLElBQUksQ0FBQztJQUM1QixhQUFhO0lBQ2IsWUFBWSxNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxJQUFJLEtBQUssWUFBWSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFDdkYsWUFBWSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLHVCQUF1QixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDM0csWUFBWSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLHVCQUF1QixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDM0csWUFBWSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDeEcsWUFBWSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDdEcsWUFBWSxJQUFJLE9BQU8sQ0FBQztJQUN4QixZQUFZLElBQUksWUFBWSxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUU7SUFDcEQsZ0JBQWdCLE9BQU8sR0FBRyxJQUFJLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsRyxhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLGdCQUFnQixPQUFPLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekYsYUFBYTtJQUNiLFlBQVksTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakUsWUFBWSxNQUFNLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLFlBQVksQ0FBQyxrQkFBa0IsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxSSxZQUFZLE9BQU8sTUFBTSxDQUFDO0lBQzFCLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsS0FBSztJQUNMLElBQUksaUJBQWlCLENBQUMsY0FBYyxFQUFFLGtCQUFrQixFQUFFO0lBQzFELFFBQVEsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25CLFFBQVEsSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFLEdBQUcsY0FBYyxLQUFLLElBQUksSUFBSSxjQUFjLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsY0FBYyxDQUFDLGFBQWEsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDdEssUUFBUSxNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQUUsR0FBRyxjQUFjLEtBQUssSUFBSSxJQUFJLGNBQWMsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxjQUFjLENBQUMsV0FBVyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLGtCQUFrQixDQUFDO0lBQ2xMO0lBQ0E7SUFDQTtJQUNBLFFBQVEsSUFBSSxhQUFhLEdBQUcsdUJBQXVCLEVBQUU7SUFDckQsWUFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLHFHQUFxRyxDQUFDLENBQUM7SUFDaEksWUFBWSxhQUFhLEdBQUcsdUJBQXVCLENBQUM7SUFDcEQsU0FBUztJQUNULFFBQVEsT0FBTyxJQUFJLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRSxLQUFLO0lBQ0wsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7SUFDM0MsUUFBUSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQixRQUFRLE9BQU9wQixXQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLGFBQWE7SUFDNUQsWUFBWSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUMxQztJQUNBLFlBQVksTUFBTSxNQUFNLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDOUYsWUFBWSxJQUFJLENBQUMsTUFBTSxFQUFFO0lBQ3pCLGdCQUFnQixPQUFPLElBQUksQ0FBQztJQUM1QixhQUFhO0lBQ2IsWUFBWSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFDekQsWUFBWSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7SUFDcEMsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDO0lBQzVCLGFBQWE7SUFDYixZQUFZLE1BQU0sa0JBQWtCLEdBQUcsaUJBQWlCLENBQUMsY0FBYyxLQUFLLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0lBQ3RHLFlBQVksTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDL0csWUFBWSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUMvRyxZQUFZLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQzVHLFlBQVksTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDMUcsWUFBWSxJQUFJLE9BQU8sQ0FBQztJQUN4QixZQUFZLElBQUksaUJBQWlCLENBQUMsY0FBYyxLQUFLLFlBQVksRUFBRTtJQUNuRSxnQkFBZ0IsT0FBTyxHQUFHLElBQUksMEJBQTBCLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xHLGFBQWE7SUFDYixpQkFBaUI7SUFDakIsZ0JBQWdCLE9BQU8sR0FBRyxJQUFJLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6RixhQUFhO0lBQ2IsWUFBWSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRSxZQUFZLElBQUksaUJBQWlCLENBQUMscUJBQXFCLEVBQUU7SUFDekQsZ0JBQWdCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdlQsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixnQkFBZ0IsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlELGFBQWE7SUFDYjtJQUNBLFlBQVksTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELFlBQVksSUFBSSxPQUFPLFlBQVksb0JBQW9CLEVBQUU7SUFDekQsZ0JBQWdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0RCxhQUFhO0lBQ2IsWUFBWSxPQUFPLE1BQU0sQ0FBQztJQUMxQixTQUFTLENBQUMsQ0FBQztJQUNYLEtBQUs7SUFDTCxJQUFJLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxrQkFBa0IsRUFBRTtJQUM1RCxRQUFRLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuQixRQUFRLE1BQU0sS0FBSyxHQUFHLGVBQWUsS0FBSyxJQUFJLElBQUksZUFBZSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUM7SUFDOUcsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssbUJBQW1CLEVBQUU7SUFDM0QsWUFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLGdFQUFnRSxDQUFDLENBQUM7SUFDM0YsU0FBUztJQUNULFFBQVEsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLEdBQUcsZUFBZSxLQUFLLElBQUksSUFBSSxlQUFlLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsZUFBZSxDQUFDLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDM0osUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLEVBQUUsR0FBRyxlQUFlLEtBQUssSUFBSSxJQUFJLGVBQWUsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxlQUFlLENBQUMsTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLGtCQUFrQixDQUFDO0lBQzNLO0lBQ0E7SUFDQTtJQUNBLFFBQVEsSUFBSSxNQUFNLEdBQUcsdUJBQXVCLEVBQUU7SUFDOUMsWUFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLGdHQUFnRyxDQUFDLENBQUM7SUFDM0gsWUFBWSxNQUFNLEdBQUcsdUJBQXVCLENBQUM7SUFDN0MsU0FBUztJQUNULFFBQVEsT0FBTyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyRCxLQUFLO0lBQ0wsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRTtJQUNyQyxRQUFRLE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RCxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtJQUM3QixZQUFZLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZELFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsWUFBWSxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO0lBQzdELFNBQVM7SUFDVCxRQUFRLE9BQU8sTUFBTSxDQUFDO0lBQ3RCLEtBQUs7SUFDTCxDQUFDO0FBQ0Q7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNLLFVBQUMsaUJBQWlCLEdBQUc7SUFDMUIsSUFBSSxJQUFJLEVBQUUsTUFBTTtJQUNoQixJQUFJLFVBQVUsRUFBRSxZQUFZO0lBQzVCLEVBQUU7QUFDRjtJQUNBO0lBQ0E7SUFDQTtJQUNBLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUU7SUFDL0I7SUFDQSxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxFQUFFO0lBQzdDLFFBQVEsT0FBTyxFQUFFLENBQUM7SUFDbEI7SUFDQSxJQUFJLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ3ZELFFBQVEsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUQsS0FBSztJQUNMO0lBQ0EsSUFBSSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDcEMsUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQjtJQUNBLElBQUksSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNqQyxRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CO0lBQ0EsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzlCLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkI7SUFDQSxJQUFJLE9BQU8sSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUN0QixDQUFDO0FBQ0Q7SUFDQTtJQUNBO0lBQ0E7SUFDQSxNQUFNcUIsd0JBQXNCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM1RDtJQUNBO0lBQ0E7SUFDQSxNQUFNLG1CQUFtQixDQUFDO0lBQzFCLElBQUksSUFBSSxJQUFJLEdBQUc7SUFDZjtJQUNBLFFBQVEsT0FBTyxxQkFBcUIsQ0FBQztJQUNyQyxLQUFLO0lBQ0wsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUNqQyxRQUFRLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkIsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLEVBQUUsR0FBRyxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQzVKLFFBQVEsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsRUFBRSxHQUFHLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDdkwsUUFBUSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxHQUFHLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ2hKLEtBQUs7SUFDTCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUU7SUFDcEIsUUFBUSxPQUFPckIsV0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxhQUFhO0lBQzVELFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELFNBQVMsQ0FBQyxDQUFDO0lBQ1gsS0FBSztJQUNMLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtJQUNsQixRQUFRLE9BQU9BLFdBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsYUFBYTtJQUM1RCxZQUFZLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxZQUFZLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtJQUNsQyxnQkFBZ0IsT0FBTyxRQUFRLENBQUM7SUFDaEMsYUFBYTtJQUNiLFlBQVksTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELFlBQVksSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO0lBQ2xDLGdCQUFnQixPQUFPLFFBQVEsQ0FBQztJQUNoQyxhQUFhO0lBQ2IsWUFBWSxPQUFPLElBQUksQ0FBQztJQUN4QixTQUFTLENBQUMsQ0FBQztJQUNYLEtBQUs7SUFDTCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUU7SUFDcEIsUUFBUSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3ZCLFFBQVEsT0FBT0EsV0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxhQUFhO0lBQzVELFlBQVksTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDMUM7SUFDQSxZQUFZLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDOUgsWUFBWSxJQUFJLENBQUMsU0FBUyxFQUFFO0lBQzVCLGdCQUFnQixPQUFPLElBQUksQ0FBQztJQUM1QixhQUFhO0lBQ2IsWUFBWSxNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pHLFlBQVksSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO0lBQ25DLGdCQUFnQixPQUFPLElBQUksQ0FBQztJQUM1QixhQUFhO0lBQ2IsWUFBWSxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO0lBQ3RELFlBQVksSUFBSSxDQUFDcUIsd0JBQXNCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO0lBQzFELGdCQUFnQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsbURBQW1ELEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkcsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDO0lBQzVCLGFBQWE7SUFDYixZQUFZLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7SUFDOUMsWUFBWSxJQUFJLENBQUMsVUFBVSxFQUFFO0lBQzdCLGdCQUFnQixPQUFPLElBQUksQ0FBQztJQUM1QixhQUFhO0lBQ2I7SUFDQSxZQUFZLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7SUFDckQsWUFBWSxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pFLFlBQVksSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtJQUN2RCxnQkFBZ0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLHNDQUFzQyxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDeEcsYUFBYTtJQUNiLFlBQVksSUFBSSxjQUFjLEdBQUcsU0FBUyxDQUFDO0lBQzNDLFlBQVksSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQUU7SUFDOUUsZ0JBQWdCLGNBQWMsR0FBRyxDQUFDLEVBQUUsSUFBSSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDN0ksYUFBYTtJQUNiLFlBQVksT0FBTztJQUNuQixnQkFBZ0IsV0FBVyxFQUFFLEdBQUc7SUFDaEMsZ0JBQWdCLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtJQUNyQyxnQkFBZ0IsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPO0lBQzNDLGdCQUFnQixPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU87SUFDM0MsZ0JBQWdCLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxvQkFBb0I7SUFDckUsZ0JBQWdCLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxrQkFBa0I7SUFDakUsZ0JBQWdCLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtJQUNqRCxnQkFBZ0Isa0JBQWtCLEVBQUUsVUFBVSxDQUFDLGtCQUFrQjtJQUNqRSxnQkFBZ0IsY0FBYztJQUM5QixnQkFBZ0IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVO0lBQ2pELGdCQUFnQixnQkFBZ0IsRUFBRSxVQUFVLENBQUMsZ0JBQWdCO0lBQzdELGdCQUFnQiw0QkFBNEIsRUFBRSxVQUFVLENBQUMsNEJBQTRCO0lBQ3JGLGdCQUFnQiwyQkFBMkIsRUFBRSxVQUFVLENBQUMsMkJBQTJCO0lBQ25GLGdCQUFnQixlQUFlLEVBQUUsVUFBVSxDQUFDLGVBQWU7SUFDM0QsZ0JBQWdCLDhCQUE4QixFQUFFLFVBQVUsQ0FBQyw4QkFBOEI7SUFDekYsZ0JBQWdCLDBCQUEwQixFQUFFLFVBQVUsQ0FBQywwQkFBMEI7SUFDakYsZ0JBQWdCLGNBQWMsRUFBRSxVQUFVLENBQUMsY0FBYztJQUN6RCxnQkFBZ0IsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLG1CQUFtQjtJQUNuRSxnQkFBZ0IsWUFBWSxFQUFFLFVBQVUsQ0FBQyxZQUFZO0lBQ3JELGdCQUFnQixlQUFlLEVBQUUsVUFBVSxDQUFDLGVBQWU7SUFDM0QsYUFBYSxDQUFDO0lBQ2QsU0FBUyxDQUFDLENBQUM7SUFDWCxLQUFLO0lBQ0wsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFO0lBQ3BCLFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDZixRQUFRLE9BQU9yQixXQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLGFBQWE7SUFDNUQsWUFBWSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUMxQztJQUNBLFlBQVksTUFBTSxNQUFNLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDOUYsWUFBWSxJQUFJLENBQUMsTUFBTSxFQUFFO0lBQ3pCLGdCQUFnQixPQUFPLElBQUksQ0FBQztJQUM1QixhQUFhO0lBQ2IsWUFBWSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQzNDLFlBQVksSUFBSSxDQUFDLFVBQVUsRUFBRTtJQUM3QixnQkFBZ0IsT0FBTyxJQUFJLENBQUM7SUFDNUIsYUFBYTtJQUNiO0lBQ0EsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtJQUNwQyxnQkFBZ0IsTUFBTSxJQUFJLEtBQUssQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO0lBQ2hILGFBQWE7SUFDYjtJQUNBLFlBQVksSUFBSSxPQUFPLENBQUM7SUFDeEIsWUFBWSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxVQUFVLENBQUMsT0FBTyxJQUFJLElBQUksSUFBSSxVQUFVLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxFQUFFO0lBQ3BHLGdCQUFnQixPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pGLGFBQWE7SUFDYixZQUFZLE9BQU87SUFDbkIsZ0JBQWdCLFdBQVcsRUFBRSxHQUFHO0lBQ2hDLGdCQUFnQixlQUFlLEVBQUUsVUFBVSxDQUFDLGVBQWU7SUFDM0QsZ0JBQWdCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtJQUN6QyxnQkFBZ0Isb0JBQW9CLEVBQUUsVUFBVSxDQUFDLG9CQUFvQjtJQUNyRSxnQkFBZ0Isa0JBQWtCLEVBQUUsVUFBVSxDQUFDLGtCQUFrQjtJQUNqRSxnQkFBZ0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO0lBQ25ELGdCQUFnQixlQUFlLEVBQUUsVUFBVSxDQUFDLGVBQWU7SUFDM0QsZ0JBQWdCLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxrQkFBa0I7SUFDakUsZ0JBQWdCLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUztJQUMvQyxnQkFBZ0IsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLGdCQUFnQjtJQUM3RCxnQkFBZ0IsT0FBTyxFQUFFLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxHQUFHLE9BQU8sR0FBRyxTQUFTO0lBQ3JGLGdCQUFnQixLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7SUFDdkMsZ0JBQWdCLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTztJQUMzQyxnQkFBZ0IsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLGlCQUFpQjtJQUMvRCxhQUFhLENBQUM7SUFDZCxTQUFTLENBQUMsQ0FBQztJQUNYLEtBQUs7SUFDTCxJQUFJLGlCQUFpQixDQUFDLEtBQUssRUFBRTtJQUM3QixRQUFRLElBQUksRUFBRSxDQUFDO0lBQ2YsUUFBUSxPQUFPQSxXQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLGFBQWE7SUFDNUQsWUFBWSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUMxQyxZQUFZLE1BQU0sTUFBTSxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0YsWUFBWSxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7SUFDaEMsZ0JBQWdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQywyQ0FBMkMsRUFBRSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQyxDQUFDO0lBQ3hJLGdCQUFnQixPQUFPLElBQUksQ0FBQztJQUM1QixhQUFhO0lBQ2I7SUFDQTtJQUNBLFlBQVksSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUN2QztJQUNBLFlBQVksSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRTtJQUMzQyxnQkFBZ0IsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BHLGdCQUFnQixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLGdCQUFnQixTQUFTLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxhQUFhO0lBQ2IsWUFBWSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7SUFDbkMsZ0JBQWdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQywyQ0FBMkMsRUFBRSxLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQyxDQUFDO0lBQ2pKLGdCQUFnQixPQUFPLElBQUksQ0FBQztJQUM1QixhQUFhO0lBQ2IsWUFBWSxNQUFNLE1BQU0sR0FBRyxJQUFJRCxnQkFBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25ELFlBQVksT0FBTyxNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssS0FBSztJQUM1RyxnQkFBZ0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxnQkFBZ0IsT0FBTyxDQUFDLElBQUksQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0lBQ3RGLGdCQUFnQixPQUFPLElBQUksQ0FBQztJQUM1QixhQUFhLENBQUMsQ0FBQztJQUNmLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsS0FBSztJQUNMLENBQUM7QUFDRDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsTUFBTSxPQUFPLENBQUM7SUFDZDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFO0lBQ3hCLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ2xDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2hDLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ3hDLFFBQVEsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztJQUMxRCxRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUM5QyxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNwQyxLQUFLO0lBQ0w7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7SUFDbEIsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQy9CLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0lBQ3pCLFlBQVksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsU0FBUztJQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7SUFDcEMsWUFBWSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDNUMsU0FBUztJQUNULEtBQUs7SUFDTCxDQUFDO0FBQ0Q7SUFDQSxNQUFNLG1CQUFtQixDQUFDO0lBQzFCLElBQUksSUFBSSxJQUFJLEdBQUc7SUFDZjtJQUNBLFFBQVEsT0FBTyxVQUFVLENBQUM7SUFDMUIsS0FBSztJQUNMLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUU7SUFDakMsUUFBUSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDL0IsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM3QixRQUFRLE1BQU0sVUFBVSxHQUFHLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDaEcsUUFBUSxNQUFNLG9CQUFvQixHQUFHLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztJQUNwSCxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsR0FBRyxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6TCxRQUFRLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsR0FBRyxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSwwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1TCxRQUFRLElBQUksQ0FBQyxjQUFjO0lBQzNCLFlBQVksQ0FBQyxFQUFFLEdBQUcsT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLGNBQWMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7SUFDdk0sUUFBUSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxHQUFHLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdMLFFBQVEsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsR0FBRyxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkssS0FBSztJQUNMLElBQUksU0FBUyxDQUFDLElBQUksRUFBRTtJQUNwQixRQUFRLE9BQU9DLFdBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsYUFBYTtJQUM1RCxZQUFZLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsWUFBWSxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELFlBQVksTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELFlBQVksTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxZQUFZLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RCxZQUFZLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQy9DLFlBQVksTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDdkQ7SUFDQTtJQUNBLFlBQVksSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFO0lBQ2xDLGdCQUFnQixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQztJQUM1QyxvQkFBb0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO0lBQ3JDLG9CQUFvQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQjtJQUN6RSxvQkFBb0IsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYztJQUM3RCxvQkFBb0IsUUFBUTtJQUM1QixvQkFBb0IsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUztJQUNuRCxvQkFBb0IsSUFBSTtJQUN4QixpQkFBaUIsQ0FBQyxDQUFDO0lBQ25CLGdCQUFnQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDaEQsYUFBYTtJQUNiLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsS0FBSztJQUNMOztJQzM2R0E7O0lBRUc7SUFDRyxNQUFPLEdBQUksU0FBUSxPQUFPLENBQUE7SUFtQjlCOzs7O0lBSUc7SUFDSCxJQUFBLFdBQUEsQ0FBbUIsTUFBcUIsRUFBQTtZQUN0QyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFZCxRQUFBLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUNsQyxRQUFBLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7SUFDbEQsUUFBQSxJQUFJLENBQUMscUJBQXFCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDO1NBQzNEO0lBRUQ7Ozs7OztJQU1HO0lBQ0ksSUFBQSxNQUFNLENBQUMsS0FBYSxFQUFBO0lBQ3pCLFFBQUEsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVwQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtJQUM5QixZQUFBLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNyQyxTQUFBO1lBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7SUFDMUIsWUFBQSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFNBQUE7WUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBYSxLQUFJO29CQUN2QyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7SUFDbkIsb0JBQUEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixpQkFBQTtJQUNILGFBQUMsQ0FBQyxDQUFDO0lBQ0osU0FBQTtTQUNGO0lBQ0Y7O0lDbkVEO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFvR0E7SUFDTyxTQUFTQSxXQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0lBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUN0RyxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtJQUN0SCxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5RSxLQUFLLENBQUMsQ0FBQztJQUNQOztJQzFIQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBRUE7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQSxTQUFTQSxXQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0lBQ3RELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxD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d0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzdELEtBQUs7SUFDTCxJQUFJLElBQUksc0JBQXNCLEdBQUc7SUFDakMsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDO0lBQzFELEtBQUs7SUFDTCxJQUFJLElBQUksc0JBQXNCLENBQUMsS0FBSyxFQUFFO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzNELEtBQUs7SUFDTCxJQUFJLElBQUksd0JBQXdCLEdBQUc7SUFDbkMsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDO0lBQzVELEtBQUs7SUFDTCxJQUFJLElBQUksd0JBQXdCLENBQUMsS0FBSyxFQUFFO0lBQ3hDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzdELEtBQUs7SUFDTCxJQUFJLElBQUksd0JBQXdCLEdBQUc7SUFDbkMsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDO0lBQzVELEtBQUs7SUFDTCxJQUFJLElBQUksd0JBQXdCLENBQUMsS0FBSyxFQUFFO0lBQ3hDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzdELEtBQUs7SUFDTCxJQUFJLElBQUksd0JBQXdCLEdBQUc7SUFDbkMsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDO0lBQzVELEtBQUs7SUFDTCxJQUFJLElBQUksd0JBQXdCLENBQUMsS0FBSyxFQUFFO0lBQ3hDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzdELEtBQUs7SUFDTDtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksSUFB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Q0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLFNBQVNDLFdBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUU7SUFDdEQsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEtBQUssWUFBWSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDaEgsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDL0QsUUFBUSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ25HLFFBQVEsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ3RHLFFBQVEsU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFO0lBQ3RILFFBQVEsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUs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QUU7SUFDaEgsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDL0QsUUFBUSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ25HLFFBQVEsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ3RHLFFBQVEsU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFO0lBQ3RILFFBQVEsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLEtBQUssQ0FBQyxDQUFDO0lBQ1AsQ0FBQztBQUNEO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxTQUFTc0IsMkJBQXlCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTtJQUNyRCxJQUFJLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsSUFBSSxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMs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QUU7SUFDdEMsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVFLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFFLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFLFNBQVM7SUFDVCxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDckMsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsU0FBUztJQUNULFFBQVEsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakcsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsRixRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RixRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUN6QyxLQUFLO0lBQ0wsSUFBSSxXQUFXLEdBQUc7SUFDbEIsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3JDLFlBQVksTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxZQUFZLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDL0QsU0FBUztJQUNULFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNyQyxZQUFZLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsWUFBWSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoRSxZQUFZLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMzQyxLQUFLO0lBQ0wsQ0FBQztBQUNEO0lBQ0EsTUFBTSxpQ0FBaUMsU0FBU0EsZ0JBQUssQ0FBQyxjQUFjLENBQUM7SUFDckUsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFO0lBQ3ZCLFFBQVEsS0FBSyxFQUFFLENBQUM7SUFDaEIsUUFBUSxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUM5QixRQUFRLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJQSxnQkFBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xELFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDNUIsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUlBLGdCQUFLLENBQUMsZUFBZSxDQUFDLElBQUksWUFBWSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkYsUUFBUSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckQsUUFBUSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUlBLGdCQUFLLENBQUMsZUFBZSxDQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRixRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNCLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3RCLEtBQUs7SUFDTCxJQUFJLE1BQU0sR0FBRztJQUNiLFFBQVEsSUFBSSxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDekMsUUFBUSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzVELFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLE1BQU0sRUFBRTtJQUM1QyxZQUFZLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO0lBQ3pDLFlBQVksb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0lBQ3hDLFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQzdELFlBQVksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RCxZQUFZLG9CQUFvQixHQUFHLElBQUksQ0FBQztJQUN4QyxTQUFTO0lBQ1QsUUFBUSxJQUFJLG9CQUFvQixFQUFFO0lBQ2xDLFlBQVksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2xDLFNBQVM7SUFDVCxLQUFLO0lBQ0wsSUFBSSxjQUFjLEdBQUc7SUFDckIsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3JDLFlBQVksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDM0MsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25FLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEYsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUYsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDekMsS0FBSztJQUNMLElBQUksV0FBVyxHQUFHO0lBQ2xCLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNyQyxZQUFZLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsWUFBWSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoRCxZQUFZLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEUsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzNDLEtBQUs7SUFDTCxDQUFDO0FBQ0Q7SUFDQSxNQUFNLE1BQU0sR0FBRyxJQUFJQSxnQkFBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DLE1BQU0sMkJBQTJCLFNBQVNBLGdCQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3RELElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRTtJQUMxQixRQUFRLEtBQUssRUFBRSxDQUFDO0lBQ2hCLFFBQVEsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ2pDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssWUFBWSxnQ0FBZ0MsRUFBRTtJQUM3RSxZQUFZLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxpQ0FBaUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hGLFNBQVM7SUFDVCxhQUFhLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFlBQVksaUNBQWlDLEVBQUU7SUFDbkYsWUFBWSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksa0NBQWtDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RixTQUFTO0lBQ1QsYUFBYTtJQUNiLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO0lBQ2pHLFNBQVM7SUFDVCxRQUFRLE1BQU0sUUFBUSxHQUFHLElBQUlBLGdCQUFLLENBQUMsaUJBQWlCLENBQUM7SUFDckQsWUFBWSxLQUFLLEVBQUUsUUFBUTtJQUMzQixZQUFZLFNBQVMsRUFBRSxLQUFLO0lBQzVCLFlBQVksVUFBVSxFQUFFLEtBQUs7SUFDN0IsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSUEsZ0JBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0RSxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLEtBQUs7SUFDTCxJQUFJLE9BQU8sR0FBRztJQUNkLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQyxLQUFLO0lBQ0wsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUU7SUFDN0IsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRCxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ3pELFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsTUFBTTtJQUMxQyxhQUFhLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RixhQUFhLE1BQU0sRUFBRSxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQyxRQUFRLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxLQUFLO0lBQ0wsQ0FBQztBQUNEO0lBQ0EsTUFBTSx3QkFBd0IsU0FBU0EsZ0JBQUssQ0FBQyxjQUFjLENBQUM7SUFDNUQsSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFO0lBQzVCLFFBQVEsS0FBSyxFQUFFLENBQUM7SUFDaEIsUUFBUSxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUM5QixRQUFRLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJQSxnQkFBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hELFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUlBLGdCQUFLLENBQUMsZUFBZSxDQUFDLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVFLFFBQVEsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJQSxnQkFBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RSxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNCLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3RCLEtBQUs7SUFDTCxJQUFJLE1BQU0sR0FBRztJQUNiLFFBQVEsSUFBSSxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDekMsUUFBUSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUM3RSxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxNQUFNLEVBQUU7SUFDNUMsWUFBWSxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUN6QyxZQUFZLG9CQUFvQixHQUFHLElBQUksQ0FBQztJQUN4QyxTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFO0lBQ25GLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQy9FLFlBQVksb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0lBQ3hDLFNBQVM7SUFDVCxRQUFRLElBQUksb0JBQW9CLEVBQUU7SUFDbEMsWUFBWSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbEMsU0FBUztJQUNULEtBQUs7SUFDTCxJQUFJLGNBQWMsR0FBRztJQUNyQixRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDckMsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkUsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsRixRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDekMsS0FBSztJQUNMLElBQUksV0FBVyxHQUFHO0lBQ2xCLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNyQyxZQUFZLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsWUFBWSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoRCxZQUFZLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEUsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzQyxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMzQyxLQUFLO0lBQ0wsQ0FBQztBQUNE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
diff --git a/render_script/three-js/src/three-vrm.module.js b/render_script/three-js/src/three-vrm.module.js
new file mode 100644
index 0000000000000000000000000000000000000000..1e26662398a88534644c821956f89175fdcfd883
--- /dev/null
+++ b/render_script/three-js/src/three-vrm.module.js
@@ -0,0 +1,6834 @@
+/*!
+ * @pixiv/three-vrm v2.0.6
+ * VRM file loader for three.js.
+ *
+ * Copyright (c) 2019-2023 pixiv Inc.
+ * @pixiv/three-vrm is distributed under MIT License
+ * https://github.com/pixiv/three-vrm/blob/release/LICENSE
+ */
+import * as THREE from 'three';
+import { BufferAttribute } from 'three';
+
+/*!
+ * @pixiv/three-vrm-core v2.0.6
+ * The implementation of core features of VRM, for @pixiv/three-vrm
+ *
+ * Copyright (c) 2020-2023 pixiv Inc.
+ * @pixiv/three-vrm-core is distributed under MIT License
+ * https://github.com/pixiv/three-vrm/blob/release/LICENSE
+ */
+
+// animationMixer の監視対象は、Scene の中に入っている必要がある。
+// そのため、表示オブジェクトではないけれど、Object3D を継承して Scene に投入できるようにする。
+class VRMExpression extends THREE.Object3D {
+ /**
+ * A value represents how much it should override blink expressions.
+ * `0.0` == no override at all, `1.0` == completely block the expressions.
+ */
+ get overrideBlinkAmount() {
+ if (this.overrideBlink === 'block') {
+ return 0.0 < this.weight ? 1.0 : 0.0;
+ }
+ else if (this.overrideBlink === 'blend') {
+ return this.weight;
+ }
+ else {
+ return 0.0;
+ }
+ }
+ /**
+ * A value represents how much it should override lookAt expressions.
+ * `0.0` == no override at all, `1.0` == completely block the expressions.
+ */
+ get overrideLookAtAmount() {
+ if (this.overrideLookAt === 'block') {
+ return 0.0 < this.weight ? 1.0 : 0.0;
+ }
+ else if (this.overrideLookAt === 'blend') {
+ return this.weight;
+ }
+ else {
+ return 0.0;
+ }
+ }
+ /**
+ * A value represents how much it should override mouth expressions.
+ * `0.0` == no override at all, `1.0` == completely block the expressions.
+ */
+ get overrideMouthAmount() {
+ if (this.overrideMouth === 'block') {
+ return 0.0 < this.weight ? 1.0 : 0.0;
+ }
+ else if (this.overrideMouth === 'blend') {
+ return this.weight;
+ }
+ else {
+ return 0.0;
+ }
+ }
+ constructor(expressionName) {
+ super();
+ /**
+ * The current weight of the expression.
+ */
+ this.weight = 0.0;
+ /**
+ * Interpret values greater than 0.5 as 1.0, ortherwise 0.0.
+ */
+ this.isBinary = false;
+ /**
+ * Specify how the expression overrides blink expressions.
+ */
+ this.overrideBlink = 'none';
+ /**
+ * Specify how the expression overrides lookAt expressions.
+ */
+ this.overrideLookAt = 'none';
+ /**
+ * Specify how the expression overrides mouth expressions.
+ */
+ this.overrideMouth = 'none';
+ this._binds = [];
+ this.name = `VRMExpression_${expressionName}`;
+ this.expressionName = expressionName;
+ // traverse 時の救済手段として Object3D ではないことを明示しておく
+ this.type = 'VRMExpression';
+ // 表示目的のオブジェクトではないので、負荷軽減のために visible を false にしておく。
+ // これにより、このインスタンスに対する毎フレームの matrix 自動計算を省略できる。
+ this.visible = false;
+ }
+ addBind(bind) {
+ this._binds.push(bind);
+ }
+ /**
+ * Apply weight to every assigned blend shapes.
+ * Should be called every frame.
+ */
+ applyWeight(options) {
+ var _a;
+ let actualWeight = this.isBinary ? (this.weight <= 0.5 ? 0.0 : 1.0) : this.weight;
+ actualWeight *= (_a = options === null || options === void 0 ? void 0 : options.multiplier) !== null && _a !== void 0 ? _a : 1.0;
+ this._binds.forEach((bind) => bind.applyWeight(actualWeight));
+ }
+ /**
+ * Clear previously assigned blend shapes.
+ */
+ clearAppliedWeight() {
+ this._binds.forEach((bind) => bind.clearAppliedWeight());
+ }
+}
+
+/******************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+function __awaiter$6(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+}
+
+function extractPrimitivesInternal(gltf, nodeIndex, node) {
+ var _a, _b;
+ const json = gltf.parser.json;
+ /**
+ * Let's list up every possible patterns that parsed gltf nodes with a mesh can have,,,
+ *
+ * "*" indicates that those meshes should be listed up using this function
+ *
+ * ### A node with a (mesh, a signle primitive)
+ *
+ * - `THREE.Mesh`: The only primitive of the mesh *
+ *
+ * ### A node with a (mesh, multiple primitives)
+ *
+ * - `THREE.Group`: The root of the mesh
+ * - `THREE.Mesh`: A primitive of the mesh *
+ * - `THREE.Mesh`: A primitive of the mesh (2) *
+ *
+ * ### A node with a (mesh, multiple primitives) AND (a child with a mesh, a single primitive)
+ *
+ * - `THREE.Group`: The root of the mesh
+ * - `THREE.Mesh`: A primitive of the mesh *
+ * - `THREE.Mesh`: A primitive of the mesh (2) *
+ * - `THREE.Mesh`: A primitive of a MESH OF THE CHILD
+ *
+ * ### A node with a (mesh, multiple primitives) AND (a child with a mesh, multiple primitives)
+ *
+ * - `THREE.Group`: The root of the mesh
+ * - `THREE.Mesh`: A primitive of the mesh *
+ * - `THREE.Mesh`: A primitive of the mesh (2) *
+ * - `THREE.Group`: The root of a MESH OF THE CHILD
+ * - `THREE.Mesh`: A primitive of the mesh of the child
+ * - `THREE.Mesh`: A primitive of the mesh of the child (2)
+ *
+ * ### A node with a (mesh, multiple primitives) BUT the node is a bone
+ *
+ * - `THREE.Bone`: The root of the node, as a bone
+ * - `THREE.Group`: The root of the mesh
+ * - `THREE.Mesh`: A primitive of the mesh *
+ * - `THREE.Mesh`: A primitive of the mesh (2) *
+ *
+ * ### A node with a (mesh, multiple primitives) AND (a child with a mesh, multiple primitives) BUT the node is a bone
+ *
+ * - `THREE.Bone`: The root of the node, as a bone
+ * - `THREE.Group`: The root of the mesh
+ * - `THREE.Mesh`: A primitive of the mesh *
+ * - `THREE.Mesh`: A primitive of the mesh (2) *
+ * - `THREE.Group`: The root of a MESH OF THE CHILD
+ * - `THREE.Mesh`: A primitive of the mesh of the child
+ * - `THREE.Mesh`: A primitive of the mesh of the child (2)
+ *
+ * ...I will take a strategy that traverses the root of the node and take first (primitiveCount) meshes.
+ */
+ // Make sure that the node has a mesh
+ const schemaNode = (_a = json.nodes) === null || _a === void 0 ? void 0 : _a[nodeIndex];
+ if (schemaNode == null) {
+ console.warn(`extractPrimitivesInternal: Attempt to use nodes[${nodeIndex}] of glTF but the node doesn't exist`);
+ return null;
+ }
+ const meshIndex = schemaNode.mesh;
+ if (meshIndex == null) {
+ return null;
+ }
+ // How many primitives the mesh has?
+ const schemaMesh = (_b = json.meshes) === null || _b === void 0 ? void 0 : _b[meshIndex];
+ if (schemaMesh == null) {
+ console.warn(`extractPrimitivesInternal: Attempt to use meshes[${meshIndex}] of glTF but the mesh doesn't exist`);
+ return null;
+ }
+ const primitiveCount = schemaMesh.primitives.length;
+ // Traverse the node and take first (primitiveCount) meshes
+ const primitives = [];
+ node.traverse((object) => {
+ if (primitives.length < primitiveCount) {
+ if (object.isMesh) {
+ primitives.push(object);
+ }
+ }
+ });
+ return primitives;
+}
+/**
+ * Extract primitives ( `THREE.Mesh[]` ) of a node from a loaded GLTF.
+ * The main purpose of this function is to distinguish primitives and children from a node that has both meshes and children.
+ *
+ * It utilizes the behavior that GLTFLoader adds mesh primitives to the node object ( `THREE.Group` ) first then adds its children.
+ *
+ * @param gltf A GLTF object taken from GLTFLoader
+ * @param nodeIndex The index of the node
+ */
+function gltfExtractPrimitivesFromNode(gltf, nodeIndex) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const node = yield gltf.parser.getDependency('node', nodeIndex);
+ return extractPrimitivesInternal(gltf, nodeIndex, node);
+ });
+}
+/**
+ * Extract primitives ( `THREE.Mesh[]` ) of nodes from a loaded GLTF.
+ * See {@link gltfExtractPrimitivesFromNode} for more details.
+ *
+ * It returns a map from node index to extraction result.
+ * If a node does not have a mesh, the entry for the node will not be put in the returning map.
+ *
+ * @param gltf A GLTF object taken from GLTFLoader
+ */
+function gltfExtractPrimitivesFromNodes(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const nodes = yield gltf.parser.getDependencies('node');
+ const map = new Map();
+ nodes.forEach((node, index) => {
+ const result = extractPrimitivesInternal(gltf, index, node);
+ if (result != null) {
+ map.set(index, result);
+ }
+ });
+ return map;
+ });
+}
+
+/**
+ * Get a material definition index of glTF from associated material.
+ * It's basically a comat code between Three.js r133 or above and previous versions.
+ * @param parser GLTFParser
+ * @param material A material of gltf
+ * @returns Material definition index of glTF
+ */
+function gltfGetAssociatedMaterialIndex(parser, material) {
+ var _a, _b;
+ const threeRevision = parseInt(THREE.REVISION, 10);
+ let index = null;
+ if (threeRevision >= 133) {
+ index = (_b = (_a = parser.associations.get(material)) === null || _a === void 0 ? void 0 : _a.materials) !== null && _b !== void 0 ? _b : null;
+ }
+ else {
+ const associations = parser.associations;
+ const reference = associations.get(material);
+ if ((reference === null || reference === void 0 ? void 0 : reference.type) === 'materials') {
+ index = reference.index;
+ }
+ }
+ return index;
+}
+
+/* eslint-disable @typescript-eslint/naming-convention */
+const VRMExpressionPresetName = {
+ Aa: 'aa',
+ Ih: 'ih',
+ Ou: 'ou',
+ Ee: 'ee',
+ Oh: 'oh',
+ Blink: 'blink',
+ Happy: 'happy',
+ Angry: 'angry',
+ Sad: 'sad',
+ Relaxed: 'relaxed',
+ LookUp: 'lookUp',
+ Surprised: 'surprised',
+ LookDown: 'lookDown',
+ LookLeft: 'lookLeft',
+ LookRight: 'lookRight',
+ BlinkLeft: 'blinkLeft',
+ BlinkRight: 'blinkRight',
+ Neutral: 'neutral',
+};
+
+/**
+ * Clamp the input value within [0.0 - 1.0].
+ *
+ * @param value The input value
+ */
+function saturate(value) {
+ return Math.max(Math.min(value, 1.0), 0.0);
+}
+
+class VRMExpressionManager {
+ get expressions() {
+ return this._expressions.concat();
+ }
+ get expressionMap() {
+ return Object.assign({}, this._expressionMap);
+ }
+ /**
+ * A map from name to expression, but excluding custom expressions.
+ */
+ get presetExpressionMap() {
+ const result = {};
+ const presetNameSet = new Set(Object.values(VRMExpressionPresetName));
+ Object.entries(this._expressionMap).forEach(([name, expression]) => {
+ if (presetNameSet.has(name)) {
+ result[name] = expression;
+ }
+ });
+ return result;
+ }
+ /**
+ * A map from name to expression, but excluding preset expressions.
+ */
+ get customExpressionMap() {
+ const result = {};
+ const presetNameSet = new Set(Object.values(VRMExpressionPresetName));
+ Object.entries(this._expressionMap).forEach(([name, expression]) => {
+ if (!presetNameSet.has(name)) {
+ result[name] = expression;
+ }
+ });
+ return result;
+ }
+ /**
+ * Create a new {@link VRMExpressionManager}.
+ */
+ constructor() {
+ /**
+ * A set of name or preset name of expressions that will be overridden by {@link VRMExpression.overrideBlink}.
+ */
+ this.blinkExpressionNames = ['blink', 'blinkLeft', 'blinkRight'];
+ /**
+ * A set of name or preset name of expressions that will be overridden by {@link VRMExpression.overrideLookAt}.
+ */
+ this.lookAtExpressionNames = ['lookLeft', 'lookRight', 'lookUp', 'lookDown'];
+ /**
+ * A set of name or preset name of expressions that will be overridden by {@link VRMExpression.overrideMouth}.
+ */
+ this.mouthExpressionNames = ['aa', 'ee', 'ih', 'oh', 'ou'];
+ /**
+ * A set of {@link VRMExpression}.
+ * When you want to register expressions, use {@link registerExpression}
+ */
+ this._expressions = [];
+ /**
+ * A map from name to expression.
+ */
+ this._expressionMap = {};
+ // do nothing
+ }
+ /**
+ * Copy the given {@link VRMExpressionManager} into this one.
+ * @param source The {@link VRMExpressionManager} you want to copy
+ * @returns this
+ */
+ copy(source) {
+ // first unregister all the expression it has
+ const expressions = this._expressions.concat();
+ expressions.forEach((expression) => {
+ this.unregisterExpression(expression);
+ });
+ // then register all the expression of the source
+ source._expressions.forEach((expression) => {
+ this.registerExpression(expression);
+ });
+ // copy remaining members
+ this.blinkExpressionNames = source.blinkExpressionNames.concat();
+ this.lookAtExpressionNames = source.lookAtExpressionNames.concat();
+ this.mouthExpressionNames = source.mouthExpressionNames.concat();
+ return this;
+ }
+ /**
+ * Returns a clone of this {@link VRMExpressionManager}.
+ * @returns Copied {@link VRMExpressionManager}
+ */
+ clone() {
+ return new VRMExpressionManager().copy(this);
+ }
+ /**
+ * Return a registered expression.
+ * If it cannot find an expression, it will return `null` instead.
+ *
+ * @param name Name or preset name of the expression
+ */
+ getExpression(name) {
+ var _a;
+ return (_a = this._expressionMap[name]) !== null && _a !== void 0 ? _a : null;
+ }
+ /**
+ * Register an expression.
+ *
+ * @param expression {@link VRMExpression} that describes the expression
+ */
+ registerExpression(expression) {
+ this._expressions.push(expression);
+ this._expressionMap[expression.expressionName] = expression;
+ }
+ /**
+ * Unregister an expression.
+ *
+ * @param expression The expression you want to unregister
+ */
+ unregisterExpression(expression) {
+ const index = this._expressions.indexOf(expression);
+ if (index === -1) {
+ console.warn('VRMExpressionManager: The specified expressions is not registered');
+ }
+ this._expressions.splice(index, 1);
+ delete this._expressionMap[expression.expressionName];
+ }
+ /**
+ * Get the current weight of the specified expression.
+ * If it doesn't have an expression of given name, it will return `null` instead.
+ *
+ * @param name Name of the expression
+ */
+ getValue(name) {
+ var _a;
+ const expression = this.getExpression(name);
+ return (_a = expression === null || expression === void 0 ? void 0 : expression.weight) !== null && _a !== void 0 ? _a : null;
+ }
+ /**
+ * Set a weight to the specified expression.
+ *
+ * @param name Name of the expression
+ * @param weight Weight
+ */
+ setValue(name, weight) {
+ const expression = this.getExpression(name);
+ if (expression) {
+ expression.weight = saturate(weight);
+ }
+ }
+ /**
+ * Get a track name of specified expression.
+ * This track name is needed to manipulate its expression via keyframe animations.
+ *
+ * @example Manipulate an expression using keyframe animation
+ * ```js
+ * const trackName = vrm.expressionManager.getExpressionTrackName( 'blink' );
+ * const track = new THREE.NumberKeyframeTrack(
+ * name,
+ * [ 0.0, 0.5, 1.0 ], // times
+ * [ 0.0, 1.0, 0.0 ] // values
+ * );
+ *
+ * const clip = new THREE.AnimationClip(
+ * 'blink', // name
+ * 1.0, // duration
+ * [ track ] // tracks
+ * );
+ *
+ * const mixer = new THREE.AnimationMixer( vrm.scene );
+ * const action = mixer.clipAction( clip );
+ * action.play();
+ * ```
+ *
+ * @param name Name of the expression
+ */
+ getExpressionTrackName(name) {
+ const expression = this.getExpression(name);
+ return expression ? `${expression.name}.weight` : null;
+ }
+ /**
+ * Update every expressions.
+ */
+ update() {
+ // see how much we should override certain expressions
+ const weightMultipliers = this._calculateWeightMultipliers();
+ // reset expression binds first
+ this._expressions.forEach((expression) => {
+ expression.clearAppliedWeight();
+ });
+ // then apply binds
+ this._expressions.forEach((expression) => {
+ let multiplier = 1.0;
+ const name = expression.expressionName;
+ if (this.blinkExpressionNames.indexOf(name) !== -1) {
+ multiplier *= weightMultipliers.blink;
+ }
+ if (this.lookAtExpressionNames.indexOf(name) !== -1) {
+ multiplier *= weightMultipliers.lookAt;
+ }
+ if (this.mouthExpressionNames.indexOf(name) !== -1) {
+ multiplier *= weightMultipliers.mouth;
+ }
+ expression.applyWeight({ multiplier });
+ });
+ }
+ /**
+ * Calculate sum of override amounts to see how much we should multiply weights of certain expressions.
+ */
+ _calculateWeightMultipliers() {
+ let blink = 1.0;
+ let lookAt = 1.0;
+ let mouth = 1.0;
+ this._expressions.forEach((expression) => {
+ blink -= expression.overrideBlinkAmount;
+ lookAt -= expression.overrideLookAtAmount;
+ mouth -= expression.overrideMouthAmount;
+ });
+ blink = Math.max(0.0, blink);
+ lookAt = Math.max(0.0, lookAt);
+ mouth = Math.max(0.0, mouth);
+ return { blink, lookAt, mouth };
+ }
+}
+
+/* eslint-disable @typescript-eslint/naming-convention */
+const VRMExpressionMaterialColorType = {
+ Color: 'color',
+ EmissionColor: 'emissionColor',
+ ShadeColor: 'shadeColor',
+ MatcapColor: 'matcapColor',
+ RimColor: 'rimColor',
+ OutlineColor: 'outlineColor',
+};
+const v0ExpressionMaterialColorMap = {
+ _Color: VRMExpressionMaterialColorType.Color,
+ _EmissionColor: VRMExpressionMaterialColorType.EmissionColor,
+ _ShadeColor: VRMExpressionMaterialColorType.ShadeColor,
+ _RimColor: VRMExpressionMaterialColorType.RimColor,
+ _OutlineColor: VRMExpressionMaterialColorType.OutlineColor,
+};
+
+const _color = new THREE.Color();
+/**
+ * A bind of expression influences to a material color.
+ */
+class VRMExpressionMaterialColorBind {
+ constructor({ material, type, targetValue, }) {
+ var _a, _b, _c;
+ this.material = material;
+ this.type = type;
+ this.targetValue = targetValue;
+ // init property name
+ const propertyNameMap = (_a = Object.entries(VRMExpressionMaterialColorBind._propertyNameMapMap).find(([distinguisher]) => {
+ return material[distinguisher] === true;
+ })) === null || _a === void 0 ? void 0 : _a[1];
+ const propertyName = (_b = propertyNameMap === null || propertyNameMap === void 0 ? void 0 : propertyNameMap[type]) !== null && _b !== void 0 ? _b : null;
+ if (propertyName == null) {
+ console.warn(`Tried to add a material color bind to the material ${(_c = material.name) !== null && _c !== void 0 ? _c : '(no name)'}, the type ${type} but the material or the type is not supported.`);
+ this._state = null;
+ }
+ else {
+ const target = material[propertyName];
+ const initialValue = target.clone();
+ // 負の値を保持するためにColor.subを使わずに差分を計算する
+ const deltaValue = new THREE.Color(targetValue.r - initialValue.r, targetValue.g - initialValue.g, targetValue.b - initialValue.b);
+ this._state = {
+ propertyName,
+ initialValue,
+ deltaValue,
+ };
+ }
+ }
+ applyWeight(weight) {
+ if (this._state == null) {
+ // warning is already emitted in constructor
+ return;
+ }
+ const { propertyName, deltaValue } = this._state;
+ const target = this.material[propertyName];
+ if (target === undefined) {
+ return;
+ } // TODO: we should kick this at `addMaterialValue`
+ target.add(_color.copy(deltaValue).multiplyScalar(weight));
+ if (typeof this.material.shouldApplyUniforms === 'boolean') {
+ this.material.shouldApplyUniforms = true;
+ }
+ }
+ clearAppliedWeight() {
+ if (this._state == null) {
+ // warning is already emitted in constructor
+ return;
+ }
+ const { propertyName, initialValue } = this._state;
+ const target = this.material[propertyName];
+ if (target === undefined) {
+ return;
+ } // TODO: we should kick this at `addMaterialValue`
+ target.copy(initialValue);
+ if (typeof this.material.shouldApplyUniforms === 'boolean') {
+ this.material.shouldApplyUniforms = true;
+ }
+ }
+}
+/**
+ * Mapping of property names from VRMC/materialColorBinds.type to three.js/Material.
+ */
+VRMExpressionMaterialColorBind._propertyNameMapMap = {
+ isMeshStandardMaterial: {
+ color: 'color',
+ emissionColor: 'emissive',
+ },
+ isMeshBasicMaterial: {
+ color: 'color',
+ },
+ isMToonMaterial: {
+ color: 'color',
+ emissionColor: 'emissive',
+ outlineColor: 'outlineColorFactor',
+ matcapColor: 'matcapFactor',
+ rimColor: 'parametricRimColorFactor',
+ shadeColor: 'shadeColorFactor',
+ },
+};
+
+/**
+ * A bind of {@link VRMExpression} influences to morph targets.
+ */
+class VRMExpressionMorphTargetBind {
+ constructor({ primitives, index, weight, }) {
+ this.primitives = primitives;
+ this.index = index;
+ this.weight = weight;
+ }
+ applyWeight(weight) {
+ this.primitives.forEach((mesh) => {
+ var _a;
+ if (((_a = mesh.morphTargetInfluences) === null || _a === void 0 ? void 0 : _a[this.index]) != null) {
+ mesh.morphTargetInfluences[this.index] += this.weight * weight;
+ }
+ });
+ }
+ clearAppliedWeight() {
+ this.primitives.forEach((mesh) => {
+ var _a;
+ if (((_a = mesh.morphTargetInfluences) === null || _a === void 0 ? void 0 : _a[this.index]) != null) {
+ mesh.morphTargetInfluences[this.index] = 0.0;
+ }
+ });
+ }
+}
+
+const _v2 = new THREE.Vector2();
+/**
+ * A bind of expression influences to texture transforms.
+ */
+class VRMExpressionTextureTransformBind {
+ constructor({ material, scale, offset, }) {
+ var _a, _b;
+ this.material = material;
+ this.scale = scale;
+ this.offset = offset;
+ const propertyNames = (_a = Object.entries(VRMExpressionTextureTransformBind._propertyNamesMap).find(([distinguisher]) => {
+ return material[distinguisher] === true;
+ })) === null || _a === void 0 ? void 0 : _a[1];
+ if (propertyNames == null) {
+ console.warn(`Tried to add a texture transform bind to the material ${(_b = material.name) !== null && _b !== void 0 ? _b : '(no name)'} but the material is not supported.`);
+ this._properties = [];
+ }
+ else {
+ this._properties = [];
+ propertyNames.forEach((propertyName) => {
+ var _a;
+ const texture = (_a = material[propertyName]) === null || _a === void 0 ? void 0 : _a.clone();
+ if (!texture) {
+ return null;
+ }
+ material[propertyName] = texture; // because the texture is cloned
+ const initialOffset = texture.offset.clone();
+ const initialScale = texture.repeat.clone();
+ const deltaOffset = offset.clone().sub(initialOffset);
+ const deltaScale = scale.clone().sub(initialScale);
+ this._properties.push({
+ name: propertyName,
+ initialOffset,
+ deltaOffset,
+ initialScale,
+ deltaScale,
+ });
+ });
+ }
+ }
+ applyWeight(weight) {
+ this._properties.forEach((property) => {
+ const target = this.material[property.name];
+ if (target === undefined) {
+ return;
+ } // TODO: we should kick this at `addMaterialValue`
+ target.offset.add(_v2.copy(property.deltaOffset).multiplyScalar(weight));
+ target.repeat.add(_v2.copy(property.deltaScale).multiplyScalar(weight));
+ target.needsUpdate = true;
+ });
+ }
+ clearAppliedWeight() {
+ this._properties.forEach((property) => {
+ const target = this.material[property.name];
+ if (target === undefined) {
+ return;
+ } // TODO: we should kick this at `addMaterialValue`
+ target.offset.copy(property.initialOffset);
+ target.repeat.copy(property.initialScale);
+ target.needsUpdate = true;
+ });
+ }
+}
+VRMExpressionTextureTransformBind._propertyNamesMap = {
+ isMeshStandardMaterial: [
+ 'map',
+ 'emissiveMap',
+ 'bumpMap',
+ 'normalMap',
+ 'displacementMap',
+ 'roughnessMap',
+ 'metalnessMap',
+ 'alphaMap',
+ ],
+ isMeshBasicMaterial: ['map', 'specularMap', 'alphaMap'],
+ isMToonMaterial: [
+ 'map',
+ 'normalMap',
+ 'emissiveMap',
+ 'shadeMultiplyTexture',
+ 'rimMultiplyTexture',
+ 'outlineWidthMultiplyTexture',
+ 'uvAnimationMaskTexture',
+ ],
+};
+
+/**
+ * Possible spec versions it recognizes.
+ */
+const POSSIBLE_SPEC_VERSIONS$4 = new Set(['1.0', '1.0-beta']);
+/**
+ * A plugin of GLTFLoader that imports a {@link VRMExpressionManager} from a VRM extension of a GLTF.
+ */
+class VRMExpressionLoaderPlugin {
+ get name() {
+ // We should use the extension name instead but we have multiple plugins for an extension...
+ return 'VRMExpressionLoaderPlugin';
+ }
+ constructor(parser) {
+ this.parser = parser;
+ }
+ afterRoot(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ gltf.userData.vrmExpressionManager = yield this._import(gltf);
+ });
+ }
+ /**
+ * Import a {@link VRMExpressionManager} from a VRM.
+ *
+ * @param gltf A parsed result of GLTF taken from GLTFLoader
+ */
+ _import(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const v1Result = yield this._v1Import(gltf);
+ if (v1Result) {
+ return v1Result;
+ }
+ const v0Result = yield this._v0Import(gltf);
+ if (v0Result) {
+ return v0Result;
+ }
+ return null;
+ });
+ }
+ _v1Import(gltf) {
+ var _a, _b;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const isVRMUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf('VRMC_vrm')) !== -1;
+ if (!isVRMUsed) {
+ return null;
+ }
+ const extension = (_b = json.extensions) === null || _b === void 0 ? void 0 : _b['VRMC_vrm'];
+ if (!extension) {
+ return null;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS$4.has(specVersion)) {
+ console.warn(`VRMExpressionLoaderPlugin: Unknown VRMC_vrm specVersion "${specVersion}"`);
+ return null;
+ }
+ const schemaExpressions = extension.expressions;
+ if (!schemaExpressions) {
+ return null;
+ }
+ // list expressions
+ const presetNameSet = new Set(Object.values(VRMExpressionPresetName));
+ const nameSchemaExpressionMap = new Map();
+ if (schemaExpressions.preset != null) {
+ Object.entries(schemaExpressions.preset).forEach(([name, schemaExpression]) => {
+ if (schemaExpression == null) {
+ return;
+ } // typescript
+ if (!presetNameSet.has(name)) {
+ console.warn(`VRMExpressionLoaderPlugin: Unknown preset name "${name}" detected. Ignoring the expression`);
+ return;
+ }
+ nameSchemaExpressionMap.set(name, schemaExpression);
+ });
+ }
+ if (schemaExpressions.custom != null) {
+ Object.entries(schemaExpressions.custom).forEach(([name, schemaExpression]) => {
+ if (presetNameSet.has(name)) {
+ console.warn(`VRMExpressionLoaderPlugin: Custom expression cannot have preset name "${name}". Ignoring the expression`);
+ return;
+ }
+ nameSchemaExpressionMap.set(name, schemaExpression);
+ });
+ }
+ // prepare manager
+ const manager = new VRMExpressionManager();
+ // load expressions
+ yield Promise.all(Array.from(nameSchemaExpressionMap.entries()).map(([name, schemaExpression]) => __awaiter$6(this, void 0, void 0, function* () {
+ var _c, _d, _e, _f, _g, _h, _j;
+ const expression = new VRMExpression(name);
+ gltf.scene.add(expression);
+ expression.isBinary = (_c = schemaExpression.isBinary) !== null && _c !== void 0 ? _c : false;
+ expression.overrideBlink = (_d = schemaExpression.overrideBlink) !== null && _d !== void 0 ? _d : 'none';
+ expression.overrideLookAt = (_e = schemaExpression.overrideLookAt) !== null && _e !== void 0 ? _e : 'none';
+ expression.overrideMouth = (_f = schemaExpression.overrideMouth) !== null && _f !== void 0 ? _f : 'none';
+ (_g = schemaExpression.morphTargetBinds) === null || _g === void 0 ? void 0 : _g.forEach((bind) => __awaiter$6(this, void 0, void 0, function* () {
+ var _k;
+ if (bind.node === undefined || bind.index === undefined) {
+ return;
+ }
+ const primitives = (yield gltfExtractPrimitivesFromNode(gltf, bind.node));
+ const morphTargetIndex = bind.index;
+ // check if the mesh has the target morph target
+ if (!primitives.every((primitive) => Array.isArray(primitive.morphTargetInfluences) &&
+ morphTargetIndex < primitive.morphTargetInfluences.length)) {
+ console.warn(`VRMExpressionLoaderPlugin: ${schemaExpression.name} attempts to index morph #${morphTargetIndex} but not found.`);
+ return;
+ }
+ expression.addBind(new VRMExpressionMorphTargetBind({
+ primitives,
+ index: morphTargetIndex,
+ weight: (_k = bind.weight) !== null && _k !== void 0 ? _k : 1.0,
+ }));
+ }));
+ if (schemaExpression.materialColorBinds || schemaExpression.textureTransformBinds) {
+ // list up every material in `gltf.scene`
+ const gltfMaterials = [];
+ gltf.scene.traverse((object) => {
+ const material = object.material;
+ if (material) {
+ gltfMaterials.push(material);
+ }
+ });
+ (_h = schemaExpression.materialColorBinds) === null || _h === void 0 ? void 0 : _h.forEach((bind) => __awaiter$6(this, void 0, void 0, function* () {
+ const materials = gltfMaterials.filter((material) => {
+ const materialIndex = gltfGetAssociatedMaterialIndex(this.parser, material);
+ return bind.material === materialIndex;
+ });
+ materials.forEach((material) => {
+ expression.addBind(new VRMExpressionMaterialColorBind({
+ material,
+ type: bind.type,
+ targetValue: new THREE.Color().fromArray(bind.targetValue),
+ }));
+ });
+ }));
+ (_j = schemaExpression.textureTransformBinds) === null || _j === void 0 ? void 0 : _j.forEach((bind) => __awaiter$6(this, void 0, void 0, function* () {
+ const materials = gltfMaterials.filter((material) => {
+ const materialIndex = gltfGetAssociatedMaterialIndex(this.parser, material);
+ return bind.material === materialIndex;
+ });
+ materials.forEach((material) => {
+ var _a, _b;
+ expression.addBind(new VRMExpressionTextureTransformBind({
+ material,
+ offset: new THREE.Vector2().fromArray((_a = bind.offset) !== null && _a !== void 0 ? _a : [0.0, 0.0]),
+ scale: new THREE.Vector2().fromArray((_b = bind.scale) !== null && _b !== void 0 ? _b : [1.0, 1.0]),
+ }));
+ });
+ }));
+ }
+ manager.registerExpression(expression);
+ })));
+ return manager;
+ });
+ }
+ _v0Import(gltf) {
+ var _a;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const vrmExt = (_a = json.extensions) === null || _a === void 0 ? void 0 : _a.VRM;
+ if (!vrmExt) {
+ return null;
+ }
+ const schemaBlendShape = vrmExt.blendShapeMaster;
+ if (!schemaBlendShape) {
+ return null;
+ }
+ const manager = new VRMExpressionManager();
+ const schemaBlendShapeGroups = schemaBlendShape.blendShapeGroups;
+ if (!schemaBlendShapeGroups) {
+ return manager;
+ }
+ const blendShapeNameSet = new Set();
+ yield Promise.all(schemaBlendShapeGroups.map((schemaGroup) => __awaiter$6(this, void 0, void 0, function* () {
+ var _b;
+ const v0PresetName = schemaGroup.presetName;
+ const v1PresetName = (v0PresetName != null && VRMExpressionLoaderPlugin.v0v1PresetNameMap[v0PresetName]) || null;
+ const name = v1PresetName !== null && v1PresetName !== void 0 ? v1PresetName : schemaGroup.name;
+ if (name == null) {
+ console.warn('VRMExpressionLoaderPlugin: One of custom expressions has no name. Ignoring the expression');
+ return;
+ }
+ // duplication check
+ if (blendShapeNameSet.has(name)) {
+ console.warn(`VRMExpressionLoaderPlugin: An expression preset ${v0PresetName} has duplicated entries. Ignoring the expression`);
+ return;
+ }
+ blendShapeNameSet.add(name);
+ const expression = new VRMExpression(name);
+ gltf.scene.add(expression);
+ expression.isBinary = (_b = schemaGroup.isBinary) !== null && _b !== void 0 ? _b : false;
+ // v0 doesn't have ignore properties
+ // Bind morphTarget
+ if (schemaGroup.binds) {
+ schemaGroup.binds.forEach((bind) => __awaiter$6(this, void 0, void 0, function* () {
+ var _c;
+ if (bind.mesh === undefined || bind.index === undefined) {
+ return;
+ }
+ const nodesUsingMesh = [];
+ (_c = json.nodes) === null || _c === void 0 ? void 0 : _c.forEach((node, i) => {
+ if (node.mesh === bind.mesh) {
+ nodesUsingMesh.push(i);
+ }
+ });
+ const morphTargetIndex = bind.index;
+ yield Promise.all(nodesUsingMesh.map((nodeIndex) => __awaiter$6(this, void 0, void 0, function* () {
+ var _d;
+ const primitives = (yield gltfExtractPrimitivesFromNode(gltf, nodeIndex));
+ // check if the mesh has the target morph target
+ if (!primitives.every((primitive) => Array.isArray(primitive.morphTargetInfluences) &&
+ morphTargetIndex < primitive.morphTargetInfluences.length)) {
+ console.warn(`VRMExpressionLoaderPlugin: ${schemaGroup.name} attempts to index ${morphTargetIndex}th morph but not found.`);
+ return;
+ }
+ expression.addBind(new VRMExpressionMorphTargetBind({
+ primitives,
+ index: morphTargetIndex,
+ weight: 0.01 * ((_d = bind.weight) !== null && _d !== void 0 ? _d : 100), // narrowing the range from [ 0.0 - 100.0 ] to [ 0.0 - 1.0 ]
+ }));
+ })));
+ }));
+ }
+ // Bind MaterialColor and TextureTransform
+ const materialValues = schemaGroup.materialValues;
+ if (materialValues && materialValues.length !== 0) {
+ materialValues.forEach((materialValue) => {
+ if (materialValue.materialName === undefined ||
+ materialValue.propertyName === undefined ||
+ materialValue.targetValue === undefined) {
+ return;
+ }
+ /**
+ * アバターのオブジェクトに設定されているマテリアルの内から
+ * materialValueで指定されているマテリアルを集める。
+ *
+ * 特定には名前を使用する。
+ * アウトライン描画用のマテリアルも同時に集める。
+ */
+ const materials = [];
+ gltf.scene.traverse((object) => {
+ if (object.material) {
+ const material = object.material;
+ if (Array.isArray(material)) {
+ materials.push(...material.filter((mtl) => (mtl.name === materialValue.materialName ||
+ mtl.name === materialValue.materialName + ' (Outline)') &&
+ materials.indexOf(mtl) === -1));
+ }
+ else if (material.name === materialValue.materialName && materials.indexOf(material) === -1) {
+ materials.push(material);
+ }
+ }
+ });
+ const materialPropertyName = materialValue.propertyName;
+ materials.forEach((material) => {
+ // TextureTransformBind
+ if (materialPropertyName === '_MainTex_ST') {
+ const scale = new THREE.Vector2(materialValue.targetValue[0], materialValue.targetValue[1]);
+ const offset = new THREE.Vector2(materialValue.targetValue[2], materialValue.targetValue[3]);
+ offset.y = 1.0 - offset.y - scale.y;
+ expression.addBind(new VRMExpressionTextureTransformBind({
+ material,
+ scale,
+ offset,
+ }));
+ return;
+ }
+ // MaterialColorBind
+ const materialColorType = v0ExpressionMaterialColorMap[materialPropertyName];
+ if (materialColorType) {
+ expression.addBind(new VRMExpressionMaterialColorBind({
+ material,
+ type: materialColorType,
+ targetValue: new THREE.Color(...materialValue.targetValue.slice(0, 3)),
+ }));
+ return;
+ }
+ console.warn(materialPropertyName + ' is not supported');
+ });
+ });
+ }
+ manager.registerExpression(expression);
+ })));
+ return manager;
+ });
+ }
+}
+VRMExpressionLoaderPlugin.v0v1PresetNameMap = {
+ a: 'aa',
+ e: 'ee',
+ i: 'ih',
+ o: 'oh',
+ u: 'ou',
+ blink: 'blink',
+ joy: 'happy',
+ angry: 'angry',
+ sorrow: 'sad',
+ fun: 'relaxed',
+ lookup: 'lookUp',
+ lookdown: 'lookDown',
+ lookleft: 'lookLeft',
+ lookright: 'lookRight',
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ blink_l: 'blinkLeft',
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ blink_r: 'blinkRight',
+ neutral: 'neutral',
+};
+
+/* eslint-disable @typescript-eslint/naming-convention */
+const VRMExpressionOverrideType = {
+ None: 'none',
+ Block: 'block',
+ Blend: 'blend',
+};
+
+class VRMFirstPerson {
+ /**
+ * Create a new VRMFirstPerson object.
+ *
+ * @param humanoid A {@link VRMHumanoid}
+ * @param meshAnnotations A renderer settings. See the description of [[RendererFirstPersonFlags]] for more info
+ */
+ constructor(humanoid, meshAnnotations) {
+ this._firstPersonOnlyLayer = VRMFirstPerson.DEFAULT_FIRSTPERSON_ONLY_LAYER;
+ this._thirdPersonOnlyLayer = VRMFirstPerson.DEFAULT_THIRDPERSON_ONLY_LAYER;
+ this._initializedLayers = false;
+ this.humanoid = humanoid;
+ this.meshAnnotations = meshAnnotations;
+ }
+ /**
+ * Copy the given {@link VRMFirstPerson} into this one.
+ * {@link humanoid} must be same as the source one.
+ * @param source The {@link VRMFirstPerson} you want to copy
+ * @returns this
+ */
+ copy(source) {
+ if (this.humanoid !== source.humanoid) {
+ throw new Error('VRMFirstPerson: humanoid must be same in order to copy');
+ }
+ this.meshAnnotations = source.meshAnnotations.map((annotation) => ({
+ meshes: annotation.meshes.concat(),
+ type: annotation.type,
+ }));
+ return this;
+ }
+ /**
+ * Returns a clone of this {@link VRMFirstPerson}.
+ * @returns Copied {@link VRMFirstPerson}
+ */
+ clone() {
+ return new VRMFirstPerson(this.humanoid, this.meshAnnotations).copy(this);
+ }
+ /**
+ * A camera layer represents `FirstPersonOnly` layer.
+ * Note that **you must call {@link setup} first before you use the layer feature** or it does not work properly.
+ *
+ * The value is {@link DEFAULT_FIRSTPERSON_ONLY_LAYER} by default but you can change the layer by specifying via {@link setup} if you prefer.
+ *
+ * @see https://vrm.dev/en/univrm/api/univrm_use_firstperson/
+ * @see https://threejs.org/docs/#api/en/core/Layers
+ */
+ get firstPersonOnlyLayer() {
+ return this._firstPersonOnlyLayer;
+ }
+ /**
+ * A camera layer represents `ThirdPersonOnly` layer.
+ * Note that **you must call {@link setup} first before you use the layer feature** or it does not work properly.
+ *
+ * The value is {@link DEFAULT_THIRDPERSON_ONLY_LAYER} by default but you can change the layer by specifying via {@link setup} if you prefer.
+ *
+ * @see https://vrm.dev/en/univrm/api/univrm_use_firstperson/
+ * @see https://threejs.org/docs/#api/en/core/Layers
+ */
+ get thirdPersonOnlyLayer() {
+ return this._thirdPersonOnlyLayer;
+ }
+ /**
+ * In this method, it assigns layers for every meshes based on mesh annotations.
+ * You must call this method first before you use the layer feature.
+ *
+ * This is an equivalent of [VRMFirstPerson.Setup](https://github.com/vrm-c/UniVRM/blob/73a5bd8fcddaa2a7a8735099a97e63c9db3e5ea0/Assets/VRM/Runtime/FirstPerson/VRMFirstPerson.cs#L295-L299) of the UniVRM.
+ *
+ * The `cameraLayer` parameter specifies which layer will be assigned for `FirstPersonOnly` / `ThirdPersonOnly`.
+ * In UniVRM, we specified those by naming each desired layer as `FIRSTPERSON_ONLY_LAYER` / `THIRDPERSON_ONLY_LAYER`
+ * but we are going to specify these layers at here since we are unable to name layers in Three.js.
+ *
+ * @param cameraLayer Specify which layer will be for `FirstPersonOnly` / `ThirdPersonOnly`.
+ */
+ setup({ firstPersonOnlyLayer = VRMFirstPerson.DEFAULT_FIRSTPERSON_ONLY_LAYER, thirdPersonOnlyLayer = VRMFirstPerson.DEFAULT_THIRDPERSON_ONLY_LAYER, } = {}) {
+ if (this._initializedLayers) {
+ return;
+ }
+ this._firstPersonOnlyLayer = firstPersonOnlyLayer;
+ this._thirdPersonOnlyLayer = thirdPersonOnlyLayer;
+ this.meshAnnotations.forEach((item) => {
+ item.meshes.forEach((mesh) => {
+ if (item.type === 'firstPersonOnly') {
+ mesh.layers.set(this._firstPersonOnlyLayer);
+ mesh.traverse((child) => child.layers.set(this._firstPersonOnlyLayer));
+ }
+ else if (item.type === 'thirdPersonOnly') {
+ mesh.layers.set(this._thirdPersonOnlyLayer);
+ mesh.traverse((child) => child.layers.set(this._thirdPersonOnlyLayer));
+ }
+ else if (item.type === 'auto') {
+ this._createHeadlessModel(mesh);
+ }
+ });
+ });
+ this._initializedLayers = true;
+ }
+ _excludeTriangles(triangles, bws, skinIndex, exclude) {
+ let count = 0;
+ if (bws != null && bws.length > 0) {
+ for (let i = 0; i < triangles.length; i += 3) {
+ const a = triangles[i];
+ const b = triangles[i + 1];
+ const c = triangles[i + 2];
+ const bw0 = bws[a];
+ const skin0 = skinIndex[a];
+ if (bw0[0] > 0 && exclude.includes(skin0[0]))
+ continue;
+ if (bw0[1] > 0 && exclude.includes(skin0[1]))
+ continue;
+ if (bw0[2] > 0 && exclude.includes(skin0[2]))
+ continue;
+ if (bw0[3] > 0 && exclude.includes(skin0[3]))
+ continue;
+ const bw1 = bws[b];
+ const skin1 = skinIndex[b];
+ if (bw1[0] > 0 && exclude.includes(skin1[0]))
+ continue;
+ if (bw1[1] > 0 && exclude.includes(skin1[1]))
+ continue;
+ if (bw1[2] > 0 && exclude.includes(skin1[2]))
+ continue;
+ if (bw1[3] > 0 && exclude.includes(skin1[3]))
+ continue;
+ const bw2 = bws[c];
+ const skin2 = skinIndex[c];
+ if (bw2[0] > 0 && exclude.includes(skin2[0]))
+ continue;
+ if (bw2[1] > 0 && exclude.includes(skin2[1]))
+ continue;
+ if (bw2[2] > 0 && exclude.includes(skin2[2]))
+ continue;
+ if (bw2[3] > 0 && exclude.includes(skin2[3]))
+ continue;
+ triangles[count++] = a;
+ triangles[count++] = b;
+ triangles[count++] = c;
+ }
+ }
+ return count;
+ }
+ _createErasedMesh(src, erasingBonesIndex) {
+ const dst = new THREE.SkinnedMesh(src.geometry.clone(), src.material);
+ dst.name = `${src.name}(erase)`;
+ dst.frustumCulled = src.frustumCulled;
+ dst.layers.set(this._firstPersonOnlyLayer);
+ const geometry = dst.geometry;
+ const skinIndexAttr = geometry.getAttribute('skinIndex');
+ const skinIndexAttrArray = skinIndexAttr instanceof THREE.GLBufferAttribute ? [] : skinIndexAttr.array;
+ const skinIndex = [];
+ for (let i = 0; i < skinIndexAttrArray.length; i += 4) {
+ skinIndex.push([
+ skinIndexAttrArray[i],
+ skinIndexAttrArray[i + 1],
+ skinIndexAttrArray[i + 2],
+ skinIndexAttrArray[i + 3],
+ ]);
+ }
+ const skinWeightAttr = geometry.getAttribute('skinWeight');
+ const skinWeightAttrArray = skinWeightAttr instanceof THREE.GLBufferAttribute ? [] : skinWeightAttr.array;
+ const skinWeight = [];
+ for (let i = 0; i < skinWeightAttrArray.length; i += 4) {
+ skinWeight.push([
+ skinWeightAttrArray[i],
+ skinWeightAttrArray[i + 1],
+ skinWeightAttrArray[i + 2],
+ skinWeightAttrArray[i + 3],
+ ]);
+ }
+ const index = geometry.getIndex();
+ if (!index) {
+ throw new Error("The geometry doesn't have an index buffer");
+ }
+ const oldTriangles = Array.from(index.array);
+ const count = this._excludeTriangles(oldTriangles, skinWeight, skinIndex, erasingBonesIndex);
+ const newTriangle = [];
+ for (let i = 0; i < count; i++) {
+ newTriangle[i] = oldTriangles[i];
+ }
+ geometry.setIndex(newTriangle);
+ // mtoon material includes onBeforeRender. this is unsupported at SkinnedMesh#clone
+ if (src.onBeforeRender) {
+ dst.onBeforeRender = src.onBeforeRender;
+ }
+ dst.bind(new THREE.Skeleton(src.skeleton.bones, src.skeleton.boneInverses), new THREE.Matrix4());
+ return dst;
+ }
+ _createHeadlessModelForSkinnedMesh(parent, mesh) {
+ const eraseBoneIndexes = [];
+ mesh.skeleton.bones.forEach((bone, index) => {
+ if (this._isEraseTarget(bone))
+ eraseBoneIndexes.push(index);
+ });
+ // Unlike UniVRM we don't copy mesh if no invisible bone was found
+ if (!eraseBoneIndexes.length) {
+ mesh.layers.enable(this._thirdPersonOnlyLayer);
+ mesh.layers.enable(this._firstPersonOnlyLayer);
+ return;
+ }
+ mesh.layers.set(this._thirdPersonOnlyLayer);
+ const newMesh = this._createErasedMesh(mesh, eraseBoneIndexes);
+ parent.add(newMesh);
+ }
+ _createHeadlessModel(node) {
+ if (node.type === 'Group') {
+ node.layers.set(this._thirdPersonOnlyLayer);
+ if (this._isEraseTarget(node)) {
+ node.traverse((child) => child.layers.set(this._thirdPersonOnlyLayer));
+ }
+ else {
+ const parent = new THREE.Group();
+ parent.name = `_headless_${node.name}`;
+ parent.layers.set(this._firstPersonOnlyLayer);
+ node.parent.add(parent);
+ node.children
+ .filter((child) => child.type === 'SkinnedMesh')
+ .forEach((child) => {
+ const skinnedMesh = child;
+ this._createHeadlessModelForSkinnedMesh(parent, skinnedMesh);
+ });
+ }
+ }
+ else if (node.type === 'SkinnedMesh') {
+ const skinnedMesh = node;
+ this._createHeadlessModelForSkinnedMesh(node.parent, skinnedMesh);
+ }
+ else {
+ if (this._isEraseTarget(node)) {
+ node.layers.set(this._thirdPersonOnlyLayer);
+ node.traverse((child) => child.layers.set(this._thirdPersonOnlyLayer));
+ }
+ }
+ }
+ _isEraseTarget(bone) {
+ if (bone === this.humanoid.getRawBoneNode('head')) {
+ return true;
+ }
+ else if (!bone.parent) {
+ return false;
+ }
+ else {
+ return this._isEraseTarget(bone.parent);
+ }
+ }
+}
+/**
+ * A default camera layer for `FirstPersonOnly` layer.
+ *
+ * @see [[getFirstPersonOnlyLayer]]
+ */
+VRMFirstPerson.DEFAULT_FIRSTPERSON_ONLY_LAYER = 9;
+/**
+ * A default camera layer for `ThirdPersonOnly` layer.
+ *
+ * @see [[getThirdPersonOnlyLayer]]
+ */
+VRMFirstPerson.DEFAULT_THIRDPERSON_ONLY_LAYER = 10;
+
+/**
+ * Possible spec versions it recognizes.
+ */
+const POSSIBLE_SPEC_VERSIONS$3 = new Set(['1.0', '1.0-beta']);
+/**
+ * A plugin of GLTFLoader that imports a {@link VRMFirstPerson} from a VRM extension of a GLTF.
+ */
+class VRMFirstPersonLoaderPlugin {
+ get name() {
+ // We should use the extension name instead but we have multiple plugins for an extension...
+ return 'VRMFirstPersonLoaderPlugin';
+ }
+ constructor(parser) {
+ this.parser = parser;
+ }
+ afterRoot(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const vrmHumanoid = gltf.userData.vrmHumanoid;
+ // explicitly distinguish null and undefined
+ // since vrmHumanoid might be null as a result
+ if (vrmHumanoid === null) {
+ return;
+ }
+ else if (vrmHumanoid === undefined) {
+ throw new Error('VRMFirstPersonLoaderPlugin: vrmHumanoid is undefined. VRMHumanoidLoaderPlugin have to be used first');
+ }
+ gltf.userData.vrmFirstPerson = yield this._import(gltf, vrmHumanoid);
+ });
+ }
+ /**
+ * Import a {@link VRMFirstPerson} from a VRM.
+ *
+ * @param gltf A parsed result of GLTF taken from GLTFLoader
+ * @param humanoid A {@link VRMHumanoid} instance that represents the VRM
+ */
+ _import(gltf, humanoid) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ if (humanoid == null) {
+ return null;
+ }
+ const v1Result = yield this._v1Import(gltf, humanoid);
+ if (v1Result) {
+ return v1Result;
+ }
+ const v0Result = yield this._v0Import(gltf, humanoid);
+ if (v0Result) {
+ return v0Result;
+ }
+ return null;
+ });
+ }
+ _v1Import(gltf, humanoid) {
+ var _a, _b;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const isVRMUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf('VRMC_vrm')) !== -1;
+ if (!isVRMUsed) {
+ return null;
+ }
+ const extension = (_b = json.extensions) === null || _b === void 0 ? void 0 : _b['VRMC_vrm'];
+ if (!extension) {
+ return null;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS$3.has(specVersion)) {
+ console.warn(`VRMFirstPersonLoaderPlugin: Unknown VRMC_vrm specVersion "${specVersion}"`);
+ return null;
+ }
+ const schemaFirstPerson = extension.firstPerson;
+ if (!schemaFirstPerson) {
+ return null;
+ }
+ const meshAnnotations = [];
+ const nodePrimitivesMap = yield gltfExtractPrimitivesFromNodes(gltf);
+ Array.from(nodePrimitivesMap.entries()).forEach(([nodeIndex, primitives]) => {
+ var _a;
+ const annotation = schemaFirstPerson.meshAnnotations
+ ? schemaFirstPerson.meshAnnotations.find((a) => a.node === nodeIndex)
+ : undefined;
+ meshAnnotations.push({
+ meshes: primitives,
+ type: (_a = annotation === null || annotation === void 0 ? void 0 : annotation.type) !== null && _a !== void 0 ? _a : 'both',
+ });
+ });
+ return new VRMFirstPerson(humanoid, meshAnnotations);
+ });
+ }
+ _v0Import(gltf, humanoid) {
+ var _a;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ const vrmExt = (_a = json.extensions) === null || _a === void 0 ? void 0 : _a.VRM;
+ if (!vrmExt) {
+ return null;
+ }
+ const schemaFirstPerson = vrmExt.firstPerson;
+ if (!schemaFirstPerson) {
+ return null;
+ }
+ const meshAnnotations = [];
+ const nodePrimitivesMap = yield gltfExtractPrimitivesFromNodes(gltf);
+ Array.from(nodePrimitivesMap.entries()).forEach(([nodeIndex, primitives]) => {
+ const schemaNode = json.nodes[nodeIndex];
+ const flag = schemaFirstPerson.meshAnnotations
+ ? schemaFirstPerson.meshAnnotations.find((a) => a.mesh === schemaNode.mesh)
+ : undefined;
+ meshAnnotations.push({
+ meshes: primitives,
+ type: this._convertV0FlagToV1Type(flag === null || flag === void 0 ? void 0 : flag.firstPersonFlag),
+ });
+ });
+ return new VRMFirstPerson(humanoid, meshAnnotations);
+ });
+ }
+ _convertV0FlagToV1Type(flag) {
+ if (flag === 'FirstPersonOnly') {
+ return 'firstPersonOnly';
+ }
+ else if (flag === 'ThirdPersonOnly') {
+ return 'thirdPersonOnly';
+ }
+ else if (flag === 'Auto') {
+ return 'auto';
+ }
+ else {
+ return 'both';
+ }
+ }
+}
+
+/* eslint-disable @typescript-eslint/naming-convention */
+const VRMFirstPersonMeshAnnotationType = {
+ Auto: 'auto',
+ Both: 'both',
+ ThirdPersonOnly: 'thirdPersonOnly',
+ FirstPersonOnly: 'firstPersonOnly',
+};
+
+const _v3A$4$1 = new THREE.Vector3();
+const _v3B$2$1 = new THREE.Vector3();
+const _quatA$5 = new THREE.Quaternion();
+class VRMHumanoidHelper extends THREE.Group {
+ constructor(humanoid) {
+ super();
+ this.vrmHumanoid = humanoid;
+ this._boneAxesMap = new Map();
+ Object.values(humanoid.humanBones).forEach((bone) => {
+ const helper = new THREE.AxesHelper(1.0);
+ helper.matrixAutoUpdate = false;
+ helper.material.depthTest = false;
+ helper.material.depthWrite = false;
+ this.add(helper);
+ this._boneAxesMap.set(bone, helper);
+ });
+ }
+ dispose() {
+ Array.from(this._boneAxesMap.values()).forEach((axes) => {
+ axes.geometry.dispose();
+ axes.material.dispose();
+ });
+ }
+ updateMatrixWorld(force) {
+ Array.from(this._boneAxesMap.entries()).forEach(([bone, axes]) => {
+ bone.node.updateWorldMatrix(true, false);
+ bone.node.matrixWorld.decompose(_v3A$4$1, _quatA$5, _v3B$2$1);
+ const scale = _v3A$4$1.set(0.1, 0.1, 0.1).divide(_v3B$2$1);
+ axes.matrix.copy(bone.node.matrixWorld).scale(scale);
+ });
+ super.updateMatrixWorld(force);
+ }
+}
+
+/* eslint-disable @typescript-eslint/naming-convention */
+/**
+ * The list of {@link VRMHumanBoneName}. Dependency aware.
+ */
+const VRMHumanBoneList = [
+ 'hips',
+ 'spine',
+ 'chest',
+ 'upperChest',
+ 'neck',
+ 'head',
+ 'leftEye',
+ 'rightEye',
+ 'jaw',
+ 'leftUpperLeg',
+ 'leftLowerLeg',
+ 'leftFoot',
+ 'leftToes',
+ 'rightUpperLeg',
+ 'rightLowerLeg',
+ 'rightFoot',
+ 'rightToes',
+ 'leftShoulder',
+ 'leftUpperArm',
+ 'leftLowerArm',
+ 'leftHand',
+ 'rightShoulder',
+ 'rightUpperArm',
+ 'rightLowerArm',
+ 'rightHand',
+ 'leftThumbMetacarpal',
+ 'leftThumbProximal',
+ 'leftThumbDistal',
+ 'leftIndexProximal',
+ 'leftIndexIntermediate',
+ 'leftIndexDistal',
+ 'leftMiddleProximal',
+ 'leftMiddleIntermediate',
+ 'leftMiddleDistal',
+ 'leftRingProximal',
+ 'leftRingIntermediate',
+ 'leftRingDistal',
+ 'leftLittleProximal',
+ 'leftLittleIntermediate',
+ 'leftLittleDistal',
+ 'rightThumbMetacarpal',
+ 'rightThumbProximal',
+ 'rightThumbDistal',
+ 'rightIndexProximal',
+ 'rightIndexIntermediate',
+ 'rightIndexDistal',
+ 'rightMiddleProximal',
+ 'rightMiddleIntermediate',
+ 'rightMiddleDistal',
+ 'rightRingProximal',
+ 'rightRingIntermediate',
+ 'rightRingDistal',
+ 'rightLittleProximal',
+ 'rightLittleIntermediate',
+ 'rightLittleDistal',
+];
+
+/* eslint-disable @typescript-eslint/naming-convention */
+/**
+ * The names of {@link VRMHumanoid} bone names.
+ *
+ * Ref: https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_vrm-1.0/humanoid.md
+ */
+const VRMHumanBoneName = {
+ Hips: 'hips',
+ Spine: 'spine',
+ Chest: 'chest',
+ UpperChest: 'upperChest',
+ Neck: 'neck',
+ Head: 'head',
+ LeftEye: 'leftEye',
+ RightEye: 'rightEye',
+ Jaw: 'jaw',
+ LeftUpperLeg: 'leftUpperLeg',
+ LeftLowerLeg: 'leftLowerLeg',
+ LeftFoot: 'leftFoot',
+ LeftToes: 'leftToes',
+ RightUpperLeg: 'rightUpperLeg',
+ RightLowerLeg: 'rightLowerLeg',
+ RightFoot: 'rightFoot',
+ RightToes: 'rightToes',
+ LeftShoulder: 'leftShoulder',
+ LeftUpperArm: 'leftUpperArm',
+ LeftLowerArm: 'leftLowerArm',
+ LeftHand: 'leftHand',
+ RightShoulder: 'rightShoulder',
+ RightUpperArm: 'rightUpperArm',
+ RightLowerArm: 'rightLowerArm',
+ RightHand: 'rightHand',
+ LeftThumbMetacarpal: 'leftThumbMetacarpal',
+ LeftThumbProximal: 'leftThumbProximal',
+ LeftThumbDistal: 'leftThumbDistal',
+ LeftIndexProximal: 'leftIndexProximal',
+ LeftIndexIntermediate: 'leftIndexIntermediate',
+ LeftIndexDistal: 'leftIndexDistal',
+ LeftMiddleProximal: 'leftMiddleProximal',
+ LeftMiddleIntermediate: 'leftMiddleIntermediate',
+ LeftMiddleDistal: 'leftMiddleDistal',
+ LeftRingProximal: 'leftRingProximal',
+ LeftRingIntermediate: 'leftRingIntermediate',
+ LeftRingDistal: 'leftRingDistal',
+ LeftLittleProximal: 'leftLittleProximal',
+ LeftLittleIntermediate: 'leftLittleIntermediate',
+ LeftLittleDistal: 'leftLittleDistal',
+ RightThumbMetacarpal: 'rightThumbMetacarpal',
+ RightThumbProximal: 'rightThumbProximal',
+ RightThumbDistal: 'rightThumbDistal',
+ RightIndexProximal: 'rightIndexProximal',
+ RightIndexIntermediate: 'rightIndexIntermediate',
+ RightIndexDistal: 'rightIndexDistal',
+ RightMiddleProximal: 'rightMiddleProximal',
+ RightMiddleIntermediate: 'rightMiddleIntermediate',
+ RightMiddleDistal: 'rightMiddleDistal',
+ RightRingProximal: 'rightRingProximal',
+ RightRingIntermediate: 'rightRingIntermediate',
+ RightRingDistal: 'rightRingDistal',
+ RightLittleProximal: 'rightLittleProximal',
+ RightLittleIntermediate: 'rightLittleIntermediate',
+ RightLittleDistal: 'rightLittleDistal',
+};
+
+/* eslint-disable @typescript-eslint/naming-convention */
+/**
+ * An object that maps from {@link VRMHumanBoneName} to its parent {@link VRMHumanBoneName}.
+ *
+ * Ref: https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_vrm-1.0/humanoid.md
+ */
+const VRMHumanBoneParentMap = {
+ hips: null,
+ spine: 'hips',
+ chest: 'spine',
+ upperChest: 'chest',
+ neck: 'upperChest',
+ head: 'neck',
+ leftEye: 'head',
+ rightEye: 'head',
+ jaw: 'head',
+ leftUpperLeg: 'hips',
+ leftLowerLeg: 'leftUpperLeg',
+ leftFoot: 'leftLowerLeg',
+ leftToes: 'leftFoot',
+ rightUpperLeg: 'hips',
+ rightLowerLeg: 'rightUpperLeg',
+ rightFoot: 'rightLowerLeg',
+ rightToes: 'rightFoot',
+ leftShoulder: 'upperChest',
+ leftUpperArm: 'leftShoulder',
+ leftLowerArm: 'leftUpperArm',
+ leftHand: 'leftLowerArm',
+ rightShoulder: 'upperChest',
+ rightUpperArm: 'rightShoulder',
+ rightLowerArm: 'rightUpperArm',
+ rightHand: 'rightLowerArm',
+ leftThumbMetacarpal: 'leftHand',
+ leftThumbProximal: 'leftThumbMetacarpal',
+ leftThumbDistal: 'leftThumbProximal',
+ leftIndexProximal: 'leftHand',
+ leftIndexIntermediate: 'leftIndexProximal',
+ leftIndexDistal: 'leftIndexIntermediate',
+ leftMiddleProximal: 'leftHand',
+ leftMiddleIntermediate: 'leftMiddleProximal',
+ leftMiddleDistal: 'leftMiddleIntermediate',
+ leftRingProximal: 'leftHand',
+ leftRingIntermediate: 'leftRingProximal',
+ leftRingDistal: 'leftRingIntermediate',
+ leftLittleProximal: 'leftHand',
+ leftLittleIntermediate: 'leftLittleProximal',
+ leftLittleDistal: 'leftLittleIntermediate',
+ rightThumbMetacarpal: 'rightHand',
+ rightThumbProximal: 'rightThumbMetacarpal',
+ rightThumbDistal: 'rightThumbProximal',
+ rightIndexProximal: 'rightHand',
+ rightIndexIntermediate: 'rightIndexProximal',
+ rightIndexDistal: 'rightIndexIntermediate',
+ rightMiddleProximal: 'rightHand',
+ rightMiddleIntermediate: 'rightMiddleProximal',
+ rightMiddleDistal: 'rightMiddleIntermediate',
+ rightRingProximal: 'rightHand',
+ rightRingIntermediate: 'rightRingProximal',
+ rightRingDistal: 'rightRingIntermediate',
+ rightLittleProximal: 'rightHand',
+ rightLittleIntermediate: 'rightLittleProximal',
+ rightLittleDistal: 'rightLittleIntermediate',
+};
+
+/**
+ * A compat function for `Quaternion.invert()` / `Quaternion.inverse()`.
+ * `Quaternion.invert()` is introduced in r123 and `Quaternion.inverse()` emits a warning.
+ * We are going to use this compat for a while.
+ * @param target A target quaternion
+ */
+function quatInvertCompat$1(target) {
+ if (target.invert) {
+ target.invert();
+ }
+ else {
+ target.inverse();
+ }
+ return target;
+}
+
+const _v3A$3$2 = new THREE.Vector3();
+const _quatA$4 = new THREE.Quaternion();
+/**
+ * A class represents the Rig of a VRM.
+ */
+class VRMRig {
+ /**
+ * Create a new {@link VRMHumanoid}.
+ * @param humanBones A {@link VRMHumanBones} contains all the bones of the new humanoid
+ */
+ constructor(humanBones) {
+ this.humanBones = humanBones;
+ this.restPose = this.getAbsolutePose();
+ }
+ /**
+ * Return the current absolute pose of this humanoid as a {@link VRMPose}.
+ * Note that the output result will contain initial state of the VRM and not compatible between different models.
+ * You might want to use {@link getPose} instead.
+ */
+ getAbsolutePose() {
+ const pose = {};
+ Object.keys(this.humanBones).forEach((vrmBoneNameString) => {
+ const vrmBoneName = vrmBoneNameString;
+ const node = this.getBoneNode(vrmBoneName);
+ // Ignore when there are no bone on the VRMHumanoid
+ if (!node) {
+ return;
+ }
+ // Get the position / rotation from the node
+ _v3A$3$2.copy(node.position);
+ _quatA$4.copy(node.quaternion);
+ // Convert to raw arrays
+ pose[vrmBoneName] = {
+ position: _v3A$3$2.toArray(),
+ rotation: _quatA$4.toArray(),
+ };
+ });
+ return pose;
+ }
+ /**
+ * Return the current pose of this humanoid as a {@link VRMPose}.
+ *
+ * Each transform is a local transform relative from rest pose (T-pose).
+ */
+ getPose() {
+ const pose = {};
+ Object.keys(this.humanBones).forEach((boneNameString) => {
+ const boneName = boneNameString;
+ const node = this.getBoneNode(boneName);
+ // Ignore when there are no bone on the VRMHumanoid
+ if (!node) {
+ return;
+ }
+ // Take a diff from restPose
+ _v3A$3$2.set(0, 0, 0);
+ _quatA$4.identity();
+ const restState = this.restPose[boneName];
+ if (restState === null || restState === void 0 ? void 0 : restState.position) {
+ _v3A$3$2.fromArray(restState.position).negate();
+ }
+ if (restState === null || restState === void 0 ? void 0 : restState.rotation) {
+ quatInvertCompat$1(_quatA$4.fromArray(restState.rotation));
+ }
+ // Get the position / rotation from the node
+ _v3A$3$2.add(node.position);
+ _quatA$4.premultiply(node.quaternion);
+ // Convert to raw arrays
+ pose[boneName] = {
+ position: _v3A$3$2.toArray(),
+ rotation: _quatA$4.toArray(),
+ };
+ });
+ return pose;
+ }
+ /**
+ * Let the humanoid do a specified pose.
+ *
+ * Each transform have to be a local transform relative from rest pose (T-pose).
+ * You can pass what you got from {@link getPose}.
+ *
+ * @param poseObject A [[VRMPose]] that represents a single pose
+ */
+ setPose(poseObject) {
+ Object.entries(poseObject).forEach(([boneNameString, state]) => {
+ const boneName = boneNameString;
+ const node = this.getBoneNode(boneName);
+ // Ignore when there are no bone that is defined in the pose on the VRMHumanoid
+ if (!node) {
+ return;
+ }
+ const restState = this.restPose[boneName];
+ if (!restState) {
+ // It's very unlikely. Possibly a bug
+ return;
+ }
+ // Apply the state to the actual bone
+ if (state === null || state === void 0 ? void 0 : state.position) {
+ node.position.fromArray(state.position);
+ if (restState.position) {
+ node.position.add(_v3A$3$2.fromArray(restState.position));
+ }
+ }
+ if (state === null || state === void 0 ? void 0 : state.rotation) {
+ node.quaternion.fromArray(state.rotation);
+ if (restState.rotation) {
+ node.quaternion.multiply(_quatA$4.fromArray(restState.rotation));
+ }
+ }
+ });
+ }
+ /**
+ * Reset the humanoid to its rest pose.
+ */
+ resetPose() {
+ Object.entries(this.restPose).forEach(([boneName, rest]) => {
+ const node = this.getBoneNode(boneName);
+ if (!node) {
+ return;
+ }
+ if (rest === null || rest === void 0 ? void 0 : rest.position) {
+ node.position.fromArray(rest.position);
+ }
+ if (rest === null || rest === void 0 ? void 0 : rest.rotation) {
+ node.quaternion.fromArray(rest.rotation);
+ }
+ });
+ }
+ /**
+ * Return a bone bound to a specified {@link VRMHumanBoneName}, as a {@link VRMHumanBone}.
+ *
+ * @param name Name of the bone you want
+ */
+ getBone(name) {
+ var _a;
+ return (_a = this.humanBones[name]) !== null && _a !== void 0 ? _a : undefined;
+ }
+ /**
+ * Return a bone bound to a specified {@link VRMHumanBoneName}, as a `THREE.Object3D`.
+ *
+ * @param name Name of the bone you want
+ */
+ getBoneNode(name) {
+ var _a, _b;
+ return (_b = (_a = this.humanBones[name]) === null || _a === void 0 ? void 0 : _a.node) !== null && _b !== void 0 ? _b : null;
+ }
+}
+
+const _v3A$2$2 = new THREE.Vector3();
+const _quatA$3$1 = new THREE.Quaternion();
+const _boneWorldPos = new THREE.Vector3();
+/**
+ * A class represents the normalized Rig of a VRM.
+ */
+class VRMHumanoidRig extends VRMRig {
+ static _setupTransforms(modelRig) {
+ const root = new THREE.Object3D();
+ root.name = 'VRMHumanoidRig';
+ // store boneWorldPositions and boneWorldRotations
+ const boneWorldPositions = {};
+ const boneWorldRotations = {};
+ const boneRotations = {};
+ VRMHumanBoneList.forEach((boneName) => {
+ const boneNode = modelRig.getBoneNode(boneName);
+ if (boneNode) {
+ const boneWorldPosition = new THREE.Vector3();
+ const boneWorldRotation = new THREE.Quaternion();
+ boneNode.updateWorldMatrix(true, false);
+ boneNode.matrixWorld.decompose(boneWorldPosition, boneWorldRotation, _v3A$2$2);
+ boneWorldPositions[boneName] = boneWorldPosition;
+ boneWorldRotations[boneName] = boneWorldRotation;
+ boneRotations[boneName] = boneNode.quaternion.clone();
+ }
+ });
+ // build rig hierarchy + store parentWorldRotations
+ const parentWorldRotations = {};
+ const rigBones = {};
+ VRMHumanBoneList.forEach((boneName) => {
+ var _a;
+ const boneNode = modelRig.getBoneNode(boneName);
+ if (boneNode) {
+ const boneWorldPosition = boneWorldPositions[boneName];
+ // see the nearest parent position
+ let currentBoneName = boneName;
+ let parentWorldPosition;
+ let parentWorldRotation;
+ while (parentWorldPosition == null) {
+ currentBoneName = VRMHumanBoneParentMap[currentBoneName];
+ if (currentBoneName == null) {
+ break;
+ }
+ parentWorldPosition = boneWorldPositions[currentBoneName];
+ parentWorldRotation = boneWorldRotations[currentBoneName];
+ }
+ // add to hierarchy
+ const rigBoneNode = new THREE.Object3D();
+ rigBoneNode.name = 'Normalized_' + boneNode.name;
+ const parentRigBoneNode = (currentBoneName ? (_a = rigBones[currentBoneName]) === null || _a === void 0 ? void 0 : _a.node : root);
+ parentRigBoneNode.add(rigBoneNode);
+ rigBoneNode.position.copy(boneWorldPosition);
+ if (parentWorldPosition) {
+ rigBoneNode.position.sub(parentWorldPosition);
+ }
+ rigBones[boneName] = { node: rigBoneNode };
+ // store parentWorldRotation
+ parentWorldRotations[boneName] = parentWorldRotation !== null && parentWorldRotation !== void 0 ? parentWorldRotation : new THREE.Quaternion();
+ }
+ });
+ return {
+ rigBones: rigBones,
+ root,
+ parentWorldRotations,
+ boneRotations,
+ };
+ }
+ constructor(humanoid) {
+ const { rigBones, root, parentWorldRotations, boneRotations } = VRMHumanoidRig._setupTransforms(humanoid);
+ super(rigBones);
+ this.original = humanoid;
+ this.root = root;
+ this._parentWorldRotations = parentWorldRotations;
+ this._boneRotations = boneRotations;
+ }
+ /**
+ * Update this humanoid rig.
+ */
+ update() {
+ VRMHumanBoneList.forEach((boneName) => {
+ const boneNode = this.original.getBoneNode(boneName);
+ if (boneNode != null) {
+ const rigBoneNode = this.getBoneNode(boneName);
+ const parentWorldRotation = this._parentWorldRotations[boneName];
+ const invParentWorldRotation = _quatA$3$1.copy(parentWorldRotation).invert();
+ const boneRotation = this._boneRotations[boneName];
+ boneNode.quaternion
+ .copy(rigBoneNode.quaternion)
+ .multiply(parentWorldRotation)
+ .premultiply(invParentWorldRotation)
+ .multiply(boneRotation);
+ // Move the mass center of the VRM
+ if (boneName === 'hips') {
+ const boneWorldPosition = rigBoneNode.getWorldPosition(_boneWorldPos);
+ boneNode.parent.updateWorldMatrix(true, false);
+ const parentWorldMatrix = boneNode.parent.matrixWorld;
+ const localPosition = boneWorldPosition.applyMatrix4(parentWorldMatrix.invert());
+ boneNode.position.copy(localPosition);
+ }
+ }
+ });
+ }
+}
+
+/**
+ * A class represents a humanoid of a VRM.
+ */
+class VRMHumanoid {
+ /**
+ * @deprecated Deprecated. Use either {@link rawRestPose} or {@link normalizedRestPose} instead.
+ */
+ get restPose() {
+ console.warn('VRMHumanoid: restPose is deprecated. Use either rawRestPose or normalizedRestPose instead.');
+ return this.rawRestPose;
+ }
+ /**
+ * A {@link VRMPose} of its raw human bones that is its default state.
+ * Note that it's not compatible with {@link setRawPose} and {@link getRawPose}, since it contains non-relative values of each local transforms.
+ */
+ get rawRestPose() {
+ return this._rawHumanBones.restPose;
+ }
+ /**
+ * A {@link VRMPose} of its normalized human bones that is its default state.
+ * Note that it's not compatible with {@link setNormalizedPose} and {@link getNormalizedPose}, since it contains non-relative values of each local transforms.
+ */
+ get normalizedRestPose() {
+ return this._normalizedHumanBones.restPose;
+ }
+ /**
+ * A map from {@link VRMHumanBoneName} to raw {@link VRMHumanBone}s.
+ */
+ get humanBones() {
+ // an alias of `rawHumanBones`
+ return this._rawHumanBones.humanBones;
+ }
+ /**
+ * A map from {@link VRMHumanBoneName} to raw {@link VRMHumanBone}s.
+ */
+ get rawHumanBones() {
+ return this._rawHumanBones.humanBones;
+ }
+ /**
+ * A map from {@link VRMHumanBoneName} to normalized {@link VRMHumanBone}s.
+ */
+ get normalizedHumanBones() {
+ return this._normalizedHumanBones.humanBones;
+ }
+ /**
+ * The root of normalized {@link VRMHumanBone}s.
+ */
+ get normalizedHumanBonesRoot() {
+ return this._normalizedHumanBones.root;
+ }
+ /**
+ * Create a new {@link VRMHumanoid}.
+ * @param humanBones A {@link VRMHumanBones} contains all the bones of the new humanoid
+ * @param autoUpdateHumanBones Whether it copies pose from normalizedHumanBones to rawHumanBones on {@link update}. `true` by default.
+ */
+ constructor(humanBones, options) {
+ var _a;
+ this.autoUpdateHumanBones = (_a = options === null || options === void 0 ? void 0 : options.autoUpdateHumanBones) !== null && _a !== void 0 ? _a : true;
+ this._rawHumanBones = new VRMRig(humanBones);
+ this._normalizedHumanBones = new VRMHumanoidRig(this._rawHumanBones);
+ }
+ /**
+ * Copy the given {@link VRMHumanoid} into this one.
+ * @param source The {@link VRMHumanoid} you want to copy
+ * @returns this
+ */
+ copy(source) {
+ this.autoUpdateHumanBones = source.autoUpdateHumanBones;
+ this._rawHumanBones = new VRMRig(source.humanBones);
+ this._normalizedHumanBones = new VRMHumanoidRig(this._rawHumanBones);
+ return this;
+ }
+ /**
+ * Returns a clone of this {@link VRMHumanoid}.
+ * @returns Copied {@link VRMHumanoid}
+ */
+ clone() {
+ return new VRMHumanoid(this.humanBones, { autoUpdateHumanBones: this.autoUpdateHumanBones }).copy(this);
+ }
+ /**
+ * @deprecated Deprecated. Use either {@link getRawAbsolutePose} or {@link getNormalizedAbsolutePose} instead.
+ */
+ getAbsolutePose() {
+ console.warn('VRMHumanoid: getAbsolutePose() is deprecated. Use either getRawAbsolutePose() or getNormalizedAbsolutePose() instead.');
+ return this.getRawAbsolutePose();
+ }
+ /**
+ * Return the current absolute pose of this raw human bones as a {@link VRMPose}.
+ * Note that the output result will contain initial state of the VRM and not compatible between different models.
+ * You might want to use {@link getRawPose} instead.
+ */
+ getRawAbsolutePose() {
+ return this._rawHumanBones.getAbsolutePose();
+ }
+ /**
+ * Return the current absolute pose of this normalized human bones as a {@link VRMPose}.
+ * Note that the output result will contain initial state of the VRM and not compatible between different models.
+ * You might want to use {@link getNormalizedPose} instead.
+ */
+ getNormalizedAbsolutePose() {
+ return this._normalizedHumanBones.getAbsolutePose();
+ }
+ /**
+ * @deprecated Deprecated. Use either {@link getRawPose} or {@link getNormalizedPose} instead.
+ */
+ getPose() {
+ console.warn('VRMHumanoid: getPose() is deprecated. Use either getRawPose() or getNormalizedPose() instead.');
+ return this.getRawPose();
+ }
+ /**
+ * Return the current pose of raw human bones as a {@link VRMPose}.
+ *
+ * Each transform is a local transform relative from rest pose (T-pose).
+ */
+ getRawPose() {
+ return this._rawHumanBones.getPose();
+ }
+ /**
+ * Return the current pose of normalized human bones as a {@link VRMPose}.
+ *
+ * Each transform is a local transform relative from rest pose (T-pose).
+ */
+ getNormalizedPose() {
+ return this._normalizedHumanBones.getPose();
+ }
+ /**
+ * @deprecated Deprecated. Use either {@link setRawPose} or {@link setNormalizedPose} instead.
+ */
+ setPose(poseObject) {
+ console.warn('VRMHumanoid: setPose() is deprecated. Use either setRawPose() or setNormalizedPose() instead.');
+ return this.setRawPose(poseObject);
+ }
+ /**
+ * Let the raw human bones do a specified pose.
+ *
+ * Each transform have to be a local transform relative from rest pose (T-pose).
+ * You can pass what you got from {@link getRawPose}.
+ *
+ * If you are using {@link autoUpdateHumanBones}, you might want to use {@link setNormalizedPose} instead.
+ *
+ * @param poseObject A {@link VRMPose} that represents a single pose
+ */
+ setRawPose(poseObject) {
+ return this._rawHumanBones.setPose(poseObject);
+ }
+ /**
+ * Let the normalized human bones do a specified pose.
+ *
+ * Each transform have to be a local transform relative from rest pose (T-pose).
+ * You can pass what you got from {@link getNormalizedPose}.
+ *
+ * @param poseObject A {@link VRMPose} that represents a single pose
+ */
+ setNormalizedPose(poseObject) {
+ return this._normalizedHumanBones.setPose(poseObject);
+ }
+ /**
+ * @deprecated Deprecated. Use either {@link resetRawPose} or {@link resetNormalizedPose} instead.
+ */
+ resetPose() {
+ console.warn('VRMHumanoid: resetPose() is deprecated. Use either resetRawPose() or resetNormalizedPose() instead.');
+ return this.resetRawPose();
+ }
+ /**
+ * Reset the raw humanoid to its rest pose.
+ *
+ * If you are using {@link autoUpdateHumanBones}, you might want to use {@link resetNormalizedPose} instead.
+ */
+ resetRawPose() {
+ return this._rawHumanBones.resetPose();
+ }
+ /**
+ * Reset the normalized humanoid to its rest pose.
+ */
+ resetNormalizedPose() {
+ return this._normalizedHumanBones.resetPose();
+ }
+ /**
+ * @deprecated Deprecated. Use either {@link getRawBone} or {@link getNormalizedBone} instead.
+ */
+ getBone(name) {
+ console.warn('VRMHumanoid: getBone() is deprecated. Use either getRawBone() or getNormalizedBone() instead.');
+ return this.getRawBone(name);
+ }
+ /**
+ * Return a raw {@link VRMHumanBone} bound to a specified {@link VRMHumanBoneName}.
+ *
+ * @param name Name of the bone you want
+ */
+ getRawBone(name) {
+ return this._rawHumanBones.getBone(name);
+ }
+ /**
+ * Return a normalized {@link VRMHumanBone} bound to a specified {@link VRMHumanBoneName}.
+ *
+ * @param name Name of the bone you want
+ */
+ getNormalizedBone(name) {
+ return this._normalizedHumanBones.getBone(name);
+ }
+ /**
+ * @deprecated Deprecated. Use either {@link getRawBoneNode} or {@link getNormalizedBoneNode} instead.
+ */
+ getBoneNode(name) {
+ console.warn('VRMHumanoid: getBoneNode() is deprecated. Use either getRawBoneNode() or getNormalizedBoneNode() instead.');
+ return this.getRawBoneNode(name);
+ }
+ /**
+ * Return a raw bone as a `THREE.Object3D` bound to a specified {@link VRMHumanBoneName}.
+ *
+ * @param name Name of the bone you want
+ */
+ getRawBoneNode(name) {
+ return this._rawHumanBones.getBoneNode(name);
+ }
+ /**
+ * Return a normalized bone as a `THREE.Object3D` bound to a specified {@link VRMHumanBoneName}.
+ *
+ * @param name Name of the bone you want
+ */
+ getNormalizedBoneNode(name) {
+ return this._normalizedHumanBones.getBoneNode(name);
+ }
+ /**
+ * Update the humanoid component.
+ *
+ * If {@link autoUpdateHumanBones} is `true`, it transfers the pose of normalized human bones to raw human bones.
+ */
+ update() {
+ if (this.autoUpdateHumanBones) {
+ this._normalizedHumanBones.update();
+ }
+ }
+}
+
+/* eslint-disable @typescript-eslint/naming-convention */
+const VRMRequiredHumanBoneName = {
+ Hips: 'hips',
+ Spine: 'spine',
+ Head: 'head',
+ LeftUpperLeg: 'leftUpperLeg',
+ LeftLowerLeg: 'leftLowerLeg',
+ LeftFoot: 'leftFoot',
+ RightUpperLeg: 'rightUpperLeg',
+ RightLowerLeg: 'rightLowerLeg',
+ RightFoot: 'rightFoot',
+ LeftUpperArm: 'leftUpperArm',
+ LeftLowerArm: 'leftLowerArm',
+ LeftHand: 'leftHand',
+ RightUpperArm: 'rightUpperArm',
+ RightLowerArm: 'rightLowerArm',
+ RightHand: 'rightHand',
+};
+
+/**
+ * Possible spec versions it recognizes.
+ */
+const POSSIBLE_SPEC_VERSIONS$2$1 = new Set(['1.0', '1.0-beta']);
+/**
+ * A map from old thumb bone names to new thumb bone names
+ */
+const thumbBoneNameMap = {
+ leftThumbProximal: 'leftThumbMetacarpal',
+ leftThumbIntermediate: 'leftThumbProximal',
+ rightThumbProximal: 'rightThumbMetacarpal',
+ rightThumbIntermediate: 'rightThumbProximal',
+};
+/**
+ * A plugin of GLTFLoader that imports a {@link VRMHumanoid} from a VRM extension of a GLTF.
+ */
+class VRMHumanoidLoaderPlugin {
+ get name() {
+ // We should use the extension name instead but we have multiple plugins for an extension...
+ return 'VRMHumanoidLoaderPlugin';
+ }
+ constructor(parser, options) {
+ this.parser = parser;
+ this.helperRoot = options === null || options === void 0 ? void 0 : options.helperRoot;
+ this.autoUpdateHumanBones = options === null || options === void 0 ? void 0 : options.autoUpdateHumanBones;
+ }
+ afterRoot(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ gltf.userData.vrmHumanoid = yield this._import(gltf);
+ });
+ }
+ /**
+ * Import a {@link VRMHumanoid} from a VRM.
+ *
+ * @param gltf A parsed result of GLTF taken from GLTFLoader
+ */
+ _import(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const v1Result = yield this._v1Import(gltf);
+ if (v1Result) {
+ return v1Result;
+ }
+ const v0Result = yield this._v0Import(gltf);
+ if (v0Result) {
+ return v0Result;
+ }
+ return null;
+ });
+ }
+ _v1Import(gltf) {
+ var _a, _b;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const isVRMUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf('VRMC_vrm')) !== -1;
+ if (!isVRMUsed) {
+ return null;
+ }
+ const extension = (_b = json.extensions) === null || _b === void 0 ? void 0 : _b['VRMC_vrm'];
+ if (!extension) {
+ return null;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS$2$1.has(specVersion)) {
+ console.warn(`VRMHumanoidLoaderPlugin: Unknown VRMC_vrm specVersion "${specVersion}"`);
+ return null;
+ }
+ const schemaHumanoid = extension.humanoid;
+ if (!schemaHumanoid) {
+ return null;
+ }
+ /**
+ * compat: 1.0-beta thumb bone names
+ *
+ * `true` if `leftThumbIntermediate` or `rightThumbIntermediate` exists
+ */
+ const existsPreviousThumbName = schemaHumanoid.humanBones.leftThumbIntermediate != null ||
+ schemaHumanoid.humanBones.rightThumbIntermediate != null;
+ const humanBones = {};
+ if (schemaHumanoid.humanBones != null) {
+ yield Promise.all(Object.entries(schemaHumanoid.humanBones).map(([boneNameString, schemaHumanBone]) => __awaiter$6(this, void 0, void 0, function* () {
+ let boneName = boneNameString;
+ const index = schemaHumanBone.node;
+ // compat: 1.0-beta previous thumb bone names
+ if (existsPreviousThumbName) {
+ const thumbBoneName = thumbBoneNameMap[boneName];
+ if (thumbBoneName != null) {
+ boneName = thumbBoneName;
+ }
+ }
+ const node = yield this.parser.getDependency('node', index);
+ // if the specified node does not exist, emit a warning
+ if (node == null) {
+ console.warn(`A glTF node bound to the humanoid bone ${boneName} (index = ${index}) does not exist`);
+ return;
+ }
+ // set to the `humanBones`
+ humanBones[boneName] = { node };
+ })));
+ }
+ const humanoid = new VRMHumanoid(this._ensureRequiredBonesExist(humanBones), {
+ autoUpdateHumanBones: this.autoUpdateHumanBones,
+ });
+ gltf.scene.add(humanoid.normalizedHumanBonesRoot);
+ if (this.helperRoot) {
+ const helper = new VRMHumanoidHelper(humanoid);
+ this.helperRoot.add(helper);
+ helper.renderOrder = this.helperRoot.renderOrder;
+ }
+ return humanoid;
+ });
+ }
+ _v0Import(gltf) {
+ var _a;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ const vrmExt = (_a = json.extensions) === null || _a === void 0 ? void 0 : _a.VRM;
+ if (!vrmExt) {
+ return null;
+ }
+ const schemaHumanoid = vrmExt.humanoid;
+ if (!schemaHumanoid) {
+ return null;
+ }
+ const humanBones = {};
+ if (schemaHumanoid.humanBones != null) {
+ yield Promise.all(schemaHumanoid.humanBones.map((bone) => __awaiter$6(this, void 0, void 0, function* () {
+ const boneName = bone.bone;
+ const index = bone.node;
+ if (boneName == null || index == null) {
+ return;
+ }
+ const node = yield this.parser.getDependency('node', index);
+ // if the specified node does not exist, emit a warning
+ if (node == null) {
+ console.warn(`A glTF node bound to the humanoid bone ${boneName} (index = ${index}) does not exist`);
+ return;
+ }
+ // map to new bone name
+ const thumbBoneName = thumbBoneNameMap[boneName];
+ const newBoneName = (thumbBoneName !== null && thumbBoneName !== void 0 ? thumbBoneName : boneName);
+ // v0 VRMs might have a multiple nodes attached to a single bone...
+ // so if there already is an entry in the `humanBones`, show a warning and ignore it
+ if (humanBones[newBoneName] != null) {
+ console.warn(`Multiple bone entries for ${newBoneName} detected (index = ${index}), ignoring duplicated entries.`);
+ return;
+ }
+ // set to the `humanBones`
+ humanBones[newBoneName] = { node };
+ })));
+ }
+ const humanoid = new VRMHumanoid(this._ensureRequiredBonesExist(humanBones), {
+ autoUpdateHumanBones: this.autoUpdateHumanBones,
+ });
+ gltf.scene.add(humanoid.normalizedHumanBonesRoot);
+ if (this.helperRoot) {
+ const helper = new VRMHumanoidHelper(humanoid);
+ this.helperRoot.add(helper);
+ helper.renderOrder = this.helperRoot.renderOrder;
+ }
+ return humanoid;
+ });
+ }
+ /**
+ * Ensure required bones exist in given human bones.
+ * @param humanBones Human bones
+ * @returns Human bones, no longer partial!
+ */
+ _ensureRequiredBonesExist(humanBones) {
+ // ensure required bones exist
+ const missingRequiredBones = Object.values(VRMRequiredHumanBoneName).filter((requiredBoneName) => humanBones[requiredBoneName] == null);
+ // throw an error if there are missing bones
+ if (missingRequiredBones.length > 0) {
+ throw new Error(`VRMHumanoidLoaderPlugin: These humanoid bones are required but not exist: ${missingRequiredBones.join(', ')}`);
+ }
+ return humanBones;
+ }
+}
+
+class FanBufferGeometry extends THREE.BufferGeometry {
+ constructor() {
+ super();
+ this._currentTheta = 0;
+ this._currentRadius = 0;
+ this.theta = 0.0;
+ this.radius = 0.0;
+ this._currentTheta = 0.0;
+ this._currentRadius = 0.0;
+ this._attrPos = new THREE.BufferAttribute(new Float32Array(65 * 3), 3);
+ this.setAttribute('position', this._attrPos);
+ this._attrIndex = new THREE.BufferAttribute(new Uint16Array(3 * 63), 1);
+ this.setIndex(this._attrIndex);
+ this._buildIndex();
+ this.update();
+ }
+ update() {
+ let shouldUpdateGeometry = false;
+ if (this._currentTheta !== this.theta) {
+ this._currentTheta = this.theta;
+ shouldUpdateGeometry = true;
+ }
+ if (this._currentRadius !== this.radius) {
+ this._currentRadius = this.radius;
+ shouldUpdateGeometry = true;
+ }
+ if (shouldUpdateGeometry) {
+ this._buildPosition();
+ }
+ }
+ _buildPosition() {
+ this._attrPos.setXYZ(0, 0.0, 0.0, 0.0);
+ for (let i = 0; i < 64; i++) {
+ const t = (i / 63.0) * this._currentTheta;
+ this._attrPos.setXYZ(i + 1, this._currentRadius * Math.sin(t), 0.0, this._currentRadius * Math.cos(t));
+ }
+ this._attrPos.needsUpdate = true;
+ }
+ _buildIndex() {
+ for (let i = 0; i < 63; i++) {
+ this._attrIndex.setXYZ(i * 3, 0, i + 1, i + 2);
+ }
+ this._attrIndex.needsUpdate = true;
+ }
+}
+
+class LineAndSphereBufferGeometry extends THREE.BufferGeometry {
+ constructor() {
+ super();
+ this.radius = 0.0;
+ this._currentRadius = 0.0;
+ this.tail = new THREE.Vector3();
+ this._currentTail = new THREE.Vector3();
+ this._attrPos = new THREE.BufferAttribute(new Float32Array(294), 3);
+ this.setAttribute('position', this._attrPos);
+ this._attrIndex = new THREE.BufferAttribute(new Uint16Array(194), 1);
+ this.setIndex(this._attrIndex);
+ this._buildIndex();
+ this.update();
+ }
+ update() {
+ let shouldUpdateGeometry = false;
+ if (this._currentRadius !== this.radius) {
+ this._currentRadius = this.radius;
+ shouldUpdateGeometry = true;
+ }
+ if (!this._currentTail.equals(this.tail)) {
+ this._currentTail.copy(this.tail);
+ shouldUpdateGeometry = true;
+ }
+ if (shouldUpdateGeometry) {
+ this._buildPosition();
+ }
+ }
+ _buildPosition() {
+ for (let i = 0; i < 32; i++) {
+ const t = (i / 16.0) * Math.PI;
+ this._attrPos.setXYZ(i, Math.cos(t), Math.sin(t), 0.0);
+ this._attrPos.setXYZ(32 + i, 0.0, Math.cos(t), Math.sin(t));
+ this._attrPos.setXYZ(64 + i, Math.sin(t), 0.0, Math.cos(t));
+ }
+ this.scale(this._currentRadius, this._currentRadius, this._currentRadius);
+ this.translate(this._currentTail.x, this._currentTail.y, this._currentTail.z);
+ this._attrPos.setXYZ(96, 0, 0, 0);
+ this._attrPos.setXYZ(97, this._currentTail.x, this._currentTail.y, this._currentTail.z);
+ this._attrPos.needsUpdate = true;
+ }
+ _buildIndex() {
+ for (let i = 0; i < 32; i++) {
+ const i1 = (i + 1) % 32;
+ this._attrIndex.setXY(i * 2, i, i1);
+ this._attrIndex.setXY(64 + i * 2, 32 + i, 32 + i1);
+ this._attrIndex.setXY(128 + i * 2, 64 + i, 64 + i1);
+ }
+ this._attrIndex.setXY(192, 96, 97);
+ this._attrIndex.needsUpdate = true;
+ }
+}
+
+const _quatA$2$1 = new THREE.Quaternion();
+const _quatB$2$1 = new THREE.Quaternion();
+const _v3A$1$2 = new THREE.Vector3();
+const _v3B$1$2 = new THREE.Vector3();
+const SQRT_2_OVER_2 = Math.sqrt(2.0) / 2.0;
+const QUAT_XY_CW90 = new THREE.Quaternion(0, 0, -SQRT_2_OVER_2, SQRT_2_OVER_2);
+const VEC3_POSITIVE_Y = new THREE.Vector3(0.0, 1.0, 0.0);
+class VRMLookAtHelper extends THREE.Group {
+ constructor(lookAt) {
+ super();
+ this.matrixAutoUpdate = false;
+ this.vrmLookAt = lookAt;
+ {
+ const geometry = new FanBufferGeometry();
+ geometry.radius = 0.5;
+ const material = new THREE.MeshBasicMaterial({
+ color: 0x00ff00,
+ transparent: true,
+ opacity: 0.5,
+ side: THREE.DoubleSide,
+ depthTest: false,
+ depthWrite: false,
+ });
+ this._meshPitch = new THREE.Mesh(geometry, material);
+ this.add(this._meshPitch);
+ }
+ {
+ const geometry = new FanBufferGeometry();
+ geometry.radius = 0.5;
+ const material = new THREE.MeshBasicMaterial({
+ color: 0xff0000,
+ transparent: true,
+ opacity: 0.5,
+ side: THREE.DoubleSide,
+ depthTest: false,
+ depthWrite: false,
+ });
+ this._meshYaw = new THREE.Mesh(geometry, material);
+ this.add(this._meshYaw);
+ }
+ {
+ const geometry = new LineAndSphereBufferGeometry();
+ geometry.radius = 0.1;
+ const material = new THREE.LineBasicMaterial({
+ color: 0xffffff,
+ depthTest: false,
+ depthWrite: false,
+ });
+ this._lineTarget = new THREE.LineSegments(geometry, material);
+ this._lineTarget.frustumCulled = false;
+ this.add(this._lineTarget);
+ }
+ }
+ dispose() {
+ this._meshYaw.geometry.dispose();
+ this._meshYaw.material.dispose();
+ this._meshPitch.geometry.dispose();
+ this._meshPitch.material.dispose();
+ this._lineTarget.geometry.dispose();
+ this._lineTarget.material.dispose();
+ }
+ updateMatrixWorld(force) {
+ // update geometries
+ const yaw = THREE.MathUtils.DEG2RAD * this.vrmLookAt.yaw;
+ this._meshYaw.geometry.theta = yaw;
+ this._meshYaw.geometry.update();
+ const pitch = THREE.MathUtils.DEG2RAD * this.vrmLookAt.pitch;
+ this._meshPitch.geometry.theta = pitch;
+ this._meshPitch.geometry.update();
+ // get world position and quaternion
+ this.vrmLookAt.getLookAtWorldPosition(_v3A$1$2);
+ this.vrmLookAt.getLookAtWorldQuaternion(_quatA$2$1);
+ // calculate rotation using faceFront
+ _quatA$2$1.multiply(this.vrmLookAt.getFaceFrontQuaternion(_quatB$2$1));
+ // set transform to meshes
+ this._meshYaw.position.copy(_v3A$1$2);
+ this._meshYaw.quaternion.copy(_quatA$2$1);
+ this._meshPitch.position.copy(_v3A$1$2);
+ this._meshPitch.quaternion.copy(_quatA$2$1);
+ this._meshPitch.quaternion.multiply(_quatB$2$1.setFromAxisAngle(VEC3_POSITIVE_Y, yaw));
+ this._meshPitch.quaternion.multiply(QUAT_XY_CW90);
+ // update target line and sphere
+ const { target, autoUpdate } = this.vrmLookAt;
+ if (target != null && autoUpdate) {
+ target.getWorldPosition(_v3B$1$2).sub(_v3A$1$2);
+ this._lineTarget.geometry.tail.copy(_v3B$1$2);
+ this._lineTarget.geometry.update();
+ this._lineTarget.position.copy(_v3A$1$2);
+ }
+ // apply transform to meshes
+ super.updateMatrixWorld(force);
+ }
+}
+
+const _position = new THREE.Vector3();
+const _scale = new THREE.Vector3();
+/**
+ * A replacement of `Object3D.getWorldQuaternion`.
+ * Extract the world quaternion of an object from its world space matrix, without calling `Object3D.updateWorldMatrix`.
+ * Use this when you're sure that the world matrix is up-to-date.
+ *
+ * @param object The object
+ * @param out A target quaternion
+ */
+function getWorldQuaternionLite(object, out) {
+ object.matrixWorld.decompose(_position, out, _scale);
+ return out;
+}
+
+/**
+ * Calculate azimuth / altitude angles from a vector.
+ *
+ * This returns a difference of angles from (1, 0, 0).
+ * Azimuth represents an angle around Y axis.
+ * Altitude represents an angle around Z axis.
+ * It is rotated in intrinsic Y-Z order.
+ *
+ * @param vector The vector
+ * @returns A tuple contains two angles, `[ azimuth, altitude ]`
+ */
+function calcAzimuthAltitude(vector) {
+ return [Math.atan2(-vector.z, vector.x), Math.atan2(vector.y, Math.sqrt(vector.x * vector.x + vector.z * vector.z))];
+}
+
+/**
+ * Make sure the angle is within -PI to PI.
+ *
+ * @example
+ * ```js
+ * sanitizeAngle(1.5 * Math.PI) // -0.5 * PI
+ * ```
+ *
+ * @param angle An input angle
+ */
+function sanitizeAngle(angle) {
+ const roundTurn = Math.round(angle / 2.0 / Math.PI);
+ return angle - 2.0 * Math.PI * roundTurn;
+}
+
+const VEC3_POSITIVE_Z$1 = new THREE.Vector3(0.0, 0.0, 1.0);
+const _v3A$6 = new THREE.Vector3();
+const _v3B$3 = new THREE.Vector3();
+const _v3C$2 = new THREE.Vector3();
+const _quatA$1$1 = new THREE.Quaternion();
+const _quatB$1$1 = new THREE.Quaternion();
+const _quatC$1 = new THREE.Quaternion();
+const _quatD = new THREE.Quaternion();
+const _eulerA$1 = new THREE.Euler();
+/**
+ * A class controls eye gaze movements of a VRM.
+ */
+class VRMLookAt {
+ /**
+ * Its current angle around Y axis, in degree.
+ */
+ get yaw() {
+ return this._yaw;
+ }
+ /**
+ * Its current angle around Y axis, in degree.
+ */
+ set yaw(value) {
+ this._yaw = value;
+ this._needsUpdate = true;
+ }
+ /**
+ * Its current angle around X axis, in degree.
+ */
+ get pitch() {
+ return this._pitch;
+ }
+ /**
+ * Its current angle around X axis, in degree.
+ */
+ set pitch(value) {
+ this._pitch = value;
+ this._needsUpdate = true;
+ }
+ /**
+ * @deprecated Use {@link getEuler} instead.
+ */
+ get euler() {
+ console.warn('VRMLookAt: euler is deprecated. use getEuler() instead.');
+ return this.getEuler(new THREE.Euler());
+ }
+ /**
+ * Create a new {@link VRMLookAt}.
+ *
+ * @param humanoid A {@link VRMHumanoid}
+ * @param applier A {@link VRMLookAtApplier}
+ */
+ constructor(humanoid, applier) {
+ /**
+ * The origin of LookAt. Position offset from the head bone.
+ */
+ this.offsetFromHeadBone = new THREE.Vector3();
+ /**
+ * If this is true, the LookAt will be updated automatically by calling {@link update}, towarding the direction to the {@link target}.
+ * `true` by default.
+ *
+ * See also: {@link target}
+ */
+ this.autoUpdate = true;
+ /**
+ * The front direction of the face.
+ * Intended to be used for VRM 0.0 compat (VRM 0.0 models are facing Z- instead of Z+).
+ * You usually don't want to touch this.
+ */
+ this.faceFront = new THREE.Vector3(0.0, 0.0, 1.0);
+ this.humanoid = humanoid;
+ this.applier = applier;
+ this._yaw = 0.0;
+ this._pitch = 0.0;
+ this._needsUpdate = true;
+ this._restHeadWorldQuaternion = this.getLookAtWorldQuaternion(new THREE.Quaternion());
+ }
+ /**
+ * Get its yaw-pitch angles as an `Euler`.
+ * Does NOT consider {@link faceFront}; it returns `Euler(0, 0, 0; "YXZ")` by default regardless of the faceFront value.
+ *
+ * @param target The target euler
+ */
+ getEuler(target) {
+ return target.set(THREE.MathUtils.DEG2RAD * this._pitch, THREE.MathUtils.DEG2RAD * this._yaw, 0.0, 'YXZ');
+ }
+ /**
+ * Copy the given {@link VRMLookAt} into this one.
+ * {@link humanoid} must be same as the source one.
+ * {@link applier} will reference the same instance as the source one.
+ * @param source The {@link VRMLookAt} you want to copy
+ * @returns this
+ */
+ copy(source) {
+ if (this.humanoid !== source.humanoid) {
+ throw new Error('VRMLookAt: humanoid must be same in order to copy');
+ }
+ this.offsetFromHeadBone.copy(source.offsetFromHeadBone);
+ this.applier = source.applier;
+ this.autoUpdate = source.autoUpdate;
+ this.target = source.target;
+ this.faceFront.copy(source.faceFront);
+ return this;
+ }
+ /**
+ * Returns a clone of this {@link VRMLookAt}.
+ * Note that {@link humanoid} and {@link applier} will reference the same instance as this one.
+ * @returns Copied {@link VRMLookAt}
+ */
+ clone() {
+ return new VRMLookAt(this.humanoid, this.applier).copy(this);
+ }
+ /**
+ * Reset the lookAt direction (yaw and pitch) to the initial direction.
+ */
+ reset() {
+ this._yaw = 0.0;
+ this._pitch = 0.0;
+ this._needsUpdate = true;
+ }
+ /**
+ * Get its lookAt position in world coordinate.
+ *
+ * @param target A target `THREE.Vector3`
+ */
+ getLookAtWorldPosition(target) {
+ const head = this.humanoid.getRawBoneNode('head');
+ return target.copy(this.offsetFromHeadBone).applyMatrix4(head.matrixWorld);
+ }
+ /**
+ * Get its lookAt rotation in world coordinate.
+ * Does NOT consider {@link faceFront}.
+ *
+ * @param target A target `THREE.Quaternion`
+ */
+ getLookAtWorldQuaternion(target) {
+ const head = this.humanoid.getRawBoneNode('head');
+ return getWorldQuaternionLite(head, target);
+ }
+ /**
+ * Get a quaternion that rotates the +Z unit vector of the humanoid Head to the {@link faceFront} direction.
+ *
+ * @param target A target `THREE.Quaternion`
+ */
+ getFaceFrontQuaternion(target) {
+ if (this.faceFront.distanceToSquared(VEC3_POSITIVE_Z$1) < 0.01) {
+ return target.copy(this._restHeadWorldQuaternion).invert();
+ }
+ const [faceFrontAzimuth, faceFrontAltitude] = calcAzimuthAltitude(this.faceFront);
+ _eulerA$1.set(0.0, 0.5 * Math.PI + faceFrontAzimuth, faceFrontAltitude, 'YZX');
+ return target.setFromEuler(_eulerA$1).premultiply(_quatD.copy(this._restHeadWorldQuaternion).invert());
+ }
+ /**
+ * Get its LookAt direction in world coordinate.
+ *
+ * @param target A target `THREE.Vector3`
+ */
+ getLookAtWorldDirection(target) {
+ this.getLookAtWorldQuaternion(_quatB$1$1);
+ this.getFaceFrontQuaternion(_quatC$1);
+ return target
+ .copy(VEC3_POSITIVE_Z$1)
+ .applyQuaternion(_quatB$1$1)
+ .applyQuaternion(_quatC$1)
+ .applyEuler(this.getEuler(_eulerA$1));
+ }
+ /**
+ * Set its lookAt target position.
+ *
+ * Note that its result will be instantly overwritten if {@link VRMLookAtHead.autoUpdate} is enabled.
+ *
+ * If you want to track an object continuously, you might want to use {@link target} instead.
+ *
+ * @param position A target position, in world space
+ */
+ lookAt(position) {
+ // Look at direction in local coordinate
+ const headRotDiffInv = _quatA$1$1
+ .copy(this._restHeadWorldQuaternion)
+ .multiply(quatInvertCompat$1(this.getLookAtWorldQuaternion(_quatB$1$1)));
+ const headPos = this.getLookAtWorldPosition(_v3B$3);
+ const lookAtDir = _v3C$2.copy(position).sub(headPos).applyQuaternion(headRotDiffInv).normalize();
+ // calculate angles
+ const [azimuthFrom, altitudeFrom] = calcAzimuthAltitude(this.faceFront);
+ const [azimuthTo, altitudeTo] = calcAzimuthAltitude(lookAtDir);
+ const yaw = sanitizeAngle(azimuthTo - azimuthFrom);
+ const pitch = sanitizeAngle(altitudeFrom - altitudeTo); // spinning (1, 0, 0) CCW around Z axis makes the vector look up, while spinning (0, 0, 1) CCW around X axis makes the vector look down
+ // apply angles
+ this._yaw = THREE.MathUtils.RAD2DEG * yaw;
+ this._pitch = THREE.MathUtils.RAD2DEG * pitch;
+ this._needsUpdate = true;
+ }
+ /**
+ * Update the VRMLookAtHead.
+ * If {@link autoUpdate} is enabled, this will make it look at the {@link target}.
+ *
+ * @param delta deltaTime, it isn't used though. You can use the parameter if you want to use this in your own extended {@link VRMLookAt}.
+ */
+ update(delta) {
+ if (this.target != null && this.autoUpdate) {
+ this.lookAt(this.target.getWorldPosition(_v3A$6));
+ }
+ if (this._needsUpdate) {
+ this._needsUpdate = false;
+ this.applier.applyYawPitch(this._yaw, this._pitch);
+ }
+ }
+}
+VRMLookAt.EULER_ORDER = 'YXZ'; // yaw-pitch-roll
+
+const VEC3_POSITIVE_Z = new THREE.Vector3(0.0, 0.0, 1.0);
+const _quatA$6 = new THREE.Quaternion();
+const _quatB$3 = new THREE.Quaternion();
+const _eulerA = new THREE.Euler(0.0, 0.0, 0.0, 'YXZ');
+/**
+ * A class that applies eye gaze directions to a VRM.
+ * It will be used by {@link VRMLookAt}.
+ */
+class VRMLookAtBoneApplier {
+ /**
+ * Create a new {@link VRMLookAtBoneApplier}.
+ *
+ * @param humanoid A {@link VRMHumanoid}
+ * @param rangeMapHorizontalInner A {@link VRMLookAtRangeMap} used for inner transverse direction
+ * @param rangeMapHorizontalOuter A {@link VRMLookAtRangeMap} used for outer transverse direction
+ * @param rangeMapVerticalDown A {@link VRMLookAtRangeMap} used for down direction
+ * @param rangeMapVerticalUp A {@link VRMLookAtRangeMap} used for up direction
+ */
+ constructor(humanoid, rangeMapHorizontalInner, rangeMapHorizontalOuter, rangeMapVerticalDown, rangeMapVerticalUp) {
+ this.humanoid = humanoid;
+ this.rangeMapHorizontalInner = rangeMapHorizontalInner;
+ this.rangeMapHorizontalOuter = rangeMapHorizontalOuter;
+ this.rangeMapVerticalDown = rangeMapVerticalDown;
+ this.rangeMapVerticalUp = rangeMapVerticalUp;
+ this.faceFront = new THREE.Vector3(0.0, 0.0, 1.0);
+ // set rest quaternions
+ this._restQuatLeftEye = new THREE.Quaternion();
+ this._restQuatRightEye = new THREE.Quaternion();
+ this._restLeftEyeParentWorldQuat = new THREE.Quaternion();
+ this._restRightEyeParentWorldQuat = new THREE.Quaternion();
+ const leftEye = this.humanoid.getRawBoneNode('leftEye');
+ const rightEye = this.humanoid.getRawBoneNode('rightEye');
+ if (leftEye) {
+ this._restQuatLeftEye.copy(leftEye.quaternion);
+ getWorldQuaternionLite(leftEye.parent, this._restLeftEyeParentWorldQuat);
+ }
+ if (rightEye) {
+ this._restQuatRightEye.copy(rightEye.quaternion);
+ getWorldQuaternionLite(rightEye.parent, this._restRightEyeParentWorldQuat);
+ }
+ }
+ /**
+ * Apply the input angle to its associated VRM model.
+ *
+ * @param yaw Rotation around Y axis, in degree
+ * @param pitch Rotation around X axis, in degree
+ */
+ applyYawPitch(yaw, pitch) {
+ const leftEye = this.humanoid.getRawBoneNode('leftEye');
+ const rightEye = this.humanoid.getRawBoneNode('rightEye');
+ const leftEyeNormalized = this.humanoid.getNormalizedBoneNode('leftEye');
+ const rightEyeNormalized = this.humanoid.getNormalizedBoneNode('rightEye');
+ // left
+ if (leftEye) {
+ if (pitch < 0.0) {
+ _eulerA.x = -THREE.MathUtils.DEG2RAD * this.rangeMapVerticalDown.map(-pitch);
+ }
+ else {
+ _eulerA.x = THREE.MathUtils.DEG2RAD * this.rangeMapVerticalUp.map(pitch);
+ }
+ if (yaw < 0.0) {
+ _eulerA.y = -THREE.MathUtils.DEG2RAD * this.rangeMapHorizontalInner.map(-yaw);
+ }
+ else {
+ _eulerA.y = THREE.MathUtils.DEG2RAD * this.rangeMapHorizontalOuter.map(yaw);
+ }
+ _quatA$6.setFromEuler(_eulerA);
+ this._getWorldFaceFrontQuat(_quatB$3);
+ // _quatB * _quatA * _quatB^-1
+ // where _quatA is LookAt rotation
+ // and _quatB is worldFaceFrontQuat
+ leftEyeNormalized.quaternion.copy(_quatB$3).multiply(_quatA$6).multiply(_quatB$3.invert());
+ _quatA$6.copy(this._restLeftEyeParentWorldQuat);
+ // _quatA^-1 * leftEyeNormalized.quaternion * _quatA * restQuatLeftEye
+ // where _quatA is restLeftEyeParentWorldQuat
+ leftEye.quaternion
+ .copy(leftEyeNormalized.quaternion)
+ .multiply(_quatA$6)
+ .premultiply(_quatA$6.invert())
+ .multiply(this._restQuatLeftEye);
+ }
+ // right
+ if (rightEye) {
+ if (pitch < 0.0) {
+ _eulerA.x = -THREE.MathUtils.DEG2RAD * this.rangeMapVerticalDown.map(-pitch);
+ }
+ else {
+ _eulerA.x = THREE.MathUtils.DEG2RAD * this.rangeMapVerticalUp.map(pitch);
+ }
+ if (yaw < 0.0) {
+ _eulerA.y = -THREE.MathUtils.DEG2RAD * this.rangeMapHorizontalOuter.map(-yaw);
+ }
+ else {
+ _eulerA.y = THREE.MathUtils.DEG2RAD * this.rangeMapHorizontalInner.map(yaw);
+ }
+ _quatA$6.setFromEuler(_eulerA);
+ this._getWorldFaceFrontQuat(_quatB$3);
+ // _quatB * _quatA * _quatB^-1
+ // where _quatA is LookAt rotation
+ // and _quatB is worldFaceFrontQuat
+ rightEyeNormalized.quaternion.copy(_quatB$3).multiply(_quatA$6).multiply(_quatB$3.invert());
+ _quatA$6.copy(this._restRightEyeParentWorldQuat);
+ // _quatA^-1 * rightEyeNormalized.quaternion * _quatA * restQuatRightEye
+ // where _quatA is restRightEyeParentWorldQuat
+ rightEye.quaternion
+ .copy(rightEyeNormalized.quaternion)
+ .multiply(_quatA$6)
+ .premultiply(_quatA$6.invert())
+ .multiply(this._restQuatRightEye);
+ }
+ }
+ /**
+ * @deprecated Use {@link applyYawPitch} instead.
+ */
+ lookAt(euler) {
+ console.warn('VRMLookAtBoneApplier: lookAt() is deprecated. use apply() instead.');
+ const yaw = THREE.MathUtils.RAD2DEG * euler.y;
+ const pitch = THREE.MathUtils.RAD2DEG * euler.x;
+ this.applyYawPitch(yaw, pitch);
+ }
+ /**
+ * Get a quaternion that rotates the world-space +Z unit vector to the {@link faceFront} direction.
+ *
+ * @param target A target `THREE.Quaternion`
+ */
+ _getWorldFaceFrontQuat(target) {
+ if (this.faceFront.distanceToSquared(VEC3_POSITIVE_Z) < 0.01) {
+ return target.identity();
+ }
+ const [faceFrontAzimuth, faceFrontAltitude] = calcAzimuthAltitude(this.faceFront);
+ _eulerA.set(0.0, 0.5 * Math.PI + faceFrontAzimuth, faceFrontAltitude, 'YZX');
+ return target.setFromEuler(_eulerA);
+ }
+}
+/**
+ * Represent its type of applier.
+ */
+VRMLookAtBoneApplier.type = 'bone';
+
+/**
+ * A class that applies eye gaze directions to a VRM.
+ * It will be used by {@link VRMLookAt}.
+ */
+class VRMLookAtExpressionApplier {
+ /**
+ * Create a new {@link VRMLookAtExpressionApplier}.
+ *
+ * @param expressions A {@link VRMExpressionManager}
+ * @param rangeMapHorizontalInner A {@link VRMLookAtRangeMap} used for inner transverse direction
+ * @param rangeMapHorizontalOuter A {@link VRMLookAtRangeMap} used for outer transverse direction
+ * @param rangeMapVerticalDown A {@link VRMLookAtRangeMap} used for down direction
+ * @param rangeMapVerticalUp A {@link VRMLookAtRangeMap} used for up direction
+ */
+ constructor(expressions, rangeMapHorizontalInner, rangeMapHorizontalOuter, rangeMapVerticalDown, rangeMapVerticalUp) {
+ this.expressions = expressions;
+ this.rangeMapHorizontalInner = rangeMapHorizontalInner;
+ this.rangeMapHorizontalOuter = rangeMapHorizontalOuter;
+ this.rangeMapVerticalDown = rangeMapVerticalDown;
+ this.rangeMapVerticalUp = rangeMapVerticalUp;
+ }
+ /**
+ * Apply the input angle to its associated VRM model.
+ *
+ * @param yaw Rotation around Y axis, in degree
+ * @param pitch Rotation around X axis, in degree
+ */
+ applyYawPitch(yaw, pitch) {
+ if (pitch < 0.0) {
+ this.expressions.setValue('lookDown', 0.0);
+ this.expressions.setValue('lookUp', this.rangeMapVerticalUp.map(-pitch));
+ }
+ else {
+ this.expressions.setValue('lookUp', 0.0);
+ this.expressions.setValue('lookDown', this.rangeMapVerticalDown.map(pitch));
+ }
+ if (yaw < 0.0) {
+ this.expressions.setValue('lookLeft', 0.0);
+ this.expressions.setValue('lookRight', this.rangeMapHorizontalOuter.map(-yaw));
+ }
+ else {
+ this.expressions.setValue('lookRight', 0.0);
+ this.expressions.setValue('lookLeft', this.rangeMapHorizontalOuter.map(yaw));
+ }
+ }
+ /**
+ * @deprecated Use {@link applyYawPitch} instead.
+ */
+ lookAt(euler) {
+ console.warn('VRMLookAtBoneApplier: lookAt() is deprecated. use apply() instead.');
+ const yaw = THREE.MathUtils.RAD2DEG * euler.y;
+ const pitch = THREE.MathUtils.RAD2DEG * euler.x;
+ this.applyYawPitch(yaw, pitch);
+ }
+}
+/**
+ * Represent its type of applier.
+ */
+VRMLookAtExpressionApplier.type = 'expression';
+
+class VRMLookAtRangeMap {
+ /**
+ * Create a new {@link VRMLookAtRangeMap}.
+ *
+ * @param inputMaxValue The {@link inputMaxValue} of the map
+ * @param outputScale The {@link outputScale} of the map
+ */
+ constructor(inputMaxValue, outputScale) {
+ this.inputMaxValue = inputMaxValue;
+ this.outputScale = outputScale;
+ }
+ /**
+ * Evaluate an input value and output a mapped value.
+ * @param src The input value
+ */
+ map(src) {
+ return this.outputScale * saturate(src / this.inputMaxValue);
+ }
+}
+
+/**
+ * Possible spec versions it recognizes.
+ */
+const POSSIBLE_SPEC_VERSIONS$1$1 = new Set(['1.0', '1.0-beta']);
+/**
+ * The minimum permitted value for {@link V1VRMSchema.LookAtRangeMap.inputMaxValue}.
+ * If the given value is smaller than this, the loader shows a warning and clamps up the value.
+ */
+const INPUT_MAX_VALUE_MINIMUM = 0.01;
+/**
+ * A plugin of GLTFLoader that imports a {@link VRMLookAt} from a VRM extension of a GLTF.
+ */
+class VRMLookAtLoaderPlugin {
+ get name() {
+ // We should use the extension name instead but we have multiple plugins for an extension...
+ return 'VRMLookAtLoaderPlugin';
+ }
+ constructor(parser, options) {
+ this.parser = parser;
+ this.helperRoot = options === null || options === void 0 ? void 0 : options.helperRoot;
+ }
+ afterRoot(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const vrmHumanoid = gltf.userData.vrmHumanoid;
+ // explicitly distinguish null and undefined
+ // since vrmHumanoid might be null as a result
+ if (vrmHumanoid === null) {
+ return;
+ }
+ else if (vrmHumanoid === undefined) {
+ throw new Error('VRMLookAtLoaderPlugin: vrmHumanoid is undefined. VRMHumanoidLoaderPlugin have to be used first');
+ }
+ const vrmExpressionManager = gltf.userData.vrmExpressionManager;
+ if (vrmExpressionManager === null) {
+ return;
+ }
+ else if (vrmExpressionManager === undefined) {
+ throw new Error('VRMLookAtLoaderPlugin: vrmExpressionManager is undefined. VRMExpressionLoaderPlugin have to be used first');
+ }
+ gltf.userData.vrmLookAt = yield this._import(gltf, vrmHumanoid, vrmExpressionManager);
+ });
+ }
+ /**
+ * Import a {@link VRMLookAt} from a VRM.
+ *
+ * @param gltf A parsed result of GLTF taken from GLTFLoader
+ * @param humanoid A {@link VRMHumanoid} instance that represents the VRM
+ * @param expressions A {@link VRMExpressionManager} instance that represents the VRM
+ */
+ _import(gltf, humanoid, expressions) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ if (humanoid == null || expressions == null) {
+ return null;
+ }
+ const v1Result = yield this._v1Import(gltf, humanoid, expressions);
+ if (v1Result) {
+ return v1Result;
+ }
+ const v0Result = yield this._v0Import(gltf, humanoid, expressions);
+ if (v0Result) {
+ return v0Result;
+ }
+ return null;
+ });
+ }
+ _v1Import(gltf, humanoid, expressions) {
+ var _a, _b, _c;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const isVRMUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf('VRMC_vrm')) !== -1;
+ if (!isVRMUsed) {
+ return null;
+ }
+ const extension = (_b = json.extensions) === null || _b === void 0 ? void 0 : _b['VRMC_vrm'];
+ if (!extension) {
+ return null;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS$1$1.has(specVersion)) {
+ console.warn(`VRMLookAtLoaderPlugin: Unknown VRMC_vrm specVersion "${specVersion}"`);
+ return null;
+ }
+ const schemaLookAt = extension.lookAt;
+ if (!schemaLookAt) {
+ return null;
+ }
+ const defaultOutputScale = schemaLookAt.type === 'expression' ? 1.0 : 10.0;
+ const mapHI = this._v1ImportRangeMap(schemaLookAt.rangeMapHorizontalInner, defaultOutputScale);
+ const mapHO = this._v1ImportRangeMap(schemaLookAt.rangeMapHorizontalOuter, defaultOutputScale);
+ const mapVD = this._v1ImportRangeMap(schemaLookAt.rangeMapVerticalDown, defaultOutputScale);
+ const mapVU = this._v1ImportRangeMap(schemaLookAt.rangeMapVerticalUp, defaultOutputScale);
+ let applier;
+ if (schemaLookAt.type === 'expression') {
+ applier = new VRMLookAtExpressionApplier(expressions, mapHI, mapHO, mapVD, mapVU);
+ }
+ else {
+ applier = new VRMLookAtBoneApplier(humanoid, mapHI, mapHO, mapVD, mapVU);
+ }
+ const lookAt = this._importLookAt(humanoid, applier);
+ lookAt.offsetFromHeadBone.fromArray((_c = schemaLookAt.offsetFromHeadBone) !== null && _c !== void 0 ? _c : [0.0, 0.06, 0.0]);
+ return lookAt;
+ });
+ }
+ _v1ImportRangeMap(schemaRangeMap, defaultOutputScale) {
+ var _a, _b;
+ let inputMaxValue = (_a = schemaRangeMap === null || schemaRangeMap === void 0 ? void 0 : schemaRangeMap.inputMaxValue) !== null && _a !== void 0 ? _a : 90.0;
+ const outputScale = (_b = schemaRangeMap === null || schemaRangeMap === void 0 ? void 0 : schemaRangeMap.outputScale) !== null && _b !== void 0 ? _b : defaultOutputScale;
+ // It might cause NaN when `inputMaxValue` is too small
+ // which makes the mesh of the head disappear
+ // See: https://github.com/pixiv/three-vrm/issues/1201
+ if (inputMaxValue < INPUT_MAX_VALUE_MINIMUM) {
+ console.warn('VRMLookAtLoaderPlugin: inputMaxValue of a range map is too small. Consider reviewing the range map!');
+ inputMaxValue = INPUT_MAX_VALUE_MINIMUM;
+ }
+ return new VRMLookAtRangeMap(inputMaxValue, outputScale);
+ }
+ _v0Import(gltf, humanoid, expressions) {
+ var _a, _b, _c, _d;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const vrmExt = (_a = json.extensions) === null || _a === void 0 ? void 0 : _a.VRM;
+ if (!vrmExt) {
+ return null;
+ }
+ const schemaFirstPerson = vrmExt.firstPerson;
+ if (!schemaFirstPerson) {
+ return null;
+ }
+ const defaultOutputScale = schemaFirstPerson.lookAtTypeName === 'BlendShape' ? 1.0 : 10.0;
+ const mapHI = this._v0ImportDegreeMap(schemaFirstPerson.lookAtHorizontalInner, defaultOutputScale);
+ const mapHO = this._v0ImportDegreeMap(schemaFirstPerson.lookAtHorizontalOuter, defaultOutputScale);
+ const mapVD = this._v0ImportDegreeMap(schemaFirstPerson.lookAtVerticalDown, defaultOutputScale);
+ const mapVU = this._v0ImportDegreeMap(schemaFirstPerson.lookAtVerticalUp, defaultOutputScale);
+ let applier;
+ if (schemaFirstPerson.lookAtTypeName === 'BlendShape') {
+ applier = new VRMLookAtExpressionApplier(expressions, mapHI, mapHO, mapVD, mapVU);
+ }
+ else {
+ applier = new VRMLookAtBoneApplier(humanoid, mapHI, mapHO, mapVD, mapVU);
+ }
+ const lookAt = this._importLookAt(humanoid, applier);
+ if (schemaFirstPerson.firstPersonBoneOffset) {
+ lookAt.offsetFromHeadBone.set((_b = schemaFirstPerson.firstPersonBoneOffset.x) !== null && _b !== void 0 ? _b : 0.0, (_c = schemaFirstPerson.firstPersonBoneOffset.y) !== null && _c !== void 0 ? _c : 0.06, -((_d = schemaFirstPerson.firstPersonBoneOffset.z) !== null && _d !== void 0 ? _d : 0.0));
+ }
+ else {
+ lookAt.offsetFromHeadBone.set(0.0, 0.06, 0.0);
+ }
+ // VRM 0.0 are facing Z- instead of Z+
+ lookAt.faceFront.set(0.0, 0.0, -1.0);
+ if (applier instanceof VRMLookAtBoneApplier) {
+ applier.faceFront.set(0.0, 0.0, -1.0);
+ }
+ return lookAt;
+ });
+ }
+ _v0ImportDegreeMap(schemaDegreeMap, defaultOutputScale) {
+ var _a, _b;
+ const curve = schemaDegreeMap === null || schemaDegreeMap === void 0 ? void 0 : schemaDegreeMap.curve;
+ if (JSON.stringify(curve) !== '[0,0,0,1,1,1,1,0]') {
+ console.warn('Curves of LookAtDegreeMap defined in VRM 0.0 are not supported');
+ }
+ let xRange = (_a = schemaDegreeMap === null || schemaDegreeMap === void 0 ? void 0 : schemaDegreeMap.xRange) !== null && _a !== void 0 ? _a : 90.0;
+ const yRange = (_b = schemaDegreeMap === null || schemaDegreeMap === void 0 ? void 0 : schemaDegreeMap.yRange) !== null && _b !== void 0 ? _b : defaultOutputScale;
+ // It might cause NaN when `xRange` is too small
+ // which makes the mesh of the head disappear
+ // See: https://github.com/pixiv/three-vrm/issues/1201
+ if (xRange < INPUT_MAX_VALUE_MINIMUM) {
+ console.warn('VRMLookAtLoaderPlugin: xRange of a degree map is too small. Consider reviewing the degree map!');
+ xRange = INPUT_MAX_VALUE_MINIMUM;
+ }
+ return new VRMLookAtRangeMap(xRange, yRange);
+ }
+ _importLookAt(humanoid, applier) {
+ const lookAt = new VRMLookAt(humanoid, applier);
+ if (this.helperRoot) {
+ const helper = new VRMLookAtHelper(lookAt);
+ this.helperRoot.add(helper);
+ helper.renderOrder = this.helperRoot.renderOrder;
+ }
+ return lookAt;
+ }
+}
+
+/* eslint-disable @typescript-eslint/naming-convention */
+/**
+ * Represents a type of applier.
+ */
+const VRMLookAtTypeName = {
+ Bone: 'bone',
+ Expression: 'expression',
+};
+
+/**
+ * Yoinked from https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/GLTFLoader.js
+ */
+function resolveURL(url, path) {
+ // Invalid URL
+ if (typeof url !== 'string' || url === '')
+ return '';
+ // Host Relative URL
+ if (/^https?:\/\//i.test(path) && /^\//.test(url)) {
+ path = path.replace(/(^https?:\/\/[^/]+).*/i, '$1');
+ }
+ // Absolute URL http://,https://,//
+ if (/^(https?:)?\/\//i.test(url))
+ return url;
+ // Data URI
+ if (/^data:.*,.*$/i.test(url))
+ return url;
+ // Blob URL
+ if (/^blob:.*$/i.test(url))
+ return url;
+ // Relative URL
+ return path + url;
+}
+
+/**
+ * Possible spec versions it recognizes.
+ */
+const POSSIBLE_SPEC_VERSIONS$5 = new Set(['1.0', '1.0-beta']);
+/**
+ * A plugin of GLTFLoader that imports a {@link VRM1Meta} from a VRM extension of a GLTF.
+ */
+class VRMMetaLoaderPlugin {
+ get name() {
+ // We should use the extension name instead but we have multiple plugins for an extension...
+ return 'VRMMetaLoaderPlugin';
+ }
+ constructor(parser, options) {
+ var _a, _b, _c;
+ this.parser = parser;
+ this.needThumbnailImage = (_a = options === null || options === void 0 ? void 0 : options.needThumbnailImage) !== null && _a !== void 0 ? _a : true;
+ this.acceptLicenseUrls = (_b = options === null || options === void 0 ? void 0 : options.acceptLicenseUrls) !== null && _b !== void 0 ? _b : ['https://vrm.dev/licenses/1.0/'];
+ this.acceptV0Meta = (_c = options === null || options === void 0 ? void 0 : options.acceptV0Meta) !== null && _c !== void 0 ? _c : true;
+ }
+ afterRoot(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ gltf.userData.vrmMeta = yield this._import(gltf);
+ });
+ }
+ _import(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const v1Result = yield this._v1Import(gltf);
+ if (v1Result != null) {
+ return v1Result;
+ }
+ const v0Result = yield this._v0Import(gltf);
+ if (v0Result != null) {
+ return v0Result;
+ }
+ return null;
+ });
+ }
+ _v1Import(gltf) {
+ var _a, _b, _c;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const isVRMUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf('VRMC_vrm')) !== -1;
+ if (!isVRMUsed) {
+ return null;
+ }
+ const extension = (_b = json.extensions) === null || _b === void 0 ? void 0 : _b['VRMC_vrm'];
+ if (extension == null) {
+ return null;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS$5.has(specVersion)) {
+ console.warn(`VRMMetaLoaderPlugin: Unknown VRMC_vrm specVersion "${specVersion}"`);
+ return null;
+ }
+ const schemaMeta = extension.meta;
+ if (!schemaMeta) {
+ return null;
+ }
+ // throw an error if acceptV0Meta is false
+ const licenseUrl = schemaMeta.licenseUrl;
+ const acceptLicenseUrlsSet = new Set(this.acceptLicenseUrls);
+ if (!acceptLicenseUrlsSet.has(licenseUrl)) {
+ throw new Error(`VRMMetaLoaderPlugin: The license url "${licenseUrl}" is not accepted`);
+ }
+ let thumbnailImage = undefined;
+ if (this.needThumbnailImage && schemaMeta.thumbnailImage != null) {
+ thumbnailImage = (_c = (yield this._extractGLTFImage(schemaMeta.thumbnailImage))) !== null && _c !== void 0 ? _c : undefined;
+ }
+ return {
+ metaVersion: '1',
+ name: schemaMeta.name,
+ version: schemaMeta.version,
+ authors: schemaMeta.authors,
+ copyrightInformation: schemaMeta.copyrightInformation,
+ contactInformation: schemaMeta.contactInformation,
+ references: schemaMeta.references,
+ thirdPartyLicenses: schemaMeta.thirdPartyLicenses,
+ thumbnailImage,
+ licenseUrl: schemaMeta.licenseUrl,
+ avatarPermission: schemaMeta.avatarPermission,
+ allowExcessivelyViolentUsage: schemaMeta.allowExcessivelyViolentUsage,
+ allowExcessivelySexualUsage: schemaMeta.allowExcessivelySexualUsage,
+ commercialUsage: schemaMeta.commercialUsage,
+ allowPoliticalOrReligiousUsage: schemaMeta.allowPoliticalOrReligiousUsage,
+ allowAntisocialOrHateUsage: schemaMeta.allowAntisocialOrHateUsage,
+ creditNotation: schemaMeta.creditNotation,
+ allowRedistribution: schemaMeta.allowRedistribution,
+ modification: schemaMeta.modification,
+ otherLicenseUrl: schemaMeta.otherLicenseUrl,
+ };
+ });
+ }
+ _v0Import(gltf) {
+ var _a;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use vrm
+ const vrmExt = (_a = json.extensions) === null || _a === void 0 ? void 0 : _a.VRM;
+ if (!vrmExt) {
+ return null;
+ }
+ const schemaMeta = vrmExt.meta;
+ if (!schemaMeta) {
+ return null;
+ }
+ // throw an error if acceptV0Meta is false
+ if (!this.acceptV0Meta) {
+ throw new Error('VRMMetaLoaderPlugin: Attempted to load VRM0.0 meta but acceptV0Meta is false');
+ }
+ // load thumbnail texture
+ let texture;
+ if (this.needThumbnailImage && schemaMeta.texture != null && schemaMeta.texture !== -1) {
+ texture = yield this.parser.getDependency('texture', schemaMeta.texture);
+ }
+ return {
+ metaVersion: '0',
+ allowedUserName: schemaMeta.allowedUserName,
+ author: schemaMeta.author,
+ commercialUssageName: schemaMeta.commercialUssageName,
+ contactInformation: schemaMeta.contactInformation,
+ licenseName: schemaMeta.licenseName,
+ otherLicenseUrl: schemaMeta.otherLicenseUrl,
+ otherPermissionUrl: schemaMeta.otherPermissionUrl,
+ reference: schemaMeta.reference,
+ sexualUssageName: schemaMeta.sexualUssageName,
+ texture: texture !== null && texture !== void 0 ? texture : undefined,
+ title: schemaMeta.title,
+ version: schemaMeta.version,
+ violentUssageName: schemaMeta.violentUssageName,
+ };
+ });
+ }
+ _extractGLTFImage(index) {
+ var _a;
+ return __awaiter$6(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ const source = (_a = json.images) === null || _a === void 0 ? void 0 : _a[index];
+ if (source == null) {
+ console.warn(`VRMMetaLoaderPlugin: Attempt to use images[${index}] of glTF as a thumbnail but the image doesn't exist`);
+ return null;
+ }
+ // Ref: https://github.com/mrdoob/three.js/blob/r124/examples/jsm/loaders/GLTFLoader.js#L2467
+ // `source.uri` might be a reference to a file
+ let sourceURI = source.uri;
+ // Load the binary as a blob
+ if (source.bufferView != null) {
+ const bufferView = yield this.parser.getDependency('bufferView', source.bufferView);
+ const blob = new Blob([bufferView], { type: source.mimeType });
+ sourceURI = URL.createObjectURL(blob);
+ }
+ if (sourceURI == null) {
+ console.warn(`VRMMetaLoaderPlugin: Attempt to use images[${index}] of glTF as a thumbnail but the image couldn't load properly`);
+ return null;
+ }
+ const loader = new THREE.ImageLoader();
+ return yield loader.loadAsync(resolveURL(sourceURI, this.parser.options.path)).catch((error) => {
+ console.error(error);
+ console.warn('VRMMetaLoaderPlugin: Failed to load a thumbnail image');
+ return null;
+ });
+ });
+ }
+}
+
+/**
+ * A class that represents a single VRM model.
+ * This class only includes core spec of the VRM (`VRMC_vrm`).
+ */
+class VRMCore {
+ /**
+ * Create a new VRM instance.
+ *
+ * @param params [[VRMParameters]] that represents components of the VRM
+ */
+ constructor(params) {
+ this.scene = params.scene;
+ this.meta = params.meta;
+ this.humanoid = params.humanoid;
+ this.expressionManager = params.expressionManager;
+ this.firstPerson = params.firstPerson;
+ this.lookAt = params.lookAt;
+ }
+ /**
+ * **You need to call this on your update loop.**
+ *
+ * This function updates every VRM components.
+ *
+ * @param delta deltaTime
+ */
+ update(delta) {
+ this.humanoid.update();
+ if (this.lookAt) {
+ this.lookAt.update(delta);
+ }
+ if (this.expressionManager) {
+ this.expressionManager.update();
+ }
+ }
+}
+
+class VRMCoreLoaderPlugin {
+ get name() {
+ // We should use the extension name instead but we have multiple plugins for an extension...
+ return 'VRMC_vrm';
+ }
+ constructor(parser, options) {
+ var _a, _b, _c, _d, _e;
+ this.parser = parser;
+ const helperRoot = options === null || options === void 0 ? void 0 : options.helperRoot;
+ const autoUpdateHumanBones = options === null || options === void 0 ? void 0 : options.autoUpdateHumanBones;
+ this.expressionPlugin = (_a = options === null || options === void 0 ? void 0 : options.expressionPlugin) !== null && _a !== void 0 ? _a : new VRMExpressionLoaderPlugin(parser);
+ this.firstPersonPlugin = (_b = options === null || options === void 0 ? void 0 : options.firstPersonPlugin) !== null && _b !== void 0 ? _b : new VRMFirstPersonLoaderPlugin(parser);
+ this.humanoidPlugin =
+ (_c = options === null || options === void 0 ? void 0 : options.humanoidPlugin) !== null && _c !== void 0 ? _c : new VRMHumanoidLoaderPlugin(parser, { helperRoot, autoUpdateHumanBones });
+ this.lookAtPlugin = (_d = options === null || options === void 0 ? void 0 : options.lookAtPlugin) !== null && _d !== void 0 ? _d : new VRMLookAtLoaderPlugin(parser, { helperRoot });
+ this.metaPlugin = (_e = options === null || options === void 0 ? void 0 : options.metaPlugin) !== null && _e !== void 0 ? _e : new VRMMetaLoaderPlugin(parser);
+ }
+ afterRoot(gltf) {
+ return __awaiter$6(this, void 0, void 0, function* () {
+ yield this.metaPlugin.afterRoot(gltf);
+ yield this.humanoidPlugin.afterRoot(gltf);
+ yield this.expressionPlugin.afterRoot(gltf);
+ yield this.lookAtPlugin.afterRoot(gltf);
+ yield this.firstPersonPlugin.afterRoot(gltf);
+ const meta = gltf.userData.vrmMeta;
+ const humanoid = gltf.userData.vrmHumanoid;
+ // meta and humanoid are required to be a VRM.
+ // Don't create VRM if they are null
+ if (meta && humanoid) {
+ const vrmCore = new VRMCore({
+ scene: gltf.scene,
+ expressionManager: gltf.userData.vrmExpressionManager,
+ firstPerson: gltf.userData.vrmFirstPerson,
+ humanoid,
+ lookAt: gltf.userData.vrmLookAt,
+ meta,
+ });
+ gltf.userData.vrmCore = vrmCore;
+ }
+ });
+ }
+}
+
+/**
+ * A class that represents a single VRM model.
+ */
+class VRM extends VRMCore {
+ /**
+ * Create a new VRM instance.
+ *
+ * @param params [[VRMParameters]] that represents components of the VRM
+ */
+ constructor(params) {
+ super(params);
+ this.materials = params.materials;
+ this.springBoneManager = params.springBoneManager;
+ this.nodeConstraintManager = params.nodeConstraintManager;
+ }
+ /**
+ * **You need to call this on your update loop.**
+ *
+ * This function updates every VRM components.
+ *
+ * @param delta deltaTime
+ */
+ update(delta) {
+ super.update(delta);
+ if (this.nodeConstraintManager) {
+ this.nodeConstraintManager.update();
+ }
+ if (this.springBoneManager) {
+ this.springBoneManager.update(delta);
+ }
+ if (this.materials) {
+ this.materials.forEach((material) => {
+ if (material.update) {
+ material.update(delta);
+ }
+ });
+ }
+ }
+}
+
+/******************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+function __awaiter$5(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+}
+
+/*!
+ * @pixiv/three-vrm-materials-mtoon v2.0.6
+ * MToon (toon material) module for @pixiv/three-vrm
+ *
+ * Copyright (c) 2020-2023 pixiv Inc.
+ * @pixiv/three-vrm-materials-mtoon is distributed under MIT License
+ * https://github.com/pixiv/three-vrm/blob/release/LICENSE
+ */
+
+/******************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+function __awaiter$4(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+}
+
+var vertexShader = "// #define PHONG\n\nvarying vec3 vViewPosition;\n\n#ifndef FLAT_SHADED\n varying vec3 vNormal;\n#endif\n\n#include \n\n// #include \n#ifdef MTOON_USE_UV\n varying vec2 vUv;\n\n // COMPAT: pre-r151 uses a common uvTransform\n #if THREE_VRM_THREE_REVISION < 151\n uniform mat3 uvTransform;\n #endif\n#endif\n\n// #include \n// COMAPT: pre-r151 uses uv2 for lightMap and aoMap\n#if THREE_VRM_THREE_REVISION < 151\n #if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n attribute vec2 uv2;\n varying vec2 vUv2;\n uniform mat3 uv2Transform;\n #endif\n#endif\n\n// #include \n// #include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n\n#ifdef USE_OUTLINEWIDTHMULTIPLYTEXTURE\n uniform sampler2D outlineWidthMultiplyTexture;\n uniform mat3 outlineWidthMultiplyTextureUvTransform;\n#endif\n\nuniform float outlineWidthFactor;\n\nvoid main() {\n\n // #include \n #ifdef MTOON_USE_UV\n // COMPAT: pre-r151 uses a common uvTransform\n #if THREE_VRM_THREE_REVISION >= 151\n vUv = uv;\n #else\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n #endif\n #endif\n\n // #include \n // COMAPT: pre-r151 uses uv2 for lightMap and aoMap\n #if THREE_VRM_THREE_REVISION < 151\n #if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n vUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n #endif\n #endif\n\n #include \n\n #include \n #include \n #include \n #include \n\n // we need this to compute the outline properly\n objectNormal = normalize( objectNormal );\n\n #include \n\n #ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED\n vNormal = normalize( transformedNormal );\n #endif\n\n #include \n\n #include \n #include \n // #include \n #include \n #include \n #include \n\n vViewPosition = - mvPosition.xyz;\n\n float outlineTex = 1.0;\n\n #ifdef OUTLINE\n #ifdef USE_OUTLINEWIDTHMULTIPLYTEXTURE\n vec2 outlineWidthMultiplyTextureUv = ( outlineWidthMultiplyTextureUvTransform * vec3( vUv, 1 ) ).xy;\n outlineTex = texture2D( outlineWidthMultiplyTexture, outlineWidthMultiplyTextureUv ).g;\n #endif\n\n #ifdef OUTLINE_WIDTH_WORLD\n float worldNormalLength = length( transformedNormal );\n vec3 outlineOffset = outlineWidthFactor * outlineTex * worldNormalLength * objectNormal;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( outlineOffset + transformed, 1.0 );\n #endif\n\n #ifdef OUTLINE_WIDTH_SCREEN\n vec3 clipNormal = ( projectionMatrix * modelViewMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n vec2 projectedNormal = normalize( clipNormal.xy );\n projectedNormal.x *= projectionMatrix[ 0 ].x / projectionMatrix[ 1 ].y;\n gl_Position.xy += 2.0 * outlineWidthFactor * outlineTex * projectedNormal.xy;\n #endif\n\n gl_Position.z += 1E-6 * gl_Position.w; // anti-artifact magic\n #endif\n\n #include \n // #include \n #include \n #include \n\n}";
+
+var fragmentShader = "// #define PHONG\n\nuniform vec3 litFactor;\n\nuniform float opacity;\n\nuniform vec3 shadeColorFactor;\n#ifdef USE_SHADEMULTIPLYTEXTURE\n uniform sampler2D shadeMultiplyTexture;\n uniform mat3 shadeMultiplyTextureUvTransform;\n#endif\n\nuniform float shadingShiftFactor;\nuniform float shadingToonyFactor;\n\n#ifdef USE_SHADINGSHIFTTEXTURE\n uniform sampler2D shadingShiftTexture;\n uniform mat3 shadingShiftTextureUvTransform;\n uniform float shadingShiftTextureScale;\n#endif\n\nuniform float giEqualizationFactor;\n\nuniform vec3 parametricRimColorFactor;\n#ifdef USE_RIMMULTIPLYTEXTURE\n uniform sampler2D rimMultiplyTexture;\n uniform mat3 rimMultiplyTextureUvTransform;\n#endif\nuniform float rimLightingMixFactor;\nuniform float parametricRimFresnelPowerFactor;\nuniform float parametricRimLiftFactor;\n\n#ifdef USE_MATCAPTEXTURE\n uniform vec3 matcapFactor;\n uniform sampler2D matcapTexture;\n uniform mat3 matcapTextureUvTransform;\n#endif\n\nuniform vec3 emissive;\nuniform float emissiveIntensity;\n\nuniform vec3 outlineColorFactor;\nuniform float outlineLightingMixFactor;\n\n#ifdef USE_UVANIMATIONMASKTEXTURE\n uniform sampler2D uvAnimationMaskTexture;\n uniform mat3 uvAnimationMaskTextureUvTransform;\n#endif\n\nuniform float uvAnimationScrollXOffset;\nuniform float uvAnimationScrollYOffset;\nuniform float uvAnimationRotationPhase;\n\n#include \n#include \n#include \n#include \n\n// #include \n#if ( defined( MTOON_USE_UV ) && !defined( MTOON_UVS_VERTEX_ONLY ) )\n varying vec2 vUv;\n#endif\n\n// #include \n// COMAPT: pre-r151 uses uv2 for lightMap and aoMap\n#if THREE_VRM_THREE_REVISION < 151\n #if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n varying vec2 vUv2;\n #endif\n#endif\n\n#include \n\n#ifdef USE_MAP\n uniform mat3 mapUvTransform;\n#endif\n\n// #include \n\n#if THREE_VRM_THREE_REVISION >= 132\n #include \n#endif\n\n#include \n// #include \n#include \n\n#ifdef USE_EMISSIVEMAP\n uniform mat3 emissiveMapUvTransform;\n#endif\n\n// #include \n// #include \n// #include \n#include \n\n// #include \n// COMPAT: pre-r151 doesn't have BRDF_Lambert in \n#if THREE_VRM_THREE_REVISION < 151\n vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n return RECIPROCAL_PI * diffuseColor;\n }\n#endif\n\n#include \n\n#if THREE_VRM_THREE_REVISION >= 132\n #include \n#endif\n\n// #include \nvarying vec3 vViewPosition;\n\n#if THREE_VRM_THREE_REVISION < 132\n #ifndef FLAT_SHADED\n varying vec3 vNormal;\n #endif\n#endif\n\nstruct MToonMaterial {\n vec3 diffuseColor;\n vec3 shadeColor;\n float shadingShift;\n};\n\nfloat linearstep( float a, float b, float t ) {\n return clamp( ( t - a ) / ( b - a ), 0.0, 1.0 );\n}\n\n/**\n * Convert NdotL into toon shading factor using shadingShift and shadingToony\n */\nfloat getShading(\n const in float dotNL,\n const in float shadow,\n const in float shadingShift\n) {\n float shading = dotNL;\n shading = shading + shadingShift;\n shading = linearstep( -1.0 + shadingToonyFactor, 1.0 - shadingToonyFactor, shading );\n shading *= shadow;\n return shading;\n}\n\n/**\n * Mix diffuseColor and shadeColor using shading factor and light color\n */\nvec3 getDiffuse(\n const in MToonMaterial material,\n const in float shading,\n in vec3 lightColor\n) {\n #ifdef DEBUG_LITSHADERATE\n return vec3( BRDF_Lambert( shading * lightColor ) );\n #endif\n\n #if THREE_VRM_THREE_REVISION < 132\n #ifndef PHYSICALLY_CORRECT_LIGHTS\n lightColor *= PI;\n #endif\n #endif\n\n vec3 col = lightColor * BRDF_Lambert( mix( material.shadeColor, material.diffuseColor, shading ) );\n\n // The \"comment out if you want to PBR absolutely\" line\n #ifdef V0_COMPAT_SHADE\n col = min( col, material.diffuseColor );\n #endif\n\n return col;\n}\n\n#if THREE_VRM_THREE_REVISION >= 157\n void RE_Direct_MToon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in MToonMaterial material, const in float shadow, inout ReflectedLight reflectedLight ) {\n float dotNL = clamp( dot( geometryNormal, directLight.direction ), -1.0, 1.0 );\n vec3 irradiance = directLight.color;\n\n #if THREE_VRM_THREE_REVISION < 132\n #ifndef PHYSICALLY_CORRECT_LIGHTS\n irradiance *= PI;\n #endif\n #endif\n\n // directSpecular will be used for rim lighting, not an actual specular\n reflectedLight.directSpecular += irradiance;\n\n irradiance *= dotNL;\n\n float shading = getShading( dotNL, shadow, material.shadingShift );\n\n // toon shaded diffuse\n reflectedLight.directDiffuse += getDiffuse( material, shading, directLight.color );\n }\n\n void RE_IndirectDiffuse_MToon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in MToonMaterial material, inout ReflectedLight reflectedLight ) {\n // indirect diffuse will use diffuseColor, no shadeColor involved\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\n // directSpecular will be used for rim lighting, not an actual specular\n reflectedLight.directSpecular += irradiance;\n }\n#else\n void RE_Direct_MToon( const in IncidentLight directLight, const in GeometricContext geometry, const in MToonMaterial material, const in float shadow, inout ReflectedLight reflectedLight ) {\n float dotNL = clamp( dot( geometry.normal, directLight.direction ), -1.0, 1.0 );\n vec3 irradiance = directLight.color;\n\n #if THREE_VRM_THREE_REVISION < 132\n #ifndef PHYSICALLY_CORRECT_LIGHTS\n irradiance *= PI;\n #endif\n #endif\n\n // directSpecular will be used for rim lighting, not an actual specular\n reflectedLight.directSpecular += irradiance;\n\n irradiance *= dotNL;\n\n float shading = getShading( dotNL, shadow, material.shadingShift );\n\n // toon shaded diffuse\n reflectedLight.directDiffuse += getDiffuse( material, shading, directLight.color );\n }\n\n void RE_IndirectDiffuse_MToon( const in vec3 irradiance, const in GeometricContext geometry, const in MToonMaterial material, inout ReflectedLight reflectedLight ) {\n // indirect diffuse will use diffuseColor, no shadeColor involved\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\n // directSpecular will be used for rim lighting, not an actual specular\n reflectedLight.directSpecular += irradiance;\n }\n#endif\n\n#define RE_Direct RE_Direct_MToon\n#define RE_IndirectDiffuse RE_IndirectDiffuse_MToon\n#define Material_LightProbeLOD( material ) (0)\n\n#include \n// #include \n\n// #include \n#ifdef USE_NORMALMAP\n\n uniform sampler2D normalMap;\n uniform mat3 normalMapUvTransform;\n uniform vec2 normalScale;\n\n#endif\n\n// COMPAT: USE_NORMALMAP_OBJECTSPACE used to be OBJECTSPACE_NORMALMAP in pre-r151\n#if defined( USE_NORMALMAP_OBJECTSPACE ) || defined( OBJECTSPACE_NORMALMAP )\n\n uniform mat3 normalMatrix;\n\n#endif\n\n// COMPAT: USE_NORMALMAP_TANGENTSPACE used to be TANGENTSPACE_NORMALMAP in pre-r151\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( TANGENTSPACE_NORMALMAP ) )\n\n // Per-Pixel Tangent Space Normal Mapping\n // http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html\n\n // three-vrm specific change: it requires `uv` as an input in order to support uv scrolls\n\n // Temporary compat against shader change @ Three.js r126, r151\n #if THREE_VRM_THREE_REVISION >= 151\n\n mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n\n vec3 q0 = dFdx( eye_pos.xyz );\n vec3 q1 = dFdy( eye_pos.xyz );\n vec2 st0 = dFdx( uv.st );\n vec2 st1 = dFdy( uv.st );\n\n vec3 N = surf_norm;\n\n vec3 q1perp = cross( q1, N );\n vec3 q0perp = cross( N, q0 );\n\n vec3 T = q1perp * st0.x + q0perp * st1.x;\n vec3 B = q1perp * st0.y + q0perp * st1.y;\n\n float det = max( dot( T, T ), dot( B, B ) );\n float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n\n return mat3( T * scale, B * scale, N );\n\n }\n\n #elif THREE_VRM_THREE_REVISION >= 126\n\n vec3 perturbNormal2Arb( vec2 uv, vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\n\n vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n vec2 st0 = dFdx( uv.st );\n vec2 st1 = dFdy( uv.st );\n\n vec3 N = normalize( surf_norm );\n\n vec3 q1perp = cross( q1, N );\n vec3 q0perp = cross( N, q0 );\n\n vec3 T = q1perp * st0.x + q0perp * st1.x;\n vec3 B = q1perp * st0.y + q0perp * st1.y;\n\n // three-vrm specific change: Workaround for the issue that happens when delta of uv = 0.0\n // TODO: Is this still required? Or shall I make a PR about it?\n if ( length( T ) == 0.0 || length( B ) == 0.0 ) {\n return surf_norm;\n }\n\n float det = max( dot( T, T ), dot( B, B ) );\n float scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\n\n return normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\n\n }\n\n #else\n\n vec3 perturbNormal2Arb( vec2 uv, vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\n\n // Workaround for Adreno 3XX dFd*( vec3 ) bug. See #9988\n\n vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n vec2 st0 = dFdx( uv.st );\n vec2 st1 = dFdy( uv.st );\n\n float scale = sign( st1.t * st0.s - st0.t * st1.s ); // we do not care about the magnitude\n\n vec3 S = ( q0 * st1.t - q1 * st0.t ) * scale;\n vec3 T = ( - q0 * st1.s + q1 * st0.s ) * scale;\n\n // three-vrm specific change: Workaround for the issue that happens when delta of uv = 0.0\n // TODO: Is this still required? Or shall I make a PR about it?\n\n if ( length( S ) == 0.0 || length( T ) == 0.0 ) {\n return surf_norm;\n }\n\n S = normalize( S );\n T = normalize( T );\n vec3 N = normalize( surf_norm );\n\n #ifdef DOUBLE_SIDED\n\n // Workaround for Adreno GPUs gl_FrontFacing bug. See #15850 and #10331\n\n bool frontFacing = dot( cross( S, T ), N ) > 0.0;\n\n mapN.xy *= ( float( frontFacing ) * 2.0 - 1.0 );\n\n #else\n\n mapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\n #endif\n\n mat3 tsn = mat3( S, T, N );\n return normalize( tsn * mapN );\n\n }\n\n #endif\n\n#endif\n\n// #include \n#include \n#include \n\n// == post correction ==========================================================\nvoid postCorrection() {\n #include \n #include \n #include \n #include \n #include \n}\n\n// == main procedure ===========================================================\nvoid main() {\n #include \n\n vec2 uv = vec2(0.5, 0.5);\n\n #if ( defined( MTOON_USE_UV ) && !defined( MTOON_UVS_VERTEX_ONLY ) )\n uv = vUv;\n\n float uvAnimMask = 1.0;\n #ifdef USE_UVANIMATIONMASKTEXTURE\n vec2 uvAnimationMaskTextureUv = ( uvAnimationMaskTextureUvTransform * vec3( uv, 1 ) ).xy;\n uvAnimMask = texture2D( uvAnimationMaskTexture, uvAnimationMaskTextureUv ).b;\n #endif\n\n uv = uv + vec2( uvAnimationScrollXOffset, uvAnimationScrollYOffset ) * uvAnimMask;\n float uvRotCos = cos( uvAnimationRotationPhase * uvAnimMask );\n float uvRotSin = sin( uvAnimationRotationPhase * uvAnimMask );\n uv = mat2( uvRotCos, -uvRotSin, uvRotSin, uvRotCos ) * ( uv - 0.5 ) + 0.5;\n #endif\n\n #ifdef DEBUG_UV\n gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n #if ( defined( MTOON_USE_UV ) && !defined( MTOON_UVS_VERTEX_ONLY ) )\n gl_FragColor = vec4( uv, 0.0, 1.0 );\n #endif\n return;\n #endif\n\n vec4 diffuseColor = vec4( litFactor, opacity );\n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive * emissiveIntensity;\n\n #include \n\n // #include \n #ifdef USE_MAP\n vec2 mapUv = ( mapUvTransform * vec3( uv, 1 ) ).xy;\n vec4 sampledDiffuseColor = texture2D( map, mapUv );\n #ifdef DECODE_VIDEO_TEXTURE\n sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n #endif\n diffuseColor *= sampledDiffuseColor;\n #endif\n\n // #include \n #if ( defined( USE_COLOR ) && !defined( IGNORE_VERTEX_COLOR ) )\n diffuseColor.rgb *= vColor;\n #endif\n\n // #include \n\n #include \n\n // #include \n\n // #include \n float faceDirection = gl_FrontFacing ? 1.0 : -1.0;\n\n #ifdef FLAT_SHADED\n\n vec3 fdx = dFdx( vViewPosition );\n vec3 fdy = dFdy( vViewPosition );\n vec3 normal = normalize( cross( fdx, fdy ) );\n\n #else\n\n vec3 normal = normalize( vNormal );\n\n #ifdef DOUBLE_SIDED\n\n normal *= faceDirection;\n\n #endif\n\n #endif\n\n #ifdef USE_NORMALMAP\n\n vec2 normalMapUv = ( normalMapUvTransform * vec3( uv, 1 ) ).xy;\n\n #endif\n\n #ifdef USE_NORMALMAP_TANGENTSPACE\n\n #ifdef USE_TANGENT\n\n mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\n #else\n\n mat3 tbn = getTangentFrame( - vViewPosition, normal, normalMapUv );\n\n #endif\n\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\n tbn[0] *= faceDirection;\n tbn[1] *= faceDirection;\n\n #endif\n\n #endif\n\n #ifdef USE_CLEARCOAT_NORMALMAP\n\n #ifdef USE_TANGENT\n\n mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\n #else\n\n mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n\n #endif\n\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\n tbn2[0] *= faceDirection;\n tbn2[1] *= faceDirection;\n\n #endif\n\n #endif\n\n // non perturbed normal for clearcoat among others\n\n vec3 nonPerturbedNormal = normal;\n\n #ifdef OUTLINE\n normal *= -1.0;\n #endif\n\n // #include \n\n // COMPAT: USE_NORMALMAP_OBJECTSPACE used to be OBJECTSPACE_NORMALMAP in pre-r151\n #if defined( USE_NORMALMAP_OBJECTSPACE ) || defined( OBJECTSPACE_NORMALMAP )\n\n normal = texture2D( normalMap, normalMapUv ).xyz * 2.0 - 1.0; // overrides both flatShading and attribute normals\n\n #ifdef FLIP_SIDED\n\n normal = - normal;\n\n #endif\n\n #ifdef DOUBLE_SIDED\n\n // Temporary compat against shader change @ Three.js r126\n // See: #21205, #21307, #21299\n #if THREE_VRM_THREE_REVISION >= 126\n\n normal = normal * faceDirection;\n\n #else\n\n normal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\n #endif\n\n #endif\n\n normal = normalize( normalMatrix * normal );\n\n // COMPAT: USE_NORMALMAP_TANGENTSPACE used to be TANGENTSPACE_NORMALMAP in pre-r151\n #elif defined( USE_NORMALMAP_TANGENTSPACE ) || defined( TANGENTSPACE_NORMALMAP )\n\n vec3 mapN = texture2D( normalMap, normalMapUv ).xyz * 2.0 - 1.0;\n mapN.xy *= normalScale;\n\n // COMPAT: pre-r151\n #if THREE_VRM_THREE_REVISION >= 151 || defined( USE_TANGENT )\n\n normal = normalize( tbn * mapN );\n\n #else\n\n // pre-r126\n #if THREE_VRM_THREE_REVISION >= 126\n\n normal = perturbNormal2Arb( uv, -vViewPosition, normal, mapN, faceDirection );\n\n #else\n\n normal = perturbNormal2Arb( uv, -vViewPosition, normal, mapN );\n\n #endif\n\n #endif\n\n #endif\n\n // #include \n #ifdef USE_EMISSIVEMAP\n vec2 emissiveMapUv = ( emissiveMapUvTransform * vec3( uv, 1 ) ).xy;\n totalEmissiveRadiance *= texture2D( emissiveMap, emissiveMapUv ).rgb;\n #endif\n\n #ifdef DEBUG_DEPTH\n const float bitSh = 256.0; // 8位 \n float depth = gl_FragCoord.z / gl_FragCoord.w / 2.0;\n float r = fract(depth); // 获取第一个8位 \n float g = fract(depth * bitSh); // 获取第二个8位 \n float b = fract(depth * bitSh * bitSh); // 获取第三个8位 \n gl_FragColor = vec4( r, g, b , 1.0 ); return; \n #endif\n #ifdef DEBUG_NORMAL\n gl_FragColor = vec4( 0.5 + 0.5 * normal, 1.0 );\n return;\n #endif\n\n // -- MToon: lighting --------------------------------------------------------\n // accumulation\n // #include \n MToonMaterial material;\n\n material.diffuseColor = diffuseColor.rgb;\n\n material.shadeColor = shadeColorFactor;\n #ifdef USE_SHADEMULTIPLYTEXTURE\n vec2 shadeMultiplyTextureUv = ( shadeMultiplyTextureUvTransform * vec3( uv, 1 ) ).xy;\n material.shadeColor *= texture2D( shadeMultiplyTexture, shadeMultiplyTextureUv ).rgb;\n #endif\n\n #if ( defined( USE_COLOR ) && !defined( IGNORE_VERTEX_COLOR ) )\n material.shadeColor.rgb *= vColor;\n #endif\n\n material.shadingShift = shadingShiftFactor;\n #ifdef USE_SHADINGSHIFTTEXTURE\n vec2 shadingShiftTextureUv = ( shadingShiftTextureUvTransform * vec3( uv, 1 ) ).xy;\n material.shadingShift += texture2D( shadingShiftTexture, shadingShiftTextureUv ).r * shadingShiftTextureScale;\n #endif\n\n // #include \n\n // MToon Specific changes:\n // Since we want to take shadows into account of shading instead of irradiance,\n // we had to modify the codes that multiplies the results of shadowmap into color of direct lights.\n\n #if THREE_VRM_THREE_REVISION >= 157\n vec3 geometryPosition = - vViewPosition;\n vec3 geometryNormal = normal;\n vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n \n vec3 geometryClearcoatNormal;\n\n #ifdef USE_CLEARCOAT\n\n geometryClearcoatNormal = clearcoatNormal;\n\n #endif\n #else\n GeometricContext geometry;\n\n geometry.position = - vViewPosition;\n geometry.normal = normal;\n geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n\n #ifdef USE_CLEARCOAT\n\n geometry.clearcoatNormal = clearcoatNormal;\n\n #endif\n #endif\n\n IncidentLight directLight;\n\n // since these variables will be used in unrolled loop, we have to define in prior\n float shadow;\n\n #if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\n PointLight pointLight;\n #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n PointLightShadow pointLightShadow;\n #endif\n\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\n pointLight = pointLights[ i ];\n\n #if THREE_VRM_THREE_REVISION >= 157\n getPointLightInfo( pointLight, geometryPosition, directLight );\n #elif THREE_VRM_THREE_REVISION >= 132\n getPointLightInfo( pointLight, geometry, directLight );\n #else\n getPointDirectLightIrradiance( pointLight, geometry, directLight );\n #endif\n\n shadow = 1.0;\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n pointLightShadow = pointLightShadows[ i ];\n shadow = all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n #endif\n\n #if THREE_VRM_THREE_REVISION >= 157\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, shadow, reflectedLight );\n #else\n RE_Direct( directLight, geometry, material, shadow, reflectedLight );\n #endif\n\n }\n #pragma unroll_loop_end\n\n #endif\n\n #if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\n SpotLight spotLight;\n #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLightShadow;\n #endif\n\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\n spotLight = spotLights[ i ];\n\n #if THREE_VRM_THREE_REVISION >= 157\n getSpotLightInfo( spotLight, geometryPosition, directLight );\n #elif THREE_VRM_THREE_REVISION >= 132\n getSpotLightInfo( spotLight, geometry, directLight );\n #else\n getSpotDirectLightIrradiance( spotLight, geometry, directLight );\n #endif\n\n shadow = 1.0;\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n spotLightShadow = spotLightShadows[ i ];\n shadow = all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n #endif\n\n #if THREE_VRM_THREE_REVISION >= 157\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, shadow, reflectedLight );\n #else\n RE_Direct( directLight, geometry, material, shadow, reflectedLight );\n #endif\n\n }\n #pragma unroll_loop_end\n\n #endif\n\n #if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\n DirectionalLight directionalLight;\n #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLightShadow;\n #endif\n\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\n directionalLight = directionalLights[ i ];\n\n #if THREE_VRM_THREE_REVISION >= 157\n getDirectionalLightInfo( directionalLight, directLight );\n #elif THREE_VRM_THREE_REVISION >= 132\n getDirectionalLightInfo( directionalLight, geometry, directLight );\n #else\n getDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n #endif\n\n shadow = 1.0;\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n directionalLightShadow = directionalLightShadows[ i ];\n shadow = all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n #endif\n\n #if THREE_VRM_THREE_REVISION >= 157\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, shadow, reflectedLight );\n #else\n RE_Direct( directLight, geometry, material, shadow, reflectedLight );\n #endif\n\n }\n #pragma unroll_loop_end\n\n #endif\n\n // #if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\n // RectAreaLight rectAreaLight;\n\n // #pragma unroll_loop_start\n // for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\n // rectAreaLight = rectAreaLights[ i ];\n // RE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\n // }\n // #pragma unroll_loop_end\n\n // #endif\n\n #if defined( RE_IndirectDiffuse )\n\n vec3 iblIrradiance = vec3( 0.0 );\n\n vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\n #if THREE_VRM_THREE_REVISION >= 157\n #if defined( USE_LIGHT_PROBES )\n irradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n #endif\n #elif THREE_VRM_THREE_REVISION >= 133\n irradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\n #else\n irradiance += getLightProbeIrradiance( lightProbe, geometry );\n #endif\n\n #if ( NUM_HEMI_LIGHTS > 0 )\n\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\n #if THREE_VRM_THREE_REVISION >= 157\n irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n #elif THREE_VRM_THREE_REVISION >= 133\n irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n #else\n irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n #endif\n\n }\n #pragma unroll_loop_end\n\n #endif\n\n #endif\n\n // #if defined( RE_IndirectSpecular )\n\n // vec3 radiance = vec3( 0.0 );\n // vec3 clearcoatRadiance = vec3( 0.0 );\n\n // #endif\n\n #include \n #include \n\n // modulation\n #include \n\n vec3 col = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\n #ifdef DEBUG_LITSHADERATE\n gl_FragColor = vec4( col, diffuseColor.a );\n postCorrection();\n return;\n #endif\n\n // -- MToon: rim lighting -----------------------------------------\n vec3 viewDir = normalize( vViewPosition );\n\n #ifndef PHYSICALLY_CORRECT_LIGHTS\n reflectedLight.directSpecular /= PI;\n #endif\n vec3 rimMix = mix( vec3( 1.0 ), reflectedLight.directSpecular, 1.0 );\n\n vec3 rim = parametricRimColorFactor * pow( saturate( 1.0 - dot( viewDir, normal ) + parametricRimLiftFactor ), parametricRimFresnelPowerFactor );\n\n #ifdef USE_MATCAPTEXTURE\n {\n vec3 x = normalize( vec3( viewDir.z, 0.0, -viewDir.x ) );\n vec3 y = cross( viewDir, x ); // guaranteed to be normalized\n vec2 sphereUv = 0.5 + 0.5 * vec2( dot( x, normal ), -dot( y, normal ) );\n sphereUv = ( matcapTextureUvTransform * vec3( sphereUv, 1 ) ).xy;\n vec3 matcap = texture2D( matcapTexture, sphereUv ).rgb;\n rim += matcapFactor * matcap;\n }\n #endif\n\n #ifdef USE_RIMMULTIPLYTEXTURE\n vec2 rimMultiplyTextureUv = ( rimMultiplyTextureUvTransform * vec3( uv, 1 ) ).xy;\n rim *= texture2D( rimMultiplyTexture, rimMultiplyTextureUv ).rgb;\n #endif\n\n col += rimMix * rim;\n\n // -- MToon: Emission --------------------------------------------------------\n col += totalEmissiveRadiance;\n\n // #include \n\n // -- Almost done! -----------------------------------------------------------\n #if defined( OUTLINE )\n col = outlineColorFactor.rgb * mix( vec3( 1.0 ), col, outlineLightingMixFactor );\n #endif\n\n #ifdef OPAQUE\n diffuseColor.a = 1.0;\n #endif\n\n gl_FragColor = vec4( col, diffuseColor.a );\n postCorrection();\n}\n";
+
+/* eslint-disable @typescript-eslint/naming-convention */
+/**
+ * Specifiers of debug mode of {@link MToonMaterial}.
+ *
+ * See: {@link MToonMaterial.debugMode}
+ */
+const MToonMaterialDebugMode = {
+ /**
+ * Render normally.
+ */
+ None: 'none',
+ /**
+ * Visualize normals of the surface.
+ */
+ Normal: 'normal',
+ /**
+ * Visualize lit/shade of the surface.
+ */
+ LitShadeRate: 'litShadeRate',
+ /**
+ * Visualize UV of the surface.
+ */
+ UV: 'uv',
+
+ DEPTH: 'depth',
+};
+
+/* eslint-disable @typescript-eslint/naming-convention */
+const MToonMaterialOutlineWidthMode = {
+ None: 'none',
+ WorldCoordinates: 'worldCoordinates',
+ ScreenCoordinates: 'screenCoordinates',
+};
+
+const encodingColorSpaceMap = {
+ 3000: '',
+ 3001: 'srgb',
+};
+/**
+ * A compat function to get texture color space.
+ *
+ * COMPAT: pre-r152
+ * Starting from Three.js r152, `texture.encoding` is renamed to `texture.colorSpace`.
+ * This function will handle the comapt.
+ *
+ * @param texture The texture you want to get the color space from
+ */
+function getTextureColorSpace(texture) {
+ if (parseInt(THREE.REVISION, 10) >= 152) {
+ return texture.colorSpace;
+ }
+ else {
+ return encodingColorSpaceMap[texture.encoding];
+ }
+}
+
+/* tslint:disable:member-ordering */
+/**
+ * MToon is a material specification that has various features.
+ * The spec and implementation are originally founded for Unity engine and this is a port of the material.
+ *
+ * See: https://github.com/Santarh/MToon
+ */
+class MToonMaterial extends THREE.ShaderMaterial {
+ get color() {
+ return this.uniforms.litFactor.value;
+ }
+ set color(value) {
+ this.uniforms.litFactor.value = value;
+ }
+ get map() {
+ return this.uniforms.map.value;
+ }
+ set map(value) {
+ this.uniforms.map.value = value;
+ }
+ get normalMap() {
+ return this.uniforms.normalMap.value;
+ }
+ set normalMap(value) {
+ this.uniforms.normalMap.value = value;
+ }
+ get normalScale() {
+ return this.uniforms.normalScale.value;
+ }
+ set normalScale(value) {
+ this.uniforms.normalScale.value = value;
+ }
+ get emissive() {
+ return this.uniforms.emissive.value;
+ }
+ set emissive(value) {
+ this.uniforms.emissive.value = value;
+ }
+ get emissiveIntensity() {
+ return this.uniforms.emissiveIntensity.value;
+ }
+ set emissiveIntensity(value) {
+ this.uniforms.emissiveIntensity.value = value;
+ }
+ get emissiveMap() {
+ return this.uniforms.emissiveMap.value;
+ }
+ set emissiveMap(value) {
+ this.uniforms.emissiveMap.value = value;
+ }
+ get shadeColorFactor() {
+ return this.uniforms.shadeColorFactor.value;
+ }
+ set shadeColorFactor(value) {
+ this.uniforms.shadeColorFactor.value = value;
+ }
+ get shadeMultiplyTexture() {
+ return this.uniforms.shadeMultiplyTexture.value;
+ }
+ set shadeMultiplyTexture(value) {
+ this.uniforms.shadeMultiplyTexture.value = value;
+ }
+ get shadingShiftFactor() {
+ return this.uniforms.shadingShiftFactor.value;
+ }
+ set shadingShiftFactor(value) {
+ this.uniforms.shadingShiftFactor.value = value;
+ }
+ get shadingShiftTexture() {
+ return this.uniforms.shadingShiftTexture.value;
+ }
+ set shadingShiftTexture(value) {
+ this.uniforms.shadingShiftTexture.value = value;
+ }
+ get shadingShiftTextureScale() {
+ return this.uniforms.shadingShiftTextureScale.value;
+ }
+ set shadingShiftTextureScale(value) {
+ this.uniforms.shadingShiftTextureScale.value = value;
+ }
+ get shadingToonyFactor() {
+ return this.uniforms.shadingToonyFactor.value;
+ }
+ set shadingToonyFactor(value) {
+ this.uniforms.shadingToonyFactor.value = value;
+ }
+ get giEqualizationFactor() {
+ return this.uniforms.giEqualizationFactor.value;
+ }
+ set giEqualizationFactor(value) {
+ this.uniforms.giEqualizationFactor.value = value;
+ }
+ get matcapFactor() {
+ return this.uniforms.matcapFactor.value;
+ }
+ set matcapFactor(value) {
+ this.uniforms.matcapFactor.value = value;
+ }
+ get matcapTexture() {
+ return this.uniforms.matcapTexture.value;
+ }
+ set matcapTexture(value) {
+ this.uniforms.matcapTexture.value = value;
+ }
+ get parametricRimColorFactor() {
+ return this.uniforms.parametricRimColorFactor.value;
+ }
+ set parametricRimColorFactor(value) {
+ this.uniforms.parametricRimColorFactor.value = value;
+ }
+ get rimMultiplyTexture() {
+ return this.uniforms.rimMultiplyTexture.value;
+ }
+ set rimMultiplyTexture(value) {
+ this.uniforms.rimMultiplyTexture.value = value;
+ }
+ get rimLightingMixFactor() {
+ return this.uniforms.rimLightingMixFactor.value;
+ }
+ set rimLightingMixFactor(value) {
+ this.uniforms.rimLightingMixFactor.value = value;
+ }
+ get parametricRimFresnelPowerFactor() {
+ return this.uniforms.parametricRimFresnelPowerFactor.value;
+ }
+ set parametricRimFresnelPowerFactor(value) {
+ this.uniforms.parametricRimFresnelPowerFactor.value = value;
+ }
+ get parametricRimLiftFactor() {
+ return this.uniforms.parametricRimLiftFactor.value;
+ }
+ set parametricRimLiftFactor(value) {
+ this.uniforms.parametricRimLiftFactor.value = value;
+ }
+ get outlineWidthMultiplyTexture() {
+ return this.uniforms.outlineWidthMultiplyTexture.value;
+ }
+ set outlineWidthMultiplyTexture(value) {
+ this.uniforms.outlineWidthMultiplyTexture.value = value;
+ }
+ get outlineWidthFactor() {
+ return this.uniforms.outlineWidthFactor.value;
+ }
+ set outlineWidthFactor(value) {
+ this.uniforms.outlineWidthFactor.value = value;
+ }
+ get outlineColorFactor() {
+ return this.uniforms.outlineColorFactor.value;
+ }
+ set outlineColorFactor(value) {
+ this.uniforms.outlineColorFactor.value = value;
+ }
+ get outlineLightingMixFactor() {
+ return this.uniforms.outlineLightingMixFactor.value;
+ }
+ set outlineLightingMixFactor(value) {
+ this.uniforms.outlineLightingMixFactor.value = value;
+ }
+ get uvAnimationMaskTexture() {
+ return this.uniforms.uvAnimationMaskTexture.value;
+ }
+ set uvAnimationMaskTexture(value) {
+ this.uniforms.uvAnimationMaskTexture.value = value;
+ }
+ get uvAnimationScrollXOffset() {
+ return this.uniforms.uvAnimationScrollXOffset.value;
+ }
+ set uvAnimationScrollXOffset(value) {
+ this.uniforms.uvAnimationScrollXOffset.value = value;
+ }
+ get uvAnimationScrollYOffset() {
+ return this.uniforms.uvAnimationScrollYOffset.value;
+ }
+ set uvAnimationScrollYOffset(value) {
+ this.uniforms.uvAnimationScrollYOffset.value = value;
+ }
+ get uvAnimationRotationPhase() {
+ return this.uniforms.uvAnimationRotationPhase.value;
+ }
+ set uvAnimationRotationPhase(value) {
+ this.uniforms.uvAnimationRotationPhase.value = value;
+ }
+ /**
+ * When this is `true`, vertex colors will be ignored.
+ * `true` by default.
+ */
+ get ignoreVertexColor() {
+ return this._ignoreVertexColor;
+ }
+ set ignoreVertexColor(value) {
+ this._ignoreVertexColor = value;
+ this.needsUpdate = true;
+ }
+ /**
+ * There is a line of the shader called "comment out if you want to PBR absolutely" in VRM0.0 MToon.
+ * When this is true, the material enables the line to make it compatible with the legacy rendering of VRM.
+ * Usually not recommended to turn this on.
+ * `false` by default.
+ */
+ get v0CompatShade() {
+ return this._v0CompatShade;
+ }
+ /**
+ * There is a line of the shader called "comment out if you want to PBR absolutely" in VRM0.0 MToon.
+ * When this is true, the material enables the line to make it compatible with the legacy rendering of VRM.
+ * Usually not recommended to turn this on.
+ * `false` by default.
+ */
+ set v0CompatShade(v) {
+ this._v0CompatShade = v;
+ this.needsUpdate = true;
+ }
+ /**
+ * Debug mode for the material.
+ * You can visualize several components for diagnosis using debug mode.
+ *
+ * See: {@link MToonMaterialDebugMode}
+ */
+ get debugMode() {
+ return this._debugMode;
+ }
+ /**
+ * Debug mode for the material.
+ * You can visualize several components for diagnosis using debug mode.
+ *
+ * See: {@link MToonMaterialDebugMode}
+ */
+ set debugMode(m) {
+ this._debugMode = m;
+ this.needsUpdate = true;
+ }
+ get outlineWidthMode() {
+ return this._outlineWidthMode;
+ }
+ set outlineWidthMode(m) {
+ this._outlineWidthMode = m;
+ this.needsUpdate = true;
+ }
+ get isOutline() {
+ return this._isOutline;
+ }
+ set isOutline(b) {
+ this._isOutline = b;
+ this.needsUpdate = true;
+ }
+ /**
+ * Readonly boolean that indicates this is a [[MToonMaterial]].
+ */
+ get isMToonMaterial() {
+ return true;
+ }
+ constructor(parameters = {}) {
+ super({ vertexShader, fragmentShader });
+ this.uvAnimationScrollXSpeedFactor = 0.0;
+ this.uvAnimationScrollYSpeedFactor = 0.0;
+ this.uvAnimationRotationSpeedFactor = 0.0;
+ /**
+ * Whether the material is affected by fog.
+ * `true` by default.
+ */
+ this.fog = true;
+ /**
+ * Will be read in WebGLPrograms
+ *
+ * See: https://github.com/mrdoob/three.js/blob/4f5236ac3d6f41d904aa58401b40554e8fbdcb15/src/renderers/webgl/WebGLPrograms.js#L190-L191
+ */
+ this.normalMapType = THREE.TangentSpaceNormalMap;
+ /**
+ * When this is `true`, vertex colors will be ignored.
+ * `true` by default.
+ */
+ this._ignoreVertexColor = true;
+ this._v0CompatShade = false;
+ this._debugMode = MToonMaterialDebugMode.None;
+ this._outlineWidthMode = MToonMaterialOutlineWidthMode.None;
+ this._isOutline = false;
+ // override depthWrite with transparentWithZWrite
+ if (parameters.transparentWithZWrite) {
+ parameters.depthWrite = true;
+ }
+ delete parameters.transparentWithZWrite;
+ // == enabling bunch of stuff ==================================================================
+ parameters.fog = true;
+ parameters.lights = true;
+ parameters.clipping = true;
+ // COMPAT: pre-r129
+ // See: https://github.com/mrdoob/three.js/pull/21788
+ if (parseInt(THREE.REVISION, 10) < 129) {
+ parameters.skinning = parameters.skinning || false;
+ }
+ // COMPAT: pre-r131
+ // See: https://github.com/mrdoob/three.js/pull/22169
+ if (parseInt(THREE.REVISION, 10) < 131) {
+ parameters.morphTargets = parameters.morphTargets || false;
+ parameters.morphNormals = parameters.morphNormals || false;
+ }
+ // == uniforms =================================================================================
+ this.uniforms = THREE.UniformsUtils.merge([
+ THREE.UniformsLib.common,
+ THREE.UniformsLib.normalmap,
+ THREE.UniformsLib.emissivemap,
+ THREE.UniformsLib.fog,
+ THREE.UniformsLib.lights,
+ {
+ litFactor: { value: new THREE.Color(1.0, 1.0, 1.0) },
+ mapUvTransform: { value: new THREE.Matrix3() },
+ colorAlpha: { value: 1.0 },
+ normalMapUvTransform: { value: new THREE.Matrix3() },
+ shadeColorFactor: { value: new THREE.Color(0.97, 0.81, 0.86) },
+ shadeMultiplyTexture: { value: null },
+ shadeMultiplyTextureUvTransform: { value: new THREE.Matrix3() },
+ shadingShiftFactor: { value: 0.0 },
+ shadingShiftTexture: { value: null },
+ shadingShiftTextureUvTransform: { value: new THREE.Matrix3() },
+ shadingShiftTextureScale: { value: 1.0 },
+ shadingToonyFactor: { value: 0.9 },
+ giEqualizationFactor: { value: 0.9 },
+ matcapFactor: { value: new THREE.Color(0.0, 0.0, 0.0) },
+ matcapTexture: { value: null },
+ matcapTextureUvTransform: { value: new THREE.Matrix3() },
+ parametricRimColorFactor: { value: new THREE.Color(0.0, 0.0, 0.0) },
+ rimMultiplyTexture: { value: null },
+ rimMultiplyTextureUvTransform: { value: new THREE.Matrix3() },
+ rimLightingMixFactor: { value: 0.0 },
+ parametricRimFresnelPowerFactor: { value: 1.0 },
+ parametricRimLiftFactor: { value: 0.0 },
+ emissive: { value: new THREE.Color(0.0, 0.0, 0.0) },
+ emissiveIntensity: { value: 1.0 },
+ emissiveMapUvTransform: { value: new THREE.Matrix3() },
+ outlineWidthMultiplyTexture: { value: null },
+ outlineWidthMultiplyTextureUvTransform: { value: new THREE.Matrix3() },
+ outlineWidthFactor: { value: 0.5 },
+ outlineColorFactor: { value: new THREE.Color(0.0, 0.0, 0.0) },
+ outlineLightingMixFactor: { value: 1.0 },
+ uvAnimationMaskTexture: { value: null },
+ uvAnimationMaskTextureUvTransform: { value: new THREE.Matrix3() },
+ uvAnimationScrollXOffset: { value: 0.0 },
+ uvAnimationScrollYOffset: { value: 0.0 },
+ uvAnimationRotationPhase: { value: 0.0 },
+ },
+ parameters.uniforms,
+ ]);
+ // == finally compile the shader program =======================================================
+ this.setValues(parameters);
+ // == upload uniforms that need to upload ======================================================
+ this._uploadUniformsWorkaround();
+ // == update shader stuff ======================================================================
+ this.customProgramCacheKey = () => [
+ ...Object.entries(this._generateDefines()).map(([token, macro]) => `${token}:${macro}`),
+ this.matcapTexture ? `matcapTextureColorSpace:${getTextureColorSpace(this.matcapTexture)}` : '',
+ this.shadeMultiplyTexture
+ ? `shadeMultiplyTextureColorSpace:${getTextureColorSpace(this.shadeMultiplyTexture)}`
+ : '',
+ this.rimMultiplyTexture ? `rimMultiplyTextureColorSpace:${getTextureColorSpace(this.rimMultiplyTexture)}` : '',
+ ].join(',');
+ this.onBeforeCompile = (shader) => {
+ const threeRevision = parseInt(THREE.REVISION, 10);
+ const defines = Object.entries(Object.assign(Object.assign({}, this._generateDefines()), this.defines))
+ .filter(([token, macro]) => !!macro)
+ .map(([token, macro]) => `#define ${token} ${macro}`)
+ .join('\n') + '\n';
+ // -- generate shader code -------------------------------------------------------------------
+ shader.vertexShader = defines + shader.vertexShader;
+ shader.fragmentShader = defines + shader.fragmentShader;
+ // -- compat ---------------------------------------------------------------------------------
+ // COMPAT: pre-r154
+ // Three.js r154 renames the shader chunk to
+ if (threeRevision < 154) {
+ shader.fragmentShader = shader.fragmentShader.replace('#include ', '#include ');
+ }
+ // COMPAT: pre-r132
+ // Three.js r132 introduces new shader chunks and
+ if (threeRevision < 132) {
+ shader.fragmentShader = shader.fragmentShader.replace('#include ', '');
+ shader.fragmentShader = shader.fragmentShader.replace('#include ', '');
+ }
+ };
+ }
+ /**
+ * Update this material.
+ *
+ * @param delta deltaTime since last update
+ */
+ update(delta) {
+ this._uploadUniformsWorkaround();
+ this._updateUVAnimation(delta);
+ }
+ copy(source) {
+ super.copy(source);
+ // uniforms are already copied at this moment
+ // Beginning from r133, uniform textures will be cloned instead of reference
+ // See: https://github.com/mrdoob/three.js/blob/a8813be04a849bd155f7cf6f1b23d8ee2e0fb48b/examples/jsm/loaders/GLTFLoader.js#L3047
+ // See: https://github.com/mrdoob/three.js/blob/a8813be04a849bd155f7cf6f1b23d8ee2e0fb48b/src/renderers/shaders/UniformsUtils.js#L22
+ // This will leave their `.version` to be `0`
+ // and these textures won't be uploaded to GPU
+ // We are going to workaround this in here
+ // I've opened an issue for this: https://github.com/mrdoob/three.js/issues/22718
+ this.map = source.map;
+ this.normalMap = source.normalMap;
+ this.emissiveMap = source.emissiveMap;
+ this.shadeMultiplyTexture = source.shadeMultiplyTexture;
+ this.shadingShiftTexture = source.shadingShiftTexture;
+ this.matcapTexture = source.matcapTexture;
+ this.rimMultiplyTexture = source.rimMultiplyTexture;
+ this.outlineWidthMultiplyTexture = source.outlineWidthMultiplyTexture;
+ this.uvAnimationMaskTexture = source.uvAnimationMaskTexture;
+ // == copy members =============================================================================
+ this.normalMapType = source.normalMapType;
+ this.uvAnimationScrollXSpeedFactor = source.uvAnimationScrollXSpeedFactor;
+ this.uvAnimationScrollYSpeedFactor = source.uvAnimationScrollYSpeedFactor;
+ this.uvAnimationRotationSpeedFactor = source.uvAnimationRotationSpeedFactor;
+ this.ignoreVertexColor = source.ignoreVertexColor;
+ this.v0CompatShade = source.v0CompatShade;
+ this.debugMode = source.debugMode;
+ this.outlineWidthMode = source.outlineWidthMode;
+ this.isOutline = source.isOutline;
+ // == update shader stuff ======================================================================
+ this.needsUpdate = true;
+ return this;
+ }
+ /**
+ * Update UV animation state.
+ * Intended to be called via {@link update}.
+ * @param delta deltaTime
+ */
+ _updateUVAnimation(delta) {
+ this.uniforms.uvAnimationScrollXOffset.value += delta * this.uvAnimationScrollXSpeedFactor;
+ this.uniforms.uvAnimationScrollYOffset.value += delta * this.uvAnimationScrollYSpeedFactor;
+ this.uniforms.uvAnimationRotationPhase.value += delta * this.uvAnimationRotationSpeedFactor;
+ this.uniformsNeedUpdate = true;
+ }
+ /**
+ * Upload uniforms that need to upload but doesn't automatically because of reasons.
+ * Intended to be called via {@link constructor} and {@link update}.
+ */
+ _uploadUniformsWorkaround() {
+ // workaround: since opacity is defined as a property in THREE.Material
+ // and cannot be overridden as an accessor,
+ // We are going to update opacity here
+ this.uniforms.opacity.value = this.opacity;
+ // workaround: texture transforms are not updated automatically
+ this._updateTextureMatrix(this.uniforms.map, this.uniforms.mapUvTransform);
+ this._updateTextureMatrix(this.uniforms.normalMap, this.uniforms.normalMapUvTransform);
+ this._updateTextureMatrix(this.uniforms.emissiveMap, this.uniforms.emissiveMapUvTransform);
+ this._updateTextureMatrix(this.uniforms.shadeMultiplyTexture, this.uniforms.shadeMultiplyTextureUvTransform);
+ this._updateTextureMatrix(this.uniforms.shadingShiftTexture, this.uniforms.shadingShiftTextureUvTransform);
+ this._updateTextureMatrix(this.uniforms.matcapTexture, this.uniforms.matcapTextureUvTransform);
+ this._updateTextureMatrix(this.uniforms.rimMultiplyTexture, this.uniforms.rimMultiplyTextureUvTransform);
+ this._updateTextureMatrix(this.uniforms.outlineWidthMultiplyTexture, this.uniforms.outlineWidthMultiplyTextureUvTransform);
+ this._updateTextureMatrix(this.uniforms.uvAnimationMaskTexture, this.uniforms.uvAnimationMaskTextureUvTransform);
+ // COMPAT workaround: starting from r132, alphaTest becomes a uniform instead of preprocessor value
+ const threeRevision = parseInt(THREE.REVISION, 10);
+ if (threeRevision >= 132) {
+ this.uniforms.alphaTest.value = this.alphaTest;
+ }
+ this.uniformsNeedUpdate = true;
+ }
+ /**
+ * Returns a map object of preprocessor token and macro of the shader program.
+ */
+ _generateDefines() {
+ const threeRevision = parseInt(THREE.REVISION, 10);
+ const useUvInVert = this.outlineWidthMultiplyTexture !== null;
+ const useUvInFrag = this.map !== null ||
+ this.emissiveMap !== null ||
+ this.shadeMultiplyTexture !== null ||
+ this.shadingShiftTexture !== null ||
+ this.rimMultiplyTexture !== null ||
+ this.uvAnimationMaskTexture !== null;
+ return {
+ // Temporary compat against shader change @ Three.js r126
+ // See: #21205, #21307, #21299
+ THREE_VRM_THREE_REVISION: threeRevision,
+ OUTLINE: this._isOutline,
+ MTOON_USE_UV: useUvInVert || useUvInFrag,
+ MTOON_UVS_VERTEX_ONLY: useUvInVert && !useUvInFrag,
+ V0_COMPAT_SHADE: this._v0CompatShade,
+ USE_SHADEMULTIPLYTEXTURE: this.shadeMultiplyTexture !== null,
+ USE_SHADINGSHIFTTEXTURE: this.shadingShiftTexture !== null,
+ USE_MATCAPTEXTURE: this.matcapTexture !== null,
+ USE_RIMMULTIPLYTEXTURE: this.rimMultiplyTexture !== null,
+ USE_OUTLINEWIDTHMULTIPLYTEXTURE: this._isOutline && this.outlineWidthMultiplyTexture !== null,
+ USE_UVANIMATIONMASKTEXTURE: this.uvAnimationMaskTexture !== null,
+ IGNORE_VERTEX_COLOR: this._ignoreVertexColor === true,
+ DEBUG_NORMAL: this._debugMode === 'normal',
+ DEBUG_LITSHADERATE: this._debugMode === 'litShadeRate',
+ DEBUG_UV: this._debugMode === 'uv',
+ DEBUG_DEPTH: this._debugMode === 'depth',
+ OUTLINE_WIDTH_WORLD: this._isOutline && this._outlineWidthMode === MToonMaterialOutlineWidthMode.WorldCoordinates,
+ OUTLINE_WIDTH_SCREEN: this._isOutline && this._outlineWidthMode === MToonMaterialOutlineWidthMode.ScreenCoordinates,
+ };
+ }
+ _updateTextureMatrix(src, dst) {
+ if (src.value) {
+ if (src.value.matrixAutoUpdate) {
+ src.value.updateMatrix();
+ }
+ dst.value.copy(src.value.matrix);
+ }
+ }
+}
+
+const colorSpaceEncodingMap = {
+ '': 3000,
+ srgb: 3001,
+};
+/**
+ * A compat function to set texture color space.
+ *
+ * COMPAT: pre-r152
+ * Starting from Three.js r152, `texture.encoding` is renamed to `texture.colorSpace`.
+ * This function will handle the comapt.
+ *
+ * @param texture The texture you want to set the color space to
+ * @param colorSpace The color space you want to set to the texture
+ */
+function setTextureColorSpace(texture, colorSpace) {
+ if (parseInt(THREE.REVISION, 10) >= 152) {
+ texture.colorSpace = colorSpace;
+ }
+ else {
+ texture.encoding = colorSpaceEncodingMap[colorSpace];
+ }
+}
+
+/**
+ * MaterialParameters hates `undefined`. This helper automatically rejects assign of these `undefined`.
+ * It also handles asynchronous process of textures.
+ * Make sure await for {@link GLTFMToonMaterialParamsAssignHelper.pending}.
+ */
+class GLTFMToonMaterialParamsAssignHelper {
+ get pending() {
+ return Promise.all(this._pendings);
+ }
+ constructor(parser, materialParams) {
+ this._parser = parser;
+ this._materialParams = materialParams;
+ this._pendings = [];
+ }
+ assignPrimitive(key, value) {
+ if (value != null) {
+ this._materialParams[key] = value;
+ }
+ }
+ assignColor(key, value, convertSRGBToLinear) {
+ if (value != null) {
+ this._materialParams[key] = new THREE.Color().fromArray(value);
+ if (convertSRGBToLinear) {
+ this._materialParams[key].convertSRGBToLinear();
+ }
+ }
+ }
+ assignTexture(key, texture, isColorTexture) {
+ return __awaiter$4(this, void 0, void 0, function* () {
+ const promise = (() => __awaiter$4(this, void 0, void 0, function* () {
+ if (texture != null) {
+ yield this._parser.assignTexture(this._materialParams, key, texture);
+ if (isColorTexture) {
+ setTextureColorSpace(this._materialParams[key], 'srgb');
+ }
+ }
+ }))();
+ this._pendings.push(promise);
+ return promise;
+ });
+ }
+ assignTextureByIndex(key, textureIndex, isColorTexture) {
+ return __awaiter$4(this, void 0, void 0, function* () {
+ return this.assignTexture(key, textureIndex != null ? { index: textureIndex } : undefined, isColorTexture);
+ });
+ }
+}
+
+/**
+ * Possible spec versions it recognizes.
+ */
+const POSSIBLE_SPEC_VERSIONS$2 = new Set(['1.0', '1.0-beta']);
+class MToonMaterialLoaderPlugin {
+ get name() {
+ return MToonMaterialLoaderPlugin.EXTENSION_NAME;
+ }
+ constructor(parser, options = {}) {
+ var _a, _b, _c;
+ this.parser = parser;
+ this.renderOrderOffset = (_a = options.renderOrderOffset) !== null && _a !== void 0 ? _a : 0;
+ this.v0CompatShade = (_b = options.v0CompatShade) !== null && _b !== void 0 ? _b : false;
+ this.debugMode = (_c = options.debugMode) !== null && _c !== void 0 ? _c : 'none';
+ this._mToonMaterialSet = new Set();
+ }
+ beforeRoot() {
+ return __awaiter$4(this, void 0, void 0, function* () {
+ this._removeUnlitExtensionIfMToonExists();
+ });
+ }
+ afterRoot(gltf) {
+ return __awaiter$4(this, void 0, void 0, function* () {
+ gltf.userData.vrmMToonMaterials = Array.from(this._mToonMaterialSet);
+ });
+ }
+ getMaterialType(materialIndex) {
+ const v1Extension = this._getMToonExtension(materialIndex);
+ if (v1Extension) {
+ return MToonMaterial;
+ }
+ return null;
+ }
+ extendMaterialParams(materialIndex, materialParams) {
+ const extension = this._getMToonExtension(materialIndex);
+ if (extension) {
+ return this._extendMaterialParams(extension, materialParams);
+ }
+ return null;
+ }
+ loadMesh(meshIndex) {
+ var _a;
+ return __awaiter$4(this, void 0, void 0, function* () {
+ const parser = this.parser;
+ const json = parser.json;
+ const meshDef = (_a = json.meshes) === null || _a === void 0 ? void 0 : _a[meshIndex];
+ if (meshDef == null) {
+ throw new Error(`MToonMaterialLoaderPlugin: Attempt to use meshes[${meshIndex}] of glTF but the mesh doesn't exist`);
+ }
+ const primitivesDef = meshDef.primitives;
+ const meshOrGroup = yield parser.loadMesh(meshIndex);
+ if (primitivesDef.length === 1) {
+ const mesh = meshOrGroup;
+ const materialIndex = primitivesDef[0].material;
+ if (materialIndex != null) {
+ this._setupPrimitive(mesh, materialIndex);
+ }
+ }
+ else {
+ const group = meshOrGroup;
+ for (let i = 0; i < primitivesDef.length; i++) {
+ const mesh = group.children[i];
+ const materialIndex = primitivesDef[i].material;
+ if (materialIndex != null) {
+ this._setupPrimitive(mesh, materialIndex);
+ }
+ }
+ }
+ return meshOrGroup;
+ });
+ }
+ /**
+ * Delete use of `KHR_materials_unlit` from its `materials` if the material is using MToon.
+ *
+ * Since GLTFLoader have so many hardcoded procedure related to `KHR_materials_unlit`
+ * we have to delete the extension before we start to parse the glTF.
+ */
+ _removeUnlitExtensionIfMToonExists() {
+ const parser = this.parser;
+ const json = parser.json;
+ const materialDefs = json.materials;
+ materialDefs === null || materialDefs === void 0 ? void 0 : materialDefs.map((materialDef, iMaterial) => {
+ var _a;
+ const extension = this._getMToonExtension(iMaterial);
+ if (extension && ((_a = materialDef.extensions) === null || _a === void 0 ? void 0 : _a['KHR_materials_unlit'])) {
+ delete materialDef.extensions['KHR_materials_unlit'];
+ }
+ });
+ }
+ _getMToonExtension(materialIndex) {
+ var _a, _b;
+ const parser = this.parser;
+ const json = parser.json;
+ const materialDef = (_a = json.materials) === null || _a === void 0 ? void 0 : _a[materialIndex];
+ if (materialDef == null) {
+ console.warn(`MToonMaterialLoaderPlugin: Attempt to use materials[${materialIndex}] of glTF but the material doesn't exist`);
+ return undefined;
+ }
+ const extension = (_b = materialDef.extensions) === null || _b === void 0 ? void 0 : _b[MToonMaterialLoaderPlugin.EXTENSION_NAME];
+ if (extension == null) {
+ return undefined;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS$2.has(specVersion)) {
+ console.warn(`MToonMaterialLoaderPlugin: Unknown ${MToonMaterialLoaderPlugin.EXTENSION_NAME} specVersion "${specVersion}"`);
+ return undefined;
+ }
+ return extension;
+ }
+ _extendMaterialParams(extension, materialParams) {
+ var _a;
+ return __awaiter$4(this, void 0, void 0, function* () {
+ // Removing material params that is not required to supress warnings.
+ delete materialParams.metalness;
+ delete materialParams.roughness;
+ const assignHelper = new GLTFMToonMaterialParamsAssignHelper(this.parser, materialParams);
+ assignHelper.assignPrimitive('transparentWithZWrite', extension.transparentWithZWrite);
+ assignHelper.assignColor('shadeColorFactor', extension.shadeColorFactor);
+ assignHelper.assignTexture('shadeMultiplyTexture', extension.shadeMultiplyTexture, true);
+ assignHelper.assignPrimitive('shadingShiftFactor', extension.shadingShiftFactor);
+ assignHelper.assignTexture('shadingShiftTexture', extension.shadingShiftTexture, true);
+ assignHelper.assignPrimitive('shadingShiftTextureScale', (_a = extension.shadingShiftTexture) === null || _a === void 0 ? void 0 : _a.scale);
+ assignHelper.assignPrimitive('shadingToonyFactor', extension.shadingToonyFactor);
+ assignHelper.assignPrimitive('giEqualizationFactor', extension.giEqualizationFactor);
+ assignHelper.assignColor('matcapFactor', extension.matcapFactor);
+ assignHelper.assignTexture('matcapTexture', extension.matcapTexture, true);
+ assignHelper.assignColor('parametricRimColorFactor', extension.parametricRimColorFactor);
+ assignHelper.assignTexture('rimMultiplyTexture', extension.rimMultiplyTexture, true);
+ assignHelper.assignPrimitive('rimLightingMixFactor', extension.rimLightingMixFactor);
+ assignHelper.assignPrimitive('parametricRimFresnelPowerFactor', extension.parametricRimFresnelPowerFactor);
+ assignHelper.assignPrimitive('parametricRimLiftFactor', extension.parametricRimLiftFactor);
+ assignHelper.assignPrimitive('outlineWidthMode', extension.outlineWidthMode);
+ assignHelper.assignPrimitive('outlineWidthFactor', extension.outlineWidthFactor);
+ assignHelper.assignTexture('outlineWidthMultiplyTexture', extension.outlineWidthMultiplyTexture, false);
+ assignHelper.assignColor('outlineColorFactor', extension.outlineColorFactor);
+ assignHelper.assignPrimitive('outlineLightingMixFactor', extension.outlineLightingMixFactor);
+ assignHelper.assignTexture('uvAnimationMaskTexture', extension.uvAnimationMaskTexture, false);
+ assignHelper.assignPrimitive('uvAnimationScrollXSpeedFactor', extension.uvAnimationScrollXSpeedFactor);
+ assignHelper.assignPrimitive('uvAnimationScrollYSpeedFactor', extension.uvAnimationScrollYSpeedFactor);
+ assignHelper.assignPrimitive('uvAnimationRotationSpeedFactor', extension.uvAnimationRotationSpeedFactor);
+ assignHelper.assignPrimitive('v0CompatShade', this.v0CompatShade);
+ assignHelper.assignPrimitive('debugMode', this.debugMode);
+ yield assignHelper.pending;
+ });
+ }
+ /**
+ * This will do two processes that is required to render MToon properly.
+ *
+ * - Set render order
+ * - Generate outline
+ *
+ * @param mesh A target GLTF primitive
+ * @param materialIndex The material index of the primitive
+ */
+ _setupPrimitive(mesh, materialIndex) {
+ const extension = this._getMToonExtension(materialIndex);
+ if (extension) {
+ const renderOrder = this._parseRenderOrder(extension);
+ mesh.renderOrder = renderOrder + this.renderOrderOffset;
+ this._generateOutline(mesh);
+ this._addToMaterialSet(mesh);
+ return;
+ }
+ }
+ /**
+ * Generate outline for the given mesh, if it needs.
+ *
+ * @param mesh The target mesh
+ */
+ _generateOutline(mesh) {
+ // OK, it's the hacky part.
+ // We are going to duplicate the MToonMaterial for outline use.
+ // Then we are going to create two geometry groups and refer same buffer but different material.
+ // It's how we draw two materials at once using a single mesh.
+ // make sure the material is mtoon
+ const surfaceMaterial = mesh.material;
+ if (!(surfaceMaterial instanceof MToonMaterial)) {
+ return;
+ }
+ // check whether we really have to prepare outline or not
+ if (surfaceMaterial.outlineWidthMode === 'none' || surfaceMaterial.outlineWidthFactor <= 0.0) {
+ return;
+ }
+ // make its material an array
+ mesh.material = [surfaceMaterial]; // mesh.material is guaranteed to be a Material in GLTFLoader
+ // duplicate the material for outline use
+ const outlineMaterial = surfaceMaterial.clone();
+ outlineMaterial.name += ' (Outline)';
+ outlineMaterial.isOutline = true;
+ outlineMaterial.side = THREE.BackSide;
+ mesh.material.push(outlineMaterial);
+ // make two geometry groups out of a same buffer
+ const geometry = mesh.geometry; // mesh.geometry is guaranteed to be a BufferGeometry in GLTFLoader
+ const primitiveVertices = geometry.index ? geometry.index.count : geometry.attributes.position.count / 3;
+ geometry.addGroup(0, primitiveVertices, 0);
+ geometry.addGroup(0, primitiveVertices, 1);
+ }
+ _addToMaterialSet(mesh) {
+ const materialOrMaterials = mesh.material;
+ const materialSet = new Set();
+ if (Array.isArray(materialOrMaterials)) {
+ materialOrMaterials.forEach((material) => materialSet.add(material));
+ }
+ else {
+ materialSet.add(materialOrMaterials);
+ }
+ for (const material of materialSet) {
+ if (material instanceof MToonMaterial) {
+ this._mToonMaterialSet.add(material);
+ }
+ }
+ }
+ _parseRenderOrder(extension) {
+ var _a;
+ // transparentWithZWrite ranges from 0 to +9
+ // mere transparent ranges from -9 to 0
+ const enabledZWrite = extension.transparentWithZWrite;
+ return (enabledZWrite ? 0 : 19) + ((_a = extension.renderQueueOffsetNumber) !== null && _a !== void 0 ? _a : 0);
+ }
+}
+MToonMaterialLoaderPlugin.EXTENSION_NAME = 'VRMC_materials_mtoon';
+
+/*!
+ * @pixiv/three-vrm-materials-hdr-emissive-multiplier v2.0.6
+ * Support VRMC_hdr_emissiveMultiplier for @pixiv/three-vrm
+ *
+ * Copyright (c) 2020-2023 pixiv Inc.
+ * @pixiv/three-vrm-materials-hdr-emissive-multiplier is distributed under MIT License
+ * https://github.com/pixiv/three-vrm/blob/release/LICENSE
+ */
+/******************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+function __awaiter$3(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+}
+
+class VRMMaterialsHDREmissiveMultiplierLoaderPlugin {
+ get name() {
+ return VRMMaterialsHDREmissiveMultiplierLoaderPlugin.EXTENSION_NAME;
+ }
+ constructor(parser) {
+ this.parser = parser;
+ }
+ extendMaterialParams(materialIndex, materialParams) {
+ return __awaiter$3(this, void 0, void 0, function* () {
+ const extension = this._getHDREmissiveMultiplierExtension(materialIndex);
+ if (extension == null) {
+ return;
+ }
+ // This extension is archived. Emit warning
+ // See: https://github.com/vrm-c/vrm-specification/pull/375
+ console.warn('VRMMaterialsHDREmissiveMultiplierLoaderPlugin: `VRMC_materials_hdr_emissiveMultiplier` is archived. Use `KHR_materials_emissive_strength` instead.');
+ const emissiveMultiplier = extension.emissiveMultiplier;
+ materialParams.emissiveIntensity = emissiveMultiplier;
+ });
+ }
+ _getHDREmissiveMultiplierExtension(materialIndex) {
+ var _a, _b;
+ const parser = this.parser;
+ const json = parser.json;
+ const materialDef = (_a = json.materials) === null || _a === void 0 ? void 0 : _a[materialIndex];
+ if (materialDef == null) {
+ console.warn(`VRMMaterialsHDREmissiveMultiplierLoaderPlugin: Attempt to use materials[${materialIndex}] of glTF but the material doesn't exist`);
+ return undefined;
+ }
+ const extension = (_b = materialDef.extensions) === null || _b === void 0 ? void 0 : _b[VRMMaterialsHDREmissiveMultiplierLoaderPlugin.EXTENSION_NAME];
+ if (extension == null) {
+ return undefined;
+ }
+ return extension;
+ }
+}
+VRMMaterialsHDREmissiveMultiplierLoaderPlugin.EXTENSION_NAME = 'VRMC_materials_hdr_emissiveMultiplier';
+
+/*!
+ * @pixiv/three-vrm-materials-v0compat v2.0.6
+ * VRM0.0 materials compatibility layer plugin for @pixiv/three-vrm
+ *
+ * Copyright (c) 2020-2023 pixiv Inc.
+ * @pixiv/three-vrm-materials-v0compat is distributed under MIT License
+ * https://github.com/pixiv/three-vrm/blob/release/LICENSE
+ */
+
+/******************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+function __awaiter$2(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+}
+
+function gammaEOTF(e) {
+ return Math.pow(e, 2.2);
+}
+
+class VRMMaterialsV0CompatPlugin {
+ get name() {
+ return 'VRMMaterialsV0CompatPlugin';
+ }
+ constructor(parser) {
+ var _a;
+ this.parser = parser;
+ this._renderQueueMapTransparent = new Map();
+ this._renderQueueMapTransparentZWrite = new Map();
+ // WORKAROUND: Add KHR_texture_transform to extensionsUsed
+ // It is too late to add this in beforeRoot
+ const json = this.parser.json;
+ json.extensionsUsed = (_a = json.extensionsUsed) !== null && _a !== void 0 ? _a : [];
+ if (json.extensionsUsed.indexOf('KHR_texture_transform') === -1) {
+ json.extensionsUsed.push('KHR_texture_transform');
+ }
+ }
+ beforeRoot() {
+ var _a;
+ return __awaiter$2(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use V0VRM
+ const v0VRMExtension = (_a = json.extensions) === null || _a === void 0 ? void 0 : _a['VRM'];
+ const v0MaterialProperties = v0VRMExtension === null || v0VRMExtension === void 0 ? void 0 : v0VRMExtension.materialProperties;
+ if (!v0MaterialProperties) {
+ return;
+ }
+ // populate render queue map
+ this._populateRenderQueueMap(v0MaterialProperties);
+ // convert V0 material properties into V1 compatible format
+ v0MaterialProperties.forEach((materialProperties, materialIndex) => {
+ var _a, _b;
+ const materialDef = (_a = json.materials) === null || _a === void 0 ? void 0 : _a[materialIndex];
+ if (materialDef == null) {
+ console.warn(`VRMMaterialsV0CompatPlugin: Attempt to use materials[${materialIndex}] of glTF but the material doesn't exist`);
+ return;
+ }
+ if (materialProperties.shader === 'VRM/MToon') {
+ const material = this._parseV0MToonProperties(materialProperties, materialDef);
+ json.materials[materialIndex] = material;
+ }
+ else if ((_b = materialProperties.shader) === null || _b === void 0 ? void 0 : _b.startsWith('VRM/Unlit')) {
+ const material = this._parseV0UnlitProperties(materialProperties, materialDef);
+ json.materials[materialIndex] = material;
+ }
+ else if (materialProperties.shader === 'VRM_USE_GLTFSHADER') ;
+ else {
+ console.warn(`VRMMaterialsV0CompatPlugin: Unknown shader: ${materialProperties.shader}`);
+ }
+ });
+ });
+ }
+ _parseV0MToonProperties(materialProperties, schemaMaterial) {
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19;
+ const isTransparent = (_b = (_a = materialProperties.keywordMap) === null || _a === void 0 ? void 0 : _a['_ALPHABLEND_ON']) !== null && _b !== void 0 ? _b : false;
+ const enabledZWrite = ((_c = materialProperties.floatProperties) === null || _c === void 0 ? void 0 : _c['_ZWrite']) === 1;
+ const transparentWithZWrite = enabledZWrite && isTransparent;
+ const renderQueueOffsetNumber = this._v0ParseRenderQueue(materialProperties);
+ const isCutoff = (_e = (_d = materialProperties.keywordMap) === null || _d === void 0 ? void 0 : _d['_ALPHATEST_ON']) !== null && _e !== void 0 ? _e : false;
+ const alphaMode = isTransparent ? 'BLEND' : isCutoff ? 'MASK' : 'OPAQUE';
+ const alphaCutoff = isCutoff ? (_f = materialProperties.floatProperties) === null || _f === void 0 ? void 0 : _f['_Cutoff'] : undefined;
+ const cullMode = (_h = (_g = materialProperties.floatProperties) === null || _g === void 0 ? void 0 : _g['_CullMode']) !== null && _h !== void 0 ? _h : 2; // enum, { Off, Front, Back }
+ const doubleSided = cullMode === 0;
+ const textureTransformExt = this._portTextureTransform(materialProperties);
+ const baseColorFactor = (_k = (_j = materialProperties.vectorProperties) === null || _j === void 0 ? void 0 : _j['_Color']) === null || _k === void 0 ? void 0 : _k.map((v, i) => (i === 3 ? v : gammaEOTF(v)));
+ const baseColorTextureIndex = (_l = materialProperties.textureProperties) === null || _l === void 0 ? void 0 : _l['_MainTex'];
+ const baseColorTexture = baseColorTextureIndex != null
+ ? {
+ index: baseColorTextureIndex,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ const normalTextureScale = (_m = materialProperties.floatProperties) === null || _m === void 0 ? void 0 : _m['_BumpScale'];
+ const normalTextureIndex = (_o = materialProperties.textureProperties) === null || _o === void 0 ? void 0 : _o['_BumpMap'];
+ const normalTexture = normalTextureIndex != null
+ ? {
+ index: normalTextureIndex,
+ scale: normalTextureScale,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ const emissiveFactor = (_q = (_p = materialProperties.vectorProperties) === null || _p === void 0 ? void 0 : _p['_EmissionColor']) === null || _q === void 0 ? void 0 : _q.map(gammaEOTF);
+ const emissiveTextureIndex = (_r = materialProperties.textureProperties) === null || _r === void 0 ? void 0 : _r['_EmissionMap'];
+ const emissiveTexture = emissiveTextureIndex != null
+ ? {
+ index: emissiveTextureIndex,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ const shadeColorFactor = (_t = (_s = materialProperties.vectorProperties) === null || _s === void 0 ? void 0 : _s['_ShadeColor']) === null || _t === void 0 ? void 0 : _t.map(gammaEOTF);
+ const shadeMultiplyTextureIndex = (_u = materialProperties.textureProperties) === null || _u === void 0 ? void 0 : _u['_ShadeTexture'];
+ const shadeMultiplyTexture = shadeMultiplyTextureIndex != null
+ ? {
+ index: shadeMultiplyTextureIndex,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ // // convert v0 shade shift / shade toony
+ let shadingShiftFactor = (_w = (_v = materialProperties.floatProperties) === null || _v === void 0 ? void 0 : _v['_ShadeShift']) !== null && _w !== void 0 ? _w : 0.0;
+ let shadingToonyFactor = (_y = (_x = materialProperties.floatProperties) === null || _x === void 0 ? void 0 : _x['_ShadeToony']) !== null && _y !== void 0 ? _y : 0.9;
+ shadingToonyFactor = THREE.MathUtils.lerp(shadingToonyFactor, 1.0, 0.5 + 0.5 * shadingShiftFactor);
+ shadingShiftFactor = -shadingShiftFactor - (1.0 - shadingToonyFactor);
+ const giIntensityFactor = (_z = materialProperties.floatProperties) === null || _z === void 0 ? void 0 : _z['_IndirectLightIntensity'];
+ const giEqualizationFactor = giIntensityFactor ? 1.0 - giIntensityFactor : undefined;
+ const matcapTextureIndex = (_0 = materialProperties.textureProperties) === null || _0 === void 0 ? void 0 : _0['_SphereAdd'];
+ const matcapFactor = matcapTextureIndex != null ? [1.0, 1.0, 1.0] : undefined;
+ const matcapTexture = matcapTextureIndex != null
+ ? {
+ index: matcapTextureIndex,
+ }
+ : undefined;
+ const rimLightingMixFactor = (_1 = materialProperties.floatProperties) === null || _1 === void 0 ? void 0 : _1['_RimLightingMix'];
+ const rimMultiplyTextureIndex = (_2 = materialProperties.textureProperties) === null || _2 === void 0 ? void 0 : _2['_RimTexture'];
+ const rimMultiplyTexture = rimMultiplyTextureIndex != null
+ ? {
+ index: rimMultiplyTextureIndex,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ const parametricRimColorFactor = (_4 = (_3 = materialProperties.vectorProperties) === null || _3 === void 0 ? void 0 : _3['_RimColor']) === null || _4 === void 0 ? void 0 : _4.map(gammaEOTF);
+ const parametricRimFresnelPowerFactor = (_5 = materialProperties.floatProperties) === null || _5 === void 0 ? void 0 : _5['_RimFresnelPower'];
+ const parametricRimLiftFactor = (_6 = materialProperties.floatProperties) === null || _6 === void 0 ? void 0 : _6['_RimLift'];
+ const outlineWidthMode = ['none', 'worldCoordinates', 'screenCoordinates'][(_8 = (_7 = materialProperties.floatProperties) === null || _7 === void 0 ? void 0 : _7['_OutlineWidthMode']) !== null && _8 !== void 0 ? _8 : 0];
+ // // v0 outlineWidthFactor is in centimeter
+ let outlineWidthFactor = (_10 = (_9 = materialProperties.floatProperties) === null || _9 === void 0 ? void 0 : _9['_OutlineWidth']) !== null && _10 !== void 0 ? _10 : 0.0;
+ outlineWidthFactor = 0.01 * outlineWidthFactor;
+ const outlineWidthMultiplyTextureIndex = (_11 = materialProperties.textureProperties) === null || _11 === void 0 ? void 0 : _11['_OutlineWidthTexture'];
+ const outlineWidthMultiplyTexture = outlineWidthMultiplyTextureIndex != null
+ ? {
+ index: outlineWidthMultiplyTextureIndex,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ const outlineColorFactor = (_13 = (_12 = materialProperties.vectorProperties) === null || _12 === void 0 ? void 0 : _12['_OutlineColor']) === null || _13 === void 0 ? void 0 : _13.map(gammaEOTF);
+ const outlineColorMode = (_14 = materialProperties.floatProperties) === null || _14 === void 0 ? void 0 : _14['_OutlineColorMode']; // enum, { Fixed, Mixed }
+ const outlineLightingMixFactor = outlineColorMode === 1 ? (_15 = materialProperties.floatProperties) === null || _15 === void 0 ? void 0 : _15['_OutlineLightingMix'] : 0.0;
+ const uvAnimationMaskTextureIndex = (_16 = materialProperties.textureProperties) === null || _16 === void 0 ? void 0 : _16['_UvAnimMaskTexture'];
+ const uvAnimationMaskTexture = uvAnimationMaskTextureIndex != null
+ ? {
+ index: uvAnimationMaskTextureIndex,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ const uvAnimationScrollXSpeedFactor = (_17 = materialProperties.floatProperties) === null || _17 === void 0 ? void 0 : _17['_UvAnimScrollX'];
+ // uvAnimationScrollYSpeedFactor will be opposite between V0 and V1
+ let uvAnimationScrollYSpeedFactor = (_18 = materialProperties.floatProperties) === null || _18 === void 0 ? void 0 : _18['_UvAnimScrollY'];
+ if (uvAnimationScrollYSpeedFactor != null) {
+ uvAnimationScrollYSpeedFactor = -uvAnimationScrollYSpeedFactor;
+ }
+ const uvAnimationRotationSpeedFactor = (_19 = materialProperties.floatProperties) === null || _19 === void 0 ? void 0 : _19['_UvAnimRotation'];
+ const mtoonExtension = {
+ specVersion: '1.0',
+ transparentWithZWrite,
+ renderQueueOffsetNumber,
+ shadeColorFactor,
+ shadeMultiplyTexture,
+ shadingShiftFactor,
+ shadingToonyFactor,
+ giEqualizationFactor,
+ matcapFactor,
+ matcapTexture,
+ rimLightingMixFactor,
+ rimMultiplyTexture,
+ parametricRimColorFactor,
+ parametricRimFresnelPowerFactor,
+ parametricRimLiftFactor,
+ outlineWidthMode,
+ outlineWidthFactor,
+ outlineWidthMultiplyTexture,
+ outlineColorFactor,
+ outlineLightingMixFactor,
+ uvAnimationMaskTexture,
+ uvAnimationScrollXSpeedFactor,
+ uvAnimationScrollYSpeedFactor,
+ uvAnimationRotationSpeedFactor,
+ };
+ return Object.assign(Object.assign({}, schemaMaterial), { pbrMetallicRoughness: {
+ baseColorFactor,
+ baseColorTexture,
+ }, normalTexture,
+ emissiveTexture,
+ emissiveFactor,
+ alphaMode,
+ alphaCutoff,
+ doubleSided, extensions: {
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ VRMC_materials_mtoon: mtoonExtension,
+ } });
+ }
+ _parseV0UnlitProperties(materialProperties, schemaMaterial) {
+ var _a, _b, _c, _d;
+ const isTransparentZWrite = materialProperties.shader === 'VRM/UnlitTransparentZWrite';
+ const isTransparent = materialProperties.shader === 'VRM/UnlitTransparent' || isTransparentZWrite;
+ const renderQueueOffsetNumber = this._v0ParseRenderQueue(materialProperties);
+ const isCutoff = materialProperties.shader === 'VRM/UnlitCutout';
+ const alphaMode = isTransparent ? 'BLEND' : isCutoff ? 'MASK' : 'OPAQUE';
+ const alphaCutoff = isCutoff ? (_a = materialProperties.floatProperties) === null || _a === void 0 ? void 0 : _a['_Cutoff'] : undefined;
+ const textureTransformExt = this._portTextureTransform(materialProperties);
+ const baseColorFactor = (_c = (_b = materialProperties.vectorProperties) === null || _b === void 0 ? void 0 : _b['_Color']) === null || _c === void 0 ? void 0 : _c.map(gammaEOTF);
+ const baseColorTextureIndex = (_d = materialProperties.textureProperties) === null || _d === void 0 ? void 0 : _d['_MainTex'];
+ const baseColorTexture = baseColorTextureIndex != null
+ ? {
+ index: baseColorTextureIndex,
+ extensions: Object.assign({}, textureTransformExt),
+ }
+ : undefined;
+ // use mtoon instead of unlit, since there might be VRM0.0 specific features that are not supported by gltf
+ const mtoonExtension = {
+ specVersion: '1.0',
+ transparentWithZWrite: isTransparentZWrite,
+ renderQueueOffsetNumber,
+ shadeColorFactor: baseColorFactor,
+ shadeMultiplyTexture: baseColorTexture,
+ };
+ return Object.assign(Object.assign({}, schemaMaterial), { pbrMetallicRoughness: {
+ baseColorFactor,
+ baseColorTexture,
+ }, alphaMode,
+ alphaCutoff, extensions: {
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ VRMC_materials_mtoon: mtoonExtension,
+ } });
+ }
+ /**
+ * Create a glTF `KHR_texture_transform` extension from v0 texture transform info.
+ */
+ _portTextureTransform(materialProperties) {
+ var _a, _b, _c, _d, _e;
+ const textureTransform = (_a = materialProperties.vectorProperties) === null || _a === void 0 ? void 0 : _a['_MainTex'];
+ if (textureTransform == null) {
+ return {};
+ }
+ const offset = [(_b = textureTransform === null || textureTransform === void 0 ? void 0 : textureTransform[0]) !== null && _b !== void 0 ? _b : 0.0, (_c = textureTransform === null || textureTransform === void 0 ? void 0 : textureTransform[1]) !== null && _c !== void 0 ? _c : 0.0];
+ const scale = [(_d = textureTransform === null || textureTransform === void 0 ? void 0 : textureTransform[2]) !== null && _d !== void 0 ? _d : 1.0, (_e = textureTransform === null || textureTransform === void 0 ? void 0 : textureTransform[3]) !== null && _e !== void 0 ? _e : 1.0];
+ offset[1] = 1.0 - scale[1] - offset[1];
+ return {
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ KHR_texture_transform: { offset, scale },
+ };
+ }
+ /**
+ * Convert v0 render order into v1 render order.
+ * This uses a map from v0 render queue to v1 compliant render queue offset which is generated in {@link _populateRenderQueueMap}.
+ */
+ _v0ParseRenderQueue(materialProperties) {
+ var _a, _b, _c;
+ const isTransparent = (_b = (_a = materialProperties.keywordMap) === null || _a === void 0 ? void 0 : _a['_ALPHABLEND_ON']) !== null && _b !== void 0 ? _b : false;
+ const enabledZWrite = ((_c = materialProperties.floatProperties) === null || _c === void 0 ? void 0 : _c['_ZWrite']) === 1;
+ let offset = 0;
+ if (isTransparent) {
+ const v0Queue = materialProperties.renderQueue;
+ if (v0Queue != null) {
+ if (enabledZWrite) {
+ offset = this._renderQueueMapTransparentZWrite.get(v0Queue);
+ }
+ else {
+ offset = this._renderQueueMapTransparent.get(v0Queue);
+ }
+ }
+ }
+ return offset;
+ }
+ /**
+ * Create a map which maps v0 render queue to v1 compliant render queue offset.
+ * This lists up all render queues the model use and creates a map to new render queue offsets in the same order.
+ */
+ _populateRenderQueueMap(materialPropertiesList) {
+ /**
+ * A set of used render queues in Transparent materials.
+ */
+ const renderQueuesTransparent = new Set();
+ /**
+ * A set of used render queues in TransparentZWrite materials.
+ */
+ const renderQueuesTransparentZWrite = new Set();
+ // populate the render queue set
+ materialPropertiesList.forEach((materialProperties) => {
+ var _a, _b, _c;
+ const isTransparent = (_b = (_a = materialProperties.keywordMap) === null || _a === void 0 ? void 0 : _a['_ALPHABLEND_ON']) !== null && _b !== void 0 ? _b : false;
+ const enabledZWrite = ((_c = materialProperties.floatProperties) === null || _c === void 0 ? void 0 : _c['_ZWrite']) === 1;
+ if (isTransparent) {
+ const v0Queue = materialProperties.renderQueue;
+ if (v0Queue != null) {
+ if (enabledZWrite) {
+ renderQueuesTransparentZWrite.add(v0Queue);
+ }
+ else {
+ renderQueuesTransparent.add(v0Queue);
+ }
+ }
+ }
+ });
+ // show a warning if the model uses v1 incompatible number of render queues
+ if (renderQueuesTransparent.size > 10) {
+ console.warn(`VRMMaterialsV0CompatPlugin: This VRM uses ${renderQueuesTransparent.size} render queues for Transparent materials while VRM 1.0 only supports up to 10 render queues. The model might not be rendered correctly.`);
+ }
+ if (renderQueuesTransparentZWrite.size > 10) {
+ console.warn(`VRMMaterialsV0CompatPlugin: This VRM uses ${renderQueuesTransparentZWrite.size} render queues for TransparentZWrite materials while VRM 1.0 only supports up to 10 render queues. The model might not be rendered correctly.`);
+ }
+ // create a map from v0 render queue to v1 render queue offset
+ Array.from(renderQueuesTransparent)
+ .sort()
+ .forEach((queue, i) => {
+ const newQueueOffset = Math.min(Math.max(i - renderQueuesTransparent.size + 1, -9), 0);
+ this._renderQueueMapTransparent.set(queue, newQueueOffset);
+ });
+ Array.from(renderQueuesTransparentZWrite)
+ .sort()
+ .forEach((queue, i) => {
+ const newQueueOffset = Math.min(Math.max(i, 0), 9);
+ this._renderQueueMapTransparentZWrite.set(queue, newQueueOffset);
+ });
+ }
+}
+
+/*!
+ * @pixiv/three-vrm-node-constraint v2.0.6
+ * Node constraint module for @pixiv/three-vrm
+ *
+ * Copyright (c) 2020-2023 pixiv Inc.
+ * @pixiv/three-vrm-node-constraint is distributed under MIT License
+ * https://github.com/pixiv/three-vrm/blob/release/LICENSE
+ */
+
+const _v3A$3$1 = new THREE.Vector3();
+class VRMNodeConstraintHelper extends THREE.Group {
+ constructor(constraint) {
+ super();
+ this._attrPosition = new THREE.BufferAttribute(new Float32Array([0, 0, 0, 0, 0, 0]), 3);
+ this._attrPosition.setUsage(THREE.DynamicDrawUsage);
+ const geometry = new THREE.BufferGeometry();
+ geometry.setAttribute('position', this._attrPosition);
+ const material = new THREE.LineBasicMaterial({
+ color: 0xff00ff,
+ depthTest: false,
+ depthWrite: false,
+ });
+ this._line = new THREE.Line(geometry, material);
+ this.add(this._line);
+ this.constraint = constraint;
+ }
+ updateMatrixWorld(force) {
+ _v3A$3$1.setFromMatrixPosition(this.constraint.destination.matrixWorld);
+ this._attrPosition.setXYZ(0, _v3A$3$1.x, _v3A$3$1.y, _v3A$3$1.z);
+ if (this.constraint.source) {
+ _v3A$3$1.setFromMatrixPosition(this.constraint.source.matrixWorld);
+ }
+ this._attrPosition.setXYZ(1, _v3A$3$1.x, _v3A$3$1.y, _v3A$3$1.z);
+ this._attrPosition.needsUpdate = true;
+ super.updateMatrixWorld(force);
+ }
+}
+
+function decomposePosition(matrix, target) {
+ return target.set(matrix.elements[12], matrix.elements[13], matrix.elements[14]);
+}
+
+const _v3A$2$1 = new THREE.Vector3();
+const _v3B$1$1 = new THREE.Vector3();
+function decomposeRotation(matrix, target) {
+ matrix.decompose(_v3A$2$1, target, _v3B$1$1);
+ return target;
+}
+
+/**
+ * A compat function for `Quaternion.invert()` / `Quaternion.inverse()`.
+ * `Quaternion.invert()` is introduced in r123 and `Quaternion.inverse()` emits a warning.
+ * We are going to use this compat for a while.
+ * @param target A target quaternion
+ */
+function quatInvertCompat(target) {
+ if (target.invert) {
+ target.invert();
+ }
+ else {
+ target.inverse();
+ }
+ return target;
+}
+
+/**
+ * A base class of VRM constraint classes.
+ */
+class VRMNodeConstraint {
+ /**
+ * @param destination The destination object
+ * @param source The source object
+ */
+ constructor(destination, source) {
+ this.destination = destination;
+ this.source = source;
+ this.weight = 1.0;
+ }
+}
+
+const _v3A$1$1 = new THREE.Vector3();
+const _v3B$2 = new THREE.Vector3();
+const _v3C$1 = new THREE.Vector3();
+const _quatA$2 = new THREE.Quaternion();
+const _quatB$2 = new THREE.Quaternion();
+const _quatC = new THREE.Quaternion();
+/**
+ * A constraint that makes it look at a source object.
+ *
+ * See: https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_node_constraint-1.0_beta#roll-constraint
+ */
+class VRMAimConstraint extends VRMNodeConstraint {
+ /**
+ * The aim axis of the constraint.
+ */
+ get aimAxis() {
+ return this._aimAxis;
+ }
+ /**
+ * The aim axis of the constraint.
+ */
+ set aimAxis(aimAxis) {
+ this._aimAxis = aimAxis;
+ this._v3AimAxis.set(aimAxis === 'PositiveX' ? 1.0 : aimAxis === 'NegativeX' ? -1.0 : 0.0, aimAxis === 'PositiveY' ? 1.0 : aimAxis === 'NegativeY' ? -1.0 : 0.0, aimAxis === 'PositiveZ' ? 1.0 : aimAxis === 'NegativeZ' ? -1.0 : 0.0);
+ }
+ get dependencies() {
+ const set = new Set([this.source]);
+ if (this.destination.parent) {
+ set.add(this.destination.parent);
+ }
+ return set;
+ }
+ constructor(destination, source) {
+ super(destination, source);
+ this._aimAxis = 'PositiveX';
+ this._v3AimAxis = new THREE.Vector3(1, 0, 0);
+ this._dstRestQuat = new THREE.Quaternion();
+ }
+ setInitState() {
+ this._dstRestQuat.copy(this.destination.quaternion);
+ }
+ update() {
+ // update world matrix of destination and source manually
+ this.destination.updateWorldMatrix(true, false);
+ this.source.updateWorldMatrix(true, false);
+ // get world quaternion of the parent of the destination
+ const dstParentWorldQuat = _quatA$2.identity();
+ const invDstParentWorldQuat = _quatB$2.identity();
+ if (this.destination.parent) {
+ decomposeRotation(this.destination.parent.matrixWorld, dstParentWorldQuat);
+ quatInvertCompat(invDstParentWorldQuat.copy(dstParentWorldQuat));
+ }
+ // calculate from-to vectors in world coord
+ const a0 = _v3A$1$1.copy(this._v3AimAxis).applyQuaternion(this._dstRestQuat).applyQuaternion(dstParentWorldQuat);
+ const a1 = decomposePosition(this.source.matrixWorld, _v3B$2)
+ .sub(decomposePosition(this.destination.matrixWorld, _v3C$1))
+ .normalize();
+ // create a from-to quaternion, convert to destination local coord, then multiply rest quaternion
+ const targetQuat = _quatC
+ .setFromUnitVectors(a0, a1)
+ .premultiply(invDstParentWorldQuat)
+ .multiply(dstParentWorldQuat)
+ .multiply(this._dstRestQuat);
+ // blend with the rest quaternion using weight
+ this.destination.quaternion.copy(this._dstRestQuat).slerp(targetQuat, this.weight);
+ }
+}
+
+/******************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+function __awaiter$1(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+}
+
+/**
+ * Traverse ancestors of given object and call given callback from root side.
+ * It will include the given object itself.
+ *
+ * @param object The object you want to traverse
+ * @param callback The call back function that will be called for each ancestors
+ */
+function traverseAncestorsFromRoot$1(object, callback) {
+ const ancestors = [object];
+ let head = object.parent;
+ while (head !== null) {
+ ancestors.unshift(head);
+ head = head.parent;
+ }
+ ancestors.forEach((ancestor) => {
+ callback(ancestor);
+ });
+}
+
+class VRMNodeConstraintManager {
+ constructor() {
+ this._constraints = new Set();
+ this._objectConstraintsMap = new Map();
+ }
+ get constraints() {
+ return this._constraints;
+ }
+ addConstraint(constraint) {
+ this._constraints.add(constraint);
+ let objectSet = this._objectConstraintsMap.get(constraint.destination);
+ if (objectSet == null) {
+ objectSet = new Set();
+ this._objectConstraintsMap.set(constraint.destination, objectSet);
+ }
+ objectSet.add(constraint);
+ }
+ deleteConstraint(constraint) {
+ this._constraints.delete(constraint);
+ const objectSet = this._objectConstraintsMap.get(constraint.destination);
+ objectSet.delete(constraint);
+ }
+ setInitState() {
+ const constraintsTried = new Set();
+ const constraintsDone = new Set();
+ for (const constraint of this._constraints) {
+ this._processConstraint(constraint, constraintsTried, constraintsDone, (constraint) => constraint.setInitState());
+ }
+ }
+ update() {
+ const constraintsTried = new Set();
+ const constraintsDone = new Set();
+ for (const constraint of this._constraints) {
+ this._processConstraint(constraint, constraintsTried, constraintsDone, (constraint) => constraint.update());
+ }
+ }
+ /**
+ * Update a constraint.
+ * If there are other constraints that are dependant, it will try to update them recursively.
+ * It might throw an error if there are circular dependencies.
+ *
+ * Intended to be used in {@link update} and {@link _processConstraint} itself recursively.
+ *
+ * @param constraint A constraint you want to update
+ * @param constraintsTried Set of constraints that are already tried to be updated
+ * @param constraintsDone Set of constraints that are already up to date
+ */
+ _processConstraint(constraint, constraintsTried, constraintsDone, callback) {
+ if (constraintsDone.has(constraint)) {
+ return;
+ }
+ if (constraintsTried.has(constraint)) {
+ throw new Error('VRMNodeConstraintManager: Circular dependency detected while updating constraints');
+ }
+ constraintsTried.add(constraint);
+ const depObjects = constraint.dependencies;
+ for (const depObject of depObjects) {
+ traverseAncestorsFromRoot$1(depObject, (depObjectAncestor) => {
+ const objectSet = this._objectConstraintsMap.get(depObjectAncestor);
+ if (objectSet) {
+ for (const depConstraint of objectSet) {
+ this._processConstraint(depConstraint, constraintsTried, constraintsDone, callback);
+ }
+ }
+ });
+ }
+ callback(constraint);
+ constraintsDone.add(constraint);
+ }
+}
+
+const _quatA$1 = new THREE.Quaternion();
+const _quatB$1 = new THREE.Quaternion();
+/**
+ * A constraint that transfers a rotation around one axis of a source.
+ *
+ * See: https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_node_constraint-1.0_beta#roll-constraint
+ */
+class VRMRotationConstraint extends VRMNodeConstraint {
+ get dependencies() {
+ return new Set([this.source]);
+ }
+ constructor(destination, source) {
+ super(destination, source);
+ this._dstRestQuat = new THREE.Quaternion();
+ this._invSrcRestQuat = new THREE.Quaternion();
+ }
+ setInitState() {
+ this._dstRestQuat.copy(this.destination.quaternion);
+ quatInvertCompat(this._invSrcRestQuat.copy(this.source.quaternion));
+ }
+ update() {
+ // calculate the delta rotation from the rest about the source
+ const srcDeltaQuat = _quatA$1.copy(this._invSrcRestQuat).multiply(this.source.quaternion);
+ // multiply the delta to the rest of the destination
+ const targetQuat = _quatB$1.copy(this._dstRestQuat).multiply(srcDeltaQuat);
+ // blend with the rest quaternion using weight
+ this.destination.quaternion.copy(this._dstRestQuat).slerp(targetQuat, this.weight);
+ }
+}
+
+const _v3A$5 = new THREE.Vector3();
+const _quatA$3 = new THREE.Quaternion();
+const _quatB = new THREE.Quaternion();
+/**
+ * A constraint that transfers a rotation around one axis of a source.
+ *
+ * See: https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_node_constraint-1.0_beta#roll-constraint
+ */
+class VRMRollConstraint extends VRMNodeConstraint {
+ /**
+ * The roll axis of the constraint.
+ */
+ get rollAxis() {
+ return this._rollAxis;
+ }
+ /**
+ * The roll axis of the constraint.
+ */
+ set rollAxis(rollAxis) {
+ this._rollAxis = rollAxis;
+ this._v3RollAxis.set(rollAxis === 'X' ? 1.0 : 0.0, rollAxis === 'Y' ? 1.0 : 0.0, rollAxis === 'Z' ? 1.0 : 0.0);
+ }
+ get dependencies() {
+ return new Set([this.source]);
+ }
+ constructor(destination, source) {
+ super(destination, source);
+ this._rollAxis = 'X';
+ this._v3RollAxis = new THREE.Vector3(1, 0, 0);
+ this._dstRestQuat = new THREE.Quaternion();
+ this._invDstRestQuat = new THREE.Quaternion();
+ this._invSrcRestQuatMulDstRestQuat = new THREE.Quaternion();
+ }
+ setInitState() {
+ this._dstRestQuat.copy(this.destination.quaternion);
+ quatInvertCompat(this._invDstRestQuat.copy(this._dstRestQuat));
+ quatInvertCompat(this._invSrcRestQuatMulDstRestQuat.copy(this.source.quaternion)).multiply(this._dstRestQuat);
+ }
+ update() {
+ // calculate the delta rotation from the rest about the source, then convert to the destination local coord
+ /**
+ * What the quatDelta is intended to be:
+ *
+ * ```ts
+ * const quatSrcDelta = _quatA
+ * .copy( this._invSrcRestQuat )
+ * .multiply( this.source.quaternion );
+ * const quatSrcDeltaInParent = _quatB
+ * .copy( this._srcRestQuat )
+ * .multiply( quatSrcDelta )
+ * .multiply( this._invSrcRestQuat );
+ * const quatSrcDeltaInDst = _quatA
+ * .copy( this._invDstRestQuat )
+ * .multiply( quatSrcDeltaInParent )
+ * .multiply( this._dstRestQuat );
+ * ```
+ */
+ const quatDelta = _quatA$3
+ .copy(this._invDstRestQuat)
+ .multiply(this.source.quaternion)
+ .multiply(this._invSrcRestQuatMulDstRestQuat);
+ // create a from-to quaternion
+ const n1 = _v3A$5.copy(this._v3RollAxis).applyQuaternion(quatDelta);
+ /**
+ * What the quatFromTo is intended to be:
+ *
+ * ```ts
+ * const quatFromTo = _quatB.setFromUnitVectors( this._v3RollAxis, n1 ).inverse();
+ * ```
+ */
+ const quatFromTo = _quatB.setFromUnitVectors(n1, this._v3RollAxis);
+ // quatFromTo * quatDelta == roll extracted from quatDelta
+ const targetQuat = quatFromTo.premultiply(this._dstRestQuat).multiply(quatDelta);
+ // blend with the rest quaternion using weight
+ this.destination.quaternion.copy(this._dstRestQuat).slerp(targetQuat, this.weight);
+ }
+}
+
+/**
+ * Possible spec versions it recognizes.
+ */
+const POSSIBLE_SPEC_VERSIONS$1 = new Set(['1.0', '1.0-beta']);
+class VRMNodeConstraintLoaderPlugin {
+ get name() {
+ return VRMNodeConstraintLoaderPlugin.EXTENSION_NAME;
+ }
+ constructor(parser, options) {
+ this.parser = parser;
+ this.helperRoot = options === null || options === void 0 ? void 0 : options.helperRoot;
+ }
+ afterRoot(gltf) {
+ return __awaiter$1(this, void 0, void 0, function* () {
+ gltf.userData.vrmNodeConstraintManager = yield this._import(gltf);
+ });
+ }
+ /**
+ * Import constraints from a GLTF and returns a {@link VRMNodeConstraintManager}.
+ * It might return `null` instead when it does not need to be created or something go wrong.
+ *
+ * @param gltf A parsed result of GLTF taken from GLTFLoader
+ */
+ _import(gltf) {
+ var _a;
+ return __awaiter$1(this, void 0, void 0, function* () {
+ const json = this.parser.json;
+ // early abort if it doesn't use constraints
+ const isConstraintsUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf(VRMNodeConstraintLoaderPlugin.EXTENSION_NAME)) !== -1;
+ if (!isConstraintsUsed) {
+ return null;
+ }
+ const manager = new VRMNodeConstraintManager();
+ const threeNodes = yield this.parser.getDependencies('node');
+ // import constraints for each nodes
+ threeNodes.forEach((node, nodeIndex) => {
+ var _a;
+ const schemaNode = json.nodes[nodeIndex];
+ // check if the extension uses the extension
+ const extension = (_a = schemaNode === null || schemaNode === void 0 ? void 0 : schemaNode.extensions) === null || _a === void 0 ? void 0 : _a[VRMNodeConstraintLoaderPlugin.EXTENSION_NAME];
+ if (extension == null) {
+ return;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS$1.has(specVersion)) {
+ console.warn(`VRMNodeConstraintLoaderPlugin: Unknown ${VRMNodeConstraintLoaderPlugin.EXTENSION_NAME} specVersion "${specVersion}"`);
+ return;
+ }
+ const constraintDef = extension.constraint;
+ // import constraints
+ if (constraintDef.roll != null) {
+ const constraint = this._importRollConstraint(node, threeNodes, constraintDef.roll);
+ manager.addConstraint(constraint);
+ }
+ else if (constraintDef.aim != null) {
+ const constraint = this._importAimConstraint(node, threeNodes, constraintDef.aim);
+ manager.addConstraint(constraint);
+ }
+ else if (constraintDef.rotation != null) {
+ const constraint = this._importRotationConstraint(node, threeNodes, constraintDef.rotation);
+ manager.addConstraint(constraint);
+ }
+ });
+ // init constraints
+ gltf.scene.updateMatrixWorld();
+ manager.setInitState();
+ return manager;
+ });
+ }
+ _importRollConstraint(destination, nodes, rollConstraintDef) {
+ const { source: sourceIndex, rollAxis, weight } = rollConstraintDef;
+ const source = nodes[sourceIndex];
+ const constraint = new VRMRollConstraint(destination, source);
+ if (rollAxis != null) {
+ constraint.rollAxis = rollAxis;
+ }
+ if (weight != null) {
+ constraint.weight = weight;
+ }
+ if (this.helperRoot) {
+ const helper = new VRMNodeConstraintHelper(constraint);
+ this.helperRoot.add(helper);
+ }
+ return constraint;
+ }
+ _importAimConstraint(destination, nodes, aimConstraintDef) {
+ const { source: sourceIndex, aimAxis, weight } = aimConstraintDef;
+ const source = nodes[sourceIndex];
+ const constraint = new VRMAimConstraint(destination, source);
+ if (aimAxis != null) {
+ constraint.aimAxis = aimAxis;
+ }
+ if (weight != null) {
+ constraint.weight = weight;
+ }
+ if (this.helperRoot) {
+ const helper = new VRMNodeConstraintHelper(constraint);
+ this.helperRoot.add(helper);
+ }
+ return constraint;
+ }
+ _importRotationConstraint(destination, nodes, rotationConstraintDef) {
+ const { source: sourceIndex, weight } = rotationConstraintDef;
+ const source = nodes[sourceIndex];
+ const constraint = new VRMRotationConstraint(destination, source);
+ if (weight != null) {
+ constraint.weight = weight;
+ }
+ if (this.helperRoot) {
+ const helper = new VRMNodeConstraintHelper(constraint);
+ this.helperRoot.add(helper);
+ }
+ return constraint;
+ }
+}
+VRMNodeConstraintLoaderPlugin.EXTENSION_NAME = 'VRMC_node_constraint';
+
+/*!
+ * @pixiv/three-vrm-springbone v2.0.6
+ * Spring bone module for @pixiv/three-vrm
+ *
+ * Copyright (c) 2020-2023 pixiv Inc.
+ * @pixiv/three-vrm-springbone is distributed under MIT License
+ * https://github.com/pixiv/three-vrm/blob/release/LICENSE
+ */
+
+/**
+ * Represents a shape of a collider.
+ */
+class VRMSpringBoneColliderShape {
+}
+
+const _v3A$4 = new THREE.Vector3();
+const _v3B$1 = new THREE.Vector3();
+class VRMSpringBoneColliderShapeCapsule extends VRMSpringBoneColliderShape {
+ get type() {
+ return 'capsule';
+ }
+ constructor(params) {
+ var _a, _b, _c;
+ super();
+ this.offset = (_a = params === null || params === void 0 ? void 0 : params.offset) !== null && _a !== void 0 ? _a : new THREE.Vector3(0.0, 0.0, 0.0);
+ this.tail = (_b = params === null || params === void 0 ? void 0 : params.tail) !== null && _b !== void 0 ? _b : new THREE.Vector3(0.0, 0.0, 0.0);
+ this.radius = (_c = params === null || params === void 0 ? void 0 : params.radius) !== null && _c !== void 0 ? _c : 0.0;
+ }
+ calculateCollision(colliderMatrix, objectPosition, objectRadius, target) {
+ _v3A$4.copy(this.offset).applyMatrix4(colliderMatrix); // transformed head
+ _v3B$1.copy(this.tail).applyMatrix4(colliderMatrix); // transformed tail
+ _v3B$1.sub(_v3A$4); // from head to tail
+ const lengthSqCapsule = _v3B$1.lengthSq();
+ target.copy(objectPosition).sub(_v3A$4); // from head to object
+ const dot = _v3B$1.dot(target); // dot product of offsetToTail and offsetToObject
+ if (dot <= 0.0) ;
+ else if (lengthSqCapsule <= dot) {
+ // if object is near from the tail
+ target.sub(_v3B$1); // from tail to object
+ }
+ else {
+ // if object is between two ends
+ _v3B$1.multiplyScalar(dot / lengthSqCapsule); // from head to the nearest point of the shaft
+ target.sub(_v3B$1); // from the shaft point to object
+ }
+ const radius = objectRadius + this.radius;
+ const distance = target.length() - radius;
+ target.normalize();
+ return distance;
+ }
+}
+
+class VRMSpringBoneColliderShapeSphere extends VRMSpringBoneColliderShape {
+ get type() {
+ return 'sphere';
+ }
+ constructor(params) {
+ var _a, _b;
+ super();
+ this.offset = (_a = params === null || params === void 0 ? void 0 : params.offset) !== null && _a !== void 0 ? _a : new THREE.Vector3(0.0, 0.0, 0.0);
+ this.radius = (_b = params === null || params === void 0 ? void 0 : params.radius) !== null && _b !== void 0 ? _b : 0.0;
+ }
+ calculateCollision(colliderMatrix, objectPosition, objectRadius, target) {
+ target.copy(this.offset).applyMatrix4(colliderMatrix); // transformed offset
+ target.negate().add(objectPosition); // a vector from collider center to object position
+ const radius = objectRadius + this.radius;
+ const distance = target.length() - radius;
+ target.normalize();
+ return distance;
+ }
+}
+
+const _v3A$3 = new THREE.Vector3();
+class ColliderShapeCapsuleBufferGeometry extends THREE.BufferGeometry {
+ constructor(shape) {
+ super();
+ this.worldScale = 1.0;
+ this._currentRadius = 0;
+ this._currentOffset = new THREE.Vector3();
+ this._currentTail = new THREE.Vector3();
+ this._shape = shape;
+ this._attrPos = new THREE.BufferAttribute(new Float32Array(396), 3);
+ this.setAttribute('position', this._attrPos);
+ this._attrIndex = new THREE.BufferAttribute(new Uint16Array(264), 1);
+ this.setIndex(this._attrIndex);
+ this._buildIndex();
+ this.update();
+ }
+ update() {
+ let shouldUpdateGeometry = false;
+ const radius = this._shape.radius / this.worldScale;
+ if (this._currentRadius !== radius) {
+ this._currentRadius = radius;
+ shouldUpdateGeometry = true;
+ }
+ if (!this._currentOffset.equals(this._shape.offset)) {
+ this._currentOffset.copy(this._shape.offset);
+ shouldUpdateGeometry = true;
+ }
+ const tail = _v3A$3.copy(this._shape.tail).divideScalar(this.worldScale);
+ if (this._currentTail.distanceToSquared(tail) > 1e-10) {
+ this._currentTail.copy(tail);
+ shouldUpdateGeometry = true;
+ }
+ if (shouldUpdateGeometry) {
+ this._buildPosition();
+ }
+ }
+ _buildPosition() {
+ _v3A$3.copy(this._currentTail).sub(this._currentOffset);
+ const l = _v3A$3.length() / this._currentRadius;
+ for (let i = 0; i <= 16; i++) {
+ const t = (i / 16.0) * Math.PI;
+ this._attrPos.setXYZ(i, -Math.sin(t), -Math.cos(t), 0.0);
+ this._attrPos.setXYZ(17 + i, l + Math.sin(t), Math.cos(t), 0.0);
+ this._attrPos.setXYZ(34 + i, -Math.sin(t), 0.0, -Math.cos(t));
+ this._attrPos.setXYZ(51 + i, l + Math.sin(t), 0.0, Math.cos(t));
+ }
+ for (let i = 0; i < 32; i++) {
+ const t = (i / 16.0) * Math.PI;
+ this._attrPos.setXYZ(68 + i, 0.0, Math.sin(t), Math.cos(t));
+ this._attrPos.setXYZ(100 + i, l, Math.sin(t), Math.cos(t));
+ }
+ const theta = Math.atan2(_v3A$3.y, Math.sqrt(_v3A$3.x * _v3A$3.x + _v3A$3.z * _v3A$3.z));
+ const phi = -Math.atan2(_v3A$3.z, _v3A$3.x);
+ this.rotateZ(theta);
+ this.rotateY(phi);
+ this.scale(this._currentRadius, this._currentRadius, this._currentRadius);
+ this.translate(this._currentOffset.x, this._currentOffset.y, this._currentOffset.z);
+ this._attrPos.needsUpdate = true;
+ }
+ _buildIndex() {
+ for (let i = 0; i < 34; i++) {
+ const i1 = (i + 1) % 34;
+ this._attrIndex.setXY(i * 2, i, i1);
+ this._attrIndex.setXY(68 + i * 2, 34 + i, 34 + i1);
+ }
+ for (let i = 0; i < 32; i++) {
+ const i1 = (i + 1) % 32;
+ this._attrIndex.setXY(136 + i * 2, 68 + i, 68 + i1);
+ this._attrIndex.setXY(200 + i * 2, 100 + i, 100 + i1);
+ }
+ this._attrIndex.needsUpdate = true;
+ }
+}
+
+class ColliderShapeSphereBufferGeometry extends THREE.BufferGeometry {
+ constructor(shape) {
+ super();
+ this.worldScale = 1.0;
+ this._currentRadius = 0;
+ this._currentOffset = new THREE.Vector3();
+ this._shape = shape;
+ this._attrPos = new THREE.BufferAttribute(new Float32Array(32 * 3 * 3), 3);
+ this.setAttribute('position', this._attrPos);
+ this._attrIndex = new THREE.BufferAttribute(new Uint16Array(64 * 3), 1);
+ this.setIndex(this._attrIndex);
+ this._buildIndex();
+ this.update();
+ }
+ update() {
+ let shouldUpdateGeometry = false;
+ const radius = this._shape.radius / this.worldScale;
+ if (this._currentRadius !== radius) {
+ this._currentRadius = radius;
+ shouldUpdateGeometry = true;
+ }
+ if (!this._currentOffset.equals(this._shape.offset)) {
+ this._currentOffset.copy(this._shape.offset);
+ shouldUpdateGeometry = true;
+ }
+ if (shouldUpdateGeometry) {
+ this._buildPosition();
+ }
+ }
+ _buildPosition() {
+ for (let i = 0; i < 32; i++) {
+ const t = (i / 16.0) * Math.PI;
+ this._attrPos.setXYZ(i, Math.cos(t), Math.sin(t), 0.0);
+ this._attrPos.setXYZ(32 + i, 0.0, Math.cos(t), Math.sin(t));
+ this._attrPos.setXYZ(64 + i, Math.sin(t), 0.0, Math.cos(t));
+ }
+ this.scale(this._currentRadius, this._currentRadius, this._currentRadius);
+ this.translate(this._currentOffset.x, this._currentOffset.y, this._currentOffset.z);
+ this._attrPos.needsUpdate = true;
+ }
+ _buildIndex() {
+ for (let i = 0; i < 32; i++) {
+ const i1 = (i + 1) % 32;
+ this._attrIndex.setXY(i * 2, i, i1);
+ this._attrIndex.setXY(64 + i * 2, 32 + i, 32 + i1);
+ this._attrIndex.setXY(128 + i * 2, 64 + i, 64 + i1);
+ }
+ this._attrIndex.needsUpdate = true;
+ }
+}
+
+const _v3A$2 = new THREE.Vector3();
+class VRMSpringBoneColliderHelper extends THREE.Group {
+ constructor(collider) {
+ super();
+ this.matrixAutoUpdate = false;
+ this.collider = collider;
+ if (this.collider.shape instanceof VRMSpringBoneColliderShapeSphere) {
+ this._geometry = new ColliderShapeSphereBufferGeometry(this.collider.shape);
+ }
+ else if (this.collider.shape instanceof VRMSpringBoneColliderShapeCapsule) {
+ this._geometry = new ColliderShapeCapsuleBufferGeometry(this.collider.shape);
+ }
+ else {
+ throw new Error('VRMSpringBoneColliderHelper: Unknown collider shape type detected');
+ }
+ const material = new THREE.LineBasicMaterial({
+ color: 0xff00ff,
+ depthTest: false,
+ depthWrite: false,
+ });
+ this._line = new THREE.LineSegments(this._geometry, material);
+ this.add(this._line);
+ }
+ dispose() {
+ this._geometry.dispose();
+ }
+ updateMatrixWorld(force) {
+ this.collider.updateWorldMatrix(true, false);
+ this.matrix.copy(this.collider.matrixWorld);
+ const matrixWorldElements = this.matrix.elements;
+ this._geometry.worldScale = _v3A$2
+ .set(matrixWorldElements[0], matrixWorldElements[1], matrixWorldElements[2])
+ .length(); // calculate scale of x component
+ this._geometry.update();
+ super.updateMatrixWorld(force);
+ }
+}
+
+class SpringBoneBufferGeometry extends THREE.BufferGeometry {
+ constructor(springBone) {
+ super();
+ this.worldScale = 1.0;
+ this._currentRadius = 0;
+ this._currentTail = new THREE.Vector3();
+ this._springBone = springBone;
+ this._attrPos = new THREE.BufferAttribute(new Float32Array(294), 3);
+ this.setAttribute('position', this._attrPos);
+ this._attrIndex = new THREE.BufferAttribute(new Uint16Array(194), 1);
+ this.setIndex(this._attrIndex);
+ this._buildIndex();
+ this.update();
+ }
+ update() {
+ let shouldUpdateGeometry = false;
+ const radius = this._springBone.settings.hitRadius / this.worldScale;
+ if (this._currentRadius !== radius) {
+ this._currentRadius = radius;
+ shouldUpdateGeometry = true;
+ }
+ if (!this._currentTail.equals(this._springBone.initialLocalChildPosition)) {
+ this._currentTail.copy(this._springBone.initialLocalChildPosition);
+ shouldUpdateGeometry = true;
+ }
+ if (shouldUpdateGeometry) {
+ this._buildPosition();
+ }
+ }
+ _buildPosition() {
+ for (let i = 0; i < 32; i++) {
+ const t = (i / 16.0) * Math.PI;
+ this._attrPos.setXYZ(i, Math.cos(t), Math.sin(t), 0.0);
+ this._attrPos.setXYZ(32 + i, 0.0, Math.cos(t), Math.sin(t));
+ this._attrPos.setXYZ(64 + i, Math.sin(t), 0.0, Math.cos(t));
+ }
+ this.scale(this._currentRadius, this._currentRadius, this._currentRadius);
+ this.translate(this._currentTail.x, this._currentTail.y, this._currentTail.z);
+ this._attrPos.setXYZ(96, 0, 0, 0);
+ this._attrPos.setXYZ(97, this._currentTail.x, this._currentTail.y, this._currentTail.z);
+ this._attrPos.needsUpdate = true;
+ }
+ _buildIndex() {
+ for (let i = 0; i < 32; i++) {
+ const i1 = (i + 1) % 32;
+ this._attrIndex.setXY(i * 2, i, i1);
+ this._attrIndex.setXY(64 + i * 2, 32 + i, 32 + i1);
+ this._attrIndex.setXY(128 + i * 2, 64 + i, 64 + i1);
+ }
+ this._attrIndex.setXY(192, 96, 97);
+ this._attrIndex.needsUpdate = true;
+ }
+}
+
+const _v3A$1 = new THREE.Vector3();
+class VRMSpringBoneJointHelper extends THREE.Group {
+ constructor(springBone) {
+ super();
+ this.matrixAutoUpdate = false;
+ this.springBone = springBone;
+ this._geometry = new SpringBoneBufferGeometry(this.springBone);
+ const material = new THREE.LineBasicMaterial({
+ color: 0xffff00,
+ depthTest: false,
+ depthWrite: false,
+ });
+ this._line = new THREE.LineSegments(this._geometry, material);
+ this.add(this._line);
+ }
+ dispose() {
+ this._geometry.dispose();
+ }
+ updateMatrixWorld(force) {
+ this.springBone.bone.updateWorldMatrix(true, false);
+ this.matrix.copy(this.springBone.bone.matrixWorld);
+ const matrixWorldElements = this.matrix.elements;
+ this._geometry.worldScale = _v3A$1
+ .set(matrixWorldElements[0], matrixWorldElements[1], matrixWorldElements[2])
+ .length(); // calculate scale of x component
+ this._geometry.update();
+ super.updateMatrixWorld(force);
+ }
+}
+
+/**
+ * Represents a collider of a VRM.
+ */
+class VRMSpringBoneCollider extends THREE.Object3D {
+ constructor(shape) {
+ super();
+ this.shape = shape;
+ }
+}
+
+const _matA$1 = new THREE.Matrix4();
+/**
+ * A compat function for `Matrix4.invert()` / `Matrix4.getInverse()`.
+ * `Matrix4.invert()` is introduced in r123 and `Matrix4.getInverse()` emits a warning.
+ * We are going to use this compat for a while.
+ * @param target A target matrix
+ */
+function mat4InvertCompat(target) {
+ if (target.invert) {
+ target.invert();
+ }
+ else {
+ target.getInverse(_matA$1.copy(target));
+ }
+ return target;
+}
+
+class Matrix4InverseCache {
+ /**
+ * Inverse of given matrix.
+ * Note that it will return its internal private instance.
+ * Make sure copying this before mutate this.
+ */
+ get inverse() {
+ if (this._shouldUpdateInverse) {
+ this._inverseCache.copy(this.matrix);
+ mat4InvertCompat(this._inverseCache);
+ this._shouldUpdateInverse = false;
+ }
+ return this._inverseCache;
+ }
+ constructor(matrix) {
+ /**
+ * A cache of inverse of current matrix.
+ */
+ this._inverseCache = new THREE.Matrix4();
+ /**
+ * A flag that makes it want to recalculate its {@link _inverseCache}.
+ * Will be set `true` when `elements` are mutated and be used in `getInverse`.
+ */
+ this._shouldUpdateInverse = true;
+ this.matrix = matrix;
+ const handler = {
+ set: (obj, prop, newVal) => {
+ this._shouldUpdateInverse = true;
+ obj[prop] = newVal;
+ return true;
+ },
+ };
+ this._originalElements = matrix.elements;
+ matrix.elements = new Proxy(matrix.elements, handler);
+ }
+ revert() {
+ this.matrix.elements = this._originalElements;
+ }
+}
+
+// based on
+// http://rocketjump.skr.jp/unity3d/109/
+// https://github.com/dwango/UniVRM/blob/master/Scripts/SpringBone/VRMSpringBone.cs
+const IDENTITY_MATRIX4 = new THREE.Matrix4();
+// 計算中の一時保存用変数(一度インスタンスを作ったらあとは使い回す)
+const _v3A = new THREE.Vector3();
+const _v3B = new THREE.Vector3();
+const _v3C = new THREE.Vector3();
+/**
+ * A temporary variable which is used in `update`
+ */
+const _worldSpacePosition = new THREE.Vector3();
+/**
+ * A temporary variable which is used in `update`
+ */
+const _centerSpacePosition = new THREE.Vector3();
+/**
+ * A temporary variable which is used in `update`
+ */
+const _nextTail = new THREE.Vector3();
+const _quatA = new THREE.Quaternion();
+const _matA = new THREE.Matrix4();
+const _matB = new THREE.Matrix4();
+/**
+ * A class represents a single joint of a spring bone.
+ * It should be managed by a [[VRMSpringBoneManager]].
+ */
+class VRMSpringBoneJoint {
+ get center() {
+ return this._center;
+ }
+ set center(center) {
+ var _a;
+ // uninstall inverse cache
+ if ((_a = this._center) === null || _a === void 0 ? void 0 : _a.userData.inverseCacheProxy) {
+ this._center.userData.inverseCacheProxy.revert();
+ delete this._center.userData.inverseCacheProxy;
+ }
+ // change the center
+ this._center = center;
+ // install inverse cache
+ if (this._center) {
+ if (!this._center.userData.inverseCacheProxy) {
+ this._center.userData.inverseCacheProxy = new Matrix4InverseCache(this._center.matrixWorld);
+ }
+ }
+ }
+ get initialLocalChildPosition() {
+ return this._initialLocalChildPosition;
+ }
+ /**
+ * Returns the world matrix of its parent object.
+ * Note that it returns a reference to the matrix. Don't mutate this directly!
+ */
+ get _parentMatrixWorld() {
+ return this.bone.parent ? this.bone.parent.matrixWorld : IDENTITY_MATRIX4;
+ }
+ /**
+ * Create a new VRMSpringBone.
+ *
+ * @param bone An Object3D that will be attached to this bone
+ * @param child An Object3D that will be used as a tail of this spring bone. It can be null when the spring bone is imported from VRM 0.0
+ * @param settings Several parameters related to behavior of the spring bone
+ * @param colliderGroups Collider groups that will be collided with this spring bone
+ */
+ constructor(bone, child, settings = {}, colliderGroups = []) {
+ var _a, _b, _c, _d, _e, _f;
+ /**
+ * Current position of child tail, in center unit. Will be used for verlet integration.
+ */
+ this._currentTail = new THREE.Vector3();
+ /**
+ * Previous position of child tail, in center unit. Will be used for verlet integration.
+ */
+ this._prevTail = new THREE.Vector3();
+ /**
+ * Initial axis of the bone, in local unit.
+ */
+ this._boneAxis = new THREE.Vector3();
+ /**
+ * Length of the bone in world unit.
+ * Will be used for normalization in update loop, will be updated by {@link _calcWorldSpaceBoneLength}.
+ *
+ * It's same as local unit length unless there are scale transformations in the world space.
+ */
+ this._worldSpaceBoneLength = 0.0;
+ /**
+ * This springbone will be calculated based on the space relative from this object.
+ * If this is `null`, springbone will be calculated in world space.
+ */
+ this._center = null;
+ /**
+ * Initial state of the local matrix of the bone.
+ */
+ this._initialLocalMatrix = new THREE.Matrix4();
+ /**
+ * Initial state of the rotation of the bone.
+ */
+ this._initialLocalRotation = new THREE.Quaternion();
+ /**
+ * Initial state of the position of its child.
+ */
+ this._initialLocalChildPosition = new THREE.Vector3();
+ this.bone = bone; // uniVRMでの parent
+ this.bone.matrixAutoUpdate = false; // updateにより計算されるのでthree.js内での自動処理は不要
+ this.child = child;
+ this.settings = {
+ hitRadius: (_a = settings.hitRadius) !== null && _a !== void 0 ? _a : 0.0,
+ stiffness: (_b = settings.stiffness) !== null && _b !== void 0 ? _b : 1.0,
+ gravityPower: (_c = settings.gravityPower) !== null && _c !== void 0 ? _c : 0.0,
+ gravityDir: (_e = (_d = settings.gravityDir) === null || _d === void 0 ? void 0 : _d.clone()) !== null && _e !== void 0 ? _e : new THREE.Vector3(0.0, -1.0, 0.0),
+ dragForce: (_f = settings.dragForce) !== null && _f !== void 0 ? _f : 0.4,
+ };
+ this.colliderGroups = colliderGroups;
+ }
+ /**
+ * Set the initial state of this spring bone.
+ * You might want to call {@link VRMSpringBoneManager.setInitState} instead.
+ */
+ setInitState() {
+ // remember initial position of itself
+ this._initialLocalMatrix.copy(this.bone.matrix);
+ this._initialLocalRotation.copy(this.bone.quaternion);
+ // see initial position of its local child
+ if (this.child) {
+ this._initialLocalChildPosition.copy(this.child.position);
+ }
+ else {
+ // vrm0 requires a 7cm fixed bone length for the final node in a chain
+ // See: https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_springBone-1.0#about-spring-configuration
+ this._initialLocalChildPosition.copy(this.bone.position).normalize().multiplyScalar(0.07);
+ }
+ // copy the child position to tails
+ const matrixWorldToCenter = this._getMatrixWorldToCenter(_matA);
+ this.bone.localToWorld(this._currentTail.copy(this._initialLocalChildPosition)).applyMatrix4(matrixWorldToCenter);
+ this._prevTail.copy(this._currentTail);
+ // set initial states that are related to local child position
+ this._boneAxis.copy(this._initialLocalChildPosition).normalize();
+ }
+ /**
+ * Reset the state of this bone.
+ * You might want to call [[VRMSpringBoneManager.reset]] instead.
+ */
+ reset() {
+ this.bone.quaternion.copy(this._initialLocalRotation);
+ // We need to update its matrixWorld manually, since we tweaked the bone by our hand
+ this.bone.updateMatrix();
+ this.bone.matrixWorld.multiplyMatrices(this._parentMatrixWorld, this.bone.matrix);
+ // Apply updated position to tail states
+ const matrixWorldToCenter = this._getMatrixWorldToCenter(_matA);
+ this.bone.localToWorld(this._currentTail.copy(this._initialLocalChildPosition)).applyMatrix4(matrixWorldToCenter);
+ this._prevTail.copy(this._currentTail);
+ }
+ /**
+ * Update the state of this bone.
+ * You might want to call [[VRMSpringBoneManager.update]] instead.
+ *
+ * @param delta deltaTime
+ */
+ update(delta) {
+ if (delta <= 0)
+ return;
+ // Update the _worldSpaceBoneLength
+ this._calcWorldSpaceBoneLength();
+ // Get bone position in center space
+ _worldSpacePosition.setFromMatrixPosition(this.bone.matrixWorld);
+ let matrixWorldToCenter = this._getMatrixWorldToCenter(_matA);
+ _centerSpacePosition.copy(_worldSpacePosition).applyMatrix4(matrixWorldToCenter);
+ const quatWorldToCenter = _quatA.setFromRotationMatrix(matrixWorldToCenter);
+ // Get parent matrix in center space
+ const centerSpaceParentMatrix = _matB.copy(matrixWorldToCenter).multiply(this._parentMatrixWorld);
+ // Get boneAxis in center space
+ const centerSpaceBoneAxis = _v3B
+ .copy(this._boneAxis)
+ .applyMatrix4(this._initialLocalMatrix)
+ .applyMatrix4(centerSpaceParentMatrix)
+ .sub(_centerSpacePosition)
+ .normalize();
+ // gravity in center space
+ const centerSpaceGravity = _v3C.copy(this.settings.gravityDir).applyQuaternion(quatWorldToCenter).normalize();
+ const matrixCenterToWorld = this._getMatrixCenterToWorld(_matA);
+ // verlet積分で次の位置を計算
+ _nextTail
+ .copy(this._currentTail)
+ .add(_v3A
+ .copy(this._currentTail)
+ .sub(this._prevTail)
+ .multiplyScalar(1 - this.settings.dragForce)) // 前フレームの移動を継続する(減衰もあるよ)
+ .add(_v3A.copy(centerSpaceBoneAxis).multiplyScalar(this.settings.stiffness * delta)) // 親の回転による子ボーンの移動目標
+ .add(_v3A.copy(centerSpaceGravity).multiplyScalar(this.settings.gravityPower * delta)) // 外力による移動量
+ .applyMatrix4(matrixCenterToWorld); // tailをworld spaceに戻す
+ // normalize bone length
+ _nextTail.sub(_worldSpacePosition).normalize().multiplyScalar(this._worldSpaceBoneLength).add(_worldSpacePosition);
+ // Collisionで移動
+ this._collision(_nextTail);
+ // update prevTail and currentTail
+ matrixWorldToCenter = this._getMatrixWorldToCenter(_matA);
+ this._prevTail.copy(this._currentTail);
+ this._currentTail.copy(_v3A.copy(_nextTail).applyMatrix4(matrixWorldToCenter));
+ // Apply rotation, convert vector3 thing into actual quaternion
+ // Original UniVRM is doing center unit calculus at here but we're gonna do this on local unit
+ const worldSpaceInitialMatrixInv = mat4InvertCompat(_matA.copy(this._parentMatrixWorld).multiply(this._initialLocalMatrix));
+ const applyRotation = _quatA.setFromUnitVectors(this._boneAxis, _v3A.copy(_nextTail).applyMatrix4(worldSpaceInitialMatrixInv).normalize());
+ this.bone.quaternion.copy(this._initialLocalRotation).multiply(applyRotation);
+ // We need to update its matrixWorld manually, since we tweaked the bone by our hand
+ this.bone.updateMatrix();
+ this.bone.matrixWorld.multiplyMatrices(this._parentMatrixWorld, this.bone.matrix);
+ }
+ /**
+ * Do collision math against every colliders attached to this bone.
+ *
+ * @param tail The tail you want to process
+ */
+ _collision(tail) {
+ this.colliderGroups.forEach((colliderGroup) => {
+ colliderGroup.colliders.forEach((collider) => {
+ const dist = collider.shape.calculateCollision(collider.matrixWorld, tail, this.settings.hitRadius, _v3A);
+ if (dist < 0.0) {
+ // hit
+ tail.add(_v3A.multiplyScalar(-dist));
+ // normalize bone length
+ tail.sub(_worldSpacePosition).normalize().multiplyScalar(this._worldSpaceBoneLength).add(_worldSpacePosition);
+ }
+ });
+ });
+ }
+ /**
+ * Calculate the {@link _worldSpaceBoneLength}.
+ * Intended to be used in {@link update}.
+ */
+ _calcWorldSpaceBoneLength() {
+ _v3A.setFromMatrixPosition(this.bone.matrixWorld); // get world position of this.bone
+ if (this.child) {
+ _v3B.setFromMatrixPosition(this.child.matrixWorld); // get world position of this.child
+ }
+ else {
+ _v3B.copy(this._initialLocalChildPosition);
+ _v3B.applyMatrix4(this.bone.matrixWorld);
+ }
+ this._worldSpaceBoneLength = _v3A.sub(_v3B).length();
+ }
+ /**
+ * Create a matrix that converts center space into world space.
+ * @param target Target matrix
+ */
+ _getMatrixCenterToWorld(target) {
+ if (this._center) {
+ target.copy(this._center.matrixWorld);
+ }
+ else {
+ target.identity();
+ }
+ return target;
+ }
+ /**
+ * Create a matrix that converts world space into center space.
+ * @param target Target matrix
+ */
+ _getMatrixWorldToCenter(target) {
+ if (this._center) {
+ target.copy(this._center.userData.inverseCacheProxy.inverse);
+ }
+ else {
+ target.identity();
+ }
+ return target;
+ }
+}
+
+/******************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+function __awaiter(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+}
+
+function traverseAncestorsFromRoot(object, callback) {
+ const ancestors = [];
+ let head = object;
+ while (head !== null) {
+ ancestors.unshift(head);
+ head = head.parent;
+ }
+ ancestors.forEach((ancestor) => {
+ callback(ancestor);
+ });
+}
+
+/**
+ * Traverse children of given object and execute given callback.
+ * The given object itself wont be given to the callback.
+ * If the return value of the callback is `true`, it will halt the traversal of its children.
+ * @param object A root object
+ * @param callback A callback function called for each children
+ */
+function traverseChildrenUntilConditionMet(object, callback) {
+ object.children.forEach((child) => {
+ const result = callback(child);
+ if (!result) {
+ traverseChildrenUntilConditionMet(child, callback);
+ }
+ });
+}
+
+class VRMSpringBoneManager {
+ constructor() {
+ this._joints = new Set();
+ this._objectSpringBonesMap = new Map();
+ }
+ get joints() {
+ return this._joints;
+ }
+ /**
+ * @deprecated Use {@link joints} instead.
+ */
+ get springBones() {
+ console.warn('VRMSpringBoneManager: springBones is deprecated. use joints instead.');
+ return this._joints;
+ }
+ get colliderGroups() {
+ const set = new Set();
+ this._joints.forEach((springBone) => {
+ springBone.colliderGroups.forEach((colliderGroup) => {
+ set.add(colliderGroup);
+ });
+ });
+ return Array.from(set);
+ }
+ get colliders() {
+ const set = new Set();
+ this.colliderGroups.forEach((colliderGroup) => {
+ colliderGroup.colliders.forEach((collider) => {
+ set.add(collider);
+ });
+ });
+ return Array.from(set);
+ }
+ addJoint(joint) {
+ this._joints.add(joint);
+ let objectSet = this._objectSpringBonesMap.get(joint.bone);
+ if (objectSet == null) {
+ objectSet = new Set();
+ this._objectSpringBonesMap.set(joint.bone, objectSet);
+ }
+ objectSet.add(joint);
+ }
+ /**
+ * @deprecated Use {@link addJoint} instead.
+ */
+ addSpringBone(joint) {
+ console.warn('VRMSpringBoneManager: addSpringBone() is deprecated. use addJoint() instead.');
+ this.addJoint(joint);
+ }
+ deleteJoint(joint) {
+ this._joints.delete(joint);
+ const objectSet = this._objectSpringBonesMap.get(joint.bone);
+ objectSet.delete(joint);
+ }
+ /**
+ * @deprecated Use {@link deleteJoint} instead.
+ */
+ deleteSpringBone(joint) {
+ console.warn('VRMSpringBoneManager: deleteSpringBone() is deprecated. use deleteJoint() instead.');
+ this.deleteJoint(joint);
+ }
+ setInitState() {
+ const springBonesTried = new Set();
+ const springBonesDone = new Set();
+ const objectUpdated = new Set();
+ for (const springBone of this._joints) {
+ this._processSpringBone(springBone, springBonesTried, springBonesDone, objectUpdated, (springBone) => springBone.setInitState());
+ }
+ }
+ reset() {
+ const springBonesTried = new Set();
+ const springBonesDone = new Set();
+ const objectUpdated = new Set();
+ for (const springBone of this._joints) {
+ this._processSpringBone(springBone, springBonesTried, springBonesDone, objectUpdated, (springBone) => springBone.reset());
+ }
+ }
+ update(delta) {
+ const springBonesTried = new Set();
+ const springBonesDone = new Set();
+ const objectUpdated = new Set();
+ for (const springBone of this._joints) {
+ // update the springbone
+ this._processSpringBone(springBone, springBonesTried, springBonesDone, objectUpdated, (springBone) => springBone.update(delta));
+ // update children world matrices
+ // it is required when the spring bone chain is sparse
+ traverseChildrenUntilConditionMet(springBone.bone, (object) => {
+ var _a, _b;
+ // if the object has attached springbone, halt the traversal
+ if (((_b = (_a = this._objectSpringBonesMap.get(object)) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0) > 0) {
+ return true;
+ }
+ // otherwise update its world matrix
+ object.updateWorldMatrix(false, false);
+ return false;
+ });
+ }
+ }
+ /**
+ * Update a spring bone.
+ * If there are other spring bone that are dependant, it will try to update them recursively.
+ * It updates matrixWorld of all ancestors and myself.
+ * It might throw an error if there are circular dependencies.
+ *
+ * Intended to be used in {@link update} and {@link _processSpringBone} itself recursively.
+ *
+ * @param springBone A springBone you want to update
+ * @param springBonesTried Set of springBones that are already tried to be updated
+ * @param springBonesDone Set of springBones that are already up to date
+ * @param objectUpdated Set of object3D whose matrixWorld is updated
+ */
+ _processSpringBone(springBone, springBonesTried, springBonesDone, objectUpdated, callback) {
+ if (springBonesDone.has(springBone)) {
+ return;
+ }
+ if (springBonesTried.has(springBone)) {
+ throw new Error('VRMSpringBoneManager: Circular dependency detected while updating springbones');
+ }
+ springBonesTried.add(springBone);
+ const depObjects = this._getDependencies(springBone);
+ for (const depObject of depObjects) {
+ traverseAncestorsFromRoot(depObject, (depObjectAncestor) => {
+ const objectSet = this._objectSpringBonesMap.get(depObjectAncestor);
+ if (objectSet) {
+ for (const depSpringBone of objectSet) {
+ this._processSpringBone(depSpringBone, springBonesTried, springBonesDone, objectUpdated, callback);
+ }
+ }
+ else if (!objectUpdated.has(depObjectAncestor)) {
+ // update matrix of non-springbone
+ depObjectAncestor.updateWorldMatrix(false, false);
+ objectUpdated.add(depObjectAncestor);
+ }
+ });
+ }
+ // update my matrix
+ springBone.bone.updateMatrix();
+ springBone.bone.updateWorldMatrix(false, false);
+ callback(springBone);
+ objectUpdated.add(springBone.bone);
+ springBonesDone.add(springBone);
+ }
+ /**
+ * Return a set of objects that are dependant of given spring bone.
+ * @param springBone A spring bone
+ * @return A set of objects that are dependant of given spring bone
+ */
+ _getDependencies(springBone) {
+ const set = new Set();
+ const parent = springBone.bone.parent;
+ if (parent) {
+ set.add(parent);
+ }
+ springBone.colliderGroups.forEach((colliderGroup) => {
+ colliderGroup.colliders.forEach((collider) => {
+ set.add(collider);
+ });
+ });
+ return set;
+ }
+}
+
+/**
+ * Possible spec versions it recognizes.
+ */
+const POSSIBLE_SPEC_VERSIONS = new Set(['1.0', '1.0-beta']);
+class VRMSpringBoneLoaderPlugin {
+ get name() {
+ return VRMSpringBoneLoaderPlugin.EXTENSION_NAME;
+ }
+ constructor(parser, options) {
+ this.parser = parser;
+ this.jointHelperRoot = options === null || options === void 0 ? void 0 : options.jointHelperRoot;
+ this.colliderHelperRoot = options === null || options === void 0 ? void 0 : options.colliderHelperRoot;
+ }
+ afterRoot(gltf) {
+ return __awaiter(this, void 0, void 0, function* () {
+ gltf.userData.vrmSpringBoneManager = yield this._import(gltf);
+ });
+ }
+ /**
+ * Import spring bones from a GLTF and return a {@link VRMSpringBoneManager}.
+ * It might return `null` instead when it does not need to be created or something go wrong.
+ *
+ * @param gltf A parsed result of GLTF taken from GLTFLoader
+ */
+ _import(gltf) {
+ return __awaiter(this, void 0, void 0, function* () {
+ const v1Result = yield this._v1Import(gltf);
+ if (v1Result != null) {
+ return v1Result;
+ }
+ const v0Result = yield this._v0Import(gltf);
+ if (v0Result != null) {
+ return v0Result;
+ }
+ return null;
+ });
+ }
+ _v1Import(gltf) {
+ var _a, _b, _c, _d, _e;
+ return __awaiter(this, void 0, void 0, function* () {
+ const json = gltf.parser.json;
+ // early abort if it doesn't use spring bones
+ const isSpringBoneUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf(VRMSpringBoneLoaderPlugin.EXTENSION_NAME)) !== -1;
+ if (!isSpringBoneUsed) {
+ return null;
+ }
+ const manager = new VRMSpringBoneManager();
+ const threeNodes = yield gltf.parser.getDependencies('node');
+ const extension = (_b = json.extensions) === null || _b === void 0 ? void 0 : _b[VRMSpringBoneLoaderPlugin.EXTENSION_NAME];
+ if (!extension) {
+ return null;
+ }
+ const specVersion = extension.specVersion;
+ if (!POSSIBLE_SPEC_VERSIONS.has(specVersion)) {
+ console.warn(`VRMSpringBoneLoaderPlugin: Unknown ${VRMSpringBoneLoaderPlugin.EXTENSION_NAME} specVersion "${specVersion}"`);
+ return null;
+ }
+ const colliders = (_c = extension.colliders) === null || _c === void 0 ? void 0 : _c.map((schemaCollider, iCollider) => {
+ var _a, _b, _c, _d, _e;
+ const node = threeNodes[schemaCollider.node];
+ const schemaShape = schemaCollider.shape;
+ if (schemaShape.sphere) {
+ return this._importSphereCollider(node, {
+ offset: new THREE.Vector3().fromArray((_a = schemaShape.sphere.offset) !== null && _a !== void 0 ? _a : [0.0, 0.0, 0.0]),
+ radius: (_b = schemaShape.sphere.radius) !== null && _b !== void 0 ? _b : 0.0,
+ });
+ }
+ else if (schemaShape.capsule) {
+ return this._importCapsuleCollider(node, {
+ offset: new THREE.Vector3().fromArray((_c = schemaShape.capsule.offset) !== null && _c !== void 0 ? _c : [0.0, 0.0, 0.0]),
+ radius: (_d = schemaShape.capsule.radius) !== null && _d !== void 0 ? _d : 0.0,
+ tail: new THREE.Vector3().fromArray((_e = schemaShape.capsule.tail) !== null && _e !== void 0 ? _e : [0.0, 0.0, 0.0]),
+ });
+ }
+ throw new Error(`VRMSpringBoneLoaderPlugin: The collider #${iCollider} has no valid shape`);
+ });
+ const colliderGroups = (_d = extension.colliderGroups) === null || _d === void 0 ? void 0 : _d.map((schemaColliderGroup, iColliderGroup) => {
+ var _a;
+ const cols = ((_a = schemaColliderGroup.colliders) !== null && _a !== void 0 ? _a : []).map((iCollider) => {
+ const col = colliders === null || colliders === void 0 ? void 0 : colliders[iCollider];
+ if (col == null) {
+ throw new Error(`VRMSpringBoneLoaderPlugin: The colliderGroup #${iColliderGroup} attempted to use a collider #${iCollider} but not found`);
+ }
+ return col;
+ });
+ return {
+ colliders: cols,
+ name: schemaColliderGroup.name,
+ };
+ });
+ (_e = extension.springs) === null || _e === void 0 ? void 0 : _e.forEach((schemaSpring, iSpring) => {
+ var _a;
+ const schemaJoints = schemaSpring.joints;
+ // prepare colliders
+ const colliderGroupsForSpring = (_a = schemaSpring.colliderGroups) === null || _a === void 0 ? void 0 : _a.map((iColliderGroup) => {
+ const group = colliderGroups === null || colliderGroups === void 0 ? void 0 : colliderGroups[iColliderGroup];
+ if (group == null) {
+ throw new Error(`VRMSpringBoneLoaderPlugin: The spring #${iSpring} attempted to use a colliderGroup ${iColliderGroup} but not found`);
+ }
+ return group;
+ });
+ const center = schemaSpring.center != null ? threeNodes[schemaSpring.center] : undefined;
+ let prevSchemaJoint;
+ schemaJoints.forEach((schemaJoint) => {
+ if (prevSchemaJoint) {
+ // prepare node
+ const nodeIndex = prevSchemaJoint.node;
+ const node = threeNodes[nodeIndex];
+ const childIndex = schemaJoint.node;
+ const child = threeNodes[childIndex];
+ // prepare setting
+ const setting = {
+ hitRadius: prevSchemaJoint.hitRadius,
+ dragForce: prevSchemaJoint.dragForce,
+ gravityPower: prevSchemaJoint.gravityPower,
+ stiffness: prevSchemaJoint.stiffness,
+ gravityDir: prevSchemaJoint.gravityDir != null
+ ? new THREE.Vector3().fromArray(prevSchemaJoint.gravityDir)
+ : undefined,
+ };
+ // create spring bones
+ const joint = this._importJoint(node, child, setting, colliderGroupsForSpring);
+ if (center) {
+ joint.center = center;
+ }
+ manager.addJoint(joint);
+ }
+ prevSchemaJoint = schemaJoint;
+ });
+ });
+ // init spring bones
+ manager.setInitState();
+ return manager;
+ });
+ }
+ _v0Import(gltf) {
+ var _a, _b, _c;
+ return __awaiter(this, void 0, void 0, function* () {
+ const json = gltf.parser.json;
+ // early abort if it doesn't use vrm
+ const isVRMUsed = ((_a = json.extensionsUsed) === null || _a === void 0 ? void 0 : _a.indexOf('VRM')) !== -1;
+ if (!isVRMUsed) {
+ return null;
+ }
+ // early abort if it doesn't have bone groups
+ const extension = (_b = json.extensions) === null || _b === void 0 ? void 0 : _b['VRM'];
+ const schemaSecondaryAnimation = extension === null || extension === void 0 ? void 0 : extension.secondaryAnimation;
+ if (!schemaSecondaryAnimation) {
+ return null;
+ }
+ const schemaBoneGroups = schemaSecondaryAnimation === null || schemaSecondaryAnimation === void 0 ? void 0 : schemaSecondaryAnimation.boneGroups;
+ if (!schemaBoneGroups) {
+ return null;
+ }
+ const manager = new VRMSpringBoneManager();
+ const threeNodes = yield gltf.parser.getDependencies('node');
+ const colliderGroups = (_c = schemaSecondaryAnimation.colliderGroups) === null || _c === void 0 ? void 0 : _c.map((schemaColliderGroup) => {
+ var _a;
+ const node = threeNodes[schemaColliderGroup.node];
+ const colliders = ((_a = schemaColliderGroup.colliders) !== null && _a !== void 0 ? _a : []).map((schemaCollider, iCollider) => {
+ var _a, _b, _c;
+ const offset = new THREE.Vector3(0.0, 0.0, 0.0);
+ if (schemaCollider.offset) {
+ offset.set((_a = schemaCollider.offset.x) !== null && _a !== void 0 ? _a : 0.0, (_b = schemaCollider.offset.y) !== null && _b !== void 0 ? _b : 0.0, schemaCollider.offset.z ? -schemaCollider.offset.z : 0.0);
+ }
+ return this._importSphereCollider(node, {
+ offset,
+ radius: (_c = schemaCollider.radius) !== null && _c !== void 0 ? _c : 0.0,
+ });
+ });
+ return { colliders };
+ });
+ // import spring bones for each spring bone groups
+ schemaBoneGroups === null || schemaBoneGroups === void 0 ? void 0 : schemaBoneGroups.forEach((schemaBoneGroup, iBoneGroup) => {
+ const rootIndices = schemaBoneGroup.bones;
+ if (!rootIndices) {
+ return;
+ }
+ rootIndices.forEach((rootIndex) => {
+ var _a, _b, _c, _d;
+ const root = threeNodes[rootIndex];
+ // prepare setting
+ const gravityDir = new THREE.Vector3();
+ if (schemaBoneGroup.gravityDir) {
+ gravityDir.set((_a = schemaBoneGroup.gravityDir.x) !== null && _a !== void 0 ? _a : 0.0, (_b = schemaBoneGroup.gravityDir.y) !== null && _b !== void 0 ? _b : 0.0, (_c = schemaBoneGroup.gravityDir.z) !== null && _c !== void 0 ? _c : 0.0);
+ }
+ else {
+ gravityDir.set(0.0, -1.0, 0.0);
+ }
+ const center = schemaBoneGroup.center != null ? threeNodes[schemaBoneGroup.center] : undefined;
+ const setting = {
+ hitRadius: schemaBoneGroup.hitRadius,
+ dragForce: schemaBoneGroup.dragForce,
+ gravityPower: schemaBoneGroup.gravityPower,
+ stiffness: schemaBoneGroup.stiffiness,
+ gravityDir,
+ };
+ // prepare colliders
+ const colliderGroupsForSpring = (_d = schemaBoneGroup.colliderGroups) === null || _d === void 0 ? void 0 : _d.map((iColliderGroup) => {
+ const group = colliderGroups === null || colliderGroups === void 0 ? void 0 : colliderGroups[iColliderGroup];
+ if (group == null) {
+ throw new Error(`VRMSpringBoneLoaderPlugin: The spring #${iBoneGroup} attempted to use a colliderGroup ${iColliderGroup} but not found`);
+ }
+ return group;
+ });
+ // create spring bones
+ root.traverse((node) => {
+ var _a;
+ const child = (_a = node.children[0]) !== null && _a !== void 0 ? _a : null;
+ const joint = this._importJoint(node, child, setting, colliderGroupsForSpring);
+ if (center) {
+ joint.center = center;
+ }
+ manager.addJoint(joint);
+ });
+ });
+ });
+ // init spring bones
+ gltf.scene.updateMatrixWorld();
+ manager.setInitState();
+ return manager;
+ });
+ }
+ _importJoint(node, child, setting, colliderGroupsForSpring) {
+ const springBone = new VRMSpringBoneJoint(node, child, setting, colliderGroupsForSpring);
+ if (this.jointHelperRoot) {
+ const helper = new VRMSpringBoneJointHelper(springBone);
+ this.jointHelperRoot.add(helper);
+ helper.renderOrder = this.jointHelperRoot.renderOrder;
+ }
+ return springBone;
+ }
+ _importSphereCollider(destination, params) {
+ const { offset, radius } = params;
+ const shape = new VRMSpringBoneColliderShapeSphere({ offset, radius });
+ const collider = new VRMSpringBoneCollider(shape);
+ destination.add(collider);
+ if (this.colliderHelperRoot) {
+ const helper = new VRMSpringBoneColliderHelper(collider);
+ this.colliderHelperRoot.add(helper);
+ helper.renderOrder = this.colliderHelperRoot.renderOrder;
+ }
+ return collider;
+ }
+ _importCapsuleCollider(destination, params) {
+ const { offset, radius, tail } = params;
+ const shape = new VRMSpringBoneColliderShapeCapsule({ offset, radius, tail });
+ const collider = new VRMSpringBoneCollider(shape);
+ destination.add(collider);
+ if (this.colliderHelperRoot) {
+ const helper = new VRMSpringBoneColliderHelper(collider);
+ this.colliderHelperRoot.add(helper);
+ helper.renderOrder = this.colliderHelperRoot.renderOrder;
+ }
+ return collider;
+ }
+}
+VRMSpringBoneLoaderPlugin.EXTENSION_NAME = 'VRMC_springBone';
+
+class VRMLoaderPlugin {
+ get name() {
+ return 'VRMLoaderPlugin';
+ }
+ constructor(parser, options) {
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
+ this.parser = parser;
+ const helperRoot = options === null || options === void 0 ? void 0 : options.helperRoot;
+ const autoUpdateHumanBones = options === null || options === void 0 ? void 0 : options.autoUpdateHumanBones;
+ this.expressionPlugin = (_a = options === null || options === void 0 ? void 0 : options.expressionPlugin) !== null && _a !== void 0 ? _a : new VRMExpressionLoaderPlugin(parser);
+ this.firstPersonPlugin = (_b = options === null || options === void 0 ? void 0 : options.firstPersonPlugin) !== null && _b !== void 0 ? _b : new VRMFirstPersonLoaderPlugin(parser);
+ this.humanoidPlugin =
+ (_c = options === null || options === void 0 ? void 0 : options.humanoidPlugin) !== null && _c !== void 0 ? _c : new VRMHumanoidLoaderPlugin(parser, {
+ helperRoot,
+ autoUpdateHumanBones,
+ });
+ this.lookAtPlugin = (_d = options === null || options === void 0 ? void 0 : options.lookAtPlugin) !== null && _d !== void 0 ? _d : new VRMLookAtLoaderPlugin(parser, { helperRoot });
+ this.metaPlugin = (_e = options === null || options === void 0 ? void 0 : options.metaPlugin) !== null && _e !== void 0 ? _e : new VRMMetaLoaderPlugin(parser);
+ this.mtoonMaterialPlugin = (_f = options === null || options === void 0 ? void 0 : options.mtoonMaterialPlugin) !== null && _f !== void 0 ? _f : new MToonMaterialLoaderPlugin(parser);
+ this.materialsHDREmissiveMultiplierPlugin =
+ (_g = options === null || options === void 0 ? void 0 : options.materialsHDREmissiveMultiplierPlugin) !== null && _g !== void 0 ? _g : new VRMMaterialsHDREmissiveMultiplierLoaderPlugin(parser);
+ this.materialsV0CompatPlugin = (_h = options === null || options === void 0 ? void 0 : options.materialsV0CompatPlugin) !== null && _h !== void 0 ? _h : new VRMMaterialsV0CompatPlugin(parser);
+ this.springBonePlugin =
+ (_j = options === null || options === void 0 ? void 0 : options.springBonePlugin) !== null && _j !== void 0 ? _j : new VRMSpringBoneLoaderPlugin(parser, {
+ colliderHelperRoot: helperRoot,
+ jointHelperRoot: helperRoot,
+ });
+ this.nodeConstraintPlugin =
+ (_k = options === null || options === void 0 ? void 0 : options.nodeConstraintPlugin) !== null && _k !== void 0 ? _k : new VRMNodeConstraintLoaderPlugin(parser, { helperRoot });
+ }
+ beforeRoot() {
+ return __awaiter$5(this, void 0, void 0, function* () {
+ yield this.materialsV0CompatPlugin.beforeRoot();
+ yield this.mtoonMaterialPlugin.beforeRoot();
+ });
+ }
+ loadMesh(meshIndex) {
+ return __awaiter$5(this, void 0, void 0, function* () {
+ return yield this.mtoonMaterialPlugin.loadMesh(meshIndex);
+ });
+ }
+ getMaterialType(materialIndex) {
+ const mtoonType = this.mtoonMaterialPlugin.getMaterialType(materialIndex);
+ if (mtoonType != null) {
+ return mtoonType;
+ }
+ return null;
+ }
+ extendMaterialParams(materialIndex, materialParams) {
+ return __awaiter$5(this, void 0, void 0, function* () {
+ yield this.materialsHDREmissiveMultiplierPlugin.extendMaterialParams(materialIndex, materialParams);
+ yield this.mtoonMaterialPlugin.extendMaterialParams(materialIndex, materialParams);
+ });
+ }
+ afterRoot(gltf) {
+ return __awaiter$5(this, void 0, void 0, function* () {
+ yield this.metaPlugin.afterRoot(gltf);
+ yield this.humanoidPlugin.afterRoot(gltf);
+ yield this.expressionPlugin.afterRoot(gltf);
+ yield this.lookAtPlugin.afterRoot(gltf);
+ yield this.firstPersonPlugin.afterRoot(gltf);
+ yield this.springBonePlugin.afterRoot(gltf);
+ yield this.nodeConstraintPlugin.afterRoot(gltf);
+ yield this.mtoonMaterialPlugin.afterRoot(gltf);
+ const meta = gltf.userData.vrmMeta;
+ const humanoid = gltf.userData.vrmHumanoid;
+ // meta and humanoid are required to be a VRM.
+ // Don't create VRM if they are null
+ if (meta && humanoid) {
+ const vrm = new VRM({
+ scene: gltf.scene,
+ expressionManager: gltf.userData.vrmExpressionManager,
+ firstPerson: gltf.userData.vrmFirstPerson,
+ humanoid,
+ lookAt: gltf.userData.vrmLookAt,
+ meta,
+ materials: gltf.userData.vrmMToonMaterials,
+ springBoneManager: gltf.userData.vrmSpringBoneManager,
+ nodeConstraintManager: gltf.userData.vrmNodeConstraintManager,
+ });
+ gltf.userData.vrm = vrm;
+ }
+ });
+ }
+}
+
+// See: https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects
+function disposeMaterial(material) {
+ Object.values(material).forEach((value) => {
+ if (value === null || value === void 0 ? void 0 : value.isTexture) {
+ const texture = value;
+ texture.dispose();
+ }
+ });
+ if (material.isShaderMaterial) {
+ const uniforms = material.uniforms;
+ if (uniforms) {
+ Object.values(uniforms).forEach((uniform) => {
+ const value = uniform.value;
+ if (value === null || value === void 0 ? void 0 : value.isTexture) {
+ const texture = value;
+ texture.dispose();
+ }
+ });
+ }
+ }
+ material.dispose();
+}
+function dispose(object3D) {
+ const geometry = object3D.geometry;
+ if (geometry) {
+ geometry.dispose();
+ }
+ const skeleton = object3D.skeleton;
+ if (skeleton) {
+ skeleton.dispose();
+ }
+ const material = object3D.material;
+ if (material) {
+ if (Array.isArray(material)) {
+ material.forEach((material) => disposeMaterial(material));
+ }
+ else if (material) {
+ disposeMaterial(material);
+ }
+ }
+}
+function deepDispose(object3D) {
+ object3D.traverse(dispose);
+}
+
+/**
+ * Traverse given object and remove unnecessarily bound joints from every `THREE.SkinnedMesh`.
+ * Some environments like mobile devices have a lower limit of bones and might be unable to perform mesh skinning, this function might resolve such an issue.
+ * Also this function might greatly improve the performance of mesh skinning.
+ *
+ * @param root Root object that will be traversed
+ */
+function removeUnnecessaryJoints(root) {
+ // some meshes might share a same skinIndex attribute and this map prevents to convert the attribute twice
+ const skeletonList = new Map();
+ // Traverse an entire tree
+ root.traverse((obj) => {
+ if (obj.type !== 'SkinnedMesh') {
+ return;
+ }
+ const mesh = obj;
+ const geometry = mesh.geometry;
+ const attribute = geometry.getAttribute('skinIndex');
+ // look for existing skeleton
+ let skeleton = skeletonList.get(attribute);
+ if (!skeleton) {
+ // generate reduced bone list
+ const bones = []; // new list of bone
+ const boneInverses = []; // new list of boneInverse
+ const boneIndexMap = {}; // map of old bone index vs. new bone index
+ // create a new bone map
+ const array = attribute.array;
+ for (let i = 0; i < array.length; i++) {
+ const index = array[i];
+ // new skinIndex buffer
+ if (boneIndexMap[index] === undefined) {
+ boneIndexMap[index] = bones.length;
+ bones.push(mesh.skeleton.bones[index]);
+ boneInverses.push(mesh.skeleton.boneInverses[index]);
+ }
+ array[i] = boneIndexMap[index];
+ }
+ // replace with new indices
+ attribute.copyArray(array);
+ attribute.needsUpdate = true;
+ // replace with new indices
+ skeleton = new THREE.Skeleton(bones, boneInverses);
+ skeletonList.set(attribute, skeleton);
+ }
+ mesh.bind(skeleton, new THREE.Matrix4());
+ // ^^^^^^^^^^^^^^^^^^^ transform of meshes should be ignored
+ // See: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins
+ });
+}
+
+/**
+ * Traverse given object and remove unnecessary vertices from every BufferGeometries.
+ * This only processes buffer geometries with index buffer.
+ *
+ * Three.js creates morph textures for each geometries and it sometimes consumes unnecessary amount of VRAM for certain models.
+ * This function will optimize geometries to reduce the size of morph texture.
+ * See: https://github.com/mrdoob/three.js/issues/23095
+ *
+ * @param root Root object that will be traversed
+ */
+function removeUnnecessaryVertices(root) {
+ const geometryMap = new Map();
+ // Traverse an entire tree
+ root.traverse((obj) => {
+ var _a, _b, _c, _d;
+ if (!obj.isMesh) {
+ return;
+ }
+ const mesh = obj;
+ const geometry = mesh.geometry;
+ // if the geometry does not have an index buffer it does not need to process
+ const origianlIndex = geometry.index;
+ if (origianlIndex == null) {
+ return;
+ }
+ // skip already processed geometry
+ const newGeometryAlreadyExisted = geometryMap.get(geometry);
+ if (newGeometryAlreadyExisted != null) {
+ mesh.geometry = newGeometryAlreadyExisted;
+ return;
+ }
+ const newGeometry = new THREE.BufferGeometry();
+ // copy various properties
+ // Ref: https://github.com/mrdoob/three.js/blob/1a241ef10048770d56e06d6cd6a64c76cc720f95/src/core/BufferGeometry.js#L1011
+ newGeometry.name = geometry.name;
+ newGeometry.morphTargetsRelative = geometry.morphTargetsRelative;
+ geometry.groups.forEach((group) => {
+ newGeometry.addGroup(group.start, group.count, group.materialIndex);
+ });
+ newGeometry.boundingBox = (_b = (_a = geometry.boundingBox) === null || _a === void 0 ? void 0 : _a.clone()) !== null && _b !== void 0 ? _b : null;
+ newGeometry.boundingSphere = (_d = (_c = geometry.boundingSphere) === null || _c === void 0 ? void 0 : _c.clone()) !== null && _d !== void 0 ? _d : null;
+ newGeometry.setDrawRange(geometry.drawRange.start, geometry.drawRange.count);
+ newGeometry.userData = geometry.userData;
+ // set to geometryMap
+ geometryMap.set(geometry, newGeometry);
+ /** from original index to new index */
+ const originalIndexNewIndexMap = [];
+ /** from new index to original index */
+ const newIndexOriginalIndexMap = [];
+ // reorganize indices
+ {
+ const originalIndexArray = origianlIndex.array;
+ const newIndexArray = new originalIndexArray.constructor(originalIndexArray.length);
+ let indexHead = 0;
+ for (let i = 0; i < originalIndexArray.length; i++) {
+ const originalIndex = originalIndexArray[i];
+ let newIndex = originalIndexNewIndexMap[originalIndex];
+ if (newIndex == null) {
+ originalIndexNewIndexMap[originalIndex] = indexHead;
+ newIndexOriginalIndexMap[indexHead] = originalIndex;
+ newIndex = indexHead;
+ indexHead++;
+ }
+ newIndexArray[i] = newIndex;
+ }
+ newGeometry.setIndex(new BufferAttribute(newIndexArray, 1, false));
+ }
+ // reorganize attributes
+ Object.keys(geometry.attributes).forEach((attributeName) => {
+ const originalAttribute = geometry.attributes[attributeName];
+ if (originalAttribute.isInterleavedBufferAttribute) {
+ throw new Error('removeUnnecessaryVertices: InterleavedBufferAttribute is not supported');
+ }
+ const originalAttributeArray = originalAttribute.array;
+ const { itemSize, normalized } = originalAttribute;
+ const newAttributeArray = new originalAttributeArray.constructor(newIndexOriginalIndexMap.length * itemSize);
+ newIndexOriginalIndexMap.forEach((originalIndex, i) => {
+ for (let j = 0; j < itemSize; j++) {
+ newAttributeArray[i * itemSize + j] = originalAttributeArray[originalIndex * itemSize + j];
+ }
+ });
+ newGeometry.setAttribute(attributeName, new BufferAttribute(newAttributeArray, itemSize, normalized));
+ });
+ // reorganize morph attributes
+ /** True if all morphs are zero. */
+ let isNullMorph = true;
+ Object.keys(geometry.morphAttributes).forEach((attributeName) => {
+ newGeometry.morphAttributes[attributeName] = [];
+ const morphs = geometry.morphAttributes[attributeName];
+ for (let iMorph = 0; iMorph < morphs.length; iMorph++) {
+ const originalAttribute = morphs[iMorph];
+ if (originalAttribute.isInterleavedBufferAttribute) {
+ throw new Error('removeUnnecessaryVertices: InterleavedBufferAttribute is not supported');
+ }
+ const originalAttributeArray = originalAttribute.array;
+ const { itemSize, normalized } = originalAttribute;
+ const newAttributeArray = new originalAttributeArray.constructor(newIndexOriginalIndexMap.length * itemSize);
+ newIndexOriginalIndexMap.forEach((originalIndex, i) => {
+ for (let j = 0; j < itemSize; j++) {
+ newAttributeArray[i * itemSize + j] = originalAttributeArray[originalIndex * itemSize + j];
+ }
+ });
+ isNullMorph = isNullMorph && newAttributeArray.every((v) => v === 0);
+ newGeometry.morphAttributes[attributeName][iMorph] = new BufferAttribute(newAttributeArray, itemSize, normalized);
+ }
+ });
+ // If all morphs are zero, just discard the morph attributes we've just made
+ if (isNullMorph) {
+ newGeometry.morphAttributes = {};
+ }
+ mesh.geometry = newGeometry;
+ });
+ Array.from(geometryMap.keys()).forEach((originalGeometry) => {
+ originalGeometry.dispose();
+ });
+}
+
+/**
+ * If the given VRM is VRM0.0, rotate the `vrm.scene` by 180 degrees around the Y axis.
+ *
+ * @param vrm The target VRM
+ */
+function rotateVRM0(vrm) {
+ var _a;
+ if (((_a = vrm.meta) === null || _a === void 0 ? void 0 : _a.metaVersion) === '0') {
+ vrm.scene.rotation.y = Math.PI;
+ }
+}
+
+class VRMUtils {
+ constructor() {
+ // this class is not meant to be instantiated
+ }
+}
+VRMUtils.deepDispose = deepDispose;
+VRMUtils.removeUnnecessaryJoints = removeUnnecessaryJoints;
+VRMUtils.removeUnnecessaryVertices = removeUnnecessaryVertices;
+VRMUtils.rotateVRM0 = rotateVRM0;
+
+export { MToonMaterial, MToonMaterialDebugMode, MToonMaterialLoaderPlugin, MToonMaterialOutlineWidthMode, VRM, VRMAimConstraint, VRMCore, VRMCoreLoaderPlugin, VRMExpression, VRMExpressionLoaderPlugin, VRMExpressionManager, VRMExpressionMaterialColorBind, VRMExpressionMaterialColorType, VRMExpressionMorphTargetBind, VRMExpressionOverrideType, VRMExpressionPresetName, VRMExpressionTextureTransformBind, VRMFirstPerson, VRMFirstPersonLoaderPlugin, VRMFirstPersonMeshAnnotationType, VRMHumanBoneList, VRMHumanBoneName, VRMHumanBoneParentMap, VRMHumanoid, VRMHumanoidHelper, VRMHumanoidLoaderPlugin, VRMLoaderPlugin, VRMLookAt, VRMLookAtBoneApplier, VRMLookAtExpressionApplier, VRMLookAtHelper, VRMLookAtLoaderPlugin, VRMLookAtRangeMap, VRMLookAtTypeName, VRMMetaLoaderPlugin, VRMNodeConstraint, VRMNodeConstraintHelper, VRMNodeConstraintLoaderPlugin, VRMNodeConstraintManager, VRMRequiredHumanBoneName, VRMRollConstraint, VRMRotationConstraint, VRMSpringBoneCollider, VRMSpringBoneColliderHelper, VRMSpringBoneColliderShape, VRMSpringBoneColliderShapeCapsule, VRMSpringBoneColliderShapeSphere, VRMSpringBoneJoint, VRMSpringBoneJointHelper, VRMSpringBoneLoaderPlugin, VRMSpringBoneManager, VRMUtils };
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWUtdnJtLm1vZHVsZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vdGhyZWUtdnJtLWNvcmUvbGliL3RocmVlLXZybS1jb3JlLm1vZHVsZS5qcyIsIi4uL3NyYy9WUk0udHMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwiLi4vLi4vdGhyZWUtdnJtLW1hdGVyaWFscy1tdG9vbi9saWIvdGhyZWUtdnJtLW1hdGVyaWFscy1tdG9vbi5tb2R1bGUuanMiLCIuLi8uLi90aHJlZS12cm0tbWF0ZXJpYWxzLWhkci1lbWlzc2l2ZS1tdWx0aXBsaWVyL2xpYi90aHJlZS12cm0tbWF0ZXJpYWxzLWhkci1lbWlzc2l2ZS1tdWx0aXBsaWVyLm1vZHVsZS5qcyIsIi4uLy4uL3RocmVlLXZybS1tYXRlcmlhbHMtdjBjb21wYXQvbGliL3RocmVlLXZybS1tYXRlcmlhbHMtdjBjb21wYXQubW9kdWxlLmpzIiwiLi4vLi4vdGhyZWUtdnJtLW5vZGUtY29uc3RyYWludC9saWIvdGhyZWUtdnJtLW5vZGUtY29uc3RyYWludC5tb2R1bGUuanMiLCIuLi8uLi90aHJlZS12cm0tc3ByaW5nYm9uZS9saWIvdGhyZWUtdnJtLXNwcmluZ2JvbmUubW9kdWxlLmpzIiwiLi4vc3JjL1ZSTUxvYWRlclBsdWdpbi50cyIsIi4uL3NyYy9WUk1VdGlscy9kZWVwRGlzcG9zZS50cyIsIi4uL3NyYy9WUk1VdGlscy9yZW1vdmVVbm5lY2Vzc2FyeUpvaW50cy50cyIsIi4uL3NyYy9WUk1VdGlscy9yZW1vdmVVbm5lY2Vzc2FyeVZlcnRpY2VzLnRzIiwiLi4vc3JjL1ZSTVV0aWxzL3JvdGF0ZVZSTTAudHMiLCIuLi9zcmMvVlJNVXRpbHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAcGl4aXYvdGhyZWUtdnJtLWNvcmUgdjIuMC42XG4gKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgY29yZSBmZWF0dXJlcyBvZiBWUk0sIGZvciBAcGl4aXYvdGhyZWUtdnJtXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjMgcGl4aXYgSW5jLlxuICogQHBpeGl2L3RocmVlLXZybS1jb3JlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIE1JVCBMaWNlbnNlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcGl4aXYvdGhyZWUtdnJtL2Jsb2IvcmVsZWFzZS9MSUNFTlNFXG4gKi9cbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuLy8gYW5pbWF0aW9uTWl4ZXIg44Gu55uj6KaW5a++6LGh44Gv44CBU2NlbmUg44Gu5Lit44Gr5YWl44Gj44Gm44GE44KL5b+F6KaB44GM44GC44KL44CCXG4vLyDjgZ3jga7jgZ/jgoHjgIHooajnpLrjgqrjg5bjgrjjgqfjgq/jg4jjgafjga/jgarjgYTjgZHjgozjganjgIFPYmplY3QzRCDjgpLntpnmib/jgZfjgaYgU2NlbmUg44Gr5oqV5YWl44Gn44GN44KL44KI44GG44Gr44GZ44KL44CCXG5jbGFzcyBWUk1FeHByZXNzaW9uIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0Qge1xuICAgIC8qKlxuICAgICAqIEEgdmFsdWUgcmVwcmVzZW50cyBob3cgbXVjaCBpdCBzaG91bGQgb3ZlcnJpZGUgYmxpbmsgZXhwcmVzc2lvbnMuXG4gICAgICogYDAuMGAgPT0gbm8gb3ZlcnJpZGUgYXQgYWxsLCBgMS4wYCA9PSBjb21wbGV0ZWx5IGJsb2NrIHRoZSBleHByZXNzaW9ucy5cbiAgICAgKi9cbiAgICBnZXQgb3ZlcnJpZGVCbGlua0Ftb3VudCgpIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcnJpZGVCbGluayA9PT0gJ2Jsb2NrJykge1xuICAgICAgICAgICAgcmV0dXJuIDAuMCA8IHRoaXMud2VpZ2h0ID8gMS4wIDogMC4wO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMub3ZlcnJpZGVCbGluayA9PT0gJ2JsZW5kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2VpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDAuMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHZhbHVlIHJlcHJlc2VudHMgaG93IG11Y2ggaXQgc2hvdWxkIG92ZXJyaWRlIGxvb2tBdCBleHByZXNzaW9ucy5cbiAgICAgKiBgMC4wYCA9PSBubyBvdmVycmlkZSBhdCBhbGwsIGAxLjBgID09IGNvbXBsZXRlbHkgYmxvY2sgdGhlIGV4cHJlc3Npb25zLlxuICAgICAqL1xuICAgIGdldCBvdmVycmlkZUxvb2tBdEFtb3VudCgpIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcnJpZGVMb29rQXQgPT09ICdibG9jaycpIHtcbiAgICAgICAgICAgIHJldHVybiAwLjAgPCB0aGlzLndlaWdodCA/IDEuMCA6IDAuMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLm92ZXJyaWRlTG9va0F0ID09PSAnYmxlbmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53ZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMC4wO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgdmFsdWUgcmVwcmVzZW50cyBob3cgbXVjaCBpdCBzaG91bGQgb3ZlcnJpZGUgbW91dGggZXhwcmVzc2lvbnMuXG4gICAgICogYDAuMGAgPT0gbm8gb3ZlcnJpZGUgYXQgYWxsLCBgMS4wYCA9PSBjb21wbGV0ZWx5IGJsb2NrIHRoZSBleHByZXNzaW9ucy5cbiAgICAgKi9cbiAgICBnZXQgb3ZlcnJpZGVNb3V0aEFtb3VudCgpIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcnJpZGVNb3V0aCA9PT0gJ2Jsb2NrJykge1xuICAgICAgICAgICAgcmV0dXJuIDAuMCA8IHRoaXMud2VpZ2h0ID8gMS4wIDogMC4wO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMub3ZlcnJpZGVNb3V0aCA9PT0gJ2JsZW5kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2VpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDAuMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihleHByZXNzaW9uTmFtZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGN1cnJlbnQgd2VpZ2h0IG9mIHRoZSBleHByZXNzaW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy53ZWlnaHQgPSAwLjA7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbnRlcnByZXQgdmFsdWVzIGdyZWF0ZXIgdGhhbiAwLjUgYXMgMS4wLCBvcnRoZXJ3aXNlIDAuMC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuaXNCaW5hcnkgPSBmYWxzZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNwZWNpZnkgaG93IHRoZSBleHByZXNzaW9uIG92ZXJyaWRlcyBibGluayBleHByZXNzaW9ucy5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub3ZlcnJpZGVCbGluayA9ICdub25lJztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNwZWNpZnkgaG93IHRoZSBleHByZXNzaW9uIG92ZXJyaWRlcyBsb29rQXQgZXhwcmVzc2lvbnMuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm92ZXJyaWRlTG9va0F0ID0gJ25vbmUnO1xuICAgICAgICAvKipcbiAgICAgICAgICogU3BlY2lmeSBob3cgdGhlIGV4cHJlc3Npb24gb3ZlcnJpZGVzIG1vdXRoIGV4cHJlc3Npb25zLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vdmVycmlkZU1vdXRoID0gJ25vbmUnO1xuICAgICAgICB0aGlzLl9iaW5kcyA9IFtdO1xuICAgICAgICB0aGlzLm5hbWUgPSBgVlJNRXhwcmVzc2lvbl8ke2V4cHJlc3Npb25OYW1lfWA7XG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbk5hbWUgPSBleHByZXNzaW9uTmFtZTtcbiAgICAgICAgLy8gdHJhdmVyc2Ug5pmC44Gu5pWR5riI5omL5q6144Go44GX44GmIE9iamVjdDNEIOOBp+OBr+OBquOBhOOBk+OBqOOCkuaYjuekuuOBl+OBpuOBiuOBj1xuICAgICAgICB0aGlzLnR5cGUgPSAnVlJNRXhwcmVzc2lvbic7XG4gICAgICAgIC8vIOihqOekuuebrueahOOBruOCquODluOCuOOCp+OCr+ODiOOBp+OBr+OBquOBhOOBruOBp+OAgeiyoOiNt+i7vea4m+OBruOBn+OCgeOBqyB2aXNpYmxlIOOCkiBmYWxzZSDjgavjgZfjgabjgYrjgY/jgIJcbiAgICAgICAgLy8g44GT44KM44Gr44KI44KK44CB44GT44Gu44Kk44Oz44K544K/44Oz44K544Gr5a++44GZ44KL5q+O44OV44Os44O844Og44GuIG1hdHJpeCDoh6rli5XoqIjnrpfjgpLnnIHnlaXjgafjgY3jgovjgIJcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgfVxuICAgIGFkZEJpbmQoYmluZCkge1xuICAgICAgICB0aGlzLl9iaW5kcy5wdXNoKGJpbmQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBcHBseSB3ZWlnaHQgdG8gZXZlcnkgYXNzaWduZWQgYmxlbmQgc2hhcGVzLlxuICAgICAqIFNob3VsZCBiZSBjYWxsZWQgZXZlcnkgZnJhbWUuXG4gICAgICovXG4gICAgYXBwbHlXZWlnaHQob3B0aW9ucykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGxldCBhY3R1YWxXZWlnaHQgPSB0aGlzLmlzQmluYXJ5ID8gKHRoaXMud2VpZ2h0IDw9IDAuNSA/IDAuMCA6IDEuMCkgOiB0aGlzLndlaWdodDtcbiAgICAgICAgYWN0dWFsV2VpZ2h0ICo9IChfYSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5tdWx0aXBsaWVyKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAxLjA7XG4gICAgICAgIHRoaXMuX2JpbmRzLmZvckVhY2goKGJpbmQpID0+IGJpbmQuYXBwbHlXZWlnaHQoYWN0dWFsV2VpZ2h0KSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENsZWFyIHByZXZpb3VzbHkgYXNzaWduZWQgYmxlbmQgc2hhcGVzLlxuICAgICAqL1xuICAgIGNsZWFyQXBwbGllZFdlaWdodCgpIHtcbiAgICAgICAgdGhpcy5fYmluZHMuZm9yRWFjaCgoYmluZCkgPT4gYmluZC5jbGVhckFwcGxpZWRXZWlnaHQoKSk7XG4gICAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuXHJcbmZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFByaW1pdGl2ZXNJbnRlcm5hbChnbHRmLCBub2RlSW5kZXgsIG5vZGUpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IGpzb24gPSBnbHRmLnBhcnNlci5qc29uO1xuICAgIC8qKlxuICAgICAqIExldCdzIGxpc3QgdXAgZXZlcnkgcG9zc2libGUgcGF0dGVybnMgdGhhdCBwYXJzZWQgZ2x0ZiBub2RlcyB3aXRoIGEgbWVzaCBjYW4gaGF2ZSwsLFxuICAgICAqXG4gICAgICogXCIqXCIgaW5kaWNhdGVzIHRoYXQgdGhvc2UgbWVzaGVzIHNob3VsZCBiZSBsaXN0ZWQgdXAgdXNpbmcgdGhpcyBmdW5jdGlvblxuICAgICAqXG4gICAgICogIyMjIEEgbm9kZSB3aXRoIGEgKG1lc2gsIGEgc2lnbmxlIHByaW1pdGl2ZSlcbiAgICAgKlxuICAgICAqIC0gYFRIUkVFLk1lc2hgOiBUaGUgb25seSBwcmltaXRpdmUgb2YgdGhlIG1lc2ggKlxuICAgICAqXG4gICAgICogIyMjIEEgbm9kZSB3aXRoIGEgKG1lc2gsIG11bHRpcGxlIHByaW1pdGl2ZXMpXG4gICAgICpcbiAgICAgKiAtIGBUSFJFRS5Hcm91cGA6IFRoZSByb290IG9mIHRoZSBtZXNoXG4gICAgICogICAtIGBUSFJFRS5NZXNoYDogQSBwcmltaXRpdmUgb2YgdGhlIG1lc2ggKlxuICAgICAqICAgLSBgVEhSRUUuTWVzaGA6IEEgcHJpbWl0aXZlIG9mIHRoZSBtZXNoICgyKSAqXG4gICAgICpcbiAgICAgKiAjIyMgQSBub2RlIHdpdGggYSAobWVzaCwgbXVsdGlwbGUgcHJpbWl0aXZlcykgQU5EIChhIGNoaWxkIHdpdGggYSBtZXNoLCBhIHNpbmdsZSBwcmltaXRpdmUpXG4gICAgICpcbiAgICAgKiAtIGBUSFJFRS5Hcm91cGA6IFRoZSByb290IG9mIHRoZSBtZXNoXG4gICAgICogICAtIGBUSFJFRS5NZXNoYDogQSBwcmltaXRpdmUgb2YgdGhlIG1lc2ggKlxuICAgICAqICAgLSBgVEhSRUUuTWVzaGA6IEEgcHJpbWl0aXZlIG9mIHRoZSBtZXNoICgyKSAqXG4gICAgICogICAtIGBUSFJFRS5NZXNoYDogQSBwcmltaXRpdmUgb2YgYSBNRVNIIE9GIFRIRSBDSElMRFxuICAgICAqXG4gICAgICogIyMjIEEgbm9kZSB3aXRoIGEgKG1lc2gsIG11bHRpcGxlIHByaW1pdGl2ZXMpIEFORCAoYSBjaGlsZCB3aXRoIGEgbWVzaCwgbXVsdGlwbGUgcHJpbWl0aXZlcylcbiAgICAgKlxuICAgICAqIC0gYFRIUkVFLkdyb3VwYDogVGhlIHJvb3Qgb2YgdGhlIG1lc2hcbiAgICAgKiAgIC0gYFRIUkVFLk1lc2hgOiBBIHByaW1pdGl2ZSBvZiB0aGUgbWVzaCAqXG4gICAgICogICAtIGBUSFJFRS5NZXNoYDogQSBwcmltaXRpdmUgb2YgdGhlIG1lc2ggKDIpICpcbiAgICAgKiAgIC0gYFRIUkVFLkdyb3VwYDogVGhlIHJvb3Qgb2YgYSBNRVNIIE9GIFRIRSBDSElMRFxuICAgICAqICAgICAtIGBUSFJFRS5NZXNoYDogQSBwcmltaXRpdmUgb2YgdGhlIG1lc2ggb2YgdGhlIGNoaWxkXG4gICAgICogICAgIC0gYFRIUkVFLk1lc2hgOiBBIHByaW1pdGl2ZSBvZiB0aGUgbWVzaCBvZiB0aGUgY2hpbGQgKDIpXG4gICAgICpcbiAgICAgKiAjIyMgQSBub2RlIHdpdGggYSAobWVzaCwgbXVsdGlwbGUgcHJpbWl0aXZlcykgQlVUIHRoZSBub2RlIGlzIGEgYm9uZVxuICAgICAqXG4gICAgICogLSBgVEhSRUUuQm9uZWA6IFRoZSByb290IG9mIHRoZSBub2RlLCBhcyBhIGJvbmVcbiAgICAgKiAgIC0gYFRIUkVFLkdyb3VwYDogVGhlIHJvb3Qgb2YgdGhlIG1lc2hcbiAgICAgKiAgICAgLSBgVEhSRUUuTWVzaGA6IEEgcHJpbWl0aXZlIG9mIHRoZSBtZXNoICpcbiAgICAgKiAgICAgLSBgVEhSRUUuTWVzaGA6IEEgcHJpbWl0aXZlIG9mIHRoZSBtZXNoICgyKSAqXG4gICAgICpcbiAgICAgKiAjIyMgQSBub2RlIHdpdGggYSAobWVzaCwgbXVsdGlwbGUgcHJpbWl0aXZlcykgQU5EIChhIGNoaWxkIHdpdGggYSBtZXNoLCBtdWx0aXBsZSBwcmltaXRpdmVzKSBCVVQgdGhlIG5vZGUgaXMgYSBib25lXG4gICAgICpcbiAgICAgKiAtIGBUSFJFRS5Cb25lYDogVGhlIHJvb3Qgb2YgdGhlIG5vZGUsIGFzIGEgYm9uZVxuICAgICAqICAgLSBgVEhSRUUuR3JvdXBgOiBUaGUgcm9vdCBvZiB0aGUgbWVzaFxuICAgICAqICAgICAtIGBUSFJFRS5NZXNoYDogQSBwcmltaXRpdmUgb2YgdGhlIG1lc2ggKlxuICAgICAqICAgICAtIGBUSFJFRS5NZXNoYDogQSBwcmltaXRpdmUgb2YgdGhlIG1lc2ggKDIpICpcbiAgICAgKiAgIC0gYFRIUkVFLkdyb3VwYDogVGhlIHJvb3Qgb2YgYSBNRVNIIE9GIFRIRSBDSElMRFxuICAgICAqICAgICAtIGBUSFJFRS5NZXNoYDogQSBwcmltaXRpdmUgb2YgdGhlIG1lc2ggb2YgdGhlIGNoaWxkXG4gICAgICogICAgIC0gYFRIUkVFLk1lc2hgOiBBIHByaW1pdGl2ZSBvZiB0aGUgbWVzaCBvZiB0aGUgY2hpbGQgKDIpXG4gICAgICpcbiAgICAgKiAuLi5JIHdpbGwgdGFrZSBhIHN0cmF0ZWd5IHRoYXQgdHJhdmVyc2VzIHRoZSByb290IG9mIHRoZSBub2RlIGFuZCB0YWtlIGZpcnN0IChwcmltaXRpdmVDb3VudCkgbWVzaGVzLlxuICAgICAqL1xuICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBub2RlIGhhcyBhIG1lc2hcbiAgICBjb25zdCBzY2hlbWFOb2RlID0gKF9hID0ganNvbi5ub2RlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW25vZGVJbmRleF07XG4gICAgaWYgKHNjaGVtYU5vZGUgPT0gbnVsbCkge1xuICAgICAgICBjb25zb2xlLndhcm4oYGV4dHJhY3RQcmltaXRpdmVzSW50ZXJuYWw6IEF0dGVtcHQgdG8gdXNlIG5vZGVzWyR7bm9kZUluZGV4fV0gb2YgZ2xURiBidXQgdGhlIG5vZGUgZG9lc24ndCBleGlzdGApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbWVzaEluZGV4ID0gc2NoZW1hTm9kZS5tZXNoO1xuICAgIGlmIChtZXNoSW5kZXggPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gSG93IG1hbnkgcHJpbWl0aXZlcyB0aGUgbWVzaCBoYXM/XG4gICAgY29uc3Qgc2NoZW1hTWVzaCA9IChfYiA9IGpzb24ubWVzaGVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2JbbWVzaEluZGV4XTtcbiAgICBpZiAoc2NoZW1hTWVzaCA9PSBudWxsKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgZXh0cmFjdFByaW1pdGl2ZXNJbnRlcm5hbDogQXR0ZW1wdCB0byB1c2UgbWVzaGVzWyR7bWVzaEluZGV4fV0gb2YgZ2xURiBidXQgdGhlIG1lc2ggZG9lc24ndCBleGlzdGApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcHJpbWl0aXZlQ291bnQgPSBzY2hlbWFNZXNoLnByaW1pdGl2ZXMubGVuZ3RoO1xuICAgIC8vIFRyYXZlcnNlIHRoZSBub2RlIGFuZCB0YWtlIGZpcnN0IChwcmltaXRpdmVDb3VudCkgbWVzaGVzXG4gICAgY29uc3QgcHJpbWl0aXZlcyA9IFtdO1xuICAgIG5vZGUudHJhdmVyc2UoKG9iamVjdCkgPT4ge1xuICAgICAgICBpZiAocHJpbWl0aXZlcy5sZW5ndGggPCBwcmltaXRpdmVDb3VudCkge1xuICAgICAgICAgICAgaWYgKG9iamVjdC5pc01lc2gpIHtcbiAgICAgICAgICAgICAgICBwcmltaXRpdmVzLnB1c2gob2JqZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcmltaXRpdmVzO1xufVxuLyoqXG4gKiBFeHRyYWN0IHByaW1pdGl2ZXMgKCBgVEhSRUUuTWVzaFtdYCApIG9mIGEgbm9kZSBmcm9tIGEgbG9hZGVkIEdMVEYuXG4gKiBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdG8gZGlzdGluZ3Vpc2ggcHJpbWl0aXZlcyBhbmQgY2hpbGRyZW4gZnJvbSBhIG5vZGUgdGhhdCBoYXMgYm90aCBtZXNoZXMgYW5kIGNoaWxkcmVuLlxuICpcbiAqIEl0IHV0aWxpemVzIHRoZSBiZWhhdmlvciB0aGF0IEdMVEZMb2FkZXIgYWRkcyBtZXNoIHByaW1pdGl2ZXMgdG8gdGhlIG5vZGUgb2JqZWN0ICggYFRIUkVFLkdyb3VwYCApIGZpcnN0IHRoZW4gYWRkcyBpdHMgY2hpbGRyZW4uXG4gKlxuICogQHBhcmFtIGdsdGYgQSBHTFRGIG9iamVjdCB0YWtlbiBmcm9tIEdMVEZMb2FkZXJcbiAqIEBwYXJhbSBub2RlSW5kZXggVGhlIGluZGV4IG9mIHRoZSBub2RlXG4gKi9cbmZ1bmN0aW9uIGdsdGZFeHRyYWN0UHJpbWl0aXZlc0Zyb21Ob2RlKGdsdGYsIG5vZGVJbmRleCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB5aWVsZCBnbHRmLnBhcnNlci5nZXREZXBlbmRlbmN5KCdub2RlJywgbm9kZUluZGV4KTtcbiAgICAgICAgcmV0dXJuIGV4dHJhY3RQcmltaXRpdmVzSW50ZXJuYWwoZ2x0Ziwgbm9kZUluZGV4LCBub2RlKTtcbiAgICB9KTtcbn1cbi8qKlxuICogRXh0cmFjdCBwcmltaXRpdmVzICggYFRIUkVFLk1lc2hbXWAgKSBvZiBub2RlcyBmcm9tIGEgbG9hZGVkIEdMVEYuXG4gKiBTZWUge0BsaW5rIGdsdGZFeHRyYWN0UHJpbWl0aXZlc0Zyb21Ob2RlfSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEl0IHJldHVybnMgYSBtYXAgZnJvbSBub2RlIGluZGV4IHRvIGV4dHJhY3Rpb24gcmVzdWx0LlxuICogSWYgYSBub2RlIGRvZXMgbm90IGhhdmUgYSBtZXNoLCB0aGUgZW50cnkgZm9yIHRoZSBub2RlIHdpbGwgbm90IGJlIHB1dCBpbiB0aGUgcmV0dXJuaW5nIG1hcC5cbiAqXG4gKiBAcGFyYW0gZ2x0ZiBBIEdMVEYgb2JqZWN0IHRha2VuIGZyb20gR0xURkxvYWRlclxuICovXG5mdW5jdGlvbiBnbHRmRXh0cmFjdFByaW1pdGl2ZXNGcm9tTm9kZXMoZ2x0Zikge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IG5vZGVzID0geWllbGQgZ2x0Zi5wYXJzZXIuZ2V0RGVwZW5kZW5jaWVzKCdub2RlJyk7XG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4dHJhY3RQcmltaXRpdmVzSW50ZXJuYWwoZ2x0ZiwgaW5kZXgsIG5vZGUpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbWFwLnNldChpbmRleCwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfSk7XG59XG5cbi8qKlxuICogR2V0IGEgbWF0ZXJpYWwgZGVmaW5pdGlvbiBpbmRleCBvZiBnbFRGIGZyb20gYXNzb2NpYXRlZCBtYXRlcmlhbC5cbiAqIEl0J3MgYmFzaWNhbGx5IGEgY29tYXQgY29kZSBiZXR3ZWVuIFRocmVlLmpzIHIxMzMgb3IgYWJvdmUgYW5kIHByZXZpb3VzIHZlcnNpb25zLlxuICogQHBhcmFtIHBhcnNlciBHTFRGUGFyc2VyXG4gKiBAcGFyYW0gbWF0ZXJpYWwgQSBtYXRlcmlhbCBvZiBnbHRmXG4gKiBAcmV0dXJucyBNYXRlcmlhbCBkZWZpbml0aW9uIGluZGV4IG9mIGdsVEZcbiAqL1xuZnVuY3Rpb24gZ2x0ZkdldEFzc29jaWF0ZWRNYXRlcmlhbEluZGV4KHBhcnNlciwgbWF0ZXJpYWwpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHRocmVlUmV2aXNpb24gPSBwYXJzZUludChUSFJFRS5SRVZJU0lPTiwgMTApO1xuICAgIGxldCBpbmRleCA9IG51bGw7XG4gICAgaWYgKHRocmVlUmV2aXNpb24gPj0gMTMzKSB7XG4gICAgICAgIGluZGV4ID0gKF9iID0gKF9hID0gcGFyc2VyLmFzc29jaWF0aW9ucy5nZXQobWF0ZXJpYWwpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubWF0ZXJpYWxzKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBudWxsO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgYXNzb2NpYXRpb25zID0gcGFyc2VyLmFzc29jaWF0aW9ucztcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gYXNzb2NpYXRpb25zLmdldChtYXRlcmlhbCk7XG4gICAgICAgIGlmICgocmVmZXJlbmNlID09PSBudWxsIHx8IHJlZmVyZW5jZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVmZXJlbmNlLnR5cGUpID09PSAnbWF0ZXJpYWxzJykge1xuICAgICAgICAgICAgaW5kZXggPSByZWZlcmVuY2UuaW5kZXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGluZGV4O1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbmNvbnN0IFZSTUV4cHJlc3Npb25QcmVzZXROYW1lID0ge1xuICAgIEFhOiAnYWEnLFxuICAgIEloOiAnaWgnLFxuICAgIE91OiAnb3UnLFxuICAgIEVlOiAnZWUnLFxuICAgIE9oOiAnb2gnLFxuICAgIEJsaW5rOiAnYmxpbmsnLFxuICAgIEhhcHB5OiAnaGFwcHknLFxuICAgIEFuZ3J5OiAnYW5ncnknLFxuICAgIFNhZDogJ3NhZCcsXG4gICAgUmVsYXhlZDogJ3JlbGF4ZWQnLFxuICAgIExvb2tVcDogJ2xvb2tVcCcsXG4gICAgU3VycHJpc2VkOiAnc3VycHJpc2VkJyxcbiAgICBMb29rRG93bjogJ2xvb2tEb3duJyxcbiAgICBMb29rTGVmdDogJ2xvb2tMZWZ0JyxcbiAgICBMb29rUmlnaHQ6ICdsb29rUmlnaHQnLFxuICAgIEJsaW5rTGVmdDogJ2JsaW5rTGVmdCcsXG4gICAgQmxpbmtSaWdodDogJ2JsaW5rUmlnaHQnLFxuICAgIE5ldXRyYWw6ICduZXV0cmFsJyxcbn07XG5cbi8qKlxuICogQ2xhbXAgdGhlIGlucHV0IHZhbHVlIHdpdGhpbiBbMC4wIC0gMS4wXS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIGlucHV0IHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHNhdHVyYXRlKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGgubWF4KE1hdGgubWluKHZhbHVlLCAxLjApLCAwLjApO1xufVxuXG5jbGFzcyBWUk1FeHByZXNzaW9uTWFuYWdlciB7XG4gICAgZ2V0IGV4cHJlc3Npb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhwcmVzc2lvbnMuY29uY2F0KCk7XG4gICAgfVxuICAgIGdldCBleHByZXNzaW9uTWFwKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fZXhwcmVzc2lvbk1hcCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgbWFwIGZyb20gbmFtZSB0byBleHByZXNzaW9uLCBidXQgZXhjbHVkaW5nIGN1c3RvbSBleHByZXNzaW9ucy5cbiAgICAgKi9cbiAgICBnZXQgcHJlc2V0RXhwcmVzc2lvbk1hcCgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIGNvbnN0IHByZXNldE5hbWVTZXQgPSBuZXcgU2V0KE9iamVjdC52YWx1ZXMoVlJNRXhwcmVzc2lvblByZXNldE5hbWUpKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5fZXhwcmVzc2lvbk1hcCkuZm9yRWFjaCgoW25hbWUsIGV4cHJlc3Npb25dKSA9PiB7XG4gICAgICAgICAgICBpZiAocHJlc2V0TmFtZVNldC5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSBleHByZXNzaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBtYXAgZnJvbSBuYW1lIHRvIGV4cHJlc3Npb24sIGJ1dCBleGNsdWRpbmcgcHJlc2V0IGV4cHJlc3Npb25zLlxuICAgICAqL1xuICAgIGdldCBjdXN0b21FeHByZXNzaW9uTWFwKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgY29uc3QgcHJlc2V0TmFtZVNldCA9IG5ldyBTZXQoT2JqZWN0LnZhbHVlcyhWUk1FeHByZXNzaW9uUHJlc2V0TmFtZSkpO1xuICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLl9leHByZXNzaW9uTWFwKS5mb3JFYWNoKChbbmFtZSwgZXhwcmVzc2lvbl0pID0+IHtcbiAgICAgICAgICAgIGlmICghcHJlc2V0TmFtZVNldC5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSBleHByZXNzaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbmV3IHtAbGluayBWUk1FeHByZXNzaW9uTWFuYWdlcn0uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIHNldCBvZiBuYW1lIG9yIHByZXNldCBuYW1lIG9mIGV4cHJlc3Npb25zIHRoYXQgd2lsbCBiZSBvdmVycmlkZGVuIGJ5IHtAbGluayBWUk1FeHByZXNzaW9uLm92ZXJyaWRlQmxpbmt9LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5ibGlua0V4cHJlc3Npb25OYW1lcyA9IFsnYmxpbmsnLCAnYmxpbmtMZWZ0JywgJ2JsaW5rUmlnaHQnXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgc2V0IG9mIG5hbWUgb3IgcHJlc2V0IG5hbWUgb2YgZXhwcmVzc2lvbnMgdGhhdCB3aWxsIGJlIG92ZXJyaWRkZW4gYnkge0BsaW5rIFZSTUV4cHJlc3Npb24ub3ZlcnJpZGVMb29rQXR9LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5sb29rQXRFeHByZXNzaW9uTmFtZXMgPSBbJ2xvb2tMZWZ0JywgJ2xvb2tSaWdodCcsICdsb29rVXAnLCAnbG9va0Rvd24nXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgc2V0IG9mIG5hbWUgb3IgcHJlc2V0IG5hbWUgb2YgZXhwcmVzc2lvbnMgdGhhdCB3aWxsIGJlIG92ZXJyaWRkZW4gYnkge0BsaW5rIFZSTUV4cHJlc3Npb24ub3ZlcnJpZGVNb3V0aH0uXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm1vdXRoRXhwcmVzc2lvbk5hbWVzID0gWydhYScsICdlZScsICdpaCcsICdvaCcsICdvdSddO1xuICAgICAgICAvKipcbiAgICAgICAgICogQSBzZXQgb2Yge0BsaW5rIFZSTUV4cHJlc3Npb259LlxuICAgICAgICAgKiBXaGVuIHlvdSB3YW50IHRvIHJlZ2lzdGVyIGV4cHJlc3Npb25zLCB1c2Uge0BsaW5rIHJlZ2lzdGVyRXhwcmVzc2lvbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2V4cHJlc3Npb25zID0gW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIG1hcCBmcm9tIG5hbWUgdG8gZXhwcmVzc2lvbi5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2V4cHJlc3Npb25NYXAgPSB7fTtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb3B5IHRoZSBnaXZlbiB7QGxpbmsgVlJNRXhwcmVzc2lvbk1hbmFnZXJ9IGludG8gdGhpcyBvbmUuXG4gICAgICogQHBhcmFtIHNvdXJjZSBUaGUge0BsaW5rIFZSTUV4cHJlc3Npb25NYW5hZ2VyfSB5b3Ugd2FudCB0byBjb3B5XG4gICAgICogQHJldHVybnMgdGhpc1xuICAgICAqL1xuICAgIGNvcHkoc291cmNlKSB7XG4gICAgICAgIC8vIGZpcnN0IHVucmVnaXN0ZXIgYWxsIHRoZSBleHByZXNzaW9uIGl0IGhhc1xuICAgICAgICBjb25zdCBleHByZXNzaW9ucyA9IHRoaXMuX2V4cHJlc3Npb25zLmNvbmNhdCgpO1xuICAgICAgICBleHByZXNzaW9ucy5mb3JFYWNoKChleHByZXNzaW9uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gdGhlbiByZWdpc3RlciBhbGwgdGhlIGV4cHJlc3Npb24gb2YgdGhlIHNvdXJjZVxuICAgICAgICBzb3VyY2UuX2V4cHJlc3Npb25zLmZvckVhY2goKGV4cHJlc3Npb24pID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gY29weSByZW1haW5pbmcgbWVtYmVyc1xuICAgICAgICB0aGlzLmJsaW5rRXhwcmVzc2lvbk5hbWVzID0gc291cmNlLmJsaW5rRXhwcmVzc2lvbk5hbWVzLmNvbmNhdCgpO1xuICAgICAgICB0aGlzLmxvb2tBdEV4cHJlc3Npb25OYW1lcyA9IHNvdXJjZS5sb29rQXRFeHByZXNzaW9uTmFtZXMuY29uY2F0KCk7XG4gICAgICAgIHRoaXMubW91dGhFeHByZXNzaW9uTmFtZXMgPSBzb3VyY2UubW91dGhFeHByZXNzaW9uTmFtZXMuY29uY2F0KCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgY2xvbmUgb2YgdGhpcyB7QGxpbmsgVlJNRXhwcmVzc2lvbk1hbmFnZXJ9LlxuICAgICAqIEByZXR1cm5zIENvcGllZCB7QGxpbmsgVlJNRXhwcmVzc2lvbk1hbmFnZXJ9XG4gICAgICovXG4gICAgY2xvbmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgVlJNRXhwcmVzc2lvbk1hbmFnZXIoKS5jb3B5KHRoaXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSByZWdpc3RlcmVkIGV4cHJlc3Npb24uXG4gICAgICogSWYgaXQgY2Fubm90IGZpbmQgYW4gZXhwcmVzc2lvbiwgaXQgd2lsbCByZXR1cm4gYG51bGxgIGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9yIHByZXNldCBuYW1lIG9mIHRoZSBleHByZXNzaW9uXG4gICAgICovXG4gICAgZ2V0RXhwcmVzc2lvbihuYW1lKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMuX2V4cHJlc3Npb25NYXBbbmFtZV0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIGFuIGV4cHJlc3Npb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXhwcmVzc2lvbiB7QGxpbmsgVlJNRXhwcmVzc2lvbn0gdGhhdCBkZXNjcmliZXMgdGhlIGV4cHJlc3Npb25cbiAgICAgKi9cbiAgICByZWdpc3RlckV4cHJlc3Npb24oZXhwcmVzc2lvbikge1xuICAgICAgICB0aGlzLl9leHByZXNzaW9ucy5wdXNoKGV4cHJlc3Npb24pO1xuICAgICAgICB0aGlzLl9leHByZXNzaW9uTWFwW2V4cHJlc3Npb24uZXhwcmVzc2lvbk5hbWVdID0gZXhwcmVzc2lvbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVW5yZWdpc3RlciBhbiBleHByZXNzaW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIGV4cHJlc3Npb24gVGhlIGV4cHJlc3Npb24geW91IHdhbnQgdG8gdW5yZWdpc3RlclxuICAgICAqL1xuICAgIHVucmVnaXN0ZXJFeHByZXNzaW9uKGV4cHJlc3Npb24pIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9leHByZXNzaW9ucy5pbmRleE9mKGV4cHJlc3Npb24pO1xuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTUV4cHJlc3Npb25NYW5hZ2VyOiBUaGUgc3BlY2lmaWVkIGV4cHJlc3Npb25zIGlzIG5vdCByZWdpc3RlcmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZXhwcmVzc2lvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2V4cHJlc3Npb25NYXBbZXhwcmVzc2lvbi5leHByZXNzaW9uTmFtZV07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgY3VycmVudCB3ZWlnaHQgb2YgdGhlIHNwZWNpZmllZCBleHByZXNzaW9uLlxuICAgICAqIElmIGl0IGRvZXNuJ3QgaGF2ZSBhbiBleHByZXNzaW9uIG9mIGdpdmVuIG5hbWUsIGl0IHdpbGwgcmV0dXJuIGBudWxsYCBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgZXhwcmVzc2lvblxuICAgICAqL1xuICAgIGdldFZhbHVlKG5hbWUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBleHByZXNzaW9uID0gdGhpcy5nZXRFeHByZXNzaW9uKG5hbWUpO1xuICAgICAgICByZXR1cm4gKF9hID0gZXhwcmVzc2lvbiA9PT0gbnVsbCB8fCBleHByZXNzaW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHByZXNzaW9uLndlaWdodCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0IGEgd2VpZ2h0IHRvIHRoZSBzcGVjaWZpZWQgZXhwcmVzc2lvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIGV4cHJlc3Npb25cbiAgICAgKiBAcGFyYW0gd2VpZ2h0IFdlaWdodFxuICAgICAqL1xuICAgIHNldFZhbHVlKG5hbWUsIHdlaWdodCkge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uID0gdGhpcy5nZXRFeHByZXNzaW9uKG5hbWUpO1xuICAgICAgICBpZiAoZXhwcmVzc2lvbikge1xuICAgICAgICAgICAgZXhwcmVzc2lvbi53ZWlnaHQgPSBzYXR1cmF0ZSh3ZWlnaHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBhIHRyYWNrIG5hbWUgb2Ygc3BlY2lmaWVkIGV4cHJlc3Npb24uXG4gICAgICogVGhpcyB0cmFjayBuYW1lIGlzIG5lZWRlZCB0byBtYW5pcHVsYXRlIGl0cyBleHByZXNzaW9uIHZpYSBrZXlmcmFtZSBhbmltYXRpb25zLlxuICAgICAqXG4gICAgICogQGV4YW1wbGUgTWFuaXB1bGF0ZSBhbiBleHByZXNzaW9uIHVzaW5nIGtleWZyYW1lIGFuaW1hdGlvblxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgdHJhY2tOYW1lID0gdnJtLmV4cHJlc3Npb25NYW5hZ2VyLmdldEV4cHJlc3Npb25UcmFja05hbWUoICdibGluaycgKTtcbiAgICAgKiBjb25zdCB0cmFjayA9IG5ldyBUSFJFRS5OdW1iZXJLZXlmcmFtZVRyYWNrKFxuICAgICAqICAgbmFtZSxcbiAgICAgKiAgIFsgMC4wLCAwLjUsIDEuMCBdLCAvLyB0aW1lc1xuICAgICAqICAgWyAwLjAsIDEuMCwgMC4wIF0gLy8gdmFsdWVzXG4gICAgICogKTtcbiAgICAgKlxuICAgICAqIGNvbnN0IGNsaXAgPSBuZXcgVEhSRUUuQW5pbWF0aW9uQ2xpcChcbiAgICAgKiAgICdibGluaycsIC8vIG5hbWVcbiAgICAgKiAgIDEuMCwgLy8gZHVyYXRpb25cbiAgICAgKiAgIFsgdHJhY2sgXSAvLyB0cmFja3NcbiAgICAgKiApO1xuICAgICAqXG4gICAgICogY29uc3QgbWl4ZXIgPSBuZXcgVEhSRUUuQW5pbWF0aW9uTWl4ZXIoIHZybS5zY2VuZSApO1xuICAgICAqIGNvbnN0IGFjdGlvbiA9IG1peGVyLmNsaXBBY3Rpb24oIGNsaXAgKTtcbiAgICAgKiBhY3Rpb24ucGxheSgpO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgZXhwcmVzc2lvblxuICAgICAqL1xuICAgIGdldEV4cHJlc3Npb25UcmFja05hbWUobmFtZSkge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uID0gdGhpcy5nZXRFeHByZXNzaW9uKG5hbWUpO1xuICAgICAgICByZXR1cm4gZXhwcmVzc2lvbiA/IGAke2V4cHJlc3Npb24ubmFtZX0ud2VpZ2h0YCA6IG51bGw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBldmVyeSBleHByZXNzaW9ucy5cbiAgICAgKi9cbiAgICB1cGRhdGUoKSB7XG4gICAgICAgIC8vIHNlZSBob3cgbXVjaCB3ZSBzaG91bGQgb3ZlcnJpZGUgY2VydGFpbiBleHByZXNzaW9uc1xuICAgICAgICBjb25zdCB3ZWlnaHRNdWx0aXBsaWVycyA9IHRoaXMuX2NhbGN1bGF0ZVdlaWdodE11bHRpcGxpZXJzKCk7XG4gICAgICAgIC8vIHJlc2V0IGV4cHJlc3Npb24gYmluZHMgZmlyc3RcbiAgICAgICAgdGhpcy5fZXhwcmVzc2lvbnMuZm9yRWFjaCgoZXhwcmVzc2lvbikgPT4ge1xuICAgICAgICAgICAgZXhwcmVzc2lvbi5jbGVhckFwcGxpZWRXZWlnaHQoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHRoZW4gYXBwbHkgYmluZHNcbiAgICAgICAgdGhpcy5fZXhwcmVzc2lvbnMuZm9yRWFjaCgoZXhwcmVzc2lvbikgPT4ge1xuICAgICAgICAgICAgbGV0IG11bHRpcGxpZXIgPSAxLjA7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZXhwcmVzc2lvbi5leHByZXNzaW9uTmFtZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmJsaW5rRXhwcmVzc2lvbk5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbXVsdGlwbGllciAqPSB3ZWlnaHRNdWx0aXBsaWVycy5ibGluaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmxvb2tBdEV4cHJlc3Npb25OYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgKj0gd2VpZ2h0TXVsdGlwbGllcnMubG9va0F0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubW91dGhFeHByZXNzaW9uTmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBtdWx0aXBsaWVyICo9IHdlaWdodE11bHRpcGxpZXJzLm1vdXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXhwcmVzc2lvbi5hcHBseVdlaWdodCh7IG11bHRpcGxpZXIgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGUgc3VtIG9mIG92ZXJyaWRlIGFtb3VudHMgdG8gc2VlIGhvdyBtdWNoIHdlIHNob3VsZCBtdWx0aXBseSB3ZWlnaHRzIG9mIGNlcnRhaW4gZXhwcmVzc2lvbnMuXG4gICAgICovXG4gICAgX2NhbGN1bGF0ZVdlaWdodE11bHRpcGxpZXJzKCkge1xuICAgICAgICBsZXQgYmxpbmsgPSAxLjA7XG4gICAgICAgIGxldCBsb29rQXQgPSAxLjA7XG4gICAgICAgIGxldCBtb3V0aCA9IDEuMDtcbiAgICAgICAgdGhpcy5fZXhwcmVzc2lvbnMuZm9yRWFjaCgoZXhwcmVzc2lvbikgPT4ge1xuICAgICAgICAgICAgYmxpbmsgLT0gZXhwcmVzc2lvbi5vdmVycmlkZUJsaW5rQW1vdW50O1xuICAgICAgICAgICAgbG9va0F0IC09IGV4cHJlc3Npb24ub3ZlcnJpZGVMb29rQXRBbW91bnQ7XG4gICAgICAgICAgICBtb3V0aCAtPSBleHByZXNzaW9uLm92ZXJyaWRlTW91dGhBbW91bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICBibGluayA9IE1hdGgubWF4KDAuMCwgYmxpbmspO1xuICAgICAgICBsb29rQXQgPSBNYXRoLm1heCgwLjAsIGxvb2tBdCk7XG4gICAgICAgIG1vdXRoID0gTWF0aC5tYXgoMC4wLCBtb3V0aCk7XG4gICAgICAgIHJldHVybiB7IGJsaW5rLCBsb29rQXQsIG1vdXRoIH07XG4gICAgfVxufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbmNvbnN0IFZSTUV4cHJlc3Npb25NYXRlcmlhbENvbG9yVHlwZSA9IHtcbiAgICBDb2xvcjogJ2NvbG9yJyxcbiAgICBFbWlzc2lvbkNvbG9yOiAnZW1pc3Npb25Db2xvcicsXG4gICAgU2hhZGVDb2xvcjogJ3NoYWRlQ29sb3InLFxuICAgIE1hdGNhcENvbG9yOiAnbWF0Y2FwQ29sb3InLFxuICAgIFJpbUNvbG9yOiAncmltQ29sb3InLFxuICAgIE91dGxpbmVDb2xvcjogJ291dGxpbmVDb2xvcicsXG59O1xuY29uc3QgdjBFeHByZXNzaW9uTWF0ZXJpYWxDb2xvck1hcCA9IHtcbiAgICBfQ29sb3I6IFZSTUV4cHJlc3Npb25NYXRlcmlhbENvbG9yVHlwZS5Db2xvcixcbiAgICBfRW1pc3Npb25Db2xvcjogVlJNRXhwcmVzc2lvbk1hdGVyaWFsQ29sb3JUeXBlLkVtaXNzaW9uQ29sb3IsXG4gICAgX1NoYWRlQ29sb3I6IFZSTUV4cHJlc3Npb25NYXRlcmlhbENvbG9yVHlwZS5TaGFkZUNvbG9yLFxuICAgIF9SaW1Db2xvcjogVlJNRXhwcmVzc2lvbk1hdGVyaWFsQ29sb3JUeXBlLlJpbUNvbG9yLFxuICAgIF9PdXRsaW5lQ29sb3I6IFZSTUV4cHJlc3Npb25NYXRlcmlhbENvbG9yVHlwZS5PdXRsaW5lQ29sb3IsXG59O1xuXG5jb25zdCBfY29sb3IgPSBuZXcgVEhSRUUuQ29sb3IoKTtcbi8qKlxuICogQSBiaW5kIG9mIGV4cHJlc3Npb24gaW5mbHVlbmNlcyB0byBhIG1hdGVyaWFsIGNvbG9yLlxuICovXG5jbGFzcyBWUk1FeHByZXNzaW9uTWF0ZXJpYWxDb2xvckJpbmQge1xuICAgIGNvbnN0cnVjdG9yKHsgbWF0ZXJpYWwsIHR5cGUsIHRhcmdldFZhbHVlLCB9KSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICB0aGlzLm1hdGVyaWFsID0gbWF0ZXJpYWw7XG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgIHRoaXMudGFyZ2V0VmFsdWUgPSB0YXJnZXRWYWx1ZTtcbiAgICAgICAgLy8gaW5pdCBwcm9wZXJ0eSBuYW1lXG4gICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZU1hcCA9IChfYSA9IE9iamVjdC5lbnRyaWVzKFZSTUV4cHJlc3Npb25NYXRlcmlhbENvbG9yQmluZC5fcHJvcGVydHlOYW1lTWFwTWFwKS5maW5kKChbZGlzdGluZ3Vpc2hlcl0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBtYXRlcmlhbFtkaXN0aW5ndWlzaGVyXSA9PT0gdHJ1ZTtcbiAgICAgICAgfSkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVsxXTtcbiAgICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gKF9iID0gcHJvcGVydHlOYW1lTWFwID09PSBudWxsIHx8IHByb3BlcnR5TmFtZU1hcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJvcGVydHlOYW1lTWFwW3R5cGVdKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBudWxsO1xuICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVHJpZWQgdG8gYWRkIGEgbWF0ZXJpYWwgY29sb3IgYmluZCB0byB0aGUgbWF0ZXJpYWwgJHsoX2MgPSBtYXRlcmlhbC5uYW1lKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAnKG5vIG5hbWUpJ30sIHRoZSB0eXBlICR7dHlwZX0gYnV0IHRoZSBtYXRlcmlhbCBvciB0aGUgdHlwZSBpcyBub3Qgc3VwcG9ydGVkLmApO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gbWF0ZXJpYWxbcHJvcGVydHlOYW1lXTtcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHRhcmdldC5jbG9uZSgpO1xuICAgICAgICAgICAgLy8g6LKg44Gu5YCk44KS5L+d5oyB44GZ44KL44Gf44KB44GrQ29sb3Iuc3Vi44KS5L2/44KP44Ga44Gr5beu5YiG44KS6KiI566X44GZ44KLXG4gICAgICAgICAgICBjb25zdCBkZWx0YVZhbHVlID0gbmV3IFRIUkVFLkNvbG9yKHRhcmdldFZhbHVlLnIgLSBpbml0aWFsVmFsdWUuciwgdGFyZ2V0VmFsdWUuZyAtIGluaXRpYWxWYWx1ZS5nLCB0YXJnZXRWYWx1ZS5iIC0gaW5pdGlhbFZhbHVlLmIpO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgICAgIGluaXRpYWxWYWx1ZSxcbiAgICAgICAgICAgICAgICBkZWx0YVZhbHVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhcHBseVdlaWdodCh3ZWlnaHQpIHtcbiAgICAgICAgaWYgKHRoaXMuX3N0YXRlID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIHdhcm5pbmcgaXMgYWxyZWFkeSBlbWl0dGVkIGluIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBwcm9wZXJ0eU5hbWUsIGRlbHRhVmFsdWUgfSA9IHRoaXMuX3N0YXRlO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLm1hdGVyaWFsW3Byb3BlcnR5TmFtZV07XG4gICAgICAgIGlmICh0YXJnZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIFRPRE86IHdlIHNob3VsZCBraWNrIHRoaXMgYXQgYGFkZE1hdGVyaWFsVmFsdWVgXG4gICAgICAgIHRhcmdldC5hZGQoX2NvbG9yLmNvcHkoZGVsdGFWYWx1ZSkubXVsdGlwbHlTY2FsYXIod2VpZ2h0KSk7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tYXRlcmlhbC5zaG91bGRBcHBseVVuaWZvcm1zID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHRoaXMubWF0ZXJpYWwuc2hvdWxkQXBwbHlVbmlmb3JtcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2xlYXJBcHBsaWVkV2VpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5fc3RhdGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gd2FybmluZyBpcyBhbHJlYWR5IGVtaXR0ZWQgaW4gY29uc3RydWN0b3JcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHByb3BlcnR5TmFtZSwgaW5pdGlhbFZhbHVlIH0gPSB0aGlzLl9zdGF0ZTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5tYXRlcmlhbFtwcm9wZXJ0eU5hbWVdO1xuICAgICAgICBpZiAodGFyZ2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBUT0RPOiB3ZSBzaG91bGQga2ljayB0aGlzIGF0IGBhZGRNYXRlcmlhbFZhbHVlYFxuICAgICAgICB0YXJnZXQuY29weShpbml0aWFsVmFsdWUpO1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWF0ZXJpYWwuc2hvdWxkQXBwbHlVbmlmb3JtcyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICB0aGlzLm1hdGVyaWFsLnNob3VsZEFwcGx5VW5pZm9ybXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBNYXBwaW5nIG9mIHByb3BlcnR5IG5hbWVzIGZyb20gVlJNQy9tYXRlcmlhbENvbG9yQmluZHMudHlwZSB0byB0aHJlZS5qcy9NYXRlcmlhbC5cbiAqL1xuVlJNRXhwcmVzc2lvbk1hdGVyaWFsQ29sb3JCaW5kLl9wcm9wZXJ0eU5hbWVNYXBNYXAgPSB7XG4gICAgaXNNZXNoU3RhbmRhcmRNYXRlcmlhbDoge1xuICAgICAgICBjb2xvcjogJ2NvbG9yJyxcbiAgICAgICAgZW1pc3Npb25Db2xvcjogJ2VtaXNzaXZlJyxcbiAgICB9LFxuICAgIGlzTWVzaEJhc2ljTWF0ZXJpYWw6IHtcbiAgICAgICAgY29sb3I6ICdjb2xvcicsXG4gICAgfSxcbiAgICBpc01Ub29uTWF0ZXJpYWw6IHtcbiAgICAgICAgY29sb3I6ICdjb2xvcicsXG4gICAgICAgIGVtaXNzaW9uQ29sb3I6ICdlbWlzc2l2ZScsXG4gICAgICAgIG91dGxpbmVDb2xvcjogJ291dGxpbmVDb2xvckZhY3RvcicsXG4gICAgICAgIG1hdGNhcENvbG9yOiAnbWF0Y2FwRmFjdG9yJyxcbiAgICAgICAgcmltQ29sb3I6ICdwYXJhbWV0cmljUmltQ29sb3JGYWN0b3InLFxuICAgICAgICBzaGFkZUNvbG9yOiAnc2hhZGVDb2xvckZhY3RvcicsXG4gICAgfSxcbn07XG5cbi8qKlxuICogQSBiaW5kIG9mIHtAbGluayBWUk1FeHByZXNzaW9ufSBpbmZsdWVuY2VzIHRvIG1vcnBoIHRhcmdldHMuXG4gKi9cbmNsYXNzIFZSTUV4cHJlc3Npb25Nb3JwaFRhcmdldEJpbmQge1xuICAgIGNvbnN0cnVjdG9yKHsgcHJpbWl0aXZlcywgaW5kZXgsIHdlaWdodCwgfSkge1xuICAgICAgICB0aGlzLnByaW1pdGl2ZXMgPSBwcmltaXRpdmVzO1xuICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXg7XG4gICAgICAgIHRoaXMud2VpZ2h0ID0gd2VpZ2h0O1xuICAgIH1cbiAgICBhcHBseVdlaWdodCh3ZWlnaHQpIHtcbiAgICAgICAgdGhpcy5wcmltaXRpdmVzLmZvckVhY2goKG1lc2gpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmICgoKF9hID0gbWVzaC5tb3JwaFRhcmdldEluZmx1ZW5jZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVt0aGlzLmluZGV4XSkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG1lc2gubW9ycGhUYXJnZXRJbmZsdWVuY2VzW3RoaXMuaW5kZXhdICs9IHRoaXMud2VpZ2h0ICogd2VpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY2xlYXJBcHBsaWVkV2VpZ2h0KCkge1xuICAgICAgICB0aGlzLnByaW1pdGl2ZXMuZm9yRWFjaCgobWVzaCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKCgoX2EgPSBtZXNoLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW3RoaXMuaW5kZXhdKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbWVzaC5tb3JwaFRhcmdldEluZmx1ZW5jZXNbdGhpcy5pbmRleF0gPSAwLjA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuY29uc3QgX3YyID0gbmV3IFRIUkVFLlZlY3RvcjIoKTtcbi8qKlxuICogQSBiaW5kIG9mIGV4cHJlc3Npb24gaW5mbHVlbmNlcyB0byB0ZXh0dXJlIHRyYW5zZm9ybXMuXG4gKi9cbmNsYXNzIFZSTUV4cHJlc3Npb25UZXh0dXJlVHJhbnNmb3JtQmluZCB7XG4gICAgY29uc3RydWN0b3IoeyBtYXRlcmlhbCwgc2NhbGUsIG9mZnNldCwgfSkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICB0aGlzLm1hdGVyaWFsID0gbWF0ZXJpYWw7XG4gICAgICAgIHRoaXMuc2NhbGUgPSBzY2FsZTtcbiAgICAgICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZXMgPSAoX2EgPSBPYmplY3QuZW50cmllcyhWUk1FeHByZXNzaW9uVGV4dHVyZVRyYW5zZm9ybUJpbmQuX3Byb3BlcnR5TmFtZXNNYXApLmZpbmQoKFtkaXN0aW5ndWlzaGVyXSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1hdGVyaWFsW2Rpc3Rpbmd1aXNoZXJdID09PSB0cnVlO1xuICAgICAgICB9KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdO1xuICAgICAgICBpZiAocHJvcGVydHlOYW1lcyA9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFRyaWVkIHRvIGFkZCBhIHRleHR1cmUgdHJhbnNmb3JtIGJpbmQgdG8gdGhlIG1hdGVyaWFsICR7KF9iID0gbWF0ZXJpYWwubmFtZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJyhubyBuYW1lKSd9IGJ1dCB0aGUgbWF0ZXJpYWwgaXMgbm90IHN1cHBvcnRlZC5gKTtcbiAgICAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXMgPSBbXTtcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuZm9yRWFjaCgocHJvcGVydHlOYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHR1cmUgPSAoX2EgPSBtYXRlcmlhbFtwcm9wZXJ0eU5hbWVdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hdGVyaWFsW3Byb3BlcnR5TmFtZV0gPSB0ZXh0dXJlOyAvLyBiZWNhdXNlIHRoZSB0ZXh0dXJlIGlzIGNsb25lZFxuICAgICAgICAgICAgICAgIGNvbnN0IGluaXRpYWxPZmZzZXQgPSB0ZXh0dXJlLm9mZnNldC5jbG9uZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluaXRpYWxTY2FsZSA9IHRleHR1cmUucmVwZWF0LmNsb25lKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVsdGFPZmZzZXQgPSBvZmZzZXQuY2xvbmUoKS5zdWIoaW5pdGlhbE9mZnNldCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVsdGFTY2FsZSA9IHNjYWxlLmNsb25lKCkuc3ViKGluaXRpYWxTY2FsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvcGVydGllcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBkZWx0YU9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFNjYWxlLFxuICAgICAgICAgICAgICAgICAgICBkZWx0YVNjYWxlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXBwbHlXZWlnaHQod2VpZ2h0KSB7XG4gICAgICAgIHRoaXMuX3Byb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMubWF0ZXJpYWxbcHJvcGVydHkubmFtZV07XG4gICAgICAgICAgICBpZiAodGFyZ2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IC8vIFRPRE86IHdlIHNob3VsZCBraWNrIHRoaXMgYXQgYGFkZE1hdGVyaWFsVmFsdWVgXG4gICAgICAgICAgICB0YXJnZXQub2Zmc2V0LmFkZChfdjIuY29weShwcm9wZXJ0eS5kZWx0YU9mZnNldCkubXVsdGlwbHlTY2FsYXIod2VpZ2h0KSk7XG4gICAgICAgICAgICB0YXJnZXQucmVwZWF0LmFkZChfdjIuY29weShwcm9wZXJ0eS5kZWx0YVNjYWxlKS5tdWx0aXBseVNjYWxhcih3ZWlnaHQpKTtcbiAgICAgICAgICAgIHRhcmdldC5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjbGVhckFwcGxpZWRXZWlnaHQoKSB7XG4gICAgICAgIHRoaXMuX3Byb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMubWF0ZXJpYWxbcHJvcGVydHkubmFtZV07XG4gICAgICAgICAgICBpZiAodGFyZ2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IC8vIFRPRE86IHdlIHNob3VsZCBraWNrIHRoaXMgYXQgYGFkZE1hdGVyaWFsVmFsdWVgXG4gICAgICAgICAgICB0YXJnZXQub2Zmc2V0LmNvcHkocHJvcGVydHkuaW5pdGlhbE9mZnNldCk7XG4gICAgICAgICAgICB0YXJnZXQucmVwZWF0LmNvcHkocHJvcGVydHkuaW5pdGlhbFNjYWxlKTtcbiAgICAgICAgICAgIHRhcmdldC5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblZSTUV4cHJlc3Npb25UZXh0dXJlVHJhbnNmb3JtQmluZC5fcHJvcGVydHlOYW1lc01hcCA9IHtcbiAgICBpc01lc2hTdGFuZGFyZE1hdGVyaWFsOiBbXG4gICAgICAgICdtYXAnLFxuICAgICAgICAnZW1pc3NpdmVNYXAnLFxuICAgICAgICAnYnVtcE1hcCcsXG4gICAgICAgICdub3JtYWxNYXAnLFxuICAgICAgICAnZGlzcGxhY2VtZW50TWFwJyxcbiAgICAgICAgJ3JvdWdobmVzc01hcCcsXG4gICAgICAgICdtZXRhbG5lc3NNYXAnLFxuICAgICAgICAnYWxwaGFNYXAnLFxuICAgIF0sXG4gICAgaXNNZXNoQmFzaWNNYXRlcmlhbDogWydtYXAnLCAnc3BlY3VsYXJNYXAnLCAnYWxwaGFNYXAnXSxcbiAgICBpc01Ub29uTWF0ZXJpYWw6IFtcbiAgICAgICAgJ21hcCcsXG4gICAgICAgICdub3JtYWxNYXAnLFxuICAgICAgICAnZW1pc3NpdmVNYXAnLFxuICAgICAgICAnc2hhZGVNdWx0aXBseVRleHR1cmUnLFxuICAgICAgICAncmltTXVsdGlwbHlUZXh0dXJlJyxcbiAgICAgICAgJ291dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZScsXG4gICAgICAgICd1dkFuaW1hdGlvbk1hc2tUZXh0dXJlJyxcbiAgICBdLFxufTtcblxuLyoqXG4gKiBQb3NzaWJsZSBzcGVjIHZlcnNpb25zIGl0IHJlY29nbml6ZXMuXG4gKi9cbmNvbnN0IFBPU1NJQkxFX1NQRUNfVkVSU0lPTlMkNCA9IG5ldyBTZXQoWycxLjAnLCAnMS4wLWJldGEnXSk7XG4vKipcbiAqIEEgcGx1Z2luIG9mIEdMVEZMb2FkZXIgdGhhdCBpbXBvcnRzIGEge0BsaW5rIFZSTUV4cHJlc3Npb25NYW5hZ2VyfSBmcm9tIGEgVlJNIGV4dGVuc2lvbiBvZiBhIEdMVEYuXG4gKi9cbmNsYXNzIFZSTUV4cHJlc3Npb25Mb2FkZXJQbHVnaW4ge1xuICAgIGdldCBuYW1lKCkge1xuICAgICAgICAvLyBXZSBzaG91bGQgdXNlIHRoZSBleHRlbnNpb24gbmFtZSBpbnN0ZWFkIGJ1dCB3ZSBoYXZlIG11bHRpcGxlIHBsdWdpbnMgZm9yIGFuIGV4dGVuc2lvbi4uLlxuICAgICAgICByZXR1cm4gJ1ZSTUV4cHJlc3Npb25Mb2FkZXJQbHVnaW4nO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihwYXJzZXIpIHtcbiAgICAgICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG4gICAgfVxuICAgIGFmdGVyUm9vdChnbHRmKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBnbHRmLnVzZXJEYXRhLnZybUV4cHJlc3Npb25NYW5hZ2VyID0geWllbGQgdGhpcy5faW1wb3J0KGdsdGYpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW1wb3J0IGEge0BsaW5rIFZSTUV4cHJlc3Npb25NYW5hZ2VyfSBmcm9tIGEgVlJNLlxuICAgICAqXG4gICAgICogQHBhcmFtIGdsdGYgQSBwYXJzZWQgcmVzdWx0IG9mIEdMVEYgdGFrZW4gZnJvbSBHTFRGTG9hZGVyXG4gICAgICovXG4gICAgX2ltcG9ydChnbHRmKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCB2MVJlc3VsdCA9IHlpZWxkIHRoaXMuX3YxSW1wb3J0KGdsdGYpO1xuICAgICAgICAgICAgaWYgKHYxUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHYxUmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdjBSZXN1bHQgPSB5aWVsZCB0aGlzLl92MEltcG9ydChnbHRmKTtcbiAgICAgICAgICAgIGlmICh2MFJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2MFJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX3YxSW1wb3J0KGdsdGYpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnBhcnNlci5qc29uO1xuICAgICAgICAgICAgLy8gZWFybHkgYWJvcnQgaWYgaXQgZG9lc24ndCB1c2UgdnJtXG4gICAgICAgICAgICBjb25zdCBpc1ZSTVVzZWQgPSAoKF9hID0ganNvbi5leHRlbnNpb25zVXNlZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmluZGV4T2YoJ1ZSTUNfdnJtJykpICE9PSAtMTtcbiAgICAgICAgICAgIGlmICghaXNWUk1Vc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSAoX2IgPSBqc29uLmV4dGVuc2lvbnMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYlsnVlJNQ192cm0nXTtcbiAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzcGVjVmVyc2lvbiA9IGV4dGVuc2lvbi5zcGVjVmVyc2lvbjtcbiAgICAgICAgICAgIGlmICghUE9TU0lCTEVfU1BFQ19WRVJTSU9OUyQ0LmhhcyhzcGVjVmVyc2lvbikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFZSTUV4cHJlc3Npb25Mb2FkZXJQbHVnaW46IFVua25vd24gVlJNQ192cm0gc3BlY1ZlcnNpb24gXCIke3NwZWNWZXJzaW9ufVwiYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzY2hlbWFFeHByZXNzaW9ucyA9IGV4dGVuc2lvbi5leHByZXNzaW9ucztcbiAgICAgICAgICAgIGlmICghc2NoZW1hRXhwcmVzc2lvbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGxpc3QgZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGNvbnN0IHByZXNldE5hbWVTZXQgPSBuZXcgU2V0KE9iamVjdC52YWx1ZXMoVlJNRXhwcmVzc2lvblByZXNldE5hbWUpKTtcbiAgICAgICAgICAgIGNvbnN0IG5hbWVTY2hlbWFFeHByZXNzaW9uTWFwID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgaWYgKHNjaGVtYUV4cHJlc3Npb25zLnByZXNldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoc2NoZW1hRXhwcmVzc2lvbnMucHJlc2V0KS5mb3JFYWNoKChbbmFtZSwgc2NoZW1hRXhwcmVzc2lvbl0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjaGVtYUV4cHJlc3Npb24gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9IC8vIHR5cGVzY3JpcHRcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmVzZXROYW1lU2V0LmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBWUk1FeHByZXNzaW9uTG9hZGVyUGx1Z2luOiBVbmtub3duIHByZXNldCBuYW1lIFwiJHtuYW1lfVwiIGRldGVjdGVkLiBJZ25vcmluZyB0aGUgZXhwcmVzc2lvbmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5hbWVTY2hlbWFFeHByZXNzaW9uTWFwLnNldChuYW1lLCBzY2hlbWFFeHByZXNzaW9uKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzY2hlbWFFeHByZXNzaW9ucy5jdXN0b20gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHNjaGVtYUV4cHJlc3Npb25zLmN1c3RvbSkuZm9yRWFjaCgoW25hbWUsIHNjaGVtYUV4cHJlc3Npb25dKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmVzZXROYW1lU2V0LmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBWUk1FeHByZXNzaW9uTG9hZGVyUGx1Z2luOiBDdXN0b20gZXhwcmVzc2lvbiBjYW5ub3QgaGF2ZSBwcmVzZXQgbmFtZSBcIiR7bmFtZX1cIi4gSWdub3JpbmcgdGhlIGV4cHJlc3Npb25gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBuYW1lU2NoZW1hRXhwcmVzc2lvbk1hcC5zZXQobmFtZSwgc2NoZW1hRXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBwcmVwYXJlIG1hbmFnZXJcbiAgICAgICAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVlJNRXhwcmVzc2lvbk1hbmFnZXIoKTtcbiAgICAgICAgICAgIC8vIGxvYWQgZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKEFycmF5LmZyb20obmFtZVNjaGVtYUV4cHJlc3Npb25NYXAuZW50cmllcygpKS5tYXAoKFtuYW1lLCBzY2hlbWFFeHByZXNzaW9uXSkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgIHZhciBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfajtcbiAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gbmV3IFZSTUV4cHJlc3Npb24obmFtZSk7XG4gICAgICAgICAgICAgICAgZ2x0Zi5zY2VuZS5hZGQoZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbi5pc0JpbmFyeSA9IChfYyA9IHNjaGVtYUV4cHJlc3Npb24uaXNCaW5hcnkpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIGV4cHJlc3Npb24ub3ZlcnJpZGVCbGluayA9IChfZCA9IHNjaGVtYUV4cHJlc3Npb24ub3ZlcnJpZGVCbGluaykgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogJ25vbmUnO1xuICAgICAgICAgICAgICAgIGV4cHJlc3Npb24ub3ZlcnJpZGVMb29rQXQgPSAoX2UgPSBzY2hlbWFFeHByZXNzaW9uLm92ZXJyaWRlTG9va0F0KSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiAnbm9uZSc7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbi5vdmVycmlkZU1vdXRoID0gKF9mID0gc2NoZW1hRXhwcmVzc2lvbi5vdmVycmlkZU1vdXRoKSAhPT0gbnVsbCAmJiBfZiAhPT0gdm9pZCAwID8gX2YgOiAnbm9uZSc7XG4gICAgICAgICAgICAgICAgKF9nID0gc2NoZW1hRXhwcmVzc2lvbi5tb3JwaFRhcmdldEJpbmRzKSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cuZm9yRWFjaCgoYmluZCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2s7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiaW5kLm5vZGUgPT09IHVuZGVmaW5lZCB8fCBiaW5kLmluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmltaXRpdmVzID0gKHlpZWxkIGdsdGZFeHRyYWN0UHJpbWl0aXZlc0Zyb21Ob2RlKGdsdGYsIGJpbmQubm9kZSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb3JwaFRhcmdldEluZGV4ID0gYmluZC5pbmRleDtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlIG1lc2ggaGFzIHRoZSB0YXJnZXQgbW9ycGggdGFyZ2V0XG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJpbWl0aXZlcy5ldmVyeSgocHJpbWl0aXZlKSA9PiBBcnJheS5pc0FycmF5KHByaW1pdGl2ZS5tb3JwaFRhcmdldEluZmx1ZW5jZXMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JwaFRhcmdldEluZGV4IDwgcHJpbWl0aXZlLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5sZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFZSTUV4cHJlc3Npb25Mb2FkZXJQbHVnaW46ICR7c2NoZW1hRXhwcmVzc2lvbi5uYW1lfSBhdHRlbXB0cyB0byBpbmRleCBtb3JwaCAjJHttb3JwaFRhcmdldEluZGV4fSBidXQgbm90IGZvdW5kLmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24uYWRkQmluZChuZXcgVlJNRXhwcmVzc2lvbk1vcnBoVGFyZ2V0QmluZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IG1vcnBoVGFyZ2V0SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHQ6IChfayA9IGJpbmQud2VpZ2h0KSAhPT0gbnVsbCAmJiBfayAhPT0gdm9pZCAwID8gX2sgOiAxLjAsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYUV4cHJlc3Npb24ubWF0ZXJpYWxDb2xvckJpbmRzIHx8IHNjaGVtYUV4cHJlc3Npb24udGV4dHVyZVRyYW5zZm9ybUJpbmRzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGxpc3QgdXAgZXZlcnkgbWF0ZXJpYWwgaW4gYGdsdGYuc2NlbmVgXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsdGZNYXRlcmlhbHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZ2x0Zi5zY2VuZS50cmF2ZXJzZSgob2JqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRlcmlhbCA9IG9iamVjdC5tYXRlcmlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRlcmlhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsdGZNYXRlcmlhbHMucHVzaChtYXRlcmlhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAoX2ggPSBzY2hlbWFFeHByZXNzaW9uLm1hdGVyaWFsQ29sb3JCaW5kcykgPT09IG51bGwgfHwgX2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9oLmZvckVhY2goKGJpbmQpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFscyA9IGdsdGZNYXRlcmlhbHMuZmlsdGVyKChtYXRlcmlhbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsSW5kZXggPSBnbHRmR2V0QXNzb2NpYXRlZE1hdGVyaWFsSW5kZXgodGhpcy5wYXJzZXIsIG1hdGVyaWFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmluZC5tYXRlcmlhbCA9PT0gbWF0ZXJpYWxJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWxzLmZvckVhY2goKG1hdGVyaWFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbi5hZGRCaW5kKG5ldyBWUk1FeHByZXNzaW9uTWF0ZXJpYWxDb2xvckJpbmQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogYmluZC50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWYWx1ZTogbmV3IFRIUkVFLkNvbG9yKCkuZnJvbUFycmF5KGJpbmQudGFyZ2V0VmFsdWUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIChfaiA9IHNjaGVtYUV4cHJlc3Npb24udGV4dHVyZVRyYW5zZm9ybUJpbmRzKSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2ouZm9yRWFjaCgoYmluZCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxzID0gZ2x0Zk1hdGVyaWFscy5maWx0ZXIoKG1hdGVyaWFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxJbmRleCA9IGdsdGZHZXRBc3NvY2lhdGVkTWF0ZXJpYWxJbmRleCh0aGlzLnBhcnNlciwgbWF0ZXJpYWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiaW5kLm1hdGVyaWFsID09PSBtYXRlcmlhbEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbHMuZm9yRWFjaCgobWF0ZXJpYWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24uYWRkQmluZChuZXcgVlJNRXhwcmVzc2lvblRleHR1cmVUcmFuc2Zvcm1CaW5kKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogbmV3IFRIUkVFLlZlY3RvcjIoKS5mcm9tQXJyYXkoKF9hID0gYmluZC5vZmZzZXQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFswLjAsIDAuMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogbmV3IFRIUkVFLlZlY3RvcjIoKS5mcm9tQXJyYXkoKF9iID0gYmluZC5zY2FsZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogWzEuMCwgMS4wXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWFuYWdlci5yZWdpc3RlckV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG4gICAgICAgICAgICB9KSkpO1xuICAgICAgICAgICAgcmV0dXJuIG1hbmFnZXI7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfdjBJbXBvcnQoZ2x0Zikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBqc29uID0gdGhpcy5wYXJzZXIuanNvbjtcbiAgICAgICAgICAgIC8vIGVhcmx5IGFib3J0IGlmIGl0IGRvZXNuJ3QgdXNlIHZybVxuICAgICAgICAgICAgY29uc3QgdnJtRXh0ID0gKF9hID0ganNvbi5leHRlbnNpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuVlJNO1xuICAgICAgICAgICAgaWYgKCF2cm1FeHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYUJsZW5kU2hhcGUgPSB2cm1FeHQuYmxlbmRTaGFwZU1hc3RlcjtcbiAgICAgICAgICAgIGlmICghc2NoZW1hQmxlbmRTaGFwZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWUk1FeHByZXNzaW9uTWFuYWdlcigpO1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hQmxlbmRTaGFwZUdyb3VwcyA9IHNjaGVtYUJsZW5kU2hhcGUuYmxlbmRTaGFwZUdyb3VwcztcbiAgICAgICAgICAgIGlmICghc2NoZW1hQmxlbmRTaGFwZUdyb3Vwcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYW5hZ2VyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYmxlbmRTaGFwZU5hbWVTZXQgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICB5aWVsZCBQcm9taXNlLmFsbChzY2hlbWFCbGVuZFNoYXBlR3JvdXBzLm1hcCgoc2NoZW1hR3JvdXApID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2I7XG4gICAgICAgICAgICAgICAgY29uc3QgdjBQcmVzZXROYW1lID0gc2NoZW1hR3JvdXAucHJlc2V0TmFtZTtcbiAgICAgICAgICAgICAgICBjb25zdCB2MVByZXNldE5hbWUgPSAodjBQcmVzZXROYW1lICE9IG51bGwgJiYgVlJNRXhwcmVzc2lvbkxvYWRlclBsdWdpbi52MHYxUHJlc2V0TmFtZU1hcFt2MFByZXNldE5hbWVdKSB8fCBudWxsO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSB2MVByZXNldE5hbWUgIT09IG51bGwgJiYgdjFQcmVzZXROYW1lICE9PSB2b2lkIDAgPyB2MVByZXNldE5hbWUgOiBzY2hlbWFHcm91cC5uYW1lO1xuICAgICAgICAgICAgICAgIGlmIChuYW1lID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdWUk1FeHByZXNzaW9uTG9hZGVyUGx1Z2luOiBPbmUgb2YgY3VzdG9tIGV4cHJlc3Npb25zIGhhcyBubyBuYW1lLiBJZ25vcmluZyB0aGUgZXhwcmVzc2lvbicpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGR1cGxpY2F0aW9uIGNoZWNrXG4gICAgICAgICAgICAgICAgaWYgKGJsZW5kU2hhcGVOYW1lU2V0LmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFZSTUV4cHJlc3Npb25Mb2FkZXJQbHVnaW46IEFuIGV4cHJlc3Npb24gcHJlc2V0ICR7djBQcmVzZXROYW1lfSBoYXMgZHVwbGljYXRlZCBlbnRyaWVzLiBJZ25vcmluZyB0aGUgZXhwcmVzc2lvbmApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJsZW5kU2hhcGVOYW1lU2V0LmFkZChuYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gbmV3IFZSTUV4cHJlc3Npb24obmFtZSk7XG4gICAgICAgICAgICAgICAgZ2x0Zi5zY2VuZS5hZGQoZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbi5pc0JpbmFyeSA9IChfYiA9IHNjaGVtYUdyb3VwLmlzQmluYXJ5KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyB2MCBkb2Vzbid0IGhhdmUgaWdub3JlIHByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICAvLyBCaW5kIG1vcnBoVGFyZ2V0XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYUdyb3VwLmJpbmRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYUdyb3VwLmJpbmRzLmZvckVhY2goKGJpbmQpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaW5kLm1lc2ggPT09IHVuZGVmaW5lZCB8fCBiaW5kLmluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBub2Rlc1VzaW5nTWVzaCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgKF9jID0ganNvbi5ub2RlcykgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5tZXNoID09PSBiaW5kLm1lc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNVc2luZ01lc2gucHVzaChpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vcnBoVGFyZ2V0SW5kZXggPSBiaW5kLmluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgUHJvbWlzZS5hbGwobm9kZXNVc2luZ01lc2gubWFwKChub2RlSW5kZXgpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJpbWl0aXZlcyA9ICh5aWVsZCBnbHRmRXh0cmFjdFByaW1pdGl2ZXNGcm9tTm9kZShnbHRmLCBub2RlSW5kZXgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiB0aGUgbWVzaCBoYXMgdGhlIHRhcmdldCBtb3JwaCB0YXJnZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByaW1pdGl2ZXMuZXZlcnkoKHByaW1pdGl2ZSkgPT4gQXJyYXkuaXNBcnJheShwcmltaXRpdmUubW9ycGhUYXJnZXRJbmZsdWVuY2VzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JwaFRhcmdldEluZGV4IDwgcHJpbWl0aXZlLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5sZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVlJNRXhwcmVzc2lvbkxvYWRlclBsdWdpbjogJHtzY2hlbWFHcm91cC5uYW1lfSBhdHRlbXB0cyB0byBpbmRleCAke21vcnBoVGFyZ2V0SW5kZXh9dGggbW9ycGggYnV0IG5vdCBmb3VuZC5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uLmFkZEJpbmQobmV3IFZSTUV4cHJlc3Npb25Nb3JwaFRhcmdldEJpbmQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogbW9ycGhUYXJnZXRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0OiAwLjAxICogKChfZCA9IGJpbmQud2VpZ2h0KSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAxMDApLCAvLyBuYXJyb3dpbmcgdGhlIHJhbmdlIGZyb20gWyAwLjAgLSAxMDAuMCBdIHRvIFsgMC4wIC0gMS4wIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSkpO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEJpbmQgTWF0ZXJpYWxDb2xvciBhbmQgVGV4dHVyZVRyYW5zZm9ybVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsVmFsdWVzID0gc2NoZW1hR3JvdXAubWF0ZXJpYWxWYWx1ZXM7XG4gICAgICAgICAgICAgICAgaWYgKG1hdGVyaWFsVmFsdWVzICYmIG1hdGVyaWFsVmFsdWVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbFZhbHVlcy5mb3JFYWNoKChtYXRlcmlhbFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0ZXJpYWxWYWx1ZS5tYXRlcmlhbE5hbWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsVmFsdWUucHJvcGVydHlOYW1lID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbFZhbHVlLnRhcmdldFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAqIOOCouODkOOCv+ODvOOBruOCquODluOCuOOCp+OCr+ODiOOBq+ioreWumuOBleOCjOOBpuOBhOOCi+ODnuODhuODquOCouODq+OBruWGheOBi+OCiVxuICAgICAgICAgICAgICAgICAgICAgICAgICogbWF0ZXJpYWxWYWx1ZeOBp+aMh+WumuOBleOCjOOBpuOBhOOCi+ODnuODhuODquOCouODq+OCkumbhuOCgeOCi+OAglxuICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAqIOeJueWumuOBq+OBr+WQjeWJjeOCkuS9v+eUqOOBmeOCi+OAglxuICAgICAgICAgICAgICAgICAgICAgICAgICog44Ki44Km44OI44Op44Kk44Oz5o+P55S755So44Gu44Oe44OG44Oq44Ki44Or44KC5ZCM5pmC44Gr6ZuG44KB44KL44CCXG4gICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFscyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2x0Zi5zY2VuZS50cmF2ZXJzZSgob2JqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iamVjdC5tYXRlcmlhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRlcmlhbCA9IG9iamVjdC5tYXRlcmlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWF0ZXJpYWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbHMucHVzaCguLi5tYXRlcmlhbC5maWx0ZXIoKG10bCkgPT4gKG10bC5uYW1lID09PSBtYXRlcmlhbFZhbHVlLm1hdGVyaWFsTmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10bC5uYW1lID09PSBtYXRlcmlhbFZhbHVlLm1hdGVyaWFsTmFtZSArICcgKE91dGxpbmUpJykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbHMuaW5kZXhPZihtdGwpID09PSAtMSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1hdGVyaWFsLm5hbWUgPT09IG1hdGVyaWFsVmFsdWUubWF0ZXJpYWxOYW1lICYmIG1hdGVyaWFscy5pbmRleE9mKG1hdGVyaWFsKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGVyaWFscy5wdXNoKG1hdGVyaWFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxQcm9wZXJ0eU5hbWUgPSBtYXRlcmlhbFZhbHVlLnByb3BlcnR5TmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGVyaWFscy5mb3JFYWNoKChtYXRlcmlhbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRleHR1cmVUcmFuc2Zvcm1CaW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGVyaWFsUHJvcGVydHlOYW1lID09PSAnX01haW5UZXhfU1QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjYWxlID0gbmV3IFRIUkVFLlZlY3RvcjIobWF0ZXJpYWxWYWx1ZS50YXJnZXRWYWx1ZVswXSwgbWF0ZXJpYWxWYWx1ZS50YXJnZXRWYWx1ZVsxXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IG5ldyBUSFJFRS5WZWN0b3IyKG1hdGVyaWFsVmFsdWUudGFyZ2V0VmFsdWVbMl0sIG1hdGVyaWFsVmFsdWUudGFyZ2V0VmFsdWVbM10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQueSA9IDEuMCAtIG9mZnNldC55IC0gc2NhbGUueTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbi5hZGRCaW5kKG5ldyBWUk1FeHByZXNzaW9uVGV4dHVyZVRyYW5zZm9ybUJpbmQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1hdGVyaWFsQ29sb3JCaW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxDb2xvclR5cGUgPSB2MEV4cHJlc3Npb25NYXRlcmlhbENvbG9yTWFwW21hdGVyaWFsUHJvcGVydHlOYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0ZXJpYWxDb2xvclR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbi5hZGRCaW5kKG5ldyBWUk1FeHByZXNzaW9uTWF0ZXJpYWxDb2xvckJpbmQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBtYXRlcmlhbENvbG9yVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZhbHVlOiBuZXcgVEhSRUUuQ29sb3IoLi4ubWF0ZXJpYWxWYWx1ZS50YXJnZXRWYWx1ZS5zbGljZSgwLCAzKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4obWF0ZXJpYWxQcm9wZXJ0eU5hbWUgKyAnIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWFuYWdlci5yZWdpc3RlckV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG4gICAgICAgICAgICB9KSkpO1xuICAgICAgICAgICAgcmV0dXJuIG1hbmFnZXI7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblZSTUV4cHJlc3Npb25Mb2FkZXJQbHVnaW4udjB2MVByZXNldE5hbWVNYXAgPSB7XG4gICAgYTogJ2FhJyxcbiAgICBlOiAnZWUnLFxuICAgIGk6ICdpaCcsXG4gICAgbzogJ29oJyxcbiAgICB1OiAnb3UnLFxuICAgIGJsaW5rOiAnYmxpbmsnLFxuICAgIGpveTogJ2hhcHB5JyxcbiAgICBhbmdyeTogJ2FuZ3J5JyxcbiAgICBzb3Jyb3c6ICdzYWQnLFxuICAgIGZ1bjogJ3JlbGF4ZWQnLFxuICAgIGxvb2t1cDogJ2xvb2tVcCcsXG4gICAgbG9va2Rvd246ICdsb29rRG93bicsXG4gICAgbG9va2xlZnQ6ICdsb29rTGVmdCcsXG4gICAgbG9va3JpZ2h0OiAnbG9va1JpZ2h0JyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgYmxpbmtfbDogJ2JsaW5rTGVmdCcsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIGJsaW5rX3I6ICdibGlua1JpZ2h0JyxcbiAgICBuZXV0cmFsOiAnbmV1dHJhbCcsXG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbmNvbnN0IFZSTUV4cHJlc3Npb25PdmVycmlkZVR5cGUgPSB7XG4gICAgTm9uZTogJ25vbmUnLFxuICAgIEJsb2NrOiAnYmxvY2snLFxuICAgIEJsZW5kOiAnYmxlbmQnLFxufTtcblxuY2xhc3MgVlJNRmlyc3RQZXJzb24ge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyBWUk1GaXJzdFBlcnNvbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaHVtYW5vaWQgQSB7QGxpbmsgVlJNSHVtYW5vaWR9XG4gICAgICogQHBhcmFtIG1lc2hBbm5vdGF0aW9ucyBBIHJlbmRlcmVyIHNldHRpbmdzLiBTZWUgdGhlIGRlc2NyaXB0aW9uIG9mIFtbUmVuZGVyZXJGaXJzdFBlcnNvbkZsYWdzXV0gZm9yIG1vcmUgaW5mb1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGh1bWFub2lkLCBtZXNoQW5ub3RhdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fZmlyc3RQZXJzb25Pbmx5TGF5ZXIgPSBWUk1GaXJzdFBlcnNvbi5ERUZBVUxUX0ZJUlNUUEVSU09OX09OTFlfTEFZRVI7XG4gICAgICAgIHRoaXMuX3RoaXJkUGVyc29uT25seUxheWVyID0gVlJNRmlyc3RQZXJzb24uREVGQVVMVF9USElSRFBFUlNPTl9PTkxZX0xBWUVSO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplZExheWVycyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmh1bWFub2lkID0gaHVtYW5vaWQ7XG4gICAgICAgIHRoaXMubWVzaEFubm90YXRpb25zID0gbWVzaEFubm90YXRpb25zO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb3B5IHRoZSBnaXZlbiB7QGxpbmsgVlJNRmlyc3RQZXJzb259IGludG8gdGhpcyBvbmUuXG4gICAgICoge0BsaW5rIGh1bWFub2lkfSBtdXN0IGJlIHNhbWUgYXMgdGhlIHNvdXJjZSBvbmUuXG4gICAgICogQHBhcmFtIHNvdXJjZSBUaGUge0BsaW5rIFZSTUZpcnN0UGVyc29ufSB5b3Ugd2FudCB0byBjb3B5XG4gICAgICogQHJldHVybnMgdGhpc1xuICAgICAqL1xuICAgIGNvcHkoc291cmNlKSB7XG4gICAgICAgIGlmICh0aGlzLmh1bWFub2lkICE9PSBzb3VyY2UuaHVtYW5vaWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVlJNRmlyc3RQZXJzb246IGh1bWFub2lkIG11c3QgYmUgc2FtZSBpbiBvcmRlciB0byBjb3B5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tZXNoQW5ub3RhdGlvbnMgPSBzb3VyY2UubWVzaEFubm90YXRpb25zLm1hcCgoYW5ub3RhdGlvbikgPT4gKHtcbiAgICAgICAgICAgIG1lc2hlczogYW5ub3RhdGlvbi5tZXNoZXMuY29uY2F0KCksXG4gICAgICAgICAgICB0eXBlOiBhbm5vdGF0aW9uLnR5cGUsXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBjbG9uZSBvZiB0aGlzIHtAbGluayBWUk1GaXJzdFBlcnNvbn0uXG4gICAgICogQHJldHVybnMgQ29waWVkIHtAbGluayBWUk1GaXJzdFBlcnNvbn1cbiAgICAgKi9cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWUk1GaXJzdFBlcnNvbih0aGlzLmh1bWFub2lkLCB0aGlzLm1lc2hBbm5vdGF0aW9ucykuY29weSh0aGlzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBjYW1lcmEgbGF5ZXIgcmVwcmVzZW50cyBgRmlyc3RQZXJzb25Pbmx5YCBsYXllci5cbiAgICAgKiBOb3RlIHRoYXQgKip5b3UgbXVzdCBjYWxsIHtAbGluayBzZXR1cH0gZmlyc3QgYmVmb3JlIHlvdSB1c2UgdGhlIGxheWVyIGZlYXR1cmUqKiBvciBpdCBkb2VzIG5vdCB3b3JrIHByb3Blcmx5LlxuICAgICAqXG4gICAgICogVGhlIHZhbHVlIGlzIHtAbGluayBERUZBVUxUX0ZJUlNUUEVSU09OX09OTFlfTEFZRVJ9IGJ5IGRlZmF1bHQgYnV0IHlvdSBjYW4gY2hhbmdlIHRoZSBsYXllciBieSBzcGVjaWZ5aW5nIHZpYSB7QGxpbmsgc2V0dXB9IGlmIHlvdSBwcmVmZXIuXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vdnJtLmRldi9lbi91bml2cm0vYXBpL3VuaXZybV91c2VfZmlyc3RwZXJzb24vXG4gICAgICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI2FwaS9lbi9jb3JlL0xheWVyc1xuICAgICAqL1xuICAgIGdldCBmaXJzdFBlcnNvbk9ubHlMYXllcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpcnN0UGVyc29uT25seUxheWVyO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIGNhbWVyYSBsYXllciByZXByZXNlbnRzIGBUaGlyZFBlcnNvbk9ubHlgIGxheWVyLlxuICAgICAqIE5vdGUgdGhhdCAqKnlvdSBtdXN0IGNhbGwge0BsaW5rIHNldHVwfSBmaXJzdCBiZWZvcmUgeW91IHVzZSB0aGUgbGF5ZXIgZmVhdHVyZSoqIG9yIGl0IGRvZXMgbm90IHdvcmsgcHJvcGVybHkuXG4gICAgICpcbiAgICAgKiBUaGUgdmFsdWUgaXMge0BsaW5rIERFRkFVTFRfVEhJUkRQRVJTT05fT05MWV9MQVlFUn0gYnkgZGVmYXVsdCBidXQgeW91IGNhbiBjaGFuZ2UgdGhlIGxheWVyIGJ5IHNwZWNpZnlpbmcgdmlhIHtAbGluayBzZXR1cH0gaWYgeW91IHByZWZlci5cbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly92cm0uZGV2L2VuL3VuaXZybS9hcGkvdW5pdnJtX3VzZV9maXJzdHBlcnNvbi9cbiAgICAgKiBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jYXBpL2VuL2NvcmUvTGF5ZXJzXG4gICAgICovXG4gICAgZ2V0IHRoaXJkUGVyc29uT25seUxheWVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGhpcmRQZXJzb25Pbmx5TGF5ZXI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluIHRoaXMgbWV0aG9kLCBpdCBhc3NpZ25zIGxheWVycyBmb3IgZXZlcnkgbWVzaGVzIGJhc2VkIG9uIG1lc2ggYW5ub3RhdGlvbnMuXG4gICAgICogWW91IG11c3QgY2FsbCB0aGlzIG1ldGhvZCBmaXJzdCBiZWZvcmUgeW91IHVzZSB0aGUgbGF5ZXIgZmVhdHVyZS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYW4gZXF1aXZhbGVudCBvZiBbVlJNRmlyc3RQZXJzb24uU2V0dXBdKGh0dHBzOi8vZ2l0aHViLmNvbS92cm0tYy9VbmlWUk0vYmxvYi83M2E1YmQ4ZmNkZGFhMmE3YTg3MzUwOTlhOTdlNjNjOWRiM2U1ZWEwL0Fzc2V0cy9WUk0vUnVudGltZS9GaXJzdFBlcnNvbi9WUk1GaXJzdFBlcnNvbi5jcyNMMjk1LUwyOTkpIG9mIHRoZSBVbmlWUk0uXG4gICAgICpcbiAgICAgKiBUaGUgYGNhbWVyYUxheWVyYCBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoaWNoIGxheWVyIHdpbGwgYmUgYXNzaWduZWQgZm9yIGBGaXJzdFBlcnNvbk9ubHlgIC8gYFRoaXJkUGVyc29uT25seWAuXG4gICAgICogSW4gVW5pVlJNLCB3ZSBzcGVjaWZpZWQgdGhvc2UgYnkgbmFtaW5nIGVhY2ggZGVzaXJlZCBsYXllciBhcyBgRklSU1RQRVJTT05fT05MWV9MQVlFUmAgLyBgVEhJUkRQRVJTT05fT05MWV9MQVlFUmBcbiAgICAgKiBidXQgd2UgYXJlIGdvaW5nIHRvIHNwZWNpZnkgdGhlc2UgbGF5ZXJzIGF0IGhlcmUgc2luY2Ugd2UgYXJlIHVuYWJsZSB0byBuYW1lIGxheWVycyBpbiBUaHJlZS5qcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYW1lcmFMYXllciBTcGVjaWZ5IHdoaWNoIGxheWVyIHdpbGwgYmUgZm9yIGBGaXJzdFBlcnNvbk9ubHlgIC8gYFRoaXJkUGVyc29uT25seWAuXG4gICAgICovXG4gICAgc2V0dXAoeyBmaXJzdFBlcnNvbk9ubHlMYXllciA9IFZSTUZpcnN0UGVyc29uLkRFRkFVTFRfRklSU1RQRVJTT05fT05MWV9MQVlFUiwgdGhpcmRQZXJzb25Pbmx5TGF5ZXIgPSBWUk1GaXJzdFBlcnNvbi5ERUZBVUxUX1RISVJEUEVSU09OX09OTFlfTEFZRVIsIH0gPSB7fSkge1xuICAgICAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWRMYXllcnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maXJzdFBlcnNvbk9ubHlMYXllciA9IGZpcnN0UGVyc29uT25seUxheWVyO1xuICAgICAgICB0aGlzLl90aGlyZFBlcnNvbk9ubHlMYXllciA9IHRoaXJkUGVyc29uT25seUxheWVyO1xuICAgICAgICB0aGlzLm1lc2hBbm5vdGF0aW9ucy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLm1lc2hlcy5mb3JFYWNoKChtZXNoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2ZpcnN0UGVyc29uT25seScpIHtcbiAgICAgICAgICAgICAgICAgICAgbWVzaC5sYXllcnMuc2V0KHRoaXMuX2ZpcnN0UGVyc29uT25seUxheWVyKTtcbiAgICAgICAgICAgICAgICAgICAgbWVzaC50cmF2ZXJzZSgoY2hpbGQpID0+IGNoaWxkLmxheWVycy5zZXQodGhpcy5fZmlyc3RQZXJzb25Pbmx5TGF5ZXIpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS50eXBlID09PSAndGhpcmRQZXJzb25Pbmx5Jykge1xuICAgICAgICAgICAgICAgICAgICBtZXNoLmxheWVycy5zZXQodGhpcy5fdGhpcmRQZXJzb25Pbmx5TGF5ZXIpO1xuICAgICAgICAgICAgICAgICAgICBtZXNoLnRyYXZlcnNlKChjaGlsZCkgPT4gY2hpbGQubGF5ZXJzLnNldCh0aGlzLl90aGlyZFBlcnNvbk9ubHlMYXllcikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdhdXRvJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVIZWFkbGVzc01vZGVsKG1lc2gpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWRMYXllcnMgPSB0cnVlO1xuICAgIH1cbiAgICBfZXhjbHVkZVRyaWFuZ2xlcyh0cmlhbmdsZXMsIGJ3cywgc2tpbkluZGV4LCBleGNsdWRlKSB7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIGlmIChid3MgIT0gbnVsbCAmJiBid3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0cmlhbmdsZXMubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhID0gdHJpYW5nbGVzW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IGIgPSB0cmlhbmdsZXNbaSArIDFdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSB0cmlhbmdsZXNbaSArIDJdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ3MCA9IGJ3c1thXTtcbiAgICAgICAgICAgICAgICBjb25zdCBza2luMCA9IHNraW5JbmRleFthXTtcbiAgICAgICAgICAgICAgICBpZiAoYncwWzBdID4gMCAmJiBleGNsdWRlLmluY2x1ZGVzKHNraW4wWzBdKSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgaWYgKGJ3MFsxXSA+IDAgJiYgZXhjbHVkZS5pbmNsdWRlcyhza2luMFsxXSkpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmIChidzBbMl0gPiAwICYmIGV4Y2x1ZGUuaW5jbHVkZXMoc2tpbjBbMl0pKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBpZiAoYncwWzNdID4gMCAmJiBleGNsdWRlLmluY2x1ZGVzKHNraW4wWzNdKSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgY29uc3QgYncxID0gYndzW2JdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNraW4xID0gc2tpbkluZGV4W2JdO1xuICAgICAgICAgICAgICAgIGlmIChidzFbMF0gPiAwICYmIGV4Y2x1ZGUuaW5jbHVkZXMoc2tpbjFbMF0pKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBpZiAoYncxWzFdID4gMCAmJiBleGNsdWRlLmluY2x1ZGVzKHNraW4xWzFdKSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgaWYgKGJ3MVsyXSA+IDAgJiYgZXhjbHVkZS5pbmNsdWRlcyhza2luMVsyXSkpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmIChidzFbM10gPiAwICYmIGV4Y2x1ZGUuaW5jbHVkZXMoc2tpbjFbM10pKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBidzIgPSBid3NbY107XG4gICAgICAgICAgICAgICAgY29uc3Qgc2tpbjIgPSBza2luSW5kZXhbY107XG4gICAgICAgICAgICAgICAgaWYgKGJ3MlswXSA+IDAgJiYgZXhjbHVkZS5pbmNsdWRlcyhza2luMlswXSkpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmIChidzJbMV0gPiAwICYmIGV4Y2x1ZGUuaW5jbHVkZXMoc2tpbjJbMV0pKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBpZiAoYncyWzJdID4gMCAmJiBleGNsdWRlLmluY2x1ZGVzKHNraW4yWzJdKSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgaWYgKGJ3MlszXSA+IDAgJiYgZXhjbHVkZS5pbmNsdWRlcyhza2luMlszXSkpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHRyaWFuZ2xlc1tjb3VudCsrXSA9IGE7XG4gICAgICAgICAgICAgICAgdHJpYW5nbGVzW2NvdW50KytdID0gYjtcbiAgICAgICAgICAgICAgICB0cmlhbmdsZXNbY291bnQrK10gPSBjO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb3VudDtcbiAgICB9XG4gICAgX2NyZWF0ZUVyYXNlZE1lc2goc3JjLCBlcmFzaW5nQm9uZXNJbmRleCkge1xuICAgICAgICBjb25zdCBkc3QgPSBuZXcgVEhSRUUuU2tpbm5lZE1lc2goc3JjLmdlb21ldHJ5LmNsb25lKCksIHNyYy5tYXRlcmlhbCk7XG4gICAgICAgIGRzdC5uYW1lID0gYCR7c3JjLm5hbWV9KGVyYXNlKWA7XG4gICAgICAgIGRzdC5mcnVzdHVtQ3VsbGVkID0gc3JjLmZydXN0dW1DdWxsZWQ7XG4gICAgICAgIGRzdC5sYXllcnMuc2V0KHRoaXMuX2ZpcnN0UGVyc29uT25seUxheWVyKTtcbiAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBkc3QuZ2VvbWV0cnk7XG4gICAgICAgIGNvbnN0IHNraW5JbmRleEF0dHIgPSBnZW9tZXRyeS5nZXRBdHRyaWJ1dGUoJ3NraW5JbmRleCcpO1xuICAgICAgICBjb25zdCBza2luSW5kZXhBdHRyQXJyYXkgPSBza2luSW5kZXhBdHRyIGluc3RhbmNlb2YgVEhSRUUuR0xCdWZmZXJBdHRyaWJ1dGUgPyBbXSA6IHNraW5JbmRleEF0dHIuYXJyYXk7XG4gICAgICAgIGNvbnN0IHNraW5JbmRleCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNraW5JbmRleEF0dHJBcnJheS5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgICAgICAgc2tpbkluZGV4LnB1c2goW1xuICAgICAgICAgICAgICAgIHNraW5JbmRleEF0dHJBcnJheVtpXSxcbiAgICAgICAgICAgICAgICBza2luSW5kZXhBdHRyQXJyYXlbaSArIDFdLFxuICAgICAgICAgICAgICAgIHNraW5JbmRleEF0dHJBcnJheVtpICsgMl0sXG4gICAgICAgICAgICAgICAgc2tpbkluZGV4QXR0ckFycmF5W2kgKyAzXSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNraW5XZWlnaHRBdHRyID0gZ2VvbWV0cnkuZ2V0QXR0cmlidXRlKCdza2luV2VpZ2h0Jyk7XG4gICAgICAgIGNvbnN0IHNraW5XZWlnaHRBdHRyQXJyYXkgPSBza2luV2VpZ2h0QXR0ciBpbnN0YW5jZW9mIFRIUkVFLkdMQnVmZmVyQXR0cmlidXRlID8gW10gOiBza2luV2VpZ2h0QXR0ci5hcnJheTtcbiAgICAgICAgY29uc3Qgc2tpbldlaWdodCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNraW5XZWlnaHRBdHRyQXJyYXkubGVuZ3RoOyBpICs9IDQpIHtcbiAgICAgICAgICAgIHNraW5XZWlnaHQucHVzaChbXG4gICAgICAgICAgICAgICAgc2tpbldlaWdodEF0dHJBcnJheVtpXSxcbiAgICAgICAgICAgICAgICBza2luV2VpZ2h0QXR0ckFycmF5W2kgKyAxXSxcbiAgICAgICAgICAgICAgICBza2luV2VpZ2h0QXR0ckFycmF5W2kgKyAyXSxcbiAgICAgICAgICAgICAgICBza2luV2VpZ2h0QXR0ckFycmF5W2kgKyAzXSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4ID0gZ2VvbWV0cnkuZ2V0SW5kZXgoKTtcbiAgICAgICAgaWYgKCFpbmRleCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIGdlb21ldHJ5IGRvZXNuJ3QgaGF2ZSBhbiBpbmRleCBidWZmZXJcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb2xkVHJpYW5nbGVzID0gQXJyYXkuZnJvbShpbmRleC5hcnJheSk7XG4gICAgICAgIGNvbnN0IGNvdW50ID0gdGhpcy5fZXhjbHVkZVRyaWFuZ2xlcyhvbGRUcmlhbmdsZXMsIHNraW5XZWlnaHQsIHNraW5JbmRleCwgZXJhc2luZ0JvbmVzSW5kZXgpO1xuICAgICAgICBjb25zdCBuZXdUcmlhbmdsZSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIG5ld1RyaWFuZ2xlW2ldID0gb2xkVHJpYW5nbGVzW2ldO1xuICAgICAgICB9XG4gICAgICAgIGdlb21ldHJ5LnNldEluZGV4KG5ld1RyaWFuZ2xlKTtcbiAgICAgICAgLy8gbXRvb24gbWF0ZXJpYWwgaW5jbHVkZXMgb25CZWZvcmVSZW5kZXIuIHRoaXMgaXMgdW5zdXBwb3J0ZWQgYXQgU2tpbm5lZE1lc2gjY2xvbmVcbiAgICAgICAgaWYgKHNyYy5vbkJlZm9yZVJlbmRlcikge1xuICAgICAgICAgICAgZHN0Lm9uQmVmb3JlUmVuZGVyID0gc3JjLm9uQmVmb3JlUmVuZGVyO1xuICAgICAgICB9XG4gICAgICAgIGRzdC5iaW5kKG5ldyBUSFJFRS5Ta2VsZXRvbihzcmMuc2tlbGV0b24uYm9uZXMsIHNyYy5za2VsZXRvbi5ib25lSW52ZXJzZXMpLCBuZXcgVEhSRUUuTWF0cml4NCgpKTtcbiAgICAgICAgcmV0dXJuIGRzdDtcbiAgICB9XG4gICAgX2NyZWF0ZUhlYWRsZXNzTW9kZWxGb3JTa2lubmVkTWVzaChwYXJlbnQsIG1lc2gpIHtcbiAgICAgICAgY29uc3QgZXJhc2VCb25lSW5kZXhlcyA9IFtdO1xuICAgICAgICBtZXNoLnNrZWxldG9uLmJvbmVzLmZvckVhY2goKGJvbmUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNFcmFzZVRhcmdldChib25lKSlcbiAgICAgICAgICAgICAgICBlcmFzZUJvbmVJbmRleGVzLnB1c2goaW5kZXgpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gVW5saWtlIFVuaVZSTSB3ZSBkb24ndCBjb3B5IG1lc2ggaWYgbm8gaW52aXNpYmxlIGJvbmUgd2FzIGZvdW5kXG4gICAgICAgIGlmICghZXJhc2VCb25lSW5kZXhlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG1lc2gubGF5ZXJzLmVuYWJsZSh0aGlzLl90aGlyZFBlcnNvbk9ubHlMYXllcik7XG4gICAgICAgICAgICBtZXNoLmxheWVycy5lbmFibGUodGhpcy5fZmlyc3RQZXJzb25Pbmx5TGF5ZXIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG1lc2gubGF5ZXJzLnNldCh0aGlzLl90aGlyZFBlcnNvbk9ubHlMYXllcik7XG4gICAgICAgIGNvbnN0IG5ld01lc2ggPSB0aGlzLl9jcmVhdGVFcmFzZWRNZXNoKG1lc2gsIGVyYXNlQm9uZUluZGV4ZXMpO1xuICAgICAgICBwYXJlbnQuYWRkKG5ld01lc2gpO1xuICAgIH1cbiAgICBfY3JlYXRlSGVhZGxlc3NNb2RlbChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09ICdHcm91cCcpIHtcbiAgICAgICAgICAgIG5vZGUubGF5ZXJzLnNldCh0aGlzLl90aGlyZFBlcnNvbk9ubHlMYXllcik7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNFcmFzZVRhcmdldChub2RlKSkge1xuICAgICAgICAgICAgICAgIG5vZGUudHJhdmVyc2UoKGNoaWxkKSA9PiBjaGlsZC5sYXllcnMuc2V0KHRoaXMuX3RoaXJkUGVyc29uT25seUxheWVyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBuZXcgVEhSRUUuR3JvdXAoKTtcbiAgICAgICAgICAgICAgICBwYXJlbnQubmFtZSA9IGBfaGVhZGxlc3NfJHtub2RlLm5hbWV9YDtcbiAgICAgICAgICAgICAgICBwYXJlbnQubGF5ZXJzLnNldCh0aGlzLl9maXJzdFBlcnNvbk9ubHlMYXllcik7XG4gICAgICAgICAgICAgICAgbm9kZS5wYXJlbnQuYWRkKHBhcmVudCk7XG4gICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlblxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gY2hpbGQudHlwZSA9PT0gJ1NraW5uZWRNZXNoJylcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNraW5uZWRNZXNoID0gY2hpbGQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUhlYWRsZXNzTW9kZWxGb3JTa2lubmVkTWVzaChwYXJlbnQsIHNraW5uZWRNZXNoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdTa2lubmVkTWVzaCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHNraW5uZWRNZXNoID0gbm9kZTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUhlYWRsZXNzTW9kZWxGb3JTa2lubmVkTWVzaChub2RlLnBhcmVudCwgc2tpbm5lZE1lc2gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzRXJhc2VUYXJnZXQobm9kZSkpIHtcbiAgICAgICAgICAgICAgICBub2RlLmxheWVycy5zZXQodGhpcy5fdGhpcmRQZXJzb25Pbmx5TGF5ZXIpO1xuICAgICAgICAgICAgICAgIG5vZGUudHJhdmVyc2UoKGNoaWxkKSA9PiBjaGlsZC5sYXllcnMuc2V0KHRoaXMuX3RoaXJkUGVyc29uT25seUxheWVyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2lzRXJhc2VUYXJnZXQoYm9uZSkge1xuICAgICAgICBpZiAoYm9uZSA9PT0gdGhpcy5odW1hbm9pZC5nZXRSYXdCb25lTm9kZSgnaGVhZCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghYm9uZS5wYXJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc0VyYXNlVGFyZ2V0KGJvbmUucGFyZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8qKlxuICogQSBkZWZhdWx0IGNhbWVyYSBsYXllciBmb3IgYEZpcnN0UGVyc29uT25seWAgbGF5ZXIuXG4gKlxuICogQHNlZSBbW2dldEZpcnN0UGVyc29uT25seUxheWVyXV1cbiAqL1xuVlJNRmlyc3RQZXJzb24uREVGQVVMVF9GSVJTVFBFUlNPTl9PTkxZX0xBWUVSID0gOTtcbi8qKlxuICogQSBkZWZhdWx0IGNhbWVyYSBsYXllciBmb3IgYFRoaXJkUGVyc29uT25seWAgbGF5ZXIuXG4gKlxuICogQHNlZSBbW2dldFRoaXJkUGVyc29uT25seUxheWVyXV1cbiAqL1xuVlJNRmlyc3RQZXJzb24uREVGQVVMVF9USElSRFBFUlNPTl9PTkxZX0xBWUVSID0gMTA7XG5cbi8qKlxuICogUG9zc2libGUgc3BlYyB2ZXJzaW9ucyBpdCByZWNvZ25pemVzLlxuICovXG5jb25zdCBQT1NTSUJMRV9TUEVDX1ZFUlNJT05TJDMgPSBuZXcgU2V0KFsnMS4wJywgJzEuMC1iZXRhJ10pO1xuLyoqXG4gKiBBIHBsdWdpbiBvZiBHTFRGTG9hZGVyIHRoYXQgaW1wb3J0cyBhIHtAbGluayBWUk1GaXJzdFBlcnNvbn0gZnJvbSBhIFZSTSBleHRlbnNpb24gb2YgYSBHTFRGLlxuICovXG5jbGFzcyBWUk1GaXJzdFBlcnNvbkxvYWRlclBsdWdpbiB7XG4gICAgZ2V0IG5hbWUoKSB7XG4gICAgICAgIC8vIFdlIHNob3VsZCB1c2UgdGhlIGV4dGVuc2lvbiBuYW1lIGluc3RlYWQgYnV0IHdlIGhhdmUgbXVsdGlwbGUgcGx1Z2lucyBmb3IgYW4gZXh0ZW5zaW9uLi4uXG4gICAgICAgIHJldHVybiAnVlJNRmlyc3RQZXJzb25Mb2FkZXJQbHVnaW4nO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihwYXJzZXIpIHtcbiAgICAgICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG4gICAgfVxuICAgIGFmdGVyUm9vdChnbHRmKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCB2cm1IdW1hbm9pZCA9IGdsdGYudXNlckRhdGEudnJtSHVtYW5vaWQ7XG4gICAgICAgICAgICAvLyBleHBsaWNpdGx5IGRpc3Rpbmd1aXNoIG51bGwgYW5kIHVuZGVmaW5lZFxuICAgICAgICAgICAgLy8gc2luY2UgdnJtSHVtYW5vaWQgbWlnaHQgYmUgbnVsbCBhcyBhIHJlc3VsdFxuICAgICAgICAgICAgaWYgKHZybUh1bWFub2lkID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodnJtSHVtYW5vaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVlJNRmlyc3RQZXJzb25Mb2FkZXJQbHVnaW46IHZybUh1bWFub2lkIGlzIHVuZGVmaW5lZC4gVlJNSHVtYW5vaWRMb2FkZXJQbHVnaW4gaGF2ZSB0byBiZSB1c2VkIGZpcnN0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBnbHRmLnVzZXJEYXRhLnZybUZpcnN0UGVyc29uID0geWllbGQgdGhpcy5faW1wb3J0KGdsdGYsIHZybUh1bWFub2lkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEltcG9ydCBhIHtAbGluayBWUk1GaXJzdFBlcnNvbn0gZnJvbSBhIFZSTS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBnbHRmIEEgcGFyc2VkIHJlc3VsdCBvZiBHTFRGIHRha2VuIGZyb20gR0xURkxvYWRlclxuICAgICAqIEBwYXJhbSBodW1hbm9pZCBBIHtAbGluayBWUk1IdW1hbm9pZH0gaW5zdGFuY2UgdGhhdCByZXByZXNlbnRzIHRoZSBWUk1cbiAgICAgKi9cbiAgICBfaW1wb3J0KGdsdGYsIGh1bWFub2lkKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoaHVtYW5vaWQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdjFSZXN1bHQgPSB5aWVsZCB0aGlzLl92MUltcG9ydChnbHRmLCBodW1hbm9pZCk7XG4gICAgICAgICAgICBpZiAodjFSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdjFSZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2MFJlc3VsdCA9IHlpZWxkIHRoaXMuX3YwSW1wb3J0KGdsdGYsIGh1bWFub2lkKTtcbiAgICAgICAgICAgIGlmICh2MFJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2MFJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX3YxSW1wb3J0KGdsdGYsIGh1bWFub2lkKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBqc29uID0gdGhpcy5wYXJzZXIuanNvbjtcbiAgICAgICAgICAgIC8vIGVhcmx5IGFib3J0IGlmIGl0IGRvZXNuJ3QgdXNlIHZybVxuICAgICAgICAgICAgY29uc3QgaXNWUk1Vc2VkID0gKChfYSA9IGpzb24uZXh0ZW5zaW9uc1VzZWQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pbmRleE9mKCdWUk1DX3ZybScpKSAhPT0gLTE7XG4gICAgICAgICAgICBpZiAoIWlzVlJNVXNlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gKF9iID0ganNvbi5leHRlbnNpb25zKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2JbJ1ZSTUNfdnJtJ107XG4gICAgICAgICAgICBpZiAoIWV4dGVuc2lvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc3BlY1ZlcnNpb24gPSBleHRlbnNpb24uc3BlY1ZlcnNpb247XG4gICAgICAgICAgICBpZiAoIVBPU1NJQkxFX1NQRUNfVkVSU0lPTlMkMy5oYXMoc3BlY1ZlcnNpb24pKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBWUk1GaXJzdFBlcnNvbkxvYWRlclBsdWdpbjogVW5rbm93biBWUk1DX3ZybSBzcGVjVmVyc2lvbiBcIiR7c3BlY1ZlcnNpb259XCJgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYUZpcnN0UGVyc29uID0gZXh0ZW5zaW9uLmZpcnN0UGVyc29uO1xuICAgICAgICAgICAgaWYgKCFzY2hlbWFGaXJzdFBlcnNvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbWVzaEFubm90YXRpb25zID0gW107XG4gICAgICAgICAgICBjb25zdCBub2RlUHJpbWl0aXZlc01hcCA9IHlpZWxkIGdsdGZFeHRyYWN0UHJpbWl0aXZlc0Zyb21Ob2RlcyhnbHRmKTtcbiAgICAgICAgICAgIEFycmF5LmZyb20obm9kZVByaW1pdGl2ZXNNYXAuZW50cmllcygpKS5mb3JFYWNoKChbbm9kZUluZGV4LCBwcmltaXRpdmVzXSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBjb25zdCBhbm5vdGF0aW9uID0gc2NoZW1hRmlyc3RQZXJzb24ubWVzaEFubm90YXRpb25zXG4gICAgICAgICAgICAgICAgICAgID8gc2NoZW1hRmlyc3RQZXJzb24ubWVzaEFubm90YXRpb25zLmZpbmQoKGEpID0+IGEubm9kZSA9PT0gbm9kZUluZGV4KVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBtZXNoQW5ub3RhdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIG1lc2hlczogcHJpbWl0aXZlcyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogKF9hID0gYW5ub3RhdGlvbiA9PT0gbnVsbCB8fCBhbm5vdGF0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhbm5vdGF0aW9uLnR5cGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdib3RoJyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBWUk1GaXJzdFBlcnNvbihodW1hbm9pZCwgbWVzaEFubm90YXRpb25zKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF92MEltcG9ydChnbHRmLCBodW1hbm9pZCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBqc29uID0gdGhpcy5wYXJzZXIuanNvbjtcbiAgICAgICAgICAgIGNvbnN0IHZybUV4dCA9IChfYSA9IGpzb24uZXh0ZW5zaW9ucykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLlZSTTtcbiAgICAgICAgICAgIGlmICghdnJtRXh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzY2hlbWFGaXJzdFBlcnNvbiA9IHZybUV4dC5maXJzdFBlcnNvbjtcbiAgICAgICAgICAgIGlmICghc2NoZW1hRmlyc3RQZXJzb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1lc2hBbm5vdGF0aW9ucyA9IFtdO1xuICAgICAgICAgICAgY29uc3Qgbm9kZVByaW1pdGl2ZXNNYXAgPSB5aWVsZCBnbHRmRXh0cmFjdFByaW1pdGl2ZXNGcm9tTm9kZXMoZ2x0Zik7XG4gICAgICAgICAgICBBcnJheS5mcm9tKG5vZGVQcmltaXRpdmVzTWFwLmVudHJpZXMoKSkuZm9yRWFjaCgoW25vZGVJbmRleCwgcHJpbWl0aXZlc10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzY2hlbWFOb2RlID0ganNvbi5ub2Rlc1tub2RlSW5kZXhdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZsYWcgPSBzY2hlbWFGaXJzdFBlcnNvbi5tZXNoQW5ub3RhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgPyBzY2hlbWFGaXJzdFBlcnNvbi5tZXNoQW5ub3RhdGlvbnMuZmluZCgoYSkgPT4gYS5tZXNoID09PSBzY2hlbWFOb2RlLm1lc2gpXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIG1lc2hBbm5vdGF0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgbWVzaGVzOiBwcmltaXRpdmVzLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiB0aGlzLl9jb252ZXJ0VjBGbGFnVG9WMVR5cGUoZmxhZyA9PT0gbnVsbCB8fCBmbGFnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmbGFnLmZpcnN0UGVyc29uRmxhZyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVlJNRmlyc3RQZXJzb24oaHVtYW5vaWQsIG1lc2hBbm5vdGF0aW9ucyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfY29udmVydFYwRmxhZ1RvVjFUeXBlKGZsYWcpIHtcbiAgICAgICAgaWYgKGZsYWcgPT09ICdGaXJzdFBlcnNvbk9ubHknKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2ZpcnN0UGVyc29uT25seSc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZmxhZyA9PT0gJ1RoaXJkUGVyc29uT25seScpIHtcbiAgICAgICAgICAgIHJldHVybiAndGhpcmRQZXJzb25Pbmx5JztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmbGFnID09PSAnQXV0bycpIHtcbiAgICAgICAgICAgIHJldHVybiAnYXV0byc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJ2JvdGgnO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbmNvbnN0IFZSTUZpcnN0UGVyc29uTWVzaEFubm90YXRpb25UeXBlID0ge1xuICAgIEF1dG86ICdhdXRvJyxcbiAgICBCb3RoOiAnYm90aCcsXG4gICAgVGhpcmRQZXJzb25Pbmx5OiAndGhpcmRQZXJzb25Pbmx5JyxcbiAgICBGaXJzdFBlcnNvbk9ubHk6ICdmaXJzdFBlcnNvbk9ubHknLFxufTtcblxuY29uc3QgX3YzQSQ0ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IF92M0IkMiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jb25zdCBfcXVhdEEkNSA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jbGFzcyBWUk1IdW1hbm9pZEhlbHBlciBleHRlbmRzIFRIUkVFLkdyb3VwIHtcbiAgICBjb25zdHJ1Y3RvcihodW1hbm9pZCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnZybUh1bWFub2lkID0gaHVtYW5vaWQ7XG4gICAgICAgIHRoaXMuX2JvbmVBeGVzTWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBPYmplY3QudmFsdWVzKGh1bWFub2lkLmh1bWFuQm9uZXMpLmZvckVhY2goKGJvbmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhlbHBlciA9IG5ldyBUSFJFRS5BeGVzSGVscGVyKDEuMCk7XG4gICAgICAgICAgICBoZWxwZXIubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgaGVscGVyLm1hdGVyaWFsLmRlcHRoVGVzdCA9IGZhbHNlO1xuICAgICAgICAgICAgaGVscGVyLm1hdGVyaWFsLmRlcHRoV3JpdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuYWRkKGhlbHBlcik7XG4gICAgICAgICAgICB0aGlzLl9ib25lQXhlc01hcC5zZXQoYm9uZSwgaGVscGVyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGRpc3Bvc2UoKSB7XG4gICAgICAgIEFycmF5LmZyb20odGhpcy5fYm9uZUF4ZXNNYXAudmFsdWVzKCkpLmZvckVhY2goKGF4ZXMpID0+IHtcbiAgICAgICAgICAgIGF4ZXMuZ2VvbWV0cnkuZGlzcG9zZSgpO1xuICAgICAgICAgICAgYXhlcy5tYXRlcmlhbC5kaXNwb3NlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB1cGRhdGVNYXRyaXhXb3JsZChmb3JjZSkge1xuICAgICAgICBBcnJheS5mcm9tKHRoaXMuX2JvbmVBeGVzTWFwLmVudHJpZXMoKSkuZm9yRWFjaCgoW2JvbmUsIGF4ZXNdKSA9PiB7XG4gICAgICAgICAgICBib25lLm5vZGUudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgYm9uZS5ub2RlLm1hdHJpeFdvcmxkLmRlY29tcG9zZShfdjNBJDQsIF9xdWF0QSQ1LCBfdjNCJDIpO1xuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSBfdjNBJDQuc2V0KDAuMSwgMC4xLCAwLjEpLmRpdmlkZShfdjNCJDIpO1xuICAgICAgICAgICAgYXhlcy5tYXRyaXguY29weShib25lLm5vZGUubWF0cml4V29ybGQpLnNjYWxlKHNjYWxlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKGZvcmNlKTtcbiAgICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuLyoqXG4gKiBUaGUgbGlzdCBvZiB7QGxpbmsgVlJNSHVtYW5Cb25lTmFtZX0uIERlcGVuZGVuY3kgYXdhcmUuXG4gKi9cbmNvbnN0IFZSTUh1bWFuQm9uZUxpc3QgPSBbXG4gICAgJ2hpcHMnLFxuICAgICdzcGluZScsXG4gICAgJ2NoZXN0JyxcbiAgICAndXBwZXJDaGVzdCcsXG4gICAgJ25lY2snLFxuICAgICdoZWFkJyxcbiAgICAnbGVmdEV5ZScsXG4gICAgJ3JpZ2h0RXllJyxcbiAgICAnamF3JyxcbiAgICAnbGVmdFVwcGVyTGVnJyxcbiAgICAnbGVmdExvd2VyTGVnJyxcbiAgICAnbGVmdEZvb3QnLFxuICAgICdsZWZ0VG9lcycsXG4gICAgJ3JpZ2h0VXBwZXJMZWcnLFxuICAgICdyaWdodExvd2VyTGVnJyxcbiAgICAncmlnaHRGb290JyxcbiAgICAncmlnaHRUb2VzJyxcbiAgICAnbGVmdFNob3VsZGVyJyxcbiAgICAnbGVmdFVwcGVyQXJtJyxcbiAgICAnbGVmdExvd2VyQXJtJyxcbiAgICAnbGVmdEhhbmQnLFxuICAgICdyaWdodFNob3VsZGVyJyxcbiAgICAncmlnaHRVcHBlckFybScsXG4gICAgJ3JpZ2h0TG93ZXJBcm0nLFxuICAgICdyaWdodEhhbmQnLFxuICAgICdsZWZ0VGh1bWJNZXRhY2FycGFsJyxcbiAgICAnbGVmdFRodW1iUHJveGltYWwnLFxuICAgICdsZWZ0VGh1bWJEaXN0YWwnLFxuICAgICdsZWZ0SW5kZXhQcm94aW1hbCcsXG4gICAgJ2xlZnRJbmRleEludGVybWVkaWF0ZScsXG4gICAgJ2xlZnRJbmRleERpc3RhbCcsXG4gICAgJ2xlZnRNaWRkbGVQcm94aW1hbCcsXG4gICAgJ2xlZnRNaWRkbGVJbnRlcm1lZGlhdGUnLFxuICAgICdsZWZ0TWlkZGxlRGlzdGFsJyxcbiAgICAnbGVmdFJpbmdQcm94aW1hbCcsXG4gICAgJ2xlZnRSaW5nSW50ZXJtZWRpYXRlJyxcbiAgICAnbGVmdFJpbmdEaXN0YWwnLFxuICAgICdsZWZ0TGl0dGxlUHJveGltYWwnLFxuICAgICdsZWZ0TGl0dGxlSW50ZXJtZWRpYXRlJyxcbiAgICAnbGVmdExpdHRsZURpc3RhbCcsXG4gICAgJ3JpZ2h0VGh1bWJNZXRhY2FycGFsJyxcbiAgICAncmlnaHRUaHVtYlByb3hpbWFsJyxcbiAgICAncmlnaHRUaHVtYkRpc3RhbCcsXG4gICAgJ3JpZ2h0SW5kZXhQcm94aW1hbCcsXG4gICAgJ3JpZ2h0SW5kZXhJbnRlcm1lZGlhdGUnLFxuICAgICdyaWdodEluZGV4RGlzdGFsJyxcbiAgICAncmlnaHRNaWRkbGVQcm94aW1hbCcsXG4gICAgJ3JpZ2h0TWlkZGxlSW50ZXJtZWRpYXRlJyxcbiAgICAncmlnaHRNaWRkbGVEaXN0YWwnLFxuICAgICdyaWdodFJpbmdQcm94aW1hbCcsXG4gICAgJ3JpZ2h0UmluZ0ludGVybWVkaWF0ZScsXG4gICAgJ3JpZ2h0UmluZ0Rpc3RhbCcsXG4gICAgJ3JpZ2h0TGl0dGxlUHJveGltYWwnLFxuICAgICdyaWdodExpdHRsZUludGVybWVkaWF0ZScsXG4gICAgJ3JpZ2h0TGl0dGxlRGlzdGFsJyxcbl07XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuLyoqXG4gKiBUaGUgbmFtZXMgb2Yge0BsaW5rIFZSTUh1bWFub2lkfSBib25lIG5hbWVzLlxuICpcbiAqIFJlZjogaHR0cHM6Ly9naXRodWIuY29tL3ZybS1jL3ZybS1zcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3NwZWNpZmljYXRpb24vVlJNQ192cm0tMS4wL2h1bWFub2lkLm1kXG4gKi9cbmNvbnN0IFZSTUh1bWFuQm9uZU5hbWUgPSB7XG4gICAgSGlwczogJ2hpcHMnLFxuICAgIFNwaW5lOiAnc3BpbmUnLFxuICAgIENoZXN0OiAnY2hlc3QnLFxuICAgIFVwcGVyQ2hlc3Q6ICd1cHBlckNoZXN0JyxcbiAgICBOZWNrOiAnbmVjaycsXG4gICAgSGVhZDogJ2hlYWQnLFxuICAgIExlZnRFeWU6ICdsZWZ0RXllJyxcbiAgICBSaWdodEV5ZTogJ3JpZ2h0RXllJyxcbiAgICBKYXc6ICdqYXcnLFxuICAgIExlZnRVcHBlckxlZzogJ2xlZnRVcHBlckxlZycsXG4gICAgTGVmdExvd2VyTGVnOiAnbGVmdExvd2VyTGVnJyxcbiAgICBMZWZ0Rm9vdDogJ2xlZnRGb290JyxcbiAgICBMZWZ0VG9lczogJ2xlZnRUb2VzJyxcbiAgICBSaWdodFVwcGVyTGVnOiAncmlnaHRVcHBlckxlZycsXG4gICAgUmlnaHRMb3dlckxlZzogJ3JpZ2h0TG93ZXJMZWcnLFxuICAgIFJpZ2h0Rm9vdDogJ3JpZ2h0Rm9vdCcsXG4gICAgUmlnaHRUb2VzOiAncmlnaHRUb2VzJyxcbiAgICBMZWZ0U2hvdWxkZXI6ICdsZWZ0U2hvdWxkZXInLFxuICAgIExlZnRVcHBlckFybTogJ2xlZnRVcHBlckFybScsXG4gICAgTGVmdExvd2VyQXJtOiAnbGVmdExvd2VyQXJtJyxcbiAgICBMZWZ0SGFuZDogJ2xlZnRIYW5kJyxcbiAgICBSaWdodFNob3VsZGVyOiAncmlnaHRTaG91bGRlcicsXG4gICAgUmlnaHRVcHBlckFybTogJ3JpZ2h0VXBwZXJBcm0nLFxuICAgIFJpZ2h0TG93ZXJBcm06ICdyaWdodExvd2VyQXJtJyxcbiAgICBSaWdodEhhbmQ6ICdyaWdodEhhbmQnLFxuICAgIExlZnRUaHVtYk1ldGFjYXJwYWw6ICdsZWZ0VGh1bWJNZXRhY2FycGFsJyxcbiAgICBMZWZ0VGh1bWJQcm94aW1hbDogJ2xlZnRUaHVtYlByb3hpbWFsJyxcbiAgICBMZWZ0VGh1bWJEaXN0YWw6ICdsZWZ0VGh1bWJEaXN0YWwnLFxuICAgIExlZnRJbmRleFByb3hpbWFsOiAnbGVmdEluZGV4UHJveGltYWwnLFxuICAgIExlZnRJbmRleEludGVybWVkaWF0ZTogJ2xlZnRJbmRleEludGVybWVkaWF0ZScsXG4gICAgTGVmdEluZGV4RGlzdGFsOiAnbGVmdEluZGV4RGlzdGFsJyxcbiAgICBMZWZ0TWlkZGxlUHJveGltYWw6ICdsZWZ0TWlkZGxlUHJveGltYWwnLFxuICAgIExlZnRNaWRkbGVJbnRlcm1lZGlhdGU6ICdsZWZ0TWlkZGxlSW50ZXJtZWRpYXRlJyxcbiAgICBMZWZ0TWlkZGxlRGlzdGFsOiAnbGVmdE1pZGRsZURpc3RhbCcsXG4gICAgTGVmdFJpbmdQcm94aW1hbDogJ2xlZnRSaW5nUHJveGltYWwnLFxuICAgIExlZnRSaW5nSW50ZXJtZWRpYXRlOiAnbGVmdFJpbmdJbnRlcm1lZGlhdGUnLFxuICAgIExlZnRSaW5nRGlzdGFsOiAnbGVmdFJpbmdEaXN0YWwnLFxuICAgIExlZnRMaXR0bGVQcm94aW1hbDogJ2xlZnRMaXR0bGVQcm94aW1hbCcsXG4gICAgTGVmdExpdHRsZUludGVybWVkaWF0ZTogJ2xlZnRMaXR0bGVJbnRlcm1lZGlhdGUnLFxuICAgIExlZnRMaXR0bGVEaXN0YWw6ICdsZWZ0TGl0dGxlRGlzdGFsJyxcbiAgICBSaWdodFRodW1iTWV0YWNhcnBhbDogJ3JpZ2h0VGh1bWJNZXRhY2FycGFsJyxcbiAgICBSaWdodFRodW1iUHJveGltYWw6ICdyaWdodFRodW1iUHJveGltYWwnLFxuICAgIFJpZ2h0VGh1bWJEaXN0YWw6ICdyaWdodFRodW1iRGlzdGFsJyxcbiAgICBSaWdodEluZGV4UHJveGltYWw6ICdyaWdodEluZGV4UHJveGltYWwnLFxuICAgIFJpZ2h0SW5kZXhJbnRlcm1lZGlhdGU6ICdyaWdodEluZGV4SW50ZXJtZWRpYXRlJyxcbiAgICBSaWdodEluZGV4RGlzdGFsOiAncmlnaHRJbmRleERpc3RhbCcsXG4gICAgUmlnaHRNaWRkbGVQcm94aW1hbDogJ3JpZ2h0TWlkZGxlUHJveGltYWwnLFxuICAgIFJpZ2h0TWlkZGxlSW50ZXJtZWRpYXRlOiAncmlnaHRNaWRkbGVJbnRlcm1lZGlhdGUnLFxuICAgIFJpZ2h0TWlkZGxlRGlzdGFsOiAncmlnaHRNaWRkbGVEaXN0YWwnLFxuICAgIFJpZ2h0UmluZ1Byb3hpbWFsOiAncmlnaHRSaW5nUHJveGltYWwnLFxuICAgIFJpZ2h0UmluZ0ludGVybWVkaWF0ZTogJ3JpZ2h0UmluZ0ludGVybWVkaWF0ZScsXG4gICAgUmlnaHRSaW5nRGlzdGFsOiAncmlnaHRSaW5nRGlzdGFsJyxcbiAgICBSaWdodExpdHRsZVByb3hpbWFsOiAncmlnaHRMaXR0bGVQcm94aW1hbCcsXG4gICAgUmlnaHRMaXR0bGVJbnRlcm1lZGlhdGU6ICdyaWdodExpdHRsZUludGVybWVkaWF0ZScsXG4gICAgUmlnaHRMaXR0bGVEaXN0YWw6ICdyaWdodExpdHRsZURpc3RhbCcsXG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbi8qKlxuICogQW4gb2JqZWN0IHRoYXQgbWFwcyBmcm9tIHtAbGluayBWUk1IdW1hbkJvbmVOYW1lfSB0byBpdHMgcGFyZW50IHtAbGluayBWUk1IdW1hbkJvbmVOYW1lfS5cbiAqXG4gKiBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS92cm0tYy92cm0tc3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci9zcGVjaWZpY2F0aW9uL1ZSTUNfdnJtLTEuMC9odW1hbm9pZC5tZFxuICovXG5jb25zdCBWUk1IdW1hbkJvbmVQYXJlbnRNYXAgPSB7XG4gICAgaGlwczogbnVsbCxcbiAgICBzcGluZTogJ2hpcHMnLFxuICAgIGNoZXN0OiAnc3BpbmUnLFxuICAgIHVwcGVyQ2hlc3Q6ICdjaGVzdCcsXG4gICAgbmVjazogJ3VwcGVyQ2hlc3QnLFxuICAgIGhlYWQ6ICduZWNrJyxcbiAgICBsZWZ0RXllOiAnaGVhZCcsXG4gICAgcmlnaHRFeWU6ICdoZWFkJyxcbiAgICBqYXc6ICdoZWFkJyxcbiAgICBsZWZ0VXBwZXJMZWc6ICdoaXBzJyxcbiAgICBsZWZ0TG93ZXJMZWc6ICdsZWZ0VXBwZXJMZWcnLFxuICAgIGxlZnRGb290OiAnbGVmdExvd2VyTGVnJyxcbiAgICBsZWZ0VG9lczogJ2xlZnRGb290JyxcbiAgICByaWdodFVwcGVyTGVnOiAnaGlwcycsXG4gICAgcmlnaHRMb3dlckxlZzogJ3JpZ2h0VXBwZXJMZWcnLFxuICAgIHJpZ2h0Rm9vdDogJ3JpZ2h0TG93ZXJMZWcnLFxuICAgIHJpZ2h0VG9lczogJ3JpZ2h0Rm9vdCcsXG4gICAgbGVmdFNob3VsZGVyOiAndXBwZXJDaGVzdCcsXG4gICAgbGVmdFVwcGVyQXJtOiAnbGVmdFNob3VsZGVyJyxcbiAgICBsZWZ0TG93ZXJBcm06ICdsZWZ0VXBwZXJBcm0nLFxuICAgIGxlZnRIYW5kOiAnbGVmdExvd2VyQXJtJyxcbiAgICByaWdodFNob3VsZGVyOiAndXBwZXJDaGVzdCcsXG4gICAgcmlnaHRVcHBlckFybTogJ3JpZ2h0U2hvdWxkZXInLFxuICAgIHJpZ2h0TG93ZXJBcm06ICdyaWdodFVwcGVyQXJtJyxcbiAgICByaWdodEhhbmQ6ICdyaWdodExvd2VyQXJtJyxcbiAgICBsZWZ0VGh1bWJNZXRhY2FycGFsOiAnbGVmdEhhbmQnLFxuICAgIGxlZnRUaHVtYlByb3hpbWFsOiAnbGVmdFRodW1iTWV0YWNhcnBhbCcsXG4gICAgbGVmdFRodW1iRGlzdGFsOiAnbGVmdFRodW1iUHJveGltYWwnLFxuICAgIGxlZnRJbmRleFByb3hpbWFsOiAnbGVmdEhhbmQnLFxuICAgIGxlZnRJbmRleEludGVybWVkaWF0ZTogJ2xlZnRJbmRleFByb3hpbWFsJyxcbiAgICBsZWZ0SW5kZXhEaXN0YWw6ICdsZWZ0SW5kZXhJbnRlcm1lZGlhdGUnLFxuICAgIGxlZnRNaWRkbGVQcm94aW1hbDogJ2xlZnRIYW5kJyxcbiAgICBsZWZ0TWlkZGxlSW50ZXJtZWRpYXRlOiAnbGVmdE1pZGRsZVByb3hpbWFsJyxcbiAgICBsZWZ0TWlkZGxlRGlzdGFsOiAnbGVmdE1pZGRsZUludGVybWVkaWF0ZScsXG4gICAgbGVmdFJpbmdQcm94aW1hbDogJ2xlZnRIYW5kJyxcbiAgICBsZWZ0UmluZ0ludGVybWVkaWF0ZTogJ2xlZnRSaW5nUHJveGltYWwnLFxuICAgIGxlZnRSaW5nRGlzdGFsOiAnbGVmdFJpbmdJbnRlcm1lZGlhdGUnLFxuICAgIGxlZnRMaXR0bGVQcm94aW1hbDogJ2xlZnRIYW5kJyxcbiAgICBsZWZ0TGl0dGxlSW50ZXJtZWRpYXRlOiAnbGVmdExpdHRsZVByb3hpbWFsJyxcbiAgICBsZWZ0TGl0dGxlRGlzdGFsOiAnbGVmdExpdHRsZUludGVybWVkaWF0ZScsXG4gICAgcmlnaHRUaHVtYk1ldGFjYXJwYWw6ICdyaWdodEhhbmQnLFxuICAgIHJpZ2h0VGh1bWJQcm94aW1hbDogJ3JpZ2h0VGh1bWJNZXRhY2FycGFsJyxcbiAgICByaWdodFRodW1iRGlzdGFsOiAncmlnaHRUaHVtYlByb3hpbWFsJyxcbiAgICByaWdodEluZGV4UHJveGltYWw6ICdyaWdodEhhbmQnLFxuICAgIHJpZ2h0SW5kZXhJbnRlcm1lZGlhdGU6ICdyaWdodEluZGV4UHJveGltYWwnLFxuICAgIHJpZ2h0SW5kZXhEaXN0YWw6ICdyaWdodEluZGV4SW50ZXJtZWRpYXRlJyxcbiAgICByaWdodE1pZGRsZVByb3hpbWFsOiAncmlnaHRIYW5kJyxcbiAgICByaWdodE1pZGRsZUludGVybWVkaWF0ZTogJ3JpZ2h0TWlkZGxlUHJveGltYWwnLFxuICAgIHJpZ2h0TWlkZGxlRGlzdGFsOiAncmlnaHRNaWRkbGVJbnRlcm1lZGlhdGUnLFxuICAgIHJpZ2h0UmluZ1Byb3hpbWFsOiAncmlnaHRIYW5kJyxcbiAgICByaWdodFJpbmdJbnRlcm1lZGlhdGU6ICdyaWdodFJpbmdQcm94aW1hbCcsXG4gICAgcmlnaHRSaW5nRGlzdGFsOiAncmlnaHRSaW5nSW50ZXJtZWRpYXRlJyxcbiAgICByaWdodExpdHRsZVByb3hpbWFsOiAncmlnaHRIYW5kJyxcbiAgICByaWdodExpdHRsZUludGVybWVkaWF0ZTogJ3JpZ2h0TGl0dGxlUHJveGltYWwnLFxuICAgIHJpZ2h0TGl0dGxlRGlzdGFsOiAncmlnaHRMaXR0bGVJbnRlcm1lZGlhdGUnLFxufTtcblxuLyoqXG4gKiBBIGNvbXBhdCBmdW5jdGlvbiBmb3IgYFF1YXRlcm5pb24uaW52ZXJ0KClgIC8gYFF1YXRlcm5pb24uaW52ZXJzZSgpYC5cbiAqIGBRdWF0ZXJuaW9uLmludmVydCgpYCBpcyBpbnRyb2R1Y2VkIGluIHIxMjMgYW5kIGBRdWF0ZXJuaW9uLmludmVyc2UoKWAgZW1pdHMgYSB3YXJuaW5nLlxuICogV2UgYXJlIGdvaW5nIHRvIHVzZSB0aGlzIGNvbXBhdCBmb3IgYSB3aGlsZS5cbiAqIEBwYXJhbSB0YXJnZXQgQSB0YXJnZXQgcXVhdGVybmlvblxuICovXG5mdW5jdGlvbiBxdWF0SW52ZXJ0Q29tcGF0KHRhcmdldCkge1xuICAgIGlmICh0YXJnZXQuaW52ZXJ0KSB7XG4gICAgICAgIHRhcmdldC5pbnZlcnQoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRhcmdldC5pbnZlcnNlKCk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59XG5cbmNvbnN0IF92M0EkMyA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jb25zdCBfcXVhdEEkNCA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4vKipcbiAqIEEgY2xhc3MgcmVwcmVzZW50cyB0aGUgUmlnIG9mIGEgVlJNLlxuICovXG5jbGFzcyBWUk1SaWcge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyB7QGxpbmsgVlJNSHVtYW5vaWR9LlxuICAgICAqIEBwYXJhbSBodW1hbkJvbmVzIEEge0BsaW5rIFZSTUh1bWFuQm9uZXN9IGNvbnRhaW5zIGFsbCB0aGUgYm9uZXMgb2YgdGhlIG5ldyBodW1hbm9pZFxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGh1bWFuQm9uZXMpIHtcbiAgICAgICAgdGhpcy5odW1hbkJvbmVzID0gaHVtYW5Cb25lcztcbiAgICAgICAgdGhpcy5yZXN0UG9zZSA9IHRoaXMuZ2V0QWJzb2x1dGVQb3NlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgY3VycmVudCBhYnNvbHV0ZSBwb3NlIG9mIHRoaXMgaHVtYW5vaWQgYXMgYSB7QGxpbmsgVlJNUG9zZX0uXG4gICAgICogTm90ZSB0aGF0IHRoZSBvdXRwdXQgcmVzdWx0IHdpbGwgY29udGFpbiBpbml0aWFsIHN0YXRlIG9mIHRoZSBWUk0gYW5kIG5vdCBjb21wYXRpYmxlIGJldHdlZW4gZGlmZmVyZW50IG1vZGVscy5cbiAgICAgKiBZb3UgbWlnaHQgd2FudCB0byB1c2Uge0BsaW5rIGdldFBvc2V9IGluc3RlYWQuXG4gICAgICovXG4gICAgZ2V0QWJzb2x1dGVQb3NlKCkge1xuICAgICAgICBjb25zdCBwb3NlID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuaHVtYW5Cb25lcykuZm9yRWFjaCgodnJtQm9uZU5hbWVTdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZybUJvbmVOYW1lID0gdnJtQm9uZU5hbWVTdHJpbmc7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5nZXRCb25lTm9kZSh2cm1Cb25lTmFtZSk7XG4gICAgICAgICAgICAvLyBJZ25vcmUgd2hlbiB0aGVyZSBhcmUgbm8gYm9uZSBvbiB0aGUgVlJNSHVtYW5vaWRcbiAgICAgICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEdldCB0aGUgcG9zaXRpb24gLyByb3RhdGlvbiBmcm9tIHRoZSBub2RlXG4gICAgICAgICAgICBfdjNBJDMuY29weShub2RlLnBvc2l0aW9uKTtcbiAgICAgICAgICAgIF9xdWF0QSQ0LmNvcHkobm9kZS5xdWF0ZXJuaW9uKTtcbiAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gcmF3IGFycmF5c1xuICAgICAgICAgICAgcG9zZVt2cm1Cb25lTmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IF92M0EkMy50b0FycmF5KCksXG4gICAgICAgICAgICAgICAgcm90YXRpb246IF9xdWF0QSQ0LnRvQXJyYXkoKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcG9zZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIHRoZSBjdXJyZW50IHBvc2Ugb2YgdGhpcyBodW1hbm9pZCBhcyBhIHtAbGluayBWUk1Qb3NlfS5cbiAgICAgKlxuICAgICAqIEVhY2ggdHJhbnNmb3JtIGlzIGEgbG9jYWwgdHJhbnNmb3JtIHJlbGF0aXZlIGZyb20gcmVzdCBwb3NlIChULXBvc2UpLlxuICAgICAqL1xuICAgIGdldFBvc2UoKSB7XG4gICAgICAgIGNvbnN0IHBvc2UgPSB7fTtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5odW1hbkJvbmVzKS5mb3JFYWNoKChib25lTmFtZVN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYm9uZU5hbWUgPSBib25lTmFtZVN0cmluZztcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldEJvbmVOb2RlKGJvbmVOYW1lKTtcbiAgICAgICAgICAgIC8vIElnbm9yZSB3aGVuIHRoZXJlIGFyZSBubyBib25lIG9uIHRoZSBWUk1IdW1hbm9pZFxuICAgICAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVGFrZSBhIGRpZmYgZnJvbSByZXN0UG9zZVxuICAgICAgICAgICAgX3YzQSQzLnNldCgwLCAwLCAwKTtcbiAgICAgICAgICAgIF9xdWF0QSQ0LmlkZW50aXR5KCk7XG4gICAgICAgICAgICBjb25zdCByZXN0U3RhdGUgPSB0aGlzLnJlc3RQb3NlW2JvbmVOYW1lXTtcbiAgICAgICAgICAgIGlmIChyZXN0U3RhdGUgPT09IG51bGwgfHwgcmVzdFN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXN0U3RhdGUucG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICBfdjNBJDMuZnJvbUFycmF5KHJlc3RTdGF0ZS5wb3NpdGlvbikubmVnYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzdFN0YXRlID09PSBudWxsIHx8IHJlc3RTdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzdFN0YXRlLnJvdGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcXVhdEludmVydENvbXBhdChfcXVhdEEkNC5mcm9tQXJyYXkocmVzdFN0YXRlLnJvdGF0aW9uKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBHZXQgdGhlIHBvc2l0aW9uIC8gcm90YXRpb24gZnJvbSB0aGUgbm9kZVxuICAgICAgICAgICAgX3YzQSQzLmFkZChub2RlLnBvc2l0aW9uKTtcbiAgICAgICAgICAgIF9xdWF0QSQ0LnByZW11bHRpcGx5KG5vZGUucXVhdGVybmlvbik7XG4gICAgICAgICAgICAvLyBDb252ZXJ0IHRvIHJhdyBhcnJheXNcbiAgICAgICAgICAgIHBvc2VbYm9uZU5hbWVdID0ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBfdjNBJDMudG9BcnJheSgpLFxuICAgICAgICAgICAgICAgIHJvdGF0aW9uOiBfcXVhdEEkNC50b0FycmF5KCksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBvc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIExldCB0aGUgaHVtYW5vaWQgZG8gYSBzcGVjaWZpZWQgcG9zZS5cbiAgICAgKlxuICAgICAqIEVhY2ggdHJhbnNmb3JtIGhhdmUgdG8gYmUgYSBsb2NhbCB0cmFuc2Zvcm0gcmVsYXRpdmUgZnJvbSByZXN0IHBvc2UgKFQtcG9zZSkuXG4gICAgICogWW91IGNhbiBwYXNzIHdoYXQgeW91IGdvdCBmcm9tIHtAbGluayBnZXRQb3NlfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwb3NlT2JqZWN0IEEgW1tWUk1Qb3NlXV0gdGhhdCByZXByZXNlbnRzIGEgc2luZ2xlIHBvc2VcbiAgICAgKi9cbiAgICBzZXRQb3NlKHBvc2VPYmplY3QpIHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMocG9zZU9iamVjdCkuZm9yRWFjaCgoW2JvbmVOYW1lU3RyaW5nLCBzdGF0ZV0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJvbmVOYW1lID0gYm9uZU5hbWVTdHJpbmc7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5nZXRCb25lTm9kZShib25lTmFtZSk7XG4gICAgICAgICAgICAvLyBJZ25vcmUgd2hlbiB0aGVyZSBhcmUgbm8gYm9uZSB0aGF0IGlzIGRlZmluZWQgaW4gdGhlIHBvc2Ugb24gdGhlIFZSTUh1bWFub2lkXG4gICAgICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZXN0U3RhdGUgPSB0aGlzLnJlc3RQb3NlW2JvbmVOYW1lXTtcbiAgICAgICAgICAgIGlmICghcmVzdFN0YXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gSXQncyB2ZXJ5IHVubGlrZWx5LiBQb3NzaWJseSBhIGJ1Z1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEFwcGx5IHRoZSBzdGF0ZSB0byB0aGUgYWN0dWFsIGJvbmVcbiAgICAgICAgICAgIGlmIChzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUucG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICBub2RlLnBvc2l0aW9uLmZyb21BcnJheShzdGF0ZS5wb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3RTdGF0ZS5wb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnBvc2l0aW9uLmFkZChfdjNBJDMuZnJvbUFycmF5KHJlc3RTdGF0ZS5wb3NpdGlvbikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUucm90YXRpb24pIHtcbiAgICAgICAgICAgICAgICBub2RlLnF1YXRlcm5pb24uZnJvbUFycmF5KHN0YXRlLnJvdGF0aW9uKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdFN0YXRlLnJvdGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucXVhdGVybmlvbi5tdWx0aXBseShfcXVhdEEkNC5mcm9tQXJyYXkocmVzdFN0YXRlLnJvdGF0aW9uKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVzZXQgdGhlIGh1bWFub2lkIHRvIGl0cyByZXN0IHBvc2UuXG4gICAgICovXG4gICAgcmVzZXRQb3NlKCkge1xuICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLnJlc3RQb3NlKS5mb3JFYWNoKChbYm9uZU5hbWUsIHJlc3RdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5nZXRCb25lTm9kZShib25lTmFtZSk7XG4gICAgICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzdCA9PT0gbnVsbCB8fCByZXN0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXN0LnBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5wb3NpdGlvbi5mcm9tQXJyYXkocmVzdC5wb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzdCA9PT0gbnVsbCB8fCByZXN0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXN0LnJvdGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5xdWF0ZXJuaW9uLmZyb21BcnJheShyZXN0LnJvdGF0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIGJvbmUgYm91bmQgdG8gYSBzcGVjaWZpZWQge0BsaW5rIFZSTUh1bWFuQm9uZU5hbWV9LCBhcyBhIHtAbGluayBWUk1IdW1hbkJvbmV9LlxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgYm9uZSB5b3Ugd2FudFxuICAgICAqL1xuICAgIGdldEJvbmUobmFtZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoX2EgPSB0aGlzLmh1bWFuQm9uZXNbbmFtZV0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgYm9uZSBib3VuZCB0byBhIHNwZWNpZmllZCB7QGxpbmsgVlJNSHVtYW5Cb25lTmFtZX0sIGFzIGEgYFRIUkVFLk9iamVjdDNEYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIGJvbmUgeW91IHdhbnRcbiAgICAgKi9cbiAgICBnZXRCb25lTm9kZShuYW1lKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSB0aGlzLmh1bWFuQm9uZXNbbmFtZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5ub2RlKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBudWxsO1xuICAgIH1cbn1cblxuY29uc3QgX3YzQSQyID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IF9xdWF0QSQzID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IF9ib25lV29ybGRQb3MgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuLyoqXG4gKiBBIGNsYXNzIHJlcHJlc2VudHMgdGhlIG5vcm1hbGl6ZWQgUmlnIG9mIGEgVlJNLlxuICovXG5jbGFzcyBWUk1IdW1hbm9pZFJpZyBleHRlbmRzIFZSTVJpZyB7XG4gICAgc3RhdGljIF9zZXR1cFRyYW5zZm9ybXMobW9kZWxSaWcpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IG5ldyBUSFJFRS5PYmplY3QzRCgpO1xuICAgICAgICByb290Lm5hbWUgPSAnVlJNSHVtYW5vaWRSaWcnO1xuICAgICAgICAvLyBzdG9yZSBib25lV29ybGRQb3NpdGlvbnMgYW5kIGJvbmVXb3JsZFJvdGF0aW9uc1xuICAgICAgICBjb25zdCBib25lV29ybGRQb3NpdGlvbnMgPSB7fTtcbiAgICAgICAgY29uc3QgYm9uZVdvcmxkUm90YXRpb25zID0ge307XG4gICAgICAgIGNvbnN0IGJvbmVSb3RhdGlvbnMgPSB7fTtcbiAgICAgICAgVlJNSHVtYW5Cb25lTGlzdC5mb3JFYWNoKChib25lTmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYm9uZU5vZGUgPSBtb2RlbFJpZy5nZXRCb25lTm9kZShib25lTmFtZSk7XG4gICAgICAgICAgICBpZiAoYm9uZU5vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBib25lV29ybGRQb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgYm9uZVdvcmxkUm90YXRpb24gPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuICAgICAgICAgICAgICAgIGJvbmVOb2RlLnVwZGF0ZVdvcmxkTWF0cml4KHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBib25lTm9kZS5tYXRyaXhXb3JsZC5kZWNvbXBvc2UoYm9uZVdvcmxkUG9zaXRpb24sIGJvbmVXb3JsZFJvdGF0aW9uLCBfdjNBJDIpO1xuICAgICAgICAgICAgICAgIGJvbmVXb3JsZFBvc2l0aW9uc1tib25lTmFtZV0gPSBib25lV29ybGRQb3NpdGlvbjtcbiAgICAgICAgICAgICAgICBib25lV29ybGRSb3RhdGlvbnNbYm9uZU5hbWVdID0gYm9uZVdvcmxkUm90YXRpb247XG4gICAgICAgICAgICAgICAgYm9uZVJvdGF0aW9uc1tib25lTmFtZV0gPSBib25lTm9kZS5xdWF0ZXJuaW9uLmNsb25lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBidWlsZCByaWcgaGllcmFyY2h5ICsgc3RvcmUgcGFyZW50V29ybGRSb3RhdGlvbnNcbiAgICAgICAgY29uc3QgcGFyZW50V29ybGRSb3RhdGlvbnMgPSB7fTtcbiAgICAgICAgY29uc3QgcmlnQm9uZXMgPSB7fTtcbiAgICAgICAgVlJNSHVtYW5Cb25lTGlzdC5mb3JFYWNoKChib25lTmFtZSkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3QgYm9uZU5vZGUgPSBtb2RlbFJpZy5nZXRCb25lTm9kZShib25lTmFtZSk7XG4gICAgICAgICAgICBpZiAoYm9uZU5vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBib25lV29ybGRQb3NpdGlvbiA9IGJvbmVXb3JsZFBvc2l0aW9uc1tib25lTmFtZV07XG4gICAgICAgICAgICAgICAgLy8gc2VlIHRoZSBuZWFyZXN0IHBhcmVudCBwb3NpdGlvblxuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50Qm9uZU5hbWUgPSBib25lTmFtZTtcbiAgICAgICAgICAgICAgICBsZXQgcGFyZW50V29ybGRQb3NpdGlvbjtcbiAgICAgICAgICAgICAgICBsZXQgcGFyZW50V29ybGRSb3RhdGlvbjtcbiAgICAgICAgICAgICAgICB3aGlsZSAocGFyZW50V29ybGRQb3NpdGlvbiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCb25lTmFtZSA9IFZSTUh1bWFuQm9uZVBhcmVudE1hcFtjdXJyZW50Qm9uZU5hbWVdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEJvbmVOYW1lID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudFdvcmxkUG9zaXRpb24gPSBib25lV29ybGRQb3NpdGlvbnNbY3VycmVudEJvbmVOYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50V29ybGRSb3RhdGlvbiA9IGJvbmVXb3JsZFJvdGF0aW9uc1tjdXJyZW50Qm9uZU5hbWVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBhZGQgdG8gaGllcmFyY2h5XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnQm9uZU5vZGUgPSBuZXcgVEhSRUUuT2JqZWN0M0QoKTtcbiAgICAgICAgICAgICAgICByaWdCb25lTm9kZS5uYW1lID0gJ05vcm1hbGl6ZWRfJyArIGJvbmVOb2RlLm5hbWU7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50UmlnQm9uZU5vZGUgPSAoY3VycmVudEJvbmVOYW1lID8gKF9hID0gcmlnQm9uZXNbY3VycmVudEJvbmVOYW1lXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGUgOiByb290KTtcbiAgICAgICAgICAgICAgICBwYXJlbnRSaWdCb25lTm9kZS5hZGQocmlnQm9uZU5vZGUpO1xuICAgICAgICAgICAgICAgIHJpZ0JvbmVOb2RlLnBvc2l0aW9uLmNvcHkoYm9uZVdvcmxkUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIGlmIChwYXJlbnRXb3JsZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJpZ0JvbmVOb2RlLnBvc2l0aW9uLnN1YihwYXJlbnRXb3JsZFBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmlnQm9uZXNbYm9uZU5hbWVdID0geyBub2RlOiByaWdCb25lTm9kZSB9O1xuICAgICAgICAgICAgICAgIC8vIHN0b3JlIHBhcmVudFdvcmxkUm90YXRpb25cbiAgICAgICAgICAgICAgICBwYXJlbnRXb3JsZFJvdGF0aW9uc1tib25lTmFtZV0gPSBwYXJlbnRXb3JsZFJvdGF0aW9uICE9PSBudWxsICYmIHBhcmVudFdvcmxkUm90YXRpb24gIT09IHZvaWQgMCA/IHBhcmVudFdvcmxkUm90YXRpb24gOiBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJpZ0JvbmVzOiByaWdCb25lcyxcbiAgICAgICAgICAgIHJvb3QsXG4gICAgICAgICAgICBwYXJlbnRXb3JsZFJvdGF0aW9ucyxcbiAgICAgICAgICAgIGJvbmVSb3RhdGlvbnMsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGh1bWFub2lkKSB7XG4gICAgICAgIGNvbnN0IHsgcmlnQm9uZXMsIHJvb3QsIHBhcmVudFdvcmxkUm90YXRpb25zLCBib25lUm90YXRpb25zIH0gPSBWUk1IdW1hbm9pZFJpZy5fc2V0dXBUcmFuc2Zvcm1zKGh1bWFub2lkKTtcbiAgICAgICAgc3VwZXIocmlnQm9uZXMpO1xuICAgICAgICB0aGlzLm9yaWdpbmFsID0gaHVtYW5vaWQ7XG4gICAgICAgIHRoaXMucm9vdCA9IHJvb3Q7XG4gICAgICAgIHRoaXMuX3BhcmVudFdvcmxkUm90YXRpb25zID0gcGFyZW50V29ybGRSb3RhdGlvbnM7XG4gICAgICAgIHRoaXMuX2JvbmVSb3RhdGlvbnMgPSBib25lUm90YXRpb25zO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgdGhpcyBodW1hbm9pZCByaWcuXG4gICAgICovXG4gICAgdXBkYXRlKCkge1xuICAgICAgICBWUk1IdW1hbkJvbmVMaXN0LmZvckVhY2goKGJvbmVOYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBib25lTm9kZSA9IHRoaXMub3JpZ2luYWwuZ2V0Qm9uZU5vZGUoYm9uZU5hbWUpO1xuICAgICAgICAgICAgaWYgKGJvbmVOb2RlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByaWdCb25lTm9kZSA9IHRoaXMuZ2V0Qm9uZU5vZGUoYm9uZU5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFdvcmxkUm90YXRpb24gPSB0aGlzLl9wYXJlbnRXb3JsZFJvdGF0aW9uc1tib25lTmFtZV07XG4gICAgICAgICAgICAgICAgY29uc3QgaW52UGFyZW50V29ybGRSb3RhdGlvbiA9IF9xdWF0QSQzLmNvcHkocGFyZW50V29ybGRSb3RhdGlvbikuaW52ZXJ0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgYm9uZVJvdGF0aW9uID0gdGhpcy5fYm9uZVJvdGF0aW9uc1tib25lTmFtZV07XG4gICAgICAgICAgICAgICAgYm9uZU5vZGUucXVhdGVybmlvblxuICAgICAgICAgICAgICAgICAgICAuY29weShyaWdCb25lTm9kZS5xdWF0ZXJuaW9uKVxuICAgICAgICAgICAgICAgICAgICAubXVsdGlwbHkocGFyZW50V29ybGRSb3RhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgLnByZW11bHRpcGx5KGludlBhcmVudFdvcmxkUm90YXRpb24pXG4gICAgICAgICAgICAgICAgICAgIC5tdWx0aXBseShib25lUm90YXRpb24pO1xuICAgICAgICAgICAgICAgIC8vIE1vdmUgdGhlIG1hc3MgY2VudGVyIG9mIHRoZSBWUk1cbiAgICAgICAgICAgICAgICBpZiAoYm9uZU5hbWUgPT09ICdoaXBzJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBib25lV29ybGRQb3NpdGlvbiA9IHJpZ0JvbmVOb2RlLmdldFdvcmxkUG9zaXRpb24oX2JvbmVXb3JsZFBvcyk7XG4gICAgICAgICAgICAgICAgICAgIGJvbmVOb2RlLnBhcmVudC51cGRhdGVXb3JsZE1hdHJpeCh0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFdvcmxkTWF0cml4ID0gYm9uZU5vZGUucGFyZW50Lm1hdHJpeFdvcmxkO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NhbFBvc2l0aW9uID0gYm9uZVdvcmxkUG9zaXRpb24uYXBwbHlNYXRyaXg0KHBhcmVudFdvcmxkTWF0cml4LmludmVydCgpKTtcbiAgICAgICAgICAgICAgICAgICAgYm9uZU5vZGUucG9zaXRpb24uY29weShsb2NhbFBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBIGNsYXNzIHJlcHJlc2VudHMgYSBodW1hbm9pZCBvZiBhIFZSTS5cbiAqL1xuY2xhc3MgVlJNSHVtYW5vaWQge1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIERlcHJlY2F0ZWQuIFVzZSBlaXRoZXIge0BsaW5rIHJhd1Jlc3RQb3NlfSBvciB7QGxpbmsgbm9ybWFsaXplZFJlc3RQb3NlfSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGdldCByZXN0UG9zZSgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdWUk1IdW1hbm9pZDogcmVzdFBvc2UgaXMgZGVwcmVjYXRlZC4gVXNlIGVpdGhlciByYXdSZXN0UG9zZSBvciBub3JtYWxpemVkUmVzdFBvc2UgaW5zdGVhZC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3UmVzdFBvc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEge0BsaW5rIFZSTVBvc2V9IG9mIGl0cyByYXcgaHVtYW4gYm9uZXMgdGhhdCBpcyBpdHMgZGVmYXVsdCBzdGF0ZS5cbiAgICAgKiBOb3RlIHRoYXQgaXQncyBub3QgY29tcGF0aWJsZSB3aXRoIHtAbGluayBzZXRSYXdQb3NlfSBhbmQge0BsaW5rIGdldFJhd1Bvc2V9LCBzaW5jZSBpdCBjb250YWlucyBub24tcmVsYXRpdmUgdmFsdWVzIG9mIGVhY2ggbG9jYWwgdHJhbnNmb3Jtcy5cbiAgICAgKi9cbiAgICBnZXQgcmF3UmVzdFBvc2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYXdIdW1hbkJvbmVzLnJlc3RQb3NlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHtAbGluayBWUk1Qb3NlfSBvZiBpdHMgbm9ybWFsaXplZCBodW1hbiBib25lcyB0aGF0IGlzIGl0cyBkZWZhdWx0IHN0YXRlLlxuICAgICAqIE5vdGUgdGhhdCBpdCdzIG5vdCBjb21wYXRpYmxlIHdpdGgge0BsaW5rIHNldE5vcm1hbGl6ZWRQb3NlfSBhbmQge0BsaW5rIGdldE5vcm1hbGl6ZWRQb3NlfSwgc2luY2UgaXQgY29udGFpbnMgbm9uLXJlbGF0aXZlIHZhbHVlcyBvZiBlYWNoIGxvY2FsIHRyYW5zZm9ybXMuXG4gICAgICovXG4gICAgZ2V0IG5vcm1hbGl6ZWRSZXN0UG9zZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vcm1hbGl6ZWRIdW1hbkJvbmVzLnJlc3RQb3NlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIG1hcCBmcm9tIHtAbGluayBWUk1IdW1hbkJvbmVOYW1lfSB0byByYXcge0BsaW5rIFZSTUh1bWFuQm9uZX1zLlxuICAgICAqL1xuICAgIGdldCBodW1hbkJvbmVzKCkge1xuICAgICAgICAvLyBhbiBhbGlhcyBvZiBgcmF3SHVtYW5Cb25lc2BcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jhd0h1bWFuQm9uZXMuaHVtYW5Cb25lcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBtYXAgZnJvbSB7QGxpbmsgVlJNSHVtYW5Cb25lTmFtZX0gdG8gcmF3IHtAbGluayBWUk1IdW1hbkJvbmV9cy5cbiAgICAgKi9cbiAgICBnZXQgcmF3SHVtYW5Cb25lcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jhd0h1bWFuQm9uZXMuaHVtYW5Cb25lcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBtYXAgZnJvbSB7QGxpbmsgVlJNSHVtYW5Cb25lTmFtZX0gdG8gbm9ybWFsaXplZCB7QGxpbmsgVlJNSHVtYW5Cb25lfXMuXG4gICAgICovXG4gICAgZ2V0IG5vcm1hbGl6ZWRIdW1hbkJvbmVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplZEh1bWFuQm9uZXMuaHVtYW5Cb25lcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIHJvb3Qgb2Ygbm9ybWFsaXplZCB7QGxpbmsgVlJNSHVtYW5Cb25lfXMuXG4gICAgICovXG4gICAgZ2V0IG5vcm1hbGl6ZWRIdW1hbkJvbmVzUm9vdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vcm1hbGl6ZWRIdW1hbkJvbmVzLnJvb3Q7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyB7QGxpbmsgVlJNSHVtYW5vaWR9LlxuICAgICAqIEBwYXJhbSBodW1hbkJvbmVzIEEge0BsaW5rIFZSTUh1bWFuQm9uZXN9IGNvbnRhaW5zIGFsbCB0aGUgYm9uZXMgb2YgdGhlIG5ldyBodW1hbm9pZFxuICAgICAqIEBwYXJhbSBhdXRvVXBkYXRlSHVtYW5Cb25lcyBXaGV0aGVyIGl0IGNvcGllcyBwb3NlIGZyb20gbm9ybWFsaXplZEh1bWFuQm9uZXMgdG8gcmF3SHVtYW5Cb25lcyBvbiB7QGxpbmsgdXBkYXRlfS4gYHRydWVgIGJ5IGRlZmF1bHQuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoaHVtYW5Cb25lcywgb3B0aW9ucykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHRoaXMuYXV0b1VwZGF0ZUh1bWFuQm9uZXMgPSAoX2EgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYXV0b1VwZGF0ZUh1bWFuQm9uZXMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRydWU7XG4gICAgICAgIHRoaXMuX3Jhd0h1bWFuQm9uZXMgPSBuZXcgVlJNUmlnKGh1bWFuQm9uZXMpO1xuICAgICAgICB0aGlzLl9ub3JtYWxpemVkSHVtYW5Cb25lcyA9IG5ldyBWUk1IdW1hbm9pZFJpZyh0aGlzLl9yYXdIdW1hbkJvbmVzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29weSB0aGUgZ2l2ZW4ge0BsaW5rIFZSTUh1bWFub2lkfSBpbnRvIHRoaXMgb25lLlxuICAgICAqIEBwYXJhbSBzb3VyY2UgVGhlIHtAbGluayBWUk1IdW1hbm9pZH0geW91IHdhbnQgdG8gY29weVxuICAgICAqIEByZXR1cm5zIHRoaXNcbiAgICAgKi9cbiAgICBjb3B5KHNvdXJjZSkge1xuICAgICAgICB0aGlzLmF1dG9VcGRhdGVIdW1hbkJvbmVzID0gc291cmNlLmF1dG9VcGRhdGVIdW1hbkJvbmVzO1xuICAgICAgICB0aGlzLl9yYXdIdW1hbkJvbmVzID0gbmV3IFZSTVJpZyhzb3VyY2UuaHVtYW5Cb25lcyk7XG4gICAgICAgIHRoaXMuX25vcm1hbGl6ZWRIdW1hbkJvbmVzID0gbmV3IFZSTUh1bWFub2lkUmlnKHRoaXMuX3Jhd0h1bWFuQm9uZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGNsb25lIG9mIHRoaXMge0BsaW5rIFZSTUh1bWFub2lkfS5cbiAgICAgKiBAcmV0dXJucyBDb3BpZWQge0BsaW5rIFZSTUh1bWFub2lkfVxuICAgICAqL1xuICAgIGNsb25lKCkge1xuICAgICAgICByZXR1cm4gbmV3IFZSTUh1bWFub2lkKHRoaXMuaHVtYW5Cb25lcywgeyBhdXRvVXBkYXRlSHVtYW5Cb25lczogdGhpcy5hdXRvVXBkYXRlSHVtYW5Cb25lcyB9KS5jb3B5KHRoaXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBEZXByZWNhdGVkLiBVc2UgZWl0aGVyIHtAbGluayBnZXRSYXdBYnNvbHV0ZVBvc2V9IG9yIHtAbGluayBnZXROb3JtYWxpemVkQWJzb2x1dGVQb3NlfSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGdldEFic29sdXRlUG9zZSgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdWUk1IdW1hbm9pZDogZ2V0QWJzb2x1dGVQb3NlKCkgaXMgZGVwcmVjYXRlZC4gVXNlIGVpdGhlciBnZXRSYXdBYnNvbHV0ZVBvc2UoKSBvciBnZXROb3JtYWxpemVkQWJzb2x1dGVQb3NlKCkgaW5zdGVhZC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UmF3QWJzb2x1dGVQb3NlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgY3VycmVudCBhYnNvbHV0ZSBwb3NlIG9mIHRoaXMgcmF3IGh1bWFuIGJvbmVzIGFzIGEge0BsaW5rIFZSTVBvc2V9LlxuICAgICAqIE5vdGUgdGhhdCB0aGUgb3V0cHV0IHJlc3VsdCB3aWxsIGNvbnRhaW4gaW5pdGlhbCBzdGF0ZSBvZiB0aGUgVlJNIGFuZCBub3QgY29tcGF0aWJsZSBiZXR3ZWVuIGRpZmZlcmVudCBtb2RlbHMuXG4gICAgICogWW91IG1pZ2h0IHdhbnQgdG8gdXNlIHtAbGluayBnZXRSYXdQb3NlfSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGdldFJhd0Fic29sdXRlUG9zZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jhd0h1bWFuQm9uZXMuZ2V0QWJzb2x1dGVQb3NlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgY3VycmVudCBhYnNvbHV0ZSBwb3NlIG9mIHRoaXMgbm9ybWFsaXplZCBodW1hbiBib25lcyBhcyBhIHtAbGluayBWUk1Qb3NlfS5cbiAgICAgKiBOb3RlIHRoYXQgdGhlIG91dHB1dCByZXN1bHQgd2lsbCBjb250YWluIGluaXRpYWwgc3RhdGUgb2YgdGhlIFZSTSBhbmQgbm90IGNvbXBhdGlibGUgYmV0d2VlbiBkaWZmZXJlbnQgbW9kZWxzLlxuICAgICAqIFlvdSBtaWdodCB3YW50IHRvIHVzZSB7QGxpbmsgZ2V0Tm9ybWFsaXplZFBvc2V9IGluc3RlYWQuXG4gICAgICovXG4gICAgZ2V0Tm9ybWFsaXplZEFic29sdXRlUG9zZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vcm1hbGl6ZWRIdW1hbkJvbmVzLmdldEFic29sdXRlUG9zZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBEZXByZWNhdGVkLiBVc2UgZWl0aGVyIHtAbGluayBnZXRSYXdQb3NlfSBvciB7QGxpbmsgZ2V0Tm9ybWFsaXplZFBvc2V9IGluc3RlYWQuXG4gICAgICovXG4gICAgZ2V0UG9zZSgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdWUk1IdW1hbm9pZDogZ2V0UG9zZSgpIGlzIGRlcHJlY2F0ZWQuIFVzZSBlaXRoZXIgZ2V0UmF3UG9zZSgpIG9yIGdldE5vcm1hbGl6ZWRQb3NlKCkgaW5zdGVhZC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UmF3UG9zZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgcG9zZSBvZiByYXcgaHVtYW4gYm9uZXMgYXMgYSB7QGxpbmsgVlJNUG9zZX0uXG4gICAgICpcbiAgICAgKiBFYWNoIHRyYW5zZm9ybSBpcyBhIGxvY2FsIHRyYW5zZm9ybSByZWxhdGl2ZSBmcm9tIHJlc3QgcG9zZSAoVC1wb3NlKS5cbiAgICAgKi9cbiAgICBnZXRSYXdQb3NlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmF3SHVtYW5Cb25lcy5nZXRQb3NlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgY3VycmVudCBwb3NlIG9mIG5vcm1hbGl6ZWQgaHVtYW4gYm9uZXMgYXMgYSB7QGxpbmsgVlJNUG9zZX0uXG4gICAgICpcbiAgICAgKiBFYWNoIHRyYW5zZm9ybSBpcyBhIGxvY2FsIHRyYW5zZm9ybSByZWxhdGl2ZSBmcm9tIHJlc3QgcG9zZSAoVC1wb3NlKS5cbiAgICAgKi9cbiAgICBnZXROb3JtYWxpemVkUG9zZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vcm1hbGl6ZWRIdW1hbkJvbmVzLmdldFBvc2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgRGVwcmVjYXRlZC4gVXNlIGVpdGhlciB7QGxpbmsgc2V0UmF3UG9zZX0gb3Ige0BsaW5rIHNldE5vcm1hbGl6ZWRQb3NlfSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHNldFBvc2UocG9zZU9iamVjdCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTUh1bWFub2lkOiBzZXRQb3NlKCkgaXMgZGVwcmVjYXRlZC4gVXNlIGVpdGhlciBzZXRSYXdQb3NlKCkgb3Igc2V0Tm9ybWFsaXplZFBvc2UoKSBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRSYXdQb3NlKHBvc2VPYmplY3QpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBMZXQgdGhlIHJhdyBodW1hbiBib25lcyBkbyBhIHNwZWNpZmllZCBwb3NlLlxuICAgICAqXG4gICAgICogRWFjaCB0cmFuc2Zvcm0gaGF2ZSB0byBiZSBhIGxvY2FsIHRyYW5zZm9ybSByZWxhdGl2ZSBmcm9tIHJlc3QgcG9zZSAoVC1wb3NlKS5cbiAgICAgKiBZb3UgY2FuIHBhc3Mgd2hhdCB5b3UgZ290IGZyb20ge0BsaW5rIGdldFJhd1Bvc2V9LlxuICAgICAqXG4gICAgICogSWYgeW91IGFyZSB1c2luZyB7QGxpbmsgYXV0b1VwZGF0ZUh1bWFuQm9uZXN9LCB5b3UgbWlnaHQgd2FudCB0byB1c2Uge0BsaW5rIHNldE5vcm1hbGl6ZWRQb3NlfSBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBvc2VPYmplY3QgQSB7QGxpbmsgVlJNUG9zZX0gdGhhdCByZXByZXNlbnRzIGEgc2luZ2xlIHBvc2VcbiAgICAgKi9cbiAgICBzZXRSYXdQb3NlKHBvc2VPYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jhd0h1bWFuQm9uZXMuc2V0UG9zZShwb3NlT2JqZWN0KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTGV0IHRoZSBub3JtYWxpemVkIGh1bWFuIGJvbmVzIGRvIGEgc3BlY2lmaWVkIHBvc2UuXG4gICAgICpcbiAgICAgKiBFYWNoIHRyYW5zZm9ybSBoYXZlIHRvIGJlIGEgbG9jYWwgdHJhbnNmb3JtIHJlbGF0aXZlIGZyb20gcmVzdCBwb3NlIChULXBvc2UpLlxuICAgICAqIFlvdSBjYW4gcGFzcyB3aGF0IHlvdSBnb3QgZnJvbSB7QGxpbmsgZ2V0Tm9ybWFsaXplZFBvc2V9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHBvc2VPYmplY3QgQSB7QGxpbmsgVlJNUG9zZX0gdGhhdCByZXByZXNlbnRzIGEgc2luZ2xlIHBvc2VcbiAgICAgKi9cbiAgICBzZXROb3JtYWxpemVkUG9zZShwb3NlT2JqZWN0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3JtYWxpemVkSHVtYW5Cb25lcy5zZXRQb3NlKHBvc2VPYmplY3QpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBEZXByZWNhdGVkLiBVc2UgZWl0aGVyIHtAbGluayByZXNldFJhd1Bvc2V9IG9yIHtAbGluayByZXNldE5vcm1hbGl6ZWRQb3NlfSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHJlc2V0UG9zZSgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdWUk1IdW1hbm9pZDogcmVzZXRQb3NlKCkgaXMgZGVwcmVjYXRlZC4gVXNlIGVpdGhlciByZXNldFJhd1Bvc2UoKSBvciByZXNldE5vcm1hbGl6ZWRQb3NlKCkgaW5zdGVhZC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzZXRSYXdQb3NlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlc2V0IHRoZSByYXcgaHVtYW5vaWQgdG8gaXRzIHJlc3QgcG9zZS5cbiAgICAgKlxuICAgICAqIElmIHlvdSBhcmUgdXNpbmcge0BsaW5rIGF1dG9VcGRhdGVIdW1hbkJvbmVzfSwgeW91IG1pZ2h0IHdhbnQgdG8gdXNlIHtAbGluayByZXNldE5vcm1hbGl6ZWRQb3NlfSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHJlc2V0UmF3UG9zZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jhd0h1bWFuQm9uZXMucmVzZXRQb3NlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlc2V0IHRoZSBub3JtYWxpemVkIGh1bWFub2lkIHRvIGl0cyByZXN0IHBvc2UuXG4gICAgICovXG4gICAgcmVzZXROb3JtYWxpemVkUG9zZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vcm1hbGl6ZWRIdW1hbkJvbmVzLnJlc2V0UG9zZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBEZXByZWNhdGVkLiBVc2UgZWl0aGVyIHtAbGluayBnZXRSYXdCb25lfSBvciB7QGxpbmsgZ2V0Tm9ybWFsaXplZEJvbmV9IGluc3RlYWQuXG4gICAgICovXG4gICAgZ2V0Qm9uZShuYW1lKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignVlJNSHVtYW5vaWQ6IGdldEJvbmUoKSBpcyBkZXByZWNhdGVkLiBVc2UgZWl0aGVyIGdldFJhd0JvbmUoKSBvciBnZXROb3JtYWxpemVkQm9uZSgpIGluc3RlYWQuJyk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFJhd0JvbmUobmFtZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIHJhdyB7QGxpbmsgVlJNSHVtYW5Cb25lfSBib3VuZCB0byBhIHNwZWNpZmllZCB7QGxpbmsgVlJNSHVtYW5Cb25lTmFtZX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBib25lIHlvdSB3YW50XG4gICAgICovXG4gICAgZ2V0UmF3Qm9uZShuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYXdIdW1hbkJvbmVzLmdldEJvbmUobmFtZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIG5vcm1hbGl6ZWQge0BsaW5rIFZSTUh1bWFuQm9uZX0gYm91bmQgdG8gYSBzcGVjaWZpZWQge0BsaW5rIFZSTUh1bWFuQm9uZU5hbWV9LlxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgYm9uZSB5b3Ugd2FudFxuICAgICAqL1xuICAgIGdldE5vcm1hbGl6ZWRCb25lKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vcm1hbGl6ZWRIdW1hbkJvbmVzLmdldEJvbmUobmFtZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIERlcHJlY2F0ZWQuIFVzZSBlaXRoZXIge0BsaW5rIGdldFJhd0JvbmVOb2RlfSBvciB7QGxpbmsgZ2V0Tm9ybWFsaXplZEJvbmVOb2RlfSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGdldEJvbmVOb2RlKG5hbWUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdWUk1IdW1hbm9pZDogZ2V0Qm9uZU5vZGUoKSBpcyBkZXByZWNhdGVkLiBVc2UgZWl0aGVyIGdldFJhd0JvbmVOb2RlKCkgb3IgZ2V0Tm9ybWFsaXplZEJvbmVOb2RlKCkgaW5zdGVhZC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UmF3Qm9uZU5vZGUobmFtZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIHJhdyBib25lIGFzIGEgYFRIUkVFLk9iamVjdDNEYCBib3VuZCB0byBhIHNwZWNpZmllZCB7QGxpbmsgVlJNSHVtYW5Cb25lTmFtZX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBib25lIHlvdSB3YW50XG4gICAgICovXG4gICAgZ2V0UmF3Qm9uZU5vZGUobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmF3SHVtYW5Cb25lcy5nZXRCb25lTm9kZShuYW1lKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgbm9ybWFsaXplZCBib25lIGFzIGEgYFRIUkVFLk9iamVjdDNEYCBib3VuZCB0byBhIHNwZWNpZmllZCB7QGxpbmsgVlJNSHVtYW5Cb25lTmFtZX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBib25lIHlvdSB3YW50XG4gICAgICovXG4gICAgZ2V0Tm9ybWFsaXplZEJvbmVOb2RlKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vcm1hbGl6ZWRIdW1hbkJvbmVzLmdldEJvbmVOb2RlKG5hbWUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgdGhlIGh1bWFub2lkIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIElmIHtAbGluayBhdXRvVXBkYXRlSHVtYW5Cb25lc30gaXMgYHRydWVgLCBpdCB0cmFuc2ZlcnMgdGhlIHBvc2Ugb2Ygbm9ybWFsaXplZCBodW1hbiBib25lcyB0byByYXcgaHVtYW4gYm9uZXMuXG4gICAgICovXG4gICAgdXBkYXRlKCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvVXBkYXRlSHVtYW5Cb25lcykge1xuICAgICAgICAgICAgdGhpcy5fbm9ybWFsaXplZEh1bWFuQm9uZXMudXBkYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuY29uc3QgVlJNUmVxdWlyZWRIdW1hbkJvbmVOYW1lID0ge1xuICAgIEhpcHM6ICdoaXBzJyxcbiAgICBTcGluZTogJ3NwaW5lJyxcbiAgICBIZWFkOiAnaGVhZCcsXG4gICAgTGVmdFVwcGVyTGVnOiAnbGVmdFVwcGVyTGVnJyxcbiAgICBMZWZ0TG93ZXJMZWc6ICdsZWZ0TG93ZXJMZWcnLFxuICAgIExlZnRGb290OiAnbGVmdEZvb3QnLFxuICAgIFJpZ2h0VXBwZXJMZWc6ICdyaWdodFVwcGVyTGVnJyxcbiAgICBSaWdodExvd2VyTGVnOiAncmlnaHRMb3dlckxlZycsXG4gICAgUmlnaHRGb290OiAncmlnaHRGb290JyxcbiAgICBMZWZ0VXBwZXJBcm06ICdsZWZ0VXBwZXJBcm0nLFxuICAgIExlZnRMb3dlckFybTogJ2xlZnRMb3dlckFybScsXG4gICAgTGVmdEhhbmQ6ICdsZWZ0SGFuZCcsXG4gICAgUmlnaHRVcHBlckFybTogJ3JpZ2h0VXBwZXJBcm0nLFxuICAgIFJpZ2h0TG93ZXJBcm06ICdyaWdodExvd2VyQXJtJyxcbiAgICBSaWdodEhhbmQ6ICdyaWdodEhhbmQnLFxufTtcblxuLyoqXG4gKiBQb3NzaWJsZSBzcGVjIHZlcnNpb25zIGl0IHJlY29nbml6ZXMuXG4gKi9cbmNvbnN0IFBPU1NJQkxFX1NQRUNfVkVSU0lPTlMkMiA9IG5ldyBTZXQoWycxLjAnLCAnMS4wLWJldGEnXSk7XG4vKipcbiAqIEEgbWFwIGZyb20gb2xkIHRodW1iIGJvbmUgbmFtZXMgdG8gbmV3IHRodW1iIGJvbmUgbmFtZXNcbiAqL1xuY29uc3QgdGh1bWJCb25lTmFtZU1hcCA9IHtcbiAgICBsZWZ0VGh1bWJQcm94aW1hbDogJ2xlZnRUaHVtYk1ldGFjYXJwYWwnLFxuICAgIGxlZnRUaHVtYkludGVybWVkaWF0ZTogJ2xlZnRUaHVtYlByb3hpbWFsJyxcbiAgICByaWdodFRodW1iUHJveGltYWw6ICdyaWdodFRodW1iTWV0YWNhcnBhbCcsXG4gICAgcmlnaHRUaHVtYkludGVybWVkaWF0ZTogJ3JpZ2h0VGh1bWJQcm94aW1hbCcsXG59O1xuLyoqXG4gKiBBIHBsdWdpbiBvZiBHTFRGTG9hZGVyIHRoYXQgaW1wb3J0cyBhIHtAbGluayBWUk1IdW1hbm9pZH0gZnJvbSBhIFZSTSBleHRlbnNpb24gb2YgYSBHTFRGLlxuICovXG5jbGFzcyBWUk1IdW1hbm9pZExvYWRlclBsdWdpbiB7XG4gICAgZ2V0IG5hbWUoKSB7XG4gICAgICAgIC8vIFdlIHNob3VsZCB1c2UgdGhlIGV4dGVuc2lvbiBuYW1lIGluc3RlYWQgYnV0IHdlIGhhdmUgbXVsdGlwbGUgcGx1Z2lucyBmb3IgYW4gZXh0ZW5zaW9uLi4uXG4gICAgICAgIHJldHVybiAnVlJNSHVtYW5vaWRMb2FkZXJQbHVnaW4nO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihwYXJzZXIsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG4gICAgICAgIHRoaXMuaGVscGVyUm9vdCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5oZWxwZXJSb290O1xuICAgICAgICB0aGlzLmF1dG9VcGRhdGVIdW1hbkJvbmVzID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmF1dG9VcGRhdGVIdW1hbkJvbmVzO1xuICAgIH1cbiAgICBhZnRlclJvb3QoZ2x0Zikge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgZ2x0Zi51c2VyRGF0YS52cm1IdW1hbm9pZCA9IHlpZWxkIHRoaXMuX2ltcG9ydChnbHRmKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEltcG9ydCBhIHtAbGluayBWUk1IdW1hbm9pZH0gZnJvbSBhIFZSTS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBnbHRmIEEgcGFyc2VkIHJlc3VsdCBvZiBHTFRGIHRha2VuIGZyb20gR0xURkxvYWRlclxuICAgICAqL1xuICAgIF9pbXBvcnQoZ2x0Zikge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgdjFSZXN1bHQgPSB5aWVsZCB0aGlzLl92MUltcG9ydChnbHRmKTtcbiAgICAgICAgICAgIGlmICh2MVJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2MVJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHYwUmVzdWx0ID0geWllbGQgdGhpcy5fdjBJbXBvcnQoZ2x0Zik7XG4gICAgICAgICAgICBpZiAodjBSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdjBSZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF92MUltcG9ydChnbHRmKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBqc29uID0gdGhpcy5wYXJzZXIuanNvbjtcbiAgICAgICAgICAgIC8vIGVhcmx5IGFib3J0IGlmIGl0IGRvZXNuJ3QgdXNlIHZybVxuICAgICAgICAgICAgY29uc3QgaXNWUk1Vc2VkID0gKChfYSA9IGpzb24uZXh0ZW5zaW9uc1VzZWQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pbmRleE9mKCdWUk1DX3ZybScpKSAhPT0gLTE7XG4gICAgICAgICAgICBpZiAoIWlzVlJNVXNlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gKF9iID0ganNvbi5leHRlbnNpb25zKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2JbJ1ZSTUNfdnJtJ107XG4gICAgICAgICAgICBpZiAoIWV4dGVuc2lvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc3BlY1ZlcnNpb24gPSBleHRlbnNpb24uc3BlY1ZlcnNpb247XG4gICAgICAgICAgICBpZiAoIVBPU1NJQkxFX1NQRUNfVkVSU0lPTlMkMi5oYXMoc3BlY1ZlcnNpb24pKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBWUk1IdW1hbm9pZExvYWRlclBsdWdpbjogVW5rbm93biBWUk1DX3ZybSBzcGVjVmVyc2lvbiBcIiR7c3BlY1ZlcnNpb259XCJgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYUh1bWFub2lkID0gZXh0ZW5zaW9uLmh1bWFub2lkO1xuICAgICAgICAgICAgaWYgKCFzY2hlbWFIdW1hbm9pZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBjb21wYXQ6IDEuMC1iZXRhIHRodW1iIGJvbmUgbmFtZXNcbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBgdHJ1ZWAgaWYgYGxlZnRUaHVtYkludGVybWVkaWF0ZWAgb3IgYHJpZ2h0VGh1bWJJbnRlcm1lZGlhdGVgIGV4aXN0c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb25zdCBleGlzdHNQcmV2aW91c1RodW1iTmFtZSA9IHNjaGVtYUh1bWFub2lkLmh1bWFuQm9uZXMubGVmdFRodW1iSW50ZXJtZWRpYXRlICE9IG51bGwgfHxcbiAgICAgICAgICAgICAgICBzY2hlbWFIdW1hbm9pZC5odW1hbkJvbmVzLnJpZ2h0VGh1bWJJbnRlcm1lZGlhdGUgIT0gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IGh1bWFuQm9uZXMgPSB7fTtcbiAgICAgICAgICAgIGlmIChzY2hlbWFIdW1hbm9pZC5odW1hbkJvbmVzICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCBQcm9taXNlLmFsbChPYmplY3QuZW50cmllcyhzY2hlbWFIdW1hbm9pZC5odW1hbkJvbmVzKS5tYXAoKFtib25lTmFtZVN0cmluZywgc2NoZW1hSHVtYW5Cb25lXSkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYm9uZU5hbWUgPSBib25lTmFtZVN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBzY2hlbWFIdW1hbkJvbmUubm9kZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29tcGF0OiAxLjAtYmV0YSBwcmV2aW91cyB0aHVtYiBib25lIG5hbWVzXG4gICAgICAgICAgICAgICAgICAgIGlmIChleGlzdHNQcmV2aW91c1RodW1iTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGh1bWJCb25lTmFtZSA9IHRodW1iQm9uZU5hbWVNYXBbYm9uZU5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRodW1iQm9uZU5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvbmVOYW1lID0gdGh1bWJCb25lTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0geWllbGQgdGhpcy5wYXJzZXIuZ2V0RGVwZW5kZW5jeSgnbm9kZScsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHNwZWNpZmllZCBub2RlIGRvZXMgbm90IGV4aXN0LCBlbWl0IGEgd2FybmluZ1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEEgZ2xURiBub2RlIGJvdW5kIHRvIHRoZSBodW1hbm9pZCBib25lICR7Ym9uZU5hbWV9IChpbmRleCA9ICR7aW5kZXh9KSBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byB0aGUgYGh1bWFuQm9uZXNgXG4gICAgICAgICAgICAgICAgICAgIGh1bWFuQm9uZXNbYm9uZU5hbWVdID0geyBub2RlIH07XG4gICAgICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGh1bWFub2lkID0gbmV3IFZSTUh1bWFub2lkKHRoaXMuX2Vuc3VyZVJlcXVpcmVkQm9uZXNFeGlzdChodW1hbkJvbmVzKSwge1xuICAgICAgICAgICAgICAgIGF1dG9VcGRhdGVIdW1hbkJvbmVzOiB0aGlzLmF1dG9VcGRhdGVIdW1hbkJvbmVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBnbHRmLnNjZW5lLmFkZChodW1hbm9pZC5ub3JtYWxpemVkSHVtYW5Cb25lc1Jvb3QpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaGVscGVyUm9vdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlbHBlciA9IG5ldyBWUk1IdW1hbm9pZEhlbHBlcihodW1hbm9pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5oZWxwZXJSb290LmFkZChoZWxwZXIpO1xuICAgICAgICAgICAgICAgIGhlbHBlci5yZW5kZXJPcmRlciA9IHRoaXMuaGVscGVyUm9vdC5yZW5kZXJPcmRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBodW1hbm9pZDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF92MEltcG9ydChnbHRmKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnBhcnNlci5qc29uO1xuICAgICAgICAgICAgY29uc3QgdnJtRXh0ID0gKF9hID0ganNvbi5leHRlbnNpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuVlJNO1xuICAgICAgICAgICAgaWYgKCF2cm1FeHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYUh1bWFub2lkID0gdnJtRXh0Lmh1bWFub2lkO1xuICAgICAgICAgICAgaWYgKCFzY2hlbWFIdW1hbm9pZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaHVtYW5Cb25lcyA9IHt9O1xuICAgICAgICAgICAgaWYgKHNjaGVtYUh1bWFub2lkLmh1bWFuQm9uZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKHNjaGVtYUh1bWFub2lkLmh1bWFuQm9uZXMubWFwKChib25lKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvbmVOYW1lID0gYm9uZS5ib25lO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGJvbmUubm9kZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJvbmVOYW1lID09IG51bGwgfHwgaW5kZXggPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB5aWVsZCB0aGlzLnBhcnNlci5nZXREZXBlbmRlbmN5KCdub2RlJywgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgc3BlY2lmaWVkIG5vZGUgZG9lcyBub3QgZXhpc3QsIGVtaXQgYSB3YXJuaW5nXG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgQSBnbFRGIG5vZGUgYm91bmQgdG8gdGhlIGh1bWFub2lkIGJvbmUgJHtib25lTmFtZX0gKGluZGV4ID0gJHtpbmRleH0pIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gbWFwIHRvIG5ldyBib25lIG5hbWVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGh1bWJCb25lTmFtZSA9IHRodW1iQm9uZU5hbWVNYXBbYm9uZU5hbWVdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdCb25lTmFtZSA9ICh0aHVtYkJvbmVOYW1lICE9PSBudWxsICYmIHRodW1iQm9uZU5hbWUgIT09IHZvaWQgMCA/IHRodW1iQm9uZU5hbWUgOiBib25lTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHYwIFZSTXMgbWlnaHQgaGF2ZSBhIG11bHRpcGxlIG5vZGVzIGF0dGFjaGVkIHRvIGEgc2luZ2xlIGJvbmUuLi5cbiAgICAgICAgICAgICAgICAgICAgLy8gc28gaWYgdGhlcmUgYWxyZWFkeSBpcyBhbiBlbnRyeSBpbiB0aGUgYGh1bWFuQm9uZXNgLCBzaG93IGEgd2FybmluZyBhbmQgaWdub3JlIGl0XG4gICAgICAgICAgICAgICAgICAgIGlmIChodW1hbkJvbmVzW25ld0JvbmVOYW1lXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYE11bHRpcGxlIGJvbmUgZW50cmllcyBmb3IgJHtuZXdCb25lTmFtZX0gZGV0ZWN0ZWQgKGluZGV4ID0gJHtpbmRleH0pLCBpZ25vcmluZyBkdXBsaWNhdGVkIGVudHJpZXMuYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIHRoZSBgaHVtYW5Cb25lc2BcbiAgICAgICAgICAgICAgICAgICAgaHVtYW5Cb25lc1tuZXdCb25lTmFtZV0gPSB7IG5vZGUgfTtcbiAgICAgICAgICAgICAgICB9KSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaHVtYW5vaWQgPSBuZXcgVlJNSHVtYW5vaWQodGhpcy5fZW5zdXJlUmVxdWlyZWRCb25lc0V4aXN0KGh1bWFuQm9uZXMpLCB7XG4gICAgICAgICAgICAgICAgYXV0b1VwZGF0ZUh1bWFuQm9uZXM6IHRoaXMuYXV0b1VwZGF0ZUh1bWFuQm9uZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGdsdGYuc2NlbmUuYWRkKGh1bWFub2lkLm5vcm1hbGl6ZWRIdW1hbkJvbmVzUm9vdCk7XG4gICAgICAgICAgICBpZiAodGhpcy5oZWxwZXJSb290KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVscGVyID0gbmV3IFZSTUh1bWFub2lkSGVscGVyKGh1bWFub2lkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhlbHBlclJvb3QuYWRkKGhlbHBlcik7XG4gICAgICAgICAgICAgICAgaGVscGVyLnJlbmRlck9yZGVyID0gdGhpcy5oZWxwZXJSb290LnJlbmRlck9yZGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGh1bWFub2lkO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW5zdXJlIHJlcXVpcmVkIGJvbmVzIGV4aXN0IGluIGdpdmVuIGh1bWFuIGJvbmVzLlxuICAgICAqIEBwYXJhbSBodW1hbkJvbmVzIEh1bWFuIGJvbmVzXG4gICAgICogQHJldHVybnMgSHVtYW4gYm9uZXMsIG5vIGxvbmdlciBwYXJ0aWFsIVxuICAgICAqL1xuICAgIF9lbnN1cmVSZXF1aXJlZEJvbmVzRXhpc3QoaHVtYW5Cb25lcykge1xuICAgICAgICAvLyBlbnN1cmUgcmVxdWlyZWQgYm9uZXMgZXhpc3RcbiAgICAgICAgY29uc3QgbWlzc2luZ1JlcXVpcmVkQm9uZXMgPSBPYmplY3QudmFsdWVzKFZSTVJlcXVpcmVkSHVtYW5Cb25lTmFtZSkuZmlsdGVyKChyZXF1aXJlZEJvbmVOYW1lKSA9PiBodW1hbkJvbmVzW3JlcXVpcmVkQm9uZU5hbWVdID09IG51bGwpO1xuICAgICAgICAvLyB0aHJvdyBhbiBlcnJvciBpZiB0aGVyZSBhcmUgbWlzc2luZyBib25lc1xuICAgICAgICBpZiAobWlzc2luZ1JlcXVpcmVkQm9uZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBWUk1IdW1hbm9pZExvYWRlclBsdWdpbjogVGhlc2UgaHVtYW5vaWQgYm9uZXMgYXJlIHJlcXVpcmVkIGJ1dCBub3QgZXhpc3Q6ICR7bWlzc2luZ1JlcXVpcmVkQm9uZXMuam9pbignLCAnKX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaHVtYW5Cb25lcztcbiAgICB9XG59XG5cbmNsYXNzIEZhbkJ1ZmZlckdlb21ldHJ5IGV4dGVuZHMgVEhSRUUuQnVmZmVyR2VvbWV0cnkge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9jdXJyZW50VGhldGEgPSAwO1xuICAgICAgICB0aGlzLl9jdXJyZW50UmFkaXVzID0gMDtcbiAgICAgICAgdGhpcy50aGV0YSA9IDAuMDtcbiAgICAgICAgdGhpcy5yYWRpdXMgPSAwLjA7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRUaGV0YSA9IDAuMDtcbiAgICAgICAgdGhpcy5fY3VycmVudFJhZGl1cyA9IDAuMDtcbiAgICAgICAgdGhpcy5fYXR0clBvcyA9IG5ldyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUobmV3IEZsb2F0MzJBcnJheSg2NSAqIDMpLCAzKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgdGhpcy5fYXR0clBvcyk7XG4gICAgICAgIHRoaXMuX2F0dHJJbmRleCA9IG5ldyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUobmV3IFVpbnQxNkFycmF5KDMgKiA2MyksIDEpO1xuICAgICAgICB0aGlzLnNldEluZGV4KHRoaXMuX2F0dHJJbmRleCk7XG4gICAgICAgIHRoaXMuX2J1aWxkSW5kZXgoKTtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG4gICAgdXBkYXRlKCkge1xuICAgICAgICBsZXQgc2hvdWxkVXBkYXRlR2VvbWV0cnkgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRUaGV0YSAhPT0gdGhpcy50aGV0YSkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFRoZXRhID0gdGhpcy50aGV0YTtcbiAgICAgICAgICAgIHNob3VsZFVwZGF0ZUdlb21ldHJ5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fY3VycmVudFJhZGl1cyAhPT0gdGhpcy5yYWRpdXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRSYWRpdXMgPSB0aGlzLnJhZGl1cztcbiAgICAgICAgICAgIHNob3VsZFVwZGF0ZUdlb21ldHJ5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hvdWxkVXBkYXRlR2VvbWV0cnkpIHtcbiAgICAgICAgICAgIHRoaXMuX2J1aWxkUG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfYnVpbGRQb3NpdGlvbigpIHtcbiAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooMCwgMC4wLCAwLjAsIDAuMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNjQ7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdCA9IChpIC8gNjMuMCkgKiB0aGlzLl9jdXJyZW50VGhldGE7XG4gICAgICAgICAgICB0aGlzLl9hdHRyUG9zLnNldFhZWihpICsgMSwgdGhpcy5fY3VycmVudFJhZGl1cyAqIE1hdGguc2luKHQpLCAwLjAsIHRoaXMuX2N1cnJlbnRSYWRpdXMgKiBNYXRoLmNvcyh0KSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYXR0clBvcy5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIF9idWlsZEluZGV4KCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDYzOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJJbmRleC5zZXRYWVooaSAqIDMsIDAsIGkgKyAxLCBpICsgMik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYXR0ckluZGV4Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG59XG5cbmNsYXNzIExpbmVBbmRTcGhlcmVCdWZmZXJHZW9tZXRyeSBleHRlbmRzIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5yYWRpdXMgPSAwLjA7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRSYWRpdXMgPSAwLjA7XG4gICAgICAgIHRoaXMudGFpbCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRUYWlsID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICAgICAgdGhpcy5fYXR0clBvcyA9IG5ldyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUobmV3IEZsb2F0MzJBcnJheSgyOTQpLCAzKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgdGhpcy5fYXR0clBvcyk7XG4gICAgICAgIHRoaXMuX2F0dHJJbmRleCA9IG5ldyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUobmV3IFVpbnQxNkFycmF5KDE5NCksIDEpO1xuICAgICAgICB0aGlzLnNldEluZGV4KHRoaXMuX2F0dHJJbmRleCk7XG4gICAgICAgIHRoaXMuX2J1aWxkSW5kZXgoKTtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG4gICAgdXBkYXRlKCkge1xuICAgICAgICBsZXQgc2hvdWxkVXBkYXRlR2VvbWV0cnkgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRSYWRpdXMgIT09IHRoaXMucmFkaXVzKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50UmFkaXVzID0gdGhpcy5yYWRpdXM7XG4gICAgICAgICAgICBzaG91bGRVcGRhdGVHZW9tZXRyeSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9jdXJyZW50VGFpbC5lcXVhbHModGhpcy50YWlsKSkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFRhaWwuY29weSh0aGlzLnRhaWwpO1xuICAgICAgICAgICAgc2hvdWxkVXBkYXRlR2VvbWV0cnkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaG91bGRVcGRhdGVHZW9tZXRyeSkge1xuICAgICAgICAgICAgdGhpcy5fYnVpbGRQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9idWlsZFBvc2l0aW9uKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDMyOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSAoaSAvIDE2LjApICogTWF0aC5QSTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJQb3Muc2V0WFlaKGksIE1hdGguY29zKHQpLCBNYXRoLnNpbih0KSwgMC4wKTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJQb3Muc2V0WFlaKDMyICsgaSwgMC4wLCBNYXRoLmNvcyh0KSwgTWF0aC5zaW4odCkpO1xuICAgICAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooNjQgKyBpLCBNYXRoLnNpbih0KSwgMC4wLCBNYXRoLmNvcyh0KSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY2FsZSh0aGlzLl9jdXJyZW50UmFkaXVzLCB0aGlzLl9jdXJyZW50UmFkaXVzLCB0aGlzLl9jdXJyZW50UmFkaXVzKTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGUodGhpcy5fY3VycmVudFRhaWwueCwgdGhpcy5fY3VycmVudFRhaWwueSwgdGhpcy5fY3VycmVudFRhaWwueik7XG4gICAgICAgIHRoaXMuX2F0dHJQb3Muc2V0WFlaKDk2LCAwLCAwLCAwKTtcbiAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooOTcsIHRoaXMuX2N1cnJlbnRUYWlsLngsIHRoaXMuX2N1cnJlbnRUYWlsLnksIHRoaXMuX2N1cnJlbnRUYWlsLnopO1xuICAgICAgICB0aGlzLl9hdHRyUG9zLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgX2J1aWxkSW5kZXgoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzI7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaTEgPSAoaSArIDEpICUgMzI7XG4gICAgICAgICAgICB0aGlzLl9hdHRySW5kZXguc2V0WFkoaSAqIDIsIGksIGkxKTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJJbmRleC5zZXRYWSg2NCArIGkgKiAyLCAzMiArIGksIDMyICsgaTEpO1xuICAgICAgICAgICAgdGhpcy5fYXR0ckluZGV4LnNldFhZKDEyOCArIGkgKiAyLCA2NCArIGksIDY0ICsgaTEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2F0dHJJbmRleC5zZXRYWSgxOTIsIDk2LCA5Nyk7XG4gICAgICAgIHRoaXMuX2F0dHJJbmRleC5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxufVxuXG5jb25zdCBfcXVhdEEkMiA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jb25zdCBfcXVhdEIkMiA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jb25zdCBfdjNBJDEgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgX3YzQiQxID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IFNRUlRfMl9PVkVSXzIgPSBNYXRoLnNxcnQoMi4wKSAvIDIuMDtcbmNvbnN0IFFVQVRfWFlfQ1c5MCA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKDAsIDAsIC1TUVJUXzJfT1ZFUl8yLCBTUVJUXzJfT1ZFUl8yKTtcbmNvbnN0IFZFQzNfUE9TSVRJVkVfWSA9IG5ldyBUSFJFRS5WZWN0b3IzKDAuMCwgMS4wLCAwLjApO1xuY2xhc3MgVlJNTG9va0F0SGVscGVyIGV4dGVuZHMgVEhSRUUuR3JvdXAge1xuICAgIGNvbnN0cnVjdG9yKGxvb2tBdCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1hdHJpeEF1dG9VcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52cm1Mb29rQXQgPSBsb29rQXQ7XG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gbmV3IEZhbkJ1ZmZlckdlb21ldHJ5KCk7XG4gICAgICAgICAgICBnZW9tZXRyeS5yYWRpdXMgPSAwLjU7XG4gICAgICAgICAgICBjb25zdCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoQmFzaWNNYXRlcmlhbCh7XG4gICAgICAgICAgICAgICAgY29sb3I6IDB4MDBmZjAwLFxuICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNSxcbiAgICAgICAgICAgICAgICBzaWRlOiBUSFJFRS5Eb3VibGVTaWRlLFxuICAgICAgICAgICAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVwdGhXcml0ZTogZmFsc2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX21lc2hQaXRjaCA9IG5ldyBUSFJFRS5NZXNoKGdlb21ldHJ5LCBtYXRlcmlhbCk7XG4gICAgICAgICAgICB0aGlzLmFkZCh0aGlzLl9tZXNoUGl0Y2gpO1xuICAgICAgICB9XG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gbmV3IEZhbkJ1ZmZlckdlb21ldHJ5KCk7XG4gICAgICAgICAgICBnZW9tZXRyeS5yYWRpdXMgPSAwLjU7XG4gICAgICAgICAgICBjb25zdCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoQmFzaWNNYXRlcmlhbCh7XG4gICAgICAgICAgICAgICAgY29sb3I6IDB4ZmYwMDAwLFxuICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNSxcbiAgICAgICAgICAgICAgICBzaWRlOiBUSFJFRS5Eb3VibGVTaWRlLFxuICAgICAgICAgICAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVwdGhXcml0ZTogZmFsc2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX21lc2hZYXcgPSBuZXcgVEhSRUUuTWVzaChnZW9tZXRyeSwgbWF0ZXJpYWwpO1xuICAgICAgICAgICAgdGhpcy5hZGQodGhpcy5fbWVzaFlhdyk7XG4gICAgICAgIH1cbiAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgTGluZUFuZFNwaGVyZUJ1ZmZlckdlb21ldHJ5KCk7XG4gICAgICAgICAgICBnZW9tZXRyeS5yYWRpdXMgPSAwLjE7XG4gICAgICAgICAgICBjb25zdCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5MaW5lQmFzaWNNYXRlcmlhbCh7XG4gICAgICAgICAgICAgICAgY29sb3I6IDB4ZmZmZmZmLFxuICAgICAgICAgICAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVwdGhXcml0ZTogZmFsc2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2xpbmVUYXJnZXQgPSBuZXcgVEhSRUUuTGluZVNlZ21lbnRzKGdlb21ldHJ5LCBtYXRlcmlhbCk7XG4gICAgICAgICAgICB0aGlzLl9saW5lVGFyZ2V0LmZydXN0dW1DdWxsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuYWRkKHRoaXMuX2xpbmVUYXJnZXQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRpc3Bvc2UoKSB7XG4gICAgICAgIHRoaXMuX21lc2hZYXcuZ2VvbWV0cnkuZGlzcG9zZSgpO1xuICAgICAgICB0aGlzLl9tZXNoWWF3Lm1hdGVyaWFsLmRpc3Bvc2UoKTtcbiAgICAgICAgdGhpcy5fbWVzaFBpdGNoLmdlb21ldHJ5LmRpc3Bvc2UoKTtcbiAgICAgICAgdGhpcy5fbWVzaFBpdGNoLm1hdGVyaWFsLmRpc3Bvc2UoKTtcbiAgICAgICAgdGhpcy5fbGluZVRhcmdldC5nZW9tZXRyeS5kaXNwb3NlKCk7XG4gICAgICAgIHRoaXMuX2xpbmVUYXJnZXQubWF0ZXJpYWwuZGlzcG9zZSgpO1xuICAgIH1cbiAgICB1cGRhdGVNYXRyaXhXb3JsZChmb3JjZSkge1xuICAgICAgICAvLyB1cGRhdGUgZ2VvbWV0cmllc1xuICAgICAgICBjb25zdCB5YXcgPSBUSFJFRS5NYXRoVXRpbHMuREVHMlJBRCAqIHRoaXMudnJtTG9va0F0LnlhdztcbiAgICAgICAgdGhpcy5fbWVzaFlhdy5nZW9tZXRyeS50aGV0YSA9IHlhdztcbiAgICAgICAgdGhpcy5fbWVzaFlhdy5nZW9tZXRyeS51cGRhdGUoKTtcbiAgICAgICAgY29uc3QgcGl0Y2ggPSBUSFJFRS5NYXRoVXRpbHMuREVHMlJBRCAqIHRoaXMudnJtTG9va0F0LnBpdGNoO1xuICAgICAgICB0aGlzLl9tZXNoUGl0Y2guZ2VvbWV0cnkudGhldGEgPSBwaXRjaDtcbiAgICAgICAgdGhpcy5fbWVzaFBpdGNoLmdlb21ldHJ5LnVwZGF0ZSgpO1xuICAgICAgICAvLyBnZXQgd29ybGQgcG9zaXRpb24gYW5kIHF1YXRlcm5pb25cbiAgICAgICAgdGhpcy52cm1Mb29rQXQuZ2V0TG9va0F0V29ybGRQb3NpdGlvbihfdjNBJDEpO1xuICAgICAgICB0aGlzLnZybUxvb2tBdC5nZXRMb29rQXRXb3JsZFF1YXRlcm5pb24oX3F1YXRBJDIpO1xuICAgICAgICAvLyBjYWxjdWxhdGUgcm90YXRpb24gdXNpbmcgZmFjZUZyb250XG4gICAgICAgIF9xdWF0QSQyLm11bHRpcGx5KHRoaXMudnJtTG9va0F0LmdldEZhY2VGcm9udFF1YXRlcm5pb24oX3F1YXRCJDIpKTtcbiAgICAgICAgLy8gc2V0IHRyYW5zZm9ybSB0byBtZXNoZXNcbiAgICAgICAgdGhpcy5fbWVzaFlhdy5wb3NpdGlvbi5jb3B5KF92M0EkMSk7XG4gICAgICAgIHRoaXMuX21lc2hZYXcucXVhdGVybmlvbi5jb3B5KF9xdWF0QSQyKTtcbiAgICAgICAgdGhpcy5fbWVzaFBpdGNoLnBvc2l0aW9uLmNvcHkoX3YzQSQxKTtcbiAgICAgICAgdGhpcy5fbWVzaFBpdGNoLnF1YXRlcm5pb24uY29weShfcXVhdEEkMik7XG4gICAgICAgIHRoaXMuX21lc2hQaXRjaC5xdWF0ZXJuaW9uLm11bHRpcGx5KF9xdWF0QiQyLnNldEZyb21BeGlzQW5nbGUoVkVDM19QT1NJVElWRV9ZLCB5YXcpKTtcbiAgICAgICAgdGhpcy5fbWVzaFBpdGNoLnF1YXRlcm5pb24ubXVsdGlwbHkoUVVBVF9YWV9DVzkwKTtcbiAgICAgICAgLy8gdXBkYXRlIHRhcmdldCBsaW5lIGFuZCBzcGhlcmVcbiAgICAgICAgY29uc3QgeyB0YXJnZXQsIGF1dG9VcGRhdGUgfSA9IHRoaXMudnJtTG9va0F0O1xuICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwgJiYgYXV0b1VwZGF0ZSkge1xuICAgICAgICAgICAgdGFyZ2V0LmdldFdvcmxkUG9zaXRpb24oX3YzQiQxKS5zdWIoX3YzQSQxKTtcbiAgICAgICAgICAgIHRoaXMuX2xpbmVUYXJnZXQuZ2VvbWV0cnkudGFpbC5jb3B5KF92M0IkMSk7XG4gICAgICAgICAgICB0aGlzLl9saW5lVGFyZ2V0Lmdlb21ldHJ5LnVwZGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5fbGluZVRhcmdldC5wb3NpdGlvbi5jb3B5KF92M0EkMSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gYXBwbHkgdHJhbnNmb3JtIHRvIG1lc2hlc1xuICAgICAgICBzdXBlci51cGRhdGVNYXRyaXhXb3JsZChmb3JjZSk7XG4gICAgfVxufVxuXG5jb25zdCBfcG9zaXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgX3NjYWxlID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbi8qKlxuICogQSByZXBsYWNlbWVudCBvZiBgT2JqZWN0M0QuZ2V0V29ybGRRdWF0ZXJuaW9uYC5cbiAqIEV4dHJhY3QgdGhlIHdvcmxkIHF1YXRlcm5pb24gb2YgYW4gb2JqZWN0IGZyb20gaXRzIHdvcmxkIHNwYWNlIG1hdHJpeCwgd2l0aG91dCBjYWxsaW5nIGBPYmplY3QzRC51cGRhdGVXb3JsZE1hdHJpeGAuXG4gKiBVc2UgdGhpcyB3aGVuIHlvdSdyZSBzdXJlIHRoYXQgdGhlIHdvcmxkIG1hdHJpeCBpcyB1cC10by1kYXRlLlxuICpcbiAqIEBwYXJhbSBvYmplY3QgVGhlIG9iamVjdFxuICogQHBhcmFtIG91dCBBIHRhcmdldCBxdWF0ZXJuaW9uXG4gKi9cbmZ1bmN0aW9uIGdldFdvcmxkUXVhdGVybmlvbkxpdGUob2JqZWN0LCBvdXQpIHtcbiAgICBvYmplY3QubWF0cml4V29ybGQuZGVjb21wb3NlKF9wb3NpdGlvbiwgb3V0LCBfc2NhbGUpO1xuICAgIHJldHVybiBvdXQ7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIGF6aW11dGggLyBhbHRpdHVkZSBhbmdsZXMgZnJvbSBhIHZlY3Rvci5cbiAqXG4gKiBUaGlzIHJldHVybnMgYSBkaWZmZXJlbmNlIG9mIGFuZ2xlcyBmcm9tICgxLCAwLCAwKS5cbiAqIEF6aW11dGggcmVwcmVzZW50cyBhbiBhbmdsZSBhcm91bmQgWSBheGlzLlxuICogQWx0aXR1ZGUgcmVwcmVzZW50cyBhbiBhbmdsZSBhcm91bmQgWiBheGlzLlxuICogSXQgaXMgcm90YXRlZCBpbiBpbnRyaW5zaWMgWS1aIG9yZGVyLlxuICpcbiAqIEBwYXJhbSB2ZWN0b3IgVGhlIHZlY3RvclxuICogQHJldHVybnMgQSB0dXBsZSBjb250YWlucyB0d28gYW5nbGVzLCBgWyBhemltdXRoLCBhbHRpdHVkZSBdYFxuICovXG5mdW5jdGlvbiBjYWxjQXppbXV0aEFsdGl0dWRlKHZlY3Rvcikge1xuICAgIHJldHVybiBbTWF0aC5hdGFuMigtdmVjdG9yLnosIHZlY3Rvci54KSwgTWF0aC5hdGFuMih2ZWN0b3IueSwgTWF0aC5zcXJ0KHZlY3Rvci54ICogdmVjdG9yLnggKyB2ZWN0b3IueiAqIHZlY3Rvci56KSldO1xufVxuXG4vKipcbiAqIE1ha2Ugc3VyZSB0aGUgYW5nbGUgaXMgd2l0aGluIC1QSSB0byBQSS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBganNcbiAqIHNhbml0aXplQW5nbGUoMS41ICogTWF0aC5QSSkgLy8gLTAuNSAqIFBJXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gYW5nbGUgQW4gaW5wdXQgYW5nbGVcbiAqL1xuZnVuY3Rpb24gc2FuaXRpemVBbmdsZShhbmdsZSkge1xuICAgIGNvbnN0IHJvdW5kVHVybiA9IE1hdGgucm91bmQoYW5nbGUgLyAyLjAgLyBNYXRoLlBJKTtcbiAgICByZXR1cm4gYW5nbGUgLSAyLjAgKiBNYXRoLlBJICogcm91bmRUdXJuO1xufVxuXG5jb25zdCBWRUMzX1BPU0lUSVZFX1okMSA9IG5ldyBUSFJFRS5WZWN0b3IzKDAuMCwgMC4wLCAxLjApO1xuY29uc3QgX3YzQSA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jb25zdCBfdjNCID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IF92M0MgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgX3F1YXRBJDEgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuY29uc3QgX3F1YXRCJDEgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuY29uc3QgX3F1YXRDID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IF9xdWF0RCA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jb25zdCBfZXVsZXJBJDEgPSBuZXcgVEhSRUUuRXVsZXIoKTtcbi8qKlxuICogQSBjbGFzcyBjb250cm9scyBleWUgZ2F6ZSBtb3ZlbWVudHMgb2YgYSBWUk0uXG4gKi9cbmNsYXNzIFZSTUxvb2tBdCB7XG4gICAgLyoqXG4gICAgICogSXRzIGN1cnJlbnQgYW5nbGUgYXJvdW5kIFkgYXhpcywgaW4gZGVncmVlLlxuICAgICAqL1xuICAgIGdldCB5YXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl95YXc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEl0cyBjdXJyZW50IGFuZ2xlIGFyb3VuZCBZIGF4aXMsIGluIGRlZ3JlZS5cbiAgICAgKi9cbiAgICBzZXQgeWF3KHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3lhdyA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEl0cyBjdXJyZW50IGFuZ2xlIGFyb3VuZCBYIGF4aXMsIGluIGRlZ3JlZS5cbiAgICAgKi9cbiAgICBnZXQgcGl0Y2goKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9waXRjaDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSXRzIGN1cnJlbnQgYW5nbGUgYXJvdW5kIFggYXhpcywgaW4gZGVncmVlLlxuICAgICAqL1xuICAgIHNldCBwaXRjaCh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9waXRjaCA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgZ2V0RXVsZXJ9IGluc3RlYWQuXG4gICAgICovXG4gICAgZ2V0IGV1bGVyKCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTUxvb2tBdDogZXVsZXIgaXMgZGVwcmVjYXRlZC4gdXNlIGdldEV1bGVyKCkgaW5zdGVhZC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXVsZXIobmV3IFRIUkVFLkV1bGVyKCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIFZSTUxvb2tBdH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaHVtYW5vaWQgQSB7QGxpbmsgVlJNSHVtYW5vaWR9XG4gICAgICogQHBhcmFtIGFwcGxpZXIgQSB7QGxpbmsgVlJNTG9va0F0QXBwbGllcn1cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihodW1hbm9pZCwgYXBwbGllcikge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIG9yaWdpbiBvZiBMb29rQXQuIFBvc2l0aW9uIG9mZnNldCBmcm9tIHRoZSBoZWFkIGJvbmUuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9mZnNldEZyb21IZWFkQm9uZSA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiB0aGlzIGlzIHRydWUsIHRoZSBMb29rQXQgd2lsbCBiZSB1cGRhdGVkIGF1dG9tYXRpY2FsbHkgYnkgY2FsbGluZyB7QGxpbmsgdXBkYXRlfSwgdG93YXJkaW5nIHRoZSBkaXJlY3Rpb24gdG8gdGhlIHtAbGluayB0YXJnZXR9LlxuICAgICAgICAgKiBgdHJ1ZWAgYnkgZGVmYXVsdC5cbiAgICAgICAgICpcbiAgICAgICAgICogU2VlIGFsc286IHtAbGluayB0YXJnZXR9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmF1dG9VcGRhdGUgPSB0cnVlO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGZyb250IGRpcmVjdGlvbiBvZiB0aGUgZmFjZS5cbiAgICAgICAgICogSW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgVlJNIDAuMCBjb21wYXQgKFZSTSAwLjAgbW9kZWxzIGFyZSBmYWNpbmcgWi0gaW5zdGVhZCBvZiBaKykuXG4gICAgICAgICAqIFlvdSB1c3VhbGx5IGRvbid0IHdhbnQgdG8gdG91Y2ggdGhpcy5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZmFjZUZyb250ID0gbmV3IFRIUkVFLlZlY3RvcjMoMC4wLCAwLjAsIDEuMCk7XG4gICAgICAgIHRoaXMuaHVtYW5vaWQgPSBodW1hbm9pZDtcbiAgICAgICAgdGhpcy5hcHBsaWVyID0gYXBwbGllcjtcbiAgICAgICAgdGhpcy5feWF3ID0gMC4wO1xuICAgICAgICB0aGlzLl9waXRjaCA9IDAuMDtcbiAgICAgICAgdGhpcy5fbmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9yZXN0SGVhZFdvcmxkUXVhdGVybmlvbiA9IHRoaXMuZ2V0TG9va0F0V29ybGRRdWF0ZXJuaW9uKG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgaXRzIHlhdy1waXRjaCBhbmdsZXMgYXMgYW4gYEV1bGVyYC5cbiAgICAgKiBEb2VzIE5PVCBjb25zaWRlciB7QGxpbmsgZmFjZUZyb250fTsgaXQgcmV0dXJucyBgRXVsZXIoMCwgMCwgMDsgXCJZWFpcIilgIGJ5IGRlZmF1bHQgcmVnYXJkbGVzcyBvZiB0aGUgZmFjZUZyb250IHZhbHVlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IGV1bGVyXG4gICAgICovXG4gICAgZ2V0RXVsZXIodGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiB0YXJnZXQuc2V0KFRIUkVFLk1hdGhVdGlscy5ERUcyUkFEICogdGhpcy5fcGl0Y2gsIFRIUkVFLk1hdGhVdGlscy5ERUcyUkFEICogdGhpcy5feWF3LCAwLjAsICdZWFonKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29weSB0aGUgZ2l2ZW4ge0BsaW5rIFZSTUxvb2tBdH0gaW50byB0aGlzIG9uZS5cbiAgICAgKiB7QGxpbmsgaHVtYW5vaWR9IG11c3QgYmUgc2FtZSBhcyB0aGUgc291cmNlIG9uZS5cbiAgICAgKiB7QGxpbmsgYXBwbGllcn0gd2lsbCByZWZlcmVuY2UgdGhlIHNhbWUgaW5zdGFuY2UgYXMgdGhlIHNvdXJjZSBvbmUuXG4gICAgICogQHBhcmFtIHNvdXJjZSBUaGUge0BsaW5rIFZSTUxvb2tBdH0geW91IHdhbnQgdG8gY29weVxuICAgICAqIEByZXR1cm5zIHRoaXNcbiAgICAgKi9cbiAgICBjb3B5KHNvdXJjZSkge1xuICAgICAgICBpZiAodGhpcy5odW1hbm9pZCAhPT0gc291cmNlLmh1bWFub2lkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZSTUxvb2tBdDogaHVtYW5vaWQgbXVzdCBiZSBzYW1lIGluIG9yZGVyIHRvIGNvcHknKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9mZnNldEZyb21IZWFkQm9uZS5jb3B5KHNvdXJjZS5vZmZzZXRGcm9tSGVhZEJvbmUpO1xuICAgICAgICB0aGlzLmFwcGxpZXIgPSBzb3VyY2UuYXBwbGllcjtcbiAgICAgICAgdGhpcy5hdXRvVXBkYXRlID0gc291cmNlLmF1dG9VcGRhdGU7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gc291cmNlLnRhcmdldDtcbiAgICAgICAgdGhpcy5mYWNlRnJvbnQuY29weShzb3VyY2UuZmFjZUZyb250KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBjbG9uZSBvZiB0aGlzIHtAbGluayBWUk1Mb29rQXR9LlxuICAgICAqIE5vdGUgdGhhdCB7QGxpbmsgaHVtYW5vaWR9IGFuZCB7QGxpbmsgYXBwbGllcn0gd2lsbCByZWZlcmVuY2UgdGhlIHNhbWUgaW5zdGFuY2UgYXMgdGhpcyBvbmUuXG4gICAgICogQHJldHVybnMgQ29waWVkIHtAbGluayBWUk1Mb29rQXR9XG4gICAgICovXG4gICAgY2xvbmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgVlJNTG9va0F0KHRoaXMuaHVtYW5vaWQsIHRoaXMuYXBwbGllcikuY29weSh0aGlzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVzZXQgdGhlIGxvb2tBdCBkaXJlY3Rpb24gKHlhdyBhbmQgcGl0Y2gpIHRvIHRoZSBpbml0aWFsIGRpcmVjdGlvbi5cbiAgICAgKi9cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5feWF3ID0gMC4wO1xuICAgICAgICB0aGlzLl9waXRjaCA9IDAuMDtcbiAgICAgICAgdGhpcy5fbmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgaXRzIGxvb2tBdCBwb3NpdGlvbiBpbiB3b3JsZCBjb29yZGluYXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhcmdldCBBIHRhcmdldCBgVEhSRUUuVmVjdG9yM2BcbiAgICAgKi9cbiAgICBnZXRMb29rQXRXb3JsZFBvc2l0aW9uKHRhcmdldCkge1xuICAgICAgICBjb25zdCBoZWFkID0gdGhpcy5odW1hbm9pZC5nZXRSYXdCb25lTm9kZSgnaGVhZCcpO1xuICAgICAgICByZXR1cm4gdGFyZ2V0LmNvcHkodGhpcy5vZmZzZXRGcm9tSGVhZEJvbmUpLmFwcGx5TWF0cml4NChoZWFkLm1hdHJpeFdvcmxkKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IGl0cyBsb29rQXQgcm90YXRpb24gaW4gd29ybGQgY29vcmRpbmF0ZS5cbiAgICAgKiBEb2VzIE5PVCBjb25zaWRlciB7QGxpbmsgZmFjZUZyb250fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YXJnZXQgQSB0YXJnZXQgYFRIUkVFLlF1YXRlcm5pb25gXG4gICAgICovXG4gICAgZ2V0TG9va0F0V29ybGRRdWF0ZXJuaW9uKHRhcmdldCkge1xuICAgICAgICBjb25zdCBoZWFkID0gdGhpcy5odW1hbm9pZC5nZXRSYXdCb25lTm9kZSgnaGVhZCcpO1xuICAgICAgICByZXR1cm4gZ2V0V29ybGRRdWF0ZXJuaW9uTGl0ZShoZWFkLCB0YXJnZXQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgYSBxdWF0ZXJuaW9uIHRoYXQgcm90YXRlcyB0aGUgK1ogdW5pdCB2ZWN0b3Igb2YgdGhlIGh1bWFub2lkIEhlYWQgdG8gdGhlIHtAbGluayBmYWNlRnJvbnR9IGRpcmVjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YXJnZXQgQSB0YXJnZXQgYFRIUkVFLlF1YXRlcm5pb25gXG4gICAgICovXG4gICAgZ2V0RmFjZUZyb250UXVhdGVybmlvbih0YXJnZXQpIHtcbiAgICAgICAgaWYgKHRoaXMuZmFjZUZyb250LmRpc3RhbmNlVG9TcXVhcmVkKFZFQzNfUE9TSVRJVkVfWiQxKSA8IDAuMDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQuY29weSh0aGlzLl9yZXN0SGVhZFdvcmxkUXVhdGVybmlvbikuaW52ZXJ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW2ZhY2VGcm9udEF6aW11dGgsIGZhY2VGcm9udEFsdGl0dWRlXSA9IGNhbGNBemltdXRoQWx0aXR1ZGUodGhpcy5mYWNlRnJvbnQpO1xuICAgICAgICBfZXVsZXJBJDEuc2V0KDAuMCwgMC41ICogTWF0aC5QSSArIGZhY2VGcm9udEF6aW11dGgsIGZhY2VGcm9udEFsdGl0dWRlLCAnWVpYJyk7XG4gICAgICAgIHJldHVybiB0YXJnZXQuc2V0RnJvbUV1bGVyKF9ldWxlckEkMSkucHJlbXVsdGlwbHkoX3F1YXRELmNvcHkodGhpcy5fcmVzdEhlYWRXb3JsZFF1YXRlcm5pb24pLmludmVydCgpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IGl0cyBMb29rQXQgZGlyZWN0aW9uIGluIHdvcmxkIGNvb3JkaW5hdGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IEEgdGFyZ2V0IGBUSFJFRS5WZWN0b3IzYFxuICAgICAqL1xuICAgIGdldExvb2tBdFdvcmxkRGlyZWN0aW9uKHRhcmdldCkge1xuICAgICAgICB0aGlzLmdldExvb2tBdFdvcmxkUXVhdGVybmlvbihfcXVhdEIkMSk7XG4gICAgICAgIHRoaXMuZ2V0RmFjZUZyb250UXVhdGVybmlvbihfcXVhdEMpO1xuICAgICAgICByZXR1cm4gdGFyZ2V0XG4gICAgICAgICAgICAuY29weShWRUMzX1BPU0lUSVZFX1okMSlcbiAgICAgICAgICAgIC5hcHBseVF1YXRlcm5pb24oX3F1YXRCJDEpXG4gICAgICAgICAgICAuYXBwbHlRdWF0ZXJuaW9uKF9xdWF0QylcbiAgICAgICAgICAgIC5hcHBseUV1bGVyKHRoaXMuZ2V0RXVsZXIoX2V1bGVyQSQxKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldCBpdHMgbG9va0F0IHRhcmdldCBwb3NpdGlvbi5cbiAgICAgKlxuICAgICAqIE5vdGUgdGhhdCBpdHMgcmVzdWx0IHdpbGwgYmUgaW5zdGFudGx5IG92ZXJ3cml0dGVuIGlmIHtAbGluayBWUk1Mb29rQXRIZWFkLmF1dG9VcGRhdGV9IGlzIGVuYWJsZWQuXG4gICAgICpcbiAgICAgKiBJZiB5b3Ugd2FudCB0byB0cmFjayBhbiBvYmplY3QgY29udGludW91c2x5LCB5b3UgbWlnaHQgd2FudCB0byB1c2Uge0BsaW5rIHRhcmdldH0gaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwb3NpdGlvbiBBIHRhcmdldCBwb3NpdGlvbiwgaW4gd29ybGQgc3BhY2VcbiAgICAgKi9cbiAgICBsb29rQXQocG9zaXRpb24pIHtcbiAgICAgICAgLy8gTG9vayBhdCBkaXJlY3Rpb24gaW4gbG9jYWwgY29vcmRpbmF0ZVxuICAgICAgICBjb25zdCBoZWFkUm90RGlmZkludiA9IF9xdWF0QSQxXG4gICAgICAgICAgICAuY29weSh0aGlzLl9yZXN0SGVhZFdvcmxkUXVhdGVybmlvbilcbiAgICAgICAgICAgIC5tdWx0aXBseShxdWF0SW52ZXJ0Q29tcGF0KHRoaXMuZ2V0TG9va0F0V29ybGRRdWF0ZXJuaW9uKF9xdWF0QiQxKSkpO1xuICAgICAgICBjb25zdCBoZWFkUG9zID0gdGhpcy5nZXRMb29rQXRXb3JsZFBvc2l0aW9uKF92M0IpO1xuICAgICAgICBjb25zdCBsb29rQXREaXIgPSBfdjNDLmNvcHkocG9zaXRpb24pLnN1YihoZWFkUG9zKS5hcHBseVF1YXRlcm5pb24oaGVhZFJvdERpZmZJbnYpLm5vcm1hbGl6ZSgpO1xuICAgICAgICAvLyBjYWxjdWxhdGUgYW5nbGVzXG4gICAgICAgIGNvbnN0IFthemltdXRoRnJvbSwgYWx0aXR1ZGVGcm9tXSA9IGNhbGNBemltdXRoQWx0aXR1ZGUodGhpcy5mYWNlRnJvbnQpO1xuICAgICAgICBjb25zdCBbYXppbXV0aFRvLCBhbHRpdHVkZVRvXSA9IGNhbGNBemltdXRoQWx0aXR1ZGUobG9va0F0RGlyKTtcbiAgICAgICAgY29uc3QgeWF3ID0gc2FuaXRpemVBbmdsZShhemltdXRoVG8gLSBhemltdXRoRnJvbSk7XG4gICAgICAgIGNvbnN0IHBpdGNoID0gc2FuaXRpemVBbmdsZShhbHRpdHVkZUZyb20gLSBhbHRpdHVkZVRvKTsgLy8gc3Bpbm5pbmcgKDEsIDAsIDApIENDVyBhcm91bmQgWiBheGlzIG1ha2VzIHRoZSB2ZWN0b3IgbG9vayB1cCwgd2hpbGUgc3Bpbm5pbmcgKDAsIDAsIDEpIENDVyBhcm91bmQgWCBheGlzIG1ha2VzIHRoZSB2ZWN0b3IgbG9vayBkb3duXG4gICAgICAgIC8vIGFwcGx5IGFuZ2xlc1xuICAgICAgICB0aGlzLl95YXcgPSBUSFJFRS5NYXRoVXRpbHMuUkFEMkRFRyAqIHlhdztcbiAgICAgICAgdGhpcy5fcGl0Y2ggPSBUSFJFRS5NYXRoVXRpbHMuUkFEMkRFRyAqIHBpdGNoO1xuICAgICAgICB0aGlzLl9uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgVlJNTG9va0F0SGVhZC5cbiAgICAgKiBJZiB7QGxpbmsgYXV0b1VwZGF0ZX0gaXMgZW5hYmxlZCwgdGhpcyB3aWxsIG1ha2UgaXQgbG9vayBhdCB0aGUge0BsaW5rIHRhcmdldH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGVsdGEgZGVsdGFUaW1lLCBpdCBpc24ndCB1c2VkIHRob3VnaC4gWW91IGNhbiB1c2UgdGhlIHBhcmFtZXRlciBpZiB5b3Ugd2FudCB0byB1c2UgdGhpcyBpbiB5b3VyIG93biBleHRlbmRlZCB7QGxpbmsgVlJNTG9va0F0fS5cbiAgICAgKi9cbiAgICB1cGRhdGUoZGVsdGEpIHtcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0ICE9IG51bGwgJiYgdGhpcy5hdXRvVXBkYXRlKSB7XG4gICAgICAgICAgICB0aGlzLmxvb2tBdCh0aGlzLnRhcmdldC5nZXRXb3JsZFBvc2l0aW9uKF92M0EpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fbmVlZHNVcGRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX25lZWRzVXBkYXRlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmFwcGxpZXIuYXBwbHlZYXdQaXRjaCh0aGlzLl95YXcsIHRoaXMuX3BpdGNoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblZSTUxvb2tBdC5FVUxFUl9PUkRFUiA9ICdZWFonOyAvLyB5YXctcGl0Y2gtcm9sbFxuXG5jb25zdCBWRUMzX1BPU0lUSVZFX1ogPSBuZXcgVEhSRUUuVmVjdG9yMygwLjAsIDAuMCwgMS4wKTtcbmNvbnN0IF9xdWF0QSA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jb25zdCBfcXVhdEIgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuY29uc3QgX2V1bGVyQSA9IG5ldyBUSFJFRS5FdWxlcigwLjAsIDAuMCwgMC4wLCAnWVhaJyk7XG4vKipcbiAqIEEgY2xhc3MgdGhhdCBhcHBsaWVzIGV5ZSBnYXplIGRpcmVjdGlvbnMgdG8gYSBWUk0uXG4gKiBJdCB3aWxsIGJlIHVzZWQgYnkge0BsaW5rIFZSTUxvb2tBdH0uXG4gKi9cbmNsYXNzIFZSTUxvb2tBdEJvbmVBcHBsaWVyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIFZSTUxvb2tBdEJvbmVBcHBsaWVyfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBodW1hbm9pZCBBIHtAbGluayBWUk1IdW1hbm9pZH1cbiAgICAgKiBAcGFyYW0gcmFuZ2VNYXBIb3Jpem9udGFsSW5uZXIgQSB7QGxpbmsgVlJNTG9va0F0UmFuZ2VNYXB9IHVzZWQgZm9yIGlubmVyIHRyYW5zdmVyc2UgZGlyZWN0aW9uXG4gICAgICogQHBhcmFtIHJhbmdlTWFwSG9yaXpvbnRhbE91dGVyIEEge0BsaW5rIFZSTUxvb2tBdFJhbmdlTWFwfSB1c2VkIGZvciBvdXRlciB0cmFuc3ZlcnNlIGRpcmVjdGlvblxuICAgICAqIEBwYXJhbSByYW5nZU1hcFZlcnRpY2FsRG93biBBIHtAbGluayBWUk1Mb29rQXRSYW5nZU1hcH0gdXNlZCBmb3IgZG93biBkaXJlY3Rpb25cbiAgICAgKiBAcGFyYW0gcmFuZ2VNYXBWZXJ0aWNhbFVwIEEge0BsaW5rIFZSTUxvb2tBdFJhbmdlTWFwfSB1c2VkIGZvciB1cCBkaXJlY3Rpb25cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihodW1hbm9pZCwgcmFuZ2VNYXBIb3Jpem9udGFsSW5uZXIsIHJhbmdlTWFwSG9yaXpvbnRhbE91dGVyLCByYW5nZU1hcFZlcnRpY2FsRG93biwgcmFuZ2VNYXBWZXJ0aWNhbFVwKSB7XG4gICAgICAgIHRoaXMuaHVtYW5vaWQgPSBodW1hbm9pZDtcbiAgICAgICAgdGhpcy5yYW5nZU1hcEhvcml6b250YWxJbm5lciA9IHJhbmdlTWFwSG9yaXpvbnRhbElubmVyO1xuICAgICAgICB0aGlzLnJhbmdlTWFwSG9yaXpvbnRhbE91dGVyID0gcmFuZ2VNYXBIb3Jpem9udGFsT3V0ZXI7XG4gICAgICAgIHRoaXMucmFuZ2VNYXBWZXJ0aWNhbERvd24gPSByYW5nZU1hcFZlcnRpY2FsRG93bjtcbiAgICAgICAgdGhpcy5yYW5nZU1hcFZlcnRpY2FsVXAgPSByYW5nZU1hcFZlcnRpY2FsVXA7XG4gICAgICAgIHRoaXMuZmFjZUZyb250ID0gbmV3IFRIUkVFLlZlY3RvcjMoMC4wLCAwLjAsIDEuMCk7XG4gICAgICAgIC8vIHNldCByZXN0IHF1YXRlcm5pb25zXG4gICAgICAgIHRoaXMuX3Jlc3RRdWF0TGVmdEV5ZSA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4gICAgICAgIHRoaXMuX3Jlc3RRdWF0UmlnaHRFeWUgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuICAgICAgICB0aGlzLl9yZXN0TGVmdEV5ZVBhcmVudFdvcmxkUXVhdCA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4gICAgICAgIHRoaXMuX3Jlc3RSaWdodEV5ZVBhcmVudFdvcmxkUXVhdCA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4gICAgICAgIGNvbnN0IGxlZnRFeWUgPSB0aGlzLmh1bWFub2lkLmdldFJhd0JvbmVOb2RlKCdsZWZ0RXllJyk7XG4gICAgICAgIGNvbnN0IHJpZ2h0RXllID0gdGhpcy5odW1hbm9pZC5nZXRSYXdCb25lTm9kZSgncmlnaHRFeWUnKTtcbiAgICAgICAgaWYgKGxlZnRFeWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc3RRdWF0TGVmdEV5ZS5jb3B5KGxlZnRFeWUucXVhdGVybmlvbik7XG4gICAgICAgICAgICBnZXRXb3JsZFF1YXRlcm5pb25MaXRlKGxlZnRFeWUucGFyZW50LCB0aGlzLl9yZXN0TGVmdEV5ZVBhcmVudFdvcmxkUXVhdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJpZ2h0RXllKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXN0UXVhdFJpZ2h0RXllLmNvcHkocmlnaHRFeWUucXVhdGVybmlvbik7XG4gICAgICAgICAgICBnZXRXb3JsZFF1YXRlcm5pb25MaXRlKHJpZ2h0RXllLnBhcmVudCwgdGhpcy5fcmVzdFJpZ2h0RXllUGFyZW50V29ybGRRdWF0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBBcHBseSB0aGUgaW5wdXQgYW5nbGUgdG8gaXRzIGFzc29jaWF0ZWQgVlJNIG1vZGVsLlxuICAgICAqXG4gICAgICogQHBhcmFtIHlhdyBSb3RhdGlvbiBhcm91bmQgWSBheGlzLCBpbiBkZWdyZWVcbiAgICAgKiBAcGFyYW0gcGl0Y2ggUm90YXRpb24gYXJvdW5kIFggYXhpcywgaW4gZGVncmVlXG4gICAgICovXG4gICAgYXBwbHlZYXdQaXRjaCh5YXcsIHBpdGNoKSB7XG4gICAgICAgIGNvbnN0IGxlZnRFeWUgPSB0aGlzLmh1bWFub2lkLmdldFJhd0JvbmVOb2RlKCdsZWZ0RXllJyk7XG4gICAgICAgIGNvbnN0IHJpZ2h0RXllID0gdGhpcy5odW1hbm9pZC5nZXRSYXdCb25lTm9kZSgncmlnaHRFeWUnKTtcbiAgICAgICAgY29uc3QgbGVmdEV5ZU5vcm1hbGl6ZWQgPSB0aGlzLmh1bWFub2lkLmdldE5vcm1hbGl6ZWRCb25lTm9kZSgnbGVmdEV5ZScpO1xuICAgICAgICBjb25zdCByaWdodEV5ZU5vcm1hbGl6ZWQgPSB0aGlzLmh1bWFub2lkLmdldE5vcm1hbGl6ZWRCb25lTm9kZSgncmlnaHRFeWUnKTtcbiAgICAgICAgLy8gbGVmdFxuICAgICAgICBpZiAobGVmdEV5ZSkge1xuICAgICAgICAgICAgaWYgKHBpdGNoIDwgMC4wKSB7XG4gICAgICAgICAgICAgICAgX2V1bGVyQS54ID0gLVRIUkVFLk1hdGhVdGlscy5ERUcyUkFEICogdGhpcy5yYW5nZU1hcFZlcnRpY2FsRG93bi5tYXAoLXBpdGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIF9ldWxlckEueCA9IFRIUkVFLk1hdGhVdGlscy5ERUcyUkFEICogdGhpcy5yYW5nZU1hcFZlcnRpY2FsVXAubWFwKHBpdGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh5YXcgPCAwLjApIHtcbiAgICAgICAgICAgICAgICBfZXVsZXJBLnkgPSAtVEhSRUUuTWF0aFV0aWxzLkRFRzJSQUQgKiB0aGlzLnJhbmdlTWFwSG9yaXpvbnRhbElubmVyLm1hcCgteWF3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIF9ldWxlckEueSA9IFRIUkVFLk1hdGhVdGlscy5ERUcyUkFEICogdGhpcy5yYW5nZU1hcEhvcml6b250YWxPdXRlci5tYXAoeWF3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9xdWF0QS5zZXRGcm9tRXVsZXIoX2V1bGVyQSk7XG4gICAgICAgICAgICB0aGlzLl9nZXRXb3JsZEZhY2VGcm9udFF1YXQoX3F1YXRCKTtcbiAgICAgICAgICAgIC8vIF9xdWF0QiAqIF9xdWF0QSAqIF9xdWF0Ql4tMVxuICAgICAgICAgICAgLy8gd2hlcmUgX3F1YXRBIGlzIExvb2tBdCByb3RhdGlvblxuICAgICAgICAgICAgLy8gYW5kIF9xdWF0QiBpcyB3b3JsZEZhY2VGcm9udFF1YXRcbiAgICAgICAgICAgIGxlZnRFeWVOb3JtYWxpemVkLnF1YXRlcm5pb24uY29weShfcXVhdEIpLm11bHRpcGx5KF9xdWF0QSkubXVsdGlwbHkoX3F1YXRCLmludmVydCgpKTtcbiAgICAgICAgICAgIF9xdWF0QS5jb3B5KHRoaXMuX3Jlc3RMZWZ0RXllUGFyZW50V29ybGRRdWF0KTtcbiAgICAgICAgICAgIC8vIF9xdWF0QV4tMSAqIGxlZnRFeWVOb3JtYWxpemVkLnF1YXRlcm5pb24gKiBfcXVhdEEgKiByZXN0UXVhdExlZnRFeWVcbiAgICAgICAgICAgIC8vIHdoZXJlIF9xdWF0QSBpcyByZXN0TGVmdEV5ZVBhcmVudFdvcmxkUXVhdFxuICAgICAgICAgICAgbGVmdEV5ZS5xdWF0ZXJuaW9uXG4gICAgICAgICAgICAgICAgLmNvcHkobGVmdEV5ZU5vcm1hbGl6ZWQucXVhdGVybmlvbilcbiAgICAgICAgICAgICAgICAubXVsdGlwbHkoX3F1YXRBKVxuICAgICAgICAgICAgICAgIC5wcmVtdWx0aXBseShfcXVhdEEuaW52ZXJ0KCkpXG4gICAgICAgICAgICAgICAgLm11bHRpcGx5KHRoaXMuX3Jlc3RRdWF0TGVmdEV5ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmlnaHRcbiAgICAgICAgaWYgKHJpZ2h0RXllKSB7XG4gICAgICAgICAgICBpZiAocGl0Y2ggPCAwLjApIHtcbiAgICAgICAgICAgICAgICBfZXVsZXJBLnggPSAtVEhSRUUuTWF0aFV0aWxzLkRFRzJSQUQgKiB0aGlzLnJhbmdlTWFwVmVydGljYWxEb3duLm1hcCgtcGl0Y2gpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgX2V1bGVyQS54ID0gVEhSRUUuTWF0aFV0aWxzLkRFRzJSQUQgKiB0aGlzLnJhbmdlTWFwVmVydGljYWxVcC5tYXAocGl0Y2gpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHlhdyA8IDAuMCkge1xuICAgICAgICAgICAgICAgIF9ldWxlckEueSA9IC1USFJFRS5NYXRoVXRpbHMuREVHMlJBRCAqIHRoaXMucmFuZ2VNYXBIb3Jpem9udGFsT3V0ZXIubWFwKC15YXcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgX2V1bGVyQS55ID0gVEhSRUUuTWF0aFV0aWxzLkRFRzJSQUQgKiB0aGlzLnJhbmdlTWFwSG9yaXpvbnRhbElubmVyLm1hcCh5YXcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX3F1YXRBLnNldEZyb21FdWxlcihfZXVsZXJBKTtcbiAgICAgICAgICAgIHRoaXMuX2dldFdvcmxkRmFjZUZyb250UXVhdChfcXVhdEIpO1xuICAgICAgICAgICAgLy8gX3F1YXRCICogX3F1YXRBICogX3F1YXRCXi0xXG4gICAgICAgICAgICAvLyB3aGVyZSBfcXVhdEEgaXMgTG9va0F0IHJvdGF0aW9uXG4gICAgICAgICAgICAvLyBhbmQgX3F1YXRCIGlzIHdvcmxkRmFjZUZyb250UXVhdFxuICAgICAgICAgICAgcmlnaHRFeWVOb3JtYWxpemVkLnF1YXRlcm5pb24uY29weShfcXVhdEIpLm11bHRpcGx5KF9xdWF0QSkubXVsdGlwbHkoX3F1YXRCLmludmVydCgpKTtcbiAgICAgICAgICAgIF9xdWF0QS5jb3B5KHRoaXMuX3Jlc3RSaWdodEV5ZVBhcmVudFdvcmxkUXVhdCk7XG4gICAgICAgICAgICAvLyBfcXVhdEFeLTEgKiByaWdodEV5ZU5vcm1hbGl6ZWQucXVhdGVybmlvbiAqIF9xdWF0QSAqIHJlc3RRdWF0UmlnaHRFeWVcbiAgICAgICAgICAgIC8vIHdoZXJlIF9xdWF0QSBpcyByZXN0UmlnaHRFeWVQYXJlbnRXb3JsZFF1YXRcbiAgICAgICAgICAgIHJpZ2h0RXllLnF1YXRlcm5pb25cbiAgICAgICAgICAgICAgICAuY29weShyaWdodEV5ZU5vcm1hbGl6ZWQucXVhdGVybmlvbilcbiAgICAgICAgICAgICAgICAubXVsdGlwbHkoX3F1YXRBKVxuICAgICAgICAgICAgICAgIC5wcmVtdWx0aXBseShfcXVhdEEuaW52ZXJ0KCkpXG4gICAgICAgICAgICAgICAgLm11bHRpcGx5KHRoaXMuX3Jlc3RRdWF0UmlnaHRFeWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgYXBwbHlZYXdQaXRjaH0gaW5zdGVhZC5cbiAgICAgKi9cbiAgICBsb29rQXQoZXVsZXIpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdWUk1Mb29rQXRCb25lQXBwbGllcjogbG9va0F0KCkgaXMgZGVwcmVjYXRlZC4gdXNlIGFwcGx5KCkgaW5zdGVhZC4nKTtcbiAgICAgICAgY29uc3QgeWF3ID0gVEhSRUUuTWF0aFV0aWxzLlJBRDJERUcgKiBldWxlci55O1xuICAgICAgICBjb25zdCBwaXRjaCA9IFRIUkVFLk1hdGhVdGlscy5SQUQyREVHICogZXVsZXIueDtcbiAgICAgICAgdGhpcy5hcHBseVlhd1BpdGNoKHlhdywgcGl0Y2gpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgYSBxdWF0ZXJuaW9uIHRoYXQgcm90YXRlcyB0aGUgd29ybGQtc3BhY2UgK1ogdW5pdCB2ZWN0b3IgdG8gdGhlIHtAbGluayBmYWNlRnJvbnR9IGRpcmVjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YXJnZXQgQSB0YXJnZXQgYFRIUkVFLlF1YXRlcm5pb25gXG4gICAgICovXG4gICAgX2dldFdvcmxkRmFjZUZyb250UXVhdCh0YXJnZXQpIHtcbiAgICAgICAgaWYgKHRoaXMuZmFjZUZyb250LmRpc3RhbmNlVG9TcXVhcmVkKFZFQzNfUE9TSVRJVkVfWikgPCAwLjAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0LmlkZW50aXR5KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW2ZhY2VGcm9udEF6aW11dGgsIGZhY2VGcm9udEFsdGl0dWRlXSA9IGNhbGNBemltdXRoQWx0aXR1ZGUodGhpcy5mYWNlRnJvbnQpO1xuICAgICAgICBfZXVsZXJBLnNldCgwLjAsIDAuNSAqIE1hdGguUEkgKyBmYWNlRnJvbnRBemltdXRoLCBmYWNlRnJvbnRBbHRpdHVkZSwgJ1laWCcpO1xuICAgICAgICByZXR1cm4gdGFyZ2V0LnNldEZyb21FdWxlcihfZXVsZXJBKTtcbiAgICB9XG59XG4vKipcbiAqIFJlcHJlc2VudCBpdHMgdHlwZSBvZiBhcHBsaWVyLlxuICovXG5WUk1Mb29rQXRCb25lQXBwbGllci50eXBlID0gJ2JvbmUnO1xuXG4vKipcbiAqIEEgY2xhc3MgdGhhdCBhcHBsaWVzIGV5ZSBnYXplIGRpcmVjdGlvbnMgdG8gYSBWUk0uXG4gKiBJdCB3aWxsIGJlIHVzZWQgYnkge0BsaW5rIFZSTUxvb2tBdH0uXG4gKi9cbmNsYXNzIFZSTUxvb2tBdEV4cHJlc3Npb25BcHBsaWVyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIFZSTUxvb2tBdEV4cHJlc3Npb25BcHBsaWVyfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBleHByZXNzaW9ucyBBIHtAbGluayBWUk1FeHByZXNzaW9uTWFuYWdlcn1cbiAgICAgKiBAcGFyYW0gcmFuZ2VNYXBIb3Jpem9udGFsSW5uZXIgQSB7QGxpbmsgVlJNTG9va0F0UmFuZ2VNYXB9IHVzZWQgZm9yIGlubmVyIHRyYW5zdmVyc2UgZGlyZWN0aW9uXG4gICAgICogQHBhcmFtIHJhbmdlTWFwSG9yaXpvbnRhbE91dGVyIEEge0BsaW5rIFZSTUxvb2tBdFJhbmdlTWFwfSB1c2VkIGZvciBvdXRlciB0cmFuc3ZlcnNlIGRpcmVjdGlvblxuICAgICAqIEBwYXJhbSByYW5nZU1hcFZlcnRpY2FsRG93biBBIHtAbGluayBWUk1Mb29rQXRSYW5nZU1hcH0gdXNlZCBmb3IgZG93biBkaXJlY3Rpb25cbiAgICAgKiBAcGFyYW0gcmFuZ2VNYXBWZXJ0aWNhbFVwIEEge0BsaW5rIFZSTUxvb2tBdFJhbmdlTWFwfSB1c2VkIGZvciB1cCBkaXJlY3Rpb25cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihleHByZXNzaW9ucywgcmFuZ2VNYXBIb3Jpem9udGFsSW5uZXIsIHJhbmdlTWFwSG9yaXpvbnRhbE91dGVyLCByYW5nZU1hcFZlcnRpY2FsRG93biwgcmFuZ2VNYXBWZXJ0aWNhbFVwKSB7XG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbnMgPSBleHByZXNzaW9ucztcbiAgICAgICAgdGhpcy5yYW5nZU1hcEhvcml6b250YWxJbm5lciA9IHJhbmdlTWFwSG9yaXpvbnRhbElubmVyO1xuICAgICAgICB0aGlzLnJhbmdlTWFwSG9yaXpvbnRhbE91dGVyID0gcmFuZ2VNYXBIb3Jpem9udGFsT3V0ZXI7XG4gICAgICAgIHRoaXMucmFuZ2VNYXBWZXJ0aWNhbERvd24gPSByYW5nZU1hcFZlcnRpY2FsRG93bjtcbiAgICAgICAgdGhpcy5yYW5nZU1hcFZlcnRpY2FsVXAgPSByYW5nZU1hcFZlcnRpY2FsVXA7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFwcGx5IHRoZSBpbnB1dCBhbmdsZSB0byBpdHMgYXNzb2NpYXRlZCBWUk0gbW9kZWwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0geWF3IFJvdGF0aW9uIGFyb3VuZCBZIGF4aXMsIGluIGRlZ3JlZVxuICAgICAqIEBwYXJhbSBwaXRjaCBSb3RhdGlvbiBhcm91bmQgWCBheGlzLCBpbiBkZWdyZWVcbiAgICAgKi9cbiAgICBhcHBseVlhd1BpdGNoKHlhdywgcGl0Y2gpIHtcbiAgICAgICAgaWYgKHBpdGNoIDwgMC4wKSB7XG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25zLnNldFZhbHVlKCdsb29rRG93bicsIDAuMCk7XG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25zLnNldFZhbHVlKCdsb29rVXAnLCB0aGlzLnJhbmdlTWFwVmVydGljYWxVcC5tYXAoLXBpdGNoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25zLnNldFZhbHVlKCdsb29rVXAnLCAwLjApO1xuICAgICAgICAgICAgdGhpcy5leHByZXNzaW9ucy5zZXRWYWx1ZSgnbG9va0Rvd24nLCB0aGlzLnJhbmdlTWFwVmVydGljYWxEb3duLm1hcChwaXRjaCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh5YXcgPCAwLjApIHtcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbnMuc2V0VmFsdWUoJ2xvb2tMZWZ0JywgMC4wKTtcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbnMuc2V0VmFsdWUoJ2xvb2tSaWdodCcsIHRoaXMucmFuZ2VNYXBIb3Jpem9udGFsT3V0ZXIubWFwKC15YXcpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbnMuc2V0VmFsdWUoJ2xvb2tSaWdodCcsIDAuMCk7XG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25zLnNldFZhbHVlKCdsb29rTGVmdCcsIHRoaXMucmFuZ2VNYXBIb3Jpem9udGFsT3V0ZXIubWFwKHlhdykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgYXBwbHlZYXdQaXRjaH0gaW5zdGVhZC5cbiAgICAgKi9cbiAgICBsb29rQXQoZXVsZXIpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdWUk1Mb29rQXRCb25lQXBwbGllcjogbG9va0F0KCkgaXMgZGVwcmVjYXRlZC4gdXNlIGFwcGx5KCkgaW5zdGVhZC4nKTtcbiAgICAgICAgY29uc3QgeWF3ID0gVEhSRUUuTWF0aFV0aWxzLlJBRDJERUcgKiBldWxlci55O1xuICAgICAgICBjb25zdCBwaXRjaCA9IFRIUkVFLk1hdGhVdGlscy5SQUQyREVHICogZXVsZXIueDtcbiAgICAgICAgdGhpcy5hcHBseVlhd1BpdGNoKHlhdywgcGl0Y2gpO1xuICAgIH1cbn1cbi8qKlxuICogUmVwcmVzZW50IGl0cyB0eXBlIG9mIGFwcGxpZXIuXG4gKi9cblZSTUxvb2tBdEV4cHJlc3Npb25BcHBsaWVyLnR5cGUgPSAnZXhwcmVzc2lvbic7XG5cbmNsYXNzIFZSTUxvb2tBdFJhbmdlTWFwIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIFZSTUxvb2tBdFJhbmdlTWFwfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbnB1dE1heFZhbHVlIFRoZSB7QGxpbmsgaW5wdXRNYXhWYWx1ZX0gb2YgdGhlIG1hcFxuICAgICAqIEBwYXJhbSBvdXRwdXRTY2FsZSBUaGUge0BsaW5rIG91dHB1dFNjYWxlfSBvZiB0aGUgbWFwXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoaW5wdXRNYXhWYWx1ZSwgb3V0cHV0U2NhbGUpIHtcbiAgICAgICAgdGhpcy5pbnB1dE1heFZhbHVlID0gaW5wdXRNYXhWYWx1ZTtcbiAgICAgICAgdGhpcy5vdXRwdXRTY2FsZSA9IG91dHB1dFNjYWxlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZSBhbiBpbnB1dCB2YWx1ZSBhbmQgb3V0cHV0IGEgbWFwcGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSBzcmMgVGhlIGlucHV0IHZhbHVlXG4gICAgICovXG4gICAgbWFwKHNyYykge1xuICAgICAgICByZXR1cm4gdGhpcy5vdXRwdXRTY2FsZSAqIHNhdHVyYXRlKHNyYyAvIHRoaXMuaW5wdXRNYXhWYWx1ZSk7XG4gICAgfVxufVxuXG4vKipcbiAqIFBvc3NpYmxlIHNwZWMgdmVyc2lvbnMgaXQgcmVjb2duaXplcy5cbiAqL1xuY29uc3QgUE9TU0lCTEVfU1BFQ19WRVJTSU9OUyQxID0gbmV3IFNldChbJzEuMCcsICcxLjAtYmV0YSddKTtcbi8qKlxuICogVGhlIG1pbmltdW0gcGVybWl0dGVkIHZhbHVlIGZvciB7QGxpbmsgVjFWUk1TY2hlbWEuTG9va0F0UmFuZ2VNYXAuaW5wdXRNYXhWYWx1ZX0uXG4gKiBJZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgc21hbGxlciB0aGFuIHRoaXMsIHRoZSBsb2FkZXIgc2hvd3MgYSB3YXJuaW5nIGFuZCBjbGFtcHMgdXAgdGhlIHZhbHVlLlxuICovXG5jb25zdCBJTlBVVF9NQVhfVkFMVUVfTUlOSU1VTSA9IDAuMDE7XG4vKipcbiAqIEEgcGx1Z2luIG9mIEdMVEZMb2FkZXIgdGhhdCBpbXBvcnRzIGEge0BsaW5rIFZSTUxvb2tBdH0gZnJvbSBhIFZSTSBleHRlbnNpb24gb2YgYSBHTFRGLlxuICovXG5jbGFzcyBWUk1Mb29rQXRMb2FkZXJQbHVnaW4ge1xuICAgIGdldCBuYW1lKCkge1xuICAgICAgICAvLyBXZSBzaG91bGQgdXNlIHRoZSBleHRlbnNpb24gbmFtZSBpbnN0ZWFkIGJ1dCB3ZSBoYXZlIG11bHRpcGxlIHBsdWdpbnMgZm9yIGFuIGV4dGVuc2lvbi4uLlxuICAgICAgICByZXR1cm4gJ1ZSTUxvb2tBdExvYWRlclBsdWdpbic7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhcnNlciwgb3B0aW9ucykge1xuICAgICAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICAgICAgdGhpcy5oZWxwZXJSb290ID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmhlbHBlclJvb3Q7XG4gICAgfVxuICAgIGFmdGVyUm9vdChnbHRmKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCB2cm1IdW1hbm9pZCA9IGdsdGYudXNlckRhdGEudnJtSHVtYW5vaWQ7XG4gICAgICAgICAgICAvLyBleHBsaWNpdGx5IGRpc3Rpbmd1aXNoIG51bGwgYW5kIHVuZGVmaW5lZFxuICAgICAgICAgICAgLy8gc2luY2UgdnJtSHVtYW5vaWQgbWlnaHQgYmUgbnVsbCBhcyBhIHJlc3VsdFxuICAgICAgICAgICAgaWYgKHZybUh1bWFub2lkID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodnJtSHVtYW5vaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVlJNTG9va0F0TG9hZGVyUGx1Z2luOiB2cm1IdW1hbm9pZCBpcyB1bmRlZmluZWQuIFZSTUh1bWFub2lkTG9hZGVyUGx1Z2luIGhhdmUgdG8gYmUgdXNlZCBmaXJzdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdnJtRXhwcmVzc2lvbk1hbmFnZXIgPSBnbHRmLnVzZXJEYXRhLnZybUV4cHJlc3Npb25NYW5hZ2VyO1xuICAgICAgICAgICAgaWYgKHZybUV4cHJlc3Npb25NYW5hZ2VyID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodnJtRXhwcmVzc2lvbk1hbmFnZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVlJNTG9va0F0TG9hZGVyUGx1Z2luOiB2cm1FeHByZXNzaW9uTWFuYWdlciBpcyB1bmRlZmluZWQuIFZSTUV4cHJlc3Npb25Mb2FkZXJQbHVnaW4gaGF2ZSB0byBiZSB1c2VkIGZpcnN0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBnbHRmLnVzZXJEYXRhLnZybUxvb2tBdCA9IHlpZWxkIHRoaXMuX2ltcG9ydChnbHRmLCB2cm1IdW1hbm9pZCwgdnJtRXhwcmVzc2lvbk1hbmFnZXIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW1wb3J0IGEge0BsaW5rIFZSTUxvb2tBdH0gZnJvbSBhIFZSTS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBnbHRmIEEgcGFyc2VkIHJlc3VsdCBvZiBHTFRGIHRha2VuIGZyb20gR0xURkxvYWRlclxuICAgICAqIEBwYXJhbSBodW1hbm9pZCBBIHtAbGluayBWUk1IdW1hbm9pZH0gaW5zdGFuY2UgdGhhdCByZXByZXNlbnRzIHRoZSBWUk1cbiAgICAgKiBAcGFyYW0gZXhwcmVzc2lvbnMgQSB7QGxpbmsgVlJNRXhwcmVzc2lvbk1hbmFnZXJ9IGluc3RhbmNlIHRoYXQgcmVwcmVzZW50cyB0aGUgVlJNXG4gICAgICovXG4gICAgX2ltcG9ydChnbHRmLCBodW1hbm9pZCwgZXhwcmVzc2lvbnMpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmIChodW1hbm9pZCA9PSBudWxsIHx8IGV4cHJlc3Npb25zID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHYxUmVzdWx0ID0geWllbGQgdGhpcy5fdjFJbXBvcnQoZ2x0ZiwgaHVtYW5vaWQsIGV4cHJlc3Npb25zKTtcbiAgICAgICAgICAgIGlmICh2MVJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2MVJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHYwUmVzdWx0ID0geWllbGQgdGhpcy5fdjBJbXBvcnQoZ2x0ZiwgaHVtYW5vaWQsIGV4cHJlc3Npb25zKTtcbiAgICAgICAgICAgIGlmICh2MFJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2MFJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX3YxSW1wb3J0KGdsdGYsIGh1bWFub2lkLCBleHByZXNzaW9ucykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnBhcnNlci5qc29uO1xuICAgICAgICAgICAgLy8gZWFybHkgYWJvcnQgaWYgaXQgZG9lc24ndCB1c2UgdnJtXG4gICAgICAgICAgICBjb25zdCBpc1ZSTVVzZWQgPSAoKF9hID0ganNvbi5leHRlbnNpb25zVXNlZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmluZGV4T2YoJ1ZSTUNfdnJtJykpICE9PSAtMTtcbiAgICAgICAgICAgIGlmICghaXNWUk1Vc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSAoX2IgPSBqc29uLmV4dGVuc2lvbnMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYlsnVlJNQ192cm0nXTtcbiAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzcGVjVmVyc2lvbiA9IGV4dGVuc2lvbi5zcGVjVmVyc2lvbjtcbiAgICAgICAgICAgIGlmICghUE9TU0lCTEVfU1BFQ19WRVJTSU9OUyQxLmhhcyhzcGVjVmVyc2lvbikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFZSTUxvb2tBdExvYWRlclBsdWdpbjogVW5rbm93biBWUk1DX3ZybSBzcGVjVmVyc2lvbiBcIiR7c3BlY1ZlcnNpb259XCJgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYUxvb2tBdCA9IGV4dGVuc2lvbi5sb29rQXQ7XG4gICAgICAgICAgICBpZiAoIXNjaGVtYUxvb2tBdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGVmYXVsdE91dHB1dFNjYWxlID0gc2NoZW1hTG9va0F0LnR5cGUgPT09ICdleHByZXNzaW9uJyA/IDEuMCA6IDEwLjA7XG4gICAgICAgICAgICBjb25zdCBtYXBISSA9IHRoaXMuX3YxSW1wb3J0UmFuZ2VNYXAoc2NoZW1hTG9va0F0LnJhbmdlTWFwSG9yaXpvbnRhbElubmVyLCBkZWZhdWx0T3V0cHV0U2NhbGUpO1xuICAgICAgICAgICAgY29uc3QgbWFwSE8gPSB0aGlzLl92MUltcG9ydFJhbmdlTWFwKHNjaGVtYUxvb2tBdC5yYW5nZU1hcEhvcml6b250YWxPdXRlciwgZGVmYXVsdE91dHB1dFNjYWxlKTtcbiAgICAgICAgICAgIGNvbnN0IG1hcFZEID0gdGhpcy5fdjFJbXBvcnRSYW5nZU1hcChzY2hlbWFMb29rQXQucmFuZ2VNYXBWZXJ0aWNhbERvd24sIGRlZmF1bHRPdXRwdXRTY2FsZSk7XG4gICAgICAgICAgICBjb25zdCBtYXBWVSA9IHRoaXMuX3YxSW1wb3J0UmFuZ2VNYXAoc2NoZW1hTG9va0F0LnJhbmdlTWFwVmVydGljYWxVcCwgZGVmYXVsdE91dHB1dFNjYWxlKTtcbiAgICAgICAgICAgIGxldCBhcHBsaWVyO1xuICAgICAgICAgICAgaWYgKHNjaGVtYUxvb2tBdC50eXBlID09PSAnZXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgICAgICBhcHBsaWVyID0gbmV3IFZSTUxvb2tBdEV4cHJlc3Npb25BcHBsaWVyKGV4cHJlc3Npb25zLCBtYXBISSwgbWFwSE8sIG1hcFZELCBtYXBWVSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcHBsaWVyID0gbmV3IFZSTUxvb2tBdEJvbmVBcHBsaWVyKGh1bWFub2lkLCBtYXBISSwgbWFwSE8sIG1hcFZELCBtYXBWVSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsb29rQXQgPSB0aGlzLl9pbXBvcnRMb29rQXQoaHVtYW5vaWQsIGFwcGxpZXIpO1xuICAgICAgICAgICAgbG9va0F0Lm9mZnNldEZyb21IZWFkQm9uZS5mcm9tQXJyYXkoKF9jID0gc2NoZW1hTG9va0F0Lm9mZnNldEZyb21IZWFkQm9uZSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogWzAuMCwgMC4wNiwgMC4wXSk7XG4gICAgICAgICAgICByZXR1cm4gbG9va0F0O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX3YxSW1wb3J0UmFuZ2VNYXAoc2NoZW1hUmFuZ2VNYXAsIGRlZmF1bHRPdXRwdXRTY2FsZSkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBsZXQgaW5wdXRNYXhWYWx1ZSA9IChfYSA9IHNjaGVtYVJhbmdlTWFwID09PSBudWxsIHx8IHNjaGVtYVJhbmdlTWFwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzY2hlbWFSYW5nZU1hcC5pbnB1dE1heFZhbHVlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiA5MC4wO1xuICAgICAgICBjb25zdCBvdXRwdXRTY2FsZSA9IChfYiA9IHNjaGVtYVJhbmdlTWFwID09PSBudWxsIHx8IHNjaGVtYVJhbmdlTWFwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzY2hlbWFSYW5nZU1hcC5vdXRwdXRTY2FsZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogZGVmYXVsdE91dHB1dFNjYWxlO1xuICAgICAgICAvLyBJdCBtaWdodCBjYXVzZSBOYU4gd2hlbiBgaW5wdXRNYXhWYWx1ZWAgaXMgdG9vIHNtYWxsXG4gICAgICAgIC8vIHdoaWNoIG1ha2VzIHRoZSBtZXNoIG9mIHRoZSBoZWFkIGRpc2FwcGVhclxuICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9waXhpdi90aHJlZS12cm0vaXNzdWVzLzEyMDFcbiAgICAgICAgaWYgKGlucHV0TWF4VmFsdWUgPCBJTlBVVF9NQVhfVkFMVUVfTUlOSU1VTSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdWUk1Mb29rQXRMb2FkZXJQbHVnaW46IGlucHV0TWF4VmFsdWUgb2YgYSByYW5nZSBtYXAgaXMgdG9vIHNtYWxsLiBDb25zaWRlciByZXZpZXdpbmcgdGhlIHJhbmdlIG1hcCEnKTtcbiAgICAgICAgICAgIGlucHV0TWF4VmFsdWUgPSBJTlBVVF9NQVhfVkFMVUVfTUlOSU1VTTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFZSTUxvb2tBdFJhbmdlTWFwKGlucHV0TWF4VmFsdWUsIG91dHB1dFNjYWxlKTtcbiAgICB9XG4gICAgX3YwSW1wb3J0KGdsdGYsIGh1bWFub2lkLCBleHByZXNzaW9ucykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBqc29uID0gdGhpcy5wYXJzZXIuanNvbjtcbiAgICAgICAgICAgIC8vIGVhcmx5IGFib3J0IGlmIGl0IGRvZXNuJ3QgdXNlIHZybVxuICAgICAgICAgICAgY29uc3QgdnJtRXh0ID0gKF9hID0ganNvbi5leHRlbnNpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuVlJNO1xuICAgICAgICAgICAgaWYgKCF2cm1FeHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYUZpcnN0UGVyc29uID0gdnJtRXh0LmZpcnN0UGVyc29uO1xuICAgICAgICAgICAgaWYgKCFzY2hlbWFGaXJzdFBlcnNvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGVmYXVsdE91dHB1dFNjYWxlID0gc2NoZW1hRmlyc3RQZXJzb24ubG9va0F0VHlwZU5hbWUgPT09ICdCbGVuZFNoYXBlJyA/IDEuMCA6IDEwLjA7XG4gICAgICAgICAgICBjb25zdCBtYXBISSA9IHRoaXMuX3YwSW1wb3J0RGVncmVlTWFwKHNjaGVtYUZpcnN0UGVyc29uLmxvb2tBdEhvcml6b250YWxJbm5lciwgZGVmYXVsdE91dHB1dFNjYWxlKTtcbiAgICAgICAgICAgIGNvbnN0IG1hcEhPID0gdGhpcy5fdjBJbXBvcnREZWdyZWVNYXAoc2NoZW1hRmlyc3RQZXJzb24ubG9va0F0SG9yaXpvbnRhbE91dGVyLCBkZWZhdWx0T3V0cHV0U2NhbGUpO1xuICAgICAgICAgICAgY29uc3QgbWFwVkQgPSB0aGlzLl92MEltcG9ydERlZ3JlZU1hcChzY2hlbWFGaXJzdFBlcnNvbi5sb29rQXRWZXJ0aWNhbERvd24sIGRlZmF1bHRPdXRwdXRTY2FsZSk7XG4gICAgICAgICAgICBjb25zdCBtYXBWVSA9IHRoaXMuX3YwSW1wb3J0RGVncmVlTWFwKHNjaGVtYUZpcnN0UGVyc29uLmxvb2tBdFZlcnRpY2FsVXAsIGRlZmF1bHRPdXRwdXRTY2FsZSk7XG4gICAgICAgICAgICBsZXQgYXBwbGllcjtcbiAgICAgICAgICAgIGlmIChzY2hlbWFGaXJzdFBlcnNvbi5sb29rQXRUeXBlTmFtZSA9PT0gJ0JsZW5kU2hhcGUnKSB7XG4gICAgICAgICAgICAgICAgYXBwbGllciA9IG5ldyBWUk1Mb29rQXRFeHByZXNzaW9uQXBwbGllcihleHByZXNzaW9ucywgbWFwSEksIG1hcEhPLCBtYXBWRCwgbWFwVlUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYXBwbGllciA9IG5ldyBWUk1Mb29rQXRCb25lQXBwbGllcihodW1hbm9pZCwgbWFwSEksIG1hcEhPLCBtYXBWRCwgbWFwVlUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbG9va0F0ID0gdGhpcy5faW1wb3J0TG9va0F0KGh1bWFub2lkLCBhcHBsaWVyKTtcbiAgICAgICAgICAgIGlmIChzY2hlbWFGaXJzdFBlcnNvbi5maXJzdFBlcnNvbkJvbmVPZmZzZXQpIHtcbiAgICAgICAgICAgICAgICBsb29rQXQub2Zmc2V0RnJvbUhlYWRCb25lLnNldCgoX2IgPSBzY2hlbWFGaXJzdFBlcnNvbi5maXJzdFBlcnNvbkJvbmVPZmZzZXQueCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMC4wLCAoX2MgPSBzY2hlbWFGaXJzdFBlcnNvbi5maXJzdFBlcnNvbkJvbmVPZmZzZXQueSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMC4wNiwgLSgoX2QgPSBzY2hlbWFGaXJzdFBlcnNvbi5maXJzdFBlcnNvbkJvbmVPZmZzZXQueikgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMC4wKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsb29rQXQub2Zmc2V0RnJvbUhlYWRCb25lLnNldCgwLjAsIDAuMDYsIDAuMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBWUk0gMC4wIGFyZSBmYWNpbmcgWi0gaW5zdGVhZCBvZiBaK1xuICAgICAgICAgICAgbG9va0F0LmZhY2VGcm9udC5zZXQoMC4wLCAwLjAsIC0xLjApO1xuICAgICAgICAgICAgaWYgKGFwcGxpZXIgaW5zdGFuY2VvZiBWUk1Mb29rQXRCb25lQXBwbGllcikge1xuICAgICAgICAgICAgICAgIGFwcGxpZXIuZmFjZUZyb250LnNldCgwLjAsIDAuMCwgLTEuMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbG9va0F0O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX3YwSW1wb3J0RGVncmVlTWFwKHNjaGVtYURlZ3JlZU1hcCwgZGVmYXVsdE91dHB1dFNjYWxlKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNvbnN0IGN1cnZlID0gc2NoZW1hRGVncmVlTWFwID09PSBudWxsIHx8IHNjaGVtYURlZ3JlZU1hcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2NoZW1hRGVncmVlTWFwLmN1cnZlO1xuICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoY3VydmUpICE9PSAnWzAsMCwwLDEsMSwxLDEsMF0nKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0N1cnZlcyBvZiBMb29rQXREZWdyZWVNYXAgZGVmaW5lZCBpbiBWUk0gMC4wIGFyZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHhSYW5nZSA9IChfYSA9IHNjaGVtYURlZ3JlZU1hcCA9PT0gbnVsbCB8fCBzY2hlbWFEZWdyZWVNYXAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjaGVtYURlZ3JlZU1hcC54UmFuZ2UpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDkwLjA7XG4gICAgICAgIGNvbnN0IHlSYW5nZSA9IChfYiA9IHNjaGVtYURlZ3JlZU1hcCA9PT0gbnVsbCB8fCBzY2hlbWFEZWdyZWVNYXAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjaGVtYURlZ3JlZU1hcC55UmFuZ2UpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGRlZmF1bHRPdXRwdXRTY2FsZTtcbiAgICAgICAgLy8gSXQgbWlnaHQgY2F1c2UgTmFOIHdoZW4gYHhSYW5nZWAgaXMgdG9vIHNtYWxsXG4gICAgICAgIC8vIHdoaWNoIG1ha2VzIHRoZSBtZXNoIG9mIHRoZSBoZWFkIGRpc2FwcGVhclxuICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9waXhpdi90aHJlZS12cm0vaXNzdWVzLzEyMDFcbiAgICAgICAgaWYgKHhSYW5nZSA8IElOUFVUX01BWF9WQUxVRV9NSU5JTVVNKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTUxvb2tBdExvYWRlclBsdWdpbjogeFJhbmdlIG9mIGEgZGVncmVlIG1hcCBpcyB0b28gc21hbGwuIENvbnNpZGVyIHJldmlld2luZyB0aGUgZGVncmVlIG1hcCEnKTtcbiAgICAgICAgICAgIHhSYW5nZSA9IElOUFVUX01BWF9WQUxVRV9NSU5JTVVNO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgVlJNTG9va0F0UmFuZ2VNYXAoeFJhbmdlLCB5UmFuZ2UpO1xuICAgIH1cbiAgICBfaW1wb3J0TG9va0F0KGh1bWFub2lkLCBhcHBsaWVyKSB7XG4gICAgICAgIGNvbnN0IGxvb2tBdCA9IG5ldyBWUk1Mb29rQXQoaHVtYW5vaWQsIGFwcGxpZXIpO1xuICAgICAgICBpZiAodGhpcy5oZWxwZXJSb290KSB7XG4gICAgICAgICAgICBjb25zdCBoZWxwZXIgPSBuZXcgVlJNTG9va0F0SGVscGVyKGxvb2tBdCk7XG4gICAgICAgICAgICB0aGlzLmhlbHBlclJvb3QuYWRkKGhlbHBlcik7XG4gICAgICAgICAgICBoZWxwZXIucmVuZGVyT3JkZXIgPSB0aGlzLmhlbHBlclJvb3QucmVuZGVyT3JkZXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvb2tBdDtcbiAgICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuLyoqXG4gKiBSZXByZXNlbnRzIGEgdHlwZSBvZiBhcHBsaWVyLlxuICovXG5jb25zdCBWUk1Mb29rQXRUeXBlTmFtZSA9IHtcbiAgICBCb25lOiAnYm9uZScsXG4gICAgRXhwcmVzc2lvbjogJ2V4cHJlc3Npb24nLFxufTtcblxuLyoqXG4gKiBZb2lua2VkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21yZG9vYi90aHJlZS5qcy9ibG9iL21hc3Rlci9leGFtcGxlcy9qc20vbG9hZGVycy9HTFRGTG9hZGVyLmpzXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVVUkwodXJsLCBwYXRoKSB7XG4gICAgLy8gSW52YWxpZCBVUkxcbiAgICBpZiAodHlwZW9mIHVybCAhPT0gJ3N0cmluZycgfHwgdXJsID09PSAnJylcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIC8vIEhvc3QgUmVsYXRpdmUgVVJMXG4gICAgaWYgKC9eaHR0cHM/OlxcL1xcLy9pLnRlc3QocGF0aCkgJiYgL15cXC8vLnRlc3QodXJsKSkge1xuICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKC8oXmh0dHBzPzpcXC9cXC9bXi9dKykuKi9pLCAnJDEnKTtcbiAgICB9XG4gICAgLy8gQWJzb2x1dGUgVVJMIGh0dHA6Ly8saHR0cHM6Ly8sLy9cbiAgICBpZiAoL14oaHR0cHM/Oik/XFwvXFwvL2kudGVzdCh1cmwpKVxuICAgICAgICByZXR1cm4gdXJsO1xuICAgIC8vIERhdGEgVVJJXG4gICAgaWYgKC9eZGF0YTouKiwuKiQvaS50ZXN0KHVybCkpXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgLy8gQmxvYiBVUkxcbiAgICBpZiAoL15ibG9iOi4qJC9pLnRlc3QodXJsKSlcbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICAvLyBSZWxhdGl2ZSBVUkxcbiAgICByZXR1cm4gcGF0aCArIHVybDtcbn1cblxuLyoqXG4gKiBQb3NzaWJsZSBzcGVjIHZlcnNpb25zIGl0IHJlY29nbml6ZXMuXG4gKi9cbmNvbnN0IFBPU1NJQkxFX1NQRUNfVkVSU0lPTlMgPSBuZXcgU2V0KFsnMS4wJywgJzEuMC1iZXRhJ10pO1xuLyoqXG4gKiBBIHBsdWdpbiBvZiBHTFRGTG9hZGVyIHRoYXQgaW1wb3J0cyBhIHtAbGluayBWUk0xTWV0YX0gZnJvbSBhIFZSTSBleHRlbnNpb24gb2YgYSBHTFRGLlxuICovXG5jbGFzcyBWUk1NZXRhTG9hZGVyUGx1Z2luIHtcbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgICAgLy8gV2Ugc2hvdWxkIHVzZSB0aGUgZXh0ZW5zaW9uIG5hbWUgaW5zdGVhZCBidXQgd2UgaGF2ZSBtdWx0aXBsZSBwbHVnaW5zIGZvciBhbiBleHRlbnNpb24uLi5cbiAgICAgICAgcmV0dXJuICdWUk1NZXRhTG9hZGVyUGx1Z2luJztcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGFyc2VyLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICAgICAgdGhpcy5uZWVkVGh1bWJuYWlsSW1hZ2UgPSAoX2EgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubmVlZFRodW1ibmFpbEltYWdlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0cnVlO1xuICAgICAgICB0aGlzLmFjY2VwdExpY2Vuc2VVcmxzID0gKF9iID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFjY2VwdExpY2Vuc2VVcmxzKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBbJ2h0dHBzOi8vdnJtLmRldi9saWNlbnNlcy8xLjAvJ107XG4gICAgICAgIHRoaXMuYWNjZXB0VjBNZXRhID0gKF9jID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFjY2VwdFYwTWV0YSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogdHJ1ZTtcbiAgICB9XG4gICAgYWZ0ZXJSb290KGdsdGYpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGdsdGYudXNlckRhdGEudnJtTWV0YSA9IHlpZWxkIHRoaXMuX2ltcG9ydChnbHRmKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9pbXBvcnQoZ2x0Zikge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgdjFSZXN1bHQgPSB5aWVsZCB0aGlzLl92MUltcG9ydChnbHRmKTtcbiAgICAgICAgICAgIGlmICh2MVJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHYxUmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdjBSZXN1bHQgPSB5aWVsZCB0aGlzLl92MEltcG9ydChnbHRmKTtcbiAgICAgICAgICAgIGlmICh2MFJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHYwUmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfdjFJbXBvcnQoZ2x0Zikge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnBhcnNlci5qc29uO1xuICAgICAgICAgICAgLy8gZWFybHkgYWJvcnQgaWYgaXQgZG9lc24ndCB1c2UgdnJtXG4gICAgICAgICAgICBjb25zdCBpc1ZSTVVzZWQgPSAoKF9hID0ganNvbi5leHRlbnNpb25zVXNlZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmluZGV4T2YoJ1ZSTUNfdnJtJykpICE9PSAtMTtcbiAgICAgICAgICAgIGlmICghaXNWUk1Vc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSAoX2IgPSBqc29uLmV4dGVuc2lvbnMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYlsnVlJNQ192cm0nXTtcbiAgICAgICAgICAgIGlmIChleHRlbnNpb24gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc3BlY1ZlcnNpb24gPSBleHRlbnNpb24uc3BlY1ZlcnNpb247XG4gICAgICAgICAgICBpZiAoIVBPU1NJQkxFX1NQRUNfVkVSU0lPTlMuaGFzKHNwZWNWZXJzaW9uKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVlJNTWV0YUxvYWRlclBsdWdpbjogVW5rbm93biBWUk1DX3ZybSBzcGVjVmVyc2lvbiBcIiR7c3BlY1ZlcnNpb259XCJgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYU1ldGEgPSBleHRlbnNpb24ubWV0YTtcbiAgICAgICAgICAgIGlmICghc2NoZW1hTWV0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGhyb3cgYW4gZXJyb3IgaWYgYWNjZXB0VjBNZXRhIGlzIGZhbHNlXG4gICAgICAgICAgICBjb25zdCBsaWNlbnNlVXJsID0gc2NoZW1hTWV0YS5saWNlbnNlVXJsO1xuICAgICAgICAgICAgY29uc3QgYWNjZXB0TGljZW5zZVVybHNTZXQgPSBuZXcgU2V0KHRoaXMuYWNjZXB0TGljZW5zZVVybHMpO1xuICAgICAgICAgICAgaWYgKCFhY2NlcHRMaWNlbnNlVXJsc1NldC5oYXMobGljZW5zZVVybCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFZSTU1ldGFMb2FkZXJQbHVnaW46IFRoZSBsaWNlbnNlIHVybCBcIiR7bGljZW5zZVVybH1cIiBpcyBub3QgYWNjZXB0ZWRgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB0aHVtYm5haWxJbWFnZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmICh0aGlzLm5lZWRUaHVtYm5haWxJbWFnZSAmJiBzY2hlbWFNZXRhLnRodW1ibmFpbEltYWdlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aHVtYm5haWxJbWFnZSA9IChfYyA9ICh5aWVsZCB0aGlzLl9leHRyYWN0R0xURkltYWdlKHNjaGVtYU1ldGEudGh1bWJuYWlsSW1hZ2UpKSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtZXRhVmVyc2lvbjogJzEnLFxuICAgICAgICAgICAgICAgIG5hbWU6IHNjaGVtYU1ldGEubmFtZSxcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiBzY2hlbWFNZXRhLnZlcnNpb24sXG4gICAgICAgICAgICAgICAgYXV0aG9yczogc2NoZW1hTWV0YS5hdXRob3JzLFxuICAgICAgICAgICAgICAgIGNvcHlyaWdodEluZm9ybWF0aW9uOiBzY2hlbWFNZXRhLmNvcHlyaWdodEluZm9ybWF0aW9uLFxuICAgICAgICAgICAgICAgIGNvbnRhY3RJbmZvcm1hdGlvbjogc2NoZW1hTWV0YS5jb250YWN0SW5mb3JtYXRpb24sXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlczogc2NoZW1hTWV0YS5yZWZlcmVuY2VzLFxuICAgICAgICAgICAgICAgIHRoaXJkUGFydHlMaWNlbnNlczogc2NoZW1hTWV0YS50aGlyZFBhcnR5TGljZW5zZXMsXG4gICAgICAgICAgICAgICAgdGh1bWJuYWlsSW1hZ2UsXG4gICAgICAgICAgICAgICAgbGljZW5zZVVybDogc2NoZW1hTWV0YS5saWNlbnNlVXJsLFxuICAgICAgICAgICAgICAgIGF2YXRhclBlcm1pc3Npb246IHNjaGVtYU1ldGEuYXZhdGFyUGVybWlzc2lvbixcbiAgICAgICAgICAgICAgICBhbGxvd0V4Y2Vzc2l2ZWx5VmlvbGVudFVzYWdlOiBzY2hlbWFNZXRhLmFsbG93RXhjZXNzaXZlbHlWaW9sZW50VXNhZ2UsXG4gICAgICAgICAgICAgICAgYWxsb3dFeGNlc3NpdmVseVNleHVhbFVzYWdlOiBzY2hlbWFNZXRhLmFsbG93RXhjZXNzaXZlbHlTZXh1YWxVc2FnZSxcbiAgICAgICAgICAgICAgICBjb21tZXJjaWFsVXNhZ2U6IHNjaGVtYU1ldGEuY29tbWVyY2lhbFVzYWdlLFxuICAgICAgICAgICAgICAgIGFsbG93UG9saXRpY2FsT3JSZWxpZ2lvdXNVc2FnZTogc2NoZW1hTWV0YS5hbGxvd1BvbGl0aWNhbE9yUmVsaWdpb3VzVXNhZ2UsXG4gICAgICAgICAgICAgICAgYWxsb3dBbnRpc29jaWFsT3JIYXRlVXNhZ2U6IHNjaGVtYU1ldGEuYWxsb3dBbnRpc29jaWFsT3JIYXRlVXNhZ2UsXG4gICAgICAgICAgICAgICAgY3JlZGl0Tm90YXRpb246IHNjaGVtYU1ldGEuY3JlZGl0Tm90YXRpb24sXG4gICAgICAgICAgICAgICAgYWxsb3dSZWRpc3RyaWJ1dGlvbjogc2NoZW1hTWV0YS5hbGxvd1JlZGlzdHJpYnV0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGlmaWNhdGlvbjogc2NoZW1hTWV0YS5tb2RpZmljYXRpb24sXG4gICAgICAgICAgICAgICAgb3RoZXJMaWNlbnNlVXJsOiBzY2hlbWFNZXRhLm90aGVyTGljZW5zZVVybCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfdjBJbXBvcnQoZ2x0Zikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBqc29uID0gdGhpcy5wYXJzZXIuanNvbjtcbiAgICAgICAgICAgIC8vIGVhcmx5IGFib3J0IGlmIGl0IGRvZXNuJ3QgdXNlIHZybVxuICAgICAgICAgICAgY29uc3QgdnJtRXh0ID0gKF9hID0ganNvbi5leHRlbnNpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuVlJNO1xuICAgICAgICAgICAgaWYgKCF2cm1FeHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYU1ldGEgPSB2cm1FeHQubWV0YTtcbiAgICAgICAgICAgIGlmICghc2NoZW1hTWV0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGhyb3cgYW4gZXJyb3IgaWYgYWNjZXB0VjBNZXRhIGlzIGZhbHNlXG4gICAgICAgICAgICBpZiAoIXRoaXMuYWNjZXB0VjBNZXRhKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWUk1NZXRhTG9hZGVyUGx1Z2luOiBBdHRlbXB0ZWQgdG8gbG9hZCBWUk0wLjAgbWV0YSBidXQgYWNjZXB0VjBNZXRhIGlzIGZhbHNlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBsb2FkIHRodW1ibmFpbCB0ZXh0dXJlXG4gICAgICAgICAgICBsZXQgdGV4dHVyZTtcbiAgICAgICAgICAgIGlmICh0aGlzLm5lZWRUaHVtYm5haWxJbWFnZSAmJiBzY2hlbWFNZXRhLnRleHR1cmUgIT0gbnVsbCAmJiBzY2hlbWFNZXRhLnRleHR1cmUgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGV4dHVyZSA9IHlpZWxkIHRoaXMucGFyc2VyLmdldERlcGVuZGVuY3koJ3RleHR1cmUnLCBzY2hlbWFNZXRhLnRleHR1cmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtZXRhVmVyc2lvbjogJzAnLFxuICAgICAgICAgICAgICAgIGFsbG93ZWRVc2VyTmFtZTogc2NoZW1hTWV0YS5hbGxvd2VkVXNlck5hbWUsXG4gICAgICAgICAgICAgICAgYXV0aG9yOiBzY2hlbWFNZXRhLmF1dGhvcixcbiAgICAgICAgICAgICAgICBjb21tZXJjaWFsVXNzYWdlTmFtZTogc2NoZW1hTWV0YS5jb21tZXJjaWFsVXNzYWdlTmFtZSxcbiAgICAgICAgICAgICAgICBjb250YWN0SW5mb3JtYXRpb246IHNjaGVtYU1ldGEuY29udGFjdEluZm9ybWF0aW9uLFxuICAgICAgICAgICAgICAgIGxpY2Vuc2VOYW1lOiBzY2hlbWFNZXRhLmxpY2Vuc2VOYW1lLFxuICAgICAgICAgICAgICAgIG90aGVyTGljZW5zZVVybDogc2NoZW1hTWV0YS5vdGhlckxpY2Vuc2VVcmwsXG4gICAgICAgICAgICAgICAgb3RoZXJQZXJtaXNzaW9uVXJsOiBzY2hlbWFNZXRhLm90aGVyUGVybWlzc2lvblVybCxcbiAgICAgICAgICAgICAgICByZWZlcmVuY2U6IHNjaGVtYU1ldGEucmVmZXJlbmNlLFxuICAgICAgICAgICAgICAgIHNleHVhbFVzc2FnZU5hbWU6IHNjaGVtYU1ldGEuc2V4dWFsVXNzYWdlTmFtZSxcbiAgICAgICAgICAgICAgICB0ZXh0dXJlOiB0ZXh0dXJlICE9PSBudWxsICYmIHRleHR1cmUgIT09IHZvaWQgMCA/IHRleHR1cmUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHNjaGVtYU1ldGEudGl0bGUsXG4gICAgICAgICAgICAgICAgdmVyc2lvbjogc2NoZW1hTWV0YS52ZXJzaW9uLFxuICAgICAgICAgICAgICAgIHZpb2xlbnRVc3NhZ2VOYW1lOiBzY2hlbWFNZXRhLnZpb2xlbnRVc3NhZ2VOYW1lLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9leHRyYWN0R0xURkltYWdlKGluZGV4KSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnBhcnNlci5qc29uO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gKF9hID0ganNvbi5pbWFnZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVtpbmRleF07XG4gICAgICAgICAgICBpZiAoc291cmNlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFZSTU1ldGFMb2FkZXJQbHVnaW46IEF0dGVtcHQgdG8gdXNlIGltYWdlc1ske2luZGV4fV0gb2YgZ2xURiBhcyBhIHRodW1ibmFpbCBidXQgdGhlIGltYWdlIGRvZXNuJ3QgZXhpc3RgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJlZjogaHR0cHM6Ly9naXRodWIuY29tL21yZG9vYi90aHJlZS5qcy9ibG9iL3IxMjQvZXhhbXBsZXMvanNtL2xvYWRlcnMvR0xURkxvYWRlci5qcyNMMjQ2N1xuICAgICAgICAgICAgLy8gYHNvdXJjZS51cmlgIG1pZ2h0IGJlIGEgcmVmZXJlbmNlIHRvIGEgZmlsZVxuICAgICAgICAgICAgbGV0IHNvdXJjZVVSSSA9IHNvdXJjZS51cmk7XG4gICAgICAgICAgICAvLyBMb2FkIHRoZSBiaW5hcnkgYXMgYSBibG9iXG4gICAgICAgICAgICBpZiAoc291cmNlLmJ1ZmZlclZpZXcgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZlclZpZXcgPSB5aWVsZCB0aGlzLnBhcnNlci5nZXREZXBlbmRlbmN5KCdidWZmZXJWaWV3Jywgc291cmNlLmJ1ZmZlclZpZXcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyVmlld10sIHsgdHlwZTogc291cmNlLm1pbWVUeXBlIH0pO1xuICAgICAgICAgICAgICAgIHNvdXJjZVVSSSA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc291cmNlVVJJID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFZSTU1ldGFMb2FkZXJQbHVnaW46IEF0dGVtcHQgdG8gdXNlIGltYWdlc1ske2luZGV4fV0gb2YgZ2xURiBhcyBhIHRodW1ibmFpbCBidXQgdGhlIGltYWdlIGNvdWxkbid0IGxvYWQgcHJvcGVybHlgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxvYWRlciA9IG5ldyBUSFJFRS5JbWFnZUxvYWRlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHlpZWxkIGxvYWRlci5sb2FkQXN5bmMocmVzb2x2ZVVSTChzb3VyY2VVUkksIHRoaXMucGFyc2VyLm9wdGlvbnMucGF0aCkpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignVlJNTWV0YUxvYWRlclBsdWdpbjogRmFpbGVkIHRvIGxvYWQgYSB0aHVtYm5haWwgaW1hZ2UnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKlxuICogQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgYSBzaW5nbGUgVlJNIG1vZGVsLlxuICogVGhpcyBjbGFzcyBvbmx5IGluY2x1ZGVzIGNvcmUgc3BlYyBvZiB0aGUgVlJNIChgVlJNQ192cm1gKS5cbiAqL1xuY2xhc3MgVlJNQ29yZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbmV3IFZSTSBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJhbXMgW1tWUk1QYXJhbWV0ZXJzXV0gdGhhdCByZXByZXNlbnRzIGNvbXBvbmVudHMgb2YgdGhlIFZSTVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHBhcmFtcykge1xuICAgICAgICB0aGlzLnNjZW5lID0gcGFyYW1zLnNjZW5lO1xuICAgICAgICB0aGlzLm1ldGEgPSBwYXJhbXMubWV0YTtcbiAgICAgICAgdGhpcy5odW1hbm9pZCA9IHBhcmFtcy5odW1hbm9pZDtcbiAgICAgICAgdGhpcy5leHByZXNzaW9uTWFuYWdlciA9IHBhcmFtcy5leHByZXNzaW9uTWFuYWdlcjtcbiAgICAgICAgdGhpcy5maXJzdFBlcnNvbiA9IHBhcmFtcy5maXJzdFBlcnNvbjtcbiAgICAgICAgdGhpcy5sb29rQXQgPSBwYXJhbXMubG9va0F0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiAqKllvdSBuZWVkIHRvIGNhbGwgdGhpcyBvbiB5b3VyIHVwZGF0ZSBsb29wLioqXG4gICAgICpcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHVwZGF0ZXMgZXZlcnkgVlJNIGNvbXBvbmVudHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGVsdGEgZGVsdGFUaW1lXG4gICAgICovXG4gICAgdXBkYXRlKGRlbHRhKSB7XG4gICAgICAgIHRoaXMuaHVtYW5vaWQudXBkYXRlKCk7XG4gICAgICAgIGlmICh0aGlzLmxvb2tBdCkge1xuICAgICAgICAgICAgdGhpcy5sb29rQXQudXBkYXRlKGRlbHRhKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5leHByZXNzaW9uTWFuYWdlcikge1xuICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uTWFuYWdlci51cGRhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY2xhc3MgVlJNQ29yZUxvYWRlclBsdWdpbiB7XG4gICAgZ2V0IG5hbWUoKSB7XG4gICAgICAgIC8vIFdlIHNob3VsZCB1c2UgdGhlIGV4dGVuc2lvbiBuYW1lIGluc3RlYWQgYnV0IHdlIGhhdmUgbXVsdGlwbGUgcGx1Z2lucyBmb3IgYW4gZXh0ZW5zaW9uLi4uXG4gICAgICAgIHJldHVybiAnVlJNQ192cm0nO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihwYXJzZXIsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG4gICAgICAgIGNvbnN0IGhlbHBlclJvb3QgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuaGVscGVyUm9vdDtcbiAgICAgICAgY29uc3QgYXV0b1VwZGF0ZUh1bWFuQm9uZXMgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYXV0b1VwZGF0ZUh1bWFuQm9uZXM7XG4gICAgICAgIHRoaXMuZXhwcmVzc2lvblBsdWdpbiA9IChfYSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5leHByZXNzaW9uUGx1Z2luKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBuZXcgVlJNRXhwcmVzc2lvbkxvYWRlclBsdWdpbihwYXJzZXIpO1xuICAgICAgICB0aGlzLmZpcnN0UGVyc29uUGx1Z2luID0gKF9iID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZpcnN0UGVyc29uUGx1Z2luKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBuZXcgVlJNRmlyc3RQZXJzb25Mb2FkZXJQbHVnaW4ocGFyc2VyKTtcbiAgICAgICAgdGhpcy5odW1hbm9pZFBsdWdpbiA9XG4gICAgICAgICAgICAoX2MgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuaHVtYW5vaWRQbHVnaW4pICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IG5ldyBWUk1IdW1hbm9pZExvYWRlclBsdWdpbihwYXJzZXIsIHsgaGVscGVyUm9vdCwgYXV0b1VwZGF0ZUh1bWFuQm9uZXMgfSk7XG4gICAgICAgIHRoaXMubG9va0F0UGx1Z2luID0gKF9kID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmxvb2tBdFBsdWdpbikgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogbmV3IFZSTUxvb2tBdExvYWRlclBsdWdpbihwYXJzZXIsIHsgaGVscGVyUm9vdCB9KTtcbiAgICAgICAgdGhpcy5tZXRhUGx1Z2luID0gKF9lID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLm1ldGFQbHVnaW4pICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6IG5ldyBWUk1NZXRhTG9hZGVyUGx1Z2luKHBhcnNlcik7XG4gICAgfVxuICAgIGFmdGVyUm9vdChnbHRmKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLm1ldGFQbHVnaW4uYWZ0ZXJSb290KGdsdGYpO1xuICAgICAgICAgICAgeWllbGQgdGhpcy5odW1hbm9pZFBsdWdpbi5hZnRlclJvb3QoZ2x0Zik7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmV4cHJlc3Npb25QbHVnaW4uYWZ0ZXJSb290KGdsdGYpO1xuICAgICAgICAgICAgeWllbGQgdGhpcy5sb29rQXRQbHVnaW4uYWZ0ZXJSb290KGdsdGYpO1xuICAgICAgICAgICAgeWllbGQgdGhpcy5maXJzdFBlcnNvblBsdWdpbi5hZnRlclJvb3QoZ2x0Zik7XG4gICAgICAgICAgICBjb25zdCBtZXRhID0gZ2x0Zi51c2VyRGF0YS52cm1NZXRhO1xuICAgICAgICAgICAgY29uc3QgaHVtYW5vaWQgPSBnbHRmLnVzZXJEYXRhLnZybUh1bWFub2lkO1xuICAgICAgICAgICAgLy8gbWV0YSBhbmQgaHVtYW5vaWQgYXJlIHJlcXVpcmVkIHRvIGJlIGEgVlJNLlxuICAgICAgICAgICAgLy8gRG9uJ3QgY3JlYXRlIFZSTSBpZiB0aGV5IGFyZSBudWxsXG4gICAgICAgICAgICBpZiAobWV0YSAmJiBodW1hbm9pZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZybUNvcmUgPSBuZXcgVlJNQ29yZSh7XG4gICAgICAgICAgICAgICAgICAgIHNjZW5lOiBnbHRmLnNjZW5lLFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uTWFuYWdlcjogZ2x0Zi51c2VyRGF0YS52cm1FeHByZXNzaW9uTWFuYWdlcixcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RQZXJzb246IGdsdGYudXNlckRhdGEudnJtRmlyc3RQZXJzb24sXG4gICAgICAgICAgICAgICAgICAgIGh1bWFub2lkLFxuICAgICAgICAgICAgICAgICAgICBsb29rQXQ6IGdsdGYudXNlckRhdGEudnJtTG9va0F0LFxuICAgICAgICAgICAgICAgICAgICBtZXRhLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGdsdGYudXNlckRhdGEudnJtQ29yZSA9IHZybUNvcmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IHsgVlJNQ29yZSwgVlJNQ29yZUxvYWRlclBsdWdpbiwgVlJNRXhwcmVzc2lvbiwgVlJNRXhwcmVzc2lvbkxvYWRlclBsdWdpbiwgVlJNRXhwcmVzc2lvbk1hbmFnZXIsIFZSTUV4cHJlc3Npb25NYXRlcmlhbENvbG9yQmluZCwgVlJNRXhwcmVzc2lvbk1hdGVyaWFsQ29sb3JUeXBlLCBWUk1FeHByZXNzaW9uTW9ycGhUYXJnZXRCaW5kLCBWUk1FeHByZXNzaW9uT3ZlcnJpZGVUeXBlLCBWUk1FeHByZXNzaW9uUHJlc2V0TmFtZSwgVlJNRXhwcmVzc2lvblRleHR1cmVUcmFuc2Zvcm1CaW5kLCBWUk1GaXJzdFBlcnNvbiwgVlJNRmlyc3RQZXJzb25Mb2FkZXJQbHVnaW4sIFZSTUZpcnN0UGVyc29uTWVzaEFubm90YXRpb25UeXBlLCBWUk1IdW1hbkJvbmVMaXN0LCBWUk1IdW1hbkJvbmVOYW1lLCBWUk1IdW1hbkJvbmVQYXJlbnRNYXAsIFZSTUh1bWFub2lkLCBWUk1IdW1hbm9pZEhlbHBlciwgVlJNSHVtYW5vaWRMb2FkZXJQbHVnaW4sIFZSTUxvb2tBdCwgVlJNTG9va0F0Qm9uZUFwcGxpZXIsIFZSTUxvb2tBdEV4cHJlc3Npb25BcHBsaWVyLCBWUk1Mb29rQXRIZWxwZXIsIFZSTUxvb2tBdExvYWRlclBsdWdpbiwgVlJNTG9va0F0UmFuZ2VNYXAsIFZSTUxvb2tBdFR5cGVOYW1lLCBWUk1NZXRhTG9hZGVyUGx1Z2luLCBWUk1SZXF1aXJlZEh1bWFuQm9uZU5hbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEdoeVpXVXRkbkp0TFdOdmNtVXViVzlrZFd4bExtcHpJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOXpjbU12Wlhod2NtVnpjMmx2Ym5NdlZsSk5SWGh3Y21WemMybHZiaTUwY3lJc0lpNHVMeTR1THk0dUwyNXZaR1ZmYlc5a2RXeGxjeTkwYzJ4cFlpOTBjMnhwWWk1bGN6WXVhbk1pTENJdUxpOXpjbU12ZFhScGJITXZaMngwWmtWNGRISmhZM1JRY21sdGFYUnBkbVZ6Um5KdmJVNXZaR1V1ZEhNaUxDSXVMaTl6Y21NdmRYUnBiSE12WjJ4MFprZGxkRUZ6YzI5amFXRjBaV1JOWVhSbGNtbGhiRWx1WkdWNExuUnpJaXdpTGk0dmMzSmpMMlY0Y0hKbGMzTnBiMjV6TDFaU1RVVjRjSEpsYzNOcGIyNVFjbVZ6WlhST1lXMWxMblJ6SWl3aUxpNHZjM0pqTDNWMGFXeHpMM05oZEhWeVlYUmxMblJ6SWl3aUxpNHZjM0pqTDJWNGNISmxjM05wYjI1ekwxWlNUVVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlMblJ6SWl3aUxpNHZjM0pqTDJWNGNISmxjM05wYjI1ekwxWlNUVVY0Y0hKbGMzTnBiMjVOWVhSbGNtbGhiRU52Ykc5eVZIbHdaUzUwY3lJc0lpNHVMM055WXk5bGVIQnlaWE56YVc5dWN5OVdVazFGZUhCeVpYTnphVzl1VFdGMFpYSnBZV3hEYjJ4dmNrSnBibVF1ZEhNaUxDSXVMaTl6Y21NdlpYaHdjbVZ6YzJsdmJuTXZWbEpOUlhod2NtVnpjMmx2YmsxdmNuQm9WR0Z5WjJWMFFtbHVaQzUwY3lJc0lpNHVMM055WXk5bGVIQnlaWE56YVc5dWN5OVdVazFGZUhCeVpYTnphVzl1VkdWNGRIVnlaVlJ5WVc1elptOXliVUpwYm1RdWRITWlMQ0l1TGk5emNtTXZaWGh3Y21WemMybHZibk12VmxKTlJYaHdjbVZ6YzJsdmJreHZZV1JsY2xCc2RXZHBiaTUwY3lJc0lpNHVMM055WXk5bGVIQnlaWE56YVc5dWN5OVdVazFGZUhCeVpYTnphVzl1VDNabGNuSnBaR1ZVZVhCbExuUnpJaXdpTGk0dmMzSmpMMlpwY25OMFVHVnljMjl1TDFaU1RVWnBjbk4wVUdWeWMyOXVMblJ6SWl3aUxpNHZjM0pqTDJacGNuTjBVR1Z5YzI5dUwxWlNUVVpwY25OMFVHVnljMjl1VEc5aFpHVnlVR3gxWjJsdUxuUnpJaXdpTGk0dmMzSmpMMlpwY25OMFVHVnljMjl1TDFaU1RVWnBjbk4wVUdWeWMyOXVUV1Z6YUVGdWJtOTBZWFJwYjI1VWVYQmxMblJ6SWl3aUxpNHZjM0pqTDJoMWJXRnViMmxrTDJobGJIQmxjbk12VmxKTlNIVnRZVzV2YVdSSVpXeHdaWEl1ZEhNaUxDSXVMaTl6Y21NdmFIVnRZVzV2YVdRdlZsSk5TSFZ0WVc1Q2IyNWxUR2x6ZEM1MGN5SXNJaTR1TDNOeVl5OW9kVzFoYm05cFpDOVdVazFJZFcxaGJrSnZibVZPWVcxbExuUnpJaXdpTGk0dmMzSmpMMmgxYldGdWIybGtMMVpTVFVoMWJXRnVRbTl1WlZCaGNtVnVkRTFoY0M1MGN5SXNJaTR1TDNOeVl5OTFkR2xzY3k5eGRXRjBTVzUyWlhKMFEyOXRjR0YwTG5Seklpd2lMaTR2YzNKakwyaDFiV0Z1YjJsa0wxWlNUVkpwWnk1MGN5SXNJaTR1TDNOeVl5OW9kVzFoYm05cFpDOVdVazFJZFcxaGJtOXBaRkpwWnk1MGN5SXNJaTR1TDNOeVl5OW9kVzFoYm05cFpDOVdVazFJZFcxaGJtOXBaQzUwY3lJc0lpNHVMM055WXk5b2RXMWhibTlwWkM5V1VrMVNaWEYxYVhKbFpFaDFiV0Z1UW05dVpVNWhiV1V1ZEhNaUxDSXVMaTl6Y21NdmFIVnRZVzV2YVdRdlZsSk5TSFZ0WVc1dmFXUk1iMkZrWlhKUWJIVm5hVzR1ZEhNaUxDSXVMaTl6Y21NdmJHOXZhMEYwTDJobGJIQmxjbk12ZFhScGJITXZSbUZ1UW5WbVptVnlSMlZ2YldWMGNua3VkSE1pTENJdUxpOXpjbU12Ykc5dmEwRjBMMmhsYkhCbGNuTXZkWFJwYkhNdlRHbHVaVUZ1WkZOd2FHVnlaVUoxWm1abGNrZGxiMjFsZEhKNUxuUnpJaXdpTGk0dmMzSmpMMnh2YjJ0QmRDOW9aV3h3WlhKekwxWlNUVXh2YjJ0QmRFaGxiSEJsY2k1MGN5SXNJaTR1TDNOeVl5OTFkR2xzY3k5blpYUlhiM0pzWkZGMVlYUmxjbTVwYjI1TWFYUmxMblJ6SWl3aUxpNHZjM0pqTDJ4dmIydEJkQzkxZEdsc2N5OWpZV3hqUVhwcGJYVjBhRUZzZEdsMGRXUmxMblJ6SWl3aUxpNHZjM0pqTDJ4dmIydEJkQzkxZEdsc2N5OXpZVzVwZEdsNlpVRnVaMnhsTG5Seklpd2lMaTR2YzNKakwyeHZiMnRCZEM5V1VrMU1iMjlyUVhRdWRITWlMQ0l1TGk5emNtTXZiRzl2YTBGMEwxWlNUVXh2YjJ0QmRFSnZibVZCY0hCc2FXVnlMblJ6SWl3aUxpNHZjM0pqTDJ4dmIydEJkQzlXVWsxTWIyOXJRWFJGZUhCeVpYTnphVzl1UVhCd2JHbGxjaTUwY3lJc0lpNHVMM055WXk5c2IyOXJRWFF2VmxKTlRHOXZhMEYwVW1GdVoyVk5ZWEF1ZEhNaUxDSXVMaTl6Y21NdmJHOXZhMEYwTDFaU1RVeHZiMnRCZEV4dllXUmxjbEJzZFdkcGJpNTBjeUlzSWk0dUwzTnlZeTlzYjI5clFYUXZWbEpOVEc5dmEwRjBWSGx3WlU1aGJXVXVkSE1pTENJdUxpOXpjbU12ZFhScGJITXZjbVZ6YjJ4MlpWVlNUQzUwY3lJc0lpNHVMM055WXk5dFpYUmhMMVpTVFUxbGRHRk1iMkZrWlhKUWJIVm5hVzR1ZEhNaUxDSXVMaTl6Y21NdlZsSk5RMjl5WlM1MGN5SXNJaTR1TDNOeVl5OVdVazFEYjNKbFRHOWhaR1Z5VUd4MVoybHVMblJ6SWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJRlJJVWtWRklHWnliMjBnSjNSb2NtVmxKenRjYm1sdGNHOXlkQ0I3SUZaU1RVVjRjSEpsYzNOcGIyNUNhVzVrSUgwZ1puSnZiU0FuTGk5V1VrMUZlSEJ5WlhOemFXOXVRbWx1WkNjN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3SUZaU1RVVjRjSEpsYzNOcGIyNVBkbVZ5Y21sa1pWUjVjR1VnZlNCbWNtOXRJQ2N1TDFaU1RVVjRjSEpsYzNOcGIyNVBkbVZ5Y21sa1pWUjVjR1VuTzF4dVhHNHZMeUJoYm1sdFlYUnBiMjVOYVhobGNpRGpnYTdubTZQb3BwYmxyNzdvc2FIamdhL2pnSUZUWTJWdVpTRGpnYTdrdUszamdhdmxoYVhqZ2FQamdhYmpnWVRqZ292bHY0WG9wb0hqZ1l6amdZTGpnb3ZqZ0lKY2JpOHZJT09CbmVPQnJ1T0JuK09DZ2VPQWdlaWhxT2VrdXVPQ3F1T0RsdU9DdU9PQ3ArT0NyK09EaU9PQnArT0JyK09CcXVPQmhPT0JrZU9Dak9PQnFlT0FnVTlpYW1WamRETkVJT09Da3VlMm1lYUp2K09CbCtPQnBpQlRZMlZ1WlNEamdhdm1pcFhsaGFYamdhZmpnWTNqZ292amdvampnWWJqZ2F2amdabmpnb3ZqZ0lKY2JtVjRjRzl5ZENCamJHRnpjeUJXVWsxRmVIQnlaWE56YVc5dUlHVjRkR1Z1WkhNZ1ZFaFNSVVV1VDJKcVpXTjBNMFFnZTF4dUlDQXZLaXBjYmlBZ0lDb2dUbUZ0WlNCdlppQjBhR2x6SUdWNGNISmxjM05wYjI0dVhHNGdJQ0FxSUVScGMzUnBibWQxYVhOb1pXUWdkMmwwYUNCZ2JtRnRaV0FnYzJsdVkyVWdZRzVoYldWZ0lIZHBiR3dnWW1VZ1kyOXVabXhwWTNSbFpDQjNhWFJvSUU5aWFtVmpkRE5FTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdWNGNISmxjM05wYjI1T1lXMWxPaUJ6ZEhKcGJtYzdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aU0JqZFhKeVpXNTBJSGRsYVdkb2RDQnZaaUIwYUdVZ1pYaHdjbVZ6YzJsdmJpNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QjNaV2xuYUhRZ1BTQXdMakE3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWx1ZEdWeWNISmxkQ0IyWVd4MVpYTWdaM0psWVhSbGNpQjBhR0Z1SURBdU5TQmhjeUF4TGpBc0lHOXlkR2hsY25kcGMyVWdNQzR3TGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdselFtbHVZWEo1SUQwZ1ptRnNjMlU3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRk53WldOcFpua2dhRzkzSUhSb1pTQmxlSEJ5WlhOemFXOXVJRzkyWlhKeWFXUmxjeUJpYkdsdWF5QmxlSEJ5WlhOemFXOXVjeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ2ZG1WeWNtbGtaVUpzYVc1ck9pQldVazFGZUhCeVpYTnphVzl1VDNabGNuSnBaR1ZVZVhCbElEMGdKMjV2Ym1Vbk8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCVGNHVmphV1o1SUdodmR5QjBhR1VnWlhod2NtVnpjMmx2YmlCdmRtVnljbWxrWlhNZ2JHOXZhMEYwSUdWNGNISmxjM05wYjI1ekxseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHOTJaWEp5YVdSbFRHOXZhMEYwT2lCV1VrMUZlSEJ5WlhOemFXOXVUM1psY25KcFpHVlVlWEJsSUQwZ0oyNXZibVVuTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJUY0dWamFXWjVJR2h2ZHlCMGFHVWdaWGh3Y21WemMybHZiaUJ2ZG1WeWNtbGtaWE1nYlc5MWRHZ2daWGh3Y21WemMybHZibk11WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nYjNabGNuSnBaR1ZOYjNWMGFEb2dWbEpOUlhod2NtVnpjMmx2Yms5MlpYSnlhV1JsVkhsd1pTQTlJQ2R1YjI1bEp6dGNibHh1SUNCd2NtbDJZWFJsSUY5aWFXNWtjem9nVmxKTlJYaHdjbVZ6YzJsdmJrSnBibVJiWFNBOUlGdGRPMXh1WEc0Z0lHOTJaWEp5YVdSbElISmxZV1J2Ym14NUlIUjVjR1U2SUhOMGNtbHVaeUI4SUNkV1VrMUZlSEJ5WlhOemFXOXVKenRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRU0IyWVd4MVpTQnlaWEJ5WlhObGJuUnpJR2h2ZHlCdGRXTm9JR2wwSUhOb2IzVnNaQ0J2ZG1WeWNtbGtaU0JpYkdsdWF5QmxlSEJ5WlhOemFXOXVjeTVjYmlBZ0lDb2dZREF1TUdBZ1BUMGdibThnYjNabGNuSnBaR1VnWVhRZ1lXeHNMQ0JnTVM0d1lDQTlQU0JqYjIxd2JHVjBaV3g1SUdKc2IyTnJJSFJvWlNCbGVIQnlaWE56YVc5dWN5NWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFFnYjNabGNuSnBaR1ZDYkdsdWEwRnRiM1Z1ZENncE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG05MlpYSnlhV1JsUW14cGJtc2dQVDA5SUNkaWJHOWpheWNwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUF3TGpBZ1BDQjBhR2x6TG5kbGFXZG9kQ0EvSURFdU1DQTZJREF1TUR0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hSb2FYTXViM1psY25KcFpHVkNiR2x1YXlBOVBUMGdKMkpzWlc1a0p5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11ZDJWcFoyaDBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnTUM0d08xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJJSFpoYkhWbElISmxjSEpsYzJWdWRITWdhRzkzSUcxMVkyZ2dhWFFnYzJodmRXeGtJRzkyWlhKeWFXUmxJR3h2YjJ0QmRDQmxlSEJ5WlhOemFXOXVjeTVjYmlBZ0lDb2dZREF1TUdBZ1BUMGdibThnYjNabGNuSnBaR1VnWVhRZ1lXeHNMQ0JnTVM0d1lDQTlQU0JqYjIxd2JHVjBaV3g1SUdKc2IyTnJJSFJvWlNCbGVIQnlaWE56YVc5dWN5NWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFFnYjNabGNuSnBaR1ZNYjI5clFYUkJiVzkxYm5Rb0tUb2diblZ0WW1WeUlIdGNiaUFnSUNCcFppQW9kR2hwY3k1dmRtVnljbWxrWlV4dmIydEJkQ0E5UFQwZ0oySnNiMk5ySnlrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SURBdU1DQThJSFJvYVhNdWQyVnBaMmgwSUQ4Z01TNHdJRG9nTUM0d08xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RHaHBjeTV2ZG1WeWNtbGtaVXh2YjJ0QmRDQTlQVDBnSjJKc1pXNWtKeWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdWQyVnBaMmgwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z01DNHdPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJCSUhaaGJIVmxJSEpsY0hKbGMyVnVkSE1nYUc5M0lHMTFZMmdnYVhRZ2MyaHZkV3hrSUc5MlpYSnlhV1JsSUcxdmRYUm9JR1Y0Y0hKbGMzTnBiMjV6TGx4dUlDQWdLaUJnTUM0d1lDQTlQU0J1YnlCdmRtVnljbWxrWlNCaGRDQmhiR3dzSUdBeExqQmdJRDA5SUdOdmJYQnNaWFJsYkhrZ1lteHZZMnNnZEdobElHVjRjSEpsYzNOcGIyNXpMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZENCdmRtVnljbWxrWlUxdmRYUm9RVzF2ZFc1MEtDazZJRzUxYldKbGNpQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdWIzWmxjbkpwWkdWTmIzVjBhQ0E5UFQwZ0oySnNiMk5ySnlrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SURBdU1DQThJSFJvYVhNdWQyVnBaMmgwSUQ4Z01TNHdJRG9nTUM0d08xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RHaHBjeTV2ZG1WeWNtbGtaVTF2ZFhSb0lEMDlQU0FuWW14bGJtUW5LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1M1pXbG5hSFE3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlBd0xqQTdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvWlhod2NtVnpjMmx2Yms1aGJXVTZJSE4wY21sdVp5a2dlMXh1SUNBZ0lITjFjR1Z5S0NrN1hHNWNiaUFnSUNCMGFHbHpMbTVoYldVZ1BTQmdWbEpOUlhod2NtVnpjMmx2Ymw4a2UyVjRjSEpsYzNOcGIyNU9ZVzFsZldBN1hHNGdJQ0FnZEdocGN5NWxlSEJ5WlhOemFXOXVUbUZ0WlNBOUlHVjRjSEpsYzNOcGIyNU9ZVzFsTzF4dVhHNGdJQ0FnTHk4Z2RISmhkbVZ5YzJVZzVwbUM0NEd1NXBXUjVyaUk1b21MNXE2MTQ0R280NEdYNDRHbUlFOWlhbVZqZERORUlPT0JwK09CcitPQnF1T0JoT09CaytPQnFPT0NrdWFZanVla3V1T0JsK09CcHVPQml1T0JqMXh1SUNBZ0lIUm9hWE11ZEhsd1pTQTlJQ2RXVWsxRmVIQnlaWE56YVc5dUp6dGNibHh1SUNBZ0lDOHZJT2locU9la3V1ZWJydWVhaE9PQnJ1T0NxdU9EbHVPQ3VPT0NwK09DcitPRGlPT0JwK09CcitPQnF1T0JoT09CcnVPQnArT0FnZWl5b09pTnQraTd2ZWE0bStPQnJ1T0JuK09DZ2VPQnF5QjJhWE5wWW14bElPT0NraUJtWVd4elpTRGpnYXZqZ1pmamdhYmpnWXJqZ1kvamdJSmNiaUFnSUNBdkx5RGpnWlBqZ296amdhdmpnb2pqZ29yamdJSGpnWlBqZ2E3amdxVGpnN1BqZ3JuamdyL2pnN1BqZ3JuamdhdmxyNzdqZ1puamdvdm1yNDdqZzVYamc2empnN3pqZzZEamdhNGdiV0YwY21sNElPaUhxdVdMbGVpb2lPZXVsK09Da3VlY2dlZVZwZU9CcCtPQmplT0NpK09BZ2x4dUlDQWdJSFJvYVhNdWRtbHphV0pzWlNBOUlHWmhiSE5sTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdGa1pFSnBibVFvWW1sdVpEb2dWbEpOUlhod2NtVnpjMmx2YmtKcGJtUXBPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbDlpYVc1a2N5NXdkWE5vS0dKcGJtUXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVGd2NHeDVJSGRsYVdkb2RDQjBieUJsZG1WeWVTQmhjM05wWjI1bFpDQmliR1Z1WkNCemFHRndaWE11WEc0Z0lDQXFJRk5vYjNWc1pDQmlaU0JqWVd4c1pXUWdaWFpsY25rZ1puSmhiV1V1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWVhCd2JIbFhaV2xuYUhRb2IzQjBhVzl1Y3o4NklIdGNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQk5kV3gwYVhCc2FXVnpJR0VnZG1Gc2RXVWdkRzhnYVhSeklIZGxhV2RvZENCMGJ5QmhjSEJzZVM1Y2JpQWdJQ0FnS2lCSmJuUmxibVJsWkNCMGJ5QmlaU0IxYzJWa0lHWnZjaUJ2ZG1WeWNtbGthVzVuSUdGdUlHVjRjSEpsYzNOcGIyNGdkMlZwWjJoMElHSjVJR0Z1YjNSb1pYSWdaWGh3Y21WemMybHZiaTVjYmlBZ0lDQWdLaUJUWldVZ1lXeHpiem9nZTBCc2FXNXJJRzkyWlhKeWFXUmxRbXhwYm10OUxDQjdRR3hwYm1zZ2IzWmxjbkpwWkdWTWIyOXJRWFI5TENCN1FHeHBibXNnYjNabGNuSnBaR1ZOYjNWMGFIMWNiaUFnSUNBZ0tpOWNiaUFnSUNCdGRXeDBhWEJzYVdWeVB6b2diblZ0WW1WeU8xeHVJQ0I5S1RvZ2RtOXBaQ0I3WEc0Z0lDQWdiR1YwSUdGamRIVmhiRmRsYVdkb2RDQTlJSFJvYVhNdWFYTkNhVzVoY25rZ1B5QW9kR2hwY3k1M1pXbG5hSFFnUEQwZ01DNDFJRDhnTUM0d0lEb2dNUzR3S1NBNklIUm9hWE11ZDJWcFoyaDBPMXh1SUNBZ0lHRmpkSFZoYkZkbGFXZG9kQ0FxUFNCdmNIUnBiMjV6UHk1dGRXeDBhWEJzYVdWeUlEOC9JREV1TUR0Y2JseHVJQ0FnSUhSb2FYTXVYMkpwYm1SekxtWnZja1ZoWTJnb0tHSnBibVFwSUQwK0lHSnBibVF1WVhCd2JIbFhaV2xuYUhRb1lXTjBkV0ZzVjJWcFoyaDBLU2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1EyeGxZWElnY0hKbGRtbHZkWE5zZVNCaGMzTnBaMjVsWkNCaWJHVnVaQ0J6YUdGd1pYTXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdZMnhsWVhKQmNIQnNhV1ZrVjJWcFoyaDBLQ2s2SUhadmFXUWdlMXh1SUNBZ0lIUm9hWE11WDJKcGJtUnpMbVp2Y2tWaFkyZ29LR0pwYm1RcElEMCtJR0pwYm1RdVkyeGxZWEpCY0hCc2FXVmtWMlZwWjJoMEtDa3BPMXh1SUNCOVhHNTlYRzRpTENJdktpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xWEhKY2JrTnZjSGx5YVdkb2RDQW9ZeWtnVFdsamNtOXpiMlowSUVOdmNuQnZjbUYwYVc5dUxseHlYRzVjY2x4dVVHVnliV2x6YzJsdmJpQjBieUIxYzJVc0lHTnZjSGtzSUcxdlpHbG1lU3dnWVc1a0wyOXlJR1JwYzNSeWFXSjFkR1VnZEdocGN5QnpiMlowZDJGeVpTQm1iM0lnWVc1NVhISmNibkIxY25CdmMyVWdkMmwwYUNCdmNpQjNhWFJvYjNWMElHWmxaU0JwY3lCb1pYSmxZbmtnWjNKaGJuUmxaQzVjY2x4dVhISmNibFJJUlNCVFQwWlVWMEZTUlNCSlV5QlFVazlXU1VSRlJDQmNJa0ZUSUVsVFhDSWdRVTVFSUZSSVJTQkJWVlJJVDFJZ1JFbFRRMHhCU1UxVElFRk1UQ0JYUVZKU1FVNVVTVVZUSUZkSlZFaGNjbHh1VWtWSFFWSkVJRlJQSUZSSVNWTWdVMDlHVkZkQlVrVWdTVTVEVEZWRVNVNUhJRUZNVENCSlRWQk1TVVZFSUZkQlVsSkJUbFJKUlZNZ1QwWWdUVVZTUTBoQlRsUkJRa2xNU1ZSWlhISmNia0ZPUkNCR1NWUk9SVk5UTGlCSlRpQk9UeUJGVmtWT1ZDQlRTRUZNVENCVVNFVWdRVlZVU0U5U0lFSkZJRXhKUVVKTVJTQkdUMUlnUVU1WklGTlFSVU5KUVV3c0lFUkpVa1ZEVkN4Y2NseHVTVTVFU1ZKRlExUXNJRTlTSUVOUFRsTkZVVlZGVGxSSlFVd2dSRUZOUVVkRlV5QlBVaUJCVGxrZ1JFRk5RVWRGVXlCWFNFRlVVMDlGVmtWU0lGSkZVMVZNVkVsT1J5QkdVazlOWEhKY2JreFBVMU1nVDBZZ1ZWTkZMQ0JFUVZSQklFOVNJRkJTVDBaSlZGTXNJRmRJUlZSSVJWSWdTVTRnUVU0Z1FVTlVTVTlPSUU5R0lFTlBUbFJTUVVOVUxDQk9SVWRNU1VkRlRrTkZJRTlTWEhKY2JrOVVTRVZTSUZSUFVsUkpUMVZUSUVGRFZFbFBUaXdnUVZKSlUwbE9SeUJQVlZRZ1QwWWdUMUlnU1U0Z1EwOU9Ua1ZEVkVsUFRpQlhTVlJJSUZSSVJTQlZVMFVnVDFKY2NseHVVRVZTUms5U1RVRk9RMFVnVDBZZ1ZFaEpVeUJUVDBaVVYwRlNSUzVjY2x4dUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9nS2k5Y2NseHVMeW9nWjJ4dlltRnNJRkpsWm14bFkzUXNJRkJ5YjIxcGMyVWdLaTljY2x4dVhISmNiblpoY2lCbGVIUmxibVJUZEdGMGFXTnpJRDBnWm5WdVkzUnBiMjRvWkN3Z1lpa2dlMXh5WEc0Z0lDQWdaWGgwWlc1a1UzUmhkR2xqY3lBOUlFOWlhbVZqZEM1elpYUlFjbTkwYjNSNWNHVlBaaUI4ZkZ4eVhHNGdJQ0FnSUNBZ0lDaDdJRjlmY0hKdmRHOWZYem9nVzEwZ2ZTQnBibk4wWVc1alpXOW1JRUZ5Y21GNUlDWW1JR1oxYm1OMGFXOXVJQ2hrTENCaUtTQjdJR1F1WDE5d2NtOTBiMTlmSUQwZ1lqc2dmU2tnZkh4Y2NseHVJQ0FnSUNBZ0lDQm1kVzVqZEdsdmJpQW9aQ3dnWWlrZ2V5Qm1iM0lnS0haaGNpQndJR2x1SUdJcElHbG1JQ2hQWW1wbFkzUXVjSEp2ZEc5MGVYQmxMbWhoYzA5M2JsQnliM0JsY25SNUxtTmhiR3dvWWl3Z2NDa3BJR1JiY0YwZ1BTQmlXM0JkT3lCOU8xeHlYRzRnSUNBZ2NtVjBkWEp1SUdWNGRHVnVaRk4wWVhScFkzTW9aQ3dnWWlrN1hISmNibjA3WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTlsZUhSbGJtUnpLR1FzSUdJcElIdGNjbHh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdZaUFoUFQwZ1hDSm1kVzVqZEdsdmJsd2lJQ1ltSUdJZ0lUMDlJRzUxYkd3cFhISmNiaUFnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWtOc1lYTnpJR1Y0ZEdWdVpITWdkbUZzZFdVZ1hDSWdLeUJUZEhKcGJtY29ZaWtnS3lCY0lpQnBjeUJ1YjNRZ1lTQmpiMjV6ZEhKMVkzUnZjaUJ2Y2lCdWRXeHNYQ0lwTzF4eVhHNGdJQ0FnWlhoMFpXNWtVM1JoZEdsamN5aGtMQ0JpS1R0Y2NseHVJQ0FnSUdaMWJtTjBhVzl1SUY5ZktDa2dleUIwYUdsekxtTnZibk4wY25WamRHOXlJRDBnWkRzZ2ZWeHlYRzRnSUNBZ1pDNXdjbTkwYjNSNWNHVWdQU0JpSUQwOVBTQnVkV3hzSUQ4Z1QySnFaV04wTG1OeVpXRjBaU2hpS1NBNklDaGZYeTV3Y205MGIzUjVjR1VnUFNCaUxuQnliM1J2ZEhsd1pTd2dibVYzSUY5ZktDa3BPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnZG1GeUlGOWZZWE56YVdkdUlEMGdablZ1WTNScGIyNG9LU0I3WEhKY2JpQWdJQ0JmWDJGemMybG5iaUE5SUU5aWFtVmpkQzVoYzNOcFoyNGdmSHdnWm5WdVkzUnBiMjRnWDE5aGMzTnBaMjRvZENrZ2UxeHlYRzRnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJSE1zSUdrZ1BTQXhMQ0J1SUQwZ1lYSm5kVzFsYm5SekxteGxibWQwYURzZ2FTQThJRzQ3SUdrckt5a2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpJRDBnWVhKbmRXMWxiblJ6VzJsZE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCbWIzSWdLSFpoY2lCd0lHbHVJSE1wSUdsbUlDaFBZbXBsWTNRdWNISnZkRzkwZVhCbExtaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29jeXdnY0NrcElIUmJjRjBnUFNCelczQmRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2REdGNjbHh1SUNBZ0lIMWNjbHh1SUNBZ0lISmxkSFZ5YmlCZlgyRnpjMmxuYmk1aGNIQnNlU2gwYUdsekxDQmhjbWQxYldWdWRITXBPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5eVpYTjBLSE1zSUdVcElIdGNjbHh1SUNBZ0lIWmhjaUIwSUQwZ2UzMDdYSEpjYmlBZ0lDQm1iM0lnS0haaGNpQndJR2x1SUhNcElHbG1JQ2hQWW1wbFkzUXVjSEp2ZEc5MGVYQmxMbWhoYzA5M2JsQnliM0JsY25SNUxtTmhiR3dvY3l3Z2NDa2dKaVlnWlM1cGJtUmxlRTltS0hBcElEd2dNQ2xjY2x4dUlDQWdJQ0FnSUNCMFczQmRJRDBnYzF0d1hUdGNjbHh1SUNBZ0lHbG1JQ2h6SUNFOUlHNTFiR3dnSmlZZ2RIbHdaVzltSUU5aWFtVmpkQzVuWlhSUGQyNVFjbTl3WlhKMGVWTjViV0p2YkhNZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlsY2NseHVJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTUN3Z2NDQTlJRTlpYW1WamRDNW5aWFJQZDI1UWNtOXdaWEowZVZONWJXSnZiSE1vY3lrN0lHa2dQQ0J3TG14bGJtZDBhRHNnYVNzcktTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hsTG1sdVpHVjRUMllvY0Z0cFhTa2dQQ0F3SUNZbUlFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVdWNISnZjR1Z5ZEhsSmMwVnVkVzFsY21GaWJHVXVZMkZzYkNoekxDQndXMmxkS1NsY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUmJjRnRwWFYwZ1BTQnpXM0JiYVYxZE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJSEpsZEhWeWJpQjBPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5a1pXTnZjbUYwWlNoa1pXTnZjbUYwYjNKekxDQjBZWEpuWlhRc0lHdGxlU3dnWkdWell5a2dlMXh5WEc0Z0lDQWdkbUZ5SUdNZ1BTQmhjbWQxYldWdWRITXViR1Z1WjNSb0xDQnlJRDBnWXlBOElETWdQeUIwWVhKblpYUWdPaUJrWlhOaklEMDlQU0J1ZFd4c0lEOGdaR1Z6WXlBOUlFOWlhbVZqZEM1blpYUlBkMjVRY205d1pYSjBlVVJsYzJOeWFYQjBiM0lvZEdGeVoyVjBMQ0JyWlhrcElEb2daR1Z6WXl3Z1pEdGNjbHh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdVbVZtYkdWamRDQTlQVDBnWENKdlltcGxZM1JjSWlBbUppQjBlWEJsYjJZZ1VtVm1iR1ZqZEM1a1pXTnZjbUYwWlNBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCeUlEMGdVbVZtYkdWamRDNWtaV052Y21GMFpTaGtaV052Y21GMGIzSnpMQ0IwWVhKblpYUXNJR3RsZVN3Z1pHVnpZeWs3WEhKY2JpQWdJQ0JsYkhObElHWnZjaUFvZG1GeUlHa2dQU0JrWldOdmNtRjBiM0p6TG14bGJtZDBhQ0F0SURFN0lHa2dQajBnTURzZ2FTMHRLU0JwWmlBb1pDQTlJR1JsWTI5eVlYUnZjbk5iYVYwcElISWdQU0FvWXlBOElETWdQeUJrS0hJcElEb2dZeUErSURNZ1B5QmtLSFJoY21kbGRDd2dhMlY1TENCeUtTQTZJR1FvZEdGeVoyVjBMQ0JyWlhrcEtTQjhmQ0J5TzF4eVhHNGdJQ0FnY21WMGRYSnVJR01nUGlBeklDWW1JSElnSmlZZ1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLSFJoY21kbGRDd2dhMlY1TENCeUtTd2djanRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmNHRnlZVzBvY0dGeVlXMUpibVJsZUN3Z1pHVmpiM0poZEc5eUtTQjdYSEpjYmlBZ0lDQnlaWFIxY200Z1puVnVZM1JwYjI0Z0tIUmhjbWRsZEN3Z2EyVjVLU0I3SUdSbFkyOXlZWFJ2Y2loMFlYSm5aWFFzSUd0bGVTd2djR0Z5WVcxSmJtUmxlQ2s3SUgxY2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZaWE5FWldOdmNtRjBaU2hqZEc5eUxDQmtaWE5qY21sd2RHOXlTVzRzSUdSbFkyOXlZWFJ2Y25Nc0lHTnZiblJsZUhSSmJpd2dhVzVwZEdsaGJHbDZaWEp6TENCbGVIUnlZVWx1YVhScFlXeHBlbVZ5Y3lrZ2UxeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z1lXTmpaWEIwS0dZcElIc2dhV1lnS0dZZ0lUMDlJSFp2YVdRZ01DQW1KaUIwZVhCbGIyWWdaaUFoUFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0Z3aVJuVnVZM1JwYjI0Z1pYaHdaV04wWldSY0lpazdJSEpsZEhWeWJpQm1PeUI5WEhKY2JpQWdJQ0IyWVhJZ2EybHVaQ0E5SUdOdmJuUmxlSFJKYmk1cmFXNWtMQ0JyWlhrZ1BTQnJhVzVrSUQwOVBTQmNJbWRsZEhSbGNsd2lJRDhnWENKblpYUmNJaUE2SUd0cGJtUWdQVDA5SUZ3aWMyVjBkR1Z5WENJZ1B5QmNJbk5sZEZ3aUlEb2dYQ0oyWVd4MVpWd2lPMXh5WEc0Z0lDQWdkbUZ5SUhSaGNtZGxkQ0E5SUNGa1pYTmpjbWx3ZEc5eVNXNGdKaVlnWTNSdmNpQS9JR052Ym5SbGVIUkpibHRjSW5OMFlYUnBZMXdpWFNBL0lHTjBiM0lnT2lCamRHOXlMbkJ5YjNSdmRIbHdaU0E2SUc1MWJHdzdYSEpjYmlBZ0lDQjJZWElnWkdWelkzSnBjSFJ2Y2lBOUlHUmxjMk55YVhCMGIzSkpiaUI4ZkNBb2RHRnlaMlYwSUQ4Z1QySnFaV04wTG1kbGRFOTNibEJ5YjNCbGNuUjVSR1Z6WTNKcGNIUnZjaWgwWVhKblpYUXNJR052Ym5SbGVIUkpiaTV1WVcxbEtTQTZJSHQ5S1R0Y2NseHVJQ0FnSUhaaGNpQmZMQ0JrYjI1bElEMGdabUZzYzJVN1hISmNiaUFnSUNCbWIzSWdLSFpoY2lCcElEMGdaR1ZqYjNKaGRHOXljeTVzWlc1bmRHZ2dMU0F4T3lCcElENDlJREE3SUdrdExTa2dlMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQmpiMjUwWlhoMElEMGdlMzA3WEhKY2JpQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2NDQnBiaUJqYjI1MFpYaDBTVzRwSUdOdmJuUmxlSFJiY0YwZ1BTQndJRDA5UFNCY0ltRmpZMlZ6YzF3aUlEOGdlMzBnT2lCamIyNTBaWGgwU1c1YmNGMDdYSEpjYmlBZ0lDQWdJQ0FnWm05eUlDaDJZWElnY0NCcGJpQmpiMjUwWlhoMFNXNHVZV05qWlhOektTQmpiMjUwWlhoMExtRmpZMlZ6YzF0d1hTQTlJR052Ym5SbGVIUkpiaTVoWTJObGMzTmJjRjA3WEhKY2JpQWdJQ0FnSUNBZ1kyOXVkR1Y0ZEM1aFpHUkpibWwwYVdGc2FYcGxjaUE5SUdaMWJtTjBhVzl1SUNobUtTQjdJR2xtSUNoa2IyNWxLU0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0Z3aVEyRnVibTkwSUdGa1pDQnBibWwwYVdGc2FYcGxjbk1nWVdaMFpYSWdaR1ZqYjNKaGRHbHZiaUJvWVhNZ1kyOXRjR3hsZEdWa1hDSXBPeUJsZUhSeVlVbHVhWFJwWVd4cGVtVnljeTV3ZFhOb0tHRmpZMlZ3ZENobUlIeDhJRzUxYkd3cEtUc2dmVHRjY2x4dUlDQWdJQ0FnSUNCMllYSWdjbVZ6ZFd4MElEMGdLREFzSUdSbFkyOXlZWFJ2Y25OYmFWMHBLR3RwYm1RZ1BUMDlJRndpWVdOalpYTnpiM0pjSWlBL0lIc2daMlYwT2lCa1pYTmpjbWx3ZEc5eUxtZGxkQ3dnYzJWME9pQmtaWE5qY21sd2RHOXlMbk5sZENCOUlEb2daR1Z6WTNKcGNIUnZjbHRyWlhsZExDQmpiMjUwWlhoMEtUdGNjbHh1SUNBZ0lDQWdJQ0JwWmlBb2EybHVaQ0E5UFQwZ1hDSmhZMk5sYzNOdmNsd2lLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoeVpYTjFiSFFnUFQwOUlIWnZhV1FnTUNrZ1kyOXVkR2x1ZFdVN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHlaWE4xYkhRZ1BUMDlJRzUxYkd3Z2ZId2dkSGx3Wlc5bUlISmxjM1ZzZENBaFBUMGdYQ0p2WW1wbFkzUmNJaWtnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lrOWlhbVZqZENCbGVIQmxZM1JsWkZ3aUtUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRjhnUFNCaFkyTmxjSFFvY21WemRXeDBMbWRsZENrcElHUmxjMk55YVhCMGIzSXVaMlYwSUQwZ1h6dGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRjhnUFNCaFkyTmxjSFFvY21WemRXeDBMbk5sZENrcElHUmxjMk55YVhCMGIzSXVjMlYwSUQwZ1h6dGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRjhnUFNCaFkyTmxjSFFvY21WemRXeDBMbWx1YVhRcEtTQnBibWwwYVdGc2FYcGxjbk11Y0hWemFDaGZLVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdaV3h6WlNCcFppQW9YeUE5SUdGalkyVndkQ2h5WlhOMWJIUXBLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNocmFXNWtJRDA5UFNCY0ltWnBaV3hrWENJcElHbHVhWFJwWVd4cGVtVnljeTV3ZFhOb0tGOHBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUdSbGMyTnlhWEIwYjNKYmEyVjVYU0E5SUY4N1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lDQWdhV1lnS0hSaGNtZGxkQ2tnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtIUmhjbWRsZEN3Z1kyOXVkR1Y0ZEVsdUxtNWhiV1VzSUdSbGMyTnlhWEIwYjNJcE8xeHlYRzRnSUNBZ1pHOXVaU0E5SUhSeWRXVTdYSEpjYm4wN1hISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5eWRXNUpibWwwYVdGc2FYcGxjbk1vZEdocGMwRnlaeXdnYVc1cGRHbGhiR2w2WlhKekxDQjJZV3gxWlNrZ2UxeHlYRzRnSUNBZ2RtRnlJSFZ6WlZaaGJIVmxJRDBnWVhKbmRXMWxiblJ6TG14bGJtZDBhQ0ErSURJN1hISmNiaUFnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElHbHVhWFJwWVd4cGVtVnljeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHlYRzRnSUNBZ0lDQWdJSFpoYkhWbElEMGdkWE5sVm1Gc2RXVWdQeUJwYm1sMGFXRnNhWHBsY25OYmFWMHVZMkZzYkNoMGFHbHpRWEpuTENCMllXeDFaU2tnT2lCcGJtbDBhV0ZzYVhwbGNuTmJhVjB1WTJGc2JDaDBhR2x6UVhKbktUdGNjbHh1SUNBZ0lIMWNjbHh1SUNBZ0lISmxkSFZ5YmlCMWMyVldZV3gxWlNBL0lIWmhiSFZsSURvZ2RtOXBaQ0F3TzF4eVhHNTlPMXh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZjSEp2Y0V0bGVTaDRLU0I3WEhKY2JpQWdJQ0J5WlhSMWNtNGdkSGx3Wlc5bUlIZ2dQVDA5SUZ3aWMzbHRZbTlzWENJZ1B5QjRJRG9nWENKY0lpNWpiMjVqWVhRb2VDazdYSEpjYm4wN1hISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5elpYUkdkVzVqZEdsdmJrNWhiV1VvWml3Z2JtRnRaU3dnY0hKbFptbDRLU0I3WEhKY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUc1aGJXVWdQVDA5SUZ3aWMzbHRZbTlzWENJcElHNWhiV1VnUFNCdVlXMWxMbVJsYzJOeWFYQjBhVzl1SUQ4Z1hDSmJYQ0l1WTI5dVkyRjBLRzVoYldVdVpHVnpZM0pwY0hScGIyNHNJRndpWFZ3aUtTQTZJRndpWENJN1hISmNiaUFnSUNCeVpYUjFjbTRnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtHWXNJRndpYm1GdFpWd2lMQ0I3SUdOdmJtWnBaM1Z5WVdKc1pUb2dkSEoxWlN3Z2RtRnNkV1U2SUhCeVpXWnBlQ0EvSUZ3aVhDSXVZMjl1WTJGMEtIQnlaV1pwZUN3Z1hDSWdYQ0lzSUc1aGJXVXBJRG9nYm1GdFpTQjlLVHRjY2x4dWZUdGNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyMWxkR0ZrWVhSaEtHMWxkR0ZrWVhSaFMyVjVMQ0J0WlhSaFpHRjBZVlpoYkhWbEtTQjdYSEpjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JRkpsWm14bFkzUWdQVDA5SUZ3aWIySnFaV04wWENJZ0ppWWdkSGx3Wlc5bUlGSmxabXhsWTNRdWJXVjBZV1JoZEdFZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlrZ2NtVjBkWEp1SUZKbFpteGxZM1F1YldWMFlXUmhkR0VvYldWMFlXUmhkR0ZMWlhrc0lHMWxkR0ZrWVhSaFZtRnNkV1VwTzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWhkMkZwZEdWeUtIUm9hWE5CY21jc0lGOWhjbWQxYldWdWRITXNJRkFzSUdkbGJtVnlZWFJ2Y2lrZ2UxeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z1lXUnZjSFFvZG1Gc2RXVXBJSHNnY21WMGRYSnVJSFpoYkhWbElHbHVjM1JoYm1ObGIyWWdVQ0EvSUhaaGJIVmxJRG9nYm1WM0lGQW9ablZ1WTNScGIyNGdLSEpsYzI5c2RtVXBJSHNnY21WemIyeDJaU2gyWVd4MVpTazdJSDBwT3lCOVhISmNiaUFnSUNCeVpYUjFjbTRnYm1WM0lDaFFJSHg4SUNoUUlEMGdVSEp2YldselpTa3BLR1oxYm1OMGFXOXVJQ2h5WlhOdmJIWmxMQ0J5WldwbFkzUXBJSHRjY2x4dUlDQWdJQ0FnSUNCbWRXNWpkR2x2YmlCbWRXeG1hV3hzWldRb2RtRnNkV1VwSUhzZ2RISjVJSHNnYzNSbGNDaG5aVzVsY21GMGIzSXVibVY0ZENoMllXeDFaU2twT3lCOUlHTmhkR05vSUNobEtTQjdJSEpsYW1WamRDaGxLVHNnZlNCOVhISmNiaUFnSUNBZ0lDQWdablZ1WTNScGIyNGdjbVZxWldOMFpXUW9kbUZzZFdVcElIc2dkSEo1SUhzZ2MzUmxjQ2huWlc1bGNtRjBiM0piWENKMGFISnZkMXdpWFNoMllXeDFaU2twT3lCOUlHTmhkR05vSUNobEtTQjdJSEpsYW1WamRDaGxLVHNnZlNCOVhISmNiaUFnSUNBZ0lDQWdablZ1WTNScGIyNGdjM1JsY0NoeVpYTjFiSFFwSUhzZ2NtVnpkV3gwTG1SdmJtVWdQeUJ5WlhOdmJIWmxLSEpsYzNWc2RDNTJZV3gxWlNrZ09pQmhaRzl3ZENoeVpYTjFiSFF1ZG1Gc2RXVXBMblJvWlc0b1puVnNabWxzYkdWa0xDQnlaV3BsWTNSbFpDazdJSDFjY2x4dUlDQWdJQ0FnSUNCemRHVndLQ2huWlc1bGNtRjBiM0lnUFNCblpXNWxjbUYwYjNJdVlYQndiSGtvZEdocGMwRnlaeXdnWDJGeVozVnRaVzUwY3lCOGZDQmJYU2twTG01bGVIUW9LU2s3WEhKY2JpQWdJQ0I5S1R0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZaMlZ1WlhKaGRHOXlLSFJvYVhOQmNtY3NJR0p2WkhrcElIdGNjbHh1SUNBZ0lIWmhjaUJmSUQwZ2V5QnNZV0psYkRvZ01Dd2djMlZ1ZERvZ1puVnVZM1JwYjI0b0tTQjdJR2xtSUNoMFd6QmRJQ1lnTVNrZ2RHaHliM2NnZEZzeFhUc2djbVYwZFhKdUlIUmJNVjA3SUgwc0lIUnllWE02SUZ0ZExDQnZjSE02SUZ0ZElIMHNJR1lzSUhrc0lIUXNJR2M3WEhKY2JpQWdJQ0J5WlhSMWNtNGdaeUE5SUhzZ2JtVjRkRG9nZG1WeVlpZ3dLU3dnWENKMGFISnZkMXdpT2lCMlpYSmlLREVwTENCY0luSmxkSFZ5Ymx3aU9pQjJaWEppS0RJcElIMHNJSFI1Y0dWdlppQlRlVzFpYjJ3Z1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBbUppQW9aMXRUZVcxaWIyd3VhWFJsY21GMGIzSmRJRDBnWm5WdVkzUnBiMjRvS1NCN0lISmxkSFZ5YmlCMGFHbHpPeUI5S1N3Z1p6dGNjbHh1SUNBZ0lHWjFibU4wYVc5dUlIWmxjbUlvYmlrZ2V5QnlaWFIxY200Z1puVnVZM1JwYjI0Z0tIWXBJSHNnY21WMGRYSnVJSE4wWlhBb1cyNHNJSFpkS1RzZ2ZUc2dmVnh5WEc0Z0lDQWdablZ1WTNScGIyNGdjM1JsY0NodmNDa2dlMXh5WEc0Z0lDQWdJQ0FnSUdsbUlDaG1LU0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0Z3aVIyVnVaWEpoZEc5eUlHbHpJR0ZzY21WaFpIa2daWGhsWTNWMGFXNW5MbHdpS1R0Y2NseHVJQ0FnSUNBZ0lDQjNhR2xzWlNBb1p5QW1KaUFvWnlBOUlEQXNJRzl3V3pCZElDWW1JQ2hmSUQwZ01Da3BMQ0JmS1NCMGNua2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWmlBOUlERXNJSGtnSmlZZ0tIUWdQU0J2Y0Zzd1hTQW1JRElnUHlCNVcxd2ljbVYwZFhKdVhDSmRJRG9nYjNCYk1GMGdQeUI1VzF3aWRHaHliM2RjSWwwZ2ZId2dLQ2gwSUQwZ2VWdGNJbkpsZEhWeWJsd2lYU2tnSmlZZ2RDNWpZV3hzS0hrcExDQXdLU0E2SUhrdWJtVjRkQ2tnSmlZZ0lTaDBJRDBnZEM1allXeHNLSGtzSUc5d1d6RmRLU2t1Wkc5dVpTa2djbVYwZFhKdUlIUTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2g1SUQwZ01Dd2dkQ2tnYjNBZ1BTQmJiM0JiTUYwZ0ppQXlMQ0IwTG5aaGJIVmxYVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjM2RwZEdOb0lDaHZjRnN3WFNrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBd09pQmpZWE5sSURFNklIUWdQU0J2Y0RzZ1luSmxZV3M3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRFE2SUY4dWJHRmlaV3dyS3pzZ2NtVjBkWEp1SUhzZ2RtRnNkV1U2SUc5d1d6RmRMQ0JrYjI1bE9pQm1ZV3h6WlNCOU8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBMU9pQmZMbXhoWW1Wc0t5czdJSGtnUFNCdmNGc3hYVHNnYjNBZ1BTQmJNRjA3SUdOdmJuUnBiblZsTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0EzT2lCdmNDQTlJRjh1YjNCekxuQnZjQ2dwT3lCZkxuUnllWE11Y0c5d0tDazdJR052Ym5ScGJuVmxPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWkdWbVlYVnNkRHBjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVNoMElEMGdYeTUwY25sekxDQjBJRDBnZEM1c1pXNW5kR2dnUGlBd0lDWW1JSFJiZEM1c1pXNW5kR2dnTFNBeFhTa2dKaVlnS0c5d1d6QmRJRDA5UFNBMklIeDhJRzl3V3pCZElEMDlQU0F5S1NrZ2V5QmZJRDBnTURzZ1kyOXVkR2x1ZFdVN0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iM0JiTUYwZ1BUMDlJRE1nSmlZZ0tDRjBJSHg4SUNodmNGc3hYU0ErSUhSYk1GMGdKaVlnYjNCYk1WMGdQQ0IwV3pOZEtTa3BJSHNnWHk1c1lXSmxiQ0E5SUc5d1d6RmRPeUJpY21WaGF6c2dmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h2Y0Zzd1hTQTlQVDBnTmlBbUppQmZMbXhoWW1Wc0lEd2dkRnN4WFNrZ2V5QmZMbXhoWW1Wc0lEMGdkRnN4WFRzZ2RDQTlJRzl3T3lCaWNtVmhhenNnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMElDWW1JRjh1YkdGaVpXd2dQQ0IwV3pKZEtTQjdJRjh1YkdGaVpXd2dQU0IwV3pKZE95QmZMbTl3Y3k1d2RYTm9LRzl3S1RzZ1luSmxZV3M3SUgxY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RGc3lYU2tnWHk1dmNITXVjRzl3S0NrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWHk1MGNubHpMbkJ2Y0NncE95QmpiMjUwYVc1MVpUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCdmNDQTlJR0p2WkhrdVkyRnNiQ2gwYUdselFYSm5MQ0JmS1R0Y2NseHVJQ0FnSUNBZ0lDQjlJR05oZEdOb0lDaGxLU0I3SUc5d0lEMGdXellzSUdWZE95QjVJRDBnTURzZ2ZTQm1hVzVoYkd4NUlIc2daaUE5SUhRZ1BTQXdPeUI5WEhKY2JpQWdJQ0FnSUNBZ2FXWWdLRzl3V3pCZElDWWdOU2tnZEdoeWIzY2diM0JiTVYwN0lISmxkSFZ5YmlCN0lIWmhiSFZsT2lCdmNGc3dYU0EvSUc5d1d6RmRJRG9nZG05cFpDQXdMQ0JrYjI1bE9pQjBjblZsSUgwN1hISmNiaUFnSUNCOVhISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQjJZWElnWDE5amNtVmhkR1ZDYVc1a2FXNW5JRDBnVDJKcVpXTjBMbU55WldGMFpTQS9JQ2htZFc1amRHbHZiaWh2TENCdExDQnJMQ0JyTWlrZ2UxeHlYRzRnSUNBZ2FXWWdLR3N5SUQwOVBTQjFibVJsWm1sdVpXUXBJR3N5SUQwZ2F6dGNjbHh1SUNBZ0lIWmhjaUJrWlhOaklEMGdUMkpxWldOMExtZGxkRTkzYmxCeWIzQmxjblI1UkdWelkzSnBjSFJ2Y2lodExDQnJLVHRjY2x4dUlDQWdJR2xtSUNnaFpHVnpZeUI4ZkNBb1hDSm5aWFJjSWlCcGJpQmtaWE5qSUQ4Z0lXMHVYMTlsYzAxdlpIVnNaU0E2SUdSbGMyTXVkM0pwZEdGaWJHVWdmSHdnWkdWell5NWpiMjVtYVdkMWNtRmliR1VwS1NCN1hISmNiaUFnSUNBZ0lDQWdaR1Z6WXlBOUlIc2daVzUxYldWeVlXSnNaVG9nZEhKMVpTd2daMlYwT2lCbWRXNWpkR2x2YmlncElIc2djbVYwZFhKdUlHMWJhMTA3SUgwZ2ZUdGNjbHh1SUNBZ0lIMWNjbHh1SUNBZ0lFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2h2TENCck1pd2daR1Z6WXlrN1hISmNibjBwSURvZ0tHWjFibU4wYVc5dUtHOHNJRzBzSUdzc0lHc3lLU0I3WEhKY2JpQWdJQ0JwWmlBb2F6SWdQVDA5SUhWdVpHVm1hVzVsWkNrZ2F6SWdQU0JyTzF4eVhHNGdJQ0FnYjF0ck1sMGdQU0J0VzJ0ZE8xeHlYRzU5S1R0Y2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJWNGNHOXlkRk4wWVhJb2JTd2dieWtnZTF4eVhHNGdJQ0FnWm05eUlDaDJZWElnY0NCcGJpQnRLU0JwWmlBb2NDQWhQVDBnWENKa1pXWmhkV3gwWENJZ0ppWWdJVTlpYW1WamRDNXdjbTkwYjNSNWNHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrdVkyRnNiQ2h2TENCd0tTa2dYMTlqY21WaGRHVkNhVzVrYVc1bktHOHNJRzBzSUhBcE8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTkyWVd4MVpYTW9ieWtnZTF4eVhHNGdJQ0FnZG1GeUlITWdQU0IwZVhCbGIyWWdVM2x0WW05c0lEMDlQU0JjSW1aMWJtTjBhVzl1WENJZ0ppWWdVM2x0WW05c0xtbDBaWEpoZEc5eUxDQnRJRDBnY3lBbUppQnZXM05kTENCcElEMGdNRHRjY2x4dUlDQWdJR2xtSUNodEtTQnlaWFIxY200Z2JTNWpZV3hzS0c4cE8xeHlYRzRnSUNBZ2FXWWdLRzhnSmlZZ2RIbHdaVzltSUc4dWJHVnVaM1JvSUQwOVBTQmNJbTUxYldKbGNsd2lLU0J5WlhSMWNtNGdlMXh5WEc0Z0lDQWdJQ0FnSUc1bGVIUTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHOGdKaVlnYVNBK1BTQnZMbXhsYm1kMGFDa2dieUE5SUhadmFXUWdNRHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIc2dkbUZzZFdVNklHOGdKaVlnYjF0cEt5dGRMQ0JrYjI1bE9pQWhieUI5TzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lIMDdYSEpjYmlBZ0lDQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLSE1nUHlCY0lrOWlhbVZqZENCcGN5QnViM1FnYVhSbGNtRmliR1V1WENJZ09pQmNJbE41YldKdmJDNXBkR1Z5WVhSdmNpQnBjeUJ1YjNRZ1pHVm1hVzVsWkM1Y0lpazdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNKbFlXUW9ieXdnYmlrZ2UxeHlYRzRnSUNBZ2RtRnlJRzBnUFNCMGVYQmxiMllnVTNsdFltOXNJRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdKaVlnYjF0VGVXMWliMnd1YVhSbGNtRjBiM0pkTzF4eVhHNGdJQ0FnYVdZZ0tDRnRLU0J5WlhSMWNtNGdienRjY2x4dUlDQWdJSFpoY2lCcElEMGdiUzVqWVd4c0tHOHBMQ0J5TENCaGNpQTlJRnRkTENCbE8xeHlYRzRnSUNBZ2RISjVJSHRjY2x4dUlDQWdJQ0FnSUNCM2FHbHNaU0FvS0c0Z1BUMDlJSFp2YVdRZ01DQjhmQ0J1TFMwZ1BpQXdLU0FtSmlBaEtISWdQU0JwTG01bGVIUW9LU2t1Wkc5dVpTa2dZWEl1Y0hWemFDaHlMblpoYkhWbEtUdGNjbHh1SUNBZ0lIMWNjbHh1SUNBZ0lHTmhkR05vSUNobGNuSnZjaWtnZXlCbElEMGdleUJsY25KdmNqb2daWEp5YjNJZ2ZUc2dmVnh5WEc0Z0lDQWdabWx1WVd4c2VTQjdYSEpjYmlBZ0lDQWdJQ0FnZEhKNUlIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSElnSmlZZ0lYSXVaRzl1WlNBbUppQW9iU0E5SUdsYlhDSnlaWFIxY201Y0lsMHBLU0J0TG1OaGJHd29hU2s3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJR1pwYm1Gc2JIa2dleUJwWmlBb1pTa2dkR2h5YjNjZ1pTNWxjbkp2Y2pzZ2ZWeHlYRzRnSUNBZ2ZWeHlYRzRnSUNBZ2NtVjBkWEp1SUdGeU8xeHlYRzU5WEhKY2JseHlYRzR2S2lvZ1FHUmxjSEpsWTJGMFpXUWdLaTljY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmMzQnlaV0ZrS0NrZ2UxeHlYRzRnSUNBZ1ptOXlJQ2gyWVhJZ1lYSWdQU0JiWFN3Z2FTQTlJREE3SUdrZ1BDQmhjbWQxYldWdWRITXViR1Z1WjNSb095QnBLeXNwWEhKY2JpQWdJQ0FnSUNBZ1lYSWdQU0JoY2k1amIyNWpZWFFvWDE5eVpXRmtLR0Z5WjNWdFpXNTBjMXRwWFNrcE8xeHlYRzRnSUNBZ2NtVjBkWEp1SUdGeU8xeHlYRzU5WEhKY2JseHlYRzR2S2lvZ1FHUmxjSEpsWTJGMFpXUWdLaTljY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmMzQnlaV0ZrUVhKeVlYbHpLQ2tnZTF4eVhHNGdJQ0FnWm05eUlDaDJZWElnY3lBOUlEQXNJR2tnUFNBd0xDQnBiQ0E5SUdGeVozVnRaVzUwY3k1c1pXNW5kR2c3SUdrZ1BDQnBiRHNnYVNzcktTQnpJQ3M5SUdGeVozVnRaVzUwYzF0cFhTNXNaVzVuZEdnN1hISmNiaUFnSUNCbWIzSWdLSFpoY2lCeUlEMGdRWEp5WVhrb2N5a3NJR3NnUFNBd0xDQnBJRDBnTURzZ2FTQThJR2xzT3lCcEt5c3BYSEpjYmlBZ0lDQWdJQ0FnWm05eUlDaDJZWElnWVNBOUlHRnlaM1Z0Wlc1MGMxdHBYU3dnYWlBOUlEQXNJR3BzSUQwZ1lTNXNaVzVuZEdnN0lHb2dQQ0JxYkRzZ2Fpc3JMQ0JyS3lzcFhISmNiaUFnSUNBZ0lDQWdJQ0FnSUhKYmExMGdQU0JoVzJwZE8xeHlYRzRnSUNBZ2NtVjBkWEp1SUhJN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM053Y21WaFpFRnljbUY1S0hSdkxDQm1jbTl0TENCd1lXTnJLU0I3WEhKY2JpQWdJQ0JwWmlBb2NHRmpheUI4ZkNCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvSUQwOVBTQXlLU0JtYjNJZ0tIWmhjaUJwSUQwZ01Dd2diQ0E5SUdaeWIyMHViR1Z1WjNSb0xDQmhjanNnYVNBOElHdzdJR2tyS3lrZ2UxeHlYRzRnSUNBZ0lDQWdJR2xtSUNoaGNpQjhmQ0FoS0drZ2FXNGdabkp2YlNrcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0ZoY2lrZ1lYSWdQU0JCY25KaGVTNXdjbTkwYjNSNWNHVXVjMnhwWTJVdVkyRnNiQ2htY205dExDQXdMQ0JwS1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWVhKYmFWMGdQU0JtY205dFcybGRPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUgxY2NseHVJQ0FnSUhKbGRIVnliaUIwYnk1amIyNWpZWFFvWVhJZ2ZId2dRWEp5WVhrdWNISnZkRzkwZVhCbExuTnNhV05sTG1OaGJHd29abkp2YlNrcE8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTloZDJGcGRDaDJLU0I3WEhKY2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3lCcGJuTjBZVzVqWlc5bUlGOWZZWGRoYVhRZ1B5QW9kR2hwY3k1MklEMGdkaXdnZEdocGN5a2dPaUJ1WlhjZ1gxOWhkMkZwZENoMktUdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmWVhONWJtTkhaVzVsY21GMGIzSW9kR2hwYzBGeVp5d2dYMkZ5WjNWdFpXNTBjeXdnWjJWdVpYSmhkRzl5S1NCN1hISmNiaUFnSUNCcFppQW9JVk41YldKdmJDNWhjM2x1WTBsMFpYSmhkRzl5S1NCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lVM2x0WW05c0xtRnplVzVqU1hSbGNtRjBiM0lnYVhNZ2JtOTBJR1JsWm1sdVpXUXVYQ0lwTzF4eVhHNGdJQ0FnZG1GeUlHY2dQU0JuWlc1bGNtRjBiM0l1WVhCd2JIa29kR2hwYzBGeVp5d2dYMkZ5WjNWdFpXNTBjeUI4ZkNCYlhTa3NJR2tzSUhFZ1BTQmJYVHRjY2x4dUlDQWdJSEpsZEhWeWJpQnBJRDBnZTMwc0lIWmxjbUlvWENKdVpYaDBYQ0lwTENCMlpYSmlLRndpZEdoeWIzZGNJaWtzSUhabGNtSW9YQ0p5WlhSMWNtNWNJaWtzSUdsYlUzbHRZbTlzTG1GemVXNWpTWFJsY21GMGIzSmRJRDBnWm5WdVkzUnBiMjRnS0NrZ2V5QnlaWFIxY200Z2RHaHBjenNnZlN3Z2FUdGNjbHh1SUNBZ0lHWjFibU4wYVc5dUlIWmxjbUlvYmlrZ2V5QnBaaUFvWjF0dVhTa2dhVnR1WFNBOUlHWjFibU4wYVc5dUlDaDJLU0I3SUhKbGRIVnliaUJ1WlhjZ1VISnZiV2x6WlNobWRXNWpkR2x2YmlBb1lTd2dZaWtnZXlCeExuQjFjMmdvVzI0c0lIWXNJR0VzSUdKZEtTQStJREVnZkh3Z2NtVnpkVzFsS0c0c0lIWXBPeUI5S1RzZ2ZUc2dmVnh5WEc0Z0lDQWdablZ1WTNScGIyNGdjbVZ6ZFcxbEtHNHNJSFlwSUhzZ2RISjVJSHNnYzNSbGNDaG5XMjVkS0hZcEtUc2dmU0JqWVhSamFDQW9aU2tnZXlCelpYUjBiR1VvY1Zzd1hWc3pYU3dnWlNrN0lIMGdmVnh5WEc0Z0lDQWdablZ1WTNScGIyNGdjM1JsY0NoeUtTQjdJSEl1ZG1Gc2RXVWdhVzV6ZEdGdVkyVnZaaUJmWDJGM1lXbDBJRDhnVUhKdmJXbHpaUzV5WlhOdmJIWmxLSEl1ZG1Gc2RXVXVkaWt1ZEdobGJpaG1kV3htYVd4c0xDQnlaV3BsWTNRcElEb2djMlYwZEd4bEtIRmJNRjFiTWwwc0lISXBPeUI5WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJtZFd4bWFXeHNLSFpoYkhWbEtTQjdJSEpsYzNWdFpTaGNJbTVsZUhSY0lpd2dkbUZzZFdVcE95QjlYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQnlaV3BsWTNRb2RtRnNkV1VwSUhzZ2NtVnpkVzFsS0Z3aWRHaHliM2RjSWl3Z2RtRnNkV1VwT3lCOVhISmNiaUFnSUNCbWRXNWpkR2x2YmlCelpYUjBiR1VvWml3Z2Rpa2dleUJwWmlBb1ppaDJLU3dnY1M1emFHbG1kQ2dwTENCeExteGxibWQwYUNrZ2NtVnpkVzFsS0hGYk1GMWJNRjBzSUhGYk1GMWJNVjBwT3lCOVhISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMkZ6ZVc1alJHVnNaV2RoZEc5eUtHOHBJSHRjY2x4dUlDQWdJSFpoY2lCcExDQndPMXh5WEc0Z0lDQWdjbVYwZFhKdUlHa2dQU0I3ZlN3Z2RtVnlZaWhjSW01bGVIUmNJaWtzSUhabGNtSW9YQ0owYUhKdmQxd2lMQ0JtZFc1amRHbHZiaUFvWlNrZ2V5QjBhSEp2ZHlCbE95QjlLU3dnZG1WeVlpaGNJbkpsZEhWeWJsd2lLU3dnYVZ0VGVXMWliMnd1YVhSbGNtRjBiM0pkSUQwZ1puVnVZM1JwYjI0Z0tDa2dleUJ5WlhSMWNtNGdkR2hwY3pzZ2ZTd2dhVHRjY2x4dUlDQWdJR1oxYm1OMGFXOXVJSFpsY21Jb2Jpd2daaWtnZXlCcFcyNWRJRDBnYjF0dVhTQS9JR1oxYm1OMGFXOXVJQ2gyS1NCN0lISmxkSFZ5YmlBb2NDQTlJQ0Z3S1NBL0lIc2dkbUZzZFdVNklGOWZZWGRoYVhRb2IxdHVYU2gyS1Nrc0lHUnZibVU2SUdaaGJITmxJSDBnT2lCbUlEOGdaaWgyS1NBNklIWTdJSDBnT2lCbU95QjlYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJGemVXNWpWbUZzZFdWektHOHBJSHRjY2x4dUlDQWdJR2xtSUNnaFUzbHRZbTlzTG1GemVXNWpTWFJsY21GMGIzSXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKVGVXMWliMnd1WVhONWJtTkpkR1Z5WVhSdmNpQnBjeUJ1YjNRZ1pHVm1hVzVsWkM1Y0lpazdYSEpjYmlBZ0lDQjJZWElnYlNBOUlHOWJVM2x0WW05c0xtRnplVzVqU1hSbGNtRjBiM0pkTENCcE8xeHlYRzRnSUNBZ2NtVjBkWEp1SUcwZ1B5QnRMbU5oYkd3b2J5a2dPaUFvYnlBOUlIUjVjR1Z2WmlCZlgzWmhiSFZsY3lBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUQ4Z1gxOTJZV3gxWlhNb2J5a2dPaUJ2VzFONWJXSnZiQzVwZEdWeVlYUnZjbDBvS1N3Z2FTQTlJSHQ5TENCMlpYSmlLRndpYm1WNGRGd2lLU3dnZG1WeVlpaGNJblJvY205M1hDSXBMQ0IyWlhKaUtGd2ljbVYwZFhKdVhDSXBMQ0JwVzFONWJXSnZiQzVoYzNsdVkwbDBaWEpoZEc5eVhTQTlJR1oxYm1OMGFXOXVJQ2dwSUhzZ2NtVjBkWEp1SUhSb2FYTTdJSDBzSUdrcE8xeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z2RtVnlZaWh1S1NCN0lHbGJibDBnUFNCdlcyNWRJQ1ltSUdaMWJtTjBhVzl1SUNoMktTQjdJSEpsZEhWeWJpQnVaWGNnVUhKdmJXbHpaU2htZFc1amRHbHZiaUFvY21WemIyeDJaU3dnY21WcVpXTjBLU0I3SUhZZ1BTQnZXMjVkS0hZcExDQnpaWFIwYkdVb2NtVnpiMngyWlN3Z2NtVnFaV04wTENCMkxtUnZibVVzSUhZdWRtRnNkV1VwT3lCOUtUc2dmVHNnZlZ4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnYzJWMGRHeGxLSEpsYzI5c2RtVXNJSEpsYW1WamRDd2daQ3dnZGlrZ2V5QlFjbTl0YVhObExuSmxjMjlzZG1Vb2Rpa3VkR2hsYmlobWRXNWpkR2x2YmloMktTQjdJSEpsYzI5c2RtVW9leUIyWVd4MVpUb2dkaXdnWkc5dVpUb2daQ0I5S1RzZ2ZTd2djbVZxWldOMEtUc2dmVnh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5dFlXdGxWR1Z0Y0d4aGRHVlBZbXBsWTNRb1kyOXZhMlZrTENCeVlYY3BJSHRjY2x4dUlDQWdJR2xtSUNoUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa3BJSHNnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtHTnZiMnRsWkN3Z1hDSnlZWGRjSWl3Z2V5QjJZV3gxWlRvZ2NtRjNJSDBwT3lCOUlHVnNjMlVnZXlCamIyOXJaV1F1Y21GM0lEMGdjbUYzT3lCOVhISmNiaUFnSUNCeVpYUjFjbTRnWTI5dmEyVmtPMXh5WEc1OU8xeHlYRzVjY2x4dWRtRnlJRjlmYzJWMFRXOWtkV3hsUkdWbVlYVnNkQ0E5SUU5aWFtVmpkQzVqY21WaGRHVWdQeUFvWm5WdVkzUnBiMjRvYnl3Z2Rpa2dlMXh5WEc0Z0lDQWdUMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S0c4c0lGd2laR1ZtWVhWc2RGd2lMQ0I3SUdWdWRXMWxjbUZpYkdVNklIUnlkV1VzSUhaaGJIVmxPaUIySUgwcE8xeHlYRzU5S1NBNklHWjFibU4wYVc5dUtHOHNJSFlwSUh0Y2NseHVJQ0FnSUc5YlhDSmtaV1poZFd4MFhDSmRJRDBnZGp0Y2NseHVmVHRjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMmx0Y0c5eWRGTjBZWElvYlc5a0tTQjdYSEpjYmlBZ0lDQnBaaUFvYlc5a0lDWW1JRzF2WkM1ZlgyVnpUVzlrZFd4bEtTQnlaWFIxY200Z2JXOWtPMXh5WEc0Z0lDQWdkbUZ5SUhKbGMzVnNkQ0E5SUh0OU8xeHlYRzRnSUNBZ2FXWWdLRzF2WkNBaFBTQnVkV3hzS1NCbWIzSWdLSFpoY2lCcklHbHVJRzF2WkNrZ2FXWWdLR3NnSVQwOUlGd2laR1ZtWVhWc2RGd2lJQ1ltSUU5aWFtVmpkQzV3Y205MGIzUjVjR1V1YUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNodGIyUXNJR3NwS1NCZlgyTnlaV0YwWlVKcGJtUnBibWNvY21WemRXeDBMQ0J0YjJRc0lHc3BPMXh5WEc0Z0lDQWdYMTl6WlhSTmIyUjFiR1ZFWldaaGRXeDBLSEpsYzNWc2RDd2diVzlrS1R0Y2NseHVJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUTdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJsdGNHOXlkRVJsWm1GMWJIUW9iVzlrS1NCN1hISmNiaUFnSUNCeVpYUjFjbTRnS0cxdlpDQW1KaUJ0YjJRdVgxOWxjMDF2WkhWc1pTa2dQeUJ0YjJRZ09pQjdJR1JsWm1GMWJIUTZJRzF2WkNCOU8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTlqYkdGemMxQnlhWFpoZEdWR2FXVnNaRWRsZENoeVpXTmxhWFpsY2l3Z2MzUmhkR1VzSUd0cGJtUXNJR1lwSUh0Y2NseHVJQ0FnSUdsbUlDaHJhVzVrSUQwOVBTQmNJbUZjSWlBbUppQWhaaWtnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lsQnlhWFpoZEdVZ1lXTmpaWE56YjNJZ2QyRnpJR1JsWm1sdVpXUWdkMmwwYUc5MWRDQmhJR2RsZEhSbGNsd2lLVHRjY2x4dUlDQWdJR2xtSUNoMGVYQmxiMllnYzNSaGRHVWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQS9JSEpsWTJWcGRtVnlJQ0U5UFNCemRHRjBaU0I4ZkNBaFppQTZJQ0Z6ZEdGMFpTNW9ZWE1vY21WalpXbDJaWElwS1NCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lRMkZ1Ym05MElISmxZV1FnY0hKcGRtRjBaU0J0WlcxaVpYSWdabkp2YlNCaGJpQnZZbXBsWTNRZ2QyaHZjMlVnWTJ4aGMzTWdaR2xrSUc1dmRDQmtaV05zWVhKbElHbDBYQ0lwTzF4eVhHNGdJQ0FnY21WMGRYSnVJR3RwYm1RZ1BUMDlJRndpYlZ3aUlEOGdaaUE2SUd0cGJtUWdQVDA5SUZ3aVlWd2lJRDhnWmk1allXeHNLSEpsWTJWcGRtVnlLU0E2SUdZZ1B5Qm1MblpoYkhWbElEb2djM1JoZEdVdVoyVjBLSEpsWTJWcGRtVnlLVHRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZlkyeGhjM05RY21sMllYUmxSbWxsYkdSVFpYUW9jbVZqWldsMlpYSXNJSE4wWVhSbExDQjJZV3gxWlN3Z2EybHVaQ3dnWmlrZ2UxeHlYRzRnSUNBZ2FXWWdLR3RwYm1RZ1BUMDlJRndpYlZ3aUtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpVUhKcGRtRjBaU0J0WlhSb2IyUWdhWE1nYm05MElIZHlhWFJoWW14bFhDSXBPMXh5WEc0Z0lDQWdhV1lnS0d0cGJtUWdQVDA5SUZ3aVlWd2lJQ1ltSUNGbUtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpVUhKcGRtRjBaU0JoWTJObGMzTnZjaUIzWVhNZ1pHVm1hVzVsWkNCM2FYUm9iM1YwSUdFZ2MyVjBkR1Z5WENJcE8xeHlYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQnpkR0YwWlNBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUQ4Z2NtVmpaV2wyWlhJZ0lUMDlJSE4wWVhSbElIeDhJQ0ZtSURvZ0lYTjBZWFJsTG1oaGN5aHlaV05sYVhabGNpa3BJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKRFlXNXViM1FnZDNKcGRHVWdjSEpwZG1GMFpTQnRaVzFpWlhJZ2RHOGdZVzRnYjJKcVpXTjBJSGRvYjNObElHTnNZWE56SUdScFpDQnViM1FnWkdWamJHRnlaU0JwZEZ3aUtUdGNjbHh1SUNBZ0lISmxkSFZ5YmlBb2EybHVaQ0E5UFQwZ1hDSmhYQ0lnUHlCbUxtTmhiR3dvY21WalpXbDJaWElzSUhaaGJIVmxLU0E2SUdZZ1B5Qm1MblpoYkhWbElEMGdkbUZzZFdVZ09pQnpkR0YwWlM1elpYUW9jbVZqWldsMlpYSXNJSFpoYkhWbEtTa3NJSFpoYkhWbE8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTlqYkdGemMxQnlhWFpoZEdWR2FXVnNaRWx1S0hOMFlYUmxMQ0J5WldObGFYWmxjaWtnZTF4eVhHNGdJQ0FnYVdZZ0tISmxZMlZwZG1WeUlEMDlQU0J1ZFd4c0lIeDhJQ2gwZVhCbGIyWWdjbVZqWldsMlpYSWdJVDA5SUZ3aWIySnFaV04wWENJZ0ppWWdkSGx3Wlc5bUlISmxZMlZwZG1WeUlDRTlQU0JjSW1aMWJtTjBhVzl1WENJcEtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpUTJGdWJtOTBJSFZ6WlNBbmFXNG5JRzl3WlhKaGRHOXlJRzl1SUc1dmJpMXZZbXBsWTNSY0lpazdYSEpjYmlBZ0lDQnlaWFIxY200Z2RIbHdaVzltSUhOMFlYUmxJRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdQeUJ5WldObGFYWmxjaUE5UFQwZ2MzUmhkR1VnT2lCemRHRjBaUzVvWVhNb2NtVmpaV2wyWlhJcE8xeHlYRzU5WEhKY2JpSXNJbWx0Y0c5eWRDQjBlWEJsSUhzZ1IweFVSaUI5SUdaeWIyMGdKM1JvY21WbEwyVjRZVzF3YkdWekwycHpiUzlzYjJGa1pYSnpMMGRNVkVaTWIyRmtaWEl1YW5Nbk8xeHVhVzF3YjNKMElIc2dSMHhVUmlCaGN5QkhURlJHVTJOb1pXMWhJSDBnWm5KdmJTQW5RR2RzZEdZdGRISmhibk5tYjNKdEwyTnZjbVVuTzF4dVhHNW1kVzVqZEdsdmJpQmxlSFJ5WVdOMFVISnBiV2wwYVhabGMwbHVkR1Z5Ym1Gc0tHZHNkR1k2SUVkTVZFWXNJRzV2WkdWSmJtUmxlRG9nYm5WdFltVnlMQ0J1YjJSbE9pQlVTRkpGUlM1UFltcGxZM1F6UkNrNklGUklVa1ZGTGsxbGMyaGJYU0I4SUc1MWJHd2dlMXh1SUNCamIyNXpkQ0JxYzI5dUlEMGdaMngwWmk1d1lYSnpaWEl1YW5OdmJpQmhjeUJIVEZSR1UyTm9aVzFoTGtsSFRGUkdPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQk1aWFFuY3lCc2FYTjBJSFZ3SUdWMlpYSjVJSEJ2YzNOcFlteGxJSEJoZEhSbGNtNXpJSFJvWVhRZ2NHRnljMlZrSUdkc2RHWWdibTlrWlhNZ2QybDBhQ0JoSUcxbGMyZ2dZMkZ1SUdoaGRtVXNMQ3hjYmlBZ0lDcGNiaUFnSUNvZ1hDSXFYQ0lnYVc1a2FXTmhkR1Z6SUhSb1lYUWdkR2h2YzJVZ2JXVnphR1Z6SUhOb2IzVnNaQ0JpWlNCc2FYTjBaV1FnZFhBZ2RYTnBibWNnZEdocGN5Qm1kVzVqZEdsdmJseHVJQ0FnS2x4dUlDQWdLaUFqSXlNZ1FTQnViMlJsSUhkcGRHZ2dZU0FvYldWemFDd2dZU0J6YVdkdWJHVWdjSEpwYldsMGFYWmxLVnh1SUNBZ0tseHVJQ0FnS2lBdElHQlVTRkpGUlM1TlpYTm9ZRG9nVkdobElHOXViSGtnY0hKcGJXbDBhWFpsSUc5bUlIUm9aU0J0WlhOb0lDcGNiaUFnSUNwY2JpQWdJQ29nSXlNaklFRWdibTlrWlNCM2FYUm9JR0VnS0cxbGMyZ3NJRzExYkhScGNHeGxJSEJ5YVcxcGRHbDJaWE1wWEc0Z0lDQXFYRzRnSUNBcUlDMGdZRlJJVWtWRkxrZHliM1Z3WURvZ1ZHaGxJSEp2YjNRZ2IyWWdkR2hsSUcxbGMyaGNiaUFnSUNvZ0lDQXRJR0JVU0ZKRlJTNU5aWE5vWURvZ1FTQndjbWx0YVhScGRtVWdiMllnZEdobElHMWxjMmdnS2x4dUlDQWdLaUFnSUMwZ1lGUklVa1ZGTGsxbGMyaGdPaUJCSUhCeWFXMXBkR2wyWlNCdlppQjBhR1VnYldWemFDQW9NaWtnS2x4dUlDQWdLbHh1SUNBZ0tpQWpJeU1nUVNCdWIyUmxJSGRwZEdnZ1lTQW9iV1Z6YUN3Z2JYVnNkR2x3YkdVZ2NISnBiV2wwYVhabGN5a2dRVTVFSUNoaElHTm9hV3hrSUhkcGRHZ2dZU0J0WlhOb0xDQmhJSE5wYm1kc1pTQndjbWx0YVhScGRtVXBYRzRnSUNBcVhHNGdJQ0FxSUMwZ1lGUklVa1ZGTGtkeWIzVndZRG9nVkdobElISnZiM1FnYjJZZ2RHaGxJRzFsYzJoY2JpQWdJQ29nSUNBdElHQlVTRkpGUlM1TlpYTm9ZRG9nUVNCd2NtbHRhWFJwZG1VZ2IyWWdkR2hsSUcxbGMyZ2dLbHh1SUNBZ0tpQWdJQzBnWUZSSVVrVkZMazFsYzJoZ09pQkJJSEJ5YVcxcGRHbDJaU0J2WmlCMGFHVWdiV1Z6YUNBb01pa2dLbHh1SUNBZ0tpQWdJQzBnWUZSSVVrVkZMazFsYzJoZ09pQkJJSEJ5YVcxcGRHbDJaU0J2WmlCaElFMUZVMGdnVDBZZ1ZFaEZJRU5JU1V4RVhHNGdJQ0FxWEc0Z0lDQXFJQ01qSXlCQklHNXZaR1VnZDJsMGFDQmhJQ2h0WlhOb0xDQnRkV3gwYVhCc1pTQndjbWx0YVhScGRtVnpLU0JCVGtRZ0tHRWdZMmhwYkdRZ2QybDBhQ0JoSUcxbGMyZ3NJRzExYkhScGNHeGxJSEJ5YVcxcGRHbDJaWE1wWEc0Z0lDQXFYRzRnSUNBcUlDMGdZRlJJVWtWRkxrZHliM1Z3WURvZ1ZHaGxJSEp2YjNRZ2IyWWdkR2hsSUcxbGMyaGNiaUFnSUNvZ0lDQXRJR0JVU0ZKRlJTNU5aWE5vWURvZ1FTQndjbWx0YVhScGRtVWdiMllnZEdobElHMWxjMmdnS2x4dUlDQWdLaUFnSUMwZ1lGUklVa1ZGTGsxbGMyaGdPaUJCSUhCeWFXMXBkR2wyWlNCdlppQjBhR1VnYldWemFDQW9NaWtnS2x4dUlDQWdLaUFnSUMwZ1lGUklVa1ZGTGtkeWIzVndZRG9nVkdobElISnZiM1FnYjJZZ1lTQk5SVk5JSUU5R0lGUklSU0JEU0VsTVJGeHVJQ0FnS2lBZ0lDQWdMU0JnVkVoU1JVVXVUV1Z6YUdBNklFRWdjSEpwYldsMGFYWmxJRzltSUhSb1pTQnRaWE5vSUc5bUlIUm9aU0JqYUdsc1pGeHVJQ0FnS2lBZ0lDQWdMU0JnVkVoU1JVVXVUV1Z6YUdBNklFRWdjSEpwYldsMGFYWmxJRzltSUhSb1pTQnRaWE5vSUc5bUlIUm9aU0JqYUdsc1pDQW9NaWxjYmlBZ0lDcGNiaUFnSUNvZ0l5TWpJRUVnYm05a1pTQjNhWFJvSUdFZ0tHMWxjMmdzSUcxMWJIUnBjR3hsSUhCeWFXMXBkR2wyWlhNcElFSlZWQ0IwYUdVZ2JtOWtaU0JwY3lCaElHSnZibVZjYmlBZ0lDcGNiaUFnSUNvZ0xTQmdWRWhTUlVVdVFtOXVaV0E2SUZSb1pTQnliMjkwSUc5bUlIUm9aU0J1YjJSbExDQmhjeUJoSUdKdmJtVmNiaUFnSUNvZ0lDQXRJR0JVU0ZKRlJTNUhjbTkxY0dBNklGUm9aU0J5YjI5MElHOW1JSFJvWlNCdFpYTm9YRzRnSUNBcUlDQWdJQ0F0SUdCVVNGSkZSUzVOWlhOb1lEb2dRU0J3Y21sdGFYUnBkbVVnYjJZZ2RHaGxJRzFsYzJnZ0tseHVJQ0FnS2lBZ0lDQWdMU0JnVkVoU1JVVXVUV1Z6YUdBNklFRWdjSEpwYldsMGFYWmxJRzltSUhSb1pTQnRaWE5vSUNneUtTQXFYRzRnSUNBcVhHNGdJQ0FxSUNNakl5QkJJRzV2WkdVZ2QybDBhQ0JoSUNodFpYTm9MQ0J0ZFd4MGFYQnNaU0J3Y21sdGFYUnBkbVZ6S1NCQlRrUWdLR0VnWTJocGJHUWdkMmwwYUNCaElHMWxjMmdzSUcxMWJIUnBjR3hsSUhCeWFXMXBkR2wyWlhNcElFSlZWQ0IwYUdVZ2JtOWtaU0JwY3lCaElHSnZibVZjYmlBZ0lDcGNiaUFnSUNvZ0xTQmdWRWhTUlVVdVFtOXVaV0E2SUZSb1pTQnliMjkwSUc5bUlIUm9aU0J1YjJSbExDQmhjeUJoSUdKdmJtVmNiaUFnSUNvZ0lDQXRJR0JVU0ZKRlJTNUhjbTkxY0dBNklGUm9aU0J5YjI5MElHOW1JSFJvWlNCdFpYTm9YRzRnSUNBcUlDQWdJQ0F0SUdCVVNGSkZSUzVOWlhOb1lEb2dRU0J3Y21sdGFYUnBkbVVnYjJZZ2RHaGxJRzFsYzJnZ0tseHVJQ0FnS2lBZ0lDQWdMU0JnVkVoU1JVVXVUV1Z6YUdBNklFRWdjSEpwYldsMGFYWmxJRzltSUhSb1pTQnRaWE5vSUNneUtTQXFYRzRnSUNBcUlDQWdMU0JnVkVoU1JVVXVSM0p2ZFhCZ09pQlVhR1VnY205dmRDQnZaaUJoSUUxRlUwZ2dUMFlnVkVoRklFTklTVXhFWEc0Z0lDQXFJQ0FnSUNBdElHQlVTRkpGUlM1TlpYTm9ZRG9nUVNCd2NtbHRhWFJwZG1VZ2IyWWdkR2hsSUcxbGMyZ2diMllnZEdobElHTm9hV3hrWEc0Z0lDQXFJQ0FnSUNBdElHQlVTRkpGUlM1TlpYTm9ZRG9nUVNCd2NtbHRhWFJwZG1VZ2IyWWdkR2hsSUcxbGMyZ2diMllnZEdobElHTm9hV3hrSUNneUtWeHVJQ0FnS2x4dUlDQWdLaUF1TGk1SklIZHBiR3dnZEdGclpTQmhJSE4wY21GMFpXZDVJSFJvWVhRZ2RISmhkbVZ5YzJWeklIUm9aU0J5YjI5MElHOW1JSFJvWlNCdWIyUmxJR0Z1WkNCMFlXdGxJR1pwY25OMElDaHdjbWx0YVhScGRtVkRiM1Z1ZENrZ2JXVnphR1Z6TGx4dUlDQWdLaTljYmx4dUlDQXZMeUJOWVd0bElITjFjbVVnZEdoaGRDQjBhR1VnYm05a1pTQm9ZWE1nWVNCdFpYTm9YRzRnSUdOdmJuTjBJSE5qYUdWdFlVNXZaR1VnUFNCcWMyOXVMbTV2WkdWelB5NWJibTlrWlVsdVpHVjRYVHRjYmlBZ2FXWWdLSE5qYUdWdFlVNXZaR1VnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJR052Ym5OdmJHVXVkMkZ5YmloZ1pYaDBjbUZqZEZCeWFXMXBkR2wyWlhOSmJuUmxjbTVoYkRvZ1FYUjBaVzF3ZENCMGJ5QjFjMlVnYm05a1pYTmJKSHR1YjJSbFNXNWtaWGg5WFNCdlppQm5iRlJHSUdKMWRDQjBhR1VnYm05a1pTQmtiMlZ6YmlkMElHVjRhWE4wWUNrN1hHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDFjYmx4dUlDQmpiMjV6ZENCdFpYTm9TVzVrWlhnZ1BTQnpZMmhsYldGT2IyUmxMbTFsYzJnN1hHNGdJR2xtSUNodFpYTm9TVzVrWlhnZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdMeThnU0c5M0lHMWhibmtnY0hKcGJXbDBhWFpsY3lCMGFHVWdiV1Z6YUNCb1lYTS9YRzRnSUdOdmJuTjBJSE5qYUdWdFlVMWxjMmdnUFNCcWMyOXVMbTFsYzJobGN6OHVXMjFsYzJoSmJtUmxlRjA3WEc0Z0lHbG1JQ2h6WTJobGJXRk5aWE5vSUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0JqYjI1emIyeGxMbmRoY200b1lHVjRkSEpoWTNSUWNtbHRhWFJwZG1WelNXNTBaWEp1WVd3NklFRjBkR1Z0Y0hRZ2RHOGdkWE5sSUcxbGMyaGxjMXNrZTIxbGMyaEpibVJsZUgxZElHOW1JR2RzVkVZZ1luVjBJSFJvWlNCdFpYTm9JR1J2WlhOdUozUWdaWGhwYzNSZ0tUdGNiaUFnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnZlZ4dVhHNGdJR052Ym5OMElIQnlhVzFwZEdsMlpVTnZkVzUwSUQwZ2MyTm9aVzFoVFdWemFDNXdjbWx0YVhScGRtVnpMbXhsYm1kMGFEdGNibHh1SUNBdkx5QlVjbUYyWlhKelpTQjBhR1VnYm05a1pTQmhibVFnZEdGclpTQm1hWEp6ZENBb2NISnBiV2wwYVhabFEyOTFiblFwSUcxbGMyaGxjMXh1SUNCamIyNXpkQ0J3Y21sdGFYUnBkbVZ6T2lCVVNGSkZSUzVOWlhOb1cxMGdQU0JiWFR0Y2JpQWdibTlrWlM1MGNtRjJaWEp6WlNnb2IySnFaV04wS1NBOVBpQjdYRzRnSUNBZ2FXWWdLSEJ5YVcxcGRHbDJaWE11YkdWdVozUm9JRHdnY0hKcGJXbDBhWFpsUTI5MWJuUXBJSHRjYmlBZ0lDQWdJR2xtSUNnb2IySnFaV04wSUdGeklHRnVlU2t1YVhOTlpYTm9LU0I3WEc0Z0lDQWdJQ0FnSUhCeWFXMXBkR2wyWlhNdWNIVnphQ2h2WW1wbFkzUWdZWE1nVkVoU1JVVXVUV1Z6YUNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlLVHRjYmx4dUlDQnlaWFIxY200Z2NISnBiV2wwYVhabGN6dGNibjFjYmx4dUx5b3FYRzRnS2lCRmVIUnlZV04wSUhCeWFXMXBkR2wyWlhNZ0tDQmdWRWhTUlVVdVRXVnphRnRkWUNBcElHOW1JR0VnYm05a1pTQm1jbTl0SUdFZ2JHOWhaR1ZrSUVkTVZFWXVYRzRnS2lCVWFHVWdiV0ZwYmlCd2RYSndiM05sSUc5bUlIUm9hWE1nWm5WdVkzUnBiMjRnYVhNZ2RHOGdaR2x6ZEdsdVozVnBjMmdnY0hKcGJXbDBhWFpsY3lCaGJtUWdZMmhwYkdSeVpXNGdabkp2YlNCaElHNXZaR1VnZEdoaGRDQm9ZWE1nWW05MGFDQnRaWE5vWlhNZ1lXNWtJR05vYVd4a2NtVnVMbHh1SUNwY2JpQXFJRWwwSUhWMGFXeHBlbVZ6SUhSb1pTQmlaV2hoZG1sdmNpQjBhR0YwSUVkTVZFWk1iMkZrWlhJZ1lXUmtjeUJ0WlhOb0lIQnlhVzFwZEdsMlpYTWdkRzhnZEdobElHNXZaR1VnYjJKcVpXTjBJQ2dnWUZSSVVrVkZMa2R5YjNWd1lDQXBJR1pwY25OMElIUm9aVzRnWVdSa2N5QnBkSE1nWTJocGJHUnlaVzR1WEc0Z0tseHVJQ29nUUhCaGNtRnRJR2RzZEdZZ1FTQkhURlJHSUc5aWFtVmpkQ0IwWVd0bGJpQm1jbTl0SUVkTVZFWk1iMkZrWlhKY2JpQXFJRUJ3WVhKaGJTQnViMlJsU1c1a1pYZ2dWR2hsSUdsdVpHVjRJRzltSUhSb1pTQnViMlJsWEc0Z0tpOWNibVY0Y0c5eWRDQmhjM2x1WXlCbWRXNWpkR2x2YmlCbmJIUm1SWGgwY21GamRGQnlhVzFwZEdsMlpYTkdjbTl0VG05a1pTaG5iSFJtT2lCSFRGUkdMQ0J1YjJSbFNXNWtaWGc2SUc1MWJXSmxjaWs2SUZCeWIyMXBjMlU4VkVoU1JVVXVUV1Z6YUZ0ZElId2diblZzYkQ0Z2UxeHVJQ0JqYjI1emRDQnViMlJsT2lCVVNGSkZSUzVQWW1wbFkzUXpSQ0E5SUdGM1lXbDBJR2RzZEdZdWNHRnljMlZ5TG1kbGRFUmxjR1Z1WkdWdVkza29KMjV2WkdVbkxDQnViMlJsU1c1a1pYZ3BPMXh1SUNCeVpYUjFjbTRnWlhoMGNtRmpkRkJ5YVcxcGRHbDJaWE5KYm5SbGNtNWhiQ2huYkhSbUxDQnViMlJsU1c1a1pYZ3NJRzV2WkdVcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVWNGRISmhZM1FnY0hKcGJXbDBhWFpsY3lBb0lHQlVTRkpGUlM1TlpYTm9XMTFnSUNrZ2IyWWdibTlrWlhNZ1puSnZiU0JoSUd4dllXUmxaQ0JIVEZSR0xseHVJQ29nVTJWbElIdEFiR2x1YXlCbmJIUm1SWGgwY21GamRGQnlhVzFwZEdsMlpYTkdjbTl0VG05a1pYMGdabTl5SUcxdmNtVWdaR1YwWVdsc2N5NWNiaUFxWEc0Z0tpQkpkQ0J5WlhSMWNtNXpJR0VnYldGd0lHWnliMjBnYm05a1pTQnBibVJsZUNCMGJ5QmxlSFJ5WVdOMGFXOXVJSEpsYzNWc2RDNWNiaUFxSUVsbUlHRWdibTlrWlNCa2IyVnpJRzV2ZENCb1lYWmxJR0VnYldWemFDd2dkR2hsSUdWdWRISjVJR1p2Y2lCMGFHVWdibTlrWlNCM2FXeHNJRzV2ZENCaVpTQndkWFFnYVc0Z2RHaGxJSEpsZEhWeWJtbHVaeUJ0WVhBdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUdkc2RHWWdRU0JIVEZSR0lHOWlhbVZqZENCMFlXdGxiaUJtY205dElFZE1WRVpNYjJGa1pYSmNiaUFxTDF4dVpYaHdiM0owSUdGemVXNWpJR1oxYm1OMGFXOXVJR2RzZEdaRmVIUnlZV04wVUhKcGJXbDBhWFpsYzBaeWIyMU9iMlJsY3lobmJIUm1PaUJIVEZSR0tUb2dVSEp2YldselpUeE5ZWEE4Ym5WdFltVnlMQ0JVU0ZKRlJTNU5aWE5vVzEwK1BpQjdYRzRnSUdOdmJuTjBJRzV2WkdWek9pQlVTRkpGUlM1UFltcGxZM1F6UkZ0ZElEMGdZWGRoYVhRZ1oyeDBaaTV3WVhKelpYSXVaMlYwUkdWd1pXNWtaVzVqYVdWektDZHViMlJsSnlrN1hHNGdJR052Ym5OMElHMWhjQ0E5SUc1bGR5Qk5ZWEE4Ym5WdFltVnlMQ0JVU0ZKRlJTNU5aWE5vVzEwK0tDazdYRzVjYmlBZ2JtOWtaWE11Wm05eVJXRmphQ2dvYm05a1pTd2dhVzVrWlhncElEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCeVpYTjFiSFFnUFNCbGVIUnlZV04wVUhKcGJXbDBhWFpsYzBsdWRHVnlibUZzS0dkc2RHWXNJR2x1WkdWNExDQnViMlJsS1R0Y2JpQWdJQ0JwWmlBb2NtVnpkV3gwSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUcxaGNDNXpaWFFvYVc1a1pYZ3NJSEpsYzNWc2RDazdYRzRnSUNBZ2ZWeHVJQ0I5S1R0Y2JseHVJQ0J5WlhSMWNtNGdiV0Z3TzF4dWZWeHVJaXdpYVcxd2IzSjBJQ29nWVhNZ1ZFaFNSVVVnWm5KdmJTQW5kR2h5WldVbk8xeHVhVzF3YjNKMElIc2dSMHhVUmxCaGNuTmxjaUI5SUdaeWIyMGdKM1JvY21WbEwyVjRZVzF3YkdWekwycHpiUzlzYjJGa1pYSnpMMGRNVkVaTWIyRmtaWEl1YW5Nbk8xeHVYRzR2S2lwY2JpQXFJRWRsZENCaElHMWhkR1Z5YVdGc0lHUmxabWx1YVhScGIyNGdhVzVrWlhnZ2IyWWdaMnhVUmlCbWNtOXRJR0Z6YzI5amFXRjBaV1FnYldGMFpYSnBZV3d1WEc0Z0tpQkpkQ2R6SUdKaGMybGpZV3hzZVNCaElHTnZiV0YwSUdOdlpHVWdZbVYwZDJWbGJpQlVhSEpsWlM1cWN5QnlNVE16SUc5eUlHRmliM1psSUdGdVpDQndjbVYyYVc5MWN5QjJaWEp6YVc5dWN5NWNiaUFxSUVCd1lYSmhiU0J3WVhKelpYSWdSMHhVUmxCaGNuTmxjbHh1SUNvZ1FIQmhjbUZ0SUcxaGRHVnlhV0ZzSUVFZ2JXRjBaWEpwWVd3Z2IyWWdaMngwWmx4dUlDb2dRSEpsZEhWeWJuTWdUV0YwWlhKcFlXd2daR1ZtYVc1cGRHbHZiaUJwYm1SbGVDQnZaaUJuYkZSR1hHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJuYkhSbVIyVjBRWE56YjJOcFlYUmxaRTFoZEdWeWFXRnNTVzVrWlhnb2NHRnljMlZ5T2lCSFRGUkdVR0Z5YzJWeUxDQnRZWFJsY21saGJEb2dWRWhTUlVVdVRXRjBaWEpwWVd3cE9pQnVkVzFpWlhJZ2ZDQnVkV3hzSUh0Y2JpQWdZMjl1YzNRZ2RHaHlaV1ZTWlhacGMybHZiaUE5SUhCaGNuTmxTVzUwS0ZSSVVrVkZMbEpGVmtsVFNVOU9MQ0F4TUNrN1hHNWNiaUFnYkdWMElHbHVaR1Y0T2lCdWRXMWlaWElnZkNCdWRXeHNJRDBnYm5Wc2JEdGNibHh1SUNCcFppQW9kR2h5WldWU1pYWnBjMmx2YmlBK1BTQXhNek1wSUh0Y2JpQWdJQ0JwYm1SbGVDQTlJSEJoY25ObGNpNWhjM052WTJsaGRHbHZibk11WjJWMEtHMWhkR1Z5YVdGc0tUOHViV0YwWlhKcFlXeHpJRDgvSUc1MWJHdzdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdMeThnUTA5TlVFRlVPaUJ6ZEhKMVkzUjFjbVVnYjJZZ1lIQmhjbk5sY2k1aGMzTnZZMmxoZEdsdmJuTmdJR2hoY3lCaVpXVnVJR05vWVc1blpXUWdRQ0J5TVRNelhHNGdJQ0FnTHk4Z1UyVmxPaUJvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2YlhKa2IyOWlMM1JvY21WbExtcHpMM0IxYkd3dk1qRTNNemRjYmlBZ0lDQXZMeUJTWldZNklHaDBkSEJ6T2k4dloybDBhSFZpTG1OdmJTOTBhSEpsWlMxMGVYQmxjeTkwYUhKbFpTMTBjeTEwZVhCbGN5OWpiMjF0YVhRdk5USTBOalkzTm1VME56bGlOakZoT1dabU1tUmlOekZrWmpReE1UbG1ObVl4TkRZeU5UZ3daRnh1SUNBZ0lIUjVjR1VnUjB4VVJsSmxabVZ5Wlc1alpWQnlaVEV6TXlBOUlIdGNiaUFnSUNBZ0lIUjVjR1U2SUNkdFlYUmxjbWxoYkhNbklId2dKMjV2WkdWekp5QjhJQ2QwWlhoMGRYSmxjeWNnZkNBbmJXVnphR1Z6Snp0Y2JpQWdJQ0FnSUdsdVpHVjRPaUJ1ZFcxaVpYSTdYRzRnSUNBZ2ZUdGNibHh1SUNBZ0lIUjVjR1VnUjB4VVJrRnpjMjlqYVdGMGFXOXVjMUJ5WlRFek15QTlJRTFoY0R4VVNGSkZSUzVQWW1wbFkzUXpSQ0I4SUZSSVVrVkZMazFoZEdWeWFXRnNJSHdnVkVoU1JVVXVWR1Y0ZEhWeVpTd2dSMHhVUmxKbFptVnlaVzVqWlZCeVpURXpNejQ3WEc1Y2JpQWdJQ0JqYjI1emRDQmhjM052WTJsaGRHbHZibk1nUFNCd1lYSnpaWEl1WVhOemIyTnBZWFJwYjI1eklHRnpJRWRNVkVaQmMzTnZZMmxoZEdsdmJuTlFjbVV4TXpNN1hHNWNiaUFnSUNCamIyNXpkQ0J5WldabGNtVnVZMlVnUFNCaGMzTnZZMmxoZEdsdmJuTXVaMlYwS0cxaGRHVnlhV0ZzS1R0Y2JseHVJQ0FnSUdsbUlDaHlaV1psY21WdVkyVS9MblI1Y0dVZ1BUMDlJQ2R0WVhSbGNtbGhiSE1uS1NCN1hHNGdJQ0FnSUNCcGJtUmxlQ0E5SUhKbFptVnlaVzVqWlM1cGJtUmxlRHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdhVzVrWlhnN1hHNTlYRzRpTENJdktpQmxjMnhwYm5RdFpHbHpZV0pzWlNCQWRIbHdaWE5qY21sd2RDMWxjMnhwYm5RdmJtRnRhVzVuTFdOdmJuWmxiblJwYjI0Z0tpOWNibHh1Wlhod2IzSjBJR052Ym5OMElGWlNUVVY0Y0hKbGMzTnBiMjVRY21WelpYUk9ZVzFsSUQwZ2UxeHVJQ0JCWVRvZ0oyRmhKeXhjYmlBZ1NXZzZJQ2RwYUNjc1hHNGdJRTkxT2lBbmIzVW5MRnh1SUNCRlpUb2dKMlZsSnl4Y2JpQWdUMmc2SUNkdmFDY3NYRzRnSUVKc2FXNXJPaUFuWW14cGJtc25MRnh1SUNCSVlYQndlVG9nSjJoaGNIQjVKeXhjYmlBZ1FXNW5jbms2SUNkaGJtZHllU2NzWEc0Z0lGTmhaRG9nSjNOaFpDY3NYRzRnSUZKbGJHRjRaV1E2SUNkeVpXeGhlR1ZrSnl4Y2JpQWdURzl2YTFWd09pQW5iRzl2YTFWd0p5eGNiaUFnVTNWeWNISnBjMlZrT2lBbmMzVnljSEpwYzJWa0p5eGNiaUFnVEc5dmEwUnZkMjQ2SUNkc2IyOXJSRzkzYmljc1hHNGdJRXh2YjJ0TVpXWjBPaUFuYkc5dmEweGxablFuTEZ4dUlDQk1iMjlyVW1sbmFIUTZJQ2RzYjI5clVtbG5hSFFuTEZ4dUlDQkNiR2x1YTB4bFpuUTZJQ2RpYkdsdWEweGxablFuTEZ4dUlDQkNiR2x1YTFKcFoyaDBPaUFuWW14cGJtdFNhV2RvZENjc1hHNGdJRTVsZFhSeVlXdzZJQ2R1WlhWMGNtRnNKeXhjYm4wZ1lYTWdZMjl1YzNRN1hHNWNibVY0Y0c5eWRDQjBlWEJsSUZaU1RVVjRjSEpsYzNOcGIyNVFjbVZ6WlhST1lXMWxJRDBnZEhsd1pXOW1JRlpTVFVWNGNISmxjM05wYjI1UWNtVnpaWFJPWVcxbFcydGxlVzltSUhSNWNHVnZaaUJXVWsxRmVIQnlaWE56YVc5dVVISmxjMlYwVG1GdFpWMDdYRzRpTENJdktpcGNiaUFxSUVOc1lXMXdJSFJvWlNCcGJuQjFkQ0IyWVd4MVpTQjNhWFJvYVc0Z1d6QXVNQ0F0SURFdU1GMHVYRzRnS2x4dUlDb2dRSEJoY21GdElIWmhiSFZsSUZSb1pTQnBibkIxZENCMllXeDFaVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2MyRjBkWEpoZEdVb2RtRnNkV1U2SUc1MWJXSmxjaWs2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCTllYUm9MbTFoZUNoTllYUm9MbTFwYmloMllXeDFaU3dnTVM0d0tTd2dNQzR3S1R0Y2JuMWNiaUlzSW1sdGNHOXlkQ0I3SUZaU1RVVjRjSEpsYzNOcGIyNVFjbVZ6WlhST1lXMWxJSDBnWm5KdmJTQW5MaTlXVWsxRmVIQnlaWE56YVc5dVVISmxjMlYwVG1GdFpTYzdYRzVwYlhCdmNuUWdleUJ6WVhSMWNtRjBaU0I5SUdaeWIyMGdKeTR1TDNWMGFXeHpMM05oZEhWeVlYUmxKenRjYm1sdGNHOXlkQ0IwZVhCbElIc2dWbEpOUlhod2NtVnpjMmx2YmlCOUlHWnliMjBnSnk0dlZsSk5SWGh3Y21WemMybHZiaWM3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJXVWsxRmVIQnlaWE56YVc5dVRXRnVZV2RsY2lCN1hHNGdJQzhxS2x4dUlDQWdLaUJCSUhObGRDQnZaaUJ1WVcxbElHOXlJSEJ5WlhObGRDQnVZVzFsSUc5bUlHVjRjSEpsYzNOcGIyNXpJSFJvWVhRZ2QybHNiQ0JpWlNCdmRtVnljbWxrWkdWdUlHSjVJSHRBYkdsdWF5QldVazFGZUhCeVpYTnphVzl1TG05MlpYSnlhV1JsUW14cGJtdDlMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0pzYVc1clJYaHdjbVZ6YzJsdmJrNWhiV1Z6SUQwZ1d5ZGliR2x1YXljc0lDZGliR2x1YTB4bFpuUW5MQ0FuWW14cGJtdFNhV2RvZENkZE8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCQklITmxkQ0J2WmlCdVlXMWxJRzl5SUhCeVpYTmxkQ0J1WVcxbElHOW1JR1Y0Y0hKbGMzTnBiMjV6SUhSb1lYUWdkMmxzYkNCaVpTQnZkbVZ5Y21sa1pHVnVJR0o1SUh0QWJHbHVheUJXVWsxRmVIQnlaWE56YVc5dUxtOTJaWEp5YVdSbFRHOXZhMEYwZlM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCc2IyOXJRWFJGZUhCeVpYTnphVzl1VG1GdFpYTWdQU0JiSjJ4dmIydE1aV1owSnl3Z0oyeHZiMnRTYVdkb2RDY3NJQ2RzYjI5clZYQW5MQ0FuYkc5dmEwUnZkMjRuWFR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUVNCelpYUWdiMllnYm1GdFpTQnZjaUJ3Y21WelpYUWdibUZ0WlNCdlppQmxlSEJ5WlhOemFXOXVjeUIwYUdGMElIZHBiR3dnWW1VZ2IzWmxjbkpwWkdSbGJpQmllU0I3UUd4cGJtc2dWbEpOUlhod2NtVnpjMmx2Ymk1dmRtVnljbWxrWlUxdmRYUm9mUzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ0YjNWMGFFVjRjSEpsYzNOcGIyNU9ZVzFsY3lBOUlGc25ZV0VuTENBblpXVW5MQ0FuYVdnbkxDQW5iMmduTENBbmIzVW5YVHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRU0J6WlhRZ2IyWWdlMEJzYVc1cklGWlNUVVY0Y0hKbGMzTnBiMjU5TGx4dUlDQWdLaUJYYUdWdUlIbHZkU0IzWVc1MElIUnZJSEpsWjJsemRHVnlJR1Y0Y0hKbGMzTnBiMjV6TENCMWMyVWdlMEJzYVc1cklISmxaMmx6ZEdWeVJYaHdjbVZ6YzJsdmJuMWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdYMlY0Y0hKbGMzTnBiMjV6T2lCV1VrMUZlSEJ5WlhOemFXOXVXMTBnUFNCYlhUdGNiaUFnY0hWaWJHbGpJR2RsZENCbGVIQnlaWE56YVc5dWN5Z3BPaUJXVWsxRmVIQnlaWE56YVc5dVcxMGdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDlsZUhCeVpYTnphVzl1Y3k1amIyNWpZWFFvS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJJRzFoY0NCbWNtOXRJRzVoYldVZ2RHOGdaWGh3Y21WemMybHZiaTVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWDJWNGNISmxjM05wYjI1TllYQTZJSHNnVzI1aGJXVTZJSE4wY21sdVoxMDZJRlpTVFVWNGNISmxjM05wYjI0Z2ZTQTlJSHQ5TzF4dUlDQndkV0pzYVdNZ1oyVjBJR1Y0Y0hKbGMzTnBiMjVOWVhBb0tUb2dleUJiYm1GdFpUb2djM1J5YVc1blhUb2dWbEpOUlhod2NtVnpjMmx2YmlCOUlIdGNiaUFnSUNCeVpYUjFjbTRnVDJKcVpXTjBMbUZ6YzJsbmJpaDdmU3dnZEdocGN5NWZaWGh3Y21WemMybHZiazFoY0NrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRU0J0WVhBZ1puSnZiU0J1WVcxbElIUnZJR1Y0Y0hKbGMzTnBiMjRzSUdKMWRDQmxlR05zZFdScGJtY2dZM1Z6ZEc5dElHVjRjSEpsYzNOcGIyNXpMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZENCd2NtVnpaWFJGZUhCeVpYTnphVzl1VFdGd0tDazZJSHNnVzI1aGJXVWdhVzRnVmxKTlJYaHdjbVZ6YzJsdmJsQnlaWE5sZEU1aGJXVmRQem9nVmxKTlJYaHdjbVZ6YzJsdmJpQjlJSHRjYmlBZ0lDQmpiMjV6ZENCeVpYTjFiSFE2SUhzZ1cyNWhiV1VnYVc0Z1ZsSk5SWGh3Y21WemMybHZibEJ5WlhObGRFNWhiV1ZkUHpvZ1ZsSk5SWGh3Y21WemMybHZiaUI5SUQwZ2UzMDdYRzVjYmlBZ0lDQmpiMjV6ZENCd2NtVnpaWFJPWVcxbFUyVjBJRDBnYm1WM0lGTmxkRHh6ZEhKcGJtYytLRTlpYW1WamRDNTJZV3gxWlhNb1ZsSk5SWGh3Y21WemMybHZibEJ5WlhObGRFNWhiV1VwS1R0Y2JseHVJQ0FnSUU5aWFtVmpkQzVsYm5SeWFXVnpLSFJvYVhNdVgyVjRjSEpsYzNOcGIyNU5ZWEFwTG1admNrVmhZMmdvS0Z0dVlXMWxMQ0JsZUhCeVpYTnphVzl1WFNrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0hCeVpYTmxkRTVoYldWVFpYUXVhR0Z6S0c1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGMzVnNkRnR1WVcxbElHRnpJRlpTVFVWNGNISmxjM05wYjI1UWNtVnpaWFJPWVcxbFhTQTlJR1Y0Y0hKbGMzTnBiMjQ3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUVnYldGd0lHWnliMjBnYm1GdFpTQjBieUJsZUhCeVpYTnphVzl1TENCaWRYUWdaWGhqYkhWa2FXNW5JSEJ5WlhObGRDQmxlSEJ5WlhOemFXOXVjeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJuWlhRZ1kzVnpkRzl0Ulhod2NtVnpjMmx2YmsxaGNDZ3BPaUI3SUZ0dVlXMWxPaUJ6ZEhKcGJtZGRPaUJXVWsxRmVIQnlaWE56YVc5dUlIMGdlMXh1SUNBZ0lHTnZibk4wSUhKbGMzVnNkRG9nZXlCYmJtRnRaVG9nYzNSeWFXNW5YVG9nVmxKTlJYaHdjbVZ6YzJsdmJpQjlJRDBnZTMwN1hHNWNiaUFnSUNCamIyNXpkQ0J3Y21WelpYUk9ZVzFsVTJWMElEMGdibVYzSUZObGREeHpkSEpwYm1jK0tFOWlhbVZqZEM1MllXeDFaWE1vVmxKTlJYaHdjbVZ6YzJsdmJsQnlaWE5sZEU1aGJXVXBLVHRjYmx4dUlDQWdJRTlpYW1WamRDNWxiblJ5YVdWektIUm9hWE11WDJWNGNISmxjM05wYjI1TllYQXBMbVp2Y2tWaFkyZ29LRnR1WVcxbExDQmxlSEJ5WlhOemFXOXVYU2tnUFQ0Z2UxeHVJQ0FnSUNBZ2FXWWdLQ0Z3Y21WelpYUk9ZVzFsVTJWMExtaGhjeWh1WVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0J5WlhOMWJIUmJibUZ0WlYwZ1BTQmxlSEJ5WlhOemFXOXVPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRjbVZoZEdVZ1lTQnVaWGNnZTBCc2FXNXJJRlpTVFVWNGNISmxjM05wYjI1TllXNWhaMlZ5ZlM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpZ3BJSHRjYmlBZ0lDQXZMeUJrYnlCdWIzUm9hVzVuWEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1EyOXdlU0IwYUdVZ1oybDJaVzRnZTBCc2FXNXJJRlpTVFVWNGNISmxjM05wYjI1TllXNWhaMlZ5ZlNCcGJuUnZJSFJvYVhNZ2IyNWxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2MyOTFjbU5sSUZSb1pTQjdRR3hwYm1zZ1ZsSk5SWGh3Y21WemMybHZiazFoYm1GblpYSjlJSGx2ZFNCM1lXNTBJSFJ2SUdOdmNIbGNiaUFnSUNvZ1FISmxkSFZ5Ym5NZ2RHaHBjMXh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR052Y0hrb2MyOTFjbU5sT2lCV1VrMUZlSEJ5WlhOemFXOXVUV0Z1WVdkbGNpazZJSFJvYVhNZ2UxeHVJQ0FnSUM4dklHWnBjbk4wSUhWdWNtVm5hWE4wWlhJZ1lXeHNJSFJvWlNCbGVIQnlaWE56YVc5dUlHbDBJR2hoYzF4dUlDQWdJR052Ym5OMElHVjRjSEpsYzNOcGIyNXpJRDBnZEdocGN5NWZaWGh3Y21WemMybHZibk11WTI5dVkyRjBLQ2s3WEc0Z0lDQWdaWGh3Y21WemMybHZibk11Wm05eVJXRmphQ2dvWlhod2NtVnpjMmx2YmlrZ1BUNGdlMXh1SUNBZ0lDQWdkR2hwY3k1MWJuSmxaMmx6ZEdWeVJYaHdjbVZ6YzJsdmJpaGxlSEJ5WlhOemFXOXVLVHRjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJQzh2SUhSb1pXNGdjbVZuYVhOMFpYSWdZV3hzSUhSb1pTQmxlSEJ5WlhOemFXOXVJRzltSUhSb1pTQnpiM1Z5WTJWY2JpQWdJQ0J6YjNWeVkyVXVYMlY0Y0hKbGMzTnBiMjV6TG1admNrVmhZMmdvS0dWNGNISmxjM05wYjI0cElEMCtJSHRjYmlBZ0lDQWdJSFJvYVhNdWNtVm5hWE4wWlhKRmVIQnlaWE56YVc5dUtHVjRjSEpsYzNOcGIyNHBPMXh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdMeThnWTI5d2VTQnlaVzFoYVc1cGJtY2diV1Z0WW1WeWMxeHVJQ0FnSUhSb2FYTXVZbXhwYm10RmVIQnlaWE56YVc5dVRtRnRaWE1nUFNCemIzVnlZMlV1WW14cGJtdEZlSEJ5WlhOemFXOXVUbUZ0WlhNdVkyOXVZMkYwS0NrN1hHNGdJQ0FnZEdocGN5NXNiMjlyUVhSRmVIQnlaWE56YVc5dVRtRnRaWE1nUFNCemIzVnlZMlV1Ykc5dmEwRjBSWGh3Y21WemMybHZiazVoYldWekxtTnZibU5oZENncE8xeHVJQ0FnSUhSb2FYTXViVzkxZEdoRmVIQnlaWE56YVc5dVRtRnRaWE1nUFNCemIzVnlZMlV1Ylc5MWRHaEZlSEJ5WlhOemFXOXVUbUZ0WlhNdVkyOXVZMkYwS0NrN1hHNWNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJR0VnWTJ4dmJtVWdiMllnZEdocGN5QjdRR3hwYm1zZ1ZsSk5SWGh3Y21WemMybHZiazFoYm1GblpYSjlMbHh1SUNBZ0tpQkFjbVYwZFhKdWN5QkRiM0JwWldRZ2UwQnNhVzVySUZaU1RVVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeWZWeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHTnNiMjVsS0NrNklGWlNUVVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRlpTVFVWNGNISmxjM05wYjI1TllXNWhaMlZ5S0NrdVkyOXdlU2gwYUdsektUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNGdZU0J5WldkcGMzUmxjbVZrSUdWNGNISmxjM05wYjI0dVhHNGdJQ0FxSUVsbUlHbDBJR05oYm01dmRDQm1hVzVrSUdGdUlHVjRjSEpsYzNOcGIyNHNJR2wwSUhkcGJHd2djbVYwZFhKdUlHQnVkV3hzWUNCcGJuTjBaV0ZrTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2JtRnRaU0JPWVcxbElHOXlJSEJ5WlhObGRDQnVZVzFsSUc5bUlIUm9aU0JsZUhCeVpYTnphVzl1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWjJWMFJYaHdjbVZ6YzJsdmJpaHVZVzFsT2lCV1VrMUZlSEJ5WlhOemFXOXVVSEpsYzJWMFRtRnRaU0I4SUhOMGNtbHVaeWs2SUZaU1RVVjRjSEpsYzNOcGIyNGdmQ0J1ZFd4c0lIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZaWGh3Y21WemMybHZiazFoY0Z0dVlXMWxYU0EvUHlCdWRXeHNPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbFoybHpkR1Z5SUdGdUlHVjRjSEpsYzNOcGIyNHVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0JsZUhCeVpYTnphVzl1SUh0QWJHbHVheUJXVWsxRmVIQnlaWE56YVc5dWZTQjBhR0YwSUdSbGMyTnlhV0psY3lCMGFHVWdaWGh3Y21WemMybHZibHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSEpsWjJsemRHVnlSWGh3Y21WemMybHZiaWhsZUhCeVpYTnphVzl1T2lCV1VrMUZlSEJ5WlhOemFXOXVLVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTVmWlhod2NtVnpjMmx2Ym5NdWNIVnphQ2hsZUhCeVpYTnphVzl1S1R0Y2JpQWdJQ0IwYUdsekxsOWxlSEJ5WlhOemFXOXVUV0Z3VzJWNGNISmxjM05wYjI0dVpYaHdjbVZ6YzJsdmJrNWhiV1ZkSUQwZ1pYaHdjbVZ6YzJsdmJqdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJWYm5KbFoybHpkR1Z5SUdGdUlHVjRjSEpsYzNOcGIyNHVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0JsZUhCeVpYTnphVzl1SUZSb1pTQmxlSEJ5WlhOemFXOXVJSGx2ZFNCM1lXNTBJSFJ2SUhWdWNtVm5hWE4wWlhKY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCMWJuSmxaMmx6ZEdWeVJYaHdjbVZ6YzJsdmJpaGxlSEJ5WlhOemFXOXVPaUJXVWsxRmVIQnlaWE56YVc5dUtUb2dkbTlwWkNCN1hHNGdJQ0FnWTI5dWMzUWdhVzVrWlhnZ1BTQjBhR2x6TGw5bGVIQnlaWE56YVc5dWN5NXBibVJsZUU5bUtHVjRjSEpsYzNOcGIyNHBPMXh1SUNBZ0lHbG1JQ2hwYm1SbGVDQTlQVDBnTFRFcElIdGNiaUFnSUNBZ0lHTnZibk52YkdVdWQyRnliaWduVmxKTlJYaHdjbVZ6YzJsdmJrMWhibUZuWlhJNklGUm9aU0J6Y0dWamFXWnBaV1FnWlhod2NtVnpjMmx2Ym5NZ2FYTWdibTkwSUhKbFoybHpkR1Z5WldRbktUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbDlsZUhCeVpYTnphVzl1Y3k1emNHeHBZMlVvYVc1a1pYZ3NJREVwTzF4dUlDQWdJR1JsYkdWMFpTQjBhR2x6TGw5bGVIQnlaWE56YVc5dVRXRndXMlY0Y0hKbGMzTnBiMjR1Wlhod2NtVnpjMmx2Yms1aGJXVmRPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVkbGRDQjBhR1VnWTNWeWNtVnVkQ0IzWldsbmFIUWdiMllnZEdobElITndaV05wWm1sbFpDQmxlSEJ5WlhOemFXOXVMbHh1SUNBZ0tpQkpaaUJwZENCa2IyVnpiaWQwSUdoaGRtVWdZVzRnWlhod2NtVnpjMmx2YmlCdlppQm5hWFpsYmlCdVlXMWxMQ0JwZENCM2FXeHNJSEpsZEhWeWJpQmdiblZzYkdBZ2FXNXpkR1ZoWkM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElHNWhiV1VnVG1GdFpTQnZaaUIwYUdVZ1pYaHdjbVZ6YzJsdmJseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkRlpoYkhWbEtHNWhiV1U2SUZaU1RVVjRjSEpsYzNOcGIyNVFjbVZ6WlhST1lXMWxJSHdnYzNSeWFXNW5LVG9nYm5WdFltVnlJSHdnYm5Wc2JDQjdYRzRnSUNBZ1kyOXVjM1FnWlhod2NtVnpjMmx2YmlBOUlIUm9hWE11WjJWMFJYaHdjbVZ6YzJsdmJpaHVZVzFsS1R0Y2JpQWdJQ0J5WlhSMWNtNGdaWGh3Y21WemMybHZiajh1ZDJWcFoyaDBJRDgvSUc1MWJHdzdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVTJWMElHRWdkMlZwWjJoMElIUnZJSFJvWlNCemNHVmphV1pwWldRZ1pYaHdjbVZ6YzJsdmJpNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJRzVoYldVZ1RtRnRaU0J2WmlCMGFHVWdaWGh3Y21WemMybHZibHh1SUNBZ0tpQkFjR0Z5WVcwZ2QyVnBaMmgwSUZkbGFXZG9kRnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE5sZEZaaGJIVmxLRzVoYldVNklGWlNUVVY0Y0hKbGMzTnBiMjVRY21WelpYUk9ZVzFsSUh3Z2MzUnlhVzVuTENCM1pXbG5hSFE2SUc1MWJXSmxjaWs2SUhadmFXUWdlMXh1SUNBZ0lHTnZibk4wSUdWNGNISmxjM05wYjI0Z1BTQjBhR2x6TG1kbGRFVjRjSEpsYzNOcGIyNG9ibUZ0WlNrN1hHNGdJQ0FnYVdZZ0tHVjRjSEpsYzNOcGIyNHBJSHRjYmlBZ0lDQWdJR1Y0Y0hKbGMzTnBiMjR1ZDJWcFoyaDBJRDBnYzJGMGRYSmhkR1VvZDJWcFoyaDBLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUjJWMElHRWdkSEpoWTJzZ2JtRnRaU0J2WmlCemNHVmphV1pwWldRZ1pYaHdjbVZ6YzJsdmJpNWNiaUFnSUNvZ1ZHaHBjeUIwY21GamF5QnVZVzFsSUdseklHNWxaV1JsWkNCMGJ5QnRZVzVwY0hWc1lYUmxJR2wwY3lCbGVIQnlaWE56YVc5dUlIWnBZU0JyWlhsbWNtRnRaU0JoYm1sdFlYUnBiMjV6TGx4dUlDQWdLbHh1SUNBZ0tpQkFaWGhoYlhCc1pTQk5ZVzVwY0hWc1lYUmxJR0Z1SUdWNGNISmxjM05wYjI0Z2RYTnBibWNnYTJWNVpuSmhiV1VnWVc1cGJXRjBhVzl1WEc0Z0lDQXFJR0JnWUdwelhHNGdJQ0FxSUdOdmJuTjBJSFJ5WVdOclRtRnRaU0E5SUhaeWJTNWxlSEJ5WlhOemFXOXVUV0Z1WVdkbGNpNW5aWFJGZUhCeVpYTnphVzl1VkhKaFkydE9ZVzFsS0NBbllteHBibXNuSUNrN1hHNGdJQ0FxSUdOdmJuTjBJSFJ5WVdOcklEMGdibVYzSUZSSVVrVkZMazUxYldKbGNrdGxlV1p5WVcxbFZISmhZMnNvWEc0Z0lDQXFJQ0FnYm1GdFpTeGNiaUFnSUNvZ0lDQmJJREF1TUN3Z01DNDFMQ0F4TGpBZ1hTd2dMeThnZEdsdFpYTmNiaUFnSUNvZ0lDQmJJREF1TUN3Z01TNHdMQ0F3TGpBZ1hTQXZMeUIyWVd4MVpYTmNiaUFnSUNvZ0tUdGNiaUFnSUNwY2JpQWdJQ29nWTI5dWMzUWdZMnhwY0NBOUlHNWxkeUJVU0ZKRlJTNUJibWx0WVhScGIyNURiR2x3S0Z4dUlDQWdLaUFnSUNkaWJHbHVheWNzSUM4dklHNWhiV1ZjYmlBZ0lDb2dJQ0F4TGpBc0lDOHZJR1IxY21GMGFXOXVYRzRnSUNBcUlDQWdXeUIwY21GamF5QmRJQzh2SUhSeVlXTnJjMXh1SUNBZ0tpQXBPMXh1SUNBZ0tseHVJQ0FnS2lCamIyNXpkQ0J0YVhobGNpQTlJRzVsZHlCVVNGSkZSUzVCYm1sdFlYUnBiMjVOYVhobGNpZ2dkbkp0TG5OalpXNWxJQ2s3WEc0Z0lDQXFJR052Ym5OMElHRmpkR2x2YmlBOUlHMXBlR1Z5TG1Oc2FYQkJZM1JwYjI0b0lHTnNhWEFnS1R0Y2JpQWdJQ29nWVdOMGFXOXVMbkJzWVhrb0tUdGNiaUFnSUNvZ1lHQmdYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0J1WVcxbElFNWhiV1VnYjJZZ2RHaGxJR1Y0Y0hKbGMzTnBiMjVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJuWlhSRmVIQnlaWE56YVc5dVZISmhZMnRPWVcxbEtHNWhiV1U2SUZaU1RVVjRjSEpsYzNOcGIyNVFjbVZ6WlhST1lXMWxJSHdnYzNSeWFXNW5LVG9nYzNSeWFXNW5JSHdnYm5Wc2JDQjdYRzRnSUNBZ1kyOXVjM1FnWlhod2NtVnpjMmx2YmlBOUlIUm9hWE11WjJWMFJYaHdjbVZ6YzJsdmJpaHVZVzFsS1R0Y2JpQWdJQ0J5WlhSMWNtNGdaWGh3Y21WemMybHZiaUEvSUdBa2UyVjRjSEpsYzNOcGIyNHVibUZ0WlgwdWQyVnBaMmgwWUNBNklHNTFiR3c3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1ZYQmtZWFJsSUdWMlpYSjVJR1Y0Y0hKbGMzTnBiMjV6TGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhWd1pHRjBaU2dwT2lCMmIybGtJSHRjYmlBZ0lDQXZMeUJ6WldVZ2FHOTNJRzExWTJnZ2QyVWdjMmh2ZFd4a0lHOTJaWEp5YVdSbElHTmxjblJoYVc0Z1pYaHdjbVZ6YzJsdmJuTmNiaUFnSUNCamIyNXpkQ0IzWldsbmFIUk5kV3gwYVhCc2FXVnljeUE5SUhSb2FYTXVYMk5oYkdOMWJHRjBaVmRsYVdkb2RFMTFiSFJwY0d4cFpYSnpLQ2s3WEc1Y2JpQWdJQ0F2THlCeVpYTmxkQ0JsZUhCeVpYTnphVzl1SUdKcGJtUnpJR1pwY25OMFhHNGdJQ0FnZEdocGN5NWZaWGh3Y21WemMybHZibk11Wm05eVJXRmphQ2dvWlhod2NtVnpjMmx2YmlrZ1BUNGdlMXh1SUNBZ0lDQWdaWGh3Y21WemMybHZiaTVqYkdWaGNrRndjR3hwWldSWFpXbG5hSFFvS1R0Y2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUM4dklIUm9aVzRnWVhCd2JIa2dZbWx1WkhOY2JpQWdJQ0IwYUdsekxsOWxlSEJ5WlhOemFXOXVjeTVtYjNKRllXTm9LQ2hsZUhCeVpYTnphVzl1S1NBOVBpQjdYRzRnSUNBZ0lDQnNaWFFnYlhWc2RHbHdiR2xsY2lBOUlERXVNRHRjYmlBZ0lDQWdJR052Ym5OMElHNWhiV1VnUFNCbGVIQnlaWE56YVc5dUxtVjRjSEpsYzNOcGIyNU9ZVzFsTzF4dVhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1aWJHbHVhMFY0Y0hKbGMzTnBiMjVPWVcxbGN5NXBibVJsZUU5bUtHNWhiV1VwSUNFOVBTQXRNU2tnZTF4dUlDQWdJQ0FnSUNCdGRXeDBhWEJzYVdWeUlDbzlJSGRsYVdkb2RFMTFiSFJwY0d4cFpYSnpMbUpzYVc1ck8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NXNiMjlyUVhSRmVIQnlaWE56YVc5dVRtRnRaWE11YVc1a1pYaFBaaWh1WVcxbEtTQWhQVDBnTFRFcElIdGNiaUFnSUNBZ0lDQWdiWFZzZEdsd2JHbGxjaUFxUFNCM1pXbG5hSFJOZFd4MGFYQnNhV1Z5Y3k1c2IyOXJRWFE3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdsbUlDaDBhR2x6TG0xdmRYUm9SWGh3Y21WemMybHZiazVoYldWekxtbHVaR1Y0VDJZb2JtRnRaU2tnSVQwOUlDMHhLU0I3WEc0Z0lDQWdJQ0FnSUcxMWJIUnBjR3hwWlhJZ0tqMGdkMlZwWjJoMFRYVnNkR2x3YkdsbGNuTXViVzkxZEdnN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHVjRjSEpsYzNOcGIyNHVZWEJ3YkhsWFpXbG5hSFFvZXlCdGRXeDBhWEJzYVdWeUlIMHBPMXh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOaGJHTjFiR0YwWlNCemRXMGdiMllnYjNabGNuSnBaR1VnWVcxdmRXNTBjeUIwYnlCelpXVWdhRzkzSUcxMVkyZ2dkMlVnYzJodmRXeGtJRzExYkhScGNHeDVJSGRsYVdkb2RITWdiMllnWTJWeWRHRnBiaUJsZUhCeVpYTnphVzl1Y3k1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1gyTmhiR04xYkdGMFpWZGxhV2RvZEUxMWJIUnBjR3hwWlhKektDazZJSHRjYmlBZ0lDQmliR2x1YXpvZ2JuVnRZbVZ5TzF4dUlDQWdJR3h2YjJ0QmREb2diblZ0WW1WeU8xeHVJQ0FnSUcxdmRYUm9PaUJ1ZFcxaVpYSTdYRzRnSUgwZ2UxeHVJQ0FnSUd4bGRDQmliR2x1YXlBOUlERXVNRHRjYmlBZ0lDQnNaWFFnYkc5dmEwRjBJRDBnTVM0d08xeHVJQ0FnSUd4bGRDQnRiM1YwYUNBOUlERXVNRHRjYmx4dUlDQWdJSFJvYVhNdVgyVjRjSEpsYzNOcGIyNXpMbVp2Y2tWaFkyZ29LR1Y0Y0hKbGMzTnBiMjRwSUQwK0lIdGNiaUFnSUNBZ0lHSnNhVzVySUMwOUlHVjRjSEpsYzNOcGIyNHViM1psY25KcFpHVkNiR2x1YTBGdGIzVnVkRHRjYmlBZ0lDQWdJR3h2YjJ0QmRDQXRQU0JsZUhCeVpYTnphVzl1TG05MlpYSnlhV1JsVEc5dmEwRjBRVzF2ZFc1ME8xeHVJQ0FnSUNBZ2JXOTFkR2dnTFQwZ1pYaHdjbVZ6YzJsdmJpNXZkbVZ5Y21sa1pVMXZkWFJvUVcxdmRXNTBPMXh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdZbXhwYm1zZ1BTQk5ZWFJvTG0xaGVDZ3dMakFzSUdKc2FXNXJLVHRjYmlBZ0lDQnNiMjlyUVhRZ1BTQk5ZWFJvTG0xaGVDZ3dMakFzSUd4dmIydEJkQ2s3WEc0Z0lDQWdiVzkxZEdnZ1BTQk5ZWFJvTG0xaGVDZ3dMakFzSUcxdmRYUm9LVHRjYmx4dUlDQWdJSEpsZEhWeWJpQjdJR0pzYVc1ckxDQnNiMjlyUVhRc0lHMXZkWFJvSUgwN1hHNGdJSDFjYm4xY2JpSXNJaThxSUdWemJHbHVkQzFrYVhOaFlteGxJRUIwZVhCbGMyTnlhWEIwTFdWemJHbHVkQzl1WVcxcGJtY3RZMjl1ZG1WdWRHbHZiaUFxTDF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnVmxKTlJYaHdjbVZ6YzJsdmJrMWhkR1Z5YVdGc1EyOXNiM0pVZVhCbElEMGdlMXh1SUNCRGIyeHZjam9nSjJOdmJHOXlKeXhjYmlBZ1JXMXBjM05wYjI1RGIyeHZjam9nSjJWdGFYTnphVzl1UTI5c2IzSW5MRnh1SUNCVGFHRmtaVU52Ykc5eU9pQW5jMmhoWkdWRGIyeHZjaWNzWEc0Z0lFMWhkR05oY0VOdmJHOXlPaUFuYldGMFkyRndRMjlzYjNJbkxGeHVJQ0JTYVcxRGIyeHZjam9nSjNKcGJVTnZiRzl5Snl4Y2JpQWdUM1YwYkdsdVpVTnZiRzl5T2lBbmIzVjBiR2x1WlVOdmJHOXlKeXhjYm4wZ1lYTWdZMjl1YzNRN1hHNWNibVY0Y0c5eWRDQjBlWEJsSUZaU1RVVjRjSEpsYzNOcGIyNU5ZWFJsY21saGJFTnZiRzl5Vkhsd1pTQTlYRzRnSUhSNWNHVnZaaUJXVWsxRmVIQnlaWE56YVc5dVRXRjBaWEpwWVd4RGIyeHZjbFI1Y0dWYmEyVjViMllnZEhsd1pXOW1JRlpTVFVWNGNISmxjM05wYjI1TllYUmxjbWxoYkVOdmJHOXlWSGx3WlYwN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCMk1FVjRjSEpsYzNOcGIyNU5ZWFJsY21saGJFTnZiRzl5VFdGd09pQjdJRnRyWlhrNklITjBjbWx1WjEwNklGWlNUVVY0Y0hKbGMzTnBiMjVOWVhSbGNtbGhiRU52Ykc5eVZIbHdaU0I4SUhWdVpHVm1hVzVsWkNCOUlEMGdlMXh1SUNCZlEyOXNiM0k2SUZaU1RVVjRjSEpsYzNOcGIyNU5ZWFJsY21saGJFTnZiRzl5Vkhsd1pTNURiMnh2Y2l4Y2JpQWdYMFZ0YVhOemFXOXVRMjlzYjNJNklGWlNUVVY0Y0hKbGMzTnBiMjVOWVhSbGNtbGhiRU52Ykc5eVZIbHdaUzVGYldsemMybHZia052Ykc5eUxGeHVJQ0JmVTJoaFpHVkRiMnh2Y2pvZ1ZsSk5SWGh3Y21WemMybHZiazFoZEdWeWFXRnNRMjlzYjNKVWVYQmxMbE5vWVdSbFEyOXNiM0lzWEc0Z0lGOVNhVzFEYjJ4dmNqb2dWbEpOUlhod2NtVnpjMmx2YmsxaGRHVnlhV0ZzUTI5c2IzSlVlWEJsTGxKcGJVTnZiRzl5TEZ4dUlDQmZUM1YwYkdsdVpVTnZiRzl5T2lCV1VrMUZlSEJ5WlhOemFXOXVUV0YwWlhKcFlXeERiMnh2Y2xSNWNHVXVUM1YwYkdsdVpVTnZiRzl5TEZ4dWZUdGNiaUlzSW1sdGNHOXlkQ0FxSUdGeklGUklVa1ZGSUdaeWIyMGdKM1JvY21WbEp6dGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1ZsSk5SWGh3Y21WemMybHZia0pwYm1RZ2ZTQm1jbTl0SUNjdUwxWlNUVVY0Y0hKbGMzTnBiMjVDYVc1a0p6dGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1ZsSk5SWGh3Y21WemMybHZiazFoZEdWeWFXRnNRMjlzYjNKVWVYQmxJSDBnWm5KdmJTQW5MaTlXVWsxRmVIQnlaWE56YVc5dVRXRjBaWEpwWVd4RGIyeHZjbFI1Y0dVbk8xeHVYRzVqYjI1emRDQmZZMjlzYjNJZ1BTQnVaWGNnVkVoU1JVVXVRMjlzYjNJb0tUdGNibHh1THlvcVhHNGdLaUJCSUdKcGJtUWdiMllnWlhod2NtVnpjMmx2YmlCcGJtWnNkV1Z1WTJWeklIUnZJR0VnYldGMFpYSnBZV3dnWTI5c2IzSXVYRzRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJXVWsxRmVIQnlaWE56YVc5dVRXRjBaWEpwWVd4RGIyeHZja0pwYm1RZ2FXMXdiR1Z0Wlc1MGN5QldVazFGZUhCeVpYTnphVzl1UW1sdVpDQjdYRzRnSUM4cUtseHVJQ0FnS2lCTllYQndhVzVuSUc5bUlIQnliM0JsY25SNUlHNWhiV1Z6SUdaeWIyMGdWbEpOUXk5dFlYUmxjbWxoYkVOdmJHOXlRbWx1WkhNdWRIbHdaU0IwYnlCMGFISmxaUzVxY3k5TllYUmxjbWxoYkM1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ2MzUmhkR2xqSUY5d2NtOXdaWEowZVU1aGJXVk5ZWEJOWVhBNklIdGNiaUFnSUNCYlpHbHpkR2x1WjNWcGMyaGxjam9nYzNSeWFXNW5YVG9nZXlCYmRIbHdaU0JwYmlCV1VrMUZlSEJ5WlhOemFXOXVUV0YwWlhKcFlXeERiMnh2Y2xSNWNHVmRQem9nYzNSeWFXNW5JSDA3WEc0Z0lIMGdQU0I3WEc0Z0lDQWdhWE5OWlhOb1UzUmhibVJoY21STllYUmxjbWxoYkRvZ2UxeHVJQ0FnSUNBZ1kyOXNiM0k2SUNkamIyeHZjaWNzWEc0Z0lDQWdJQ0JsYldsemMybHZia052Ykc5eU9pQW5aVzFwYzNOcGRtVW5MRnh1SUNBZ0lIMHNYRzRnSUNBZ2FYTk5aWE5vUW1GemFXTk5ZWFJsY21saGJEb2dlMXh1SUNBZ0lDQWdZMjlzYjNJNklDZGpiMnh2Y2ljc1hHNGdJQ0FnZlN4Y2JpQWdJQ0JwYzAxVWIyOXVUV0YwWlhKcFlXdzZJSHRjYmlBZ0lDQWdJR052Ykc5eU9pQW5ZMjlzYjNJbkxGeHVJQ0FnSUNBZ1pXMXBjM05wYjI1RGIyeHZjam9nSjJWdGFYTnphWFpsSnl4Y2JpQWdJQ0FnSUc5MWRHeHBibVZEYjJ4dmNqb2dKMjkxZEd4cGJtVkRiMnh2Y2taaFkzUnZjaWNzWEc0Z0lDQWdJQ0J0WVhSallYQkRiMnh2Y2pvZ0oyMWhkR05oY0VaaFkzUnZjaWNzWEc0Z0lDQWdJQ0J5YVcxRGIyeHZjam9nSjNCaGNtRnRaWFJ5YVdOU2FXMURiMnh2Y2taaFkzUnZjaWNzWEc0Z0lDQWdJQ0J6YUdGa1pVTnZiRzl5T2lBbmMyaGhaR1ZEYjJ4dmNrWmhZM1J2Y2ljc1hHNGdJQ0FnZlN4Y2JpQWdmVHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWR2hsSUhSaGNtZGxkQ0J0WVhSbGNtbGhiQzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0J0WVhSbGNtbGhiRG9nVkVoU1JVVXVUV0YwWlhKcFlXdzdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aU0IwZVhCbElHOW1JSFJvWlNCMFlYSm5aWFFnY0hKdmNHVnlkSGtnYjJZZ2RHaGxJRzFoZEdWeWFXRnNMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSEpsWVdSdmJteDVJSFI1Y0dVNklGWlNUVVY0Y0hKbGMzTnBiMjVOWVhSbGNtbGhiRU52Ykc5eVZIbHdaVHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWR2hsSUhSaGNtZGxkQ0JqYjJ4dmNpNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnlaV0ZrYjI1c2VTQjBZWEpuWlhSV1lXeDFaVG9nVkVoU1JVVXVRMjlzYjNJN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVsMGN5QnpkR0YwWlM1Y2JpQWdJQ29nU1dZZ2FYUWdZMkZ1Ym05MElHWnBibVFnZEdobElIUmhjbWRsZENCd2NtOXdaWEowZVNCcGJpQmpiMjV6ZEhKMVkzUnZjaXdnYVhRZ2QybHNiQ0JpWlNCdWRXeHNJR2x1YzNSbFlXUXVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjl6ZEdGMFpUb2dlMXh1SUNBZ0lIQnliM0JsY25SNVRtRnRaVG9nYzNSeWFXNW5PMXh1SUNBZ0lHbHVhWFJwWVd4V1lXeDFaVG9nVkVoU1JVVXVRMjlzYjNJN1hHNGdJQ0FnWkdWc2RHRldZV3gxWlRvZ1ZFaFNSVVV1UTI5c2IzSTdYRzRnSUgwZ2ZDQnVkV3hzTzF4dVhHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWg3WEc0Z0lDQWdiV0YwWlhKcFlXd3NYRzRnSUNBZ2RIbHdaU3hjYmlBZ0lDQjBZWEpuWlhSV1lXeDFaU3hjYmlBZ2ZUb2dlMXh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRlJvWlNCMFlYSm5aWFFnYldGMFpYSnBZV3d1WEc0Z0lDQWdJQ292WEc0Z0lDQWdiV0YwWlhKcFlXdzZJRlJJVWtWRkxrMWhkR1Z5YVdGc08xeHVYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dWR2hsSUhSNWNHVWdiMllnZEdobElIUmhjbWRsZENCd2NtOXdaWEowZVNCdlppQjBhR1VnYldGMFpYSnBZV3d1WEc0Z0lDQWdJQ292WEc0Z0lDQWdkSGx3WlRvZ1ZsSk5SWGh3Y21WemMybHZiazFoZEdWeWFXRnNRMjlzYjNKVWVYQmxPMXh1WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nVkdobElIUmhjbWRsZENCamIyeHZjaTVjYmlBZ0lDQWdLaTljYmlBZ0lDQjBZWEpuWlhSV1lXeDFaVG9nVkVoU1JVVXVRMjlzYjNJN1hHNGdJSDBwSUh0Y2JpQWdJQ0IwYUdsekxtMWhkR1Z5YVdGc0lEMGdiV0YwWlhKcFlXdzdYRzRnSUNBZ2RHaHBjeTUwZVhCbElEMGdkSGx3WlR0Y2JpQWdJQ0IwYUdsekxuUmhjbWRsZEZaaGJIVmxJRDBnZEdGeVoyVjBWbUZzZFdVN1hHNWNiaUFnSUNBdkx5QnBibWwwSUhCeWIzQmxjblI1SUc1aGJXVmNiaUFnSUNCamIyNXpkQ0J3Y205d1pYSjBlVTVoYldWTllYQWdQU0JQWW1wbFkzUXVaVzUwY21sbGN5aFdVazFGZUhCeVpYTnphVzl1VFdGMFpYSnBZV3hEYjJ4dmNrSnBibVF1WDNCeWIzQmxjblI1VG1GdFpVMWhjRTFoY0NrdVptbHVaQ2hjYmlBZ0lDQWdJQ2hiWkdsemRHbHVaM1ZwYzJobGNsMHBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUNodFlYUmxjbWxoYkNCaGN5QmhibmtwVzJScGMzUnBibWQxYVhOb1pYSmRJRDA5UFNCMGNuVmxPMXh1SUNBZ0lDQWdmU3hjYmlBZ0lDQXBQeTViTVYwN1hHNGdJQ0FnWTI5dWMzUWdjSEp2Y0dWeWRIbE9ZVzFsSUQwZ2NISnZjR1Z5ZEhsT1lXMWxUV0Z3UHk1YmRIbHdaVjBnUHo4Z2JuVnNiRHRjYmx4dUlDQWdJR2xtSUNod2NtOXdaWEowZVU1aGJXVWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdZMjl1YzI5c1pTNTNZWEp1S0Z4dUlDQWdJQ0FnSUNCZ1ZISnBaV1FnZEc4Z1lXUmtJR0VnYldGMFpYSnBZV3dnWTI5c2IzSWdZbWx1WkNCMGJ5QjBhR1VnYldGMFpYSnBZV3dnSkh0Y2JpQWdJQ0FnSUNBZ0lDQnRZWFJsY21saGJDNXVZVzFsSUQ4L0lDY29ibThnYm1GdFpTa25YRzRnSUNBZ0lDQWdJSDBzSUhSb1pTQjBlWEJsSUNSN2RIbHdaWDBnWW5WMElIUm9aU0J0WVhSbGNtbGhiQ0J2Y2lCMGFHVWdkSGx3WlNCcGN5QnViM1FnYzNWd2NHOXlkR1ZrTG1Bc1hHNGdJQ0FnSUNBcE8xeHVYRzRnSUNBZ0lDQjBhR2x6TGw5emRHRjBaU0E5SUc1MWJHdzdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJSFJoY21kbGRDQTlJQ2h0WVhSbGNtbGhiQ0JoY3lCaGJua3BXM0J5YjNCbGNuUjVUbUZ0WlYwZ1lYTWdWRWhTUlVVdVEyOXNiM0k3WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJR2x1YVhScFlXeFdZV3gxWlNBOUlIUmhjbWRsZEM1amJHOXVaU2dwTzF4dVhHNGdJQ0FnSUNBdkx5RG9zcURqZ2E3bGdLVGpncExrdjUzbWpJSGpnWm5qZ292amdaL2pnb0hqZ2F0RGIyeHZjaTV6ZFdMamdwTGt2Yi9qZ28vamdacmpnYXZsdDY3bGlJYmpncExvcUlqbnJwZmpnWm5qZ290Y2JpQWdJQ0FnSUdOdmJuTjBJR1JsYkhSaFZtRnNkV1VnUFNCdVpYY2dWRWhTUlVVdVEyOXNiM0lvWEc0Z0lDQWdJQ0FnSUhSaGNtZGxkRlpoYkhWbExuSWdMU0JwYm1sMGFXRnNWbUZzZFdVdWNpeGNiaUFnSUNBZ0lDQWdkR0Z5WjJWMFZtRnNkV1V1WnlBdElHbHVhWFJwWVd4V1lXeDFaUzVuTEZ4dUlDQWdJQ0FnSUNCMFlYSm5aWFJXWVd4MVpTNWlJQzBnYVc1cGRHbGhiRlpoYkhWbExtSXNYRzRnSUNBZ0lDQXBPMXh1WEc0Z0lDQWdJQ0IwYUdsekxsOXpkR0YwWlNBOUlIdGNiaUFnSUNBZ0lDQWdjSEp2Y0dWeWRIbE9ZVzFsTEZ4dUlDQWdJQ0FnSUNCcGJtbDBhV0ZzVm1Gc2RXVXNYRzRnSUNBZ0lDQWdJR1JsYkhSaFZtRnNkV1VzWEc0Z0lDQWdJQ0I5TzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJoY0hCc2VWZGxhV2RvZENoM1pXbG5hSFE2SUc1MWJXSmxjaWs2SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxsOXpkR0YwWlNBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBdkx5QjNZWEp1YVc1bklHbHpJR0ZzY21WaFpIa2daVzFwZEhSbFpDQnBiaUJqYjI1emRISjFZM1J2Y2x4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhzZ2NISnZjR1Z5ZEhsT1lXMWxMQ0JrWld4MFlWWmhiSFZsSUgwZ1BTQjBhR2x6TGw5emRHRjBaVHRjYmx4dUlDQWdJR052Ym5OMElIUmhjbWRsZENBOUlDaDBhR2x6TG0xaGRHVnlhV0ZzSUdGeklHRnVlU2xiY0hKdmNHVnlkSGxPWVcxbFhTQmhjeUJVU0ZKRlJTNURiMnh2Y2p0Y2JpQWdJQ0JwWmlBb2RHRnlaMlYwSUQwOVBTQjFibVJsWm1sdVpXUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNCOUlDOHZJRlJQUkU4NklIZGxJSE5vYjNWc1pDQnJhV05ySUhSb2FYTWdZWFFnWUdGa1pFMWhkR1Z5YVdGc1ZtRnNkV1ZnWEc1Y2JpQWdJQ0IwWVhKblpYUXVZV1JrS0Y5amIyeHZjaTVqYjNCNUtHUmxiSFJoVm1Gc2RXVXBMbTExYkhScGNHeDVVMk5oYkdGeUtIZGxhV2RvZENrcE8xeHVYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQW9kR2hwY3k1dFlYUmxjbWxoYkNCaGN5QmhibmtwTG5Ob2IzVnNaRUZ3Y0d4NVZXNXBabTl5YlhNZ1BUMDlJQ2RpYjI5c1pXRnVKeWtnZTF4dUlDQWdJQ0FnS0hSb2FYTXViV0YwWlhKcFlXd2dZWE1nWVc1NUtTNXphRzkxYkdSQmNIQnNlVlZ1YVdadmNtMXpJRDBnZEhKMVpUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1kyeGxZWEpCY0hCc2FXVmtWMlZwWjJoMEtDazZJSFp2YVdRZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TGw5emRHRjBaU0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0F2THlCM1lYSnVhVzVuSUdseklHRnNjbVZoWkhrZ1pXMXBkSFJsWkNCcGJpQmpiMjV6ZEhKMVkzUnZjbHh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJSHNnY0hKdmNHVnlkSGxPWVcxbExDQnBibWwwYVdGc1ZtRnNkV1VnZlNBOUlIUm9hWE11WDNOMFlYUmxPMXh1WEc0Z0lDQWdZMjl1YzNRZ2RHRnlaMlYwSUQwZ0tIUm9hWE11YldGMFpYSnBZV3dnWVhNZ1lXNTVLVnR3Y205d1pYSjBlVTVoYldWZElHRnpJRlJJVWtWRkxrTnZiRzl5TzF4dUlDQWdJR2xtSUNoMFlYSm5aWFFnUFQwOUlIVnVaR1ZtYVc1bFpDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgwZ0x5OGdWRTlFVHpvZ2QyVWdjMmh2ZFd4a0lHdHBZMnNnZEdocGN5QmhkQ0JnWVdSa1RXRjBaWEpwWVd4V1lXeDFaV0JjYmx4dUlDQWdJSFJoY21kbGRDNWpiM0I1S0dsdWFYUnBZV3hXWVd4MVpTazdYRzVjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JQ2gwYUdsekxtMWhkR1Z5YVdGc0lHRnpJR0Z1ZVNrdWMyaHZkV3hrUVhCd2JIbFZibWxtYjNKdGN5QTlQVDBnSjJKdmIyeGxZVzRuS1NCN1hHNGdJQ0FnSUNBb2RHaHBjeTV0WVhSbGNtbGhiQ0JoY3lCaGJua3BMbk5vYjNWc1pFRndjR3g1Vlc1cFptOXliWE1nUFNCMGNuVmxPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVJaXdpYVcxd2IzSjBJSFI1Y0dVZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1cGJYQnZjblFnZEhsd1pTQjdJRlpTVFVWNGNISmxjM05wYjI1Q2FXNWtJSDBnWm5KdmJTQW5MaTlXVWsxRmVIQnlaWE56YVc5dVFtbHVaQ2M3WEc1Y2JpOHFLbHh1SUNvZ1FTQmlhVzVrSUc5bUlIdEFiR2x1YXlCV1VrMUZlSEJ5WlhOemFXOXVmU0JwYm1ac2RXVnVZMlZ6SUhSdklHMXZjbkJvSUhSaGNtZGxkSE11WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCV1VrMUZlSEJ5WlhOemFXOXVUVzl5Y0doVVlYSm5aWFJDYVc1a0lHbHRjR3hsYldWdWRITWdWbEpOUlhod2NtVnpjMmx2YmtKcGJtUWdlMXh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJRzFsYzJnZ2NISnBiV2wwYVhabGN5QjBhR0YwSUdGMGRHRmphR1ZrSUhSdklIUmhjbWRsZENCdFpYTm9MbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSEpsWVdSdmJteDVJSEJ5YVcxcGRHbDJaWE02SUZSSVVrVkZMazFsYzJoYlhUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJR2x1WkdWNElHOW1JSFJvWlNCdGIzSndhQ0IwWVhKblpYUWdhVzRnZEdobElHMWxjMmd1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nY21WaFpHOXViSGtnYVc1a1pYZzZJRzUxYldKbGNqdGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJSGRsYVdkb2RDQjJZV3gxWlNCdlppQjBZWEpuWlhRZ2JXOXljR2dnZEdGeVoyVjBMaUJTWVc1bmFXNW5JR2x1SUZzd0xqQWdMU0F4TGpCZExseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklISmxZV1J2Ym14NUlIZGxhV2RvZERvZ2JuVnRZbVZ5TzF4dVhHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWg3WEc0Z0lDQWdjSEpwYldsMGFYWmxjeXhjYmlBZ0lDQnBibVJsZUN4Y2JpQWdJQ0IzWldsbmFIUXNYRzRnSUgwNklIdGNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQlVhR1VnYldWemFDQndjbWx0YVhScGRtVnpJSFJvWVhRZ1lYUjBZV05vWldRZ2RHOGdkR0Z5WjJWMElHMWxjMmd1WEc0Z0lDQWdJQ292WEc0Z0lDQWdjSEpwYldsMGFYWmxjem9nVkVoU1JVVXVUV1Z6YUZ0ZE8xeHVYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dWR2hsSUdsdVpHVjRJRzltSUhSb1pTQnRiM0p3YUNCMFlYSm5aWFFnYVc0Z2RHaGxJRzFsYzJndVhHNGdJQ0FnSUNvdlhHNGdJQ0FnYVc1a1pYZzZJRzUxYldKbGNqdGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRlJvWlNCM1pXbG5hSFFnZG1Gc2RXVWdiMllnZEdGeVoyVjBJRzF2Y25Cb0lIUmhjbWRsZEM0Z1VtRnVaMmx1WnlCcGJpQmJNQzR3SUMwZ01TNHdYUzVjYmlBZ0lDQWdLaTljYmlBZ0lDQjNaV2xuYUhRNklHNTFiV0psY2p0Y2JpQWdmU2tnZTF4dUlDQWdJSFJvYVhNdWNISnBiV2wwYVhabGN5QTlJSEJ5YVcxcGRHbDJaWE03WEc0Z0lDQWdkR2hwY3k1cGJtUmxlQ0E5SUdsdVpHVjRPMXh1SUNBZ0lIUm9hWE11ZDJWcFoyaDBJRDBnZDJWcFoyaDBPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR0Z3Y0d4NVYyVnBaMmgwS0hkbGFXZG9kRG9nYm5WdFltVnlLVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTV3Y21sdGFYUnBkbVZ6TG1admNrVmhZMmdvS0cxbGMyZ3BJRDArSUh0Y2JpQWdJQ0FnSUdsbUlDaHRaWE5vTG0xdmNuQm9WR0Z5WjJWMFNXNW1iSFZsYm1ObGN6OHVXM1JvYVhNdWFXNWtaWGhkSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ2JXVnphQzV0YjNKd2FGUmhjbWRsZEVsdVpteDFaVzVqWlhOYmRHaHBjeTVwYm1SbGVGMGdLejBnZEdocGN5NTNaV2xuYUhRZ0tpQjNaV2xuYUhRN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNrN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1kyeGxZWEpCY0hCc2FXVmtWMlZwWjJoMEtDazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVjSEpwYldsMGFYWmxjeTVtYjNKRllXTm9LQ2h0WlhOb0tTQTlQaUI3WEc0Z0lDQWdJQ0JwWmlBb2JXVnphQzV0YjNKd2FGUmhjbWRsZEVsdVpteDFaVzVqWlhNL0xsdDBhR2x6TG1sdVpHVjRYU0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUcxbGMyZ3ViVzl5Y0doVVlYSm5aWFJKYm1ac2RXVnVZMlZ6VzNSb2FYTXVhVzVrWlhoZElEMGdNQzR3TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBwTzF4dUlDQjlYRzU5WEc0aUxDSnBiWEJ2Y25RZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1cGJYQnZjblFnZEhsd1pTQjdJRlpTVFVWNGNISmxjM05wYjI1Q2FXNWtJSDBnWm5KdmJTQW5MaTlXVWsxRmVIQnlaWE56YVc5dVFtbHVaQ2M3WEc1Y2JtTnZibk4wSUY5Mk1pQTlJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXlLQ2s3WEc1Y2JpOHFLbHh1SUNvZ1FTQmlhVzVrSUc5bUlHVjRjSEpsYzNOcGIyNGdhVzVtYkhWbGJtTmxjeUIwYnlCMFpYaDBkWEpsSUhSeVlXNXpabTl5YlhNdVhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5QldVazFGZUhCeVpYTnphVzl1VkdWNGRIVnlaVlJ5WVc1elptOXliVUpwYm1RZ2FXMXdiR1Z0Wlc1MGN5QldVazFGZUhCeVpYTnphVzl1UW1sdVpDQjdYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJRjl3Y205d1pYSjBlVTVoYldWelRXRndPaUI3SUZ0a2FYTjBhVzVuZFdsemFHVnlPaUJ6ZEhKcGJtZGRPaUJ6ZEhKcGJtZGJYU0I5SUQwZ2UxeHVJQ0FnSUdselRXVnphRk4wWVc1a1lYSmtUV0YwWlhKcFlXdzZJRnRjYmlBZ0lDQWdJQ2R0WVhBbkxGeHVJQ0FnSUNBZ0oyVnRhWE56YVhabFRXRndKeXhjYmlBZ0lDQWdJQ2RpZFcxd1RXRndKeXhjYmlBZ0lDQWdJQ2R1YjNKdFlXeE5ZWEFuTEZ4dUlDQWdJQ0FnSjJScGMzQnNZV05sYldWdWRFMWhjQ2NzWEc0Z0lDQWdJQ0FuY205MVoyaHVaWE56VFdGd0p5eGNiaUFnSUNBZ0lDZHRaWFJoYkc1bGMzTk5ZWEFuTEZ4dUlDQWdJQ0FnSjJGc2NHaGhUV0Z3Snl4Y2JpQWdJQ0JkTEZ4dUlDQWdJR2x6VFdWemFFSmhjMmxqVFdGMFpYSnBZV3c2SUZzbmJXRndKeXdnSjNOd1pXTjFiR0Z5VFdGd0p5d2dKMkZzY0doaFRXRndKMTBzWEc0Z0lDQWdhWE5OVkc5dmJrMWhkR1Z5YVdGc09pQmJYRzRnSUNBZ0lDQW5iV0Z3Snl4Y2JpQWdJQ0FnSUNkdWIzSnRZV3hOWVhBbkxGeHVJQ0FnSUNBZ0oyVnRhWE56YVhabFRXRndKeXhjYmlBZ0lDQWdJQ2R6YUdGa1pVMTFiSFJwY0d4NVZHVjRkSFZ5WlNjc1hHNGdJQ0FnSUNBbmNtbHRUWFZzZEdsd2JIbFVaWGgwZFhKbEp5eGNiaUFnSUNBZ0lDZHZkWFJzYVc1bFYybGtkR2hOZFd4MGFYQnNlVlJsZUhSMWNtVW5MRnh1SUNBZ0lDQWdKM1YyUVc1cGJXRjBhVzl1VFdGemExUmxlSFIxY21VbkxGeHVJQ0FnSUYwc1hHNGdJSDA3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlNCMFlYSm5aWFFnYldGMFpYSnBZV3d1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nY21WaFpHOXViSGtnYldGMFpYSnBZV3c2SUZSSVVrVkZMazFoZEdWeWFXRnNPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1VnZFhZZ2MyTmhiR1VnYjJZZ2RHaGxJSFJsZUhSMWNtVXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjbVZoWkc5dWJIa2djMk5oYkdVNklGUklVa1ZGTGxabFkzUnZjakk3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlNCMWRpQnZabVp6WlhRZ2IyWWdkR2hsSUhSbGVIUjFjbVV1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nY21WaFpHOXViSGtnYjJabWMyVjBPaUJVU0ZKRlJTNVdaV04wYjNJeU8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdiR2x6ZENCdlppQjBaWGgwZFhKbElHNWhiV1Z6SUdGdVpDQnBkSE1nYzNSaGRHVWdkR2hoZENCemFHOTFiR1FnWW1VZ2RISmhibk5tYjNKdFpXUWdZbmtnZEdocGN5QmlhVzVrTGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCZmNISnZjR1Z5ZEdsbGN6b2dlMXh1SUNBZ0lHNWhiV1U2SUhOMGNtbHVaenRjYmlBZ0lDQnBibWwwYVdGc1QyWm1jMlYwT2lCVVNGSkZSUzVXWldOMGIzSXlPMXh1SUNBZ0lHbHVhWFJwWVd4VFkyRnNaVG9nVkVoU1JVVXVWbVZqZEc5eU1qdGNiaUFnSUNCa1pXeDBZVTltWm5ObGREb2dWRWhTUlVVdVZtVmpkRzl5TWp0Y2JpQWdJQ0JrWld4MFlWTmpZV3hsT2lCVVNGSkZSUzVXWldOMGIzSXlPMXh1SUNCOVcxMDdYRzVjYmlBZ2NIVmliR2xqSUdOdmJuTjBjblZqZEc5eUtIdGNiaUFnSUNCdFlYUmxjbWxoYkN4Y2JpQWdJQ0J6WTJGc1pTeGNiaUFnSUNCdlptWnpaWFFzWEc0Z0lIMDZJSHRjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJVYUdVZ2RHRnlaMlYwSUcxaGRHVnlhV0ZzTGx4dUlDQWdJQ0FxTDF4dUlDQWdJRzFoZEdWeWFXRnNPaUJVU0ZKRlJTNU5ZWFJsY21saGJEdGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRlJvWlNCMWRpQnpZMkZzWlNCdlppQjBhR1VnZEdWNGRIVnlaUzVjYmlBZ0lDQWdLaTljYmlBZ0lDQnpZMkZzWlRvZ1ZFaFNSVVV1Vm1WamRHOXlNanRjYmx4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUZSb1pTQjFkaUJ2Wm1aelpYUWdiMllnZEdobElIUmxlSFIxY21VdVhHNGdJQ0FnSUNvdlhHNGdJQ0FnYjJabWMyVjBPaUJVU0ZKRlJTNVdaV04wYjNJeU8xeHVJQ0I5S1NCN1hHNGdJQ0FnZEdocGN5NXRZWFJsY21saGJDQTlJRzFoZEdWeWFXRnNPMXh1SUNBZ0lIUm9hWE11YzJOaGJHVWdQU0J6WTJGc1pUdGNiaUFnSUNCMGFHbHpMbTltWm5ObGRDQTlJRzltWm5ObGREdGNibHh1SUNBZ0lHTnZibk4wSUhCeWIzQmxjblI1VG1GdFpYTWdQU0JQWW1wbFkzUXVaVzUwY21sbGN5aFdVazFGZUhCeVpYTnphVzl1VkdWNGRIVnlaVlJ5WVc1elptOXliVUpwYm1RdVgzQnliM0JsY25SNVRtRnRaWE5OWVhBcExtWnBibVFvWEc0Z0lDQWdJQ0FvVzJScGMzUnBibWQxYVhOb1pYSmRLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlBb2JXRjBaWEpwWVd3Z1lYTWdZVzU1S1Z0a2FYTjBhVzVuZFdsemFHVnlYU0E5UFQwZ2RISjFaVHRjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdLVDh1V3pGZE8xeHVYRzRnSUNBZ2FXWWdLSEJ5YjNCbGNuUjVUbUZ0WlhNZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ1kyOXVjMjlzWlM1M1lYSnVLRnh1SUNBZ0lDQWdJQ0JnVkhKcFpXUWdkRzhnWVdSa0lHRWdkR1Y0ZEhWeVpTQjBjbUZ1YzJadmNtMGdZbWx1WkNCMGJ5QjBhR1VnYldGMFpYSnBZV3dnSkh0Y2JpQWdJQ0FnSUNBZ0lDQnRZWFJsY21saGJDNXVZVzFsSUQ4L0lDY29ibThnYm1GdFpTa25YRzRnSUNBZ0lDQWdJSDBnWW5WMElIUm9aU0J0WVhSbGNtbGhiQ0JwY3lCdWIzUWdjM1Z3Y0c5eWRHVmtMbUFzWEc0Z0lDQWdJQ0FwTzF4dVhHNGdJQ0FnSUNCMGFHbHpMbDl3Y205d1pYSjBhV1Z6SUQwZ1cxMDdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2FYTXVYM0J5YjNCbGNuUnBaWE1nUFNCYlhUdGNibHh1SUNBZ0lDQWdjSEp2Y0dWeWRIbE9ZVzFsY3k1bWIzSkZZV05vS0Nod2NtOXdaWEowZVU1aGJXVXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnZEdWNGRIVnlaU0E5SUNnb2JXRjBaWEpwWVd3Z1lYTWdZVzU1S1Z0d2NtOXdaWEowZVU1aGJXVmRJR0Z6SUZSSVVrVkZMbFJsZUhSMWNtVWdmQ0IxYm1SbFptbHVaV1FwUHk1amJHOXVaU2dwTzF4dUlDQWdJQ0FnSUNCcFppQW9JWFJsZUhSMWNtVXBJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNodFlYUmxjbWxoYkNCaGN5QmhibmtwVzNCeWIzQmxjblI1VG1GdFpWMGdQU0IwWlhoMGRYSmxPeUF2THlCaVpXTmhkWE5sSUhSb1pTQjBaWGgwZFhKbElHbHpJR05zYjI1bFpGeHVYRzRnSUNBZ0lDQWdJR052Ym5OMElHbHVhWFJwWVd4UFptWnpaWFFnUFNCMFpYaDBkWEpsTG05bVpuTmxkQzVqYkc5dVpTZ3BPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnBibWwwYVdGc1UyTmhiR1VnUFNCMFpYaDBkWEpsTG5KbGNHVmhkQzVqYkc5dVpTZ3BPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmtaV3gwWVU5bVpuTmxkQ0E5SUc5bVpuTmxkQzVqYkc5dVpTZ3BMbk4xWWlocGJtbDBhV0ZzVDJabWMyVjBLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaR1ZzZEdGVFkyRnNaU0E5SUhOallXeGxMbU5zYjI1bEtDa3VjM1ZpS0dsdWFYUnBZV3hUWTJGc1pTazdYRzVjYmlBZ0lDQWdJQ0FnZEdocGN5NWZjSEp2Y0dWeWRHbGxjeTV3ZFhOb0tIdGNiaUFnSUNBZ0lDQWdJQ0J1WVcxbE9pQndjbTl3WlhKMGVVNWhiV1VzWEc0Z0lDQWdJQ0FnSUNBZ2FXNXBkR2xoYkU5bVpuTmxkQ3hjYmlBZ0lDQWdJQ0FnSUNCa1pXeDBZVTltWm5ObGRDeGNiaUFnSUNBZ0lDQWdJQ0JwYm1sMGFXRnNVMk5oYkdVc1hHNGdJQ0FnSUNBZ0lDQWdaR1ZzZEdGVFkyRnNaU3hjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1lYQndiSGxYWldsbmFIUW9kMlZwWjJoME9pQnVkVzFpWlhJcE9pQjJiMmxrSUh0Y2JpQWdJQ0IwYUdsekxsOXdjbTl3WlhKMGFXVnpMbVp2Y2tWaFkyZ29LSEJ5YjNCbGNuUjVLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0IwWVhKblpYUWdQU0FvZEdocGN5NXRZWFJsY21saGJDQmhjeUJoYm5rcFczQnliM0JsY25SNUxtNWhiV1ZkSUdGeklGUklVa1ZGTGxSbGVIUjFjbVU3WEc0Z0lDQWdJQ0JwWmlBb2RHRnlaMlYwSUQwOVBTQjFibVJsWm1sdVpXUXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdmU0F2THlCVVQwUlBPaUIzWlNCemFHOTFiR1FnYTJsamF5QjBhR2x6SUdGMElHQmhaR1JOWVhSbGNtbGhiRlpoYkhWbFlGeHVYRzRnSUNBZ0lDQjBZWEpuWlhRdWIyWm1jMlYwTG1Ga1pDaGZkakl1WTI5d2VTaHdjbTl3WlhKMGVTNWtaV3gwWVU5bVpuTmxkQ2t1YlhWc2RHbHdiSGxUWTJGc1lYSW9kMlZwWjJoMEtTazdYRzRnSUNBZ0lDQjBZWEpuWlhRdWNtVndaV0YwTG1Ga1pDaGZkakl1WTI5d2VTaHdjbTl3WlhKMGVTNWtaV3gwWVZOallXeGxLUzV0ZFd4MGFYQnNlVk5qWVd4aGNpaDNaV2xuYUhRcEtUdGNibHh1SUNBZ0lDQWdkR0Z5WjJWMExtNWxaV1J6VlhCa1lYUmxJRDBnZEhKMVpUdGNiaUFnSUNCOUtUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QmpiR1ZoY2tGd2NHeHBaV1JYWldsbmFIUW9LVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTVmY0hKdmNHVnlkR2xsY3k1bWIzSkZZV05vS0Nod2NtOXdaWEowZVNrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2RHRnlaMlYwSUQwZ0tIUm9hWE11YldGMFpYSnBZV3dnWVhNZ1lXNTVLVnR3Y205d1pYSjBlUzV1WVcxbFhTQmhjeUJVU0ZKRlJTNVVaWGgwZFhKbE8xeHVJQ0FnSUNBZ2FXWWdLSFJoY21kbGRDQTlQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUgwZ0x5OGdWRTlFVHpvZ2QyVWdjMmh2ZFd4a0lHdHBZMnNnZEdocGN5QmhkQ0JnWVdSa1RXRjBaWEpwWVd4V1lXeDFaV0JjYmx4dUlDQWdJQ0FnZEdGeVoyVjBMbTltWm5ObGRDNWpiM0I1S0hCeWIzQmxjblI1TG1sdWFYUnBZV3hQWm1aelpYUXBPMXh1SUNBZ0lDQWdkR0Z5WjJWMExuSmxjR1ZoZEM1amIzQjVLSEJ5YjNCbGNuUjVMbWx1YVhScFlXeFRZMkZzWlNrN1hHNWNiaUFnSUNBZ0lIUmhjbWRsZEM1dVpXVmtjMVZ3WkdGMFpTQTlJSFJ5ZFdVN1hHNGdJQ0FnZlNrN1hHNGdJSDFjYm4xY2JpSXNJbWx0Y0c5eWRDQjBlWEJsSUNvZ1lYTWdWakJXVWswZ1puSnZiU0FuUUhCcGVHbDJMM1I1Y0dWekxYWnliUzB3TGpBbk8xeHVhVzF3YjNKMElIUjVjR1VnS2lCaGN5QldNVlpTVFZOamFHVnRZU0JtY205dElDZEFjR2w0YVhZdmRIbHdaWE10ZG5KdFl5MTJjbTB0TVM0d0p6dGNibWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCN0lFZE1WRVlzSUVkTVZFWk1iMkZrWlhKUWJIVm5hVzRzSUVkTVZFWlFZWEp6WlhJZ2ZTQm1jbTl0SUNkMGFISmxaUzlsZUdGdGNHeGxjeTlxYzIwdmJHOWhaR1Z5Y3k5SFRGUkdURzloWkdWeUxtcHpKenRjYm1sdGNHOXlkQ0I3SUdkc2RHWkZlSFJ5WVdOMFVISnBiV2wwYVhabGMwWnliMjFPYjJSbElIMGdabkp2YlNBbkxpNHZkWFJwYkhNdloyeDBaa1Y0ZEhKaFkzUlFjbWx0YVhScGRtVnpSbkp2YlU1dlpHVW5PMXh1YVcxd2IzSjBJSHNnWjJ4MFprZGxkRUZ6YzI5amFXRjBaV1JOWVhSbGNtbGhiRWx1WkdWNElIMGdabkp2YlNBbkxpNHZkWFJwYkhNdloyeDBaa2RsZEVGemMyOWphV0YwWldSTllYUmxjbWxoYkVsdVpHVjRKenRjYm1sdGNHOXlkQ0I3SUZaU1RVVjRjSEpsYzNOcGIyNGdmU0JtY205dElDY3VMMVpTVFVWNGNISmxjM05wYjI0bk8xeHVhVzF3YjNKMElIc2dWbEpOUlhod2NtVnpjMmx2YmsxaGJtRm5aWElnZlNCbWNtOXRJQ2N1TDFaU1RVVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeUp6dGNibWx0Y0c5eWRDQjdJSFl3Ulhod2NtVnpjMmx2YmsxaGRHVnlhV0ZzUTI5c2IzSk5ZWEFnZlNCbWNtOXRJQ2N1TDFaU1RVVjRjSEpsYzNOcGIyNU5ZWFJsY21saGJFTnZiRzl5Vkhsd1pTYzdYRzVwYlhCdmNuUWdleUJXVWsxRmVIQnlaWE56YVc5dVRXRjBaWEpwWVd4RGIyeHZja0pwYm1RZ2ZTQm1jbTl0SUNjdUwxWlNUVVY0Y0hKbGMzTnBiMjVOWVhSbGNtbGhiRU52Ykc5eVFtbHVaQ2M3WEc1cGJYQnZjblFnZXlCV1VrMUZlSEJ5WlhOemFXOXVUVzl5Y0doVVlYSm5aWFJDYVc1a0lIMGdabkp2YlNBbkxpOVdVazFGZUhCeVpYTnphVzl1VFc5eWNHaFVZWEpuWlhSQ2FXNWtKenRjYm1sdGNHOXlkQ0I3SUZaU1RVVjRjSEpsYzNOcGIyNVFjbVZ6WlhST1lXMWxJSDBnWm5KdmJTQW5MaTlXVWsxRmVIQnlaWE56YVc5dVVISmxjMlYwVG1GdFpTYzdYRzVwYlhCdmNuUWdleUJXVWsxRmVIQnlaWE56YVc5dVZHVjRkSFZ5WlZSeVlXNXpabTl5YlVKcGJtUWdmU0JtY205dElDY3VMMVpTVFVWNGNISmxjM05wYjI1VVpYaDBkWEpsVkhKaGJuTm1iM0p0UW1sdVpDYzdYRzVwYlhCdmNuUWdleUJIVEZSR0lHRnpJRWRNVkVaVFkyaGxiV0VnZlNCbWNtOXRJQ2RBWjJ4MFppMTBjbUZ1YzJadmNtMHZZMjl5WlNjN1hHNWNiaThxS2x4dUlDb2dVRzl6YzJsaWJHVWdjM0JsWXlCMlpYSnphVzl1Y3lCcGRDQnlaV052WjI1cGVtVnpMbHh1SUNvdlhHNWpiMjV6ZENCUVQxTlRTVUpNUlY5VFVFVkRYMVpGVWxOSlQwNVRJRDBnYm1WM0lGTmxkQ2hiSnpFdU1DY3NJQ2N4TGpBdFltVjBZU2RkS1R0Y2JseHVMeW9xWEc0Z0tpQkJJSEJzZFdkcGJpQnZaaUJIVEZSR1RHOWhaR1Z5SUhSb1lYUWdhVzF3YjNKMGN5QmhJSHRBYkdsdWF5QldVazFGZUhCeVpYTnphVzl1VFdGdVlXZGxjbjBnWm5KdmJTQmhJRlpTVFNCbGVIUmxibk5wYjI0Z2IyWWdZU0JIVEZSR0xseHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdWbEpOUlhod2NtVnpjMmx2Ymt4dllXUmxjbEJzZFdkcGJpQnBiWEJzWlcxbGJuUnpJRWRNVkVaTWIyRmtaWEpRYkhWbmFXNGdlMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJSEpsWVdSdmJteDVJSFl3ZGpGUWNtVnpaWFJPWVcxbFRXRndPaUI3SUZ0Mk1FNWhiV1VnYVc0Z1ZqQldVazB1UW14bGJtUlRhR0Z3WlZCeVpYTmxkRTVoYldWZFB6b2dWbEpOUlhod2NtVnpjMmx2YmxCeVpYTmxkRTVoYldVZ2ZTQTlJSHRjYmlBZ0lDQmhPaUFuWVdFbkxGeHVJQ0FnSUdVNklDZGxaU2NzWEc0Z0lDQWdhVG9nSjJsb0p5eGNiaUFnSUNCdk9pQW5iMmduTEZ4dUlDQWdJSFU2SUNkdmRTY3NYRzRnSUNBZ1lteHBibXM2SUNkaWJHbHVheWNzWEc0Z0lDQWdhbTk1T2lBbmFHRndjSGtuTEZ4dUlDQWdJR0Z1WjNKNU9pQW5ZVzVuY25rbkxGeHVJQ0FnSUhOdmNuSnZkem9nSjNOaFpDY3NYRzRnSUNBZ1puVnVPaUFuY21Wc1lYaGxaQ2NzWEc0Z0lDQWdiRzl2YTNWd09pQW5iRzl2YTFWd0p5eGNiaUFnSUNCc2IyOXJaRzkzYmpvZ0oyeHZiMnRFYjNkdUp5eGNiaUFnSUNCc2IyOXJiR1ZtZERvZ0oyeHZiMnRNWldaMEp5eGNiaUFnSUNCc2IyOXJjbWxuYUhRNklDZHNiMjlyVW1sbmFIUW5MRnh1SUNBZ0lDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXNWxlSFF0YkdsdVpTQkFkSGx3WlhOamNtbHdkQzFsYzJ4cGJuUXZibUZ0YVc1bkxXTnZiblpsYm5ScGIyNWNiaUFnSUNCaWJHbHVhMTlzT2lBbllteHBibXRNWldaMEp5eGNiaUFnSUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ1FIUjVjR1Z6WTNKcGNIUXRaWE5zYVc1MEwyNWhiV2x1WnkxamIyNTJaVzUwYVc5dVhHNGdJQ0FnWW14cGJtdGZjam9nSjJKc2FXNXJVbWxuYUhRbkxGeHVJQ0FnSUc1bGRYUnlZV3c2SUNkdVpYVjBjbUZzSnl4Y2JpQWdmVHRjYmx4dUlDQndkV0pzYVdNZ2NtVmhaRzl1YkhrZ2NHRnljMlZ5T2lCSFRGUkdVR0Z5YzJWeU8xeHVYRzRnSUhCMVlteHBZeUJuWlhRZ2JtRnRaU2dwT2lCemRISnBibWNnZTF4dUlDQWdJQzh2SUZkbElITm9iM1ZzWkNCMWMyVWdkR2hsSUdWNGRHVnVjMmx2YmlCdVlXMWxJR2x1YzNSbFlXUWdZblYwSUhkbElHaGhkbVVnYlhWc2RHbHdiR1VnY0d4MVoybHVjeUJtYjNJZ1lXNGdaWGgwWlc1emFXOXVMaTR1WEc0Z0lDQWdjbVYwZFhKdUlDZFdVazFGZUhCeVpYTnphVzl1VEc5aFpHVnlVR3gxWjJsdUp6dGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWh3WVhKelpYSTZJRWRNVkVaUVlYSnpaWElwSUh0Y2JpQWdJQ0IwYUdsekxuQmhjbk5sY2lBOUlIQmhjbk5sY2p0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCaGMzbHVZeUJoWm5SbGNsSnZiM1FvWjJ4MFpqb2dSMHhVUmlrNklGQnliMjFwYzJVOGRtOXBaRDRnZTF4dUlDQWdJR2RzZEdZdWRYTmxja1JoZEdFdWRuSnRSWGh3Y21WemMybHZiazFoYm1GblpYSWdQU0JoZDJGcGRDQjBhR2x6TGw5cGJYQnZjblFvWjJ4MFppazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nU1cxd2IzSjBJR0VnZTBCc2FXNXJJRlpTVFVWNGNISmxjM05wYjI1TllXNWhaMlZ5ZlNCbWNtOXRJR0VnVmxKTkxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdaMngwWmlCQklIQmhjbk5sWkNCeVpYTjFiSFFnYjJZZ1IweFVSaUIwWVd0bGJpQm1jbTl0SUVkTVZFWk1iMkZrWlhKY2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1lYTjVibU1nWDJsdGNHOXlkQ2huYkhSbU9pQkhURlJHS1RvZ1VISnZiV2x6WlR4V1VrMUZlSEJ5WlhOemFXOXVUV0Z1WVdkbGNpQjhJRzUxYkd3K0lIdGNiaUFnSUNCamIyNXpkQ0IyTVZKbGMzVnNkQ0E5SUdGM1lXbDBJSFJvYVhNdVgzWXhTVzF3YjNKMEtHZHNkR1lwTzF4dUlDQWdJR2xtSUNoMk1WSmxjM1ZzZENrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhZeFVtVnpkV3gwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElIWXdVbVZ6ZFd4MElEMGdZWGRoYVhRZ2RHaHBjeTVmZGpCSmJYQnZjblFvWjJ4MFppazdYRzRnSUNBZ2FXWWdLSFl3VW1WemRXeDBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkakJTWlhOMWJIUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR0Z6ZVc1aklGOTJNVWx0Y0c5eWRDaG5iSFJtT2lCSFRGUkdLVG9nVUhKdmJXbHpaVHhXVWsxRmVIQnlaWE56YVc5dVRXRnVZV2RsY2lCOElHNTFiR3crSUh0Y2JpQWdJQ0JqYjI1emRDQnFjMjl1SUQwZ2RHaHBjeTV3WVhKelpYSXVhbk52YmlCaGN5QkhURlJHVTJOb1pXMWhMa2xIVEZSR08xeHVYRzRnSUNBZ0x5OGdaV0Z5YkhrZ1lXSnZjblFnYVdZZ2FYUWdaRzlsYzI0bmRDQjFjMlVnZG5KdFhHNGdJQ0FnWTI5dWMzUWdhWE5XVWsxVmMyVmtJRDBnYW5OdmJpNWxlSFJsYm5OcGIyNXpWWE5sWkQ4dWFXNWtaWGhQWmlnblZsSk5RMTkyY20wbktTQWhQVDBnTFRFN1hHNGdJQ0FnYVdZZ0tDRnBjMVpTVFZWelpXUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElHVjRkR1Z1YzJsdmJpQTlJR3B6YjI0dVpYaDBaVzV6YVc5dWN6OHVXeWRXVWsxRFgzWnliU2RkSUdGeklGWXhWbEpOVTJOb1pXMWhMbFpTVFVOV1VrMGdmQ0IxYm1SbFptbHVaV1E3WEc0Z0lDQWdhV1lnS0NGbGVIUmxibk5wYjI0cElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhOd1pXTldaWEp6YVc5dUlEMGdaWGgwWlc1emFXOXVMbk53WldOV1pYSnphVzl1TzF4dUlDQWdJR2xtSUNnaFVFOVRVMGxDVEVWZlUxQkZRMTlXUlZKVFNVOU9VeTVvWVhNb2MzQmxZMVpsY25OcGIyNHBLU0I3WEc0Z0lDQWdJQ0JqYjI1emIyeGxMbmRoY200b1lGWlNUVVY0Y0hKbGMzTnBiMjVNYjJGa1pYSlFiSFZuYVc0NklGVnVhMjV2ZDI0Z1ZsSk5RMTkyY20wZ2MzQmxZMVpsY25OcGIyNGdYQ0lrZTNOd1pXTldaWEp6YVc5dWZWd2lZQ2s3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQnpZMmhsYldGRmVIQnlaWE56YVc5dWN5QTlJR1Y0ZEdWdWMybHZiaTVsZUhCeVpYTnphVzl1Y3p0Y2JpQWdJQ0JwWmlBb0lYTmphR1Z0WVVWNGNISmxjM05wYjI1ektTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJzYVhOMElHVjRjSEpsYzNOcGIyNXpYRzRnSUNBZ1kyOXVjM1FnY0hKbGMyVjBUbUZ0WlZObGRDQTlJRzVsZHlCVFpYUThjM1J5YVc1blBpaFBZbXBsWTNRdWRtRnNkV1Z6S0ZaU1RVVjRjSEpsYzNOcGIyNVFjbVZ6WlhST1lXMWxLU2s3WEc0Z0lDQWdZMjl1YzNRZ2JtRnRaVk5qYUdWdFlVVjRjSEpsYzNOcGIyNU5ZWEFnUFNCdVpYY2dUV0Z3UEhOMGNtbHVaeXdnVmpGV1VrMVRZMmhsYldFdVJYaHdjbVZ6YzJsdmJqNG9LVHRjYmx4dUlDQWdJR2xtSUNoelkyaGxiV0ZGZUhCeVpYTnphVzl1Y3k1d2NtVnpaWFFnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnVDJKcVpXTjBMbVZ1ZEhKcFpYTW9jMk5vWlcxaFJYaHdjbVZ6YzJsdmJuTXVjSEpsYzJWMEtTNW1iM0pGWVdOb0tDaGJibUZ0WlN3Z2MyTm9aVzFoUlhod2NtVnpjMmx2YmwwcElEMCtJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tITmphR1Z0WVVWNGNISmxjM05wYjI0Z1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNBZ0lDQWdmU0F2THlCMGVYQmxjMk55YVhCMFhHNWNiaUFnSUNBZ0lDQWdhV1lnS0NGd2NtVnpaWFJPWVcxbFUyVjBMbWhoY3lodVlXMWxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk52YkdVdWQyRnliaWhnVmxKTlJYaHdjbVZ6YzJsdmJreHZZV1JsY2xCc2RXZHBiam9nVlc1cmJtOTNiaUJ3Y21WelpYUWdibUZ0WlNCY0lpUjdibUZ0WlgxY0lpQmtaWFJsWTNSbFpDNGdTV2R1YjNKcGJtY2dkR2hsSUdWNGNISmxjM05wYjI1Z0tUdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCdVlXMWxVMk5vWlcxaFJYaHdjbVZ6YzJsdmJrMWhjQzV6WlhRb2JtRnRaU3dnYzJOb1pXMWhSWGh3Y21WemMybHZiaWs3WEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2MyTm9aVzFoUlhod2NtVnpjMmx2Ym5NdVkzVnpkRzl0SUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUU5aWFtVmpkQzVsYm5SeWFXVnpLSE5qYUdWdFlVVjRjSEpsYzNOcGIyNXpMbU4xYzNSdmJTa3VabTl5UldGamFDZ29XMjVoYldVc0lITmphR1Z0WVVWNGNISmxjM05wYjI1ZEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUdsbUlDaHdjbVZ6WlhST1lXMWxVMlYwTG1oaGN5aHVZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OdmJHVXVkMkZ5YmloY2JpQWdJQ0FnSUNBZ0lDQWdJR0JXVWsxRmVIQnlaWE56YVc5dVRHOWhaR1Z5VUd4MVoybHVPaUJEZFhOMGIyMGdaWGh3Y21WemMybHZiaUJqWVc1dWIzUWdhR0YyWlNCd2NtVnpaWFFnYm1GdFpTQmNJaVI3Ym1GdFpYMWNJaTRnU1dkdWIzSnBibWNnZEdobElHVjRjSEpsYzNOcGIyNWdMRnh1SUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYm1GdFpWTmphR1Z0WVVWNGNISmxjM05wYjI1TllYQXVjMlYwS0c1aGJXVXNJSE5qYUdWdFlVVjRjSEpsYzNOcGIyNHBPMXh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnY0hKbGNHRnlaU0J0WVc1aFoyVnlYRzRnSUNBZ1kyOXVjM1FnYldGdVlXZGxjaUE5SUc1bGR5QldVazFGZUhCeVpYTnphVzl1VFdGdVlXZGxjaWdwTzF4dVhHNGdJQ0FnTHk4Z2JHOWhaQ0JsZUhCeVpYTnphVzl1YzF4dUlDQWdJR0YzWVdsMElGQnliMjFwYzJVdVlXeHNLRnh1SUNBZ0lDQWdRWEp5WVhrdVpuSnZiU2h1WVcxbFUyTm9aVzFoUlhod2NtVnpjMmx2YmsxaGNDNWxiblJ5YVdWektDa3BMbTFoY0NoaGMzbHVZeUFvVzI1aGJXVXNJSE5qYUdWdFlVVjRjSEpsYzNOcGIyNWRLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdWNGNISmxjM05wYjI0Z1BTQnVaWGNnVmxKTlJYaHdjbVZ6YzJsdmJpaHVZVzFsS1R0Y2JpQWdJQ0FnSUNBZ1oyeDBaaTV6WTJWdVpTNWhaR1FvWlhod2NtVnpjMmx2YmlrN1hHNWNiaUFnSUNBZ0lDQWdaWGh3Y21WemMybHZiaTVwYzBKcGJtRnllU0E5SUhOamFHVnRZVVY0Y0hKbGMzTnBiMjR1YVhOQ2FXNWhjbmtnUHo4Z1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUdWNGNISmxjM05wYjI0dWIzWmxjbkpwWkdWQ2JHbHVheUE5SUhOamFHVnRZVVY0Y0hKbGMzTnBiMjR1YjNabGNuSnBaR1ZDYkdsdWF5QS9QeUFuYm05dVpTYzdYRzRnSUNBZ0lDQWdJR1Y0Y0hKbGMzTnBiMjR1YjNabGNuSnBaR1ZNYjI5clFYUWdQU0J6WTJobGJXRkZlSEJ5WlhOemFXOXVMbTkyWlhKeWFXUmxURzl2YTBGMElEOC9JQ2R1YjI1bEp6dGNiaUFnSUNBZ0lDQWdaWGh3Y21WemMybHZiaTV2ZG1WeWNtbGtaVTF2ZFhSb0lEMGdjMk5vWlcxaFJYaHdjbVZ6YzJsdmJpNXZkbVZ5Y21sa1pVMXZkWFJvSUQ4L0lDZHViMjVsSnp0Y2JseHVJQ0FnSUNBZ0lDQnpZMmhsYldGRmVIQnlaWE56YVc5dUxtMXZjbkJvVkdGeVoyVjBRbWx1WkhNL0xtWnZja1ZoWTJnb1lYTjVibU1nS0dKcGJtUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvWW1sdVpDNXViMlJsSUQwOVBTQjFibVJsWm1sdVpXUWdmSHdnWW1sdVpDNXBibVJsZUNBOVBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnY0hKcGJXbDBhWFpsY3lBOUlDaGhkMkZwZENCbmJIUm1SWGgwY21GamRGQnlhVzFwZEdsMlpYTkdjbTl0VG05a1pTaG5iSFJtTENCaWFXNWtMbTV2WkdVcEtTRTdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdiVzl5Y0doVVlYSm5aWFJKYm1SbGVDQTlJR0pwYm1RdWFXNWtaWGc3WEc1Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJqYUdWamF5QnBaaUIwYUdVZ2JXVnphQ0JvWVhNZ2RHaGxJSFJoY21kbGRDQnRiM0p3YUNCMFlYSm5aWFJjYmlBZ0lDQWdJQ0FnSUNCcFppQW9YRzRnSUNBZ0lDQWdJQ0FnSUNBaGNISnBiV2wwYVhabGN5NWxkbVZ5ZVNoY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnS0hCeWFXMXBkR2wyWlNrZ1BUNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQkJjbkpoZVM1cGMwRnljbUY1S0hCeWFXMXBkR2wyWlM1dGIzSndhRlJoY21kbGRFbHVabXgxWlc1alpYTXBJQ1ltWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYlc5eWNHaFVZWEpuWlhSSmJtUmxlQ0E4SUhCeWFXMXBkR2wyWlM1dGIzSndhRlJoY21kbGRFbHVabXgxWlc1alpYTXViR1Z1WjNSb0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnS1Z4dUlDQWdJQ0FnSUNBZ0lDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1M1lYSnVLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQmdWbEpOUlhod2NtVnpjMmx2Ymt4dllXUmxjbEJzZFdkcGJqb2dKSHR6WTJobGJXRkZlSEJ5WlhOemFXOXVMbTVoYldWOUlHRjBkR1Z0Y0hSeklIUnZJR2x1WkdWNElHMXZjbkJvSUNNa2UyMXZjbkJvVkdGeVoyVjBTVzVrWlhoOUlHSjFkQ0J1YjNRZ1ptOTFibVF1WUN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ1pYaHdjbVZ6YzJsdmJpNWhaR1JDYVc1a0tGeHVJQ0FnSUNBZ0lDQWdJQ0FnYm1WM0lGWlNUVVY0Y0hKbGMzTnBiMjVOYjNKd2FGUmhjbWRsZEVKcGJtUW9lMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQndjbWx0YVhScGRtVnpMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnBibVJsZURvZ2JXOXljR2hVWVhKblpYUkpibVJsZUN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnZDJWcFoyaDBPaUJpYVc1a0xuZGxhV2RvZENBL1B5QXhMakFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQjlLU3hjYmlBZ0lDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ0lDQjlLVHRjYmx4dUlDQWdJQ0FnSUNCcFppQW9jMk5vWlcxaFJYaHdjbVZ6YzJsdmJpNXRZWFJsY21saGJFTnZiRzl5UW1sdVpITWdmSHdnYzJOb1pXMWhSWGh3Y21WemMybHZiaTUwWlhoMGRYSmxWSEpoYm5ObWIzSnRRbWx1WkhNcElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCc2FYTjBJSFZ3SUdWMlpYSjVJRzFoZEdWeWFXRnNJR2x1SUdCbmJIUm1Mbk5qWlc1bFlGeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHZHNkR1pOWVhSbGNtbGhiSE02SUZSSVVrVkZMazFoZEdWeWFXRnNXMTBnUFNCYlhUdGNiaUFnSUNBZ0lDQWdJQ0JuYkhSbUxuTmpaVzVsTG5SeVlYWmxjbk5sS0NodlltcGxZM1FwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzFoZEdWeWFXRnNJRDBnS0c5aWFtVmpkQ0JoY3lCaGJua3BMbTFoZEdWeWFXRnNJR0Z6SUZSSVVrVkZMazFoZEdWeWFXRnNJSHdnZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0cxaGRHVnlhV0ZzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdkc2RHWk5ZWFJsY21saGJITXVjSFZ6YUNodFlYUmxjbWxoYkNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2ZTazdYRzVjYmlBZ0lDQWdJQ0FnSUNCelkyaGxiV0ZGZUhCeVpYTnphVzl1TG0xaGRHVnlhV0ZzUTI5c2IzSkNhVzVrY3o4dVptOXlSV0ZqYUNoaGMzbHVZeUFvWW1sdVpDa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JXRjBaWEpwWVd4eklEMGdaMngwWmsxaGRHVnlhV0ZzY3k1bWFXeDBaWElvS0cxaGRHVnlhV0ZzS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUcxaGRHVnlhV0ZzU1c1a1pYZ2dQU0JuYkhSbVIyVjBRWE56YjJOcFlYUmxaRTFoZEdWeWFXRnNTVzVrWlhnb2RHaHBjeTV3WVhKelpYSXNJRzFoZEdWeWFXRnNLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHSnBibVF1YldGMFpYSnBZV3dnUFQwOUlHMWhkR1Z5YVdGc1NXNWtaWGc3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlLVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdiV0YwWlhKcFlXeHpMbVp2Y2tWaFkyZ29LRzFoZEdWeWFXRnNLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdWNGNISmxjM05wYjI0dVlXUmtRbWx1WkNoY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdVpYY2dWbEpOUlhod2NtVnpjMmx2YmsxaGRHVnlhV0ZzUTI5c2IzSkNhVzVrS0h0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMWhkR1Z5YVdGc0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkSGx3WlRvZ1ltbHVaQzUwZVhCbExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR0Z5WjJWMFZtRnNkV1U2SUc1bGR5QlVTRkpGUlM1RGIyeHZjaWdwTG1aeWIyMUJjbkpoZVNoaWFXNWtMblJoY21kbGRGWmhiSFZsS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQWdJSDBwTzF4dVhHNGdJQ0FnSUNBZ0lDQWdjMk5vWlcxaFJYaHdjbVZ6YzJsdmJpNTBaWGgwZFhKbFZISmhibk5tYjNKdFFtbHVaSE0vTG1admNrVmhZMmdvWVhONWJtTWdLR0pwYm1RcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUcxaGRHVnlhV0ZzY3lBOUlHZHNkR1pOWVhSbGNtbGhiSE11Wm1sc2RHVnlLQ2h0WVhSbGNtbGhiQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J0WVhSbGNtbGhiRWx1WkdWNElEMGdaMngwWmtkbGRFRnpjMjlqYVdGMFpXUk5ZWFJsY21saGJFbHVaR1Y0S0hSb2FYTXVjR0Z5YzJWeUxDQnRZWFJsY21saGJDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCaWFXNWtMbTFoZEdWeWFXRnNJRDA5UFNCdFlYUmxjbWxoYkVsdVpHVjRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTazdYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lHMWhkR1Z5YVdGc2N5NW1iM0pGWVdOb0tDaHRZWFJsY21saGJDa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JsZUhCeVpYTnphVzl1TG1Ga1pFSnBibVFvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYm1WM0lGWlNUVVY0Y0hKbGMzTnBiMjVVWlhoMGRYSmxWSEpoYm5ObWIzSnRRbWx1WkNoN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnRZWFJsY21saGJDeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzltWm5ObGREb2dibVYzSUZSSVVrVkZMbFpsWTNSdmNqSW9LUzVtY205dFFYSnlZWGtvWW1sdVpDNXZabVp6WlhRZ1B6OGdXekF1TUN3Z01DNHdYU2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCelkyRnNaVG9nYm1WM0lGUklVa1ZGTGxabFkzUnZjaklvS1M1bWNtOXRRWEp5WVhrb1ltbHVaQzV6WTJGc1pTQS9QeUJiTVM0d0xDQXhMakJkS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdiV0Z1WVdkbGNpNXlaV2RwYzNSbGNrVjRjSEpsYzNOcGIyNG9aWGh3Y21WemMybHZiaWs3WEc0Z0lDQWdJQ0I5S1N4Y2JpQWdJQ0FwTzF4dVhHNGdJQ0FnY21WMGRYSnVJRzFoYm1GblpYSTdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR0Z6ZVc1aklGOTJNRWx0Y0c5eWRDaG5iSFJtT2lCSFRGUkdLVG9nVUhKdmJXbHpaVHhXVWsxRmVIQnlaWE56YVc5dVRXRnVZV2RsY2lCOElHNTFiR3crSUh0Y2JpQWdJQ0JqYjI1emRDQnFjMjl1SUQwZ2RHaHBjeTV3WVhKelpYSXVhbk52YmlCaGN5QkhURlJHVTJOb1pXMWhMa2xIVEZSR08xeHVYRzRnSUNBZ0x5OGdaV0Z5YkhrZ1lXSnZjblFnYVdZZ2FYUWdaRzlsYzI0bmRDQjFjMlVnZG5KdFhHNGdJQ0FnWTI5dWMzUWdkbkp0UlhoMElEMGdhbk52Ymk1bGVIUmxibk5wYjI1elB5NVdVazBnWVhNZ1ZqQldVazB1VmxKTklId2dkVzVrWldacGJtVmtPMXh1SUNBZ0lHbG1JQ2doZG5KdFJYaDBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQnpZMmhsYldGQ2JHVnVaRk5vWVhCbElEMGdkbkp0UlhoMExtSnNaVzVrVTJoaGNHVk5ZWE4wWlhJN1hHNGdJQ0FnYVdZZ0tDRnpZMmhsYldGQ2JHVnVaRk5vWVhCbEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCdFlXNWhaMlZ5SUQwZ2JtVjNJRlpTVFVWNGNISmxjM05wYjI1TllXNWhaMlZ5S0NrN1hHNWNiaUFnSUNCamIyNXpkQ0J6WTJobGJXRkNiR1Z1WkZOb1lYQmxSM0p2ZFhCeklEMGdjMk5vWlcxaFFteGxibVJUYUdGd1pTNWliR1Z1WkZOb1lYQmxSM0p2ZFhCek8xeHVJQ0FnSUdsbUlDZ2hjMk5vWlcxaFFteGxibVJUYUdGd1pVZHliM1Z3Y3lrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUcxaGJtRm5aWEk3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ1lteGxibVJUYUdGd1pVNWhiV1ZUWlhRZ1BTQnVaWGNnVTJWMFBITjBjbWx1Wno0b0tUdGNibHh1SUNBZ0lHRjNZV2wwSUZCeWIyMXBjMlV1WVd4c0tGeHVJQ0FnSUNBZ2MyTm9aVzFoUW14bGJtUlRhR0Z3WlVkeWIzVndjeTV0WVhBb1lYTjVibU1nS0hOamFHVnRZVWR5YjNWd0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSFl3VUhKbGMyVjBUbUZ0WlNBOUlITmphR1Z0WVVkeWIzVndMbkJ5WlhObGRFNWhiV1U3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSFl4VUhKbGMyVjBUbUZ0WlNBOVhHNGdJQ0FnSUNBZ0lDQWdLSFl3VUhKbGMyVjBUbUZ0WlNBaFBTQnVkV3hzSUNZbUlGWlNUVVY0Y0hKbGMzTnBiMjVNYjJGa1pYSlFiSFZuYVc0dWRqQjJNVkJ5WlhObGRFNWhiV1ZOWVhCYmRqQlFjbVZ6WlhST1lXMWxYU2tnZkh3Z2JuVnNiRHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdibUZ0WlNBOUlIWXhVSEpsYzJWMFRtRnRaU0EvUHlCelkyaGxiV0ZIY205MWNDNXVZVzFsTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2h1WVcxbElEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emIyeGxMbmRoY200b0oxWlNUVVY0Y0hKbGMzTnBiMjVNYjJGa1pYSlFiSFZuYVc0NklFOXVaU0J2WmlCamRYTjBiMjBnWlhod2NtVnpjMmx2Ym5NZ2FHRnpJRzV2SUc1aGJXVXVJRWxuYm05eWFXNW5JSFJvWlNCbGVIQnlaWE56YVc5dUp5azdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0x5OGdaSFZ3YkdsallYUnBiMjRnWTJobFkydGNiaUFnSUNBZ0lDQWdhV1lnS0dKc1pXNWtVMmhoY0dWT1lXMWxVMlYwTG1oaGN5aHVZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OdmJHVXVkMkZ5YmloY2JpQWdJQ0FnSUNBZ0lDQWdJR0JXVWsxRmVIQnlaWE56YVc5dVRHOWhaR1Z5VUd4MVoybHVPaUJCYmlCbGVIQnlaWE56YVc5dUlIQnlaWE5sZENBa2UzWXdVSEpsYzJWMFRtRnRaWDBnYUdGeklHUjFjR3hwWTJGMFpXUWdaVzUwY21sbGN5NGdTV2R1YjNKcGJtY2dkR2hsSUdWNGNISmxjM05wYjI1Z0xGeHVJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdZbXhsYm1SVGFHRndaVTVoYldWVFpYUXVZV1JrS0c1aGJXVXBPMXh1WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR1Y0Y0hKbGMzTnBiMjRnUFNCdVpYY2dWbEpOUlhod2NtVnpjMmx2YmlodVlXMWxLVHRjYmlBZ0lDQWdJQ0FnWjJ4MFppNXpZMlZ1WlM1aFpHUW9aWGh3Y21WemMybHZiaWs3WEc1Y2JpQWdJQ0FnSUNBZ1pYaHdjbVZ6YzJsdmJpNXBjMEpwYm1GeWVTQTlJSE5qYUdWdFlVZHliM1Z3TG1selFtbHVZWEo1SUQ4L0lHWmhiSE5sTzF4dUlDQWdJQ0FnSUNBdkx5QjJNQ0JrYjJWemJpZDBJR2hoZG1VZ2FXZHViM0psSUhCeWIzQmxjblJwWlhOY2JseHVJQ0FnSUNBZ0lDQXZMeUJDYVc1a0lHMXZjbkJvVkdGeVoyVjBYRzRnSUNBZ0lDQWdJR2xtSUNoelkyaGxiV0ZIY205MWNDNWlhVzVrY3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJSE5qYUdWdFlVZHliM1Z3TG1KcGJtUnpMbVp2Y2tWaFkyZ29ZWE41Ym1NZ0tHSnBibVFwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaGlhVzVrTG0xbGMyZ2dQVDA5SUhWdVpHVm1hVzVsWkNCOGZDQmlhVzVrTG1sdVpHVjRJRDA5UFNCMWJtUmxabWx1WldRcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdWIyUmxjMVZ6YVc1blRXVnphRG9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdwemIyNHVibTlrWlhNL0xtWnZja1ZoWTJnb0tHNXZaR1VzSUdrcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0c1dlpHVXViV1Z6YUNBOVBUMGdZbWx1WkM1dFpYTm9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYm05a1pYTlZjMmx1WjAxbGMyZ3VjSFZ6YUNocEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNrN1hHNWNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzF2Y25Cb1ZHRnlaMlYwU1c1a1pYZ2dQU0JpYVc1a0xtbHVaR1Y0TzF4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0JoZDJGcGRDQlFjbTl0YVhObExtRnNiQ2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdibTlrWlhOVmMybHVaMDFsYzJndWJXRndLR0Z6ZVc1aklDaHViMlJsU1c1a1pYZ3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J3Y21sdGFYUnBkbVZ6SUQwZ0tHRjNZV2wwSUdkc2RHWkZlSFJ5WVdOMFVISnBiV2wwYVhabGMwWnliMjFPYjJSbEtHZHNkR1lzSUc1dlpHVkpibVJsZUNrcElUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUdOb1pXTnJJR2xtSUhSb1pTQnRaWE5vSUdoaGN5QjBhR1VnZEdGeVoyVjBJRzF2Y25Cb0lIUmhjbWRsZEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Z3Y21sdGFYUnBkbVZ6TG1WMlpYSjVLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBb2NISnBiV2wwYVhabEtTQTlQbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lFRnljbUY1TG1selFYSnlZWGtvY0hKcGJXbDBhWFpsTG0xdmNuQm9WR0Z5WjJWMFNXNW1iSFZsYm1ObGN5a2dKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnRiM0p3YUZSaGNtZGxkRWx1WkdWNElEd2djSEpwYldsMGFYWmxMbTF2Y25Cb1ZHRnlaMlYwU1c1bWJIVmxibU5sY3k1c1pXNW5kR2dzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emIyeGxMbmRoY200b1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0JXVWsxRmVIQnlaWE56YVc5dVRHOWhaR1Z5VUd4MVoybHVPaUFrZTNOamFHVnRZVWR5YjNWd0xtNWhiV1Y5SUdGMGRHVnRjSFJ6SUhSdklHbHVaR1Y0SUNSN2JXOXljR2hVWVhKblpYUkpibVJsZUgxMGFDQnRiM0p3YUNCaWRYUWdibTkwSUdadmRXNWtMbUFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1Y0Y0hKbGMzTnBiMjR1WVdSa1FtbHVaQ2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc1bGR5QldVazFGZUhCeVpYTnphVzl1VFc5eWNHaFVZWEpuWlhSQ2FXNWtLSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NISnBiV2wwYVhabGN5eGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVc1a1pYZzZJRzF2Y25Cb1ZHRnlaMlYwU1c1a1pYZ3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhkbGFXZG9kRG9nTUM0d01TQXFJQ2hpYVc1a0xuZGxhV2RvZENBL1B5QXhNREFwTENBdkx5QnVZWEp5YjNkcGJtY2dkR2hsSUhKaGJtZGxJR1p5YjIwZ1d5QXdMakFnTFNBeE1EQXVNQ0JkSUhSdklGc2dNQzR3SUMwZ01TNHdJRjFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQzh2SUVKcGJtUWdUV0YwWlhKcFlXeERiMnh2Y2lCaGJtUWdWR1Y0ZEhWeVpWUnlZVzV6Wm05eWJWeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdFlYUmxjbWxoYkZaaGJIVmxjeUE5SUhOamFHVnRZVWR5YjNWd0xtMWhkR1Z5YVdGc1ZtRnNkV1Z6TzF4dUlDQWdJQ0FnSUNCcFppQW9iV0YwWlhKcFlXeFdZV3gxWlhNZ0ppWWdiV0YwWlhKcFlXeFdZV3gxWlhNdWJHVnVaM1JvSUNFOVBTQXdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2JXRjBaWEpwWVd4V1lXeDFaWE11Wm05eVJXRmphQ2dvYldGMFpYSnBZV3hXWVd4MVpTa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J0WVhSbGNtbGhiRlpoYkhWbExtMWhkR1Z5YVdGc1RtRnRaU0E5UFQwZ2RXNWtaV1pwYm1Wa0lIeDhYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHMWhkR1Z5YVdGc1ZtRnNkV1V1Y0hKdmNHVnlkSGxPWVcxbElEMDlQU0IxYm1SbFptbHVaV1FnZkh4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnYldGMFpYSnBZV3hXWVd4MVpTNTBZWEpuWlhSV1lXeDFaU0E5UFQwZ2RXNWtaV1pwYm1Wa1hHNGdJQ0FnSUNBZ0lDQWdJQ0FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBdktpcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBcUlPT0NvdU9Ea09PQ3YrT0R2T09CcnVPQ3F1T0RsdU9DdU9PQ3ArT0NyK09EaU9PQnEraW9yZVd1bXVPQmxlT0NqT09CcHVPQmhPT0NpK09EbnVPRGh1T0RxdU9Db3VPRHErT0JydVdHaGVPQmkrT0NpVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDb2diV0YwWlhKcFlXeFdZV3gxWmVPQnArYU1oK1d1bXVPQmxlT0NqT09CcHVPQmhPT0NpK09EbnVPRGh1T0RxdU9Db3VPRHErT0NrdW1iaHVPQ2dlT0NpK09BZ2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ3BjYmlBZ0lDQWdJQ0FnSUNBZ0lDQXFJT2VKdWVXdW11T0JxK09CcitXUWplV0pqZU9Da3VTOXYrZVVxT09CbWVPQ2krT0FnbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDb2c0NEtpNDRLbTQ0T0k0NE9wNDRLazQ0T3o1bytQNTVTNzU1U280NEd1NDRPZTQ0T0c0NE9xNDRLaTQ0T3I0NEtDNVpDTTVwbUM0NEdyNlp1RzQ0S0I0NEtMNDRDQ1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnS2k5Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHMWhkR1Z5YVdGc2N6b2dWRWhTUlVVdVRXRjBaWEpwWVd4YlhTQTlJRnRkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdaMngwWmk1elkyVnVaUzUwY21GMlpYSnpaU2dvYjJKcVpXTjBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDZ29iMkpxWldOMElHRnpJR0Z1ZVNrdWJXRjBaWEpwWVd3cElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdFlYUmxjbWxoYkRvZ1ZFaFNSVVV1VFdGMFpYSnBZV3hiWFNCOElGUklVa1ZGTGsxaGRHVnlhV0ZzSUQwZ0tHOWlhbVZqZENCaGN5QmhibmtwTG0xaGRHVnlhV0ZzTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaEJjbkpoZVM1cGMwRnljbUY1S0cxaGRHVnlhV0ZzS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiV0YwWlhKcFlXeHpMbkIxYzJnb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzR1TG0xaGRHVnlhV0ZzTG1acGJIUmxjaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW9iWFJzS1NBOVBseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tHMTBiQzV1WVcxbElEMDlQU0J0WVhSbGNtbGhiRlpoYkhWbExtMWhkR1Z5YVdGc1RtRnRaU0VnZkh4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JYUnNMbTVoYldVZ1BUMDlJRzFoZEdWeWFXRnNWbUZzZFdVdWJXRjBaWEpwWVd4T1lXMWxJU0FySUNjZ0tFOTFkR3hwYm1VcEp5a2dKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzFoZEdWeWFXRnNjeTVwYm1SbGVFOW1LRzEwYkNrZ1BUMDlJQzB4TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tHMWhkR1Z5YVdGc0xtNWhiV1VnUFQwOUlHMWhkR1Z5YVdGc1ZtRnNkV1V1YldGMFpYSnBZV3hPWVcxbElDWW1JRzFoZEdWeWFXRnNjeTVwYm1SbGVFOW1LRzFoZEdWeWFXRnNLU0E5UFQwZ0xURXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUcxaGRHVnlhV0ZzY3k1d2RYTm9LRzFoZEdWeWFXRnNLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHBPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdFlYUmxjbWxoYkZCeWIzQmxjblI1VG1GdFpTQTlJRzFoZEdWeWFXRnNWbUZzZFdVdWNISnZjR1Z5ZEhsT1lXMWxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JXRjBaWEpwWVd4ekxtWnZja1ZoWTJnb0tHMWhkR1Z5YVdGc0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUZSbGVIUjFjbVZVY21GdWMyWnZjbTFDYVc1a1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHRZWFJsY21saGJGQnliM0JsY25SNVRtRnRaU0E5UFQwZ0oxOU5ZV2x1VkdWNFgxTlVKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSE5qWVd4bElEMGdibVYzSUZSSVVrVkZMbFpsWTNSdmNqSW9iV0YwWlhKcFlXeFdZV3gxWlM1MFlYSm5aWFJXWVd4MVpTRmJNRjBzSUcxaGRHVnlhV0ZzVm1Gc2RXVXVkR0Z5WjJWMFZtRnNkV1VoV3pGZEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdlptWnpaWFFnUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TWlodFlYUmxjbWxoYkZaaGJIVmxMblJoY21kbGRGWmhiSFZsSVZzeVhTd2diV0YwWlhKcFlXeFdZV3gxWlM1MFlYSm5aWFJXWVd4MVpTRmJNMTBwTzF4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IyWm1jMlYwTG5rZ1BTQXhMakFnTFNCdlptWnpaWFF1ZVNBdElITmpZV3hsTG5rN1hHNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxlSEJ5WlhOemFXOXVMbUZrWkVKcGJtUW9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J1WlhjZ1ZsSk5SWGh3Y21WemMybHZibFJsZUhSMWNtVlVjbUZ1YzJadmNtMUNhVzVrS0h0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiV0YwWlhKcFlXd3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOallXeGxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdlptWnpaWFFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXBPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnVFdGMFpYSnBZV3hEYjJ4dmNrSnBibVJjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JXRjBaWEpwWVd4RGIyeHZjbFI1Y0dVZ1BTQjJNRVY0Y0hKbGMzTnBiMjVOWVhSbGNtbGhiRU52Ykc5eVRXRndXMjFoZEdWeWFXRnNVSEp2Y0dWeWRIbE9ZVzFsWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHMWhkR1Z5YVdGc1EyOXNiM0pVZVhCbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaWGh3Y21WemMybHZiaTVoWkdSQ2FXNWtLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYm1WM0lGWlNUVVY0Y0hKbGMzTnBiMjVOWVhSbGNtbGhiRU52Ykc5eVFtbHVaQ2g3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMWhkR1Z5YVdGc0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwZVhCbE9pQnRZWFJsY21saGJFTnZiRzl5Vkhsd1pTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdGeVoyVjBWbUZzZFdVNklHNWxkeUJVU0ZKRlJTNURiMnh2Y2lndUxpNXRZWFJsY21saGJGWmhiSFZsTG5SaGNtZGxkRlpoYkhWbElTNXpiR2xqWlNnd0xDQXpLU2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXBPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzI5c1pTNTNZWEp1S0cxaGRHVnlhV0ZzVUhKdmNHVnlkSGxPWVcxbElDc2dKeUJwY3lCdWIzUWdjM1Z3Y0c5eWRHVmtKeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUcxaGJtRm5aWEl1Y21WbmFYTjBaWEpGZUhCeVpYTnphVzl1S0dWNGNISmxjM05wYjI0cE8xeHVJQ0FnSUNBZ2ZTa3NYRzRnSUNBZ0tUdGNibHh1SUNBZ0lISmxkSFZ5YmlCdFlXNWhaMlZ5TzF4dUlDQjlYRzU5WEc0aUxDSXZLaUJsYzJ4cGJuUXRaR2x6WVdKc1pTQkFkSGx3WlhOamNtbHdkQzFsYzJ4cGJuUXZibUZ0YVc1bkxXTnZiblpsYm5ScGIyNGdLaTljYmx4dVpYaHdiM0owSUdOdmJuTjBJRlpTVFVWNGNISmxjM05wYjI1UGRtVnljbWxrWlZSNWNHVWdQU0I3WEc0Z0lFNXZibVU2SUNkdWIyNWxKeXhjYmlBZ1FteHZZMnM2SUNkaWJHOWpheWNzWEc0Z0lFSnNaVzVrT2lBbllteGxibVFuTEZ4dWZTQmhjeUJqYjI1emREdGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1ZsSk5SWGh3Y21WemMybHZiazkyWlhKeWFXUmxWSGx3WlNBOUlIUjVjR1Z2WmlCV1VrMUZlSEJ5WlhOemFXOXVUM1psY25KcFpHVlVlWEJsVzJ0bGVXOW1JSFI1Y0dWdlppQldVazFGZUhCeVpYTnphVzl1VDNabGNuSnBaR1ZVZVhCbFhUdGNiaUlzSW1sdGNHOXlkQ0IwZVhCbElIc2dWbEpOUm1seWMzUlFaWEp6YjI1TlpYTm9RVzV1YjNSaGRHbHZiaUI5SUdaeWIyMGdKeTR2VmxKTlJtbHljM1JRWlhKemIyNU5aWE5vUVc1dWIzUmhkR2x2YmljN1hHNXBiWEJ2Y25RZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1cGJYQnZjblFnZEhsd1pTQjdJRlpTVFVoMWJXRnViMmxrSUgwZ1puSnZiU0FuTGk0dmFIVnRZVzV2YVdRbk8xeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZsSk5SbWx5YzNSUVpYSnpiMjRnZTF4dUlDQXZLaXBjYmlBZ0lDb2dRU0JrWldaaGRXeDBJR05oYldWeVlTQnNZWGxsY2lCbWIzSWdZRVpwY25OMFVHVnljMjl1VDI1c2VXQWdiR0Y1WlhJdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ6WldVZ1cxdG5aWFJHYVhKemRGQmxjbk52Yms5dWJIbE1ZWGxsY2wxZFhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUhKbFlXUnZibXg1SUVSRlJrRlZURlJmUmtsU1UxUlFSVkpUVDA1ZlQwNU1XVjlNUVZsRlVpQTlJRGs3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUVnWkdWbVlYVnNkQ0JqWVcxbGNtRWdiR0Y1WlhJZ1ptOXlJR0JVYUdseVpGQmxjbk52Yms5dWJIbGdJR3hoZVdWeUxseHVJQ0FnS2x4dUlDQWdLaUJBYzJWbElGdGJaMlYwVkdocGNtUlFaWEp6YjI1UGJteDVUR0Y1WlhKZFhWeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCeVpXRmtiMjVzZVNCRVJVWkJWVXhVWDFSSVNWSkVVRVZTVTA5T1gwOU9URmxmVEVGWlJWSWdQU0F4TUR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nU1hSeklHRnpjMjlqYVdGMFpXUWdlMEJzYVc1cklGWlNUVWgxYldGdWIybGtmUzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0JvZFcxaGJtOXBaRG9nVmxKTlNIVnRZVzV2YVdRN1hHNGdJSEIxWW14cFl5QnRaWE5vUVc1dWIzUmhkR2x2Ym5NNklGWlNUVVpwY25OMFVHVnljMjl1VFdWemFFRnVibTkwWVhScGIyNWJYVHRjYmx4dUlDQndjbWwyWVhSbElGOW1hWEp6ZEZCbGNuTnZiazl1YkhsTVlYbGxjaUE5SUZaU1RVWnBjbk4wVUdWeWMyOXVMa1JGUmtGVlRGUmZSa2xTVTFSUVJWSlRUMDVmVDA1TVdWOU1RVmxGVWp0Y2JpQWdjSEpwZG1GMFpTQmZkR2hwY21SUVpYSnpiMjVQYm14NVRHRjVaWElnUFNCV1VrMUdhWEp6ZEZCbGNuTnZiaTVFUlVaQlZVeFVYMVJJU1ZKRVVFVlNVMDlPWDA5T1RGbGZURUZaUlZJN1hHNWNiaUFnY0hKcGRtRjBaU0JmYVc1cGRHbGhiR2w2WldSTVlYbGxjbk1nUFNCbVlXeHpaVHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbElHRWdibVYzSUZaU1RVWnBjbk4wVUdWeWMyOXVJRzlpYW1WamRDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJR2gxYldGdWIybGtJRUVnZTBCc2FXNXJJRlpTVFVoMWJXRnViMmxrZlZ4dUlDQWdLaUJBY0dGeVlXMGdiV1Z6YUVGdWJtOTBZWFJwYjI1eklFRWdjbVZ1WkdWeVpYSWdjMlYwZEdsdVozTXVJRk5sWlNCMGFHVWdaR1Z6WTNKcGNIUnBiMjRnYjJZZ1cxdFNaVzVrWlhKbGNrWnBjbk4wVUdWeWMyOXVSbXhoWjNOZFhTQm1iM0lnYlc5eVpTQnBibVp2WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2FIVnRZVzV2YVdRNklGWlNUVWgxYldGdWIybGtMQ0J0WlhOb1FXNXViM1JoZEdsdmJuTTZJRlpTVFVacGNuTjBVR1Z5YzI5dVRXVnphRUZ1Ym05MFlYUnBiMjViWFNrZ2UxeHVJQ0FnSUhSb2FYTXVhSFZ0WVc1dmFXUWdQU0JvZFcxaGJtOXBaRHRjYmlBZ0lDQjBhR2x6TG0xbGMyaEJibTV2ZEdGMGFXOXVjeUE5SUcxbGMyaEJibTV2ZEdGMGFXOXVjenRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGIzQjVJSFJvWlNCbmFYWmxiaUI3UUd4cGJtc2dWbEpOUm1seWMzUlFaWEp6YjI1OUlHbHVkRzhnZEdocGN5QnZibVV1WEc0Z0lDQXFJSHRBYkdsdWF5Qm9kVzFoYm05cFpIMGdiWFZ6ZENCaVpTQnpZVzFsSUdGeklIUm9aU0J6YjNWeVkyVWdiMjVsTGx4dUlDQWdLaUJBY0dGeVlXMGdjMjkxY21ObElGUm9aU0I3UUd4cGJtc2dWbEpOUm1seWMzUlFaWEp6YjI1OUlIbHZkU0IzWVc1MElIUnZJR052Y0hsY2JpQWdJQ29nUUhKbGRIVnlibk1nZEdocGMxeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHTnZjSGtvYzI5MWNtTmxPaUJXVWsxR2FYSnpkRkJsY25OdmJpazZJSFJvYVhNZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG1oMWJXRnViMmxrSUNFOVBTQnpiM1Z5WTJVdWFIVnRZVzV2YVdRcElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblZsSk5SbWx5YzNSUVpYSnpiMjQ2SUdoMWJXRnViMmxrSUcxMWMzUWdZbVVnYzJGdFpTQnBiaUJ2Y21SbGNpQjBieUJqYjNCNUp5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RHaHBjeTV0WlhOb1FXNXViM1JoZEdsdmJuTWdQU0J6YjNWeVkyVXViV1Z6YUVGdWJtOTBZWFJwYjI1ekxtMWhjQ2dvWVc1dWIzUmhkR2x2YmlrZ1BUNGdLSHRjYmlBZ0lDQWdJRzFsYzJobGN6b2dZVzV1YjNSaGRHbHZiaTV0WlhOb1pYTXVZMjl1WTJGMEtDa3NYRzRnSUNBZ0lDQjBlWEJsT2lCaGJtNXZkR0YwYVc5dUxuUjVjR1VzWEc0Z0lDQWdmU2twTzF4dVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QmhJR05zYjI1bElHOW1JSFJvYVhNZ2UwQnNhVzVySUZaU1RVWnBjbk4wVUdWeWMyOXVmUzVjYmlBZ0lDb2dRSEpsZEhWeWJuTWdRMjl3YVdWa0lIdEFiR2x1YXlCV1VrMUdhWEp6ZEZCbGNuTnZibjFjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJqYkc5dVpTZ3BPaUJXVWsxR2FYSnpkRkJsY25OdmJpQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QldVazFHYVhKemRGQmxjbk52YmloMGFHbHpMbWgxYldGdWIybGtMQ0IwYUdsekxtMWxjMmhCYm01dmRHRjBhVzl1Y3lrdVkyOXdlU2gwYUdsektUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJCSUdOaGJXVnlZU0JzWVhsbGNpQnlaWEJ5WlhObGJuUnpJR0JHYVhKemRGQmxjbk52Yms5dWJIbGdJR3hoZVdWeUxseHVJQ0FnS2lCT2IzUmxJSFJvWVhRZ0tpcDViM1VnYlhWemRDQmpZV3hzSUh0QWJHbHVheUJ6WlhSMWNIMGdabWx5YzNRZ1ltVm1iM0psSUhsdmRTQjFjMlVnZEdobElHeGhlV1Z5SUdabFlYUjFjbVVxS2lCdmNpQnBkQ0JrYjJWeklHNXZkQ0IzYjNKcklIQnliM0JsY214NUxseHVJQ0FnS2x4dUlDQWdLaUJVYUdVZ2RtRnNkV1VnYVhNZ2UwQnNhVzVySUVSRlJrRlZURlJmUmtsU1UxUlFSVkpUVDA1ZlQwNU1XVjlNUVZsRlVuMGdZbmtnWkdWbVlYVnNkQ0JpZFhRZ2VXOTFJR05oYmlCamFHRnVaMlVnZEdobElHeGhlV1Z5SUdKNUlITndaV05wWm5scGJtY2dkbWxoSUh0QWJHbHVheUJ6WlhSMWNIMGdhV1lnZVc5MUlIQnlaV1psY2k1Y2JpQWdJQ3BjYmlBZ0lDb2dRSE5sWlNCb2RIUndjem92TDNaeWJTNWtaWFl2Wlc0dmRXNXBkbkp0TDJGd2FTOTFibWwyY20xZmRYTmxYMlpwY25OMGNHVnljMjl1TDF4dUlDQWdLaUJBYzJWbElHaDBkSEJ6T2k4dmRHaHlaV1ZxY3k1dmNtY3ZaRzlqY3k4allYQnBMMlZ1TDJOdmNtVXZUR0Y1WlhKelhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBJR1pwY25OMFVHVnljMjl1VDI1c2VVeGhlV1Z5S0NrNklHNTFiV0psY2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgyWnBjbk4wVUdWeWMyOXVUMjVzZVV4aGVXVnlPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVFZ1kyRnRaWEpoSUd4aGVXVnlJSEpsY0hKbGMyVnVkSE1nWUZSb2FYSmtVR1Z5YzI5dVQyNXNlV0FnYkdGNVpYSXVYRzRnSUNBcUlFNXZkR1VnZEdoaGRDQXFLbmx2ZFNCdGRYTjBJR05oYkd3Z2UwQnNhVzVySUhObGRIVndmU0JtYVhKemRDQmlaV1p2Y21VZ2VXOTFJSFZ6WlNCMGFHVWdiR0Y1WlhJZ1ptVmhkSFZ5WlNvcUlHOXlJR2wwSUdSdlpYTWdibTkwSUhkdmNtc2djSEp2Y0dWeWJIa3VYRzRnSUNBcVhHNGdJQ0FxSUZSb1pTQjJZV3gxWlNCcGN5QjdRR3hwYm1zZ1JFVkdRVlZNVkY5VVNFbFNSRkJGVWxOUFRsOVBUa3haWDB4QldVVlNmU0JpZVNCa1pXWmhkV3gwSUdKMWRDQjViM1VnWTJGdUlHTm9ZVzVuWlNCMGFHVWdiR0Y1WlhJZ1lua2djM0JsWTJsbWVXbHVaeUIyYVdFZ2UwQnNhVzVySUhObGRIVndmU0JwWmlCNWIzVWdjSEpsWm1WeUxseHVJQ0FnS2x4dUlDQWdLaUJBYzJWbElHaDBkSEJ6T2k4dmRuSnRMbVJsZGk5bGJpOTFibWwyY20wdllYQnBMM1Z1YVhaeWJWOTFjMlZmWm1seWMzUndaWEp6YjI0dlhHNGdJQ0FxSUVCelpXVWdhSFIwY0hNNkx5OTBhSEpsWldwekxtOXlaeTlrYjJOekx5TmhjR2t2Wlc0dlkyOXlaUzlNWVhsbGNuTmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFFnZEdocGNtUlFaWEp6YjI1UGJteDVUR0Y1WlhJb0tUb2diblZ0WW1WeUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZkR2hwY21SUVpYSnpiMjVQYm14NVRHRjVaWEk3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1NXNGdkR2hwY3lCdFpYUm9iMlFzSUdsMElHRnpjMmxuYm5NZ2JHRjVaWEp6SUdadmNpQmxkbVZ5ZVNCdFpYTm9aWE1nWW1GelpXUWdiMjRnYldWemFDQmhibTV2ZEdGMGFXOXVjeTVjYmlBZ0lDb2dXVzkxSUcxMWMzUWdZMkZzYkNCMGFHbHpJRzFsZEdodlpDQm1hWEp6ZENCaVpXWnZjbVVnZVc5MUlIVnpaU0IwYUdVZ2JHRjVaWElnWm1WaGRIVnlaUzVjYmlBZ0lDcGNiaUFnSUNvZ1ZHaHBjeUJwY3lCaGJpQmxjWFZwZG1Gc1pXNTBJRzltSUZ0V1VrMUdhWEp6ZEZCbGNuTnZiaTVUWlhSMWNGMG9hSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMM1p5YlMxakwxVnVhVlpTVFM5aWJHOWlMemN6WVRWaVpEaG1ZMlJrWVdFeVlUZGhPRGN6TlRBNU9XRTVOMlUyTTJNNVpHSXpaVFZsWVRBdlFYTnpaWFJ6TDFaU1RTOVNkVzUwYVcxbEwwWnBjbk4wVUdWeWMyOXVMMVpTVFVacGNuTjBVR1Z5YzI5dUxtTnpJMHd5T1RVdFRESTVPU2tnYjJZZ2RHaGxJRlZ1YVZaU1RTNWNiaUFnSUNwY2JpQWdJQ29nVkdobElHQmpZVzFsY21GTVlYbGxjbUFnY0dGeVlXMWxkR1Z5SUhOd1pXTnBabWxsY3lCM2FHbGphQ0JzWVhsbGNpQjNhV3hzSUdKbElHRnpjMmxuYm1Wa0lHWnZjaUJnUm1seWMzUlFaWEp6YjI1UGJteDVZQ0F2SUdCVWFHbHlaRkJsY25OdmJrOXViSGxnTGx4dUlDQWdLaUJKYmlCVmJtbFdVazBzSUhkbElITndaV05wWm1sbFpDQjBhRzl6WlNCaWVTQnVZVzFwYm1jZ1pXRmphQ0JrWlhOcGNtVmtJR3hoZVdWeUlHRnpJR0JHU1ZKVFZGQkZVbE5QVGw5UFRreFpYMHhCV1VWU1lDQXZJR0JVU0VsU1JGQkZVbE5QVGw5UFRreFpYMHhCV1VWU1lGeHVJQ0FnS2lCaWRYUWdkMlVnWVhKbElHZHZhVzVuSUhSdklITndaV05wWm5rZ2RHaGxjMlVnYkdGNVpYSnpJR0YwSUdobGNtVWdjMmx1WTJVZ2QyVWdZWEpsSUhWdVlXSnNaU0IwYnlCdVlXMWxJR3hoZVdWeWN5QnBiaUJVYUhKbFpTNXFjeTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUdOaGJXVnlZVXhoZVdWeUlGTndaV05wWm5rZ2QyaHBZMmdnYkdGNVpYSWdkMmxzYkNCaVpTQm1iM0lnWUVacGNuTjBVR1Z5YzI5dVQyNXNlV0FnTHlCZ1ZHaHBjbVJRWlhKemIyNVBibXg1WUM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCelpYUjFjQ2g3WEc0Z0lDQWdabWx5YzNSUVpYSnpiMjVQYm14NVRHRjVaWElnUFNCV1VrMUdhWEp6ZEZCbGNuTnZiaTVFUlVaQlZVeFVYMFpKVWxOVVVFVlNVMDlPWDA5T1RGbGZURUZaUlZJc1hHNGdJQ0FnZEdocGNtUlFaWEp6YjI1UGJteDVUR0Y1WlhJZ1BTQldVazFHYVhKemRGQmxjbk52Ymk1RVJVWkJWVXhVWDFSSVNWSkVVRVZTVTA5T1gwOU9URmxmVEVGWlJWSXNYRzRnSUgwZ1BTQjdmU2s2SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxsOXBibWwwYVdGc2FYcGxaRXhoZVdWeWN5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgxY2JpQWdJQ0IwYUdsekxsOW1hWEp6ZEZCbGNuTnZiazl1YkhsTVlYbGxjaUE5SUdacGNuTjBVR1Z5YzI5dVQyNXNlVXhoZVdWeU8xeHVJQ0FnSUhSb2FYTXVYM1JvYVhKa1VHVnljMjl1VDI1c2VVeGhlV1Z5SUQwZ2RHaHBjbVJRWlhKemIyNVBibXg1VEdGNVpYSTdYRzVjYmlBZ0lDQjBhR2x6TG0xbGMyaEJibTV2ZEdGMGFXOXVjeTVtYjNKRllXTm9LQ2hwZEdWdEtTQTlQaUI3WEc0Z0lDQWdJQ0JwZEdWdExtMWxjMmhsY3k1bWIzSkZZV05vS0NodFpYTm9LU0E5UGlCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwZEdWdExuUjVjR1VnUFQwOUlDZG1hWEp6ZEZCbGNuTnZiazl1YkhrbktTQjdYRzRnSUNBZ0lDQWdJQ0FnYldWemFDNXNZWGxsY25NdWMyVjBLSFJvYVhNdVgyWnBjbk4wVUdWeWMyOXVUMjVzZVV4aGVXVnlLVHRjYmlBZ0lDQWdJQ0FnSUNCdFpYTm9MblJ5WVhabGNuTmxLQ2hqYUdsc1pDa2dQVDRnWTJocGJHUXViR0Y1WlhKekxuTmxkQ2gwYUdsekxsOW1hWEp6ZEZCbGNuTnZiazl1YkhsTVlYbGxjaWtwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tHbDBaVzB1ZEhsd1pTQTlQVDBnSjNSb2FYSmtVR1Z5YzI5dVQyNXNlU2NwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnRaWE5vTG14aGVXVnljeTV6WlhRb2RHaHBjeTVmZEdocGNtUlFaWEp6YjI1UGJteDVUR0Y1WlhJcE8xeHVJQ0FnSUNBZ0lDQWdJRzFsYzJndWRISmhkbVZ5YzJVb0tHTm9hV3hrS1NBOVBpQmphR2xzWkM1c1lYbGxjbk11YzJWMEtIUm9hWE11WDNSb2FYSmtVR1Z5YzI5dVQyNXNlVXhoZVdWeUtTazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvYVhSbGJTNTBlWEJsSUQwOVBTQW5ZWFYwYnljcElIdGNiaUFnSUNBZ0lDQWdJQ0IwYUdsekxsOWpjbVZoZEdWSVpXRmtiR1Z6YzAxdlpHVnNLRzFsYzJncE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJSFJvYVhNdVgybHVhWFJwWVd4cGVtVmtUR0Y1WlhKeklEMGdkSEoxWlR0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1gyVjRZMngxWkdWVWNtbGhibWRzWlhNb2RISnBZVzVuYkdWek9pQnVkVzFpWlhKYlhTd2dZbmR6T2lCdWRXMWlaWEpiWFZ0ZExDQnphMmx1U1c1a1pYZzZJRzUxYldKbGNsdGRXMTBzSUdWNFkyeDFaR1U2SUc1MWJXSmxjbHRkS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0JzWlhRZ1kyOTFiblFnUFNBd08xeHVJQ0FnSUdsbUlDaGlkM01nSVQwZ2JuVnNiQ0FtSmlCaWQzTXViR1Z1WjNSb0lENGdNQ2tnZTF4dUlDQWdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMGNtbGhibWRzWlhNdWJHVnVaM1JvT3lCcElDczlJRE1wSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWVNBOUlIUnlhV0Z1WjJ4bGMxdHBYVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdZaUE5SUhSeWFXRnVaMnhsYzF0cElDc2dNVjA3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR01nUFNCMGNtbGhibWRzWlhOYmFTQXJJREpkTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JpZHpBZ1BTQmlkM05iWVYwN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhOcmFXNHdJRDBnYzJ0cGJrbHVaR1Y0VzJGZE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNoaWR6QmJNRjBnUGlBd0lDWW1JR1Y0WTJ4MVpHVXVhVzVqYkhWa1pYTW9jMnRwYmpCYk1GMHBLU0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHSjNNRnN4WFNBK0lEQWdKaVlnWlhoamJIVmtaUzVwYm1Oc2RXUmxjeWh6YTJsdU1Gc3hYU2twSUdOdmJuUnBiblZsTzF4dUlDQWdJQ0FnSUNCcFppQW9ZbmN3V3pKZElENGdNQ0FtSmlCbGVHTnNkV1JsTG1sdVkyeDFaR1Z6S0hOcmFXNHdXekpkS1NrZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hpZHpCYk0xMGdQaUF3SUNZbUlHVjRZMngxWkdVdWFXNWpiSFZrWlhNb2MydHBiakJiTTEwcEtTQmpiMjUwYVc1MVpUdGNibHh1SUNBZ0lDQWdJQ0JqYjI1emRDQmlkekVnUFNCaWQzTmJZbDA3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSE5yYVc0eElEMGdjMnRwYmtsdVpHVjRXMkpkTzF4dUlDQWdJQ0FnSUNCcFppQW9ZbmN4V3pCZElENGdNQ0FtSmlCbGVHTnNkV1JsTG1sdVkyeDFaR1Z6S0hOcmFXNHhXekJkS1NrZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hpZHpGYk1WMGdQaUF3SUNZbUlHVjRZMngxWkdVdWFXNWpiSFZrWlhNb2MydHBiakZiTVYwcEtTQmpiMjUwYVc1MVpUdGNiaUFnSUNBZ0lDQWdhV1lnS0dKM01Wc3lYU0ErSURBZ0ppWWdaWGhqYkhWa1pTNXBibU5zZFdSbGN5aHphMmx1TVZzeVhTa3BJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdJQ0JwWmlBb1luY3hXek5kSUQ0Z01DQW1KaUJsZUdOc2RXUmxMbWx1WTJ4MVpHVnpLSE5yYVc0eFd6TmRLU2tnWTI5dWRHbHVkV1U3WEc1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWW5jeUlEMGdZbmR6VzJOZE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCemEybHVNaUE5SUhOcmFXNUpibVJsZUZ0alhUdGNiaUFnSUNBZ0lDQWdhV1lnS0dKM01sc3dYU0ErSURBZ0ppWWdaWGhqYkhWa1pTNXBibU5zZFdSbGN5aHphMmx1TWxzd1hTa3BJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdJQ0JwWmlBb1luY3lXekZkSUQ0Z01DQW1KaUJsZUdOc2RXUmxMbWx1WTJ4MVpHVnpLSE5yYVc0eVd6RmRLU2tnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0FnSUdsbUlDaGlkekpiTWwwZ1BpQXdJQ1ltSUdWNFkyeDFaR1V1YVc1amJIVmtaWE1vYzJ0cGJqSmJNbDBwS1NCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0ozTWxzelhTQStJREFnSmlZZ1pYaGpiSFZrWlM1cGJtTnNkV1JsY3loemEybHVNbHN6WFNrcElHTnZiblJwYm5WbE8xeHVYRzRnSUNBZ0lDQWdJSFJ5YVdGdVoyeGxjMXRqYjNWdWRDc3JYU0E5SUdFN1hHNGdJQ0FnSUNBZ0lIUnlhV0Z1WjJ4bGMxdGpiM1Z1ZENzclhTQTlJR0k3WEc0Z0lDQWdJQ0FnSUhSeWFXRnVaMnhsYzF0amIzVnVkQ3NyWFNBOUlHTTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJqYjNWdWREdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdYMk55WldGMFpVVnlZWE5sWkUxbGMyZ29jM0pqT2lCVVNGSkZSUzVUYTJsdWJtVmtUV1Z6YUN3Z1pYSmhjMmx1WjBKdmJtVnpTVzVrWlhnNklHNTFiV0psY2x0ZEtUb2dWRWhTUlVVdVUydHBibTVsWkUxbGMyZ2dlMXh1SUNBZ0lHTnZibk4wSUdSemRDQTlJRzVsZHlCVVNGSkZSUzVUYTJsdWJtVmtUV1Z6YUNoemNtTXVaMlZ2YldWMGNua3VZMnh2Ym1Vb0tTd2djM0pqTG0xaGRHVnlhV0ZzS1R0Y2JpQWdJQ0JrYzNRdWJtRnRaU0E5SUdBa2UzTnlZeTV1WVcxbGZTaGxjbUZ6WlNsZ08xeHVJQ0FnSUdSemRDNW1jblZ6ZEhWdFEzVnNiR1ZrSUQwZ2MzSmpMbVp5ZFhOMGRXMURkV3hzWldRN1hHNGdJQ0FnWkhOMExteGhlV1Z5Y3k1elpYUW9kR2hwY3k1ZlptbHljM1JRWlhKemIyNVBibXg1VEdGNVpYSXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ1oyVnZiV1YwY25rZ1BTQmtjM1F1WjJWdmJXVjBjbms3WEc1Y2JpQWdJQ0JqYjI1emRDQnphMmx1U1c1a1pYaEJkSFJ5SUQwZ1oyVnZiV1YwY25rdVoyVjBRWFIwY21saWRYUmxLQ2R6YTJsdVNXNWtaWGduS1R0Y2JpQWdJQ0JqYjI1emRDQnphMmx1U1c1a1pYaEJkSFJ5UVhKeVlYa2dQU0J6YTJsdVNXNWtaWGhCZEhSeUlHbHVjM1JoYm1ObGIyWWdWRWhTUlVVdVIweENkV1ptWlhKQmRIUnlhV0oxZEdVZ1B5QmJYU0E2SUhOcmFXNUpibVJsZUVGMGRISXVZWEp5WVhrN1hHNGdJQ0FnWTI5dWMzUWdjMnRwYmtsdVpHVjRJRDBnVzEwN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCemEybHVTVzVrWlhoQmRIUnlRWEp5WVhrdWJHVnVaM1JvT3lCcElDczlJRFFwSUh0Y2JpQWdJQ0FnSUhOcmFXNUpibVJsZUM1d2RYTm9LRnRjYmlBZ0lDQWdJQ0FnYzJ0cGJrbHVaR1Y0UVhSMGNrRnljbUY1VzJsZExGeHVJQ0FnSUNBZ0lDQnphMmx1U1c1a1pYaEJkSFJ5UVhKeVlYbGJhU0FySURGZExGeHVJQ0FnSUNBZ0lDQnphMmx1U1c1a1pYaEJkSFJ5UVhKeVlYbGJhU0FySURKZExGeHVJQ0FnSUNBZ0lDQnphMmx1U1c1a1pYaEJkSFJ5UVhKeVlYbGJhU0FySUROZExGeHVJQ0FnSUNBZ1hTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnYzJ0cGJsZGxhV2RvZEVGMGRISWdQU0JuWlc5dFpYUnllUzVuWlhSQmRIUnlhV0oxZEdVb0ozTnJhVzVYWldsbmFIUW5LVHRjYmlBZ0lDQmpiMjV6ZENCemEybHVWMlZwWjJoMFFYUjBja0Z5Y21GNUlEMGdjMnRwYmxkbGFXZG9kRUYwZEhJZ2FXNXpkR0Z1WTJWdlppQlVTRkpGUlM1SFRFSjFabVpsY2tGMGRISnBZblYwWlNBL0lGdGRJRG9nYzJ0cGJsZGxhV2RvZEVGMGRISXVZWEp5WVhrN1hHNGdJQ0FnWTI5dWMzUWdjMnRwYmxkbGFXZG9kQ0E5SUZ0ZE8xeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2MydHBibGRsYVdkb2RFRjBkSEpCY25KaGVTNXNaVzVuZEdnN0lHa2dLejBnTkNrZ2UxeHVJQ0FnSUNBZ2MydHBibGRsYVdkb2RDNXdkWE5vS0Z0Y2JpQWdJQ0FnSUNBZ2MydHBibGRsYVdkb2RFRjBkSEpCY25KaGVWdHBYU3hjYmlBZ0lDQWdJQ0FnYzJ0cGJsZGxhV2RvZEVGMGRISkJjbkpoZVZ0cElDc2dNVjBzWEc0Z0lDQWdJQ0FnSUhOcmFXNVhaV2xuYUhSQmRIUnlRWEp5WVhsYmFTQXJJREpkTEZ4dUlDQWdJQ0FnSUNCemEybHVWMlZwWjJoMFFYUjBja0Z5Y21GNVcya2dLeUF6WFN4Y2JpQWdJQ0FnSUYwcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJR2x1WkdWNElEMGdaMlZ2YldWMGNua3VaMlYwU1c1a1pYZ29LVHRjYmlBZ0lDQnBaaUFvSVdsdVpHVjRLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9YQ0pVYUdVZ1oyVnZiV1YwY25rZ1pHOWxjMjRuZENCb1lYWmxJR0Z1SUdsdVpHVjRJR0oxWm1abGNsd2lLVHRjYmlBZ0lDQjlYRzRnSUNBZ1kyOXVjM1FnYjJ4a1ZISnBZVzVuYkdWeklEMGdRWEp5WVhrdVpuSnZiU2hwYm1SbGVDNWhjbkpoZVNrN1hHNWNiaUFnSUNCamIyNXpkQ0JqYjNWdWRDQTlJSFJvYVhNdVgyVjRZMngxWkdWVWNtbGhibWRzWlhNb2IyeGtWSEpwWVc1bmJHVnpMQ0J6YTJsdVYyVnBaMmgwTENCemEybHVTVzVrWlhnc0lHVnlZWE5wYm1kQ2IyNWxjMGx1WkdWNEtUdGNiaUFnSUNCamIyNXpkQ0J1WlhkVWNtbGhibWRzWlRvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR052ZFc1ME95QnBLeXNwSUh0Y2JpQWdJQ0FnSUc1bGQxUnlhV0Z1WjJ4bFcybGRJRDBnYjJ4a1ZISnBZVzVuYkdWelcybGRPMXh1SUNBZ0lIMWNiaUFnSUNCblpXOXRaWFJ5ZVM1elpYUkpibVJsZUNodVpYZFVjbWxoYm1kc1pTazdYRzVjYmlBZ0lDQXZMeUJ0ZEc5dmJpQnRZWFJsY21saGJDQnBibU5zZFdSbGN5QnZia0psWm05eVpWSmxibVJsY2k0Z2RHaHBjeUJwY3lCMWJuTjFjSEJ2Y25SbFpDQmhkQ0JUYTJsdWJtVmtUV1Z6YUNOamJHOXVaVnh1SUNBZ0lHbG1JQ2h6Y21NdWIyNUNaV1p2Y21WU1pXNWtaWElwSUh0Y2JpQWdJQ0FnSUdSemRDNXZia0psWm05eVpWSmxibVJsY2lBOUlITnlZeTV2YmtKbFptOXlaVkpsYm1SbGNqdGNiaUFnSUNCOVhHNGdJQ0FnWkhOMExtSnBibVFvYm1WM0lGUklVa1ZGTGxOclpXeGxkRzl1S0hOeVl5NXphMlZzWlhSdmJpNWliMjVsY3l3Z2MzSmpMbk5yWld4bGRHOXVMbUp2Ym1WSmJuWmxjbk5sY3lrc0lHNWxkeUJVU0ZKRlJTNU5ZWFJ5YVhnMEtDa3BPMXh1SUNBZ0lISmxkSFZ5YmlCa2MzUTdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJRjlqY21WaGRHVklaV0ZrYkdWemMwMXZaR1ZzUm05eVUydHBibTVsWkUxbGMyZ29jR0Z5Wlc1ME9pQlVTRkpGUlM1UFltcGxZM1F6UkN3Z2JXVnphRG9nVkVoU1JVVXVVMnRwYm01bFpFMWxjMmdwT2lCMmIybGtJSHRjYmlBZ0lDQmpiMjV6ZENCbGNtRnpaVUp2Ym1WSmJtUmxlR1Z6T2lCdWRXMWlaWEpiWFNBOUlGdGRPMXh1SUNBZ0lHMWxjMmd1YzJ0bGJHVjBiMjR1WW05dVpYTXVabTl5UldGamFDZ29ZbTl1WlN3Z2FXNWtaWGdwSUQwK0lIdGNiaUFnSUNBZ0lHbG1JQ2gwYUdsekxsOXBjMFZ5WVhObFZHRnlaMlYwS0dKdmJtVXBLU0JsY21GelpVSnZibVZKYm1SbGVHVnpMbkIxYzJnb2FXNWtaWGdwTzF4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnTHk4Z1ZXNXNhV3RsSUZWdWFWWlNUU0IzWlNCa2IyNG5kQ0JqYjNCNUlHMWxjMmdnYVdZZ2JtOGdhVzUyYVhOcFlteGxJR0p2Ym1VZ2QyRnpJR1p2ZFc1a1hHNGdJQ0FnYVdZZ0tDRmxjbUZ6WlVKdmJtVkpibVJsZUdWekxteGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ2JXVnphQzVzWVhsbGNuTXVaVzVoWW14bEtIUm9hWE11WDNSb2FYSmtVR1Z5YzI5dVQyNXNlVXhoZVdWeUtUdGNiaUFnSUNBZ0lHMWxjMmd1YkdGNVpYSnpMbVZ1WVdKc1pTaDBhR2x6TGw5bWFYSnpkRkJsY25OdmJrOXViSGxNWVhsbGNpazdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dUlDQWdJRzFsYzJndWJHRjVaWEp6TG5ObGRDaDBhR2x6TGw5MGFHbHlaRkJsY25OdmJrOXViSGxNWVhsbGNpazdYRzRnSUNBZ1kyOXVjM1FnYm1WM1RXVnphQ0E5SUhSb2FYTXVYMk55WldGMFpVVnlZWE5sWkUxbGMyZ29iV1Z6YUN3Z1pYSmhjMlZDYjI1bFNXNWtaWGhsY3lrN1hHNGdJQ0FnY0dGeVpXNTBMbUZrWkNodVpYZE5aWE5vS1R0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1gyTnlaV0YwWlVobFlXUnNaWE56VFc5a1pXd29ibTlrWlRvZ1ZFaFNSVVV1VDJKcVpXTjBNMFFwT2lCMmIybGtJSHRjYmlBZ0lDQnBaaUFvYm05a1pTNTBlWEJsSUQwOVBTQW5SM0p2ZFhBbktTQjdYRzRnSUNBZ0lDQnViMlJsTG14aGVXVnljeTV6WlhRb2RHaHBjeTVmZEdocGNtUlFaWEp6YjI1UGJteDVUR0Y1WlhJcE8xeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVgybHpSWEpoYzJWVVlYSm5aWFFvYm05a1pTa3BJSHRjYmlBZ0lDQWdJQ0FnYm05a1pTNTBjbUYyWlhKelpTZ29ZMmhwYkdRcElEMCtJR05vYVd4a0xteGhlV1Z5Y3k1elpYUW9kR2hwY3k1ZmRHaHBjbVJRWlhKemIyNVBibXg1VEdGNVpYSXBLVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElIQmhjbVZ1ZENBOUlHNWxkeUJVU0ZKRlJTNUhjbTkxY0NncE8xeHVJQ0FnSUNBZ0lDQndZWEpsYm5RdWJtRnRaU0E5SUdCZmFHVmhaR3hsYzNOZkpIdHViMlJsTG01aGJXVjlZRHRjYmlBZ0lDQWdJQ0FnY0dGeVpXNTBMbXhoZVdWeWN5NXpaWFFvZEdocGN5NWZabWx5YzNSUVpYSnpiMjVQYm14NVRHRjVaWElwTzF4dUlDQWdJQ0FnSUNCdWIyUmxMbkJoY21WdWRDRXVZV1JrS0hCaGNtVnVkQ2s3WEc0Z0lDQWdJQ0FnSUc1dlpHVXVZMmhwYkdSeVpXNWNiaUFnSUNBZ0lDQWdJQ0F1Wm1sc2RHVnlLQ2hqYUdsc1pDa2dQVDRnWTJocGJHUXVkSGx3WlNBOVBUMGdKMU5yYVc1dVpXUk5aWE5vSnlsY2JpQWdJQ0FnSUNBZ0lDQXVabTl5UldGamFDZ29ZMmhwYkdRcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhOcmFXNXVaV1JOWlhOb0lEMGdZMmhwYkdRZ1lYTWdWRWhTUlVVdVUydHBibTVsWkUxbGMyZzdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbDlqY21WaGRHVklaV0ZrYkdWemMwMXZaR1ZzUm05eVUydHBibTVsWkUxbGMyZ29jR0Z5Wlc1MExDQnphMmx1Ym1Wa1RXVnphQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHViMlJsTG5SNWNHVWdQVDA5SUNkVGEybHVibVZrVFdWemFDY3BJSHRjYmlBZ0lDQWdJR052Ym5OMElITnJhVzV1WldSTlpYTm9JRDBnYm05a1pTQmhjeUJVU0ZKRlJTNVRhMmx1Ym1Wa1RXVnphRHRjYmlBZ0lDQWdJSFJvYVhNdVgyTnlaV0YwWlVobFlXUnNaWE56VFc5a1pXeEdiM0pUYTJsdWJtVmtUV1Z6YUNodWIyUmxMbkJoY21WdWRDRXNJSE5yYVc1dVpXUk5aWE5vS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVYMmx6UlhKaGMyVlVZWEpuWlhRb2JtOWtaU2twSUh0Y2JpQWdJQ0FnSUNBZ2JtOWtaUzVzWVhsbGNuTXVjMlYwS0hSb2FYTXVYM1JvYVhKa1VHVnljMjl1VDI1c2VVeGhlV1Z5S1R0Y2JpQWdJQ0FnSUNBZ2JtOWtaUzUwY21GMlpYSnpaU2dvWTJocGJHUXBJRDArSUdOb2FXeGtMbXhoZVdWeWN5NXpaWFFvZEdocGN5NWZkR2hwY21SUVpYSnpiMjVQYm14NVRHRjVaWElwS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUY5cGMwVnlZWE5sVkdGeVoyVjBLR0p2Ym1VNklGUklVa1ZGTGs5aWFtVmpkRE5FS1RvZ1ltOXZiR1ZoYmlCN1hHNGdJQ0FnYVdZZ0tHSnZibVVnUFQwOUlIUm9hWE11YUhWdFlXNXZhV1F1WjJWMFVtRjNRbTl1WlU1dlpHVW9KMmhsWVdRbktTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2doWW05dVpTNXdZWEpsYm5RcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYMmx6UlhKaGMyVlVZWEpuWlhRb1ltOXVaUzV3WVhKbGJuUXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVJaXdpYVcxd2IzSjBJSFI1Y0dVZ0tpQmhjeUJXTUZaU1RTQm1jbTl0SUNkQWNHbDRhWFl2ZEhsd1pYTXRkbkp0TFRBdU1DYzdYRzVwYlhCdmNuUWdkSGx3WlNBcUlHRnpJRll4VmxKTlUyTm9aVzFoSUdaeWIyMGdKMEJ3YVhocGRpOTBlWEJsY3kxMmNtMWpMWFp5YlMweExqQW5PMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QkhURlJHTENCSFRGUkdURzloWkdWeVVHeDFaMmx1TENCSFRGUkdVR0Z5YzJWeUlIMGdabkp2YlNBbmRHaHlaV1V2WlhoaGJYQnNaWE12YW5OdEwyeHZZV1JsY25NdlIweFVSa3h2WVdSbGNpNXFjeWM3WEc1cGJYQnZjblFnZEhsd1pTQjdJRlpTVFVoMWJXRnViMmxrSUgwZ1puSnZiU0FuTGk0dmFIVnRZVzV2YVdRdlZsSk5TSFZ0WVc1dmFXUW5PMXh1YVcxd2IzSjBJSHNnWjJ4MFprVjRkSEpoWTNSUWNtbHRhWFJwZG1WelJuSnZiVTV2WkdWeklIMGdabkp2YlNBbkxpNHZkWFJwYkhNdloyeDBaa1Y0ZEhKaFkzUlFjbWx0YVhScGRtVnpSbkp2YlU1dlpHVW5PMXh1YVcxd2IzSjBJSHNnVmxKTlJtbHljM1JRWlhKemIyNGdmU0JtY205dElDY3VMMVpTVFVacGNuTjBVR1Z5YzI5dUp6dGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1ZsSk5SbWx5YzNSUVpYSnpiMjVOWlhOb1FXNXViM1JoZEdsdmJpQjlJR1p5YjIwZ0p5NHZWbEpOUm1seWMzUlFaWEp6YjI1TlpYTm9RVzV1YjNSaGRHbHZiaWM3WEc1cGJYQnZjblFnZEhsd1pTQjdJRlpTVFVacGNuTjBVR1Z5YzI5dVRXVnphRUZ1Ym05MFlYUnBiMjVVZVhCbElIMGdabkp2YlNBbkxpOVdVazFHYVhKemRGQmxjbk52YmsxbGMyaEJibTV2ZEdGMGFXOXVWSGx3WlNjN1hHNXBiWEJ2Y25RZ2V5QkhURlJHSUdGeklFZE1WRVpUWTJobGJXRWdmU0JtY205dElDZEFaMngwWmkxMGNtRnVjMlp2Y20wdlkyOXlaU2M3WEc1Y2JpOHFLbHh1SUNvZ1VHOXpjMmxpYkdVZ2MzQmxZeUIyWlhKemFXOXVjeUJwZENCeVpXTnZaMjVwZW1WekxseHVJQ292WEc1amIyNXpkQ0JRVDFOVFNVSk1SVjlUVUVWRFgxWkZVbE5KVDA1VElEMGdibVYzSUZObGRDaGJKekV1TUNjc0lDY3hMakF0WW1WMFlTZGRLVHRjYmx4dUx5b3FYRzRnS2lCQklIQnNkV2RwYmlCdlppQkhURlJHVEc5aFpHVnlJSFJvWVhRZ2FXMXdiM0owY3lCaElIdEFiR2x1YXlCV1VrMUdhWEp6ZEZCbGNuTnZibjBnWm5KdmJTQmhJRlpTVFNCbGVIUmxibk5wYjI0Z2IyWWdZU0JIVEZSR0xseHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdWbEpOUm1seWMzUlFaWEp6YjI1TWIyRmtaWEpRYkhWbmFXNGdhVzF3YkdWdFpXNTBjeUJIVEZSR1RHOWhaR1Z5VUd4MVoybHVJSHRjYmlBZ2NIVmliR2xqSUhKbFlXUnZibXg1SUhCaGNuTmxjam9nUjB4VVJsQmhjbk5sY2p0Y2JseHVJQ0J3ZFdKc2FXTWdaMlYwSUc1aGJXVW9LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQXZMeUJYWlNCemFHOTFiR1FnZFhObElIUm9aU0JsZUhSbGJuTnBiMjRnYm1GdFpTQnBibk4wWldGa0lHSjFkQ0IzWlNCb1lYWmxJRzExYkhScGNHeGxJSEJzZFdkcGJuTWdabTl5SUdGdUlHVjRkR1Z1YzJsdmJpNHVMbHh1SUNBZ0lISmxkSFZ5YmlBblZsSk5SbWx5YzNSUVpYSnpiMjVNYjJGa1pYSlFiSFZuYVc0bk8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHTnZibk4wY25WamRHOXlLSEJoY25ObGNqb2dSMHhVUmxCaGNuTmxjaWtnZTF4dUlDQWdJSFJvYVhNdWNHRnljMlZ5SUQwZ2NHRnljMlZ5TzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdGemVXNWpJR0ZtZEdWeVVtOXZkQ2huYkhSbU9pQkhURlJHS1RvZ1VISnZiV2x6WlR4MmIybGtQaUI3WEc0Z0lDQWdZMjl1YzNRZ2RuSnRTSFZ0WVc1dmFXUWdQU0JuYkhSbUxuVnpaWEpFWVhSaExuWnliVWgxYldGdWIybGtJR0Z6SUZaU1RVaDFiV0Z1YjJsa0lId2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdMeThnWlhod2JHbGphWFJzZVNCa2FYTjBhVzVuZFdsemFDQnVkV3hzSUdGdVpDQjFibVJsWm1sdVpXUmNiaUFnSUNBdkx5QnphVzVqWlNCMmNtMUlkVzFoYm05cFpDQnRhV2RvZENCaVpTQnVkV3hzSUdGeklHRWdjbVZ6ZFd4MFhHNGdJQ0FnYVdZZ0tIWnliVWgxYldGdWIybGtJRDA5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaDJjbTFJZFcxaGJtOXBaQ0E5UFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lDZFdVazFHYVhKemRGQmxjbk52Ymt4dllXUmxjbEJzZFdkcGJqb2dkbkp0U0hWdFlXNXZhV1FnYVhNZ2RXNWtaV1pwYm1Wa0xpQldVazFJZFcxaGJtOXBaRXh2WVdSbGNsQnNkV2RwYmlCb1lYWmxJSFJ2SUdKbElIVnpaV1FnWm1seWMzUW5MRnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQm5iSFJtTG5WelpYSkVZWFJoTG5aeWJVWnBjbk4wVUdWeWMyOXVJRDBnWVhkaGFYUWdkR2hwY3k1ZmFXMXdiM0owS0dkc2RHWXNJSFp5YlVoMWJXRnViMmxrS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpiWEJ2Y25RZ1lTQjdRR3hwYm1zZ1ZsSk5SbWx5YzNSUVpYSnpiMjU5SUdaeWIyMGdZU0JXVWswdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQm5iSFJtSUVFZ2NHRnljMlZrSUhKbGMzVnNkQ0J2WmlCSFRGUkdJSFJoYTJWdUlHWnliMjBnUjB4VVJreHZZV1JsY2x4dUlDQWdLaUJBY0dGeVlXMGdhSFZ0WVc1dmFXUWdRU0I3UUd4cGJtc2dWbEpOU0hWdFlXNXZhV1I5SUdsdWMzUmhibU5sSUhSb1lYUWdjbVZ3Y21WelpXNTBjeUIwYUdVZ1ZsSk5YRzRnSUNBcUwxeHVYRzRnSUhCeWFYWmhkR1VnWVhONWJtTWdYMmx0Y0c5eWRDaG5iSFJtT2lCSFRGUkdMQ0JvZFcxaGJtOXBaRG9nVmxKTlNIVnRZVzV2YVdRZ2ZDQnVkV3hzS1RvZ1VISnZiV2x6WlR4V1VrMUdhWEp6ZEZCbGNuTnZiaUI4SUc1MWJHdytJSHRjYmlBZ0lDQnBaaUFvYUhWdFlXNXZhV1FnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdkakZTWlhOMWJIUWdQU0JoZDJGcGRDQjBhR2x6TGw5Mk1VbHRjRzl5ZENobmJIUm1MQ0JvZFcxaGJtOXBaQ2s3WEc0Z0lDQWdhV1lnS0hZeFVtVnpkV3gwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZGpGU1pYTjFiSFE3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2RqQlNaWE4xYkhRZ1BTQmhkMkZwZENCMGFHbHpMbDkyTUVsdGNHOXlkQ2huYkhSbUxDQm9kVzFoYm05cFpDazdYRzRnSUNBZ2FXWWdLSFl3VW1WemRXeDBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkakJTWlhOMWJIUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR0Z6ZVc1aklGOTJNVWx0Y0c5eWRDaG5iSFJtT2lCSFRGUkdMQ0JvZFcxaGJtOXBaRG9nVmxKTlNIVnRZVzV2YVdRcE9pQlFjbTl0YVhObFBGWlNUVVpwY25OMFVHVnljMjl1SUh3Z2JuVnNiRDRnZTF4dUlDQWdJR052Ym5OMElHcHpiMjRnUFNCMGFHbHpMbkJoY25ObGNpNXFjMjl1SUdGeklFZE1WRVpUWTJobGJXRXVTVWRNVkVZN1hHNWNiaUFnSUNBdkx5QmxZWEpzZVNCaFltOXlkQ0JwWmlCcGRDQmtiMlZ6YmlkMElIVnpaU0IyY20xY2JpQWdJQ0JqYjI1emRDQnBjMVpTVFZWelpXUWdQU0JxYzI5dUxtVjRkR1Z1YzJsdmJuTlZjMlZrUHk1cGJtUmxlRTltS0NkV1VrMURYM1p5YlNjcElDRTlQU0F0TVR0Y2JpQWdJQ0JwWmlBb0lXbHpWbEpOVlhObFpDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ1pYaDBaVzV6YVc5dUlEMGdhbk52Ymk1bGVIUmxibk5wYjI1elB5NWJKMVpTVFVOZmRuSnRKMTBnWVhNZ1ZqRldVazFUWTJobGJXRXVWbEpOUTFaU1RTQjhJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQnBaaUFvSVdWNGRHVnVjMmx2YmlrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnYzNCbFkxWmxjbk5wYjI0Z1BTQmxlSFJsYm5OcGIyNHVjM0JsWTFabGNuTnBiMjQ3WEc0Z0lDQWdhV1lnS0NGUVQxTlRTVUpNUlY5VFVFVkRYMVpGVWxOSlQwNVRMbWhoY3loemNHVmpWbVZ5YzJsdmJpa3BJSHRjYmlBZ0lDQWdJR052Ym5OdmJHVXVkMkZ5YmloZ1ZsSk5SbWx5YzNSUVpYSnpiMjVNYjJGa1pYSlFiSFZuYVc0NklGVnVhMjV2ZDI0Z1ZsSk5RMTkyY20wZ2MzQmxZMVpsY25OcGIyNGdYQ0lrZTNOd1pXTldaWEp6YVc5dWZWd2lZQ2s3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQnpZMmhsYldGR2FYSnpkRkJsY25OdmJpQTlJR1Y0ZEdWdWMybHZiaTVtYVhKemRGQmxjbk52Ymp0Y2JpQWdJQ0JwWmlBb0lYTmphR1Z0WVVacGNuTjBVR1Z5YzI5dUtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCdFpYTm9RVzV1YjNSaGRHbHZibk02SUZaU1RVWnBjbk4wVUdWeWMyOXVUV1Z6YUVGdWJtOTBZWFJwYjI1YlhTQTlJRnRkTzF4dUlDQWdJR052Ym5OMElHNXZaR1ZRY21sdGFYUnBkbVZ6VFdGd0lEMGdZWGRoYVhRZ1oyeDBaa1Y0ZEhKaFkzUlFjbWx0YVhScGRtVnpSbkp2YlU1dlpHVnpLR2RzZEdZcE8xeHVJQ0FnSUVGeWNtRjVMbVp5YjIwb2JtOWtaVkJ5YVcxcGRHbDJaWE5OWVhBdVpXNTBjbWxsY3lncEtTNW1iM0pGWVdOb0tDaGJibTlrWlVsdVpHVjRMQ0J3Y21sdGFYUnBkbVZ6WFNrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ1lXNXViM1JoZEdsdmJpQTlJSE5qYUdWdFlVWnBjbk4wVUdWeWMyOXVMbTFsYzJoQmJtNXZkR0YwYVc5dWMxeHVJQ0FnSUNBZ0lDQS9JSE5qYUdWdFlVWnBjbk4wVUdWeWMyOXVMbTFsYzJoQmJtNXZkR0YwYVc5dWN5NW1hVzVrS0NoaEtTQTlQaUJoTG01dlpHVWdQVDA5SUc1dlpHVkpibVJsZUNsY2JpQWdJQ0FnSUNBZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQWdJRzFsYzJoQmJtNXZkR0YwYVc5dWN5NXdkWE5vS0h0Y2JpQWdJQ0FnSUNBZ2JXVnphR1Z6T2lCd2NtbHRhWFJwZG1WekxGeHVJQ0FnSUNBZ0lDQjBlWEJsT2lCaGJtNXZkR0YwYVc5dVB5NTBlWEJsSUQ4L0lDZGliM1JvSnl4Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QldVazFHYVhKemRGQmxjbk52Ymlob2RXMWhibTlwWkN3Z2JXVnphRUZ1Ym05MFlYUnBiMjV6S1R0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1lYTjVibU1nWDNZd1NXMXdiM0owS0dkc2RHWTZJRWRNVkVZc0lHaDFiV0Z1YjJsa09pQldVazFJZFcxaGJtOXBaQ2s2SUZCeWIyMXBjMlU4VmxKTlJtbHljM1JRWlhKemIyNGdmQ0J1ZFd4c1BpQjdYRzRnSUNBZ1kyOXVjM1FnYW5OdmJpQTlJSFJvYVhNdWNHRnljMlZ5TG1wemIyNGdZWE1nUjB4VVJsTmphR1Z0WVM1SlIweFVSanRjYmx4dUlDQWdJR052Ym5OMElIWnliVVY0ZENBOUlHcHpiMjR1WlhoMFpXNXphVzl1Y3o4dVZsSk5JR0Z6SUZZd1ZsSk5MbFpTVFNCOElIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCcFppQW9JWFp5YlVWNGRDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2MyTm9aVzFoUm1seWMzUlFaWEp6YjI0NklGWXdWbEpOTGtacGNuTjBVR1Z5YzI5dUlId2dkVzVrWldacGJtVmtJRDBnZG5KdFJYaDBMbVpwY25OMFVHVnljMjl1TzF4dUlDQWdJR2xtSUNnaGMyTm9aVzFoUm1seWMzUlFaWEp6YjI0cElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUcxbGMyaEJibTV2ZEdGMGFXOXVjem9nVmxKTlJtbHljM1JRWlhKemIyNU5aWE5vUVc1dWIzUmhkR2x2Ymx0ZElEMGdXMTA3WEc0Z0lDQWdZMjl1YzNRZ2JtOWtaVkJ5YVcxcGRHbDJaWE5OWVhBZ1BTQmhkMkZwZENCbmJIUm1SWGgwY21GamRGQnlhVzFwZEdsMlpYTkdjbTl0VG05a1pYTW9aMngwWmlrN1hHNWNiaUFnSUNCQmNuSmhlUzVtY205dEtHNXZaR1ZRY21sdGFYUnBkbVZ6VFdGd0xtVnVkSEpwWlhNb0tTa3VabTl5UldGamFDZ29XMjV2WkdWSmJtUmxlQ3dnY0hKcGJXbDBhWFpsYzEwcElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElITmphR1Z0WVU1dlpHVWdQU0JxYzI5dUxtNXZaR1Z6SVZ0dWIyUmxTVzVrWlhoZE8xeHVYRzRnSUNBZ0lDQmpiMjV6ZENCbWJHRm5JRDBnYzJOb1pXMWhSbWx5YzNSUVpYSnpiMjR1YldWemFFRnVibTkwWVhScGIyNXpYRzRnSUNBZ0lDQWdJRDhnYzJOb1pXMWhSbWx5YzNSUVpYSnpiMjR1YldWemFFRnVibTkwWVhScGIyNXpMbVpwYm1Rb0tHRXBJRDArSUdFdWJXVnphQ0E5UFQwZ2MyTm9aVzFoVG05a1pTNXRaWE5vS1Z4dUlDQWdJQ0FnSUNBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lDQWdiV1Z6YUVGdWJtOTBZWFJwYjI1ekxuQjFjMmdvZTF4dUlDQWdJQ0FnSUNCdFpYTm9aWE02SUhCeWFXMXBkR2wyWlhNc1hHNGdJQ0FnSUNBZ0lIUjVjR1U2SUhSb2FYTXVYMk52Ym5abGNuUldNRVpzWVdkVWIxWXhWSGx3WlNobWJHRm5QeTVtYVhKemRGQmxjbk52Ymtac1lXY3BMRnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZaU1RVWnBjbk4wVUdWeWMyOXVLR2gxYldGdWIybGtMQ0J0WlhOb1FXNXViM1JoZEdsdmJuTXBPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JmWTI5dWRtVnlkRll3Um14aFoxUnZWakZVZVhCbEtHWnNZV2M2SUhOMGNtbHVaeUI4SUhWdVpHVm1hVzVsWkNrNklGWlNUVVpwY25OMFVHVnljMjl1VFdWemFFRnVibTkwWVhScGIyNVVlWEJsSUh0Y2JpQWdJQ0JwWmlBb1pteGhaeUE5UFQwZ0owWnBjbk4wVUdWeWMyOXVUMjVzZVNjcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlBblptbHljM1JRWlhKemIyNVBibXg1Snp0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0dac1lXY2dQVDA5SUNkVWFHbHlaRkJsY25OdmJrOXViSGtuS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnSjNSb2FYSmtVR1Z5YzI5dVQyNXNlU2M3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2htYkdGbklEMDlQU0FuUVhWMGJ5Y3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQW5ZWFYwYnljN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQW5ZbTkwYUNjN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc0aUxDSXZLaUJsYzJ4cGJuUXRaR2x6WVdKc1pTQkFkSGx3WlhOamNtbHdkQzFsYzJ4cGJuUXZibUZ0YVc1bkxXTnZiblpsYm5ScGIyNGdLaTljYmx4dVpYaHdiM0owSUdOdmJuTjBJRlpTVFVacGNuTjBVR1Z5YzI5dVRXVnphRUZ1Ym05MFlYUnBiMjVVZVhCbElEMGdlMXh1SUNCQmRYUnZPaUFuWVhWMGJ5Y3NYRzRnSUVKdmRHZzZJQ2RpYjNSb0p5eGNiaUFnVkdocGNtUlFaWEp6YjI1UGJteDVPaUFuZEdocGNtUlFaWEp6YjI1UGJteDVKeXhjYmlBZ1JtbHljM1JRWlhKemIyNVBibXg1T2lBblptbHljM1JRWlhKemIyNVBibXg1Snl4Y2JuMGdZWE1nWTI5dWMzUTdYRzVjYm1WNGNHOXlkQ0IwZVhCbElGWlNUVVpwY25OMFVHVnljMjl1VFdWemFFRnVibTkwWVhScGIyNVVlWEJsSUQxY2JpQWdkSGx3Wlc5bUlGWlNUVVpwY25OMFVHVnljMjl1VFdWemFFRnVibTkwWVhScGIyNVVlWEJsVzJ0bGVXOW1JSFI1Y0dWdlppQldVazFHYVhKemRGQmxjbk52YmsxbGMyaEJibTV2ZEdGMGFXOXVWSGx3WlYwN1hHNGlMQ0pwYlhCdmNuUWdLaUJoY3lCVVNGSkZSU0JtY205dElDZDBhSEpsWlNjN1hHNXBiWEJ2Y25RZ2V5QldVazFJZFcxaGJrSnZibVVnZlNCbWNtOXRJQ2N1TGk5V1VrMUlkVzFoYmtKdmJtVW5PMXh1YVcxd2IzSjBJSHNnVmxKTlNIVnRZVzV2YVdRZ2ZTQm1jbTl0SUNjdUxpOVdVazFJZFcxaGJtOXBaQ2M3WEc1Y2JtTnZibk4wSUY5Mk0wRWdQU0J1WlhjZ1ZFaFNSVVV1Vm1WamRHOXlNeWdwTzF4dVkyOXVjM1FnWDNZelFpQTlJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLQ2s3WEc1amIyNXpkQ0JmY1hWaGRFRWdQU0J1WlhjZ1ZFaFNSVVV1VVhWaGRHVnlibWx2YmlncE8xeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZsSk5TSFZ0WVc1dmFXUklaV3h3WlhJZ1pYaDBaVzVrY3lCVVNGSkZSUzVIY205MWNDQjdYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0IyY20xSWRXMWhibTlwWkRvZ1ZsSk5TSFZ0WVc1dmFXUTdYRzRnSUhCeWFYWmhkR1VnWDJKdmJtVkJlR1Z6VFdGd09pQk5ZWEE4VmxKTlNIVnRZVzVDYjI1bExDQlVTRkpGUlM1QmVHVnpTR1ZzY0dWeVBqdGNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2FIVnRZVzV2YVdRNklGWlNUVWgxYldGdWIybGtLU0I3WEc0Z0lDQWdjM1Z3WlhJb0tUdGNibHh1SUNBZ0lIUm9hWE11ZG5KdFNIVnRZVzV2YVdRZ1BTQm9kVzFoYm05cFpEdGNibHh1SUNBZ0lIUm9hWE11WDJKdmJtVkJlR1Z6VFdGd0lEMGdibVYzSUUxaGNDZ3BPMXh1WEc0Z0lDQWdUMkpxWldOMExuWmhiSFZsY3lob2RXMWhibTlwWkM1b2RXMWhia0p2Ym1WektTNW1iM0pGWVdOb0tDaGliMjVsS1NBOVBpQjdYRzRnSUNBZ0lDQmpiMjV6ZENCb1pXeHdaWElnUFNCdVpYY2dWRWhTUlVVdVFYaGxjMGhsYkhCbGNpZ3hMakFwTzF4dVhHNGdJQ0FnSUNCb1pXeHdaWEl1YldGMGNtbDRRWFYwYjFWd1pHRjBaU0E5SUdaaGJITmxPMXh1WEc0Z0lDQWdJQ0FvYUdWc2NHVnlMbTFoZEdWeWFXRnNJR0Z6SUZSSVVrVkZMazFoZEdWeWFXRnNLUzVrWlhCMGFGUmxjM1FnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ2hvWld4d1pYSXViV0YwWlhKcFlXd2dZWE1nVkVoU1JVVXVUV0YwWlhKcFlXd3BMbVJsY0hSb1YzSnBkR1VnUFNCbVlXeHpaVHRjYmx4dUlDQWdJQ0FnZEdocGN5NWhaR1FvYUdWc2NHVnlLVHRjYmx4dUlDQWdJQ0FnZEdocGN5NWZZbTl1WlVGNFpYTk5ZWEF1YzJWMEtHSnZibVVzSUdobGJIQmxjaWs3WEc0Z0lDQWdmU2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWkdsemNHOXpaU2dwT2lCMmIybGtJSHRjYmlBZ0lDQkJjbkpoZVM1bWNtOXRLSFJvYVhNdVgySnZibVZCZUdWelRXRndMblpoYkhWbGN5Z3BLUzVtYjNKRllXTm9LQ2hoZUdWektTQTlQaUI3WEc0Z0lDQWdJQ0JoZUdWekxtZGxiMjFsZEhKNUxtUnBjM0J2YzJVb0tUdGNiaUFnSUNBZ0lDaGhlR1Z6TG0xaGRHVnlhV0ZzSUdGeklGUklVa1ZGTGsxaGRHVnlhV0ZzS1M1a2FYTndiM05sS0NrN1hHNGdJQ0FnZlNrN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2RYQmtZWFJsVFdGMGNtbDRWMjl5YkdRb1ptOXlZMlU2SUdKdmIyeGxZVzRwT2lCMmIybGtJSHRjYmlBZ0lDQkJjbkpoZVM1bWNtOXRLSFJvYVhNdVgySnZibVZCZUdWelRXRndMbVZ1ZEhKcFpYTW9LU2t1Wm05eVJXRmphQ2dvVzJKdmJtVXNJR0Y0WlhOZEtTQTlQaUI3WEc0Z0lDQWdJQ0JpYjI1bExtNXZaR1V1ZFhCa1lYUmxWMjl5YkdSTllYUnlhWGdvZEhKMVpTd2dabUZzYzJVcE8xeHVYRzRnSUNBZ0lDQmliMjVsTG01dlpHVXViV0YwY21sNFYyOXliR1F1WkdWamIyMXdiM05sS0Y5Mk0wRXNJRjl4ZFdGMFFTd2dYM1l6UWlrN1hHNWNiaUFnSUNBZ0lHTnZibk4wSUhOallXeGxJRDBnWDNZelFTNXpaWFFvTUM0eExDQXdMakVzSURBdU1Ta3VaR2wyYVdSbEtGOTJNMElwTzF4dUlDQWdJQ0FnWVhobGN5NXRZWFJ5YVhndVkyOXdlU2hpYjI1bExtNXZaR1V1YldGMGNtbDRWMjl5YkdRcExuTmpZV3hsS0hOallXeGxLVHRjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJSE4xY0dWeUxuVndaR0YwWlUxaGRISnBlRmR2Y214a0tHWnZjbU5sS1R0Y2JpQWdmVnh1ZlZ4dUlpd2lMeW9nWlhOc2FXNTBMV1JwYzJGaWJHVWdRSFI1Y0dWelkzSnBjSFF0WlhOc2FXNTBMMjVoYldsdVp5MWpiMjUyWlc1MGFXOXVJQ292WEc1Y2JtbHRjRzl5ZENCN0lGWlNUVWgxYldGdVFtOXVaVTVoYldVZ2ZTQm1jbTl0SUNjdUwxWlNUVWgxYldGdVFtOXVaVTVoYldVbk8xeHVYRzR2S2lwY2JpQXFJRlJvWlNCc2FYTjBJRzltSUh0QWJHbHVheUJXVWsxSWRXMWhia0p2Ym1WT1lXMWxmUzRnUkdWd1pXNWtaVzVqZVNCaGQyRnlaUzVjYmlBcUwxeHVaWGh3YjNKMElHTnZibk4wSUZaU1RVaDFiV0Z1UW05dVpVeHBjM1E2SUZaU1RVaDFiV0Z1UW05dVpVNWhiV1ZiWFNBOUlGdGNiaUFnSjJocGNITW5MRnh1SUNBbmMzQnBibVVuTEZ4dUlDQW5ZMmhsYzNRbkxGeHVJQ0FuZFhCd1pYSkRhR1Z6ZENjc1hHNGdJQ2R1WldOckp5eGNibHh1SUNBbmFHVmhaQ2NzWEc0Z0lDZHNaV1owUlhsbEp5eGNiaUFnSjNKcFoyaDBSWGxsSnl4Y2JpQWdKMnBoZHljc1hHNWNiaUFnSjJ4bFpuUlZjSEJsY2t4bFp5Y3NYRzRnSUNkc1pXWjBURzkzWlhKTVpXY25MRnh1SUNBbmJHVm1kRVp2YjNRbkxGeHVJQ0FuYkdWbWRGUnZaWE1uTEZ4dVhHNGdJQ2R5YVdkb2RGVndjR1Z5VEdWbkp5eGNiaUFnSjNKcFoyaDBURzkzWlhKTVpXY25MRnh1SUNBbmNtbG5hSFJHYjI5MEp5eGNiaUFnSjNKcFoyaDBWRzlsY3ljc1hHNWNiaUFnSjJ4bFpuUlRhRzkxYkdSbGNpY3NYRzRnSUNkc1pXWjBWWEJ3WlhKQmNtMG5MRnh1SUNBbmJHVm1kRXh2ZDJWeVFYSnRKeXhjYmlBZ0oyeGxablJJWVc1a0p5eGNibHh1SUNBbmNtbG5hSFJUYUc5MWJHUmxjaWNzWEc0Z0lDZHlhV2RvZEZWd2NHVnlRWEp0Snl4Y2JpQWdKM0pwWjJoMFRHOTNaWEpCY20wbkxGeHVJQ0FuY21sbmFIUklZVzVrSnl4Y2JseHVJQ0FuYkdWbWRGUm9kVzFpVFdWMFlXTmhjbkJoYkNjc1hHNGdJQ2RzWldaMFZHaDFiV0pRY205NGFXMWhiQ2NzWEc0Z0lDZHNaV1owVkdoMWJXSkVhWE4wWVd3bkxGeHVJQ0FuYkdWbWRFbHVaR1Y0VUhKdmVHbHRZV3duTEZ4dUlDQW5iR1ZtZEVsdVpHVjRTVzUwWlhKdFpXUnBZWFJsSnl4Y2JpQWdKMnhsWm5SSmJtUmxlRVJwYzNSaGJDY3NYRzRnSUNkc1pXWjBUV2xrWkd4bFVISnZlR2x0WVd3bkxGeHVJQ0FuYkdWbWRFMXBaR1JzWlVsdWRHVnliV1ZrYVdGMFpTY3NYRzRnSUNkc1pXWjBUV2xrWkd4bFJHbHpkR0ZzSnl4Y2JpQWdKMnhsWm5SU2FXNW5VSEp2ZUdsdFlXd25MRnh1SUNBbmJHVm1kRkpwYm1kSmJuUmxjbTFsWkdsaGRHVW5MRnh1SUNBbmJHVm1kRkpwYm1kRWFYTjBZV3duTEZ4dUlDQW5iR1ZtZEV4cGRIUnNaVkJ5YjNocGJXRnNKeXhjYmlBZ0oyeGxablJNYVhSMGJHVkpiblJsY20xbFpHbGhkR1VuTEZ4dUlDQW5iR1ZtZEV4cGRIUnNaVVJwYzNSaGJDY3NYRzVjYmlBZ0ozSnBaMmgwVkdoMWJXSk5aWFJoWTJGeWNHRnNKeXhjYmlBZ0ozSnBaMmgwVkdoMWJXSlFjbTk0YVcxaGJDY3NYRzRnSUNkeWFXZG9kRlJvZFcxaVJHbHpkR0ZzSnl4Y2JpQWdKM0pwWjJoMFNXNWtaWGhRY205NGFXMWhiQ2NzWEc0Z0lDZHlhV2RvZEVsdVpHVjRTVzUwWlhKdFpXUnBZWFJsSnl4Y2JpQWdKM0pwWjJoMFNXNWtaWGhFYVhOMFlXd25MRnh1SUNBbmNtbG5hSFJOYVdSa2JHVlFjbTk0YVcxaGJDY3NYRzRnSUNkeWFXZG9kRTFwWkdSc1pVbHVkR1Z5YldWa2FXRjBaU2NzWEc0Z0lDZHlhV2RvZEUxcFpHUnNaVVJwYzNSaGJDY3NYRzRnSUNkeWFXZG9kRkpwYm1kUWNtOTRhVzFoYkNjc1hHNGdJQ2R5YVdkb2RGSnBibWRKYm5SbGNtMWxaR2xoZEdVbkxGeHVJQ0FuY21sbmFIUlNhVzVuUkdsemRHRnNKeXhjYmlBZ0ozSnBaMmgwVEdsMGRHeGxVSEp2ZUdsdFlXd25MRnh1SUNBbmNtbG5hSFJNYVhSMGJHVkpiblJsY20xbFpHbGhkR1VuTEZ4dUlDQW5jbWxuYUhSTWFYUjBiR1ZFYVhOMFlXd25MRnh1WFR0Y2JpSXNJaThxSUdWemJHbHVkQzFrYVhOaFlteGxJRUIwZVhCbGMyTnlhWEIwTFdWemJHbHVkQzl1WVcxcGJtY3RZMjl1ZG1WdWRHbHZiaUFxTDF4dVhHNHZLaXBjYmlBcUlGUm9aU0J1WVcxbGN5QnZaaUI3UUd4cGJtc2dWbEpOU0hWdFlXNXZhV1I5SUdKdmJtVWdibUZ0WlhNdVhHNGdLbHh1SUNvZ1VtVm1PaUJvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2ZG5KdExXTXZkbkp0TFhOd1pXTnBabWxqWVhScGIyNHZZbXh2WWk5dFlYTjBaWEl2YzNCbFkybG1hV05oZEdsdmJpOVdVazFEWDNaeWJTMHhMakF2YUhWdFlXNXZhV1F1YldSY2JpQXFMMXh1Wlhod2IzSjBJR052Ym5OMElGWlNUVWgxYldGdVFtOXVaVTVoYldVZ1BTQjdYRzRnSUVocGNITTZJQ2RvYVhCekp5eGNiaUFnVTNCcGJtVTZJQ2R6Y0dsdVpTY3NYRzRnSUVOb1pYTjBPaUFuWTJobGMzUW5MRnh1SUNCVmNIQmxja05vWlhOME9pQW5kWEJ3WlhKRGFHVnpkQ2NzWEc0Z0lFNWxZMnM2SUNkdVpXTnJKeXhjYmx4dUlDQklaV0ZrT2lBbmFHVmhaQ2NzWEc0Z0lFeGxablJGZVdVNklDZHNaV1owUlhsbEp5eGNiaUFnVW1sbmFIUkZlV1U2SUNkeWFXZG9kRVY1WlNjc1hHNGdJRXBoZHpvZ0oycGhkeWNzWEc1Y2JpQWdUR1ZtZEZWd2NHVnlUR1ZuT2lBbmJHVm1kRlZ3Y0dWeVRHVm5KeXhjYmlBZ1RHVm1kRXh2ZDJWeVRHVm5PaUFuYkdWbWRFeHZkMlZ5VEdWbkp5eGNiaUFnVEdWbWRFWnZiM1E2SUNkc1pXWjBSbTl2ZENjc1hHNGdJRXhsWm5SVWIyVnpPaUFuYkdWbWRGUnZaWE1uTEZ4dVhHNGdJRkpwWjJoMFZYQndaWEpNWldjNklDZHlhV2RvZEZWd2NHVnlUR1ZuSnl4Y2JpQWdVbWxuYUhSTWIzZGxja3hsWnpvZ0ozSnBaMmgwVEc5M1pYSk1aV2NuTEZ4dUlDQlNhV2RvZEVadmIzUTZJQ2R5YVdkb2RFWnZiM1FuTEZ4dUlDQlNhV2RvZEZSdlpYTTZJQ2R5YVdkb2RGUnZaWE1uTEZ4dVhHNGdJRXhsWm5SVGFHOTFiR1JsY2pvZ0oyeGxablJUYUc5MWJHUmxjaWNzWEc0Z0lFeGxablJWY0hCbGNrRnliVG9nSjJ4bFpuUlZjSEJsY2tGeWJTY3NYRzRnSUV4bFpuUk1iM2RsY2tGeWJUb2dKMnhsWm5STWIzZGxja0Z5YlNjc1hHNGdJRXhsWm5SSVlXNWtPaUFuYkdWbWRFaGhibVFuTEZ4dVhHNGdJRkpwWjJoMFUyaHZkV3hrWlhJNklDZHlhV2RvZEZOb2IzVnNaR1Z5Snl4Y2JpQWdVbWxuYUhSVmNIQmxja0Z5YlRvZ0ozSnBaMmgwVlhCd1pYSkJjbTBuTEZ4dUlDQlNhV2RvZEV4dmQyVnlRWEp0T2lBbmNtbG5hSFJNYjNkbGNrRnliU2NzWEc0Z0lGSnBaMmgwU0dGdVpEb2dKM0pwWjJoMFNHRnVaQ2NzWEc1Y2JpQWdUR1ZtZEZSb2RXMWlUV1YwWVdOaGNuQmhiRG9nSjJ4bFpuUlVhSFZ0WWsxbGRHRmpZWEp3WVd3bkxGeHVJQ0JNWldaMFZHaDFiV0pRY205NGFXMWhiRG9nSjJ4bFpuUlVhSFZ0WWxCeWIzaHBiV0ZzSnl4Y2JpQWdUR1ZtZEZSb2RXMWlSR2x6ZEdGc09pQW5iR1ZtZEZSb2RXMWlSR2x6ZEdGc0p5eGNiaUFnVEdWbWRFbHVaR1Y0VUhKdmVHbHRZV3c2SUNkc1pXWjBTVzVrWlhoUWNtOTRhVzFoYkNjc1hHNGdJRXhsWm5SSmJtUmxlRWx1ZEdWeWJXVmthV0YwWlRvZ0oyeGxablJKYm1SbGVFbHVkR1Z5YldWa2FXRjBaU2NzWEc0Z0lFeGxablJKYm1SbGVFUnBjM1JoYkRvZ0oyeGxablJKYm1SbGVFUnBjM1JoYkNjc1hHNGdJRXhsWm5STmFXUmtiR1ZRY205NGFXMWhiRG9nSjJ4bFpuUk5hV1JrYkdWUWNtOTRhVzFoYkNjc1hHNGdJRXhsWm5STmFXUmtiR1ZKYm5SbGNtMWxaR2xoZEdVNklDZHNaV1owVFdsa1pHeGxTVzUwWlhKdFpXUnBZWFJsSnl4Y2JpQWdUR1ZtZEUxcFpHUnNaVVJwYzNSaGJEb2dKMnhsWm5STmFXUmtiR1ZFYVhOMFlXd25MRnh1SUNCTVpXWjBVbWx1WjFCeWIzaHBiV0ZzT2lBbmJHVm1kRkpwYm1kUWNtOTRhVzFoYkNjc1hHNGdJRXhsWm5SU2FXNW5TVzUwWlhKdFpXUnBZWFJsT2lBbmJHVm1kRkpwYm1kSmJuUmxjbTFsWkdsaGRHVW5MRnh1SUNCTVpXWjBVbWx1WjBScGMzUmhiRG9nSjJ4bFpuUlNhVzVuUkdsemRHRnNKeXhjYmlBZ1RHVm1kRXhwZEhSc1pWQnliM2hwYldGc09pQW5iR1ZtZEV4cGRIUnNaVkJ5YjNocGJXRnNKeXhjYmlBZ1RHVm1kRXhwZEhSc1pVbHVkR1Z5YldWa2FXRjBaVG9nSjJ4bFpuUk1hWFIwYkdWSmJuUmxjbTFsWkdsaGRHVW5MRnh1SUNCTVpXWjBUR2wwZEd4bFJHbHpkR0ZzT2lBbmJHVm1kRXhwZEhSc1pVUnBjM1JoYkNjc1hHNWNiaUFnVW1sbmFIUlVhSFZ0WWsxbGRHRmpZWEp3WVd3NklDZHlhV2RvZEZSb2RXMWlUV1YwWVdOaGNuQmhiQ2NzWEc0Z0lGSnBaMmgwVkdoMWJXSlFjbTk0YVcxaGJEb2dKM0pwWjJoMFZHaDFiV0pRY205NGFXMWhiQ2NzWEc0Z0lGSnBaMmgwVkdoMWJXSkVhWE4wWVd3NklDZHlhV2RvZEZSb2RXMWlSR2x6ZEdGc0p5eGNiaUFnVW1sbmFIUkpibVJsZUZCeWIzaHBiV0ZzT2lBbmNtbG5hSFJKYm1SbGVGQnliM2hwYldGc0p5eGNiaUFnVW1sbmFIUkpibVJsZUVsdWRHVnliV1ZrYVdGMFpUb2dKM0pwWjJoMFNXNWtaWGhKYm5SbGNtMWxaR2xoZEdVbkxGeHVJQ0JTYVdkb2RFbHVaR1Y0UkdsemRHRnNPaUFuY21sbmFIUkpibVJsZUVScGMzUmhiQ2NzWEc0Z0lGSnBaMmgwVFdsa1pHeGxVSEp2ZUdsdFlXdzZJQ2R5YVdkb2RFMXBaR1JzWlZCeWIzaHBiV0ZzSnl4Y2JpQWdVbWxuYUhSTmFXUmtiR1ZKYm5SbGNtMWxaR2xoZEdVNklDZHlhV2RvZEUxcFpHUnNaVWx1ZEdWeWJXVmthV0YwWlNjc1hHNGdJRkpwWjJoMFRXbGtaR3hsUkdsemRHRnNPaUFuY21sbmFIUk5hV1JrYkdWRWFYTjBZV3duTEZ4dUlDQlNhV2RvZEZKcGJtZFFjbTk0YVcxaGJEb2dKM0pwWjJoMFVtbHVaMUJ5YjNocGJXRnNKeXhjYmlBZ1VtbG5hSFJTYVc1blNXNTBaWEp0WldScFlYUmxPaUFuY21sbmFIUlNhVzVuU1c1MFpYSnRaV1JwWVhSbEp5eGNiaUFnVW1sbmFIUlNhVzVuUkdsemRHRnNPaUFuY21sbmFIUlNhVzVuUkdsemRHRnNKeXhjYmlBZ1VtbG5hSFJNYVhSMGJHVlFjbTk0YVcxaGJEb2dKM0pwWjJoMFRHbDBkR3hsVUhKdmVHbHRZV3duTEZ4dUlDQlNhV2RvZEV4cGRIUnNaVWx1ZEdWeWJXVmthV0YwWlRvZ0ozSnBaMmgwVEdsMGRHeGxTVzUwWlhKdFpXUnBZWFJsSnl4Y2JpQWdVbWxuYUhSTWFYUjBiR1ZFYVhOMFlXdzZJQ2R5YVdkb2RFeHBkSFJzWlVScGMzUmhiQ2NzWEc1OUlHRnpJR052Ym5OME8xeHVYRzVsZUhCdmNuUWdkSGx3WlNCV1VrMUlkVzFoYmtKdmJtVk9ZVzFsSUQwZ2RIbHdaVzltSUZaU1RVaDFiV0Z1UW05dVpVNWhiV1ZiYTJWNWIyWWdkSGx3Wlc5bUlGWlNUVWgxYldGdVFtOXVaVTVoYldWZE8xeHVJaXdpTHlvZ1pYTnNhVzUwTFdScGMyRmliR1VnUUhSNWNHVnpZM0pwY0hRdFpYTnNhVzUwTDI1aGJXbHVaeTFqYjI1MlpXNTBhVzl1SUNvdlhHNWNibWx0Y0c5eWRDQjdJRlpTVFVoMWJXRnVRbTl1WlU1aGJXVWdmU0JtY205dElDY3VMMVpTVFVoMWJXRnVRbTl1WlU1aGJXVW5PMXh1WEc0dktpcGNiaUFxSUVGdUlHOWlhbVZqZENCMGFHRjBJRzFoY0hNZ1puSnZiU0I3UUd4cGJtc2dWbEpOU0hWdFlXNUNiMjVsVG1GdFpYMGdkRzhnYVhSeklIQmhjbVZ1ZENCN1FHeHBibXNnVmxKTlNIVnRZVzVDYjI1bFRtRnRaWDB1WEc0Z0tseHVJQ29nVW1WbU9pQm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZkbkp0TFdNdmRuSnRMWE53WldOcFptbGpZWFJwYjI0dllteHZZaTl0WVhOMFpYSXZjM0JsWTJsbWFXTmhkR2x2Ymk5V1VrMURYM1p5YlMweExqQXZhSFZ0WVc1dmFXUXViV1JjYmlBcUwxeHVaWGh3YjNKMElHTnZibk4wSUZaU1RVaDFiV0Z1UW05dVpWQmhjbVZ1ZEUxaGNEb2dleUJiWW05dVpTQnBiaUJXVWsxSWRXMWhia0p2Ym1WT1lXMWxYVG9nVmxKTlNIVnRZVzVDYjI1bFRtRnRaU0I4SUc1MWJHd2dmU0E5SUh0Y2JpQWdhR2x3Y3pvZ2JuVnNiQ3hjYmlBZ2MzQnBibVU2SUNkb2FYQnpKeXhjYmlBZ1kyaGxjM1E2SUNkemNHbHVaU2NzWEc0Z0lIVndjR1Z5UTJobGMzUTZJQ2RqYUdWemRDY3NYRzRnSUc1bFkyczZJQ2QxY0hCbGNrTm9aWE4wSnl4Y2JseHVJQ0JvWldGa09pQW5ibVZqYXljc1hHNGdJR3hsWm5SRmVXVTZJQ2RvWldGa0p5eGNiaUFnY21sbmFIUkZlV1U2SUNkb1pXRmtKeXhjYmlBZ2FtRjNPaUFuYUdWaFpDY3NYRzVjYmlBZ2JHVm1kRlZ3Y0dWeVRHVm5PaUFuYUdsd2N5Y3NYRzRnSUd4bFpuUk1iM2RsY2t4bFp6b2dKMnhsWm5SVmNIQmxja3hsWnljc1hHNGdJR3hsWm5SR2IyOTBPaUFuYkdWbWRFeHZkMlZ5VEdWbkp5eGNiaUFnYkdWbWRGUnZaWE02SUNkc1pXWjBSbTl2ZENjc1hHNWNiaUFnY21sbmFIUlZjSEJsY2t4bFp6b2dKMmhwY0hNbkxGeHVJQ0J5YVdkb2RFeHZkMlZ5VEdWbk9pQW5jbWxuYUhSVmNIQmxja3hsWnljc1hHNGdJSEpwWjJoMFJtOXZkRG9nSjNKcFoyaDBURzkzWlhKTVpXY25MRnh1SUNCeWFXZG9kRlJ2WlhNNklDZHlhV2RvZEVadmIzUW5MRnh1WEc0Z0lHeGxablJUYUc5MWJHUmxjam9nSjNWd2NHVnlRMmhsYzNRbkxGeHVJQ0JzWldaMFZYQndaWEpCY20wNklDZHNaV1owVTJodmRXeGtaWEluTEZ4dUlDQnNaV1owVEc5M1pYSkJjbTA2SUNkc1pXWjBWWEJ3WlhKQmNtMG5MRnh1SUNCc1pXWjBTR0Z1WkRvZ0oyeGxablJNYjNkbGNrRnliU2NzWEc1Y2JpQWdjbWxuYUhSVGFHOTFiR1JsY2pvZ0ozVndjR1Z5UTJobGMzUW5MRnh1SUNCeWFXZG9kRlZ3Y0dWeVFYSnRPaUFuY21sbmFIUlRhRzkxYkdSbGNpY3NYRzRnSUhKcFoyaDBURzkzWlhKQmNtMDZJQ2R5YVdkb2RGVndjR1Z5UVhKdEp5eGNiaUFnY21sbmFIUklZVzVrT2lBbmNtbG5hSFJNYjNkbGNrRnliU2NzWEc1Y2JpQWdiR1ZtZEZSb2RXMWlUV1YwWVdOaGNuQmhiRG9nSjJ4bFpuUklZVzVrSnl4Y2JpQWdiR1ZtZEZSb2RXMWlVSEp2ZUdsdFlXdzZJQ2RzWldaMFZHaDFiV0pOWlhSaFkyRnljR0ZzSnl4Y2JpQWdiR1ZtZEZSb2RXMWlSR2x6ZEdGc09pQW5iR1ZtZEZSb2RXMWlVSEp2ZUdsdFlXd25MRnh1SUNCc1pXWjBTVzVrWlhoUWNtOTRhVzFoYkRvZ0oyeGxablJJWVc1a0p5eGNiaUFnYkdWbWRFbHVaR1Y0U1c1MFpYSnRaV1JwWVhSbE9pQW5iR1ZtZEVsdVpHVjRVSEp2ZUdsdFlXd25MRnh1SUNCc1pXWjBTVzVrWlhoRWFYTjBZV3c2SUNkc1pXWjBTVzVrWlhoSmJuUmxjbTFsWkdsaGRHVW5MRnh1SUNCc1pXWjBUV2xrWkd4bFVISnZlR2x0WVd3NklDZHNaV1owU0dGdVpDY3NYRzRnSUd4bFpuUk5hV1JrYkdWSmJuUmxjbTFsWkdsaGRHVTZJQ2RzWldaMFRXbGtaR3hsVUhKdmVHbHRZV3duTEZ4dUlDQnNaV1owVFdsa1pHeGxSR2x6ZEdGc09pQW5iR1ZtZEUxcFpHUnNaVWx1ZEdWeWJXVmthV0YwWlNjc1hHNGdJR3hsWm5SU2FXNW5VSEp2ZUdsdFlXdzZJQ2RzWldaMFNHRnVaQ2NzWEc0Z0lHeGxablJTYVc1blNXNTBaWEp0WldScFlYUmxPaUFuYkdWbWRGSnBibWRRY205NGFXMWhiQ2NzWEc0Z0lHeGxablJTYVc1blJHbHpkR0ZzT2lBbmJHVm1kRkpwYm1kSmJuUmxjbTFsWkdsaGRHVW5MRnh1SUNCc1pXWjBUR2wwZEd4bFVISnZlR2x0WVd3NklDZHNaV1owU0dGdVpDY3NYRzRnSUd4bFpuUk1hWFIwYkdWSmJuUmxjbTFsWkdsaGRHVTZJQ2RzWldaMFRHbDBkR3hsVUhKdmVHbHRZV3duTEZ4dUlDQnNaV1owVEdsMGRHeGxSR2x6ZEdGc09pQW5iR1ZtZEV4cGRIUnNaVWx1ZEdWeWJXVmthV0YwWlNjc1hHNWNiaUFnY21sbmFIUlVhSFZ0WWsxbGRHRmpZWEp3WVd3NklDZHlhV2RvZEVoaGJtUW5MRnh1SUNCeWFXZG9kRlJvZFcxaVVISnZlR2x0WVd3NklDZHlhV2RvZEZSb2RXMWlUV1YwWVdOaGNuQmhiQ2NzWEc0Z0lISnBaMmgwVkdoMWJXSkVhWE4wWVd3NklDZHlhV2RvZEZSb2RXMWlVSEp2ZUdsdFlXd25MRnh1SUNCeWFXZG9kRWx1WkdWNFVISnZlR2x0WVd3NklDZHlhV2RvZEVoaGJtUW5MRnh1SUNCeWFXZG9kRWx1WkdWNFNXNTBaWEp0WldScFlYUmxPaUFuY21sbmFIUkpibVJsZUZCeWIzaHBiV0ZzSnl4Y2JpQWdjbWxuYUhSSmJtUmxlRVJwYzNSaGJEb2dKM0pwWjJoMFNXNWtaWGhKYm5SbGNtMWxaR2xoZEdVbkxGeHVJQ0J5YVdkb2RFMXBaR1JzWlZCeWIzaHBiV0ZzT2lBbmNtbG5hSFJJWVc1a0p5eGNiaUFnY21sbmFIUk5hV1JrYkdWSmJuUmxjbTFsWkdsaGRHVTZJQ2R5YVdkb2RFMXBaR1JzWlZCeWIzaHBiV0ZzSnl4Y2JpQWdjbWxuYUhSTmFXUmtiR1ZFYVhOMFlXdzZJQ2R5YVdkb2RFMXBaR1JzWlVsdWRHVnliV1ZrYVdGMFpTY3NYRzRnSUhKcFoyaDBVbWx1WjFCeWIzaHBiV0ZzT2lBbmNtbG5hSFJJWVc1a0p5eGNiaUFnY21sbmFIUlNhVzVuU1c1MFpYSnRaV1JwWVhSbE9pQW5jbWxuYUhSU2FXNW5VSEp2ZUdsdFlXd25MRnh1SUNCeWFXZG9kRkpwYm1kRWFYTjBZV3c2SUNkeWFXZG9kRkpwYm1kSmJuUmxjbTFsWkdsaGRHVW5MRnh1SUNCeWFXZG9kRXhwZEhSc1pWQnliM2hwYldGc09pQW5jbWxuYUhSSVlXNWtKeXhjYmlBZ2NtbG5hSFJNYVhSMGJHVkpiblJsY20xbFpHbGhkR1U2SUNkeWFXZG9kRXhwZEhSc1pWQnliM2hwYldGc0p5eGNiaUFnY21sbmFIUk1hWFIwYkdWRWFYTjBZV3c2SUNkeWFXZG9kRXhwZEhSc1pVbHVkR1Z5YldWa2FXRjBaU2NzWEc1OU8xeHVJaXdpYVcxd2IzSjBJQ29nWVhNZ1ZFaFNSVVVnWm5KdmJTQW5kR2h5WldVbk8xeHVYRzR2S2lwY2JpQXFJRUVnWTI5dGNHRjBJR1oxYm1OMGFXOXVJR1p2Y2lCZ1VYVmhkR1Z5Ym1sdmJpNXBiblpsY25Rb0tXQWdMeUJnVVhWaGRHVnlibWx2Ymk1cGJuWmxjbk5sS0NsZ0xseHVJQ29nWUZGMVlYUmxjbTVwYjI0dWFXNTJaWEowS0NsZ0lHbHpJR2x1ZEhKdlpIVmpaV1FnYVc0Z2NqRXlNeUJoYm1RZ1lGRjFZWFJsY201cGIyNHVhVzUyWlhKelpTZ3BZQ0JsYldsMGN5QmhJSGRoY201cGJtY3VYRzRnS2lCWFpTQmhjbVVnWjI5cGJtY2dkRzhnZFhObElIUm9hWE1nWTI5dGNHRjBJR1p2Y2lCaElIZG9hV3hsTGx4dUlDb2dRSEJoY21GdElIUmhjbWRsZENCQklIUmhjbWRsZENCeGRXRjBaWEp1YVc5dVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ4ZFdGMFNXNTJaWEowUTI5dGNHRjBQRlFnWlhoMFpXNWtjeUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVQaWgwWVhKblpYUTZJRlFwT2lCVUlIdGNiaUFnYVdZZ0tDaDBZWEpuWlhRZ1lYTWdZVzU1S1M1cGJuWmxjblFwSUh0Y2JpQWdJQ0IwWVhKblpYUXVhVzUyWlhKMEtDazdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdLSFJoY21kbGRDQmhjeUJoYm5rcExtbHVkbVZ5YzJVb0tUdGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQjBZWEpuWlhRN1hHNTlYRzRpTENKcGJYQnZjblFnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVwYlhCdmNuUWdleUJ4ZFdGMFNXNTJaWEowUTI5dGNHRjBJSDBnWm5KdmJTQW5MaTR2ZFhScGJITXZjWFZoZEVsdWRtVnlkRU52YlhCaGRDYzdYRzVwYlhCdmNuUWdkSGx3WlNCN0lGWlNUVWgxYldGdVFtOXVaU0I5SUdaeWIyMGdKeTR2VmxKTlNIVnRZVzVDYjI1bEp6dGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1ZsSk5TSFZ0WVc1Q2IyNWxjeUI5SUdaeWIyMGdKeTR2VmxKTlNIVnRZVzVDYjI1bGN5YzdYRzVwYlhCdmNuUWdkSGx3WlNCN0lGWlNUVWgxYldGdVFtOXVaVTVoYldVZ2ZTQm1jbTl0SUNjdUwxWlNUVWgxYldGdVFtOXVaVTVoYldVbk8xeHVhVzF3YjNKMElIUjVjR1VnZXlCV1VrMVFiM05sSUgwZ1puSnZiU0FuTGk5V1VrMVFiM05sSnp0Y2JseHVZMjl1YzNRZ1gzWXpRU0E5SUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0NrN1hHNWpiMjV6ZENCZmNYVmhkRUVnUFNCdVpYY2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJpZ3BPMXh1WEc0dktpcGNiaUFxSUVFZ1kyeGhjM01nY21Wd2NtVnpaVzUwY3lCMGFHVWdVbWxuSUc5bUlHRWdWbEpOTGx4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZsSk5VbWxuSUh0Y2JpQWdMeW9xWEc0Z0lDQXFJRUVnZTBCc2FXNXJJRlpTVFVoMWJXRnVRbTl1WlhOOUlIUm9ZWFFnWTI5dWRHRnBibk1nWVd4c0lIUm9aU0JvZFcxaGJpQmliMjVsY3lCdlppQjBhR1VnVmxKTkxseHVJQ0FnS2lCWmIzVWdiV2xuYUhRZ2QyRnVkQ0IwYnlCblpYUWdkR2hsYzJVZ1ltOXVaWE1nZFhOcGJtY2dlMEJzYVc1cklGWlNUVWgxYldGdWIybGtMbWRsZEVKdmJtVjlMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2gxYldGdVFtOXVaWE02SUZaU1RVaDFiV0Z1UW05dVpYTTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFRWdlMEJzYVc1cklGWlNUVkJ2YzJWOUlIUm9ZWFFnYVhNZ2FYUnpJR1JsWm1GMWJIUWdjM1JoZEdVdVhHNGdJQ0FxSUU1dmRHVWdkR2hoZENCcGRDZHpJRzV2ZENCamIyMXdZWFJwWW14bElIZHBkR2dnZTBCc2FXNXJJSE5sZEZCdmMyVjlJR0Z1WkNCN1FHeHBibXNnWjJWMFVHOXpaWDBzSUhOcGJtTmxJR2wwSUdOdmJuUmhhVzV6SUc1dmJpMXlaV3hoZEdsMlpTQjJZV3gxWlhNZ2IyWWdaV0ZqYUNCc2IyTmhiQ0IwY21GdWMyWnZjbTF6TGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhKbGMzUlFiM05sT2lCV1VrMVFiM05sTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJEY21WaGRHVWdZU0J1WlhjZ2UwQnNhVzVySUZaU1RVaDFiV0Z1YjJsa2ZTNWNiaUFnSUNvZ1FIQmhjbUZ0SUdoMWJXRnVRbTl1WlhNZ1FTQjdRR3hwYm1zZ1ZsSk5TSFZ0WVc1Q2IyNWxjMzBnWTI5dWRHRnBibk1nWVd4c0lIUm9aU0JpYjI1bGN5QnZaaUIwYUdVZ2JtVjNJR2gxYldGdWIybGtYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvYUhWdFlXNUNiMjVsY3pvZ1ZsSk5TSFZ0WVc1Q2IyNWxjeWtnZTF4dUlDQWdJSFJvYVhNdWFIVnRZVzVDYjI1bGN5QTlJR2gxYldGdVFtOXVaWE03WEc1Y2JpQWdJQ0IwYUdsekxuSmxjM1JRYjNObElEMGdkR2hwY3k1blpYUkJZbk52YkhWMFpWQnZjMlVvS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY200Z2RHaGxJR04xY25KbGJuUWdZV0p6YjJ4MWRHVWdjRzl6WlNCdlppQjBhR2x6SUdoMWJXRnViMmxrSUdGeklHRWdlMEJzYVc1cklGWlNUVkJ2YzJWOUxseHVJQ0FnS2lCT2IzUmxJSFJvWVhRZ2RHaGxJRzkxZEhCMWRDQnlaWE4xYkhRZ2QybHNiQ0JqYjI1MFlXbHVJR2x1YVhScFlXd2djM1JoZEdVZ2IyWWdkR2hsSUZaU1RTQmhibVFnYm05MElHTnZiWEJoZEdsaWJHVWdZbVYwZDJWbGJpQmthV1ptWlhKbGJuUWdiVzlrWld4ekxseHVJQ0FnS2lCWmIzVWdiV2xuYUhRZ2QyRnVkQ0IwYnlCMWMyVWdlMEJzYVc1cklHZGxkRkJ2YzJWOUlHbHVjM1JsWVdRdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBRV0p6YjJ4MWRHVlFiM05sS0NrNklGWlNUVkJ2YzJVZ2UxeHVJQ0FnSUdOdmJuTjBJSEJ2YzJVZ1BTQjdmU0JoY3lCV1VrMVFiM05sTzF4dVhHNGdJQ0FnVDJKcVpXTjBMbXRsZVhNb2RHaHBjeTVvZFcxaGJrSnZibVZ6S1M1bWIzSkZZV05vS0NoMmNtMUNiMjVsVG1GdFpWTjBjbWx1WnlrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2RuSnRRbTl1WlU1aGJXVWdQU0IyY20xQ2IyNWxUbUZ0WlZOMGNtbHVaeUJoY3lCV1VrMUlkVzFoYmtKdmJtVk9ZVzFsTzF4dUlDQWdJQ0FnWTI5dWMzUWdibTlrWlNBOUlIUm9hWE11WjJWMFFtOXVaVTV2WkdVb2RuSnRRbTl1WlU1aGJXVXBPMXh1WEc0Z0lDQWdJQ0F2THlCSloyNXZjbVVnZDJobGJpQjBhR1Z5WlNCaGNtVWdibThnWW05dVpTQnZiaUIwYUdVZ1ZsSk5TSFZ0WVc1dmFXUmNiaUFnSUNBZ0lHbG1JQ2doYm05a1pTa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQzh2SUVkbGRDQjBhR1VnY0c5emFYUnBiMjRnTHlCeWIzUmhkR2x2YmlCbWNtOXRJSFJvWlNCdWIyUmxYRzRnSUNBZ0lDQmZkak5CTG1OdmNIa29ibTlrWlM1d2IzTnBkR2x2YmlrN1hHNGdJQ0FnSUNCZmNYVmhkRUV1WTI5d2VTaHViMlJsTG5GMVlYUmxjbTVwYjI0cE8xeHVYRzRnSUNBZ0lDQXZMeUJEYjI1MlpYSjBJSFJ2SUhKaGR5QmhjbkpoZVhOY2JpQWdJQ0FnSUhCdmMyVmJkbkp0UW05dVpVNWhiV1ZkSUQwZ2UxeHVJQ0FnSUNBZ0lDQndiM05wZEdsdmJqb2dYM1l6UVM1MGIwRnljbUY1S0NrZ1lYTWdXMjUxYldKbGNpd2diblZ0WW1WeUxDQnVkVzFpWlhKZExGeHVJQ0FnSUNBZ0lDQnliM1JoZEdsdmJqb2dYM0YxWVhSQkxuUnZRWEp5WVhrb0tTQmhjeUJiYm5WdFltVnlMQ0J1ZFcxaVpYSXNJRzUxYldKbGNpd2diblZ0WW1WeVhTeGNiaUFnSUNBZ0lIMDdYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQnlaWFIxY200Z2NHOXpaVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTRnZEdobElHTjFjbkpsYm5RZ2NHOXpaU0J2WmlCMGFHbHpJR2gxYldGdWIybGtJR0Z6SUdFZ2UwQnNhVzVySUZaU1RWQnZjMlY5TGx4dUlDQWdLbHh1SUNBZ0tpQkZZV05vSUhSeVlXNXpabTl5YlNCcGN5QmhJR3h2WTJGc0lIUnlZVzV6Wm05eWJTQnlaV3hoZEdsMlpTQm1jbTl0SUhKbGMzUWdjRzl6WlNBb1ZDMXdiM05sS1M1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCblpYUlFiM05sS0NrNklGWlNUVkJ2YzJVZ2UxeHVJQ0FnSUdOdmJuTjBJSEJ2YzJVZ1BTQjdmU0JoY3lCV1VrMVFiM05sTzF4dVhHNGdJQ0FnVDJKcVpXTjBMbXRsZVhNb2RHaHBjeTVvZFcxaGJrSnZibVZ6S1M1bWIzSkZZV05vS0NoaWIyNWxUbUZ0WlZOMGNtbHVaeWtnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWW05dVpVNWhiV1VnUFNCaWIyNWxUbUZ0WlZOMGNtbHVaeUJoY3lCV1VrMUlkVzFoYmtKdmJtVk9ZVzFsTzF4dUlDQWdJQ0FnWTI5dWMzUWdibTlrWlNBOUlIUm9hWE11WjJWMFFtOXVaVTV2WkdVb1ltOXVaVTVoYldVcE8xeHVYRzRnSUNBZ0lDQXZMeUJKWjI1dmNtVWdkMmhsYmlCMGFHVnlaU0JoY21VZ2JtOGdZbTl1WlNCdmJpQjBhR1VnVmxKTlNIVnRZVzV2YVdSY2JpQWdJQ0FnSUdsbUlDZ2hibTlrWlNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDOHZJRlJoYTJVZ1lTQmthV1ptSUdaeWIyMGdjbVZ6ZEZCdmMyVmNiaUFnSUNBZ0lGOTJNMEV1YzJWMEtEQXNJREFzSURBcE8xeHVJQ0FnSUNBZ1gzRjFZWFJCTG1sa1pXNTBhWFI1S0NrN1hHNWNiaUFnSUNBZ0lHTnZibk4wSUhKbGMzUlRkR0YwWlNBOUlIUm9hWE11Y21WemRGQnZjMlZiWW05dVpVNWhiV1ZkTzF4dUlDQWdJQ0FnYVdZZ0tISmxjM1JUZEdGMFpUOHVjRzl6YVhScGIyNHBJSHRjYmlBZ0lDQWdJQ0FnWDNZelFTNW1jbTl0UVhKeVlYa29jbVZ6ZEZOMFlYUmxMbkJ2YzJsMGFXOXVLUzV1WldkaGRHVW9LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtSUNoeVpYTjBVM1JoZEdVL0xuSnZkR0YwYVc5dUtTQjdYRzRnSUNBZ0lDQWdJSEYxWVhSSmJuWmxjblJEYjIxd1lYUW9YM0YxWVhSQkxtWnliMjFCY25KaGVTaHlaWE4wVTNSaGRHVXVjbTkwWVhScGIyNHBLVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnTHk4Z1IyVjBJSFJvWlNCd2IzTnBkR2x2YmlBdklISnZkR0YwYVc5dUlHWnliMjBnZEdobElHNXZaR1ZjYmlBZ0lDQWdJRjkyTTBFdVlXUmtLRzV2WkdVdWNHOXphWFJwYjI0cE8xeHVJQ0FnSUNBZ1gzRjFZWFJCTG5CeVpXMTFiSFJwY0d4NUtHNXZaR1V1Y1hWaGRHVnlibWx2YmlrN1hHNWNiaUFnSUNBZ0lDOHZJRU52Ym5abGNuUWdkRzhnY21GM0lHRnljbUY1YzF4dUlDQWdJQ0FnY0c5elpWdGliMjVsVG1GdFpWMGdQU0I3WEc0Z0lDQWdJQ0FnSUhCdmMybDBhVzl1T2lCZmRqTkJMblJ2UVhKeVlYa29LU0JoY3lCYmJuVnRZbVZ5TENCdWRXMWlaWElzSUc1MWJXSmxjbDBzWEc0Z0lDQWdJQ0FnSUhKdmRHRjBhVzl1T2lCZmNYVmhkRUV1ZEc5QmNuSmhlU2dwSUdGeklGdHVkVzFpWlhJc0lHNTFiV0psY2l3Z2JuVnRZbVZ5TENCdWRXMWlaWEpkTEZ4dUlDQWdJQ0FnZlR0Y2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ3YjNObE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRXhsZENCMGFHVWdhSFZ0WVc1dmFXUWdaRzhnWVNCemNHVmphV1pwWldRZ2NHOXpaUzVjYmlBZ0lDcGNiaUFnSUNvZ1JXRmphQ0IwY21GdWMyWnZjbTBnYUdGMlpTQjBieUJpWlNCaElHeHZZMkZzSUhSeVlXNXpabTl5YlNCeVpXeGhkR2wyWlNCbWNtOXRJSEpsYzNRZ2NHOXpaU0FvVkMxd2IzTmxLUzVjYmlBZ0lDb2dXVzkxSUdOaGJpQndZWE56SUhkb1lYUWdlVzkxSUdkdmRDQm1jbTl0SUh0QWJHbHVheUJuWlhSUWIzTmxmUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUhCdmMyVlBZbXBsWTNRZ1FTQmJXMVpTVFZCdmMyVmRYU0IwYUdGMElISmxjSEpsYzJWdWRITWdZU0J6YVc1bmJHVWdjRzl6WlZ4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhObGRGQnZjMlVvY0c5elpVOWlhbVZqZERvZ1ZsSk5VRzl6WlNrNklIWnZhV1FnZTF4dUlDQWdJRTlpYW1WamRDNWxiblJ5YVdWektIQnZjMlZQWW1wbFkzUXBMbVp2Y2tWaFkyZ29LRnRpYjI1bFRtRnRaVk4wY21sdVp5d2djM1JoZEdWZEtTQTlQaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQmliMjVsVG1GdFpTQTlJR0p2Ym1WT1lXMWxVM1J5YVc1bklHRnpJRlpTVFVoMWJXRnVRbTl1WlU1aGJXVTdYRzRnSUNBZ0lDQmpiMjV6ZENCdWIyUmxJRDBnZEdocGN5NW5aWFJDYjI1bFRtOWtaU2hpYjI1bFRtRnRaU2s3WEc1Y2JpQWdJQ0FnSUM4dklFbG5ibTl5WlNCM2FHVnVJSFJvWlhKbElHRnlaU0J1YnlCaWIyNWxJSFJvWVhRZ2FYTWdaR1ZtYVc1bFpDQnBiaUIwYUdVZ2NHOXpaU0J2YmlCMGFHVWdWbEpOU0hWdFlXNXZhV1JjYmlBZ0lDQWdJR2xtSUNnaGJtOWtaU2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJSEpsYzNSVGRHRjBaU0E5SUhSb2FYTXVjbVZ6ZEZCdmMyVmJZbTl1WlU1aGJXVmRPMXh1SUNBZ0lDQWdhV1lnS0NGeVpYTjBVM1JoZEdVcElIdGNiaUFnSUNBZ0lDQWdMeThnU1hRbmN5QjJaWEo1SUhWdWJHbHJaV3g1TGlCUWIzTnphV0pzZVNCaElHSjFaMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQzh2SUVGd2NHeDVJSFJvWlNCemRHRjBaU0IwYnlCMGFHVWdZV04wZFdGc0lHSnZibVZjYmlBZ0lDQWdJR2xtSUNoemRHRjBaVDh1Y0c5emFYUnBiMjRwSUh0Y2JpQWdJQ0FnSUNBZ2JtOWtaUzV3YjNOcGRHbHZiaTVtY205dFFYSnlZWGtvYzNSaGRHVXVjRzl6YVhScGIyNHBPMXh1WEc0Z0lDQWdJQ0FnSUdsbUlDaHlaWE4wVTNSaGRHVXVjRzl6YVhScGIyNHBJSHRjYmlBZ0lDQWdJQ0FnSUNCdWIyUmxMbkJ2YzJsMGFXOXVMbUZrWkNoZmRqTkJMbVp5YjIxQmNuSmhlU2h5WlhOMFUzUmhkR1V1Y0c5emFYUnBiMjRwS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQnBaaUFvYzNSaGRHVS9Mbkp2ZEdGMGFXOXVLU0I3WEc0Z0lDQWdJQ0FnSUc1dlpHVXVjWFZoZEdWeWJtbHZiaTVtY205dFFYSnlZWGtvYzNSaGRHVXVjbTkwWVhScGIyNHBPMXh1WEc0Z0lDQWdJQ0FnSUdsbUlDaHlaWE4wVTNSaGRHVXVjbTkwWVhScGIyNHBJSHRjYmlBZ0lDQWdJQ0FnSUNCdWIyUmxMbkYxWVhSbGNtNXBiMjR1YlhWc2RHbHdiSGtvWDNGMVlYUkJMbVp5YjIxQmNuSmhlU2h5WlhOMFUzUmhkR1V1Y205MFlYUnBiMjRwS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsYzJWMElIUm9aU0JvZFcxaGJtOXBaQ0IwYnlCcGRITWdjbVZ6ZENCd2IzTmxMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSEpsYzJWMFVHOXpaU2dwT2lCMmIybGtJSHRjYmlBZ0lDQlBZbXBsWTNRdVpXNTBjbWxsY3loMGFHbHpMbkpsYzNSUWIzTmxLUzVtYjNKRllXTm9LQ2hiWW05dVpVNWhiV1VzSUhKbGMzUmRLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0J1YjJSbElEMGdkR2hwY3k1blpYUkNiMjVsVG05a1pTaGliMjVsVG1GdFpTQmhjeUJXVWsxSWRXMWhia0p2Ym1WT1lXMWxLVHRjYmx4dUlDQWdJQ0FnYVdZZ0tDRnViMlJsS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2FXWWdLSEpsYzNRL0xuQnZjMmwwYVc5dUtTQjdYRzRnSUNBZ0lDQWdJRzV2WkdVdWNHOXphWFJwYjI0dVpuSnZiVUZ5Y21GNUtISmxjM1F1Y0c5emFYUnBiMjRwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9jbVZ6ZEQ4dWNtOTBZWFJwYjI0cElIdGNiaUFnSUNBZ0lDQWdibTlrWlM1eGRXRjBaWEp1YVc5dUxtWnliMjFCY25KaGVTaHlaWE4wTG5KdmRHRjBhVzl1S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5S1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY200Z1lTQmliMjVsSUdKdmRXNWtJSFJ2SUdFZ2MzQmxZMmxtYVdWa0lIdEFiR2x1YXlCV1VrMUlkVzFoYmtKdmJtVk9ZVzFsZlN3Z1lYTWdZU0I3UUd4cGJtc2dWbEpOU0hWdFlXNUNiMjVsZlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElHNWhiV1VnVG1GdFpTQnZaaUIwYUdVZ1ltOXVaU0I1YjNVZ2QyRnVkRnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZEVKdmJtVW9ibUZ0WlRvZ1ZsSk5TSFZ0WVc1Q2IyNWxUbUZ0WlNrNklGWlNUVWgxYldGdVFtOXVaU0I4SUhWdVpHVm1hVzVsWkNCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWFIVnRZVzVDYjI1bGMxdHVZVzFsWFNBL1B5QjFibVJsWm1sdVpXUTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVJR0VnWW05dVpTQmliM1Z1WkNCMGJ5QmhJSE53WldOcFptbGxaQ0I3UUd4cGJtc2dWbEpOU0hWdFlXNUNiMjVsVG1GdFpYMHNJR0Z6SUdFZ1lGUklVa1ZGTGs5aWFtVmpkRE5FWUM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElHNWhiV1VnVG1GdFpTQnZaaUIwYUdVZ1ltOXVaU0I1YjNVZ2QyRnVkRnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZEVKdmJtVk9iMlJsS0c1aGJXVTZJRlpTVFVoMWJXRnVRbTl1WlU1aGJXVXBPaUJVU0ZKRlJTNVBZbXBsWTNRelJDQjhJRzUxYkd3Z2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtaDFiV0Z1UW05dVpYTmJibUZ0WlYwL0xtNXZaR1VnUHo4Z2JuVnNiRHRjYmlBZ2ZWeHVmVnh1SWl3aWFXMXdiM0owSUNvZ1lYTWdWRWhTUlVVZ1puSnZiU0FuZEdoeVpXVW5PMXh1YVcxd2IzSjBJSHNnVmxKTlNIVnRZVzVDYjI1bFRtRnRaU3dnVmxKTlNIVnRZVzVDYjI1bGN5QjlJR1p5YjIwZ0p5NG5PMXh1YVcxd2IzSjBJSHNnVmxKTlNIVnRZVzVDYjI1bFRHbHpkQ0I5SUdaeWIyMGdKeTR2VmxKTlNIVnRZVzVDYjI1bFRHbHpkQ2M3WEc1cGJYQnZjblFnZXlCV1VrMUlkVzFoYmtKdmJtVlFZWEpsYm5STllYQWdmU0JtY205dElDY3VMMVpTVFVoMWJXRnVRbTl1WlZCaGNtVnVkRTFoY0NjN1hHNXBiWEJ2Y25RZ2V5QldVazFTYVdjZ2ZTQm1jbTl0SUNjdUwxWlNUVkpwWnljN1hHNWNibU52Ym5OMElGOTJNMEVnUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncE8xeHVZMjl1YzNRZ1gzRjFZWFJCSUQwZ2JtVjNJRlJJVWtWRkxsRjFZWFJsY201cGIyNG9LVHRjYm1OdmJuTjBJRjlpYjI1bFYyOXliR1JRYjNNZ1BTQnVaWGNnVkVoU1JVVXVWbVZqZEc5eU15Z3BPMXh1WEc0dktpcGNiaUFxSUVFZ1kyeGhjM01nY21Wd2NtVnpaVzUwY3lCMGFHVWdibTl5YldGc2FYcGxaQ0JTYVdjZ2IyWWdZU0JXVWswdVhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5QldVazFJZFcxaGJtOXBaRkpwWnlCbGVIUmxibVJ6SUZaU1RWSnBaeUI3WEc0Z0lIQnliM1JsWTNSbFpDQnpkR0YwYVdNZ1gzTmxkSFZ3VkhKaGJuTm1iM0p0Y3lodGIyUmxiRkpwWnpvZ1ZsSk5VbWxuS1RvZ2UxeHVJQ0FnSUhKcFowSnZibVZ6T2lCV1VrMUlkVzFoYmtKdmJtVnpPMXh1SUNBZ0lISnZiM1E2SUZSSVVrVkZMazlpYW1WamRETkVPMXh1SUNBZ0lIQmhjbVZ1ZEZkdmNteGtVbTkwWVhScGIyNXpPaUI3SUZ0aWIyNWxUbUZ0WlNCcGJpQldVazFJZFcxaGJrSnZibVZPWVcxbFhUODZJRlJJVWtWRkxsRjFZWFJsY201cGIyNGdmVHRjYmlBZ0lDQmliMjVsVW05MFlYUnBiMjV6T2lCN0lGdGliMjVsVG1GdFpTQnBiaUJXVWsxSWRXMWhia0p2Ym1WT1lXMWxYVDg2SUZSSVVrVkZMbEYxWVhSbGNtNXBiMjRnZlR0Y2JpQWdmU0I3WEc0Z0lDQWdZMjl1YzNRZ2NtOXZkQ0E5SUc1bGR5QlVTRkpGUlM1UFltcGxZM1F6UkNncE8xeHVJQ0FnSUhKdmIzUXVibUZ0WlNBOUlDZFdVazFJZFcxaGJtOXBaRkpwWnljN1hHNWNiaUFnSUNBdkx5QnpkRzl5WlNCaWIyNWxWMjl5YkdSUWIzTnBkR2x2Ym5NZ1lXNWtJR0p2Ym1WWGIzSnNaRkp2ZEdGMGFXOXVjMXh1SUNBZ0lHTnZibk4wSUdKdmJtVlhiM0pzWkZCdmMybDBhVzl1Y3pvZ2V5QmJZbTl1WlU1aGJXVWdhVzRnVmxKTlNIVnRZVzVDYjI1bFRtRnRaVjAvT2lCVVNGSkZSUzVXWldOMGIzSXpJSDBnUFNCN2ZUdGNiaUFnSUNCamIyNXpkQ0JpYjI1bFYyOXliR1JTYjNSaGRHbHZibk02SUhzZ1cySnZibVZPWVcxbElHbHVJRlpTVFVoMWJXRnVRbTl1WlU1aGJXVmRQem9nVkVoU1JVVXVVWFZoZEdWeWJtbHZiaUI5SUQwZ2UzMDdYRzRnSUNBZ1kyOXVjM1FnWW05dVpWSnZkR0YwYVc5dWN6b2dleUJiWW05dVpVNWhiV1VnYVc0Z1ZsSk5TSFZ0WVc1Q2IyNWxUbUZ0WlYwL09pQlVTRkpGUlM1UmRXRjBaWEp1YVc5dUlIMGdQU0I3ZlR0Y2JseHVJQ0FnSUZaU1RVaDFiV0Z1UW05dVpVeHBjM1F1Wm05eVJXRmphQ2dvWW05dVpVNWhiV1VwSUQwK0lIdGNiaUFnSUNBZ0lHTnZibk4wSUdKdmJtVk9iMlJsSUQwZ2JXOWtaV3hTYVdjdVoyVjBRbTl1WlU1dlpHVW9ZbTl1WlU1aGJXVXBPMXh1WEc0Z0lDQWdJQ0JwWmlBb1ltOXVaVTV2WkdVcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1ltOXVaVmR2Y214a1VHOXphWFJwYjI0Z1BTQnVaWGNnVkVoU1JVVXVWbVZqZEc5eU15Z3BPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmliMjVsVjI5eWJHUlNiM1JoZEdsdmJpQTlJRzVsZHlCVVNGSkZSUzVSZFdGMFpYSnVhVzl1S0NrN1hHNWNiaUFnSUNBZ0lDQWdZbTl1WlU1dlpHVXVkWEJrWVhSbFYyOXliR1JOWVhSeWFYZ29kSEoxWlN3Z1ptRnNjMlVwTzF4dUlDQWdJQ0FnSUNCaWIyNWxUbTlrWlM1dFlYUnlhWGhYYjNKc1pDNWtaV052YlhCdmMyVW9ZbTl1WlZkdmNteGtVRzl6YVhScGIyNHNJR0p2Ym1WWGIzSnNaRkp2ZEdGMGFXOXVMQ0JmZGpOQktUdGNibHh1SUNBZ0lDQWdJQ0JpYjI1bFYyOXliR1JRYjNOcGRHbHZibk5iWW05dVpVNWhiV1ZkSUQwZ1ltOXVaVmR2Y214a1VHOXphWFJwYjI0N1hHNGdJQ0FnSUNBZ0lHSnZibVZYYjNKc1pGSnZkR0YwYVc5dWMxdGliMjVsVG1GdFpWMGdQU0JpYjI1bFYyOXliR1JTYjNSaGRHbHZianRjYmlBZ0lDQWdJQ0FnWW05dVpWSnZkR0YwYVc5dWMxdGliMjVsVG1GdFpWMGdQU0JpYjI1bFRtOWtaUzV4ZFdGMFpYSnVhVzl1TG1Oc2IyNWxLQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0F2THlCaWRXbHNaQ0J5YVdjZ2FHbGxjbUZ5WTJoNUlDc2djM1J2Y21VZ2NHRnlaVzUwVjI5eWJHUlNiM1JoZEdsdmJuTmNiaUFnSUNCamIyNXpkQ0J3WVhKbGJuUlhiM0pzWkZKdmRHRjBhVzl1Y3pvZ2V5QmJZbTl1WlU1aGJXVWdhVzRnVmxKTlNIVnRZVzVDYjI1bFRtRnRaVjAvT2lCVVNGSkZSUzVSZFdGMFpYSnVhVzl1SUgwZ1BTQjdmVHRjYmx4dUlDQWdJR052Ym5OMElISnBaMEp2Ym1Wek9pQlFZWEowYVdGc1BGWlNUVWgxYldGdVFtOXVaWE0rSUQwZ2UzMDdYRzRnSUNBZ1ZsSk5TSFZ0WVc1Q2IyNWxUR2x6ZEM1bWIzSkZZV05vS0NoaWIyNWxUbUZ0WlNrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ1ltOXVaVTV2WkdVZ1BTQnRiMlJsYkZKcFp5NW5aWFJDYjI1bFRtOWtaU2hpYjI1bFRtRnRaU2s3WEc1Y2JpQWdJQ0FnSUdsbUlDaGliMjVsVG05a1pTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmliMjVsVjI5eWJHUlFiM05wZEdsdmJpQTlJR0p2Ym1WWGIzSnNaRkJ2YzJsMGFXOXVjMXRpYjI1bFRtRnRaVjBnWVhNZ1ZFaFNSVVV1Vm1WamRHOXlNenRjYmx4dUlDQWdJQ0FnSUNBdkx5QnpaV1VnZEdobElHNWxZWEpsYzNRZ2NHRnlaVzUwSUhCdmMybDBhVzl1WEc0Z0lDQWdJQ0FnSUd4bGRDQmpkWEp5Wlc1MFFtOXVaVTVoYldVNklGWlNUVWgxYldGdVFtOXVaVTVoYldVZ2ZDQnVkV3hzSUQwZ1ltOXVaVTVoYldVN1hHNGdJQ0FnSUNBZ0lHeGxkQ0J3WVhKbGJuUlhiM0pzWkZCdmMybDBhVzl1T2lCVVNGSkZSUzVXWldOMGIzSXpJSHdnZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnSUNCc1pYUWdjR0Z5Wlc1MFYyOXliR1JTYjNSaGRHbHZiam9nVkVoU1JVVXVVWFZoZEdWeWJtbHZiaUI4SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUNBZ2QyaHBiR1VnS0hCaGNtVnVkRmR2Y214a1VHOXphWFJwYjI0Z1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR04xY25KbGJuUkNiMjVsVG1GdFpTQTlJRlpTVFVoMWJXRnVRbTl1WlZCaGNtVnVkRTFoY0Z0amRYSnlaVzUwUW05dVpVNWhiV1ZkTzF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2hqZFhKeVpXNTBRbTl1WlU1aGJXVWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJSEJoY21WdWRGZHZjbXhrVUc5emFYUnBiMjRnUFNCaWIyNWxWMjl5YkdSUWIzTnBkR2x2Ym5OYlkzVnljbVZ1ZEVKdmJtVk9ZVzFsWFR0Y2JpQWdJQ0FnSUNBZ0lDQndZWEpsYm5SWGIzSnNaRkp2ZEdGMGFXOXVJRDBnWW05dVpWZHZjbXhrVW05MFlYUnBiMjV6VzJOMWNuSmxiblJDYjI1bFRtRnRaVjA3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQXZMeUJoWkdRZ2RHOGdhR2xsY21GeVkyaDVYRzRnSUNBZ0lDQWdJR052Ym5OMElISnBaMEp2Ym1WT2IyUmxJRDBnYm1WM0lGUklVa1ZGTGs5aWFtVmpkRE5FS0NrN1hHNGdJQ0FnSUNBZ0lISnBaMEp2Ym1WT2IyUmxMbTVoYldVZ1BTQW5UbTl5YldGc2FYcGxaRjhuSUNzZ1ltOXVaVTV2WkdVdWJtRnRaVHRjYmx4dUlDQWdJQ0FnSUNCamIyNXpkQ0J3WVhKbGJuUlNhV2RDYjI1bFRtOWtaU0E5SUNoamRYSnlaVzUwUW05dVpVNWhiV1VnUHlCeWFXZENiMjVsYzF0amRYSnlaVzUwUW05dVpVNWhiV1ZkUHk1dWIyUmxJRG9nY205dmRDa2dZWE1nVkVoU1JVVXVUMkpxWldOME0wUTdYRzVjYmlBZ0lDQWdJQ0FnY0dGeVpXNTBVbWxuUW05dVpVNXZaR1V1WVdSa0tISnBaMEp2Ym1WT2IyUmxLVHRjYmlBZ0lDQWdJQ0FnY21sblFtOXVaVTV2WkdVdWNHOXphWFJwYjI0dVkyOXdlU2hpYjI1bFYyOXliR1JRYjNOcGRHbHZiaWs3WEc0Z0lDQWdJQ0FnSUdsbUlDaHdZWEpsYm5SWGIzSnNaRkJ2YzJsMGFXOXVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtbG5RbTl1WlU1dlpHVXVjRzl6YVhScGIyNHVjM1ZpS0hCaGNtVnVkRmR2Y214a1VHOXphWFJwYjI0cE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnY21sblFtOXVaWE5iWW05dVpVNWhiV1ZkSUQwZ2V5QnViMlJsT2lCeWFXZENiMjVsVG05a1pTQjlPMXh1WEc0Z0lDQWdJQ0FnSUM4dklITjBiM0psSUhCaGNtVnVkRmR2Y214a1VtOTBZWFJwYjI1Y2JpQWdJQ0FnSUNBZ2NHRnlaVzUwVjI5eWJHUlNiM1JoZEdsdmJuTmJZbTl1WlU1aGJXVmRJRDBnY0dGeVpXNTBWMjl5YkdSU2IzUmhkR2x2YmlBL1B5QnVaWGNnVkVoU1JVVXVVWFZoZEdWeWJtbHZiaWdwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSHRjYmlBZ0lDQWdJSEpwWjBKdmJtVnpPaUJ5YVdkQ2IyNWxjeUJoY3lCV1VrMUlkVzFoYmtKdmJtVnpMRnh1SUNBZ0lDQWdjbTl2ZEN4Y2JpQWdJQ0FnSUhCaGNtVnVkRmR2Y214a1VtOTBZWFJwYjI1ekxGeHVJQ0FnSUNBZ1ltOXVaVkp2ZEdGMGFXOXVjeXhjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJSEpsWVdSdmJteDVJRzl5YVdkcGJtRnNPaUJXVWsxU2FXYzdYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0J5YjI5ME9pQlVTRkpGUlM1UFltcGxZM1F6UkR0Y2JpQWdjSEp2ZEdWamRHVmtJSEpsWVdSdmJteDVJRjl3WVhKbGJuUlhiM0pzWkZKdmRHRjBhVzl1Y3pvZ2V5QmJZbTl1WlU1aGJXVWdhVzRnVmxKTlNIVnRZVzVDYjI1bFRtRnRaVjAvT2lCVVNGSkZSUzVSZFdGMFpYSnVhVzl1SUgwN1hHNGdJSEJ5YjNSbFkzUmxaQ0J5WldGa2IyNXNlU0JmWW05dVpWSnZkR0YwYVc5dWN6b2dleUJiWW05dVpVNWhiV1VnYVc0Z1ZsSk5TSFZ0WVc1Q2IyNWxUbUZ0WlYwL09pQlVTRkpGUlM1UmRXRjBaWEp1YVc5dUlIMDdYRzVjYmlBZ2NIVmliR2xqSUdOdmJuTjBjblZqZEc5eUtHaDFiV0Z1YjJsa09pQldVazFTYVdjcElIdGNiaUFnSUNCamIyNXpkQ0I3SUhKcFowSnZibVZ6TENCeWIyOTBMQ0J3WVhKbGJuUlhiM0pzWkZKdmRHRjBhVzl1Y3l3Z1ltOXVaVkp2ZEdGMGFXOXVjeUI5SUQwZ1ZsSk5TSFZ0WVc1dmFXUlNhV2N1WDNObGRIVndWSEpoYm5ObWIzSnRjeWhvZFcxaGJtOXBaQ2s3WEc1Y2JpQWdJQ0J6ZFhCbGNpaHlhV2RDYjI1bGN5azdYRzVjYmlBZ0lDQjBhR2x6TG05eWFXZHBibUZzSUQwZ2FIVnRZVzV2YVdRN1hHNGdJQ0FnZEdocGN5NXliMjkwSUQwZ2NtOXZkRHRjYmlBZ0lDQjBhR2x6TGw5d1lYSmxiblJYYjNKc1pGSnZkR0YwYVc5dWN5QTlJSEJoY21WdWRGZHZjbXhrVW05MFlYUnBiMjV6TzF4dUlDQWdJSFJvYVhNdVgySnZibVZTYjNSaGRHbHZibk1nUFNCaWIyNWxVbTkwWVhScGIyNXpPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWd1pHRjBaU0IwYUdseklHaDFiV0Z1YjJsa0lISnBaeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUIxY0dSaGRHVW9LVG9nZG05cFpDQjdYRzRnSUNBZ1ZsSk5TSFZ0WVc1Q2IyNWxUR2x6ZEM1bWIzSkZZV05vS0NoaWIyNWxUbUZ0WlNrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ1ltOXVaVTV2WkdVZ1BTQjBhR2x6TG05eWFXZHBibUZzTG1kbGRFSnZibVZPYjJSbEtHSnZibVZPWVcxbEtUdGNibHh1SUNBZ0lDQWdhV1lnS0dKdmJtVk9iMlJsSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY21sblFtOXVaVTV2WkdVZ1BTQjBhR2x6TG1kbGRFSnZibVZPYjJSbEtHSnZibVZPWVcxbEtTRTdYRzRnSUNBZ0lDQWdJR052Ym5OMElIQmhjbVZ1ZEZkdmNteGtVbTkwWVhScGIyNGdQU0IwYUdsekxsOXdZWEpsYm5SWGIzSnNaRkp2ZEdGMGFXOXVjMXRpYjI1bFRtRnRaVjBoTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JwYm5aUVlYSmxiblJYYjNKc1pGSnZkR0YwYVc5dUlEMGdYM0YxWVhSQkxtTnZjSGtvY0dGeVpXNTBWMjl5YkdSU2IzUmhkR2x2YmlrdWFXNTJaWEowS0NrN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdKdmJtVlNiM1JoZEdsdmJpQTlJSFJvYVhNdVgySnZibVZTYjNSaGRHbHZibk5iWW05dVpVNWhiV1ZkSVR0Y2JseHVJQ0FnSUNBZ0lDQmliMjVsVG05a1pTNXhkV0YwWlhKdWFXOXVYRzRnSUNBZ0lDQWdJQ0FnTG1OdmNIa29jbWxuUW05dVpVNXZaR1V1Y1hWaGRHVnlibWx2YmlsY2JpQWdJQ0FnSUNBZ0lDQXViWFZzZEdsd2JIa29jR0Z5Wlc1MFYyOXliR1JTYjNSaGRHbHZiaWxjYmlBZ0lDQWdJQ0FnSUNBdWNISmxiWFZzZEdsd2JIa29hVzUyVUdGeVpXNTBWMjl5YkdSU2IzUmhkR2x2YmlsY2JpQWdJQ0FnSUNBZ0lDQXViWFZzZEdsd2JIa29ZbTl1WlZKdmRHRjBhVzl1S1R0Y2JseHVJQ0FnSUNBZ0lDQXZMeUJOYjNabElIUm9aU0J0WVhOeklHTmxiblJsY2lCdlppQjBhR1VnVmxKTlhHNGdJQ0FnSUNBZ0lHbG1JQ2hpYjI1bFRtRnRaU0E5UFQwZ0oyaHBjSE1uS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1ltOXVaVmR2Y214a1VHOXphWFJwYjI0Z1BTQnlhV2RDYjI1bFRtOWtaUzVuWlhSWGIzSnNaRkJ2YzJsMGFXOXVLRjlpYjI1bFYyOXliR1JRYjNNcE8xeHVJQ0FnSUNBZ0lDQWdJR0p2Ym1WT2IyUmxMbkJoY21WdWRDRXVkWEJrWVhSbFYyOXliR1JOWVhSeWFYZ29kSEoxWlN3Z1ptRnNjMlVwTzF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhCaGNtVnVkRmR2Y214a1RXRjBjbWw0SUQwZ1ltOXVaVTV2WkdVdWNHRnlaVzUwSVM1dFlYUnlhWGhYYjNKc1pEdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnNiMk5oYkZCdmMybDBhVzl1SUQwZ1ltOXVaVmR2Y214a1VHOXphWFJwYjI0dVlYQndiSGxOWVhSeWFYZzBLSEJoY21WdWRGZHZjbXhrVFdGMGNtbDRMbWx1ZG1WeWRDZ3BLVHRjYmlBZ0lDQWdJQ0FnSUNCaWIyNWxUbTlrWlM1d2IzTnBkR2x2Ymk1amIzQjVLR3h2WTJGc1VHOXphWFJwYjI0cE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzRnSUgxY2JuMWNiaUlzSW1sdGNHOXlkQ0FxSUdGeklGUklVa1ZGSUdaeWIyMGdKM1JvY21WbEp6dGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1ZsSk5TSFZ0WVc1Q2IyNWxJSDBnWm5KdmJTQW5MaTlXVWsxSWRXMWhia0p2Ym1Vbk8xeHVhVzF3YjNKMElIUjVjR1VnZXlCV1VrMUlkVzFoYmtKdmJtVnpJSDBnWm5KdmJTQW5MaTlXVWsxSWRXMWhia0p2Ym1Wekp6dGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1ZsSk5TSFZ0WVc1Q2IyNWxUbUZ0WlNCOUlHWnliMjBnSnk0dlZsSk5TSFZ0WVc1Q2IyNWxUbUZ0WlNjN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3SUZaU1RWQnZjMlVnZlNCbWNtOXRJQ2N1TDFaU1RWQnZjMlVuTzF4dWFXMXdiM0owSUhzZ1ZsSk5VbWxuSUgwZ1puSnZiU0FuTGk5V1VrMVNhV2NuTzF4dWFXMXdiM0owSUhzZ1ZsSk5TSFZ0WVc1dmFXUlNhV2NnZlNCbWNtOXRJQ2N1TDFaU1RVaDFiV0Z1YjJsa1VtbG5KenRjYmx4dUx5b3FYRzRnS2lCQklHTnNZWE56SUhKbGNISmxjMlZ1ZEhNZ1lTQm9kVzFoYm05cFpDQnZaaUJoSUZaU1RTNWNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRlpTVFVoMWJXRnViMmxrSUh0Y2JpQWdMeW9xWEc0Z0lDQXFJRmRvWlhSb1pYSWdhWFFnWTI5d2FXVnpJSEJ2YzJVZ1puSnZiU0J1YjNKdFlXeHBlbVZrU0hWdFlXNUNiMjVsY3lCMGJ5QnlZWGRJZFcxaGJrSnZibVZ6SUc5dUlIdEFiR2x1YXlCMWNHUmhkR1Y5TGx4dUlDQWdLaUJnZEhKMVpXQWdZbmtnWkdWbVlYVnNkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FHUmxabUYxYkhRZ2RISjFaVnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0YxZEc5VmNHUmhkR1ZJZFcxaGJrSnZibVZ6T2lCaWIyOXNaV0Z1TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJCSUhKaGR5QnlhV2NnYjJZZ2RHaGxJRlpTVFM1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1gzSmhkMGgxYldGdVFtOXVaWE02SUZaU1RWSnBaenNnTHk4Z1ZFOUVUem9nVW1WdVlXMWxYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFRWdibTl5YldGc2FYcGxaQ0J5YVdjZ2IyWWdkR2hsSUZaU1RTNWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdYMjV2Y20xaGJHbDZaV1JJZFcxaGJrSnZibVZ6T2lCV1VrMUlkVzFoYm05cFpGSnBaenNnTHk4Z1ZFOUVUem9nVW1WdVlXMWxYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWEJ5WldOaGRHVmtJRVJsY0hKbFkyRjBaV1F1SUZWelpTQmxhWFJvWlhJZ2UwQnNhVzVySUhKaGQxSmxjM1JRYjNObGZTQnZjaUI3UUd4cGJtc2dibTl5YldGc2FYcGxaRkpsYzNSUWIzTmxmU0JwYm5OMFpXRmtMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZENCeVpYTjBVRzl6WlNncE9pQldVazFRYjNObElIdGNiaUFnSUNCamIyNXpiMnhsTG5kaGNtNG9KMVpTVFVoMWJXRnViMmxrT2lCeVpYTjBVRzl6WlNCcGN5QmtaWEJ5WldOaGRHVmtMaUJWYzJVZ1pXbDBhR1Z5SUhKaGQxSmxjM1JRYjNObElHOXlJRzV2Y20xaGJHbDZaV1JTWlhOMFVHOXpaU0JwYm5OMFpXRmtMaWNwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWNtRjNVbVZ6ZEZCdmMyVTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUVNCN1FHeHBibXNnVmxKTlVHOXpaWDBnYjJZZ2FYUnpJSEpoZHlCb2RXMWhiaUJpYjI1bGN5QjBhR0YwSUdseklHbDBjeUJrWldaaGRXeDBJSE4wWVhSbExseHVJQ0FnS2lCT2IzUmxJSFJvWVhRZ2FYUW5jeUJ1YjNRZ1kyOXRjR0YwYVdKc1pTQjNhWFJvSUh0QWJHbHVheUJ6WlhSU1lYZFFiM05sZlNCaGJtUWdlMEJzYVc1cklHZGxkRkpoZDFCdmMyVjlMQ0J6YVc1alpTQnBkQ0JqYjI1MFlXbHVjeUJ1YjI0dGNtVnNZWFJwZG1VZ2RtRnNkV1Z6SUc5bUlHVmhZMmdnYkc5allXd2dkSEpoYm5ObWIzSnRjeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJuWlhRZ2NtRjNVbVZ6ZEZCdmMyVW9LVG9nVmxKTlVHOXpaU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDNKaGQwaDFiV0Z1UW05dVpYTXVjbVZ6ZEZCdmMyVTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUVNCN1FHeHBibXNnVmxKTlVHOXpaWDBnYjJZZ2FYUnpJRzV2Y20xaGJHbDZaV1FnYUhWdFlXNGdZbTl1WlhNZ2RHaGhkQ0JwY3lCcGRITWdaR1ZtWVhWc2RDQnpkR0YwWlM1Y2JpQWdJQ29nVG05MFpTQjBhR0YwSUdsMEozTWdibTkwSUdOdmJYQmhkR2xpYkdVZ2QybDBhQ0I3UUd4cGJtc2djMlYwVG05eWJXRnNhWHBsWkZCdmMyVjlJR0Z1WkNCN1FHeHBibXNnWjJWMFRtOXliV0ZzYVhwbFpGQnZjMlY5TENCemFXNWpaU0JwZENCamIyNTBZV2x1Y3lCdWIyNHRjbVZzWVhScGRtVWdkbUZzZFdWeklHOW1JR1ZoWTJnZ2JHOWpZV3dnZEhKaGJuTm1iM0p0Y3k1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCblpYUWdibTl5YldGc2FYcGxaRkpsYzNSUWIzTmxLQ2s2SUZaU1RWQnZjMlVnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5dWIzSnRZV3hwZW1Wa1NIVnRZVzVDYjI1bGN5NXlaWE4wVUc5elpUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJCSUcxaGNDQm1jbTl0SUh0QWJHbHVheUJXVWsxSWRXMWhia0p2Ym1WT1lXMWxmU0IwYnlCeVlYY2dlMEJzYVc1cklGWlNUVWgxYldGdVFtOXVaWDF6TGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdkbGRDQm9kVzFoYmtKdmJtVnpLQ2s2SUZaU1RVaDFiV0Z1UW05dVpYTWdlMXh1SUNBZ0lDOHZJR0Z1SUdGc2FXRnpJRzltSUdCeVlYZElkVzFoYmtKdmJtVnpZRnh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDl5WVhkSWRXMWhia0p2Ym1WekxtaDFiV0Z1UW05dVpYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUVNCdFlYQWdabkp2YlNCN1FHeHBibXNnVmxKTlNIVnRZVzVDYjI1bFRtRnRaWDBnZEc4Z2NtRjNJSHRBYkdsdWF5QldVazFJZFcxaGJrSnZibVY5Y3k1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCblpYUWdjbUYzU0hWdFlXNUNiMjVsY3lncE9pQldVazFJZFcxaGJrSnZibVZ6SUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmNtRjNTSFZ0WVc1Q2IyNWxjeTVvZFcxaGJrSnZibVZ6TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFRWdiV0Z3SUdaeWIyMGdlMEJzYVc1cklGWlNUVWgxYldGdVFtOXVaVTVoYldWOUlIUnZJRzV2Y20xaGJHbDZaV1FnZTBCc2FXNXJJRlpTVFVoMWJXRnVRbTl1WlgxekxseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkQ0J1YjNKdFlXeHBlbVZrU0hWdFlXNUNiMjVsY3lncE9pQldVazFJZFcxaGJrSnZibVZ6SUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmJtOXliV0ZzYVhwbFpFaDFiV0Z1UW05dVpYTXVhSFZ0WVc1Q2IyNWxjenRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdjbTl2ZENCdlppQnViM0p0WVd4cGVtVmtJSHRBYkdsdWF5QldVazFJZFcxaGJrSnZibVY5Y3k1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCblpYUWdibTl5YldGc2FYcGxaRWgxYldGdVFtOXVaWE5TYjI5MEtDazZJRlJJVWtWRkxrOWlhbVZqZERORUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZibTl5YldGc2FYcGxaRWgxYldGdVFtOXVaWE11Y205dmREdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJEY21WaGRHVWdZU0J1WlhjZ2UwQnNhVzVySUZaU1RVaDFiV0Z1YjJsa2ZTNWNiaUFnSUNvZ1FIQmhjbUZ0SUdoMWJXRnVRbTl1WlhNZ1FTQjdRR3hwYm1zZ1ZsSk5TSFZ0WVc1Q2IyNWxjMzBnWTI5dWRHRnBibk1nWVd4c0lIUm9aU0JpYjI1bGN5QnZaaUIwYUdVZ2JtVjNJR2gxYldGdWIybGtYRzRnSUNBcUlFQndZWEpoYlNCaGRYUnZWWEJrWVhSbFNIVnRZVzVDYjI1bGN5QlhhR1YwYUdWeUlHbDBJR052Y0dsbGN5QndiM05sSUdaeWIyMGdibTl5YldGc2FYcGxaRWgxYldGdVFtOXVaWE1nZEc4Z2NtRjNTSFZ0WVc1Q2IyNWxjeUJ2YmlCN1FHeHBibXNnZFhCa1lYUmxmUzRnWUhSeWRXVmdJR0o1SUdSbFptRjFiSFF1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2FIVnRZVzVDYjI1bGN6b2dWbEpOU0hWdFlXNUNiMjVsY3l3Z2IzQjBhVzl1Y3o4NklIc2dZWFYwYjFWd1pHRjBaVWgxYldGdVFtOXVaWE0vT2lCaWIyOXNaV0Z1SUgwcElIdGNiaUFnSUNCMGFHbHpMbUYxZEc5VmNHUmhkR1ZJZFcxaGJrSnZibVZ6SUQwZ2IzQjBhVzl1Y3o4dVlYVjBiMVZ3WkdGMFpVaDFiV0Z1UW05dVpYTWdQejhnZEhKMVpUdGNiaUFnSUNCMGFHbHpMbDl5WVhkSWRXMWhia0p2Ym1WeklEMGdibVYzSUZaU1RWSnBaeWhvZFcxaGJrSnZibVZ6S1R0Y2JpQWdJQ0IwYUdsekxsOXViM0p0WVd4cGVtVmtTSFZ0WVc1Q2IyNWxjeUE5SUc1bGR5QldVazFJZFcxaGJtOXBaRkpwWnloMGFHbHpMbDl5WVhkSWRXMWhia0p2Ym1WektUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJEYjNCNUlIUm9aU0JuYVhabGJpQjdRR3hwYm1zZ1ZsSk5TSFZ0WVc1dmFXUjlJR2x1ZEc4Z2RHaHBjeUJ2Ym1VdVhHNGdJQ0FxSUVCd1lYSmhiU0J6YjNWeVkyVWdWR2hsSUh0QWJHbHVheUJXVWsxSWRXMWhibTlwWkgwZ2VXOTFJSGRoYm5RZ2RHOGdZMjl3ZVZ4dUlDQWdLaUJBY21WMGRYSnVjeUIwYUdselhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1kyOXdlU2h6YjNWeVkyVTZJRlpTVFVoMWJXRnViMmxrS1RvZ2RHaHBjeUI3WEc0Z0lDQWdkR2hwY3k1aGRYUnZWWEJrWVhSbFNIVnRZVzVDYjI1bGN5QTlJSE52ZFhKalpTNWhkWFJ2VlhCa1lYUmxTSFZ0WVc1Q2IyNWxjenRjYmlBZ0lDQjBhR2x6TGw5eVlYZElkVzFoYmtKdmJtVnpJRDBnYm1WM0lGWlNUVkpwWnloemIzVnlZMlV1YUhWdFlXNUNiMjVsY3lrN1hHNGdJQ0FnZEdocGN5NWZibTl5YldGc2FYcGxaRWgxYldGdVFtOXVaWE1nUFNCdVpYY2dWbEpOU0hWdFlXNXZhV1JTYVdjb2RHaHBjeTVmY21GM1NIVnRZVzVDYjI1bGN5azdYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUdFZ1kyeHZibVVnYjJZZ2RHaHBjeUI3UUd4cGJtc2dWbEpOU0hWdFlXNXZhV1I5TGx4dUlDQWdLaUJBY21WMGRYSnVjeUJEYjNCcFpXUWdlMEJzYVc1cklGWlNUVWgxYldGdWIybGtmVnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR05zYjI1bEtDazZJRlpTVFVoMWJXRnViMmxrSUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZaU1RVaDFiV0Z1YjJsa0tIUm9hWE11YUhWdFlXNUNiMjVsY3l3Z2V5QmhkWFJ2VlhCa1lYUmxTSFZ0WVc1Q2IyNWxjem9nZEdocGN5NWhkWFJ2VlhCa1lYUmxTSFZ0WVc1Q2IyNWxjeUI5S1M1amIzQjVLSFJvYVhNcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhCeVpXTmhkR1ZrSUVSbGNISmxZMkYwWldRdUlGVnpaU0JsYVhSb1pYSWdlMEJzYVc1cklHZGxkRkpoZDBGaWMyOXNkWFJsVUc5elpYMGdiM0lnZTBCc2FXNXJJR2RsZEU1dmNtMWhiR2w2WldSQlluTnZiSFYwWlZCdmMyVjlJR2x1YzNSbFlXUXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdaMlYwUVdKemIyeDFkR1ZRYjNObEtDazZJRlpTVFZCdmMyVWdlMXh1SUNBZ0lHTnZibk52YkdVdWQyRnliaWhjYmlBZ0lDQWdJQ2RXVWsxSWRXMWhibTlwWkRvZ1oyVjBRV0p6YjJ4MWRHVlFiM05sS0NrZ2FYTWdaR1Z3Y21WallYUmxaQzRnVlhObElHVnBkR2hsY2lCblpYUlNZWGRCWW5OdmJIVjBaVkJ2YzJVb0tTQnZjaUJuWlhST2IzSnRZV3hwZW1Wa1FXSnpiMngxZEdWUWIzTmxLQ2tnYVc1emRHVmhaQzRuTEZ4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1blpYUlNZWGRCWW5OdmJIVjBaVkJ2YzJVb0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNGdkR2hsSUdOMWNuSmxiblFnWVdKemIyeDFkR1VnY0c5elpTQnZaaUIwYUdseklISmhkeUJvZFcxaGJpQmliMjVsY3lCaGN5QmhJSHRBYkdsdWF5QldVazFRYjNObGZTNWNiaUFnSUNvZ1RtOTBaU0IwYUdGMElIUm9aU0J2ZFhSd2RYUWdjbVZ6ZFd4MElIZHBiR3dnWTI5dWRHRnBiaUJwYm1sMGFXRnNJSE4wWVhSbElHOW1JSFJvWlNCV1VrMGdZVzVrSUc1dmRDQmpiMjF3WVhScFlteGxJR0psZEhkbFpXNGdaR2xtWm1WeVpXNTBJRzF2WkdWc2N5NWNiaUFnSUNvZ1dXOTFJRzFwWjJoMElIZGhiblFnZEc4Z2RYTmxJSHRBYkdsdWF5Qm5aWFJTWVhkUWIzTmxmU0JwYm5OMFpXRmtMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZEZKaGQwRmljMjlzZFhSbFVHOXpaU2dwT2lCV1VrMVFiM05sSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmNtRjNTSFZ0WVc1Q2IyNWxjeTVuWlhSQlluTnZiSFYwWlZCdmMyVW9LVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTRnZEdobElHTjFjbkpsYm5RZ1lXSnpiMngxZEdVZ2NHOXpaU0J2WmlCMGFHbHpJRzV2Y20xaGJHbDZaV1FnYUhWdFlXNGdZbTl1WlhNZ1lYTWdZU0I3UUd4cGJtc2dWbEpOVUc5elpYMHVYRzRnSUNBcUlFNXZkR1VnZEdoaGRDQjBhR1VnYjNWMGNIVjBJSEpsYzNWc2RDQjNhV3hzSUdOdmJuUmhhVzRnYVc1cGRHbGhiQ0J6ZEdGMFpTQnZaaUIwYUdVZ1ZsSk5JR0Z1WkNCdWIzUWdZMjl0Y0dGMGFXSnNaU0JpWlhSM1pXVnVJR1JwWm1abGNtVnVkQ0J0YjJSbGJITXVYRzRnSUNBcUlGbHZkU0J0YVdkb2RDQjNZVzUwSUhSdklIVnpaU0I3UUd4cGJtc2daMlYwVG05eWJXRnNhWHBsWkZCdmMyVjlJR2x1YzNSbFlXUXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdaMlYwVG05eWJXRnNhWHBsWkVGaWMyOXNkWFJsVUc5elpTZ3BPaUJXVWsxUWIzTmxJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmYm05eWJXRnNhWHBsWkVoMWJXRnVRbTl1WlhNdVoyVjBRV0p6YjJ4MWRHVlFiM05sS0NrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsY0hKbFkyRjBaV1FnUkdWd2NtVmpZWFJsWkM0Z1ZYTmxJR1ZwZEdobGNpQjdRR3hwYm1zZ1oyVjBVbUYzVUc5elpYMGdiM0lnZTBCc2FXNXJJR2RsZEU1dmNtMWhiR2w2WldSUWIzTmxmU0JwYm5OMFpXRmtMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZEZCdmMyVW9LVG9nVmxKTlVHOXpaU0I3WEc0Z0lDQWdZMjl1YzI5c1pTNTNZWEp1S0NkV1VrMUlkVzFoYm05cFpEb2daMlYwVUc5elpTZ3BJR2x6SUdSbGNISmxZMkYwWldRdUlGVnpaU0JsYVhSb1pYSWdaMlYwVW1GM1VHOXpaU2dwSUc5eUlHZGxkRTV2Y20xaGJHbDZaV1JRYjNObEtDa2dhVzV6ZEdWaFpDNG5LVHRjYmx4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1kbGRGSmhkMUJ2YzJVb0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNGdkR2hsSUdOMWNuSmxiblFnY0c5elpTQnZaaUJ5WVhjZ2FIVnRZVzRnWW05dVpYTWdZWE1nWVNCN1FHeHBibXNnVmxKTlVHOXpaWDB1WEc0Z0lDQXFYRzRnSUNBcUlFVmhZMmdnZEhKaGJuTm1iM0p0SUdseklHRWdiRzlqWVd3Z2RISmhibk5tYjNKdElISmxiR0YwYVhabElHWnliMjBnY21WemRDQndiM05sSUNoVUxYQnZjMlVwTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdkbGRGSmhkMUJ2YzJVb0tUb2dWbEpOVUc5elpTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM0poZDBoMWJXRnVRbTl1WlhNdVoyVjBVRzl6WlNncE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJpQjBhR1VnWTNWeWNtVnVkQ0J3YjNObElHOW1JRzV2Y20xaGJHbDZaV1FnYUhWdFlXNGdZbTl1WlhNZ1lYTWdZU0I3UUd4cGJtc2dWbEpOVUc5elpYMHVYRzRnSUNBcVhHNGdJQ0FxSUVWaFkyZ2dkSEpoYm5ObWIzSnRJR2x6SUdFZ2JHOWpZV3dnZEhKaGJuTm1iM0p0SUhKbGJHRjBhWFpsSUdaeWIyMGdjbVZ6ZENCd2IzTmxJQ2hVTFhCdmMyVXBMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZEU1dmNtMWhiR2w2WldSUWIzTmxLQ2s2SUZaU1RWQnZjMlVnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5dWIzSnRZV3hwZW1Wa1NIVnRZVzVDYjI1bGN5NW5aWFJRYjNObEtDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGNISmxZMkYwWldRZ1JHVndjbVZqWVhSbFpDNGdWWE5sSUdWcGRHaGxjaUI3UUd4cGJtc2djMlYwVW1GM1VHOXpaWDBnYjNJZ2UwQnNhVzVySUhObGRFNXZjbTFoYkdsNlpXUlFiM05sZlNCcGJuTjBaV0ZrTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhObGRGQnZjMlVvY0c5elpVOWlhbVZqZERvZ1ZsSk5VRzl6WlNrNklIWnZhV1FnZTF4dUlDQWdJR052Ym5OdmJHVXVkMkZ5YmlnblZsSk5TSFZ0WVc1dmFXUTZJSE5sZEZCdmMyVW9LU0JwY3lCa1pYQnlaV05oZEdWa0xpQlZjMlVnWldsMGFHVnlJSE5sZEZKaGQxQnZjMlVvS1NCdmNpQnpaWFJPYjNKdFlXeHBlbVZrVUc5elpTZ3BJR2x1YzNSbFlXUXVKeWs3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1elpYUlNZWGRRYjNObEtIQnZjMlZQWW1wbFkzUXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUV4bGRDQjBhR1VnY21GM0lHaDFiV0Z1SUdKdmJtVnpJR1J2SUdFZ2MzQmxZMmxtYVdWa0lIQnZjMlV1WEc0Z0lDQXFYRzRnSUNBcUlFVmhZMmdnZEhKaGJuTm1iM0p0SUdoaGRtVWdkRzhnWW1VZ1lTQnNiMk5oYkNCMGNtRnVjMlp2Y20wZ2NtVnNZWFJwZG1VZ1puSnZiU0J5WlhOMElIQnZjMlVnS0ZRdGNHOXpaU2t1WEc0Z0lDQXFJRmx2ZFNCallXNGdjR0Z6Y3lCM2FHRjBJSGx2ZFNCbmIzUWdabkp2YlNCN1FHeHBibXNnWjJWMFVtRjNVRzl6WlgwdVhHNGdJQ0FxWEc0Z0lDQXFJRWxtSUhsdmRTQmhjbVVnZFhOcGJtY2dlMEJzYVc1cklHRjFkRzlWY0dSaGRHVklkVzFoYmtKdmJtVnpmU3dnZVc5MUlHMXBaMmgwSUhkaGJuUWdkRzhnZFhObElIdEFiR2x1YXlCelpYUk9iM0p0WVd4cGVtVmtVRzl6WlgwZ2FXNXpkR1ZoWkM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIQnZjMlZQWW1wbFkzUWdRU0I3UUd4cGJtc2dWbEpOVUc5elpYMGdkR2hoZENCeVpYQnlaWE5sYm5SeklHRWdjMmx1WjJ4bElIQnZjMlZjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6WlhSU1lYZFFiM05sS0hCdmMyVlBZbXBsWTNRNklGWlNUVkJ2YzJVcE9pQjJiMmxrSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmNtRjNTSFZ0WVc1Q2IyNWxjeTV6WlhSUWIzTmxLSEJ2YzJWUFltcGxZM1FwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFeGxkQ0IwYUdVZ2JtOXliV0ZzYVhwbFpDQm9kVzFoYmlCaWIyNWxjeUJrYnlCaElITndaV05wWm1sbFpDQndiM05sTGx4dUlDQWdLbHh1SUNBZ0tpQkZZV05vSUhSeVlXNXpabTl5YlNCb1lYWmxJSFJ2SUdKbElHRWdiRzlqWVd3Z2RISmhibk5tYjNKdElISmxiR0YwYVhabElHWnliMjBnY21WemRDQndiM05sSUNoVUxYQnZjMlVwTGx4dUlDQWdLaUJaYjNVZ1kyRnVJSEJoYzNNZ2QyaGhkQ0I1YjNVZ1oyOTBJR1p5YjIwZ2UwQnNhVzVySUdkbGRFNXZjbTFoYkdsNlpXUlFiM05sZlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIQnZjMlZQWW1wbFkzUWdRU0I3UUd4cGJtc2dWbEpOVUc5elpYMGdkR2hoZENCeVpYQnlaWE5sYm5SeklHRWdjMmx1WjJ4bElIQnZjMlZjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6WlhST2IzSnRZV3hwZW1Wa1VHOXpaU2h3YjNObFQySnFaV04wT2lCV1VrMVFiM05sS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDI1dmNtMWhiR2w2WldSSWRXMWhia0p2Ym1WekxuTmxkRkJ2YzJVb2NHOXpaVTlpYW1WamRDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGNISmxZMkYwWldRZ1JHVndjbVZqWVhSbFpDNGdWWE5sSUdWcGRHaGxjaUI3UUd4cGJtc2djbVZ6WlhSU1lYZFFiM05sZlNCdmNpQjdRR3hwYm1zZ2NtVnpaWFJPYjNKdFlXeHBlbVZrVUc5elpYMGdhVzV6ZEdWaFpDNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnlaWE5sZEZCdmMyVW9LVG9nZG05cFpDQjdYRzRnSUNBZ1kyOXVjMjlzWlM1M1lYSnVLQ2RXVWsxSWRXMWhibTlwWkRvZ2NtVnpaWFJRYjNObEtDa2dhWE1nWkdWd2NtVmpZWFJsWkM0Z1ZYTmxJR1ZwZEdobGNpQnlaWE5sZEZKaGQxQnZjMlVvS1NCdmNpQnlaWE5sZEU1dmNtMWhiR2w2WldSUWIzTmxLQ2tnYVc1emRHVmhaQzRuS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuSmxjMlYwVW1GM1VHOXpaU2dwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxjMlYwSUhSb1pTQnlZWGNnYUhWdFlXNXZhV1FnZEc4Z2FYUnpJSEpsYzNRZ2NHOXpaUzVjYmlBZ0lDcGNiaUFnSUNvZ1NXWWdlVzkxSUdGeVpTQjFjMmx1WnlCN1FHeHBibXNnWVhWMGIxVndaR0YwWlVoMWJXRnVRbTl1WlhOOUxDQjViM1VnYldsbmFIUWdkMkZ1ZENCMGJ5QjFjMlVnZTBCc2FXNXJJSEpsYzJWMFRtOXliV0ZzYVhwbFpGQnZjMlY5SUdsdWMzUmxZV1F1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nY21WelpYUlNZWGRRYjNObEtDazZJSFp2YVdRZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxsOXlZWGRJZFcxaGJrSnZibVZ6TG5KbGMyVjBVRzl6WlNncE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsYzJWMElIUm9aU0J1YjNKdFlXeHBlbVZrSUdoMWJXRnViMmxrSUhSdklHbDBjeUJ5WlhOMElIQnZjMlV1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nY21WelpYUk9iM0p0WVd4cGVtVmtVRzl6WlNncE9pQjJiMmxrSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmJtOXliV0ZzYVhwbFpFaDFiV0Z1UW05dVpYTXVjbVZ6WlhSUWIzTmxLQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjSEpsWTJGMFpXUWdSR1Z3Y21WallYUmxaQzRnVlhObElHVnBkR2hsY2lCN1FHeHBibXNnWjJWMFVtRjNRbTl1WlgwZ2IzSWdlMEJzYVc1cklHZGxkRTV2Y20xaGJHbDZaV1JDYjI1bGZTQnBibk4wWldGa0xseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkRUp2Ym1Vb2JtRnRaVG9nVmxKTlNIVnRZVzVDYjI1bFRtRnRaU2s2SUZaU1RVaDFiV0Z1UW05dVpTQjhJSFZ1WkdWbWFXNWxaQ0I3WEc0Z0lDQWdZMjl1YzI5c1pTNTNZWEp1S0NkV1VrMUlkVzFoYm05cFpEb2daMlYwUW05dVpTZ3BJR2x6SUdSbGNISmxZMkYwWldRdUlGVnpaU0JsYVhSb1pYSWdaMlYwVW1GM1FtOXVaU2dwSUc5eUlHZGxkRTV2Y20xaGJHbDZaV1JDYjI1bEtDa2dhVzV6ZEdWaFpDNG5LVHRjYmx4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1kbGRGSmhkMEp2Ym1Vb2JtRnRaU2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1SUdFZ2NtRjNJSHRBYkdsdWF5QldVazFJZFcxaGJrSnZibVY5SUdKdmRXNWtJSFJ2SUdFZ2MzQmxZMmxtYVdWa0lIdEFiR2x1YXlCV1VrMUlkVzFoYmtKdmJtVk9ZVzFsZlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElHNWhiV1VnVG1GdFpTQnZaaUIwYUdVZ1ltOXVaU0I1YjNVZ2QyRnVkRnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZEZKaGQwSnZibVVvYm1GdFpUb2dWbEpOU0hWdFlXNUNiMjVsVG1GdFpTazZJRlpTVFVoMWJXRnVRbTl1WlNCOElIVnVaR1ZtYVc1bFpDQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM0poZDBoMWJXRnVRbTl1WlhNdVoyVjBRbTl1WlNodVlXMWxLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTRnWVNCdWIzSnRZV3hwZW1Wa0lIdEFiR2x1YXlCV1VrMUlkVzFoYmtKdmJtVjlJR0p2ZFc1a0lIUnZJR0VnYzNCbFkybG1hV1ZrSUh0QWJHbHVheUJXVWsxSWRXMWhia0p2Ym1WT1lXMWxmUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUc1aGJXVWdUbUZ0WlNCdlppQjBhR1VnWW05dVpTQjViM1VnZDJGdWRGeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkRTV2Y20xaGJHbDZaV1JDYjI1bEtHNWhiV1U2SUZaU1RVaDFiV0Z1UW05dVpVNWhiV1VwT2lCV1VrMUlkVzFoYmtKdmJtVWdmQ0IxYm1SbFptbHVaV1FnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5dWIzSnRZV3hwZW1Wa1NIVnRZVzVDYjI1bGN5NW5aWFJDYjI1bEtHNWhiV1VwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWEJ5WldOaGRHVmtJRVJsY0hKbFkyRjBaV1F1SUZWelpTQmxhWFJvWlhJZ2UwQnNhVzVySUdkbGRGSmhkMEp2Ym1WT2IyUmxmU0J2Y2lCN1FHeHBibXNnWjJWMFRtOXliV0ZzYVhwbFpFSnZibVZPYjJSbGZTQnBibk4wWldGa0xseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkRUp2Ym1WT2IyUmxLRzVoYldVNklGWlNUVWgxYldGdVFtOXVaVTVoYldVcE9pQlVTRkpGUlM1UFltcGxZM1F6UkNCOElHNTFiR3dnZTF4dUlDQWdJR052Ym5OdmJHVXVkMkZ5YmloY2JpQWdJQ0FnSUNkV1VrMUlkVzFoYm05cFpEb2daMlYwUW05dVpVNXZaR1VvS1NCcGN5QmtaWEJ5WldOaGRHVmtMaUJWYzJVZ1pXbDBhR1Z5SUdkbGRGSmhkMEp2Ym1WT2IyUmxLQ2tnYjNJZ1oyVjBUbTl5YldGc2FYcGxaRUp2Ym1WT2IyUmxLQ2tnYVc1emRHVmhaQzRuTEZ4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1blpYUlNZWGRDYjI1bFRtOWtaU2h1WVcxbEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNGdZU0J5WVhjZ1ltOXVaU0JoY3lCaElHQlVTRkpGUlM1UFltcGxZM1F6UkdBZ1ltOTFibVFnZEc4Z1lTQnpjR1ZqYVdacFpXUWdlMEJzYVc1cklGWlNUVWgxYldGdVFtOXVaVTVoYldWOUxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdibUZ0WlNCT1lXMWxJRzltSUhSb1pTQmliMjVsSUhsdmRTQjNZVzUwWEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWjJWMFVtRjNRbTl1WlU1dlpHVW9ibUZ0WlRvZ1ZsSk5TSFZ0WVc1Q2IyNWxUbUZ0WlNrNklGUklVa1ZGTGs5aWFtVmpkRE5FSUh3Z2JuVnNiQ0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDNKaGQwaDFiV0Z1UW05dVpYTXVaMlYwUW05dVpVNXZaR1VvYm1GdFpTazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVJR0VnYm05eWJXRnNhWHBsWkNCaWIyNWxJR0Z6SUdFZ1lGUklVa1ZGTGs5aWFtVmpkRE5FWUNCaWIzVnVaQ0IwYnlCaElITndaV05wWm1sbFpDQjdRR3hwYm1zZ1ZsSk5TSFZ0WVc1Q2IyNWxUbUZ0WlgwdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQnVZVzFsSUU1aGJXVWdiMllnZEdobElHSnZibVVnZVc5MUlIZGhiblJjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJuWlhST2IzSnRZV3hwZW1Wa1FtOXVaVTV2WkdVb2JtRnRaVG9nVmxKTlNIVnRZVzVDYjI1bFRtRnRaU2s2SUZSSVVrVkZMazlpYW1WamRETkVJSHdnYm5Wc2JDQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYMjV2Y20xaGJHbDZaV1JJZFcxaGJrSnZibVZ6TG1kbGRFSnZibVZPYjJSbEtHNWhiV1VwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGVndaR0YwWlNCMGFHVWdhSFZ0WVc1dmFXUWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0tseHVJQ0FnS2lCSlppQjdRR3hwYm1zZ1lYVjBiMVZ3WkdGMFpVaDFiV0Z1UW05dVpYTjlJR2x6SUdCMGNuVmxZQ3dnYVhRZ2RISmhibk5tWlhKeklIUm9aU0J3YjNObElHOW1JRzV2Y20xaGJHbDZaV1FnYUhWdFlXNGdZbTl1WlhNZ2RHOGdjbUYzSUdoMWJXRnVJR0p2Ym1WekxseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklIVndaR0YwWlNncE9pQjJiMmxrSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVoZFhSdlZYQmtZWFJsU0hWdFlXNUNiMjVsY3lrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmYm05eWJXRnNhWHBsWkVoMWJXRnVRbTl1WlhNdWRYQmtZWFJsS0NrN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc0aUxDSXZLaUJsYzJ4cGJuUXRaR2x6WVdKc1pTQkFkSGx3WlhOamNtbHdkQzFsYzJ4cGJuUXZibUZ0YVc1bkxXTnZiblpsYm5ScGIyNGdLaTljYmx4dVpYaHdiM0owSUdOdmJuTjBJRlpTVFZKbGNYVnBjbVZrU0hWdFlXNUNiMjVsVG1GdFpTQTlJSHRjYmlBZ1NHbHdjem9nSjJocGNITW5MRnh1SUNCVGNHbHVaVG9nSjNOd2FXNWxKeXhjYmlBZ1NHVmhaRG9nSjJobFlXUW5MRnh1SUNCTVpXWjBWWEJ3WlhKTVpXYzZJQ2RzWldaMFZYQndaWEpNWldjbkxGeHVJQ0JNWldaMFRHOTNaWEpNWldjNklDZHNaV1owVEc5M1pYSk1aV2NuTEZ4dUlDQk1aV1owUm05dmREb2dKMnhsWm5SR2IyOTBKeXhjYmlBZ1VtbG5hSFJWY0hCbGNreGxaem9nSjNKcFoyaDBWWEJ3WlhKTVpXY25MRnh1SUNCU2FXZG9kRXh2ZDJWeVRHVm5PaUFuY21sbmFIUk1iM2RsY2t4bFp5Y3NYRzRnSUZKcFoyaDBSbTl2ZERvZ0ozSnBaMmgwUm05dmRDY3NYRzRnSUV4bFpuUlZjSEJsY2tGeWJUb2dKMnhsWm5SVmNIQmxja0Z5YlNjc1hHNGdJRXhsWm5STWIzZGxja0Z5YlRvZ0oyeGxablJNYjNkbGNrRnliU2NzWEc0Z0lFeGxablJJWVc1a09pQW5iR1ZtZEVoaGJtUW5MRnh1SUNCU2FXZG9kRlZ3Y0dWeVFYSnRPaUFuY21sbmFIUlZjSEJsY2tGeWJTY3NYRzRnSUZKcFoyaDBURzkzWlhKQmNtMDZJQ2R5YVdkb2RFeHZkMlZ5UVhKdEp5eGNiaUFnVW1sbmFIUklZVzVrT2lBbmNtbG5hSFJJWVc1a0p5eGNibjBnWVhNZ1kyOXVjM1E3WEc1Y2JtVjRjRzl5ZENCMGVYQmxJRlpTVFZKbGNYVnBjbVZrU0hWdFlXNUNiMjVsVG1GdFpTQTlJSFI1Y0dWdlppQldVazFTWlhGMWFYSmxaRWgxYldGdVFtOXVaVTVoYldWYmEyVjViMllnZEhsd1pXOW1JRlpTVFZKbGNYVnBjbVZrU0hWdFlXNUNiMjVsVG1GdFpWMDdYRzRpTENKcGJYQnZjblFnZEhsd1pTQXFJR0Z6SUZZd1ZsSk5JR1p5YjIwZ0owQndhWGhwZGk5MGVYQmxjeTEyY20wdE1DNHdKenRjYm1sdGNHOXlkQ0IwZVhCbElDb2dZWE1nVmpGV1VrMVRZMmhsYldFZ1puSnZiU0FuUUhCcGVHbDJMM1I1Y0dWekxYWnliV010ZG5KdExURXVNQ2M3WEc1cGJYQnZjblFnZEhsd1pTQjdJRWRNVkVZc0lFZE1WRVpNYjJGa1pYSlFiSFZuYVc0c0lFZE1WRVpRWVhKelpYSWdmU0JtY205dElDZDBhSEpsWlM5bGVHRnRjR3hsY3k5cWMyMHZiRzloWkdWeWN5OUhURlJHVEc5aFpHVnlMbXB6Snp0Y2JtbHRjRzl5ZENCN0lGWlNUVWgxYldGdWIybGtJSDBnWm5KdmJTQW5MaTlXVWsxSWRXMWhibTlwWkNjN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3SUZaU1RVaDFiV0Z1UW05dVpYTWdmU0JtY205dElDY3VMMVpTVFVoMWJXRnVRbTl1WlhNbk8xeHVhVzF3YjNKMElIc2dWbEpOVW1WeGRXbHlaV1JJZFcxaGJrSnZibVZPWVcxbElIMGdabkp2YlNBbkxpOVdVazFTWlhGMWFYSmxaRWgxYldGdVFtOXVaVTVoYldVbk8xeHVhVzF3YjNKMElIc2dSMHhVUmlCaGN5QkhURlJHVTJOb1pXMWhJSDBnWm5KdmJTQW5RR2RzZEdZdGRISmhibk5tYjNKdEwyTnZjbVVuTzF4dWFXMXdiM0owSUhzZ1ZsSk5TSFZ0WVc1dmFXUklaV3h3WlhJZ2ZTQm1jbTl0SUNjdUwyaGxiSEJsY25NdlZsSk5TSFZ0WVc1dmFXUklaV3h3WlhJbk8xeHVhVzF3YjNKMElIc2dWbEpOU0hWdFlXNXZhV1JNYjJGa1pYSlFiSFZuYVc1UGNIUnBiMjV6SUgwZ1puSnZiU0FuTGk5V1VrMUlkVzFoYm05cFpFeHZZV1JsY2xCc2RXZHBiazl3ZEdsdmJuTW5PMXh1WEc0dktpcGNiaUFxSUZCdmMzTnBZbXhsSUhOd1pXTWdkbVZ5YzJsdmJuTWdhWFFnY21WamIyZHVhWHBsY3k1Y2JpQXFMMXh1WTI5dWMzUWdVRTlUVTBsQ1RFVmZVMUJGUTE5V1JWSlRTVTlPVXlBOUlHNWxkeUJUWlhRb1d5Y3hMakFuTENBbk1TNHdMV0psZEdFblhTazdYRzVjYmk4cUtseHVJQ29nUVNCdFlYQWdabkp2YlNCdmJHUWdkR2gxYldJZ1ltOXVaU0J1WVcxbGN5QjBieUJ1WlhjZ2RHaDFiV0lnWW05dVpTQnVZVzFsYzF4dUlDb3ZYRzVqYjI1emRDQjBhSFZ0WWtKdmJtVk9ZVzFsVFdGd09pQjdJRnRyWlhrNklITjBjbWx1WjEwNklGWXhWbEpOVTJOb1pXMWhMa2gxYldGdWIybGtTSFZ0WVc1Q2IyNWxUbUZ0WlNCOElIVnVaR1ZtYVc1bFpDQjlJRDBnZTF4dUlDQnNaV1owVkdoMWJXSlFjbTk0YVcxaGJEb2dKMnhsWm5SVWFIVnRZazFsZEdGallYSndZV3duTEZ4dUlDQnNaV1owVkdoMWJXSkpiblJsY20xbFpHbGhkR1U2SUNkc1pXWjBWR2gxYldKUWNtOTRhVzFoYkNjc1hHNGdJSEpwWjJoMFZHaDFiV0pRY205NGFXMWhiRG9nSjNKcFoyaDBWR2gxYldKTlpYUmhZMkZ5Y0dGc0p5eGNiaUFnY21sbmFIUlVhSFZ0WWtsdWRHVnliV1ZrYVdGMFpUb2dKM0pwWjJoMFZHaDFiV0pRY205NGFXMWhiQ2NzWEc1OU8xeHVYRzR2S2lwY2JpQXFJRUVnY0d4MVoybHVJRzltSUVkTVZFWk1iMkZrWlhJZ2RHaGhkQ0JwYlhCdmNuUnpJR0VnZTBCc2FXNXJJRlpTVFVoMWJXRnViMmxrZlNCbWNtOXRJR0VnVmxKTklHVjRkR1Z1YzJsdmJpQnZaaUJoSUVkTVZFWXVYRzRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJXVWsxSWRXMWhibTlwWkV4dllXUmxjbEJzZFdkcGJpQnBiWEJzWlcxbGJuUnpJRWRNVkVaTWIyRmtaWEpRYkhWbmFXNGdlMXh1SUNBdktpcGNiaUFnSUNvZ1UzQmxZMmxtZVNCaGJpQlBZbXBsWTNRelJDQjBieUJoWkdRZ2UwQnNhVzVySUZaU1RVaDFiV0Z1YjJsa1NHVnNjR1Z5ZlM1Y2JpQWdJQ29nU1dZZ2JtOTBJSE53WldOcFptbGxaQ3dnYUdWc2NHVnlJSGRwYkd3Z2JtOTBJR0psSUdOeVpXRjBaV1F1WEc0Z0lDQXFJRWxtSUdCeVpXNWtaWEpQY21SbGNtQWdhWE1nYzJWMElIUnZJSFJvWlNCeWIyOTBMQ0IwYUdVZ2FHVnNjR1Z5SUhkcGJHd2dZMjl3ZVNCMGFHVWdjMkZ0WlNCZ2NtVnVaR1Z5VDNKa1pYSmdJQzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJvWld4d1pYSlNiMjkwUHpvZ1ZFaFNSVVV1VDJKcVpXTjBNMFE3WEc1Y2JpQWdjSFZpYkdsaklHRjFkRzlWY0dSaGRHVklkVzFoYmtKdmJtVnpQem9nWW05dmJHVmhianRjYmx4dUlDQndkV0pzYVdNZ2NtVmhaRzl1YkhrZ2NHRnljMlZ5T2lCSFRGUkdVR0Z5YzJWeU8xeHVYRzRnSUhCMVlteHBZeUJuWlhRZ2JtRnRaU2dwT2lCemRISnBibWNnZTF4dUlDQWdJQzh2SUZkbElITm9iM1ZzWkNCMWMyVWdkR2hsSUdWNGRHVnVjMmx2YmlCdVlXMWxJR2x1YzNSbFlXUWdZblYwSUhkbElHaGhkbVVnYlhWc2RHbHdiR1VnY0d4MVoybHVjeUJtYjNJZ1lXNGdaWGgwWlc1emFXOXVMaTR1WEc0Z0lDQWdjbVYwZFhKdUlDZFdVazFJZFcxaGJtOXBaRXh2WVdSbGNsQnNkV2RwYmljN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9jR0Z5YzJWeU9pQkhURlJHVUdGeWMyVnlMQ0J2Y0hScGIyNXpQem9nVmxKTlNIVnRZVzV2YVdSTWIyRmtaWEpRYkhWbmFXNVBjSFJwYjI1ektTQjdYRzRnSUNBZ2RHaHBjeTV3WVhKelpYSWdQU0J3WVhKelpYSTdYRzVjYmlBZ0lDQjBhR2x6TG1obGJIQmxjbEp2YjNRZ1BTQnZjSFJwYjI1elB5NW9aV3h3WlhKU2IyOTBPMXh1SUNBZ0lIUm9hWE11WVhWMGIxVndaR0YwWlVoMWJXRnVRbTl1WlhNZ1BTQnZjSFJwYjI1elB5NWhkWFJ2VlhCa1lYUmxTSFZ0WVc1Q2IyNWxjenRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJoYzNsdVl5QmhablJsY2xKdmIzUW9aMngwWmpvZ1IweFVSaWs2SUZCeWIyMXBjMlU4ZG05cFpENGdlMXh1SUNBZ0lHZHNkR1l1ZFhObGNrUmhkR0V1ZG5KdFNIVnRZVzV2YVdRZ1BTQmhkMkZwZENCMGFHbHpMbDlwYlhCdmNuUW9aMngwWmlrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTVzF3YjNKMElHRWdlMEJzYVc1cklGWlNUVWgxYldGdWIybGtmU0JtY205dElHRWdWbEpOTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ1oyeDBaaUJCSUhCaGNuTmxaQ0J5WlhOMWJIUWdiMllnUjB4VVJpQjBZV3RsYmlCbWNtOXRJRWRNVkVaTWIyRmtaWEpjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWVhONWJtTWdYMmx0Y0c5eWRDaG5iSFJtT2lCSFRGUkdLVG9nVUhKdmJXbHpaVHhXVWsxSWRXMWhibTlwWkNCOElHNTFiR3crSUh0Y2JpQWdJQ0JqYjI1emRDQjJNVkpsYzNWc2RDQTlJR0YzWVdsMElIUm9hWE11WDNZeFNXMXdiM0owS0dkc2RHWXBPMXh1SUNBZ0lHbG1JQ2gyTVZKbGMzVnNkQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSFl4VW1WemRXeDBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhZd1VtVnpkV3gwSUQwZ1lYZGhhWFFnZEdocGN5NWZkakJKYlhCdmNuUW9aMngwWmlrN1hHNGdJQ0FnYVdZZ0tIWXdVbVZ6ZFd4MEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RqQlNaWE4xYkhRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHRnplVzVqSUY5Mk1VbHRjRzl5ZENobmJIUm1PaUJIVEZSR0tUb2dVSEp2YldselpUeFdVazFJZFcxaGJtOXBaQ0I4SUc1MWJHdytJSHRjYmlBZ0lDQmpiMjV6ZENCcWMyOXVJRDBnZEdocGN5NXdZWEp6WlhJdWFuTnZiaUJoY3lCSFRGUkdVMk5vWlcxaExrbEhURlJHTzF4dVhHNGdJQ0FnTHk4Z1pXRnliSGtnWVdKdmNuUWdhV1lnYVhRZ1pHOWxjMjRuZENCMWMyVWdkbkp0WEc0Z0lDQWdZMjl1YzNRZ2FYTldVazFWYzJWa0lEMGdhbk52Ymk1bGVIUmxibk5wYjI1elZYTmxaRDh1YVc1a1pYaFBaaWduVmxKTlExOTJjbTBuS1NBaFBUMGdMVEU3WEc0Z0lDQWdhV1lnS0NGcGMxWlNUVlZ6WldRcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUdWNGRHVnVjMmx2YmlBOUlHcHpiMjR1WlhoMFpXNXphVzl1Y3o4dVd5ZFdVazFEWDNaeWJTZGRJR0Z6SUZZeFZsSk5VMk5vWlcxaExsWlNUVU5XVWswZ2ZDQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2FXWWdLQ0ZsZUhSbGJuTnBiMjRwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJSE53WldOV1pYSnphVzl1SUQwZ1pYaDBaVzV6YVc5dUxuTndaV05XWlhKemFXOXVPMXh1SUNBZ0lHbG1JQ2doVUU5VFUwbENURVZmVTFCRlExOVdSVkpUU1U5T1V5NW9ZWE1vYzNCbFkxWmxjbk5wYjI0cEtTQjdYRzRnSUNBZ0lDQmpiMjV6YjJ4bExuZGhjbTRvWUZaU1RVaDFiV0Z1YjJsa1RHOWhaR1Z5VUd4MVoybHVPaUJWYm10dWIzZHVJRlpTVFVOZmRuSnRJSE53WldOV1pYSnphVzl1SUZ3aUpIdHpjR1ZqVm1WeWMybHZibjFjSW1BcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnYzJOb1pXMWhTSFZ0WVc1dmFXUWdQU0JsZUhSbGJuTnBiMjR1YUhWdFlXNXZhV1E3WEc0Z0lDQWdhV1lnS0NGelkyaGxiV0ZJZFcxaGJtOXBaQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1kyOXRjR0YwT2lBeExqQXRZbVYwWVNCMGFIVnRZaUJpYjI1bElHNWhiV1Z6WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJnZEhKMVpXQWdhV1lnWUd4bFpuUlVhSFZ0WWtsdWRHVnliV1ZrYVdGMFpXQWdiM0lnWUhKcFoyaDBWR2gxYldKSmJuUmxjbTFsWkdsaGRHVmdJR1Y0YVhOMGMxeHVJQ0FnSUNBcUwxeHVJQ0FnSUdOdmJuTjBJR1Y0YVhOMGMxQnlaWFpwYjNWelZHaDFiV0pPWVcxbElEMWNiaUFnSUNBZ0lDaHpZMmhsYldGSWRXMWhibTlwWkM1b2RXMWhia0p2Ym1WeklHRnpJR0Z1ZVNrdWJHVm1kRlJvZFcxaVNXNTBaWEp0WldScFlYUmxJQ0U5SUc1MWJHd2dmSHhjYmlBZ0lDQWdJQ2h6WTJobGJXRklkVzFoYm05cFpDNW9kVzFoYmtKdmJtVnpJR0Z6SUdGdWVTa3VjbWxuYUhSVWFIVnRZa2x1ZEdWeWJXVmthV0YwWlNBaFBTQnVkV3hzTzF4dVhHNGdJQ0FnWTI5dWMzUWdhSFZ0WVc1Q2IyNWxjem9nVUdGeWRHbGhiRHhXVWsxSWRXMWhia0p2Ym1WelBpQTlJSHQ5TzF4dUlDQWdJR2xtSUNoelkyaGxiV0ZJZFcxaGJtOXBaQzVvZFcxaGJrSnZibVZ6SUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUdGM1lXbDBJRkJ5YjIxcGMyVXVZV3hzS0Z4dUlDQWdJQ0FnSUNCUFltcGxZM1F1Wlc1MGNtbGxjeWh6WTJobGJXRklkVzFoYm05cFpDNW9kVzFoYmtKdmJtVnpLUzV0WVhBb1lYTjVibU1nS0Z0aWIyNWxUbUZ0WlZOMGNtbHVaeXdnYzJOb1pXMWhTSFZ0WVc1Q2IyNWxYU2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJR3hsZENCaWIyNWxUbUZ0WlNBOUlHSnZibVZPWVcxbFUzUnlhVzVuSUdGeklGWXhWbEpOVTJOb1pXMWhMa2gxYldGdWIybGtTSFZ0WVc1Q2IyNWxUbUZ0WlR0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCcGJtUmxlQ0E5SUhOamFHVnRZVWgxYldGdVFtOXVaUzV1YjJSbE8xeHVYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1kyOXRjR0YwT2lBeExqQXRZbVYwWVNCd2NtVjJhVzkxY3lCMGFIVnRZaUJpYjI1bElHNWhiV1Z6WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR1Y0YVhOMGMxQnlaWFpwYjNWelZHaDFiV0pPWVcxbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0IwYUhWdFlrSnZibVZPWVcxbElEMGdkR2gxYldKQ2IyNWxUbUZ0WlUxaGNGdGliMjVsVG1GdFpWMDdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kR2gxYldKQ2IyNWxUbUZ0WlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdKdmJtVk9ZVzFsSUQwZ2RHaDFiV0pDYjI1bFRtRnRaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdWIyUmxJRDBnWVhkaGFYUWdkR2hwY3k1d1lYSnpaWEl1WjJWMFJHVndaVzVrWlc1amVTZ25ibTlrWlNjc0lHbHVaR1Y0S1R0Y2JseHVJQ0FnSUNBZ0lDQWdJQzh2SUdsbUlIUm9aU0J6Y0dWamFXWnBaV1FnYm05a1pTQmtiMlZ6SUc1dmRDQmxlR2x6ZEN3Z1pXMXBkQ0JoSUhkaGNtNXBibWRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9ibTlrWlNBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emIyeGxMbmRoY200b1lFRWdaMnhVUmlCdWIyUmxJR0p2ZFc1a0lIUnZJSFJvWlNCb2RXMWhibTlwWkNCaWIyNWxJQ1I3WW05dVpVNWhiV1Y5SUNocGJtUmxlQ0E5SUNSN2FXNWtaWGg5S1NCa2IyVnpJRzV2ZENCbGVHbHpkR0FwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lDOHZJSE5sZENCMGJ5QjBhR1VnWUdoMWJXRnVRbTl1WlhOZ1hHNGdJQ0FnSUNBZ0lDQWdhSFZ0WVc1Q2IyNWxjMXRpYjI1bFRtRnRaVjBnUFNCN0lHNXZaR1VnZlR0Y2JpQWdJQ0FnSUNBZ2ZTa3NYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUdoMWJXRnViMmxrSUQwZ2JtVjNJRlpTVFVoMWJXRnViMmxrS0hSb2FYTXVYMlZ1YzNWeVpWSmxjWFZwY21Wa1FtOXVaWE5GZUdsemRDaG9kVzFoYmtKdmJtVnpLU3dnZTF4dUlDQWdJQ0FnWVhWMGIxVndaR0YwWlVoMWJXRnVRbTl1WlhNNklIUm9hWE11WVhWMGIxVndaR0YwWlVoMWJXRnVRbTl1WlhNc1hHNGdJQ0FnZlNrN1hHNGdJQ0FnWjJ4MFppNXpZMlZ1WlM1aFpHUW9hSFZ0WVc1dmFXUXVibTl5YldGc2FYcGxaRWgxYldGdVFtOXVaWE5TYjI5MEtUdGNibHh1SUNBZ0lHbG1JQ2gwYUdsekxtaGxiSEJsY2xKdmIzUXBJSHRjYmlBZ0lDQWdJR052Ym5OMElHaGxiSEJsY2lBOUlHNWxkeUJXVWsxSWRXMWhibTlwWkVobGJIQmxjaWhvZFcxaGJtOXBaQ2s3WEc0Z0lDQWdJQ0IwYUdsekxtaGxiSEJsY2xKdmIzUXVZV1JrS0dobGJIQmxjaWs3WEc0Z0lDQWdJQ0JvWld4d1pYSXVjbVZ1WkdWeVQzSmtaWElnUFNCMGFHbHpMbWhsYkhCbGNsSnZiM1F1Y21WdVpHVnlUM0prWlhJN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJR2gxYldGdWIybGtPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JoYzNsdVl5QmZkakJKYlhCdmNuUW9aMngwWmpvZ1IweFVSaWs2SUZCeWIyMXBjMlU4VmxKTlNIVnRZVzV2YVdRZ2ZDQnVkV3hzUGlCN1hHNGdJQ0FnWTI5dWMzUWdhbk52YmlBOUlIUm9hWE11Y0dGeWMyVnlMbXB6YjI0Z1lYTWdSMHhVUmxOamFHVnRZUzVKUjB4VVJqdGNibHh1SUNBZ0lHTnZibk4wSUhaeWJVVjRkQ0E5SUdwemIyNHVaWGgwWlc1emFXOXVjejh1VmxKTklHRnpJRll3VmxKTkxsWlNUU0I4SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JwWmlBb0lYWnliVVY0ZENrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnYzJOb1pXMWhTSFZ0WVc1dmFXUTZJRll3VmxKTkxraDFiV0Z1YjJsa0lId2dkVzVrWldacGJtVmtJRDBnZG5KdFJYaDBMbWgxYldGdWIybGtPMXh1SUNBZ0lHbG1JQ2doYzJOb1pXMWhTSFZ0WVc1dmFXUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElHaDFiV0Z1UW05dVpYTTZJRkJoY25ScFlXdzhWbEpOU0hWdFlXNUNiMjVsY3o0Z1BTQjdmVHRjYmlBZ0lDQnBaaUFvYzJOb1pXMWhTSFZ0WVc1dmFXUXVhSFZ0WVc1Q2IyNWxjeUFoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0JoZDJGcGRDQlFjbTl0YVhObExtRnNiQ2hjYmlBZ0lDQWdJQ0FnYzJOb1pXMWhTSFZ0WVc1dmFXUXVhSFZ0WVc1Q2IyNWxjeTV0WVhBb1lYTjVibU1nS0dKdmJtVXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCaWIyNWxUbUZ0WlNBOUlHSnZibVV1WW05dVpUdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnBibVJsZUNBOUlHSnZibVV1Ym05a1pUdGNibHh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGliMjVsVG1GdFpTQTlQU0J1ZFd4c0lIeDhJR2x1WkdWNElEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnViMlJsSUQwZ1lYZGhhWFFnZEdocGN5NXdZWEp6WlhJdVoyVjBSR1Z3Wlc1a1pXNWplU2duYm05a1pTY3NJR2x1WkdWNEtUdGNibHh1SUNBZ0lDQWdJQ0FnSUM4dklHbG1JSFJvWlNCemNHVmphV1pwWldRZ2JtOWtaU0JrYjJWeklHNXZkQ0JsZUdsemRDd2daVzFwZENCaElIZGhjbTVwYm1kY2JpQWdJQ0FnSUNBZ0lDQnBaaUFvYm05a1pTQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpiMnhsTG5kaGNtNG9ZRUVnWjJ4VVJpQnViMlJsSUdKdmRXNWtJSFJ2SUhSb1pTQm9kVzFoYm05cFpDQmliMjVsSUNSN1ltOXVaVTVoYldWOUlDaHBibVJsZUNBOUlDUjdhVzVrWlhoOUtTQmtiMlZ6SUc1dmRDQmxlR2x6ZEdBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQWdJQzh2SUcxaGNDQjBieUJ1WlhjZ1ltOXVaU0J1WVcxbFhHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2RHaDFiV0pDYjI1bFRtRnRaU0E5SUhSb2RXMWlRbTl1WlU1aGJXVk5ZWEJiWW05dVpVNWhiV1ZkTzF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUc1bGQwSnZibVZPWVcxbElEMGdLSFJvZFcxaVFtOXVaVTVoYldVZ1B6OGdZbTl1WlU1aGJXVXBJR0Z6SUZZeFZsSk5VMk5vWlcxaExraDFiV0Z1YjJsa1NIVnRZVzVDYjI1bFRtRnRaVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDOHZJSFl3SUZaU1RYTWdiV2xuYUhRZ2FHRjJaU0JoSUcxMWJIUnBjR3hsSUc1dlpHVnpJR0YwZEdGamFHVmtJSFJ2SUdFZ2MybHVaMnhsSUdKdmJtVXVMaTVjYmlBZ0lDQWdJQ0FnSUNBdkx5QnpieUJwWmlCMGFHVnlaU0JoYkhKbFlXUjVJR2x6SUdGdUlHVnVkSEo1SUdsdUlIUm9aU0JnYUhWdFlXNUNiMjVsYzJBc0lITm9iM2NnWVNCM1lYSnVhVzVuSUdGdVpDQnBaMjV2Y21VZ2FYUmNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2FIVnRZVzVDYjI1bGMxdHVaWGRDYjI1bFRtRnRaVjBnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzI5c1pTNTNZWEp1S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JnVFhWc2RHbHdiR1VnWW05dVpTQmxiblJ5YVdWeklHWnZjaUFrZTI1bGQwSnZibVZPWVcxbGZTQmtaWFJsWTNSbFpDQW9hVzVrWlhnZ1BTQWtlMmx1WkdWNGZTa3NJR2xuYm05eWFXNW5JR1IxY0d4cFkyRjBaV1FnWlc1MGNtbGxjeTVnTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNBdkx5QnpaWFFnZEc4Z2RHaGxJR0JvZFcxaGJrSnZibVZ6WUZ4dUlDQWdJQ0FnSUNBZ0lHaDFiV0Z1UW05dVpYTmJibVYzUW05dVpVNWhiV1ZkSUQwZ2V5QnViMlJsSUgwN1hHNGdJQ0FnSUNBZ0lIMHBMRnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCb2RXMWhibTlwWkNBOUlHNWxkeUJXVWsxSWRXMWhibTlwWkNoMGFHbHpMbDlsYm5OMWNtVlNaWEYxYVhKbFpFSnZibVZ6UlhocGMzUW9hSFZ0WVc1Q2IyNWxjeWtzSUh0Y2JpQWdJQ0FnSUdGMWRHOVZjR1JoZEdWSWRXMWhia0p2Ym1Wek9pQjBhR2x6TG1GMWRHOVZjR1JoZEdWSWRXMWhia0p2Ym1WekxGeHVJQ0FnSUgwcE8xeHVJQ0FnSUdkc2RHWXVjMk5sYm1VdVlXUmtLR2gxYldGdWIybGtMbTV2Y20xaGJHbDZaV1JJZFcxaGJrSnZibVZ6VW05dmRDazdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NW9aV3h3WlhKU2IyOTBLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQm9aV3h3WlhJZ1BTQnVaWGNnVmxKTlNIVnRZVzV2YVdSSVpXeHdaWElvYUhWdFlXNXZhV1FwTzF4dUlDQWdJQ0FnZEdocGN5NW9aV3h3WlhKU2IyOTBMbUZrWkNob1pXeHdaWElwTzF4dUlDQWdJQ0FnYUdWc2NHVnlMbkpsYm1SbGNrOXlaR1Z5SUQwZ2RHaHBjeTVvWld4d1pYSlNiMjkwTG5KbGJtUmxjazl5WkdWeU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJvZFcxaGJtOXBaRHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRmJuTjFjbVVnY21WeGRXbHlaV1FnWW05dVpYTWdaWGhwYzNRZ2FXNGdaMmwyWlc0Z2FIVnRZVzRnWW05dVpYTXVYRzRnSUNBcUlFQndZWEpoYlNCb2RXMWhia0p2Ym1WeklFaDFiV0Z1SUdKdmJtVnpYRzRnSUNBcUlFQnlaWFIxY201eklFaDFiV0Z1SUdKdmJtVnpMQ0J1YnlCc2IyNW5aWElnY0dGeWRHbGhiQ0ZjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWDJWdWMzVnlaVkpsY1hWcGNtVmtRbTl1WlhORmVHbHpkQ2hvZFcxaGJrSnZibVZ6T2lCUVlYSjBhV0ZzUEZaU1RVaDFiV0Z1UW05dVpYTStLVG9nVmxKTlNIVnRZVzVDYjI1bGN5QjdYRzRnSUNBZ0x5OGdaVzV6ZFhKbElISmxjWFZwY21Wa0lHSnZibVZ6SUdWNGFYTjBYRzRnSUNBZ1kyOXVjM1FnYldsemMybHVaMUpsY1hWcGNtVmtRbTl1WlhNZ1BTQlBZbXBsWTNRdWRtRnNkV1Z6S0ZaU1RWSmxjWFZwY21Wa1NIVnRZVzVDYjI1bFRtRnRaU2t1Wm1sc2RHVnlLRnh1SUNBZ0lDQWdLSEpsY1hWcGNtVmtRbTl1WlU1aGJXVXBJRDArSUdoMWJXRnVRbTl1WlhOYmNtVnhkV2x5WldSQ2IyNWxUbUZ0WlYwZ1BUMGdiblZzYkN4Y2JpQWdJQ0FwTzF4dVhHNGdJQ0FnTHk4Z2RHaHliM2NnWVc0Z1pYSnliM0lnYVdZZ2RHaGxjbVVnWVhKbElHMXBjM05wYm1jZ1ltOXVaWE5jYmlBZ0lDQnBaaUFvYldsemMybHVaMUpsY1hWcGNtVmtRbTl1WlhNdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQmdWbEpOU0hWdFlXNXZhV1JNYjJGa1pYSlFiSFZuYVc0NklGUm9aWE5sSUdoMWJXRnViMmxrSUdKdmJtVnpJR0Z5WlNCeVpYRjFhWEpsWkNCaWRYUWdibTkwSUdWNGFYTjBPaUFrZTIxcGMzTnBibWRTWlhGMWFYSmxaRUp2Ym1WekxtcHZhVzRvSnl3Z0p5bDlZQ3hjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHaDFiV0Z1UW05dVpYTWdZWE1nVmxKTlNIVnRZVzVDYjI1bGN6dGNiaUFnZlZ4dWZWeHVJaXdpYVcxd2IzSjBJQ29nWVhNZ1ZFaFNSVVVnWm5KdmJTQW5kR2h5WldVbk8xeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1JtRnVRblZtWm1WeVIyVnZiV1YwY25rZ1pYaDBaVzVrY3lCVVNGSkZSUzVDZFdabVpYSkhaVzl0WlhSeWVTQjdYRzRnSUhCMVlteHBZeUIwYUdWMFlUb2diblZ0WW1WeU8xeHVJQ0J3ZFdKc2FXTWdjbUZrYVhWek9pQnVkVzFpWlhJN1hHNGdJSEJ5YVhaaGRHVWdYMk4xY25KbGJuUlVhR1YwWVNBOUlEQTdYRzRnSUhCeWFYWmhkR1VnWDJOMWNuSmxiblJTWVdScGRYTWdQU0F3TzF4dUlDQndjbWwyWVhSbElISmxZV1J2Ym14NUlGOWhkSFJ5VUc5ek9pQlVTRkpGUlM1Q2RXWm1aWEpCZEhSeWFXSjFkR1U3WEc0Z0lIQnlhWFpoZEdVZ2NtVmhaRzl1YkhrZ1gyRjBkSEpKYm1SbGVEb2dWRWhTUlVVdVFuVm1abVZ5UVhSMGNtbGlkWFJsTzF4dVhHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWdwSUh0Y2JpQWdJQ0J6ZFhCbGNpZ3BPMXh1WEc0Z0lDQWdkR2hwY3k1MGFHVjBZU0E5SURBdU1EdGNiaUFnSUNCMGFHbHpMbkpoWkdsMWN5QTlJREF1TUR0Y2JpQWdJQ0IwYUdsekxsOWpkWEp5Wlc1MFZHaGxkR0VnUFNBd0xqQTdYRzRnSUNBZ2RHaHBjeTVmWTNWeWNtVnVkRkpoWkdsMWN5QTlJREF1TUR0Y2JseHVJQ0FnSUhSb2FYTXVYMkYwZEhKUWIzTWdQU0J1WlhjZ1ZFaFNSVVV1UW5WbVptVnlRWFIwY21saWRYUmxLRzVsZHlCR2JHOWhkRE15UVhKeVlYa29OalVnS2lBektTd2dNeWs3WEc0Z0lDQWdkR2hwY3k1elpYUkJkSFJ5YVdKMWRHVW9KM0J2YzJsMGFXOXVKeXdnZEdocGN5NWZZWFIwY2xCdmN5azdYRzVjYmlBZ0lDQjBhR2x6TGw5aGRIUnlTVzVrWlhnZ1BTQnVaWGNnVkVoU1JVVXVRblZtWm1WeVFYUjBjbWxpZFhSbEtHNWxkeUJWYVc1ME1UWkJjbkpoZVNneklDb2dOak1wTENBeEtUdGNiaUFnSUNCMGFHbHpMbk5sZEVsdVpHVjRLSFJvYVhNdVgyRjBkSEpKYm1SbGVDazdYRzVjYmlBZ0lDQjBhR2x6TGw5aWRXbHNaRWx1WkdWNEtDazdYRzRnSUNBZ2RHaHBjeTUxY0dSaGRHVW9LVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUIxY0dSaGRHVW9LVG9nZG05cFpDQjdYRzRnSUNBZ2JHVjBJSE5vYjNWc1pGVndaR0YwWlVkbGIyMWxkSEo1SUQwZ1ptRnNjMlU3WEc1Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmWTNWeWNtVnVkRlJvWlhSaElDRTlQU0IwYUdsekxuUm9aWFJoS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDlqZFhKeVpXNTBWR2hsZEdFZ1BTQjBhR2x6TG5Sb1pYUmhPMXh1SUNBZ0lDQWdjMmh2ZFd4a1ZYQmtZWFJsUjJWdmJXVjBjbmtnUFNCMGNuVmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2gwYUdsekxsOWpkWEp5Wlc1MFVtRmthWFZ6SUNFOVBTQjBhR2x6TG5KaFpHbDFjeWtnZTF4dUlDQWdJQ0FnZEdocGN5NWZZM1Z5Y21WdWRGSmhaR2wxY3lBOUlIUm9hWE11Y21Ga2FYVnpPMXh1SUNBZ0lDQWdjMmh2ZFd4a1ZYQmtZWFJsUjJWdmJXVjBjbmtnUFNCMGNuVmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h6YUc5MWJHUlZjR1JoZEdWSFpXOXRaWFJ5ZVNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmWW5WcGJHUlFiM05wZEdsdmJpZ3BPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdYMkoxYVd4a1VHOXphWFJwYjI0b0tUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NWZZWFIwY2xCdmN5NXpaWFJZV1Zvb01Dd2dNQzR3TENBd0xqQXNJREF1TUNrN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElEWTBPeUJwS3lzcElIdGNiaUFnSUNBZ0lHTnZibk4wSUhRZ1BTQW9hU0F2SURZekxqQXBJQ29nZEdocGN5NWZZM1Z5Y21WdWRGUm9aWFJoTzF4dVhHNGdJQ0FnSUNCMGFHbHpMbDloZEhSeVVHOXpMbk5sZEZoWldpaHBJQ3NnTVN3Z2RHaHBjeTVmWTNWeWNtVnVkRkpoWkdsMWN5QXFJRTFoZEdndWMybHVLSFFwTENBd0xqQXNJSFJvYVhNdVgyTjFjbkpsYm5SU1lXUnBkWE1nS2lCTllYUm9MbU52Y3loMEtTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RHaHBjeTVmWVhSMGNsQnZjeTV1WldWa2MxVndaR0YwWlNBOUlIUnlkV1U3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUY5aWRXbHNaRWx1WkdWNEtDazZJSFp2YVdRZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z05qTTdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmWVhSMGNrbHVaR1Y0TG5ObGRGaFpXaWhwSUNvZ015d2dNQ3dnYVNBcklERXNJR2tnS3lBeUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbDloZEhSeVNXNWtaWGd1Ym1WbFpITlZjR1JoZEdVZ1BTQjBjblZsTzF4dUlDQjlYRzU5WEc0aUxDSnBiWEJ2Y25RZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJNYVc1bFFXNWtVM0JvWlhKbFFuVm1abVZ5UjJWdmJXVjBjbmtnWlhoMFpXNWtjeUJVU0ZKRlJTNUNkV1ptWlhKSFpXOXRaWFJ5ZVNCN1hHNGdJSEIxWW14cFl5QnlZV1JwZFhNNklHNTFiV0psY2p0Y2JpQWdjSFZpYkdsaklIUmhhV3c2SUZSSVVrVkZMbFpsWTNSdmNqTTdYRzRnSUhCeWFYWmhkR1VnWDJOMWNuSmxiblJTWVdScGRYTTZJRzUxYldKbGNqdGNiaUFnY0hKcGRtRjBaU0JmWTNWeWNtVnVkRlJoYVd3NklGUklVa1ZGTGxabFkzUnZjak03WEc0Z0lIQnlhWFpoZEdVZ2NtVmhaRzl1YkhrZ1gyRjBkSEpRYjNNNklGUklVa1ZGTGtKMVptWmxja0YwZEhKcFluVjBaVHRjYmlBZ2NISnBkbUYwWlNCeVpXRmtiMjVzZVNCZllYUjBja2x1WkdWNE9pQlVTRkpGUlM1Q2RXWm1aWEpCZEhSeWFXSjFkR1U3WEc1Y2JpQWdjSFZpYkdsaklHTnZibk4wY25WamRHOXlLQ2tnZTF4dUlDQWdJSE4xY0dWeUtDazdYRzVjYmlBZ0lDQjBhR2x6TG5KaFpHbDFjeUE5SURBdU1EdGNiaUFnSUNCMGFHbHpMbDlqZFhKeVpXNTBVbUZrYVhWeklEMGdNQzR3TzF4dVhHNGdJQ0FnZEdocGN5NTBZV2xzSUQwZ2JtVjNJRlJJVWtWRkxsWmxZM1J2Y2pNb0tUdGNiaUFnSUNCMGFHbHpMbDlqZFhKeVpXNTBWR0ZwYkNBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektDazdYRzVjYmlBZ0lDQjBhR2x6TGw5aGRIUnlVRzl6SUQwZ2JtVjNJRlJJVWtWRkxrSjFabVpsY2tGMGRISnBZblYwWlNodVpYY2dSbXh2WVhRek1rRnljbUY1S0RJNU5Da3NJRE1wTzF4dUlDQWdJSFJvYVhNdWMyVjBRWFIwY21saWRYUmxLQ2R3YjNOcGRHbHZiaWNzSUhSb2FYTXVYMkYwZEhKUWIzTXBPMXh1WEc0Z0lDQWdkR2hwY3k1ZllYUjBja2x1WkdWNElEMGdibVYzSUZSSVVrVkZMa0oxWm1abGNrRjBkSEpwWW5WMFpTaHVaWGNnVldsdWRERTJRWEp5WVhrb01UazBLU3dnTVNrN1hHNGdJQ0FnZEdocGN5NXpaWFJKYm1SbGVDaDBhR2x6TGw5aGRIUnlTVzVrWlhncE8xeHVYRzRnSUNBZ2RHaHBjeTVmWW5WcGJHUkpibVJsZUNncE8xeHVJQ0FnSUhSb2FYTXVkWEJrWVhSbEtDazdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdkWEJrWVhSbEtDazZJSFp2YVdRZ2UxeHVJQ0FnSUd4bGRDQnphRzkxYkdSVmNHUmhkR1ZIWlc5dFpYUnllU0E5SUdaaGJITmxPMXh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVYMk4xY25KbGJuUlNZV1JwZFhNZ0lUMDlJSFJvYVhNdWNtRmthWFZ6S1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDlqZFhKeVpXNTBVbUZrYVhWeklEMGdkR2hwY3k1eVlXUnBkWE03WEc0Z0lDQWdJQ0J6YUc5MWJHUlZjR1JoZEdWSFpXOXRaWFJ5ZVNBOUlIUnlkV1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbDlqZFhKeVpXNTBWR0ZwYkM1bGNYVmhiSE1vZEdocGN5NTBZV2xzS1NrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmWTNWeWNtVnVkRlJoYVd3dVkyOXdlU2gwYUdsekxuUmhhV3dwTzF4dUlDQWdJQ0FnYzJodmRXeGtWWEJrWVhSbFIyVnZiV1YwY25rZ1BTQjBjblZsTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoemFHOTFiR1JWY0dSaGRHVkhaVzl0WlhSeWVTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZlluVnBiR1JRYjNOcGRHbHZiaWdwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWDJKMWFXeGtVRzl6YVhScGIyNG9LVG9nZG05cFpDQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQXpNanNnYVNzcktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCMElEMGdLR2tnTHlBeE5pNHdLU0FxSUUxaGRHZ3VVRWs3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVYMkYwZEhKUWIzTXVjMlYwV0ZsYUtHa3NJRTFoZEdndVkyOXpLSFFwTENCTllYUm9Mbk5wYmloMEtTd2dNQzR3S1R0Y2JpQWdJQ0FnSUhSb2FYTXVYMkYwZEhKUWIzTXVjMlYwV0ZsYUtETXlJQ3NnYVN3Z01DNHdMQ0JOWVhSb0xtTnZjeWgwS1N3Z1RXRjBhQzV6YVc0b2RDa3BPMXh1SUNBZ0lDQWdkR2hwY3k1ZllYUjBjbEJ2Y3k1elpYUllXVm9vTmpRZ0t5QnBMQ0JOWVhSb0xuTnBiaWgwS1N3Z01DNHdMQ0JOWVhSb0xtTnZjeWgwS1NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NXpZMkZzWlNoMGFHbHpMbDlqZFhKeVpXNTBVbUZrYVhWekxDQjBhR2x6TGw5amRYSnlaVzUwVW1Ga2FYVnpMQ0IwYUdsekxsOWpkWEp5Wlc1MFVtRmthWFZ6S1R0Y2JpQWdJQ0IwYUdsekxuUnlZVzV6YkdGMFpTaDBhR2x6TGw5amRYSnlaVzUwVkdGcGJDNTRMQ0IwYUdsekxsOWpkWEp5Wlc1MFZHRnBiQzU1TENCMGFHbHpMbDlqZFhKeVpXNTBWR0ZwYkM1NktUdGNibHh1SUNBZ0lIUm9hWE11WDJGMGRISlFiM011YzJWMFdGbGFLRGsyTENBd0xDQXdMQ0F3S1R0Y2JpQWdJQ0IwYUdsekxsOWhkSFJ5VUc5ekxuTmxkRmhaV2lnNU55d2dkR2hwY3k1ZlkzVnljbVZ1ZEZSaGFXd3VlQ3dnZEdocGN5NWZZM1Z5Y21WdWRGUmhhV3d1ZVN3Z2RHaHBjeTVmWTNWeWNtVnVkRlJoYVd3dWVpazdYRzVjYmlBZ0lDQjBhR2x6TGw5aGRIUnlVRzl6TG01bFpXUnpWWEJrWVhSbElEMGdkSEoxWlR0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1gySjFhV3hrU1c1a1pYZ29LVG9nZG05cFpDQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQXpNanNnYVNzcktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCcE1TQTlJQ2hwSUNzZ01Ta2dKU0F6TWp0Y2JseHVJQ0FnSUNBZ2RHaHBjeTVmWVhSMGNrbHVaR1Y0TG5ObGRGaFpLR2tnS2lBeUxDQnBMQ0JwTVNrN1hHNGdJQ0FnSUNCMGFHbHpMbDloZEhSeVNXNWtaWGd1YzJWMFdGa29OalFnS3lCcElDb2dNaXdnTXpJZ0t5QnBMQ0F6TWlBcklHa3hLVHRjYmlBZ0lDQWdJSFJvYVhNdVgyRjBkSEpKYm1SbGVDNXpaWFJZV1NneE1qZ2dLeUJwSUNvZ01pd2dOalFnS3lCcExDQTJOQ0FySUdreEtUdGNiaUFnSUNCOVhHNGdJQ0FnZEdocGN5NWZZWFIwY2tsdVpHVjRMbk5sZEZoWktERTVNaXdnT1RZc0lEazNLVHRjYmx4dUlDQWdJSFJvYVhNdVgyRjBkSEpKYm1SbGVDNXVaV1ZrYzFWd1pHRjBaU0E5SUhSeWRXVTdYRzRnSUgxY2JuMWNiaUlzSW1sdGNHOXlkQ0FxSUdGeklGUklVa1ZGSUdaeWIyMGdKM1JvY21WbEp6dGNibWx0Y0c5eWRDQjdJRlpTVFV4dmIydEJkQ0I5SUdaeWIyMGdKeTR1TDFaU1RVeHZiMnRCZENjN1hHNXBiWEJ2Y25RZ2V5QkdZVzVDZFdabVpYSkhaVzl0WlhSeWVTQjlJR1p5YjIwZ0p5NHZkWFJwYkhNdlJtRnVRblZtWm1WeVIyVnZiV1YwY25rbk8xeHVhVzF3YjNKMElIc2dUR2x1WlVGdVpGTndhR1Z5WlVKMVptWmxja2RsYjIxbGRISjVJSDBnWm5KdmJTQW5MaTkxZEdsc2N5OU1hVzVsUVc1a1UzQm9aWEpsUW5WbVptVnlSMlZ2YldWMGNua25PMXh1WEc1amIyNXpkQ0JmY1hWaGRFRWdQU0J1WlhjZ1ZFaFNSVVV1VVhWaGRHVnlibWx2YmlncE8xeHVZMjl1YzNRZ1gzRjFZWFJDSUQwZ2JtVjNJRlJJVWtWRkxsRjFZWFJsY201cGIyNG9LVHRjYm1OdmJuTjBJRjkyTTBFZ1BTQnVaWGNnVkVoU1JVVXVWbVZqZEc5eU15Z3BPMXh1WTI5dWMzUWdYM1l6UWlBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektDazdYRzVjYm1OdmJuTjBJRk5SVWxSZk1sOVBWa1ZTWHpJZ1BTQk5ZWFJvTG5OeGNuUW9NaTR3S1NBdklESXVNRHRjYm1OdmJuTjBJRkZWUVZSZldGbGZRMWM1TUNBOUlHNWxkeUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVLREFzSURBc0lDMVRVVkpVWHpKZlQxWkZVbDh5TENCVFVWSlVYekpmVDFaRlVsOHlLVHRjYm1OdmJuTjBJRlpGUXpOZlVFOVRTVlJKVmtWZldTQTlJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLREF1TUN3Z01TNHdMQ0F3TGpBcE8xeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZsSk5URzl2YTBGMFNHVnNjR1Z5SUdWNGRHVnVaSE1nVkVoU1JVVXVSM0p2ZFhBZ2UxeHVJQ0J3ZFdKc2FXTWdjbVZoWkc5dWJIa2dkbkp0VEc5dmEwRjBPaUJXVWsxTWIyOXJRWFE3WEc0Z0lIQnlhWFpoZEdVZ2NtVmhaRzl1YkhrZ1gyMWxjMmhaWVhjNklGUklVa1ZGTGsxbGMyZzhSbUZ1UW5WbVptVnlSMlZ2YldWMGNua3NJRlJJVWtWRkxrMWxjMmhDWVhOcFkwMWhkR1Z5YVdGc1BqdGNiaUFnY0hKcGRtRjBaU0J5WldGa2IyNXNlU0JmYldWemFGQnBkR05vT2lCVVNGSkZSUzVOWlhOb1BFWmhia0oxWm1abGNrZGxiMjFsZEhKNUxDQlVTRkpGUlM1TlpYTm9RbUZ6YVdOTllYUmxjbWxoYkQ0N1hHNGdJSEJ5YVhaaGRHVWdjbVZoWkc5dWJIa2dYMnhwYm1WVVlYSm5aWFE2SUZSSVVrVkZMa3hwYm1WVFpXZHRaVzUwY3p4TWFXNWxRVzVrVTNCb1pYSmxRblZtWm1WeVIyVnZiV1YwY25rc0lGUklVa1ZGTGt4cGJtVkNZWE5wWTAxaGRHVnlhV0ZzUGp0Y2JseHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvYkc5dmEwRjBPaUJXVWsxTWIyOXJRWFFwSUh0Y2JpQWdJQ0J6ZFhCbGNpZ3BPMXh1SUNBZ0lIUm9hWE11YldGMGNtbDRRWFYwYjFWd1pHRjBaU0E5SUdaaGJITmxPMXh1WEc0Z0lDQWdkR2hwY3k1MmNtMU1iMjlyUVhRZ1BTQnNiMjlyUVhRN1hHNWNiaUFnSUNCN1hHNGdJQ0FnSUNCamIyNXpkQ0JuWlc5dFpYUnllU0E5SUc1bGR5QkdZVzVDZFdabVpYSkhaVzl0WlhSeWVTZ3BPMXh1SUNBZ0lDQWdaMlZ2YldWMGNua3VjbUZrYVhWeklEMGdNQzQxTzF4dVhHNGdJQ0FnSUNCamIyNXpkQ0J0WVhSbGNtbGhiQ0E5SUc1bGR5QlVTRkpGUlM1TlpYTm9RbUZ6YVdOTllYUmxjbWxoYkNoN1hHNGdJQ0FnSUNBZ0lHTnZiRzl5T2lBd2VEQXdabVl3TUN4Y2JpQWdJQ0FnSUNBZ2RISmhibk53WVhKbGJuUTZJSFJ5ZFdVc1hHNGdJQ0FnSUNBZ0lHOXdZV05wZEhrNklEQXVOU3hjYmlBZ0lDQWdJQ0FnYzJsa1pUb2dWRWhTUlVVdVJHOTFZbXhsVTJsa1pTeGNiaUFnSUNBZ0lDQWdaR1Z3ZEdoVVpYTjBPaUJtWVd4elpTeGNiaUFnSUNBZ0lDQWdaR1Z3ZEdoWGNtbDBaVG9nWm1Gc2MyVXNYRzRnSUNBZ0lDQjlLVHRjYmx4dUlDQWdJQ0FnZEdocGN5NWZiV1Z6YUZCcGRHTm9JRDBnYm1WM0lGUklVa1ZGTGsxbGMyZ29aMlZ2YldWMGNua3NJRzFoZEdWeWFXRnNLVHRjYmlBZ0lDQWdJSFJvYVhNdVlXUmtLSFJvYVhNdVgyMWxjMmhRYVhSamFDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWjJWdmJXVjBjbmtnUFNCdVpYY2dSbUZ1UW5WbVptVnlSMlZ2YldWMGNua29LVHRjYmlBZ0lDQWdJR2RsYjIxbGRISjVMbkpoWkdsMWN5QTlJREF1TlR0Y2JseHVJQ0FnSUNBZ1kyOXVjM1FnYldGMFpYSnBZV3dnUFNCdVpYY2dWRWhTUlVVdVRXVnphRUpoYzJsalRXRjBaWEpwWVd3b2UxeHVJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ01IaG1aakF3TURBc1hHNGdJQ0FnSUNBZ0lIUnlZVzV6Y0dGeVpXNTBPaUIwY25WbExGeHVJQ0FnSUNBZ0lDQnZjR0ZqYVhSNU9pQXdMalVzWEc0Z0lDQWdJQ0FnSUhOcFpHVTZJRlJJVWtWRkxrUnZkV0pzWlZOcFpHVXNYRzRnSUNBZ0lDQWdJR1JsY0hSb1ZHVnpkRG9nWm1Gc2MyVXNYRzRnSUNBZ0lDQWdJR1JsY0hSb1YzSnBkR1U2SUdaaGJITmxMRnh1SUNBZ0lDQWdmU2s3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVYMjFsYzJoWllYY2dQU0J1WlhjZ1ZFaFNSVVV1VFdWemFDaG5aVzl0WlhSeWVTd2diV0YwWlhKcFlXd3BPMXh1SUNBZ0lDQWdkR2hwY3k1aFpHUW9kR2hwY3k1ZmJXVnphRmxoZHlrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZTF4dUlDQWdJQ0FnWTI5dWMzUWdaMlZ2YldWMGNua2dQU0J1WlhjZ1RHbHVaVUZ1WkZOd2FHVnlaVUoxWm1abGNrZGxiMjFsZEhKNUtDazdYRzRnSUNBZ0lDQm5aVzl0WlhSeWVTNXlZV1JwZFhNZ1BTQXdMakU3WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJRzFoZEdWeWFXRnNJRDBnYm1WM0lGUklVa1ZGTGt4cGJtVkNZWE5wWTAxaGRHVnlhV0ZzS0h0Y2JpQWdJQ0FnSUNBZ1kyOXNiM0k2SURCNFptWm1abVptTEZ4dUlDQWdJQ0FnSUNCa1pYQjBhRlJsYzNRNklHWmhiSE5sTEZ4dUlDQWdJQ0FnSUNCa1pYQjBhRmR5YVhSbE9pQm1ZV3h6WlN4Y2JpQWdJQ0FnSUgwcE8xeHVYRzRnSUNBZ0lDQjBhR2x6TGw5c2FXNWxWR0Z5WjJWMElEMGdibVYzSUZSSVVrVkZMa3hwYm1WVFpXZHRaVzUwY3loblpXOXRaWFJ5ZVN3Z2JXRjBaWEpwWVd3cE8xeHVJQ0FnSUNBZ2RHaHBjeTVmYkdsdVpWUmhjbWRsZEM1bWNuVnpkSFZ0UTNWc2JHVmtJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQjBhR2x6TG1Ga1pDaDBhR2x6TGw5c2FXNWxWR0Z5WjJWMEtUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1pHbHpjRzl6WlNncE9pQjJiMmxrSUh0Y2JpQWdJQ0IwYUdsekxsOXRaWE5vV1dGM0xtZGxiMjFsZEhKNUxtUnBjM0J2YzJVb0tUdGNiaUFnSUNCMGFHbHpMbDl0WlhOb1dXRjNMbTFoZEdWeWFXRnNMbVJwYzNCdmMyVW9LVHRjYmx4dUlDQWdJSFJvYVhNdVgyMWxjMmhRYVhSamFDNW5aVzl0WlhSeWVTNWthWE53YjNObEtDazdYRzRnSUNBZ2RHaHBjeTVmYldWemFGQnBkR05vTG0xaGRHVnlhV0ZzTG1ScGMzQnZjMlVvS1R0Y2JseHVJQ0FnSUhSb2FYTXVYMnhwYm1WVVlYSm5aWFF1WjJWdmJXVjBjbmt1WkdsemNHOXpaU2dwTzF4dUlDQWdJSFJvYVhNdVgyeHBibVZVWVhKblpYUXViV0YwWlhKcFlXd3VaR2x6Y0c5elpTZ3BPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJSFZ3WkdGMFpVMWhkSEpwZUZkdmNteGtLR1p2Y21ObE9pQmliMjlzWldGdUtUb2dkbTlwWkNCN1hHNGdJQ0FnTHk4Z2RYQmtZWFJsSUdkbGIyMWxkSEpwWlhOY2JpQWdJQ0JqYjI1emRDQjVZWGNnUFNCVVNGSkZSUzVOWVhSb1ZYUnBiSE11UkVWSE1sSkJSQ0FxSUhSb2FYTXVkbkp0VEc5dmEwRjBMbmxoZHp0Y2JpQWdJQ0IwYUdsekxsOXRaWE5vV1dGM0xtZGxiMjFsZEhKNUxuUm9aWFJoSUQwZ2VXRjNPMXh1SUNBZ0lIUm9hWE11WDIxbGMyaFpZWGN1WjJWdmJXVjBjbmt1ZFhCa1lYUmxLQ2s3WEc1Y2JpQWdJQ0JqYjI1emRDQndhWFJqYUNBOUlGUklVa1ZGTGsxaGRHaFZkR2xzY3k1RVJVY3lVa0ZFSUNvZ2RHaHBjeTUyY20xTWIyOXJRWFF1Y0dsMFkyZzdYRzRnSUNBZ2RHaHBjeTVmYldWemFGQnBkR05vTG1kbGIyMWxkSEo1TG5Sb1pYUmhJRDBnY0dsMFkyZzdYRzRnSUNBZ2RHaHBjeTVmYldWemFGQnBkR05vTG1kbGIyMWxkSEo1TG5Wd1pHRjBaU2dwTzF4dVhHNGdJQ0FnTHk4Z1oyVjBJSGR2Y214a0lIQnZjMmwwYVc5dUlHRnVaQ0J4ZFdGMFpYSnVhVzl1WEc0Z0lDQWdkR2hwY3k1MmNtMU1iMjlyUVhRdVoyVjBURzl2YTBGMFYyOXliR1JRYjNOcGRHbHZiaWhmZGpOQktUdGNiaUFnSUNCMGFHbHpMblp5YlV4dmIydEJkQzVuWlhSTWIyOXJRWFJYYjNKc1pGRjFZWFJsY201cGIyNG9YM0YxWVhSQktUdGNibHh1SUNBZ0lDOHZJR05oYkdOMWJHRjBaU0J5YjNSaGRHbHZiaUIxYzJsdVp5Qm1ZV05sUm5KdmJuUmNiaUFnSUNCZmNYVmhkRUV1YlhWc2RHbHdiSGtvZEdocGN5NTJjbTFNYjI5clFYUXVaMlYwUm1GalpVWnliMjUwVVhWaGRHVnlibWx2YmloZmNYVmhkRUlwS1R0Y2JseHVJQ0FnSUM4dklITmxkQ0IwY21GdWMyWnZjbTBnZEc4Z2JXVnphR1Z6WEc0Z0lDQWdkR2hwY3k1ZmJXVnphRmxoZHk1d2IzTnBkR2x2Ymk1amIzQjVLRjkyTTBFcE8xeHVJQ0FnSUhSb2FYTXVYMjFsYzJoWllYY3VjWFZoZEdWeWJtbHZiaTVqYjNCNUtGOXhkV0YwUVNrN1hHNWNiaUFnSUNCMGFHbHpMbDl0WlhOb1VHbDBZMmd1Y0c5emFYUnBiMjR1WTI5d2VTaGZkak5CS1R0Y2JpQWdJQ0IwYUdsekxsOXRaWE5vVUdsMFkyZ3VjWFZoZEdWeWJtbHZiaTVqYjNCNUtGOXhkV0YwUVNrN1hHNGdJQ0FnZEdocGN5NWZiV1Z6YUZCcGRHTm9MbkYxWVhSbGNtNXBiMjR1YlhWc2RHbHdiSGtvWDNGMVlYUkNMbk5sZEVaeWIyMUJlR2x6UVc1bmJHVW9Wa1ZETTE5UVQxTkpWRWxXUlY5WkxDQjVZWGNwS1R0Y2JpQWdJQ0IwYUdsekxsOXRaWE5vVUdsMFkyZ3VjWFZoZEdWeWJtbHZiaTV0ZFd4MGFYQnNlU2hSVlVGVVgxaFpYME5YT1RBcE8xeHVYRzRnSUNBZ0x5OGdkWEJrWVhSbElIUmhjbWRsZENCc2FXNWxJR0Z1WkNCemNHaGxjbVZjYmlBZ0lDQmpiMjV6ZENCN0lIUmhjbWRsZEN3Z1lYVjBiMVZ3WkdGMFpTQjlJRDBnZEdocGN5NTJjbTFNYjI5clFYUTdYRzRnSUNBZ2FXWWdLSFJoY21kbGRDQWhQU0J1ZFd4c0lDWW1JR0YxZEc5VmNHUmhkR1VwSUh0Y2JpQWdJQ0FnSUhSaGNtZGxkQzVuWlhSWGIzSnNaRkJ2YzJsMGFXOXVLRjkyTTBJcExuTjFZaWhmZGpOQktUdGNiaUFnSUNBZ0lIUm9hWE11WDJ4cGJtVlVZWEpuWlhRdVoyVnZiV1YwY25rdWRHRnBiQzVqYjNCNUtGOTJNMElwTzF4dUlDQWdJQ0FnZEdocGN5NWZiR2x1WlZSaGNtZGxkQzVuWlc5dFpYUnllUzUxY0dSaGRHVW9LVHRjYmlBZ0lDQWdJSFJvYVhNdVgyeHBibVZVWVhKblpYUXVjRzl6YVhScGIyNHVZMjl3ZVNoZmRqTkJLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJoY0hCc2VTQjBjbUZ1YzJadmNtMGdkRzhnYldWemFHVnpYRzRnSUNBZ2MzVndaWEl1ZFhCa1lYUmxUV0YwY21sNFYyOXliR1FvWm05eVkyVXBPMXh1SUNCOVhHNTlYRzRpTENKcGJYQnZjblFnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVjYm1OdmJuTjBJRjl3YjNOcGRHbHZiaUE5SUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0NrN1hHNWpiMjV6ZENCZmMyTmhiR1VnUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncE8xeHVYRzR2S2lwY2JpQXFJRUVnY21Wd2JHRmpaVzFsYm5RZ2IyWWdZRTlpYW1WamRETkVMbWRsZEZkdmNteGtVWFZoZEdWeWJtbHZibUF1WEc0Z0tpQkZlSFJ5WVdOMElIUm9aU0IzYjNKc1pDQnhkV0YwWlhKdWFXOXVJRzltSUdGdUlHOWlhbVZqZENCbWNtOXRJR2wwY3lCM2IzSnNaQ0J6Y0dGalpTQnRZWFJ5YVhnc0lIZHBkR2h2ZFhRZ1kyRnNiR2x1WnlCZ1QySnFaV04wTTBRdWRYQmtZWFJsVjI5eWJHUk5ZWFJ5YVhoZ0xseHVJQ29nVlhObElIUm9hWE1nZDJobGJpQjViM1VuY21VZ2MzVnlaU0IwYUdGMElIUm9aU0IzYjNKc1pDQnRZWFJ5YVhnZ2FYTWdkWEF0ZEc4dFpHRjBaUzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdiMkpxWldOMElGUm9aU0J2WW1wbFkzUmNiaUFxSUVCd1lYSmhiU0J2ZFhRZ1FTQjBZWEpuWlhRZ2NYVmhkR1Z5Ym1sdmJseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFYyOXliR1JSZFdGMFpYSnVhVzl1VEdsMFpTaHZZbXBsWTNRNklGUklVa1ZGTGs5aWFtVmpkRE5FTENCdmRYUTZJRlJJVWtWRkxsRjFZWFJsY201cGIyNHBPaUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVJSHRjYmlBZ2IySnFaV04wTG0xaGRISnBlRmR2Y214a0xtUmxZMjl0Y0c5elpTaGZjRzl6YVhScGIyNHNJRzkxZEN3Z1gzTmpZV3hsS1R0Y2JpQWdjbVYwZFhKdUlHOTFkRHRjYm4xY2JpSXNJbWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JseHVMeW9xWEc0Z0tpQkRZV3hqZFd4aGRHVWdZWHBwYlhWMGFDQXZJR0ZzZEdsMGRXUmxJR0Z1WjJ4bGN5Qm1jbTl0SUdFZ2RtVmpkRzl5TGx4dUlDcGNiaUFxSUZSb2FYTWdjbVYwZFhKdWN5QmhJR1JwWm1abGNtVnVZMlVnYjJZZ1lXNW5iR1Z6SUdaeWIyMGdLREVzSURBc0lEQXBMbHh1SUNvZ1FYcHBiWFYwYUNCeVpYQnlaWE5sYm5SeklHRnVJR0Z1WjJ4bElHRnliM1Z1WkNCWklHRjRhWE11WEc0Z0tpQkJiSFJwZEhWa1pTQnlaWEJ5WlhObGJuUnpJR0Z1SUdGdVoyeGxJR0Z5YjNWdVpDQmFJR0Y0YVhNdVhHNGdLaUJKZENCcGN5QnliM1JoZEdWa0lHbHVJR2x1ZEhKcGJuTnBZeUJaTFZvZ2IzSmtaWEl1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSFpsWTNSdmNpQlVhR1VnZG1WamRHOXlYRzRnS2lCQWNtVjBkWEp1Y3lCQklIUjFjR3hsSUdOdmJuUmhhVzV6SUhSM2J5QmhibWRzWlhNc0lHQmJJR0Y2YVcxMWRHZ3NJR0ZzZEdsMGRXUmxJRjFnWEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmpZV3hqUVhwcGJYVjBhRUZzZEdsMGRXUmxLSFpsWTNSdmNqb2dWRWhTUlVVdVZtVmpkRzl5TXlrNklGdGhlbWx0ZFhSb09pQnVkVzFpWlhJc0lHRnNkR2wwZFdSbE9pQnVkVzFpWlhKZElIdGNiaUFnY21WMGRYSnVJRnROWVhSb0xtRjBZVzR5S0MxMlpXTjBiM0l1ZWl3Z2RtVmpkRzl5TG5ncExDQk5ZWFJvTG1GMFlXNHlLSFpsWTNSdmNpNTVMQ0JOWVhSb0xuTnhjblFvZG1WamRHOXlMbmdnS2lCMlpXTjBiM0l1ZUNBcklIWmxZM1J2Y2k1NklDb2dkbVZqZEc5eUxub3BLVjA3WEc1OVhHNGlMQ0l2S2lwY2JpQXFJRTFoYTJVZ2MzVnlaU0IwYUdVZ1lXNW5iR1VnYVhNZ2QybDBhR2x1SUMxUVNTQjBieUJRU1M1Y2JpQXFYRzRnS2lCQVpYaGhiWEJzWlZ4dUlDb2dZR0JnYW5OY2JpQXFJSE5oYm1sMGFYcGxRVzVuYkdVb01TNDFJQ29nVFdGMGFDNVFTU2tnTHk4Z0xUQXVOU0FxSUZCSlhHNGdLaUJnWUdCY2JpQXFYRzRnS2lCQWNHRnlZVzBnWVc1bmJHVWdRVzRnYVc1d2RYUWdZVzVuYkdWY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSE5oYm1sMGFYcGxRVzVuYkdVb1lXNW5iR1U2SUc1MWJXSmxjaWs2SUc1MWJXSmxjaUI3WEc0Z0lHTnZibk4wSUhKdmRXNWtWSFZ5YmlBOUlFMWhkR2d1Y205MWJtUW9ZVzVuYkdVZ0x5QXlMakFnTHlCTllYUm9MbEJKS1R0Y2JpQWdjbVYwZFhKdUlHRnVaMnhsSUMwZ01pNHdJQ29nVFdGMGFDNVFTU0FxSUhKdmRXNWtWSFZ5Ymp0Y2JuMWNiaUlzSW1sdGNHOXlkQ0FxSUdGeklGUklVa1ZGSUdaeWIyMGdKM1JvY21WbEp6dGNibWx0Y0c5eWRDQjdJRlpTVFVoMWJXRnViMmxrSUgwZ1puSnZiU0FuTGk0dmFIVnRZVzV2YVdRbk8xeHVhVzF3YjNKMElIc2daMlYwVjI5eWJHUlJkV0YwWlhKdWFXOXVUR2wwWlNCOUlHWnliMjBnSnk0dUwzVjBhV3h6TDJkbGRGZHZjbXhrVVhWaGRHVnlibWx2Ymt4cGRHVW5PMXh1YVcxd2IzSjBJSHNnY1hWaGRFbHVkbVZ5ZEVOdmJYQmhkQ0I5SUdaeWIyMGdKeTR1TDNWMGFXeHpMM0YxWVhSSmJuWmxjblJEYjIxd1lYUW5PMXh1YVcxd2IzSjBJSHNnWTJGc1kwRjZhVzExZEdoQmJIUnBkSFZrWlNCOUlHWnliMjBnSnk0dmRYUnBiSE12WTJGc1kwRjZhVzExZEdoQmJIUnBkSFZrWlNjN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3SUZaU1RVeHZiMnRCZEVGd2NHeHBaWElnZlNCbWNtOXRJQ2N1TDFaU1RVeHZiMnRCZEVGd2NHeHBaWEluTzF4dWFXMXdiM0owSUhzZ2MyRnVhWFJwZW1WQmJtZHNaU0I5SUdaeWIyMGdKeTR2ZFhScGJITXZjMkZ1YVhScGVtVkJibWRzWlNjN1hHNWNibU52Ym5OMElGWkZRek5mVUU5VFNWUkpWa1ZmV2lBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektEQXVNQ3dnTUM0d0xDQXhMakFwTzF4dVhHNWpiMjV6ZENCZmRqTkJJRDBnYm1WM0lGUklVa1ZGTGxabFkzUnZjak1vS1R0Y2JtTnZibk4wSUY5Mk0wSWdQU0J1WlhjZ1ZFaFNSVVV1Vm1WamRHOXlNeWdwTzF4dVkyOXVjM1FnWDNZelF5QTlJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLQ2s3WEc1amIyNXpkQ0JmY1hWaGRFRWdQU0J1WlhjZ1ZFaFNSVVV1VVhWaGRHVnlibWx2YmlncE8xeHVZMjl1YzNRZ1gzRjFZWFJDSUQwZ2JtVjNJRlJJVWtWRkxsRjFZWFJsY201cGIyNG9LVHRjYm1OdmJuTjBJRjl4ZFdGMFF5QTlJRzVsZHlCVVNGSkZSUzVSZFdGMFpYSnVhVzl1S0NrN1hHNWpiMjV6ZENCZmNYVmhkRVFnUFNCdVpYY2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJpZ3BPMXh1WTI5dWMzUWdYMlYxYkdWeVFTQTlJRzVsZHlCVVNGSkZSUzVGZFd4bGNpZ3BPMXh1WEc0dktpcGNiaUFxSUVFZ1kyeGhjM01nWTI5dWRISnZiSE1nWlhsbElHZGhlbVVnYlc5MlpXMWxiblJ6SUc5bUlHRWdWbEpOTGx4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZsSk5URzl2YTBGMElIdGNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QnlaV0ZrYjI1c2VTQkZWVXhGVWw5UFVrUkZVaUE5SUNkWldGb25PeUF2THlCNVlYY3RjR2wwWTJndGNtOXNiRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1VnYjNKcFoybHVJRzltSUV4dmIydEJkQzRnVUc5emFYUnBiMjRnYjJabWMyVjBJR1p5YjIwZ2RHaGxJR2hsWVdRZ1ltOXVaUzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ2Wm1aelpYUkdjbTl0U0dWaFpFSnZibVVnUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncE8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmRITWdZWE56YjJOcFlYUmxaQ0I3UUd4cGJtc2dWbEpOU0hWdFlXNXZhV1I5TGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhKbFlXUnZibXg1SUdoMWJXRnViMmxrT2lCV1VrMUlkVzFoYm05cFpEdGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJSHRBYkdsdWF5QldVazFNYjI5clFYUkJjSEJzYVdWeWZTQnZaaUIwYUdVZ1RHOXZhMEYwTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdGd2NHeHBaWEk2SUZaU1RVeHZiMnRCZEVGd2NHeHBaWEk3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWxtSUhSb2FYTWdhWE1nZEhKMVpTd2dkR2hsSUV4dmIydEJkQ0IzYVd4c0lHSmxJSFZ3WkdGMFpXUWdZWFYwYjIxaGRHbGpZV3hzZVNCaWVTQmpZV3hzYVc1bklIdEFiR2x1YXlCMWNHUmhkR1Y5TENCMGIzZGhjbVJwYm1jZ2RHaGxJR1JwY21WamRHbHZiaUIwYnlCMGFHVWdlMEJzYVc1cklIUmhjbWRsZEgwdVhHNGdJQ0FxSUdCMGNuVmxZQ0JpZVNCa1pXWmhkV3gwTGx4dUlDQWdLbHh1SUNBZ0tpQlRaV1VnWVd4emJ6b2dlMEJzYVc1cklIUmhjbWRsZEgxY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCaGRYUnZWWEJrWVhSbElEMGdkSEoxWlR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdobElIUmhjbWRsZENCdlltcGxZM1FnYjJZZ2RHaGxJRXh2YjJ0QmRDNWNiaUFnSUNvZ1RtOTBaU0IwYUdGMElHbDBJR1J2WlhNZ2JtOTBJRzFoYTJVZ1lXNTVJSE5sYm5ObElHbG1JSHRBYkdsdWF5QmhkWFJ2VlhCa1lYUmxmU0JwY3lCa2FYTmhZbXhsWkM1Y2JpQWdJQ3BjYmlBZ0lDb2dVMlZsSUdGc2MyODZJSHRBYkdsdWF5QmhkWFJ2VlhCa1lYUmxmVnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSFJoY21kbGREODZJRlJJVWtWRkxrOWlhbVZqZERORUlId2diblZzYkR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdobElHWnliMjUwSUdScGNtVmpkR2x2YmlCdlppQjBhR1VnWm1GalpTNWNiaUFnSUNvZ1NXNTBaVzVrWldRZ2RHOGdZbVVnZFhObFpDQm1iM0lnVmxKTklEQXVNQ0JqYjIxd1lYUWdLRlpTVFNBd0xqQWdiVzlrWld4eklHRnlaU0JtWVdOcGJtY2dXaTBnYVc1emRHVmhaQ0J2WmlCYUt5a3VYRzRnSUNBcUlGbHZkU0IxYzNWaGJHeDVJR1J2YmlkMElIZGhiblFnZEc4Z2RHOTFZMmdnZEdocGN5NWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm1ZV05sUm5KdmJuUWdQU0J1WlhjZ1ZFaFNSVVV1Vm1WamRHOXlNeWd3TGpBc0lEQXVNQ3dnTVM0d0tUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1NYUnpJR04xY25KbGJuUWdZVzVuYkdVZ1lYSnZkVzVrSUZrZ1lYaHBjeXdnYVc0Z1pHVm5jbVZsTGx4dUlDQWdLaTljYmlBZ2NISnZkR1ZqZEdWa0lGOTVZWGM2SUc1MWJXSmxjanRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTWFJ6SUdOMWNuSmxiblFnWVc1bmJHVWdZWEp2ZFc1a0lGa2dZWGhwY3l3Z2FXNGdaR1ZuY21WbExseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkQ0I1WVhjb0tUb2diblZ0WW1WeUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZlV0YzTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbDBjeUJqZFhKeVpXNTBJR0Z1WjJ4bElHRnliM1Z1WkNCWklHRjRhWE1zSUdsdUlHUmxaM0psWlM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCelpYUWdlV0YzS0haaGJIVmxPaUJ1ZFcxaVpYSXBJSHRjYmlBZ0lDQjBhR2x6TGw5NVlYY2dQU0IyWVd4MVpUdGNiaUFnSUNCMGFHbHpMbDl1WldWa2MxVndaR0YwWlNBOUlIUnlkV1U3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1NYUnpJR04xY25KbGJuUWdZVzVuYkdVZ1lYSnZkVzVrSUZnZ1lYaHBjeXdnYVc0Z1pHVm5jbVZsTGx4dUlDQWdLaTljYmlBZ2NISnZkR1ZqZEdWa0lGOXdhWFJqYURvZ2JuVnRZbVZ5TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJKZEhNZ1kzVnljbVZ1ZENCaGJtZHNaU0JoY205MWJtUWdXQ0JoZUdsekxDQnBiaUJrWldkeVpXVXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdaMlYwSUhCcGRHTm9LQ2s2SUc1MWJXSmxjaUI3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDNCcGRHTm9PMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVsMGN5QmpkWEp5Wlc1MElHRnVaMnhsSUdGeWIzVnVaQ0JZSUdGNGFYTXNJR2x1SUdSbFozSmxaUzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6WlhRZ2NHbDBZMmdvZG1Gc2RXVTZJRzUxYldKbGNpa2dlMXh1SUNBZ0lIUm9hWE11WDNCcGRHTm9JRDBnZG1Gc2RXVTdYRzRnSUNBZ2RHaHBjeTVmYm1WbFpITlZjR1JoZEdVZ1BTQjBjblZsTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGTndaV05wWm1sbGN5QjBhR0YwSUdGdVoyeGxjeUJ1WldWa0lIUnZJR0psSUdGd2NHeHBaV1FnZEc4Z2FYUnpJRnRBYkdsdWF5QmhjSEJzYVdWeVhTNWNiaUFnSUNvdlhHNGdJSEJ5YjNSbFkzUmxaQ0JmYm1WbFpITlZjR1JoZEdVNklHSnZiMnhsWVc0N1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZkdmNteGtJSEp2ZEdGMGFXOXVJRzltSUhSb1pTQm9aV0ZrSUdsdUlHbDBjeUJ5WlhOMElIQnZjMlV1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUY5eVpYTjBTR1ZoWkZkdmNteGtVWFZoZEdWeWJtbHZiam9nVkVoU1JVVXVVWFZoZEdWeWJtbHZianRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsY0hKbFkyRjBaV1FnVlhObElIdEFiR2x1YXlCblpYUkZkV3hsY24wZ2FXNXpkR1ZoWkM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCblpYUWdaWFZzWlhJb0tUb2dWRWhTUlVVdVJYVnNaWElnZTF4dUlDQWdJR052Ym5OdmJHVXVkMkZ5YmlnblZsSk5URzl2YTBGME9pQmxkV3hsY2lCcGN5QmtaWEJ5WldOaGRHVmtMaUIxYzJVZ1oyVjBSWFZzWlhJb0tTQnBibk4wWldGa0xpY3BPMXh1WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WjJWMFJYVnNaWElvYm1WM0lGUklVa1ZGTGtWMWJHVnlLQ2twTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlNCaElHNWxkeUI3UUd4cGJtc2dWbEpOVEc5dmEwRjBmUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUdoMWJXRnViMmxrSUVFZ2UwQnNhVzVySUZaU1RVaDFiV0Z1YjJsa2ZWeHVJQ0FnS2lCQWNHRnlZVzBnWVhCd2JHbGxjaUJCSUh0QWJHbHVheUJXVWsxTWIyOXJRWFJCY0hCc2FXVnlmVnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR052Ym5OMGNuVmpkRzl5S0doMWJXRnViMmxrT2lCV1VrMUlkVzFoYm05cFpDd2dZWEJ3YkdsbGNqb2dWbEpOVEc5dmEwRjBRWEJ3YkdsbGNpa2dlMXh1SUNBZ0lIUm9hWE11YUhWdFlXNXZhV1FnUFNCb2RXMWhibTlwWkR0Y2JpQWdJQ0IwYUdsekxtRndjR3hwWlhJZ1BTQmhjSEJzYVdWeU8xeHVYRzRnSUNBZ2RHaHBjeTVmZVdGM0lEMGdNQzR3TzF4dUlDQWdJSFJvYVhNdVgzQnBkR05vSUQwZ01DNHdPMXh1SUNBZ0lIUm9hWE11WDI1bFpXUnpWWEJrWVhSbElEMGdkSEoxWlR0Y2JseHVJQ0FnSUhSb2FYTXVYM0psYzNSSVpXRmtWMjl5YkdSUmRXRjBaWEp1YVc5dUlEMGdkR2hwY3k1blpYUk1iMjlyUVhSWGIzSnNaRkYxWVhSbGNtNXBiMjRvYm1WM0lGUklVa1ZGTGxGMVlYUmxjbTVwYjI0b0tTazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUjJWMElHbDBjeUI1WVhjdGNHbDBZMmdnWVc1bmJHVnpJR0Z6SUdGdUlHQkZkV3hsY21BdVhHNGdJQ0FxSUVSdlpYTWdUazlVSUdOdmJuTnBaR1Z5SUh0QWJHbHVheUJtWVdObFJuSnZiblI5T3lCcGRDQnlaWFIxY201eklHQkZkV3hsY2lnd0xDQXdMQ0F3T3lCY0lsbFlXbHdpS1dBZ1lua2daR1ZtWVhWc2RDQnlaV2RoY21Sc1pYTnpJRzltSUhSb1pTQm1ZV05sUm5KdmJuUWdkbUZzZFdVdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjBZWEpuWlhRZ1ZHaGxJSFJoY21kbGRDQmxkV3hsY2x4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdkbGRFVjFiR1Z5S0hSaGNtZGxkRG9nVkVoU1JVVXVSWFZzWlhJcE9pQlVTRkpGUlM1RmRXeGxjaUI3WEc0Z0lDQWdjbVYwZFhKdUlIUmhjbWRsZEM1elpYUW9WRWhTUlVVdVRXRjBhRlYwYVd4ekxrUkZSekpTUVVRZ0tpQjBhR2x6TGw5d2FYUmphQ3dnVkVoU1JVVXVUV0YwYUZWMGFXeHpMa1JGUnpKU1FVUWdLaUIwYUdsekxsOTVZWGNzSURBdU1Dd2dKMWxZV2ljcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU52Y0hrZ2RHaGxJR2RwZG1WdUlIdEFiR2x1YXlCV1VrMU1iMjlyUVhSOUlHbHVkRzhnZEdocGN5QnZibVV1WEc0Z0lDQXFJSHRBYkdsdWF5Qm9kVzFoYm05cFpIMGdiWFZ6ZENCaVpTQnpZVzFsSUdGeklIUm9aU0J6YjNWeVkyVWdiMjVsTGx4dUlDQWdLaUI3UUd4cGJtc2dZWEJ3YkdsbGNuMGdkMmxzYkNCeVpXWmxjbVZ1WTJVZ2RHaGxJSE5oYldVZ2FXNXpkR0Z1WTJVZ1lYTWdkR2hsSUhOdmRYSmpaU0J2Ym1VdVhHNGdJQ0FxSUVCd1lYSmhiU0J6YjNWeVkyVWdWR2hsSUh0QWJHbHVheUJXVWsxTWIyOXJRWFI5SUhsdmRTQjNZVzUwSUhSdklHTnZjSGxjYmlBZ0lDb2dRSEpsZEhWeWJuTWdkR2hwYzF4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdOdmNIa29jMjkxY21ObE9pQldVazFNYjI5clFYUXBPaUIwYUdseklIdGNiaUFnSUNCcFppQW9kR2hwY3k1b2RXMWhibTlwWkNBaFBUMGdjMjkxY21ObExtaDFiV0Z1YjJsa0tTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0oxWlNUVXh2YjJ0QmREb2dhSFZ0WVc1dmFXUWdiWFZ6ZENCaVpTQnpZVzFsSUdsdUlHOXlaR1Z5SUhSdklHTnZjSGtuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxtOW1abk5sZEVaeWIyMUlaV0ZrUW05dVpTNWpiM0I1S0hOdmRYSmpaUzV2Wm1aelpYUkdjbTl0U0dWaFpFSnZibVVwTzF4dUlDQWdJSFJvYVhNdVlYQndiR2xsY2lBOUlITnZkWEpqWlM1aGNIQnNhV1Z5TzF4dUlDQWdJSFJvYVhNdVlYVjBiMVZ3WkdGMFpTQTlJSE52ZFhKalpTNWhkWFJ2VlhCa1lYUmxPMXh1SUNBZ0lIUm9hWE11ZEdGeVoyVjBJRDBnYzI5MWNtTmxMblJoY21kbGREdGNiaUFnSUNCMGFHbHpMbVpoWTJWR2NtOXVkQzVqYjNCNUtITnZkWEpqWlM1bVlXTmxSbkp2Ym5RcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUJoSUdOc2IyNWxJRzltSUhSb2FYTWdlMEJzYVc1cklGWlNUVXh2YjJ0QmRIMHVYRzRnSUNBcUlFNXZkR1VnZEdoaGRDQjdRR3hwYm1zZ2FIVnRZVzV2YVdSOUlHRnVaQ0I3UUd4cGJtc2dZWEJ3YkdsbGNuMGdkMmxzYkNCeVpXWmxjbVZ1WTJVZ2RHaGxJSE5oYldVZ2FXNXpkR0Z1WTJVZ1lYTWdkR2hwY3lCdmJtVXVYRzRnSUNBcUlFQnlaWFIxY201eklFTnZjR2xsWkNCN1FHeHBibXNnVmxKTlRHOXZhMEYwZlZ4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdOc2IyNWxLQ2s2SUZaU1RVeHZiMnRCZENCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCV1VrMU1iMjlyUVhRb2RHaHBjeTVvZFcxaGJtOXBaQ3dnZEdocGN5NWhjSEJzYVdWeUtTNWpiM0I1S0hSb2FYTXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGMyVjBJSFJvWlNCc2IyOXJRWFFnWkdseVpXTjBhVzl1SUNoNVlYY2dZVzVrSUhCcGRHTm9LU0IwYnlCMGFHVWdhVzVwZEdsaGJDQmthWEpsWTNScGIyNHVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjbVZ6WlhRb0tUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NWZlV0YzSUQwZ01DNHdPMXh1SUNBZ0lIUm9hWE11WDNCcGRHTm9JRDBnTUM0d08xeHVJQ0FnSUhSb2FYTXVYMjVsWldSelZYQmtZWFJsSUQwZ2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCSFpYUWdhWFJ6SUd4dmIydEJkQ0J3YjNOcGRHbHZiaUJwYmlCM2IzSnNaQ0JqYjI5eVpHbHVZWFJsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2RHRnlaMlYwSUVFZ2RHRnlaMlYwSUdCVVNGSkZSUzVXWldOMGIzSXpZRnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZEV4dmIydEJkRmR2Y214a1VHOXphWFJwYjI0b2RHRnlaMlYwT2lCVVNGSkZSUzVXWldOMGIzSXpLVG9nVkVoU1JVVXVWbVZqZEc5eU15QjdYRzRnSUNBZ1kyOXVjM1FnYUdWaFpDQTlJSFJvYVhNdWFIVnRZVzV2YVdRdVoyVjBVbUYzUW05dVpVNXZaR1VvSjJobFlXUW5LU0U3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR0Z5WjJWMExtTnZjSGtvZEdocGN5NXZabVp6WlhSR2NtOXRTR1ZoWkVKdmJtVXBMbUZ3Y0d4NVRXRjBjbWw0TkNob1pXRmtMbTFoZEhKcGVGZHZjbXhrS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkhaWFFnYVhSeklHeHZiMnRCZENCeWIzUmhkR2x2YmlCcGJpQjNiM0pzWkNCamIyOXlaR2x1WVhSbExseHVJQ0FnS2lCRWIyVnpJRTVQVkNCamIyNXphV1JsY2lCN1FHeHBibXNnWm1GalpVWnliMjUwZlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIUmhjbWRsZENCQklIUmhjbWRsZENCZ1ZFaFNSVVV1VVhWaGRHVnlibWx2Ym1CY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCblpYUk1iMjlyUVhSWGIzSnNaRkYxWVhSbGNtNXBiMjRvZEdGeVoyVjBPaUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVLVG9nVkVoU1JVVXVVWFZoZEdWeWJtbHZiaUI3WEc0Z0lDQWdZMjl1YzNRZ2FHVmhaQ0E5SUhSb2FYTXVhSFZ0WVc1dmFXUXVaMlYwVW1GM1FtOXVaVTV2WkdVb0oyaGxZV1FuS1NFN1hHNWNiaUFnSUNCeVpYUjFjbTRnWjJWMFYyOXliR1JSZFdGMFpYSnVhVzl1VEdsMFpTaG9aV0ZrTENCMFlYSm5aWFFwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFZGxkQ0JoSUhGMVlYUmxjbTVwYjI0Z2RHaGhkQ0J5YjNSaGRHVnpJSFJvWlNBcldpQjFibWwwSUhabFkzUnZjaUJ2WmlCMGFHVWdhSFZ0WVc1dmFXUWdTR1ZoWkNCMGJ5QjBhR1VnZTBCc2FXNXJJR1poWTJWR2NtOXVkSDBnWkdseVpXTjBhVzl1TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2RHRnlaMlYwSUVFZ2RHRnlaMlYwSUdCVVNGSkZSUzVSZFdGMFpYSnVhVzl1WUZ4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdkbGRFWmhZMlZHY205dWRGRjFZWFJsY201cGIyNG9kR0Z5WjJWME9pQlVTRkpGUlM1UmRXRjBaWEp1YVc5dUtUb2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJpQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVptRmpaVVp5YjI1MExtUnBjM1JoYm1ObFZHOVRjWFZoY21Wa0tGWkZRek5mVUU5VFNWUkpWa1ZmV2lrZ1BDQXdMakF4S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZEdGeVoyVjBMbU52Y0hrb2RHaHBjeTVmY21WemRFaGxZV1JYYjNKc1pGRjFZWFJsY201cGIyNHBMbWx1ZG1WeWRDZ3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUZ0bVlXTmxSbkp2Ym5SQmVtbHRkWFJvTENCbVlXTmxSbkp2Ym5SQmJIUnBkSFZrWlYwZ1BTQmpZV3hqUVhwcGJYVjBhRUZzZEdsMGRXUmxLSFJvYVhNdVptRmpaVVp5YjI1MEtUdGNiaUFnSUNCZlpYVnNaWEpCTG5ObGRDZ3dMakFzSURBdU5TQXFJRTFoZEdndVVFa2dLeUJtWVdObFJuSnZiblJCZW1sdGRYUm9MQ0JtWVdObFJuSnZiblJCYkhScGRIVmtaU3dnSjFsYVdDY3BPMXh1WEc0Z0lDQWdjbVYwZFhKdUlIUmhjbWRsZEM1elpYUkdjbTl0UlhWc1pYSW9YMlYxYkdWeVFTa3VjSEpsYlhWc2RHbHdiSGtvWDNGMVlYUkVMbU52Y0hrb2RHaHBjeTVmY21WemRFaGxZV1JYYjNKc1pGRjFZWFJsY201cGIyNHBMbWx1ZG1WeWRDZ3BLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCSFpYUWdhWFJ6SUV4dmIydEJkQ0JrYVhKbFkzUnBiMjRnYVc0Z2QyOXliR1FnWTI5dmNtUnBibUYwWlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIUmhjbWRsZENCQklIUmhjbWRsZENCZ1ZFaFNSVVV1Vm1WamRHOXlNMkJjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJuWlhSTWIyOXJRWFJYYjNKc1pFUnBjbVZqZEdsdmJpaDBZWEpuWlhRNklGUklVa1ZGTGxabFkzUnZjak1wT2lCVVNGSkZSUzVXWldOMGIzSXpJSHRjYmlBZ0lDQjBhR2x6TG1kbGRFeHZiMnRCZEZkdmNteGtVWFZoZEdWeWJtbHZiaWhmY1hWaGRFSXBPMXh1SUNBZ0lIUm9hWE11WjJWMFJtRmpaVVp5YjI1MFVYVmhkR1Z5Ym1sdmJpaGZjWFZoZEVNcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhSaGNtZGxkRnh1SUNBZ0lDQWdMbU52Y0hrb1ZrVkRNMTlRVDFOSlZFbFdSVjlhS1Z4dUlDQWdJQ0FnTG1Gd2NHeDVVWFZoZEdWeWJtbHZiaWhmY1hWaGRFSXBYRzRnSUNBZ0lDQXVZWEJ3YkhsUmRXRjBaWEp1YVc5dUtGOXhkV0YwUXlsY2JpQWdJQ0FnSUM1aGNIQnNlVVYxYkdWeUtIUm9hWE11WjJWMFJYVnNaWElvWDJWMWJHVnlRU2twTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGTmxkQ0JwZEhNZ2JHOXZhMEYwSUhSaGNtZGxkQ0J3YjNOcGRHbHZiaTVjYmlBZ0lDcGNiaUFnSUNvZ1RtOTBaU0IwYUdGMElHbDBjeUJ5WlhOMWJIUWdkMmxzYkNCaVpTQnBibk4wWVc1MGJIa2diM1psY25keWFYUjBaVzRnYVdZZ2UwQnNhVzVySUZaU1RVeHZiMnRCZEVobFlXUXVZWFYwYjFWd1pHRjBaWDBnYVhNZ1pXNWhZbXhsWkM1Y2JpQWdJQ3BjYmlBZ0lDb2dTV1lnZVc5MUlIZGhiblFnZEc4Z2RISmhZMnNnWVc0Z2IySnFaV04wSUdOdmJuUnBiblZ2ZFhOc2VTd2dlVzkxSUcxcFoyaDBJSGRoYm5RZ2RHOGdkWE5sSUh0QWJHbHVheUIwWVhKblpYUjlJR2x1YzNSbFlXUXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0J3YjNOcGRHbHZiaUJCSUhSaGNtZGxkQ0J3YjNOcGRHbHZiaXdnYVc0Z2QyOXliR1FnYzNCaFkyVmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnNiMjlyUVhRb2NHOXphWFJwYjI0NklGUklVa1ZGTGxabFkzUnZjak1wT2lCMmIybGtJSHRjYmlBZ0lDQXZMeUJNYjI5cklHRjBJR1JwY21WamRHbHZiaUJwYmlCc2IyTmhiQ0JqYjI5eVpHbHVZWFJsWEc0Z0lDQWdZMjl1YzNRZ2FHVmhaRkp2ZEVScFptWkpibllnUFNCZmNYVmhkRUZjYmlBZ0lDQWdJQzVqYjNCNUtIUm9hWE11WDNKbGMzUklaV0ZrVjI5eWJHUlJkV0YwWlhKdWFXOXVLVnh1SUNBZ0lDQWdMbTExYkhScGNHeDVLSEYxWVhSSmJuWmxjblJEYjIxd1lYUW9kR2hwY3k1blpYUk1iMjlyUVhSWGIzSnNaRkYxWVhSbGNtNXBiMjRvWDNGMVlYUkNLU2twTzF4dUlDQWdJR052Ym5OMElHaGxZV1JRYjNNZ1BTQjBhR2x6TG1kbGRFeHZiMnRCZEZkdmNteGtVRzl6YVhScGIyNG9YM1l6UWlrN1hHNGdJQ0FnWTI5dWMzUWdiRzl2YTBGMFJHbHlJRDBnWDNZelF5NWpiM0I1S0hCdmMybDBhVzl1S1M1emRXSW9hR1ZoWkZCdmN5a3VZWEJ3YkhsUmRXRjBaWEp1YVc5dUtHaGxZV1JTYjNSRWFXWm1TVzUyS1M1dWIzSnRZV3hwZW1Vb0tUdGNibHh1SUNBZ0lDOHZJR05oYkdOMWJHRjBaU0JoYm1kc1pYTmNiaUFnSUNCamIyNXpkQ0JiWVhwcGJYVjBhRVp5YjIwc0lHRnNkR2wwZFdSbFJuSnZiVjBnUFNCallXeGpRWHBwYlhWMGFFRnNkR2wwZFdSbEtIUm9hWE11Wm1GalpVWnliMjUwS1R0Y2JpQWdJQ0JqYjI1emRDQmJZWHBwYlhWMGFGUnZMQ0JoYkhScGRIVmtaVlJ2WFNBOUlHTmhiR05CZW1sdGRYUm9RV3gwYVhSMVpHVW9iRzl2YTBGMFJHbHlLVHRjYmlBZ0lDQmpiMjV6ZENCNVlYY2dQU0J6WVc1cGRHbDZaVUZ1WjJ4bEtHRjZhVzExZEdoVWJ5QXRJR0Y2YVcxMWRHaEdjbTl0S1R0Y2JpQWdJQ0JqYjI1emRDQndhWFJqYUNBOUlITmhibWwwYVhwbFFXNW5iR1VvWVd4MGFYUjFaR1ZHY205dElDMGdZV3gwYVhSMVpHVlVieWs3SUM4dklITndhVzV1YVc1bklDZ3hMQ0F3TENBd0tTQkRRMWNnWVhKdmRXNWtJRm9nWVhocGN5QnRZV3RsY3lCMGFHVWdkbVZqZEc5eUlHeHZiMnNnZFhBc0lIZG9hV3hsSUhOd2FXNXVhVzVuSUNnd0xDQXdMQ0F4S1NCRFExY2dZWEp2ZFc1a0lGZ2dZWGhwY3lCdFlXdGxjeUIwYUdVZ2RtVmpkRzl5SUd4dmIyc2daRzkzYmx4dVhHNGdJQ0FnTHk4Z1lYQndiSGtnWVc1bmJHVnpYRzRnSUNBZ2RHaHBjeTVmZVdGM0lEMGdWRWhTUlVVdVRXRjBhRlYwYVd4ekxsSkJSREpFUlVjZ0tpQjVZWGM3WEc0Z0lDQWdkR2hwY3k1ZmNHbDBZMmdnUFNCVVNGSkZSUzVOWVhSb1ZYUnBiSE11VWtGRU1rUkZSeUFxSUhCcGRHTm9PMXh1WEc0Z0lDQWdkR2hwY3k1ZmJtVmxaSE5WY0dSaGRHVWdQU0IwY25WbE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlZ3WkdGMFpTQjBhR1VnVmxKTlRHOXZhMEYwU0dWaFpDNWNiaUFnSUNvZ1NXWWdlMEJzYVc1cklHRjFkRzlWY0dSaGRHVjlJR2x6SUdWdVlXSnNaV1FzSUhSb2FYTWdkMmxzYkNCdFlXdGxJR2wwSUd4dmIyc2dZWFFnZEdobElIdEFiR2x1YXlCMFlYSm5aWFI5TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ1pHVnNkR0VnWkdWc2RHRlVhVzFsTENCcGRDQnBjMjRuZENCMWMyVmtJSFJvYjNWbmFDNGdXVzkxSUdOaGJpQjFjMlVnZEdobElIQmhjbUZ0WlhSbGNpQnBaaUI1YjNVZ2QyRnVkQ0IwYnlCMWMyVWdkR2hwY3lCcGJpQjViM1Z5SUc5M2JpQmxlSFJsYm1SbFpDQjdRR3hwYm1zZ1ZsSk5URzl2YTBGMGZTNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QjFjR1JoZEdVb1pHVnNkR0U2SUc1MWJXSmxjaWs2SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxuUmhjbWRsZENBaFBTQnVkV3hzSUNZbUlIUm9hWE11WVhWMGIxVndaR0YwWlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVzYjI5clFYUW9kR2hwY3k1MFlYSm5aWFF1WjJWMFYyOXliR1JRYjNOcGRHbHZiaWhmZGpOQktTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdVgyNWxaV1J6VlhCa1lYUmxLU0I3WEc0Z0lDQWdJQ0IwYUdsekxsOXVaV1ZrYzFWd1pHRjBaU0E5SUdaaGJITmxPMXh1WEc0Z0lDQWdJQ0IwYUdsekxtRndjR3hwWlhJdVlYQndiSGxaWVhkUWFYUmphQ2gwYUdsekxsOTVZWGNzSUhSb2FYTXVYM0JwZEdOb0tUdGNiaUFnSUNCOVhHNGdJSDFjYm4xY2JpSXNJbWx0Y0c5eWRDQjdJRlpTVFVoMWJXRnViMmxrSUgwZ1puSnZiU0FuTGk0dmFIVnRZVzV2YVdRbk8xeHVhVzF3YjNKMElDb2dZWE1nVkVoU1JVVWdabkp2YlNBbmRHaHlaV1VuTzF4dWFXMXdiM0owSUhSNWNHVWdleUJXVWsxTWIyOXJRWFJCY0hCc2FXVnlJSDBnWm5KdmJTQW5MaTlXVWsxTWIyOXJRWFJCY0hCc2FXVnlKenRjYm1sdGNHOXlkQ0I3SUZaU1RVeHZiMnRCZEZKaGJtZGxUV0Z3SUgwZ1puSnZiU0FuTGk5V1VrMU1iMjlyUVhSU1lXNW5aVTFoY0NjN1hHNXBiWEJ2Y25RZ2V5QmpZV3hqUVhwcGJYVjBhRUZzZEdsMGRXUmxJSDBnWm5KdmJTQW5MaTkxZEdsc2N5OWpZV3hqUVhwcGJYVjBhRUZzZEdsMGRXUmxKenRjYm1sdGNHOXlkQ0I3SUdkbGRGZHZjbXhrVVhWaGRHVnlibWx2Ymt4cGRHVWdmU0JtY205dElDY3VMaTkxZEdsc2N5OW5aWFJYYjNKc1pGRjFZWFJsY201cGIyNU1hWFJsSnp0Y2JseHVZMjl1YzNRZ1ZrVkRNMTlRVDFOSlZFbFdSVjlhSUQwZ2JtVjNJRlJJVWtWRkxsWmxZM1J2Y2pNb01DNHdMQ0F3TGpBc0lERXVNQ2s3WEc1Y2JtTnZibk4wSUY5eGRXRjBRU0E5SUc1bGR5QlVTRkpGUlM1UmRXRjBaWEp1YVc5dUtDazdYRzVqYjI1emRDQmZjWFZoZEVJZ1BTQnVaWGNnVkVoU1JVVXVVWFZoZEdWeWJtbHZiaWdwTzF4dVkyOXVjM1FnWDJWMWJHVnlRU0E5SUc1bGR5QlVTRkpGUlM1RmRXeGxjaWd3TGpBc0lEQXVNQ3dnTUM0d0xDQW5XVmhhSnlrN1hHNWNiaThxS2x4dUlDb2dRU0JqYkdGemN5QjBhR0YwSUdGd2NHeHBaWE1nWlhsbElHZGhlbVVnWkdseVpXTjBhVzl1Y3lCMGJ5QmhJRlpTVFM1Y2JpQXFJRWwwSUhkcGJHd2dZbVVnZFhObFpDQmllU0I3UUd4cGJtc2dWbEpOVEc5dmEwRjBmUzVjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUZaU1RVeHZiMnRCZEVKdmJtVkJjSEJzYVdWeUlHbHRjR3hsYldWdWRITWdWbEpOVEc5dmEwRjBRWEJ3YkdsbGNpQjdYRzRnSUM4cUtseHVJQ0FnS2lCU1pYQnlaWE5sYm5RZ2FYUnpJSFI1Y0dVZ2IyWWdZWEJ3YkdsbGNpNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ2NtVmhaRzl1YkhrZ2RIbHdaU0E5SUNkaWIyNWxKenRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTWFJ6SUdGemMyOWphV0YwWldRZ2UwQnNhVzVySUZaU1RVaDFiV0Z1YjJsa2ZTNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnlaV0ZrYjI1c2VTQm9kVzFoYm05cFpEb2dWbEpOU0hWdFlXNXZhV1E3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUVnZTBCc2FXNXJJRlpTVFV4dmIydEJkRkpoYm1kbFRXRndmU0JtYjNJZ2FHOXlhWHB2Ym5SaGJDQnBibmRoY21RZ2JXOTJaVzFsYm5RdUlGUm9aU0JzWldaMElHVjVaU0J0YjNabGN5QnlhV2RvZEM0Z1ZHaGxJSEpwWjJoMElHVjVaU0J0YjNabGN5QnNaV1owTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhKaGJtZGxUV0Z3U0c5eWFYcHZiblJoYkVsdWJtVnlPaUJXVWsxTWIyOXJRWFJTWVc1blpVMWhjRHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRU0I3UUd4cGJtc2dWbEpOVEc5dmEwRjBVbUZ1WjJWTllYQjlJR1p2Y2lCb2IzSnBlbTl1ZEdGc0lHOTFkSGRoY21RZ2JXOTJaVzFsYm5RdUlGUm9aU0JzWldaMElHVjVaU0J0YjNabGN5QnNaV1owTGlCVWFHVWdjbWxuYUhRZ1pYbGxJRzF2ZG1WeklISnBaMmgwTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhKaGJtZGxUV0Z3U0c5eWFYcHZiblJoYkU5MWRHVnlPaUJXVWsxTWIyOXJRWFJTWVc1blpVMWhjRHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRU0I3UUd4cGJtc2dWbEpOVEc5dmEwRjBVbUZ1WjJWTllYQjlJR1p2Y2lCMlpYSjBhV05oYkNCa2IzZHVkMkZ5WkNCdGIzWmxiV1Z1ZEM0Z1FtOTBhQ0JsZVdWeklHMXZkbVVnZFhCM1lYSmtjeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ5WVc1blpVMWhjRlpsY25ScFkyRnNSRzkzYmpvZ1ZsSk5URzl2YTBGMFVtRnVaMlZOWVhBN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVFZ2UwQnNhVzVySUZaU1RVeHZiMnRCZEZKaGJtZGxUV0Z3ZlNCbWIzSWdkbVZ5ZEdsallXd2dkWEIzWVhKa0lHMXZkbVZ0Wlc1MExpQkNiM1JvSUdWNVpYTWdiVzkyWlNCa2IzZHVkMkZ5WkhNdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2NtRnVaMlZOWVhCV1pYSjBhV05oYkZWd09pQldVazFNYjI5clFYUlNZVzVuWlUxaGNEdGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJR1p5YjI1MElHUnBjbVZqZEdsdmJpQnZaaUIwYUdVZ1ptRmpaUzVjYmlBZ0lDb2dTVzUwWlc1a1pXUWdkRzhnWW1VZ2RYTmxaQ0JtYjNJZ1ZsSk5JREF1TUNCamIyMXdZWFFnS0ZaU1RTQXdMakFnYlc5a1pXeHpJR0Z5WlNCbVlXTnBibWNnV2kwZ2FXNXpkR1ZoWkNCdlppQmFLeWt1WEc0Z0lDQXFJRmx2ZFNCMWMzVmhiR3g1SUdSdmJpZDBJSGRoYm5RZ2RHOGdkRzkxWTJnZ2RHaHBjeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJtWVdObFJuSnZiblE2SUZSSVVrVkZMbFpsWTNSdmNqTTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aU0J5WlhOMElIRjFZWFJsY201cGIyNGdiMllnVEdWbWRFVjVaU0JpYjI1bExseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmZjbVZ6ZEZGMVlYUk1aV1owUlhsbE9pQlVTRkpGUlM1UmRXRjBaWEp1YVc5dU8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdjbVZ6ZENCeGRXRjBaWEp1YVc5dUlHOW1JRkpwWjJoMFJYbGxJR0p2Ym1VdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElGOXlaWE4wVVhWaGRGSnBaMmgwUlhsbE9pQlVTRkpGUlM1UmRXRjBaWEp1YVc5dU8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdkMjl5YkdRdGMzQmhZMlVnY21WemRDQnhkV0YwWlhKdWFXOXVJRzltSUhSb1pTQndZWEpsYm5RZ2IyWWdkR2hsSUdoMWJXRnViMmxrSUV4bFpuUkZlV1V1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUY5eVpYTjBUR1ZtZEVWNVpWQmhjbVZ1ZEZkdmNteGtVWFZoZERvZ1ZFaFNSVVV1VVhWaGRHVnlibWx2Ymp0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdobElIZHZjbXhrTFhOd1lXTmxJSEpsYzNRZ2NYVmhkR1Z5Ym1sdmJpQnZaaUIwYUdVZ2NHRnlaVzUwSUc5bUlIUm9aU0JvZFcxaGJtOXBaQ0JTYVdkb2RFVjVaUzVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWDNKbGMzUlNhV2RvZEVWNVpWQmhjbVZ1ZEZkdmNteGtVWFZoZERvZ1ZFaFNSVVV1VVhWaGRHVnlibWx2Ymp0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxJR0VnYm1WM0lIdEFiR2x1YXlCV1VrMU1iMjlyUVhSQ2IyNWxRWEJ3YkdsbGNuMHVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0JvZFcxaGJtOXBaQ0JCSUh0QWJHbHVheUJXVWsxSWRXMWhibTlwWkgxY2JpQWdJQ29nUUhCaGNtRnRJSEpoYm1kbFRXRndTRzl5YVhwdmJuUmhiRWx1Ym1WeUlFRWdlMEJzYVc1cklGWlNUVXh2YjJ0QmRGSmhibWRsVFdGd2ZTQjFjMlZrSUdadmNpQnBibTVsY2lCMGNtRnVjM1psY25ObElHUnBjbVZqZEdsdmJseHVJQ0FnS2lCQWNHRnlZVzBnY21GdVoyVk5ZWEJJYjNKcGVtOXVkR0ZzVDNWMFpYSWdRU0I3UUd4cGJtc2dWbEpOVEc5dmEwRjBVbUZ1WjJWTllYQjlJSFZ6WldRZ1ptOXlJRzkxZEdWeUlIUnlZVzV6ZG1WeWMyVWdaR2x5WldOMGFXOXVYRzRnSUNBcUlFQndZWEpoYlNCeVlXNW5aVTFoY0ZabGNuUnBZMkZzUkc5M2JpQkJJSHRBYkdsdWF5QldVazFNYjI5clFYUlNZVzVuWlUxaGNIMGdkWE5sWkNCbWIzSWdaRzkzYmlCa2FYSmxZM1JwYjI1Y2JpQWdJQ29nUUhCaGNtRnRJSEpoYm1kbFRXRndWbVZ5ZEdsallXeFZjQ0JCSUh0QWJHbHVheUJXVWsxTWIyOXJRWFJTWVc1blpVMWhjSDBnZFhObFpDQm1iM0lnZFhBZ1pHbHlaV04wYVc5dVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9YRzRnSUNBZ2FIVnRZVzV2YVdRNklGWlNUVWgxYldGdWIybGtMRnh1SUNBZ0lISmhibWRsVFdGd1NHOXlhWHB2Ym5SaGJFbHVibVZ5T2lCV1VrMU1iMjlyUVhSU1lXNW5aVTFoY0N4Y2JpQWdJQ0J5WVc1blpVMWhjRWh2Y21sNmIyNTBZV3hQZFhSbGNqb2dWbEpOVEc5dmEwRjBVbUZ1WjJWTllYQXNYRzRnSUNBZ2NtRnVaMlZOWVhCV1pYSjBhV05oYkVSdmQyNDZJRlpTVFV4dmIydEJkRkpoYm1kbFRXRndMRnh1SUNBZ0lISmhibWRsVFdGd1ZtVnlkR2xqWVd4VmNEb2dWbEpOVEc5dmEwRjBVbUZ1WjJWTllYQXNYRzRnSUNrZ2UxeHVJQ0FnSUhSb2FYTXVhSFZ0WVc1dmFXUWdQU0JvZFcxaGJtOXBaRHRjYmx4dUlDQWdJSFJvYVhNdWNtRnVaMlZOWVhCSWIzSnBlbTl1ZEdGc1NXNXVaWElnUFNCeVlXNW5aVTFoY0VodmNtbDZiMjUwWVd4SmJtNWxjanRjYmlBZ0lDQjBhR2x6TG5KaGJtZGxUV0Z3U0c5eWFYcHZiblJoYkU5MWRHVnlJRDBnY21GdVoyVk5ZWEJJYjNKcGVtOXVkR0ZzVDNWMFpYSTdYRzRnSUNBZ2RHaHBjeTV5WVc1blpVMWhjRlpsY25ScFkyRnNSRzkzYmlBOUlISmhibWRsVFdGd1ZtVnlkR2xqWVd4RWIzZHVPMXh1SUNBZ0lIUm9hWE11Y21GdVoyVk5ZWEJXWlhKMGFXTmhiRlZ3SUQwZ2NtRnVaMlZOWVhCV1pYSjBhV05oYkZWd08xeHVYRzRnSUNBZ2RHaHBjeTVtWVdObFJuSnZiblFnUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlnd0xqQXNJREF1TUN3Z01TNHdLVHRjYmx4dUlDQWdJQzh2SUhObGRDQnlaWE4wSUhGMVlYUmxjbTVwYjI1elhHNGdJQ0FnZEdocGN5NWZjbVZ6ZEZGMVlYUk1aV1owUlhsbElEMGdibVYzSUZSSVVrVkZMbEYxWVhSbGNtNXBiMjRvS1R0Y2JpQWdJQ0IwYUdsekxsOXlaWE4wVVhWaGRGSnBaMmgwUlhsbElEMGdibVYzSUZSSVVrVkZMbEYxWVhSbGNtNXBiMjRvS1R0Y2JpQWdJQ0IwYUdsekxsOXlaWE4wVEdWbWRFVjVaVkJoY21WdWRGZHZjbXhrVVhWaGRDQTlJRzVsZHlCVVNGSkZSUzVSZFdGMFpYSnVhVzl1S0NrN1hHNGdJQ0FnZEdocGN5NWZjbVZ6ZEZKcFoyaDBSWGxsVUdGeVpXNTBWMjl5YkdSUmRXRjBJRDBnYm1WM0lGUklVa1ZGTGxGMVlYUmxjbTVwYjI0b0tUdGNibHh1SUNBZ0lHTnZibk4wSUd4bFpuUkZlV1VnUFNCMGFHbHpMbWgxYldGdWIybGtMbWRsZEZKaGQwSnZibVZPYjJSbEtDZHNaV1owUlhsbEp5azdYRzRnSUNBZ1kyOXVjM1FnY21sbmFIUkZlV1VnUFNCMGFHbHpMbWgxYldGdWIybGtMbWRsZEZKaGQwSnZibVZPYjJSbEtDZHlhV2RvZEVWNVpTY3BPMXh1WEc0Z0lDQWdhV1lnS0d4bFpuUkZlV1VwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVYM0psYzNSUmRXRjBUR1ZtZEVWNVpTNWpiM0I1S0d4bFpuUkZlV1V1Y1hWaGRHVnlibWx2YmlrN1hHNGdJQ0FnSUNCblpYUlhiM0pzWkZGMVlYUmxjbTVwYjI1TWFYUmxLR3hsWm5SRmVXVXVjR0Z5Wlc1MElTd2dkR2hwY3k1ZmNtVnpkRXhsWm5SRmVXVlFZWEpsYm5SWGIzSnNaRkYxWVhRcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHlhV2RvZEVWNVpTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZmNtVnpkRkYxWVhSU2FXZG9kRVY1WlM1amIzQjVLSEpwWjJoMFJYbGxMbkYxWVhSbGNtNXBiMjRwTzF4dUlDQWdJQ0FnWjJWMFYyOXliR1JSZFdGMFpYSnVhVzl1VEdsMFpTaHlhV2RvZEVWNVpTNXdZWEpsYm5RaExDQjBhR2x6TGw5eVpYTjBVbWxuYUhSRmVXVlFZWEpsYm5SWGIzSnNaRkYxWVhRcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJjSEJzZVNCMGFHVWdhVzV3ZFhRZ1lXNW5iR1VnZEc4Z2FYUnpJR0Z6YzI5amFXRjBaV1FnVmxKTklHMXZaR1ZzTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2VXRjNJRkp2ZEdGMGFXOXVJR0Z5YjNWdVpDQlpJR0Y0YVhNc0lHbHVJR1JsWjNKbFpWeHVJQ0FnS2lCQWNHRnlZVzBnY0dsMFkyZ2dVbTkwWVhScGIyNGdZWEp2ZFc1a0lGZ2dZWGhwY3l3Z2FXNGdaR1ZuY21WbFhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1lYQndiSGxaWVhkUWFYUmphQ2g1WVhjNklHNTFiV0psY2l3Z2NHbDBZMmc2SUc1MWJXSmxjaWs2SUhadmFXUWdlMXh1SUNBZ0lHTnZibk4wSUd4bFpuUkZlV1VnUFNCMGFHbHpMbWgxYldGdWIybGtMbWRsZEZKaGQwSnZibVZPYjJSbEtDZHNaV1owUlhsbEp5azdYRzRnSUNBZ1kyOXVjM1FnY21sbmFIUkZlV1VnUFNCMGFHbHpMbWgxYldGdWIybGtMbWRsZEZKaGQwSnZibVZPYjJSbEtDZHlhV2RvZEVWNVpTY3BPMXh1SUNBZ0lHTnZibk4wSUd4bFpuUkZlV1ZPYjNKdFlXeHBlbVZrSUQwZ2RHaHBjeTVvZFcxaGJtOXBaQzVuWlhST2IzSnRZV3hwZW1Wa1FtOXVaVTV2WkdVb0oyeGxablJGZVdVbktUdGNiaUFnSUNCamIyNXpkQ0J5YVdkb2RFVjVaVTV2Y20xaGJHbDZaV1FnUFNCMGFHbHpMbWgxYldGdWIybGtMbWRsZEU1dmNtMWhiR2w2WldSQ2IyNWxUbTlrWlNnbmNtbG5hSFJGZVdVbktUdGNiaUFnSUNBdkx5QnNaV1owWEc0Z0lDQWdhV1lnS0d4bFpuUkZlV1VwSUh0Y2JpQWdJQ0FnSUdsbUlDaHdhWFJqYUNBOElEQXVNQ2tnZTF4dUlDQWdJQ0FnSUNCZlpYVnNaWEpCTG5nZ1BTQXRWRWhTUlVVdVRXRjBhRlYwYVd4ekxrUkZSekpTUVVRZ0tpQjBhR2x6TG5KaGJtZGxUV0Z3Vm1WeWRHbGpZV3hFYjNkdUxtMWhjQ2d0Y0dsMFkyZ3BPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdYMlYxYkdWeVFTNTRJRDBnVkVoU1JVVXVUV0YwYUZWMGFXeHpMa1JGUnpKU1FVUWdLaUIwYUdsekxuSmhibWRsVFdGd1ZtVnlkR2xqWVd4VmNDNXRZWEFvY0dsMFkyZ3BPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb2VXRjNJRHdnTUM0d0tTQjdYRzRnSUNBZ0lDQWdJRjlsZFd4bGNrRXVlU0E5SUMxVVNGSkZSUzVOWVhSb1ZYUnBiSE11UkVWSE1sSkJSQ0FxSUhSb2FYTXVjbUZ1WjJWTllYQkliM0pwZW05dWRHRnNTVzV1WlhJdWJXRndLQzE1WVhjcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ1gyVjFiR1Z5UVM1NUlEMGdWRWhTUlVVdVRXRjBhRlYwYVd4ekxrUkZSekpTUVVRZ0tpQjBhR2x6TG5KaGJtZGxUV0Z3U0c5eWFYcHZiblJoYkU5MWRHVnlMbTFoY0NoNVlYY3BPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JmY1hWaGRFRXVjMlYwUm5KdmJVVjFiR1Z5S0Y5bGRXeGxja0VwTzF4dUlDQWdJQ0FnZEdocGN5NWZaMlYwVjI5eWJHUkdZV05sUm5KdmJuUlJkV0YwS0Y5eGRXRjBRaWs3WEc1Y2JpQWdJQ0FnSUM4dklGOXhkV0YwUWlBcUlGOXhkV0YwUVNBcUlGOXhkV0YwUWw0dE1WeHVJQ0FnSUNBZ0x5OGdkMmhsY21VZ1gzRjFZWFJCSUdseklFeHZiMnRCZENCeWIzUmhkR2x2Ymx4dUlDQWdJQ0FnTHk4Z1lXNWtJRjl4ZFdGMFFpQnBjeUIzYjNKc1pFWmhZMlZHY205dWRGRjFZWFJjYmlBZ0lDQWdJR3hsWm5SRmVXVk9iM0p0WVd4cGVtVmtJUzV4ZFdGMFpYSnVhVzl1TG1OdmNIa29YM0YxWVhSQ0tTNXRkV3gwYVhCc2VTaGZjWFZoZEVFcExtMTFiSFJwY0d4NUtGOXhkV0YwUWk1cGJuWmxjblFvS1NrN1hHNWNiaUFnSUNBZ0lGOXhkV0YwUVM1amIzQjVLSFJvYVhNdVgzSmxjM1JNWldaMFJYbGxVR0Z5Wlc1MFYyOXliR1JSZFdGMEtUdGNibHh1SUNBZ0lDQWdMeThnWDNGMVlYUkJYaTB4SUNvZ2JHVm1kRVY1WlU1dmNtMWhiR2w2WldRdWNYVmhkR1Z5Ym1sdmJpQXFJRjl4ZFdGMFFTQXFJSEpsYzNSUmRXRjBUR1ZtZEVWNVpWeHVJQ0FnSUNBZ0x5OGdkMmhsY21VZ1gzRjFZWFJCSUdseklISmxjM1JNWldaMFJYbGxVR0Z5Wlc1MFYyOXliR1JSZFdGMFhHNGdJQ0FnSUNCc1pXWjBSWGxsTG5GMVlYUmxjbTVwYjI1Y2JpQWdJQ0FnSUNBZ0xtTnZjSGtvYkdWbWRFVjVaVTV2Y20xaGJHbDZaV1FoTG5GMVlYUmxjbTVwYjI0cFhHNGdJQ0FnSUNBZ0lDNXRkV3gwYVhCc2VTaGZjWFZoZEVFcFhHNGdJQ0FnSUNBZ0lDNXdjbVZ0ZFd4MGFYQnNlU2hmY1hWaGRFRXVhVzUyWlhKMEtDa3BYRzRnSUNBZ0lDQWdJQzV0ZFd4MGFYQnNlU2gwYUdsekxsOXlaWE4wVVhWaGRFeGxablJGZVdVcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklISnBaMmgwWEc0Z0lDQWdhV1lnS0hKcFoyaDBSWGxsS1NCN1hHNGdJQ0FnSUNCcFppQW9jR2wwWTJnZ1BDQXdMakFwSUh0Y2JpQWdJQ0FnSUNBZ1gyVjFiR1Z5UVM1NElEMGdMVlJJVWtWRkxrMWhkR2hWZEdsc2N5NUVSVWN5VWtGRUlDb2dkR2hwY3k1eVlXNW5aVTFoY0ZabGNuUnBZMkZzUkc5M2JpNXRZWEFvTFhCcGRHTm9LVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJRjlsZFd4bGNrRXVlQ0E5SUZSSVVrVkZMazFoZEdoVmRHbHNjeTVFUlVjeVVrRkVJQ29nZEdocGN5NXlZVzVuWlUxaGNGWmxjblJwWTJGc1ZYQXViV0Z3S0hCcGRHTm9LVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnYVdZZ0tIbGhkeUE4SURBdU1Da2dlMXh1SUNBZ0lDQWdJQ0JmWlhWc1pYSkJMbmtnUFNBdFZFaFNSVVV1VFdGMGFGVjBhV3h6TGtSRlJ6SlNRVVFnS2lCMGFHbHpMbkpoYm1kbFRXRndTRzl5YVhwdmJuUmhiRTkxZEdWeUxtMWhjQ2d0ZVdGM0tUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lGOWxkV3hsY2tFdWVTQTlJRlJJVWtWRkxrMWhkR2hWZEdsc2N5NUVSVWN5VWtGRUlDb2dkR2hwY3k1eVlXNW5aVTFoY0VodmNtbDZiMjUwWVd4SmJtNWxjaTV0WVhBb2VXRjNLVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnWDNGMVlYUkJMbk5sZEVaeWIyMUZkV3hsY2loZlpYVnNaWEpCS1R0Y2JpQWdJQ0FnSUhSb2FYTXVYMmRsZEZkdmNteGtSbUZqWlVaeWIyNTBVWFZoZENoZmNYVmhkRUlwTzF4dVhHNGdJQ0FnSUNBdkx5QmZjWFZoZEVJZ0tpQmZjWFZoZEVFZ0tpQmZjWFZoZEVKZUxURmNiaUFnSUNBZ0lDOHZJSGRvWlhKbElGOXhkV0YwUVNCcGN5Qk1iMjlyUVhRZ2NtOTBZWFJwYjI1Y2JpQWdJQ0FnSUM4dklHRnVaQ0JmY1hWaGRFSWdhWE1nZDI5eWJHUkdZV05sUm5KdmJuUlJkV0YwWEc0Z0lDQWdJQ0J5YVdkb2RFVjVaVTV2Y20xaGJHbDZaV1FoTG5GMVlYUmxjbTVwYjI0dVkyOXdlU2hmY1hWaGRFSXBMbTExYkhScGNHeDVLRjl4ZFdGMFFTa3ViWFZzZEdsd2JIa29YM0YxWVhSQ0xtbHVkbVZ5ZENncEtUdGNibHh1SUNBZ0lDQWdYM0YxWVhSQkxtTnZjSGtvZEdocGN5NWZjbVZ6ZEZKcFoyaDBSWGxsVUdGeVpXNTBWMjl5YkdSUmRXRjBLVHRjYmx4dUlDQWdJQ0FnTHk4Z1gzRjFZWFJCWGkweElDb2djbWxuYUhSRmVXVk9iM0p0WVd4cGVtVmtMbkYxWVhSbGNtNXBiMjRnS2lCZmNYVmhkRUVnS2lCeVpYTjBVWFZoZEZKcFoyaDBSWGxsWEc0Z0lDQWdJQ0F2THlCM2FHVnlaU0JmY1hWaGRFRWdhWE1nY21WemRGSnBaMmgwUlhsbFVHRnlaVzUwVjI5eWJHUlJkV0YwWEc0Z0lDQWdJQ0J5YVdkb2RFVjVaUzV4ZFdGMFpYSnVhVzl1WEc0Z0lDQWdJQ0FnSUM1amIzQjVLSEpwWjJoMFJYbGxUbTl5YldGc2FYcGxaQ0V1Y1hWaGRHVnlibWx2YmlsY2JpQWdJQ0FnSUNBZ0xtMTFiSFJwY0d4NUtGOXhkV0YwUVNsY2JpQWdJQ0FnSUNBZ0xuQnlaVzExYkhScGNHeDVLRjl4ZFdGMFFTNXBiblpsY25Rb0tTbGNiaUFnSUNBZ0lDQWdMbTExYkhScGNHeDVLSFJvYVhNdVgzSmxjM1JSZFdGMFVtbG5hSFJGZVdVcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z3Y21WallYUmxaQ0JWYzJVZ2UwQnNhVzVySUdGd2NHeDVXV0YzVUdsMFkyaDlJR2x1YzNSbFlXUXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdiRzl2YTBGMEtHVjFiR1Z5T2lCVVNGSkZSUzVGZFd4bGNpazZJSFp2YVdRZ2UxeHVJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpZ25WbEpOVEc5dmEwRjBRbTl1WlVGd2NHeHBaWEk2SUd4dmIydEJkQ2dwSUdseklHUmxjSEpsWTJGMFpXUXVJSFZ6WlNCaGNIQnNlU2dwSUdsdWMzUmxZV1F1SnlrN1hHNWNiaUFnSUNCamIyNXpkQ0I1WVhjZ1BTQlVTRkpGUlM1TllYUm9WWFJwYkhNdVVrRkVNa1JGUnlBcUlHVjFiR1Z5TG5rN1hHNGdJQ0FnWTI5dWMzUWdjR2wwWTJnZ1BTQlVTRkpGUlM1TllYUm9WWFJwYkhNdVVrRkVNa1JGUnlBcUlHVjFiR1Z5TG5nN1hHNWNiaUFnSUNCMGFHbHpMbUZ3Y0d4NVdXRjNVR2wwWTJnb2VXRjNMQ0J3YVhSamFDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUjJWMElHRWdjWFZoZEdWeWJtbHZiaUIwYUdGMElISnZkR0YwWlhNZ2RHaGxJSGR2Y214a0xYTndZV05sSUN0YUlIVnVhWFFnZG1WamRHOXlJSFJ2SUhSb1pTQjdRR3hwYm1zZ1ptRmpaVVp5YjI1MGZTQmthWEpsWTNScGIyNHVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0IwWVhKblpYUWdRU0IwWVhKblpYUWdZRlJJVWtWRkxsRjFZWFJsY201cGIyNWdYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjluWlhSWGIzSnNaRVpoWTJWR2NtOXVkRkYxWVhRb2RHRnlaMlYwT2lCVVNGSkZSUzVSZFdGMFpYSnVhVzl1S1RvZ1ZFaFNSVVV1VVhWaGRHVnlibWx2YmlCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11Wm1GalpVWnliMjUwTG1ScGMzUmhibU5sVkc5VGNYVmhjbVZrS0ZaRlF6TmZVRTlUU1ZSSlZrVmZXaWtnUENBd0xqQXhLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR0Z5WjJWMExtbGtaVzUwYVhSNUtDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnVzJaaFkyVkdjbTl1ZEVGNmFXMTFkR2dzSUdaaFkyVkdjbTl1ZEVGc2RHbDBkV1JsWFNBOUlHTmhiR05CZW1sdGRYUm9RV3gwYVhSMVpHVW9kR2hwY3k1bVlXTmxSbkp2Ym5RcE8xeHVJQ0FnSUY5bGRXeGxja0V1YzJWMEtEQXVNQ3dnTUM0MUlDb2dUV0YwYUM1UVNTQXJJR1poWTJWR2NtOXVkRUY2YVcxMWRHZ3NJR1poWTJWR2NtOXVkRUZzZEdsMGRXUmxMQ0FuV1ZwWUp5azdYRzVjYmlBZ0lDQnlaWFIxY200Z2RHRnlaMlYwTG5ObGRFWnliMjFGZFd4bGNpaGZaWFZzWlhKQktUdGNiaUFnZlZ4dWZWeHVJaXdpYVcxd2IzSjBJSHNnVmxKTlJYaHdjbVZ6YzJsdmJrMWhibUZuWlhJZ2ZTQm1jbTl0SUNjdUxpOWxlSEJ5WlhOemFXOXVjeWM3WEc1cGJYQnZjblFnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVwYlhCdmNuUWdkSGx3WlNCN0lGWlNUVXh2YjJ0QmRFRndjR3hwWlhJZ2ZTQm1jbTl0SUNjdUwxWlNUVXh2YjJ0QmRFRndjR3hwWlhJbk8xeHVhVzF3YjNKMElIc2dWbEpOVEc5dmEwRjBVbUZ1WjJWTllYQWdmU0JtY205dElDY3VMMVpTVFV4dmIydEJkRkpoYm1kbFRXRndKenRjYmx4dUx5b3FYRzRnS2lCQklHTnNZWE56SUhSb1lYUWdZWEJ3YkdsbGN5QmxlV1VnWjJGNlpTQmthWEpsWTNScGIyNXpJSFJ2SUdFZ1ZsSk5MbHh1SUNvZ1NYUWdkMmxzYkNCaVpTQjFjMlZrSUdKNUlIdEFiR2x1YXlCV1VrMU1iMjlyUVhSOUxseHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdWbEpOVEc5dmEwRjBSWGh3Y21WemMybHZia0Z3Y0d4cFpYSWdhVzF3YkdWdFpXNTBjeUJXVWsxTWIyOXJRWFJCY0hCc2FXVnlJSHRjYmlBZ0x5b3FYRzRnSUNBcUlGSmxjSEpsYzJWdWRDQnBkSE1nZEhsd1pTQnZaaUJoY0hCc2FXVnlMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QnlaV0ZrYjI1c2VTQjBlWEJsSUQwZ0oyVjRjSEpsYzNOcGIyNG5PMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpkSE1nWVhOemIyTnBZWFJsWkNCN1FHeHBibXNnVmxKTlJYaHdjbVZ6YzJsdmJrMWhibUZuWlhKOUxseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklISmxZV1J2Ym14NUlHVjRjSEpsYzNOcGIyNXpPaUJXVWsxRmVIQnlaWE56YVc5dVRXRnVZV2RsY2p0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nU1hRZ2QyOXVKM1FnWW1VZ2RYTmxaQ0JwYmlCbGVIQnlaWE56YVc5dUlHRndjR3hwWlhJdVhHNGdJQ0FxSUZObFpTQmhiSE52T2lCN1FHeHBibXNnY21GdVoyVk5ZWEJJYjNKcGVtOXVkR0ZzVDNWMFpYSjlYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjbUZ1WjJWTllYQkliM0pwZW05dWRHRnNTVzV1WlhJNklGWlNUVXh2YjJ0QmRGSmhibWRsVFdGd08xeHVYRzRnSUM4cUtseHVJQ0FnS2lCQklIdEFiR2x1YXlCV1VrMU1iMjlyUVhSU1lXNW5aVTFoY0gwZ1ptOXlJR2h2Y21sNmIyNTBZV3dnYlc5MlpXMWxiblF1SUVKdmRHZ2daWGxsY3lCdGIzWmxJR3hsWm5RZ2IzSWdjbWxuYUhRdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2NtRnVaMlZOWVhCSWIzSnBlbTl1ZEdGc1QzVjBaWEk2SUZaU1RVeHZiMnRCZEZKaGJtZGxUV0Z3TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJCSUh0QWJHbHVheUJXVWsxTWIyOXJRWFJTWVc1blpVMWhjSDBnWm05eUlIWmxjblJwWTJGc0lHUnZkMjUzWVhKa0lHMXZkbVZ0Wlc1MExpQkNiM1JvSUdWNVpYTWdiVzkyWlNCMWNIZGhjbVJ6TGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhKaGJtZGxUV0Z3Vm1WeWRHbGpZV3hFYjNkdU9pQldVazFNYjI5clFYUlNZVzVuWlUxaGNEdGNibHh1SUNBdktpcGNiaUFnSUNvZ1FTQjdRR3hwYm1zZ1ZsSk5URzl2YTBGMFVtRnVaMlZOWVhCOUlHWnZjaUIyWlhKMGFXTmhiQ0IxY0hkaGNtUWdiVzkyWlcxbGJuUXVJRUp2ZEdnZ1pYbGxjeUJ0YjNabElHUnZkMjUzWVhKa2N5NWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnlZVzVuWlUxaGNGWmxjblJwWTJGc1ZYQTZJRlpTVFV4dmIydEJkRkpoYm1kbFRXRndPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRjbVZoZEdVZ1lTQnVaWGNnZTBCc2FXNXJJRlpTVFV4dmIydEJkRVY0Y0hKbGMzTnBiMjVCY0hCc2FXVnlmUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUdWNGNISmxjM05wYjI1eklFRWdlMEJzYVc1cklGWlNUVVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlmVnh1SUNBZ0tpQkFjR0Z5WVcwZ2NtRnVaMlZOWVhCSWIzSnBlbTl1ZEdGc1NXNXVaWElnUVNCN1FHeHBibXNnVmxKTlRHOXZhMEYwVW1GdVoyVk5ZWEI5SUhWelpXUWdabTl5SUdsdWJtVnlJSFJ5WVc1emRtVnljMlVnWkdseVpXTjBhVzl1WEc0Z0lDQXFJRUJ3WVhKaGJTQnlZVzVuWlUxaGNFaHZjbWw2YjI1MFlXeFBkWFJsY2lCQklIdEFiR2x1YXlCV1VrMU1iMjlyUVhSU1lXNW5aVTFoY0gwZ2RYTmxaQ0JtYjNJZ2IzVjBaWElnZEhKaGJuTjJaWEp6WlNCa2FYSmxZM1JwYjI1Y2JpQWdJQ29nUUhCaGNtRnRJSEpoYm1kbFRXRndWbVZ5ZEdsallXeEViM2R1SUVFZ2UwQnNhVzVySUZaU1RVeHZiMnRCZEZKaGJtZGxUV0Z3ZlNCMWMyVmtJR1p2Y2lCa2IzZHVJR1JwY21WamRHbHZibHh1SUNBZ0tpQkFjR0Z5WVcwZ2NtRnVaMlZOWVhCV1pYSjBhV05oYkZWd0lFRWdlMEJzYVc1cklGWlNUVXh2YjJ0QmRGSmhibWRsVFdGd2ZTQjFjMlZrSUdadmNpQjFjQ0JrYVhKbFkzUnBiMjVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJqYjI1emRISjFZM1J2Y2loY2JpQWdJQ0JsZUhCeVpYTnphVzl1Y3pvZ1ZsSk5SWGh3Y21WemMybHZiazFoYm1GblpYSXNYRzRnSUNBZ2NtRnVaMlZOWVhCSWIzSnBlbTl1ZEdGc1NXNXVaWEk2SUZaU1RVeHZiMnRCZEZKaGJtZGxUV0Z3TEZ4dUlDQWdJSEpoYm1kbFRXRndTRzl5YVhwdmJuUmhiRTkxZEdWeU9pQldVazFNYjI5clFYUlNZVzVuWlUxaGNDeGNiaUFnSUNCeVlXNW5aVTFoY0ZabGNuUnBZMkZzUkc5M2Jqb2dWbEpOVEc5dmEwRjBVbUZ1WjJWTllYQXNYRzRnSUNBZ2NtRnVaMlZOWVhCV1pYSjBhV05oYkZWd09pQldVazFNYjI5clFYUlNZVzVuWlUxaGNDeGNiaUFnS1NCN1hHNGdJQ0FnZEdocGN5NWxlSEJ5WlhOemFXOXVjeUE5SUdWNGNISmxjM05wYjI1ek8xeHVYRzRnSUNBZ2RHaHBjeTV5WVc1blpVMWhjRWh2Y21sNmIyNTBZV3hKYm01bGNpQTlJSEpoYm1kbFRXRndTRzl5YVhwdmJuUmhiRWx1Ym1WeU8xeHVJQ0FnSUhSb2FYTXVjbUZ1WjJWTllYQkliM0pwZW05dWRHRnNUM1YwWlhJZ1BTQnlZVzVuWlUxaGNFaHZjbWw2YjI1MFlXeFBkWFJsY2p0Y2JpQWdJQ0IwYUdsekxuSmhibWRsVFdGd1ZtVnlkR2xqWVd4RWIzZHVJRDBnY21GdVoyVk5ZWEJXWlhKMGFXTmhiRVJ2ZDI0N1hHNGdJQ0FnZEdocGN5NXlZVzVuWlUxaGNGWmxjblJwWTJGc1ZYQWdQU0J5WVc1blpVMWhjRlpsY25ScFkyRnNWWEE3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FYQndiSGtnZEdobElHbHVjSFYwSUdGdVoyeGxJSFJ2SUdsMGN5QmhjM052WTJsaGRHVmtJRlpTVFNCdGIyUmxiQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUhsaGR5QlNiM1JoZEdsdmJpQmhjbTkxYm1RZ1dTQmhlR2x6TENCcGJpQmtaV2R5WldWY2JpQWdJQ29nUUhCaGNtRnRJSEJwZEdOb0lGSnZkR0YwYVc5dUlHRnliM1Z1WkNCWUlHRjRhWE1zSUdsdUlHUmxaM0psWlZ4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdGd2NHeDVXV0YzVUdsMFkyZ29lV0YzT2lCdWRXMWlaWElzSUhCcGRHTm9PaUJ1ZFcxaVpYSXBPaUIyYjJsa0lIdGNiaUFnSUNCcFppQW9jR2wwWTJnZ1BDQXdMakFwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVaWGh3Y21WemMybHZibk11YzJWMFZtRnNkV1VvSjJ4dmIydEViM2R1Snl3Z01DNHdLVHRjYmlBZ0lDQWdJSFJvYVhNdVpYaHdjbVZ6YzJsdmJuTXVjMlYwVm1Gc2RXVW9KMnh2YjJ0VmNDY3NJSFJvYVhNdWNtRnVaMlZOWVhCV1pYSjBhV05oYkZWd0xtMWhjQ2d0Y0dsMFkyZ3BLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVsZUhCeVpYTnphVzl1Y3k1elpYUldZV3gxWlNnbmJHOXZhMVZ3Snl3Z01DNHdLVHRjYmlBZ0lDQWdJSFJvYVhNdVpYaHdjbVZ6YzJsdmJuTXVjMlYwVm1Gc2RXVW9KMnh2YjJ0RWIzZHVKeXdnZEdocGN5NXlZVzVuWlUxaGNGWmxjblJwWTJGc1JHOTNiaTV0WVhBb2NHbDBZMmdwS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2VXRjNJRHdnTUM0d0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG1WNGNISmxjM05wYjI1ekxuTmxkRlpoYkhWbEtDZHNiMjlyVEdWbWRDY3NJREF1TUNrN1hHNGdJQ0FnSUNCMGFHbHpMbVY0Y0hKbGMzTnBiMjV6TG5ObGRGWmhiSFZsS0Nkc2IyOXJVbWxuYUhRbkxDQjBhR2x6TG5KaGJtZGxUV0Z3U0c5eWFYcHZiblJoYkU5MWRHVnlMbTFoY0NndGVXRjNLU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lIUm9hWE11Wlhod2NtVnpjMmx2Ym5NdWMyVjBWbUZzZFdVb0oyeHZiMnRTYVdkb2RDY3NJREF1TUNrN1hHNGdJQ0FnSUNCMGFHbHpMbVY0Y0hKbGMzTnBiMjV6TG5ObGRGWmhiSFZsS0Nkc2IyOXJUR1ZtZENjc0lIUm9hWE11Y21GdVoyVk5ZWEJJYjNKcGVtOXVkR0ZzVDNWMFpYSXViV0Z3S0hsaGR5a3BPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWd2NtVmpZWFJsWkNCVmMyVWdlMEJzYVc1cklHRndjR3g1V1dGM1VHbDBZMmg5SUdsdWMzUmxZV1F1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nYkc5dmEwRjBLR1YxYkdWeU9pQlVTRkpGUlM1RmRXeGxjaWs2SUhadmFXUWdlMXh1SUNBZ0lHTnZibk52YkdVdWQyRnliaWduVmxKTlRHOXZhMEYwUW05dVpVRndjR3hwWlhJNklHeHZiMnRCZENncElHbHpJR1JsY0hKbFkyRjBaV1F1SUhWelpTQmhjSEJzZVNncElHbHVjM1JsWVdRdUp5azdYRzVjYmlBZ0lDQmpiMjV6ZENCNVlYY2dQU0JVU0ZKRlJTNU5ZWFJvVlhScGJITXVVa0ZFTWtSRlJ5QXFJR1YxYkdWeUxuazdYRzRnSUNBZ1kyOXVjM1FnY0dsMFkyZ2dQU0JVU0ZKRlJTNU5ZWFJvVlhScGJITXVVa0ZFTWtSRlJ5QXFJR1YxYkdWeUxuZzdYRzVjYmlBZ0lDQjBhR2x6TG1Gd2NHeDVXV0YzVUdsMFkyZ29lV0YzTENCd2FYUmphQ2s3WEc0Z0lIMWNibjFjYmlJc0ltbHRjRzl5ZENCN0lITmhkSFZ5WVhSbElIMGdabkp2YlNBbkxpNHZkWFJwYkhNdmMyRjBkWEpoZEdVbk8xeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZsSk5URzl2YTBGMFVtRnVaMlZOWVhBZ2UxeHVJQ0F2S2lwY2JpQWdJQ29nVEdsdGFYUnpJSFJvWlNCdFlYaHBiWFZ0SUdGdVoyeGxJRzltSUhSb1pTQnBibkIxZENCaGJtZHNaU0J2WmlCMGFHVWdURzl2YTBGMElIWmxZM1J2Y2lCbWNtOXRJSFJvWlNCbWNtOXVkQ0J2WmlCMGFHVWdhR1ZoWkNBb2RHaGxJSEJ2YzJsMGFYWmxJSG9nWVhocGN5a3VYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdhVzV3ZFhSTllYaFdZV3gxWlRvZ2JuVnRZbVZ5TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhCeVpYTmxiblJ6SUdGdUlHRnVaMnhsSUNocGJpQmtaV2R5WldWektTQm1iM0lnWW05dVpTQjBlWEJsSUc5bUlFeHZiMnRCZENCaGNIQnNhV1Z5Y3l3Z2IzSWdZU0IzWldsbmFIUWdabTl5SUdWNGNISmxjM05wYjI0Z2RIbHdaU0J2WmlCTWIyOXJRWFFnWVhCd2JHbGxjbk11WEc0Z0lDQXFJRlJvWlNCcGJuQjFkQ0IyWVd4MVpTQjNhV3hzSUhSaGEyVWdZREV1TUdBZ2QyaGxiaUIwYUdVZ2FXNXdkWFFnWVc1bmJHVWdaWEYxWVd4eklDaHZjaUJuY21WaGRHVnlLU0IwYnlCN1FHeHBibXNnYVc1d2RYUk5ZWGhXWVd4MVpYMHVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdiM1YwY0hWMFUyTmhiR1U2SUc1MWJXSmxjanRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbElHRWdibVYzSUh0QWJHbHVheUJXVWsxTWIyOXJRWFJTWVc1blpVMWhjSDB1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCcGJuQjFkRTFoZUZaaGJIVmxJRlJvWlNCN1FHeHBibXNnYVc1d2RYUk5ZWGhXWVd4MVpYMGdiMllnZEdobElHMWhjRnh1SUNBZ0tpQkFjR0Z5WVcwZ2IzVjBjSFYwVTJOaGJHVWdWR2hsSUh0QWJHbHVheUJ2ZFhSd2RYUlRZMkZzWlgwZ2IyWWdkR2hsSUcxaGNGeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHTnZibk4wY25WamRHOXlLR2x1Y0hWMFRXRjRWbUZzZFdVNklHNTFiV0psY2l3Z2IzVjBjSFYwVTJOaGJHVTZJRzUxYldKbGNpa2dlMXh1SUNBZ0lIUm9hWE11YVc1d2RYUk5ZWGhXWVd4MVpTQTlJR2x1Y0hWMFRXRjRWbUZzZFdVN1hHNGdJQ0FnZEdocGN5NXZkWFJ3ZFhSVFkyRnNaU0E5SUc5MWRIQjFkRk5qWVd4bE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVYyWVd4MVlYUmxJR0Z1SUdsdWNIVjBJSFpoYkhWbElHRnVaQ0J2ZFhSd2RYUWdZU0J0WVhCd1pXUWdkbUZzZFdVdVhHNGdJQ0FxSUVCd1lYSmhiU0J6Y21NZ1ZHaGxJR2x1Y0hWMElIWmhiSFZsWEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nYldGd0tITnlZem9nYm5WdFltVnlLVG9nYm5WdFltVnlJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTV2ZFhSd2RYUlRZMkZzWlNBcUlITmhkSFZ5WVhSbEtITnlZeUF2SUhSb2FYTXVhVzV3ZFhSTllYaFdZV3gxWlNrN1hHNGdJSDFjYm4xY2JpSXNJbWx0Y0c5eWRDQjBlWEJsSUNvZ1lYTWdWakJXVWswZ1puSnZiU0FuUUhCcGVHbDJMM1I1Y0dWekxYWnliUzB3TGpBbk8xeHVhVzF3YjNKMElIUjVjR1VnS2lCaGN5QldNVlpTVFZOamFHVnRZU0JtY205dElDZEFjR2w0YVhZdmRIbHdaWE10ZG5KdFl5MTJjbTB0TVM0d0p6dGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1IweFVSaXdnUjB4VVJreHZZV1JsY2xCc2RXZHBiaXdnUjB4VVJsQmhjbk5sY2lCOUlHWnliMjBnSjNSb2NtVmxMMlY0WVcxd2JHVnpMMnB6YlM5c2IyRmtaWEp6TDBkTVZFWk1iMkZrWlhJdWFuTW5PMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QldVazFGZUhCeVpYTnphVzl1VFdGdVlXZGxjaUI5SUdaeWIyMGdKeTR1TDJWNGNISmxjM05wYjI1ekwxWlNUVVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlKenRjYm1sdGNHOXlkQ0IwZVhCbElIc2dWbEpOU0hWdFlXNXZhV1FnZlNCbWNtOXRJQ2N1TGk5b2RXMWhibTlwWkM5V1VrMUlkVzFoYm05cFpDYzdYRzVwYlhCdmNuUWdleUJXVWsxTWIyOXJRWFJJWld4d1pYSWdmU0JtY205dElDY3VMMmhsYkhCbGNuTXZWbEpOVEc5dmEwRjBTR1ZzY0dWeUp6dGNibWx0Y0c5eWRDQjdJRlpTVFV4dmIydEJkQ0I5SUdaeWIyMGdKeTR2VmxKTlRHOXZhMEYwSnp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnVmxKTlRHOXZhMEYwUVhCd2JHbGxjaUI5SUdaeWIyMGdKeTR2VmxKTlRHOXZhMEYwUVhCd2JHbGxjaWM3WEc1cGJYQnZjblFnZXlCV1VrMU1iMjlyUVhSQ2IyNWxRWEJ3YkdsbGNpQjlJR1p5YjIwZ0p5NHZWbEpOVEc5dmEwRjBRbTl1WlVGd2NHeHBaWEluTzF4dWFXMXdiM0owSUhzZ1ZsSk5URzl2YTBGMFJYaHdjbVZ6YzJsdmJrRndjR3hwWlhJZ2ZTQm1jbTl0SUNjdUwxWlNUVXh2YjJ0QmRFVjRjSEpsYzNOcGIyNUJjSEJzYVdWeUp6dGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1ZsSk5URzl2YTBGMFRHOWhaR1Z5VUd4MVoybHVUM0IwYVc5dWN5QjlJR1p5YjIwZ0p5NHZWbEpOVEc5dmEwRjBURzloWkdWeVVHeDFaMmx1VDNCMGFXOXVjeWM3WEc1cGJYQnZjblFnZXlCV1VrMU1iMjlyUVhSU1lXNW5aVTFoY0NCOUlHWnliMjBnSnk0dlZsSk5URzl2YTBGMFVtRnVaMlZOWVhBbk8xeHVhVzF3YjNKMElIc2dSMHhVUmlCaGN5QkhURlJHVTJOb1pXMWhJSDBnWm5KdmJTQW5RR2RzZEdZdGRISmhibk5tYjNKdEwyTnZjbVVuTzF4dVhHNHZLaXBjYmlBcUlGQnZjM05wWW14bElITndaV01nZG1WeWMybHZibk1nYVhRZ2NtVmpiMmR1YVhwbGN5NWNiaUFxTDF4dVkyOXVjM1FnVUU5VFUwbENURVZmVTFCRlExOVdSVkpUU1U5T1V5QTlJRzVsZHlCVFpYUW9XeWN4TGpBbkxDQW5NUzR3TFdKbGRHRW5YU2s3WEc1Y2JpOHFLbHh1SUNvZ1ZHaGxJRzFwYm1sdGRXMGdjR1Z5YldsMGRHVmtJSFpoYkhWbElHWnZjaUI3UUd4cGJtc2dWakZXVWsxVFkyaGxiV0V1VEc5dmEwRjBVbUZ1WjJWTllYQXVhVzV3ZFhSTllYaFdZV3gxWlgwdVhHNGdLaUJKWmlCMGFHVWdaMmwyWlc0Z2RtRnNkV1VnYVhNZ2MyMWhiR3hsY2lCMGFHRnVJSFJvYVhNc0lIUm9aU0JzYjJGa1pYSWdjMmh2ZDNNZ1lTQjNZWEp1YVc1bklHRnVaQ0JqYkdGdGNITWdkWEFnZEdobElIWmhiSFZsTGx4dUlDb3ZYRzVqYjI1emRDQkpUbEJWVkY5TlFWaGZWa0ZNVlVWZlRVbE9TVTFWVFNBOUlEQXVNREU3WEc1Y2JpOHFLbHh1SUNvZ1FTQndiSFZuYVc0Z2IyWWdSMHhVUmt4dllXUmxjaUIwYUdGMElHbHRjRzl5ZEhNZ1lTQjdRR3hwYm1zZ1ZsSk5URzl2YTBGMGZTQm1jbTl0SUdFZ1ZsSk5JR1Y0ZEdWdWMybHZiaUJ2WmlCaElFZE1WRVl1WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCV1VrMU1iMjlyUVhSTWIyRmtaWEpRYkhWbmFXNGdhVzF3YkdWdFpXNTBjeUJIVEZSR1RHOWhaR1Z5VUd4MVoybHVJSHRjYmlBZ0x5b3FYRzRnSUNBcUlGTndaV05wWm5rZ1lXNGdUMkpxWldOME0wUWdkRzhnWVdSa0lIdEFiR2x1YXlCV1VrMU1iMjlyUVhSSVpXeHdaWEo5SUhNdVhHNGdJQ0FxSUVsbUlHNXZkQ0J6Y0dWamFXWnBaV1FzSUdobGJIQmxjaUIzYVd4c0lHNXZkQ0JpWlNCamNtVmhkR1ZrTGx4dUlDQWdLaUJKWmlCZ2NtVnVaR1Z5VDNKa1pYSmdJR2x6SUhObGRDQjBieUIwYUdVZ2NtOXZkQ3dnYUdWc2NHVnljeUIzYVd4c0lHTnZjSGtnZEdobElITmhiV1VnWUhKbGJtUmxjazl5WkdWeVlDQXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdhR1ZzY0dWeVVtOXZkRDg2SUZSSVVrVkZMazlpYW1WamRETkVPMXh1WEc0Z0lIQjFZbXhwWXlCeVpXRmtiMjVzZVNCd1lYSnpaWEk2SUVkTVZFWlFZWEp6WlhJN1hHNWNiaUFnY0hWaWJHbGpJR2RsZENCdVlXMWxLQ2s2SUhOMGNtbHVaeUI3WEc0Z0lDQWdMeThnVjJVZ2MyaHZkV3hrSUhWelpTQjBhR1VnWlhoMFpXNXphVzl1SUc1aGJXVWdhVzV6ZEdWaFpDQmlkWFFnZDJVZ2FHRjJaU0J0ZFd4MGFYQnNaU0J3YkhWbmFXNXpJR1p2Y2lCaGJpQmxlSFJsYm5OcGIyNHVMaTVjYmlBZ0lDQnlaWFIxY200Z0oxWlNUVXh2YjJ0QmRFeHZZV1JsY2xCc2RXZHBiaWM3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2NHRnljMlZ5T2lCSFRGUkdVR0Z5YzJWeUxDQnZjSFJwYjI1elB6b2dWbEpOVEc5dmEwRjBURzloWkdWeVVHeDFaMmx1VDNCMGFXOXVjeWtnZTF4dUlDQWdJSFJvYVhNdWNHRnljMlZ5SUQwZ2NHRnljMlZ5TzF4dVhHNGdJQ0FnZEdocGN5NW9aV3h3WlhKU2IyOTBJRDBnYjNCMGFXOXVjejh1YUdWc2NHVnlVbTl2ZER0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCaGMzbHVZeUJoWm5SbGNsSnZiM1FvWjJ4MFpqb2dSMHhVUmlrNklGQnliMjFwYzJVOGRtOXBaRDRnZTF4dUlDQWdJR052Ym5OMElIWnliVWgxYldGdWIybGtJRDBnWjJ4MFppNTFjMlZ5UkdGMFlTNTJjbTFJZFcxaGJtOXBaQ0JoY3lCV1VrMUlkVzFoYm05cFpDQjhJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJQzh2SUdWNGNHeHBZMmwwYkhrZ1pHbHpkR2x1WjNWcGMyZ2diblZzYkNCaGJtUWdkVzVrWldacGJtVmtYRzRnSUNBZ0x5OGdjMmx1WTJVZ2RuSnRTSFZ0WVc1dmFXUWdiV2xuYUhRZ1ltVWdiblZzYkNCaGN5QmhJSEpsYzNWc2RGeHVJQ0FnSUdsbUlDaDJjbTFJZFcxaGJtOXBaQ0E5UFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kbkp0U0hWdFlXNXZhV1FnUFQwOUlIVnVaR1ZtYVc1bFpDa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZFdVazFNYjI5clFYUk1iMkZrWlhKUWJIVm5hVzQ2SUhaeWJVaDFiV0Z1YjJsa0lHbHpJSFZ1WkdWbWFXNWxaQzRnVmxKTlNIVnRZVzV2YVdSTWIyRmtaWEpRYkhWbmFXNGdhR0YyWlNCMGJ5QmlaU0IxYzJWa0lHWnBjbk4wSnlrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdkbkp0Ulhod2NtVnpjMmx2YmsxaGJtRm5aWElnUFNCbmJIUm1MblZ6WlhKRVlYUmhMblp5YlVWNGNISmxjM05wYjI1TllXNWhaMlZ5SUdGeklGWlNUVVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlJSHdnZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnYVdZZ0tIWnliVVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlJRDA5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaDJjbTFGZUhCeVpYTnphVzl1VFdGdVlXZGxjaUE5UFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lDZFdVazFNYjI5clFYUk1iMkZrWlhKUWJIVm5hVzQ2SUhaeWJVVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeUlHbHpJSFZ1WkdWbWFXNWxaQzRnVmxKTlJYaHdjbVZ6YzJsdmJreHZZV1JsY2xCc2RXZHBiaUJvWVhabElIUnZJR0psSUhWelpXUWdabWx5YzNRbkxGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCbmJIUm1MblZ6WlhKRVlYUmhMblp5YlV4dmIydEJkQ0E5SUdGM1lXbDBJSFJvYVhNdVgybHRjRzl5ZENobmJIUm1MQ0IyY20xSWRXMWhibTlwWkN3Z2RuSnRSWGh3Y21WemMybHZiazFoYm1GblpYSXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVsdGNHOXlkQ0JoSUh0QWJHbHVheUJXVWsxTWIyOXJRWFI5SUdaeWIyMGdZU0JXVWswdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQm5iSFJtSUVFZ2NHRnljMlZrSUhKbGMzVnNkQ0J2WmlCSFRGUkdJSFJoYTJWdUlHWnliMjBnUjB4VVJreHZZV1JsY2x4dUlDQWdLaUJBY0dGeVlXMGdhSFZ0WVc1dmFXUWdRU0I3UUd4cGJtc2dWbEpOU0hWdFlXNXZhV1I5SUdsdWMzUmhibU5sSUhSb1lYUWdjbVZ3Y21WelpXNTBjeUIwYUdVZ1ZsSk5YRzRnSUNBcUlFQndZWEpoYlNCbGVIQnlaWE56YVc5dWN5QkJJSHRBYkdsdWF5QldVazFGZUhCeVpYTnphVzl1VFdGdVlXZGxjbjBnYVc1emRHRnVZMlVnZEdoaGRDQnlaWEJ5WlhObGJuUnpJSFJvWlNCV1VrMWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdZWE41Ym1NZ1gybHRjRzl5ZENoY2JpQWdJQ0JuYkhSbU9pQkhURlJHTEZ4dUlDQWdJR2gxYldGdWIybGtPaUJXVWsxSWRXMWhibTlwWkNCOElHNTFiR3dzWEc0Z0lDQWdaWGh3Y21WemMybHZibk02SUZaU1RVVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeUlId2diblZzYkN4Y2JpQWdLVG9nVUhKdmJXbHpaVHhXVWsxTWIyOXJRWFFnZkNCdWRXeHNQaUI3WEc0Z0lDQWdhV1lnS0doMWJXRnViMmxrSUQwOUlHNTFiR3dnZkh3Z1pYaHdjbVZ6YzJsdmJuTWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2RqRlNaWE4xYkhRZ1BTQmhkMkZwZENCMGFHbHpMbDkyTVVsdGNHOXlkQ2huYkhSbUxDQm9kVzFoYm05cFpDd2daWGh3Y21WemMybHZibk1wTzF4dUlDQWdJR2xtSUNoMk1WSmxjM1ZzZENrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhZeFVtVnpkV3gwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElIWXdVbVZ6ZFd4MElEMGdZWGRoYVhRZ2RHaHBjeTVmZGpCSmJYQnZjblFvWjJ4MFppd2dhSFZ0WVc1dmFXUXNJR1Y0Y0hKbGMzTnBiMjV6S1R0Y2JpQWdJQ0JwWmlBb2RqQlNaWE4xYkhRcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCMk1GSmxjM1ZzZER0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1lYTjVibU1nWDNZeFNXMXdiM0owS0Z4dUlDQWdJR2RzZEdZNklFZE1WRVlzWEc0Z0lDQWdhSFZ0WVc1dmFXUTZJRlpTVFVoMWJXRnViMmxrTEZ4dUlDQWdJR1Y0Y0hKbGMzTnBiMjV6T2lCV1VrMUZlSEJ5WlhOemFXOXVUV0Z1WVdkbGNpeGNiaUFnS1RvZ1VISnZiV2x6WlR4V1VrMU1iMjlyUVhRZ2ZDQnVkV3hzUGlCN1hHNGdJQ0FnWTI5dWMzUWdhbk52YmlBOUlIUm9hWE11Y0dGeWMyVnlMbXB6YjI0Z1lYTWdSMHhVUmxOamFHVnRZUzVKUjB4VVJqdGNibHh1SUNBZ0lDOHZJR1ZoY214NUlHRmliM0owSUdsbUlHbDBJR1J2WlhOdUozUWdkWE5sSUhaeWJWeHVJQ0FnSUdOdmJuTjBJR2x6VmxKTlZYTmxaQ0E5SUdwemIyNHVaWGgwWlc1emFXOXVjMVZ6WldRL0xtbHVaR1Y0VDJZb0oxWlNUVU5mZG5KdEp5a2dJVDA5SUMweE8xeHVJQ0FnSUdsbUlDZ2hhWE5XVWsxVmMyVmtLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQmxlSFJsYm5OcGIyNGdQU0JxYzI5dUxtVjRkR1Z1YzJsdmJuTS9MbHNuVmxKTlExOTJjbTBuWFNCaGN5QldNVlpTVFZOamFHVnRZUzVXVWsxRFZsSk5JSHdnZFc1a1pXWnBibVZrTzF4dUlDQWdJR2xtSUNnaFpYaDBaVzV6YVc5dUtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCemNHVmpWbVZ5YzJsdmJpQTlJR1Y0ZEdWdWMybHZiaTV6Y0dWalZtVnljMmx2Ymp0Y2JpQWdJQ0JwWmlBb0lWQlBVMU5KUWt4RlgxTlFSVU5mVmtWU1UwbFBUbE11YUdGektITndaV05XWlhKemFXOXVLU2tnZTF4dUlDQWdJQ0FnWTI5dWMyOXNaUzUzWVhKdUtHQldVazFNYjI5clFYUk1iMkZrWlhKUWJIVm5hVzQ2SUZWdWEyNXZkMjRnVmxKTlExOTJjbTBnYzNCbFkxWmxjbk5wYjI0Z1hDSWtlM053WldOV1pYSnphVzl1ZlZ3aVlDazdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCelkyaGxiV0ZNYjI5clFYUWdQU0JsZUhSbGJuTnBiMjR1Ykc5dmEwRjBPMXh1SUNBZ0lHbG1JQ2doYzJOb1pXMWhURzl2YTBGMEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCa1pXWmhkV3gwVDNWMGNIVjBVMk5oYkdVZ1BTQnpZMmhsYldGTWIyOXJRWFF1ZEhsd1pTQTlQVDBnSjJWNGNISmxjM05wYjI0bklEOGdNUzR3SURvZ01UQXVNRHRjYmx4dUlDQWdJR052Ym5OMElHMWhjRWhKSUQwZ2RHaHBjeTVmZGpGSmJYQnZjblJTWVc1blpVMWhjQ2h6WTJobGJXRk1iMjlyUVhRdWNtRnVaMlZOWVhCSWIzSnBlbTl1ZEdGc1NXNXVaWElzSUdSbFptRjFiSFJQZFhSd2RYUlRZMkZzWlNrN1hHNGdJQ0FnWTI5dWMzUWdiV0Z3U0U4Z1BTQjBhR2x6TGw5Mk1VbHRjRzl5ZEZKaGJtZGxUV0Z3S0hOamFHVnRZVXh2YjJ0QmRDNXlZVzVuWlUxaGNFaHZjbWw2YjI1MFlXeFBkWFJsY2l3Z1pHVm1ZWFZzZEU5MWRIQjFkRk5qWVd4bEtUdGNiaUFnSUNCamIyNXpkQ0J0WVhCV1JDQTlJSFJvYVhNdVgzWXhTVzF3YjNKMFVtRnVaMlZOWVhBb2MyTm9aVzFoVEc5dmEwRjBMbkpoYm1kbFRXRndWbVZ5ZEdsallXeEViM2R1TENCa1pXWmhkV3gwVDNWMGNIVjBVMk5oYkdVcE8xeHVJQ0FnSUdOdmJuTjBJRzFoY0ZaVklEMGdkR2hwY3k1ZmRqRkpiWEJ2Y25SU1lXNW5aVTFoY0NoelkyaGxiV0ZNYjI5clFYUXVjbUZ1WjJWTllYQldaWEowYVdOaGJGVndMQ0JrWldaaGRXeDBUM1YwY0hWMFUyTmhiR1VwTzF4dVhHNGdJQ0FnYkdWMElHRndjR3hwWlhJN1hHNWNiaUFnSUNCcFppQW9jMk5vWlcxaFRHOXZhMEYwTG5SNWNHVWdQVDA5SUNkbGVIQnlaWE56YVc5dUp5a2dlMXh1SUNBZ0lDQWdZWEJ3YkdsbGNpQTlJRzVsZHlCV1VrMU1iMjlyUVhSRmVIQnlaWE56YVc5dVFYQndiR2xsY2lobGVIQnlaWE56YVc5dWN5d2diV0Z3U0Vrc0lHMWhjRWhQTENCdFlYQldSQ3dnYldGd1ZsVXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCaGNIQnNhV1Z5SUQwZ2JtVjNJRlpTVFV4dmIydEJkRUp2Ym1WQmNIQnNhV1Z5S0doMWJXRnViMmxrTENCdFlYQklTU3dnYldGd1NFOHNJRzFoY0ZaRUxDQnRZWEJXVlNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdiRzl2YTBGMElEMGdkR2hwY3k1ZmFXMXdiM0owVEc5dmEwRjBLR2gxYldGdWIybGtMQ0JoY0hCc2FXVnlLVHRjYmx4dUlDQWdJR3h2YjJ0QmRDNXZabVp6WlhSR2NtOXRTR1ZoWkVKdmJtVXVabkp2YlVGeWNtRjVLSE5qYUdWdFlVeHZiMnRCZEM1dlptWnpaWFJHY205dFNHVmhaRUp2Ym1VZ1B6OGdXekF1TUN3Z01DNHdOaXdnTUM0d1hTazdYRzVjYmlBZ0lDQnlaWFIxY200Z2JHOXZhMEYwTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCZmRqRkpiWEJ2Y25SU1lXNW5aVTFoY0NoY2JpQWdJQ0J6WTJobGJXRlNZVzVuWlUxaGNEb2dWakZXVWsxVFkyaGxiV0V1VEc5dmEwRjBVbUZ1WjJWTllYQWdmQ0IxYm1SbFptbHVaV1FzWEc0Z0lDQWdaR1ZtWVhWc2RFOTFkSEIxZEZOallXeGxPaUJ1ZFcxaVpYSXNYRzRnSUNrNklGWlNUVXh2YjJ0QmRGSmhibWRsVFdGd0lIdGNiaUFnSUNCc1pYUWdhVzV3ZFhSTllYaFdZV3gxWlNBOUlITmphR1Z0WVZKaGJtZGxUV0Z3UHk1cGJuQjFkRTFoZUZaaGJIVmxJRDgvSURrd0xqQTdYRzRnSUNBZ1kyOXVjM1FnYjNWMGNIVjBVMk5oYkdVZ1BTQnpZMmhsYldGU1lXNW5aVTFoY0Q4dWIzVjBjSFYwVTJOaGJHVWdQejhnWkdWbVlYVnNkRTkxZEhCMWRGTmpZV3hsTzF4dVhHNGdJQ0FnTHk4Z1NYUWdiV2xuYUhRZ1kyRjFjMlVnVG1GT0lIZG9aVzRnWUdsdWNIVjBUV0Y0Vm1Gc2RXVmdJR2x6SUhSdmJ5QnpiV0ZzYkZ4dUlDQWdJQzh2SUhkb2FXTm9JRzFoYTJWeklIUm9aU0J0WlhOb0lHOW1JSFJvWlNCb1pXRmtJR1JwYzJGd2NHVmhjbHh1SUNBZ0lDOHZJRk5sWlRvZ2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwzQnBlR2wyTDNSb2NtVmxMWFp5YlM5cGMzTjFaWE12TVRJd01WeHVJQ0FnSUdsbUlDaHBibkIxZEUxaGVGWmhiSFZsSUR3Z1NVNVFWVlJmVFVGWVgxWkJURlZGWDAxSlRrbE5WVTBwSUh0Y2JpQWdJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpaGNiaUFnSUNBZ0lDQWdKMVpTVFV4dmIydEJkRXh2WVdSbGNsQnNkV2RwYmpvZ2FXNXdkWFJOWVhoV1lXeDFaU0J2WmlCaElISmhibWRsSUcxaGNDQnBjeUIwYjI4Z2MyMWhiR3d1SUVOdmJuTnBaR1Z5SUhKbGRtbGxkMmx1WnlCMGFHVWdjbUZ1WjJVZ2JXRndJU2NzWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJQ0FnYVc1d2RYUk5ZWGhXWVd4MVpTQTlJRWxPVUZWVVgwMUJXRjlXUVV4VlJWOU5TVTVKVFZWTk8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1ZsSk5URzl2YTBGMFVtRnVaMlZOWVhBb2FXNXdkWFJOWVhoV1lXeDFaU3dnYjNWMGNIVjBVMk5oYkdVcE8xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQmhjM2x1WXlCZmRqQkpiWEJ2Y25Rb1hHNGdJQ0FnWjJ4MFpqb2dSMHhVUml4Y2JpQWdJQ0JvZFcxaGJtOXBaRG9nVmxKTlNIVnRZVzV2YVdRc1hHNGdJQ0FnWlhod2NtVnpjMmx2Ym5NNklGWlNUVVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlMRnh1SUNBcE9pQlFjbTl0YVhObFBGWlNUVXh2YjJ0QmRDQjhJRzUxYkd3K0lIdGNiaUFnSUNCamIyNXpkQ0JxYzI5dUlEMGdkR2hwY3k1d1lYSnpaWEl1YW5OdmJpQmhjeUJIVEZSR1UyTm9aVzFoTGtsSFRGUkdPMXh1WEc0Z0lDQWdMeThnWldGeWJIa2dZV0p2Y25RZ2FXWWdhWFFnWkc5bGMyNG5kQ0IxYzJVZ2RuSnRYRzRnSUNBZ1kyOXVjM1FnZG5KdFJYaDBJRDBnYW5OdmJpNWxlSFJsYm5OcGIyNXpQeTVXVWswZ1lYTWdWakJXVWswdVZsSk5JSHdnZFc1a1pXWnBibVZrTzF4dUlDQWdJR2xtSUNnaGRuSnRSWGgwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0J6WTJobGJXRkdhWEp6ZEZCbGNuTnZiaUE5SUhaeWJVVjRkQzVtYVhKemRGQmxjbk52Ymp0Y2JpQWdJQ0JwWmlBb0lYTmphR1Z0WVVacGNuTjBVR1Z5YzI5dUtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCa1pXWmhkV3gwVDNWMGNIVjBVMk5oYkdVZ1BTQnpZMmhsYldGR2FYSnpkRkJsY25OdmJpNXNiMjlyUVhSVWVYQmxUbUZ0WlNBOVBUMGdKMEpzWlc1a1UyaGhjR1VuSUQ4Z01TNHdJRG9nTVRBdU1EdGNibHh1SUNBZ0lHTnZibk4wSUcxaGNFaEpJRDBnZEdocGN5NWZkakJKYlhCdmNuUkVaV2R5WldWTllYQW9jMk5vWlcxaFJtbHljM1JRWlhKemIyNHViRzl2YTBGMFNHOXlhWHB2Ym5SaGJFbHVibVZ5TENCa1pXWmhkV3gwVDNWMGNIVjBVMk5oYkdVcE8xeHVJQ0FnSUdOdmJuTjBJRzFoY0VoUElEMGdkR2hwY3k1ZmRqQkpiWEJ2Y25SRVpXZHlaV1ZOWVhBb2MyTm9aVzFoUm1seWMzUlFaWEp6YjI0dWJHOXZhMEYwU0c5eWFYcHZiblJoYkU5MWRHVnlMQ0JrWldaaGRXeDBUM1YwY0hWMFUyTmhiR1VwTzF4dUlDQWdJR052Ym5OMElHMWhjRlpFSUQwZ2RHaHBjeTVmZGpCSmJYQnZjblJFWldkeVpXVk5ZWEFvYzJOb1pXMWhSbWx5YzNSUVpYSnpiMjR1Ykc5dmEwRjBWbVZ5ZEdsallXeEViM2R1TENCa1pXWmhkV3gwVDNWMGNIVjBVMk5oYkdVcE8xeHVJQ0FnSUdOdmJuTjBJRzFoY0ZaVklEMGdkR2hwY3k1ZmRqQkpiWEJ2Y25SRVpXZHlaV1ZOWVhBb2MyTm9aVzFoUm1seWMzUlFaWEp6YjI0dWJHOXZhMEYwVm1WeWRHbGpZV3hWY0N3Z1pHVm1ZWFZzZEU5MWRIQjFkRk5qWVd4bEtUdGNibHh1SUNBZ0lHeGxkQ0JoY0hCc2FXVnlPMXh1WEc0Z0lDQWdhV1lnS0hOamFHVnRZVVpwY25OMFVHVnljMjl1TG14dmIydEJkRlI1Y0dWT1lXMWxJRDA5UFNBblFteGxibVJUYUdGd1pTY3BJSHRjYmlBZ0lDQWdJR0Z3Y0d4cFpYSWdQU0J1WlhjZ1ZsSk5URzl2YTBGMFJYaHdjbVZ6YzJsdmJrRndjR3hwWlhJb1pYaHdjbVZ6YzJsdmJuTXNJRzFoY0VoSkxDQnRZWEJJVHl3Z2JXRndWa1FzSUcxaGNGWlZLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ1lYQndiR2xsY2lBOUlHNWxkeUJXVWsxTWIyOXJRWFJDYjI1bFFYQndiR2xsY2lob2RXMWhibTlwWkN3Z2JXRndTRWtzSUcxaGNFaFBMQ0J0WVhCV1JDd2diV0Z3VmxVcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJR3h2YjJ0QmRDQTlJSFJvYVhNdVgybHRjRzl5ZEV4dmIydEJkQ2hvZFcxaGJtOXBaQ3dnWVhCd2JHbGxjaWs3WEc1Y2JpQWdJQ0JwWmlBb2MyTm9aVzFoUm1seWMzUlFaWEp6YjI0dVptbHljM1JRWlhKemIyNUNiMjVsVDJabWMyVjBLU0I3WEc0Z0lDQWdJQ0JzYjI5clFYUXViMlptYzJWMFJuSnZiVWhsWVdSQ2IyNWxMbk5sZENoY2JpQWdJQ0FnSUNBZ2MyTm9aVzFoUm1seWMzUlFaWEp6YjI0dVptbHljM1JRWlhKemIyNUNiMjVsVDJabWMyVjBMbmdnUHo4Z01DNHdMRnh1SUNBZ0lDQWdJQ0J6WTJobGJXRkdhWEp6ZEZCbGNuTnZiaTVtYVhKemRGQmxjbk52YmtKdmJtVlBabVp6WlhRdWVTQS9QeUF3TGpBMkxGeHVJQ0FnSUNBZ0lDQXRLSE5qYUdWdFlVWnBjbk4wVUdWeWMyOXVMbVpwY25OMFVHVnljMjl1UW05dVpVOW1abk5sZEM1NklEOC9JREF1TUNrc1hHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JzYjI5clFYUXViMlptYzJWMFJuSnZiVWhsWVdSQ2IyNWxMbk5sZENnd0xqQXNJREF1TURZc0lEQXVNQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnVmxKTklEQXVNQ0JoY21VZ1ptRmphVzVuSUZvdElHbHVjM1JsWVdRZ2IyWWdXaXRjYmlBZ0lDQnNiMjlyUVhRdVptRmpaVVp5YjI1MExuTmxkQ2d3TGpBc0lEQXVNQ3dnTFRFdU1DazdYRzVjYmlBZ0lDQnBaaUFvWVhCd2JHbGxjaUJwYm5OMFlXNWpaVzltSUZaU1RVeHZiMnRCZEVKdmJtVkJjSEJzYVdWeUtTQjdYRzRnSUNBZ0lDQmhjSEJzYVdWeUxtWmhZMlZHY205dWRDNXpaWFFvTUM0d0xDQXdMakFzSUMweExqQXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCc2IyOXJRWFE3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUY5Mk1FbHRjRzl5ZEVSbFozSmxaVTFoY0NoY2JpQWdJQ0J6WTJobGJXRkVaV2R5WldWTllYQTZJRll3VmxKTkxrWnBjbk4wVUdWeWMyOXVSR1ZuY21WbFRXRndJSHdnZFc1a1pXWnBibVZrTEZ4dUlDQWdJR1JsWm1GMWJIUlBkWFJ3ZFhSVFkyRnNaVG9nYm5WdFltVnlMRnh1SUNBcE9pQldVazFNYjI5clFYUlNZVzVuWlUxaGNDQjdYRzRnSUNBZ1kyOXVjM1FnWTNWeWRtVWdQU0J6WTJobGJXRkVaV2R5WldWTllYQS9MbU4xY25abE8xeHVJQ0FnSUdsbUlDaEtVMDlPTG5OMGNtbHVaMmxtZVNoamRYSjJaU2tnSVQwOUlDZGJNQ3d3TERBc01Td3hMREVzTVN3d1hTY3BJSHRjYmlBZ0lDQWdJR052Ym5OdmJHVXVkMkZ5YmlnblEzVnlkbVZ6SUc5bUlFeHZiMnRCZEVSbFozSmxaVTFoY0NCa1pXWnBibVZrSUdsdUlGWlNUU0F3TGpBZ1lYSmxJRzV2ZENCemRYQndiM0owWldRbktUdGNiaUFnSUNCOVhHNWNiaUFnSUNCc1pYUWdlRkpoYm1kbElEMGdjMk5vWlcxaFJHVm5jbVZsVFdGd1B5NTRVbUZ1WjJVZ1B6OGdPVEF1TUR0Y2JpQWdJQ0JqYjI1emRDQjVVbUZ1WjJVZ1BTQnpZMmhsYldGRVpXZHlaV1ZOWVhBL0xubFNZVzVuWlNBL1B5QmtaV1poZFd4MFQzVjBjSFYwVTJOaGJHVTdYRzVjYmlBZ0lDQXZMeUJKZENCdGFXZG9kQ0JqWVhWelpTQk9ZVTRnZDJobGJpQmdlRkpoYm1kbFlDQnBjeUIwYjI4Z2MyMWhiR3hjYmlBZ0lDQXZMeUIzYUdsamFDQnRZV3RsY3lCMGFHVWdiV1Z6YUNCdlppQjBhR1VnYUdWaFpDQmthWE5oY0hCbFlYSmNiaUFnSUNBdkx5QlRaV1U2SUdoMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5d2FYaHBkaTkwYUhKbFpTMTJjbTB2YVhOemRXVnpMekV5TURGY2JpQWdJQ0JwWmlBb2VGSmhibWRsSUR3Z1NVNVFWVlJmVFVGWVgxWkJURlZGWDAxSlRrbE5WVTBwSUh0Y2JpQWdJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpZ25WbEpOVEc5dmEwRjBURzloWkdWeVVHeDFaMmx1T2lCNFVtRnVaMlVnYjJZZ1lTQmtaV2R5WldVZ2JXRndJR2x6SUhSdmJ5QnpiV0ZzYkM0Z1EyOXVjMmxrWlhJZ2NtVjJhV1YzYVc1bklIUm9aU0JrWldkeVpXVWdiV0Z3SVNjcE8xeHVJQ0FnSUNBZ2VGSmhibWRsSUQwZ1NVNVFWVlJmVFVGWVgxWkJURlZGWDAxSlRrbE5WVTA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJXVWsxTWIyOXJRWFJTWVc1blpVMWhjQ2g0VW1GdVoyVXNJSGxTWVc1blpTazdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJRjlwYlhCdmNuUk1iMjlyUVhRb2FIVnRZVzV2YVdRNklGWlNUVWgxYldGdWIybGtMQ0JoY0hCc2FXVnlPaUJXVWsxTWIyOXJRWFJCY0hCc2FXVnlLVG9nVmxKTlRHOXZhMEYwSUh0Y2JpQWdJQ0JqYjI1emRDQnNiMjlyUVhRZ1BTQnVaWGNnVmxKTlRHOXZhMEYwS0doMWJXRnViMmxrTENCaGNIQnNhV1Z5S1R0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG1obGJIQmxjbEp2YjNRcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdobGJIQmxjaUE5SUc1bGR5QldVazFNYjI5clFYUklaV3h3WlhJb2JHOXZhMEYwS1R0Y2JpQWdJQ0FnSUhSb2FYTXVhR1ZzY0dWeVVtOXZkQzVoWkdRb2FHVnNjR1Z5S1R0Y2JpQWdJQ0FnSUdobGJIQmxjaTV5Wlc1a1pYSlBjbVJsY2lBOUlIUm9hWE11YUdWc2NHVnlVbTl2ZEM1eVpXNWtaWEpQY21SbGNqdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnYkc5dmEwRjBPMXh1SUNCOVhHNTlYRzRpTENJdktpQmxjMnhwYm5RdFpHbHpZV0pzWlNCQWRIbHdaWE5qY21sd2RDMWxjMnhwYm5RdmJtRnRhVzVuTFdOdmJuWmxiblJwYjI0Z0tpOWNibHh1THlvcVhHNGdLaUJTWlhCeVpYTmxiblJ6SUdFZ2RIbHdaU0J2WmlCaGNIQnNhV1Z5TGx4dUlDb3ZYRzVsZUhCdmNuUWdZMjl1YzNRZ1ZsSk5URzl2YTBGMFZIbHdaVTVoYldVZ1BTQjdYRzRnSUVKdmJtVTZJQ2RpYjI1bEp5eGNiaUFnUlhod2NtVnpjMmx2YmpvZ0oyVjRjSEpsYzNOcGIyNG5MRnh1ZlR0Y2JseHVaWGh3YjNKMElIUjVjR1VnVmxKTlRHOXZhMEYwVkhsd1pVNWhiV1VnUFNCMGVYQmxiMllnVmxKTlRHOXZhMEYwVkhsd1pVNWhiV1ZiYTJWNWIyWWdkSGx3Wlc5bUlGWlNUVXh2YjJ0QmRGUjVjR1ZPWVcxbFhUdGNiaUlzSWk4cUtseHVJQ29nV1c5cGJtdGxaQ0JtY205dElHaDBkSEJ6T2k4dloybDBhSFZpTG1OdmJTOXRjbVJ2YjJJdmRHaHlaV1V1YW5NdllteHZZaTl0WVhOMFpYSXZaWGhoYlhCc1pYTXZhbk50TDJ4dllXUmxjbk12UjB4VVJreHZZV1JsY2k1cWMxeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21WemIyeDJaVlZTVENoMWNtdzZJSE4wY21sdVp5d2djR0YwYURvZ2MzUnlhVzVuS1RvZ2MzUnlhVzVuSUh0Y2JpQWdMeThnU1c1MllXeHBaQ0JWVWt4Y2JpQWdhV1lnS0hSNWNHVnZaaUIxY213Z0lUMDlJQ2R6ZEhKcGJtY25JSHg4SUhWeWJDQTlQVDBnSnljcElISmxkSFZ5YmlBbkp6dGNibHh1SUNBdkx5QkliM04wSUZKbGJHRjBhWFpsSUZWU1RGeHVJQ0JwWmlBb0wxNW9kSFJ3Y3o4NlhGd3ZYRnd2TDJrdWRHVnpkQ2h3WVhSb0tTQW1KaUF2WGx4Y0x5OHVkR1Z6ZENoMWNtd3BLU0I3WEc0Z0lDQWdjR0YwYUNBOUlIQmhkR2d1Y21Wd2JHRmpaU2d2S0Y1b2RIUndjejg2WEZ3dlhGd3ZXMTR2WFNzcExpb3ZhU3dnSnlReEp5azdYRzRnSUgxY2JseHVJQ0F2THlCQlluTnZiSFYwWlNCVlVrd2dhSFIwY0Rvdkx5eG9kSFJ3Y3pvdkx5d3ZMMXh1SUNCcFppQW9MMTRvYUhSMGNITS9PaWsvWEZ3dlhGd3ZMMmt1ZEdWemRDaDFjbXdwS1NCeVpYUjFjbTRnZFhKc08xeHVYRzRnSUM4dklFUmhkR0VnVlZKSlhHNGdJR2xtSUNndlhtUmhkR0U2TGlvc0xpb2tMMmt1ZEdWemRDaDFjbXdwS1NCeVpYUjFjbTRnZFhKc08xeHVYRzRnSUM4dklFSnNiMklnVlZKTVhHNGdJR2xtSUNndlhtSnNiMkk2TGlva0wya3VkR1Z6ZENoMWNtd3BLU0J5WlhSMWNtNGdkWEpzTzF4dVhHNGdJQzh2SUZKbGJHRjBhWFpsSUZWU1RGeHVJQ0J5WlhSMWNtNGdjR0YwYUNBcklIVnliRHRjYm4xY2JpSXNJbWx0Y0c5eWRDQjBlWEJsSUhzZ1IweFVSaXdnUjB4VVJreHZZV1JsY2xCc2RXZHBiaXdnUjB4VVJsQmhjbk5sY2lCOUlHWnliMjBnSjNSb2NtVmxMMlY0WVcxd2JHVnpMMnB6YlM5c2IyRmtaWEp6TDBkTVZFWk1iMkZrWlhJdWFuTW5PMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QldVazB3VFdWMFlTQjlJR1p5YjIwZ0p5NHZWbEpOTUUxbGRHRW5PMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QldVazB4VFdWMFlTQjlJR1p5YjIwZ0p5NHZWbEpOTVUxbGRHRW5PMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QldVazFOWlhSaElIMGdabkp2YlNBbkxpOVdVazFOWlhSaEp6dGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1ZsSk5UV1YwWVV4dllXUmxjbEJzZFdkcGJrOXdkR2x2Ym5NZ2ZTQm1jbTl0SUNjdUwxWlNUVTFsZEdGTWIyRmtaWEpRYkhWbmFXNVBjSFJwYjI1ekp6dGNibWx0Y0c5eWRDQjBlWEJsSUNvZ1lYTWdWakJXVWswZ1puSnZiU0FuUUhCcGVHbDJMM1I1Y0dWekxYWnliUzB3TGpBbk8xeHVhVzF3YjNKMElIUjVjR1VnS2lCaGN5QldNVlpTVFZOamFHVnRZU0JtY205dElDZEFjR2w0YVhZdmRIbHdaWE10ZG5KdFl5MTJjbTB0TVM0d0p6dGNibWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCN0lISmxjMjlzZG1WVlVrd2dmU0JtY205dElDY3VMaTkxZEdsc2N5OXlaWE52YkhabFZWSk1KenRjYm1sdGNHOXlkQ0I3SUVkTVZFWWdZWE1nUjB4VVJsTmphR1Z0WVNCOUlHWnliMjBnSjBCbmJIUm1MWFJ5WVc1elptOXliUzlqYjNKbEp6dGNibHh1THlvcVhHNGdLaUJRYjNOemFXSnNaU0J6Y0dWaklIWmxjbk5wYjI1eklHbDBJSEpsWTI5bmJtbDZaWE11WEc0Z0tpOWNibU52Ym5OMElGQlBVMU5KUWt4RlgxTlFSVU5mVmtWU1UwbFBUbE1nUFNCdVpYY2dVMlYwS0Zzbk1TNHdKeXdnSnpFdU1DMWlaWFJoSjEwcE8xeHVYRzR2S2lwY2JpQXFJRUVnY0d4MVoybHVJRzltSUVkTVZFWk1iMkZrWlhJZ2RHaGhkQ0JwYlhCdmNuUnpJR0VnZTBCc2FXNXJJRlpTVFRGTlpYUmhmU0JtY205dElHRWdWbEpOSUdWNGRHVnVjMmx2YmlCdlppQmhJRWRNVkVZdVhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5QldVazFOWlhSaFRHOWhaR1Z5VUd4MVoybHVJR2x0Y0d4bGJXVnVkSE1nUjB4VVJreHZZV1JsY2xCc2RXZHBiaUI3WEc0Z0lIQjFZbXhwWXlCeVpXRmtiMjVzZVNCd1lYSnpaWEk2SUVkTVZFWlFZWEp6WlhJN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVsbUlHQm1ZV3h6WldBc0lHbDBJSGR2YmlkMElHeHZZV1FnYVhSeklIUm9kVzFpYm1GcGJDQnBiV0ZuWlNBb2UwQnNhVzVySUZaU1RURk5aWFJoTG5Sb2RXMWlibUZwYkVsdFlXZGxmU2t1WEc0Z0lDQXFJR0IwY25WbFlDQmllU0JrWldaaGRXeDBMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJRzVsWldSVWFIVnRZbTVoYVd4SmJXRm5aVG9nWW05dmJHVmhianRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRU0JzYVhOMElHOW1JR3hwWTJWdWMyVWdkWEpzY3k1Y2JpQWdJQ29nVkdocGN5QnRaWFJoSUd4dllXUmxjaUIzYVd4c0lHRmpZMlZ3ZENCMGFHVnpaU0JnYkdsalpXNXpaVlZ5YkdCekxseHVJQ0FnS2lCUGRHaGxjbmRwYzJVZ2FYUWdkMjl1SjNRZ1ltVWdiRzloWkdWa0xseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHRmpZMlZ3ZEV4cFkyVnVjMlZWY214ek9pQnpkSEpwYm1kYlhUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1YyaGxkR2hsY2lCcGRDQnphRzkxYkdRZ1lXTmpaWEIwSUZaU1RUQXVNQ0J0WlhSaElHOXlJRzV2ZEM1Y2JpQWdJQ29nVG05MFpTQjBhR0YwSUdsMElHMXBaMmgwSUd4dllXUWdlMEJzYVc1cklGWlNUVEJOWlhSaGZTQnBibk4wWldGa0lHOW1JSHRBYkdsdWF5QldVazB4VFdWMFlYMGdkMmhsYmlCMGFHbHpJR2x6SUdCMGNuVmxZQzVjYmlBZ0lDb2dZSFJ5ZFdWZ0lHSjVJR1JsWm1GMWJIUXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdZV05qWlhCMFZqQk5aWFJoT2lCaWIyOXNaV0Z1TzF4dVhHNGdJSEIxWW14cFl5Qm5aWFFnYm1GdFpTZ3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lDOHZJRmRsSUhOb2IzVnNaQ0IxYzJVZ2RHaGxJR1Y0ZEdWdWMybHZiaUJ1WVcxbElHbHVjM1JsWVdRZ1luVjBJSGRsSUdoaGRtVWdiWFZzZEdsd2JHVWdjR3gxWjJsdWN5Qm1iM0lnWVc0Z1pYaDBaVzV6YVc5dUxpNHVYRzRnSUNBZ2NtVjBkWEp1SUNkV1VrMU5aWFJoVEc5aFpHVnlVR3gxWjJsdUp6dGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWh3WVhKelpYSTZJRWRNVkVaUVlYSnpaWElzSUc5d2RHbHZibk0vT2lCV1VrMU5aWFJoVEc5aFpHVnlVR3gxWjJsdVQzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUhSb2FYTXVjR0Z5YzJWeUlEMGdjR0Z5YzJWeU8xeHVYRzRnSUNBZ2RHaHBjeTV1WldWa1ZHaDFiV0p1WVdsc1NXMWhaMlVnUFNCdmNIUnBiMjV6UHk1dVpXVmtWR2gxYldKdVlXbHNTVzFoWjJVZ1B6OGdkSEoxWlR0Y2JpQWdJQ0IwYUdsekxtRmpZMlZ3ZEV4cFkyVnVjMlZWY214eklEMGdiM0IwYVc5dWN6OHVZV05qWlhCMFRHbGpaVzV6WlZWeWJITWdQejhnV3lkb2RIUndjem92TDNaeWJTNWtaWFl2YkdsalpXNXpaWE12TVM0d0x5ZGRPMXh1SUNBZ0lIUm9hWE11WVdOalpYQjBWakJOWlhSaElEMGdiM0IwYVc5dWN6OHVZV05qWlhCMFZqQk5aWFJoSUQ4L0lIUnlkV1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWVhONWJtTWdZV1owWlhKU2IyOTBLR2RzZEdZNklFZE1WRVlwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQm5iSFJtTG5WelpYSkVZWFJoTG5aeWJVMWxkR0VnUFNCaGQyRnBkQ0IwYUdsekxsOXBiWEJ2Y25Rb1oyeDBaaWs3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUdGemVXNWpJRjlwYlhCdmNuUW9aMngwWmpvZ1IweFVSaWs2SUZCeWIyMXBjMlU4VmxKTlRXVjBZU0I4SUc1MWJHdytJSHRjYmlBZ0lDQmpiMjV6ZENCMk1WSmxjM1ZzZENBOUlHRjNZV2wwSUhSb2FYTXVYM1l4U1cxd2IzSjBLR2RzZEdZcE8xeHVJQ0FnSUdsbUlDaDJNVkpsYzNWc2RDQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RqRlNaWE4xYkhRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdkakJTWlhOMWJIUWdQU0JoZDJGcGRDQjBhR2x6TGw5Mk1FbHRjRzl5ZENobmJIUm1LVHRjYmlBZ0lDQnBaaUFvZGpCU1pYTjFiSFFnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSFl3VW1WemRXeDBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JoYzNsdVl5QmZkakZKYlhCdmNuUW9aMngwWmpvZ1IweFVSaWs2SUZCeWIyMXBjMlU4VmxKTk1VMWxkR0VnZkNCdWRXeHNQaUI3WEc0Z0lDQWdZMjl1YzNRZ2FuTnZiaUE5SUhSb2FYTXVjR0Z5YzJWeUxtcHpiMjRnWVhNZ1IweFVSbE5qYUdWdFlTNUpSMHhVUmp0Y2JseHVJQ0FnSUM4dklHVmhjbXg1SUdGaWIzSjBJR2xtSUdsMElHUnZaWE51SjNRZ2RYTmxJSFp5YlZ4dUlDQWdJR052Ym5OMElHbHpWbEpOVlhObFpDQTlJR3B6YjI0dVpYaDBaVzV6YVc5dWMxVnpaV1EvTG1sdVpHVjRUMllvSjFaU1RVTmZkbkp0SnlrZ0lUMDlJQzB4TzF4dUlDQWdJR2xtSUNnaGFYTldVazFWYzJWa0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCbGVIUmxibk5wYjI0Z1BTQnFjMjl1TG1WNGRHVnVjMmx2Ym5NL0xsc25WbEpOUTE5MmNtMG5YU0JoY3lCV01WWlNUVk5qYUdWdFlTNVdVazFEVmxKTklId2dkVzVrWldacGJtVmtPMXh1SUNBZ0lHbG1JQ2hsZUhSbGJuTnBiMjRnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdjM0JsWTFabGNuTnBiMjRnUFNCbGVIUmxibk5wYjI0dWMzQmxZMVpsY25OcGIyNDdYRzRnSUNBZ2FXWWdLQ0ZRVDFOVFNVSk1SVjlUVUVWRFgxWkZVbE5KVDA1VExtaGhjeWh6Y0dWalZtVnljMmx2YmlrcElIdGNiaUFnSUNBZ0lHTnZibk52YkdVdWQyRnliaWhnVmxKTlRXVjBZVXh2WVdSbGNsQnNkV2RwYmpvZ1ZXNXJibTkzYmlCV1VrMURYM1p5YlNCemNHVmpWbVZ5YzJsdmJpQmNJaVI3YzNCbFkxWmxjbk5wYjI1OVhDSmdLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElITmphR1Z0WVUxbGRHRWdQU0JsZUhSbGJuTnBiMjR1YldWMFlUdGNiaUFnSUNCcFppQW9JWE5qYUdWdFlVMWxkR0VwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklIUm9jbTkzSUdGdUlHVnljbTl5SUdsbUlHRmpZMlZ3ZEZZd1RXVjBZU0JwY3lCbVlXeHpaVnh1SUNBZ0lHTnZibk4wSUd4cFkyVnVjMlZWY213Z1BTQnpZMmhsYldGTlpYUmhMbXhwWTJWdWMyVlZjbXc3WEc0Z0lDQWdZMjl1YzNRZ1lXTmpaWEIwVEdsalpXNXpaVlZ5YkhOVFpYUWdQU0J1WlhjZ1UyVjBLSFJvYVhNdVlXTmpaWEIwVEdsalpXNXpaVlZ5YkhNcE8xeHVJQ0FnSUdsbUlDZ2hZV05qWlhCMFRHbGpaVzV6WlZWeWJITlRaWFF1YUdGektHeHBZMlZ1YzJWVmNtd3BLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRlpTVFUxbGRHRk1iMkZrWlhKUWJIVm5hVzQ2SUZSb1pTQnNhV05sYm5ObElIVnliQ0JjSWlSN2JHbGpaVzV6WlZWeWJIMWNJaUJwY3lCdWIzUWdZV05qWlhCMFpXUmdLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnZEdoMWJXSnVZV2xzU1cxaFoyVTZJRWhVVFV4SmJXRm5aVVZzWlcxbGJuUWdmQ0IxYm1SbFptbHVaV1FnUFNCMWJtUmxabWx1WldRN1hHNGdJQ0FnYVdZZ0tIUm9hWE11Ym1WbFpGUm9kVzFpYm1GcGJFbHRZV2RsSUNZbUlITmphR1Z0WVUxbGRHRXVkR2gxYldKdVlXbHNTVzFoWjJVZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2RHaDFiV0p1WVdsc1NXMWhaMlVnUFNBb1lYZGhhWFFnZEdocGN5NWZaWGgwY21GamRFZE1WRVpKYldGblpTaHpZMmhsYldGTlpYUmhMblJvZFcxaWJtRnBiRWx0WVdkbEtTa2dQejhnZFc1a1pXWnBibVZrTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQnRaWFJoVm1WeWMybHZiam9nSnpFbkxGeHVJQ0FnSUNBZ2JtRnRaVG9nYzJOb1pXMWhUV1YwWVM1dVlXMWxMRnh1SUNBZ0lDQWdkbVZ5YzJsdmJqb2djMk5vWlcxaFRXVjBZUzUyWlhKemFXOXVMRnh1SUNBZ0lDQWdZWFYwYUc5eWN6b2djMk5vWlcxaFRXVjBZUzVoZFhSb2IzSnpMRnh1SUNBZ0lDQWdZMjl3ZVhKcFoyaDBTVzVtYjNKdFlYUnBiMjQ2SUhOamFHVnRZVTFsZEdFdVkyOXdlWEpwWjJoMFNXNW1iM0p0WVhScGIyNHNYRzRnSUNBZ0lDQmpiMjUwWVdOMFNXNW1iM0p0WVhScGIyNDZJSE5qYUdWdFlVMWxkR0V1WTI5dWRHRmpkRWx1Wm05eWJXRjBhVzl1TEZ4dUlDQWdJQ0FnY21WbVpYSmxibU5sY3pvZ2MyTm9aVzFoVFdWMFlTNXlaV1psY21WdVkyVnpMRnh1SUNBZ0lDQWdkR2hwY21SUVlYSjBlVXhwWTJWdWMyVnpPaUJ6WTJobGJXRk5aWFJoTG5Sb2FYSmtVR0Z5ZEhsTWFXTmxibk5sY3l4Y2JpQWdJQ0FnSUhSb2RXMWlibUZwYkVsdFlXZGxMRnh1SUNBZ0lDQWdiR2xqWlc1elpWVnliRG9nYzJOb1pXMWhUV1YwWVM1c2FXTmxibk5sVlhKc0xGeHVJQ0FnSUNBZ1lYWmhkR0Z5VUdWeWJXbHpjMmx2YmpvZ2MyTm9aVzFoVFdWMFlTNWhkbUYwWVhKUVpYSnRhWE56YVc5dUxGeHVJQ0FnSUNBZ1lXeHNiM2RGZUdObGMzTnBkbVZzZVZacGIyeGxiblJWYzJGblpUb2djMk5vWlcxaFRXVjBZUzVoYkd4dmQwVjRZMlZ6YzJsMlpXeDVWbWx2YkdWdWRGVnpZV2RsTEZ4dUlDQWdJQ0FnWVd4c2IzZEZlR05sYzNOcGRtVnNlVk5sZUhWaGJGVnpZV2RsT2lCelkyaGxiV0ZOWlhSaExtRnNiRzkzUlhoalpYTnphWFpsYkhsVFpYaDFZV3hWYzJGblpTeGNiaUFnSUNBZ0lHTnZiVzFsY21OcFlXeFZjMkZuWlRvZ2MyTm9aVzFoVFdWMFlTNWpiMjF0WlhKamFXRnNWWE5oWjJVc1hHNGdJQ0FnSUNCaGJHeHZkMUJ2YkdsMGFXTmhiRTl5VW1Wc2FXZHBiM1Z6VlhOaFoyVTZJSE5qYUdWdFlVMWxkR0V1WVd4c2IzZFFiMnhwZEdsallXeFBjbEpsYkdsbmFXOTFjMVZ6WVdkbExGeHVJQ0FnSUNBZ1lXeHNiM2RCYm5ScGMyOWphV0ZzVDNKSVlYUmxWWE5oWjJVNklITmphR1Z0WVUxbGRHRXVZV3hzYjNkQmJuUnBjMjlqYVdGc1QzSklZWFJsVlhOaFoyVXNYRzRnSUNBZ0lDQmpjbVZrYVhST2IzUmhkR2x2YmpvZ2MyTm9aVzFoVFdWMFlTNWpjbVZrYVhST2IzUmhkR2x2Yml4Y2JpQWdJQ0FnSUdGc2JHOTNVbVZrYVhOMGNtbGlkWFJwYjI0NklITmphR1Z0WVUxbGRHRXVZV3hzYjNkU1pXUnBjM1J5YVdKMWRHbHZiaXhjYmlBZ0lDQWdJRzF2WkdsbWFXTmhkR2x2YmpvZ2MyTm9aVzFoVFdWMFlTNXRiMlJwWm1sallYUnBiMjRzWEc0Z0lDQWdJQ0J2ZEdobGNreHBZMlZ1YzJWVmNtdzZJSE5qYUdWdFlVMWxkR0V1YjNSb1pYSk1hV05sYm5ObFZYSnNMRnh1SUNBZ0lIMDdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR0Z6ZVc1aklGOTJNRWx0Y0c5eWRDaG5iSFJtT2lCSFRGUkdLVG9nVUhKdmJXbHpaVHhXVWswd1RXVjBZU0I4SUc1MWJHdytJSHRjYmlBZ0lDQmpiMjV6ZENCcWMyOXVJRDBnZEdocGN5NXdZWEp6WlhJdWFuTnZiaUJoY3lCSFRGUkdVMk5vWlcxaExrbEhURlJHTzF4dVhHNGdJQ0FnTHk4Z1pXRnliSGtnWVdKdmNuUWdhV1lnYVhRZ1pHOWxjMjRuZENCMWMyVWdkbkp0WEc0Z0lDQWdZMjl1YzNRZ2RuSnRSWGgwSUQwZ2FuTnZiaTVsZUhSbGJuTnBiMjV6UHk1V1VrMGdZWE1nVmpCV1VrMHVWbEpOSUh3Z2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUdsbUlDZ2hkbkp0UlhoMEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCelkyaGxiV0ZOWlhSaElEMGdkbkp0UlhoMExtMWxkR0U3WEc0Z0lDQWdhV1lnS0NGelkyaGxiV0ZOWlhSaEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUIwYUhKdmR5QmhiaUJsY25KdmNpQnBaaUJoWTJObGNIUldNRTFsZEdFZ2FYTWdabUZzYzJWY2JpQWdJQ0JwWmlBb0lYUm9hWE11WVdOalpYQjBWakJOWlhSaEtTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0oxWlNUVTFsZEdGTWIyRmtaWEpRYkhWbmFXNDZJRUYwZEdWdGNIUmxaQ0IwYnlCc2IyRmtJRlpTVFRBdU1DQnRaWFJoSUdKMWRDQmhZMk5sY0hSV01FMWxkR0VnYVhNZ1ptRnNjMlVuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCc2IyRmtJSFJvZFcxaWJtRnBiQ0IwWlhoMGRYSmxYRzRnSUNBZ2JHVjBJSFJsZUhSMWNtVTZJRlJJVWtWRkxsUmxlSFIxY21VZ2ZDQnVkV3hzSUh3Z2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUdsbUlDaDBhR2x6TG01bFpXUlVhSFZ0WW01aGFXeEpiV0ZuWlNBbUppQnpZMmhsYldGTlpYUmhMblJsZUhSMWNtVWdJVDBnYm5Wc2JDQW1KaUJ6WTJobGJXRk5aWFJoTG5SbGVIUjFjbVVnSVQwOUlDMHhLU0I3WEc0Z0lDQWdJQ0IwWlhoMGRYSmxJRDBnWVhkaGFYUWdkR2hwY3k1d1lYSnpaWEl1WjJWMFJHVndaVzVrWlc1amVTZ25kR1Y0ZEhWeVpTY3NJSE5qYUdWdFlVMWxkR0V1ZEdWNGRIVnlaU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlIdGNiaUFnSUNBZ0lHMWxkR0ZXWlhKemFXOXVPaUFuTUNjc1hHNGdJQ0FnSUNCaGJHeHZkMlZrVlhObGNrNWhiV1U2SUhOamFHVnRZVTFsZEdFdVlXeHNiM2RsWkZWelpYSk9ZVzFsTEZ4dUlDQWdJQ0FnWVhWMGFHOXlPaUJ6WTJobGJXRk5aWFJoTG1GMWRHaHZjaXhjYmlBZ0lDQWdJR052YlcxbGNtTnBZV3hWYzNOaFoyVk9ZVzFsT2lCelkyaGxiV0ZOWlhSaExtTnZiVzFsY21OcFlXeFZjM05oWjJWT1lXMWxMRnh1SUNBZ0lDQWdZMjl1ZEdGamRFbHVabTl5YldGMGFXOXVPaUJ6WTJobGJXRk5aWFJoTG1OdmJuUmhZM1JKYm1admNtMWhkR2x2Yml4Y2JpQWdJQ0FnSUd4cFkyVnVjMlZPWVcxbE9pQnpZMmhsYldGTlpYUmhMbXhwWTJWdWMyVk9ZVzFsTEZ4dUlDQWdJQ0FnYjNSb1pYSk1hV05sYm5ObFZYSnNPaUJ6WTJobGJXRk5aWFJoTG05MGFHVnlUR2xqWlc1elpWVnliQ3hjYmlBZ0lDQWdJRzkwYUdWeVVHVnliV2x6YzJsdmJsVnliRG9nYzJOb1pXMWhUV1YwWVM1dmRHaGxjbEJsY20xcGMzTnBiMjVWY213c1hHNGdJQ0FnSUNCeVpXWmxjbVZ1WTJVNklITmphR1Z0WVUxbGRHRXVjbVZtWlhKbGJtTmxMRnh1SUNBZ0lDQWdjMlY0ZFdGc1ZYTnpZV2RsVG1GdFpUb2djMk5vWlcxaFRXVjBZUzV6WlhoMVlXeFZjM05oWjJWT1lXMWxMRnh1SUNBZ0lDQWdkR1Y0ZEhWeVpUb2dkR1Y0ZEhWeVpTQS9QeUIxYm1SbFptbHVaV1FzWEc0Z0lDQWdJQ0IwYVhSc1pUb2djMk5vWlcxaFRXVjBZUzUwYVhSc1pTeGNiaUFnSUNBZ0lIWmxjbk5wYjI0NklITmphR1Z0WVUxbGRHRXVkbVZ5YzJsdmJpeGNiaUFnSUNBZ0lIWnBiMnhsYm5SVmMzTmhaMlZPWVcxbE9pQnpZMmhsYldGTlpYUmhMblpwYjJ4bGJuUlZjM05oWjJWT1lXMWxMRnh1SUNBZ0lIMDdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR0Z6ZVc1aklGOWxlSFJ5WVdOMFIweFVSa2x0WVdkbEtHbHVaR1Y0T2lCdWRXMWlaWElwT2lCUWNtOXRhWE5sUEVoVVRVeEpiV0ZuWlVWc1pXMWxiblFnZkNCdWRXeHNQaUI3WEc0Z0lDQWdZMjl1YzNRZ2FuTnZiaUE5SUhSb2FYTXVjR0Z5YzJWeUxtcHpiMjRnWVhNZ1IweFVSbE5qYUdWdFlTNUpSMHhVUmp0Y2JseHVJQ0FnSUdOdmJuTjBJSE52ZFhKalpTQTlJR3B6YjI0dWFXMWhaMlZ6UHk1YmFXNWtaWGhkTzF4dVhHNGdJQ0FnYVdZZ0tITnZkWEpqWlNBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCamIyNXpiMnhsTG5kaGNtNG9YRzRnSUNBZ0lDQWdJR0JXVWsxTlpYUmhURzloWkdWeVVHeDFaMmx1T2lCQmRIUmxiWEIwSUhSdklIVnpaU0JwYldGblpYTmJKSHRwYm1SbGVIMWRJRzltSUdkc1ZFWWdZWE1nWVNCMGFIVnRZbTVoYVd3Z1luVjBJSFJvWlNCcGJXRm5aU0JrYjJWemJpZDBJR1Y0YVhOMFlDeGNiaUFnSUNBZ0lDazdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJTWldZNklHaDBkSEJ6T2k4dloybDBhSFZpTG1OdmJTOXRjbVJ2YjJJdmRHaHlaV1V1YW5NdllteHZZaTl5TVRJMEwyVjRZVzF3YkdWekwycHpiUzlzYjJGa1pYSnpMMGRNVkVaTWIyRmtaWEl1YW5NalRESTBOamRjYmx4dUlDQWdJQzh2SUdCemIzVnlZMlV1ZFhKcFlDQnRhV2RvZENCaVpTQmhJSEpsWm1WeVpXNWpaU0IwYnlCaElHWnBiR1ZjYmlBZ0lDQnNaWFFnYzI5MWNtTmxWVkpKT2lCemRISnBibWNnZkNCMWJtUmxabWx1WldRZ1BTQnpiM1Z5WTJVdWRYSnBPMXh1WEc0Z0lDQWdMeThnVEc5aFpDQjBhR1VnWW1sdVlYSjVJR0Z6SUdFZ1lteHZZbHh1SUNBZ0lHbG1JQ2h6YjNWeVkyVXVZblZtWm1WeVZtbGxkeUFoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQmlkV1ptWlhKV2FXVjNJRDBnWVhkaGFYUWdkR2hwY3k1d1lYSnpaWEl1WjJWMFJHVndaVzVrWlc1amVTZ25ZblZtWm1WeVZtbGxkeWNzSUhOdmRYSmpaUzVpZFdabVpYSldhV1YzS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJR0pzYjJJZ1BTQnVaWGNnUW14dllpaGJZblZtWm1WeVZtbGxkMTBzSUhzZ2RIbHdaVG9nYzI5MWNtTmxMbTFwYldWVWVYQmxJSDBwTzF4dUlDQWdJQ0FnYzI5MWNtTmxWVkpKSUQwZ1ZWSk1MbU55WldGMFpVOWlhbVZqZEZWU1RDaGliRzlpS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2MyOTFjbU5sVlZKSklEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lHTnZibk52YkdVdWQyRnliaWhjYmlBZ0lDQWdJQ0FnWUZaU1RVMWxkR0ZNYjJGa1pYSlFiSFZuYVc0NklFRjBkR1Z0Y0hRZ2RHOGdkWE5sSUdsdFlXZGxjMXNrZTJsdVpHVjRmVjBnYjJZZ1oyeFVSaUJoY3lCaElIUm9kVzFpYm1GcGJDQmlkWFFnZEdobElHbHRZV2RsSUdOdmRXeGtiaWQwSUd4dllXUWdjSEp2Y0dWeWJIbGdMRnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElHeHZZV1JsY2lBOUlHNWxkeUJVU0ZKRlJTNUpiV0ZuWlV4dllXUmxjaWdwTzF4dUlDQWdJSEpsZEhWeWJpQmhkMkZwZENCc2IyRmtaWEl1Ykc5aFpFRnplVzVqS0hKbGMyOXNkbVZWVWt3b2MyOTFjbU5sVlZKSkxDQW9kR2hwY3k1d1lYSnpaWElnWVhNZ1lXNTVLUzV2Y0hScGIyNXpMbkJoZEdncEtTNWpZWFJqYUNnb1pYSnliM0lwSUQwK0lIdGNiaUFnSUNBZ0lHTnZibk52YkdVdVpYSnliM0lvWlhKeWIzSXBPMXh1SUNBZ0lDQWdZMjl1YzI5c1pTNTNZWEp1S0NkV1VrMU5aWFJoVEc5aFpHVnlVR3gxWjJsdU9pQkdZV2xzWldRZ2RHOGdiRzloWkNCaElIUm9kVzFpYm1GcGJDQnBiV0ZuWlNjcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZTazdYRzRnSUgxY2JuMWNiaUlzSW1sdGNHOXlkQ0FxSUdGeklGUklVa1ZGSUdaeWIyMGdKM1JvY21WbEp6dGNibWx0Y0c5eWRDQjdJRlpTVFVWNGNISmxjM05wYjI1TllXNWhaMlZ5SUgwZ1puSnZiU0FuTGk5bGVIQnlaWE56YVc5dWN5OVdVazFGZUhCeVpYTnphVzl1VFdGdVlXZGxjaWM3WEc1cGJYQnZjblFnZXlCV1VrMUdhWEp6ZEZCbGNuTnZiaUI5SUdaeWIyMGdKeTR2Wm1seWMzUlFaWEp6YjI0dlZsSk5SbWx5YzNSUVpYSnpiMjRuTzF4dWFXMXdiM0owSUhzZ1ZsSk5TSFZ0WVc1dmFXUWdmU0JtY205dElDY3VMMmgxYldGdWIybGtMMVpTVFVoMWJXRnViMmxrSnp0Y2JtbHRjRzl5ZENCN0lGWlNUVXh2YjJ0QmRDQjlJR1p5YjIwZ0p5NHZiRzl2YTBGMEwxWlNUVXh2YjJ0QmRDYzdYRzVwYlhCdmNuUWdleUJXVWsxTlpYUmhJSDBnWm5KdmJTQW5MaTl0WlhSaEwxWlNUVTFsZEdFbk8xeHVhVzF3YjNKMElIc2dWbEpOUTI5eVpWQmhjbUZ0WlhSbGNuTWdmU0JtY205dElDY3VMMVpTVFVOdmNtVlFZWEpoYldWMFpYSnpKenRjYmx4dUx5b3FYRzRnS2lCQklHTnNZWE56SUhSb1lYUWdjbVZ3Y21WelpXNTBjeUJoSUhOcGJtZHNaU0JXVWswZ2JXOWtaV3d1WEc0Z0tpQlVhR2x6SUdOc1lYTnpJRzl1YkhrZ2FXNWpiSFZrWlhNZ1kyOXlaU0J6Y0dWaklHOW1JSFJvWlNCV1VrMGdLR0JXVWsxRFgzWnliV0FwTGx4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZsSk5RMjl5WlNCN1hHNGdJQzhxS2x4dUlDQWdLaUJnVkVoU1JVVXVSM0p2ZFhCZ0lIUm9ZWFFnWTI5dWRHRnBibk1nZEdobElHVnVkR2x5WlNCV1VrMHVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjbVZoWkc5dWJIa2djMk5sYm1VNklGUklVa1ZGTGtkeWIzVndPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRiMjUwWVdsdWN5QnRaWFJoSUdacFpXeGtjeUJ2WmlCMGFHVWdWbEpOTGx4dUlDQWdLaUJaYjNVZ2JXbG5hSFFnZDJGdWRDQjBieUJ5WldabGNpQjBhR1Z6WlNCc2FXTmxibk5sSUdacFpXeGtjeUJpWldadmNtVWdkWE5sSUhsdmRYSWdWbEpOY3k1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCeVpXRmtiMjVzZVNCdFpYUmhPaUJXVWsxTlpYUmhPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRiMjUwWVdsdWN5QjdRR3hwYm1zZ1ZsSk5TSFZ0WVc1dmFXUjlJRzltSUhSb1pTQldVazB1WEc0Z0lDQXFJRmx2ZFNCallXNGdZMjl1ZEhKdmJDQmxZV05vSUdKdmJtVnpJSFZ6YVc1bklIdEFiR2x1YXlCV1VrMUlkVzFoYm05cFpDNW5aWFJPYjNKdFlXeHBlbVZrUW05dVpVNXZaR1Y5SUc5eUlIdEFiR2x1YXlCV1VrMUlkVzFoYm05cFpDNW5aWFJTWVhkQ2IyNWxUbTlrWlgwdVhHNGdJQ0FxWEc0Z0lDQXFJRUJVVDBSUElFRmtaQ0JoSUd4cGJtc2dkRzhnVmxKTklITndaV05jYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0JvZFcxaGJtOXBaRG9nVmxKTlNIVnRZVzV2YVdRN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOdmJuUmhhVzV6SUh0QWJHbHVheUJXVWsxRmVIQnlaWE56YVc5dVRXRnVZV2RsY24wZ2IyWWdkR2hsSUZaU1RTNWNiaUFnSUNvZ1dXOTFJRzFwWjJoMElIZGhiblFnZEc4Z1kyOXVkSEp2YkNCMGFHVnpaU0JtWVdOcFlXd2daWGh3Y21WemMybHZibk1nZG1saElIdEFiR2x1YXlCV1VrMUZlSEJ5WlhOemFXOXVUV0Z1WVdkbGNpNXpaWFJXWVd4MVpYMHVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjbVZoWkc5dWJIa2daWGh3Y21WemMybHZiazFoYm1GblpYSS9PaUJXVWsxRmVIQnlaWE56YVc5dVRXRnVZV2RsY2p0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTI5dWRHRnBibk1nZTBCc2FXNXJJRlpTVFVacGNuTjBVR1Z5YzI5dWZTQnZaaUIwYUdVZ1ZsSk5MbHh1SUNBZ0tpQldVazFHYVhKemRGQmxjbk52YmlCcGN5QnRiM04wYkhrZ2RYTmxaQ0JtYjNJZ2JXVnphQ0JqZFd4c2FXNW5JR1p2Y2lCbWFYSnpkQ0J3WlhKemIyNGdkbWxsZHk1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCeVpXRmtiMjVzZVNCbWFYSnpkRkJsY25OdmJqODZJRlpTVFVacGNuTjBVR1Z5YzI5dU8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGIyNTBZV2x1Y3lCN1FHeHBibXNnVmxKTlRHOXZhMEYwZlNCdlppQjBhR1VnVmxKTkxseHVJQ0FnS2lCWmIzVWdiV2xuYUhRZ2QyRnVkQ0IwYnlCMWMyVWdlMEJzYVc1cklGWlNUVXh2YjJ0QmRDNTBZWEpuWlhSOUlIUnZJR052Ym5SeWIyd2dkR2hsSUdWNVpTQmthWEpsWTNScGIyNGdiMllnZVc5MWNpQldVazF6TGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhKbFlXUnZibXg1SUd4dmIydEJkRDg2SUZaU1RVeHZiMnRCZER0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxJR0VnYm1WM0lGWlNUU0JwYm5OMFlXNWpaUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUhCaGNtRnRjeUJiVzFaU1RWQmhjbUZ0WlhSbGNuTmRYU0IwYUdGMElISmxjSEpsYzJWdWRITWdZMjl0Y0c5dVpXNTBjeUJ2WmlCMGFHVWdWbEpOWEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2NHRnlZVzF6T2lCV1VrMURiM0psVUdGeVlXMWxkR1Z5Y3lrZ2UxeHVJQ0FnSUhSb2FYTXVjMk5sYm1VZ1BTQndZWEpoYlhNdWMyTmxibVU3WEc0Z0lDQWdkR2hwY3k1dFpYUmhJRDBnY0dGeVlXMXpMbTFsZEdFN1hHNGdJQ0FnZEdocGN5NW9kVzFoYm05cFpDQTlJSEJoY21GdGN5NW9kVzFoYm05cFpEdGNiaUFnSUNCMGFHbHpMbVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlJRDBnY0dGeVlXMXpMbVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlPMXh1SUNBZ0lIUm9hWE11Wm1seWMzUlFaWEp6YjI0Z1BTQndZWEpoYlhNdVptbHljM1JRWlhKemIyNDdYRzRnSUNBZ2RHaHBjeTVzYjI5clFYUWdQU0J3WVhKaGJYTXViRzl2YTBGME8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJQ29xV1c5MUlHNWxaV1FnZEc4Z1kyRnNiQ0IwYUdseklHOXVJSGx2ZFhJZ2RYQmtZWFJsSUd4dmIzQXVLaXBjYmlBZ0lDcGNiaUFnSUNvZ1ZHaHBjeUJtZFc1amRHbHZiaUIxY0dSaGRHVnpJR1YyWlhKNUlGWlNUU0JqYjIxd2IyNWxiblJ6TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ1pHVnNkR0VnWkdWc2RHRlVhVzFsWEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nZFhCa1lYUmxLR1JsYkhSaE9pQnVkVzFpWlhJcE9pQjJiMmxrSUh0Y2JpQWdJQ0IwYUdsekxtaDFiV0Z1YjJsa0xuVndaR0YwWlNncE8xeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdWJHOXZhMEYwS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbXh2YjJ0QmRDNTFjR1JoZEdVb1pHVnNkR0VwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbVY0Y0hKbGMzTnBiMjVOWVc1aFoyVnlLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtVjRjSEpsYzNOcGIyNU5ZVzVoWjJWeUxuVndaR0YwWlNncE8xeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dUlpd2lhVzF3YjNKMElIc2dSMHhVUml3Z1IweFVSa3h2WVdSbGNsQnNkV2RwYml3Z1IweFVSbEJoY25ObGNpQjlJR1p5YjIwZ0ozUm9jbVZsTDJWNFlXMXdiR1Z6TDJwemJTOXNiMkZrWlhKekwwZE1WRVpNYjJGa1pYSXVhbk1uTzF4dWFXMXdiM0owSUhzZ1ZsSk5RMjl5WlV4dllXUmxjbEJzZFdkcGJrOXdkR2x2Ym5NZ2ZTQm1jbTl0SUNjdUwxWlNUVU52Y21WTWIyRmtaWEpRYkhWbmFXNVBjSFJwYjI1ekp6dGNibWx0Y0c5eWRDQjdJRlpTVFVOdmNtVWdmU0JtY205dElDY3VMMVpTVFVOdmNtVW5PMXh1YVcxd2IzSjBJSHNnVmxKTlJYaHdjbVZ6YzJsdmJreHZZV1JsY2xCc2RXZHBiaUI5SUdaeWIyMGdKeTR2Wlhod2NtVnpjMmx2Ym5NdlZsSk5SWGh3Y21WemMybHZia3h2WVdSbGNsQnNkV2RwYmljN1hHNXBiWEJ2Y25RZ2V5QldVazFHYVhKemRGQmxjbk52Ymt4dllXUmxjbEJzZFdkcGJpQjlJR1p5YjIwZ0p5NHZabWx5YzNSUVpYSnpiMjR2VmxKTlJtbHljM1JRWlhKemIyNU1iMkZrWlhKUWJIVm5hVzRuTzF4dWFXMXdiM0owSUhzZ1ZsSk5TSFZ0WVc1dmFXUk1iMkZrWlhKUWJIVm5hVzRnZlNCbWNtOXRJQ2N1TDJoMWJXRnViMmxrTDFaU1RVaDFiV0Z1YjJsa1RHOWhaR1Z5VUd4MVoybHVKenRjYm1sdGNHOXlkQ0I3SUZaU1RVMWxkR0ZNYjJGa1pYSlFiSFZuYVc0Z2ZTQm1jbTl0SUNjdUwyMWxkR0V2VmxKTlRXVjBZVXh2WVdSbGNsQnNkV2RwYmljN1hHNXBiWEJ2Y25RZ2V5QldVazFNYjI5clFYUk1iMkZrWlhKUWJIVm5hVzRnZlNCbWNtOXRJQ2N1TDJ4dmIydEJkQzlXVWsxTWIyOXJRWFJNYjJGa1pYSlFiSFZuYVc0bk8xeHVhVzF3YjNKMElIUjVjR1VnZXlCV1VrMUlkVzFoYm05cFpDQjlJR1p5YjIwZ0p5NHZhSFZ0WVc1dmFXUW5PMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QldVazFOWlhSaElIMGdabkp2YlNBbkxpOXRaWFJoSnp0Y2JseHVaWGh3YjNKMElHTnNZWE56SUZaU1RVTnZjbVZNYjJGa1pYSlFiSFZuYVc0Z2FXMXdiR1Z0Wlc1MGN5QkhURlJHVEc5aFpHVnlVR3gxWjJsdUlIdGNiaUFnY0hWaWJHbGpJR2RsZENCdVlXMWxLQ2s2SUhOMGNtbHVaeUI3WEc0Z0lDQWdMeThnVjJVZ2MyaHZkV3hrSUhWelpTQjBhR1VnWlhoMFpXNXphVzl1SUc1aGJXVWdhVzV6ZEdWaFpDQmlkWFFnZDJVZ2FHRjJaU0J0ZFd4MGFYQnNaU0J3YkhWbmFXNXpJR1p2Y2lCaGJpQmxlSFJsYm5OcGIyNHVMaTVjYmlBZ0lDQnlaWFIxY200Z0oxWlNUVU5mZG5KdEp6dGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnlaV0ZrYjI1c2VTQndZWEp6WlhJNklFZE1WRVpRWVhKelpYSTdYRzVjYmlBZ2NIVmliR2xqSUhKbFlXUnZibXg1SUdWNGNISmxjM05wYjI1UWJIVm5hVzQ2SUZaU1RVVjRjSEpsYzNOcGIyNU1iMkZrWlhKUWJIVm5hVzQ3WEc0Z0lIQjFZbXhwWXlCeVpXRmtiMjVzZVNCbWFYSnpkRkJsY25OdmJsQnNkV2RwYmpvZ1ZsSk5SbWx5YzNSUVpYSnpiMjVNYjJGa1pYSlFiSFZuYVc0N1hHNGdJSEIxWW14cFl5QnlaV0ZrYjI1c2VTQm9kVzFoYm05cFpGQnNkV2RwYmpvZ1ZsSk5TSFZ0WVc1dmFXUk1iMkZrWlhKUWJIVm5hVzQ3WEc0Z0lIQjFZbXhwWXlCeVpXRmtiMjVzZVNCc2IyOXJRWFJRYkhWbmFXNDZJRlpTVFV4dmIydEJkRXh2WVdSbGNsQnNkV2RwYmp0Y2JpQWdjSFZpYkdsaklISmxZV1J2Ym14NUlHMWxkR0ZRYkhWbmFXNDZJRlpTVFUxbGRHRk1iMkZrWlhKUWJIVm5hVzQ3WEc1Y2JpQWdjSFZpYkdsaklHTnZibk4wY25WamRHOXlLSEJoY25ObGNqb2dSMHhVUmxCaGNuTmxjaXdnYjNCMGFXOXVjejg2SUZaU1RVTnZjbVZNYjJGa1pYSlFiSFZuYVc1UGNIUnBiMjV6S1NCN1hHNGdJQ0FnZEdocGN5NXdZWEp6WlhJZ1BTQndZWEp6WlhJN1hHNWNiaUFnSUNCamIyNXpkQ0JvWld4d1pYSlNiMjkwSUQwZ2IzQjBhVzl1Y3o4dWFHVnNjR1Z5VW05dmREdGNiaUFnSUNCamIyNXpkQ0JoZFhSdlZYQmtZWFJsU0hWdFlXNUNiMjVsY3lBOUlHOXdkR2x2Ym5NL0xtRjFkRzlWY0dSaGRHVklkVzFoYmtKdmJtVnpPMXh1WEc0Z0lDQWdkR2hwY3k1bGVIQnlaWE56YVc5dVVHeDFaMmx1SUQwZ2IzQjBhVzl1Y3o4dVpYaHdjbVZ6YzJsdmJsQnNkV2RwYmlBL1B5QnVaWGNnVmxKTlJYaHdjbVZ6YzJsdmJreHZZV1JsY2xCc2RXZHBiaWh3WVhKelpYSXBPMXh1SUNBZ0lIUm9hWE11Wm1seWMzUlFaWEp6YjI1UWJIVm5hVzRnUFNCdmNIUnBiMjV6UHk1bWFYSnpkRkJsY25OdmJsQnNkV2RwYmlBL1B5QnVaWGNnVmxKTlJtbHljM1JRWlhKemIyNU1iMkZrWlhKUWJIVm5hVzRvY0dGeWMyVnlLVHRjYmlBZ0lDQjBhR2x6TG1oMWJXRnViMmxrVUd4MVoybHVJRDFjYmlBZ0lDQWdJRzl3ZEdsdmJuTS9MbWgxYldGdWIybGtVR3gxWjJsdUlEOC9JRzVsZHlCV1VrMUlkVzFoYm05cFpFeHZZV1JsY2xCc2RXZHBiaWh3WVhKelpYSXNJSHNnYUdWc2NHVnlVbTl2ZEN3Z1lYVjBiMVZ3WkdGMFpVaDFiV0Z1UW05dVpYTWdmU2s3WEc0Z0lDQWdkR2hwY3k1c2IyOXJRWFJRYkhWbmFXNGdQU0J2Y0hScGIyNXpQeTVzYjI5clFYUlFiSFZuYVc0Z1B6OGdibVYzSUZaU1RVeHZiMnRCZEV4dllXUmxjbEJzZFdkcGJpaHdZWEp6WlhJc0lIc2dhR1ZzY0dWeVVtOXZkQ0I5S1R0Y2JpQWdJQ0IwYUdsekxtMWxkR0ZRYkhWbmFXNGdQU0J2Y0hScGIyNXpQeTV0WlhSaFVHeDFaMmx1SUQ4L0lHNWxkeUJXVWsxTlpYUmhURzloWkdWeVVHeDFaMmx1S0hCaGNuTmxjaWs3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWVhONWJtTWdZV1owWlhKU2IyOTBLR2RzZEdZNklFZE1WRVlwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQmhkMkZwZENCMGFHbHpMbTFsZEdGUWJIVm5hVzR1WVdaMFpYSlNiMjkwS0dkc2RHWXBPMXh1SUNBZ0lHRjNZV2wwSUhSb2FYTXVhSFZ0WVc1dmFXUlFiSFZuYVc0dVlXWjBaWEpTYjI5MEtHZHNkR1lwTzF4dUlDQWdJR0YzWVdsMElIUm9hWE11Wlhod2NtVnpjMmx2YmxCc2RXZHBiaTVoWm5SbGNsSnZiM1FvWjJ4MFppazdYRzRnSUNBZ1lYZGhhWFFnZEdocGN5NXNiMjlyUVhSUWJIVm5hVzR1WVdaMFpYSlNiMjkwS0dkc2RHWXBPMXh1SUNBZ0lHRjNZV2wwSUhSb2FYTXVabWx5YzNSUVpYSnpiMjVRYkhWbmFXNHVZV1owWlhKU2IyOTBLR2RzZEdZcE8xeHVYRzRnSUNBZ1kyOXVjM1FnYldWMFlTQTlJR2RzZEdZdWRYTmxja1JoZEdFdWRuSnRUV1YwWVNCaGN5QldVazFOWlhSaElId2diblZzYkR0Y2JpQWdJQ0JqYjI1emRDQm9kVzFoYm05cFpDQTlJR2RzZEdZdWRYTmxja1JoZEdFdWRuSnRTSFZ0WVc1dmFXUWdZWE1nVmxKTlNIVnRZVzV2YVdRZ2ZDQnVkV3hzTzF4dVhHNGdJQ0FnTHk4Z2JXVjBZU0JoYm1RZ2FIVnRZVzV2YVdRZ1lYSmxJSEpsY1hWcGNtVmtJSFJ2SUdKbElHRWdWbEpOTGx4dUlDQWdJQzh2SUVSdmJpZDBJR055WldGMFpTQldVazBnYVdZZ2RHaGxlU0JoY21VZ2JuVnNiRnh1SUNBZ0lHbG1JQ2h0WlhSaElDWW1JR2gxYldGdWIybGtLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQjJjbTFEYjNKbElEMGdibVYzSUZaU1RVTnZjbVVvZTF4dUlDQWdJQ0FnSUNCelkyVnVaVG9nWjJ4MFppNXpZMlZ1WlN4Y2JpQWdJQ0FnSUNBZ1pYaHdjbVZ6YzJsdmJrMWhibUZuWlhJNklHZHNkR1l1ZFhObGNrUmhkR0V1ZG5KdFJYaHdjbVZ6YzJsdmJrMWhibUZuWlhJc1hHNGdJQ0FnSUNBZ0lHWnBjbk4wVUdWeWMyOXVPaUJuYkhSbUxuVnpaWEpFWVhSaExuWnliVVpwY25OMFVHVnljMjl1TEZ4dUlDQWdJQ0FnSUNCb2RXMWhibTlwWkN4Y2JpQWdJQ0FnSUNBZ2JHOXZhMEYwT2lCbmJIUm1MblZ6WlhKRVlYUmhMblp5YlV4dmIydEJkQ3hjYmlBZ0lDQWdJQ0FnYldWMFlTeGNiaUFnSUNBZ0lIMHBPMXh1WEc0Z0lDQWdJQ0JuYkhSbUxuVnpaWEpFWVhSaExuWnliVU52Y21VZ1BTQjJjbTFEYjNKbE8xeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dUlsMHNJbTVoYldWeklqcGJJbEJQVTFOSlFreEZYMU5RUlVOZlZrVlNVMGxQVGxNaUxDSmZkak5CSWl3aVgzWXpRaUlzSWw5eGRXRjBRU0lzSWw5eGRXRjBRaUlzSWxaRlF6TmZVRTlUU1ZSSlZrVmZXaUlzSWw5bGRXeGxja0VpWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN096czdRVUZKUVR0QlFVTkJPMEZCUTJFc1RVRkJRU3hoUVVGakxGTkJRVkVzUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUVR0QlFXOURMME03T3p0QlFVZEhPMEZCUTBnc1NVRkJRU3hKUVVGWExHMUNRVUZ0UWl4SFFVRkJPMEZCUXpWQ0xGRkJRVUVzU1VGQlNTeEpRVUZKTEVOQlFVTXNZVUZCWVN4TFFVRkxMRTlCUVU4c1JVRkJSVHRCUVVOc1F5eFpRVUZCTEU5QlFVOHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXp0QlFVTjBReXhUUVVGQk8wRkJRVTBzWVVGQlFTeEpRVUZKTEVsQlFVa3NRMEZCUXl4aFFVRmhMRXRCUVVzc1QwRkJUeXhGUVVGRk8xbEJRM3BETEU5QlFVOHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVOd1FpeFRRVUZCTzBGQlFVMHNZVUZCUVR0QlFVTk1MRmxCUVVFc1QwRkJUeXhIUVVGSExFTkJRVU03UVVGRFdpeFRRVUZCTzB0QlEwWTdRVUZGUkRzN08wRkJSMGM3UVVGRFNDeEpRVUZCTEVsQlFWY3NiMEpCUVc5Q0xFZEJRVUU3UVVGRE4wSXNVVUZCUVN4SlFVRkpMRWxCUVVrc1EwRkJReXhqUVVGakxFdEJRVXNzVDBGQlR5eEZRVUZGTzBGQlEyNURMRmxCUVVFc1QwRkJUeXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRE8wRkJRM1JETEZOQlFVRTdRVUZCVFN4aFFVRkJMRWxCUVVrc1NVRkJTU3hEUVVGRExHTkJRV01zUzBGQlN5eFBRVUZQTEVWQlFVVTdXVUZETVVNc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzBGQlEzQkNMRk5CUVVFN1FVRkJUU3hoUVVGQk8wRkJRMHdzV1VGQlFTeFBRVUZQTEVkQlFVY3NRMEZCUXp0QlFVTmFMRk5CUVVFN1MwRkRSanRCUVVWRU96czdRVUZIUnp0QlFVTklMRWxCUVVFc1NVRkJWeXh0UWtGQmJVSXNSMEZCUVR0QlFVTTFRaXhSUVVGQkxFbEJRVWtzU1VGQlNTeERRVUZETEdGQlFXRXNTMEZCU3l4UFFVRlBMRVZCUVVVN1FVRkRiRU1zV1VGQlFTeFBRVUZQTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZEZEVNc1UwRkJRVHRCUVVGTkxHRkJRVUVzU1VGQlNTeEpRVUZKTEVOQlFVTXNZVUZCWVN4TFFVRkxMRTlCUVU4c1JVRkJSVHRaUVVONlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRjRUlzVTBGQlFUdEJRVUZOTEdGQlFVRTdRVUZEVEN4WlFVRkJMRTlCUVU4c1IwRkJSeXhEUVVGRE8wRkJRMW9zVTBGQlFUdExRVU5HTzBGQlJVUXNTVUZCUVN4WFFVRkJMRU5CUVZrc1kwRkJjMElzUlVGQlFUdEJRVU5vUXl4UlFVRkJMRXRCUVVzc1JVRkJSU3hEUVVGRE8wRkJlRVZXT3p0QlFVVkhPMUZCUTBrc1NVRkJUU3hEUVVGQkxFMUJRVUVzUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZGY0VJN08wRkJSVWM3VVVGRFNTeEpRVUZSTEVOQlFVRXNVVUZCUVN4SFFVRkhMRXRCUVVzc1EwRkJRenRCUVVWNFFqczdRVUZGUnp0UlFVTkpMRWxCUVdFc1EwRkJRU3hoUVVGQkxFZEJRVGhDTEUxQlFVMHNRMEZCUXp0QlFVVjZSRHM3UVVGRlJ6dFJRVU5KTEVsQlFXTXNRMEZCUVN4alFVRkJMRWRCUVRoQ0xFMUJRVTBzUTBGQlF6dEJRVVV4UkRzN1FVRkZSenRSUVVOSkxFbEJRV0VzUTBGQlFTeGhRVUZCTEVkQlFUaENMRTFCUVUwc1EwRkJRenRSUVVWcVJDeEpRVUZOTEVOQlFVRXNUVUZCUVN4SFFVRjNRaXhGUVVGRkxFTkJRVU03UVVGcFJIWkRMRkZCUVVFc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZwUWl4alFVRkJMRVZCUVVFc1kwRkJZeXhGUVVGRkxFTkJRVU03UVVGRE9VTXNVVUZCUVN4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExHTkJRV01zUTBGQlF6czdRVUZIY2tNc1VVRkJRU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEdWQlFXVXNRMEZCUXpzN08wRkJTVFZDTEZGQlFVRXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhMUVVGTExFTkJRVU03UzBGRGRFSTdRVUZGVFN4SlFVRkJMRTlCUVU4c1EwRkJReXhKUVVGMVFpeEZRVUZCTzBGQlEzQkRMRkZCUVVFc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRlRUk3UVVGRlJEczdPMEZCUjBjN1FVRkRTU3hKUVVGQkxGZEJRVmNzUTBGQlF5eFBRVTlzUWl4RlFVRkJPenRCUVVORExGRkJRVUVzU1VGQlNTeFpRVUZaTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEYkVZc1dVRkJXU3hKUVVGSkxFTkJRVUVzUlVGQlFTeEhRVUZCTEU5QlFVOHNTMEZCVUN4SlFVRkJMRWxCUVVFc1QwRkJUeXhMUVVGUUxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRTlCUVU4c1EwRkJSU3hWUVVGVkxFMUJRVWtzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFZEJRVUVzUjBGQlJ5eERRVUZETzBGQlJUTkRMRkZCUVVFc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4SlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUXk5RU8wRkJSVVE3TzBGQlJVYzdTVUZEU1N4clFrRkJhMElzUjBGQlFUdEJRVU4yUWl4UlFVRkJMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNSVUZCUlN4RFFVRkRMRU5CUVVNN1MwRkRNVVE3UVVGRFJqczdRVU01U0VRN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVzlIUVR0QlFVTlBMRk5CUVZNc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJTeFZRVUZWTEVWQlFVVXNRMEZCUXl4RlFVRkZMRk5CUVZNc1JVRkJSVHRCUVVNM1JDeEpRVUZKTEZOQlFWTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFOUJRVThzUzBGQlN5eFpRVUZaTEVOQlFVTXNSMEZCUnl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zVlVGQlZTeFBRVUZQTEVWQlFVVXNSVUZCUlN4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlR0QlFVTm9TQ3hKUVVGSkxFOUJRVThzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhGUVVGRkxGVkJRVlVzVDBGQlR5eEZRVUZGTEUxQlFVMHNSVUZCUlR0QlFVTXZSQ3hSUVVGUkxGTkJRVk1zVTBGQlV5eERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVTdRVUZEYmtjc1VVRkJVU3hUUVVGVExGRkJRVkVzUTBGQlF5eExRVUZMTEVWQlFVVXNSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVTdRVUZEZEVjc1VVRkJVU3hUUVVGVExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4TlFVRk5MRU5CUVVNc1NVRkJTU3hIUVVGSExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZETEVWQlFVVTdRVUZEZEVnc1VVRkJVU3hKUVVGSkxFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NVMEZCVXl4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzVlVGQlZTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRE9VVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkRVRHM3UVVOMlNFRXNVMEZCVXl4NVFrRkJlVUlzUTBGQlF5eEpRVUZWTEVWQlFVVXNVMEZCYVVJc1JVRkJSU3hKUVVGdlFpeEZRVUZCT3p0QlFVTndSaXhKUVVGQkxFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJkMElzUTBGQlF6dEJRVVZzUkRzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096dEJRV2xFUnpzN1NVRkhTQ3hOUVVGTkxGVkJRVlVzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMRU5CUVVNc1MwRkJTeXhOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRPMGxCUXpORExFbEJRVWtzVlVGQlZTeEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTjBRaXhSUVVGQkxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNiVVJCUVcxRUxGTkJRVk1zUTBGQlFTeHZRMEZCUVN4RFFVRnpReXhEUVVGRExFTkJRVU03UVVGRGFrZ3NVVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOaUxFdEJRVUU3UVVGRlJDeEpRVUZCTEUxQlFVMHNVMEZCVXl4SFFVRkhMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRGJFTXNTVUZCU1N4VFFVRlRMRWxCUVVrc1NVRkJTU3hGUVVGRk8wRkJRM0pDTEZGQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRZaXhMUVVGQk96dEpRVWRFTEUxQlFVMHNWVUZCVlN4SFFVRkhMRU5CUVVFc1JVRkJRU3hIUVVGQkxFbEJRVWtzUTBGQlF5eE5RVUZOTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVjc1UwRkJVeXhEUVVGRExFTkJRVU03U1VGRE5VTXNTVUZCU1N4VlFVRlZMRWxCUVVrc1NVRkJTU3hGUVVGRk8wRkJRM1JDTEZGQlFVRXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXh2UkVGQmIwUXNVMEZCVXl4RFFVRkJMRzlEUVVGQkxFTkJRWE5ETEVOQlFVTXNRMEZCUXp0QlFVTnNTQ3hSUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETzBGQlEySXNTMEZCUVR0QlFVVkVMRWxCUVVFc1RVRkJUU3hqUVVGakxFZEJRVWNzVlVGQlZTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNN08wbEJSM0JFTEUxQlFVMHNWVUZCVlN4SFFVRnBRaXhGUVVGRkxFTkJRVU03UVVGRGNFTXNTVUZCUVN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zVFVGQlRTeExRVUZKTzBGQlEzWkNMRkZCUVVFc1NVRkJTU3hWUVVGVkxFTkJRVU1zVFVGQlRTeEhRVUZITEdOQlFXTXNSVUZCUlR0WlFVTjBReXhKUVVGTExFMUJRV01zUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZETVVJc1owSkJRVUVzVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRnZRaXhEUVVGRExFTkJRVU03UVVGRGRrTXNZVUZCUVR0QlFVTkdMRk5CUVVFN1FVRkRTQ3hMUVVGRExFTkJRVU1zUTBGQlF6dEJRVVZJTEVsQlFVRXNUMEZCVHl4VlFVRlZMRU5CUVVNN1FVRkRjRUlzUTBGQlF6dEJRVVZFT3pzN096czdPenRCUVZGSE8wRkJRMjFDTEZOQlFVRXNOa0pCUVRaQ0xFTkJRVU1zU1VGQlZTeEZRVUZGTEZOQlFXbENMRVZCUVVFN08wRkJReTlGTEZGQlFVRXNUVUZCVFN4SlFVRkpMRWRCUVcxQ0xFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1RVRkJUU3hGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzFGQlEyaEdMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRk5CUVZNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU42UkN4RFFVRkJMRU5CUVVFN1FVRkJRU3hEUVVGQk8wRkJSVVE3T3pzN096czdPMEZCVVVjN1FVRkRSeXhUUVVGblFpdzRRa0ZCT0VJc1EwRkJReXhKUVVGVkxFVkJRVUU3TzFGQlF6ZEVMRTFCUVUwc1MwRkJTeXhIUVVGeFFpeE5RVUZOTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1pVRkJaU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlF6RkZMRkZCUVVFc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFYZENMRU5CUVVNN1VVRkZOVU1zUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFdEJRVWs3V1VGRE5VSXNUVUZCVFN4TlFVRk5MRWRCUVVjc2VVSkJRWGxDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU0xUkN4SlFVRkpMRTFCUVUwc1NVRkJTU3hKUVVGSkxFVkJRVVU3UVVGRGJFSXNaMEpCUVVFc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1FVRkRlRUlzWVVGQlFUdEJRVU5JTEZOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlVnc1VVRkJRU3hQUVVGUExFZEJRVWNzUTBGQlF6dExRVU5hTEVOQlFVRXNRMEZCUVR0QlFVRkJPenRCUXpOSVJEczdPenM3TzBGQlRVYzdRVUZEWVN4VFFVRkJMRGhDUVVFNFFpeERRVUZETEUxQlFXdENMRVZCUVVVc1VVRkJkMElzUlVGQlFUczdTVUZEZWtZc1RVRkJUU3hoUVVGaExFZEJRVWNzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRmJrUXNTVUZCU1N4TFFVRkxMRWRCUVd0Q0xFbEJRVWtzUTBGQlF6dEpRVVZvUXl4SlFVRkpMR0ZCUVdFc1NVRkJTU3hIUVVGSExFVkJRVVU3UVVGRGVFSXNVVUZCUVN4TFFVRkxMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzUTBGQlFTeEZRVUZCTEVkQlFVRXNUVUZCVFN4RFFVRkRMRmxCUVZrc1EwRkJReXhIUVVGSExFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVVc1UwRkJVeXhOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGSkxFbEJRVWtzUTBGQlF6dEJRVU01UkN4TFFVRkJPMEZCUVUwc1UwRkJRVHRCUVZkTUxGRkJRVUVzVFVGQlRTeFpRVUZaTEVkQlFVY3NUVUZCVFN4RFFVRkRMRmxCUVhORExFTkJRVU03VVVGRmJrVXNUVUZCVFN4VFFVRlRMRWRCUVVjc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0UlFVVTNReXhKUVVGSkxFTkJRVUVzVTBGQlV5eExRVUZCTEVsQlFVRXNTVUZCVkN4VFFVRlRMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFWUXNVMEZCVXl4RFFVRkZMRWxCUVVrc1RVRkJTeXhYUVVGWExFVkJRVVU3UVVGRGJrTXNXVUZCUVN4TFFVRkxMRWRCUVVjc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF6dEJRVU42UWl4VFFVRkJPMEZCUTBZc1MwRkJRVHRCUVVWRUxFbEJRVUVzVDBGQlR5eExRVUZMTEVOQlFVTTdRVUZEWmpzN1FVTjBRMEU3UVVGRllTeE5RVUZCTEhWQ1FVRjFRaXhIUVVGSE8wRkJRM0pETEVsQlFVRXNSVUZCUlN4RlFVRkZMRWxCUVVrN1FVRkRVaXhKUVVGQkxFVkJRVVVzUlVGQlJTeEpRVUZKTzBGQlExSXNTVUZCUVN4RlFVRkZMRVZCUVVVc1NVRkJTVHRCUVVOU0xFbEJRVUVzUlVGQlJTeEZRVUZGTEVsQlFVazdRVUZEVWl4SlFVRkJMRVZCUVVVc1JVRkJSU3hKUVVGSk8wRkJRMUlzU1VGQlFTeExRVUZMTEVWQlFVVXNUMEZCVHp0QlFVTmtMRWxCUVVFc1MwRkJTeXhGUVVGRkxFOUJRVTg3UVVGRFpDeEpRVUZCTEV0QlFVc3NSVUZCUlN4UFFVRlBPMEZCUTJRc1NVRkJRU3hIUVVGSExFVkJRVVVzUzBGQlN6dEJRVU5XTEVsQlFVRXNUMEZCVHl4RlFVRkZMRk5CUVZNN1FVRkRiRUlzU1VGQlFTeE5RVUZOTEVWQlFVVXNVVUZCVVR0QlFVTm9RaXhKUVVGQkxGTkJRVk1zUlVGQlJTeFhRVUZYTzBGQlEzUkNMRWxCUVVFc1VVRkJVU3hGUVVGRkxGVkJRVlU3UVVGRGNFSXNTVUZCUVN4UlFVRlJMRVZCUVVVc1ZVRkJWVHRCUVVOd1FpeEpRVUZCTEZOQlFWTXNSVUZCUlN4WFFVRlhPMEZCUTNSQ0xFbEJRVUVzVTBGQlV5eEZRVUZGTEZkQlFWYzdRVUZEZEVJc1NVRkJRU3hWUVVGVkxFVkJRVVVzV1VGQldUdEJRVU40UWl4SlFVRkJMRTlCUVU4c1JVRkJSU3hUUVVGVE96czdRVU53UW5CQ096czdPMEZCU1VjN1FVRkRSeXhUUVVGVkxGRkJRVkVzUTBGQlF5eExRVUZoTEVWQlFVRTdRVUZEY0VNc1NVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkROME03TzAxRFNHRXNiMEpCUVc5Q0xFTkJRVUU3UVVGeFFpOUNMRWxCUVVFc1NVRkJWeXhYUVVGWExFZEJRVUU3UVVGRGNFSXNVVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdTMEZEYmtNN1FVRk5SQ3hKUVVGQkxFbEJRVmNzWVVGQllTeEhRVUZCTzFGQlEzUkNMRTlCUVU4c1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRE8wdEJReTlETzBGQlJVUTdPMEZCUlVjN1FVRkRTQ3hKUVVGQkxFbEJRVmNzYlVKQlFXMUNMRWRCUVVFN1VVRkROVUlzVFVGQlRTeE5RVUZOTEVkQlFUQkVMRVZCUVVVc1EwRkJRenRCUVVWNlJTeFJRVUZCTEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGVExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF5eERRVUZETzBGQlJUbEZMRkZCUVVFc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNWVUZCVlN4RFFVRkRMRXRCUVVrN1FVRkRha1VzV1VGQlFTeEpRVUZKTEdGQlFXRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3UVVGRE0wSXNaMEpCUVVFc1RVRkJUU3hEUVVGRExFbEJRU3RDTEVOQlFVTXNSMEZCUnl4VlFVRlZMRU5CUVVNN1FVRkRkRVFzWVVGQlFUdEJRVU5JTEZOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlVnc1VVRkJRU3hQUVVGUExFMUJRVTBzUTBGQlF6dExRVU5tTzBGQlJVUTdPMEZCUlVjN1FVRkRTQ3hKUVVGQkxFbEJRVmNzYlVKQlFXMUNMRWRCUVVFN1VVRkROVUlzVFVGQlRTeE5RVUZOTEVkQlFYTkRMRVZCUVVVc1EwRkJRenRCUVVWeVJDeFJRVUZCTEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGVExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF5eERRVUZETzBGQlJUbEZMRkZCUVVFc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNWVUZCVlN4RFFVRkRMRXRCUVVrN1FVRkRha1VzV1VGQlFTeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdEJRVU0xUWl4blFrRkJRU3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NWVUZCVlN4RFFVRkRPMEZCUXpOQ0xHRkJRVUU3UVVGRFNDeFRRVUZETEVOQlFVTXNRMEZCUXp0QlFVVklMRkZCUVVFc1QwRkJUeXhOUVVGTkxFTkJRVU03UzBGRFpqdEJRVVZFT3p0QlFVVkhPMEZCUTBnc1NVRkJRU3hYUVVGQkxFZEJRVUU3UVVGeVJVRTdPMEZCUlVjN1VVRkRTU3hKUVVGdlFpeERRVUZCTEc5Q1FVRkJMRWRCUVVjc1EwRkJReXhQUVVGUExFVkJRVVVzVjBGQlZ5eEZRVUZGTEZsQlFWa3NRMEZCUXl4RFFVRkRPMEZCUlc1Rk96dEJRVVZITzFGQlEwa3NTVUZCY1VJc1EwRkJRU3h4UWtGQlFTeEhRVUZITEVOQlFVTXNWVUZCVlN4RlFVRkZMRmRCUVZjc1JVRkJSU3hSUVVGUkxFVkJRVVVzVlVGQlZTeERRVUZETEVOQlFVTTdRVUZGTDBVN08wRkJSVWM3UVVGRFNTeFJRVUZCTEVsQlFVRXNRMEZCUVN4dlFrRkJiMElzUjBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVVTNSRHM3TzBGQlIwYzdVVUZEU3l4SlFVRlpMRU5CUVVFc1dVRkJRU3hIUVVGdlFpeEZRVUZGTEVOQlFVTTdRVUZMTTBNN08wRkJSVWM3VVVGRFN5eEpRVUZqTEVOQlFVRXNZMEZCUVN4SFFVRnpReXhGUVVGRkxFTkJRVU03TzB0Qk5FTTVSRHRCUVVWRU96czdPMEZCU1VjN1FVRkRTU3hKUVVGQkxFbEJRVWtzUTBGQlF5eE5RVUUwUWl4RlFVRkJPenRSUVVWMFF5eE5RVUZOTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzBGQlF5OURMRkZCUVVFc1YwRkJWeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEZWQlFWVXNTMEZCU1R0QlFVTnFReXhaUVVGQkxFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dEJRVU40UXl4VFFVRkRMRU5CUVVNc1EwRkJRenM3VVVGSFNDeE5RVUZOTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExGVkJRVlVzUzBGQlNUdEJRVU42UXl4WlFVRkJMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRCUVVOMFF5eFRRVUZETEVOQlFVTXNRMEZCUXpzN1VVRkhTQ3hKUVVGSkxFTkJRVU1zYjBKQlFXOUNMRWRCUVVjc1RVRkJUU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8xRkJRMnBGTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUjBGQlJ5eE5RVUZOTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdVVUZEYmtVc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4SFFVRkhMRTFCUVUwc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRCUVVWcVJTeFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMHRCUTJJN1FVRkZSRHM3TzBGQlIwYzdTVUZEU1N4TFFVRkxMRWRCUVVFN1VVRkRWaXhQUVVGUExFbEJRVWtzYjBKQlFXOUNMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTMEZET1VNN1FVRkZSRHM3T3pzN1FVRkxSenRCUVVOSkxFbEJRVUVzWVVGQllTeERRVUZETEVsQlFYTkRMRVZCUVVFN08xRkJRM3BFTEU5QlFVOHNRMEZCUVN4RlFVRkJMRWRCUVVFc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCU1N4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMRU5CUVVNN1MwRkRNVU03UVVGRlJEczdPenRCUVVsSE8wRkJRMGtzU1VGQlFTeHJRa0ZCYTBJc1EwRkJReXhWUVVGNVFpeEZRVUZCTzBGQlEycEVMRkZCUVVFc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1VVRkRia01zU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1kwRkJZeXhEUVVGRExFZEJRVWNzVlVGQlZTeERRVUZETzB0QlF6ZEVPMEZCUlVRN096czdRVUZKUnp0QlFVTkpMRWxCUVVFc2IwSkJRVzlDTEVOQlFVTXNWVUZCZVVJc1JVRkJRVHRSUVVOdVJDeE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0QlFVTndSQ3hSUVVGQkxFbEJRVWtzUzBGQlN5eExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUTJoQ0xGbEJRVUVzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4dFJVRkJiVVVzUTBGQlF5eERRVUZETzBGQlEyNUdMRk5CUVVFN1VVRkZSQ3hKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGJrTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExGVkJRVlVzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXp0TFFVTjJSRHRCUVVWRU96czdPenRCUVV0SE8wRkJRMGtzU1VGQlFTeFJRVUZSTEVOQlFVTXNTVUZCYzBNc1JVRkJRVHM3VVVGRGNFUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTTFReXhQUVVGUExFTkJRVUVzUlVGQlFTeEhRVUZCTEZWQlFWVXNTMEZCUVN4SlFVRkJMRWxCUVZZc1ZVRkJWU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRldMRlZCUVZVc1EwRkJSU3hOUVVGTkxFMUJRVWtzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFZEJRVUVzU1VGQlNTeERRVUZETzB0QlEyNURPMEZCUlVRN096czdPMEZCUzBjN1NVRkRTU3hSUVVGUkxFTkJRVU1zU1VGQmMwTXNSVUZCUlN4TlFVRmpMRVZCUVVFN1VVRkRjRVVzVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU0xUXl4UlFVRkJMRWxCUVVrc1ZVRkJWU3hGUVVGRk8wRkJRMlFzV1VGQlFTeFZRVUZWTEVOQlFVTXNUVUZCVFN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU4wUXl4VFFVRkJPMHRCUTBZN1FVRkZSRHM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096dEJRWGxDUnp0QlFVTkpMRWxCUVVFc2MwSkJRWE5DTEVOQlFVTXNTVUZCYzBNc1JVRkJRVHRSUVVOc1JTeE5RVUZOTEZWQlFWVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlF6VkRMRkZCUVVFc1QwRkJUeXhWUVVGVkxFZEJRVWNzUTBGQlJ5eEZRVUZCTEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVZNc1QwRkJRU3hEUVVGQkxFZEJRVWNzU1VGQlNTeERRVUZETzB0QlEzaEVPMEZCUlVRN08wRkJSVWM3U1VGRFNTeE5RVUZOTEVkQlFVRTdPMEZCUlZnc1VVRkJRU3hOUVVGTkxHbENRVUZwUWl4SFFVRkhMRWxCUVVrc1EwRkJReXd5UWtGQk1rSXNSVUZCUlN4RFFVRkRPenRSUVVjM1JDeEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExGVkJRVlVzUzBGQlNUdFpRVU4yUXl4VlFVRlZMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNRMEZCUXp0QlFVTnNReXhUUVVGRExFTkJRVU1zUTBGQlF6czdVVUZIU0N4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEZWQlFWVXNTMEZCU1R0WlFVTjJReXhKUVVGSkxGVkJRVlVzUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZEY2tJc1dVRkJRU3hOUVVGTkxFbEJRVWtzUjBGQlJ5eFZRVUZWTEVOQlFVTXNZMEZCWXl4RFFVRkRPMWxCUlhaRExFbEJRVWtzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSVHRCUVVOc1JDeG5Ra0ZCUVN4VlFVRlZMRWxCUVVrc2FVSkJRV2xDTEVOQlFVTXNTMEZCU3l4RFFVRkRPMEZCUTNaRExHRkJRVUU3V1VGRlJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVU3UVVGRGJrUXNaMEpCUVVFc1ZVRkJWU3hKUVVGSkxHbENRVUZwUWl4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVONFF5eGhRVUZCTzFsQlJVUXNTVUZCU1N4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTzBGQlEyeEVMR2RDUVVGQkxGVkJRVlVzU1VGQlNTeHBRa0ZCYVVJc1EwRkJReXhMUVVGTExFTkJRVU03UVVGRGRrTXNZVUZCUVR0QlFVVkVMRmxCUVVFc1ZVRkJWU3hEUVVGRExGZEJRVmNzUTBGQlF5eEZRVUZGTEZWQlFWVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRla01zVTBGQlF5eERRVUZETEVOQlFVTTdTMEZEU2p0QlFVVkVPenRCUVVWSE8wbEJRMHNzTWtKQlFUSkNMRWRCUVVFN1VVRkxha01zU1VGQlNTeExRVUZMTEVkQlFVY3NSMEZCUnl4RFFVRkRPMUZCUTJoQ0xFbEJRVWtzVFVGQlRTeEhRVUZITEVkQlFVY3NRMEZCUXp0UlFVTnFRaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTTdVVUZGYUVJc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4VlFVRlZMRXRCUVVrN1FVRkRka01zV1VGQlFTeExRVUZMTEVsQlFVa3NWVUZCVlN4RFFVRkRMRzFDUVVGdFFpeERRVUZETzBGQlEzaERMRmxCUVVFc1RVRkJUU3hKUVVGSkxGVkJRVlVzUTBGQlF5eHZRa0ZCYjBJc1EwRkJRenRCUVVNeFF5eFpRVUZCTEV0QlFVc3NTVUZCU1N4VlFVRlZMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTTdRVUZETVVNc1UwRkJReXhEUVVGRExFTkJRVU03VVVGRlNDeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdVVUZETjBJc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJReTlDTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVVTNRaXhSUVVGQkxFOUJRVThzUlVGQlJTeExRVUZMTEVWQlFVVXNUVUZCVFN4RlFVRkZMRXRCUVVzc1JVRkJSU3hEUVVGRE8wdEJRMnBETzBGQlEwWTdPMEZEYkZGRU8wRkJSV0VzVFVGQlFTdzRRa0ZCT0VJc1IwRkJSenRCUVVNMVF5eEpRVUZCTEV0QlFVc3NSVUZCUlN4UFFVRlBPMEZCUTJRc1NVRkJRU3hoUVVGaExFVkJRVVVzWlVGQlpUdEJRVU01UWl4SlFVRkJMRlZCUVZVc1JVRkJSU3haUVVGWk8wRkJRM2hDTEVsQlFVRXNWMEZCVnl4RlFVRkZMR0ZCUVdFN1FVRkRNVUlzU1VGQlFTeFJRVUZSTEVWQlFVVXNWVUZCVlR0QlFVTndRaXhKUVVGQkxGbEJRVmtzUlVGQlJTeGpRVUZqTzBWQlEyNUNPMEZCUzBvc1RVRkJUU3cwUWtGQk5FSXNSMEZCYTBVN1NVRkRla2NzVFVGQlRTeEZRVUZGTERoQ1FVRTRRaXhEUVVGRExFdEJRVXM3U1VGRE5VTXNZMEZCWXl4RlFVRkZMRGhDUVVFNFFpeERRVUZETEdGQlFXRTdTVUZETlVRc1YwRkJWeXhGUVVGRkxEaENRVUU0UWl4RFFVRkRMRlZCUVZVN1NVRkRkRVFzVTBGQlV5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExGRkJRVkU3U1VGRGJFUXNZVUZCWVN4RlFVRkZMRGhDUVVFNFFpeERRVUZETEZsQlFWazdRMEZETTBRN08wRkRhRUpFTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzBGQlJXcERPenRCUVVWSE8wMUJRMVVzT0VKQlFUaENMRU5CUVVFN1FVRnBSSHBETEVsQlFVRXNWMEZCUVN4RFFVRnRRaXhGUVVOcVFpeFJRVUZSTEVWQlExSXNTVUZCU1N4RlFVTktMRmRCUVZjc1IwRm5RbG9zUlVGQlFUczdRVUZEUXl4UlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzVVVGQlVTeERRVUZETzBGQlEzcENMRkZCUVVFc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZEYWtJc1VVRkJRU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEZkQlFWY3NRMEZCUXpzN1FVRkhMMElzVVVGQlFTeE5RVUZOTEdWQlFXVXNSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3hOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETERoQ1FVRTRRaXhEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVNM1JpeERRVUZETEVOQlFVTXNZVUZCWVN4RFFVRkRMRXRCUVVrN1FVRkRiRUlzV1VGQlFTeFBRVUZSTEZGQlFXZENMRU5CUVVNc1lVRkJZU3hEUVVGRExFdEJRVXNzU1VGQlNTeERRVUZETzBGQlEyNUVMRk5CUVVNc1EwRkRSaXhOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTFBc1VVRkJRU3hOUVVGTkxGbEJRVmtzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4bFFVRmxMRXRCUVdZc1NVRkJRU3hKUVVGQkxHVkJRV1VzUzBGQlppeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hsUVVGbExFTkJRVWNzU1VGQlNTeERRVUZETEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVa3NTVUZCU1N4RFFVRkRPMUZCUlhKRUxFbEJRVWtzV1VGQldTeEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTjRRaXhaUVVGQkxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlExWXNRMEZCUVN4dFJFRkJRU3hGUVVORkxFMUJRVUVzVVVGQlVTeERRVUZETEVsQlFVa3NUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNSMEZCU1N4WFFVTnVRaXhEUVVGQkxGZEJRVUVzUlVGQll5eEpRVUZKTEVOQlFVRXNLME5CUVVFc1EwRkJhVVFzUTBGRGNFVXNRMEZCUXp0QlFVVkdMRmxCUVVFc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZEY0VJc1UwRkJRVHRCUVVGTkxHRkJRVUU3UVVGRFRDeFpRVUZCTEUxQlFVMHNUVUZCVFN4SFFVRkpMRkZCUVdkQ0xFTkJRVU1zV1VGQldTeERRVUZuUWl4RFFVRkRPMEZCUlRsRUxGbEJRVUVzVFVGQlRTeFpRVUZaTEVkQlFVY3NUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE96dEJRVWR3UXl4WlFVRkJMRTFCUVUwc1ZVRkJWU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZEYUVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUjBGQlJ5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RlFVTTVRaXhYUVVGWExFTkJRVU1zUTBGQlF5eEhRVUZITEZsQlFWa3NRMEZCUXl4RFFVRkRMRVZCUXpsQ0xGZEJRVmNzUTBGQlF5eERRVUZETEVkQlFVY3NXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkRMMElzUTBGQlF6dFpRVVZHTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjN1owSkJRMW9zV1VGQldUdG5Ra0ZEV2l4WlFVRlpPMmRDUVVOYUxGVkJRVlU3WVVGRFdDeERRVUZETzBGQlEwZ3NVMEZCUVR0TFFVTkdPMEZCUlUwc1NVRkJRU3hYUVVGWExFTkJRVU1zVFVGQll5eEZRVUZCTzBGQlF5OUNMRkZCUVVFc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVsQlFVa3NSVUZCUlRzN1dVRkZka0lzVDBGQlR6dEJRVU5TTEZOQlFVRTdVVUZGUkN4TlFVRk5MRVZCUVVVc1dVRkJXU3hGUVVGRkxGVkJRVlVzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkZha1FzVFVGQlRTeE5RVUZOTEVkQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVdkQ0xFTkJRVU1zV1VGQldTeERRVUZuUWl4RFFVRkRPMUZCUTI1RkxFbEJRVWtzVFVGQlRTeExRVUZMTEZOQlFWTXNSVUZCUlR0WlFVTjRRaXhQUVVGUE8wRkJRMUlzVTBGQlFUdEJRVVZFTEZGQlFVRXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMR05CUVdNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJUTkVMRWxCUVVrc1QwRkJVU3hKUVVGSkxFTkJRVU1zVVVGQlowSXNRMEZCUXl4dFFrRkJiVUlzUzBGQlN5eFRRVUZUTEVWQlFVVTdRVUZEYkVVc1dVRkJRU3hKUVVGSkxFTkJRVU1zVVVGQlowSXNRMEZCUXl4dFFrRkJiVUlzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZEYmtRc1UwRkJRVHRMUVVOR08wbEJSVTBzYTBKQlFXdENMRWRCUVVFN1FVRkRka0lzVVVGQlFTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1NVRkJTU3hGUVVGRk96dFpRVVYyUWl4UFFVRlBPMEZCUTFJc1UwRkJRVHRSUVVWRUxFMUJRVTBzUlVGQlJTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dFJRVVZ1UkN4TlFVRk5MRTFCUVUwc1IwRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlowSXNRMEZCUXl4WlFVRlpMRU5CUVdkQ0xFTkJRVU03VVVGRGJrVXNTVUZCU1N4TlFVRk5MRXRCUVVzc1UwRkJVeXhGUVVGRk8xbEJRM2hDTEU5QlFVODdRVUZEVWl4VFFVRkJPMEZCUlVRc1VVRkJRU3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMUZCUlRGQ0xFbEJRVWtzVDBGQlVTeEpRVUZKTEVOQlFVTXNVVUZCWjBJc1EwRkJReXh0UWtGQmJVSXNTMEZCU3l4VFFVRlRMRVZCUVVVN1FVRkRiRVVzV1VGQlFTeEpRVUZKTEVOQlFVTXNVVUZCWjBJc1EwRkJReXh0UWtGQmJVSXNSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRia1FzVTBGQlFUdExRVU5HT3p0QlFXeEtSRHM3UVVGRlJ6dEJRVU5aTERoQ1FVRkJMRU5CUVVFc2JVSkJRVzFDTEVkQlJUbENPMEZCUTBZc1NVRkJRU3h6UWtGQmMwSXNSVUZCUlR0QlFVTjBRaXhSUVVGQkxFdEJRVXNzUlVGQlJTeFBRVUZQTzBGQlEyUXNVVUZCUVN4aFFVRmhMRVZCUVVVc1ZVRkJWVHRCUVVNeFFpeExRVUZCTzBGQlEwUXNTVUZCUVN4dFFrRkJiVUlzUlVGQlJUdEJRVU51UWl4UlFVRkJMRXRCUVVzc1JVRkJSU3hQUVVGUE8wRkJRMllzUzBGQlFUdEJRVU5FTEVsQlFVRXNaVUZCWlN4RlFVRkZPMEZCUTJZc1VVRkJRU3hMUVVGTExFVkJRVVVzVDBGQlR6dEJRVU5rTEZGQlFVRXNZVUZCWVN4RlFVRkZMRlZCUVZVN1FVRkRla0lzVVVGQlFTeFpRVUZaTEVWQlFVVXNiMEpCUVc5Q08wRkJRMnhETEZGQlFVRXNWMEZCVnl4RlFVRkZMR05CUVdNN1FVRkRNMElzVVVGQlFTeFJRVUZSTEVWQlFVVXNNRUpCUVRCQ08wRkJRM0JETEZGQlFVRXNWVUZCVlN4RlFVRkZMR3RDUVVGclFqdEJRVU12UWl4TFFVRkJPME5CUTBZN08wRkROVUpJT3p0QlFVVkhPMDFCUTFVc05FSkJRVFJDTEVOQlFVRTdRVUZuUW5aRExFbEJRVUVzVjBGQlFTeERRVUZ0UWl4RlFVTnFRaXhWUVVGVkxFVkJRMVlzUzBGQlN5eEZRVU5NTEUxQlFVMHNSMEZuUWxBc1JVRkJRVHRCUVVORExGRkJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNSMEZCUnl4VlFVRlZMRU5CUVVNN1FVRkROMElzVVVGQlFTeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJRenRCUVVOdVFpeFJRVUZCTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8wdEJRM1JDTzBGQlJVMHNTVUZCUVN4WFFVRlhMRU5CUVVNc1RVRkJZeXhGUVVGQk8xRkJReTlDTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zU1VGQlNTeExRVUZKT3p0QlFVTXZRaXhaUVVGQkxFbEJRVWtzUTBGQlFTeERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTndSQ3huUWtGQlFTeEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETzBGQlEyaEZMR0ZCUVVFN1FVRkRTQ3hUUVVGRExFTkJRVU1zUTBGQlF6dExRVU5LTzBsQlJVMHNhMEpCUVd0Q0xFZEJRVUU3VVVGRGRrSXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eEpRVUZKTEV0QlFVazdPMEZCUXk5Q0xGbEJRVUVzU1VGQlNTeERRVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVa3NTVUZCU1N4RlFVRkZPMmRDUVVOd1JDeEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJRenRCUVVNNVF5eGhRVUZCTzBGQlEwZ3NVMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRTanRCUVVOR096dEJRek5FUkN4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVVm9RenM3UVVGRlJ6dE5RVU5WTEdsRFFVRnBReXhEUVVGQk8wRkJhMFExUXl4SlFVRkJMRmRCUVVFc1EwRkJiVUlzUlVGRGFrSXNVVUZCVVN4RlFVTlNMRXRCUVVzc1JVRkRUQ3hOUVVGTkxFZEJaMEpRTEVWQlFVRTdPMEZCUTBNc1VVRkJRU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEZGQlFWRXNRMEZCUXp0QlFVTjZRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMEZCUTI1Q0xGRkJRVUVzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4TlFVRk5MRU5CUVVNN1FVRkZja0lzVVVGQlFTeE5RVUZOTEdGQlFXRXNSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3hOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEdsRFFVRnBReXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVNMVJpeERRVUZETEVOQlFVTXNZVUZCWVN4RFFVRkRMRXRCUVVrN1FVRkRiRUlzV1VGQlFTeFBRVUZSTEZGQlFXZENMRU5CUVVNc1lVRkJZU3hEUVVGRExFdEJRVXNzU1VGQlNTeERRVUZETzBGQlEyNUVMRk5CUVVNc1EwRkRSaXhOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlZBc1NVRkJTU3hoUVVGaExFbEJRVWtzU1VGQlNTeEZRVUZGTzBGQlEzcENMRmxCUVVFc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGRFZpeERRVUZCTEhORVFVRkJMRVZCUTBVc1EwRkJRU3hGUVVGQkxFZEJRVUVzVVVGQlVTeERRVUZETEVsQlFVa3NUVUZCU1N4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNSMEZCUVN4WFFVTnVRaXhEUVVGeFF5eHRRMEZCUVN4RFFVRkJMRU5CUTNSRExFTkJRVU03UVVGRlJpeFpRVUZCTEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRM1pDTEZOQlFVRTdRVUZCVFN4aFFVRkJPMEZCUTB3c1dVRkJRU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVVjBRaXhaUVVGQkxHRkJRV0VzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4WlFVRlpMRXRCUVVrN08yZENRVU55UXl4TlFVRk5MRTlCUVU4c1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlJTeFJRVUZuUWl4RFFVRkRMRmxCUVZrc1EwRkJLMElzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUlN4TFFVRkxMRVZCUVVVc1EwRkJRenRuUWtGRGVFWXNTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSVHRCUVVOYUxHOUNRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJJc2FVSkJRVUU3UVVGRlFTeG5Ra0ZCUVN4UlFVRm5RaXhEUVVGRExGbEJRVmtzUTBGQlF5eEhRVUZITEU5QlFVOHNRMEZCUXp0blFrRkZNVU1zVFVGQlRTeGhRVUZoTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dG5Ra0ZETjBNc1RVRkJUU3haUVVGWkxFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRuUWtGRE5VTXNUVUZCVFN4WFFVRlhMRWRCUVVjc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJRenRuUWtGRGRFUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1MwRkJTeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRCUVVWdVJDeG5Ra0ZCUVN4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF6dEJRVU53UWl4dlFrRkJRU3hKUVVGSkxFVkJRVVVzV1VGQldUdHZRa0ZEYkVJc1lVRkJZVHR2UWtGRFlpeFhRVUZYTzI5Q1FVTllMRmxCUVZrN2IwSkJRMW9zVlVGQlZUdEJRVU5ZTEdsQ1FVRkJMRU5CUVVNc1EwRkJRenRCUVVOTUxHRkJRVU1zUTBGQlF5eERRVUZETzBGQlEwb3NVMEZCUVR0TFFVTkdPMEZCUlUwc1NVRkJRU3hYUVVGWExFTkJRVU1zVFVGQll5eEZRVUZCTzFGQlF5OUNMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNVVUZCVVN4TFFVRkpPMWxCUTNCRExFMUJRVTBzVFVGQlRTeEhRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRm5RaXhEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFXdENMRU5CUVVNN1dVRkRkRVVzU1VGQlNTeE5RVUZOTEV0QlFVc3NVMEZCVXl4RlFVRkZPMmRDUVVONFFpeFBRVUZQTzBGQlExSXNZVUZCUVR0QlFVVkVMRmxCUVVFc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTXNZMEZCWXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVrVXNXVUZCUVN4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eGpRVUZqTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVWNFJTeFpRVUZCTEUxQlFVMHNRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJRelZDTEZOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUTBvN1NVRkZUU3hyUWtGQmEwSXNSMEZCUVR0UlFVTjJRaXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRkZCUVZFc1MwRkJTVHRaUVVOd1F5eE5RVUZOTEUxQlFVMHNSMEZCU1N4SlFVRkpMRU5CUVVNc1VVRkJaMElzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRnJRaXhEUVVGRE8xbEJRM1JGTEVsQlFVa3NUVUZCVFN4TFFVRkxMRk5CUVZNc1JVRkJSVHRuUWtGRGVFSXNUMEZCVHp0QlFVTlNMR0ZCUVVFN1dVRkZSQ3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03V1VGRE0wTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMEZCUlRGRExGbEJRVUVzVFVGQlRTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkROVUlzVTBGQlF5eERRVUZETEVOQlFVTTdTMEZEU2pzN1FVRTFTV01zYVVOQlFVRXNRMEZCUVN4cFFrRkJhVUlzUjBGQk1FTTdRVUZEZUVVc1NVRkJRU3h6UWtGQmMwSXNSVUZCUlR0UlFVTjBRaXhMUVVGTE8xRkJRMHdzWVVGQllUdFJRVU5pTEZOQlFWTTdVVUZEVkN4WFFVRlhPMUZCUTFnc2FVSkJRV2xDTzFGQlEycENMR05CUVdNN1VVRkRaQ3hqUVVGak8xRkJRMlFzVlVGQlZUdEJRVU5ZTEV0QlFVRTdRVUZEUkN4SlFVRkJMRzFDUVVGdFFpeEZRVUZGTEVOQlFVTXNTMEZCU3l4RlFVRkZMR0ZCUVdFc1JVRkJSU3hWUVVGVkxFTkJRVU03UVVGRGRrUXNTVUZCUVN4bFFVRmxMRVZCUVVVN1VVRkRaaXhMUVVGTE8xRkJRMHdzVjBGQlZ6dFJRVU5ZTEdGQlFXRTdVVUZEWWl4elFrRkJjMEk3VVVGRGRFSXNiMEpCUVc5Q08xRkJRM0JDTERaQ1FVRTJRanRSUVVNM1FpeDNRa0ZCZDBJN1FVRkRla0lzUzBGQlFUdERRVU5HT3p0QlEyWklPenRCUVVWSE8wRkJRMGdzVFVGQlRVRXNkMEpCUVhOQ0xFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVVUxUkRzN1FVRkZSenROUVVOVkxIbENRVUY1UWl4RFFVRkJPMEZCZVVKd1F5eEpRVUZCTEVsQlFWY3NTVUZCU1N4SFFVRkJPenRCUVVWaUxGRkJRVUVzVDBGQlR5d3lRa0ZCTWtJc1EwRkJRenRMUVVOd1F6dEJRVVZFTEVsQlFVRXNWMEZCUVN4RFFVRnRRaXhOUVVGclFpeEZRVUZCTzBGQlEyNURMRkZCUVVFc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTTdTMEZEZEVJN1FVRkZXU3hKUVVGQkxGTkJRVk1zUTBGQlF5eEpRVUZWTEVWQlFVRTdPMEZCUXk5Q0xGbEJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4dlFrRkJiMElzUjBGQlJ5eE5RVUZOTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VTBGREwwUXNRMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkJRVHRCUVVWRU96czdPMEZCU1VjN1FVRkRWeXhKUVVGQkxFOUJRVThzUTBGQlF5eEpRVUZWTEVWQlFVRTdPMWxCUXpsQ0xFMUJRVTBzVVVGQlVTeEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU0xUXl4WlFVRkJMRWxCUVVrc1VVRkJVU3hGUVVGRk8wRkJRMW9zWjBKQlFVRXNUMEZCVHl4UlFVRlJMRU5CUVVNN1FVRkRha0lzWVVGQlFUdFpRVVZFTEUxQlFVMHNVVUZCVVN4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTTFReXhaUVVGQkxFbEJRVWtzVVVGQlVTeEZRVUZGTzBGQlExb3NaMEpCUVVFc1QwRkJUeXhSUVVGUkxFTkJRVU03UVVGRGFrSXNZVUZCUVR0QlFVVkVMRmxCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03VTBGRFlpeERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVRkJPMEZCUldFc1NVRkJRU3hUUVVGVExFTkJRVU1zU1VGQlZTeEZRVUZCT3pzN1FVRkRhRU1zV1VGQlFTeE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRWGRDTEVOQlFVTTdPMEZCUjJ4RUxGbEJRVUVzVFVGQlRTeFRRVUZUTEVkQlFVY3NRMEZCUVN4RFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxFTkJRVU1zWTBGQll5eE5RVUZGTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkJMRTlCUVU4c1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnNSU3hKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTzBGQlEyUXNaMEpCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFlpeGhRVUZCTzFsQlJVUXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSeXhWUVVGVkxFTkJRVzlETEVOQlFVTTdXVUZEYmtZc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJUdEJRVU5rTEdkQ1FVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMklzWVVGQlFUdEJRVVZFTEZsQlFVRXNUVUZCVFN4WFFVRlhMRWRCUVVjc1UwRkJVeXhEUVVGRExGZEJRVmNzUTBGQlF6dEJRVU14UXl4WlFVRkJMRWxCUVVrc1EwRkJRMEVzZDBKQlFYTkNMRU5CUVVNc1IwRkJSeXhEUVVGRExGZEJRVmNzUTBGQlF5eEZRVUZGTzBGQlF6VkRMR2RDUVVGQkxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNORVJCUVRSRUxGZEJRVmNzUTBGQlFTeERRVUZCTEVOQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTNwR0xHZENRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJJc1lVRkJRVHRCUVVWRUxGbEJRVUVzVFVGQlRTeHBRa0ZCYVVJc1IwRkJSeXhUUVVGVExFTkJRVU1zVjBGQlZ5eERRVUZETzFsQlEyaEVMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSVUZCUlR0QlFVTjBRaXhuUWtGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmlMR0ZCUVVFN08wRkJSMFFzV1VGQlFTeE5RVUZOTEdGQlFXRXNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJVeXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU01UlN4WlFVRkJMRTFCUVUwc2RVSkJRWFZDTEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVd0RExFTkJRVU03UVVGRk1VVXNXVUZCUVN4SlFVRkpMR2xDUVVGcFFpeERRVUZETEUxQlFVMHNTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRjRU1zWjBKQlFVRXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4blFrRkJaMElzUTBGQlF5eExRVUZKTzI5Q1FVTTFSU3hKUVVGSkxHZENRVUZuUWl4SlFVRkpMRWxCUVVrc1JVRkJSVHQzUWtGRE5VSXNUMEZCVHp0QlFVTlNMSEZDUVVGQk8wRkJSVVFzYjBKQlFVRXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVTdRVUZETlVJc2QwSkJRVUVzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4dFJFRkJiVVFzU1VGQlNTeERRVUZCTEcxRFFVRkJMRU5CUVhGRExFTkJRVU1zUTBGQlF6dDNRa0ZETTBjc1QwRkJUenRCUVVOU0xIRkNRVUZCTzBGQlJVUXNiMEpCUVVFc2RVSkJRWFZDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1JVRkJSU3huUWtGQlowSXNRMEZCUXl4RFFVRkRPMEZCUTNSRUxHbENRVUZETEVOQlFVTXNRMEZCUXp0QlFVTktMR0ZCUVVFN1FVRkZSQ3haUVVGQkxFbEJRVWtzYVVKQlFXbENMRU5CUVVNc1RVRkJUU3hKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU53UXl4blFrRkJRU3hOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEdsQ1FVRnBRaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxHZENRVUZuUWl4RFFVRkRMRXRCUVVrN1FVRkROVVVzYjBKQlFVRXNTVUZCU1N4aFFVRmhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTzBGQlF6TkNMSGRDUVVGQkxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlExWXNlVVZCUVhsRkxFbEJRVWtzUTBGQlFTd3dRa0ZCUVN4RFFVRTBRaXhEUVVNeFJ5eERRVUZETzNkQ1FVTkdMRTlCUVU4N1FVRkRVaXh4UWtGQlFUdEJRVVZFTEc5Q1FVRkJMSFZDUVVGMVFpeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1owSkJRV2RDTEVOQlFVTXNRMEZCUXp0QlFVTjBSQ3hwUWtGQlF5eERRVUZETEVOQlFVTTdRVUZEU2l4aFFVRkJPenRCUVVkRUxGbEJRVUVzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4dlFrRkJiMElzUlVGQlJTeERRVUZET3p0WlFVY3pReXhOUVVGTkxFOUJRVThzUTBGQlF5eEhRVUZITEVOQlEyWXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMR2RDUVVGblFpeERRVUZETEV0QlFVa3NVMEZCUVN4RFFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFTkJRVUVzUlVGQlFTeExRVUZCTEVOQlFVRXNSVUZCUVN4aFFVRkJPenRCUVVOdVJpeG5Ra0ZCUVN4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTXpReXhuUWtGQlFTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dG5Ra0ZGTTBJc1ZVRkJWU3hEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4blFrRkJaMElzUTBGQlF5eFJRVUZSTEUxQlFVa3NTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVRXNTMEZCU3l4RFFVRkRPMmRDUVVONlJDeFZRVUZWTEVOQlFVTXNZVUZCWVN4SFFVRkhMRU5CUVVFc1JVRkJRU3hIUVVGQkxHZENRVUZuUWl4RFFVRkRMR0ZCUVdFc1RVRkJTU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJRU3hOUVVGTkxFTkJRVU03WjBKQlEzQkZMRlZCUVZVc1EwRkJReXhqUVVGakxFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNaMEpCUVdkQ0xFTkJRVU1zWTBGQll5eE5RVUZKTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZCTEUxQlFVMHNRMEZCUXp0blFrRkRkRVVzVlVGQlZTeERRVUZETEdGQlFXRXNSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3huUWtGQlowSXNRMEZCUXl4aFFVRmhMRTFCUVVrc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVFc1RVRkJUU3hEUVVGRE8yZENRVVZ3UlN4RFFVRkJMRVZCUVVFc1IwRkJRU3huUWtGQlowSXNRMEZCUXl4blFrRkJaMElzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUlN4UFFVRlBMRU5CUVVNc1EwRkJUeXhKUVVGSkxFdEJRVWtzVTBGQlFTeERRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRU5CUVVFc1JVRkJRU3hMUVVGQkxFTkJRVUVzUlVGQlFTeGhRVUZCT3p0dlFrRkRlRVFzU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4TFFVRkxMRk5CUVZNc1NVRkJTU3hKUVVGSkxFTkJRVU1zUzBGQlN5eExRVUZMTEZOQlFWTXNSVUZCUlR0M1FrRkRka1FzVDBGQlR6dEJRVU5TTEhGQ1FVRkJPMEZCUlVRc2IwSkJRVUVzVFVGQlRTeFZRVUZWTEVsQlFVa3NUVUZCVFN3MlFrRkJOa0lzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRkxFTkJRVU03UVVGRE0wVXNiMEpCUVVFc1RVRkJUU3huUWtGQlowSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE96dEJRVWR3UXl4dlFrRkJRU3hKUVVORkxFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVc3NRMEZEWml4RFFVRkRMRk5CUVZNc1MwRkRVaXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZOQlFWTXNRMEZCUXl4eFFrRkJjVUlzUTBGQlF6dEJRVU01UXl4M1FrRkJRU3huUWtGQlowSXNSMEZCUnl4VFFVRlRMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNUVUZCVFN4RFFVTTFSQ3hGUVVORU8zZENRVU5CTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUTFZc1EwRkJPRUlzTWtKQlFVRXNSVUZCUVN4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFUWkNMREJDUVVGQkxFVkJRVUVzWjBKQlFXZENMRU5CUVdsQ0xHVkJRVUVzUTBGQlFTeERRVU5zU0N4RFFVRkRPM2RDUVVOR0xFOUJRVTg3UVVGRFVpeHhRa0ZCUVR0QlFVVkVMRzlDUVVGQkxGVkJRVlVzUTBGQlF5eFBRVUZQTEVOQlEyaENMRWxCUVVrc05FSkJRVFJDTEVOQlFVTTdkMEpCUXk5Q0xGVkJRVlU3UVVGRFZpeDNRa0ZCUVN4TFFVRkxMRVZCUVVVc1owSkJRV2RDTzBGQlEzWkNMSGRDUVVGQkxFMUJRVTBzUlVGQlJTeERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMRU5CUVVNc1RVRkJUU3h0UTBGQlNTeEhRVUZITzBGQlF6TkNMSEZDUVVGQkxFTkJRVU1zUTBGRFNDeERRVUZETzJsQ1FVTklMRU5CUVVFc1EwRkJReXhEUVVGRE8wRkJSVWdzWjBKQlFVRXNTVUZCU1N4blFrRkJaMElzUTBGQlF5eHJRa0ZCYTBJc1NVRkJTU3huUWtGQlowSXNRMEZCUXl4eFFrRkJjVUlzUlVGQlJUczdiMEpCUldwR0xFMUJRVTBzWVVGQllTeEhRVUZ4UWl4RlFVRkZMRU5CUVVNN2IwSkJRek5ETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zVFVGQlRTeExRVUZKTzBGQlF6ZENMSGRDUVVGQkxFMUJRVTBzVVVGQlVTeEhRVUZKTEUxQlFXTXNRMEZCUXl4UlFVRnpReXhEUVVGRE8wRkJRM2hGTEhkQ1FVRkJMRWxCUVVrc1VVRkJVU3hGUVVGRk8wRkJRMW9zTkVKQlFVRXNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVU01UWl4NVFrRkJRVHRCUVVOSUxIRkNRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkZTQ3hEUVVGQkxFVkJRVUVzUjBGQlFTeG5Ra0ZCWjBJc1EwRkJReXhyUWtGQmEwSXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSU3hQUVVGUExFTkJRVU1zUTBGQlR5eEpRVUZKTEV0QlFVa3NVMEZCUVN4RFFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFTkJRVUVzUlVGQlFTeExRVUZCTEVOQlFVRXNSVUZCUVN4aFFVRkJPM2RDUVVNeFJDeE5RVUZOTEZOQlFWTXNSMEZCUnl4aFFVRmhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVVVGQlVTeExRVUZKT3pSQ1FVTnNSQ3hOUVVGTkxHRkJRV0VzUjBGQlJ5dzRRa0ZCT0VJc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUXpWRkxEUkNRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1MwRkJTeXhoUVVGaExFTkJRVU03UVVGRGVrTXNlVUpCUVVNc1EwRkJReXhEUVVGRE8wRkJSVWdzZDBKQlFVRXNVMEZCVXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExGRkJRVkVzUzBGQlNUdEJRVU0zUWl3MFFrRkJRU3hWUVVGVkxFTkJRVU1zVDBGQlR5eERRVU5vUWl4SlFVRkpMRGhDUVVFNFFpeERRVUZETzJkRFFVTnFReXhSUVVGUk8yZERRVU5TTEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTVHRCUVVObUxHZERRVUZCTEZkQlFWY3NSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJRenRCUVVNelJDdzJRa0ZCUVN4RFFVRkRMRU5CUTBnc1EwRkJRenRCUVVOS0xIbENRVUZETEVOQlFVTXNRMEZCUXp0eFFrRkRTaXhEUVVGQkxFTkJRVU1zUTBGQlF6dHZRa0ZGU0N4RFFVRkJMRVZCUVVFc1IwRkJRU3huUWtGQlowSXNRMEZCUXl4eFFrRkJjVUlzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUlN4UFFVRlBMRU5CUVVNc1EwRkJUeXhKUVVGSkxFdEJRVWtzVTBGQlFTeERRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRU5CUVVFc1JVRkJRU3hMUVVGQkxFTkJRVUVzUlVGQlFTeGhRVUZCTzNkQ1FVTTNSQ3hOUVVGTkxGTkJRVk1zUjBGQlJ5eGhRVUZoTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1VVRkJVU3hMUVVGSk96UkNRVU5zUkN4TlFVRk5MR0ZCUVdFc1IwRkJSeXc0UWtGQk9FSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZETzBGQlF6VkZMRFJDUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETEZGQlFWRXNTMEZCU3l4aFFVRmhMRU5CUVVNN1FVRkRla01zZVVKQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlVnc2QwSkJRVUVzVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRkZCUVZFc1MwRkJTVHM3UVVGRE4wSXNORUpCUVVFc1ZVRkJWU3hEUVVGRExFOUJRVThzUTBGRGFFSXNTVUZCU1N4cFEwRkJhVU1zUTBGQlF6dG5RMEZEY0VNc1VVRkJVVHRCUVVOU0xHZERRVUZCTEUxQlFVMHNSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCUVN4SlFVRkpMRU5CUVVNc1RVRkJUU3hOUVVGSkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGQkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTJoRkxHZERRVUZCTEV0QlFVc3NSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCUVN4SlFVRkpMRU5CUVVNc1MwRkJTeXhOUVVGSkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGQkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUXk5RUxEWkNRVUZCTEVOQlFVTXNRMEZEU0N4RFFVRkRPMEZCUTBvc2VVSkJRVU1zUTBGQlF5eERRVUZETzNGQ1FVTktMRU5CUVVFc1EwRkJReXhEUVVGRE8wRkJRMG9zYVVKQlFVRTdRVUZGUkN4blFrRkJRU3hQUVVGUExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03WVVGRGVFTXNRMEZCUVN4RFFVRkRMRU5CUTBnc1EwRkJRenRCUVVWR0xGbEJRVUVzVDBGQlR5eFBRVUZQTEVOQlFVTTdPMEZCUTJoQ0xFdEJRVUU3UVVGRllTeEpRVUZCTEZOQlFWTXNRMEZCUXl4SlFVRlZMRVZCUVVFN096dEJRVU5vUXl4WlFVRkJMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCZDBJc1EwRkJRenM3V1VGSGJFUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSU3hIUVVFMFFpeERRVUZETzFsQlF6ZEVMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVU3UVVGRFdDeG5Ra0ZCUVN4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOaUxHRkJRVUU3UVVGRlJDeFpRVUZCTEUxQlFVMHNaMEpCUVdkQ0xFZEJRVWNzVFVGQlRTeERRVUZETEdkQ1FVRm5RaXhEUVVGRE8xbEJRMnBFTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUlVGQlJUdEJRVU55UWl4blFrRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5pTEdGQlFVRTdRVUZGUkN4WlFVRkJMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzYjBKQlFXOUNMRVZCUVVVc1EwRkJRenRCUVVVelF5eFpRVUZCTEUxQlFVMHNjMEpCUVhOQ0xFZEJRVWNzWjBKQlFXZENMRU5CUVVNc1owSkJRV2RDTEVOQlFVTTdXVUZEYWtVc1NVRkJTU3hEUVVGRExITkNRVUZ6UWl4RlFVRkZPMEZCUXpOQ0xHZENRVUZCTEU5QlFVOHNUMEZCVHl4RFFVRkRPMEZCUTJoQ0xHRkJRVUU3UVVGRlJDeFpRVUZCTEUxQlFVMHNhVUpCUVdsQ0xFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFWVXNRMEZCUXp0WlFVVTFReXhOUVVGTkxFOUJRVThzUTBGQlF5eEhRVUZITEVOQlEyWXNjMEpCUVhOQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVOHNWMEZCVnl4TFFVRkpMRk5CUVVFc1EwRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeERRVUZCTEVWQlFVRXNTMEZCUVN4RFFVRkJMRVZCUVVFc1lVRkJRVHM3UVVGREwwTXNaMEpCUVVFc1RVRkJUU3haUVVGWkxFZEJRVWNzVjBGQlZ5eERRVUZETEZWQlFWVXNRMEZCUXp0QlFVTTFReXhuUWtGQlFTeE5RVUZOTEZsQlFWa3NSMEZEYUVJc1EwRkJReXhaUVVGWkxFbEJRVWtzU1VGQlNTeEpRVUZKTEhsQ1FVRjVRaXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRmxCUVZrc1EwRkJReXhMUVVGTExFbEJRVWtzUTBGQlF6dG5Ra0ZET1VZc1RVRkJUU3hKUVVGSkxFZEJRVWNzV1VGQldTeExRVUZhTEVsQlFVRXNTVUZCUVN4WlFVRlpMRXRCUVZvc1MwRkJRU3hEUVVGQkxFZEJRVUVzV1VGQldTeEhRVUZKTEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNN1owSkJSVGxETEVsQlFVa3NTVUZCU1N4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOb1FpeHZRa0ZCUVN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExESkdRVUV5Uml4RFFVRkRMRU5CUVVNN2IwSkJRekZITEU5QlFVODdRVUZEVWl4cFFrRkJRVHM3UVVGSFJDeG5Ra0ZCUVN4SlFVRkpMR2xDUVVGcFFpeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHRCUVVNdlFpeHZRa0ZCUVN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVOV0xHMUVRVUZ0UkN4WlFVRlpMRU5CUVVFc1owUkJRVUVzUTBGQmEwUXNRMEZEYkVnc1EwRkJRenR2UWtGRFJpeFBRVUZQTzBGQlExSXNhVUpCUVVFN1FVRkZSQ3huUWtGQlFTeHBRa0ZCYVVJc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdRVUZGTlVJc1owSkJRVUVzVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRE0wTXNaMEpCUVVFc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1owSkJSVE5DTEZWQlFWVXNRMEZCUXl4UlFVRlJMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzVjBGQlZ5eERRVUZETEZGQlFWRXNUVUZCU1N4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNSMEZCUVN4TFFVRkxMRU5CUVVNN096dG5Ra0ZKY0VRc1NVRkJTU3hYUVVGWExFTkJRVU1zUzBGQlN5eEZRVUZGTzI5Q1FVTnlRaXhYUVVGWExFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRlBMRWxCUVVrc1MwRkJTU3hUUVVGQkxFTkJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNRMEZCUVN4RlFVRkJMRXRCUVVFc1EwRkJRU3hGUVVGQkxHRkJRVUU3TzNkQ1FVTjJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEV0QlFVc3NVMEZCVXl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFdEJRVXNzVTBGQlV5eEZRVUZGT3pSQ1FVTjJSQ3hQUVVGUE8wRkJRMUlzZVVKQlFVRTdkMEpCUlVRc1RVRkJUU3hqUVVGakxFZEJRV0VzUlVGQlJTeERRVUZETzNkQ1FVTndReXhEUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZKTEVOQlFVTXNTMEZCU3l4TlFVRkZMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGQkxFOUJRVThzUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRXRCUVVrN1FVRkRPVUlzTkVKQlFVRXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hMUVVGTExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZETTBJc1owTkJRVUVzWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVONFFpdzJRa0ZCUVR0QlFVTklMSGxDUVVGRExFTkJRVU1zUTBGQlF6dEJRVVZJTEhkQ1FVRkJMRTFCUVUwc1owSkJRV2RDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenQzUWtGRmNFTXNUVUZCVFN4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVObUxHTkJRV01zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCVHl4VFFVRlRMRXRCUVVrc1UwRkJRU3hEUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEVOQlFVRXNSVUZCUVN4TFFVRkJMRU5CUVVFc1JVRkJRU3hoUVVGQk96czBRa0ZEY2tNc1RVRkJUU3hWUVVGVkxFbEJRVWtzVFVGQlRTdzJRa0ZCTmtJc1EwRkJReXhKUVVGSkxFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVVXNRMEZCUXpzN1FVRkhNMFVzTkVKQlFVRXNTVUZEUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhMUVVGTExFTkJRMllzUTBGQlF5eFRRVUZUTEV0QlExSXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhUUVVGVExFTkJRVU1zY1VKQlFYRkNMRU5CUVVNN1FVRkRPVU1zWjBOQlFVRXNaMEpCUVdkQ0xFZEJRVWNzVTBGQlV5eERRVUZETEhGQ1FVRnhRaXhEUVVGRExFMUJRVTBzUTBGRE5VUXNSVUZEUkR0blEwRkRRU3hQUVVGUExFTkJRVU1zU1VGQlNTeERRVU5XTEVOQlFUaENMREpDUVVGQkxFVkJRVUVzVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCYzBJc2JVSkJRVUVzUlVGQlFTeG5Ra0ZCWjBJc1EwRkJlVUlzZFVKQlFVRXNRMEZCUVN4RFFVTTVSeXhEUVVGRE8yZERRVU5HTEU5QlFVODdRVUZEVWl3MlFrRkJRVHRCUVVWRUxEUkNRVUZCTEZWQlFWVXNRMEZCUXl4UFFVRlBMRU5CUTJoQ0xFbEJRVWtzTkVKQlFUUkNMRU5CUVVNN1owTkJReTlDTEZWQlFWVTdRVUZEVml4blEwRkJRU3hMUVVGTExFVkJRVVVzWjBKQlFXZENPMEZCUTNaQ0xHZERRVUZCTEUxQlFVMHNSVUZCUlN4SlFVRkpMRWxCUVVrc1EwRkJRU3hGUVVGQkxFZEJRVUVzU1VGQlNTeERRVUZETEUxQlFVMHNUVUZCU1N4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNSMEZCUVN4SFFVRkhMRU5CUVVNN1FVRkRjRU1zTmtKQlFVRXNRMEZCUXl4RFFVTklMRU5CUVVNN2VVSkJRMGdzUTBGQlFTeERRVUZETEVOQlEwZ3NRMEZCUXp0eFFrRkRTQ3hEUVVGQkxFTkJRVU1zUTBGQlF6dEJRVU5LTEdsQ1FVRkJPenRCUVVkRUxHZENRVUZCTEUxQlFVMHNZMEZCWXl4SFFVRkhMRmRCUVZjc1EwRkJReXhqUVVGakxFTkJRVU03UVVGRGJFUXNaMEpCUVVFc1NVRkJTU3hqUVVGakxFbEJRVWtzWTBGQll5eERRVUZETEUxQlFVMHNTMEZCU3l4RFFVRkRMRVZCUVVVN1FVRkRha1FzYjBKQlFVRXNZMEZCWXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExHRkJRV0VzUzBGQlNUdEJRVU4yUXl4M1FrRkJRU3hKUVVORkxHRkJRV0VzUTBGQlF5eFpRVUZaTEV0QlFVc3NVMEZCVXpzMFFrRkRlRU1zWVVGQllTeERRVUZETEZsQlFWa3NTMEZCU3l4VFFVRlRPMEZCUTNoRExEUkNRVUZCTEdGQlFXRXNRMEZCUXl4WFFVRlhMRXRCUVVzc1UwRkJVeXhGUVVOMlF6czBRa0ZEUVN4UFFVRlBPMEZCUTFJc2VVSkJRVUU3UVVGRlJEczdPenM3TzBGQlRVYzdkMEpCUTBnc1RVRkJUU3hUUVVGVExFZEJRWEZDTEVWQlFVVXNRMEZCUXp0M1FrRkRka01zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhOUVVGTkxFdEJRVWs3TkVKQlF6ZENMRWxCUVVzc1RVRkJZeXhEUVVGRExGRkJRVkVzUlVGQlJUdEJRVU0xUWl4blEwRkJRU3hOUVVGTkxGRkJRVkVzUjBGQmRVTXNUVUZCWXl4RFFVRkRMRkZCUVZFc1EwRkJRenRCUVVNM1JTeG5RMEZCUVN4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEVWQlFVVTdiME5CUXpOQ0xGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlExb3NSMEZCUnl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVOb1FpeERRVUZETEVkQlFVY3NTMEZEUml4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFdEJRVXNzWVVGQllTeERRVUZETEZsQlFXRTdkME5CUTNaRExFZEJRVWNzUTBGQlF5eEpRVUZKTEV0QlFVc3NZVUZCWVN4RFFVRkRMRmxCUVdFc1IwRkJSeXhaUVVGWk8zZERRVU42UkN4VFFVRlRMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVTm9ReXhEUVVOR0xFTkJRVU03UVVGRFNDeHBRMEZCUVR0QlFVRk5MSEZEUVVGQkxFbEJRVWtzVVVGQlVTeERRVUZETEVsQlFVa3NTMEZCU3l4aFFVRmhMRU5CUVVNc1dVRkJXU3hKUVVGSkxGTkJRVk1zUTBGQlF5eFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVU3UVVGRE4wWXNiME5CUVVFc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0QlFVTXhRaXhwUTBGQlFUdEJRVU5HTERaQ1FVRkJPMEZCUTBnc2VVSkJRVU1zUTBGQlF5eERRVUZETzBGQlJVZ3NkMEpCUVVFc1RVRkJUU3h2UWtGQmIwSXNSMEZCUnl4aFFVRmhMRU5CUVVNc1dVRkJXU3hEUVVGRE8wRkJRM2hFTEhkQ1FVRkJMRk5CUVZNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eFJRVUZSTEV0QlFVazdPelJDUVVVM1FpeEpRVUZKTEc5Q1FVRnZRaXhMUVVGTExHRkJRV0VzUlVGQlJUdG5RMEZETVVNc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1EwRkJReXhYUVVGWkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNZVUZCWVN4RFFVRkRMRmRCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkRFFVTTVSaXhOUVVGTkxFMUJRVTBzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1lVRkJZU3hEUVVGRExGZEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4aFFVRmhMRU5CUVVNc1YwRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZGTDBZc1owTkJRVUVzVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlhCRExHZERRVUZCTEZWQlFWVXNRMEZCUXl4UFFVRlBMRU5CUTJoQ0xFbEJRVWtzYVVOQlFXbERMRU5CUVVNN2IwTkJRM0JETEZGQlFWRTdiME5CUTFJc1MwRkJTenR2UTBGRFRDeE5RVUZOTzBGQlExQXNhVU5CUVVFc1EwRkJReXhEUVVOSUxFTkJRVU03WjBOQlJVWXNUMEZCVHp0QlFVTlNMRFpDUVVGQk96dEJRVWRFTERSQ1FVRkJMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NORUpCUVRSQ0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1EwRkJRenRCUVVNM1JTdzBRa0ZCUVN4SlFVRkpMR2xDUVVGcFFpeEZRVUZGTzBGQlEzSkNMR2REUVVGQkxGVkJRVlVzUTBGQlF5eFBRVUZQTEVOQlEyaENMRWxCUVVrc09FSkJRVGhDTEVOQlFVTTdiME5CUTJwRExGRkJRVkU3UVVGRFVpeHZRMEZCUVN4SlFVRkpMRVZCUVVVc2FVSkJRV2xDTzBGQlEzWkNMRzlEUVVGQkxGZEJRVmNzUlVGQlJTeEpRVUZKTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhoUVVGaExFTkJRVU1zVjBGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFVXNhVU5CUVVFc1EwRkJReXhEUVVOSUxFTkJRVU03WjBOQlJVWXNUMEZCVHp0QlFVTlNMRFpDUVVGQk8wRkJSVVFzTkVKQlFVRXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXh2UWtGQmIwSXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eERRVUZETzBGQlF6TkVMSGxDUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5NTEhGQ1FVRkRMRU5CUVVNc1EwRkJRenRCUVVOS0xHbENRVUZCTzBGQlJVUXNaMEpCUVVFc1QwRkJUeXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8yRkJRM2hETEVOQlFVRXNRMEZCUXl4RFFVTklMRU5CUVVNN1FVRkZSaXhaUVVGQkxFOUJRVThzVDBGQlR5eERRVUZET3p0QlFVTm9RaXhMUVVGQk96dEJRWEpaYzBJc2VVSkJRVUVzUTBGQlFTeHBRa0ZCYVVJc1IwRkJlVVU3UVVGREwwY3NTVUZCUVN4RFFVRkRMRVZCUVVVc1NVRkJTVHRCUVVOUUxFbEJRVUVzUTBGQlF5eEZRVUZGTEVsQlFVazdRVUZEVUN4SlFVRkJMRU5CUVVNc1JVRkJSU3hKUVVGSk8wRkJRMUFzU1VGQlFTeERRVUZETEVWQlFVVXNTVUZCU1R0QlFVTlFMRWxCUVVFc1EwRkJReXhGUVVGRkxFbEJRVWs3UVVGRFVDeEpRVUZCTEV0QlFVc3NSVUZCUlN4UFFVRlBPMEZCUTJRc1NVRkJRU3hIUVVGSExFVkJRVVVzVDBGQlR6dEJRVU5hTEVsQlFVRXNTMEZCU3l4RlFVRkZMRTlCUVU4N1FVRkRaQ3hKUVVGQkxFMUJRVTBzUlVGQlJTeExRVUZMTzBGQlEySXNTVUZCUVN4SFFVRkhMRVZCUVVVc1UwRkJVenRCUVVOa0xFbEJRVUVzVFVGQlRTeEZRVUZGTEZGQlFWRTdRVUZEYUVJc1NVRkJRU3hSUVVGUkxFVkJRVVVzVlVGQlZUdEJRVU53UWl4SlFVRkJMRkZCUVZFc1JVRkJSU3hWUVVGVk8wRkJRM0JDTEVsQlFVRXNVMEZCVXl4RlFVRkZMRmRCUVZjN08wRkJSWFJDTEVsQlFVRXNUMEZCVHl4RlFVRkZMRmRCUVZjN08wRkJSWEJDTEVsQlFVRXNUMEZCVHl4RlFVRkZMRmxCUVZrN1FVRkRja0lzU1VGQlFTeFBRVUZQTEVWQlFVVXNVMEZCVXp0RFFVTnVRanM3UVVNMVEwZzdRVUZGWVN4TlFVRkJMSGxDUVVGNVFpeEhRVUZITzBGQlEzWkRMRWxCUVVFc1NVRkJTU3hGUVVGRkxFMUJRVTA3UVVGRFdpeEpRVUZCTEV0QlFVc3NSVUZCUlN4UFFVRlBPMEZCUTJRc1NVRkJRU3hMUVVGTExFVkJRVVVzVDBGQlR6czdPMDFEUkVnc1kwRkJZeXhEUVVGQk8wRkJNRUo2UWpzN096czdRVUZMUnp0SlFVTklMRmRCUVcxQ0xFTkJRVUVzVVVGQmNVSXNSVUZCUlN4bFFVRXJReXhGUVVGQk8wRkJXR3BHTEZGQlFVRXNTVUZCUVN4RFFVRkJMSEZDUVVGeFFpeEhRVUZITEdOQlFXTXNRMEZCUXl3NFFrRkJPRUlzUTBGQlF6dEJRVU4wUlN4UlFVRkJMRWxCUVVFc1EwRkJRU3h4UWtGQmNVSXNSMEZCUnl4alFVRmpMRU5CUVVNc09FSkJRVGhDTEVOQlFVTTdVVUZGZEVVc1NVRkJhMElzUTBGQlFTeHJRa0ZCUVN4SFFVRkhMRXRCUVVzc1EwRkJRenRCUVZOcVF5eFJRVUZCTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1VVRkJVU3hEUVVGRE8wRkJRM3BDTEZGQlFVRXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1IwRkJSeXhsUVVGbExFTkJRVU03UzBGRGVFTTdRVUZGUkRzN096czdRVUZMUnp0QlFVTkpMRWxCUVVFc1NVRkJTU3hEUVVGRExFMUJRWE5DTEVWQlFVRTdRVUZEYUVNc1VVRkJRU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTEV0QlFVc3NUVUZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSVHRCUVVOeVF5eFpRVUZCTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc2QwUkJRWGRFTEVOQlFVTXNRMEZCUXp0QlFVTXpSU3hUUVVGQk8wRkJSVVFzVVVGQlFTeEpRVUZKTEVOQlFVTXNaVUZCWlN4SFFVRkhMRTFCUVUwc1EwRkJReXhsUVVGbExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNWVUZCVlN4TlFVRk5PMEZCUTJwRkxGbEJRVUVzVFVGQlRTeEZRVUZGTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hGUVVGRk8xbEJRMnhETEVsQlFVa3NSVUZCUlN4VlFVRlZMRU5CUVVNc1NVRkJTVHRCUVVOMFFpeFRRVUZCTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlVvc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dExRVU5pTzBGQlJVUTdPenRCUVVkSE8wbEJRMGtzUzBGQlN5eEhRVUZCTzBGQlExWXNVVUZCUVN4UFFVRlBMRWxCUVVrc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTXpSVHRCUVVWRU96czdPenM3T3p0QlFWRkhPMEZCUTBnc1NVRkJRU3hKUVVGWExHOUNRVUZ2UWl4SFFVRkJPMUZCUXpkQ0xFOUJRVThzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhEUVVGRE8wdEJRMjVETzBGQlJVUTdPenM3T3pzN08wRkJVVWM3UVVGRFNDeEpRVUZCTEVsQlFWY3NiMEpCUVc5Q0xFZEJRVUU3VVVGRE4wSXNUMEZCVHl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTTdTMEZEYmtNN1FVRkZSRHM3T3pzN096czdPenM3UVVGWFJ6dEJRVU5KTEVsQlFVRXNTMEZCU3l4RFFVRkRMRVZCUTFnc2IwSkJRVzlDTEVkQlFVY3NZMEZCWXl4RFFVRkRMRGhDUVVFNFFpeEZRVU53UlN4dlFrRkJiMElzUjBGQlJ5eGpRVUZqTEVOQlFVTXNPRUpCUVRoQ0xFZEJRM0pGTEVkQlFVY3NSVUZCUlN4RlFVRkJPMUZCUTBvc1NVRkJTU3hKUVVGSkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVN1dVRkRNMElzVDBGQlR6dEJRVU5TTEZOQlFVRTdRVUZEUkN4UlFVRkJMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNSMEZCUnl4dlFrRkJiMElzUTBGQlF6dEJRVU5zUkN4UlFVRkJMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNSMEZCUnl4dlFrRkJiMElzUTBGQlF6dFJRVVZzUkN4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVsQlFVa3NTMEZCU1R0WlFVTndReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTVHRCUVVNelFpeG5Ra0ZCUVN4SlFVRkpMRWxCUVVrc1EwRkJReXhKUVVGSkxFdEJRVXNzYVVKQlFXbENMRVZCUVVVN2IwSkJRMjVETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhEUVVGRE8wRkJRelZETEc5Q1FVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eExRVUZMTEV0QlFVc3NTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU40UlN4cFFrRkJRVHRCUVVGTkxIRkNRVUZCTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhwUWtGQmFVSXNSVUZCUlR0dlFrRkRNVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNN1FVRkROVU1zYjBKQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFdEJRVXNzUzBGQlN5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM2hGTEdsQ1FVRkJPMEZCUVUwc2NVSkJRVUVzU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4TFFVRkxMRTFCUVUwc1JVRkJSVHRCUVVNdlFpeHZRa0ZCUVN4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRha01zYVVKQlFVRTdRVUZEU0N4aFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOTUxGTkJRVU1zUTBGQlF5eERRVUZETzBGQlJVZ3NVVUZCUVN4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVkQlFVY3NTVUZCU1N4RFFVRkRPMHRCUTJoRE8wRkJSVThzU1VGQlFTeHBRa0ZCYVVJc1EwRkJReXhUUVVGdFFpeEZRVUZGTEVkQlFXVXNSVUZCUlN4VFFVRnhRaXhGUVVGRkxFOUJRV2xDTEVWQlFVRTdVVUZEZEVjc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEyUXNTVUZCU1N4SFFVRkhMRWxCUVVrc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMEZCUTJwRExGbEJRVUVzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHRCUVVNMVF5eG5Ra0ZCUVN4TlFVRk5MRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTNaQ0xFMUJRVTBzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6TkNMRTFCUVUwc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRNMElzWjBKQlFVRXNUVUZCVFN4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEyNUNMR2RDUVVGQkxFMUJRVTBzUzBGQlN5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVVelFpeG5Ra0ZCUVN4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUVVVc1UwRkJVenRCUVVOMlJDeG5Ra0ZCUVN4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUVVVc1UwRkJVenRCUVVOMlJDeG5Ra0ZCUVN4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUVVVc1UwRkJVenRCUVVOMlJDeG5Ra0ZCUVN4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUVVVc1UwRkJVenRCUVVWMlJDeG5Ra0ZCUVN4TlFVRk5MRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYmtJc1owSkJRVUVzVFVGQlRTeExRVUZMTEVkQlFVY3NVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRek5DTEdkQ1FVRkJMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkJSU3hUUVVGVE8wRkJRM1pFTEdkQ1FVRkJMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkJSU3hUUVVGVE8wRkJRM1pFTEdkQ1FVRkJMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkJSU3hUUVVGVE8wRkJRM1pFTEdkQ1FVRkJMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkJSU3hUUVVGVE8wRkJSWFpFTEdkQ1FVRkJMRTFCUVUwc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnVRaXhuUWtGQlFTeE5RVUZOTEV0QlFVc3NSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE0wSXNaMEpCUVVFc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVGRkxGTkJRVk03UVVGRGRrUXNaMEpCUVVFc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVGRkxGTkJRVk03UVVGRGRrUXNaMEpCUVVFc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVGRkxGTkJRVk03UVVGRGRrUXNaMEpCUVVFc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVGRkxGTkJRVk03UVVGRmRrUXNaMEpCUVVFc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTNaQ0xHZENRVUZCTEZOQlFWTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU4yUWl4blFrRkJRU3hUUVVGVExFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRlRUlzWVVGQlFUdEJRVU5HTEZOQlFVRTdRVUZEUkN4UlFVRkJMRTlCUVU4c1MwRkJTeXhEUVVGRE8wdEJRMlE3U1VGRlR5eHBRa0ZCYVVJc1EwRkJReXhIUVVGelFpeEZRVUZGTEdsQ1FVRXlRaXhGUVVGQk8wRkJRek5GTEZGQlFVRXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzUjBGQlJ5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMUZCUTNSRkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUVN4RlFVRkhMRWRCUVVjc1EwRkJReXhKUVVGSkxGTkJRVk1zUTBGQlF6dEJRVU5vUXl4UlFVRkJMRWRCUVVjc1EwRkJReXhoUVVGaExFZEJRVWNzUjBGQlJ5eERRVUZETEdGQlFXRXNRMEZCUXp0UlFVTjBReXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNRMEZCUXp0QlFVVXpReXhSUVVGQkxFMUJRVTBzVVVGQlVTeEhRVUZITEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNN1VVRkZPVUlzVFVGQlRTeGhRVUZoTEVkQlFVY3NVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dEJRVU42UkN4UlFVRkJMRTFCUVUwc2EwSkJRV3RDTEVkQlFVY3NZVUZCWVN4WlFVRlpMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNSMEZCUnl4RlFVRkZMRWRCUVVjc1lVRkJZU3hEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU4yUnl4TlFVRk5MRk5CUVZNc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRGNrSXNVVUZCUVN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1dVRkRja1FzVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXp0blFrRkRZaXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRja0lzWjBKQlFVRXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTjZRaXhuUWtGQlFTeHJRa0ZCYTBJc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlEzcENMR2RDUVVGQkxHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRE1VSXNZVUZCUVN4RFFVRkRMRU5CUVVNN1FVRkRTaXhUUVVGQk8xRkJSVVFzVFVGQlRTeGpRVUZqTEVkQlFVY3NVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dEJRVU16UkN4UlFVRkJMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NZMEZCWXl4WlFVRlpMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNSMEZCUnl4RlFVRkZMRWRCUVVjc1kwRkJZeXhEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU14Unl4TlFVRk5MRlZCUVZVc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRGRFSXNVVUZCUVN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NiVUpCUVcxQ0xFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1dVRkRkRVFzVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXp0blFrRkRaQ3h0UWtGQmJVSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRkRUlzWjBKQlFVRXNiVUpCUVcxQ0xFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTXhRaXhuUWtGQlFTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlF6RkNMR2RDUVVGQkxHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRE0wSXNZVUZCUVN4RFFVRkRMRU5CUVVNN1FVRkRTaXhUUVVGQk8wRkJSVVFzVVVGQlFTeE5RVUZOTEV0QlFVc3NSMEZCUnl4UlFVRlJMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03VVVGRGJFTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSVHRCUVVOV0xGbEJRVUVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl3eVEwRkJNa01zUTBGQlF5eERRVUZETzBGQlF6bEVMRk5CUVVFN1VVRkRSQ3hOUVVGTkxGbEJRVmtzUjBGQlJ5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEJRVVUzUXl4UlFVRkJMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhaUVVGWkxFVkJRVVVzVlVGQlZTeEZRVUZGTEZOQlFWTXNSVUZCUlN4cFFrRkJhVUlzUTBGQlF5eERRVUZETzFGQlF6ZEdMRTFCUVUwc1YwRkJWeXhIUVVGaExFVkJRVVVzUTBGQlF6dFJRVU5xUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTMEZCU3l4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRemxDTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhaUVVGWkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYkVNc1UwRkJRVHRCUVVORUxGRkJRVUVzVVVGQlVTeERRVUZETEZGQlFWRXNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenM3VVVGSEwwSXNTVUZCU1N4SFFVRkhMRU5CUVVNc1kwRkJZeXhGUVVGRk8wRkJRM1JDTEZsQlFVRXNSMEZCUnl4RFFVRkRMR05CUVdNc1IwRkJSeXhIUVVGSExFTkJRVU1zWTBGQll5eERRVUZETzBGQlEzcERMRk5CUVVFN1VVRkRSQ3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NSVUZCUlN4SFFVRkhMRU5CUVVNc1VVRkJVU3hEUVVGRExGbEJRVmtzUTBGQlF5eEZRVUZGTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGFrY3NVVUZCUVN4UFFVRlBMRWRCUVVjc1EwRkJRenRMUVVOYU8wbEJSVThzYTBOQlFXdERMRU5CUVVNc1RVRkJjMElzUlVGQlJTeEpRVUYxUWl4RlFVRkJPMUZCUTNoR0xFMUJRVTBzWjBKQlFXZENMRWRCUVdFc1JVRkJSU3hEUVVGRE8wRkJRM1JETEZGQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1MwRkJTVHRCUVVNeFF5eFpRVUZCTEVsQlFVa3NTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU03UVVGQlJTeG5Ra0ZCUVN4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkRPVVFzVTBGQlF5eERRVUZETEVOQlFVTTdPMEZCUjBnc1VVRkJRU3hKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hGUVVGRk8xbEJRelZDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhEUVVGRE8xbEJReTlETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhEUVVGRE8xbEJReTlETEU5QlFVODdRVUZEVWl4VFFVRkJPMUZCUTBRc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdVVUZETlVNc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFbEJRVWtzUlVGQlJTeG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8wRkJReTlFTEZGQlFVRXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dExRVU55UWp0QlFVVlBMRWxCUVVFc2IwSkJRVzlDTEVOQlFVTXNTVUZCYjBJc1JVRkJRVHRCUVVNdlF5eFJRVUZCTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhQUVVGUExFVkJRVVU3V1VGRGVrSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFTkJRVU03UVVGRE5VTXNXVUZCUVN4SlFVRkpMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVTdRVUZETjBJc1owSkJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRXRCUVVzc1MwRkJTeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNoRkxHRkJRVUU3UVVGQlRTeHBRa0ZCUVR0QlFVTk1MR2RDUVVGQkxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8yZENRVU5xUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVUVzVlVGQlFTeEZRVUZoTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRuUWtGRGRrTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFTkJRVU03UVVGRE9VTXNaMEpCUVVFc1NVRkJTU3hEUVVGRExFMUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1FVRkRla0lzWjBKQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFN2NVSkJRMVlzVFVGQlRTeERRVUZETEVOQlFVTXNTMEZCU3l4TFFVRkxMRXRCUVVzc1EwRkJReXhKUVVGSkxFdEJRVXNzWVVGQllTeERRVUZETzBGQlF5OURMSEZDUVVGQkxFOUJRVThzUTBGQlF5eERRVUZETEV0QlFVc3NTMEZCU1R0dlFrRkRha0lzVFVGQlRTeFhRVUZYTEVkQlFVY3NTMEZCTUVJc1EwRkJRenRCUVVNdlF5eHZRa0ZCUVN4SlFVRkpMRU5CUVVNc2EwTkJRV3RETEVOQlFVTXNUVUZCVFN4RlFVRkZMRmRCUVZjc1EwRkJReXhEUVVGRE8wRkJReTlFTEdsQ1FVRkRMRU5CUVVNc1EwRkJRenRCUVVOT0xHRkJRVUU3UVVGRFJpeFRRVUZCTzBGQlFVMHNZVUZCUVN4SlFVRkpMRWxCUVVrc1EwRkJReXhKUVVGSkxFdEJRVXNzWVVGQllTeEZRVUZGTzFsQlEzUkRMRTFCUVUwc1YwRkJWeXhIUVVGSExFbEJRWGxDTEVOQlFVTTdXVUZET1VNc1NVRkJTU3hEUVVGRExHdERRVUZyUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGUExFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTTdRVUZEY0VVc1UwRkJRVHRCUVVGTkxHRkJRVUU3UVVGRFRDeFpRVUZCTEVsQlFVa3NTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdG5Ra0ZETjBJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdRVUZETlVNc1owSkJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRXRCUVVzc1MwRkJTeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNoRkxHRkJRVUU3UVVGRFJpeFRRVUZCTzB0QlEwWTdRVUZGVHl4SlFVRkJMR05CUVdNc1EwRkJReXhKUVVGdlFpeEZRVUZCTzFGQlEzcERMRWxCUVVrc1NVRkJTU3hMUVVGTExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRk8wRkJRMnBFTEZsQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRZaXhUUVVGQk8wRkJRVTBzWVVGQlFTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSVHRCUVVOMlFpeFpRVUZCTEU5QlFVOHNTMEZCU3l4RFFVRkRPMEZCUTJRc1UwRkJRVHRCUVVGTkxHRkJRVUU3V1VGRFRDeFBRVUZQTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlEzcERMRk5CUVVFN1MwRkRSanM3UVVFdlVVUTdPenM3UVVGSlJ6dEJRVU52UWl4alFVRTRRaXhEUVVGQkxEaENRVUZCTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUlRGRU96czdPMEZCU1VjN1FVRkRiMElzWTBGQk9FSXNRMEZCUVN3NFFrRkJRU3hIUVVGSExFVkJRVVU3TzBGRFVEVkVPenRCUVVWSE8wRkJRMGdzVFVGQlRVRXNkMEpCUVhOQ0xFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVVUxUkRzN1FVRkZSenROUVVOVkxEQkNRVUV3UWl4RFFVRkJPMEZCUjNKRExFbEJRVUVzU1VGQlZ5eEpRVUZKTEVkQlFVRTdPMEZCUldJc1VVRkJRU3hQUVVGUExEUkNRVUUwUWl4RFFVRkRPMHRCUTNKRE8wRkJSVVFzU1VGQlFTeFhRVUZCTEVOQlFXMUNMRTFCUVd0Q0xFVkJRVUU3UVVGRGJrTXNVVUZCUVN4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF6dExRVU4wUWp0QlFVVlpMRWxCUVVFc1UwRkJVeXhEUVVGRExFbEJRVlVzUlVGQlFUczdRVUZETDBJc1dVRkJRU3hOUVVGTkxGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmRCUVhORExFTkJRVU03T3p0WlFVbDZSU3hKUVVGSkxGZEJRVmNzUzBGQlN5eEpRVUZKTEVWQlFVVTdaMEpCUTNoQ0xFOUJRVTg3UVVGRFVpeGhRVUZCTzJsQ1FVRk5MRWxCUVVrc1YwRkJWeXhMUVVGTExGTkJRVk1zUlVGQlJUdEJRVU53UXl4blFrRkJRU3hOUVVGTkxFbEJRVWtzUzBGQlN5eERRVU5pTEhGSFFVRnhSeXhEUVVOMFJ5eERRVUZETzBGQlEwZ3NZVUZCUVR0QlFVVkVMRmxCUVVFc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eGpRVUZqTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXp0VFFVTjBSU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVUZCTzBGQlJVUTdPenM3TzBGQlMwYzdTVUZGVnl4UFFVRlBMRU5CUVVNc1NVRkJWU3hGUVVGRkxGRkJRVFJDTEVWQlFVRTdPMWxCUXpWRUxFbEJRVWtzVVVGQlVTeEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTndRaXhuUWtGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmlMR0ZCUVVFN1dVRkZSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eE5RVUZOTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZETzBGQlEzUkVMRmxCUVVFc1NVRkJTU3hSUVVGUkxFVkJRVVU3UVVGRFdpeG5Ra0ZCUVN4UFFVRlBMRkZCUVZFc1EwRkJRenRCUVVOcVFpeGhRVUZCTzFsQlJVUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVOMFJDeFpRVUZCTEVsQlFVa3NVVUZCVVN4RlFVRkZPMEZCUTFvc1owSkJRVUVzVDBGQlR5eFJRVUZSTEVOQlFVTTdRVUZEYWtJc1lVRkJRVHRCUVVWRUxGbEJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTTdVMEZEWWl4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVGQk8wbEJSV0VzVTBGQlV5eERRVUZETEVsQlFWVXNSVUZCUlN4UlFVRnhRaXhGUVVGQk96czdRVUZEZGtRc1dVRkJRU3hOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVhkQ0xFTkJRVU03TzBGQlIyeEVMRmxCUVVFc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlFTeERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMRU5CUVVNc1kwRkJZeXhOUVVGRkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZCTEU5QlFVOHNRMEZCUXl4VlFVRlZMRU5CUVVNc1RVRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5zUlN4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRk8wRkJRMlFzWjBKQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRZaXhoUVVGQk8xbEJSVVFzVFVGQlRTeFRRVUZUTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1NVRkJTU3hEUVVGRExGVkJRVlVzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUnl4VlFVRlZMRU5CUVc5RExFTkJRVU03V1VGRGJrWXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSVHRCUVVOa0xHZENRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJJc1lVRkJRVHRCUVVWRUxGbEJRVUVzVFVGQlRTeFhRVUZYTEVkQlFVY3NVMEZCVXl4RFFVRkRMRmRCUVZjc1EwRkJRenRCUVVNeFF5eFpRVUZCTEVsQlFVa3NRMEZCUTBFc2QwSkJRWE5DTEVOQlFVTXNSMEZCUnl4RFFVRkRMRmRCUVZjc1EwRkJReXhGUVVGRk8wRkJRelZETEdkQ1FVRkJMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zTmtSQlFUWkVMRmRCUVZjc1EwRkJRU3hEUVVGQkxFTkJRVWNzUTBGQlF5eERRVUZETzBGQlF6RkdMR2RDUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETzBGQlEySXNZVUZCUVR0QlFVVkVMRmxCUVVFc1RVRkJUU3hwUWtGQmFVSXNSMEZCUnl4VFFVRlRMRU5CUVVNc1YwRkJWeXhEUVVGRE8xbEJRMmhFTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUlVGQlJUdEJRVU4wUWl4blFrRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5pTEdGQlFVRTdXVUZGUkN4TlFVRk5MR1ZCUVdVc1IwRkJiVU1zUlVGQlJTeERRVUZETzBGQlF6TkVMRmxCUVVFc1RVRkJUU3hwUWtGQmFVSXNSMEZCUnl4TlFVRk5MRGhDUVVFNFFpeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUTNKRkxGbEJRVUVzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEZWQlFWVXNRMEZCUXl4TFFVRkpPenRCUVVNeFJTeG5Ra0ZCUVN4TlFVRk5MRlZCUVZVc1IwRkJSeXhwUWtGQmFVSXNRMEZCUXl4bFFVRmxPMEZCUTJ4RUxITkNRVUZGTEdsQ1FVRnBRaXhEUVVGRExHVkJRV1VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eFRRVUZUTEVOQlFVTTdjMEpCUTI1RkxGTkJRVk1zUTBGQlF6dG5Ra0ZGWkN4bFFVRmxMRU5CUVVNc1NVRkJTU3hEUVVGRE8wRkJRMjVDTEc5Q1FVRkJMRTFCUVUwc1JVRkJSU3hWUVVGVk8yOUNRVU5zUWl4SlFVRkpMRVZCUVVVc1EwRkJRU3hGUVVGQkxFZEJRVUVzVlVGQlZTeExRVUZXTEVsQlFVRXNTVUZCUVN4VlFVRlZMSFZDUVVGV0xGVkJRVlVzUTBGQlJTeEpRVUZKTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVa3NUVUZCVFR0QlFVTnFReXhwUWtGQlFTeERRVUZETEVOQlFVTTdRVUZEVEN4aFFVRkRMRU5CUVVNc1EwRkJRenRCUVVWSUxGbEJRVUVzVDBGQlR5eEpRVUZKTEdOQlFXTXNRMEZCUXl4UlFVRlJMRVZCUVVVc1pVRkJaU3hEUVVGRExFTkJRVU03TzBGQlEzUkVMRXRCUVVFN1NVRkZZU3hUUVVGVExFTkJRVU1zU1VGQlZTeEZRVUZGTEZGQlFYRkNMRVZCUVVFN096dEJRVU4yUkN4WlFVRkJMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCZDBJc1EwRkJRenRaUVVWc1JDeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxFTkJRVU1zVlVGQlZTeE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkZMRWRCUVRSQ0xFTkJRVU03V1VGRE4wUXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSVHRCUVVOWUxHZENRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJJc1lVRkJRVHRCUVVWRUxGbEJRVUVzVFVGQlRTeHBRa0ZCYVVJc1IwRkJhME1zVFVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXp0WlFVTTFSU3hKUVVGSkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVN1FVRkRkRUlzWjBKQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRZaXhoUVVGQk8xbEJSVVFzVFVGQlRTeGxRVUZsTEVkQlFXMURMRVZCUVVVc1EwRkJRenRCUVVNelJDeFpRVUZCTEUxQlFVMHNhVUpCUVdsQ0xFZEJRVWNzVFVGQlRTdzRRa0ZCT0VJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVVZ5UlN4WlFVRkJMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hWUVVGVkxFTkJRVU1zUzBGQlNUdG5Ra0ZETVVVc1RVRkJUU3hWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRCUVVVeFF5eG5Ra0ZCUVN4TlFVRk5MRWxCUVVrc1IwRkJSeXhwUWtGQmFVSXNRMEZCUXl4bFFVRmxPMEZCUXpWRExITkNRVUZGTEdsQ1FVRnBRaXhEUVVGRExHVkJRV1VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRPM05DUVVONlJTeFRRVUZUTEVOQlFVTTdaMEpCUldRc1pVRkJaU3hEUVVGRExFbEJRVWtzUTBGQlF6dEJRVU51UWl4dlFrRkJRU3hOUVVGTkxFVkJRVVVzVlVGQlZUdEJRVU5zUWl4dlFrRkJRU3hKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExFbEJRVWtzUzBGQlNpeEpRVUZCTEVsQlFVRXNTVUZCU1N4TFFVRktMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVsQlFVa3NRMEZCUlN4bFFVRmxMRU5CUVVNN1FVRkRla1FzYVVKQlFVRXNRMEZCUXl4RFFVRkRPMEZCUTB3c1lVRkJReXhEUVVGRExFTkJRVU03UVVGRlNDeFpRVUZCTEU5QlFVOHNTVUZCU1N4alFVRmpMRU5CUVVNc1VVRkJVU3hGUVVGRkxHVkJRV1VzUTBGQlF5eERRVUZET3p0QlFVTjBSQ3hMUVVGQk8wRkJSVThzU1VGQlFTeHpRa0ZCYzBJc1EwRkJReXhKUVVGM1FpeEZRVUZCTzFGQlEzSkVMRWxCUVVrc1NVRkJTU3hMUVVGTExHbENRVUZwUWl4RlFVRkZPMEZCUXpsQ0xGbEJRVUVzVDBGQlR5eHBRa0ZCYVVJc1EwRkJRenRCUVVNeFFpeFRRVUZCTzJGQlFVMHNTVUZCU1N4SlFVRkpMRXRCUVVzc2FVSkJRV2xDTEVWQlFVVTdRVUZEY2tNc1dVRkJRU3hQUVVGUExHbENRVUZwUWl4RFFVRkRPMEZCUXpGQ0xGTkJRVUU3WVVGQlRTeEpRVUZKTEVsQlFVa3NTMEZCU3l4TlFVRk5MRVZCUVVVN1FVRkRNVUlzV1VGQlFTeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm1MRk5CUVVFN1FVRkJUU3hoUVVGQk8wRkJRMHdzV1VGQlFTeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm1MRk5CUVVFN1MwRkRSanRCUVVOR096dEJRek5LUkR0QlFVVmhMRTFCUVVFc1owTkJRV2RETEVkQlFVYzdRVUZET1VNc1NVRkJRU3hKUVVGSkxFVkJRVVVzVFVGQlRUdEJRVU5hTEVsQlFVRXNTVUZCU1N4RlFVRkZMRTFCUVUwN1FVRkRXaXhKUVVGQkxHVkJRV1VzUlVGQlJTeHBRa0ZCYVVJN1FVRkRiRU1zU1VGQlFTeGxRVUZsTEVWQlFVVXNhVUpCUVdsQ096czdRVU5HY0VNc1RVRkJUVU1zVFVGQlNTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnBETEUxQlFVMURMRTFCUVVrc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnFReXhOUVVGTlF5eFJRVUZOTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03UVVGRmVrSXNUVUZCUVN4cFFrRkJhMElzVTBGQlVTeExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkJPMEZCU1doRUxFbEJRVUVzVjBGQlFTeERRVUZ0UWl4UlFVRnhRaXhGUVVGQk8wRkJRM1JETEZGQlFVRXNTMEZCU3l4RlFVRkZMRU5CUVVNN1FVRkZVaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NVVUZCVVN4RFFVRkRPMEZCUlRWQ0xGRkJRVUVzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJSVGxDTEZGQlFVRXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1NVRkJTU3hMUVVGSk8xbEJRMnhFTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVVjZReXhaUVVGQkxFMUJRVTBzUTBGQlF5eG5Ra0ZCWjBJc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGRkwwSXNXVUZCUVN4TlFVRk5MRU5CUVVNc1VVRkJNa0lzUTBGQlF5eFRRVUZUTEVkQlFVY3NTMEZCU3l4RFFVRkRPMEZCUTNKRUxGbEJRVUVzVFVGQlRTeERRVUZETEZGQlFUSkNMRU5CUVVNc1ZVRkJWU3hIUVVGSExFdEJRVXNzUTBGQlF6dEJRVVYyUkN4WlFVRkJMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdXVUZGYWtJc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRM1JETEZOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUTBvN1NVRkZUU3hQUVVGUExFZEJRVUU3UVVGRFdpeFJRVUZCTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlNUdEJRVU4wUkN4WlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZEZGtJc1dVRkJRU3hKUVVGSkxFTkJRVU1zVVVGQk1rSXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVNNVF5eFRRVUZETEVOQlFVTXNRMEZCUXp0TFFVTktPMEZCUlUwc1NVRkJRU3hwUWtGQmFVSXNRMEZCUXl4TFFVRmpMRVZCUVVFN1VVRkRja01zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEV0QlFVazdXVUZETDBRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdRVUZGZWtNc1dVRkJRU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4VFFVRlRMRU5CUVVOR0xFMUJRVWtzUlVGQlJVVXNVVUZCVFN4RlFVRkZSQ3hOUVVGSkxFTkJRVU1zUTBGQlF6dEJRVVZ3UkN4WlFVRkJMRTFCUVUwc1MwRkJTeXhIUVVGSFJDeE5RVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRReXhOUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU51UkN4WlFVRkJMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTNaRUxGTkJRVU1zUTBGQlF5eERRVUZETzBGQlJVZ3NVVUZCUVN4TFFVRkxMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRhRU03UVVGRFJqczdRVU53UkVRN1FVRkpRVHM3UVVGRlJ6dEJRVU5WTEUxQlFVRXNaMEpCUVdkQ0xFZEJRWFZDTzBsQlEyeEVMRTFCUVUwN1NVRkRUaXhQUVVGUE8wbEJRMUFzVDBGQlR6dEpRVU5RTEZsQlFWazdTVUZEV2l4TlFVRk5PMGxCUlU0c1RVRkJUVHRKUVVOT0xGTkJRVk03U1VGRFZDeFZRVUZWTzBsQlExWXNTMEZCU3p0SlFVVk1MR05CUVdNN1NVRkRaQ3hqUVVGak8wbEJRMlFzVlVGQlZUdEpRVU5XTEZWQlFWVTdTVUZGVml4bFFVRmxPMGxCUTJZc1pVRkJaVHRKUVVObUxGZEJRVmM3U1VGRFdDeFhRVUZYTzBsQlJWZ3NZMEZCWXp0SlFVTmtMR05CUVdNN1NVRkRaQ3hqUVVGak8wbEJRMlFzVlVGQlZUdEpRVVZXTEdWQlFXVTdTVUZEWml4bFFVRmxPMGxCUTJZc1pVRkJaVHRKUVVObUxGZEJRVmM3U1VGRldDeHhRa0ZCY1VJN1NVRkRja0lzYlVKQlFXMUNPMGxCUTI1Q0xHbENRVUZwUWp0SlFVTnFRaXh0UWtGQmJVSTdTVUZEYmtJc2RVSkJRWFZDTzBsQlEzWkNMR2xDUVVGcFFqdEpRVU5xUWl4dlFrRkJiMEk3U1VGRGNFSXNkMEpCUVhkQ08wbEJRM2hDTEd0Q1FVRnJRanRKUVVOc1FpeHJRa0ZCYTBJN1NVRkRiRUlzYzBKQlFYTkNPMGxCUTNSQ0xHZENRVUZuUWp0SlFVTm9RaXh2UWtGQmIwSTdTVUZEY0VJc2QwSkJRWGRDTzBsQlEzaENMR3RDUVVGclFqdEpRVVZzUWl4elFrRkJjMEk3U1VGRGRFSXNiMEpCUVc5Q08wbEJRM0JDTEd0Q1FVRnJRanRKUVVOc1FpeHZRa0ZCYjBJN1NVRkRjRUlzZDBKQlFYZENPMGxCUTNoQ0xHdENRVUZyUWp0SlFVTnNRaXh4UWtGQmNVSTdTVUZEY2tJc2VVSkJRWGxDTzBsQlEzcENMRzFDUVVGdFFqdEpRVU51UWl4dFFrRkJiVUk3U1VGRGJrSXNkVUpCUVhWQ08wbEJRM1pDTEdsQ1FVRnBRanRKUVVOcVFpeHhRa0ZCY1VJN1NVRkRja0lzZVVKQlFYbENPMGxCUTNwQ0xHMUNRVUZ0UWpzN08wRkRja1Z5UWp0QlFVVkJPenM3TzBGQlNVYzdRVUZEVlN4TlFVRkJMR2RDUVVGblFpeEhRVUZITzBGQlF6bENMRWxCUVVFc1NVRkJTU3hGUVVGRkxFMUJRVTA3UVVGRFdpeEpRVUZCTEV0QlFVc3NSVUZCUlN4UFFVRlBPMEZCUTJRc1NVRkJRU3hMUVVGTExFVkJRVVVzVDBGQlR6dEJRVU5rTEVsQlFVRXNWVUZCVlN4RlFVRkZMRmxCUVZrN1FVRkRlRUlzU1VGQlFTeEpRVUZKTEVWQlFVVXNUVUZCVFR0QlFVVmFMRWxCUVVFc1NVRkJTU3hGUVVGRkxFMUJRVTA3UVVGRFdpeEpRVUZCTEU5QlFVOHNSVUZCUlN4VFFVRlRPMEZCUTJ4Q0xFbEJRVUVzVVVGQlVTeEZRVUZGTEZWQlFWVTdRVUZEY0VJc1NVRkJRU3hIUVVGSExFVkJRVVVzUzBGQlN6dEJRVVZXTEVsQlFVRXNXVUZCV1N4RlFVRkZMR05CUVdNN1FVRkROVUlzU1VGQlFTeFpRVUZaTEVWQlFVVXNZMEZCWXp0QlFVTTFRaXhKUVVGQkxGRkJRVkVzUlVGQlJTeFZRVUZWTzBGQlEzQkNMRWxCUVVFc1VVRkJVU3hGUVVGRkxGVkJRVlU3UVVGRmNFSXNTVUZCUVN4aFFVRmhMRVZCUVVVc1pVRkJaVHRCUVVNNVFpeEpRVUZCTEdGQlFXRXNSVUZCUlN4bFFVRmxPMEZCUXpsQ0xFbEJRVUVzVTBGQlV5eEZRVUZGTEZkQlFWYzdRVUZEZEVJc1NVRkJRU3hUUVVGVExFVkJRVVVzVjBGQlZ6dEJRVVYwUWl4SlFVRkJMRmxCUVZrc1JVRkJSU3hqUVVGak8wRkJRelZDTEVsQlFVRXNXVUZCV1N4RlFVRkZMR05CUVdNN1FVRkROVUlzU1VGQlFTeFpRVUZaTEVWQlFVVXNZMEZCWXp0QlFVTTFRaXhKUVVGQkxGRkJRVkVzUlVGQlJTeFZRVUZWTzBGQlJYQkNMRWxCUVVFc1lVRkJZU3hGUVVGRkxHVkJRV1U3UVVGRE9VSXNTVUZCUVN4aFFVRmhMRVZCUVVVc1pVRkJaVHRCUVVNNVFpeEpRVUZCTEdGQlFXRXNSVUZCUlN4bFFVRmxPMEZCUXpsQ0xFbEJRVUVzVTBGQlV5eEZRVUZGTEZkQlFWYzdRVUZGZEVJc1NVRkJRU3h0UWtGQmJVSXNSVUZCUlN4eFFrRkJjVUk3UVVGRE1VTXNTVUZCUVN4cFFrRkJhVUlzUlVGQlJTeHRRa0ZCYlVJN1FVRkRkRU1zU1VGQlFTeGxRVUZsTEVWQlFVVXNhVUpCUVdsQ08wRkJRMnhETEVsQlFVRXNhVUpCUVdsQ0xFVkJRVVVzYlVKQlFXMUNPMEZCUTNSRExFbEJRVUVzY1VKQlFYRkNMRVZCUVVVc2RVSkJRWFZDTzBGQlF6bERMRWxCUVVFc1pVRkJaU3hGUVVGRkxHbENRVUZwUWp0QlFVTnNReXhKUVVGQkxHdENRVUZyUWl4RlFVRkZMRzlDUVVGdlFqdEJRVU40UXl4SlFVRkJMSE5DUVVGelFpeEZRVUZGTEhkQ1FVRjNRanRCUVVOb1JDeEpRVUZCTEdkQ1FVRm5RaXhGUVVGRkxHdENRVUZyUWp0QlFVTndReXhKUVVGQkxHZENRVUZuUWl4RlFVRkZMR3RDUVVGclFqdEJRVU53UXl4SlFVRkJMRzlDUVVGdlFpeEZRVUZGTEhOQ1FVRnpRanRCUVVNMVF5eEpRVUZCTEdOQlFXTXNSVUZCUlN4blFrRkJaMEk3UVVGRGFFTXNTVUZCUVN4clFrRkJhMElzUlVGQlJTeHZRa0ZCYjBJN1FVRkRlRU1zU1VGQlFTeHpRa0ZCYzBJc1JVRkJSU3gzUWtGQmQwSTdRVUZEYUVRc1NVRkJRU3huUWtGQlowSXNSVUZCUlN4clFrRkJhMEk3UVVGRmNFTXNTVUZCUVN4dlFrRkJiMElzUlVGQlJTeHpRa0ZCYzBJN1FVRkROVU1zU1VGQlFTeHJRa0ZCYTBJc1JVRkJSU3h2UWtGQmIwSTdRVUZEZUVNc1NVRkJRU3huUWtGQlowSXNSVUZCUlN4clFrRkJhMEk3UVVGRGNFTXNTVUZCUVN4clFrRkJhMElzUlVGQlJTeHZRa0ZCYjBJN1FVRkRlRU1zU1VGQlFTeHpRa0ZCYzBJc1JVRkJSU3gzUWtGQmQwSTdRVUZEYUVRc1NVRkJRU3huUWtGQlowSXNSVUZCUlN4clFrRkJhMEk3UVVGRGNFTXNTVUZCUVN4dFFrRkJiVUlzUlVGQlJTeHhRa0ZCY1VJN1FVRkRNVU1zU1VGQlFTeDFRa0ZCZFVJc1JVRkJSU3g1UWtGQmVVSTdRVUZEYkVRc1NVRkJRU3hwUWtGQmFVSXNSVUZCUlN4dFFrRkJiVUk3UVVGRGRFTXNTVUZCUVN4cFFrRkJhVUlzUlVGQlJTeHRRa0ZCYlVJN1FVRkRkRU1zU1VGQlFTeHhRa0ZCY1VJc1JVRkJSU3gxUWtGQmRVSTdRVUZET1VNc1NVRkJRU3hsUVVGbExFVkJRVVVzYVVKQlFXbENPMEZCUTJ4RExFbEJRVUVzYlVKQlFXMUNMRVZCUVVVc2NVSkJRWEZDTzBGQlF6RkRMRWxCUVVFc2RVSkJRWFZDTEVWQlFVVXNlVUpCUVhsQ08wRkJRMnhFTEVsQlFVRXNhVUpCUVdsQ0xFVkJRVVVzYlVKQlFXMUNPenM3UVVOeVJYaERPMEZCU1VFN096czdRVUZKUnp0QlFVTlZMRTFCUVVFc2NVSkJRWEZDTEVkQlFUUkVPMEZCUXpWR0xFbEJRVUVzU1VGQlNTeEZRVUZGTEVsQlFVazdRVUZEVml4SlFVRkJMRXRCUVVzc1JVRkJSU3hOUVVGTk8wRkJRMklzU1VGQlFTeExRVUZMTEVWQlFVVXNUMEZCVHp0QlFVTmtMRWxCUVVFc1ZVRkJWU3hGUVVGRkxFOUJRVTg3UVVGRGJrSXNTVUZCUVN4SlFVRkpMRVZCUVVVc1dVRkJXVHRCUVVWc1FpeEpRVUZCTEVsQlFVa3NSVUZCUlN4TlFVRk5PMEZCUTFvc1NVRkJRU3hQUVVGUExFVkJRVVVzVFVGQlRUdEJRVU5tTEVsQlFVRXNVVUZCVVN4RlFVRkZMRTFCUVUwN1FVRkRhRUlzU1VGQlFTeEhRVUZITEVWQlFVVXNUVUZCVFR0QlFVVllMRWxCUVVFc1dVRkJXU3hGUVVGRkxFMUJRVTA3UVVGRGNFSXNTVUZCUVN4WlFVRlpMRVZCUVVVc1kwRkJZenRCUVVNMVFpeEpRVUZCTEZGQlFWRXNSVUZCUlN4alFVRmpPMEZCUTNoQ0xFbEJRVUVzVVVGQlVTeEZRVUZGTEZWQlFWVTdRVUZGY0VJc1NVRkJRU3hoUVVGaExFVkJRVVVzVFVGQlRUdEJRVU55UWl4SlFVRkJMR0ZCUVdFc1JVRkJSU3hsUVVGbE8wRkJRemxDTEVsQlFVRXNVMEZCVXl4RlFVRkZMR1ZCUVdVN1FVRkRNVUlzU1VGQlFTeFRRVUZUTEVWQlFVVXNWMEZCVnp0QlFVVjBRaXhKUVVGQkxGbEJRVmtzUlVGQlJTeFpRVUZaTzBGQlF6RkNMRWxCUVVFc1dVRkJXU3hGUVVGRkxHTkJRV003UVVGRE5VSXNTVUZCUVN4WlFVRlpMRVZCUVVVc1kwRkJZenRCUVVNMVFpeEpRVUZCTEZGQlFWRXNSVUZCUlN4alFVRmpPMEZCUlhoQ0xFbEJRVUVzWVVGQllTeEZRVUZGTEZsQlFWazdRVUZETTBJc1NVRkJRU3hoUVVGaExFVkJRVVVzWlVGQlpUdEJRVU01UWl4SlFVRkJMR0ZCUVdFc1JVRkJSU3hsUVVGbE8wRkJRemxDTEVsQlFVRXNVMEZCVXl4RlFVRkZMR1ZCUVdVN1FVRkZNVUlzU1VGQlFTeHRRa0ZCYlVJc1JVRkJSU3hWUVVGVk8wRkJReTlDTEVsQlFVRXNhVUpCUVdsQ0xFVkJRVVVzY1VKQlFYRkNPMEZCUTNoRExFbEJRVUVzWlVGQlpTeEZRVUZGTEcxQ1FVRnRRanRCUVVOd1F5eEpRVUZCTEdsQ1FVRnBRaXhGUVVGRkxGVkJRVlU3UVVGRE4wSXNTVUZCUVN4eFFrRkJjVUlzUlVGQlJTeHRRa0ZCYlVJN1FVRkRNVU1zU1VGQlFTeGxRVUZsTEVWQlFVVXNkVUpCUVhWQ08wRkJRM2hETEVsQlFVRXNhMEpCUVd0Q0xFVkJRVVVzVlVGQlZUdEJRVU01UWl4SlFVRkJMSE5DUVVGelFpeEZRVUZGTEc5Q1FVRnZRanRCUVVNMVF5eEpRVUZCTEdkQ1FVRm5RaXhGUVVGRkxIZENRVUYzUWp0QlFVTXhReXhKUVVGQkxHZENRVUZuUWl4RlFVRkZMRlZCUVZVN1FVRkROVUlzU1VGQlFTeHZRa0ZCYjBJc1JVRkJSU3hyUWtGQmEwSTdRVUZEZUVNc1NVRkJRU3hqUVVGakxFVkJRVVVzYzBKQlFYTkNPMEZCUTNSRExFbEJRVUVzYTBKQlFXdENMRVZCUVVVc1ZVRkJWVHRCUVVNNVFpeEpRVUZCTEhOQ1FVRnpRaXhGUVVGRkxHOUNRVUZ2UWp0QlFVTTFReXhKUVVGQkxHZENRVUZuUWl4RlFVRkZMSGRDUVVGM1FqdEJRVVV4UXl4SlFVRkJMRzlDUVVGdlFpeEZRVUZGTEZkQlFWYzdRVUZEYWtNc1NVRkJRU3hyUWtGQmEwSXNSVUZCUlN4elFrRkJjMEk3UVVGRE1VTXNTVUZCUVN4blFrRkJaMElzUlVGQlJTeHZRa0ZCYjBJN1FVRkRkRU1zU1VGQlFTeHJRa0ZCYTBJc1JVRkJSU3hYUVVGWE8wRkJReTlDTEVsQlFVRXNjMEpCUVhOQ0xFVkJRVVVzYjBKQlFXOUNPMEZCUXpWRExFbEJRVUVzWjBKQlFXZENMRVZCUVVVc2QwSkJRWGRDTzBGQlF6RkRMRWxCUVVFc2JVSkJRVzFDTEVWQlFVVXNWMEZCVnp0QlFVTm9ReXhKUVVGQkxIVkNRVUYxUWl4RlFVRkZMSEZDUVVGeFFqdEJRVU01UXl4SlFVRkJMR2xDUVVGcFFpeEZRVUZGTEhsQ1FVRjVRanRCUVVNMVF5eEpRVUZCTEdsQ1FVRnBRaXhGUVVGRkxGZEJRVmM3UVVGRE9VSXNTVUZCUVN4eFFrRkJjVUlzUlVGQlJTeHRRa0ZCYlVJN1FVRkRNVU1zU1VGQlFTeGxRVUZsTEVWQlFVVXNkVUpCUVhWQ08wRkJRM2hETEVsQlFVRXNiVUpCUVcxQ0xFVkJRVVVzVjBGQlZ6dEJRVU5vUXl4SlFVRkJMSFZDUVVGMVFpeEZRVUZGTEhGQ1FVRnhRanRCUVVNNVF5eEpRVUZCTEdsQ1FVRnBRaXhGUVVGRkxIbENRVUY1UWpzN08wRkRja1U1UXpzN096czdRVUZMUnp0QlFVTkhMRk5CUVZVc1owSkJRV2RDTEVOQlFUWkNMRTFCUVZNc1JVRkJRVHRKUVVOd1JTeEpRVUZMTEUxQlFXTXNRMEZCUXl4TlFVRk5MRVZCUVVVN1VVRkRNVUlzVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMEZCUTJwQ0xFdEJRVUU3UVVGQlRTeFRRVUZCTzFGQlEwb3NUVUZCWXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRek5DTEV0QlFVRTdRVUZGUkN4SlFVRkJMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDT3p0QlExUkJMRTFCUVUxRUxFMUJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVOcVF5eE5RVUZOUlN4UlFVRk5MRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdRVUZGZEVNN08wRkJSVWM3VFVGRFZTeE5RVUZOTEVOQlFVRTdRVUZoYWtJN096dEJRVWRITzBGQlEwZ3NTVUZCUVN4WFFVRkJMRU5CUVcxQ0xGVkJRWGxDTEVWQlFVRTdRVUZETVVNc1VVRkJRU3hKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEZWQlFWVXNRMEZCUXp0QlFVVTNRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMR1ZCUVdVc1JVRkJSU3hEUVVGRE8wdEJRM2hETzBGQlJVUTdPenM3UVVGSlJ6dEpRVU5KTEdWQlFXVXNSMEZCUVR0UlFVTndRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEZRVUZoTEVOQlFVTTdRVUZGTTBJc1VVRkJRU3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eHBRa0ZCYVVJc1MwRkJTVHRaUVVONlJDeE5RVUZOTEZkQlFWY3NSMEZCUnl4cFFrRkJjVU1zUTBGQlF6dFpRVU14UkN4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPenRaUVVjelF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZPMmRDUVVOVUxFOUJRVTg3UVVGRFVpeGhRVUZCT3p0QlFVZEVMRmxCUVVGR0xFMUJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM3BDTEZsQlFVRkZMRkZCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPenRaUVVjM1FpeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWRCUVVjN1FVRkRiRUlzWjBKQlFVRXNVVUZCVVN4RlFVRkZSaXhOUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUU0UWp0QlFVTndSQ3huUWtGQlFTeFJRVUZSTEVWQlFVVkZMRkZCUVUwc1EwRkJReXhQUVVGUExFVkJRWE5ETzJGQlF5OUVMRU5CUVVNN1FVRkRTaXhUUVVGRExFTkJRVU1zUTBGQlF6dEJRVVZJTEZGQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1MwRkRZanRCUVVWRU96czdPMEZCU1VjN1NVRkRTU3hQUVVGUExFZEJRVUU3VVVGRFdpeE5RVUZOTEVsQlFVa3NSMEZCUnl4RlFVRmhMRU5CUVVNN1FVRkZNMElzVVVGQlFTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4alFVRmpMRXRCUVVrN1dVRkRkRVFzVFVGQlRTeFJRVUZSTEVkQlFVY3NZMEZCYTBNc1EwRkJRenRaUVVOd1JDeE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZET3p0WlFVZDRReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTzJkQ1FVTlVMRTlCUVU4N1FVRkRVaXhoUVVGQk96dFpRVWRFUml4TlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRiRUpGTEZGQlFVMHNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRaUVVWc1FpeE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBGQlF6RkRMRmxCUVVFc1NVRkJTU3hUUVVGVExFdEJRVlFzU1VGQlFTeEpRVUZCTEZOQlFWTXNkVUpCUVZRc1UwRkJVeXhEUVVGRkxGRkJRVkVzUlVGQlJUdG5Ra0ZEZGtKR0xFMUJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNVMEZCVXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzBGQlF6ZERMR0ZCUVVFN1FVRkRSQ3haUVVGQkxFbEJRVWtzVTBGQlV5eExRVUZVTEVsQlFVRXNTVUZCUVN4VFFVRlRMSFZDUVVGVUxGTkJRVk1zUTBGQlJTeFJRVUZSTEVWQlFVVTdaMEpCUTNaQ0xHZENRVUZuUWl4RFFVRkRSU3hSUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM2hFTEdGQlFVRTdPMEZCUjBRc1dVRkJRVVlzVFVGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03UVVGRGVFSXNXVUZCUVVVc1VVRkJUU3hEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN08xbEJSM0JETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSenRCUVVObUxHZENRVUZCTEZGQlFWRXNSVUZCUlVZc1RVRkJTU3hEUVVGRExFOUJRVThzUlVGQk9FSTdRVUZEY0VRc1owSkJRVUVzVVVGQlVTeEZRVUZGUlN4UlFVRk5MRU5CUVVNc1QwRkJUeXhGUVVGelF6dGhRVU12UkN4RFFVRkRPMEZCUTBvc1UwRkJReXhEUVVGRExFTkJRVU03UVVGRlNDeFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMHRCUTJJN1FVRkZSRHM3T3pzN096dEJRVTlITzBGQlEwa3NTVUZCUVN4UFFVRlBMRU5CUVVNc1ZVRkJiVUlzUlVGQlFUdEJRVU5vUXl4UlFVRkJMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhqUVVGakxFVkJRVVVzUzBGQlN5eERRVUZETEV0QlFVazdXVUZETjBRc1RVRkJUU3hSUVVGUkxFZEJRVWNzWTBGQmEwTXNRMEZCUXp0WlFVTndSQ3hOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE96dFpRVWQ0UXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRk8yZENRVU5VTEU5QlFVODdRVUZEVWl4aFFVRkJPMWxCUlVRc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRaUVVNeFF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZPenRuUWtGRlpDeFBRVUZQTzBGQlExSXNZVUZCUVRzN1FVRkhSQ3haUVVGQkxFbEJRVWtzUzBGQlN5eExRVUZNTEVsQlFVRXNTVUZCUVN4TFFVRkxMSFZDUVVGTUxFdEJRVXNzUTBGQlJTeFJRVUZSTEVWQlFVVTdaMEpCUTI1Q0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dG5Ra0ZGZUVNc1NVRkJTU3hUUVVGVExFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEzUkNMRzlDUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRSaXhOUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM1pFTEdsQ1FVRkJPMEZCUTBZc1lVRkJRVHRCUVVWRUxGbEJRVUVzU1VGQlNTeExRVUZMTEV0QlFVd3NTVUZCUVN4SlFVRkJMRXRCUVVzc2RVSkJRVXdzUzBGQlN5eERRVUZGTEZGQlFWRXNSVUZCUlR0blFrRkRia0lzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzJkQ1FVVXhReXhKUVVGSkxGTkJRVk1zUTBGQlF5eFJRVUZSTEVWQlFVVTdRVUZEZEVJc2IwSkJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4UlFVRlJMRU5CUVVORkxGRkJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNVMEZCVXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGFFVXNhVUpCUVVFN1FVRkRSaXhoUVVGQk8wRkJRMGdzVTBGQlF5eERRVUZETEVOQlFVTTdTMEZEU2p0QlFVVkVPenRCUVVWSE8wbEJRMGtzVTBGQlV5eEhRVUZCTzBGQlEyUXNVVUZCUVN4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUlVGQlJTeEpRVUZKTEVOQlFVTXNTMEZCU1R0WlFVTjZSQ3hOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRkZCUVRSQ0xFTkJRVU1zUTBGQlF6dFpRVVUxUkN4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRk8yZENRVU5VTEU5QlFVODdRVUZEVWl4aFFVRkJPMEZCUlVRc1dVRkJRU3hKUVVGSkxFbEJRVWtzUzBGQlNpeEpRVUZCTEVsQlFVRXNTVUZCU1N4MVFrRkJTaXhKUVVGSkxFTkJRVVVzVVVGQlVTeEZRVUZGTzJkQ1FVTnNRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03UVVGRGVFTXNZVUZCUVR0QlFVVkVMRmxCUVVFc1NVRkJTU3hKUVVGSkxFdEJRVW9zU1VGQlFTeEpRVUZCTEVsQlFVa3NkVUpCUVVvc1NVRkJTU3hEUVVGRkxGRkJRVkVzUlVGQlJUdG5Ra0ZEYkVJc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRekZETEdGQlFVRTdRVUZEU0N4VFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOS08wRkJSVVE3T3pzN1FVRkpSenRCUVVOSkxFbEJRVUVzVDBGQlR5eERRVUZETEVsQlFYTkNMRVZCUVVFN08xRkJRMjVETEU5QlFVOHNRMEZCUVN4RlFVRkJMRWRCUVVFc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCU1N4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNSMEZCUVN4VFFVRlRMRU5CUVVNN1MwRkRNME03UVVGRlJEczdPenRCUVVsSE8wRkJRMGtzU1VGQlFTeFhRVUZYTEVOQlFVTXNTVUZCYzBJc1JVRkJRVHM3UVVGRGRrTXNVVUZCUVN4UFFVRlBMRU5CUVVFc1JVRkJRU3hIUVVGQkxFTkJRVUVzUlVGQlFTeEhRVUZCTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVVVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVRXNTVUZCU1N4TlFVRkpMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkJMRWxCUVVrc1EwRkJRenRMUVVNMVF6dEJRVU5HT3p0QlEzcE1SQ3hOUVVGTlJpeE5RVUZKTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRGFrTXNUVUZCVFVVc1VVRkJUU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMEZCUTNSRExFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJSVEZET3p0QlFVVkhPMEZCUTBjc1RVRkJUeXhqUVVGbExGTkJRVkVzVFVGQlRTeERRVUZCTzBsQlF6bENMRTlCUVU4c1owSkJRV2RDTEVOQlFVTXNVVUZCWjBJc1JVRkJRVHRCUVUxb1JDeFJRVUZCTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBGQlEyeERMRkZCUVVFc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJRenM3VVVGSE4wSXNUVUZCVFN4clFrRkJhMElzUjBGQmRVUXNSVUZCUlN4RFFVRkRPMUZCUTJ4R0xFMUJRVTBzYTBKQlFXdENMRWRCUVRCRUxFVkJRVVVzUTBGQlF6dFJRVU55Uml4TlFVRk5MR0ZCUVdFc1IwRkJNRVFzUlVGQlJTeERRVUZETzBGQlJXaEdMRkZCUVVFc1owSkJRV2RDTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1VVRkJVU3hMUVVGSk8xbEJRM0JETEUxQlFVMHNVVUZCVVN4SFFVRkhMRkZCUVZFc1EwRkJReXhYUVVGWExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdRVUZGYUVRc1dVRkJRU3hKUVVGSkxGRkJRVkVzUlVGQlJUdEJRVU5hTEdkQ1FVRkJMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRE9VTXNaMEpCUVVFc1RVRkJUU3hwUWtGQmFVSXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF6dEJRVVZxUkN4blFrRkJRU3hSUVVGUkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzJkQ1FVTjRReXhSUVVGUkxFTkJRVU1zVjBGQlZ5eERRVUZETEZOQlFWTXNRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeHBRa0ZCYVVJc1JVRkJSVVlzVFVGQlNTeERRVUZETEVOQlFVTTdRVUZGTTBVc1owSkJRVUVzYTBKQlFXdENMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzYVVKQlFXbENMRU5CUVVNN1FVRkRha1FzWjBKQlFVRXNhMEpCUVd0Q0xFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NhVUpCUVdsQ0xFTkJRVU03WjBKQlEycEVMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eFJRVUZSTEVOQlFVTXNWVUZCVlN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8wRkJRM1pFTEdGQlFVRTdRVUZEU0N4VFFVRkRMRU5CUVVNc1EwRkJRenM3VVVGSFNDeE5RVUZOTEc5Q1FVRnZRaXhIUVVFd1JDeEZRVUZGTEVOQlFVTTdVVUZGZGtZc1RVRkJUU3hSUVVGUkxFZEJRVEpDTEVWQlFVVXNRMEZCUXp0QlFVTTFReXhSUVVGQkxHZENRVUZuUWl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExGRkJRVkVzUzBGQlNUczdXVUZEY0VNc1RVRkJUU3hSUVVGUkxFZEJRVWNzVVVGQlVTeERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVWb1JDeFpRVUZCTEVsQlFVa3NVVUZCVVN4RlFVRkZPMEZCUTFvc1owSkJRVUVzVFVGQlRTeHBRa0ZCYVVJc1IwRkJSeXhyUWtGQmEwSXNRMEZCUXl4UlFVRlJMRU5CUVd0Q0xFTkJRVU03TzJkQ1FVZDRSU3hKUVVGSkxHVkJRV1VzUjBGQk5FSXNVVUZCVVN4RFFVRkRPMEZCUTNoRUxHZENRVUZCTEVsQlFVa3NiVUpCUVRoRExFTkJRVU03UVVGRGJrUXNaMEpCUVVFc1NVRkJTU3h0UWtGQmFVUXNRMEZCUXp0blFrRkRkRVFzVDBGQlR5eHRRa0ZCYlVJc1NVRkJTU3hKUVVGSkxFVkJRVVU3UVVGRGJFTXNiMEpCUVVFc1pVRkJaU3hIUVVGSExIRkNRVUZ4UWl4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8yOUNRVU42UkN4SlFVRkpMR1ZCUVdVc1NVRkJTU3hKUVVGSkxFVkJRVVU3ZDBKQlF6TkNMRTFCUVUwN1FVRkRVQ3h4UWtGQlFUdEJRVU5FTEc5Q1FVRkJMRzFDUVVGdFFpeEhRVUZITEd0Q1FVRnJRaXhEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETzBGQlF6RkVMRzlDUVVGQkxHMUNRVUZ0UWl4SFFVRkhMR3RDUVVGclFpeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRPMEZCUXpORUxHbENRVUZCT3p0QlFVZEVMR2RDUVVGQkxFMUJRVTBzVjBGQlZ5eEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8yZENRVU42UXl4WFFVRlhMRU5CUVVNc1NVRkJTU3hIUVVGSExHRkJRV0VzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRPMEZCUldwRUxHZENRVUZCTEUxQlFVMHNhVUpCUVdsQ0xFbEJRVWtzWlVGQlpTeEhRVUZITEVOQlFVRXNSVUZCUVN4SFFVRkJMRkZCUVZFc1EwRkJReXhsUVVGbExFTkJRVU1zTUVOQlFVVXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJiVUlzUTBGQlF6dEJRVVYyUnl4blFrRkJRU3hwUWtGQmFVSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03UVVGRGJrTXNaMEpCUVVFc1YwRkJWeXhEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlF6dEJRVU0zUXl4blFrRkJRU3hKUVVGSkxHMUNRVUZ0UWl4RlFVRkZPMEZCUTNaQ0xHOUNRVUZCTEZkQlFWY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNN1FVRkRMME1zYVVKQlFVRTdaMEpCUlVRc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVWQlFVVXNTVUZCU1N4RlFVRkZMRmRCUVZjc1JVRkJSU3hEUVVGRE96dEJRVWN6UXl4blFrRkJRU3h2UWtGQmIwSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXh0UWtGQmJVSXNTMEZCYmtJc1NVRkJRU3hKUVVGQkxHMUNRVUZ0UWl4TFFVRnVRaXhMUVVGQkxFTkJRVUVzUjBGQlFTeHRRa0ZCYlVJc1IwRkJTU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXp0QlFVTm9SaXhoUVVGQk8wRkJRMGdzVTBGQlF5eERRVUZETEVOQlFVTTdVVUZGU0N4UFFVRlBPMEZCUTB3c1dVRkJRU3hSUVVGUkxFVkJRVVVzVVVGQmVVSTdXVUZEYmtNc1NVRkJTVHRaUVVOS0xHOUNRVUZ2UWp0WlFVTndRaXhoUVVGaE8xTkJRMlFzUTBGQlF6dExRVU5JTzBGQlQwUXNTVUZCUVN4WFFVRkJMRU5CUVcxQ0xGRkJRV2RDTEVWQlFVRTdRVUZEYWtNc1VVRkJRU3hOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEVsQlFVa3NSVUZCUlN4dlFrRkJiMElzUlVGQlJTeGhRVUZoTEVWQlFVVXNSMEZCUnl4alFVRmpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkZNVWNzUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUldoQ0xGRkJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4UlFVRlJMRU5CUVVNN1FVRkRla0lzVVVGQlFTeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVOcVFpeFJRVUZCTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUjBGQlJ5eHZRa0ZCYjBJc1EwRkJRenRCUVVOc1JDeFJRVUZCTEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1lVRkJZU3hEUVVGRE8wdEJRM0pETzBGQlJVUTdPMEZCUlVjN1NVRkRTU3hOUVVGTkxFZEJRVUU3UVVGRFdDeFJRVUZCTEdkQ1FVRm5RaXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEZGQlFWRXNTMEZCU1R0WlFVTndReXhOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmRCUVZjc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dFpRVVZ5UkN4SlFVRkpMRkZCUVZFc1NVRkJTU3hKUVVGSkxFVkJRVVU3WjBKQlEzQkNMRTFCUVUwc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNVVUZCVVN4RFFVRkZMRU5CUVVNN1owSkJRMmhFTEUxQlFVMHNiVUpCUVcxQ0xFZEJRVWNzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExGRkJRVkVzUTBGQlJTeERRVUZETzJkQ1FVTnNSU3hOUVVGTkxITkNRVUZ6UWl4SFFVRkhSU3hSUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdaMEpCUTNwRkxFMUJRVTBzV1VGQldTeEhRVUZITEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1VVRkJVU3hEUVVGRkxFTkJRVU03UVVGRmNFUXNaMEpCUVVFc1VVRkJVU3hEUVVGRExGVkJRVlU3UVVGRGFFSXNjVUpCUVVFc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFZRVUZWTEVOQlFVTTdjVUpCUXpWQ0xGRkJRVkVzUTBGQlF5eHRRa0ZCYlVJc1EwRkJRenR4UWtGRE4wSXNWMEZCVnl4RFFVRkRMSE5DUVVGelFpeERRVUZETzNGQ1FVTnVReXhSUVVGUkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdPMmRDUVVjeFFpeEpRVUZKTEZGQlFWRXNTMEZCU3l4TlFVRk5MRVZCUVVVN2IwSkJRM1pDTEUxQlFVMHNhVUpCUVdsQ0xFZEJRVWNzVjBGQlZ5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETzI5Q1FVTjBSU3hSUVVGUkxFTkJRVU1zVFVGQlR5eERRVUZETEdsQ1FVRnBRaXhEUVVGRExFbEJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTm9SQ3h2UWtGQlFTeE5RVUZOTEdsQ1FVRnBRaXhIUVVGSExGRkJRVkVzUTBGQlF5eE5RVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRPMjlDUVVOMlJDeE5RVUZOTEdGQlFXRXNSMEZCUnl4cFFrRkJhVUlzUTBGQlF5eFpRVUZaTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTnFSaXh2UWtGQlFTeFJRVUZSTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dEJRVU4yUXl4cFFrRkJRVHRCUVVOR0xHRkJRVUU3UVVGRFNDeFRRVUZETEVOQlFVTXNRMEZCUXp0TFFVTktPMEZCUTBZN08wRkRjRWxFT3p0QlFVVkhPMDFCUTFVc1YwRkJWeXhEUVVGQk8wRkJiVUowUWpzN1FVRkZSenRCUVVOSUxFbEJRVUVzU1VGQlZ5eFJRVUZSTEVkQlFVRTdRVUZEYWtJc1VVRkJRU3hQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETERSR1FVRTBSaXhEUVVGRExFTkJRVU03VVVGRk0wY3NUMEZCVHl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRE8wdEJRM3BDTzBGQlJVUTdPenRCUVVkSE8wRkJRMGdzU1VGQlFTeEpRVUZYTEZkQlFWY3NSMEZCUVR0QlFVTndRaXhSUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4UlFVRlJMRU5CUVVNN1MwRkRja003UVVGRlJEczdPMEZCUjBjN1FVRkRTQ3hKUVVGQkxFbEJRVmNzYTBKQlFXdENMRWRCUVVFN1FVRkRNMElzVVVGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eFJRVUZSTEVOQlFVTTdTMEZETlVNN1FVRkZSRHM3UVVGRlJ6dEJRVU5JTEVsQlFVRXNTVUZCVnl4VlFVRlZMRWRCUVVFN08wRkJSVzVDTEZGQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExGVkJRVlVzUTBGQlF6dExRVU4yUXp0QlFVVkVPenRCUVVWSE8wRkJRMGdzU1VGQlFTeEpRVUZYTEdGQlFXRXNSMEZCUVR0QlFVTjBRaXhSUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4VlFVRlZMRU5CUVVNN1MwRkRka003UVVGRlJEczdRVUZGUnp0QlFVTklMRWxCUVVFc1NVRkJWeXh2UWtGQmIwSXNSMEZCUVR0QlFVTTNRaXhSUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExGVkJRVlVzUTBGQlF6dExRVU01UXp0QlFVVkVPenRCUVVWSE8wRkJRMGdzU1VGQlFTeEpRVUZYTEhkQ1FVRjNRaXhIUVVGQk8wRkJRMnBETEZGQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNTVUZCU1N4RFFVRkRPMHRCUTNoRE8wRkJSVVE3T3pzN1FVRkpSenRKUVVOSUxGZEJRVzFDTEVOQlFVRXNWVUZCZVVJc1JVRkJSU3hQUVVFMFF5eEZRVUZCT3p0QlFVTjRSaXhSUVVGQkxFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeFBRVUZQTEV0QlFVRXNTVUZCUVN4SlFVRlFMRTlCUVU4c1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCVUN4UFFVRlBMRU5CUVVVc2IwSkJRVzlDTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVa3NTVUZCU1N4RFFVRkRPMUZCUTJ4RkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03VVVGRE4wTXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeEhRVUZITEVsQlFVa3NZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF6dExRVU4wUlR0QlFVVkVPenM3TzBGQlNVYzdRVUZEU1N4SlFVRkJMRWxCUVVrc1EwRkJReXhOUVVGdFFpeEZRVUZCTzBGQlF6ZENMRkZCUVVFc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4SFFVRkhMRTFCUVUwc1EwRkJReXh2UWtGQmIwSXNRMEZCUXp0UlFVTjRSQ3hKUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEVsQlFVa3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dFJRVU53UkN4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVkQlFVY3NTVUZCU1N4alFVRmpMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETzBGQlJYSkZMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UzBGRFlqdEJRVVZFT3pzN1FVRkhSenRKUVVOSkxFdEJRVXNzUjBGQlFUdFJRVU5XTEU5QlFVOHNTVUZCU1N4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJTeEZRVUZGTEc5Q1FVRnZRaXhGUVVGRkxFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUTNwSE8wRkJSVVE3TzBGQlJVYzdTVUZEU1N4bFFVRmxMRWRCUVVFN1FVRkRjRUlzVVVGQlFTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVTldMSFZJUVVGMVNDeERRVU40U0N4RFFVRkRPMEZCUlVZc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1JVRkJSU3hEUVVGRE8wdEJRMnhETzBGQlJVUTdPenM3UVVGSlJ6dEpRVU5KTEd0Q1FVRnJRaXhIUVVGQk8wRkJRM1pDTEZGQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExHVkJRV1VzUlVGQlJTeERRVUZETzB0QlF6bERPMEZCUlVRN096czdRVUZKUnp0SlFVTkpMSGxDUVVGNVFpeEhRVUZCTzBGQlF6bENMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1pVRkJaU3hGUVVGRkxFTkJRVU03UzBGRGNrUTdRVUZGUkRzN1FVRkZSenRKUVVOSkxFOUJRVThzUjBGQlFUdEJRVU5hTEZGQlFVRXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXdyUmtGQkswWXNRMEZCUXl4RFFVRkRPMEZCUlRsSExGRkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1MwRkRNVUk3UVVGRlJEczdPenRCUVVsSE8wbEJRMGtzVlVGQlZTeEhRVUZCTzBGQlEyWXNVVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdTMEZEZEVNN1FVRkZSRHM3T3p0QlFVbEhPMGxCUTBrc2FVSkJRV2xDTEVkQlFVRTdRVUZEZEVJc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dExRVU0zUXp0QlFVVkVPenRCUVVWSE8wRkJRMGtzU1VGQlFTeFBRVUZQTEVOQlFVTXNWVUZCYlVJc1JVRkJRVHRCUVVOb1F5eFJRVUZCTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc0swWkJRU3RHTEVOQlFVTXNRMEZCUXp0QlFVVTVSeXhSUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRMUVVOd1F6dEJRVVZFT3pzN096czdPenM3UVVGVFJ6dEJRVU5KTEVsQlFVRXNWVUZCVlN4RFFVRkRMRlZCUVcxQ0xFVkJRVUU3VVVGRGJrTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0TFFVTm9SRHRCUVVWRU96czdPenM3TzBGQlQwYzdRVUZEU1N4SlFVRkJMR2xDUVVGcFFpeERRVUZETEZWQlFXMUNMRVZCUVVFN1VVRkRNVU1zVDBGQlR5eEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMHRCUTNaRU8wRkJSVVE3TzBGQlJVYzdTVUZEU1N4VFFVRlRMRWRCUVVFN1FVRkRaQ3hSUVVGQkxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNjVWRCUVhGSExFTkJRVU1zUTBGQlF6dEJRVVZ3U0N4UlFVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETzB0QlF6VkNPMEZCUlVRN096czdRVUZKUnp0SlFVTkpMRmxCUVZrc1IwRkJRVHRCUVVOcVFpeFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dExRVU40UXp0QlFVVkVPenRCUVVWSE8wbEJRMGtzYlVKQlFXMUNMRWRCUVVFN1FVRkRlRUlzVVVGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0TFFVTXZRenRCUVVWRU96dEJRVVZITzBGQlEwa3NTVUZCUVN4UFFVRlBMRU5CUVVNc1NVRkJjMElzUlVGQlFUdEJRVU51UXl4UlFVRkJMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zSzBaQlFTdEdMRU5CUVVNc1EwRkJRenRCUVVVNVJ5eFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU01UWp0QlFVVkVPenM3TzBGQlNVYzdRVUZEU1N4SlFVRkJMRlZCUVZVc1EwRkJReXhKUVVGelFpeEZRVUZCTzFGQlEzUkRMRTlCUVU4c1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRNVU03UVVGRlJEczdPenRCUVVsSE8wRkJRMGtzU1VGQlFTeHBRa0ZCYVVJc1EwRkJReXhKUVVGelFpeEZRVUZCTzFGQlF6ZERMRTlCUVU4c1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU5xUkR0QlFVVkVPenRCUVVWSE8wRkJRMGtzU1VGQlFTeFhRVUZYTEVOQlFVTXNTVUZCYzBJc1JVRkJRVHRCUVVOMlF5eFJRVUZCTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUTFZc01rZEJRVEpITEVOQlF6VkhMRU5CUVVNN1FVRkZSaXhSUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVOc1F6dEJRVVZFT3pzN08wRkJTVWM3UVVGRFNTeEpRVUZCTEdOQlFXTXNRMEZCUXl4SlFVRnpRaXhGUVVGQk8xRkJRekZETEU5QlFVOHNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTMEZET1VNN1FVRkZSRHM3T3p0QlFVbEhPMEZCUTBrc1NVRkJRU3h4UWtGQmNVSXNRMEZCUXl4SlFVRnpRaXhGUVVGQk8xRkJRMnBFTEU5QlFVOHNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVOeVJEdEJRVVZFT3pzN08wRkJTVWM3U1VGRFNTeE5RVUZOTEVkQlFVRTdVVUZEV0N4SlFVRkpMRWxCUVVrc1EwRkJReXh2UWtGQmIwSXNSVUZCUlR0QlFVTTNRaXhaUVVGQkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dEJRVU55UXl4VFFVRkJPMHRCUTBZN1FVRkRSanM3UVVNeFUwUTdRVUZGWVN4TlFVRkJMSGRDUVVGM1FpeEhRVUZITzBGQlEzUkRMRWxCUVVFc1NVRkJTU3hGUVVGRkxFMUJRVTA3UVVGRFdpeEpRVUZCTEV0QlFVc3NSVUZCUlN4UFFVRlBPMEZCUTJRc1NVRkJRU3hKUVVGSkxFVkJRVVVzVFVGQlRUdEJRVU5hTEVsQlFVRXNXVUZCV1N4RlFVRkZMR05CUVdNN1FVRkROVUlzU1VGQlFTeFpRVUZaTEVWQlFVVXNZMEZCWXp0QlFVTTFRaXhKUVVGQkxGRkJRVkVzUlVGQlJTeFZRVUZWTzBGQlEzQkNMRWxCUVVFc1lVRkJZU3hGUVVGRkxHVkJRV1U3UVVGRE9VSXNTVUZCUVN4aFFVRmhMRVZCUVVVc1pVRkJaVHRCUVVNNVFpeEpRVUZCTEZOQlFWTXNSVUZCUlN4WFFVRlhPMEZCUTNSQ0xFbEJRVUVzV1VGQldTeEZRVUZGTEdOQlFXTTdRVUZETlVJc1NVRkJRU3haUVVGWkxFVkJRVVVzWTBGQll6dEJRVU0xUWl4SlFVRkJMRkZCUVZFc1JVRkJSU3hWUVVGVk8wRkJRM0JDTEVsQlFVRXNZVUZCWVN4RlFVRkZMR1ZCUVdVN1FVRkRPVUlzU1VGQlFTeGhRVUZoTEVWQlFVVXNaVUZCWlR0QlFVTTVRaXhKUVVGQkxGTkJRVk1zUlVGQlJTeFhRVUZYT3pzN1FVTlFlRUk3TzBGQlJVYzdRVUZEU0N4TlFVRk5TQ3gzUWtGQmMwSXNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUlVGQlJTeFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlRWRU96dEJRVVZITzBGQlEwZ3NUVUZCVFN4blFrRkJaMElzUjBGQmNVVTdRVUZEZWtZc1NVRkJRU3hwUWtGQmFVSXNSVUZCUlN4eFFrRkJjVUk3UVVGRGVFTXNTVUZCUVN4eFFrRkJjVUlzUlVGQlJTeHRRa0ZCYlVJN1FVRkRNVU1zU1VGQlFTeHJRa0ZCYTBJc1JVRkJSU3h6UWtGQmMwSTdRVUZETVVNc1NVRkJRU3h6UWtGQmMwSXNSVUZCUlN4dlFrRkJiMEk3UTBGRE4wTXNRMEZCUXp0QlFVVkdPenRCUVVWSE8wMUJRMVVzZFVKQlFYVkNMRU5CUVVFN1FVRlpiRU1zU1VGQlFTeEpRVUZYTEVsQlFVa3NSMEZCUVRzN1FVRkZZaXhSUVVGQkxFOUJRVThzZVVKQlFYbENMRU5CUVVNN1MwRkRiRU03U1VGRlJDeFhRVUZ0UWl4RFFVRkJMRTFCUVd0Q0xFVkJRVVVzVDBGQmQwTXNSVUZCUVR0QlFVTTNSU3hSUVVGQkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRPMUZCUlhKQ0xFbEJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NUMEZCVHl4TFFVRkJMRWxCUVVFc1NVRkJVQ3hQUVVGUExFdEJRVkFzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1QwRkJUeXhEUVVGRkxGVkJRVlVzUTBGQlF6dFJRVU4wUXl4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVkQlFVY3NUMEZCVHl4TFFVRkJMRWxCUVVFc1NVRkJVQ3hQUVVGUExFdEJRVkFzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1QwRkJUeXhEUVVGRkxHOUNRVUZ2UWl4RFFVRkRPMHRCUXpORU8wRkJSVmtzU1VGQlFTeFRRVUZUTEVOQlFVTXNTVUZCVlN4RlFVRkJPenRCUVVNdlFpeFpRVUZCTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1YwRkJWeXhIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRUUVVOMFJDeERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVRkJPMEZCUlVRN096czdRVUZKUnp0QlFVTlhMRWxCUVVFc1QwRkJUeXhEUVVGRExFbEJRVlVzUlVGQlFUczdXVUZET1VJc1RVRkJUU3hSUVVGUkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wRkJRelZETEZsQlFVRXNTVUZCU1N4UlFVRlJMRVZCUVVVN1FVRkRXaXhuUWtGQlFTeFBRVUZQTEZGQlFWRXNRMEZCUXp0QlFVTnFRaXhoUVVGQk8xbEJSVVFzVFVGQlRTeFJRVUZSTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlF6VkRMRmxCUVVFc1NVRkJTU3hSUVVGUkxFVkJRVVU3UVVGRFdpeG5Ra0ZCUVN4UFFVRlBMRkZCUVZFc1EwRkJRenRCUVVOcVFpeGhRVUZCTzBGQlJVUXNXVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJRenRUUVVOaUxFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlFVRTdRVUZGWVN4SlFVRkJMRk5CUVZNc1EwRkJReXhKUVVGVkxFVkJRVUU3T3p0QlFVTm9ReXhaUVVGQkxFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJkMElzUTBGQlF6czdRVUZIYkVRc1dVRkJRU3hOUVVGTkxGTkJRVk1zUjBGQlJ5eERRVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMRWxCUVVrc1EwRkJReXhqUVVGakxFMUJRVVVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVRXNUMEZCVHl4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyeEZMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVU3UVVGRFpDeG5Ra0ZCUVN4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOaUxHRkJRVUU3V1VGRlJDeE5RVUZOTEZOQlFWTXNSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxFTkJRVU1zVlVGQlZTeE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkhMRlZCUVZVc1EwRkJiME1zUTBGQlF6dFpRVU51Uml4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRk8wRkJRMlFzWjBKQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRZaXhoUVVGQk8wRkJSVVFzV1VGQlFTeE5RVUZOTEZkQlFWY3NSMEZCUnl4VFFVRlRMRU5CUVVNc1YwRkJWeXhEUVVGRE8wRkJRekZETEZsQlFVRXNTVUZCU1N4RFFVRkRRU3gzUWtGQmMwSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1YwRkJWeXhEUVVGRExFVkJRVVU3UVVGRE5VTXNaMEpCUVVFc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5d3dSRUZCTUVRc1YwRkJWeXhEUVVGQkxFTkJRVUVzUTBGQlJ5eERRVUZETEVOQlFVTTdRVUZEZGtZc1owSkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTTdRVUZEWWl4aFFVRkJPMEZCUlVRc1dVRkJRU3hOUVVGTkxHTkJRV01zUjBGQlJ5eFRRVUZUTEVOQlFVTXNVVUZCVVN4RFFVRkRPMWxCUXpGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVWQlFVVTdRVUZEYmtJc1owSkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTTdRVUZEWWl4aFFVRkJPMEZCUlVRN096czdRVUZKUnp0WlFVTklMRTFCUVUwc2RVSkJRWFZDTEVkQlF6RkNMR05CUVdNc1EwRkJReXhWUVVGclFpeERRVUZETEhGQ1FVRnhRaXhKUVVGSkxFbEJRVWs3UVVGREwwUXNaMEpCUVVFc1kwRkJZeXhEUVVGRExGVkJRV3RDTEVOQlFVTXNjMEpCUVhOQ0xFbEJRVWtzU1VGQlNTeERRVUZETzFsQlJYQkZMRTFCUVUwc1ZVRkJWU3hIUVVFeVFpeEZRVUZGTEVOQlFVTTdRVUZET1VNc1dVRkJRU3hKUVVGSkxHTkJRV01zUTBGQlF5eFZRVUZWTEVsQlFVa3NTVUZCU1N4RlFVRkZPMmRDUVVOeVF5eE5RVUZOTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUTJZc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eGpRVUZqTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVThzUTBGQlF5eGpRVUZqTEVWQlFVVXNaVUZCWlN4RFFVRkRMRXRCUVVrc1UwRkJRU3hEUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEVOQlFVRXNSVUZCUVN4TFFVRkJMRU5CUVVFc1JVRkJRU3hoUVVGQk8yOUNRVU40Uml4SlFVRkpMRkZCUVZFc1IwRkJSeXhqUVVGdFJDeERRVUZETzBGQlEyNUZMRzlDUVVGQkxFMUJRVTBzUzBGQlN5eEhRVUZITEdWQlFXVXNRMEZCUXl4SlFVRkpMRU5CUVVNN08wRkJSMjVETEc5Q1FVRkJMRWxCUVVrc2RVSkJRWFZDTEVWQlFVVTdRVUZETTBJc2QwSkJRVUVzVFVGQlRTeGhRVUZoTEVkQlFVY3NaMEpCUVdkQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdkMEpCUTJwRUxFbEJRVWtzWVVGQllTeEpRVUZKTEVsQlFVa3NSVUZCUlRzMFFrRkRla0lzVVVGQlVTeEhRVUZITEdGQlFXRXNRMEZCUXp0QlFVTXhRaXg1UWtGQlFUdEJRVU5HTEhGQ1FVRkJPMEZCUlVRc2IwSkJRVUVzVFVGQlRTeEpRVUZKTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eE5RVUZOTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN08yOUNRVWMxUkN4SlFVRkpMRWxCUVVrc1NVRkJTU3hKUVVGSkxFVkJRVVU3ZDBKQlEyaENMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlFTeDFRMEZCUVN4RlFVRXdReXhSUVVGUkxFTkJRV0VzVlVGQlFTeEZRVUZCTEV0QlFVc3NRMEZCYTBJc1owSkJRVUVzUTBGQlFTeERRVUZETEVOQlFVTTdkMEpCUTNKSExFOUJRVTg3UVVGRFVpeHhRa0ZCUVRzN1FVRkhSQ3h2UWtGQlFTeFZRVUZWTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWRCUVVjc1JVRkJSU3hKUVVGSkxFVkJRVVVzUTBGQlF6dHBRa0ZEYWtNc1EwRkJRU3hEUVVGRExFTkJRMGdzUTBGQlF6dEJRVU5JTEdGQlFVRTdXVUZGUkN4TlFVRk5MRkZCUVZFc1IwRkJSeXhKUVVGSkxGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNlVUpCUVhsQ0xFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVTdaMEpCUXpORkxHOUNRVUZ2UWl4RlFVRkZMRWxCUVVrc1EwRkJReXh2UWtGQmIwSTdRVUZEYUVRc1lVRkJRU3hEUVVGRExFTkJRVU03V1VGRFNDeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhSUVVGUkxFTkJRVU1zZDBKQlFYZENMRU5CUVVNc1EwRkJRenRaUVVWc1JDeEpRVUZKTEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVN1FVRkRia0lzWjBKQlFVRXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hwUWtGQmFVSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVNdlF5eG5Ra0ZCUVN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0blFrRkROVUlzVFVGQlRTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExGZEJRVmNzUTBGQlF6dEJRVU5zUkN4aFFVRkJPMEZCUlVRc1dVRkJRU3hQUVVGUExGRkJRVkVzUTBGQlF6czdRVUZEYWtJc1MwRkJRVHRCUVVWaExFbEJRVUVzVTBGQlV5eERRVUZETEVsQlFWVXNSVUZCUVRzN08wRkJRMmhETEZsQlFVRXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUYzUWl4RFFVRkRPMWxCUld4RUxFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVRXNSVUZCUVN4SFFVRkJMRWxCUVVrc1EwRkJReXhWUVVGVkxFMUJRVUVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVVXNSMEZCTkVJc1EwRkJRenRaUVVNM1JDeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTFnc1owSkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTTdRVUZEWWl4aFFVRkJPMEZCUlVRc1dVRkJRU3hOUVVGTkxHTkJRV01zUjBGQkswSXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJRenRaUVVOdVJTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZPMEZCUTI1Q0xHZENRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJJc1lVRkJRVHRaUVVWRUxFMUJRVTBzVlVGQlZTeEhRVUV5UWl4RlFVRkZMRU5CUVVNN1FVRkRPVU1zV1VGQlFTeEpRVUZKTEdOQlFXTXNRMEZCUXl4VlFVRlZMRWxCUVVrc1NVRkJTU3hGUVVGRk8wRkJRM0pETEdkQ1FVRkJMRTFCUVUwc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGRFppeGpRVUZqTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGUExFbEJRVWtzUzBGQlNTeFRRVUZCTEVOQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1EwRkJRU3hGUVVGQkxFdEJRVUVzUTBGQlFTeEZRVUZCTEdGQlFVRTdRVUZETTBNc2IwSkJRVUVzVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRCUVVNelFpeHZRa0ZCUVN4TlFVRk5MRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETzBGQlJYaENMRzlDUVVGQkxFbEJRVWtzVVVGQlVTeEpRVUZKTEVsQlFVa3NTVUZCU1N4TFFVRkxMRWxCUVVrc1NVRkJTU3hGUVVGRk8zZENRVU55UXl4UFFVRlBPMEZCUTFJc2NVSkJRVUU3UVVGRlJDeHZRa0ZCUVN4TlFVRk5MRWxCUVVrc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRMRTFCUVUwc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6czdiMEpCUnpWRUxFbEJRVWtzU1VGQlNTeEpRVUZKTEVsQlFVa3NSVUZCUlR0M1FrRkRhRUlzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkJMSFZEUVVGQkxFVkJRVEJETEZGQlFWRXNRMEZCWVN4VlFVRkJMRVZCUVVFc1MwRkJTeXhEUVVGclFpeG5Ra0ZCUVN4RFFVRkJMRU5CUVVNc1EwRkJRenQzUWtGRGNrY3NUMEZCVHp0QlFVTlNMSEZDUVVGQk96dEJRVWRFTEc5Q1FVRkJMRTFCUVUwc1lVRkJZU3hIUVVGSExHZENRVUZuUWl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8yOUNRVU5xUkN4TlFVRk5MRmRCUVZjc1NVRkJTU3hoUVVGaExFdEJRVUVzU1VGQlFTeEpRVUZpTEdGQlFXRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJZaXhoUVVGaExFZEJRVWtzVVVGQlVTeERRVUZ6UXl4RFFVRkRPenM3UVVGSmNrWXNiMEpCUVVFc1NVRkJTU3hWUVVGVkxFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NTVUZCU1N4RlFVRkZPM2RDUVVOdVF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVTldMRU5CUVVFc01FSkJRVUVzUlVGQk5rSXNWMEZCVnl4RFFVRnpRaXh0UWtGQlFTeEZRVUZCTEV0QlFVc3NRMEZCYVVNc0swSkJRVUVzUTBGQlFTeERRVU55Unl4RFFVRkRPM2RDUVVOR0xFOUJRVTg3UVVGRFVpeHhRa0ZCUVRzN1FVRkhSQ3h2UWtGQlFTeFZRVUZWTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hKUVVGSkxFVkJRVVVzUTBGQlF6dHBRa0ZEY0VNc1EwRkJRU3hEUVVGRExFTkJRMGdzUTBGQlF6dEJRVU5JTEdGQlFVRTdXVUZGUkN4TlFVRk5MRkZCUVZFc1IwRkJSeXhKUVVGSkxGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNlVUpCUVhsQ0xFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVTdaMEpCUXpORkxHOUNRVUZ2UWl4RlFVRkZMRWxCUVVrc1EwRkJReXh2UWtGQmIwSTdRVUZEYUVRc1lVRkJRU3hEUVVGRExFTkJRVU03V1VGRFNDeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhSUVVGUkxFTkJRVU1zZDBKQlFYZENMRU5CUVVNc1EwRkJRenRaUVVWc1JDeEpRVUZKTEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVN1FVRkRia0lzWjBKQlFVRXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hwUWtGQmFVSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVNdlF5eG5Ra0ZCUVN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0blFrRkROVUlzVFVGQlRTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExGZEJRVmNzUTBGQlF6dEJRVU5zUkN4aFFVRkJPMEZCUlVRc1dVRkJRU3hQUVVGUExGRkJRVkVzUTBGQlF6czdRVUZEYWtJc1MwRkJRVHRCUVVWRU96czdPMEZCU1VjN1FVRkRTeXhKUVVGQkxIbENRVUY1UWl4RFFVRkRMRlZCUVd0RExFVkJRVUU3TzFGQlJXeEZMRTFCUVUwc2IwSkJRVzlDTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkRla1VzUTBGQlF5eG5Ra0ZCWjBJc1MwRkJTeXhWUVVGVkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRek5FTEVOQlFVTTdPMEZCUjBZc1VVRkJRU3hKUVVGSkxHOUNRVUZ2UWl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVU3UVVGRGJrTXNXVUZCUVN4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVOaUxFTkJRVUVzTUVWQlFVRXNSVUZCTmtVc2IwSkJRVzlDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRkxFTkJRVUVzUTBGREwwY3NRMEZCUXp0QlFVTklMRk5CUVVFN1FVRkZSQ3hSUVVGQkxFOUJRVThzVlVGQk1rSXNRMEZCUXp0TFFVTndRenRCUVVOR096dEJRek5QV1N4TlFVRkJMR2xDUVVGclFpeFRRVUZSTEV0QlFVc3NRMEZCUXl4alFVRmpMRU5CUVVFN1FVRlJla1FzU1VGQlFTeFhRVUZCTEVkQlFVRTdRVUZEUlN4UlFVRkJMRXRCUVVzc1JVRkJSU3hEUVVGRE8xRkJUa1lzU1VGQllTeERRVUZCTEdGQlFVRXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRiRUlzU1VGQll5eERRVUZCTEdOQlFVRXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRlBla0lzVVVGQlFTeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWRCUVVjc1EwRkJRenRCUVVOcVFpeFJRVUZCTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGRE8wRkJRMnhDTEZGQlFVRXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhIUVVGSExFTkJRVU03UVVGRGVrSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFZEJRVWNzUTBGQlF6dEJRVVV4UWl4UlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1dVRkJXU3hEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOMlJTeEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRlZCUVZVc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdRVUZGTjBNc1VVRkJRU3hKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMR1ZCUVdVc1EwRkJReXhKUVVGSkxGZEJRVmNzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFVXNVVUZCUVN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0UlFVVXZRaXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTTdVVUZEYmtJc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzB0QlEyWTdTVUZGVFN4TlFVRk5MRWRCUVVFN1VVRkRXQ3hKUVVGSkxHOUNRVUZ2UWl4SFFVRkhMRXRCUVVzc1EwRkJRenRCUVVWcVF5eFJRVUZCTEVsQlFVa3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1MwRkJTeXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTzBGQlEzSkRMRmxCUVVFc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRPMWxCUTJoRExHOUNRVUZ2UWl4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVNM1FpeFRRVUZCTzBGQlJVUXNVVUZCUVN4SlFVRkpMRWxCUVVrc1EwRkJReXhqUVVGakxFdEJRVXNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlR0QlFVTjJReXhaUVVGQkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRaUVVOc1F5eHZRa0ZCYjBJc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRE4wSXNVMEZCUVR0QlFVVkVMRkZCUVVFc1NVRkJTU3h2UWtGQmIwSXNSVUZCUlR0WlFVTjRRaXhKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTEVOQlFVTTdRVUZEZGtJc1UwRkJRVHRMUVVOR08wbEJSVThzWTBGQll5eEhRVUZCTzBGQlEzQkNMRkZCUVVFc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGZGtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU16UWl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVsQlFVa3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJRenRCUVVVeFF5eFpRVUZCTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hKUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU40Unl4VFFVRkJPMEZCUlVRc1VVRkJRU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNN1MwRkRiRU03U1VGRlR5eFhRVUZYTEVkQlFVRTdVVUZEYWtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU16UWl4WlFVRkJMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMmhFTEZOQlFVRTdRVUZGUkN4UlFVRkJMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXp0TFFVTndRenRCUVVOR096dEJReTlFV1N4TlFVRkJMREpDUVVFMFFpeFRRVUZSTEV0QlFVc3NRMEZCUXl4alFVRmpMRU5CUVVFN1FVRlJia1VzU1VGQlFTeFhRVUZCTEVkQlFVRTdRVUZEUlN4UlFVRkJMRXRCUVVzc1JVRkJSU3hEUVVGRE8wRkJSVklzVVVGQlFTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJRenRCUVVOc1FpeFJRVUZCTEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1IwRkJSeXhEUVVGRE8xRkJSVEZDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdVVUZEYUVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVWNFF5eFJRVUZCTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zWlVGQlpTeERRVUZETEVsQlFVa3NXVUZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkZMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVVM1F5eFJRVUZCTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zWlVGQlpTeERRVUZETEVsQlFVa3NWMEZCVnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzSkZMRkZCUVVFc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1VVRkZMMElzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXp0TFFVTm1PMGxCUlUwc1RVRkJUU3hIUVVGQk8xRkJRMWdzU1VGQlNTeHZRa0ZCYjBJc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGRmFrTXNVVUZCUVN4SlFVRkpMRWxCUVVrc1EwRkJReXhqUVVGakxFdEJRVXNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlR0QlFVTjJReXhaUVVGQkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRaUVVOc1F5eHZRa0ZCYjBJc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRE4wSXNVMEZCUVR0UlFVVkVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3V1VGRGVFTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUTJ4RExHOUNRVUZ2UWl4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVNM1FpeFRRVUZCTzBGQlJVUXNVVUZCUVN4SlFVRkpMRzlDUVVGdlFpeEZRVUZGTzFsQlEzaENMRWxCUVVrc1EwRkJReXhqUVVGakxFVkJRVVVzUTBGQlF6dEJRVU4yUWl4VFFVRkJPMHRCUTBZN1NVRkZUeXhqUVVGakxFZEJRVUU3VVVGRGNFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVNelFpeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXp0WlFVVXZRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNaRUxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRelZFTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6ZEVMRk5CUVVFN1FVRkZSQ3hSUVVGQkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3hKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRSUVVNeFJTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkZPVVVzVVVGQlFTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOc1F5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFVkJRVVVzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVVY0Uml4UlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXp0TFFVTnNRenRKUVVWUExGZEJRVmNzUjBGQlFUdFJRVU5xUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRek5DTEUxQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdRVUZGZUVJc1dVRkJRU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTndReXhaUVVGQkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEyNUVMRmxCUVVFc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGNrUXNVMEZCUVR0UlFVTkVMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRmJrTXNVVUZCUVN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdTMEZEY0VNN1FVRkRSanM3UVVONFJVUXNUVUZCVFVjc1VVRkJUU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMEZCUTNSRExFMUJRVTFETEZGQlFVMHNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF6dEJRVU4wUXl4TlFVRk5TQ3hOUVVGSkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkRha01zVFVGQlRVTXNUVUZCU1N4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlJXcERMRTFCUVUwc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRE8wRkJRek5ETEUxQlFVMHNXVUZCV1N4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1lVRkJZU3hGUVVGRkxHRkJRV0VzUTBGQlF5eERRVUZETzBGQlF5OUZMRTFCUVUwc1pVRkJaU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzBGQlJUVkRMRTFCUVVFc1pVRkJaMElzVTBGQlVTeExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkJPMEZCVFRsRExFbEJRVUVzVjBGQlFTeERRVUZ0UWl4TlFVRnBRaXhGUVVGQk8wRkJRMnhETEZGQlFVRXNTMEZCU3l4RlFVRkZMRU5CUVVNN1FVRkRVaXhSUVVGQkxFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGRk9VSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFMUJRVTBzUTBGQlF6dEJRVVY0UWl4UlFVRkJPMEZCUTBVc1dVRkJRU3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEdsQ1FVRnBRaXhGUVVGRkxFTkJRVU03UVVGRGVrTXNXVUZCUVN4UlFVRlJMRU5CUVVNc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF6dEJRVVYwUWl4WlFVRkJMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEdsQ1FVRnBRaXhEUVVGRE8wRkJRek5ETEdkQ1FVRkJMRXRCUVVzc1JVRkJSU3hSUVVGUk8wRkJRMllzWjBKQlFVRXNWMEZCVnl4RlFVRkZMRWxCUVVrN1FVRkRha0lzWjBKQlFVRXNUMEZCVHl4RlFVRkZMRWRCUVVjN1owSkJRMW9zU1VGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4VlFVRlZPMEZCUTNSQ0xHZENRVUZCTEZOQlFWTXNSVUZCUlN4TFFVRkxPMEZCUTJoQ0xHZENRVUZCTEZWQlFWVXNSVUZCUlN4TFFVRkxPMEZCUTJ4Q0xHRkJRVUVzUTBGQlF5eERRVUZETzBGQlJVZ3NXVUZCUVN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1VVRkJVU3hEUVVGRExFTkJRVU03UVVGRGNrUXNXVUZCUVN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0QlFVTXpRaXhUUVVGQk8wRkJSVVFzVVVGQlFUdEJRVU5GTEZsQlFVRXNUVUZCVFN4UlFVRlJMRWRCUVVjc1NVRkJTU3hwUWtGQmFVSXNSVUZCUlN4RFFVRkRPMEZCUTNwRExGbEJRVUVzVVVGQlVTeERRVUZETEUxQlFVMHNSMEZCUnl4SFFVRkhMRU5CUVVNN1FVRkZkRUlzV1VGQlFTeE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNRMEZCUXp0QlFVTXpReXhuUWtGQlFTeExRVUZMTEVWQlFVVXNVVUZCVVR0QlFVTm1MR2RDUVVGQkxGZEJRVmNzUlVGQlJTeEpRVUZKTzBGQlEycENMR2RDUVVGQkxFOUJRVThzUlVGQlJTeEhRVUZITzJkQ1FVTmFMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU1zVlVGQlZUdEJRVU4wUWl4blFrRkJRU3hUUVVGVExFVkJRVVVzUzBGQlN6dEJRVU5vUWl4blFrRkJRU3hWUVVGVkxFVkJRVVVzUzBGQlN6dEJRVU5zUWl4aFFVRkJMRU5CUVVNc1EwRkJRenRCUVVWSUxGbEJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUTI1RUxGbEJRVUVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03UVVGRGVrSXNVMEZCUVR0QlFVVkVMRkZCUVVFN1FVRkRSU3haUVVGQkxFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NNa0pCUVRKQ0xFVkJRVVVzUTBGQlF6dEJRVU51UkN4WlFVRkJMRkZCUVZFc1EwRkJReXhOUVVGTkxFZEJRVWNzUjBGQlJ5eERRVUZETzBGQlJYUkNMRmxCUVVFc1RVRkJUU3hSUVVGUkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU03UVVGRE0wTXNaMEpCUVVFc1MwRkJTeXhGUVVGRkxGRkJRVkU3UVVGRFppeG5Ra0ZCUVN4VFFVRlRMRVZCUVVVc1MwRkJTenRCUVVOb1FpeG5Ra0ZCUVN4VlFVRlZMRVZCUVVVc1MwRkJTenRCUVVOc1FpeGhRVUZCTEVOQlFVTXNRMEZCUXp0QlFVVklMRmxCUVVFc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4WlFVRlpMRU5CUVVNc1VVRkJVU3hGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZETzBGQlF6bEVMRmxCUVVFc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eGhRVUZoTEVkQlFVY3NTMEZCU3l4RFFVRkRPMEZCUTNaRExGbEJRVUVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03UVVGRE5VSXNVMEZCUVR0TFFVTkdPMGxCUlUwc1QwRkJUeXhIUVVGQk8wRkJRMW9zVVVGQlFTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5xUXl4UlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMEZCUldwRExGRkJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRGJrTXNVVUZCUVN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExGRkJRVkVzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVVnVReXhSUVVGQkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRM0JETEZGQlFVRXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdTMEZEY2tNN1FVRkZUU3hKUVVGQkxHbENRVUZwUWl4RFFVRkRMRXRCUVdNc1JVRkJRVHM3UVVGRmNrTXNVVUZCUVN4TlFVRk5MRWRCUVVjc1IwRkJSeXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF6dFJRVU42UkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVkQlFVY3NSMEZCUnl4RFFVRkRPMEZCUTI1RExGRkJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03UVVGRmFFTXNVVUZCUVN4TlFVRk5MRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU0zUkN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMEZCUTNaRExGRkJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03TzBGQlIyeERMRkZCUVVFc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eHpRa0ZCYzBJc1EwRkJRMFFzVFVGQlNTeERRVUZETEVOQlFVTTdRVUZETlVNc1VVRkJRU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEhkQ1FVRjNRaXhEUVVGRFJTeFJRVUZOTEVOQlFVTXNRMEZCUXpzN1FVRkhhRVFzVVVGQlFVRXNVVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEhOQ1FVRnpRaXhEUVVGRFF5eFJRVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRPenRSUVVjdlJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU5JTEUxQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTJ4RExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJRMFVzVVVGQlRTeERRVUZETEVOQlFVTTdVVUZGZEVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRSaXhOUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU53UXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTkZMRkZCUVUwc1EwRkJReXhEUVVGRE8wRkJRM2hETEZGQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhWUVVGVkxFTkJRVU1zVVVGQlVTeERRVUZEUXl4UlFVRk5MRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNaVUZCWlN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGJrWXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhWUVVGVkxFTkJRVU1zVVVGQlVTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPenRSUVVkc1JDeE5RVUZOTEVWQlFVVXNUVUZCVFN4RlFVRkZMRlZCUVZVc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTTdRVUZET1VNc1VVRkJRU3hKUVVGSkxFMUJRVTBzU1VGQlNTeEpRVUZKTEVsQlFVa3NWVUZCVlN4RlFVRkZPMWxCUTJoRExFMUJRVTBzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJRMFlzVFVGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRSQ3hOUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU40UXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRReXhOUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU14UXl4WlFVRkJMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMWxCUTI1RExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJRMFFzVFVGQlNTeERRVUZETEVOQlFVTTdRVUZEZEVNc1UwRkJRVHM3UVVGSFJDeFJRVUZCTEV0QlFVc3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0TFFVTm9RenRCUVVOR096dEJRek5JUkN4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTjBReXhOUVVGTkxFMUJRVTBzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVWdVF6czdPenM3T3p0QlFVOUhPMEZCUTJFc1UwRkJRU3h6UWtGQmMwSXNRMEZCUXl4TlFVRnpRaXhGUVVGRkxFZEJRWEZDTEVWQlFVRTdTVUZEYkVZc1RVRkJUU3hEUVVGRExGZEJRVmNzUTBGQlF5eFRRVUZUTEVOQlFVTXNVMEZCVXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU55UkN4SlFVRkJMRTlCUVU4c1IwRkJSeXhEUVVGRE8wRkJRMkk3TzBGRFpFRTdPenM3T3pzN096czdRVUZWUnp0QlFVTkhMRk5CUVZVc2JVSkJRVzFDTEVOQlFVTXNUVUZCY1VJc1JVRkJRVHRKUVVOMlJDeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZGtnN08wRkRaa0U3T3pzN096czdPenRCUVZOSE8wRkJRMGNzVTBGQlZTeGhRVUZoTEVOQlFVTXNTMEZCWVN4RlFVRkJPMEZCUTNwRExFbEJRVUVzVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRKUVVOd1JDeFBRVUZQTEV0QlFVc3NSMEZCUnl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFVkJRVVVzUjBGQlJ5eFRRVUZUTEVOQlFVTTdRVUZETTBNN08wRkRURUVzVFVGQlRVa3NhVUpCUVdVc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dEJRVVY2UkN4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnFReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVOcVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5xUXl4TlFVRk5SaXhSUVVGTkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1FVRkRkRU1zVFVGQlRVTXNVVUZCVFN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzBGQlEzUkRMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMEZCUTNSRExFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8wRkJRM1JETEUxQlFVMUZMRk5CUVU4c1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0QlFVVnNRenM3UVVGRlJ6dE5RVU5WTEZOQlFWTXNRMEZCUVR0QlFUaERjRUk3TzBGQlJVYzdRVUZEU0N4SlFVRkJMRWxCUVZjc1IwRkJSeXhIUVVGQk8xRkJRMW9zVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMHRCUTJ4Q08wRkJSVVE3TzBGQlJVYzdTVUZEU0N4SlFVRlhMRWRCUVVjc1EwRkJReXhMUVVGaExFVkJRVUU3UVVGRE1VSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFdEJRVXNzUTBGQlF6dEJRVU5zUWl4UlFVRkJMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzU1VGQlNTeERRVUZETzB0QlF6RkNPMEZCVDBRN08wRkJSVWM3UVVGRFNDeEpRVUZCTEVsQlFWY3NTMEZCU3l4SFFVRkJPMUZCUTJRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzB0QlEzQkNPMEZCUlVRN08wRkJSVWM3U1VGRFNDeEpRVUZYTEV0QlFVc3NRMEZCUXl4TFFVRmhMRVZCUVVFN1FVRkROVUlzVVVGQlFTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJRenRCUVVOd1FpeFJRVUZCTEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1NVRkJTU3hEUVVGRE8wdEJRekZDTzBGQldVUTdPMEZCUlVjN1FVRkRTQ3hKUVVGQkxFbEJRVmNzUzBGQlN5eEhRVUZCTzBGQlEyUXNVVUZCUVN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExIbEVRVUY1UkN4RFFVRkRMRU5CUVVNN1VVRkZlRVVzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTTdTMEZEZWtNN1FVRkZSRHM3T3pzN1FVRkxSenRKUVVOSUxGZEJRVzFDTEVOQlFVRXNVVUZCY1VJc1JVRkJSU3hQUVVGNVFpeEZRVUZCTzBGQmRrZHVSVHM3UVVGRlJ6dEJRVU5KTEZGQlFVRXNTVUZCUVN4RFFVRkJMR3RDUVVGclFpeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJXV2hFT3pzN096dEJRVXRITzFGQlEwa3NTVUZCVlN4RFFVRkJMRlZCUVVFc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGVmVrSTdPenM3UVVGSlJ6dEJRVU5KTEZGQlFVRXNTVUZCUVN4RFFVRkJMRk5CUVZNc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dEJRVzlGYkVRc1VVRkJRU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEZGQlFWRXNRMEZCUXp0QlFVTjZRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NUMEZCVHl4RFFVRkRPMEZCUlhaQ0xGRkJRVUVzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1FVRkRhRUlzVVVGQlFTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJRenRCUVVOc1FpeFJRVUZCTEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJSWHBDTEZGQlFVRXNTVUZCU1N4RFFVRkRMSGRDUVVGM1FpeEhRVUZITEVsQlFVa3NRMEZCUXl4M1FrRkJkMElzUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJReXhEUVVGRE8wdEJRM1pHTzBGQlJVUTdPenM3TzBGQlMwYzdRVUZEU1N4SlFVRkJMRkZCUVZFc1EwRkJReXhOUVVGdFFpeEZRVUZCTzBGQlEycERMRkZCUVVFc1QwRkJUeXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4SFFVRkhMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03UzBGRE0wYzdRVUZGUkRzN096czdPMEZCVFVjN1FVRkRTU3hKUVVGQkxFbEJRVWtzUTBGQlF5eE5RVUZwUWl4RlFVRkJPMEZCUXpOQ0xGRkJRVUVzU1VGQlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4TFFVRkxMRTFCUVUwc1EwRkJReXhSUVVGUkxFVkJRVVU3UVVGRGNrTXNXVUZCUVN4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHMUVRVUZ0UkN4RFFVRkRMRU5CUVVNN1FVRkRkRVVzVTBGQlFUdFJRVVZFTEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR3RDUVVGclFpeERRVUZETEVOQlFVTTdRVUZEZUVRc1VVRkJRU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNN1FVRkRPVUlzVVVGQlFTeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU03UVVGRGNFTXNVVUZCUVN4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZETlVJc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJSWFJETEZGQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1MwRkRZanRCUVVWRU96czdPMEZCU1VjN1NVRkRTU3hMUVVGTExFZEJRVUU3UVVGRFZpeFJRVUZCTEU5QlFVOHNTVUZCU1N4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6bEVPMEZCUlVRN08wRkJSVWM3U1VGRFNTeExRVUZMTEVkQlFVRTdRVUZEVml4UlFVRkJMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETzBGQlEyaENMRkZCUVVFc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZEYkVJc1VVRkJRU3hKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEVsQlFVa3NRMEZCUXp0TFFVTXhRanRCUVVWRU96czdPMEZCU1VjN1FVRkRTU3hKUVVGQkxITkNRVUZ6UWl4RFFVRkRMRTFCUVhGQ0xFVkJRVUU3VVVGRGFrUXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eGpRVUZqTEVOQlFVTXNUVUZCVFN4RFFVRkZMRU5CUVVNN1FVRkZia1FzVVVGQlFTeFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0TFFVTTFSVHRCUVVWRU96czdPenRCUVV0SE8wRkJRMGtzU1VGQlFTeDNRa0ZCZDBJc1EwRkJReXhOUVVGM1FpeEZRVUZCTzFGQlEzUkVMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTFCUVUwc1EwRkJSU3hEUVVGRE8wRkJSVzVFTEZGQlFVRXNUMEZCVHl4elFrRkJjMElzUTBGQlF5eEpRVUZKTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1MwRkROME03UVVGRlJEczdPenRCUVVsSE8wRkJRMGtzU1VGQlFTeHpRa0ZCYzBJc1EwRkJReXhOUVVGM1FpeEZRVUZCTzFGQlEzQkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eHBRa0ZCYVVJc1EwRkJRMFFzYVVKQlFXVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1JVRkJSVHRaUVVNMVJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExIZENRVUYzUWl4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03UVVGRE5VUXNVMEZCUVR0QlFVVkVMRkZCUVVFc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMR2xDUVVGcFFpeERRVUZETEVkQlFVY3NiVUpCUVcxQ0xFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMEZCUTJ4R0xGRkJRVUZETEZOQlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSVUZCUlN4SFFVRkhMR2RDUVVGblFpeEZRVUZGTEdsQ1FVRnBRaXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlJUZEZMRTlCUVU4c1RVRkJUU3hEUVVGRExGbEJRVmtzUTBGQlEwRXNVMEZCVHl4RFFVRkRMRU5CUVVNc1YwRkJWeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMSGRDUVVGM1FpeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJRenRMUVVOMFJ6dEJRVVZFT3pzN08wRkJTVWM3UVVGRFNTeEpRVUZCTEhWQ1FVRjFRaXhEUVVGRExFMUJRWEZDTEVWQlFVRTdRVUZEYkVRc1VVRkJRU3hKUVVGSkxFTkJRVU1zZDBKQlFYZENMRU5CUVVOR0xGRkJRVTBzUTBGQlF5eERRVUZETzBGQlEzUkRMRkZCUVVFc1NVRkJTU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJSWEJETEZGQlFVRXNUMEZCVHl4TlFVRk5PMkZCUTFZc1NVRkJTU3hEUVVGRFF5eHBRa0ZCWlN4RFFVRkRPMkZCUTNKQ0xHVkJRV1VzUTBGQlEwUXNVVUZCVFN4RFFVRkRPMkZCUTNaQ0xHVkJRV1VzUTBGQlF5eE5RVUZOTEVOQlFVTTdZVUZEZGtJc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTkZMRk5CUVU4c1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGRrTTdRVUZGUkRzN096czdPenM3UVVGUlJ6dEJRVU5KTEVsQlFVRXNUVUZCVFN4RFFVRkRMRkZCUVhWQ0xFVkJRVUU3TzFGQlJXNURMRTFCUVUwc1kwRkJZeXhIUVVGSFNDeFJRVUZOTzBGQlF6RkNMR0ZCUVVFc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eDNRa0ZCZDBJc1EwRkJRenRoUVVOdVF5eFJRVUZSTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeERRVUZETEhkQ1FVRjNRaXhEUVVGRFF5eFJRVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRja1VzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMSE5DUVVGelFpeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFMUJRVTBzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMR1ZCUVdVc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXpzN1FVRkhMMFlzVVVGQlFTeE5RVUZOTEVOQlFVTXNWMEZCVnl4RlFVRkZMRmxCUVZrc1EwRkJReXhIUVVGSExHMUNRVUZ0UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dFJRVU40UlN4TlFVRk5MRU5CUVVNc1UwRkJVeXhGUVVGRkxGVkJRVlVzUTBGQlF5eEhRVUZITEcxQ1FVRnRRaXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFGQlF5OUVMRTFCUVUwc1IwRkJSeXhIUVVGSExHRkJRV0VzUTBGQlF5eFRRVUZUTEVkQlFVY3NWMEZCVnl4RFFVRkRMRU5CUVVNN1VVRkRia1FzVFVGQlRTeExRVUZMTEVkQlFVY3NZVUZCWVN4RFFVRkRMRmxCUVZrc1IwRkJSeXhWUVVGVkxFTkJRVU1zUTBGQlF6czdVVUZIZGtRc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTlCUVU4c1IwRkJSeXhIUVVGSExFTkJRVU03VVVGRE1VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkZPVU1zVVVGQlFTeEpRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRWxCUVVrc1EwRkJRenRMUVVNeFFqdEJRVVZFT3pzN096dEJRVXRITzBGQlEwa3NTVUZCUVN4TlFVRk5MRU5CUVVNc1MwRkJZU3hGUVVGQk8xRkJRM3BDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlR0QlFVTXhReXhaUVVGQkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMnBFTEZOQlFVRTdVVUZGUkN4SlFVRkpMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVU3UVVGRGNrSXNXVUZCUVN4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExFdEJRVXNzUTBGQlF6dEJRVVV4UWl4WlFVRkJMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlEzQkVMRk5CUVVFN1MwRkRSanM3UVVFeFVYTkNMRk5CUVVFc1EwRkJRU3hYUVVGWExFZEJRVWNzUzBGQlN5eERRVUZET3p0QlEyaENOME1zVFVGQlRTeGxRVUZsTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkZla1FzVFVGQlRTeE5RVUZOTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03UVVGRGRFTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdRVUZEZEVNc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUlhSRU96czdRVUZIUnp0TlFVTlZMRzlDUVVGdlFpeERRVUZCTzBGQk1FUXZRanM3T3pzN096czdRVUZSUnp0SlFVTklMRmRCUTBVc1EwRkJRU3hSUVVGeFFpeEZRVU55UWl4MVFrRkJNRU1zUlVGRE1VTXNkVUpCUVRCRExFVkJRekZETEc5Q1FVRjFReXhGUVVOMlF5eHJRa0ZCY1VNc1JVRkJRVHRCUVVWeVF5eFJRVUZCTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1VVRkJVU3hEUVVGRE8wRkJSWHBDTEZGQlFVRXNTVUZCU1N4RFFVRkRMSFZDUVVGMVFpeEhRVUZITEhWQ1FVRjFRaXhEUVVGRE8wRkJRM1pFTEZGQlFVRXNTVUZCU1N4RFFVRkRMSFZDUVVGMVFpeEhRVUZITEhWQ1FVRjFRaXhEUVVGRE8wRkJRM1pFTEZGQlFVRXNTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeEhRVUZITEc5Q1FVRnZRaXhEUVVGRE8wRkJRMnBFTEZGQlFVRXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeEhRVUZITEd0Q1FVRnJRaXhEUVVGRE8wRkJSVGRETEZGQlFVRXNTVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6czdVVUZIYkVRc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzFGQlF5OURMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF6dFJRVU5vUkN4SlFVRkpMRU5CUVVNc01rSkJRVEpDTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03VVVGRE1VUXNTVUZCU1N4RFFVRkRMRFJDUVVFMFFpeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8xRkJSVE5FTEUxQlFVMHNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zWTBGQll5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUTNoRUxFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1kwRkJZeXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzBGQlJURkVMRkZCUVVFc1NVRkJTU3hQUVVGUExFVkJRVVU3V1VGRFdDeEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRaUVVNdlF5eHpRa0ZCYzBJc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlR5eEZRVUZGTEVsQlFVa3NRMEZCUXl3eVFrRkJNa0lzUTBGQlF5eERRVUZETzBGQlF6TkZMRk5CUVVFN1FVRkZSQ3hSUVVGQkxFbEJRVWtzVVVGQlVTeEZRVUZGTzFsQlExb3NTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03V1VGRGFrUXNjMEpCUVhOQ0xFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVOHNSVUZCUlN4SlFVRkpMRU5CUVVNc05FSkJRVFJDTEVOQlFVTXNRMEZCUXp0QlFVTTNSU3hUUVVGQk8wdEJRMFk3UVVGRlJEczdPenM3UVVGTFJ6dEpRVU5KTEdGQlFXRXNRMEZCUXl4SFFVRlhMRVZCUVVVc1MwRkJZU3hGUVVGQk8xRkJRemRETEUxQlFVMHNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zWTBGQll5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUTNoRUxFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1kwRkJZeXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzFGQlF6RkVMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRSUVVONlJTeE5RVUZOTEd0Q1FVRnJRaXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdPMEZCUlRORkxGRkJRVUVzU1VGQlNTeFBRVUZQTEVWQlFVVTdXVUZEV0N4SlFVRkpMRXRCUVVzc1IwRkJSeXhIUVVGSExFVkJRVVU3UVVGRFppeG5Ra0ZCUVN4UFFVRlBMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBGQlF6bEZMR0ZCUVVFN1FVRkJUU3hwUWtGQlFUdEJRVU5NTEdkQ1FVRkJMRTlCUVU4c1EwRkJReXhEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEJRVU14UlN4aFFVRkJPMWxCUlVRc1NVRkJTU3hIUVVGSExFZEJRVWNzUjBGQlJ5eEZRVUZGTzBGQlEySXNaMEpCUVVFc1QwRkJUeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTXZSU3hoUVVGQk8wRkJRVTBzYVVKQlFVRTdRVUZEVEN4blFrRkJRU3hQUVVGUExFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZETjBVc1lVRkJRVHRCUVVWRUxGbEJRVUVzVFVGQlRTeERRVUZETEZsQlFWa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVNM1FpeFpRVUZCTEVsQlFVa3NRMEZCUXl4elFrRkJjMElzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXpzN096dFpRVXR3UXl4cFFrRkJhMElzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZGZEVZc1dVRkJRU3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl3eVFrRkJNa0lzUTBGQlF5eERRVUZET3pzN1FVRkpPVU1zV1VGQlFTeFBRVUZQTEVOQlFVTXNWVUZCVlR0QlFVTm1MR2xDUVVGQkxFbEJRVWtzUTBGQlF5eHBRa0ZCYTBJc1EwRkJReXhWUVVGVkxFTkJRVU03YVVKQlEyNURMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU03UVVGRGFFSXNhVUpCUVVFc1YwRkJWeXhEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXp0QlFVTTFRaXhwUWtGQlFTeFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTTdRVUZEY0VNc1UwRkJRVHM3UVVGSFJDeFJRVUZCTEVsQlFVa3NVVUZCVVN4RlFVRkZPMWxCUTFvc1NVRkJTU3hMUVVGTExFZEJRVWNzUjBGQlJ5eEZRVUZGTzBGQlEyWXNaMEpCUVVFc1QwRkJUeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTTVSU3hoUVVGQk8wRkJRVTBzYVVKQlFVRTdRVUZEVEN4blFrRkJRU3hQUVVGUExFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdRVUZETVVVc1lVRkJRVHRaUVVWRUxFbEJRVWtzUjBGQlJ5eEhRVUZITEVkQlFVY3NSVUZCUlR0QlFVTmlMR2RDUVVGQkxFOUJRVThzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRMMFVzWVVGQlFUdEJRVUZOTEdsQ1FVRkJPMEZCUTB3c1owSkJRVUVzVDBGQlR5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUXpkRkxHRkJRVUU3UVVGRlJDeFpRVUZCTEUxQlFVMHNRMEZCUXl4WlFVRlpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRE4wSXNXVUZCUVN4SlFVRkpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN096czdXVUZMY0VNc2EwSkJRVzFDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUlhaR0xGbEJRVUVzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc05FSkJRVFJDTEVOQlFVTXNRMEZCUXpzN08wRkJTUzlETEZsQlFVRXNVVUZCVVN4RFFVRkRMRlZCUVZVN1FVRkRhRUlzYVVKQlFVRXNTVUZCU1N4RFFVRkRMR3RDUVVGdFFpeERRVUZETEZWQlFWVXNRMEZCUXp0cFFrRkRjRU1zVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhwUWtGQlFTeFhRVUZYTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8wRkJRelZDTEdsQ1FVRkJMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1EwRkJRenRCUVVOeVF5eFRRVUZCTzB0QlEwWTdRVUZGUkRzN1FVRkZSenRCUVVOSkxFbEJRVUVzVFVGQlRTeERRVUZETEV0QlFXdENMRVZCUVVFN1FVRkRPVUlzVVVGQlFTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRzlGUVVGdlJTeERRVUZETEVOQlFVTTdVVUZGYmtZc1RVRkJUU3hIUVVGSExFZEJRVWNzUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRWRCUVVjc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU01UXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJSV2hFTEZGQlFVRXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhIUVVGSExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdTMEZEYUVNN1FVRkZSRHM3T3p0QlFVbEhPMEZCUTBzc1NVRkJRU3h6UWtGQmMwSXNRMEZCUXl4TlFVRjNRaXhGUVVGQk8xRkJRM0pFTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4bFFVRmxMRU5CUVVNc1IwRkJSeXhKUVVGSkxFVkJRVVU3UVVGRE5VUXNXVUZCUVN4UFFVRlBMRTFCUVUwc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU14UWl4VFFVRkJPMEZCUlVRc1VVRkJRU3hOUVVGTkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc2FVSkJRV2xDTEVOQlFVTXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1FVRkRiRVlzVVVGQlFTeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4blFrRkJaMElzUlVGQlJTeHBRa0ZCYVVJc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEJRVVUzUlN4UlFVRkJMRTlCUVU4c1RVRkJUU3hEUVVGRExGbEJRVmtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0TFFVTnlRenM3UVVFNVRVUTdPMEZCUlVjN1FVRkRiMElzYjBKQlFVa3NRMEZCUVN4SlFVRkJMRWRCUVVjc1RVRkJUVHM3UVVOb1FuUkRPenM3UVVGSFJ6dE5RVU5WTERCQ1FVRXdRaXhEUVVGQk8wRkJaME55UXpzN096czdPenM3UVVGUlJ6dEpRVU5JTEZkQlEwVXNRMEZCUVN4WFFVRnBReXhGUVVOcVF5eDFRa0ZCTUVNc1JVRkRNVU1zZFVKQlFUQkRMRVZCUXpGRExHOUNRVUYxUXl4RlFVTjJReXhyUWtGQmNVTXNSVUZCUVR0QlFVVnlReXhSUVVGQkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NWMEZCVnl4RFFVRkRPMEZCUlM5Q0xGRkJRVUVzU1VGQlNTeERRVUZETEhWQ1FVRjFRaXhIUVVGSExIVkNRVUYxUWl4RFFVRkRPMEZCUTNaRUxGRkJRVUVzU1VGQlNTeERRVUZETEhWQ1FVRjFRaXhIUVVGSExIVkNRVUYxUWl4RFFVRkRPMEZCUTNaRUxGRkJRVUVzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhIUVVGSExHOUNRVUZ2UWl4RFFVRkRPMEZCUTJwRUxGRkJRVUVzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhIUVVGSExHdENRVUZyUWl4RFFVRkRPMHRCUXpsRE8wRkJSVVE3T3pzN08wRkJTMGM3U1VGRFNTeGhRVUZoTEVOQlFVTXNSMEZCVnl4RlFVRkZMRXRCUVdFc1JVRkJRVHRSUVVNM1F5eEpRVUZKTEV0QlFVc3NSMEZCUnl4SFFVRkhMRVZCUVVVN1dVRkRaaXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNRMEZCUXl4VlFVRlZMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRE0wTXNXVUZCUVN4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGRkJRVkVzUTBGQlF5eFJRVUZSTEVWQlFVVXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE1VVXNVMEZCUVR0QlFVRk5MR0ZCUVVFN1dVRkRUQ3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNRMEZCUXl4UlFVRlJMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRGVrTXNXVUZCUVN4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGRkJRVkVzUTBGQlF5eFZRVUZWTEVWQlFVVXNTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRemRGTEZOQlFVRTdVVUZGUkN4SlFVRkpMRWRCUVVjc1IwRkJSeXhIUVVGSExFVkJRVVU3V1VGRFlpeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRkZCUVZFc1EwRkJReXhWUVVGVkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZETTBNc1dVRkJRU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNRMEZCUXl4WFFVRlhMRVZCUVVVc1NVRkJTU3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYUVZc1UwRkJRVHRCUVVGTkxHRkJRVUU3V1VGRFRDeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRkZCUVZFc1EwRkJReXhYUVVGWExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZETlVNc1dVRkJRU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNRMEZCUXl4VlFVRlZMRVZCUVVVc1NVRkJTU3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6bEZMRk5CUVVFN1MwRkRSanRCUVVWRU96dEJRVVZITzBGQlEwa3NTVUZCUVN4TlFVRk5MRU5CUVVNc1MwRkJhMElzUlVGQlFUdEJRVU01UWl4UlFVRkJMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zYjBWQlFXOUZMRU5CUVVNc1EwRkJRenRSUVVWdVJpeE5RVUZOTEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFOUJRVThzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpsRExFMUJRVTBzUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZGYUVRc1VVRkJRU3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVkQlFVY3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOb1F6czdRVUY2UmtRN08wRkJSVWM3UVVGRGIwSXNNRUpCUVVrc1EwRkJRU3hKUVVGQkxFZEJRVWNzV1VGQldUczdUVU5ZTDBJc2FVSkJRV2xDTEVOQlFVRTdRVUZaTlVJN096czdPMEZCUzBjN1NVRkRTQ3hYUVVGdFFpeERRVUZCTEdGQlFYRkNMRVZCUVVVc1YwRkJiVUlzUlVGQlFUdEJRVU16UkN4UlFVRkJMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzWVVGQllTeERRVUZETzBGQlEyNURMRkZCUVVFc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eFhRVUZYTEVOQlFVTTdTMEZEYUVNN1FVRkZSRHM3TzBGQlIwYzdRVUZEU1N4SlFVRkJMRWRCUVVjc1EwRkJReXhIUVVGWExFVkJRVUU3UVVGRGNFSXNVVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzVVVGQlVTeERRVUZETEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03UzBGRE9VUTdRVUZEUmpzN1FVTnNRa1E3TzBGQlJVYzdRVUZEU0N4TlFVRk5TaXgzUWtGQmMwSXNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUlVGQlJTeFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlRWRU96czdRVUZIUnp0QlFVTklMRTFCUVUwc2RVSkJRWFZDTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUlhKRE96dEJRVVZITzAxQlExVXNjVUpCUVhGQ0xFTkJRVUU3UVVGVmFFTXNTVUZCUVN4SlFVRlhMRWxCUVVrc1IwRkJRVHM3UVVGRllpeFJRVUZCTEU5QlFVOHNkVUpCUVhWQ0xFTkJRVU03UzBGRGFFTTdTVUZGUkN4WFFVRnRRaXhEUVVGQkxFMUJRV3RDTEVWQlFVVXNUMEZCYzBNc1JVRkJRVHRCUVVNelJTeFJRVUZCTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJSWEpDTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1QwRkJUeXhMUVVGQkxFbEJRVUVzU1VGQlVDeFBRVUZQTEV0QlFWQXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzVDBGQlR5eERRVUZGTEZWQlFWVXNRMEZCUXp0TFFVTjJRenRCUVVWWkxFbEJRVUVzVTBGQlV5eERRVUZETEVsQlFWVXNSVUZCUVRzN1FVRkRMMElzV1VGQlFTeE5RVUZOTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGZEJRWE5ETEVOQlFVTTdPenRaUVVsNlJTeEpRVUZKTEZkQlFWY3NTMEZCU3l4SlFVRkpMRVZCUVVVN1owSkJRM2hDTEU5QlFVODdRVUZEVWl4aFFVRkJPMmxDUVVGTkxFbEJRVWtzVjBGQlZ5eExRVUZMTEZOQlFWTXNSVUZCUlR0QlFVTndReXhuUWtGQlFTeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMR2RIUVVGblJ5eERRVUZETEVOQlFVTTdRVUZEYmtnc1lVRkJRVHRCUVVWRUxGbEJRVUVzVFVGQlRTeHZRa0ZCYjBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEc5Q1FVRjNSQ3hEUVVGRE8xbEJSWEJITEVsQlFVa3NiMEpCUVc5Q0xFdEJRVXNzU1VGQlNTeEZRVUZGTzJkQ1FVTnFReXhQUVVGUE8wRkJRMUlzWVVGQlFUdHBRa0ZCVFN4SlFVRkpMRzlDUVVGdlFpeExRVUZMTEZOQlFWTXNSVUZCUlR0QlFVTTNReXhuUWtGQlFTeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVTmlMREpIUVVFeVJ5eERRVU0xUnl4RFFVRkRPMEZCUTBnc1lVRkJRVHRCUVVWRUxGbEJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4VFFVRlRMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NSVUZCUlN4WFFVRlhMRVZCUVVVc2IwSkJRVzlDTEVOQlFVTXNRMEZCUXp0VFFVTjJSaXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVUZCTzBGQlJVUTdPenM3T3p0QlFVMUhPMEZCUTFjc1NVRkJRU3hQUVVGUExFTkJRMjVDTEVsQlFWVXNSVUZEVml4UlFVRTBRaXhGUVVNMVFpeFhRVUYzUXl4RlFVRkJPenRCUVVWNFF5eFpRVUZCTEVsQlFVa3NVVUZCVVN4SlFVRkpMRWxCUVVrc1NVRkJTU3hYUVVGWExFbEJRVWtzU1VGQlNTeEZRVUZGTzBGQlF6TkRMR2RDUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETzBGQlEySXNZVUZCUVR0QlFVVkVMRmxCUVVFc1RVRkJUU3hSUVVGUkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hSUVVGUkxFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTTdRVUZEYmtVc1dVRkJRU3hKUVVGSkxGRkJRVkVzUlVGQlJUdEJRVU5hTEdkQ1FVRkJMRTlCUVU4c1VVRkJVU3hEUVVGRE8wRkJRMnBDTEdGQlFVRTdRVUZGUkN4WlFVRkJMRTFCUVUwc1VVRkJVU3hIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1VVRkJVU3hGUVVGRkxGZEJRVmNzUTBGQlF5eERRVUZETzBGQlEyNUZMRmxCUVVFc1NVRkJTU3hSUVVGUkxFVkJRVVU3UVVGRFdpeG5Ra0ZCUVN4UFFVRlBMRkZCUVZFc1EwRkJRenRCUVVOcVFpeGhRVUZCTzBGQlJVUXNXVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJRenRUUVVOaUxFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlFVRTdRVUZGWVN4SlFVRkJMRk5CUVZNc1EwRkRja0lzU1VGQlZTeEZRVU5XTEZGQlFYRkNMRVZCUTNKQ0xGZEJRV2xETEVWQlFVRTdPenRCUVVWcVF5eFpRVUZCTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQmQwSXNRMEZCUXpzN1FVRkhiRVFzV1VGQlFTeE5RVUZOTEZOQlFWTXNSMEZCUnl4RFFVRkJMRU5CUVVFc1JVRkJRU3hIUVVGQkxFbEJRVWtzUTBGQlF5eGpRVUZqTEUxQlFVVXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVFc1QwRkJUeXhEUVVGRExGVkJRVlVzUTBGQlF5eE5RVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTJ4RkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVWQlFVVTdRVUZEWkN4blFrRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5pTEdGQlFVRTdXVUZGUkN4TlFVRk5MRk5CUVZNc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZKTEVOQlFVTXNWVUZCVlN4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGSExGVkJRVlVzUTBGQmIwTXNRMEZCUXp0WlFVTnVSaXhKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTzBGQlEyUXNaMEpCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFlpeGhRVUZCTzBGQlJVUXNXVUZCUVN4TlFVRk5MRmRCUVZjc1IwRkJSeXhUUVVGVExFTkJRVU1zVjBGQlZ5eERRVUZETzBGQlF6RkRMRmxCUVVFc1NVRkJTU3hEUVVGRFFTeDNRa0ZCYzBJc1EwRkJReXhIUVVGSExFTkJRVU1zVjBGQlZ5eERRVUZETEVWQlFVVTdRVUZETlVNc1owSkJRVUVzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4M1JFRkJkMFFzVjBGQlZ5eERRVUZCTEVOQlFVRXNRMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRja1lzWjBKQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRZaXhoUVVGQk8wRkJSVVFzV1VGQlFTeE5RVUZOTEZsQlFWa3NSMEZCUnl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJRM1JETEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVN1FVRkRha0lzWjBKQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRZaXhoUVVGQk8wRkJSVVFzV1VGQlFTeE5RVUZOTEd0Q1FVRnJRaXhIUVVGSExGbEJRVmtzUTBGQlF5eEpRVUZKTEV0QlFVc3NXVUZCV1N4SFFVRkhMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRk0wVXNXVUZCUVN4TlFVRk5MRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1dVRkJXU3hEUVVGRExIVkNRVUYxUWl4RlFVRkZMR3RDUVVGclFpeERRVUZETEVOQlFVTTdRVUZETDBZc1dVRkJRU3hOUVVGTkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zV1VGQldTeERRVUZETEhWQ1FVRjFRaXhGUVVGRkxHdENRVUZyUWl4RFFVRkRMRU5CUVVNN1FVRkRMMFlzV1VGQlFTeE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNXVUZCV1N4RFFVRkRMRzlDUVVGdlFpeEZRVUZGTEd0Q1FVRnJRaXhEUVVGRExFTkJRVU03UVVGRE5VWXNXVUZCUVN4TlFVRk5MRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1dVRkJXU3hEUVVGRExHdENRVUZyUWl4RlFVRkZMR3RDUVVGclFpeERRVUZETEVOQlFVTTdRVUZGTVVZc1dVRkJRU3hKUVVGSkxFOUJRVThzUTBGQlF6dEJRVVZhTEZsQlFVRXNTVUZCU1N4WlFVRlpMRU5CUVVNc1NVRkJTU3hMUVVGTExGbEJRVmtzUlVGQlJUdEJRVU4wUXl4blFrRkJRU3hQUVVGUExFZEJRVWNzU1VGQlNTd3dRa0ZCTUVJc1EwRkJReXhYUVVGWExFVkJRVVVzUzBGQlN5eEZRVUZGTEV0QlFVc3NSVUZCUlN4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRGJrWXNZVUZCUVR0QlFVRk5MR2xDUVVGQk8wRkJRMHdzWjBKQlFVRXNUMEZCVHl4SFFVRkhMRWxCUVVrc2IwSkJRVzlDTEVOQlFVTXNVVUZCVVN4RlFVRkZMRXRCUVVzc1JVRkJSU3hMUVVGTExFVkJRVVVzUzBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUXpGRkxHRkJRVUU3V1VGRlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExGRkJRVkVzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVVnlSQ3haUVVGQkxFMUJRVTBzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlFTeEZRVUZCTEVkQlFVRXNXVUZCV1N4RFFVRkRMR3RDUVVGclFpeE5RVUZKTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZCTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlJYcEdMRmxCUVVFc1QwRkJUeXhOUVVGTkxFTkJRVU03TzBGQlEyWXNTMEZCUVR0SlFVVlBMR2xDUVVGcFFpeERRVU4yUWl4alFVRnpSQ3hGUVVOMFJDeHJRa0ZCTUVJc1JVRkJRVHM3UVVGRk1VSXNVVUZCUVN4SlFVRkpMR0ZCUVdFc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeGpRVUZqTEV0QlFXUXNTVUZCUVN4SlFVRkJMR05CUVdNc1MwRkJaQ3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4alFVRmpMRU5CUVVVc1lVRkJZU3hOUVVGSkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGQkxFbEJRVWtzUTBGQlF6dEJRVU14UkN4UlFVRkJMRTFCUVUwc1YwRkJWeXhIUVVGSExFTkJRVUVzUlVGQlFTeEhRVUZCTEdOQlFXTXNTMEZCWkN4SlFVRkJMRWxCUVVFc1kwRkJZeXhMUVVGa0xFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMR05CUVdNc1EwRkJSU3hYUVVGWExFMUJRVWtzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFZEJRVUVzYTBKQlFXdENMRU5CUVVNN096czdVVUZMZEVVc1NVRkJTU3hoUVVGaExFZEJRVWNzZFVKQlFYVkNMRVZCUVVVN1FVRkRNME1zV1VGQlFTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVTldMSEZIUVVGeFJ5eERRVU4wUnl4RFFVRkRPMWxCUTBZc1lVRkJZU3hIUVVGSExIVkNRVUYxUWl4RFFVRkRPMEZCUTNwRExGTkJRVUU3UVVGRlJDeFJRVUZCTEU5QlFVOHNTVUZCU1N4cFFrRkJhVUlzUTBGQlF5eGhRVUZoTEVWQlFVVXNWMEZCVnl4RFFVRkRMRU5CUVVNN1MwRkRNVVE3UVVGRllTeEpRVUZCTEZOQlFWTXNRMEZEY2tJc1NVRkJWU3hGUVVOV0xGRkJRWEZDTEVWQlEzSkNMRmRCUVdsRExFVkJRVUU3T3p0QlFVVnFReXhaUVVGQkxFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJkMElzUTBGQlF6czdXVUZIYkVRc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlJTeEhRVUUwUWl4RFFVRkRPMWxCUXpkRUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZEV0N4blFrRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5pTEdGQlFVRTdRVUZGUkN4WlFVRkJMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJRenRaUVVNM1F5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVU3UVVGRGRFSXNaMEpCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFlpeGhRVUZCTzBGQlJVUXNXVUZCUVN4TlFVRk5MR3RDUVVGclFpeEhRVUZITEdsQ1FVRnBRaXhEUVVGRExHTkJRV01zUzBGQlN5eFpRVUZaTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVVeFJpeFpRVUZCTEUxQlFVMHNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eHhRa0ZCY1VJc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXl4RFFVRkRPMEZCUTI1SExGbEJRVUVzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEdsQ1FVRnBRaXhEUVVGRExIRkNRVUZ4UWl4RlFVRkZMR3RDUVVGclFpeERRVUZETEVOQlFVTTdRVUZEYmtjc1dVRkJRU3hOUVVGTkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zYVVKQlFXbENMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dEJRVU5vUnl4WlFVRkJMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4blFrRkJaMElzUlVGQlJTeHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8wRkJSVGxHTEZsQlFVRXNTVUZCU1N4UFFVRlBMRU5CUVVNN1FVRkZXaXhaUVVGQkxFbEJRVWtzYVVKQlFXbENMRU5CUVVNc1kwRkJZeXhMUVVGTExGbEJRVmtzUlVGQlJUdEJRVU55UkN4blFrRkJRU3hQUVVGUExFZEJRVWNzU1VGQlNTd3dRa0ZCTUVJc1EwRkJReXhYUVVGWExFVkJRVVVzUzBGQlN5eEZRVUZGTEV0QlFVc3NSVUZCUlN4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRGJrWXNZVUZCUVR0QlFVRk5MR2xDUVVGQk8wRkJRMHdzWjBKQlFVRXNUMEZCVHl4SFFVRkhMRWxCUVVrc2IwSkJRVzlDTEVOQlFVTXNVVUZCVVN4RlFVRkZMRXRCUVVzc1JVRkJSU3hMUVVGTExFVkJRVVVzUzBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUXpGRkxHRkJRVUU3V1VGRlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExGRkJRVkVzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0WlFVVnlSQ3hKUVVGSkxHbENRVUZwUWl4RFFVRkRMSEZDUVVGeFFpeEZRVUZGTzBGQlF6TkRMR2RDUVVGQkxFMUJRVTBzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhIUVVGSExFTkJRek5DTEVOQlFVRXNSVUZCUVN4SFFVRkJMR2xDUVVGcFFpeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFTkJRVU1zVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUjBGQlNTeEhRVUZITEVWQlEyaEVMRTFCUVVFc2FVSkJRV2xDTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUTBGQlF5eE5RVUZKTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZCTEVsQlFVa3NSVUZEYWtRc1JVRkJSU3hEUVVGQkxFVkJRVUVzUjBGQlFTeHBRa0ZCYVVJc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4RFFVRkRMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVrc1IwRkJSeXhEUVVGRExFTkJRM0JFTEVOQlFVTTdRVUZEU0N4aFFVRkJPMEZCUVUwc2FVSkJRVUU3WjBKQlEwd3NUVUZCVFN4RFFVRkRMR3RDUVVGclFpeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzBGQlF5OURMR0ZCUVVFN08wRkJSMFFzV1VGQlFTeE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkZja01zU1VGQlNTeFBRVUZQTEZsQlFWa3NiMEpCUVc5Q0xFVkJRVVU3UVVGRE0wTXNaMEpCUVVFc1QwRkJUeXhEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlEzWkRMR0ZCUVVFN1FVRkZSQ3haUVVGQkxFOUJRVThzVFVGQlRTeERRVUZET3p0QlFVTm1MRXRCUVVFN1NVRkZUeXhyUWtGQmEwSXNRMEZEZUVJc1pVRkJkVVFzUlVGRGRrUXNhMEpCUVRCQ0xFVkJRVUU3TzFGQlJURkNMRTFCUVUwc1MwRkJTeXhIUVVGSExHVkJRV1VzUzBGQlFTeEpRVUZCTEVsQlFXWXNaVUZCWlN4TFFVRm1MRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEdWQlFXVXNRMEZCUlN4TFFVRkxMRU5CUVVNN1VVRkRja01zU1VGQlNTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExHMUNRVUZ0UWl4RlFVRkZPMEZCUTJwRUxGbEJRVUVzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4blJVRkJaMFVzUTBGQlF5eERRVUZETzBGQlEyaEdMRk5CUVVFN1FVRkZSQ3hSUVVGQkxFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVRXNSVUZCUVN4SFFVRkJMR1ZCUVdVc1MwRkJaaXhKUVVGQkxFbEJRVUVzWlVGQlpTeExRVUZtTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxHVkJRV1VzUTBGQlJTeE5RVUZOTEUxQlFVa3NTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVRXNTVUZCU1N4RFFVRkRPMEZCUXpkRExGRkJRVUVzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1pVRkJaU3hMUVVGbUxFbEJRVUVzU1VGQlFTeGxRVUZsTEV0QlFXWXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzWlVGQlpTeERRVUZGTEUxQlFVMHNUVUZCU1N4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNSMEZCUVN4clFrRkJhMElzUTBGQlF6czdPenRSUVVzM1JDeEpRVUZKTEUxQlFVMHNSMEZCUnl4MVFrRkJkVUlzUlVGQlJUdEJRVU53UXl4WlFVRkJMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zWjBkQlFXZEhMRU5CUVVNc1EwRkJRenRaUVVNdlJ5eE5RVUZOTEVkQlFVY3NkVUpCUVhWQ0xFTkJRVU03UVVGRGJFTXNVMEZCUVR0QlFVVkVMRkZCUVVFc1QwRkJUeXhKUVVGSkxHbENRVUZwUWl4RFFVRkRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dExRVU01UXp0SlFVVlBMR0ZCUVdFc1EwRkJReXhSUVVGeFFpeEZRVUZGTEU5QlFYbENMRVZCUVVFN1VVRkRjRVVzVFVGQlRTeE5RVUZOTEVkQlFVY3NTVUZCU1N4VFFVRlRMRU5CUVVNc1VVRkJVU3hGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzFGQlJXaEVMRWxCUVVrc1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJUdEJRVU51UWl4WlFVRkJMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzWlVGQlpTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUXpORExGbEJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGRE5VSXNUVUZCVFN4RFFVRkRMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEZkQlFWY3NRMEZCUXp0QlFVTnNSQ3hUUVVGQk8wRkJSVVFzVVVGQlFTeFBRVUZQTEUxQlFVMHNRMEZCUXp0TFFVTm1PMEZCUTBZN08wRkRkRkZFTzBGQlJVRTdPMEZCUlVjN1FVRkRWU3hOUVVGQkxHbENRVUZwUWl4SFFVRkhPMEZCUXk5Q0xFbEJRVUVzU1VGQlNTeEZRVUZGTEUxQlFVMDdRVUZEV2l4SlFVRkJMRlZCUVZVc1JVRkJSU3haUVVGWk96czdRVU5RTVVJN08wRkJSVWM3UVVGRFlTeFRRVUZCTEZWQlFWVXNRMEZCUXl4SFFVRlhMRVZCUVVVc1NVRkJXU3hGUVVGQk96dEJRVVZzUkN4SlFVRkJMRWxCUVVrc1QwRkJUeXhIUVVGSExFdEJRVXNzVVVGQlVTeEpRVUZKTEVkQlFVY3NTMEZCU3l4RlFVRkZPMEZCUVVVc1VVRkJRU3hQUVVGUExFVkJRVVVzUTBGQlF6czdRVUZIY2tRc1NVRkJRU3hKUVVGSkxHVkJRV1VzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlR0UlFVTnFSQ3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4M1FrRkJkMElzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTnlSQ3hMUVVGQk96dEJRVWRFTEVsQlFVRXNTVUZCU1N4clFrRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRPMEZCUVVVc1VVRkJRU3hQUVVGUExFZEJRVWNzUTBGQlF6czdRVUZITjBNc1NVRkJRU3hKUVVGSkxHVkJRV1VzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRPMEZCUVVVc1VVRkJRU3hQUVVGUExFZEJRVWNzUTBGQlF6czdRVUZITVVNc1NVRkJRU3hKUVVGSkxGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRPMEZCUVVVc1VVRkJRU3hQUVVGUExFZEJRVWNzUTBGQlF6czdTVUZIZGtNc1QwRkJUeXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETzBGQlEzQkNPenRCUTFwQk96dEJRVVZITzBGQlEwZ3NUVUZCVFN4elFrRkJjMElzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlJUVkVPenRCUVVWSE8wMUJRMVVzYlVKQlFXMUNMRU5CUVVFN1FVRjFRamxDTEVsQlFVRXNTVUZCVnl4SlFVRkpMRWRCUVVFN08wRkJSV0lzVVVGQlFTeFBRVUZQTEhGQ1FVRnhRaXhEUVVGRE8wdEJRemxDTzBsQlJVUXNWMEZCYlVJc1EwRkJRU3hOUVVGclFpeEZRVUZGTEU5QlFXOURMRVZCUVVFN08wRkJRM3BGTEZGQlFVRXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU03UVVGRmNrSXNVVUZCUVN4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1QwRkJUeXhMUVVGQkxFbEJRVUVzU1VGQlVDeFBRVUZQTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVkFzVDBGQlR5eERRVUZGTEd0Q1FVRnJRaXhOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGSkxFbEJRVWtzUTBGQlF6dEJRVU01UkN4UlFVRkJMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3hQUVVGUExFdEJRVkFzU1VGQlFTeEpRVUZCTEU5QlFVOHNTMEZCVUN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeFBRVUZQTEVOQlFVVXNhVUpCUVdsQ0xFMUJRVUVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFZEJRVWtzUTBGQlF5d3JRa0ZCSzBJc1EwRkJReXhEUVVGRE8wRkJRM3BHTEZGQlFVRXNTVUZCU1N4RFFVRkRMRmxCUVZrc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeFBRVUZQTEV0QlFVRXNTVUZCUVN4SlFVRlFMRTlCUVU4c1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCVUN4UFFVRlBMRU5CUVVVc1dVRkJXU3hOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGSkxFbEJRVWtzUTBGQlF6dExRVU51UkR0QlFVVlpMRWxCUVVFc1UwRkJVeXhEUVVGRExFbEJRVlVzUlVGQlFUczdRVUZETDBJc1dVRkJRU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVMEZEYkVRc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGQlFUdEJRVVZoTEVsQlFVRXNUMEZCVHl4RFFVRkRMRWxCUVZVc1JVRkJRVHM3V1VGRE9VSXNUVUZCVFN4UlFVRlJMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUXpWRExFbEJRVWtzVVVGQlVTeEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTndRaXhuUWtGQlFTeFBRVUZQTEZGQlFWRXNRMEZCUXp0QlFVTnFRaXhoUVVGQk8xbEJSVVFzVFVGQlRTeFJRVUZSTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlF6VkRMRWxCUVVrc1VVRkJVU3hKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU53UWl4blFrRkJRU3hQUVVGUExGRkJRVkVzUTBGQlF6dEJRVU5xUWl4aFFVRkJPMEZCUlVRc1dVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dFRRVU5pTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUVVFN1FVRkZZU3hKUVVGQkxGTkJRVk1zUTBGQlF5eEpRVUZWTEVWQlFVRTdPenRCUVVOb1F5eFpRVUZCTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQmQwSXNRMEZCUXpzN1FVRkhiRVFzV1VGQlFTeE5RVUZOTEZOQlFWTXNSMEZCUnl4RFFVRkJMRU5CUVVFc1JVRkJRU3hIUVVGQkxFbEJRVWtzUTBGQlF5eGpRVUZqTEUxQlFVVXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVFc1QwRkJUeXhEUVVGRExGVkJRVlVzUTBGQlF5eE5RVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTJ4RkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVWQlFVVTdRVUZEWkN4blFrRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5pTEdGQlFVRTdXVUZGUkN4TlFVRk5MRk5CUVZNc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZKTEVOQlFVTXNWVUZCVlN4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGSExGVkJRVlVzUTBGQmIwTXNRMEZCUXp0WlFVTnVSaXhKUVVGSkxGTkJRVk1zU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZEY2tJc1owSkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTTdRVUZEWWl4aFFVRkJPMEZCUlVRc1dVRkJRU3hOUVVGTkxGZEJRVmNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNWMEZCVnl4RFFVRkRPMEZCUXpGRExGbEJRVUVzU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExFZEJRVWNzUTBGQlF5eFhRVUZYTEVOQlFVTXNSVUZCUlR0QlFVTTFReXhuUWtGQlFTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMSE5FUVVGelJDeFhRVUZYTEVOQlFVRXNRMEZCUVN4RFFVRkhMRU5CUVVNc1EwRkJRenRCUVVOdVJpeG5Ra0ZCUVN4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOaUxHRkJRVUU3UVVGRlJDeFpRVUZCTEUxQlFVMHNWVUZCVlN4SFFVRkhMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU03V1VGRGJFTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1JVRkJSVHRCUVVObUxHZENRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJJc1lVRkJRVHM3UVVGSFJDeFpRVUZCTEUxQlFVMHNWVUZCVlN4SFFVRkhMRlZCUVZVc1EwRkJReXhWUVVGVkxFTkJRVU03V1VGRGVrTXNUVUZCVFN4dlFrRkJiMElzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXp0QlFVTTNSQ3haUVVGQkxFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVTdRVUZEZWtNc1owSkJRVUVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4NVEwRkJlVU1zVlVGQlZTeERRVUZCTEdsQ1FVRkJMRU5CUVcxQ0xFTkJRVU1zUTBGQlF6dEJRVU42Uml4aFFVRkJPMWxCUlVRc1NVRkJTU3hqUVVGakxFZEJRV2xETEZOQlFWTXNRMEZCUXp0WlFVTTNSQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1NVRkJTU3hWUVVGVkxFTkJRVU1zWTBGQll5eEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTm9SU3huUWtGQlFTeGpRVUZqTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWxCUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1ZVRkJWU3hEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVa3NVMEZCVXl4RFFVRkRPMEZCUTNwR0xHRkJRVUU3V1VGRlJDeFBRVUZQTzBGQlEwd3NaMEpCUVVFc1YwRkJWeXhGUVVGRkxFZEJRVWM3WjBKQlEyaENMRWxCUVVrc1JVRkJSU3hWUVVGVkxFTkJRVU1zU1VGQlNUdG5Ra0ZEY2tJc1QwRkJUeXhGUVVGRkxGVkJRVlVzUTBGQlF5eFBRVUZQTzJkQ1FVTXpRaXhQUVVGUExFVkJRVVVzVlVGQlZTeERRVUZETEU5QlFVODdaMEpCUXpOQ0xHOUNRVUZ2UWl4RlFVRkZMRlZCUVZVc1EwRkJReXh2UWtGQmIwSTdaMEpCUTNKRUxHdENRVUZyUWl4RlFVRkZMRlZCUVZVc1EwRkJReXhyUWtGQmEwSTdaMEpCUTJwRUxGVkJRVlVzUlVGQlJTeFZRVUZWTEVOQlFVTXNWVUZCVlR0blFrRkRha01zYTBKQlFXdENMRVZCUVVVc1ZVRkJWU3hEUVVGRExHdENRVUZyUWp0blFrRkRha1FzWTBGQll6dG5Ra0ZEWkN4VlFVRlZMRVZCUVVVc1ZVRkJWU3hEUVVGRExGVkJRVlU3WjBKQlEycERMR2RDUVVGblFpeEZRVUZGTEZWQlFWVXNRMEZCUXl4blFrRkJaMEk3WjBKQlF6ZERMRFJDUVVFMFFpeEZRVUZGTEZWQlFWVXNRMEZCUXl3MFFrRkJORUk3WjBKQlEzSkZMREpDUVVFeVFpeEZRVUZGTEZWQlFWVXNRMEZCUXl3eVFrRkJNa0k3WjBKQlEyNUZMR1ZCUVdVc1JVRkJSU3hWUVVGVkxFTkJRVU1zWlVGQlpUdG5Ra0ZETTBNc09FSkJRVGhDTEVWQlFVVXNWVUZCVlN4RFFVRkRMRGhDUVVFNFFqdG5Ra0ZEZWtVc01FSkJRVEJDTEVWQlFVVXNWVUZCVlN4RFFVRkRMREJDUVVFd1FqdG5Ra0ZEYWtVc1kwRkJZeXhGUVVGRkxGVkJRVlVzUTBGQlF5eGpRVUZqTzJkQ1FVTjZReXh0UWtGQmJVSXNSVUZCUlN4VlFVRlZMRU5CUVVNc2JVSkJRVzFDTzJkQ1FVTnVSQ3haUVVGWkxFVkJRVVVzVlVGQlZTeERRVUZETEZsQlFWazdaMEpCUTNKRExHVkJRV1VzUlVGQlJTeFZRVUZWTEVOQlFVTXNaVUZCWlR0aFFVTTFReXhEUVVGRE96dEJRVU5JTEV0QlFVRTdRVUZGWVN4SlFVRkJMRk5CUVZNc1EwRkJReXhKUVVGVkxFVkJRVUU3T3p0QlFVTm9ReXhaUVVGQkxFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJkMElzUTBGQlF6czdXVUZIYkVRc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlJTeEhRVUUwUWl4RFFVRkRPMWxCUXpkRUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZEV0N4blFrRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5pTEdGQlFVRTdRVUZGUkN4WlFVRkJMRTFCUVUwc1ZVRkJWU3hIUVVGSExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTTdXVUZETDBJc1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJUdEJRVU5tTEdkQ1FVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMklzWVVGQlFUczdRVUZIUkN4WlFVRkJMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTzBGQlEzUkNMR2RDUVVGQkxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNPRVZCUVRoRkxFTkJRVU1zUTBGQlF6dEJRVU5xUnl4aFFVRkJPenRCUVVkRUxGbEJRVUVzU1VGQlNTeFBRVUY1UXl4RFFVRkRPMEZCUXpsRExGbEJRVUVzU1VGQlNTeEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFbEJRVWtzVlVGQlZTeERRVUZETEU5QlFVOHNTVUZCU1N4SlFVRkpMRWxCUVVrc1ZVRkJWU3hEUVVGRExFOUJRVThzUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlR0QlFVTjBSaXhuUWtGQlFTeFBRVUZQTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eFRRVUZUTEVWQlFVVXNWVUZCVlN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRekZGTEdGQlFVRTdXVUZGUkN4UFFVRlBPMEZCUTB3c1owSkJRVUVzVjBGQlZ5eEZRVUZGTEVkQlFVYzdaMEpCUTJoQ0xHVkJRV1VzUlVGQlJTeFZRVUZWTEVOQlFVTXNaVUZCWlR0blFrRkRNME1zVFVGQlRTeEZRVUZGTEZWQlFWVXNRMEZCUXl4TlFVRk5PMmRDUVVONlFpeHZRa0ZCYjBJc1JVRkJSU3hWUVVGVkxFTkJRVU1zYjBKQlFXOUNPMmRDUVVOeVJDeHJRa0ZCYTBJc1JVRkJSU3hWUVVGVkxFTkJRVU1zYTBKQlFXdENPMmRDUVVOcVJDeFhRVUZYTEVWQlFVVXNWVUZCVlN4RFFVRkRMRmRCUVZjN1owSkJRMjVETEdWQlFXVXNSVUZCUlN4VlFVRlZMRU5CUVVNc1pVRkJaVHRuUWtGRE0wTXNhMEpCUVd0Q0xFVkJRVVVzVlVGQlZTeERRVUZETEd0Q1FVRnJRanRuUWtGRGFrUXNVMEZCVXl4RlFVRkZMRlZCUVZVc1EwRkJReXhUUVVGVE8yZENRVU12UWl4blFrRkJaMElzUlVGQlJTeFZRVUZWTEVOQlFVTXNaMEpCUVdkQ08wRkJRemRETEdkQ1FVRkJMRTlCUVU4c1JVRkJSU3hQUVVGUExFdEJRVUVzU1VGQlFTeEpRVUZRTEU5QlFVOHNTMEZCVUN4TFFVRkJMRU5CUVVFc1IwRkJRU3hQUVVGUExFZEJRVWtzVTBGQlV6dG5Ra0ZETjBJc1MwRkJTeXhGUVVGRkxGVkJRVlVzUTBGQlF5eExRVUZMTzJkQ1FVTjJRaXhQUVVGUExFVkJRVVVzVlVGQlZTeERRVUZETEU5QlFVODdaMEpCUXpOQ0xHbENRVUZwUWl4RlFVRkZMRlZCUVZVc1EwRkJReXhwUWtGQmFVSTdZVUZEYUVRc1EwRkJRenM3UVVGRFNDeExRVUZCTzBGQlJXRXNTVUZCUVN4cFFrRkJhVUlzUTBGQlF5eExRVUZoTEVWQlFVRTdPenRCUVVNelF5eFpRVUZCTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQmQwSXNRMEZCUXp0WlFVVnNSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMRU5CUVVNc1RVRkJUU3hOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRPMWxCUlhCRExFbEJRVWtzVFVGQlRTeEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTnNRaXhuUWtGQlFTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVTldMRGhEUVVFNFF5eExRVUZMTEVOQlFVRXNiMFJCUVVFc1EwRkJjMFFzUTBGRE1VY3NRMEZCUXp0QlFVTkdMR2RDUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETzBGQlEySXNZVUZCUVRzN08wRkJTMFFzV1VGQlFTeEpRVUZKTEZOQlFWTXNSMEZCZFVJc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF6czdRVUZITDBNc1dVRkJRU3hKUVVGSkxFMUJRVTBzUTBGQlF5eFZRVUZWTEVsQlFVa3NTVUZCU1N4RlFVRkZPMEZCUXpkQ0xHZENRVUZCTEUxQlFVMHNWVUZCVlN4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNXVUZCV1N4RlFVRkZMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dEJRVU53Uml4blFrRkJRU3hOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJReTlFTEdkQ1FVRkJMRk5CUVZNc1IwRkJSeXhIUVVGSExFTkJRVU1zWlVGQlpTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUTNaRExHRkJRVUU3V1VGRlJDeEpRVUZKTEZOQlFWTXNTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRja0lzWjBKQlFVRXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkRWaXc0UTBGQk9FTXNTMEZCU3l4RFFVRkJMRFpFUVVGQkxFTkJRU3RFTEVOQlEyNUlMRU5CUVVNN1FVRkRSaXhuUWtGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmlMR0ZCUVVFN1FVRkZSQ3haUVVGQkxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRE8xbEJRM1pETEU5QlFVOHNUVUZCVFN4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRExGVkJRVlVzUTBGQlF5eFRRVUZUTEVWQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVdNc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhMUVVGTExFdEJRVWs3UVVGRGRFY3NaMEpCUVVFc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTnlRaXhuUWtGQlFTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMSFZFUVVGMVJDeERRVUZETEVOQlFVTTdRVUZEZEVVc1owSkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTTdRVUZEWkN4aFFVRkRMRU5CUVVNc1EwRkJRenM3UVVGRFNpeExRVUZCTzBGQlEwWTdPMEZETDAxRU96czdRVUZIUnp0TlFVTlZMRTlCUVU4c1EwRkJRVHRCUVhORGJFSTdPenM3UVVGSlJ6dEJRVU5JTEVsQlFVRXNWMEZCUVN4RFFVRnRRaXhOUVVGNVFpeEZRVUZCTzBGQlF6RkRMRkZCUVVFc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRPMEZCUXpGQ0xGRkJRVUVzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRE8wRkJRM2hDTEZGQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETzBGQlEyaERMRkZCUVVFc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4SFFVRkhMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNRMEZCUXp0QlFVTnNSQ3hSUVVGQkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJRenRCUVVOMFF5eFJRVUZCTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dExRVU0zUWp0QlFVVkVPenM3T3pzN1FVRk5SenRCUVVOSkxFbEJRVUVzVFVGQlRTeERRVUZETEV0QlFXRXNSVUZCUVR0QlFVTjZRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1VVRkZka0lzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTJZc1dVRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVNelFpeFRRVUZCTzFGQlJVUXNTVUZCU1N4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVTdRVUZETVVJc1dVRkJRU3hKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03UVVGRGFrTXNVMEZCUVR0TFFVTkdPMEZCUTBZN08wMURka1ZaTEcxQ1FVRnRRaXhEUVVGQk8wRkJRemxDTEVsQlFVRXNTVUZCVnl4SlFVRkpMRWRCUVVFN08wRkJSV0lzVVVGQlFTeFBRVUZQTEZWQlFWVXNRMEZCUXp0TFFVTnVRanRKUVZWRUxGZEJRVzFDTEVOQlFVRXNUVUZCYTBJc1JVRkJSU3hQUVVGdlF5eEZRVUZCT3p0QlFVTjZSU3hSUVVGQkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRPMUZCUlhKQ0xFMUJRVTBzVlVGQlZTeEhRVUZITEU5QlFVOHNTMEZCUVN4SlFVRkJMRWxCUVZBc1QwRkJUeXhMUVVGUUxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRTlCUVU4c1EwRkJSU3hWUVVGVkxFTkJRVU03VVVGRGRrTXNUVUZCVFN4dlFrRkJiMElzUjBGQlJ5eFBRVUZQTEV0QlFVRXNTVUZCUVN4SlFVRlFMRTlCUVU4c1MwRkJVQ3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4UFFVRlBMRU5CUVVVc2IwSkJRVzlDTEVOQlFVTTdRVUZGTTBRc1VVRkJRU3hKUVVGSkxFTkJRVU1zWjBKQlFXZENMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzVDBGQlR5eGhRVUZRTEU5QlFVOHNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlVDeFBRVUZQTEVOQlFVVXNaMEpCUVdkQ0xFMUJRVWtzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFZEJRVUVzU1VGQlNTeDVRa0ZCZVVJc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU16Uml4UlFVRkJMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3hQUVVGUExHRkJRVkFzVDBGQlR5eExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGUUxFOUJRVThzUTBGQlJTeHBRa0ZCYVVJc1RVRkJTU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxEQkNRVUV3UWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRemxHTEZGQlFVRXNTVUZCU1N4RFFVRkRMR05CUVdNN1FVRkRha0lzV1VGQlFTeERRVUZCTEVWQlFVRXNSMEZCUVN4UFFVRlBMRXRCUVZBc1NVRkJRU3hKUVVGQkxFOUJRVThzZFVKQlFWQXNUMEZCVHl4RFFVRkZMR05CUVdNc1RVRkJTU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxIVkNRVUYxUWl4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxGVkJRVlVzUlVGQlJTeHZRa0ZCYjBJc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGRrY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeFBRVUZQTEV0QlFWQXNTVUZCUVN4SlFVRkJMRTlCUVU4c2RVSkJRVkFzVDBGQlR5eERRVUZGTEZsQlFWa3NUVUZCU1N4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMSEZDUVVGeFFpeERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRlZCUVZVc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGREwwWXNVVUZCUVN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFTkJRVUVzUlVGQlFTeEhRVUZCTEU5QlFVOHNZVUZCVUN4UFFVRlBMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFWQXNUMEZCVHl4RFFVRkZMRlZCUVZVc1RVRkJTU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxHMUNRVUZ0UWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wdEJRekZGTzBGQlJWa3NTVUZCUVN4VFFVRlRMRU5CUVVNc1NVRkJWU3hGUVVGQk96dFpRVU12UWl4TlFVRk5MRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUTNSRExFMUJRVTBzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRE1VTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRelZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZEZUVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlJUZERMRmxCUVVFc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4UFFVRjVRaXhEUVVGRE8wRkJRM0pFTEZsQlFVRXNUVUZCVFN4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eFhRVUZwUXl4RFFVRkRPenM3V1VGSmFrVXNTVUZCU1N4SlFVRkpMRWxCUVVrc1VVRkJVU3hGUVVGRk8wRkJRM0JDTEdkQ1FVRkJMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzVDBGQlR5eERRVUZETzI5Q1FVTXhRaXhMUVVGTExFVkJRVVVzU1VGQlNTeERRVUZETEV0QlFVczdRVUZEYWtJc2IwSkJRVUVzYVVKQlFXbENMRVZCUVVVc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eHZRa0ZCYjBJN1FVRkRja1FzYjBKQlFVRXNWMEZCVnl4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zWTBGQll6dHZRa0ZEZWtNc1VVRkJVVHRCUVVOU0xHOUNRVUZCTEUxQlFVMHNSVUZCUlN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGTkJRVk03YjBKQlF5OUNMRWxCUVVrN1FVRkRUQ3hwUWtGQlFTeERRVUZETEVOQlFVTTdRVUZGU0N4blFrRkJRU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNSMEZCUnl4UFFVRlBMRU5CUVVNN1FVRkRha01zWVVGQlFUdFRRVU5HTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUVVFN1FVRkRSanM3T3pzaWZRPT1cbiIsImltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IFZSTUNvcmUgfSBmcm9tICdAcGl4aXYvdGhyZWUtdnJtLWNvcmUnO1xuaW1wb3J0IHsgVlJNTm9kZUNvbnN0cmFpbnRNYW5hZ2VyIH0gZnJvbSAnQHBpeGl2L3RocmVlLXZybS1ub2RlLWNvbnN0cmFpbnQnO1xuaW1wb3J0IHsgVlJNU3ByaW5nQm9uZU1hbmFnZXIgfSBmcm9tICdAcGl4aXYvdGhyZWUtdnJtLXNwcmluZ2JvbmUnO1xuaW1wb3J0IHsgVlJNUGFyYW1ldGVycyB9IGZyb20gJy4vVlJNUGFyYW1ldGVycyc7XG5cbi8qKlxuICogQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgYSBzaW5nbGUgVlJNIG1vZGVsLlxuICovXG5leHBvcnQgY2xhc3MgVlJNIGV4dGVuZHMgVlJNQ29yZSB7XG4gIC8qKlxuICAgKiBDb250YWlucyBtYXRlcmlhbHMgb2YgdGhlIFZSTS5cbiAgICogYHVwZGF0ZWAgbWV0aG9kIG9mIHRoZXNlIG1hdGVyaWFscyB3aWxsIGJlIGNhbGxlZCB2aWEgaXRzIHtAbGluayBWUk0udXBkYXRlfSBtZXRob2QuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWF0ZXJpYWxzPzogVEhSRUUuTWF0ZXJpYWxbXTtcblxuICAvKipcbiAgICogQSB7QGxpbmsgVlJNU3ByaW5nQm9uZU1hbmFnZXJ9IG1hbmlwdWxhdGVzIGFsbCBzcHJpbmcgYm9uZXMgYXR0YWNoZWQgb24gdGhlIFZSTS5cbiAgICogVXN1YWxseSB5b3UgZG9uJ3QgaGF2ZSB0byBjYXJlIGFib3V0IHRoaXMgcHJvcGVydHkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3ByaW5nQm9uZU1hbmFnZXI/OiBWUk1TcHJpbmdCb25lTWFuYWdlcjtcblxuICAvKipcbiAgICogQSB7QGxpbmsgVlJNTm9kZUNvbnN0cmFpbnRNYW5hZ2VyfSBtYW5pcHVsYXRlcyBhbGwgY29uc3RyYWludHMgYXR0YWNoZWQgb24gdGhlIFZSTS5cbiAgICogVXN1YWxseSB5b3UgZG9uJ3QgaGF2ZSB0byBjYXJlIGFib3V0IHRoaXMgcHJvcGVydHkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbm9kZUNvbnN0cmFpbnRNYW5hZ2VyPzogVlJNTm9kZUNvbnN0cmFpbnRNYW5hZ2VyO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgVlJNIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIFtbVlJNUGFyYW1ldGVyc11dIHRoYXQgcmVwcmVzZW50cyBjb21wb25lbnRzIG9mIHRoZSBWUk1cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFZSTVBhcmFtZXRlcnMpIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuXG4gICAgdGhpcy5tYXRlcmlhbHMgPSBwYXJhbXMubWF0ZXJpYWxzO1xuICAgIHRoaXMuc3ByaW5nQm9uZU1hbmFnZXIgPSBwYXJhbXMuc3ByaW5nQm9uZU1hbmFnZXI7XG4gICAgdGhpcy5ub2RlQ29uc3RyYWludE1hbmFnZXIgPSBwYXJhbXMubm9kZUNvbnN0cmFpbnRNYW5hZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAqICoqWW91IG5lZWQgdG8gY2FsbCB0aGlzIG9uIHlvdXIgdXBkYXRlIGxvb3AuKipcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB1cGRhdGVzIGV2ZXJ5IFZSTSBjb21wb25lbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gZGVsdGEgZGVsdGFUaW1lXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlKGRlbHRhOiBudW1iZXIpOiB2b2lkIHtcbiAgICBzdXBlci51cGRhdGUoZGVsdGEpO1xuXG4gICAgaWYgKHRoaXMubm9kZUNvbnN0cmFpbnRNYW5hZ2VyKSB7XG4gICAgICB0aGlzLm5vZGVDb25zdHJhaW50TWFuYWdlci51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zcHJpbmdCb25lTWFuYWdlcikge1xuICAgICAgdGhpcy5zcHJpbmdCb25lTWFuYWdlci51cGRhdGUoZGVsdGEpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1hdGVyaWFscykge1xuICAgICAgdGhpcy5tYXRlcmlhbHMuZm9yRWFjaCgobWF0ZXJpYWw6IGFueSkgPT4ge1xuICAgICAgICBpZiAobWF0ZXJpYWwudXBkYXRlKSB7XG4gICAgICAgICAgbWF0ZXJpYWwudXBkYXRlKGRlbHRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMucHVzaChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy5wdXNoKF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcbiIsIi8qIVxuICogQHBpeGl2L3RocmVlLXZybS1tYXRlcmlhbHMtbXRvb24gdjIuMC42XG4gKiBNVG9vbiAodG9vbiBtYXRlcmlhbCkgbW9kdWxlIGZvciBAcGl4aXYvdGhyZWUtdnJtXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjMgcGl4aXYgSW5jLlxuICogQHBpeGl2L3RocmVlLXZybS1tYXRlcmlhbHMtbXRvb24gaXMgZGlzdHJpYnV0ZWQgdW5kZXIgTUlUIExpY2Vuc2VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9waXhpdi90aHJlZS12cm0vYmxvYi9yZWxlYXNlL0xJQ0VOU0VcbiAqL1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuXHJcbmZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cblxudmFyIHZlcnRleFNoYWRlciA9IFwiLy8gI2RlZmluZSBQSE9OR1xcblxcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xcblxcbiNpZm5kZWYgRkxBVF9TSEFERURcXG4gIHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xcbiNlbmRpZlxcblxcbiNpbmNsdWRlIDxjb21tb24+XFxuXFxuLy8gI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxcbiNpZmRlZiBNVE9PTl9VU0VfVVZcXG4gIHZhcnlpbmcgdmVjMiB2VXY7XFxuXFxuICAvLyBDT01QQVQ6IHByZS1yMTUxIHVzZXMgYSBjb21tb24gdXZUcmFuc2Zvcm1cXG4gICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPCAxNTFcXG4gICAgdW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xcbiAgI2VuZGlmXFxuI2VuZGlmXFxuXFxuLy8gI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cXG4vLyBDT01BUFQ6IHByZS1yMTUxIHVzZXMgdXYyIGZvciBsaWdodE1hcCBhbmQgYW9NYXBcXG4jaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OIDwgMTUxXFxuICAjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcXG4gICAgYXR0cmlidXRlIHZlYzIgdXYyO1xcbiAgICB2YXJ5aW5nIHZlYzIgdlV2MjtcXG4gICAgdW5pZm9ybSBtYXQzIHV2MlRyYW5zZm9ybTtcXG4gICNlbmRpZlxcbiNlbmRpZlxcblxcbi8vICNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XFxuLy8gI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD5cXG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XFxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cXG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XFxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxcbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XFxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxcbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XFxuXFxuI2lmZGVmIFVTRV9PVVRMSU5FV0lEVEhNVUxUSVBMWVRFWFRVUkVcXG4gIHVuaWZvcm0gc2FtcGxlcjJEIG91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZTtcXG4gIHVuaWZvcm0gbWF0MyBvdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmVVdlRyYW5zZm9ybTtcXG4jZW5kaWZcXG5cXG51bmlmb3JtIGZsb2F0IG91dGxpbmVXaWR0aEZhY3RvcjtcXG5cXG52b2lkIG1haW4oKSB7XFxuXFxuICAvLyAjaW5jbHVkZSA8dXZfdmVydGV4PlxcbiAgI2lmZGVmIE1UT09OX1VTRV9VVlxcbiAgICAvLyBDT01QQVQ6IHByZS1yMTUxIHVzZXMgYSBjb21tb24gdXZUcmFuc2Zvcm1cXG4gICAgI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxNTFcXG4gICAgICB2VXYgPSB1djtcXG4gICAgI2Vsc2VcXG4gICAgICB2VXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xcbiAgICAjZW5kaWZcXG4gICNlbmRpZlxcblxcbiAgLy8gI2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XFxuICAvLyBDT01BUFQ6IHByZS1yMTUxIHVzZXMgdXYyIGZvciBsaWdodE1hcCBhbmQgYW9NYXBcXG4gICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPCAxNTFcXG4gICAgI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXFxuICAgICAgdlV2MiA9ICggdXYyVHJhbnNmb3JtICogdmVjMyggdXYyLCAxICkgKS54eTtcXG4gICAgI2VuZGlmXFxuICAjZW5kaWZcXG5cXG4gICNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XFxuXFxuICAjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxcbiAgI2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cXG4gICNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XFxuICAjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XFxuXFxuICAvLyB3ZSBuZWVkIHRoaXMgdG8gY29tcHV0ZSB0aGUgb3V0bGluZSBwcm9wZXJseVxcbiAgb2JqZWN0Tm9ybWFsID0gbm9ybWFsaXplKCBvYmplY3ROb3JtYWwgKTtcXG5cXG4gICNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cXG5cXG4gICNpZm5kZWYgRkxBVF9TSEFERUQgLy8gTm9ybWFsIGNvbXB1dGVkIHdpdGggZGVyaXZhdGl2ZXMgd2hlbiBGTEFUX1NIQURFRFxcbiAgICB2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xcbiAgI2VuZGlmXFxuXFxuICAjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxcblxcbiAgI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cXG4gICNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XFxuICAvLyAjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cXG4gICNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cXG4gICNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XFxuICAjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cXG5cXG4gIHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xcblxcbiAgZmxvYXQgb3V0bGluZVRleCA9IDEuMDtcXG5cXG4gICNpZmRlZiBPVVRMSU5FXFxuICAgICNpZmRlZiBVU0VfT1VUTElORVdJRFRITVVMVElQTFlURVhUVVJFXFxuICAgICAgdmVjMiBvdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmVVdiA9ICggb3V0bGluZVdpZHRoTXVsdGlwbHlUZXh0dXJlVXZUcmFuc2Zvcm0gKiB2ZWMzKCB2VXYsIDEgKSApLnh5O1xcbiAgICAgIG91dGxpbmVUZXggPSB0ZXh0dXJlMkQoIG91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZSwgb3V0bGluZVdpZHRoTXVsdGlwbHlUZXh0dXJlVXYgKS5nO1xcbiAgICAjZW5kaWZcXG5cXG4gICAgI2lmZGVmIE9VVExJTkVfV0lEVEhfV09STERcXG4gICAgICBmbG9hdCB3b3JsZE5vcm1hbExlbmd0aCA9IGxlbmd0aCggdHJhbnNmb3JtZWROb3JtYWwgKTtcXG4gICAgICB2ZWMzIG91dGxpbmVPZmZzZXQgPSBvdXRsaW5lV2lkdGhGYWN0b3IgKiBvdXRsaW5lVGV4ICogd29ybGROb3JtYWxMZW5ndGggKiBvYmplY3ROb3JtYWw7XFxuICAgICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNCggb3V0bGluZU9mZnNldCArIHRyYW5zZm9ybWVkLCAxLjAgKTtcXG4gICAgI2VuZGlmXFxuXFxuICAgICNpZmRlZiBPVVRMSU5FX1dJRFRIX1NDUkVFTlxcbiAgICAgIHZlYzMgY2xpcE5vcm1hbCA9ICggcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIG9iamVjdE5vcm1hbCwgMC4wICkgKS54eXo7XFxuICAgICAgdmVjMiBwcm9qZWN0ZWROb3JtYWwgPSBub3JtYWxpemUoIGNsaXBOb3JtYWwueHkgKTtcXG4gICAgICBwcm9qZWN0ZWROb3JtYWwueCAqPSBwcm9qZWN0aW9uTWF0cml4WyAwIF0ueCAvIHByb2plY3Rpb25NYXRyaXhbIDEgXS55O1xcbiAgICAgIGdsX1Bvc2l0aW9uLnh5ICs9IDIuMCAqIG91dGxpbmVXaWR0aEZhY3RvciAqIG91dGxpbmVUZXggKiBwcm9qZWN0ZWROb3JtYWwueHk7XFxuICAgICNlbmRpZlxcblxcbiAgICBnbF9Qb3NpdGlvbi56ICs9IDFFLTYgKiBnbF9Qb3NpdGlvbi53OyAvLyBhbnRpLWFydGlmYWN0IG1hZ2ljXFxuICAjZW5kaWZcXG5cXG4gICNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XFxuICAvLyAjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD5cXG4gICNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxcbiAgI2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XFxuXFxufVwiO1xuXG52YXIgZnJhZ21lbnRTaGFkZXIgPSBcIi8vICNkZWZpbmUgUEhPTkdcXG5cXG51bmlmb3JtIHZlYzMgbGl0RmFjdG9yO1xcblxcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcXG5cXG51bmlmb3JtIHZlYzMgc2hhZGVDb2xvckZhY3RvcjtcXG4jaWZkZWYgVVNFX1NIQURFTVVMVElQTFlURVhUVVJFXFxuICB1bmlmb3JtIHNhbXBsZXIyRCBzaGFkZU11bHRpcGx5VGV4dHVyZTtcXG4gIHVuaWZvcm0gbWF0MyBzaGFkZU11bHRpcGx5VGV4dHVyZVV2VHJhbnNmb3JtO1xcbiNlbmRpZlxcblxcbnVuaWZvcm0gZmxvYXQgc2hhZGluZ1NoaWZ0RmFjdG9yO1xcbnVuaWZvcm0gZmxvYXQgc2hhZGluZ1Rvb255RmFjdG9yO1xcblxcbiNpZmRlZiBVU0VfU0hBRElOR1NISUZUVEVYVFVSRVxcbiAgdW5pZm9ybSBzYW1wbGVyMkQgc2hhZGluZ1NoaWZ0VGV4dHVyZTtcXG4gIHVuaWZvcm0gbWF0MyBzaGFkaW5nU2hpZnRUZXh0dXJlVXZUcmFuc2Zvcm07XFxuICB1bmlmb3JtIGZsb2F0IHNoYWRpbmdTaGlmdFRleHR1cmVTY2FsZTtcXG4jZW5kaWZcXG5cXG51bmlmb3JtIGZsb2F0IGdpRXF1YWxpemF0aW9uRmFjdG9yO1xcblxcbnVuaWZvcm0gdmVjMyBwYXJhbWV0cmljUmltQ29sb3JGYWN0b3I7XFxuI2lmZGVmIFVTRV9SSU1NVUxUSVBMWVRFWFRVUkVcXG4gIHVuaWZvcm0gc2FtcGxlcjJEIHJpbU11bHRpcGx5VGV4dHVyZTtcXG4gIHVuaWZvcm0gbWF0MyByaW1NdWx0aXBseVRleHR1cmVVdlRyYW5zZm9ybTtcXG4jZW5kaWZcXG51bmlmb3JtIGZsb2F0IHJpbUxpZ2h0aW5nTWl4RmFjdG9yO1xcbnVuaWZvcm0gZmxvYXQgcGFyYW1ldHJpY1JpbUZyZXNuZWxQb3dlckZhY3RvcjtcXG51bmlmb3JtIGZsb2F0IHBhcmFtZXRyaWNSaW1MaWZ0RmFjdG9yO1xcblxcbiNpZmRlZiBVU0VfTUFUQ0FQVEVYVFVSRVxcbiAgdW5pZm9ybSB2ZWMzIG1hdGNhcEZhY3RvcjtcXG4gIHVuaWZvcm0gc2FtcGxlcjJEIG1hdGNhcFRleHR1cmU7XFxuICB1bmlmb3JtIG1hdDMgbWF0Y2FwVGV4dHVyZVV2VHJhbnNmb3JtO1xcbiNlbmRpZlxcblxcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcXG51bmlmb3JtIGZsb2F0IGVtaXNzaXZlSW50ZW5zaXR5O1xcblxcbnVuaWZvcm0gdmVjMyBvdXRsaW5lQ29sb3JGYWN0b3I7XFxudW5pZm9ybSBmbG9hdCBvdXRsaW5lTGlnaHRpbmdNaXhGYWN0b3I7XFxuXFxuI2lmZGVmIFVTRV9VVkFOSU1BVElPTk1BU0tURVhUVVJFXFxuICB1bmlmb3JtIHNhbXBsZXIyRCB1dkFuaW1hdGlvbk1hc2tUZXh0dXJlO1xcbiAgdW5pZm9ybSBtYXQzIHV2QW5pbWF0aW9uTWFza1RleHR1cmVVdlRyYW5zZm9ybTtcXG4jZW5kaWZcXG5cXG51bmlmb3JtIGZsb2F0IHV2QW5pbWF0aW9uU2Nyb2xsWE9mZnNldDtcXG51bmlmb3JtIGZsb2F0IHV2QW5pbWF0aW9uU2Nyb2xsWU9mZnNldDtcXG51bmlmb3JtIGZsb2F0IHV2QW5pbWF0aW9uUm90YXRpb25QaGFzZTtcXG5cXG4jaW5jbHVkZSA8Y29tbW9uPlxcbiNpbmNsdWRlIDxwYWNraW5nPlxcbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cXG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cXG5cXG4vLyAjaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cXG4jaWYgKCBkZWZpbmVkKCBNVE9PTl9VU0VfVVYgKSAmJiAhZGVmaW5lZCggTVRPT05fVVZTX1ZFUlRFWF9PTkxZICkgKVxcbiAgdmFyeWluZyB2ZWMyIHZVdjtcXG4jZW5kaWZcXG5cXG4vLyAjaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XFxuLy8gQ09NQVBUOiBwcmUtcjE1MSB1c2VzIHV2MiBmb3IgbGlnaHRNYXAgYW5kIGFvTWFwXFxuI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA8IDE1MVxcbiAgI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXFxuICAgIHZhcnlpbmcgdmVjMiB2VXYyO1xcbiAgI2VuZGlmXFxuI2VuZGlmXFxuXFxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxcblxcbiNpZmRlZiBVU0VfTUFQXFxuICB1bmlmb3JtIG1hdDMgbWFwVXZUcmFuc2Zvcm07XFxuI2VuZGlmXFxuXFxuLy8gI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XFxuXFxuI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxMzJcXG4gICNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD5cXG4jZW5kaWZcXG5cXG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cXG4vLyAjaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cXG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cXG5cXG4jaWZkZWYgVVNFX0VNSVNTSVZFTUFQXFxuICB1bmlmb3JtIG1hdDMgZW1pc3NpdmVNYXBVdlRyYW5zZm9ybTtcXG4jZW5kaWZcXG5cXG4vLyAjaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50Plxcbi8vICNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD5cXG4vLyAjaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxcbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cXG5cXG4vLyAjaW5jbHVkZSA8YnNkZnM+XFxuLy8gQ09NUEFUOiBwcmUtcjE1MSBkb2Vzbid0IGhhdmUgQlJERl9MYW1iZXJ0IGluIDxjb21tb24+XFxuI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA8IDE1MVxcbiAgdmVjMyBCUkRGX0xhbWJlcnQoIGNvbnN0IGluIHZlYzMgZGlmZnVzZUNvbG9yICkge1xcbiAgICByZXR1cm4gUkVDSVBST0NBTF9QSSAqIGRpZmZ1c2VDb2xvcjtcXG4gIH1cXG4jZW5kaWZcXG5cXG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XFxuXFxuI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxMzJcXG4gICNpbmNsdWRlIDxub3JtYWxfcGFyc19mcmFnbWVudD5cXG4jZW5kaWZcXG5cXG4vLyAjaW5jbHVkZSA8bGlnaHRzX3Bob25nX3BhcnNfZnJhZ21lbnQ+XFxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XFxuXFxuI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA8IDEzMlxcbiAgI2lmbmRlZiBGTEFUX1NIQURFRFxcbiAgICB2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcXG4gICNlbmRpZlxcbiNlbmRpZlxcblxcbnN0cnVjdCBNVG9vbk1hdGVyaWFsIHtcXG4gIHZlYzMgZGlmZnVzZUNvbG9yO1xcbiAgdmVjMyBzaGFkZUNvbG9yO1xcbiAgZmxvYXQgc2hhZGluZ1NoaWZ0O1xcbn07XFxuXFxuZmxvYXQgbGluZWFyc3RlcCggZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgdCApIHtcXG4gIHJldHVybiBjbGFtcCggKCB0IC0gYSApIC8gKCBiIC0gYSApLCAwLjAsIDEuMCApO1xcbn1cXG5cXG4vKipcXG4gKiBDb252ZXJ0IE5kb3RMIGludG8gdG9vbiBzaGFkaW5nIGZhY3RvciB1c2luZyBzaGFkaW5nU2hpZnQgYW5kIHNoYWRpbmdUb29ueVxcbiAqL1xcbmZsb2F0IGdldFNoYWRpbmcoXFxuICBjb25zdCBpbiBmbG9hdCBkb3ROTCxcXG4gIGNvbnN0IGluIGZsb2F0IHNoYWRvdyxcXG4gIGNvbnN0IGluIGZsb2F0IHNoYWRpbmdTaGlmdFxcbikge1xcbiAgZmxvYXQgc2hhZGluZyA9IGRvdE5MO1xcbiAgc2hhZGluZyA9IHNoYWRpbmcgKyBzaGFkaW5nU2hpZnQ7XFxuICBzaGFkaW5nID0gbGluZWFyc3RlcCggLTEuMCArIHNoYWRpbmdUb29ueUZhY3RvciwgMS4wIC0gc2hhZGluZ1Rvb255RmFjdG9yLCBzaGFkaW5nICk7XFxuICBzaGFkaW5nICo9IHNoYWRvdztcXG4gIHJldHVybiBzaGFkaW5nO1xcbn1cXG5cXG4vKipcXG4gKiBNaXggZGlmZnVzZUNvbG9yIGFuZCBzaGFkZUNvbG9yIHVzaW5nIHNoYWRpbmcgZmFjdG9yIGFuZCBsaWdodCBjb2xvclxcbiAqL1xcbnZlYzMgZ2V0RGlmZnVzZShcXG4gIGNvbnN0IGluIE1Ub29uTWF0ZXJpYWwgbWF0ZXJpYWwsXFxuICBjb25zdCBpbiBmbG9hdCBzaGFkaW5nLFxcbiAgaW4gdmVjMyBsaWdodENvbG9yXFxuKSB7XFxuICAjaWZkZWYgREVCVUdfTElUU0hBREVSQVRFXFxuICAgIHJldHVybiB2ZWMzKCBCUkRGX0xhbWJlcnQoIHNoYWRpbmcgKiBsaWdodENvbG9yICkgKTtcXG4gICNlbmRpZlxcblxcbiAgI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA8IDEzMlxcbiAgICAjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcXG4gICAgICBsaWdodENvbG9yICo9IFBJO1xcbiAgICAjZW5kaWZcXG4gICNlbmRpZlxcblxcbiAgdmVjMyBjb2wgPSBsaWdodENvbG9yICogQlJERl9MYW1iZXJ0KCBtaXgoIG1hdGVyaWFsLnNoYWRlQ29sb3IsIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciwgc2hhZGluZyApICk7XFxuXFxuICAvLyBUaGUgXFxcImNvbW1lbnQgb3V0IGlmIHlvdSB3YW50IHRvIFBCUiBhYnNvbHV0ZWx5XFxcIiBsaW5lXFxuICAjaWZkZWYgVjBfQ09NUEFUX1NIQURFXFxuICAgIGNvbCA9IG1pbiggY29sLCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcXG4gICNlbmRpZlxcblxcbiAgcmV0dXJuIGNvbDtcXG59XFxuXFxuI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxNTdcXG4gIHZvaWQgUkVfRGlyZWN0X01Ub29uKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiB2ZWMzIGdlb21ldHJ5UG9zaXRpb24sIGNvbnN0IGluIHZlYzMgZ2VvbWV0cnlOb3JtYWwsIGNvbnN0IGluIHZlYzMgZ2VvbWV0cnlWaWV3RGlyLCBjb25zdCBpbiB2ZWMzIGdlb21ldHJ5Q2xlYXJjb2F0Tm9ybWFsLCBjb25zdCBpbiBNVG9vbk1hdGVyaWFsIG1hdGVyaWFsLCBjb25zdCBpbiBmbG9hdCBzaGFkb3csIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xcbiAgICBmbG9hdCBkb3ROTCA9IGNsYW1wKCBkb3QoIGdlb21ldHJ5Tm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSwgLTEuMCwgMS4wICk7XFxuICAgIHZlYzMgaXJyYWRpYW5jZSA9IGRpcmVjdExpZ2h0LmNvbG9yO1xcblxcbiAgICAjaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OIDwgMTMyXFxuICAgICAgI2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXFxuICAgICAgICBpcnJhZGlhbmNlICo9IFBJO1xcbiAgICAgICNlbmRpZlxcbiAgICAjZW5kaWZcXG5cXG4gICAgLy8gZGlyZWN0U3BlY3VsYXIgd2lsbCBiZSB1c2VkIGZvciByaW0gbGlnaHRpbmcsIG5vdCBhbiBhY3R1YWwgc3BlY3VsYXJcXG4gICAgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gaXJyYWRpYW5jZTtcXG5cXG4gICAgaXJyYWRpYW5jZSAqPSBkb3ROTDtcXG5cXG4gICAgZmxvYXQgc2hhZGluZyA9IGdldFNoYWRpbmcoIGRvdE5MLCBzaGFkb3csIG1hdGVyaWFsLnNoYWRpbmdTaGlmdCApO1xcblxcbiAgICAvLyB0b29uIHNoYWRlZCBkaWZmdXNlXFxuICAgIHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gZ2V0RGlmZnVzZSggbWF0ZXJpYWwsIHNoYWRpbmcsIGRpcmVjdExpZ2h0LmNvbG9yICk7XFxuICB9XFxuXFxuICB2b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9NVG9vbiggY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiB2ZWMzIGdlb21ldHJ5UG9zaXRpb24sIGNvbnN0IGluIHZlYzMgZ2VvbWV0cnlOb3JtYWwsIGNvbnN0IGluIHZlYzMgZ2VvbWV0cnlWaWV3RGlyLCBjb25zdCBpbiB2ZWMzIGdlb21ldHJ5Q2xlYXJjb2F0Tm9ybWFsLCBjb25zdCBpbiBNVG9vbk1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcXG4gICAgLy8gaW5kaXJlY3QgZGlmZnVzZSB3aWxsIHVzZSBkaWZmdXNlQ29sb3IsIG5vIHNoYWRlQ29sb3IgaW52b2x2ZWRcXG4gICAgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xcblxcbiAgICAvLyBkaXJlY3RTcGVjdWxhciB3aWxsIGJlIHVzZWQgZm9yIHJpbSBsaWdodGluZywgbm90IGFuIGFjdHVhbCBzcGVjdWxhclxcbiAgICByZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBpcnJhZGlhbmNlO1xcbiAgfVxcbiNlbHNlXFxuICB2b2lkIFJFX0RpcmVjdF9NVG9vbiggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gTVRvb25NYXRlcmlhbCBtYXRlcmlhbCwgY29uc3QgaW4gZmxvYXQgc2hhZG93LCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcXG4gICAgZmxvYXQgZG90TkwgPSBjbGFtcCggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApLCAtMS4wLCAxLjAgKTtcXG4gICAgdmVjMyBpcnJhZGlhbmNlID0gZGlyZWN0TGlnaHQuY29sb3I7XFxuXFxuICAgICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPCAxMzJcXG4gICAgICAjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcXG4gICAgICAgIGlycmFkaWFuY2UgKj0gUEk7XFxuICAgICAgI2VuZGlmXFxuICAgICNlbmRpZlxcblxcbiAgICAvLyBkaXJlY3RTcGVjdWxhciB3aWxsIGJlIHVzZWQgZm9yIHJpbSBsaWdodGluZywgbm90IGFuIGFjdHVhbCBzcGVjdWxhclxcbiAgICByZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBpcnJhZGlhbmNlO1xcblxcbiAgICBpcnJhZGlhbmNlICo9IGRvdE5MO1xcblxcbiAgICBmbG9hdCBzaGFkaW5nID0gZ2V0U2hhZGluZyggZG90TkwsIHNoYWRvdywgbWF0ZXJpYWwuc2hhZGluZ1NoaWZ0ICk7XFxuXFxuICAgIC8vIHRvb24gc2hhZGVkIGRpZmZ1c2VcXG4gICAgcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSBnZXREaWZmdXNlKCBtYXRlcmlhbCwgc2hhZGluZywgZGlyZWN0TGlnaHQuY29sb3IgKTtcXG4gIH1cXG5cXG4gIHZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX01Ub29uKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIE1Ub29uTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xcbiAgICAvLyBpbmRpcmVjdCBkaWZmdXNlIHdpbGwgdXNlIGRpZmZ1c2VDb2xvciwgbm8gc2hhZGVDb2xvciBpbnZvbHZlZFxcbiAgICByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XFxuXFxuICAgIC8vIGRpcmVjdFNwZWN1bGFyIHdpbGwgYmUgdXNlZCBmb3IgcmltIGxpZ2h0aW5nLCBub3QgYW4gYWN0dWFsIHNwZWN1bGFyXFxuICAgIHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGlycmFkaWFuY2U7XFxuICB9XFxuI2VuZGlmXFxuXFxuI2RlZmluZSBSRV9EaXJlY3QgUkVfRGlyZWN0X01Ub29uXFxuI2RlZmluZSBSRV9JbmRpcmVjdERpZmZ1c2UgUkVfSW5kaXJlY3REaWZmdXNlX01Ub29uXFxuI2RlZmluZSBNYXRlcmlhbF9MaWdodFByb2JlTE9EKCBtYXRlcmlhbCApICgwKVxcblxcbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cXG4vLyAjaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50Plxcblxcbi8vICNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cXG4jaWZkZWYgVVNFX05PUk1BTE1BUFxcblxcbiAgdW5pZm9ybSBzYW1wbGVyMkQgbm9ybWFsTWFwO1xcbiAgdW5pZm9ybSBtYXQzIG5vcm1hbE1hcFV2VHJhbnNmb3JtO1xcbiAgdW5pZm9ybSB2ZWMyIG5vcm1hbFNjYWxlO1xcblxcbiNlbmRpZlxcblxcbi8vIENPTVBBVDogVVNFX05PUk1BTE1BUF9PQkpFQ1RTUEFDRSB1c2VkIHRvIGJlIE9CSkVDVFNQQUNFX05PUk1BTE1BUCBpbiBwcmUtcjE1MVxcbiNpZiBkZWZpbmVkKCBVU0VfTk9STUFMTUFQX09CSkVDVFNQQUNFICkgfHwgZGVmaW5lZCggT0JKRUNUU1BBQ0VfTk9STUFMTUFQIClcXG5cXG4gIHVuaWZvcm0gbWF0MyBub3JtYWxNYXRyaXg7XFxuXFxuI2VuZGlmXFxuXFxuLy8gQ09NUEFUOiBVU0VfTk9STUFMTUFQX1RBTkdFTlRTUEFDRSB1c2VkIHRvIGJlIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgaW4gcHJlLXIxNTFcXG4jaWYgISBkZWZpbmVkICggVVNFX1RBTkdFTlQgKSAmJiAoIGRlZmluZWQgKCBVU0VfTk9STUFMTUFQX1RBTkdFTlRTUEFDRSApIHx8IGRlZmluZWQgKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkgKVxcblxcbiAgLy8gUGVyLVBpeGVsIFRhbmdlbnQgU3BhY2UgTm9ybWFsIE1hcHBpbmdcXG4gIC8vIGh0dHA6Ly9oYWNrc29mbGlmZS5ibG9nc3BvdC5jaC8yMDA5LzExL3Blci1waXhlbC10YW5nZW50LXNwYWNlLW5vcm1hbC1tYXBwaW5nLmh0bWxcXG5cXG4gIC8vIHRocmVlLXZybSBzcGVjaWZpYyBjaGFuZ2U6IGl0IHJlcXVpcmVzIGB1dmAgYXMgYW4gaW5wdXQgaW4gb3JkZXIgdG8gc3VwcG9ydCB1diBzY3JvbGxzXFxuXFxuICAvLyBUZW1wb3JhcnkgY29tcGF0IGFnYWluc3Qgc2hhZGVyIGNoYW5nZSBAIFRocmVlLmpzIHIxMjYsIHIxNTFcXG4gICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTUxXFxuXFxuICAgIG1hdDMgZ2V0VGFuZ2VudEZyYW1lKCB2ZWMzIGV5ZV9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMyIHV2ICkge1xcblxcbiAgICAgIHZlYzMgcTAgPSBkRmR4KCBleWVfcG9zLnh5eiApO1xcbiAgICAgIHZlYzMgcTEgPSBkRmR5KCBleWVfcG9zLnh5eiApO1xcbiAgICAgIHZlYzIgc3QwID0gZEZkeCggdXYuc3QgKTtcXG4gICAgICB2ZWMyIHN0MSA9IGRGZHkoIHV2LnN0ICk7XFxuXFxuICAgICAgdmVjMyBOID0gc3VyZl9ub3JtO1xcblxcbiAgICAgIHZlYzMgcTFwZXJwID0gY3Jvc3MoIHExLCBOICk7XFxuICAgICAgdmVjMyBxMHBlcnAgPSBjcm9zcyggTiwgcTAgKTtcXG5cXG4gICAgICB2ZWMzIFQgPSBxMXBlcnAgKiBzdDAueCArIHEwcGVycCAqIHN0MS54O1xcbiAgICAgIHZlYzMgQiA9IHExcGVycCAqIHN0MC55ICsgcTBwZXJwICogc3QxLnk7XFxuXFxuICAgICAgZmxvYXQgZGV0ID0gbWF4KCBkb3QoIFQsIFQgKSwgZG90KCBCLCBCICkgKTtcXG4gICAgICBmbG9hdCBzY2FsZSA9ICggZGV0ID09IDAuMCApID8gMC4wIDogaW52ZXJzZXNxcnQoIGRldCApO1xcblxcbiAgICAgIHJldHVybiBtYXQzKCBUICogc2NhbGUsIEIgKiBzY2FsZSwgTiApO1xcblxcbiAgICB9XFxuXFxuICAjZWxpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTI2XFxuXFxuICAgIHZlYzMgcGVydHVyYk5vcm1hbDJBcmIoIHZlYzIgdXYsIHZlYzMgZXllX3BvcywgdmVjMyBzdXJmX25vcm0sIHZlYzMgbWFwTiwgZmxvYXQgZmFjZURpcmVjdGlvbiApIHtcXG5cXG4gICAgICB2ZWMzIHEwID0gdmVjMyggZEZkeCggZXllX3Bvcy54ICksIGRGZHgoIGV5ZV9wb3MueSApLCBkRmR4KCBleWVfcG9zLnogKSApO1xcbiAgICAgIHZlYzMgcTEgPSB2ZWMzKCBkRmR5KCBleWVfcG9zLnggKSwgZEZkeSggZXllX3Bvcy55ICksIGRGZHkoIGV5ZV9wb3MueiApICk7XFxuICAgICAgdmVjMiBzdDAgPSBkRmR4KCB1di5zdCApO1xcbiAgICAgIHZlYzIgc3QxID0gZEZkeSggdXYuc3QgKTtcXG5cXG4gICAgICB2ZWMzIE4gPSBub3JtYWxpemUoIHN1cmZfbm9ybSApO1xcblxcbiAgICAgIHZlYzMgcTFwZXJwID0gY3Jvc3MoIHExLCBOICk7XFxuICAgICAgdmVjMyBxMHBlcnAgPSBjcm9zcyggTiwgcTAgKTtcXG5cXG4gICAgICB2ZWMzIFQgPSBxMXBlcnAgKiBzdDAueCArIHEwcGVycCAqIHN0MS54O1xcbiAgICAgIHZlYzMgQiA9IHExcGVycCAqIHN0MC55ICsgcTBwZXJwICogc3QxLnk7XFxuXFxuICAgICAgLy8gdGhyZWUtdnJtIHNwZWNpZmljIGNoYW5nZTogV29ya2Fyb3VuZCBmb3IgdGhlIGlzc3VlIHRoYXQgaGFwcGVucyB3aGVuIGRlbHRhIG9mIHV2ID0gMC4wXFxuICAgICAgLy8gVE9ETzogSXMgdGhpcyBzdGlsbCByZXF1aXJlZD8gT3Igc2hhbGwgSSBtYWtlIGEgUFIgYWJvdXQgaXQ/XFxuICAgICAgaWYgKCBsZW5ndGgoIFQgKSA9PSAwLjAgfHwgbGVuZ3RoKCBCICkgPT0gMC4wICkge1xcbiAgICAgICAgcmV0dXJuIHN1cmZfbm9ybTtcXG4gICAgICB9XFxuXFxuICAgICAgZmxvYXQgZGV0ID0gbWF4KCBkb3QoIFQsIFQgKSwgZG90KCBCLCBCICkgKTtcXG4gICAgICBmbG9hdCBzY2FsZSA9ICggZGV0ID09IDAuMCApID8gMC4wIDogZmFjZURpcmVjdGlvbiAqIGludmVyc2VzcXJ0KCBkZXQgKTtcXG5cXG4gICAgICByZXR1cm4gbm9ybWFsaXplKCBUICogKCBtYXBOLnggKiBzY2FsZSApICsgQiAqICggbWFwTi55ICogc2NhbGUgKSArIE4gKiBtYXBOLnogKTtcXG5cXG4gICAgfVxcblxcbiAgI2Vsc2VcXG5cXG4gICAgdmVjMyBwZXJ0dXJiTm9ybWFsMkFyYiggdmVjMiB1diwgdmVjMyBleWVfcG9zLCB2ZWMzIHN1cmZfbm9ybSwgdmVjMyBtYXBOICkge1xcblxcbiAgICAgIC8vIFdvcmthcm91bmQgZm9yIEFkcmVubyAzWFggZEZkKiggdmVjMyApIGJ1Zy4gU2VlICM5OTg4XFxuXFxuICAgICAgdmVjMyBxMCA9IHZlYzMoIGRGZHgoIGV5ZV9wb3MueCApLCBkRmR4KCBleWVfcG9zLnkgKSwgZEZkeCggZXllX3Bvcy56ICkgKTtcXG4gICAgICB2ZWMzIHExID0gdmVjMyggZEZkeSggZXllX3Bvcy54ICksIGRGZHkoIGV5ZV9wb3MueSApLCBkRmR5KCBleWVfcG9zLnogKSApO1xcbiAgICAgIHZlYzIgc3QwID0gZEZkeCggdXYuc3QgKTtcXG4gICAgICB2ZWMyIHN0MSA9IGRGZHkoIHV2LnN0ICk7XFxuXFxuICAgICAgZmxvYXQgc2NhbGUgPSBzaWduKCBzdDEudCAqIHN0MC5zIC0gc3QwLnQgKiBzdDEucyApOyAvLyB3ZSBkbyBub3QgY2FyZSBhYm91dCB0aGUgbWFnbml0dWRlXFxuXFxuICAgICAgdmVjMyBTID0gKCBxMCAqIHN0MS50IC0gcTEgKiBzdDAudCApICogc2NhbGU7XFxuICAgICAgdmVjMyBUID0gKCAtIHEwICogc3QxLnMgKyBxMSAqIHN0MC5zICkgKiBzY2FsZTtcXG5cXG4gICAgICAvLyB0aHJlZS12cm0gc3BlY2lmaWMgY2hhbmdlOiBXb3JrYXJvdW5kIGZvciB0aGUgaXNzdWUgdGhhdCBoYXBwZW5zIHdoZW4gZGVsdGEgb2YgdXYgPSAwLjBcXG4gICAgICAvLyBUT0RPOiBJcyB0aGlzIHN0aWxsIHJlcXVpcmVkPyBPciBzaGFsbCBJIG1ha2UgYSBQUiBhYm91dCBpdD9cXG5cXG4gICAgICBpZiAoIGxlbmd0aCggUyApID09IDAuMCB8fCBsZW5ndGgoIFQgKSA9PSAwLjAgKSB7XFxuICAgICAgICByZXR1cm4gc3VyZl9ub3JtO1xcbiAgICAgIH1cXG5cXG4gICAgICBTID0gbm9ybWFsaXplKCBTICk7XFxuICAgICAgVCA9IG5vcm1hbGl6ZSggVCApO1xcbiAgICAgIHZlYzMgTiA9IG5vcm1hbGl6ZSggc3VyZl9ub3JtICk7XFxuXFxuICAgICAgI2lmZGVmIERPVUJMRV9TSURFRFxcblxcbiAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgQWRyZW5vIEdQVXMgZ2xfRnJvbnRGYWNpbmcgYnVnLiBTZWUgIzE1ODUwIGFuZCAjMTAzMzFcXG5cXG4gICAgICAgIGJvb2wgZnJvbnRGYWNpbmcgPSBkb3QoIGNyb3NzKCBTLCBUICksIE4gKSA+IDAuMDtcXG5cXG4gICAgICAgIG1hcE4ueHkgKj0gKCBmbG9hdCggZnJvbnRGYWNpbmcgKSAqIDIuMCAtIDEuMCApO1xcblxcbiAgICAgICNlbHNlXFxuXFxuICAgICAgICBtYXBOLnh5ICo9ICggZmxvYXQoIGdsX0Zyb250RmFjaW5nICkgKiAyLjAgLSAxLjAgKTtcXG5cXG4gICAgICAjZW5kaWZcXG5cXG4gICAgICBtYXQzIHRzbiA9IG1hdDMoIFMsIFQsIE4gKTtcXG4gICAgICByZXR1cm4gbm9ybWFsaXplKCB0c24gKiBtYXBOICk7XFxuXFxuICAgIH1cXG5cXG4gICNlbmRpZlxcblxcbiNlbmRpZlxcblxcbi8vICNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PlxcbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxcbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cXG5cXG4vLyA9PSBwb3N0IGNvcnJlY3Rpb24gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbnZvaWQgcG9zdENvcnJlY3Rpb24oKSB7XFxuICAjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XFxuICAjaW5jbHVkZSA8Y29sb3JzcGFjZV9mcmFnbWVudD5cXG4gICNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XFxuICAjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cXG4gICNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XFxufVxcblxcbi8vID09IG1haW4gcHJvY2VkdXJlID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxudm9pZCBtYWluKCkge1xcbiAgI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cXG5cXG4gIHZlYzIgdXYgPSB2ZWMyKDAuNSwgMC41KTtcXG5cXG4gICNpZiAoIGRlZmluZWQoIE1UT09OX1VTRV9VViApICYmICFkZWZpbmVkKCBNVE9PTl9VVlNfVkVSVEVYX09OTFkgKSApXFxuICAgIHV2ID0gdlV2O1xcblxcbiAgICBmbG9hdCB1dkFuaW1NYXNrID0gMS4wO1xcbiAgICAjaWZkZWYgVVNFX1VWQU5JTUFUSU9OTUFTS1RFWFRVUkVcXG4gICAgICB2ZWMyIHV2QW5pbWF0aW9uTWFza1RleHR1cmVVdiA9ICggdXZBbmltYXRpb25NYXNrVGV4dHVyZVV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xcbiAgICAgIHV2QW5pbU1hc2sgPSB0ZXh0dXJlMkQoIHV2QW5pbWF0aW9uTWFza1RleHR1cmUsIHV2QW5pbWF0aW9uTWFza1RleHR1cmVVdiApLmI7XFxuICAgICNlbmRpZlxcblxcbiAgICB1diA9IHV2ICsgdmVjMiggdXZBbmltYXRpb25TY3JvbGxYT2Zmc2V0LCB1dkFuaW1hdGlvblNjcm9sbFlPZmZzZXQgKSAqIHV2QW5pbU1hc2s7XFxuICAgIGZsb2F0IHV2Um90Q29zID0gY29zKCB1dkFuaW1hdGlvblJvdGF0aW9uUGhhc2UgKiB1dkFuaW1NYXNrICk7XFxuICAgIGZsb2F0IHV2Um90U2luID0gc2luKCB1dkFuaW1hdGlvblJvdGF0aW9uUGhhc2UgKiB1dkFuaW1NYXNrICk7XFxuICAgIHV2ID0gbWF0MiggdXZSb3RDb3MsIC11dlJvdFNpbiwgdXZSb3RTaW4sIHV2Um90Q29zICkgKiAoIHV2IC0gMC41ICkgKyAwLjU7XFxuICAjZW5kaWZcXG5cXG4gICNpZmRlZiBERUJVR19VVlxcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KCAwLjAsIDAuMCwgMC4wLCAxLjAgKTtcXG4gICAgI2lmICggZGVmaW5lZCggTVRPT05fVVNFX1VWICkgJiYgIWRlZmluZWQoIE1UT09OX1VWU19WRVJURVhfT05MWSApIClcXG4gICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KCB1diwgMC4wLCAxLjAgKTtcXG4gICAgI2VuZGlmXFxuICAgIHJldHVybjtcXG4gICNlbmRpZlxcblxcbiAgdmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBsaXRGYWN0b3IsIG9wYWNpdHkgKTtcXG4gIFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XFxuICB2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlICogZW1pc3NpdmVJbnRlbnNpdHk7XFxuXFxuICAjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XFxuXFxuICAvLyAjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxcbiAgI2lmZGVmIFVTRV9NQVBcXG4gICAgdmVjMiBtYXBVdiA9ICggbWFwVXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7XFxuICAgIHZlYzQgc2FtcGxlZERpZmZ1c2VDb2xvciA9IHRleHR1cmUyRCggbWFwLCBtYXBVdiApO1xcbiAgICAjaWZkZWYgREVDT0RFX1ZJREVPX1RFWFRVUkVcXG4gICAgICBzYW1wbGVkRGlmZnVzZUNvbG9yID0gdmVjNCggbWl4KCBwb3coIHNhbXBsZWREaWZmdXNlQ29sb3IucmdiICogMC45NDc4NjcyOTg2ICsgdmVjMyggMC4wNTIxMzI3MDE0ICksIHZlYzMoIDIuNCApICksIHNhbXBsZWREaWZmdXNlQ29sb3IucmdiICogMC4wNzczOTkzODA4LCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCBzYW1wbGVkRGlmZnVzZUNvbG9yLnJnYiwgdmVjMyggMC4wNDA0NSApICkgKSApLCBzYW1wbGVkRGlmZnVzZUNvbG9yLncgKTtcXG4gICAgI2VuZGlmXFxuICAgIGRpZmZ1c2VDb2xvciAqPSBzYW1wbGVkRGlmZnVzZUNvbG9yO1xcbiAgI2VuZGlmXFxuXFxuICAvLyAjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XFxuICAjaWYgKCBkZWZpbmVkKCBVU0VfQ09MT1IgKSAmJiAhZGVmaW5lZCggSUdOT1JFX1ZFUlRFWF9DT0xPUiApIClcXG4gICAgZGlmZnVzZUNvbG9yLnJnYiAqPSB2Q29sb3I7XFxuICAjZW5kaWZcXG5cXG4gIC8vICNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cXG5cXG4gICNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XFxuXFxuICAvLyAjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+XFxuXFxuICAvLyAjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxcbiAgZmxvYXQgZmFjZURpcmVjdGlvbiA9IGdsX0Zyb250RmFjaW5nID8gMS4wIDogLTEuMDtcXG5cXG4gICNpZmRlZiBGTEFUX1NIQURFRFxcblxcbiAgICB2ZWMzIGZkeCA9IGRGZHgoIHZWaWV3UG9zaXRpb24gKTtcXG4gICAgdmVjMyBmZHkgPSBkRmR5KCB2Vmlld1Bvc2l0aW9uICk7XFxuICAgIHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKCBjcm9zcyggZmR4LCBmZHkgKSApO1xcblxcbiAgI2Vsc2VcXG5cXG4gICAgdmVjMyBub3JtYWwgPSBub3JtYWxpemUoIHZOb3JtYWwgKTtcXG5cXG4gICAgI2lmZGVmIERPVUJMRV9TSURFRFxcblxcbiAgICAgIG5vcm1hbCAqPSBmYWNlRGlyZWN0aW9uO1xcblxcbiAgICAjZW5kaWZcXG5cXG4gICNlbmRpZlxcblxcbiAgI2lmZGVmIFVTRV9OT1JNQUxNQVBcXG5cXG4gICAgdmVjMiBub3JtYWxNYXBVdiA9ICggbm9ybWFsTWFwVXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7XFxuXFxuICAjZW5kaWZcXG5cXG4gICNpZmRlZiBVU0VfTk9STUFMTUFQX1RBTkdFTlRTUEFDRVxcblxcbiAgICAjaWZkZWYgVVNFX1RBTkdFTlRcXG5cXG4gICAgICBtYXQzIHRibiA9IG1hdDMoIG5vcm1hbGl6ZSggdlRhbmdlbnQgKSwgbm9ybWFsaXplKCB2Qml0YW5nZW50ICksIG5vcm1hbCApO1xcblxcbiAgICAjZWxzZVxcblxcbiAgICAgIG1hdDMgdGJuID0gZ2V0VGFuZ2VudEZyYW1lKCAtIHZWaWV3UG9zaXRpb24sIG5vcm1hbCwgbm9ybWFsTWFwVXYgKTtcXG5cXG4gICAgI2VuZGlmXFxuXFxuICAgICNpZiBkZWZpbmVkKCBET1VCTEVfU0lERUQgKSAmJiAhIGRlZmluZWQoIEZMQVRfU0hBREVEIClcXG5cXG4gICAgICB0Ym5bMF0gKj0gZmFjZURpcmVjdGlvbjtcXG4gICAgICB0Ym5bMV0gKj0gZmFjZURpcmVjdGlvbjtcXG5cXG4gICAgI2VuZGlmXFxuXFxuICAjZW5kaWZcXG5cXG4gICNpZmRlZiBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUFxcblxcbiAgICAjaWZkZWYgVVNFX1RBTkdFTlRcXG5cXG4gICAgICBtYXQzIHRibjIgPSBtYXQzKCBub3JtYWxpemUoIHZUYW5nZW50ICksIG5vcm1hbGl6ZSggdkJpdGFuZ2VudCApLCBub3JtYWwgKTtcXG5cXG4gICAgI2Vsc2VcXG5cXG4gICAgICBtYXQzIHRibjIgPSBnZXRUYW5nZW50RnJhbWUoIC0gdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCB2Q2xlYXJjb2F0Tm9ybWFsTWFwVXYgKTtcXG5cXG4gICAgI2VuZGlmXFxuXFxuICAgICNpZiBkZWZpbmVkKCBET1VCTEVfU0lERUQgKSAmJiAhIGRlZmluZWQoIEZMQVRfU0hBREVEIClcXG5cXG4gICAgICB0Ym4yWzBdICo9IGZhY2VEaXJlY3Rpb247XFxuICAgICAgdGJuMlsxXSAqPSBmYWNlRGlyZWN0aW9uO1xcblxcbiAgICAjZW5kaWZcXG5cXG4gICNlbmRpZlxcblxcbiAgLy8gbm9uIHBlcnR1cmJlZCBub3JtYWwgZm9yIGNsZWFyY29hdCBhbW9uZyBvdGhlcnNcXG5cXG4gIHZlYzMgbm9uUGVydHVyYmVkTm9ybWFsID0gbm9ybWFsO1xcblxcbiAgI2lmZGVmIE9VVExJTkVcXG4gICAgbm9ybWFsICo9IC0xLjA7XFxuICAjZW5kaWZcXG5cXG4gIC8vICNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cXG5cXG4gIC8vIENPTVBBVDogVVNFX05PUk1BTE1BUF9PQkpFQ1RTUEFDRSB1c2VkIHRvIGJlIE9CSkVDVFNQQUNFX05PUk1BTE1BUCBpbiBwcmUtcjE1MVxcbiAgI2lmIGRlZmluZWQoIFVTRV9OT1JNQUxNQVBfT0JKRUNUU1BBQ0UgKSB8fCBkZWZpbmVkKCBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAgKVxcblxcbiAgICBub3JtYWwgPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgbm9ybWFsTWFwVXYgKS54eXogKiAyLjAgLSAxLjA7IC8vIG92ZXJyaWRlcyBib3RoIGZsYXRTaGFkaW5nIGFuZCBhdHRyaWJ1dGUgbm9ybWFsc1xcblxcbiAgICAjaWZkZWYgRkxJUF9TSURFRFxcblxcbiAgICAgIG5vcm1hbCA9IC0gbm9ybWFsO1xcblxcbiAgICAjZW5kaWZcXG5cXG4gICAgI2lmZGVmIERPVUJMRV9TSURFRFxcblxcbiAgICAgIC8vIFRlbXBvcmFyeSBjb21wYXQgYWdhaW5zdCBzaGFkZXIgY2hhbmdlIEAgVGhyZWUuanMgcjEyNlxcbiAgICAgIC8vIFNlZTogIzIxMjA1LCAjMjEzMDcsICMyMTI5OVxcbiAgICAgICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTI2XFxuXFxuICAgICAgICBub3JtYWwgPSBub3JtYWwgKiBmYWNlRGlyZWN0aW9uO1xcblxcbiAgICAgICNlbHNlXFxuXFxuICAgICAgICBub3JtYWwgPSBub3JtYWwgKiAoIGZsb2F0KCBnbF9Gcm9udEZhY2luZyApICogMi4wIC0gMS4wICk7XFxuXFxuICAgICAgI2VuZGlmXFxuXFxuICAgICNlbmRpZlxcblxcbiAgICBub3JtYWwgPSBub3JtYWxpemUoIG5vcm1hbE1hdHJpeCAqIG5vcm1hbCApO1xcblxcbiAgLy8gQ09NUEFUOiBVU0VfTk9STUFMTUFQX1RBTkdFTlRTUEFDRSB1c2VkIHRvIGJlIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgaW4gcHJlLXIxNTFcXG4gICNlbGlmIGRlZmluZWQoIFVTRV9OT1JNQUxNQVBfVEFOR0VOVFNQQUNFICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXFxuXFxuICAgIHZlYzMgbWFwTiA9IHRleHR1cmUyRCggbm9ybWFsTWFwLCBub3JtYWxNYXBVdiApLnh5eiAqIDIuMCAtIDEuMDtcXG4gICAgbWFwTi54eSAqPSBub3JtYWxTY2FsZTtcXG5cXG4gICAgLy8gQ09NUEFUOiBwcmUtcjE1MVxcbiAgICAjaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDE1MSB8fCBkZWZpbmVkKCBVU0VfVEFOR0VOVCApXFxuXFxuICAgICAgbm9ybWFsID0gbm9ybWFsaXplKCB0Ym4gKiBtYXBOICk7XFxuXFxuICAgICNlbHNlXFxuXFxuICAgICAgLy8gcHJlLXIxMjZcXG4gICAgICAjaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDEyNlxcblxcbiAgICAgICAgbm9ybWFsID0gcGVydHVyYk5vcm1hbDJBcmIoIHV2LCAtdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCBtYXBOLCBmYWNlRGlyZWN0aW9uICk7XFxuXFxuICAgICAgI2Vsc2VcXG5cXG4gICAgICAgIG5vcm1hbCA9IHBlcnR1cmJOb3JtYWwyQXJiKCB1diwgLXZWaWV3UG9zaXRpb24sIG5vcm1hbCwgbWFwTiApO1xcblxcbiAgICAgICNlbmRpZlxcblxcbiAgICAjZW5kaWZcXG5cXG4gICNlbmRpZlxcblxcbiAgLy8gI2luY2x1ZGUgPGVtaXNzaXZlbWFwX2ZyYWdtZW50PlxcbiAgI2lmZGVmIFVTRV9FTUlTU0lWRU1BUFxcbiAgICB2ZWMyIGVtaXNzaXZlTWFwVXYgPSAoIGVtaXNzaXZlTWFwVXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7XFxuICAgIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSAqPSB0ZXh0dXJlMkQoIGVtaXNzaXZlTWFwLCBlbWlzc2l2ZU1hcFV2ICkucmdiO1xcbiAgI2VuZGlmXFxuXFxuICAjaWZkZWYgREVCVUdfTk9STUFMXFxuICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoIDAuNSArIDAuNSAqIG5vcm1hbCwgMS4wICk7XFxuICAgIHJldHVybjtcXG4gICNlbmRpZlxcblxcbiAgLy8gLS0gTVRvb246IGxpZ2h0aW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAvLyBhY2N1bXVsYXRpb25cXG4gIC8vICNpbmNsdWRlIDxsaWdodHNfcGhvbmdfZnJhZ21lbnQ+XFxuICBNVG9vbk1hdGVyaWFsIG1hdGVyaWFsO1xcblxcbiAgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yID0gZGlmZnVzZUNvbG9yLnJnYjtcXG5cXG4gIG1hdGVyaWFsLnNoYWRlQ29sb3IgPSBzaGFkZUNvbG9yRmFjdG9yO1xcbiAgI2lmZGVmIFVTRV9TSEFERU1VTFRJUExZVEVYVFVSRVxcbiAgICB2ZWMyIHNoYWRlTXVsdGlwbHlUZXh0dXJlVXYgPSAoIHNoYWRlTXVsdGlwbHlUZXh0dXJlVXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7XFxuICAgIG1hdGVyaWFsLnNoYWRlQ29sb3IgKj0gdGV4dHVyZTJEKCBzaGFkZU11bHRpcGx5VGV4dHVyZSwgc2hhZGVNdWx0aXBseVRleHR1cmVVdiApLnJnYjtcXG4gICNlbmRpZlxcblxcbiAgI2lmICggZGVmaW5lZCggVVNFX0NPTE9SICkgJiYgIWRlZmluZWQoIElHTk9SRV9WRVJURVhfQ09MT1IgKSApXFxuICAgIG1hdGVyaWFsLnNoYWRlQ29sb3IucmdiICo9IHZDb2xvcjtcXG4gICNlbmRpZlxcblxcbiAgbWF0ZXJpYWwuc2hhZGluZ1NoaWZ0ID0gc2hhZGluZ1NoaWZ0RmFjdG9yO1xcbiAgI2lmZGVmIFVTRV9TSEFESU5HU0hJRlRURVhUVVJFXFxuICAgIHZlYzIgc2hhZGluZ1NoaWZ0VGV4dHVyZVV2ID0gKCBzaGFkaW5nU2hpZnRUZXh0dXJlVXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7XFxuICAgIG1hdGVyaWFsLnNoYWRpbmdTaGlmdCArPSB0ZXh0dXJlMkQoIHNoYWRpbmdTaGlmdFRleHR1cmUsIHNoYWRpbmdTaGlmdFRleHR1cmVVdiApLnIgKiBzaGFkaW5nU2hpZnRUZXh0dXJlU2NhbGU7XFxuICAjZW5kaWZcXG5cXG4gIC8vICNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfYmVnaW4+XFxuXFxuICAvLyBNVG9vbiBTcGVjaWZpYyBjaGFuZ2VzOlxcbiAgLy8gU2luY2Ugd2Ugd2FudCB0byB0YWtlIHNoYWRvd3MgaW50byBhY2NvdW50IG9mIHNoYWRpbmcgaW5zdGVhZCBvZiBpcnJhZGlhbmNlLFxcbiAgLy8gd2UgaGFkIHRvIG1vZGlmeSB0aGUgY29kZXMgdGhhdCBtdWx0aXBsaWVzIHRoZSByZXN1bHRzIG9mIHNoYWRvd21hcCBpbnRvIGNvbG9yIG9mIGRpcmVjdCBsaWdodHMuXFxuXFxuICAjaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDE1N1xcbiAgICB2ZWMzIGdlb21ldHJ5UG9zaXRpb24gPSAtIHZWaWV3UG9zaXRpb247XFxuICAgIHZlYzMgZ2VvbWV0cnlOb3JtYWwgPSBub3JtYWw7XFxuICAgIHZlYzMgZ2VvbWV0cnlWaWV3RGlyID0gKCBpc09ydGhvZ3JhcGhpYyApID8gdmVjMyggMCwgMCwgMSApIDogbm9ybWFsaXplKCB2Vmlld1Bvc2l0aW9uICk7XFxuICAgIFxcbiAgICB2ZWMzIGdlb21ldHJ5Q2xlYXJjb2F0Tm9ybWFsO1xcblxcbiAgICAjaWZkZWYgVVNFX0NMRUFSQ09BVFxcblxcbiAgICAgIGdlb21ldHJ5Q2xlYXJjb2F0Tm9ybWFsID0gY2xlYXJjb2F0Tm9ybWFsO1xcblxcbiAgICAjZW5kaWZcXG4gICNlbHNlXFxuICAgIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnk7XFxuXFxuICAgIGdlb21ldHJ5LnBvc2l0aW9uID0gLSB2Vmlld1Bvc2l0aW9uO1xcbiAgICBnZW9tZXRyeS5ub3JtYWwgPSBub3JtYWw7XFxuICAgIGdlb21ldHJ5LnZpZXdEaXIgPSAoIGlzT3J0aG9ncmFwaGljICkgPyB2ZWMzKCAwLCAwLCAxICkgOiBub3JtYWxpemUoIHZWaWV3UG9zaXRpb24gKTtcXG5cXG4gICAgI2lmZGVmIFVTRV9DTEVBUkNPQVRcXG5cXG4gICAgICBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwgPSBjbGVhcmNvYXROb3JtYWw7XFxuXFxuICAgICNlbmRpZlxcbiAgI2VuZGlmXFxuXFxuICBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0O1xcblxcbiAgLy8gc2luY2UgdGhlc2UgdmFyaWFibGVzIHdpbGwgYmUgdXNlZCBpbiB1bnJvbGxlZCBsb29wLCB3ZSBoYXZlIHRvIGRlZmluZSBpbiBwcmlvclxcbiAgZmxvYXQgc2hhZG93O1xcblxcbiAgI2lmICggTlVNX1BPSU5UX0xJR0hUUyA+IDAgKSAmJiBkZWZpbmVkKCBSRV9EaXJlY3QgKVxcblxcbiAgICBQb2ludExpZ2h0IHBvaW50TGlnaHQ7XFxuICAgICNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXFxuICAgIFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvdztcXG4gICAgI2VuZGlmXFxuXFxuICAgICNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcXG4gICAgZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUUzsgaSArKyApIHtcXG5cXG4gICAgICBwb2ludExpZ2h0ID0gcG9pbnRMaWdodHNbIGkgXTtcXG5cXG4gICAgICAjaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDE1N1xcbiAgICAgICAgZ2V0UG9pbnRMaWdodEluZm8oIHBvaW50TGlnaHQsIGdlb21ldHJ5UG9zaXRpb24sIGRpcmVjdExpZ2h0ICk7XFxuICAgICAgI2VsaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDEzMlxcbiAgICAgICAgZ2V0UG9pbnRMaWdodEluZm8oIHBvaW50TGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xcbiAgICAgICNlbHNlXFxuICAgICAgICBnZXRQb2ludERpcmVjdExpZ2h0SXJyYWRpYW5jZSggcG9pbnRMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XFxuICAgICAgI2VuZGlmXFxuXFxuICAgICAgc2hhZG93ID0gMS4wO1xcbiAgICAgICNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgKVxcbiAgICAgIHBvaW50TGlnaHRTaGFkb3cgPSBwb2ludExpZ2h0U2hhZG93c1sgaSBdO1xcbiAgICAgIHNoYWRvdyA9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0UG9pbnRTaGFkb3coIHBvaW50U2hhZG93TWFwWyBpIF0sIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93TWFwU2l6ZSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdlBvaW50U2hhZG93Q29vcmRbIGkgXSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dDYW1lcmFOZWFyLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0NhbWVyYUZhciApIDogMS4wO1xcbiAgICAgICNlbmRpZlxcblxcbiAgICAgICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTU3XFxuICAgICAgICBSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeVBvc2l0aW9uLCBnZW9tZXRyeU5vcm1hbCwgZ2VvbWV0cnlWaWV3RGlyLCBnZW9tZXRyeUNsZWFyY29hdE5vcm1hbCwgbWF0ZXJpYWwsIHNoYWRvdywgcmVmbGVjdGVkTGlnaHQgKTtcXG4gICAgICAjZWxzZVxcbiAgICAgICAgUkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCBzaGFkb3csIHJlZmxlY3RlZExpZ2h0ICk7XFxuICAgICAgI2VuZGlmXFxuXFxuICAgIH1cXG4gICAgI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcXG5cXG4gICNlbmRpZlxcblxcbiAgI2lmICggTlVNX1NQT1RfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXFxuXFxuICAgIFNwb3RMaWdodCBzcG90TGlnaHQ7XFxuICAgICNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcXG4gICAgU3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodFNoYWRvdztcXG4gICAgI2VuZGlmXFxuXFxuICAgICNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcXG4gICAgZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkge1xcblxcbiAgICAgIHNwb3RMaWdodCA9IHNwb3RMaWdodHNbIGkgXTtcXG5cXG4gICAgICAjaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDE1N1xcbiAgICAgICAgZ2V0U3BvdExpZ2h0SW5mbyggc3BvdExpZ2h0LCBnZW9tZXRyeVBvc2l0aW9uLCBkaXJlY3RMaWdodCApO1xcbiAgICAgICNlbGlmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxMzJcXG4gICAgICAgIGdldFNwb3RMaWdodEluZm8oIHNwb3RMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XFxuICAgICAgI2Vsc2VcXG4gICAgICAgIGdldFNwb3REaXJlY3RMaWdodElycmFkaWFuY2UoIHNwb3RMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XFxuICAgICAgI2VuZGlmXFxuXFxuICAgICAgc2hhZG93ID0gMS4wO1xcbiAgICAgICNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyApXFxuICAgICAgc3BvdExpZ2h0U2hhZG93ID0gc3BvdExpZ2h0U2hhZG93c1sgaSBdO1xcbiAgICAgIHNoYWRvdyA9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93Qmlhcywgc3BvdExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XFxuICAgICAgI2VuZGlmXFxuXFxuICAgICAgI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxNTdcXG4gICAgICAgIFJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5UG9zaXRpb24sIGdlb21ldHJ5Tm9ybWFsLCBnZW9tZXRyeVZpZXdEaXIsIGdlb21ldHJ5Q2xlYXJjb2F0Tm9ybWFsLCBtYXRlcmlhbCwgc2hhZG93LCByZWZsZWN0ZWRMaWdodCApO1xcbiAgICAgICNlbHNlXFxuICAgICAgICBSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHNoYWRvdywgcmVmbGVjdGVkTGlnaHQgKTtcXG4gICAgICAjZW5kaWZcXG5cXG4gICAgfVxcbiAgICAjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxcblxcbiAgI2VuZGlmXFxuXFxuICAjaWYgKCBOVU1fRElSX0xJR0hUUyA+IDAgKSAmJiBkZWZpbmVkKCBSRV9EaXJlY3QgKVxcblxcbiAgICBEaXJlY3Rpb25hbExpZ2h0IGRpcmVjdGlvbmFsTGlnaHQ7XFxuICAgICNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxcbiAgICBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3c7XFxuICAgICNlbmRpZlxcblxcbiAgICAjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XFxuICAgIGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRTOyBpICsrICkge1xcblxcbiAgICAgIGRpcmVjdGlvbmFsTGlnaHQgPSBkaXJlY3Rpb25hbExpZ2h0c1sgaSBdO1xcblxcbiAgICAgICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTU3XFxuICAgICAgICBnZXREaXJlY3Rpb25hbExpZ2h0SW5mbyggZGlyZWN0aW9uYWxMaWdodCwgZGlyZWN0TGlnaHQgKTtcXG4gICAgICAjZWxpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTMyXFxuICAgICAgICBnZXREaXJlY3Rpb25hbExpZ2h0SW5mbyggZGlyZWN0aW9uYWxMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XFxuICAgICAgI2Vsc2VcXG4gICAgICAgIGdldERpcmVjdGlvbmFsRGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBkaXJlY3Rpb25hbExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcXG4gICAgICAjZW5kaWZcXG5cXG4gICAgICBzaGFkb3cgPSAxLjA7XFxuICAgICAgI2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fRElSX0xJR0hUX1NIQURPV1MgKVxcbiAgICAgIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cgPSBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdO1xcbiAgICAgIHNoYWRvdyA9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcXG4gICAgICAjZW5kaWZcXG5cXG4gICAgICAjaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDE1N1xcbiAgICAgICAgUkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnlQb3NpdGlvbiwgZ2VvbWV0cnlOb3JtYWwsIGdlb21ldHJ5Vmlld0RpciwgZ2VvbWV0cnlDbGVhcmNvYXROb3JtYWwsIG1hdGVyaWFsLCBzaGFkb3csIHJlZmxlY3RlZExpZ2h0ICk7XFxuICAgICAgI2Vsc2VcXG4gICAgICAgIFJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgc2hhZG93LCByZWZsZWN0ZWRMaWdodCApO1xcbiAgICAgICNlbmRpZlxcblxcbiAgICB9XFxuICAgICNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXFxuXFxuICAjZW5kaWZcXG5cXG4gIC8vICNpZiAoIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdF9SZWN0QXJlYSApXFxuXFxuICAvLyAgIFJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodDtcXG5cXG4gIC8vICAgI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxcbiAgLy8gICBmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUkVDVF9BUkVBX0xJR0hUUzsgaSArKyApIHtcXG5cXG4gIC8vICAgICByZWN0QXJlYUxpZ2h0ID0gcmVjdEFyZWFMaWdodHNbIGkgXTtcXG4gIC8vICAgICBSRV9EaXJlY3RfUmVjdEFyZWEoIHJlY3RBcmVhTGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcXG5cXG4gIC8vICAgfVxcbiAgLy8gICAjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxcblxcbiAgLy8gI2VuZGlmXFxuXFxuICAjaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlIClcXG5cXG4gICAgdmVjMyBpYmxJcnJhZGlhbmNlID0gdmVjMyggMC4wICk7XFxuXFxuICAgIHZlYzMgaXJyYWRpYW5jZSA9IGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGFtYmllbnRMaWdodENvbG9yICk7XFxuXFxuICAgICNpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTU3XFxuICAgICAgI2lmIGRlZmluZWQoIFVTRV9MSUdIVF9QUk9CRVMgKVxcbiAgICAgICAgaXJyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgZ2VvbWV0cnlOb3JtYWwgKTtcXG4gICAgICAjZW5kaWZcXG4gICAgI2VsaWYgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OID49IDEzM1xcbiAgICAgIGlycmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGdlb21ldHJ5Lm5vcm1hbCApO1xcbiAgICAjZWxzZVxcbiAgICAgIGlycmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGdlb21ldHJ5ICk7XFxuICAgICNlbmRpZlxcblxcbiAgICAjaWYgKCBOVU1fSEVNSV9MSUdIVFMgPiAwIClcXG5cXG4gICAgICAjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XFxuICAgICAgZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0hFTUlfTElHSFRTOyBpICsrICkge1xcblxcbiAgICAgICAgI2lmIFRIUkVFX1ZSTV9USFJFRV9SRVZJU0lPTiA+PSAxNTdcXG4gICAgICAgICAgaXJyYWRpYW5jZSArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGdlb21ldHJ5Tm9ybWFsICk7XFxuICAgICAgICAjZWxpZiBUSFJFRV9WUk1fVEhSRUVfUkVWSVNJT04gPj0gMTMzXFxuICAgICAgICAgIGlycmFkaWFuY2UgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBnZW9tZXRyeS5ub3JtYWwgKTtcXG4gICAgICAgICNlbHNlXFxuICAgICAgICAgIGlycmFkaWFuY2UgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBnZW9tZXRyeSApO1xcbiAgICAgICAgI2VuZGlmXFxuXFxuICAgICAgfVxcbiAgICAgICNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXFxuXFxuICAgICNlbmRpZlxcblxcbiAgI2VuZGlmXFxuXFxuICAvLyAjaWYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXFxuXFxuICAvLyAgIHZlYzMgcmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTtcXG4gIC8vICAgdmVjMyBjbGVhcmNvYXRSYWRpYW5jZSA9IHZlYzMoIDAuMCApO1xcblxcbiAgLy8gI2VuZGlmXFxuXFxuICAjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X21hcHM+XFxuICAjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cXG5cXG4gIC8vIG1vZHVsYXRpb25cXG4gICNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cXG5cXG4gIHZlYzMgY29sID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZTtcXG5cXG4gICNpZmRlZiBERUJVR19MSVRTSEFERVJBVEVcXG4gICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCggY29sLCBkaWZmdXNlQ29sb3IuYSApO1xcbiAgICBwb3N0Q29ycmVjdGlvbigpO1xcbiAgICByZXR1cm47XFxuICAjZW5kaWZcXG5cXG4gIC8vIC0tIE1Ub29uOiByaW0gbGlnaHRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gIHZlYzMgdmlld0RpciA9IG5vcm1hbGl6ZSggdlZpZXdQb3NpdGlvbiApO1xcblxcbiAgI2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXFxuICAgIHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyIC89IFBJO1xcbiAgI2VuZGlmXFxuICB2ZWMzIHJpbU1peCA9IG1peCggdmVjMyggMS4wICksIHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyLCAxLjAgKTtcXG5cXG4gIHZlYzMgcmltID0gcGFyYW1ldHJpY1JpbUNvbG9yRmFjdG9yICogcG93KCBzYXR1cmF0ZSggMS4wIC0gZG90KCB2aWV3RGlyLCBub3JtYWwgKSArIHBhcmFtZXRyaWNSaW1MaWZ0RmFjdG9yICksIHBhcmFtZXRyaWNSaW1GcmVzbmVsUG93ZXJGYWN0b3IgKTtcXG5cXG4gICNpZmRlZiBVU0VfTUFUQ0FQVEVYVFVSRVxcbiAgICB7XFxuICAgICAgdmVjMyB4ID0gbm9ybWFsaXplKCB2ZWMzKCB2aWV3RGlyLnosIDAuMCwgLXZpZXdEaXIueCApICk7XFxuICAgICAgdmVjMyB5ID0gY3Jvc3MoIHZpZXdEaXIsIHggKTsgLy8gZ3VhcmFudGVlZCB0byBiZSBub3JtYWxpemVkXFxuICAgICAgdmVjMiBzcGhlcmVVdiA9IDAuNSArIDAuNSAqIHZlYzIoIGRvdCggeCwgbm9ybWFsICksIC1kb3QoIHksIG5vcm1hbCApICk7XFxuICAgICAgc3BoZXJlVXYgPSAoIG1hdGNhcFRleHR1cmVVdlRyYW5zZm9ybSAqIHZlYzMoIHNwaGVyZVV2LCAxICkgKS54eTtcXG4gICAgICB2ZWMzIG1hdGNhcCA9IHRleHR1cmUyRCggbWF0Y2FwVGV4dHVyZSwgc3BoZXJlVXYgKS5yZ2I7XFxuICAgICAgcmltICs9IG1hdGNhcEZhY3RvciAqIG1hdGNhcDtcXG4gICAgfVxcbiAgI2VuZGlmXFxuXFxuICAjaWZkZWYgVVNFX1JJTU1VTFRJUExZVEVYVFVSRVxcbiAgICB2ZWMyIHJpbU11bHRpcGx5VGV4dHVyZVV2ID0gKCByaW1NdWx0aXBseVRleHR1cmVVdlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTtcXG4gICAgcmltICo9IHRleHR1cmUyRCggcmltTXVsdGlwbHlUZXh0dXJlLCByaW1NdWx0aXBseVRleHR1cmVVdiApLnJnYjtcXG4gICNlbmRpZlxcblxcbiAgY29sICs9IHJpbU1peCAqIHJpbTtcXG5cXG4gIC8vIC0tIE1Ub29uOiBFbWlzc2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgY29sICs9IHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcXG5cXG4gIC8vICNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XFxuXFxuICAvLyAtLSBBbG1vc3QgZG9uZSEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gICNpZiBkZWZpbmVkKCBPVVRMSU5FIClcXG4gICAgY29sID0gb3V0bGluZUNvbG9yRmFjdG9yLnJnYiAqIG1peCggdmVjMyggMS4wICksIGNvbCwgb3V0bGluZUxpZ2h0aW5nTWl4RmFjdG9yICk7XFxuICAjZW5kaWZcXG5cXG4gICNpZmRlZiBPUEFRVUVcXG4gICAgZGlmZnVzZUNvbG9yLmEgPSAxLjA7XFxuICAjZW5kaWZcXG5cXG4gIGdsX0ZyYWdDb2xvciA9IHZlYzQoIGNvbCwgZGlmZnVzZUNvbG9yLmEgKTtcXG4gIHBvc3RDb3JyZWN0aW9uKCk7XFxufVxcblwiO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbi8qKlxuICogU3BlY2lmaWVycyBvZiBkZWJ1ZyBtb2RlIG9mIHtAbGluayBNVG9vbk1hdGVyaWFsfS5cbiAqXG4gKiBTZWU6IHtAbGluayBNVG9vbk1hdGVyaWFsLmRlYnVnTW9kZX1cbiAqL1xuY29uc3QgTVRvb25NYXRlcmlhbERlYnVnTW9kZSA9IHtcbiAgICAvKipcbiAgICAgKiBSZW5kZXIgbm9ybWFsbHkuXG4gICAgICovXG4gICAgTm9uZTogJ25vbmUnLFxuICAgIC8qKlxuICAgICAqIFZpc3VhbGl6ZSBub3JtYWxzIG9mIHRoZSBzdXJmYWNlLlxuICAgICAqL1xuICAgIE5vcm1hbDogJ25vcm1hbCcsXG4gICAgLyoqXG4gICAgICogVmlzdWFsaXplIGxpdC9zaGFkZSBvZiB0aGUgc3VyZmFjZS5cbiAgICAgKi9cbiAgICBMaXRTaGFkZVJhdGU6ICdsaXRTaGFkZVJhdGUnLFxuICAgIC8qKlxuICAgICAqIFZpc3VhbGl6ZSBVViBvZiB0aGUgc3VyZmFjZS5cbiAgICAgKi9cbiAgICBVVjogJ3V2Jyxcbn07XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuY29uc3QgTVRvb25NYXRlcmlhbE91dGxpbmVXaWR0aE1vZGUgPSB7XG4gICAgTm9uZTogJ25vbmUnLFxuICAgIFdvcmxkQ29vcmRpbmF0ZXM6ICd3b3JsZENvb3JkaW5hdGVzJyxcbiAgICBTY3JlZW5Db29yZGluYXRlczogJ3NjcmVlbkNvb3JkaW5hdGVzJyxcbn07XG5cbmNvbnN0IGVuY29kaW5nQ29sb3JTcGFjZU1hcCA9IHtcbiAgICAzMDAwOiAnJyxcbiAgICAzMDAxOiAnc3JnYicsXG59O1xuLyoqXG4gKiBBIGNvbXBhdCBmdW5jdGlvbiB0byBnZXQgdGV4dHVyZSBjb2xvciBzcGFjZS5cbiAqXG4gKiBDT01QQVQ6IHByZS1yMTUyXG4gKiBTdGFydGluZyBmcm9tIFRocmVlLmpzIHIxNTIsIGB0ZXh0dXJlLmVuY29kaW5nYCBpcyByZW5hbWVkIHRvIGB0ZXh0dXJlLmNvbG9yU3BhY2VgLlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIGhhbmRsZSB0aGUgY29tYXB0LlxuICpcbiAqIEBwYXJhbSB0ZXh0dXJlIFRoZSB0ZXh0dXJlIHlvdSB3YW50IHRvIGdldCB0aGUgY29sb3Igc3BhY2UgZnJvbVxuICovXG5mdW5jdGlvbiBnZXRUZXh0dXJlQ29sb3JTcGFjZSh0ZXh0dXJlKSB7XG4gICAgaWYgKHBhcnNlSW50KFRIUkVFLlJFVklTSU9OLCAxMCkgPj0gMTUyKSB7XG4gICAgICAgIHJldHVybiB0ZXh0dXJlLmNvbG9yU3BhY2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gZW5jb2RpbmdDb2xvclNwYWNlTWFwW3RleHR1cmUuZW5jb2RpbmddO1xuICAgIH1cbn1cblxuLyogdHNsaW50OmRpc2FibGU6bWVtYmVyLW9yZGVyaW5nICovXG4vKipcbiAqIE1Ub29uIGlzIGEgbWF0ZXJpYWwgc3BlY2lmaWNhdGlvbiB0aGF0IGhhcyB2YXJpb3VzIGZlYXR1cmVzLlxuICogVGhlIHNwZWMgYW5kIGltcGxlbWVudGF0aW9uIGFyZSBvcmlnaW5hbGx5IGZvdW5kZWQgZm9yIFVuaXR5IGVuZ2luZSBhbmQgdGhpcyBpcyBhIHBvcnQgb2YgdGhlIG1hdGVyaWFsLlxuICpcbiAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL1NhbnRhcmgvTVRvb25cbiAqL1xuY2xhc3MgTVRvb25NYXRlcmlhbCBleHRlbmRzIFRIUkVFLlNoYWRlck1hdGVyaWFsIHtcbiAgICBnZXQgY29sb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLmxpdEZhY3Rvci52YWx1ZTtcbiAgICB9XG4gICAgc2V0IGNvbG9yKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMubGl0RmFjdG9yLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBtYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLm1hcC52YWx1ZTtcbiAgICB9XG4gICAgc2V0IG1hcCh2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLm1hcC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgbm9ybWFsTWFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5ub3JtYWxNYXAudmFsdWU7XG4gICAgfVxuICAgIHNldCBub3JtYWxNYXAodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5ub3JtYWxNYXAudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IG5vcm1hbFNjYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5ub3JtYWxTY2FsZS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IG5vcm1hbFNjYWxlKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMubm9ybWFsU2NhbGUudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGVtaXNzaXZlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5lbWlzc2l2ZS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IGVtaXNzaXZlKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMuZW1pc3NpdmUudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGVtaXNzaXZlSW50ZW5zaXR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5lbWlzc2l2ZUludGVuc2l0eS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IGVtaXNzaXZlSW50ZW5zaXR5KHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMuZW1pc3NpdmVJbnRlbnNpdHkudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGVtaXNzaXZlTWFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5lbWlzc2l2ZU1hcC52YWx1ZTtcbiAgICB9XG4gICAgc2V0IGVtaXNzaXZlTWFwKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMuZW1pc3NpdmVNYXAudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHNoYWRlQ29sb3JGYWN0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLnNoYWRlQ29sb3JGYWN0b3IudmFsdWU7XG4gICAgfVxuICAgIHNldCBzaGFkZUNvbG9yRmFjdG9yKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMuc2hhZGVDb2xvckZhY3Rvci52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgc2hhZGVNdWx0aXBseVRleHR1cmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLnNoYWRlTXVsdGlwbHlUZXh0dXJlLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgc2hhZGVNdWx0aXBseVRleHR1cmUodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5zaGFkZU11bHRpcGx5VGV4dHVyZS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgc2hhZGluZ1NoaWZ0RmFjdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5zaGFkaW5nU2hpZnRGYWN0b3IudmFsdWU7XG4gICAgfVxuICAgIHNldCBzaGFkaW5nU2hpZnRGYWN0b3IodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5zaGFkaW5nU2hpZnRGYWN0b3IudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHNoYWRpbmdTaGlmdFRleHR1cmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLnNoYWRpbmdTaGlmdFRleHR1cmUudmFsdWU7XG4gICAgfVxuICAgIHNldCBzaGFkaW5nU2hpZnRUZXh0dXJlKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMuc2hhZGluZ1NoaWZ0VGV4dHVyZS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgc2hhZGluZ1NoaWZ0VGV4dHVyZVNjYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5zaGFkaW5nU2hpZnRUZXh0dXJlU2NhbGUudmFsdWU7XG4gICAgfVxuICAgIHNldCBzaGFkaW5nU2hpZnRUZXh0dXJlU2NhbGUodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5zaGFkaW5nU2hpZnRUZXh0dXJlU2NhbGUudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHNoYWRpbmdUb29ueUZhY3RvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMuc2hhZGluZ1Rvb255RmFjdG9yLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgc2hhZGluZ1Rvb255RmFjdG9yKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMuc2hhZGluZ1Rvb255RmFjdG9yLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBnaUVxdWFsaXphdGlvbkZhY3RvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMuZ2lFcXVhbGl6YXRpb25GYWN0b3IudmFsdWU7XG4gICAgfVxuICAgIHNldCBnaUVxdWFsaXphdGlvbkZhY3Rvcih2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLmdpRXF1YWxpemF0aW9uRmFjdG9yLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBtYXRjYXBGYWN0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLm1hdGNhcEZhY3Rvci52YWx1ZTtcbiAgICB9XG4gICAgc2V0IG1hdGNhcEZhY3Rvcih2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLm1hdGNhcEZhY3Rvci52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgbWF0Y2FwVGV4dHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMubWF0Y2FwVGV4dHVyZS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IG1hdGNhcFRleHR1cmUodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5tYXRjYXBUZXh0dXJlLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBwYXJhbWV0cmljUmltQ29sb3JGYWN0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLnBhcmFtZXRyaWNSaW1Db2xvckZhY3Rvci52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHBhcmFtZXRyaWNSaW1Db2xvckZhY3Rvcih2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLnBhcmFtZXRyaWNSaW1Db2xvckZhY3Rvci52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgcmltTXVsdGlwbHlUZXh0dXJlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5yaW1NdWx0aXBseVRleHR1cmUudmFsdWU7XG4gICAgfVxuICAgIHNldCByaW1NdWx0aXBseVRleHR1cmUodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5yaW1NdWx0aXBseVRleHR1cmUudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHJpbUxpZ2h0aW5nTWl4RmFjdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5yaW1MaWdodGluZ01peEZhY3Rvci52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHJpbUxpZ2h0aW5nTWl4RmFjdG9yKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMucmltTGlnaHRpbmdNaXhGYWN0b3IudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHBhcmFtZXRyaWNSaW1GcmVzbmVsUG93ZXJGYWN0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLnBhcmFtZXRyaWNSaW1GcmVzbmVsUG93ZXJGYWN0b3IudmFsdWU7XG4gICAgfVxuICAgIHNldCBwYXJhbWV0cmljUmltRnJlc25lbFBvd2VyRmFjdG9yKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMucGFyYW1ldHJpY1JpbUZyZXNuZWxQb3dlckZhY3Rvci52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgcGFyYW1ldHJpY1JpbUxpZnRGYWN0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLnBhcmFtZXRyaWNSaW1MaWZ0RmFjdG9yLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgcGFyYW1ldHJpY1JpbUxpZnRGYWN0b3IodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5wYXJhbWV0cmljUmltTGlmdEZhY3Rvci52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgb3V0bGluZVdpZHRoTXVsdGlwbHlUZXh0dXJlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5vdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmUudmFsdWU7XG4gICAgfVxuICAgIHNldCBvdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmUodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5vdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmUudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IG91dGxpbmVXaWR0aEZhY3RvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMub3V0bGluZVdpZHRoRmFjdG9yLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgb3V0bGluZVdpZHRoRmFjdG9yKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMub3V0bGluZVdpZHRoRmFjdG9yLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBvdXRsaW5lQ29sb3JGYWN0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLm91dGxpbmVDb2xvckZhY3Rvci52YWx1ZTtcbiAgICB9XG4gICAgc2V0IG91dGxpbmVDb2xvckZhY3Rvcih2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLm91dGxpbmVDb2xvckZhY3Rvci52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgb3V0bGluZUxpZ2h0aW5nTWl4RmFjdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy5vdXRsaW5lTGlnaHRpbmdNaXhGYWN0b3IudmFsdWU7XG4gICAgfVxuICAgIHNldCBvdXRsaW5lTGlnaHRpbmdNaXhGYWN0b3IodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5vdXRsaW5lTGlnaHRpbmdNaXhGYWN0b3IudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHV2QW5pbWF0aW9uTWFza1RleHR1cmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLnV2QW5pbWF0aW9uTWFza1RleHR1cmUudmFsdWU7XG4gICAgfVxuICAgIHNldCB1dkFuaW1hdGlvbk1hc2tUZXh0dXJlKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMudXZBbmltYXRpb25NYXNrVGV4dHVyZS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgdXZBbmltYXRpb25TY3JvbGxYT2Zmc2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmb3Jtcy51dkFuaW1hdGlvblNjcm9sbFhPZmZzZXQudmFsdWU7XG4gICAgfVxuICAgIHNldCB1dkFuaW1hdGlvblNjcm9sbFhPZmZzZXQodmFsdWUpIHtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy51dkFuaW1hdGlvblNjcm9sbFhPZmZzZXQudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHV2QW5pbWF0aW9uU2Nyb2xsWU9mZnNldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZm9ybXMudXZBbmltYXRpb25TY3JvbGxZT2Zmc2V0LnZhbHVlO1xuICAgIH1cbiAgICBzZXQgdXZBbmltYXRpb25TY3JvbGxZT2Zmc2V0KHZhbHVlKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMudXZBbmltYXRpb25TY3JvbGxZT2Zmc2V0LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCB1dkFuaW1hdGlvblJvdGF0aW9uUGhhc2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZvcm1zLnV2QW5pbWF0aW9uUm90YXRpb25QaGFzZS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHV2QW5pbWF0aW9uUm90YXRpb25QaGFzZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLnV2QW5pbWF0aW9uUm90YXRpb25QaGFzZS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXaGVuIHRoaXMgaXMgYHRydWVgLCB2ZXJ0ZXggY29sb3JzIHdpbGwgYmUgaWdub3JlZC5cbiAgICAgKiBgdHJ1ZWAgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBnZXQgaWdub3JlVmVydGV4Q29sb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pZ25vcmVWZXJ0ZXhDb2xvcjtcbiAgICB9XG4gICAgc2V0IGlnbm9yZVZlcnRleENvbG9yKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2lnbm9yZVZlcnRleENvbG9yID0gdmFsdWU7XG4gICAgICAgIHRoaXMubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGVyZSBpcyBhIGxpbmUgb2YgdGhlIHNoYWRlciBjYWxsZWQgXCJjb21tZW50IG91dCBpZiB5b3Ugd2FudCB0byBQQlIgYWJzb2x1dGVseVwiIGluIFZSTTAuMCBNVG9vbi5cbiAgICAgKiBXaGVuIHRoaXMgaXMgdHJ1ZSwgdGhlIG1hdGVyaWFsIGVuYWJsZXMgdGhlIGxpbmUgdG8gbWFrZSBpdCBjb21wYXRpYmxlIHdpdGggdGhlIGxlZ2FjeSByZW5kZXJpbmcgb2YgVlJNLlxuICAgICAqIFVzdWFsbHkgbm90IHJlY29tbWVuZGVkIHRvIHR1cm4gdGhpcyBvbi5cbiAgICAgKiBgZmFsc2VgIGJ5IGRlZmF1bHQuXG4gICAgICovXG4gICAgZ2V0IHYwQ29tcGF0U2hhZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92MENvbXBhdFNoYWRlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGVyZSBpcyBhIGxpbmUgb2YgdGhlIHNoYWRlciBjYWxsZWQgXCJjb21tZW50IG91dCBpZiB5b3Ugd2FudCB0byBQQlIgYWJzb2x1dGVseVwiIGluIFZSTTAuMCBNVG9vbi5cbiAgICAgKiBXaGVuIHRoaXMgaXMgdHJ1ZSwgdGhlIG1hdGVyaWFsIGVuYWJsZXMgdGhlIGxpbmUgdG8gbWFrZSBpdCBjb21wYXRpYmxlIHdpdGggdGhlIGxlZ2FjeSByZW5kZXJpbmcgb2YgVlJNLlxuICAgICAqIFVzdWFsbHkgbm90IHJlY29tbWVuZGVkIHRvIHR1cm4gdGhpcyBvbi5cbiAgICAgKiBgZmFsc2VgIGJ5IGRlZmF1bHQuXG4gICAgICovXG4gICAgc2V0IHYwQ29tcGF0U2hhZGUodikge1xuICAgICAgICB0aGlzLl92MENvbXBhdFNoYWRlID0gdjtcbiAgICAgICAgdGhpcy5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlYnVnIG1vZGUgZm9yIHRoZSBtYXRlcmlhbC5cbiAgICAgKiBZb3UgY2FuIHZpc3VhbGl6ZSBzZXZlcmFsIGNvbXBvbmVudHMgZm9yIGRpYWdub3NpcyB1c2luZyBkZWJ1ZyBtb2RlLlxuICAgICAqXG4gICAgICogU2VlOiB7QGxpbmsgTVRvb25NYXRlcmlhbERlYnVnTW9kZX1cbiAgICAgKi9cbiAgICBnZXQgZGVidWdNb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVidWdNb2RlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWJ1ZyBtb2RlIGZvciB0aGUgbWF0ZXJpYWwuXG4gICAgICogWW91IGNhbiB2aXN1YWxpemUgc2V2ZXJhbCBjb21wb25lbnRzIGZvciBkaWFnbm9zaXMgdXNpbmcgZGVidWcgbW9kZS5cbiAgICAgKlxuICAgICAqIFNlZToge0BsaW5rIE1Ub29uTWF0ZXJpYWxEZWJ1Z01vZGV9XG4gICAgICovXG4gICAgc2V0IGRlYnVnTW9kZShtKSB7XG4gICAgICAgIHRoaXMuX2RlYnVnTW9kZSA9IG07XG4gICAgICAgIHRoaXMubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIH1cbiAgICBnZXQgb3V0bGluZVdpZHRoTW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX291dGxpbmVXaWR0aE1vZGU7XG4gICAgfVxuICAgIHNldCBvdXRsaW5lV2lkdGhNb2RlKG0pIHtcbiAgICAgICAgdGhpcy5fb3V0bGluZVdpZHRoTW9kZSA9IG07XG4gICAgICAgIHRoaXMubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIH1cbiAgICBnZXQgaXNPdXRsaW5lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNPdXRsaW5lO1xuICAgIH1cbiAgICBzZXQgaXNPdXRsaW5lKGIpIHtcbiAgICAgICAgdGhpcy5faXNPdXRsaW5lID0gYjtcbiAgICAgICAgdGhpcy5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlYWRvbmx5IGJvb2xlYW4gdGhhdCBpbmRpY2F0ZXMgdGhpcyBpcyBhIFtbTVRvb25NYXRlcmlhbF1dLlxuICAgICAqL1xuICAgIGdldCBpc01Ub29uTWF0ZXJpYWwoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzID0ge30pIHtcbiAgICAgICAgc3VwZXIoeyB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyIH0pO1xuICAgICAgICB0aGlzLnV2QW5pbWF0aW9uU2Nyb2xsWFNwZWVkRmFjdG9yID0gMC4wO1xuICAgICAgICB0aGlzLnV2QW5pbWF0aW9uU2Nyb2xsWVNwZWVkRmFjdG9yID0gMC4wO1xuICAgICAgICB0aGlzLnV2QW5pbWF0aW9uUm90YXRpb25TcGVlZEZhY3RvciA9IDAuMDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdoZXRoZXIgdGhlIG1hdGVyaWFsIGlzIGFmZmVjdGVkIGJ5IGZvZy5cbiAgICAgICAgICogYHRydWVgIGJ5IGRlZmF1bHQuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmZvZyA9IHRydWU7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaWxsIGJlIHJlYWQgaW4gV2ViR0xQcm9ncmFtc1xuICAgICAgICAgKlxuICAgICAgICAgKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tcmRvb2IvdGhyZWUuanMvYmxvYi80ZjUyMzZhYzNkNmY0MWQ5MDRhYTU4NDAxYjQwNTU0ZThmYmRjYjE1L3NyYy9yZW5kZXJlcnMvd2ViZ2wvV2ViR0xQcm9ncmFtcy5qcyNMMTkwLUwxOTFcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubm9ybWFsTWFwVHlwZSA9IFRIUkVFLlRhbmdlbnRTcGFjZU5vcm1hbE1hcDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdoZW4gdGhpcyBpcyBgdHJ1ZWAsIHZlcnRleCBjb2xvcnMgd2lsbCBiZSBpZ25vcmVkLlxuICAgICAgICAgKiBgdHJ1ZWAgYnkgZGVmYXVsdC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2lnbm9yZVZlcnRleENvbG9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fdjBDb21wYXRTaGFkZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9kZWJ1Z01vZGUgPSBNVG9vbk1hdGVyaWFsRGVidWdNb2RlLk5vbmU7XG4gICAgICAgIHRoaXMuX291dGxpbmVXaWR0aE1vZGUgPSBNVG9vbk1hdGVyaWFsT3V0bGluZVdpZHRoTW9kZS5Ob25lO1xuICAgICAgICB0aGlzLl9pc091dGxpbmUgPSBmYWxzZTtcbiAgICAgICAgLy8gb3ZlcnJpZGUgZGVwdGhXcml0ZSB3aXRoIHRyYW5zcGFyZW50V2l0aFpXcml0ZVxuICAgICAgICBpZiAocGFyYW1ldGVycy50cmFuc3BhcmVudFdpdGhaV3JpdGUpIHtcbiAgICAgICAgICAgIHBhcmFtZXRlcnMuZGVwdGhXcml0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIHBhcmFtZXRlcnMudHJhbnNwYXJlbnRXaXRoWldyaXRlO1xuICAgICAgICAvLyA9PSBlbmFibGluZyBidW5jaCBvZiBzdHVmZiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgcGFyYW1ldGVycy5mb2cgPSB0cnVlO1xuICAgICAgICBwYXJhbWV0ZXJzLmxpZ2h0cyA9IHRydWU7XG4gICAgICAgIHBhcmFtZXRlcnMuY2xpcHBpbmcgPSB0cnVlO1xuICAgICAgICAvLyBDT01QQVQ6IHByZS1yMTI5XG4gICAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL21yZG9vYi90aHJlZS5qcy9wdWxsLzIxNzg4XG4gICAgICAgIGlmIChwYXJzZUludChUSFJFRS5SRVZJU0lPTiwgMTApIDwgMTI5KSB7XG4gICAgICAgICAgICBwYXJhbWV0ZXJzLnNraW5uaW5nID0gcGFyYW1ldGVycy5za2lubmluZyB8fCBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDT01QQVQ6IHByZS1yMTMxXG4gICAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL21yZG9vYi90aHJlZS5qcy9wdWxsLzIyMTY5XG4gICAgICAgIGlmIChwYXJzZUludChUSFJFRS5SRVZJU0lPTiwgMTApIDwgMTMxKSB7XG4gICAgICAgICAgICBwYXJhbWV0ZXJzLm1vcnBoVGFyZ2V0cyA9IHBhcmFtZXRlcnMubW9ycGhUYXJnZXRzIHx8IGZhbHNlO1xuICAgICAgICAgICAgcGFyYW1ldGVycy5tb3JwaE5vcm1hbHMgPSBwYXJhbWV0ZXJzLm1vcnBoTm9ybWFscyB8fCBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyA9PSB1bmlmb3JtcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgdGhpcy51bmlmb3JtcyA9IFRIUkVFLlVuaWZvcm1zVXRpbHMubWVyZ2UoW1xuICAgICAgICAgICAgVEhSRUUuVW5pZm9ybXNMaWIuY29tbW9uLFxuICAgICAgICAgICAgVEhSRUUuVW5pZm9ybXNMaWIubm9ybWFsbWFwLFxuICAgICAgICAgICAgVEhSRUUuVW5pZm9ybXNMaWIuZW1pc3NpdmVtYXAsXG4gICAgICAgICAgICBUSFJFRS5Vbmlmb3Jtc0xpYi5mb2csXG4gICAgICAgICAgICBUSFJFRS5Vbmlmb3Jtc0xpYi5saWdodHMsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGl0RmFjdG9yOiB7IHZhbHVlOiBuZXcgVEhSRUUuQ29sb3IoMS4wLCAxLjAsIDEuMCkgfSxcbiAgICAgICAgICAgICAgICBtYXBVdlRyYW5zZm9ybTogeyB2YWx1ZTogbmV3IFRIUkVFLk1hdHJpeDMoKSB9LFxuICAgICAgICAgICAgICAgIGNvbG9yQWxwaGE6IHsgdmFsdWU6IDEuMCB9LFxuICAgICAgICAgICAgICAgIG5vcm1hbE1hcFV2VHJhbnNmb3JtOiB7IHZhbHVlOiBuZXcgVEhSRUUuTWF0cml4MygpIH0sXG4gICAgICAgICAgICAgICAgc2hhZGVDb2xvckZhY3RvcjogeyB2YWx1ZTogbmV3IFRIUkVFLkNvbG9yKDAuOTcsIDAuODEsIDAuODYpIH0sXG4gICAgICAgICAgICAgICAgc2hhZGVNdWx0aXBseVRleHR1cmU6IHsgdmFsdWU6IG51bGwgfSxcbiAgICAgICAgICAgICAgICBzaGFkZU11bHRpcGx5VGV4dHVyZVV2VHJhbnNmb3JtOiB7IHZhbHVlOiBuZXcgVEhSRUUuTWF0cml4MygpIH0sXG4gICAgICAgICAgICAgICAgc2hhZGluZ1NoaWZ0RmFjdG9yOiB7IHZhbHVlOiAwLjAgfSxcbiAgICAgICAgICAgICAgICBzaGFkaW5nU2hpZnRUZXh0dXJlOiB7IHZhbHVlOiBudWxsIH0sXG4gICAgICAgICAgICAgICAgc2hhZGluZ1NoaWZ0VGV4dHVyZVV2VHJhbnNmb3JtOiB7IHZhbHVlOiBuZXcgVEhSRUUuTWF0cml4MygpIH0sXG4gICAgICAgICAgICAgICAgc2hhZGluZ1NoaWZ0VGV4dHVyZVNjYWxlOiB7IHZhbHVlOiAxLjAgfSxcbiAgICAgICAgICAgICAgICBzaGFkaW5nVG9vbnlGYWN0b3I6IHsgdmFsdWU6IDAuOSB9LFxuICAgICAgICAgICAgICAgIGdpRXF1YWxpemF0aW9uRmFjdG9yOiB7IHZhbHVlOiAwLjkgfSxcbiAgICAgICAgICAgICAgICBtYXRjYXBGYWN0b3I6IHsgdmFsdWU6IG5ldyBUSFJFRS5Db2xvcigwLjAsIDAuMCwgMC4wKSB9LFxuICAgICAgICAgICAgICAgIG1hdGNhcFRleHR1cmU6IHsgdmFsdWU6IG51bGwgfSxcbiAgICAgICAgICAgICAgICBtYXRjYXBUZXh0dXJlVXZUcmFuc2Zvcm06IHsgdmFsdWU6IG5ldyBUSFJFRS5NYXRyaXgzKCkgfSxcbiAgICAgICAgICAgICAgICBwYXJhbWV0cmljUmltQ29sb3JGYWN0b3I6IHsgdmFsdWU6IG5ldyBUSFJFRS5Db2xvcigwLjAsIDAuMCwgMC4wKSB9LFxuICAgICAgICAgICAgICAgIHJpbU11bHRpcGx5VGV4dHVyZTogeyB2YWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgICAgIHJpbU11bHRpcGx5VGV4dHVyZVV2VHJhbnNmb3JtOiB7IHZhbHVlOiBuZXcgVEhSRUUuTWF0cml4MygpIH0sXG4gICAgICAgICAgICAgICAgcmltTGlnaHRpbmdNaXhGYWN0b3I6IHsgdmFsdWU6IDAuMCB9LFxuICAgICAgICAgICAgICAgIHBhcmFtZXRyaWNSaW1GcmVzbmVsUG93ZXJGYWN0b3I6IHsgdmFsdWU6IDEuMCB9LFxuICAgICAgICAgICAgICAgIHBhcmFtZXRyaWNSaW1MaWZ0RmFjdG9yOiB7IHZhbHVlOiAwLjAgfSxcbiAgICAgICAgICAgICAgICBlbWlzc2l2ZTogeyB2YWx1ZTogbmV3IFRIUkVFLkNvbG9yKDAuMCwgMC4wLCAwLjApIH0sXG4gICAgICAgICAgICAgICAgZW1pc3NpdmVJbnRlbnNpdHk6IHsgdmFsdWU6IDEuMCB9LFxuICAgICAgICAgICAgICAgIGVtaXNzaXZlTWFwVXZUcmFuc2Zvcm06IHsgdmFsdWU6IG5ldyBUSFJFRS5NYXRyaXgzKCkgfSxcbiAgICAgICAgICAgICAgICBvdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmU6IHsgdmFsdWU6IG51bGwgfSxcbiAgICAgICAgICAgICAgICBvdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmVVdlRyYW5zZm9ybTogeyB2YWx1ZTogbmV3IFRIUkVFLk1hdHJpeDMoKSB9LFxuICAgICAgICAgICAgICAgIG91dGxpbmVXaWR0aEZhY3RvcjogeyB2YWx1ZTogMC41IH0sXG4gICAgICAgICAgICAgICAgb3V0bGluZUNvbG9yRmFjdG9yOiB7IHZhbHVlOiBuZXcgVEhSRUUuQ29sb3IoMC4wLCAwLjAsIDAuMCkgfSxcbiAgICAgICAgICAgICAgICBvdXRsaW5lTGlnaHRpbmdNaXhGYWN0b3I6IHsgdmFsdWU6IDEuMCB9LFxuICAgICAgICAgICAgICAgIHV2QW5pbWF0aW9uTWFza1RleHR1cmU6IHsgdmFsdWU6IG51bGwgfSxcbiAgICAgICAgICAgICAgICB1dkFuaW1hdGlvbk1hc2tUZXh0dXJlVXZUcmFuc2Zvcm06IHsgdmFsdWU6IG5ldyBUSFJFRS5NYXRyaXgzKCkgfSxcbiAgICAgICAgICAgICAgICB1dkFuaW1hdGlvblNjcm9sbFhPZmZzZXQ6IHsgdmFsdWU6IDAuMCB9LFxuICAgICAgICAgICAgICAgIHV2QW5pbWF0aW9uU2Nyb2xsWU9mZnNldDogeyB2YWx1ZTogMC4wIH0sXG4gICAgICAgICAgICAgICAgdXZBbmltYXRpb25Sb3RhdGlvblBoYXNlOiB7IHZhbHVlOiAwLjAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXJhbWV0ZXJzLnVuaWZvcm1zLFxuICAgICAgICBdKTtcbiAgICAgICAgLy8gPT0gZmluYWxseSBjb21waWxlIHRoZSBzaGFkZXIgcHJvZ3JhbSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIHRoaXMuc2V0VmFsdWVzKHBhcmFtZXRlcnMpO1xuICAgICAgICAvLyA9PSB1cGxvYWQgdW5pZm9ybXMgdGhhdCBuZWVkIHRvIHVwbG9hZCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgdGhpcy5fdXBsb2FkVW5pZm9ybXNXb3JrYXJvdW5kKCk7XG4gICAgICAgIC8vID09IHVwZGF0ZSBzaGFkZXIgc3R1ZmYgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICB0aGlzLmN1c3RvbVByb2dyYW1DYWNoZUtleSA9ICgpID0+IFtcbiAgICAgICAgICAgIC4uLk9iamVjdC5lbnRyaWVzKHRoaXMuX2dlbmVyYXRlRGVmaW5lcygpKS5tYXAoKFt0b2tlbiwgbWFjcm9dKSA9PiBgJHt0b2tlbn06JHttYWNyb31gKSxcbiAgICAgICAgICAgIHRoaXMubWF0Y2FwVGV4dHVyZSA/IGBtYXRjYXBUZXh0dXJlQ29sb3JTcGFjZToke2dldFRleHR1cmVDb2xvclNwYWNlKHRoaXMubWF0Y2FwVGV4dHVyZSl9YCA6ICcnLFxuICAgICAgICAgICAgdGhpcy5zaGFkZU11bHRpcGx5VGV4dHVyZVxuICAgICAgICAgICAgICAgID8gYHNoYWRlTXVsdGlwbHlUZXh0dXJlQ29sb3JTcGFjZToke2dldFRleHR1cmVDb2xvclNwYWNlKHRoaXMuc2hhZGVNdWx0aXBseVRleHR1cmUpfWBcbiAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgdGhpcy5yaW1NdWx0aXBseVRleHR1cmUgPyBgcmltTXVsdGlwbHlUZXh0dXJlQ29sb3JTcGFjZToke2dldFRleHR1cmVDb2xvclNwYWNlKHRoaXMucmltTXVsdGlwbHlUZXh0dXJlKX1gIDogJycsXG4gICAgICAgIF0uam9pbignLCcpO1xuICAgICAgICB0aGlzLm9uQmVmb3JlQ29tcGlsZSA9IChzaGFkZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRocmVlUmV2aXNpb24gPSBwYXJzZUludChUSFJFRS5SRVZJU0lPTiwgMTApO1xuICAgICAgICAgICAgY29uc3QgZGVmaW5lcyA9IE9iamVjdC5lbnRyaWVzKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fZ2VuZXJhdGVEZWZpbmVzKCkpLCB0aGlzLmRlZmluZXMpKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKFt0b2tlbiwgbWFjcm9dKSA9PiAhIW1hY3JvKVxuICAgICAgICAgICAgICAgIC5tYXAoKFt0b2tlbiwgbWFjcm9dKSA9PiBgI2RlZmluZSAke3Rva2VufSAke21hY3JvfWApXG4gICAgICAgICAgICAgICAgLmpvaW4oJ1xcbicpICsgJ1xcbic7XG4gICAgICAgICAgICAvLyAtLSBnZW5lcmF0ZSBzaGFkZXIgY29kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICBzaGFkZXIudmVydGV4U2hhZGVyID0gZGVmaW5lcyArIHNoYWRlci52ZXJ0ZXhTaGFkZXI7XG4gICAgICAgICAgICBzaGFkZXIuZnJhZ21lbnRTaGFkZXIgPSBkZWZpbmVzICsgc2hhZGVyLmZyYWdtZW50U2hhZGVyO1xuICAgICAgICAgICAgLy8gLS0gY29tcGF0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gQ09NUEFUOiBwcmUtcjE1NFxuICAgICAgICAgICAgLy8gVGhyZWUuanMgcjE1NCByZW5hbWVzIHRoZSBzaGFkZXIgY2h1bmsgPGNvbG9yc3BhY2VfZnJhZ21lbnQ+IHRvIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG4gICAgICAgICAgICBpZiAodGhyZWVSZXZpc2lvbiA8IDE1NCkge1xuICAgICAgICAgICAgICAgIHNoYWRlci5mcmFnbWVudFNoYWRlciA9IHNoYWRlci5mcmFnbWVudFNoYWRlci5yZXBsYWNlKCcjaW5jbHVkZSA8Y29sb3JzcGFjZV9mcmFnbWVudD4nLCAnI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENPTVBBVDogcHJlLXIxMzJcbiAgICAgICAgICAgIC8vIFRocmVlLmpzIHIxMzIgaW50cm9kdWNlcyBuZXcgc2hhZGVyIGNodW5rcyA8bm9ybWFsX3BhcnNfZnJhZ21lbnQ+IGFuZCA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+XG4gICAgICAgICAgICBpZiAodGhyZWVSZXZpc2lvbiA8IDEzMikge1xuICAgICAgICAgICAgICAgIHNoYWRlci5mcmFnbWVudFNoYWRlciA9IHNoYWRlci5mcmFnbWVudFNoYWRlci5yZXBsYWNlKCcjaW5jbHVkZSA8bm9ybWFsX3BhcnNfZnJhZ21lbnQ+JywgJycpO1xuICAgICAgICAgICAgICAgIHNoYWRlci5mcmFnbWVudFNoYWRlciA9IHNoYWRlci5mcmFnbWVudFNoYWRlci5yZXBsYWNlKCcjaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+JywgJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgdGhpcyBtYXRlcmlhbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkZWx0YSBkZWx0YVRpbWUgc2luY2UgbGFzdCB1cGRhdGVcbiAgICAgKi9cbiAgICB1cGRhdGUoZGVsdGEpIHtcbiAgICAgICAgdGhpcy5fdXBsb2FkVW5pZm9ybXNXb3JrYXJvdW5kKCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVVWQW5pbWF0aW9uKGRlbHRhKTtcbiAgICB9XG4gICAgY29weShzb3VyY2UpIHtcbiAgICAgICAgc3VwZXIuY29weShzb3VyY2UpO1xuICAgICAgICAvLyB1bmlmb3JtcyBhcmUgYWxyZWFkeSBjb3BpZWQgYXQgdGhpcyBtb21lbnRcbiAgICAgICAgLy8gQmVnaW5uaW5nIGZyb20gcjEzMywgdW5pZm9ybSB0ZXh0dXJlcyB3aWxsIGJlIGNsb25lZCBpbnN0ZWFkIG9mIHJlZmVyZW5jZVxuICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tcmRvb2IvdGhyZWUuanMvYmxvYi9hODgxM2JlMDRhODQ5YmQxNTVmN2NmNmYxYjIzZDhlZTJlMGZiNDhiL2V4YW1wbGVzL2pzbS9sb2FkZXJzL0dMVEZMb2FkZXIuanMjTDMwNDdcbiAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL2Jsb2IvYTg4MTNiZTA0YTg0OWJkMTU1ZjdjZjZmMWIyM2Q4ZWUyZTBmYjQ4Yi9zcmMvcmVuZGVyZXJzL3NoYWRlcnMvVW5pZm9ybXNVdGlscy5qcyNMMjJcbiAgICAgICAgLy8gVGhpcyB3aWxsIGxlYXZlIHRoZWlyIGAudmVyc2lvbmAgdG8gYmUgYDBgXG4gICAgICAgIC8vIGFuZCB0aGVzZSB0ZXh0dXJlcyB3b24ndCBiZSB1cGxvYWRlZCB0byBHUFVcbiAgICAgICAgLy8gV2UgYXJlIGdvaW5nIHRvIHdvcmthcm91bmQgdGhpcyBpbiBoZXJlXG4gICAgICAgIC8vIEkndmUgb3BlbmVkIGFuIGlzc3VlIGZvciB0aGlzOiBodHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL2lzc3Vlcy8yMjcxOFxuICAgICAgICB0aGlzLm1hcCA9IHNvdXJjZS5tYXA7XG4gICAgICAgIHRoaXMubm9ybWFsTWFwID0gc291cmNlLm5vcm1hbE1hcDtcbiAgICAgICAgdGhpcy5lbWlzc2l2ZU1hcCA9IHNvdXJjZS5lbWlzc2l2ZU1hcDtcbiAgICAgICAgdGhpcy5zaGFkZU11bHRpcGx5VGV4dHVyZSA9IHNvdXJjZS5zaGFkZU11bHRpcGx5VGV4dHVyZTtcbiAgICAgICAgdGhpcy5zaGFkaW5nU2hpZnRUZXh0dXJlID0gc291cmNlLnNoYWRpbmdTaGlmdFRleHR1cmU7XG4gICAgICAgIHRoaXMubWF0Y2FwVGV4dHVyZSA9IHNvdXJjZS5tYXRjYXBUZXh0dXJlO1xuICAgICAgICB0aGlzLnJpbU11bHRpcGx5VGV4dHVyZSA9IHNvdXJjZS5yaW1NdWx0aXBseVRleHR1cmU7XG4gICAgICAgIHRoaXMub3V0bGluZVdpZHRoTXVsdGlwbHlUZXh0dXJlID0gc291cmNlLm91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZTtcbiAgICAgICAgdGhpcy51dkFuaW1hdGlvbk1hc2tUZXh0dXJlID0gc291cmNlLnV2QW5pbWF0aW9uTWFza1RleHR1cmU7XG4gICAgICAgIC8vID09IGNvcHkgbWVtYmVycyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICB0aGlzLm5vcm1hbE1hcFR5cGUgPSBzb3VyY2Uubm9ybWFsTWFwVHlwZTtcbiAgICAgICAgdGhpcy51dkFuaW1hdGlvblNjcm9sbFhTcGVlZEZhY3RvciA9IHNvdXJjZS51dkFuaW1hdGlvblNjcm9sbFhTcGVlZEZhY3RvcjtcbiAgICAgICAgdGhpcy51dkFuaW1hdGlvblNjcm9sbFlTcGVlZEZhY3RvciA9IHNvdXJjZS51dkFuaW1hdGlvblNjcm9sbFlTcGVlZEZhY3RvcjtcbiAgICAgICAgdGhpcy51dkFuaW1hdGlvblJvdGF0aW9uU3BlZWRGYWN0b3IgPSBzb3VyY2UudXZBbmltYXRpb25Sb3RhdGlvblNwZWVkRmFjdG9yO1xuICAgICAgICB0aGlzLmlnbm9yZVZlcnRleENvbG9yID0gc291cmNlLmlnbm9yZVZlcnRleENvbG9yO1xuICAgICAgICB0aGlzLnYwQ29tcGF0U2hhZGUgPSBzb3VyY2UudjBDb21wYXRTaGFkZTtcbiAgICAgICAgdGhpcy5kZWJ1Z01vZGUgPSBzb3VyY2UuZGVidWdNb2RlO1xuICAgICAgICB0aGlzLm91dGxpbmVXaWR0aE1vZGUgPSBzb3VyY2Uub3V0bGluZVdpZHRoTW9kZTtcbiAgICAgICAgdGhpcy5pc091dGxpbmUgPSBzb3VyY2UuaXNPdXRsaW5lO1xuICAgICAgICAvLyA9PSB1cGRhdGUgc2hhZGVyIHN0dWZmID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgdGhpcy5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgVVYgYW5pbWF0aW9uIHN0YXRlLlxuICAgICAqIEludGVuZGVkIHRvIGJlIGNhbGxlZCB2aWEge0BsaW5rIHVwZGF0ZX0uXG4gICAgICogQHBhcmFtIGRlbHRhIGRlbHRhVGltZVxuICAgICAqL1xuICAgIF91cGRhdGVVVkFuaW1hdGlvbihkZWx0YSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1zLnV2QW5pbWF0aW9uU2Nyb2xsWE9mZnNldC52YWx1ZSArPSBkZWx0YSAqIHRoaXMudXZBbmltYXRpb25TY3JvbGxYU3BlZWRGYWN0b3I7XG4gICAgICAgIHRoaXMudW5pZm9ybXMudXZBbmltYXRpb25TY3JvbGxZT2Zmc2V0LnZhbHVlICs9IGRlbHRhICogdGhpcy51dkFuaW1hdGlvblNjcm9sbFlTcGVlZEZhY3RvcjtcbiAgICAgICAgdGhpcy51bmlmb3Jtcy51dkFuaW1hdGlvblJvdGF0aW9uUGhhc2UudmFsdWUgKz0gZGVsdGEgKiB0aGlzLnV2QW5pbWF0aW9uUm90YXRpb25TcGVlZEZhY3RvcjtcbiAgICAgICAgdGhpcy51bmlmb3Jtc05lZWRVcGRhdGUgPSB0cnVlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgdW5pZm9ybXMgdGhhdCBuZWVkIHRvIHVwbG9hZCBidXQgZG9lc24ndCBhdXRvbWF0aWNhbGx5IGJlY2F1c2Ugb2YgcmVhc29ucy5cbiAgICAgKiBJbnRlbmRlZCB0byBiZSBjYWxsZWQgdmlhIHtAbGluayBjb25zdHJ1Y3Rvcn0gYW5kIHtAbGluayB1cGRhdGV9LlxuICAgICAqL1xuICAgIF91cGxvYWRVbmlmb3Jtc1dvcmthcm91bmQoKSB7XG4gICAgICAgIC8vIHdvcmthcm91bmQ6IHNpbmNlIG9wYWNpdHkgaXMgZGVmaW5lZCBhcyBhIHByb3BlcnR5IGluIFRIUkVFLk1hdGVyaWFsXG4gICAgICAgIC8vIGFuZCBjYW5ub3QgYmUgb3ZlcnJpZGRlbiBhcyBhbiBhY2Nlc3NvcixcbiAgICAgICAgLy8gV2UgYXJlIGdvaW5nIHRvIHVwZGF0ZSBvcGFjaXR5IGhlcmVcbiAgICAgICAgdGhpcy51bmlmb3Jtcy5vcGFjaXR5LnZhbHVlID0gdGhpcy5vcGFjaXR5O1xuICAgICAgICAvLyB3b3JrYXJvdW5kOiB0ZXh0dXJlIHRyYW5zZm9ybXMgYXJlIG5vdCB1cGRhdGVkIGF1dG9tYXRpY2FsbHlcbiAgICAgICAgdGhpcy5fdXBkYXRlVGV4dHVyZU1hdHJpeCh0aGlzLnVuaWZvcm1zLm1hcCwgdGhpcy51bmlmb3Jtcy5tYXBVdlRyYW5zZm9ybSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVRleHR1cmVNYXRyaXgodGhpcy51bmlmb3Jtcy5ub3JtYWxNYXAsIHRoaXMudW5pZm9ybXMubm9ybWFsTWFwVXZUcmFuc2Zvcm0pO1xuICAgICAgICB0aGlzLl91cGRhdGVUZXh0dXJlTWF0cml4KHRoaXMudW5pZm9ybXMuZW1pc3NpdmVNYXAsIHRoaXMudW5pZm9ybXMuZW1pc3NpdmVNYXBVdlRyYW5zZm9ybSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVRleHR1cmVNYXRyaXgodGhpcy51bmlmb3Jtcy5zaGFkZU11bHRpcGx5VGV4dHVyZSwgdGhpcy51bmlmb3Jtcy5zaGFkZU11bHRpcGx5VGV4dHVyZVV2VHJhbnNmb3JtKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVGV4dHVyZU1hdHJpeCh0aGlzLnVuaWZvcm1zLnNoYWRpbmdTaGlmdFRleHR1cmUsIHRoaXMudW5pZm9ybXMuc2hhZGluZ1NoaWZ0VGV4dHVyZVV2VHJhbnNmb3JtKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVGV4dHVyZU1hdHJpeCh0aGlzLnVuaWZvcm1zLm1hdGNhcFRleHR1cmUsIHRoaXMudW5pZm9ybXMubWF0Y2FwVGV4dHVyZVV2VHJhbnNmb3JtKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVGV4dHVyZU1hdHJpeCh0aGlzLnVuaWZvcm1zLnJpbU11bHRpcGx5VGV4dHVyZSwgdGhpcy51bmlmb3Jtcy5yaW1NdWx0aXBseVRleHR1cmVVdlRyYW5zZm9ybSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVRleHR1cmVNYXRyaXgodGhpcy51bmlmb3Jtcy5vdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmUsIHRoaXMudW5pZm9ybXMub3V0bGluZVdpZHRoTXVsdGlwbHlUZXh0dXJlVXZUcmFuc2Zvcm0pO1xuICAgICAgICB0aGlzLl91cGRhdGVUZXh0dXJlTWF0cml4KHRoaXMudW5pZm9ybXMudXZBbmltYXRpb25NYXNrVGV4dHVyZSwgdGhpcy51bmlmb3Jtcy51dkFuaW1hdGlvbk1hc2tUZXh0dXJlVXZUcmFuc2Zvcm0pO1xuICAgICAgICAvLyBDT01QQVQgd29ya2Fyb3VuZDogc3RhcnRpbmcgZnJvbSByMTMyLCBhbHBoYVRlc3QgYmVjb21lcyBhIHVuaWZvcm0gaW5zdGVhZCBvZiBwcmVwcm9jZXNzb3IgdmFsdWVcbiAgICAgICAgY29uc3QgdGhyZWVSZXZpc2lvbiA9IHBhcnNlSW50KFRIUkVFLlJFVklTSU9OLCAxMCk7XG4gICAgICAgIGlmICh0aHJlZVJldmlzaW9uID49IDEzMikge1xuICAgICAgICAgICAgdGhpcy51bmlmb3Jtcy5hbHBoYVRlc3QudmFsdWUgPSB0aGlzLmFscGhhVGVzdDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVuaWZvcm1zTmVlZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBtYXAgb2JqZWN0IG9mIHByZXByb2Nlc3NvciB0b2tlbiBhbmQgbWFjcm8gb2YgdGhlIHNoYWRlciBwcm9ncmFtLlxuICAgICAqL1xuICAgIF9nZW5lcmF0ZURlZmluZXMoKSB7XG4gICAgICAgIGNvbnN0IHRocmVlUmV2aXNpb24gPSBwYXJzZUludChUSFJFRS5SRVZJU0lPTiwgMTApO1xuICAgICAgICBjb25zdCB1c2VVdkluVmVydCA9IHRoaXMub3V0bGluZVdpZHRoTXVsdGlwbHlUZXh0dXJlICE9PSBudWxsO1xuICAgICAgICBjb25zdCB1c2VVdkluRnJhZyA9IHRoaXMubWFwICE9PSBudWxsIHx8XG4gICAgICAgICAgICB0aGlzLmVtaXNzaXZlTWFwICE9PSBudWxsIHx8XG4gICAgICAgICAgICB0aGlzLnNoYWRlTXVsdGlwbHlUZXh0dXJlICE9PSBudWxsIHx8XG4gICAgICAgICAgICB0aGlzLnNoYWRpbmdTaGlmdFRleHR1cmUgIT09IG51bGwgfHxcbiAgICAgICAgICAgIHRoaXMucmltTXVsdGlwbHlUZXh0dXJlICE9PSBudWxsIHx8XG4gICAgICAgICAgICB0aGlzLnV2QW5pbWF0aW9uTWFza1RleHR1cmUgIT09IG51bGw7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAvLyBUZW1wb3JhcnkgY29tcGF0IGFnYWluc3Qgc2hhZGVyIGNoYW5nZSBAIFRocmVlLmpzIHIxMjZcbiAgICAgICAgICAgIC8vIFNlZTogIzIxMjA1LCAjMjEzMDcsICMyMTI5OVxuICAgICAgICAgICAgVEhSRUVfVlJNX1RIUkVFX1JFVklTSU9OOiB0aHJlZVJldmlzaW9uLFxuICAgICAgICAgICAgT1VUTElORTogdGhpcy5faXNPdXRsaW5lLFxuICAgICAgICAgICAgTVRPT05fVVNFX1VWOiB1c2VVdkluVmVydCB8fCB1c2VVdkluRnJhZyxcbiAgICAgICAgICAgIE1UT09OX1VWU19WRVJURVhfT05MWTogdXNlVXZJblZlcnQgJiYgIXVzZVV2SW5GcmFnLFxuICAgICAgICAgICAgVjBfQ09NUEFUX1NIQURFOiB0aGlzLl92MENvbXBhdFNoYWRlLFxuICAgICAgICAgICAgVVNFX1NIQURFTVVMVElQTFlURVhUVVJFOiB0aGlzLnNoYWRlTXVsdGlwbHlUZXh0dXJlICE9PSBudWxsLFxuICAgICAgICAgICAgVVNFX1NIQURJTkdTSElGVFRFWFRVUkU6IHRoaXMuc2hhZGluZ1NoaWZ0VGV4dHVyZSAhPT0gbnVsbCxcbiAgICAgICAgICAgIFVTRV9NQVRDQVBURVhUVVJFOiB0aGlzLm1hdGNhcFRleHR1cmUgIT09IG51bGwsXG4gICAgICAgICAgICBVU0VfUklNTVVMVElQTFlURVhUVVJFOiB0aGlzLnJpbU11bHRpcGx5VGV4dHVyZSAhPT0gbnVsbCxcbiAgICAgICAgICAgIFVTRV9PVVRMSU5FV0lEVEhNVUxUSVBMWVRFWFRVUkU6IHRoaXMuX2lzT3V0bGluZSAmJiB0aGlzLm91dGxpbmVXaWR0aE11bHRpcGx5VGV4dHVyZSAhPT0gbnVsbCxcbiAgICAgICAgICAgIFVTRV9VVkFOSU1BVElPTk1BU0tURVhUVVJFOiB0aGlzLnV2QW5pbWF0aW9uTWFza1RleHR1cmUgIT09IG51bGwsXG4gICAgICAgICAgICBJR05PUkVfVkVSVEVYX0NPTE9SOiB0aGlzLl9pZ25vcmVWZXJ0ZXhDb2xvciA9PT0gdHJ1ZSxcbiAgICAgICAgICAgIERFQlVHX05PUk1BTDogdGhpcy5fZGVidWdNb2RlID09PSAnbm9ybWFsJyxcbiAgICAgICAgICAgIERFQlVHX0xJVFNIQURFUkFURTogdGhpcy5fZGVidWdNb2RlID09PSAnbGl0U2hhZGVSYXRlJyxcbiAgICAgICAgICAgIERFQlVHX1VWOiB0aGlzLl9kZWJ1Z01vZGUgPT09ICd1dicsXG4gICAgICAgICAgICBPVVRMSU5FX1dJRFRIX1dPUkxEOiB0aGlzLl9pc091dGxpbmUgJiYgdGhpcy5fb3V0bGluZVdpZHRoTW9kZSA9PT0gTVRvb25NYXRlcmlhbE91dGxpbmVXaWR0aE1vZGUuV29ybGRDb29yZGluYXRlcyxcbiAgICAgICAgICAgIE9VVExJTkVfV0lEVEhfU0NSRUVOOiB0aGlzLl9pc091dGxpbmUgJiYgdGhpcy5fb3V0bGluZVdpZHRoTW9kZSA9PT0gTVRvb25NYXRlcmlhbE91dGxpbmVXaWR0aE1vZGUuU2NyZWVuQ29vcmRpbmF0ZXMsXG4gICAgICAgIH07XG4gICAgfVxuICAgIF91cGRhdGVUZXh0dXJlTWF0cml4KHNyYywgZHN0KSB7XG4gICAgICAgIGlmIChzcmMudmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChzcmMudmFsdWUubWF0cml4QXV0b1VwZGF0ZSkge1xuICAgICAgICAgICAgICAgIHNyYy52YWx1ZS51cGRhdGVNYXRyaXgoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRzdC52YWx1ZS5jb3B5KHNyYy52YWx1ZS5tYXRyaXgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5jb25zdCBjb2xvclNwYWNlRW5jb2RpbmdNYXAgPSB7XG4gICAgJyc6IDMwMDAsXG4gICAgc3JnYjogMzAwMSxcbn07XG4vKipcbiAqIEEgY29tcGF0IGZ1bmN0aW9uIHRvIHNldCB0ZXh0dXJlIGNvbG9yIHNwYWNlLlxuICpcbiAqIENPTVBBVDogcHJlLXIxNTJcbiAqIFN0YXJ0aW5nIGZyb20gVGhyZWUuanMgcjE1MiwgYHRleHR1cmUuZW5jb2RpbmdgIGlzIHJlbmFtZWQgdG8gYHRleHR1cmUuY29sb3JTcGFjZWAuXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgaGFuZGxlIHRoZSBjb21hcHQuXG4gKlxuICogQHBhcmFtIHRleHR1cmUgVGhlIHRleHR1cmUgeW91IHdhbnQgdG8gc2V0IHRoZSBjb2xvciBzcGFjZSB0b1xuICogQHBhcmFtIGNvbG9yU3BhY2UgVGhlIGNvbG9yIHNwYWNlIHlvdSB3YW50IHRvIHNldCB0byB0aGUgdGV4dHVyZVxuICovXG5mdW5jdGlvbiBzZXRUZXh0dXJlQ29sb3JTcGFjZSh0ZXh0dXJlLCBjb2xvclNwYWNlKSB7XG4gICAgaWYgKHBhcnNlSW50KFRIUkVFLlJFVklTSU9OLCAxMCkgPj0gMTUyKSB7XG4gICAgICAgIHRleHR1cmUuY29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0ZXh0dXJlLmVuY29kaW5nID0gY29sb3JTcGFjZUVuY29kaW5nTWFwW2NvbG9yU3BhY2VdO1xuICAgIH1cbn1cblxuLyoqXG4gKiBNYXRlcmlhbFBhcmFtZXRlcnMgaGF0ZXMgYHVuZGVmaW5lZGAuIFRoaXMgaGVscGVyIGF1dG9tYXRpY2FsbHkgcmVqZWN0cyBhc3NpZ24gb2YgdGhlc2UgYHVuZGVmaW5lZGAuXG4gKiBJdCBhbHNvIGhhbmRsZXMgYXN5bmNocm9ub3VzIHByb2Nlc3Mgb2YgdGV4dHVyZXMuXG4gKiBNYWtlIHN1cmUgYXdhaXQgZm9yIHtAbGluayBHTFRGTVRvb25NYXRlcmlhbFBhcmFtc0Fzc2lnbkhlbHBlci5wZW5kaW5nfS5cbiAqL1xuY2xhc3MgR0xURk1Ub29uTWF0ZXJpYWxQYXJhbXNBc3NpZ25IZWxwZXIge1xuICAgIGdldCBwZW5kaW5nKCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwodGhpcy5fcGVuZGluZ3MpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihwYXJzZXIsIG1hdGVyaWFsUGFyYW1zKSB7XG4gICAgICAgIHRoaXMuX3BhcnNlciA9IHBhcnNlcjtcbiAgICAgICAgdGhpcy5fbWF0ZXJpYWxQYXJhbXMgPSBtYXRlcmlhbFBhcmFtcztcbiAgICAgICAgdGhpcy5fcGVuZGluZ3MgPSBbXTtcbiAgICB9XG4gICAgYXNzaWduUHJpbWl0aXZlKGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX21hdGVyaWFsUGFyYW1zW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3NpZ25Db2xvcihrZXksIHZhbHVlLCBjb252ZXJ0U1JHQlRvTGluZWFyKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9tYXRlcmlhbFBhcmFtc1trZXldID0gbmV3IFRIUkVFLkNvbG9yKCkuZnJvbUFycmF5KHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChjb252ZXJ0U1JHQlRvTGluZWFyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWF0ZXJpYWxQYXJhbXNba2V5XS5jb252ZXJ0U1JHQlRvTGluZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXNzaWduVGV4dHVyZShrZXksIHRleHR1cmUsIGlzQ29sb3JUZXh0dXJlKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gKCgpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGV4dHVyZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHlpZWxkIHRoaXMuX3BhcnNlci5hc3NpZ25UZXh0dXJlKHRoaXMuX21hdGVyaWFsUGFyYW1zLCBrZXksIHRleHR1cmUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDb2xvclRleHR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRleHR1cmVDb2xvclNwYWNlKHRoaXMuX21hdGVyaWFsUGFyYW1zW2tleV0sICdzcmdiJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSkoKTtcbiAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdzLnB1c2gocHJvbWlzZSk7XG4gICAgICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzc2lnblRleHR1cmVCeUluZGV4KGtleSwgdGV4dHVyZUluZGV4LCBpc0NvbG9yVGV4dHVyZSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNzaWduVGV4dHVyZShrZXksIHRleHR1cmVJbmRleCAhPSBudWxsID8geyBpbmRleDogdGV4dHVyZUluZGV4IH0gOiB1bmRlZmluZWQsIGlzQ29sb3JUZXh0dXJlKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIFBvc3NpYmxlIHNwZWMgdmVyc2lvbnMgaXQgcmVjb2duaXplcy5cbiAqL1xuY29uc3QgUE9TU0lCTEVfU1BFQ19WRVJTSU9OUyA9IG5ldyBTZXQoWycxLjAnLCAnMS4wLWJldGEnXSk7XG5jbGFzcyBNVG9vbk1hdGVyaWFsTG9hZGVyUGx1Z2luIHtcbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIE1Ub29uTWF0ZXJpYWxMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUU7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhcnNlciwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICAgICAgdGhpcy5yZW5kZXJPcmRlck9mZnNldCA9IChfYSA9IG9wdGlvbnMucmVuZGVyT3JkZXJPZmZzZXQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDA7XG4gICAgICAgIHRoaXMudjBDb21wYXRTaGFkZSA9IChfYiA9IG9wdGlvbnMudjBDb21wYXRTaGFkZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogZmFsc2U7XG4gICAgICAgIHRoaXMuZGVidWdNb2RlID0gKF9jID0gb3B0aW9ucy5kZWJ1Z01vZGUpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICdub25lJztcbiAgICAgICAgdGhpcy5fbVRvb25NYXRlcmlhbFNldCA9IG5ldyBTZXQoKTtcbiAgICB9XG4gICAgYmVmb3JlUm9vdCgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZVVubGl0RXh0ZW5zaW9uSWZNVG9vbkV4aXN0cygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYWZ0ZXJSb290KGdsdGYpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGdsdGYudXNlckRhdGEudnJtTVRvb25NYXRlcmlhbHMgPSBBcnJheS5mcm9tKHRoaXMuX21Ub29uTWF0ZXJpYWxTZXQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0TWF0ZXJpYWxUeXBlKG1hdGVyaWFsSW5kZXgpIHtcbiAgICAgICAgY29uc3QgdjFFeHRlbnNpb24gPSB0aGlzLl9nZXRNVG9vbkV4dGVuc2lvbihtYXRlcmlhbEluZGV4KTtcbiAgICAgICAgaWYgKHYxRXh0ZW5zaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gTVRvb25NYXRlcmlhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZXh0ZW5kTWF0ZXJpYWxQYXJhbXMobWF0ZXJpYWxJbmRleCwgbWF0ZXJpYWxQYXJhbXMpIHtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gdGhpcy5fZ2V0TVRvb25FeHRlbnNpb24obWF0ZXJpYWxJbmRleCk7XG4gICAgICAgIGlmIChleHRlbnNpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9leHRlbmRNYXRlcmlhbFBhcmFtcyhleHRlbnNpb24sIG1hdGVyaWFsUGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgbG9hZE1lc2gobWVzaEluZGV4KSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMucGFyc2VyO1xuICAgICAgICAgICAgY29uc3QganNvbiA9IHBhcnNlci5qc29uO1xuICAgICAgICAgICAgY29uc3QgbWVzaERlZiA9IChfYSA9IGpzb24ubWVzaGVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbbWVzaEluZGV4XTtcbiAgICAgICAgICAgIGlmIChtZXNoRGVmID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1Ub29uTWF0ZXJpYWxMb2FkZXJQbHVnaW46IEF0dGVtcHQgdG8gdXNlIG1lc2hlc1ske21lc2hJbmRleH1dIG9mIGdsVEYgYnV0IHRoZSBtZXNoIGRvZXNuJ3QgZXhpc3RgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHByaW1pdGl2ZXNEZWYgPSBtZXNoRGVmLnByaW1pdGl2ZXM7XG4gICAgICAgICAgICBjb25zdCBtZXNoT3JHcm91cCA9IHlpZWxkIHBhcnNlci5sb2FkTWVzaChtZXNoSW5kZXgpO1xuICAgICAgICAgICAgaWYgKHByaW1pdGl2ZXNEZWYubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVzaCA9IG1lc2hPckdyb3VwO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsSW5kZXggPSBwcmltaXRpdmVzRGVmWzBdLm1hdGVyaWFsO1xuICAgICAgICAgICAgICAgIGlmIChtYXRlcmlhbEluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBQcmltaXRpdmUobWVzaCwgbWF0ZXJpYWxJbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBtZXNoT3JHcm91cDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByaW1pdGl2ZXNEZWYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzaCA9IGdyb3VwLmNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRlcmlhbEluZGV4ID0gcHJpbWl0aXZlc0RlZltpXS5tYXRlcmlhbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGVyaWFsSW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBQcmltaXRpdmUobWVzaCwgbWF0ZXJpYWxJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWVzaE9yR3JvdXA7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWxldGUgdXNlIG9mIGBLSFJfbWF0ZXJpYWxzX3VubGl0YCBmcm9tIGl0cyBgbWF0ZXJpYWxzYCBpZiB0aGUgbWF0ZXJpYWwgaXMgdXNpbmcgTVRvb24uXG4gICAgICpcbiAgICAgKiBTaW5jZSBHTFRGTG9hZGVyIGhhdmUgc28gbWFueSBoYXJkY29kZWQgcHJvY2VkdXJlIHJlbGF0ZWQgdG8gYEtIUl9tYXRlcmlhbHNfdW5saXRgXG4gICAgICogd2UgaGF2ZSB0byBkZWxldGUgdGhlIGV4dGVuc2lvbiBiZWZvcmUgd2Ugc3RhcnQgdG8gcGFyc2UgdGhlIGdsVEYuXG4gICAgICovXG4gICAgX3JlbW92ZVVubGl0RXh0ZW5zaW9uSWZNVG9vbkV4aXN0cygpIHtcbiAgICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5wYXJzZXI7XG4gICAgICAgIGNvbnN0IGpzb24gPSBwYXJzZXIuanNvbjtcbiAgICAgICAgY29uc3QgbWF0ZXJpYWxEZWZzID0ganNvbi5tYXRlcmlhbHM7XG4gICAgICAgIG1hdGVyaWFsRGVmcyA9PT0gbnVsbCB8fCBtYXRlcmlhbERlZnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1hdGVyaWFsRGVmcy5tYXAoKG1hdGVyaWFsRGVmLCBpTWF0ZXJpYWwpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IHRoaXMuX2dldE1Ub29uRXh0ZW5zaW9uKGlNYXRlcmlhbCk7XG4gICAgICAgICAgICBpZiAoZXh0ZW5zaW9uICYmICgoX2EgPSBtYXRlcmlhbERlZi5leHRlbnNpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbJ0tIUl9tYXRlcmlhbHNfdW5saXQnXSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgbWF0ZXJpYWxEZWYuZXh0ZW5zaW9uc1snS0hSX21hdGVyaWFsc191bmxpdCddO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgX2dldE1Ub29uRXh0ZW5zaW9uKG1hdGVyaWFsSW5kZXgpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5wYXJzZXI7XG4gICAgICAgIGNvbnN0IGpzb24gPSBwYXJzZXIuanNvbjtcbiAgICAgICAgY29uc3QgbWF0ZXJpYWxEZWYgPSAoX2EgPSBqc29uLm1hdGVyaWFscykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW21hdGVyaWFsSW5kZXhdO1xuICAgICAgICBpZiAobWF0ZXJpYWxEZWYgPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBNVG9vbk1hdGVyaWFsTG9hZGVyUGx1Z2luOiBBdHRlbXB0IHRvIHVzZSBtYXRlcmlhbHNbJHttYXRlcmlhbEluZGV4fV0gb2YgZ2xURiBidXQgdGhlIG1hdGVyaWFsIGRvZXNuJ3QgZXhpc3RgKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gKF9iID0gbWF0ZXJpYWxEZWYuZXh0ZW5zaW9ucykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iW01Ub29uTWF0ZXJpYWxMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUVdO1xuICAgICAgICBpZiAoZXh0ZW5zaW9uID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3BlY1ZlcnNpb24gPSBleHRlbnNpb24uc3BlY1ZlcnNpb247XG4gICAgICAgIGlmICghUE9TU0lCTEVfU1BFQ19WRVJTSU9OUy5oYXMoc3BlY1ZlcnNpb24pKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYE1Ub29uTWF0ZXJpYWxMb2FkZXJQbHVnaW46IFVua25vd24gJHtNVG9vbk1hdGVyaWFsTG9hZGVyUGx1Z2luLkVYVEVOU0lPTl9OQU1FfSBzcGVjVmVyc2lvbiBcIiR7c3BlY1ZlcnNpb259XCJgKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV4dGVuc2lvbjtcbiAgICB9XG4gICAgX2V4dGVuZE1hdGVyaWFsUGFyYW1zKGV4dGVuc2lvbiwgbWF0ZXJpYWxQYXJhbXMpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgLy8gUmVtb3ZpbmcgbWF0ZXJpYWwgcGFyYW1zIHRoYXQgaXMgbm90IHJlcXVpcmVkIHRvIHN1cHJlc3Mgd2FybmluZ3MuXG4gICAgICAgICAgICBkZWxldGUgbWF0ZXJpYWxQYXJhbXMubWV0YWxuZXNzO1xuICAgICAgICAgICAgZGVsZXRlIG1hdGVyaWFsUGFyYW1zLnJvdWdobmVzcztcbiAgICAgICAgICAgIGNvbnN0IGFzc2lnbkhlbHBlciA9IG5ldyBHTFRGTVRvb25NYXRlcmlhbFBhcmFtc0Fzc2lnbkhlbHBlcih0aGlzLnBhcnNlciwgbWF0ZXJpYWxQYXJhbXMpO1xuICAgICAgICAgICAgYXNzaWduSGVscGVyLmFzc2lnblByaW1pdGl2ZSgndHJhbnNwYXJlbnRXaXRoWldyaXRlJywgZXh0ZW5zaW9uLnRyYW5zcGFyZW50V2l0aFpXcml0ZSk7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduQ29sb3IoJ3NoYWRlQ29sb3JGYWN0b3InLCBleHRlbnNpb24uc2hhZGVDb2xvckZhY3Rvcik7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduVGV4dHVyZSgnc2hhZGVNdWx0aXBseVRleHR1cmUnLCBleHRlbnNpb24uc2hhZGVNdWx0aXBseVRleHR1cmUsIHRydWUpO1xuICAgICAgICAgICAgYXNzaWduSGVscGVyLmFzc2lnblByaW1pdGl2ZSgnc2hhZGluZ1NoaWZ0RmFjdG9yJywgZXh0ZW5zaW9uLnNoYWRpbmdTaGlmdEZhY3Rvcik7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduVGV4dHVyZSgnc2hhZGluZ1NoaWZ0VGV4dHVyZScsIGV4dGVuc2lvbi5zaGFkaW5nU2hpZnRUZXh0dXJlLCB0cnVlKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25QcmltaXRpdmUoJ3NoYWRpbmdTaGlmdFRleHR1cmVTY2FsZScsIChfYSA9IGV4dGVuc2lvbi5zaGFkaW5nU2hpZnRUZXh0dXJlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2NhbGUpO1xuICAgICAgICAgICAgYXNzaWduSGVscGVyLmFzc2lnblByaW1pdGl2ZSgnc2hhZGluZ1Rvb255RmFjdG9yJywgZXh0ZW5zaW9uLnNoYWRpbmdUb29ueUZhY3Rvcik7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduUHJpbWl0aXZlKCdnaUVxdWFsaXphdGlvbkZhY3RvcicsIGV4dGVuc2lvbi5naUVxdWFsaXphdGlvbkZhY3Rvcik7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduQ29sb3IoJ21hdGNhcEZhY3RvcicsIGV4dGVuc2lvbi5tYXRjYXBGYWN0b3IpO1xuICAgICAgICAgICAgYXNzaWduSGVscGVyLmFzc2lnblRleHR1cmUoJ21hdGNhcFRleHR1cmUnLCBleHRlbnNpb24ubWF0Y2FwVGV4dHVyZSwgdHJ1ZSk7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduQ29sb3IoJ3BhcmFtZXRyaWNSaW1Db2xvckZhY3RvcicsIGV4dGVuc2lvbi5wYXJhbWV0cmljUmltQ29sb3JGYWN0b3IpO1xuICAgICAgICAgICAgYXNzaWduSGVscGVyLmFzc2lnblRleHR1cmUoJ3JpbU11bHRpcGx5VGV4dHVyZScsIGV4dGVuc2lvbi5yaW1NdWx0aXBseVRleHR1cmUsIHRydWUpO1xuICAgICAgICAgICAgYXNzaWduSGVscGVyLmFzc2lnblByaW1pdGl2ZSgncmltTGlnaHRpbmdNaXhGYWN0b3InLCBleHRlbnNpb24ucmltTGlnaHRpbmdNaXhGYWN0b3IpO1xuICAgICAgICAgICAgYXNzaWduSGVscGVyLmFzc2lnblByaW1pdGl2ZSgncGFyYW1ldHJpY1JpbUZyZXNuZWxQb3dlckZhY3RvcicsIGV4dGVuc2lvbi5wYXJhbWV0cmljUmltRnJlc25lbFBvd2VyRmFjdG9yKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25QcmltaXRpdmUoJ3BhcmFtZXRyaWNSaW1MaWZ0RmFjdG9yJywgZXh0ZW5zaW9uLnBhcmFtZXRyaWNSaW1MaWZ0RmFjdG9yKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25QcmltaXRpdmUoJ291dGxpbmVXaWR0aE1vZGUnLCBleHRlbnNpb24ub3V0bGluZVdpZHRoTW9kZSk7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduUHJpbWl0aXZlKCdvdXRsaW5lV2lkdGhGYWN0b3InLCBleHRlbnNpb24ub3V0bGluZVdpZHRoRmFjdG9yKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25UZXh0dXJlKCdvdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmUnLCBleHRlbnNpb24ub3V0bGluZVdpZHRoTXVsdGlwbHlUZXh0dXJlLCBmYWxzZSk7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduQ29sb3IoJ291dGxpbmVDb2xvckZhY3RvcicsIGV4dGVuc2lvbi5vdXRsaW5lQ29sb3JGYWN0b3IpO1xuICAgICAgICAgICAgYXNzaWduSGVscGVyLmFzc2lnblByaW1pdGl2ZSgnb3V0bGluZUxpZ2h0aW5nTWl4RmFjdG9yJywgZXh0ZW5zaW9uLm91dGxpbmVMaWdodGluZ01peEZhY3Rvcik7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduVGV4dHVyZSgndXZBbmltYXRpb25NYXNrVGV4dHVyZScsIGV4dGVuc2lvbi51dkFuaW1hdGlvbk1hc2tUZXh0dXJlLCBmYWxzZSk7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduUHJpbWl0aXZlKCd1dkFuaW1hdGlvblNjcm9sbFhTcGVlZEZhY3RvcicsIGV4dGVuc2lvbi51dkFuaW1hdGlvblNjcm9sbFhTcGVlZEZhY3Rvcik7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduUHJpbWl0aXZlKCd1dkFuaW1hdGlvblNjcm9sbFlTcGVlZEZhY3RvcicsIGV4dGVuc2lvbi51dkFuaW1hdGlvblNjcm9sbFlTcGVlZEZhY3Rvcik7XG4gICAgICAgICAgICBhc3NpZ25IZWxwZXIuYXNzaWduUHJpbWl0aXZlKCd1dkFuaW1hdGlvblJvdGF0aW9uU3BlZWRGYWN0b3InLCBleHRlbnNpb24udXZBbmltYXRpb25Sb3RhdGlvblNwZWVkRmFjdG9yKTtcbiAgICAgICAgICAgIGFzc2lnbkhlbHBlci5hc3NpZ25QcmltaXRpdmUoJ3YwQ29tcGF0U2hhZGUnLCB0aGlzLnYwQ29tcGF0U2hhZGUpO1xuICAgICAgICAgICAgYXNzaWduSGVscGVyLmFzc2lnblByaW1pdGl2ZSgnZGVidWdNb2RlJywgdGhpcy5kZWJ1Z01vZGUpO1xuICAgICAgICAgICAgeWllbGQgYXNzaWduSGVscGVyLnBlbmRpbmc7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGlzIHdpbGwgZG8gdHdvIHByb2Nlc3NlcyB0aGF0IGlzIHJlcXVpcmVkIHRvIHJlbmRlciBNVG9vbiBwcm9wZXJseS5cbiAgICAgKlxuICAgICAqIC0gU2V0IHJlbmRlciBvcmRlclxuICAgICAqIC0gR2VuZXJhdGUgb3V0bGluZVxuICAgICAqXG4gICAgICogQHBhcmFtIG1lc2ggQSB0YXJnZXQgR0xURiBwcmltaXRpdmVcbiAgICAgKiBAcGFyYW0gbWF0ZXJpYWxJbmRleCBUaGUgbWF0ZXJpYWwgaW5kZXggb2YgdGhlIHByaW1pdGl2ZVxuICAgICAqL1xuICAgIF9zZXR1cFByaW1pdGl2ZShtZXNoLCBtYXRlcmlhbEluZGV4KSB7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IHRoaXMuX2dldE1Ub29uRXh0ZW5zaW9uKG1hdGVyaWFsSW5kZXgpO1xuICAgICAgICBpZiAoZXh0ZW5zaW9uKSB7XG4gICAgICAgICAgICBjb25zdCByZW5kZXJPcmRlciA9IHRoaXMuX3BhcnNlUmVuZGVyT3JkZXIoZXh0ZW5zaW9uKTtcbiAgICAgICAgICAgIG1lc2gucmVuZGVyT3JkZXIgPSByZW5kZXJPcmRlciArIHRoaXMucmVuZGVyT3JkZXJPZmZzZXQ7XG4gICAgICAgICAgICB0aGlzLl9nZW5lcmF0ZU91dGxpbmUobWVzaCk7XG4gICAgICAgICAgICB0aGlzLl9hZGRUb01hdGVyaWFsU2V0KG1lc2gpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlIG91dGxpbmUgZm9yIHRoZSBnaXZlbiBtZXNoLCBpZiBpdCBuZWVkcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBtZXNoIFRoZSB0YXJnZXQgbWVzaFxuICAgICAqL1xuICAgIF9nZW5lcmF0ZU91dGxpbmUobWVzaCkge1xuICAgICAgICAvLyBPSywgaXQncyB0aGUgaGFja3kgcGFydC5cbiAgICAgICAgLy8gV2UgYXJlIGdvaW5nIHRvIGR1cGxpY2F0ZSB0aGUgTVRvb25NYXRlcmlhbCBmb3Igb3V0bGluZSB1c2UuXG4gICAgICAgIC8vIFRoZW4gd2UgYXJlIGdvaW5nIHRvIGNyZWF0ZSB0d28gZ2VvbWV0cnkgZ3JvdXBzIGFuZCByZWZlciBzYW1lIGJ1ZmZlciBidXQgZGlmZmVyZW50IG1hdGVyaWFsLlxuICAgICAgICAvLyBJdCdzIGhvdyB3ZSBkcmF3IHR3byBtYXRlcmlhbHMgYXQgb25jZSB1c2luZyBhIHNpbmdsZSBtZXNoLlxuICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIG1hdGVyaWFsIGlzIG10b29uXG4gICAgICAgIGNvbnN0IHN1cmZhY2VNYXRlcmlhbCA9IG1lc2gubWF0ZXJpYWw7XG4gICAgICAgIGlmICghKHN1cmZhY2VNYXRlcmlhbCBpbnN0YW5jZW9mIE1Ub29uTWF0ZXJpYWwpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2hlY2sgd2hldGhlciB3ZSByZWFsbHkgaGF2ZSB0byBwcmVwYXJlIG91dGxpbmUgb3Igbm90XG4gICAgICAgIGlmIChzdXJmYWNlTWF0ZXJpYWwub3V0bGluZVdpZHRoTW9kZSA9PT0gJ25vbmUnIHx8IHN1cmZhY2VNYXRlcmlhbC5vdXRsaW5lV2lkdGhGYWN0b3IgPD0gMC4wKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gbWFrZSBpdHMgbWF0ZXJpYWwgYW4gYXJyYXlcbiAgICAgICAgbWVzaC5tYXRlcmlhbCA9IFtzdXJmYWNlTWF0ZXJpYWxdOyAvLyBtZXNoLm1hdGVyaWFsIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBNYXRlcmlhbCBpbiBHTFRGTG9hZGVyXG4gICAgICAgIC8vIGR1cGxpY2F0ZSB0aGUgbWF0ZXJpYWwgZm9yIG91dGxpbmUgdXNlXG4gICAgICAgIGNvbnN0IG91dGxpbmVNYXRlcmlhbCA9IHN1cmZhY2VNYXRlcmlhbC5jbG9uZSgpO1xuICAgICAgICBvdXRsaW5lTWF0ZXJpYWwubmFtZSArPSAnIChPdXRsaW5lKSc7XG4gICAgICAgIG91dGxpbmVNYXRlcmlhbC5pc091dGxpbmUgPSB0cnVlO1xuICAgICAgICBvdXRsaW5lTWF0ZXJpYWwuc2lkZSA9IFRIUkVFLkJhY2tTaWRlO1xuICAgICAgICBtZXNoLm1hdGVyaWFsLnB1c2gob3V0bGluZU1hdGVyaWFsKTtcbiAgICAgICAgLy8gbWFrZSB0d28gZ2VvbWV0cnkgZ3JvdXBzIG91dCBvZiBhIHNhbWUgYnVmZmVyXG4gICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gbWVzaC5nZW9tZXRyeTsgLy8gbWVzaC5nZW9tZXRyeSBpcyBndWFyYW50ZWVkIHRvIGJlIGEgQnVmZmVyR2VvbWV0cnkgaW4gR0xURkxvYWRlclxuICAgICAgICBjb25zdCBwcmltaXRpdmVWZXJ0aWNlcyA9IGdlb21ldHJ5LmluZGV4ID8gZ2VvbWV0cnkuaW5kZXguY291bnQgOiBnZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLmNvdW50IC8gMztcbiAgICAgICAgZ2VvbWV0cnkuYWRkR3JvdXAoMCwgcHJpbWl0aXZlVmVydGljZXMsIDApO1xuICAgICAgICBnZW9tZXRyeS5hZGRHcm91cCgwLCBwcmltaXRpdmVWZXJ0aWNlcywgMSk7XG4gICAgfVxuICAgIF9hZGRUb01hdGVyaWFsU2V0KG1lc2gpIHtcbiAgICAgICAgY29uc3QgbWF0ZXJpYWxPck1hdGVyaWFscyA9IG1lc2gubWF0ZXJpYWw7XG4gICAgICAgIGNvbnN0IG1hdGVyaWFsU2V0ID0gbmV3IFNldCgpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtYXRlcmlhbE9yTWF0ZXJpYWxzKSkge1xuICAgICAgICAgICAgbWF0ZXJpYWxPck1hdGVyaWFscy5mb3JFYWNoKChtYXRlcmlhbCkgPT4gbWF0ZXJpYWxTZXQuYWRkKG1hdGVyaWFsKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtYXRlcmlhbFNldC5hZGQobWF0ZXJpYWxPck1hdGVyaWFscyk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBtYXRlcmlhbCBvZiBtYXRlcmlhbFNldCkge1xuICAgICAgICAgICAgaWYgKG1hdGVyaWFsIGluc3RhbmNlb2YgTVRvb25NYXRlcmlhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21Ub29uTWF0ZXJpYWxTZXQuYWRkKG1hdGVyaWFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBfcGFyc2VSZW5kZXJPcmRlcihleHRlbnNpb24pIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAvLyB0cmFuc3BhcmVudFdpdGhaV3JpdGUgcmFuZ2VzIGZyb20gMCB0byArOVxuICAgICAgICAvLyBtZXJlIHRyYW5zcGFyZW50IHJhbmdlcyBmcm9tIC05IHRvIDBcbiAgICAgICAgY29uc3QgZW5hYmxlZFpXcml0ZSA9IGV4dGVuc2lvbi50cmFuc3BhcmVudFdpdGhaV3JpdGU7XG4gICAgICAgIHJldHVybiAoZW5hYmxlZFpXcml0ZSA/IDAgOiAxOSkgKyAoKF9hID0gZXh0ZW5zaW9uLnJlbmRlclF1ZXVlT2Zmc2V0TnVtYmVyKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwKTtcbiAgICB9XG59XG5NVG9vbk1hdGVyaWFsTG9hZGVyUGx1Z2luLkVYVEVOU0lPTl9OQU1FID0gJ1ZSTUNfbWF0ZXJpYWxzX210b29uJztcblxuZXhwb3J0IHsgTVRvb25NYXRlcmlhbCwgTVRvb25NYXRlcmlhbERlYnVnTW9kZSwgTVRvb25NYXRlcmlhbExvYWRlclBsdWdpbiwgTVRvb25NYXRlcmlhbE91dGxpbmVXaWR0aE1vZGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEdoeVpXVXRkbkp0TFcxaGRHVnlhV0ZzY3kxdGRHOXZiaTV0YjJSMWJHVXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyNXZaR1ZmYlc5a2RXeGxjeTkwYzJ4cFlpOTBjMnhwWWk1bGN6WXVhbk1pTENJdUxpOXpjbU12VFZSdmIyNU5ZWFJsY21saGJFUmxZblZuVFc5a1pTNTBjeUlzSWk0dUwzTnlZeTlOVkc5dmJrMWhkR1Z5YVdGc1QzVjBiR2x1WlZkcFpIUm9UVzlrWlM1MGN5SXNJaTR1TDNOeVl5OTFkR2xzY3k5blpYUlVaWGgwZFhKbFEyOXNiM0pUY0dGalpTNTBjeUlzSWk0dUwzTnlZeTlOVkc5dmJrMWhkR1Z5YVdGc0xuUnpJaXdpTGk0dmMzSmpMM1YwYVd4ekwzTmxkRlJsZUhSMWNtVkRiMnh2Y2xOd1lXTmxMblJ6SWl3aUxpNHZjM0pqTDBkTVZFWk5WRzl2YmsxaGRHVnlhV0ZzVUdGeVlXMXpRWE56YVdkdVNHVnNjR1Z5TG5Seklpd2lMaTR2YzNKakwwMVViMjl1VFdGMFpYSnBZV3hNYjJGa1pYSlFiSFZuYVc0dWRITWlYU3dpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLbHh5WEc1RGIzQjVjbWxuYUhRZ0tHTXBJRTFwWTNKdmMyOW1kQ0JEYjNKd2IzSmhkR2x2Ymk1Y2NseHVYSEpjYmxCbGNtMXBjM05wYjI0Z2RHOGdkWE5sTENCamIzQjVMQ0J0YjJScFpua3NJR0Z1WkM5dmNpQmthWE4wY21saWRYUmxJSFJvYVhNZ2MyOW1kSGRoY21VZ1ptOXlJR0Z1ZVZ4eVhHNXdkWEp3YjNObElIZHBkR2dnYjNJZ2QybDBhRzkxZENCbVpXVWdhWE1nYUdWeVpXSjVJR2R5WVc1MFpXUXVYSEpjYmx4eVhHNVVTRVVnVTA5R1ZGZEJVa1VnU1ZNZ1VGSlBWa2xFUlVRZ1hDSkJVeUJKVTF3aUlFRk9SQ0JVU0VVZ1FWVlVTRTlTSUVSSlUwTk1RVWxOVXlCQlRFd2dWMEZTVWtGT1ZFbEZVeUJYU1ZSSVhISmNibEpGUjBGU1JDQlVUeUJVU0VsVElGTlBSbFJYUVZKRklFbE9RMHhWUkVsT1J5QkJURXdnU1UxUVRFbEZSQ0JYUVZKU1FVNVVTVVZUSUU5R0lFMUZVa05JUVU1VVFVSkpURWxVV1Z4eVhHNUJUa1FnUmtsVVRrVlRVeTRnU1U0Z1RrOGdSVlpGVGxRZ1UwaEJURXdnVkVoRklFRlZWRWhQVWlCQ1JTQk1TVUZDVEVVZ1JrOVNJRUZPV1NCVFVFVkRTVUZNTENCRVNWSkZRMVFzWEhKY2JrbE9SRWxTUlVOVUxDQlBVaUJEVDA1VFJWRlZSVTVVU1VGTUlFUkJUVUZIUlZNZ1QxSWdRVTVaSUVSQlRVRkhSVk1nVjBoQlZGTlBSVlpGVWlCU1JWTlZURlJKVGtjZ1JsSlBUVnh5WEc1TVQxTlRJRTlHSUZWVFJTd2dSRUZVUVNCUFVpQlFVazlHU1ZSVExDQlhTRVZVU0VWU0lFbE9JRUZPSUVGRFZFbFBUaUJQUmlCRFQwNVVVa0ZEVkN3Z1RrVkhURWxIUlU1RFJTQlBVbHh5WEc1UFZFaEZVaUJVVDFKVVNVOVZVeUJCUTFSSlQwNHNJRUZTU1ZOSlRrY2dUMVZVSUU5R0lFOVNJRWxPSUVOUFRrNUZRMVJKVDA0Z1YwbFVTQ0JVU0VVZ1ZWTkZJRTlTWEhKY2JsQkZVa1pQVWsxQlRrTkZJRTlHSUZSSVNWTWdVMDlHVkZkQlVrVXVYSEpjYmlvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FJQ292WEhKY2JpOHFJR2RzYjJKaGJDQlNaV1pzWldOMExDQlFjbTl0YVhObElDb3ZYSEpjYmx4eVhHNTJZWElnWlhoMFpXNWtVM1JoZEdsamN5QTlJR1oxYm1OMGFXOXVLR1FzSUdJcElIdGNjbHh1SUNBZ0lHVjRkR1Z1WkZOMFlYUnBZM01nUFNCUFltcGxZM1F1YzJWMFVISnZkRzkwZVhCbFQyWWdmSHhjY2x4dUlDQWdJQ0FnSUNBb2V5QmZYM0J5YjNSdlgxODZJRnRkSUgwZ2FXNXpkR0Z1WTJWdlppQkJjbkpoZVNBbUppQm1kVzVqZEdsdmJpQW9aQ3dnWWlrZ2V5QmtMbDlmY0hKdmRHOWZYeUE5SUdJN0lIMHBJSHg4WEhKY2JpQWdJQ0FnSUNBZ1puVnVZM1JwYjI0Z0tHUXNJR0lwSUhzZ1ptOXlJQ2gyWVhJZ2NDQnBiaUJpS1NCcFppQW9UMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLR0lzSUhBcEtTQmtXM0JkSUQwZ1lsdHdYVHNnZlR0Y2NseHVJQ0FnSUhKbGRIVnliaUJsZUhSbGJtUlRkR0YwYVdOektHUXNJR0lwTzF4eVhHNTlPMXh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZaWGgwWlc1a2N5aGtMQ0JpS1NCN1hISmNiaUFnSUNCcFppQW9kSGx3Wlc5bUlHSWdJVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQW1KaUJpSUNFOVBTQnVkV3hzS1Z4eVhHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pEYkdGemN5QmxlSFJsYm1SeklIWmhiSFZsSUZ3aUlDc2dVM1J5YVc1bktHSXBJQ3NnWENJZ2FYTWdibTkwSUdFZ1kyOXVjM1J5ZFdOMGIzSWdiM0lnYm5Wc2JGd2lLVHRjY2x4dUlDQWdJR1Y0ZEdWdVpGTjBZWFJwWTNNb1pDd2dZaWs3WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJmWHlncElIc2dkR2hwY3k1amIyNXpkSEoxWTNSdmNpQTlJR1E3SUgxY2NseHVJQ0FnSUdRdWNISnZkRzkwZVhCbElEMGdZaUE5UFQwZ2JuVnNiQ0EvSUU5aWFtVmpkQzVqY21WaGRHVW9ZaWtnT2lBb1gxOHVjSEp2ZEc5MGVYQmxJRDBnWWk1d2NtOTBiM1I1Y0dVc0lHNWxkeUJmWHlncEtUdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJSFpoY2lCZlgyRnpjMmxuYmlBOUlHWjFibU4wYVc5dUtDa2dlMXh5WEc0Z0lDQWdYMTloYzNOcFoyNGdQU0JQWW1wbFkzUXVZWE56YVdkdUlIeDhJR1oxYm1OMGFXOXVJRjlmWVhOemFXZHVLSFFwSUh0Y2NseHVJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQnpMQ0JwSUQwZ01Td2diaUE5SUdGeVozVnRaVzUwY3k1c1pXNW5kR2c3SUdrZ1BDQnVPeUJwS3lzcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2N5QTlJR0Z5WjNWdFpXNTBjMXRwWFR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaDJZWElnY0NCcGJpQnpLU0JwWmlBb1QySnFaV04wTG5CeWIzUnZkSGx3WlM1b1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tITXNJSEFwS1NCMFczQmRJRDBnYzF0d1hUdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhRN1hISmNiaUFnSUNCOVhISmNiaUFnSUNCeVpYUjFjbTRnWDE5aGMzTnBaMjR1WVhCd2JIa29kR2hwY3l3Z1lYSm5kVzFsYm5SektUdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmY21WemRDaHpMQ0JsS1NCN1hISmNiaUFnSUNCMllYSWdkQ0E5SUh0OU8xeHlYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2NDQnBiaUJ6S1NCcFppQW9UMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLSE1zSUhBcElDWW1JR1V1YVc1a1pYaFBaaWh3S1NBOElEQXBYSEpjYmlBZ0lDQWdJQ0FnZEZ0d1hTQTlJSE5iY0YwN1hISmNiaUFnSUNCcFppQW9jeUFoUFNCdWRXeHNJQ1ltSUhSNWNHVnZaaUJQWW1wbFkzUXVaMlYwVDNkdVVISnZjR1Z5ZEhsVGVXMWliMnh6SUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwWEhKY2JpQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREFzSUhBZ1BTQlBZbXBsWTNRdVoyVjBUM2R1VUhKdmNHVnlkSGxUZVcxaWIyeHpLSE1wT3lCcElEd2djQzVzWlc1bmRHZzdJR2tyS3lrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9aUzVwYm1SbGVFOW1LSEJiYVYwcElEd2dNQ0FtSmlCUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG5CeWIzQmxjblI1U1hORmJuVnRaWEpoWW14bExtTmhiR3dvY3l3Z2NGdHBYU2twWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMFczQmJhVjFkSUQwZ2MxdHdXMmxkWFR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQnlaWFIxY200Z2REdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmWkdWamIzSmhkR1VvWkdWamIzSmhkRzl5Y3l3Z2RHRnlaMlYwTENCclpYa3NJR1JsYzJNcElIdGNjbHh1SUNBZ0lIWmhjaUJqSUQwZ1lYSm5kVzFsYm5SekxteGxibWQwYUN3Z2NpQTlJR01nUENBeklEOGdkR0Z5WjJWMElEb2daR1Z6WXlBOVBUMGdiblZzYkNBL0lHUmxjMk1nUFNCUFltcGxZM1F1WjJWMFQzZHVVSEp2Y0dWeWRIbEVaWE5qY21sd2RHOXlLSFJoY21kbGRDd2dhMlY1S1NBNklHUmxjMk1zSUdRN1hISmNiaUFnSUNCcFppQW9kSGx3Wlc5bUlGSmxabXhsWTNRZ1BUMDlJRndpYjJKcVpXTjBYQ0lnSmlZZ2RIbHdaVzltSUZKbFpteGxZM1F1WkdWamIzSmhkR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnY2lBOUlGSmxabXhsWTNRdVpHVmpiM0poZEdVb1pHVmpiM0poZEc5eWN5d2dkR0Z5WjJWMExDQnJaWGtzSUdSbGMyTXBPMXh5WEc0Z0lDQWdaV3h6WlNCbWIzSWdLSFpoY2lCcElEMGdaR1ZqYjNKaGRHOXljeTVzWlc1bmRHZ2dMU0F4T3lCcElENDlJREE3SUdrdExTa2dhV1lnS0dRZ1BTQmtaV052Y21GMGIzSnpXMmxkS1NCeUlEMGdLR01nUENBeklEOGdaQ2h5S1NBNklHTWdQaUF6SUQ4Z1pDaDBZWEpuWlhRc0lHdGxlU3dnY2lrZ09pQmtLSFJoY21kbGRDd2dhMlY1S1NrZ2ZId2djanRjY2x4dUlDQWdJSEpsZEhWeWJpQmpJRDRnTXlBbUppQnlJQ1ltSUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaDBZWEpuWlhRc0lHdGxlU3dnY2lrc0lISTdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNCaGNtRnRLSEJoY21GdFNXNWtaWGdzSUdSbFkyOXlZWFJ2Y2lrZ2UxeHlYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1SUNoMFlYSm5aWFFzSUd0bGVTa2dleUJrWldOdmNtRjBiM0lvZEdGeVoyVjBMQ0JyWlhrc0lIQmhjbUZ0U1c1a1pYZ3BPeUI5WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyVnpSR1ZqYjNKaGRHVW9ZM1J2Y2l3Z1pHVnpZM0pwY0hSdmNrbHVMQ0JrWldOdmNtRjBiM0p6TENCamIyNTBaWGgwU1c0c0lHbHVhWFJwWVd4cGVtVnljeXdnWlhoMGNtRkpibWwwYVdGc2FYcGxjbk1wSUh0Y2NseHVJQ0FnSUdaMWJtTjBhVzl1SUdGalkyVndkQ2htS1NCN0lHbG1JQ2htSUNFOVBTQjJiMmxrSURBZ0ppWWdkSGx3Wlc5bUlHWWdJVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWtaMWJtTjBhVzl1SUdWNGNHVmpkR1ZrWENJcE95QnlaWFIxY200Z1pqc2dmVnh5WEc0Z0lDQWdkbUZ5SUd0cGJtUWdQU0JqYjI1MFpYaDBTVzR1YTJsdVpDd2dhMlY1SUQwZ2EybHVaQ0E5UFQwZ1hDSm5aWFIwWlhKY0lpQS9JRndpWjJWMFhDSWdPaUJyYVc1a0lEMDlQU0JjSW5ObGRIUmxjbHdpSUQ4Z1hDSnpaWFJjSWlBNklGd2lkbUZzZFdWY0lqdGNjbHh1SUNBZ0lIWmhjaUIwWVhKblpYUWdQU0FoWkdWelkzSnBjSFJ2Y2tsdUlDWW1JR04wYjNJZ1B5QmpiMjUwWlhoMFNXNWJYQ0p6ZEdGMGFXTmNJbDBnUHlCamRHOXlJRG9nWTNSdmNpNXdjbTkwYjNSNWNHVWdPaUJ1ZFd4c08xeHlYRzRnSUNBZ2RtRnlJR1JsYzJOeWFYQjBiM0lnUFNCa1pYTmpjbWx3ZEc5eVNXNGdmSHdnS0hSaGNtZGxkQ0EvSUU5aWFtVmpkQzVuWlhSUGQyNVFjbTl3WlhKMGVVUmxjMk55YVhCMGIzSW9kR0Z5WjJWMExDQmpiMjUwWlhoMFNXNHVibUZ0WlNrZ09pQjdmU2s3WEhKY2JpQWdJQ0IyWVhJZ1h5d2daRzl1WlNBOUlHWmhiSE5sTzF4eVhHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlHUmxZMjl5WVhSdmNuTXViR1Z1WjNSb0lDMGdNVHNnYVNBK1BTQXdPeUJwTFMwcElIdGNjbHh1SUNBZ0lDQWdJQ0IyWVhJZ1kyOXVkR1Y0ZENBOUlIdDlPMXh5WEc0Z0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUhBZ2FXNGdZMjl1ZEdWNGRFbHVLU0JqYjI1MFpYaDBXM0JkSUQwZ2NDQTlQVDBnWENKaFkyTmxjM05jSWlBL0lIdDlJRG9nWTI5dWRHVjRkRWx1VzNCZE8xeHlYRzRnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJSEFnYVc0Z1kyOXVkR1Y0ZEVsdUxtRmpZMlZ6Y3lrZ1kyOXVkR1Y0ZEM1aFkyTmxjM05iY0YwZ1BTQmpiMjUwWlhoMFNXNHVZV05qWlhOelczQmRPMXh5WEc0Z0lDQWdJQ0FnSUdOdmJuUmxlSFF1WVdSa1NXNXBkR2xoYkdsNlpYSWdQU0JtZFc1amRHbHZiaUFvWmlrZ2V5QnBaaUFvWkc5dVpTa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWtOaGJtNXZkQ0JoWkdRZ2FXNXBkR2xoYkdsNlpYSnpJR0ZtZEdWeUlHUmxZMjl5WVhScGIyNGdhR0Z6SUdOdmJYQnNaWFJsWkZ3aUtUc2daWGgwY21GSmJtbDBhV0ZzYVhwbGNuTXVjSFZ6YUNoaFkyTmxjSFFvWmlCOGZDQnVkV3hzS1NrN0lIMDdYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlISmxjM1ZzZENBOUlDZ3dMQ0JrWldOdmNtRjBiM0p6VzJsZEtTaHJhVzVrSUQwOVBTQmNJbUZqWTJWemMyOXlYQ0lnUHlCN0lHZGxkRG9nWkdWelkzSnBjSFJ2Y2k1blpYUXNJSE5sZERvZ1pHVnpZM0pwY0hSdmNpNXpaWFFnZlNBNklHUmxjMk55YVhCMGIzSmJhMlY1WFN3Z1kyOXVkR1Y0ZENrN1hISmNiaUFnSUNBZ0lDQWdhV1lnS0d0cGJtUWdQVDA5SUZ3aVlXTmpaWE56YjNKY0lpa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY21WemRXeDBJRDA5UFNCMmIybGtJREFwSUdOdmJuUnBiblZsTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NtVnpkV3gwSUQwOVBTQnVkV3hzSUh4OElIUjVjR1Z2WmlCeVpYTjFiSFFnSVQwOUlGd2liMkpxWldOMFhDSXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKUFltcGxZM1FnWlhod1pXTjBaV1JjSWlrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaGZJRDBnWVdOalpYQjBLSEpsYzNWc2RDNW5aWFFwS1NCa1pYTmpjbWx3ZEc5eUxtZGxkQ0E5SUY4N1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaGZJRDBnWVdOalpYQjBLSEpsYzNWc2RDNXpaWFFwS1NCa1pYTmpjbWx3ZEc5eUxuTmxkQ0E5SUY4N1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaGZJRDBnWVdOalpYQjBLSEpsYzNWc2RDNXBibWwwS1NrZ2FXNXBkR2xoYkdsNlpYSnpMbkIxYzJnb1h5azdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tGOGdQU0JoWTJObGNIUW9jbVZ6ZFd4MEtTa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYTJsdVpDQTlQVDBnWENKbWFXVnNaRndpS1NCcGJtbDBhV0ZzYVhwbGNuTXVjSFZ6YUNoZktUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0JrWlhOamNtbHdkRzl5VzJ0bGVWMGdQU0JmTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNBZ0lHbG1JQ2gwWVhKblpYUXBJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNoMFlYSm5aWFFzSUdOdmJuUmxlSFJKYmk1dVlXMWxMQ0JrWlhOamNtbHdkRzl5S1R0Y2NseHVJQ0FnSUdSdmJtVWdQU0IwY25WbE8xeHlYRzU5TzF4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmY25WdVNXNXBkR2xoYkdsNlpYSnpLSFJvYVhOQmNtY3NJR2x1YVhScFlXeHBlbVZ5Y3l3Z2RtRnNkV1VwSUh0Y2NseHVJQ0FnSUhaaGNpQjFjMlZXWVd4MVpTQTlJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dQaUF5TzF4eVhHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCcGJtbDBhV0ZzYVhwbGNuTXViR1Z1WjNSb095QnBLeXNwSUh0Y2NseHVJQ0FnSUNBZ0lDQjJZV3gxWlNBOUlIVnpaVlpoYkhWbElEOGdhVzVwZEdsaGJHbDZaWEp6VzJsZExtTmhiR3dvZEdocGMwRnlaeXdnZG1Gc2RXVXBJRG9nYVc1cGRHbGhiR2w2WlhKelcybGRMbU5oYkd3b2RHaHBjMEZ5WnlrN1hISmNiaUFnSUNCOVhISmNiaUFnSUNCeVpYUjFjbTRnZFhObFZtRnNkV1VnUHlCMllXeDFaU0E2SUhadmFXUWdNRHRjY2x4dWZUdGNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgzQnliM0JMWlhrb2VDa2dlMXh5WEc0Z0lDQWdjbVYwZFhKdUlIUjVjR1Z2WmlCNElEMDlQU0JjSW5ONWJXSnZiRndpSUQ4Z2VDQTZJRndpWENJdVkyOXVZMkYwS0hncE8xeHlYRzU5TzF4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmYzJWMFJuVnVZM1JwYjI1T1lXMWxLR1lzSUc1aGJXVXNJSEJ5WldacGVDa2dlMXh5WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ1WVcxbElEMDlQU0JjSW5ONWJXSnZiRndpS1NCdVlXMWxJRDBnYm1GdFpTNWtaWE5qY21sd2RHbHZiaUEvSUZ3aVcxd2lMbU52Ym1OaGRDaHVZVzFsTG1SbGMyTnlhWEIwYVc5dUxDQmNJbDFjSWlrZ09pQmNJbHdpTzF4eVhHNGdJQ0FnY21WMGRYSnVJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNobUxDQmNJbTVoYldWY0lpd2dleUJqYjI1bWFXZDFjbUZpYkdVNklIUnlkV1VzSUhaaGJIVmxPaUJ3Y21WbWFYZ2dQeUJjSWx3aUxtTnZibU5oZENod2NtVm1hWGdzSUZ3aUlGd2lMQ0J1WVcxbEtTQTZJRzVoYldVZ2ZTazdYSEpjYm4wN1hISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5dFpYUmhaR0YwWVNodFpYUmhaR0YwWVV0bGVTd2diV1YwWVdSaGRHRldZV3gxWlNrZ2UxeHlYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQlNaV1pzWldOMElEMDlQU0JjSW05aWFtVmpkRndpSUNZbUlIUjVjR1Z2WmlCU1pXWnNaV04wTG0xbGRHRmtZWFJoSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUhKbGRIVnliaUJTWldac1pXTjBMbTFsZEdGa1lYUmhLRzFsZEdGa1lYUmhTMlY1TENCdFpYUmhaR0YwWVZaaGJIVmxLVHRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZllYZGhhWFJsY2loMGFHbHpRWEpuTENCZllYSm5kVzFsYm5SekxDQlFMQ0JuWlc1bGNtRjBiM0lwSUh0Y2NseHVJQ0FnSUdaMWJtTjBhVzl1SUdGa2IzQjBLSFpoYkhWbEtTQjdJSEpsZEhWeWJpQjJZV3gxWlNCcGJuTjBZVzVqWlc5bUlGQWdQeUIyWVd4MVpTQTZJRzVsZHlCUUtHWjFibU4wYVc5dUlDaHlaWE52YkhabEtTQjdJSEpsYzI5c2RtVW9kbUZzZFdVcE95QjlLVHNnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJRzVsZHlBb1VDQjhmQ0FvVUNBOUlGQnliMjFwYzJVcEtTaG1kVzVqZEdsdmJpQW9jbVZ6YjJ4MlpTd2djbVZxWldOMEtTQjdYSEpjYmlBZ0lDQWdJQ0FnWm5WdVkzUnBiMjRnWm5Wc1ptbHNiR1ZrS0haaGJIVmxLU0I3SUhSeWVTQjdJSE4wWlhBb1oyVnVaWEpoZEc5eUxtNWxlSFFvZG1Gc2RXVXBLVHNnZlNCallYUmphQ0FvWlNrZ2V5QnlaV3BsWTNRb1pTazdJSDBnZlZ4eVhHNGdJQ0FnSUNBZ0lHWjFibU4wYVc5dUlISmxhbVZqZEdWa0tIWmhiSFZsS1NCN0lIUnllU0I3SUhOMFpYQW9aMlZ1WlhKaGRHOXlXMXdpZEdoeWIzZGNJbDBvZG1Gc2RXVXBLVHNnZlNCallYUmphQ0FvWlNrZ2V5QnlaV3BsWTNRb1pTazdJSDBnZlZ4eVhHNGdJQ0FnSUNBZ0lHWjFibU4wYVc5dUlITjBaWEFvY21WemRXeDBLU0I3SUhKbGMzVnNkQzVrYjI1bElEOGdjbVZ6YjJ4MlpTaHlaWE4xYkhRdWRtRnNkV1VwSURvZ1lXUnZjSFFvY21WemRXeDBMblpoYkhWbEtTNTBhR1Z1S0daMWJHWnBiR3hsWkN3Z2NtVnFaV04wWldRcE95QjlYSEpjYmlBZ0lDQWdJQ0FnYzNSbGNDZ29aMlZ1WlhKaGRHOXlJRDBnWjJWdVpYSmhkRzl5TG1Gd2NHeDVLSFJvYVhOQmNtY3NJRjloY21kMWJXVnVkSE1nZkh3Z1cxMHBLUzV1WlhoMEtDa3BPMXh5WEc0Z0lDQWdmU2s3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyZGxibVZ5WVhSdmNpaDBhR2x6UVhKbkxDQmliMlI1S1NCN1hISmNiaUFnSUNCMllYSWdYeUE5SUhzZ2JHRmlaV3c2SURBc0lITmxiblE2SUdaMWJtTjBhVzl1S0NrZ2V5QnBaaUFvZEZzd1hTQW1JREVwSUhSb2NtOTNJSFJiTVYwN0lISmxkSFZ5YmlCMFd6RmRPeUI5TENCMGNubHpPaUJiWFN3Z2IzQnpPaUJiWFNCOUxDQm1MQ0I1TENCMExDQm5PMXh5WEc0Z0lDQWdjbVYwZFhKdUlHY2dQU0I3SUc1bGVIUTZJSFpsY21Jb01Da3NJRndpZEdoeWIzZGNJam9nZG1WeVlpZ3hLU3dnWENKeVpYUjFjbTVjSWpvZ2RtVnlZaWd5S1NCOUxDQjBlWEJsYjJZZ1UzbHRZbTlzSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lnSmlZZ0tHZGJVM2x0WW05c0xtbDBaWEpoZEc5eVhTQTlJR1oxYm1OMGFXOXVLQ2tnZXlCeVpYUjFjbTRnZEdocGN6c2dmU2tzSUdjN1hISmNiaUFnSUNCbWRXNWpkR2x2YmlCMlpYSmlLRzRwSUhzZ2NtVjBkWEp1SUdaMWJtTjBhVzl1SUNoMktTQjdJSEpsZEhWeWJpQnpkR1Z3S0Z0dUxDQjJYU2s3SUgwN0lIMWNjbHh1SUNBZ0lHWjFibU4wYVc5dUlITjBaWEFvYjNBcElIdGNjbHh1SUNBZ0lDQWdJQ0JwWmlBb1ppa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWtkbGJtVnlZWFJ2Y2lCcGN5QmhiSEpsWVdSNUlHVjRaV04xZEdsdVp5NWNJaWs3WEhKY2JpQWdJQ0FnSUNBZ2QyaHBiR1VnS0djZ0ppWWdLR2NnUFNBd0xDQnZjRnN3WFNBbUppQW9YeUE5SURBcEtTd2dYeWtnZEhKNUlIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR1lnUFNBeExDQjVJQ1ltSUNoMElEMGdiM0JiTUYwZ0ppQXlJRDhnZVZ0Y0luSmxkSFZ5Ymx3aVhTQTZJRzl3V3pCZElEOGdlVnRjSW5Sb2NtOTNYQ0pkSUh4OElDZ29kQ0E5SUhsYlhDSnlaWFIxY201Y0lsMHBJQ1ltSUhRdVkyRnNiQ2g1S1N3Z01Da2dPaUI1TG01bGVIUXBJQ1ltSUNFb2RDQTlJSFF1WTJGc2JDaDVMQ0J2Y0ZzeFhTa3BMbVJ2Ym1VcElISmxkSFZ5YmlCME8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9lU0E5SURBc0lIUXBJRzl3SUQwZ1cyOXdXekJkSUNZZ01pd2dkQzUyWVd4MVpWMDdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lITjNhWFJqYUNBb2IzQmJNRjBwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnTURvZ1kyRnpaU0F4T2lCMElEMGdiM0E3SUdKeVpXRnJPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQTBPaUJmTG14aFltVnNLeXM3SUhKbGRIVnliaUI3SUhaaGJIVmxPaUJ2Y0ZzeFhTd2daRzl1WlRvZ1ptRnNjMlVnZlR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnTlRvZ1h5NXNZV0psYkNzck95QjVJRDBnYjNCYk1WMDdJRzl3SUQwZ1d6QmRPeUJqYjI1MGFXNTFaVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdOem9nYjNBZ1BTQmZMbTl3Y3k1d2IzQW9LVHNnWHk1MGNubHpMbkJ2Y0NncE95QmpiMjUwYVc1MVpUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1JsWm1GMWJIUTZYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0VvZENBOUlGOHVkSEo1Y3l3Z2RDQTlJSFF1YkdWdVozUm9JRDRnTUNBbUppQjBXM1F1YkdWdVozUm9JQzBnTVYwcElDWW1JQ2h2Y0Zzd1hTQTlQVDBnTmlCOGZDQnZjRnN3WFNBOVBUMGdNaWtwSUhzZ1h5QTlJREE3SUdOdmJuUnBiblZsT3lCOVhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHOXdXekJkSUQwOVBTQXpJQ1ltSUNnaGRDQjhmQ0FvYjNCYk1WMGdQaUIwV3pCZElDWW1JRzl3V3pGZElEd2dkRnN6WFNrcEtTQjdJRjh1YkdGaVpXd2dQU0J2Y0ZzeFhUc2dZbkpsWVdzN0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iM0JiTUYwZ1BUMDlJRFlnSmlZZ1h5NXNZV0psYkNBOElIUmJNVjBwSUhzZ1h5NXNZV0psYkNBOUlIUmJNVjA3SUhRZ1BTQnZjRHNnWW5KbFlXczdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZENBbUppQmZMbXhoWW1Wc0lEd2dkRnN5WFNrZ2V5QmZMbXhoWW1Wc0lEMGdkRnN5WFRzZ1h5NXZjSE11Y0hWemFDaHZjQ2s3SUdKeVpXRnJPeUI5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSYk1sMHBJRjh1YjNCekxuQnZjQ2dwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRjh1ZEhKNWN5NXdiM0FvS1RzZ1kyOXVkR2x1ZFdVN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYjNBZ1BTQmliMlI1TG1OaGJHd29kR2hwYzBGeVp5d2dYeWs3WEhKY2JpQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pTa2dleUJ2Y0NBOUlGczJMQ0JsWFRzZ2VTQTlJREE3SUgwZ1ptbHVZV3hzZVNCN0lHWWdQU0IwSUQwZ01Ec2dmVnh5WEc0Z0lDQWdJQ0FnSUdsbUlDaHZjRnN3WFNBbUlEVXBJSFJvY205M0lHOXdXekZkT3lCeVpYUjFjbTRnZXlCMllXeDFaVG9nYjNCYk1GMGdQeUJ2Y0ZzeFhTQTZJSFp2YVdRZ01Dd2daRzl1WlRvZ2RISjFaU0I5TzF4eVhHNGdJQ0FnZlZ4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ2RtRnlJRjlmWTNKbFlYUmxRbWx1WkdsdVp5QTlJRTlpYW1WamRDNWpjbVZoZEdVZ1B5QW9ablZ1WTNScGIyNG9ieXdnYlN3Z2F5d2dheklwSUh0Y2NseHVJQ0FnSUdsbUlDaHJNaUE5UFQwZ2RXNWtaV1pwYm1Wa0tTQnJNaUE5SUdzN1hISmNiaUFnSUNCMllYSWdaR1Z6WXlBOUlFOWlhbVZqZEM1blpYUlBkMjVRY205d1pYSjBlVVJsYzJOeWFYQjBiM0lvYlN3Z2F5azdYSEpjYmlBZ0lDQnBaaUFvSVdSbGMyTWdmSHdnS0Z3aVoyVjBYQ0lnYVc0Z1pHVnpZeUEvSUNGdExsOWZaWE5OYjJSMWJHVWdPaUJrWlhOakxuZHlhWFJoWW14bElIeDhJR1JsYzJNdVkyOXVabWxuZFhKaFlteGxLU2tnZTF4eVhHNGdJQ0FnSUNBZ0lHUmxjMk1nUFNCN0lHVnVkVzFsY21GaWJHVTZJSFJ5ZFdVc0lHZGxkRG9nWm5WdVkzUnBiMjRvS1NCN0lISmxkSFZ5YmlCdFcydGRPeUI5SUgwN1hISmNiaUFnSUNCOVhISmNiaUFnSUNCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29ieXdnYXpJc0lHUmxjMk1wTzF4eVhHNTlLU0E2SUNobWRXNWpkR2x2YmlodkxDQnRMQ0JyTENCck1pa2dlMXh5WEc0Z0lDQWdhV1lnS0dzeUlEMDlQU0IxYm1SbFptbHVaV1FwSUdzeUlEMGdhenRjY2x4dUlDQWdJRzliYXpKZElEMGdiVnRyWFR0Y2NseHVmU2s3WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTlsZUhCdmNuUlRkR0Z5S0cwc0lHOHBJSHRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJSEFnYVc0Z2JTa2dhV1lnS0hBZ0lUMDlJRndpWkdWbVlYVnNkRndpSUNZbUlDRlBZbXBsWTNRdWNISnZkRzkwZVhCbExtaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29ieXdnY0NrcElGOWZZM0psWVhSbFFtbHVaR2x1WnlodkxDQnRMQ0J3S1R0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZkbUZzZFdWektHOHBJSHRjY2x4dUlDQWdJSFpoY2lCeklEMGdkSGx3Wlc5bUlGTjViV0p2YkNBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUNZbUlGTjViV0p2YkM1cGRHVnlZWFJ2Y2l3Z2JTQTlJSE1nSmlZZ2IxdHpYU3dnYVNBOUlEQTdYSEpjYmlBZ0lDQnBaaUFvYlNrZ2NtVjBkWEp1SUcwdVkyRnNiQ2h2S1R0Y2NseHVJQ0FnSUdsbUlDaHZJQ1ltSUhSNWNHVnZaaUJ2TG14bGJtZDBhQ0E5UFQwZ1hDSnVkVzFpWlhKY0lpa2djbVYwZFhKdUlIdGNjbHh1SUNBZ0lDQWdJQ0J1WlhoME9pQm1kVzVqZEdsdmJpQW9LU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodklDWW1JR2tnUGowZ2J5NXNaVzVuZEdncElHOGdQU0IyYjJsa0lEQTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCN0lIWmhiSFZsT2lCdklDWW1JRzliYVNzclhTd2daRzl1WlRvZ0lXOGdmVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNCOU8xeHlYRzRnSUNBZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaHpJRDhnWENKUFltcGxZM1FnYVhNZ2JtOTBJR2wwWlhKaFlteGxMbHdpSURvZ1hDSlRlVzFpYjJ3dWFYUmxjbUYwYjNJZ2FYTWdibTkwSUdSbFptbHVaV1F1WENJcE8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl5WldGa0tHOHNJRzRwSUh0Y2NseHVJQ0FnSUhaaGNpQnRJRDBnZEhsd1pXOW1JRk41YldKdmJDQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlDWW1JRzliVTNsdFltOXNMbWwwWlhKaGRHOXlYVHRjY2x4dUlDQWdJR2xtSUNnaGJTa2djbVYwZFhKdUlHODdYSEpjYmlBZ0lDQjJZWElnYVNBOUlHMHVZMkZzYkNodktTd2djaXdnWVhJZ1BTQmJYU3dnWlR0Y2NseHVJQ0FnSUhSeWVTQjdYSEpjYmlBZ0lDQWdJQ0FnZDJocGJHVWdLQ2h1SUQwOVBTQjJiMmxrSURBZ2ZId2diaTB0SUQ0Z01Da2dKaVlnSVNoeUlEMGdhUzV1WlhoMEtDa3BMbVJ2Ym1VcElHRnlMbkIxYzJnb2NpNTJZV3gxWlNrN1hISmNiaUFnSUNCOVhISmNiaUFnSUNCallYUmphQ0FvWlhKeWIzSXBJSHNnWlNBOUlIc2daWEp5YjNJNklHVnljbTl5SUgwN0lIMWNjbHh1SUNBZ0lHWnBibUZzYkhrZ2UxeHlYRzRnSUNBZ0lDQWdJSFJ5ZVNCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHlJQ1ltSUNGeUxtUnZibVVnSmlZZ0tHMGdQU0JwVzF3aWNtVjBkWEp1WENKZEtTa2diUzVqWVd4c0tHa3BPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQm1hVzVoYkd4NUlIc2dhV1lnS0dVcElIUm9jbTkzSUdVdVpYSnliM0k3SUgxY2NseHVJQ0FnSUgxY2NseHVJQ0FnSUhKbGRIVnliaUJoY2p0Y2NseHVmVnh5WEc1Y2NseHVMeW9xSUVCa1pYQnlaV05oZEdWa0lDb3ZYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNOd2NtVmhaQ2dwSUh0Y2NseHVJQ0FnSUdadmNpQW9kbUZ5SUdGeUlEMGdXMTBzSUdrZ1BTQXdPeUJwSUR3Z1lYSm5kVzFsYm5SekxteGxibWQwYURzZ2FTc3JLVnh5WEc0Z0lDQWdJQ0FnSUdGeUlEMGdZWEl1WTI5dVkyRjBLRjlmY21WaFpDaGhjbWQxYldWdWRITmJhVjBwS1R0Y2NseHVJQ0FnSUhKbGRIVnliaUJoY2p0Y2NseHVmVnh5WEc1Y2NseHVMeW9xSUVCa1pYQnlaV05oZEdWa0lDb3ZYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNOd2NtVmhaRUZ5Y21GNWN5Z3BJSHRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJSE1nUFNBd0xDQnBJRDBnTUN3Z2FXd2dQU0JoY21kMWJXVnVkSE11YkdWdVozUm9PeUJwSUR3Z2FXdzdJR2tyS3lrZ2N5QXJQU0JoY21kMWJXVnVkSE5iYVYwdWJHVnVaM1JvTzF4eVhHNGdJQ0FnWm05eUlDaDJZWElnY2lBOUlFRnljbUY1S0hNcExDQnJJRDBnTUN3Z2FTQTlJREE3SUdrZ1BDQnBiRHNnYVNzcktWeHlYRzRnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJR0VnUFNCaGNtZDFiV1Z1ZEhOYmFWMHNJR29nUFNBd0xDQnFiQ0E5SUdFdWJHVnVaM1JvT3lCcUlEd2dhbXc3SUdvckt5d2dheXNyS1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5VzJ0ZElEMGdZVnRxWFR0Y2NseHVJQ0FnSUhKbGRIVnliaUJ5TzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOXpjSEpsWVdSQmNuSmhlU2gwYnl3Z1puSnZiU3dnY0dGamF5a2dlMXh5WEc0Z0lDQWdhV1lnS0hCaFkyc2dmSHdnWVhKbmRXMWxiblJ6TG14bGJtZDBhQ0E5UFQwZ01pa2dabTl5SUNoMllYSWdhU0E5SURBc0lHd2dQU0JtY205dExteGxibWQwYUN3Z1lYSTdJR2tnUENCc095QnBLeXNwSUh0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvWVhJZ2ZId2dJU2hwSUdsdUlHWnliMjBwS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hZWElwSUdGeUlEMGdRWEp5WVhrdWNISnZkRzkwZVhCbExuTnNhV05sTG1OaGJHd29abkp2YlN3Z01Dd2dhU2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR0Z5VzJsZElEMGdabkp2YlZ0cFhUdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0I5WEhKY2JpQWdJQ0J5WlhSMWNtNGdkRzh1WTI5dVkyRjBLR0Z5SUh4OElFRnljbUY1TG5CeWIzUnZkSGx3WlM1emJHbGpaUzVqWVd4c0tHWnliMjBwS1R0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZZWGRoYVhRb2Rpa2dlMXh5WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE1nYVc1emRHRnVZMlZ2WmlCZlgyRjNZV2wwSUQ4Z0tIUm9hWE11ZGlBOUlIWXNJSFJvYVhNcElEb2dibVYzSUY5ZllYZGhhWFFvZGlrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMkZ6ZVc1alIyVnVaWEpoZEc5eUtIUm9hWE5CY21jc0lGOWhjbWQxYldWdWRITXNJR2RsYm1WeVlYUnZjaWtnZTF4eVhHNGdJQ0FnYVdZZ0tDRlRlVzFpYjJ3dVlYTjVibU5KZEdWeVlYUnZjaWtnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lsTjViV0p2YkM1aGMzbHVZMGwwWlhKaGRHOXlJR2x6SUc1dmRDQmtaV1pwYm1Wa0xsd2lLVHRjY2x4dUlDQWdJSFpoY2lCbklEMGdaMlZ1WlhKaGRHOXlMbUZ3Y0d4NUtIUm9hWE5CY21jc0lGOWhjbWQxYldWdWRITWdmSHdnVzEwcExDQnBMQ0J4SUQwZ1cxMDdYSEpjYmlBZ0lDQnlaWFIxY200Z2FTQTlJSHQ5TENCMlpYSmlLRndpYm1WNGRGd2lLU3dnZG1WeVlpaGNJblJvY205M1hDSXBMQ0IyWlhKaUtGd2ljbVYwZFhKdVhDSXBMQ0JwVzFONWJXSnZiQzVoYzNsdVkwbDBaWEpoZEc5eVhTQTlJR1oxYm1OMGFXOXVJQ2dwSUhzZ2NtVjBkWEp1SUhSb2FYTTdJSDBzSUdrN1hISmNiaUFnSUNCbWRXNWpkR2x2YmlCMlpYSmlLRzRwSUhzZ2FXWWdLR2RiYmwwcElHbGJibDBnUFNCbWRXNWpkR2x2YmlBb2Rpa2dleUJ5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvWm5WdVkzUnBiMjRnS0dFc0lHSXBJSHNnY1M1d2RYTm9LRnR1TENCMkxDQmhMQ0JpWFNrZ1BpQXhJSHg4SUhKbGMzVnRaU2h1TENCMktUc2dmU2s3SUgwN0lIMWNjbHh1SUNBZ0lHWjFibU4wYVc5dUlISmxjM1Z0WlNodUxDQjJLU0I3SUhSeWVTQjdJSE4wWlhBb1oxdHVYU2gyS1NrN0lIMGdZMkYwWTJnZ0tHVXBJSHNnYzJWMGRHeGxLSEZiTUYxYk0xMHNJR1VwT3lCOUlIMWNjbHh1SUNBZ0lHWjFibU4wYVc5dUlITjBaWEFvY2lrZ2V5QnlMblpoYkhWbElHbHVjM1JoYm1ObGIyWWdYMTloZDJGcGRDQS9JRkJ5YjIxcGMyVXVjbVZ6YjJ4MlpTaHlMblpoYkhWbExuWXBMblJvWlc0b1puVnNabWxzYkN3Z2NtVnFaV04wS1NBNklITmxkSFJzWlNoeFd6QmRXekpkTENCeUtUc2dmVnh5WEc0Z0lDQWdablZ1WTNScGIyNGdablZzWm1sc2JDaDJZV3gxWlNrZ2V5QnlaWE4xYldVb1hDSnVaWGgwWENJc0lIWmhiSFZsS1RzZ2ZWeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z2NtVnFaV04wS0haaGJIVmxLU0I3SUhKbGMzVnRaU2hjSW5Sb2NtOTNYQ0lzSUhaaGJIVmxLVHNnZlZ4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnYzJWMGRHeGxLR1lzSUhZcElIc2dhV1lnS0dZb2Rpa3NJSEV1YzJocFpuUW9LU3dnY1M1c1pXNW5kR2dwSUhKbGMzVnRaU2h4V3pCZFd6QmRMQ0J4V3pCZFd6RmRLVHNnZlZ4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWhjM2x1WTBSbGJHVm5ZWFJ2Y2lodktTQjdYSEpjYmlBZ0lDQjJZWElnYVN3Z2NEdGNjbHh1SUNBZ0lISmxkSFZ5YmlCcElEMGdlMzBzSUhabGNtSW9YQ0p1WlhoMFhDSXBMQ0IyWlhKaUtGd2lkR2h5YjNkY0lpd2dablZ1WTNScGIyNGdLR1VwSUhzZ2RHaHliM2NnWlRzZ2ZTa3NJSFpsY21Jb1hDSnlaWFIxY201Y0lpa3NJR2xiVTNsdFltOXNMbWwwWlhKaGRHOXlYU0E5SUdaMWJtTjBhVzl1SUNncElIc2djbVYwZFhKdUlIUm9hWE03SUgwc0lHazdYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQjJaWEppS0c0c0lHWXBJSHNnYVZ0dVhTQTlJRzliYmwwZ1B5Qm1kVzVqZEdsdmJpQW9kaWtnZXlCeVpYUjFjbTRnS0hBZ1BTQWhjQ2tnUHlCN0lIWmhiSFZsT2lCZlgyRjNZV2wwS0c5YmJsMG9kaWtwTENCa2IyNWxPaUJtWVd4elpTQjlJRG9nWmlBL0lHWW9kaWtnT2lCMk95QjlJRG9nWmpzZ2ZWeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTloYzNsdVkxWmhiSFZsY3lodktTQjdYSEpjYmlBZ0lDQnBaaUFvSVZONWJXSnZiQzVoYzNsdVkwbDBaWEpoZEc5eUtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpVTNsdFltOXNMbUZ6ZVc1alNYUmxjbUYwYjNJZ2FYTWdibTkwSUdSbFptbHVaV1F1WENJcE8xeHlYRzRnSUNBZ2RtRnlJRzBnUFNCdlcxTjViV0p2YkM1aGMzbHVZMGwwWlhKaGRHOXlYU3dnYVR0Y2NseHVJQ0FnSUhKbGRIVnliaUJ0SUQ4Z2JTNWpZV3hzS0c4cElEb2dLRzhnUFNCMGVYQmxiMllnWDE5MllXeDFaWE1nUFQwOUlGd2lablZ1WTNScGIyNWNJaUEvSUY5ZmRtRnNkV1Z6S0c4cElEb2diMXRUZVcxaWIyd3VhWFJsY21GMGIzSmRLQ2tzSUdrZ1BTQjdmU3dnZG1WeVlpaGNJbTVsZUhSY0lpa3NJSFpsY21Jb1hDSjBhSEp2ZDF3aUtTd2dkbVZ5WWloY0luSmxkSFZ5Ymx3aUtTd2dhVnRUZVcxaWIyd3VZWE41Ym1OSmRHVnlZWFJ2Y2wwZ1BTQm1kVzVqZEdsdmJpQW9LU0I3SUhKbGRIVnliaUIwYUdsek95QjlMQ0JwS1R0Y2NseHVJQ0FnSUdaMWJtTjBhVzl1SUhabGNtSW9iaWtnZXlCcFcyNWRJRDBnYjF0dVhTQW1KaUJtZFc1amRHbHZiaUFvZGlrZ2V5QnlaWFIxY200Z2JtVjNJRkJ5YjIxcGMyVW9ablZ1WTNScGIyNGdLSEpsYzI5c2RtVXNJSEpsYW1WamRDa2dleUIySUQwZ2IxdHVYU2gyS1N3Z2MyVjBkR3hsS0hKbGMyOXNkbVVzSUhKbGFtVmpkQ3dnZGk1a2IyNWxMQ0IyTG5aaGJIVmxLVHNnZlNrN0lIMDdJSDFjY2x4dUlDQWdJR1oxYm1OMGFXOXVJSE5sZEhSc1pTaHlaWE52YkhabExDQnlaV3BsWTNRc0lHUXNJSFlwSUhzZ1VISnZiV2x6WlM1eVpYTnZiSFpsS0hZcExuUm9aVzRvWm5WdVkzUnBiMjRvZGlrZ2V5QnlaWE52YkhabEtIc2dkbUZzZFdVNklIWXNJR1J2Ym1VNklHUWdmU2s3SUgwc0lISmxhbVZqZENrN0lIMWNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmYldGclpWUmxiWEJzWVhSbFQySnFaV04wS0dOdmIydGxaQ3dnY21GM0tTQjdYSEpjYmlBZ0lDQnBaaUFvVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtTQjdJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNoamIyOXJaV1FzSUZ3aWNtRjNYQ0lzSUhzZ2RtRnNkV1U2SUhKaGR5QjlLVHNnZlNCbGJITmxJSHNnWTI5dmEyVmtMbkpoZHlBOUlISmhkenNnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJR052YjJ0bFpEdGNjbHh1ZlR0Y2NseHVYSEpjYm5aaGNpQmZYM05sZEUxdlpIVnNaVVJsWm1GMWJIUWdQU0JQWW1wbFkzUXVZM0psWVhSbElEOGdLR1oxYm1OMGFXOXVLRzhzSUhZcElIdGNjbHh1SUNBZ0lFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2h2TENCY0ltUmxabUYxYkhSY0lpd2dleUJsYm5WdFpYSmhZbXhsT2lCMGNuVmxMQ0IyWVd4MVpUb2dkaUI5S1R0Y2NseHVmU2tnT2lCbWRXNWpkR2x2YmlodkxDQjJLU0I3WEhKY2JpQWdJQ0J2VzF3aVpHVm1ZWFZzZEZ3aVhTQTlJSFk3WEhKY2JuMDdYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOXBiWEJ2Y25SVGRHRnlLRzF2WkNrZ2UxeHlYRzRnSUNBZ2FXWWdLRzF2WkNBbUppQnRiMlF1WDE5bGMwMXZaSFZzWlNrZ2NtVjBkWEp1SUcxdlpEdGNjbHh1SUNBZ0lIWmhjaUJ5WlhOMWJIUWdQU0I3ZlR0Y2NseHVJQ0FnSUdsbUlDaHRiMlFnSVQwZ2JuVnNiQ2tnWm05eUlDaDJZWElnYXlCcGJpQnRiMlFwSUdsbUlDaHJJQ0U5UFNCY0ltUmxabUYxYkhSY0lpQW1KaUJQWW1wbFkzUXVjSEp2ZEc5MGVYQmxMbWhoYzA5M2JsQnliM0JsY25SNUxtTmhiR3dvYlc5a0xDQnJLU2tnWDE5amNtVmhkR1ZDYVc1a2FXNW5LSEpsYzNWc2RDd2diVzlrTENCcktUdGNjbHh1SUNBZ0lGOWZjMlYwVFc5a2RXeGxSR1ZtWVhWc2RDaHlaWE4xYkhRc0lHMXZaQ2s3WEhKY2JpQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTlwYlhCdmNuUkVaV1poZFd4MEtHMXZaQ2tnZTF4eVhHNGdJQ0FnY21WMGRYSnVJQ2h0YjJRZ0ppWWdiVzlrTGw5ZlpYTk5iMlIxYkdVcElEOGdiVzlrSURvZ2V5QmtaV1poZFd4ME9pQnRiMlFnZlR0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZZMnhoYzNOUWNtbDJZWFJsUm1sbGJHUkhaWFFvY21WalpXbDJaWElzSUhOMFlYUmxMQ0JyYVc1a0xDQm1LU0I3WEhKY2JpQWdJQ0JwWmlBb2EybHVaQ0E5UFQwZ1hDSmhYQ0lnSmlZZ0lXWXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKUWNtbDJZWFJsSUdGalkyVnpjMjl5SUhkaGN5QmtaV1pwYm1Wa0lIZHBkR2h2ZFhRZ1lTQm5aWFIwWlhKY0lpazdYSEpjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JSE4wWVhSbElEMDlQU0JjSW1aMWJtTjBhVzl1WENJZ1B5QnlaV05sYVhabGNpQWhQVDBnYzNSaGRHVWdmSHdnSVdZZ09pQWhjM1JoZEdVdWFHRnpLSEpsWTJWcGRtVnlLU2tnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lrTmhibTV2ZENCeVpXRmtJSEJ5YVhaaGRHVWdiV1Z0WW1WeUlHWnliMjBnWVc0Z2IySnFaV04wSUhkb2IzTmxJR05zWVhOeklHUnBaQ0J1YjNRZ1pHVmpiR0Z5WlNCcGRGd2lLVHRjY2x4dUlDQWdJSEpsZEhWeWJpQnJhVzVrSUQwOVBTQmNJbTFjSWlBL0lHWWdPaUJyYVc1a0lEMDlQU0JjSW1GY0lpQS9JR1l1WTJGc2JDaHlaV05sYVhabGNpa2dPaUJtSUQ4Z1ppNTJZV3gxWlNBNklITjBZWFJsTG1kbGRDaHlaV05sYVhabGNpazdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJOc1lYTnpVSEpwZG1GMFpVWnBaV3hrVTJWMEtISmxZMlZwZG1WeUxDQnpkR0YwWlN3Z2RtRnNkV1VzSUd0cGJtUXNJR1lwSUh0Y2NseHVJQ0FnSUdsbUlDaHJhVzVrSUQwOVBTQmNJbTFjSWlrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJbEJ5YVhaaGRHVWdiV1YwYUc5a0lHbHpJRzV2ZENCM2NtbDBZV0pzWlZ3aUtUdGNjbHh1SUNBZ0lHbG1JQ2hyYVc1a0lEMDlQU0JjSW1GY0lpQW1KaUFoWmlrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJbEJ5YVhaaGRHVWdZV05qWlhOemIzSWdkMkZ6SUdSbFptbHVaV1FnZDJsMGFHOTFkQ0JoSUhObGRIUmxjbHdpS1R0Y2NseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2MzUmhkR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaUEvSUhKbFkyVnBkbVZ5SUNFOVBTQnpkR0YwWlNCOGZDQWhaaUE2SUNGemRHRjBaUzVvWVhNb2NtVmpaV2wyWlhJcEtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpUTJGdWJtOTBJSGR5YVhSbElIQnlhWFpoZEdVZ2JXVnRZbVZ5SUhSdklHRnVJRzlpYW1WamRDQjNhRzl6WlNCamJHRnpjeUJrYVdRZ2JtOTBJR1JsWTJ4aGNtVWdhWFJjSWlrN1hISmNiaUFnSUNCeVpYUjFjbTRnS0d0cGJtUWdQVDA5SUZ3aVlWd2lJRDhnWmk1allXeHNLSEpsWTJWcGRtVnlMQ0IyWVd4MVpTa2dPaUJtSUQ4Z1ppNTJZV3gxWlNBOUlIWmhiSFZsSURvZ2MzUmhkR1V1YzJWMEtISmxZMlZwZG1WeUxDQjJZV3gxWlNrcExDQjJZV3gxWlR0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZZMnhoYzNOUWNtbDJZWFJsUm1sbGJHUkpiaWh6ZEdGMFpTd2djbVZqWldsMlpYSXBJSHRjY2x4dUlDQWdJR2xtSUNoeVpXTmxhWFpsY2lBOVBUMGdiblZzYkNCOGZDQW9kSGx3Wlc5bUlISmxZMlZwZG1WeUlDRTlQU0JjSW05aWFtVmpkRndpSUNZbUlIUjVjR1Z2WmlCeVpXTmxhWFpsY2lBaFBUMGdYQ0ptZFc1amRHbHZibHdpS1NrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJa05oYm01dmRDQjFjMlVnSjJsdUp5QnZjR1Z5WVhSdmNpQnZiaUJ1YjI0dGIySnFaV04wWENJcE8xeHlYRzRnSUNBZ2NtVjBkWEp1SUhSNWNHVnZaaUJ6ZEdGMFpTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlEOGdjbVZqWldsMlpYSWdQVDA5SUhOMFlYUmxJRG9nYzNSaGRHVXVhR0Z6S0hKbFkyVnBkbVZ5S1R0Y2NseHVmVnh5WEc0aUxDSXZLaUJsYzJ4cGJuUXRaR2x6WVdKc1pTQkFkSGx3WlhOamNtbHdkQzFsYzJ4cGJuUXZibUZ0YVc1bkxXTnZiblpsYm5ScGIyNGdLaTljYmx4dUx5b3FYRzRnS2lCVGNHVmphV1pwWlhKeklHOW1JR1JsWW5WbklHMXZaR1VnYjJZZ2UwQnNhVzVySUUxVWIyOXVUV0YwWlhKcFlXeDlMbHh1SUNwY2JpQXFJRk5sWlRvZ2UwQnNhVzVySUUxVWIyOXVUV0YwWlhKcFlXd3VaR1ZpZFdkTmIyUmxmVnh1SUNvdlhHNWxlSEJ2Y25RZ1kyOXVjM1FnVFZSdmIyNU5ZWFJsY21saGJFUmxZblZuVFc5a1pTQTlJSHRjYmlBZ0x5b3FYRzRnSUNBcUlGSmxibVJsY2lCdWIzSnRZV3hzZVM1Y2JpQWdJQ292WEc0Z0lFNXZibVU2SUNkdWIyNWxKeXhjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWbWx6ZFdGc2FYcGxJRzV2Y20xaGJITWdiMllnZEdobElITjFjbVpoWTJVdVhHNGdJQ0FxTDF4dUlDQk9iM0p0WVd3NklDZHViM0p0WVd3bkxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCV2FYTjFZV3hwZW1VZ2JHbDBMM05vWVdSbElHOW1JSFJvWlNCemRYSm1ZV05sTGx4dUlDQWdLaTljYmlBZ1RHbDBVMmhoWkdWU1lYUmxPaUFuYkdsMFUyaGhaR1ZTWVhSbEp5eGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZtbHpkV0ZzYVhwbElGVldJRzltSUhSb1pTQnpkWEptWVdObExseHVJQ0FnS2k5Y2JpQWdWVlk2SUNkMWRpY3NYRzU5SUdGeklHTnZibk4wTzF4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JOVkc5dmJrMWhkR1Z5YVdGc1JHVmlkV2ROYjJSbElEMGdkSGx3Wlc5bUlFMVViMjl1VFdGMFpYSnBZV3hFWldKMVowMXZaR1ZiYTJWNWIyWWdkSGx3Wlc5bUlFMVViMjl1VFdGMFpYSnBZV3hFWldKMVowMXZaR1ZkTzF4dUlpd2lMeW9nWlhOc2FXNTBMV1JwYzJGaWJHVWdRSFI1Y0dWelkzSnBjSFF0WlhOc2FXNTBMMjVoYldsdVp5MWpiMjUyWlc1MGFXOXVJQ292WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JOVkc5dmJrMWhkR1Z5YVdGc1QzVjBiR2x1WlZkcFpIUm9UVzlrWlNBOUlIdGNiaUFnVG05dVpUb2dKMjV2Ym1VbkxGeHVJQ0JYYjNKc1pFTnZiM0prYVc1aGRHVnpPaUFuZDI5eWJHUkRiMjl5WkdsdVlYUmxjeWNzWEc0Z0lGTmpjbVZsYmtOdmIzSmthVzVoZEdWek9pQW5jMk55WldWdVEyOXZjbVJwYm1GMFpYTW5MRnh1ZlNCaGN5QmpiMjV6ZER0Y2JseHVaWGh3YjNKMElIUjVjR1VnVFZSdmIyNU5ZWFJsY21saGJFOTFkR3hwYm1WWGFXUjBhRTF2WkdVZ1BWeHVJQ0IwZVhCbGIyWWdUVlJ2YjI1TllYUmxjbWxoYkU5MWRHeHBibVZYYVdSMGFFMXZaR1ZiYTJWNWIyWWdkSGx3Wlc5bUlFMVViMjl1VFdGMFpYSnBZV3hQZFhSc2FXNWxWMmxrZEdoTmIyUmxYVHRjYmlJc0ltbHRjRzl5ZENBcUlHRnpJRlJJVWtWRklHWnliMjBnSjNSb2NtVmxKenRjYmx4dVkyOXVjM1FnWlc1amIyUnBibWREYjJ4dmNsTndZV05sVFdGd09pQlNaV052Y21ROFlXNTVMQ0FuSnlCOElDZHpjbWRpSno0Z1BTQjdYRzRnSURNd01EQTZJQ2NuTEZ4dUlDQXpNREF4T2lBbmMzSm5ZaWNzWEc1OU8xeHVYRzR2S2lwY2JpQXFJRUVnWTI5dGNHRjBJR1oxYm1OMGFXOXVJSFJ2SUdkbGRDQjBaWGgwZFhKbElHTnZiRzl5SUhOd1lXTmxMbHh1SUNwY2JpQXFJRU5QVFZCQlZEb2djSEpsTFhJeE5USmNiaUFxSUZOMFlYSjBhVzVuSUdaeWIyMGdWR2h5WldVdWFuTWdjakUxTWl3Z1lIUmxlSFIxY21VdVpXNWpiMlJwYm1kZ0lHbHpJSEpsYm1GdFpXUWdkRzhnWUhSbGVIUjFjbVV1WTI5c2IzSlRjR0ZqWldBdVhHNGdLaUJVYUdseklHWjFibU4wYVc5dUlIZHBiR3dnYUdGdVpHeGxJSFJvWlNCamIyMWhjSFF1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSFJsZUhSMWNtVWdWR2hsSUhSbGVIUjFjbVVnZVc5MUlIZGhiblFnZEc4Z1oyVjBJSFJvWlNCamIyeHZjaUJ6Y0dGalpTQm1jbTl0WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJVWlhoMGRYSmxRMjlzYjNKVGNHRmpaU2gwWlhoMGRYSmxPaUJVU0ZKRlJTNVVaWGgwZFhKbEtUb2dKeWNnZkNBbmMzSm5ZaWNnZTF4dUlDQnBaaUFvY0dGeWMyVkpiblFvVkVoU1JVVXVVa1ZXU1ZOSlQwNHNJREV3S1NBK1BTQXhOVElwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR1Y0ZEhWeVpTNWpiMnh2Y2xOd1lXTmxJR0Z6SUNjbklId2dKM055WjJJbk8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lISmxkSFZ5YmlCbGJtTnZaR2x1WjBOdmJHOXlVM0JoWTJWTllYQmJLSFJsZUhSMWNtVWdZWE1nWVc1NUtTNWxibU52WkdsdVoxMDdYRzRnSUgxY2JuMWNiaUlzSWk4cUlIUnpiR2x1ZERwa2FYTmhZbXhsT20xbGJXSmxjaTF2Y21SbGNtbHVaeUFxTDF4dVhHNXBiWEJ2Y25RZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1cGJYQnZjblFnZG1WeWRHVjRVMmhoWkdWeUlHWnliMjBnSnk0dmMyaGhaR1Z5Y3k5dGRHOXZiaTUyWlhKMEp6dGNibWx0Y0c5eWRDQm1jbUZuYldWdWRGTm9ZV1JsY2lCbWNtOXRJQ2N1TDNOb1lXUmxjbk12YlhSdmIyNHVabkpoWnljN1hHNXBiWEJ2Y25RZ2V5Qk5WRzl2YmsxaGRHVnlhV0ZzUkdWaWRXZE5iMlJsSUgwZ1puSnZiU0FuTGk5TlZHOXZiazFoZEdWeWFXRnNSR1ZpZFdkTmIyUmxKenRjYm1sdGNHOXlkQ0I3SUUxVWIyOXVUV0YwWlhKcFlXeFBkWFJzYVc1bFYybGtkR2hOYjJSbElIMGdabkp2YlNBbkxpOU5WRzl2YmsxaGRHVnlhV0ZzVDNWMGJHbHVaVmRwWkhSb1RXOWtaU2M3WEc1cGJYQnZjblFnZEhsd1pTQjdJRTFVYjI5dVRXRjBaWEpwWVd4UVlYSmhiV1YwWlhKeklIMGdabkp2YlNBbkxpOU5WRzl2YmsxaGRHVnlhV0ZzVUdGeVlXMWxkR1Z5Y3ljN1hHNXBiWEJ2Y25RZ2V5Qm5aWFJVWlhoMGRYSmxRMjlzYjNKVGNHRmpaU0I5SUdaeWIyMGdKeTR2ZFhScGJITXZaMlYwVkdWNGRIVnlaVU52Ykc5eVUzQmhZMlVuTzF4dVhHNHZLaXBjYmlBcUlFMVViMjl1SUdseklHRWdiV0YwWlhKcFlXd2djM0JsWTJsbWFXTmhkR2x2YmlCMGFHRjBJR2hoY3lCMllYSnBiM1Z6SUdabFlYUjFjbVZ6TGx4dUlDb2dWR2hsSUhOd1pXTWdZVzVrSUdsdGNHeGxiV1Z1ZEdGMGFXOXVJR0Z5WlNCdmNtbG5hVzVoYkd4NUlHWnZkVzVrWldRZ1ptOXlJRlZ1YVhSNUlHVnVaMmx1WlNCaGJtUWdkR2hwY3lCcGN5QmhJSEJ2Y25RZ2IyWWdkR2hsSUcxaGRHVnlhV0ZzTGx4dUlDcGNiaUFxSUZObFpUb2dhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMU5oYm5SaGNtZ3ZUVlJ2YjI1Y2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklFMVViMjl1VFdGMFpYSnBZV3dnWlhoMFpXNWtjeUJVU0ZKRlJTNVRhR0ZrWlhKTllYUmxjbWxoYkNCN1hHNGdJSEIxWW14cFl5QjFibWxtYjNKdGN6b2dlMXh1SUNBZ0lHeHBkRVpoWTNSdmNqb2dWRWhTUlVVdVNWVnVhV1p2Y20wOFZFaFNSVVV1UTI5c2IzSStPMXh1SUNBZ0lHRnNjR2hoVkdWemREb2dWRWhTUlVVdVNWVnVhV1p2Y20wOGJuVnRZbVZ5UGp0Y2JpQWdJQ0J2Y0dGamFYUjVPaUJVU0ZKRlJTNUpWVzVwWm05eWJUeHVkVzFpWlhJK08xeHVJQ0FnSUcxaGNEb2dWRWhTUlVVdVNWVnVhV1p2Y20wOFZFaFNSVVV1VkdWNGRIVnlaU0I4SUc1MWJHdytPMXh1SUNBZ0lHMWhjRlYyVkhKaGJuTm1iM0p0T2lCVVNGSkZSUzVKVlc1cFptOXliVHhVU0ZKRlJTNU5ZWFJ5YVhnelBqdGNiaUFnSUNCdWIzSnRZV3hOWVhBNklGUklVa1ZGTGtsVmJtbG1iM0p0UEZSSVVrVkZMbFJsZUhSMWNtVWdmQ0J1ZFd4c1BqdGNiaUFnSUNCdWIzSnRZV3hOWVhCVmRsUnlZVzV6Wm05eWJUb2dWRWhTUlVVdVNWVnVhV1p2Y20wOFZFaFNSVVV1VFdGMGNtbDRNejQ3WEc0Z0lDQWdibTl5YldGc1UyTmhiR1U2SUZSSVVrVkZMa2xWYm1sbWIzSnRQRlJJVWtWRkxsWmxZM1J2Y2pJK08xeHVJQ0FnSUdWdGFYTnphWFpsT2lCVVNGSkZSUzVKVlc1cFptOXliVHhVU0ZKRlJTNURiMnh2Y2o0N1hHNGdJQ0FnWlcxcGMzTnBkbVZKYm5SbGJuTnBkSGs2SUZSSVVrVkZMa2xWYm1sbWIzSnRQRzUxYldKbGNqNDdYRzRnSUNBZ1pXMXBjM05wZG1WTllYQTZJRlJJVWtWRkxrbFZibWxtYjNKdFBGUklVa1ZGTGxSbGVIUjFjbVVnZkNCdWRXeHNQanRjYmlBZ0lDQmxiV2x6YzJsMlpVMWhjRlYyVkhKaGJuTm1iM0p0T2lCVVNGSkZSUzVKVlc1cFptOXliVHhVU0ZKRlJTNU5ZWFJ5YVhnelBqdGNiaUFnSUNCemFHRmtaVU52Ykc5eVJtRmpkRzl5T2lCVVNGSkZSUzVKVlc1cFptOXliVHhVU0ZKRlJTNURiMnh2Y2o0N1hHNGdJQ0FnYzJoaFpHVk5kV3gwYVhCc2VWUmxlSFIxY21VNklGUklVa1ZGTGtsVmJtbG1iM0p0UEZSSVVrVkZMbFJsZUhSMWNtVWdmQ0J1ZFd4c1BqdGNiaUFnSUNCemFHRmtaVTExYkhScGNHeDVWR1Y0ZEhWeVpWVjJWSEpoYm5ObWIzSnRPaUJVU0ZKRlJTNUpWVzVwWm05eWJUeFVTRkpGUlM1TllYUnlhWGd6UGp0Y2JpQWdJQ0J6YUdGa2FXNW5VMmhwWm5SR1lXTjBiM0k2SUZSSVVrVkZMa2xWYm1sbWIzSnRQRzUxYldKbGNqNDdYRzRnSUNBZ2MyaGhaR2x1WjFOb2FXWjBWR1Y0ZEhWeVpUb2dWRWhTUlVVdVNWVnVhV1p2Y20wOFZFaFNSVVV1VkdWNGRIVnlaU0I4SUc1MWJHdytPMXh1SUNBZ0lITm9ZV1JwYm1kVGFHbG1kRlJsZUhSMWNtVlZkbFJ5WVc1elptOXliVG9nVkVoU1JVVXVTVlZ1YVdadmNtMDhWRWhTUlVVdVRXRjBjbWw0TXo0N1hHNGdJQ0FnYzJoaFpHbHVaMU5vYVdaMFZHVjRkSFZ5WlZOallXeGxPaUJVU0ZKRlJTNUpWVzVwWm05eWJUeHVkVzFpWlhJK08xeHVJQ0FnSUhOb1lXUnBibWRVYjI5dWVVWmhZM1J2Y2pvZ1ZFaFNSVVV1U1ZWdWFXWnZjbTA4Ym5WdFltVnlQanRjYmlBZ0lDQm5hVVZ4ZFdGc2FYcGhkR2x2YmtaaFkzUnZjam9nVkVoU1JVVXVTVlZ1YVdadmNtMDhiblZ0WW1WeVBqdGNiaUFnSUNCdFlYUmpZWEJHWVdOMGIzSTZJRlJJVWtWRkxrbFZibWxtYjNKdFBGUklVa1ZGTGtOdmJHOXlQanRjYmlBZ0lDQnRZWFJqWVhCVVpYaDBkWEpsT2lCVVNGSkZSUzVKVlc1cFptOXliVHhVU0ZKRlJTNVVaWGgwZFhKbElId2diblZzYkQ0N1hHNGdJQ0FnYldGMFkyRndWR1Y0ZEhWeVpWVjJWSEpoYm5ObWIzSnRPaUJVU0ZKRlJTNUpWVzVwWm05eWJUeFVTRkpGUlM1TllYUnlhWGd6UGp0Y2JpQWdJQ0J3WVhKaGJXVjBjbWxqVW1sdFEyOXNiM0pHWVdOMGIzSTZJRlJJVWtWRkxrbFZibWxtYjNKdFBGUklVa1ZGTGtOdmJHOXlQanRjYmlBZ0lDQnlhVzFOZFd4MGFYQnNlVlJsZUhSMWNtVTZJRlJJVWtWRkxrbFZibWxtYjNKdFBGUklVa1ZGTGxSbGVIUjFjbVVnZkNCdWRXeHNQanRjYmlBZ0lDQnlhVzFOZFd4MGFYQnNlVlJsZUhSMWNtVlZkbFJ5WVc1elptOXliVG9nVkVoU1JVVXVTVlZ1YVdadmNtMDhWRWhTUlVVdVRXRjBjbWw0TXo0N1hHNGdJQ0FnY21sdFRHbG5hSFJwYm1kTmFYaEdZV04wYjNJNklGUklVa1ZGTGtsVmJtbG1iM0p0UEc1MWJXSmxjajQ3WEc0Z0lDQWdjR0Z5WVcxbGRISnBZMUpwYlVaeVpYTnVaV3hRYjNkbGNrWmhZM1J2Y2pvZ1ZFaFNSVVV1U1ZWdWFXWnZjbTA4Ym5WdFltVnlQanRjYmlBZ0lDQndZWEpoYldWMGNtbGpVbWx0VEdsbWRFWmhZM1J2Y2pvZ1ZFaFNSVVV1U1ZWdWFXWnZjbTA4Ym5WdFltVnlQanRjYmlBZ0lDQnZkWFJzYVc1bFYybGtkR2hOZFd4MGFYQnNlVlJsZUhSMWNtVTZJRlJJVWtWRkxrbFZibWxtYjNKdFBGUklVa1ZGTGxSbGVIUjFjbVVnZkNCdWRXeHNQanRjYmlBZ0lDQnZkWFJzYVc1bFYybGtkR2hOZFd4MGFYQnNlVlJsZUhSMWNtVlZkbFJ5WVc1elptOXliVG9nVkVoU1JVVXVTVlZ1YVdadmNtMDhWRWhTUlVVdVRXRjBjbWw0TXo0N1hHNGdJQ0FnYjNWMGJHbHVaVmRwWkhSb1JtRmpkRzl5T2lCVVNGSkZSUzVKVlc1cFptOXliVHh1ZFcxaVpYSStPMXh1SUNBZ0lHOTFkR3hwYm1WRGIyeHZja1poWTNSdmNqb2dWRWhTUlVVdVNWVnVhV1p2Y20wOFZFaFNSVVV1UTI5c2IzSStPMXh1SUNBZ0lHOTFkR3hwYm1WTWFXZG9kR2x1WjAxcGVFWmhZM1J2Y2pvZ1ZFaFNSVVV1U1ZWdWFXWnZjbTA4Ym5WdFltVnlQanRjYmlBZ0lDQjFka0Z1YVcxaGRHbHZiazFoYzJ0VVpYaDBkWEpsT2lCVVNGSkZSUzVKVlc1cFptOXliVHhVU0ZKRlJTNVVaWGgwZFhKbElId2diblZzYkQ0N1hHNGdJQ0FnZFhaQmJtbHRZWFJwYjI1TllYTnJWR1Y0ZEhWeVpWVjJWSEpoYm5ObWIzSnRPaUJVU0ZKRlJTNUpWVzVwWm05eWJUeFVTRkpGUlM1TllYUnlhWGd6UGp0Y2JpQWdJQ0IxZGtGdWFXMWhkR2x2YmxOamNtOXNiRmhQWm1aelpYUTZJRlJJVWtWRkxrbFZibWxtYjNKdFBHNTFiV0psY2o0N1hHNGdJQ0FnZFhaQmJtbHRZWFJwYjI1VFkzSnZiR3haVDJabWMyVjBPaUJVU0ZKRlJTNUpWVzVwWm05eWJUeHVkVzFpWlhJK08xeHVJQ0FnSUhWMlFXNXBiV0YwYVc5dVVtOTBZWFJwYjI1UWFHRnpaVG9nVkVoU1JVVXVTVlZ1YVdadmNtMDhiblZ0WW1WeVBqdGNiaUFnZlR0Y2JseHVJQ0J3ZFdKc2FXTWdaMlYwSUdOdmJHOXlLQ2s2SUZSSVVrVkZMa052Ykc5eUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NTFibWxtYjNKdGN5NXNhWFJHWVdOMGIzSXVkbUZzZFdVN1hHNGdJSDFjYmlBZ2NIVmliR2xqSUhObGRDQmpiMnh2Y2loMllXeDFaVG9nVkVoU1JVVXVRMjlzYjNJcElIdGNiaUFnSUNCMGFHbHpMblZ1YVdadmNtMXpMbXhwZEVaaFkzUnZjaTUyWVd4MVpTQTlJSFpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ0J0WVhBb0tUb2dWRWhTUlVVdVZHVjRkSFZ5WlNCOElHNTFiR3dnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5WdWFXWnZjbTF6TG0xaGNDNTJZV3gxWlR0Y2JpQWdmVnh1SUNCd2RXSnNhV01nYzJWMElHMWhjQ2gyWVd4MVpUb2dWRWhTUlVVdVZHVjRkSFZ5WlNCOElHNTFiR3dwSUh0Y2JpQWdJQ0IwYUdsekxuVnVhV1p2Y20xekxtMWhjQzUyWVd4MVpTQTlJSFpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ0J1YjNKdFlXeE5ZWEFvS1RvZ1ZFaFNSVVV1VkdWNGRIVnlaU0I4SUc1MWJHd2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMblZ1YVdadmNtMXpMbTV2Y20xaGJFMWhjQzUyWVd4MVpUdGNiaUFnZlZ4dUlDQndkV0pzYVdNZ2MyVjBJRzV2Y20xaGJFMWhjQ2gyWVd4MVpUb2dWRWhTUlVVdVZHVjRkSFZ5WlNCOElHNTFiR3dwSUh0Y2JpQWdJQ0IwYUdsekxuVnVhV1p2Y20xekxtNXZjbTFoYkUxaGNDNTJZV3gxWlNBOUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQnViM0p0WVd4VFkyRnNaU2dwT2lCVVNGSkZSUzVXWldOMGIzSXlJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTUxYm1sbWIzSnRjeTV1YjNKdFlXeFRZMkZzWlM1MllXeDFaVHRjYmlBZ2ZWeHVJQ0J3ZFdKc2FXTWdjMlYwSUc1dmNtMWhiRk5qWVd4bEtIWmhiSFZsT2lCVVNGSkZSUzVXWldOMGIzSXlLU0I3WEc0Z0lDQWdkR2hwY3k1MWJtbG1iM0p0Y3k1dWIzSnRZV3hUWTJGc1pTNTJZV3gxWlNBOUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQmxiV2x6YzJsMlpTZ3BPaUJVU0ZKRlJTNURiMnh2Y2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWRXNXBabTl5YlhNdVpXMXBjM05wZG1VdWRtRnNkV1U3WEc0Z0lIMWNiaUFnY0hWaWJHbGpJSE5sZENCbGJXbHpjMmwyWlNoMllXeDFaVG9nVkVoU1JVVXVRMjlzYjNJcElIdGNiaUFnSUNCMGFHbHpMblZ1YVdadmNtMXpMbVZ0YVhOemFYWmxMblpoYkhWbElEMGdkbUZzZFdVN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1oyVjBJR1Z0YVhOemFYWmxTVzUwWlc1emFYUjVLQ2s2SUc1MWJXSmxjaUI3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11ZFc1cFptOXliWE11WlcxcGMzTnBkbVZKYm5SbGJuTnBkSGt1ZG1Gc2RXVTdYRzRnSUgxY2JpQWdjSFZpYkdsaklITmxkQ0JsYldsemMybDJaVWx1ZEdWdWMybDBlU2gyWVd4MVpUb2diblZ0WW1WeUtTQjdYRzRnSUNBZ2RHaHBjeTUxYm1sbWIzSnRjeTVsYldsemMybDJaVWx1ZEdWdWMybDBlUzUyWVd4MVpTQTlJSFpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ0JsYldsemMybDJaVTFoY0NncE9pQlVTRkpGUlM1VVpYaDBkWEpsSUh3Z2JuVnNiQ0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11ZFc1cFptOXliWE11WlcxcGMzTnBkbVZOWVhBdWRtRnNkV1U3WEc0Z0lIMWNiaUFnY0hWaWJHbGpJSE5sZENCbGJXbHpjMmwyWlUxaGNDaDJZV3gxWlRvZ1ZFaFNSVVV1VkdWNGRIVnlaU0I4SUc1MWJHd3BJSHRjYmlBZ0lDQjBhR2x6TG5WdWFXWnZjbTF6TG1WdGFYTnphWFpsVFdGd0xuWmhiSFZsSUQwZ2RtRnNkV1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMElITm9ZV1JsUTI5c2IzSkdZV04wYjNJb0tUb2dWRWhTUlVVdVEyOXNiM0lnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5WdWFXWnZjbTF6TG5Ob1lXUmxRMjlzYjNKR1lXTjBiM0l1ZG1Gc2RXVTdYRzRnSUgxY2JpQWdjSFZpYkdsaklITmxkQ0J6YUdGa1pVTnZiRzl5Um1GamRHOXlLSFpoYkhWbE9pQlVTRkpGUlM1RGIyeHZjaWtnZTF4dUlDQWdJSFJvYVhNdWRXNXBabTl5YlhNdWMyaGhaR1ZEYjJ4dmNrWmhZM1J2Y2k1MllXeDFaU0E5SUhaaGJIVmxPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR2RsZENCemFHRmtaVTExYkhScGNHeDVWR1Y0ZEhWeVpTZ3BPaUJVU0ZKRlJTNVVaWGgwZFhKbElId2diblZzYkNCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWRXNXBabTl5YlhNdWMyaGhaR1ZOZFd4MGFYQnNlVlJsZUhSMWNtVXVkbUZzZFdVN1hHNGdJSDFjYmlBZ2NIVmliR2xqSUhObGRDQnphR0ZrWlUxMWJIUnBjR3g1VkdWNGRIVnlaU2gyWVd4MVpUb2dWRWhTUlVVdVZHVjRkSFZ5WlNCOElHNTFiR3dwSUh0Y2JpQWdJQ0IwYUdsekxuVnVhV1p2Y20xekxuTm9ZV1JsVFhWc2RHbHdiSGxVWlhoMGRYSmxMblpoYkhWbElEMGdkbUZzZFdVN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1oyVjBJSE5vWVdScGJtZFRhR2xtZEVaaFkzUnZjaWdwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5WdWFXWnZjbTF6TG5Ob1lXUnBibWRUYUdsbWRFWmhZM1J2Y2k1MllXeDFaVHRjYmlBZ2ZWeHVJQ0J3ZFdKc2FXTWdjMlYwSUhOb1lXUnBibWRUYUdsbWRFWmhZM1J2Y2loMllXeDFaVG9nYm5WdFltVnlLU0I3WEc0Z0lDQWdkR2hwY3k1MWJtbG1iM0p0Y3k1emFHRmthVzVuVTJocFpuUkdZV04wYjNJdWRtRnNkV1VnUFNCMllXeDFaVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhRZ2MyaGhaR2x1WjFOb2FXWjBWR1Y0ZEhWeVpTZ3BPaUJVU0ZKRlJTNVVaWGgwZFhKbElId2diblZzYkNCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWRXNXBabTl5YlhNdWMyaGhaR2x1WjFOb2FXWjBWR1Y0ZEhWeVpTNTJZV3gxWlR0Y2JpQWdmVnh1SUNCd2RXSnNhV01nYzJWMElITm9ZV1JwYm1kVGFHbG1kRlJsZUhSMWNtVW9kbUZzZFdVNklGUklVa1ZGTGxSbGVIUjFjbVVnZkNCdWRXeHNLU0I3WEc0Z0lDQWdkR2hwY3k1MWJtbG1iM0p0Y3k1emFHRmthVzVuVTJocFpuUlVaWGgwZFhKbExuWmhiSFZsSUQwZ2RtRnNkV1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMElITm9ZV1JwYm1kVGFHbG1kRlJsZUhSMWNtVlRZMkZzWlNncE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuVnVhV1p2Y20xekxuTm9ZV1JwYm1kVGFHbG1kRlJsZUhSMWNtVlRZMkZzWlM1MllXeDFaVHRjYmlBZ2ZWeHVJQ0J3ZFdKc2FXTWdjMlYwSUhOb1lXUnBibWRUYUdsbWRGUmxlSFIxY21WVFkyRnNaU2gyWVd4MVpUb2diblZ0WW1WeUtTQjdYRzRnSUNBZ2RHaHBjeTUxYm1sbWIzSnRjeTV6YUdGa2FXNW5VMmhwWm5SVVpYaDBkWEpsVTJOaGJHVXVkbUZzZFdVZ1BTQjJZV3gxWlR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUWdjMmhoWkdsdVoxUnZiMjU1Um1GamRHOXlLQ2s2SUc1MWJXSmxjaUI3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11ZFc1cFptOXliWE11YzJoaFpHbHVaMVJ2YjI1NVJtRmpkRzl5TG5aaGJIVmxPMXh1SUNCOVhHNGdJSEIxWW14cFl5QnpaWFFnYzJoaFpHbHVaMVJ2YjI1NVJtRmpkRzl5S0haaGJIVmxPaUJ1ZFcxaVpYSXBJSHRjYmlBZ0lDQjBhR2x6TG5WdWFXWnZjbTF6TG5Ob1lXUnBibWRVYjI5dWVVWmhZM1J2Y2k1MllXeDFaU0E5SUhaaGJIVmxPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR2RsZENCbmFVVnhkV0ZzYVhwaGRHbHZia1poWTNSdmNpZ3BPaUJ1ZFcxaVpYSWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMblZ1YVdadmNtMXpMbWRwUlhGMVlXeHBlbUYwYVc5dVJtRmpkRzl5TG5aaGJIVmxPMXh1SUNCOVhHNGdJSEIxWW14cFl5QnpaWFFnWjJsRmNYVmhiR2w2WVhScGIyNUdZV04wYjNJb2RtRnNkV1U2SUc1MWJXSmxjaWtnZTF4dUlDQWdJSFJvYVhNdWRXNXBabTl5YlhNdVoybEZjWFZoYkdsNllYUnBiMjVHWVdOMGIzSXVkbUZzZFdVZ1BTQjJZV3gxWlR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUWdiV0YwWTJGd1JtRmpkRzl5S0NrNklGUklVa1ZGTGtOdmJHOXlJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTUxYm1sbWIzSnRjeTV0WVhSallYQkdZV04wYjNJdWRtRnNkV1U3WEc0Z0lIMWNiaUFnY0hWaWJHbGpJSE5sZENCdFlYUmpZWEJHWVdOMGIzSW9kbUZzZFdVNklGUklVa1ZGTGtOdmJHOXlLU0I3WEc0Z0lDQWdkR2hwY3k1MWJtbG1iM0p0Y3k1dFlYUmpZWEJHWVdOMGIzSXVkbUZzZFdVZ1BTQjJZV3gxWlR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUWdiV0YwWTJGd1ZHVjRkSFZ5WlNncE9pQlVTRkpGUlM1VVpYaDBkWEpsSUh3Z2JuVnNiQ0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11ZFc1cFptOXliWE11YldGMFkyRndWR1Y0ZEhWeVpTNTJZV3gxWlR0Y2JpQWdmVnh1SUNCd2RXSnNhV01nYzJWMElHMWhkR05oY0ZSbGVIUjFjbVVvZG1Gc2RXVTZJRlJJVWtWRkxsUmxlSFIxY21VZ2ZDQnVkV3hzS1NCN1hHNGdJQ0FnZEdocGN5NTFibWxtYjNKdGN5NXRZWFJqWVhCVVpYaDBkWEpsTG5aaGJIVmxJRDBnZG1Gc2RXVTdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaMlYwSUhCaGNtRnRaWFJ5YVdOU2FXMURiMnh2Y2taaFkzUnZjaWdwT2lCVVNGSkZSUzVEYjJ4dmNpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkVzVwWm05eWJYTXVjR0Z5WVcxbGRISnBZMUpwYlVOdmJHOXlSbUZqZEc5eUxuWmhiSFZsTzF4dUlDQjlYRzRnSUhCMVlteHBZeUJ6WlhRZ2NHRnlZVzFsZEhKcFkxSnBiVU52Ykc5eVJtRmpkRzl5S0haaGJIVmxPaUJVU0ZKRlJTNURiMnh2Y2lrZ2UxeHVJQ0FnSUhSb2FYTXVkVzVwWm05eWJYTXVjR0Z5WVcxbGRISnBZMUpwYlVOdmJHOXlSbUZqZEc5eUxuWmhiSFZsSUQwZ2RtRnNkV1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMElISnBiVTExYkhScGNHeDVWR1Y0ZEhWeVpTZ3BPaUJVU0ZKRlJTNVVaWGgwZFhKbElId2diblZzYkNCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWRXNXBabTl5YlhNdWNtbHRUWFZzZEdsd2JIbFVaWGgwZFhKbExuWmhiSFZsTzF4dUlDQjlYRzRnSUhCMVlteHBZeUJ6WlhRZ2NtbHRUWFZzZEdsd2JIbFVaWGgwZFhKbEtIWmhiSFZsT2lCVVNGSkZSUzVVWlhoMGRYSmxJSHdnYm5Wc2JDa2dlMXh1SUNBZ0lIUm9hWE11ZFc1cFptOXliWE11Y21sdFRYVnNkR2x3YkhsVVpYaDBkWEpsTG5aaGJIVmxJRDBnZG1Gc2RXVTdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaMlYwSUhKcGJVeHBaMmgwYVc1blRXbDRSbUZqZEc5eUtDazZJRzUxYldKbGNpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkVzVwWm05eWJYTXVjbWx0VEdsbmFIUnBibWROYVhoR1lXTjBiM0l1ZG1Gc2RXVTdYRzRnSUgxY2JpQWdjSFZpYkdsaklITmxkQ0J5YVcxTWFXZG9kR2x1WjAxcGVFWmhZM1J2Y2loMllXeDFaVG9nYm5WdFltVnlLU0I3WEc0Z0lDQWdkR2hwY3k1MWJtbG1iM0p0Y3k1eWFXMU1hV2RvZEdsdVowMXBlRVpoWTNSdmNpNTJZV3gxWlNBOUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQndZWEpoYldWMGNtbGpVbWx0Um5KbGMyNWxiRkJ2ZDJWeVJtRmpkRzl5S0NrNklHNTFiV0psY2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWRXNXBabTl5YlhNdWNHRnlZVzFsZEhKcFkxSnBiVVp5WlhOdVpXeFFiM2RsY2taaFkzUnZjaTUyWVd4MVpUdGNiaUFnZlZ4dUlDQndkV0pzYVdNZ2MyVjBJSEJoY21GdFpYUnlhV05TYVcxR2NtVnpibVZzVUc5M1pYSkdZV04wYjNJb2RtRnNkV1U2SUc1MWJXSmxjaWtnZTF4dUlDQWdJSFJvYVhNdWRXNXBabTl5YlhNdWNHRnlZVzFsZEhKcFkxSnBiVVp5WlhOdVpXeFFiM2RsY2taaFkzUnZjaTUyWVd4MVpTQTlJSFpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ0J3WVhKaGJXVjBjbWxqVW1sdFRHbG1kRVpoWTNSdmNpZ3BPaUJ1ZFcxaVpYSWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMblZ1YVdadmNtMXpMbkJoY21GdFpYUnlhV05TYVcxTWFXWjBSbUZqZEc5eUxuWmhiSFZsTzF4dUlDQjlYRzRnSUhCMVlteHBZeUJ6WlhRZ2NHRnlZVzFsZEhKcFkxSnBiVXhwWm5SR1lXTjBiM0lvZG1Gc2RXVTZJRzUxYldKbGNpa2dlMXh1SUNBZ0lIUm9hWE11ZFc1cFptOXliWE11Y0dGeVlXMWxkSEpwWTFKcGJVeHBablJHWVdOMGIzSXVkbUZzZFdVZ1BTQjJZV3gxWlR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUWdiM1YwYkdsdVpWZHBaSFJvVFhWc2RHbHdiSGxVWlhoMGRYSmxLQ2s2SUZSSVVrVkZMbFJsZUhSMWNtVWdmQ0J1ZFd4c0lIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NTFibWxtYjNKdGN5NXZkWFJzYVc1bFYybGtkR2hOZFd4MGFYQnNlVlJsZUhSMWNtVXVkbUZzZFdVN1hHNGdJSDFjYmlBZ2NIVmliR2xqSUhObGRDQnZkWFJzYVc1bFYybGtkR2hOZFd4MGFYQnNlVlJsZUhSMWNtVW9kbUZzZFdVNklGUklVa1ZGTGxSbGVIUjFjbVVnZkNCdWRXeHNLU0I3WEc0Z0lDQWdkR2hwY3k1MWJtbG1iM0p0Y3k1dmRYUnNhVzVsVjJsa2RHaE5kV3gwYVhCc2VWUmxlSFIxY21VdWRtRnNkV1VnUFNCMllXeDFaVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhRZ2IzVjBiR2x1WlZkcFpIUm9SbUZqZEc5eUtDazZJRzUxYldKbGNpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkVzVwWm05eWJYTXViM1YwYkdsdVpWZHBaSFJvUm1GamRHOXlMblpoYkhWbE8xeHVJQ0I5WEc0Z0lIQjFZbXhwWXlCelpYUWdiM1YwYkdsdVpWZHBaSFJvUm1GamRHOXlLSFpoYkhWbE9pQnVkVzFpWlhJcElIdGNiaUFnSUNCMGFHbHpMblZ1YVdadmNtMXpMbTkxZEd4cGJtVlhhV1IwYUVaaFkzUnZjaTUyWVd4MVpTQTlJSFpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ0J2ZFhSc2FXNWxRMjlzYjNKR1lXTjBiM0lvS1RvZ1ZFaFNSVVV1UTI5c2IzSWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMblZ1YVdadmNtMXpMbTkxZEd4cGJtVkRiMnh2Y2taaFkzUnZjaTUyWVd4MVpUdGNiaUFnZlZ4dUlDQndkV0pzYVdNZ2MyVjBJRzkxZEd4cGJtVkRiMnh2Y2taaFkzUnZjaWgyWVd4MVpUb2dWRWhTUlVVdVEyOXNiM0lwSUh0Y2JpQWdJQ0IwYUdsekxuVnVhV1p2Y20xekxtOTFkR3hwYm1WRGIyeHZja1poWTNSdmNpNTJZV3gxWlNBOUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQnZkWFJzYVc1bFRHbG5hSFJwYm1kTmFYaEdZV04wYjNJb0tUb2diblZ0WW1WeUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NTFibWxtYjNKdGN5NXZkWFJzYVc1bFRHbG5hSFJwYm1kTmFYaEdZV04wYjNJdWRtRnNkV1U3WEc0Z0lIMWNiaUFnY0hWaWJHbGpJSE5sZENCdmRYUnNhVzVsVEdsbmFIUnBibWROYVhoR1lXTjBiM0lvZG1Gc2RXVTZJRzUxYldKbGNpa2dlMXh1SUNBZ0lIUm9hWE11ZFc1cFptOXliWE11YjNWMGJHbHVaVXhwWjJoMGFXNW5UV2w0Um1GamRHOXlMblpoYkhWbElEMGdkbUZzZFdVN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1oyVjBJSFYyUVc1cGJXRjBhVzl1VFdGemExUmxlSFIxY21Vb0tUb2dWRWhTUlVVdVZHVjRkSFZ5WlNCOElHNTFiR3dnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5WdWFXWnZjbTF6TG5WMlFXNXBiV0YwYVc5dVRXRnphMVJsZUhSMWNtVXVkbUZzZFdVN1hHNGdJSDFjYmlBZ2NIVmliR2xqSUhObGRDQjFka0Z1YVcxaGRHbHZiazFoYzJ0VVpYaDBkWEpsS0haaGJIVmxPaUJVU0ZKRlJTNVVaWGgwZFhKbElId2diblZzYkNrZ2UxeHVJQ0FnSUhSb2FYTXVkVzVwWm05eWJYTXVkWFpCYm1sdFlYUnBiMjVOWVhOclZHVjRkSFZ5WlM1MllXeDFaU0E5SUhaaGJIVmxPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR2RsZENCMWRrRnVhVzFoZEdsdmJsTmpjbTlzYkZoUFptWnpaWFFvS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1MWJtbG1iM0p0Y3k1MWRrRnVhVzFoZEdsdmJsTmpjbTlzYkZoUFptWnpaWFF1ZG1Gc2RXVTdYRzRnSUgxY2JpQWdjSFZpYkdsaklITmxkQ0IxZGtGdWFXMWhkR2x2YmxOamNtOXNiRmhQWm1aelpYUW9kbUZzZFdVNklHNTFiV0psY2lrZ2UxeHVJQ0FnSUhSb2FYTXVkVzVwWm05eWJYTXVkWFpCYm1sdFlYUnBiMjVUWTNKdmJHeFlUMlptYzJWMExuWmhiSFZsSUQwZ2RtRnNkV1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMElIVjJRVzVwYldGMGFXOXVVMk55YjJ4c1dVOW1abk5sZENncE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuVnVhV1p2Y20xekxuVjJRVzVwYldGMGFXOXVVMk55YjJ4c1dVOW1abk5sZEM1MllXeDFaVHRjYmlBZ2ZWeHVJQ0J3ZFdKc2FXTWdjMlYwSUhWMlFXNXBiV0YwYVc5dVUyTnliMnhzV1U5bVpuTmxkQ2gyWVd4MVpUb2diblZ0WW1WeUtTQjdYRzRnSUNBZ2RHaHBjeTUxYm1sbWIzSnRjeTUxZGtGdWFXMWhkR2x2YmxOamNtOXNiRmxQWm1aelpYUXVkbUZzZFdVZ1BTQjJZV3gxWlR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUWdkWFpCYm1sdFlYUnBiMjVTYjNSaGRHbHZibEJvWVhObEtDazZJRzUxYldKbGNpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkVzVwWm05eWJYTXVkWFpCYm1sdFlYUnBiMjVTYjNSaGRHbHZibEJvWVhObExuWmhiSFZsTzF4dUlDQjlYRzRnSUhCMVlteHBZeUJ6WlhRZ2RYWkJibWx0WVhScGIyNVNiM1JoZEdsdmJsQm9ZWE5sS0haaGJIVmxPaUJ1ZFcxaVpYSXBJSHRjYmlBZ0lDQjBhR2x6TG5WdWFXWnZjbTF6TG5WMlFXNXBiV0YwYVc5dVVtOTBZWFJwYjI1UWFHRnpaUzUyWVd4MVpTQTlJSFpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklIVjJRVzVwYldGMGFXOXVVMk55YjJ4c1dGTndaV1ZrUm1GamRHOXlJRDBnTUM0d08xeHVJQ0J3ZFdKc2FXTWdkWFpCYm1sdFlYUnBiMjVUWTNKdmJHeFpVM0JsWldSR1lXTjBiM0lnUFNBd0xqQTdYRzRnSUhCMVlteHBZeUIxZGtGdWFXMWhkR2x2YmxKdmRHRjBhVzl1VTNCbFpXUkdZV04wYjNJZ1BTQXdMakE3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRmRvWlhSb1pYSWdkR2hsSUcxaGRHVnlhV0ZzSUdseklHRm1abVZqZEdWa0lHSjVJR1p2Wnk1Y2JpQWdJQ29nWUhSeWRXVmdJR0o1SUdSbFptRjFiSFF1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWm05bklEMGdkSEoxWlR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVjJsc2JDQmlaU0J5WldGa0lHbHVJRmRsWWtkTVVISnZaM0poYlhOY2JpQWdJQ3BjYmlBZ0lDb2dVMlZsT2lCb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdmJYSmtiMjlpTDNSb2NtVmxMbXB6TDJKc2IySXZOR1kxTWpNMllXTXpaRFptTkRGa09UQTBZV0UxT0RRd01XSTBNRFUxTkdVNFptSmtZMkl4TlM5emNtTXZjbVZ1WkdWeVpYSnpMM2RsWW1kc0wxZGxZa2RNVUhKdlozSmhiWE11YW5NalRERTVNQzFNTVRreFhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2JtOXliV0ZzVFdGd1ZIbHdaU0E5SUZSSVVrVkZMbFJoYm1kbGJuUlRjR0ZqWlU1dmNtMWhiRTFoY0R0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVjJobGJpQjBhR2x6SUdseklHQjBjblZsWUN3Z2RtVnlkR1Y0SUdOdmJHOXljeUIzYVd4c0lHSmxJR2xuYm05eVpXUXVYRzRnSUNBcUlHQjBjblZsWUNCaWVTQmtaV1poZFd4MExseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmZhV2R1YjNKbFZtVnlkR1Y0UTI5c2IzSWdQU0IwY25WbE8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCWGFHVnVJSFJvYVhNZ2FYTWdZSFJ5ZFdWZ0xDQjJaWEowWlhnZ1kyOXNiM0p6SUhkcGJHd2dZbVVnYVdkdWIzSmxaQzVjYmlBZ0lDb2dZSFJ5ZFdWZ0lHSjVJR1JsWm1GMWJIUXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdaMlYwSUdsbmJtOXlaVlpsY25SbGVFTnZiRzl5S0NrNklHSnZiMnhsWVc0Z2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxsOXBaMjV2Y21WV1pYSjBaWGhEYjJ4dmNqdGNiaUFnZlZ4dUlDQndkV0pzYVdNZ2MyVjBJR2xuYm05eVpWWmxjblJsZUVOdmJHOXlLSFpoYkhWbE9pQmliMjlzWldGdUtTQjdYRzRnSUNBZ2RHaHBjeTVmYVdkdWIzSmxWbVZ5ZEdWNFEyOXNiM0lnUFNCMllXeDFaVHRjYmx4dUlDQWdJSFJvYVhNdWJtVmxaSE5WY0dSaGRHVWdQU0IwY25WbE8xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQmZkakJEYjIxd1lYUlRhR0ZrWlNBOUlHWmhiSE5sTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJVYUdWeVpTQnBjeUJoSUd4cGJtVWdiMllnZEdobElITm9ZV1JsY2lCallXeHNaV1FnWENKamIyMXRaVzUwSUc5MWRDQnBaaUI1YjNVZ2QyRnVkQ0IwYnlCUVFsSWdZV0p6YjJ4MWRHVnNlVndpSUdsdUlGWlNUVEF1TUNCTlZHOXZiaTVjYmlBZ0lDb2dWMmhsYmlCMGFHbHpJR2x6SUhSeWRXVXNJSFJvWlNCdFlYUmxjbWxoYkNCbGJtRmliR1Z6SUhSb1pTQnNhVzVsSUhSdklHMWhhMlVnYVhRZ1kyOXRjR0YwYVdKc1pTQjNhWFJvSUhSb1pTQnNaV2RoWTNrZ2NtVnVaR1Z5YVc1bklHOW1JRlpTVFM1Y2JpQWdJQ29nVlhOMVlXeHNlU0J1YjNRZ2NtVmpiMjF0Wlc1a1pXUWdkRzhnZEhWeWJpQjBhR2x6SUc5dUxseHVJQ0FnS2lCZ1ptRnNjMlZnSUdKNUlHUmxabUYxYkhRdVhHNGdJQ0FxTDF4dUlDQm5aWFFnZGpCRGIyMXdZWFJUYUdGa1pTZ3BPaUJpYjI5c1pXRnVJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmZGpCRGIyMXdZWFJUYUdGa1pUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJVYUdWeVpTQnBjeUJoSUd4cGJtVWdiMllnZEdobElITm9ZV1JsY2lCallXeHNaV1FnWENKamIyMXRaVzUwSUc5MWRDQnBaaUI1YjNVZ2QyRnVkQ0IwYnlCUVFsSWdZV0p6YjJ4MWRHVnNlVndpSUdsdUlGWlNUVEF1TUNCTlZHOXZiaTVjYmlBZ0lDb2dWMmhsYmlCMGFHbHpJR2x6SUhSeWRXVXNJSFJvWlNCdFlYUmxjbWxoYkNCbGJtRmliR1Z6SUhSb1pTQnNhVzVsSUhSdklHMWhhMlVnYVhRZ1kyOXRjR0YwYVdKc1pTQjNhWFJvSUhSb1pTQnNaV2RoWTNrZ2NtVnVaR1Z5YVc1bklHOW1JRlpTVFM1Y2JpQWdJQ29nVlhOMVlXeHNlU0J1YjNRZ2NtVmpiMjF0Wlc1a1pXUWdkRzhnZEhWeWJpQjBhR2x6SUc5dUxseHVJQ0FnS2lCZ1ptRnNjMlZnSUdKNUlHUmxabUYxYkhRdVhHNGdJQ0FxTDF4dUlDQnpaWFFnZGpCRGIyMXdZWFJUYUdGa1pTaDJPaUJpYjI5c1pXRnVLU0I3WEc0Z0lDQWdkR2hwY3k1ZmRqQkRiMjF3WVhSVGFHRmtaU0E5SUhZN1hHNWNiaUFnSUNCMGFHbHpMbTVsWldSelZYQmtZWFJsSUQwZ2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWDJSbFluVm5UVzlrWlRvZ1RWUnZiMjVOWVhSbGNtbGhiRVJsWW5WblRXOWtaU0E5SUUxVWIyOXVUV0YwWlhKcFlXeEVaV0oxWjAxdlpHVXVUbTl1WlR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUkdWaWRXY2diVzlrWlNCbWIzSWdkR2hsSUcxaGRHVnlhV0ZzTGx4dUlDQWdLaUJaYjNVZ1kyRnVJSFpwYzNWaGJHbDZaU0J6WlhabGNtRnNJR052YlhCdmJtVnVkSE1nWm05eUlHUnBZV2R1YjNOcGN5QjFjMmx1WnlCa1pXSjFaeUJ0YjJSbExseHVJQ0FnS2x4dUlDQWdLaUJUWldVNklIdEFiR2x1YXlCTlZHOXZiazFoZEdWeWFXRnNSR1ZpZFdkTmIyUmxmVnh1SUNBZ0tpOWNiaUFnWjJWMElHUmxZblZuVFc5a1pTZ3BPaUJOVkc5dmJrMWhkR1Z5YVdGc1JHVmlkV2ROYjJSbElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZaR1ZpZFdkTmIyUmxPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVSbFluVm5JRzF2WkdVZ1ptOXlJSFJvWlNCdFlYUmxjbWxoYkM1Y2JpQWdJQ29nV1c5MUlHTmhiaUIyYVhOMVlXeHBlbVVnYzJWMlpYSmhiQ0JqYjIxd2IyNWxiblJ6SUdadmNpQmthV0ZuYm05emFYTWdkWE5wYm1jZ1pHVmlkV2NnYlc5a1pTNWNiaUFnSUNwY2JpQWdJQ29nVTJWbE9pQjdRR3hwYm1zZ1RWUnZiMjVOWVhSbGNtbGhiRVJsWW5WblRXOWtaWDFjYmlBZ0lDb3ZYRzRnSUhObGRDQmtaV0oxWjAxdlpHVW9iVG9nVFZSdmIyNU5ZWFJsY21saGJFUmxZblZuVFc5a1pTa2dlMXh1SUNBZ0lIUm9hWE11WDJSbFluVm5UVzlrWlNBOUlHMDdYRzVjYmlBZ0lDQjBhR2x6TG01bFpXUnpWWEJrWVhSbElEMGdkSEoxWlR0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1gyOTFkR3hwYm1WWGFXUjBhRTF2WkdVNklFMVViMjl1VFdGMFpYSnBZV3hQZFhSc2FXNWxWMmxrZEdoTmIyUmxJRDBnVFZSdmIyNU5ZWFJsY21saGJFOTFkR3hwYm1WWGFXUjBhRTF2WkdVdVRtOXVaVHRjYmx4dUlDQm5aWFFnYjNWMGJHbHVaVmRwWkhSb1RXOWtaU2dwT2lCTlZHOXZiazFoZEdWeWFXRnNUM1YwYkdsdVpWZHBaSFJvVFc5a1pTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYMjkxZEd4cGJtVlhhV1IwYUUxdlpHVTdYRzRnSUgxY2JpQWdjMlYwSUc5MWRHeHBibVZYYVdSMGFFMXZaR1VvYlRvZ1RWUnZiMjVOWVhSbGNtbGhiRTkxZEd4cGJtVlhhV1IwYUUxdlpHVXBJSHRjYmlBZ0lDQjBhR2x6TGw5dmRYUnNhVzVsVjJsa2RHaE5iMlJsSUQwZ2JUdGNibHh1SUNBZ0lIUm9hWE11Ym1WbFpITlZjR1JoZEdVZ1BTQjBjblZsTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCZmFYTlBkWFJzYVc1bElEMGdabUZzYzJVN1hHNWNiaUFnWjJWMElHbHpUM1YwYkdsdVpTZ3BPaUJpYjI5c1pXRnVJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmYVhOUGRYUnNhVzVsTzF4dUlDQjlYRzRnSUhObGRDQnBjMDkxZEd4cGJtVW9Zam9nWW05dmJHVmhiaWtnZTF4dUlDQWdJSFJvYVhNdVgybHpUM1YwYkdsdVpTQTlJR0k3WEc1Y2JpQWdJQ0IwYUdsekxtNWxaV1J6VlhCa1lYUmxJRDBnZEhKMVpUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWldGa2IyNXNlU0JpYjI5c1pXRnVJSFJvWVhRZ2FXNWthV05oZEdWeklIUm9hWE1nYVhNZ1lTQmJXMDFVYjI5dVRXRjBaWEpwWVd4ZFhTNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFFnYVhOTlZHOXZiazFoZEdWeWFXRnNLQ2s2SUhSeWRXVWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNCOVhHNWNiaUFnWTI5dWMzUnlkV04wYjNJb2NHRnlZVzFsZEdWeWN6b2dUVlJ2YjI1TllYUmxjbWxoYkZCaGNtRnRaWFJsY25NZ1BTQjdmU2tnZTF4dUlDQWdJSE4xY0dWeUtIc2dkbVZ5ZEdWNFUyaGhaR1Z5TENCbWNtRm5iV1Z1ZEZOb1lXUmxjaUI5S1R0Y2JseHVJQ0FnSUM4dklHOTJaWEp5YVdSbElHUmxjSFJvVjNKcGRHVWdkMmwwYUNCMGNtRnVjM0JoY21WdWRGZHBkR2hhVjNKcGRHVmNiaUFnSUNCcFppQW9jR0Z5WVcxbGRHVnljeTUwY21GdWMzQmhjbVZ1ZEZkcGRHaGFWM0pwZEdVcElIdGNiaUFnSUNBZ0lIQmhjbUZ0WlhSbGNuTXVaR1Z3ZEdoWGNtbDBaU0E5SUhSeWRXVTdYRzRnSUNBZ2ZWeHVJQ0FnSUdSbGJHVjBaU0J3WVhKaGJXVjBaWEp6TG5SeVlXNXpjR0Z5Wlc1MFYybDBhRnBYY21sMFpUdGNibHh1SUNBZ0lDOHZJRDA5SUdWdVlXSnNhVzVuSUdKMWJtTm9JRzltSUhOMGRXWm1JRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFZ4dUlDQWdJSEJoY21GdFpYUmxjbk11Wm05bklEMGdkSEoxWlR0Y2JpQWdJQ0J3WVhKaGJXVjBaWEp6TG14cFoyaDBjeUE5SUhSeWRXVTdYRzRnSUNBZ2NHRnlZVzFsZEdWeWN5NWpiR2x3Y0dsdVp5QTlJSFJ5ZFdVN1hHNWNiaUFnSUNBdkx5QkRUMDFRUVZRNklIQnlaUzF5TVRJNVhHNGdJQ0FnTHk4Z1UyVmxPaUJvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2YlhKa2IyOWlMM1JvY21WbExtcHpMM0IxYkd3dk1qRTNPRGhjYmlBZ0lDQnBaaUFvY0dGeWMyVkpiblFvVkVoU1JVVXVVa1ZXU1ZOSlQwNHNJREV3S1NBOElERXlPU2tnZTF4dUlDQWdJQ0FnS0hCaGNtRnRaWFJsY25NZ1lYTWdZVzU1S1M1emEybHVibWx1WnlBOUlDaHdZWEpoYldWMFpYSnpJR0Z6SUdGdWVTa3VjMnRwYm01cGJtY2dmSHdnWm1Gc2MyVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdRMDlOVUVGVU9pQndjbVV0Y2pFek1WeHVJQ0FnSUM4dklGTmxaVG9nYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDIxeVpHOXZZaTkwYUhKbFpTNXFjeTl3ZFd4c0x6SXlNVFk1WEc0Z0lDQWdhV1lnS0hCaGNuTmxTVzUwS0ZSSVVrVkZMbEpGVmtsVFNVOU9MQ0F4TUNrZ1BDQXhNekVwSUh0Y2JpQWdJQ0FnSUNod1lYSmhiV1YwWlhKeklHRnpJR0Z1ZVNrdWJXOXljR2hVWVhKblpYUnpJRDBnS0hCaGNtRnRaWFJsY25NZ1lYTWdZVzU1S1M1dGIzSndhRlJoY21kbGRITWdmSHdnWm1Gc2MyVTdYRzRnSUNBZ0lDQW9jR0Z5WVcxbGRHVnljeUJoY3lCaGJua3BMbTF2Y25Cb1RtOXliV0ZzY3lBOUlDaHdZWEpoYldWMFpYSnpJR0Z6SUdGdWVTa3ViVzl5Y0doT2IzSnRZV3h6SUh4OElHWmhiSE5sTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUQwOUlIVnVhV1p2Y20xeklEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVJQ0FnSUhSb2FYTXVkVzVwWm05eWJYTWdQU0JVU0ZKRlJTNVZibWxtYjNKdGMxVjBhV3h6TG0xbGNtZGxLRnRjYmlBZ0lDQWdJRlJJVWtWRkxsVnVhV1p2Y20xelRHbGlMbU52YlcxdmJpd2dMeThnYldGd1hHNGdJQ0FnSUNCVVNGSkZSUzVWYm1sbWIzSnRjMHhwWWk1dWIzSnRZV3h0WVhBc0lDOHZJRzV2Y20xaGJFMWhjRnh1SUNBZ0lDQWdWRWhTUlVVdVZXNXBabTl5YlhOTWFXSXVaVzFwYzNOcGRtVnRZWEFzSUM4dklHVnRhWE56YVhabFRXRndYRzRnSUNBZ0lDQlVTRkpGUlM1VmJtbG1iM0p0YzB4cFlpNW1iMmNzWEc0Z0lDQWdJQ0JVU0ZKRlJTNVZibWxtYjNKdGMweHBZaTVzYVdkb2RITXNYRzRnSUNBZ0lDQjdYRzRnSUNBZ0lDQWdJR3hwZEVaaFkzUnZjam9nZXlCMllXeDFaVG9nYm1WM0lGUklVa1ZGTGtOdmJHOXlLREV1TUN3Z01TNHdMQ0F4TGpBcElIMHNYRzRnSUNBZ0lDQWdJRzFoY0ZWMlZISmhibk5tYjNKdE9pQjdJSFpoYkhWbE9pQnVaWGNnVkVoU1JVVXVUV0YwY21sNE15Z3BJSDBzWEc0Z0lDQWdJQ0FnSUdOdmJHOXlRV3h3YUdFNklIc2dkbUZzZFdVNklERXVNQ0I5TEZ4dUlDQWdJQ0FnSUNCdWIzSnRZV3hOWVhCVmRsUnlZVzV6Wm05eWJUb2dleUIyWVd4MVpUb2dibVYzSUZSSVVrVkZMazFoZEhKcGVETW9LU0I5TEZ4dUlDQWdJQ0FnSUNCemFHRmtaVU52Ykc5eVJtRmpkRzl5T2lCN0lIWmhiSFZsT2lCdVpYY2dWRWhTUlVVdVEyOXNiM0lvTUM0NU55d2dNQzQ0TVN3Z01DNDROaWtnZlN4Y2JpQWdJQ0FnSUNBZ2MyaGhaR1ZOZFd4MGFYQnNlVlJsZUhSMWNtVTZJSHNnZG1Gc2RXVTZJRzUxYkd3Z2ZTeGNiaUFnSUNBZ0lDQWdjMmhoWkdWTmRXeDBhWEJzZVZSbGVIUjFjbVZWZGxSeVlXNXpabTl5YlRvZ2V5QjJZV3gxWlRvZ2JtVjNJRlJJVWtWRkxrMWhkSEpwZURNb0tTQjlMRnh1SUNBZ0lDQWdJQ0J6YUdGa2FXNW5VMmhwWm5SR1lXTjBiM0k2SUhzZ2RtRnNkV1U2SURBdU1DQjlMRnh1SUNBZ0lDQWdJQ0J6YUdGa2FXNW5VMmhwWm5SVVpYaDBkWEpsT2lCN0lIWmhiSFZsT2lCdWRXeHNJSDBzWEc0Z0lDQWdJQ0FnSUhOb1lXUnBibWRUYUdsbWRGUmxlSFIxY21WVmRsUnlZVzV6Wm05eWJUb2dleUIyWVd4MVpUb2dibVYzSUZSSVVrVkZMazFoZEhKcGVETW9LU0I5TEZ4dUlDQWdJQ0FnSUNCemFHRmthVzVuVTJocFpuUlVaWGgwZFhKbFUyTmhiR1U2SUhzZ2RtRnNkV1U2SURFdU1DQjlMRnh1SUNBZ0lDQWdJQ0J6YUdGa2FXNW5WRzl2Ym5sR1lXTjBiM0k2SUhzZ2RtRnNkV1U2SURBdU9TQjlMRnh1SUNBZ0lDQWdJQ0JuYVVWeGRXRnNhWHBoZEdsdmJrWmhZM1J2Y2pvZ2V5QjJZV3gxWlRvZ01DNDVJSDBzWEc0Z0lDQWdJQ0FnSUcxaGRHTmhjRVpoWTNSdmNqb2dleUIyWVd4MVpUb2dibVYzSUZSSVVrVkZMa052Ykc5eUtEQXVNQ3dnTUM0d0xDQXdMakFwSUgwc1hHNGdJQ0FnSUNBZ0lHMWhkR05oY0ZSbGVIUjFjbVU2SUhzZ2RtRnNkV1U2SUc1MWJHd2dmU3hjYmlBZ0lDQWdJQ0FnYldGMFkyRndWR1Y0ZEhWeVpWVjJWSEpoYm5ObWIzSnRPaUI3SUhaaGJIVmxPaUJ1WlhjZ1ZFaFNSVVV1VFdGMGNtbDRNeWdwSUgwc1hHNGdJQ0FnSUNBZ0lIQmhjbUZ0WlhSeWFXTlNhVzFEYjJ4dmNrWmhZM1J2Y2pvZ2V5QjJZV3gxWlRvZ2JtVjNJRlJJVWtWRkxrTnZiRzl5S0RBdU1Dd2dNQzR3TENBd0xqQXBJSDBzWEc0Z0lDQWdJQ0FnSUhKcGJVMTFiSFJwY0d4NVZHVjRkSFZ5WlRvZ2V5QjJZV3gxWlRvZ2JuVnNiQ0I5TEZ4dUlDQWdJQ0FnSUNCeWFXMU5kV3gwYVhCc2VWUmxlSFIxY21WVmRsUnlZVzV6Wm05eWJUb2dleUIyWVd4MVpUb2dibVYzSUZSSVVrVkZMazFoZEhKcGVETW9LU0I5TEZ4dUlDQWdJQ0FnSUNCeWFXMU1hV2RvZEdsdVowMXBlRVpoWTNSdmNqb2dleUIyWVd4MVpUb2dNQzR3SUgwc1hHNGdJQ0FnSUNBZ0lIQmhjbUZ0WlhSeWFXTlNhVzFHY21WemJtVnNVRzkzWlhKR1lXTjBiM0k2SUhzZ2RtRnNkV1U2SURFdU1DQjlMRnh1SUNBZ0lDQWdJQ0J3WVhKaGJXVjBjbWxqVW1sdFRHbG1kRVpoWTNSdmNqb2dleUIyWVd4MVpUb2dNQzR3SUgwc1hHNGdJQ0FnSUNBZ0lHVnRhWE56YVhabE9pQjdJSFpoYkhWbE9pQnVaWGNnVkVoU1JVVXVRMjlzYjNJb01DNHdMQ0F3TGpBc0lEQXVNQ2tnZlN4Y2JpQWdJQ0FnSUNBZ1pXMXBjM05wZG1WSmJuUmxibk5wZEhrNklIc2dkbUZzZFdVNklERXVNQ0I5TEZ4dUlDQWdJQ0FnSUNCbGJXbHpjMmwyWlUxaGNGVjJWSEpoYm5ObWIzSnRPaUI3SUhaaGJIVmxPaUJ1WlhjZ1ZFaFNSVVV1VFdGMGNtbDRNeWdwSUgwc1hHNGdJQ0FnSUNBZ0lHOTFkR3hwYm1WWGFXUjBhRTExYkhScGNHeDVWR1Y0ZEhWeVpUb2dleUIyWVd4MVpUb2diblZzYkNCOUxGeHVJQ0FnSUNBZ0lDQnZkWFJzYVc1bFYybGtkR2hOZFd4MGFYQnNlVlJsZUhSMWNtVlZkbFJ5WVc1elptOXliVG9nZXlCMllXeDFaVG9nYm1WM0lGUklVa1ZGTGsxaGRISnBlRE1vS1NCOUxGeHVJQ0FnSUNBZ0lDQnZkWFJzYVc1bFYybGtkR2hHWVdOMGIzSTZJSHNnZG1Gc2RXVTZJREF1TlNCOUxGeHVJQ0FnSUNBZ0lDQnZkWFJzYVc1bFEyOXNiM0pHWVdOMGIzSTZJSHNnZG1Gc2RXVTZJRzVsZHlCVVNGSkZSUzVEYjJ4dmNpZ3dMakFzSURBdU1Dd2dNQzR3S1NCOUxGeHVJQ0FnSUNBZ0lDQnZkWFJzYVc1bFRHbG5hSFJwYm1kTmFYaEdZV04wYjNJNklIc2dkbUZzZFdVNklERXVNQ0I5TEZ4dUlDQWdJQ0FnSUNCMWRrRnVhVzFoZEdsdmJrMWhjMnRVWlhoMGRYSmxPaUI3SUhaaGJIVmxPaUJ1ZFd4c0lIMHNYRzRnSUNBZ0lDQWdJSFYyUVc1cGJXRjBhVzl1VFdGemExUmxlSFIxY21WVmRsUnlZVzV6Wm05eWJUb2dleUIyWVd4MVpUb2dibVYzSUZSSVVrVkZMazFoZEhKcGVETW9LU0I5TEZ4dUlDQWdJQ0FnSUNCMWRrRnVhVzFoZEdsdmJsTmpjbTlzYkZoUFptWnpaWFE2SUhzZ2RtRnNkV1U2SURBdU1DQjlMRnh1SUNBZ0lDQWdJQ0IxZGtGdWFXMWhkR2x2YmxOamNtOXNiRmxQWm1aelpYUTZJSHNnZG1Gc2RXVTZJREF1TUNCOUxGeHVJQ0FnSUNBZ0lDQjFka0Z1YVcxaGRHbHZibEp2ZEdGMGFXOXVVR2hoYzJVNklIc2dkbUZzZFdVNklEQXVNQ0I5TEZ4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUhCaGNtRnRaWFJsY25NdWRXNXBabTl5YlhNc1hHNGdJQ0FnWFNrN1hHNWNiaUFnSUNBdkx5QTlQU0JtYVc1aGJHeDVJR052YlhCcGJHVWdkR2hsSUhOb1lXUmxjaUJ3Y205bmNtRnRJRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmlBZ0lDQjBhR2x6TG5ObGRGWmhiSFZsY3lod1lYSmhiV1YwWlhKektUdGNibHh1SUNBZ0lDOHZJRDA5SUhWd2JHOWhaQ0IxYm1sbWIzSnRjeUIwYUdGMElHNWxaV1FnZEc4Z2RYQnNiMkZrSUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFZ4dUlDQWdJSFJvYVhNdVgzVndiRzloWkZWdWFXWnZjbTF6VjI5eWEyRnliM1Z1WkNncE8xeHVYRzRnSUNBZ0x5OGdQVDBnZFhCa1lYUmxJSE5vWVdSbGNpQnpkSFZtWmlBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc0Z0lDQWdkR2hwY3k1amRYTjBiMjFRY205bmNtRnRRMkZqYUdWTFpYa2dQU0FvS1NBOVBseHVJQ0FnSUNBZ1cxeHVJQ0FnSUNBZ0lDQXVMaTVQWW1wbFkzUXVaVzUwY21sbGN5aDBhR2x6TGw5blpXNWxjbUYwWlVSbFptbHVaWE1vS1NrdWJXRndLQ2hiZEc5clpXNHNJRzFoWTNKdlhTa2dQVDRnWUNSN2RHOXJaVzU5T2lSN2JXRmpjbTk5WUNrc1hHNGdJQ0FnSUNBZ0lIUm9hWE11YldGMFkyRndWR1Y0ZEhWeVpTQS9JR0J0WVhSallYQlVaWGgwZFhKbFEyOXNiM0pUY0dGalpUb2tlMmRsZEZSbGVIUjFjbVZEYjJ4dmNsTndZV05sS0hSb2FYTXViV0YwWTJGd1ZHVjRkSFZ5WlNsOVlDQTZJQ2NuTEZ4dUlDQWdJQ0FnSUNCMGFHbHpMbk5vWVdSbFRYVnNkR2x3YkhsVVpYaDBkWEpsWEc0Z0lDQWdJQ0FnSUNBZ1B5QmdjMmhoWkdWTmRXeDBhWEJzZVZSbGVIUjFjbVZEYjJ4dmNsTndZV05sT2lSN1oyVjBWR1Y0ZEhWeVpVTnZiRzl5VTNCaFkyVW9kR2hwY3k1emFHRmtaVTExYkhScGNHeDVWR1Y0ZEhWeVpTbDlZRnh1SUNBZ0lDQWdJQ0FnSURvZ0p5Y3NYRzRnSUNBZ0lDQWdJSFJvYVhNdWNtbHRUWFZzZEdsd2JIbFVaWGgwZFhKbElEOGdZSEpwYlUxMWJIUnBjR3g1VkdWNGRIVnlaVU52Ykc5eVUzQmhZMlU2Skh0blpYUlVaWGgwZFhKbFEyOXNiM0pUY0dGalpTaDBhR2x6TG5KcGJVMTFiSFJwY0d4NVZHVjRkSFZ5WlNsOVlDQTZJQ2NuTEZ4dUlDQWdJQ0FnWFM1cWIybHVLQ2NzSnlrN1hHNWNiaUFnSUNCMGFHbHpMbTl1UW1WbWIzSmxRMjl0Y0dsc1pTQTlJQ2h6YUdGa1pYSXBJRDArSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJSFJvY21WbFVtVjJhWE5wYjI0Z1BTQndZWEp6WlVsdWRDaFVTRkpGUlM1U1JWWkpVMGxQVGl3Z01UQXBPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQmtaV1pwYm1WeklEMWNiaUFnSUNBZ0lDQWdUMkpxWldOMExtVnVkSEpwWlhNb2V5QXVMaTUwYUdsekxsOW5aVzVsY21GMFpVUmxabWx1WlhNb0tTd2dMaTR1ZEdocGN5NWtaV1pwYm1WeklIMHBYRzRnSUNBZ0lDQWdJQ0FnTG1acGJIUmxjaWdvVzNSdmEyVnVMQ0J0WVdOeWIxMHBJRDArSUNFaGJXRmpjbThwWEc0Z0lDQWdJQ0FnSUNBZ0xtMWhjQ2dvVzNSdmEyVnVMQ0J0WVdOeWIxMHBJRDArSUdBalpHVm1hVzVsSUNSN2RHOXJaVzU5SUNSN2JXRmpjbTk5WUNsY2JpQWdJQ0FnSUNBZ0lDQXVhbTlwYmlnblhGeHVKeWtnS3lBblhGeHVKenRjYmx4dUlDQWdJQ0FnTHk4Z0xTMGdaMlZ1WlhKaGRHVWdjMmhoWkdWeUlHTnZaR1VnTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExWeHVJQ0FnSUNBZ2MyaGhaR1Z5TG5abGNuUmxlRk5vWVdSbGNpQTlJR1JsWm1sdVpYTWdLeUJ6YUdGa1pYSXVkbVZ5ZEdWNFUyaGhaR1Z5TzF4dUlDQWdJQ0FnYzJoaFpHVnlMbVp5WVdkdFpXNTBVMmhoWkdWeUlEMGdaR1ZtYVc1bGN5QXJJSE5vWVdSbGNpNW1jbUZuYldWdWRGTm9ZV1JsY2p0Y2JseHVJQ0FnSUNBZ0x5OGdMUzBnWTI5dGNHRjBJQzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMVnh1WEc0Z0lDQWdJQ0F2THlCRFQwMVFRVlE2SUhCeVpTMXlNVFUwWEc0Z0lDQWdJQ0F2THlCVWFISmxaUzVxY3lCeU1UVTBJSEpsYm1GdFpYTWdkR2hsSUhOb1lXUmxjaUJqYUhWdWF5QThZMjlzYjNKemNHRmpaVjltY21GbmJXVnVkRDRnZEc4Z1BHVnVZMjlrYVc1bmMxOW1jbUZuYldWdWRENWNiaUFnSUNBZ0lHbG1JQ2gwYUhKbFpWSmxkbWx6YVc5dUlEd2dNVFUwS1NCN1hHNGdJQ0FnSUNBZ0lITm9ZV1JsY2k1bWNtRm5iV1Z1ZEZOb1lXUmxjaUE5SUhOb1lXUmxjaTVtY21GbmJXVnVkRk5vWVdSbGNpNXlaWEJzWVdObEtGeHVJQ0FnSUNBZ0lDQWdJQ2NqYVc1amJIVmtaU0E4WTI5c2IzSnpjR0ZqWlY5bWNtRm5iV1Z1ZEQ0bkxGeHVJQ0FnSUNBZ0lDQWdJQ2NqYVc1amJIVmtaU0E4Wlc1amIyUnBibWR6WDJaeVlXZHRaVzUwUGljc1hHNGdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQzh2SUVOUFRWQkJWRG9nY0hKbExYSXhNekpjYmlBZ0lDQWdJQzh2SUZSb2NtVmxMbXB6SUhJeE16SWdhVzUwY205a2RXTmxjeUJ1WlhjZ2MyaGhaR1Z5SUdOb2RXNXJjeUE4Ym05eWJXRnNYM0JoY25OZlpuSmhaMjFsYm5RK0lHRnVaQ0E4WVd4d2FHRjBaWE4wWDNCaGNuTmZabkpoWjIxbGJuUStYRzRnSUNBZ0lDQnBaaUFvZEdoeVpXVlNaWFpwYzJsdmJpQThJREV6TWlrZ2UxeHVJQ0FnSUNBZ0lDQnphR0ZrWlhJdVpuSmhaMjFsYm5SVGFHRmtaWElnUFNCemFHRmtaWEl1Wm5KaFoyMWxiblJUYUdGa1pYSXVjbVZ3YkdGalpTZ25JMmx1WTJ4MVpHVWdQRzV2Y20xaGJGOXdZWEp6WDJaeVlXZHRaVzUwUGljc0lDY25LVHRjYmlBZ0lDQWdJQ0FnYzJoaFpHVnlMbVp5WVdkdFpXNTBVMmhoWkdWeUlEMGdjMmhoWkdWeUxtWnlZV2R0Wlc1MFUyaGhaR1Z5TG5KbGNHeGhZMlVvSnlOcGJtTnNkV1JsSUR4aGJIQm9ZWFJsYzNSZmNHRnljMTltY21GbmJXVnVkRDRuTENBbkp5azdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJWY0dSaGRHVWdkR2hwY3lCdFlYUmxjbWxoYkM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElHUmxiSFJoSUdSbGJIUmhWR2x0WlNCemFXNWpaU0JzWVhOMElIVndaR0YwWlZ4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhWd1pHRjBaU2hrWld4MFlUb2diblZ0WW1WeUtUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NWZkWEJzYjJGa1ZXNXBabTl5YlhOWGIzSnJZWEp2ZFc1a0tDazdYRzRnSUNBZ2RHaHBjeTVmZFhCa1lYUmxWVlpCYm1sdFlYUnBiMjRvWkdWc2RHRXBPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR052Y0hrb2MyOTFjbU5sT2lCMGFHbHpLVG9nZEdocGN5QjdYRzRnSUNBZ2MzVndaWEl1WTI5d2VTaHpiM1Z5WTJVcE8xeHVJQ0FnSUM4dklIVnVhV1p2Y20xeklHRnlaU0JoYkhKbFlXUjVJR052Y0dsbFpDQmhkQ0IwYUdseklHMXZiV1Z1ZEZ4dVhHNGdJQ0FnTHk4Z1FtVm5hVzV1YVc1bklHWnliMjBnY2pFek15d2dkVzVwWm05eWJTQjBaWGgwZFhKbGN5QjNhV3hzSUdKbElHTnNiMjVsWkNCcGJuTjBaV0ZrSUc5bUlISmxabVZ5Wlc1alpWeHVJQ0FnSUM4dklGTmxaVG9nYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDIxeVpHOXZZaTkwYUhKbFpTNXFjeTlpYkc5aUwyRTRPREV6WW1Vd05HRTRORGxpWkRFMU5XWTNZMlkyWmpGaU1qTmtPR1ZsTW1Vd1ptSTBPR0l2WlhoaGJYQnNaWE12YW5OdEwyeHZZV1JsY25NdlIweFVSa3h2WVdSbGNpNXFjeU5NTXpBME4xeHVJQ0FnSUM4dklGTmxaVG9nYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDIxeVpHOXZZaTkwYUhKbFpTNXFjeTlpYkc5aUwyRTRPREV6WW1Vd05HRTRORGxpWkRFMU5XWTNZMlkyWmpGaU1qTmtPR1ZsTW1Vd1ptSTBPR0l2YzNKakwzSmxibVJsY21WeWN5OXphR0ZrWlhKekwxVnVhV1p2Y20xelZYUnBiSE11YW5NalRESXlYRzRnSUNBZ0x5OGdWR2hwY3lCM2FXeHNJR3hsWVhabElIUm9aV2x5SUdBdWRtVnljMmx2Ym1BZ2RHOGdZbVVnWURCZ1hHNGdJQ0FnTHk4Z1lXNWtJSFJvWlhObElIUmxlSFIxY21WeklIZHZiaWQwSUdKbElIVndiRzloWkdWa0lIUnZJRWRRVlZ4dUlDQWdJQzh2SUZkbElHRnlaU0JuYjJsdVp5QjBieUIzYjNKcllYSnZkVzVrSUhSb2FYTWdhVzRnYUdWeVpWeHVJQ0FnSUM4dklFa25kbVVnYjNCbGJtVmtJR0Z1SUdsemMzVmxJR1p2Y2lCMGFHbHpPaUJvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2YlhKa2IyOWlMM1JvY21WbExtcHpMMmx6YzNWbGN5OHlNamN4T0Z4dUlDQWdJSFJvYVhNdWJXRndJRDBnYzI5MWNtTmxMbTFoY0R0Y2JpQWdJQ0IwYUdsekxtNXZjbTFoYkUxaGNDQTlJSE52ZFhKalpTNXViM0p0WVd4TllYQTdYRzRnSUNBZ2RHaHBjeTVsYldsemMybDJaVTFoY0NBOUlITnZkWEpqWlM1bGJXbHpjMmwyWlUxaGNEdGNiaUFnSUNCMGFHbHpMbk5vWVdSbFRYVnNkR2x3YkhsVVpYaDBkWEpsSUQwZ2MyOTFjbU5sTG5Ob1lXUmxUWFZzZEdsd2JIbFVaWGgwZFhKbE8xeHVJQ0FnSUhSb2FYTXVjMmhoWkdsdVoxTm9hV1owVkdWNGRIVnlaU0E5SUhOdmRYSmpaUzV6YUdGa2FXNW5VMmhwWm5SVVpYaDBkWEpsTzF4dUlDQWdJSFJvYVhNdWJXRjBZMkZ3VkdWNGRIVnlaU0E5SUhOdmRYSmpaUzV0WVhSallYQlVaWGgwZFhKbE8xeHVJQ0FnSUhSb2FYTXVjbWx0VFhWc2RHbHdiSGxVWlhoMGRYSmxJRDBnYzI5MWNtTmxMbkpwYlUxMWJIUnBjR3g1VkdWNGRIVnlaVHRjYmlBZ0lDQjBhR2x6TG05MWRHeHBibVZYYVdSMGFFMTFiSFJwY0d4NVZHVjRkSFZ5WlNBOUlITnZkWEpqWlM1dmRYUnNhVzVsVjJsa2RHaE5kV3gwYVhCc2VWUmxlSFIxY21VN1hHNGdJQ0FnZEdocGN5NTFka0Z1YVcxaGRHbHZiazFoYzJ0VVpYaDBkWEpsSUQwZ2MyOTFjbU5sTG5WMlFXNXBiV0YwYVc5dVRXRnphMVJsZUhSMWNtVTdYRzVjYmlBZ0lDQXZMeUE5UFNCamIzQjVJRzFsYldKbGNuTWdQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpQWdJQ0IwYUdsekxtNXZjbTFoYkUxaGNGUjVjR1VnUFNCemIzVnlZMlV1Ym05eWJXRnNUV0Z3Vkhsd1pUdGNibHh1SUNBZ0lIUm9hWE11ZFhaQmJtbHRZWFJwYjI1VFkzSnZiR3hZVTNCbFpXUkdZV04wYjNJZ1BTQnpiM1Z5WTJVdWRYWkJibWx0WVhScGIyNVRZM0p2Ykd4WVUzQmxaV1JHWVdOMGIzSTdYRzRnSUNBZ2RHaHBjeTUxZGtGdWFXMWhkR2x2YmxOamNtOXNiRmxUY0dWbFpFWmhZM1J2Y2lBOUlITnZkWEpqWlM1MWRrRnVhVzFoZEdsdmJsTmpjbTlzYkZsVGNHVmxaRVpoWTNSdmNqdGNiaUFnSUNCMGFHbHpMblYyUVc1cGJXRjBhVzl1VW05MFlYUnBiMjVUY0dWbFpFWmhZM1J2Y2lBOUlITnZkWEpqWlM1MWRrRnVhVzFoZEdsdmJsSnZkR0YwYVc5dVUzQmxaV1JHWVdOMGIzSTdYRzVjYmlBZ0lDQjBhR2x6TG1sbmJtOXlaVlpsY25SbGVFTnZiRzl5SUQwZ2MyOTFjbU5sTG1sbmJtOXlaVlpsY25SbGVFTnZiRzl5TzF4dVhHNGdJQ0FnZEdocGN5NTJNRU52YlhCaGRGTm9ZV1JsSUQwZ2MyOTFjbU5sTG5Zd1EyOXRjR0YwVTJoaFpHVTdYRzRnSUNBZ2RHaHBjeTVrWldKMVowMXZaR1VnUFNCemIzVnlZMlV1WkdWaWRXZE5iMlJsTzF4dUlDQWdJSFJvYVhNdWIzVjBiR2x1WlZkcFpIUm9UVzlrWlNBOUlITnZkWEpqWlM1dmRYUnNhVzVsVjJsa2RHaE5iMlJsTzF4dVhHNGdJQ0FnZEdocGN5NXBjMDkxZEd4cGJtVWdQU0J6YjNWeVkyVXVhWE5QZFhSc2FXNWxPMXh1WEc0Z0lDQWdMeThnUFQwZ2RYQmtZWFJsSUhOb1lXUmxjaUJ6ZEhWbVppQTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVhHNGdJQ0FnZEdocGN5NXVaV1ZrYzFWd1pHRjBaU0E5SUhSeWRXVTdYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCVmNHUmhkR1VnVlZZZ1lXNXBiV0YwYVc5dUlITjBZWFJsTGx4dUlDQWdLaUJKYm5SbGJtUmxaQ0IwYnlCaVpTQmpZV3hzWldRZ2RtbGhJSHRBYkdsdWF5QjFjR1JoZEdWOUxseHVJQ0FnS2lCQWNHRnlZVzBnWkdWc2RHRWdaR1ZzZEdGVWFXMWxYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjkxY0dSaGRHVlZWa0Z1YVcxaGRHbHZiaWhrWld4MFlUb2diblZ0WW1WeUtUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NTFibWxtYjNKdGN5NTFka0Z1YVcxaGRHbHZibE5qY205c2JGaFBabVp6WlhRdWRtRnNkV1VnS3owZ1pHVnNkR0VnS2lCMGFHbHpMblYyUVc1cGJXRjBhVzl1VTJOeWIyeHNXRk53WldWa1JtRmpkRzl5TzF4dUlDQWdJSFJvYVhNdWRXNXBabTl5YlhNdWRYWkJibWx0WVhScGIyNVRZM0p2Ykd4WlQyWm1jMlYwTG5aaGJIVmxJQ3M5SUdSbGJIUmhJQ29nZEdocGN5NTFka0Z1YVcxaGRHbHZibE5qY205c2JGbFRjR1ZsWkVaaFkzUnZjanRjYmlBZ0lDQjBhR2x6TG5WdWFXWnZjbTF6TG5WMlFXNXBiV0YwYVc5dVVtOTBZWFJwYjI1UWFHRnpaUzUyWVd4MVpTQXJQU0JrWld4MFlTQXFJSFJvYVhNdWRYWkJibWx0WVhScGIyNVNiM1JoZEdsdmJsTndaV1ZrUm1GamRHOXlPMXh1WEc0Z0lDQWdkR2hwY3k1MWJtbG1iM0p0YzA1bFpXUlZjR1JoZEdVZ1BTQjBjblZsTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGVndiRzloWkNCMWJtbG1iM0p0Y3lCMGFHRjBJRzVsWldRZ2RHOGdkWEJzYjJGa0lHSjFkQ0JrYjJWemJpZDBJR0YxZEc5dFlYUnBZMkZzYkhrZ1ltVmpZWFZ6WlNCdlppQnlaV0Z6YjI1ekxseHVJQ0FnS2lCSmJuUmxibVJsWkNCMGJ5QmlaU0JqWVd4c1pXUWdkbWxoSUh0QWJHbHVheUJqYjI1emRISjFZM1J2Y24wZ1lXNWtJSHRBYkdsdWF5QjFjR1JoZEdWOUxseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmZkWEJzYjJGa1ZXNXBabTl5YlhOWGIzSnJZWEp2ZFc1a0tDazZJSFp2YVdRZ2UxeHVJQ0FnSUM4dklIZHZjbXRoY205MWJtUTZJSE5wYm1ObElHOXdZV05wZEhrZ2FYTWdaR1ZtYVc1bFpDQmhjeUJoSUhCeWIzQmxjblI1SUdsdUlGUklVa1ZGTGsxaGRHVnlhV0ZzWEc0Z0lDQWdMeThnWVc1a0lHTmhibTV2ZENCaVpTQnZkbVZ5Y21sa1pHVnVJR0Z6SUdGdUlHRmpZMlZ6YzI5eUxGeHVJQ0FnSUM4dklGZGxJR0Z5WlNCbmIybHVaeUIwYnlCMWNHUmhkR1VnYjNCaFkybDBlU0JvWlhKbFhHNGdJQ0FnZEdocGN5NTFibWxtYjNKdGN5NXZjR0ZqYVhSNUxuWmhiSFZsSUQwZ2RHaHBjeTV2Y0dGamFYUjVPMXh1WEc0Z0lDQWdMeThnZDI5eWEyRnliM1Z1WkRvZ2RHVjRkSFZ5WlNCMGNtRnVjMlp2Y20xeklHRnlaU0J1YjNRZ2RYQmtZWFJsWkNCaGRYUnZiV0YwYVdOaGJHeDVYRzRnSUNBZ2RHaHBjeTVmZFhCa1lYUmxWR1Y0ZEhWeVpVMWhkSEpwZUNoMGFHbHpMblZ1YVdadmNtMXpMbTFoY0N3Z2RHaHBjeTUxYm1sbWIzSnRjeTV0WVhCVmRsUnlZVzV6Wm05eWJTazdYRzRnSUNBZ2RHaHBjeTVmZFhCa1lYUmxWR1Y0ZEhWeVpVMWhkSEpwZUNoMGFHbHpMblZ1YVdadmNtMXpMbTV2Y20xaGJFMWhjQ3dnZEdocGN5NTFibWxtYjNKdGN5NXViM0p0WVd4TllYQlZkbFJ5WVc1elptOXliU2s3WEc0Z0lDQWdkR2hwY3k1ZmRYQmtZWFJsVkdWNGRIVnlaVTFoZEhKcGVDaDBhR2x6TG5WdWFXWnZjbTF6TG1WdGFYTnphWFpsVFdGd0xDQjBhR2x6TG5WdWFXWnZjbTF6TG1WdGFYTnphWFpsVFdGd1ZYWlVjbUZ1YzJadmNtMHBPMXh1SUNBZ0lIUm9hWE11WDNWd1pHRjBaVlJsZUhSMWNtVk5ZWFJ5YVhnb2RHaHBjeTUxYm1sbWIzSnRjeTV6YUdGa1pVMTFiSFJwY0d4NVZHVjRkSFZ5WlN3Z2RHaHBjeTUxYm1sbWIzSnRjeTV6YUdGa1pVMTFiSFJwY0d4NVZHVjRkSFZ5WlZWMlZISmhibk5tYjNKdEtUdGNiaUFnSUNCMGFHbHpMbDkxY0dSaGRHVlVaWGgwZFhKbFRXRjBjbWw0S0hSb2FYTXVkVzVwWm05eWJYTXVjMmhoWkdsdVoxTm9hV1owVkdWNGRIVnlaU3dnZEdocGN5NTFibWxtYjNKdGN5NXphR0ZrYVc1blUyaHBablJVWlhoMGRYSmxWWFpVY21GdWMyWnZjbTBwTzF4dUlDQWdJSFJvYVhNdVgzVndaR0YwWlZSbGVIUjFjbVZOWVhSeWFYZ29kR2hwY3k1MWJtbG1iM0p0Y3k1dFlYUmpZWEJVWlhoMGRYSmxMQ0IwYUdsekxuVnVhV1p2Y20xekxtMWhkR05oY0ZSbGVIUjFjbVZWZGxSeVlXNXpabTl5YlNrN1hHNGdJQ0FnZEdocGN5NWZkWEJrWVhSbFZHVjRkSFZ5WlUxaGRISnBlQ2gwYUdsekxuVnVhV1p2Y20xekxuSnBiVTExYkhScGNHeDVWR1Y0ZEhWeVpTd2dkR2hwY3k1MWJtbG1iM0p0Y3k1eWFXMU5kV3gwYVhCc2VWUmxlSFIxY21WVmRsUnlZVzV6Wm05eWJTazdYRzRnSUNBZ2RHaHBjeTVmZFhCa1lYUmxWR1Y0ZEhWeVpVMWhkSEpwZUNoY2JpQWdJQ0FnSUhSb2FYTXVkVzVwWm05eWJYTXViM1YwYkdsdVpWZHBaSFJvVFhWc2RHbHdiSGxVWlhoMGRYSmxMRnh1SUNBZ0lDQWdkR2hwY3k1MWJtbG1iM0p0Y3k1dmRYUnNhVzVsVjJsa2RHaE5kV3gwYVhCc2VWUmxlSFIxY21WVmRsUnlZVzV6Wm05eWJTeGNiaUFnSUNBcE8xeHVJQ0FnSUhSb2FYTXVYM1Z3WkdGMFpWUmxlSFIxY21WTllYUnlhWGdvZEdocGN5NTFibWxtYjNKdGN5NTFka0Z1YVcxaGRHbHZiazFoYzJ0VVpYaDBkWEpsTENCMGFHbHpMblZ1YVdadmNtMXpMblYyUVc1cGJXRjBhVzl1VFdGemExUmxlSFIxY21WVmRsUnlZVzV6Wm05eWJTazdYRzVjYmlBZ0lDQXZMeUJEVDAxUVFWUWdkMjl5YTJGeWIzVnVaRG9nYzNSaGNuUnBibWNnWm5KdmJTQnlNVE15TENCaGJIQm9ZVlJsYzNRZ1ltVmpiMjFsY3lCaElIVnVhV1p2Y20wZ2FXNXpkR1ZoWkNCdlppQndjbVZ3Y205alpYTnpiM0lnZG1Gc2RXVmNiaUFnSUNCamIyNXpkQ0IwYUhKbFpWSmxkbWx6YVc5dUlEMGdjR0Z5YzJWSmJuUW9WRWhTUlVVdVVrVldTVk5KVDA0c0lERXdLVHRjYmx4dUlDQWdJR2xtSUNoMGFISmxaVkpsZG1semFXOXVJRDQ5SURFek1pa2dlMXh1SUNBZ0lDQWdkR2hwY3k1MWJtbG1iM0p0Y3k1aGJIQm9ZVlJsYzNRdWRtRnNkV1VnUFNCMGFHbHpMbUZzY0doaFZHVnpkRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG5WdWFXWnZjbTF6VG1WbFpGVndaR0YwWlNBOUlIUnlkV1U3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCaElHMWhjQ0J2WW1wbFkzUWdiMllnY0hKbGNISnZZMlZ6YzI5eUlIUnZhMlZ1SUdGdVpDQnRZV055YnlCdlppQjBhR1VnYzJoaFpHVnlJSEJ5YjJkeVlXMHVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjluWlc1bGNtRjBaVVJsWm1sdVpYTW9LVG9nZXlCYmRHOXJaVzQ2SUhOMGNtbHVaMTA2SUdKdmIyeGxZVzRnZkNCdWRXMWlaWElnZkNCemRISnBibWNnZlNCN1hHNGdJQ0FnWTI5dWMzUWdkR2h5WldWU1pYWnBjMmx2YmlBOUlIQmhjbk5sU1c1MEtGUklVa1ZGTGxKRlZrbFRTVTlPTENBeE1DazdYRzVjYmlBZ0lDQmpiMjV6ZENCMWMyVlZka2x1Vm1WeWRDQTlJSFJvYVhNdWIzVjBiR2x1WlZkcFpIUm9UWFZzZEdsd2JIbFVaWGgwZFhKbElDRTlQU0J1ZFd4c08xeHVJQ0FnSUdOdmJuTjBJSFZ6WlZWMlNXNUdjbUZuSUQxY2JpQWdJQ0FnSUhSb2FYTXViV0Z3SUNFOVBTQnVkV3hzSUh4OFhHNGdJQ0FnSUNCMGFHbHpMbVZ0YVhOemFYWmxUV0Z3SUNFOVBTQnVkV3hzSUh4OFhHNGdJQ0FnSUNCMGFHbHpMbk5vWVdSbFRYVnNkR2x3YkhsVVpYaDBkWEpsSUNFOVBTQnVkV3hzSUh4OFhHNGdJQ0FnSUNCMGFHbHpMbk5vWVdScGJtZFRhR2xtZEZSbGVIUjFjbVVnSVQwOUlHNTFiR3dnZkh4Y2JpQWdJQ0FnSUhSb2FYTXVjbWx0VFhWc2RHbHdiSGxVWlhoMGRYSmxJQ0U5UFNCdWRXeHNJSHg4WEc0Z0lDQWdJQ0IwYUdsekxuVjJRVzVwYldGMGFXOXVUV0Z6YTFSbGVIUjFjbVVnSVQwOUlHNTFiR3c3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdMeThnVkdWdGNHOXlZWEo1SUdOdmJYQmhkQ0JoWjJGcGJuTjBJSE5vWVdSbGNpQmphR0Z1WjJVZ1FDQlVhSEpsWlM1cWN5QnlNVEkyWEc0Z0lDQWdJQ0F2THlCVFpXVTZJQ015TVRJd05Td2dJekl4TXpBM0xDQWpNakV5T1RsY2JpQWdJQ0FnSUZSSVVrVkZYMVpTVFY5VVNGSkZSVjlTUlZaSlUwbFBUam9nZEdoeVpXVlNaWFpwYzJsdmJpeGNibHh1SUNBZ0lDQWdUMVZVVEVsT1JUb2dkR2hwY3k1ZmFYTlBkWFJzYVc1bExGeHVJQ0FnSUNBZ1RWUlBUMDVmVlZORlgxVldPaUIxYzJWVmRrbHVWbVZ5ZENCOGZDQjFjMlZWZGtsdVJuSmhaeXdnTHk4Z2QyVWdZMkZ1SjNRZ2RYTmxJR0JWVTBWZlZWWmdJQ3dnYVhRZ2QybHNiQ0JpWlNCeVpXUmxabWx1WldRZ2FXNGdWMlZpUjB4UWNtOW5jbUZ0TG1welhHNGdJQ0FnSUNCTlZFOVBUbDlWVmxOZlZrVlNWRVZZWDA5T1RGazZJSFZ6WlZWMlNXNVdaWEowSUNZbUlDRjFjMlZWZGtsdVJuSmhaeXhjYmlBZ0lDQWdJRll3WDBOUFRWQkJWRjlUU0VGRVJUb2dkR2hwY3k1ZmRqQkRiMjF3WVhSVGFHRmtaU3hjYmlBZ0lDQWdJRlZUUlY5VFNFRkVSVTFWVEZSSlVFeFpWRVZZVkZWU1JUb2dkR2hwY3k1emFHRmtaVTExYkhScGNHeDVWR1Y0ZEhWeVpTQWhQVDBnYm5Wc2JDeGNiaUFnSUNBZ0lGVlRSVjlUU0VGRVNVNUhVMGhKUmxSVVJWaFVWVkpGT2lCMGFHbHpMbk5vWVdScGJtZFRhR2xtZEZSbGVIUjFjbVVnSVQwOUlHNTFiR3dzWEc0Z0lDQWdJQ0JWVTBWZlRVRlVRMEZRVkVWWVZGVlNSVG9nZEdocGN5NXRZWFJqWVhCVVpYaDBkWEpsSUNFOVBTQnVkV3hzTEZ4dUlDQWdJQ0FnVlZORlgxSkpUVTFWVEZSSlVFeFpWRVZZVkZWU1JUb2dkR2hwY3k1eWFXMU5kV3gwYVhCc2VWUmxlSFIxY21VZ0lUMDlJRzUxYkd3c1hHNGdJQ0FnSUNCVlUwVmZUMVZVVEVsT1JWZEpSRlJJVFZWTVZFbFFURmxVUlZoVVZWSkZPaUIwYUdsekxsOXBjMDkxZEd4cGJtVWdKaVlnZEdocGN5NXZkWFJzYVc1bFYybGtkR2hOZFd4MGFYQnNlVlJsZUhSMWNtVWdJVDA5SUc1MWJHd3NYRzRnSUNBZ0lDQlZVMFZmVlZaQlRrbE5RVlJKVDA1TlFWTkxWRVZZVkZWU1JUb2dkR2hwY3k1MWRrRnVhVzFoZEdsdmJrMWhjMnRVWlhoMGRYSmxJQ0U5UFNCdWRXeHNMRnh1SUNBZ0lDQWdTVWRPVDFKRlgxWkZVbFJGV0Y5RFQweFBVam9nZEdocGN5NWZhV2R1YjNKbFZtVnlkR1Y0UTI5c2IzSWdQVDA5SUhSeWRXVXNYRzRnSUNBZ0lDQkVSVUpWUjE5T1QxSk5RVXc2SUhSb2FYTXVYMlJsWW5WblRXOWtaU0E5UFQwZ0oyNXZjbTFoYkNjc1hHNGdJQ0FnSUNCRVJVSlZSMTlNU1ZSVFNFRkVSVkpCVkVVNklIUm9hWE11WDJSbFluVm5UVzlrWlNBOVBUMGdKMnhwZEZOb1lXUmxVbUYwWlNjc1hHNGdJQ0FnSUNCRVJVSlZSMTlWVmpvZ2RHaHBjeTVmWkdWaWRXZE5iMlJsSUQwOVBTQW5kWFluTEZ4dUlDQWdJQ0FnVDFWVVRFbE9SVjlYU1VSVVNGOVhUMUpNUkRvZ2RHaHBjeTVmYVhOUGRYUnNhVzVsSUNZbUlIUm9hWE11WDI5MWRHeHBibVZYYVdSMGFFMXZaR1VnUFQwOUlFMVViMjl1VFdGMFpYSnBZV3hQZFhSc2FXNWxWMmxrZEdoTmIyUmxMbGR2Y214a1EyOXZjbVJwYm1GMFpYTXNYRzRnSUNBZ0lDQlBWVlJNU1U1RlgxZEpSRlJJWDFORFVrVkZUanBjYmlBZ0lDQWdJQ0FnZEdocGN5NWZhWE5QZFhSc2FXNWxJQ1ltSUhSb2FYTXVYMjkxZEd4cGJtVlhhV1IwYUUxdlpHVWdQVDA5SUUxVWIyOXVUV0YwWlhKcFlXeFBkWFJzYVc1bFYybGtkR2hOYjJSbExsTmpjbVZsYmtOdmIzSmthVzVoZEdWekxGeHVJQ0FnSUgwN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElGOTFjR1JoZEdWVVpYaDBkWEpsVFdGMGNtbDRLSE55WXpvZ1ZFaFNSVVV1U1ZWdWFXWnZjbTA4VkVoU1JVVXVWR1Y0ZEhWeVpTQjhJRzUxYkd3K0xDQmtjM1E2SUZSSVVrVkZMa2xWYm1sbWIzSnRQRlJJVWtWRkxrMWhkSEpwZURNK0tUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tITnlZeTUyWVd4MVpTa2dlMXh1SUNBZ0lDQWdhV1lnS0hOeVl5NTJZV3gxWlM1dFlYUnlhWGhCZFhSdlZYQmtZWFJsS1NCN1hHNGdJQ0FnSUNBZ0lITnlZeTUyWVd4MVpTNTFjR1JoZEdWTllYUnlhWGdvS1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ1pITjBMblpoYkhWbExtTnZjSGtvYzNKakxuWmhiSFZsTG0xaGRISnBlQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzRpTENKcGJYQnZjblFnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVjYm1OdmJuTjBJR052Ykc5eVUzQmhZMlZGYm1OdlpHbHVaMDFoY0RvZ1VtVmpiM0prUENjbklId2dKM055WjJJbkxDQmhibmsrSUQwZ2UxeHVJQ0FuSnpvZ016QXdNQ3hjYmlBZ2MzSm5Zam9nTXpBd01TeGNibjA3WEc1Y2JpOHFLbHh1SUNvZ1FTQmpiMjF3WVhRZ1puVnVZM1JwYjI0Z2RHOGdjMlYwSUhSbGVIUjFjbVVnWTI5c2IzSWdjM0JoWTJVdVhHNGdLbHh1SUNvZ1EwOU5VRUZVT2lCd2NtVXRjakUxTWx4dUlDb2dVM1JoY25ScGJtY2dabkp2YlNCVWFISmxaUzVxY3lCeU1UVXlMQ0JnZEdWNGRIVnlaUzVsYm1OdlpHbHVaMkFnYVhNZ2NtVnVZVzFsWkNCMGJ5QmdkR1Y0ZEhWeVpTNWpiMnh2Y2xOd1lXTmxZQzVjYmlBcUlGUm9hWE1nWm5WdVkzUnBiMjRnZDJsc2JDQm9ZVzVrYkdVZ2RHaGxJR052YldGd2RDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2RHVjRkSFZ5WlNCVWFHVWdkR1Y0ZEhWeVpTQjViM1VnZDJGdWRDQjBieUJ6WlhRZ2RHaGxJR052Ykc5eUlITndZV05sSUhSdlhHNGdLaUJBY0dGeVlXMGdZMjlzYjNKVGNHRmpaU0JVYUdVZ1kyOXNiM0lnYzNCaFkyVWdlVzkxSUhkaGJuUWdkRzhnYzJWMElIUnZJSFJvWlNCMFpYaDBkWEpsWEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnpaWFJVWlhoMGRYSmxRMjlzYjNKVGNHRmpaU2gwWlhoMGRYSmxPaUJVU0ZKRlJTNVVaWGgwZFhKbExDQmpiMnh2Y2xOd1lXTmxPaUFuSnlCOElDZHpjbWRpSnlrNklIWnZhV1FnZTF4dUlDQnBaaUFvY0dGeWMyVkpiblFvVkVoU1JVVXVVa1ZXU1ZOSlQwNHNJREV3S1NBK1BTQXhOVElwSUh0Y2JpQWdJQ0IwWlhoMGRYSmxMbU52Ykc5eVUzQmhZMlVnUFNCamIyeHZjbE53WVdObE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDaDBaWGgwZFhKbElHRnpJR0Z1ZVNrdVpXNWpiMlJwYm1jZ1BTQmpiMnh2Y2xOd1lXTmxSVzVqYjJScGJtZE5ZWEJiWTI5c2IzSlRjR0ZqWlYwN1hHNGdJSDFjYm4xY2JpSXNJbWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCN0lFZE1WRVpRWVhKelpYSWdmU0JtY205dElDZDBhSEpsWlM5bGVHRnRjR3hsY3k5cWMyMHZiRzloWkdWeWN5OUhURlJHVEc5aFpHVnlMbXB6Snp0Y2JtbHRjRzl5ZENCN0lFMVViMjl1VFdGMFpYSnBZV3hRWVhKaGJXVjBaWEp6SUgwZ1puSnZiU0FuTGk5TlZHOXZiazFoZEdWeWFXRnNVR0Z5WVcxbGRHVnljeWM3WEc1cGJYQnZjblFnZXlCelpYUlVaWGgwZFhKbFEyOXNiM0pUY0dGalpTQjlJR1p5YjIwZ0p5NHZkWFJwYkhNdmMyVjBWR1Y0ZEhWeVpVTnZiRzl5VTNCaFkyVW5PMXh1WEc0dktpcGNiaUFxSUUxaGRHVnlhV0ZzVUdGeVlXMWxkR1Z5Y3lCb1lYUmxjeUJnZFc1a1pXWnBibVZrWUM0Z1ZHaHBjeUJvWld4d1pYSWdZWFYwYjIxaGRHbGpZV3hzZVNCeVpXcGxZM1J6SUdGemMybG5iaUJ2WmlCMGFHVnpaU0JnZFc1a1pXWnBibVZrWUM1Y2JpQXFJRWwwSUdGc2MyOGdhR0Z1Wkd4bGN5QmhjM2x1WTJoeWIyNXZkWE1nY0hKdlkyVnpjeUJ2WmlCMFpYaDBkWEpsY3k1Y2JpQXFJRTFoYTJVZ2MzVnlaU0JoZDJGcGRDQm1iM0lnZTBCc2FXNXJJRWRNVkVaTlZHOXZiazFoZEdWeWFXRnNVR0Z5WVcxelFYTnphV2R1U0dWc2NHVnlMbkJsYm1ScGJtZDlMbHh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nUjB4VVJrMVViMjl1VFdGMFpYSnBZV3hRWVhKaGJYTkJjM05wWjI1SVpXeHdaWElnZTF4dUlDQndjbWwyWVhSbElISmxZV1J2Ym14NUlGOXdZWEp6WlhJNklFZE1WRVpRWVhKelpYSTdYRzRnSUhCeWFYWmhkR1VnWDIxaGRHVnlhV0ZzVUdGeVlXMXpPaUJOVkc5dmJrMWhkR1Z5YVdGc1VHRnlZVzFsZEdWeWN6dGNiaUFnY0hKcGRtRjBaU0JmY0dWdVpHbHVaM002SUZCeWIyMXBjMlU4WVc1NVBsdGRPMXh1WEc0Z0lIQjFZbXhwWXlCblpYUWdjR1Z1WkdsdVp5Z3BPaUJRY205dGFYTmxQSFZ1YTI1dmQyNCtJSHRjYmlBZ0lDQnlaWFIxY200Z1VISnZiV2x6WlM1aGJHd29kR2hwY3k1ZmNHVnVaR2x1WjNNcE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHTnZibk4wY25WamRHOXlLSEJoY25ObGNqb2dSMHhVUmxCaGNuTmxjaXdnYldGMFpYSnBZV3hRWVhKaGJYTTZJRTFVYjI5dVRXRjBaWEpwWVd4UVlYSmhiV1YwWlhKektTQjdYRzRnSUNBZ2RHaHBjeTVmY0dGeWMyVnlJRDBnY0dGeWMyVnlPMXh1SUNBZ0lIUm9hWE11WDIxaGRHVnlhV0ZzVUdGeVlXMXpJRDBnYldGMFpYSnBZV3hRWVhKaGJYTTdYRzRnSUNBZ2RHaHBjeTVmY0dWdVpHbHVaM01nUFNCYlhUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QmhjM05wWjI1UWNtbHRhWFJwZG1VOFZDQmxlSFJsYm1SeklHdGxlVzltSUUxVWIyOXVUV0YwWlhKcFlXeFFZWEpoYldWMFpYSnpQaWhyWlhrNklGUXNJSFpoYkhWbE9pQk5WRzl2YmsxaGRHVnlhV0ZzVUdGeVlXMWxkR1Z5YzF0VVhTazZJSFp2YVdRZ2UxeHVJQ0FnSUdsbUlDaDJZV3gxWlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDl0WVhSbGNtbGhiRkJoY21GdGMxdHJaWGxkSUQwZ2RtRnNkV1U3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR0Z6YzJsbmJrTnZiRzl5UEZRZ1pYaDBaVzVrY3lCclpYbHZaaUJOVkc5dmJrMWhkR1Z5YVdGc1VHRnlZVzFsZEdWeWN6NG9YRzRnSUNBZ2EyVjVPaUJVTEZ4dUlDQWdJSFpoYkhWbE9pQnVkVzFpWlhKYlhTQjhJSFZ1WkdWbWFXNWxaQ3hjYmlBZ0lDQmpiMjUyWlhKMFUxSkhRbFJ2VEdsdVpXRnlQem9nWW05dmJHVmhiaXhjYmlBZ0tUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tIWmhiSFZsSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVYMjFoZEdWeWFXRnNVR0Z5WVcxelcydGxlVjBnUFNCdVpYY2dWRWhTUlVVdVEyOXNiM0lvS1M1bWNtOXRRWEp5WVhrb2RtRnNkV1VwTzF4dVhHNGdJQ0FnSUNCcFppQW9ZMjl1ZG1WeWRGTlNSMEpVYjB4cGJtVmhjaWtnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbDl0WVhSbGNtbGhiRkJoY21GdGMxdHJaWGxkTG1OdmJuWmxjblJUVWtkQ1ZHOU1hVzVsWVhJb0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1lYTjVibU1nWVhOemFXZHVWR1Y0ZEhWeVpUeFVJR1Y0ZEdWdVpITWdhMlY1YjJZZ1RWUnZiMjVOWVhSbGNtbGhiRkJoY21GdFpYUmxjbk0rS0Z4dUlDQWdJR3RsZVRvZ1ZDeGNiaUFnSUNCMFpYaDBkWEpsT2lCN0lHbHVaR1Y0T2lCdWRXMWlaWElnZlNCOElIVnVaR1ZtYVc1bFpDeGNiaUFnSUNCcGMwTnZiRzl5VkdWNGRIVnlaVG9nWW05dmJHVmhiaXhjYmlBZ0tUb2dVSEp2YldselpUeDJiMmxrUGlCN1hHNGdJQ0FnWTI5dWMzUWdjSEp2YldselpTQTlJQ2hoYzNsdVl5QW9LU0E5UGlCN1hHNGdJQ0FnSUNCcFppQW9kR1Y0ZEhWeVpTQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJR0YzWVdsMElIUm9hWE11WDNCaGNuTmxjaTVoYzNOcFoyNVVaWGgwZFhKbEtIUm9hWE11WDIxaGRHVnlhV0ZzVUdGeVlXMXpMQ0JyWlhrc0lIUmxlSFIxY21VcE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNocGMwTnZiRzl5VkdWNGRIVnlaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lITmxkRlJsZUhSMWNtVkRiMnh2Y2xOd1lXTmxLSFJvYVhNdVgyMWhkR1Z5YVdGc1VHRnlZVzF6VzJ0bGVWMHNJQ2R6Y21kaUp5azdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLU2dwTzF4dVhHNGdJQ0FnZEdocGN5NWZjR1Z1WkdsdVozTXVjSFZ6YUNod2NtOXRhWE5sS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ3Y205dGFYTmxPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR0Z6ZVc1aklHRnpjMmxuYmxSbGVIUjFjbVZDZVVsdVpHVjRQRlFnWlhoMFpXNWtjeUJyWlhsdlppQk5WRzl2YmsxaGRHVnlhV0ZzVUdGeVlXMWxkR1Z5Y3o0b1hHNGdJQ0FnYTJWNU9pQlVMRnh1SUNBZ0lIUmxlSFIxY21WSmJtUmxlRG9nYm5WdFltVnlJSHdnZFc1a1pXWnBibVZrTEZ4dUlDQWdJR2x6UTI5c2IzSlVaWGgwZFhKbE9pQmliMjlzWldGdUxGeHVJQ0FwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVoYzNOcFoyNVVaWGgwZFhKbEtHdGxlU3dnZEdWNGRIVnlaVWx1WkdWNElDRTlJRzUxYkd3Z1B5QjdJR2x1WkdWNE9pQjBaWGgwZFhKbFNXNWtaWGdnZlNBNklIVnVaR1ZtYVc1bFpDd2dhWE5EYjJ4dmNsUmxlSFIxY21VcE8xeHVJQ0I5WEc1OVhHNGlMQ0pwYlhCdmNuUWdLaUJoY3lCVVNGSkZSU0JtY205dElDZDBhSEpsWlNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJXTVUxVWIyOXVVMk5vWlcxaElHWnliMjBnSjBCd2FYaHBkaTkwZVhCbGN5MTJjbTFqTFcxaGRHVnlhV0ZzY3kxdGRHOXZiaTB4TGpBbk8xeHVhVzF3YjNKMElIUjVjR1VnZXlCSFRGUkdMQ0JIVEZSR1RHOWhaR1Z5VUd4MVoybHVMQ0JIVEZSR1VHRnljMlZ5SUgwZ1puSnZiU0FuZEdoeVpXVXZaWGhoYlhCc1pYTXZhbk50TDJ4dllXUmxjbk12UjB4VVJreHZZV1JsY2k1cWN5YzdYRzVwYlhCdmNuUWdleUJOVkc5dmJrMWhkR1Z5YVdGc0lIMGdabkp2YlNBbkxpOU5WRzl2YmsxaGRHVnlhV0ZzSnp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnVFZSdmIyNU5ZWFJsY21saGJGQmhjbUZ0WlhSbGNuTWdmU0JtY205dElDY3VMMDFVYjI5dVRXRjBaWEpwWVd4UVlYSmhiV1YwWlhKekp6dGNibWx0Y0c5eWRDQjdJRTFVYjI5dVRXRjBaWEpwWVd4UGRYUnNhVzVsVjJsa2RHaE5iMlJsSUgwZ1puSnZiU0FuTGk5TlZHOXZiazFoZEdWeWFXRnNUM1YwYkdsdVpWZHBaSFJvVFc5a1pTYzdYRzVwYlhCdmNuUWdleUJIVEZSR1RWUnZiMjVOWVhSbGNtbGhiRkJoY21GdGMwRnpjMmxuYmtobGJIQmxjaUI5SUdaeWIyMGdKeTR2UjB4VVJrMVViMjl1VFdGMFpYSnBZV3hRWVhKaGJYTkJjM05wWjI1SVpXeHdaWEluTzF4dWFXMXdiM0owSUhzZ1RWUnZiMjVOWVhSbGNtbGhiRXh2WVdSbGNsQnNkV2RwYms5d2RHbHZibk1nZlNCbWNtOXRJQ2N1TDAxVWIyOXVUV0YwWlhKcFlXeE1iMkZrWlhKUWJIVm5hVzVQY0hScGIyNXpKenRjYm1sdGNHOXlkQ0IwZVhCbElIc2dUVlJ2YjI1TllYUmxjbWxoYkVSbFluVm5UVzlrWlNCOUlHWnliMjBnSnk0dlRWUnZiMjVOWVhSbGNtbGhiRVJsWW5WblRXOWtaU2M3WEc1cGJYQnZjblFnZXlCSFRGUkdJR0Z6SUVkTVZFWlRZMmhsYldFZ2ZTQm1jbTl0SUNkQVoyeDBaaTEwY21GdWMyWnZjbTB2WTI5eVpTYzdYRzVjYmk4cUtseHVJQ29nVUc5emMybGliR1VnYzNCbFl5QjJaWEp6YVc5dWN5QnBkQ0J5WldOdloyNXBlbVZ6TGx4dUlDb3ZYRzVqYjI1emRDQlFUMU5UU1VKTVJWOVRVRVZEWDFaRlVsTkpUMDVUSUQwZ2JtVjNJRk5sZENoYkp6RXVNQ2NzSUNjeExqQXRZbVYwWVNkZEtUdGNibHh1Wlhod2IzSjBJR05zWVhOeklFMVViMjl1VFdGMFpYSnBZV3hNYjJGa1pYSlFiSFZuYVc0Z2FXMXdiR1Z0Wlc1MGN5QkhURlJHVEc5aFpHVnlVR3gxWjJsdUlIdGNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QkZXRlJGVGxOSlQwNWZUa0ZOUlNBOUlDZFdVazFEWDIxaGRHVnlhV0ZzYzE5dGRHOXZiaWM3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvYVhNZ2RtRnNkV1VnZDJsc2JDQmlaU0JoWkdSbFpDQjBieUJnY21WdVpHVnlUM0prWlhKZ0lHOW1JR1YyWlhKNUlHMWxjMmhsY3lCM2FHOGdhR0YyWlNCTllYUmxjbWxoYkhOTlZHOXZiaTVjYmlBZ0lDb2dWR2hsSUdacGJtRnNJSEpsYm1SbGNrOXlaR1Z5SUhkcGJHd2dZbVVnYzNWdElHOW1JSFJvYVhNZ1lISmxibVJsY2s5eVpHVnlUMlptYzJWMFlDQmhibVFnWUhKbGJtUmxjbEYxWlhWbFQyWm1jMlYwVG5WdFltVnlZQ0JtYjNJZ1pXRmphQ0J0WVhSbGNtbGhiSE11WEc0Z0lDQXFJR0F3WUNCaWVTQmtaV1poZFd4MExseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklISmxibVJsY2s5eVpHVnlUMlptYzJWME9pQnVkVzFpWlhJN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSb1pYSmxJR2x6SUdFZ2JHbHVaU0J2WmlCMGFHVWdjMmhoWkdWeUlHTmhiR3hsWkNCY0ltTnZiVzFsYm5RZ2IzVjBJR2xtSUhsdmRTQjNZVzUwSUhSdklGQkNVaUJoWW5OdmJIVjBaV3g1WENJZ2FXNGdWbEpOTUM0d0lFMVViMjl1TGx4dUlDQWdLaUJYYUdWdUlIUm9hWE1nYVhNZ2RISjFaU3dnZEdobElHMWhkR1Z5YVdGc0lHVnVZV0pzWlhNZ2RHaGxJR3hwYm1VZ2RHOGdiV0ZyWlNCcGRDQmpiMjF3WVhScFlteGxJSGRwZEdnZ2RHaGxJR3hsWjJGamVTQnlaVzVrWlhKcGJtY2diMllnVmxKTkxseHVJQ0FnS2lCVmMzVmhiR3g1SUc1dmRDQnlaV052YlcxbGJtUmxaQ0IwYnlCMGRYSnVJSFJvYVhNZ2IyNHVYRzRnSUNBcUlHQm1ZV3h6WldBZ1lua2daR1ZtWVhWc2RDNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QjJNRU52YlhCaGRGTm9ZV1JsT2lCaWIyOXNaV0Z1TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJFWldKMVp5QnRiMlJsSUdadmNpQjBhR1VnYldGMFpYSnBZV3d1WEc0Z0lDQXFJRmx2ZFNCallXNGdkbWx6ZFdGc2FYcGxJSE5sZG1WeVlXd2dZMjl0Y0c5dVpXNTBjeUJtYjNJZ1pHbGhaMjV2YzJseklIVnphVzVuSUdSbFluVm5JRzF2WkdVdVhHNGdJQ0FxWEc0Z0lDQXFJRk5sWlRvZ2UwQnNhVzVySUUxVWIyOXVUV0YwWlhKcFlXeEVaV0oxWjAxdlpHVjlYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdaR1ZpZFdkTmIyUmxPaUJOVkc5dmJrMWhkR1Z5YVdGc1JHVmlkV2ROYjJSbE8xeHVYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0J3WVhKelpYSTZJRWRNVkVaUVlYSnpaWEk3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRXh2WVdSbFpDQnRZWFJsY21saGJITWdkMmxzYkNCaVpTQnpkRzl5WldRZ2FXNGdkR2hwY3lCelpYUXVYRzRnSUNBcUlGZHBiR3dnWW1VZ2RISmhibk5tWlhKeVpXUWdhVzUwYnlCZ1oyeDBaaTUxYzJWeVJHRjBZUzUyY20xTlZHOXZiazFoZEdWeWFXRnNjMkFnYVc0Z2UwQnNhVzVySUdGbWRHVnlVbTl2ZEgwdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElISmxZV1J2Ym14NUlGOXRWRzl2YmsxaGRHVnlhV0ZzVTJWME9pQlRaWFE4VFZSdmIyNU5ZWFJsY21saGJENDdYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQnVZVzFsS0NrNklITjBjbWx1WnlCN1hHNGdJQ0FnY21WMGRYSnVJRTFVYjI5dVRXRjBaWEpwWVd4TWIyRmtaWEpRYkhWbmFXNHVSVmhVUlU1VFNVOU9YMDVCVFVVN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9jR0Z5YzJWeU9pQkhURlJHVUdGeWMyVnlMQ0J2Y0hScGIyNXpPaUJOVkc5dmJrMWhkR1Z5YVdGc1RHOWhaR1Z5VUd4MVoybHVUM0IwYVc5dWN5QTlJSHQ5S1NCN1hHNGdJQ0FnZEdocGN5NXdZWEp6WlhJZ1BTQndZWEp6WlhJN1hHNWNiaUFnSUNCMGFHbHpMbkpsYm1SbGNrOXlaR1Z5VDJabWMyVjBJRDBnYjNCMGFXOXVjeTV5Wlc1a1pYSlBjbVJsY2s5bVpuTmxkQ0EvUHlBd08xeHVJQ0FnSUhSb2FYTXVkakJEYjIxd1lYUlRhR0ZrWlNBOUlHOXdkR2x2Ym5NdWRqQkRiMjF3WVhSVGFHRmtaU0EvUHlCbVlXeHpaVHRjYmlBZ0lDQjBhR2x6TG1SbFluVm5UVzlrWlNBOUlHOXdkR2x2Ym5NdVpHVmlkV2ROYjJSbElEOC9JQ2R1YjI1bEp6dGNibHh1SUNBZ0lIUm9hWE11WDIxVWIyOXVUV0YwWlhKcFlXeFRaWFFnUFNCdVpYY2dVMlYwS0NrN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1lYTjVibU1nWW1WbWIzSmxVbTl2ZENncE9pQlFjbTl0YVhObFBIWnZhV1ErSUh0Y2JpQWdJQ0IwYUdsekxsOXlaVzF2ZG1WVmJteHBkRVY0ZEdWdWMybHZia2xtVFZSdmIyNUZlR2x6ZEhNb0tUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QmhjM2x1WXlCaFpuUmxjbEp2YjNRb1oyeDBaam9nUjB4VVJpazZJRkJ5YjIxcGMyVThkbTlwWkQ0Z2UxeHVJQ0FnSUdkc2RHWXVkWE5sY2tSaGRHRXVkbkp0VFZSdmIyNU5ZWFJsY21saGJITWdQU0JCY25KaGVTNW1jbTl0S0hSb2FYTXVYMjFVYjI5dVRXRjBaWEpwWVd4VFpYUXBPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR2RsZEUxaGRHVnlhV0ZzVkhsd1pTaHRZWFJsY21saGJFbHVaR1Y0T2lCdWRXMWlaWElwT2lCMGVYQmxiMllnVkVoU1JVVXVUV0YwWlhKcFlXd2dmQ0J1ZFd4c0lIdGNiaUFnSUNCamIyNXpkQ0IyTVVWNGRHVnVjMmx2YmlBOUlIUm9hWE11WDJkbGRFMVViMjl1UlhoMFpXNXphVzl1S0cxaGRHVnlhV0ZzU1c1a1pYZ3BPMXh1SUNBZ0lHbG1JQ2gyTVVWNGRHVnVjMmx2YmlrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUUxVWIyOXVUV0YwWlhKcFlXdzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaWGgwWlc1a1RXRjBaWEpwWVd4UVlYSmhiWE1vYldGMFpYSnBZV3hKYm1SbGVEb2diblZ0WW1WeUxDQnRZWFJsY21saGJGQmhjbUZ0Y3pvZ1RWUnZiMjVOWVhSbGNtbGhiRkJoY21GdFpYUmxjbk1wT2lCUWNtOXRhWE5sUEdGdWVUNGdmQ0J1ZFd4c0lIdGNiaUFnSUNCamIyNXpkQ0JsZUhSbGJuTnBiMjRnUFNCMGFHbHpMbDluWlhSTlZHOXZia1Y0ZEdWdWMybHZiaWh0WVhSbGNtbGhiRWx1WkdWNEtUdGNiaUFnSUNCcFppQW9aWGgwWlc1emFXOXVLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZlpYaDBaVzVrVFdGMFpYSnBZV3hRWVhKaGJYTW9aWGgwWlc1emFXOXVMQ0J0WVhSbGNtbGhiRkJoY21GdGN5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdZWE41Ym1NZ2JHOWhaRTFsYzJnb2JXVnphRWx1WkdWNE9pQnVkVzFpWlhJcE9pQlFjbTl0YVhObFBGUklVa1ZGTGtkeWIzVndJSHdnVkVoU1JVVXVUV1Z6YUNCOElGUklVa1ZGTGxOcmFXNXVaV1JOWlhOb1BpQjdYRzRnSUNBZ1kyOXVjM1FnY0dGeWMyVnlJRDBnZEdocGN5NXdZWEp6WlhJN1hHNGdJQ0FnWTI5dWMzUWdhbk52YmlBOUlIQmhjbk5sY2k1cWMyOXVJR0Z6SUVkTVZFWlRZMmhsYldFdVNVZE1WRVk3WEc1Y2JpQWdJQ0JqYjI1emRDQnRaWE5vUkdWbUlEMGdhbk52Ymk1dFpYTm9aWE0vTGx0dFpYTm9TVzVrWlhoZE8xeHVYRzRnSUNBZ2FXWWdLRzFsYzJoRVpXWWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQmdUVlJ2YjI1TllYUmxjbWxoYkV4dllXUmxjbEJzZFdkcGJqb2dRWFIwWlcxd2RDQjBieUIxYzJVZ2JXVnphR1Z6V3lSN2JXVnphRWx1WkdWNGZWMGdiMllnWjJ4VVJpQmlkWFFnZEdobElHMWxjMmdnWkc5bGMyNG5kQ0JsZUdsemRHQXNYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhCeWFXMXBkR2wyWlhORVpXWWdQU0J0WlhOb1JHVm1MbkJ5YVcxcGRHbDJaWE03WEc1Y2JpQWdJQ0JqYjI1emRDQnRaWE5vVDNKSGNtOTFjQ0E5SUdGM1lXbDBJSEJoY25ObGNpNXNiMkZrVFdWemFDaHRaWE5vU1c1a1pYZ3BPMXh1WEc0Z0lDQWdhV1lnS0hCeWFXMXBkR2wyWlhORVpXWXViR1Z1WjNSb0lEMDlQU0F4S1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0J0WlhOb0lEMGdiV1Z6YUU5eVIzSnZkWEFnWVhNZ1ZFaFNSVVV1VFdWemFEdGNiaUFnSUNBZ0lHTnZibk4wSUcxaGRHVnlhV0ZzU1c1a1pYZ2dQU0J3Y21sdGFYUnBkbVZ6UkdWbVd6QmRMbTFoZEdWeWFXRnNPMXh1WEc0Z0lDQWdJQ0JwWmlBb2JXRjBaWEpwWVd4SmJtUmxlQ0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVYM05sZEhWd1VISnBiV2wwYVhabEtHMWxjMmdzSUcxaGRHVnlhV0ZzU1c1a1pYZ3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCamIyNXpkQ0JuY205MWNDQTlJRzFsYzJoUGNrZHliM1Z3SUdGeklGUklVa1ZGTGtkeWIzVndPMXh1SUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J3Y21sdGFYUnBkbVZ6UkdWbUxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJRzFsYzJnZ1BTQm5jbTkxY0M1amFHbHNaSEpsYmx0cFhTQmhjeUJVU0ZKRlJTNU5aWE5vTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J0WVhSbGNtbGhiRWx1WkdWNElEMGdjSEpwYldsMGFYWmxjMFJsWmx0cFhTNXRZWFJsY21saGJEdGNibHh1SUNBZ0lDQWdJQ0JwWmlBb2JXRjBaWEpwWVd4SmJtUmxlQ0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVmYzJWMGRYQlFjbWx0YVhScGRtVW9iV1Z6YUN3Z2JXRjBaWEpwWVd4SmJtUmxlQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdiV1Z6YUU5eVIzSnZkWEE3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1JHVnNaWFJsSUhWelpTQnZaaUJnUzBoU1gyMWhkR1Z5YVdGc2MxOTFibXhwZEdBZ1puSnZiU0JwZEhNZ1lHMWhkR1Z5YVdGc2MyQWdhV1lnZEdobElHMWhkR1Z5YVdGc0lHbHpJSFZ6YVc1bklFMVViMjl1TGx4dUlDQWdLbHh1SUNBZ0tpQlRhVzVqWlNCSFRGUkdURzloWkdWeUlHaGhkbVVnYzI4Z2JXRnVlU0JvWVhKa1kyOWtaV1FnY0hKdlkyVmtkWEpsSUhKbGJHRjBaV1FnZEc4Z1lFdElVbDl0WVhSbGNtbGhiSE5mZFc1c2FYUmdYRzRnSUNBcUlIZGxJR2hoZG1VZ2RHOGdaR1ZzWlhSbElIUm9aU0JsZUhSbGJuTnBiMjRnWW1WbWIzSmxJSGRsSUhOMFlYSjBJSFJ2SUhCaGNuTmxJSFJvWlNCbmJGUkdMbHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0JmY21WdGIzWmxWVzVzYVhSRmVIUmxibk5wYjI1SlprMVViMjl1UlhocGMzUnpLQ2s2SUhadmFXUWdlMXh1SUNBZ0lHTnZibk4wSUhCaGNuTmxjaUE5SUhSb2FYTXVjR0Z5YzJWeU8xeHVJQ0FnSUdOdmJuTjBJR3B6YjI0Z1BTQndZWEp6WlhJdWFuTnZiaUJoY3lCSFRGUkdVMk5vWlcxaExrbEhURlJHTzF4dVhHNGdJQ0FnWTI5dWMzUWdiV0YwWlhKcFlXeEVaV1p6SUQwZ2FuTnZiaTV0WVhSbGNtbGhiSE03WEc0Z0lDQWdiV0YwWlhKcFlXeEVaV1p6UHk1dFlYQW9LRzFoZEdWeWFXRnNSR1ZtTENCcFRXRjBaWEpwWVd3cElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElHVjRkR1Z1YzJsdmJpQTlJSFJvYVhNdVgyZGxkRTFVYjI5dVJYaDBaVzV6YVc5dUtHbE5ZWFJsY21saGJDazdYRzVjYmlBZ0lDQWdJR2xtSUNobGVIUmxibk5wYjI0Z0ppWWdiV0YwWlhKcFlXeEVaV1l1WlhoMFpXNXphVzl1Y3o4dVd5ZExTRkpmYldGMFpYSnBZV3h6WDNWdWJHbDBKMTBwSUh0Y2JpQWdJQ0FnSUNBZ1pHVnNaWFJsSUcxaGRHVnlhV0ZzUkdWbUxtVjRkR1Z1YzJsdmJuTmJKMHRJVWw5dFlYUmxjbWxoYkhOZmRXNXNhWFFuWFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5S1R0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1gyZGxkRTFVYjI5dVJYaDBaVzV6YVc5dUtHMWhkR1Z5YVdGc1NXNWtaWGc2SUc1MWJXSmxjaWs2SUZZeFRWUnZiMjVUWTJobGJXRXVWbEpOUTAxaGRHVnlhV0ZzYzAxVWIyOXVJSHdnZFc1a1pXWnBibVZrSUh0Y2JpQWdJQ0JqYjI1emRDQndZWEp6WlhJZ1BTQjBhR2x6TG5CaGNuTmxjanRjYmlBZ0lDQmpiMjV6ZENCcWMyOXVJRDBnY0dGeWMyVnlMbXB6YjI0Z1lYTWdSMHhVUmxOamFHVnRZUzVKUjB4VVJqdGNibHh1SUNBZ0lHTnZibk4wSUcxaGRHVnlhV0ZzUkdWbUlEMGdhbk52Ymk1dFlYUmxjbWxoYkhNL0xsdHRZWFJsY21saGJFbHVaR1Y0WFR0Y2JseHVJQ0FnSUdsbUlDaHRZWFJsY21saGJFUmxaaUE5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0JqYjI1emIyeGxMbmRoY200b1hHNGdJQ0FnSUNBZ0lHQk5WRzl2YmsxaGRHVnlhV0ZzVEc5aFpHVnlVR3gxWjJsdU9pQkJkSFJsYlhCMElIUnZJSFZ6WlNCdFlYUmxjbWxoYkhOYkpIdHRZWFJsY21saGJFbHVaR1Y0ZlYwZ2IyWWdaMnhVUmlCaWRYUWdkR2hsSUcxaGRHVnlhV0ZzSUdSdlpYTnVKM1FnWlhocGMzUmdMRnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnWlhoMFpXNXphVzl1SUQwZ2JXRjBaWEpwWVd4RVpXWXVaWGgwWlc1emFXOXVjejh1VzAxVWIyOXVUV0YwWlhKcFlXeE1iMkZrWlhKUWJIVm5hVzR1UlZoVVJVNVRTVTlPWDA1QlRVVmRJR0Z6WEc0Z0lDQWdJQ0I4SUZZeFRWUnZiMjVUWTJobGJXRXVWbEpOUTAxaGRHVnlhV0ZzYzAxVWIyOXVYRzRnSUNBZ0lDQjhJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQnBaaUFvWlhoMFpXNXphVzl1SUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2MzQmxZMVpsY25OcGIyNGdQU0JsZUhSbGJuTnBiMjR1YzNCbFkxWmxjbk5wYjI0N1hHNGdJQ0FnYVdZZ0tDRlFUMU5UU1VKTVJWOVRVRVZEWDFaRlVsTkpUMDVUTG1oaGN5aHpjR1ZqVm1WeWMybHZiaWtwSUh0Y2JpQWdJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpaGNiaUFnSUNBZ0lDQWdZRTFVYjI5dVRXRjBaWEpwWVd4TWIyRmtaWEpRYkhWbmFXNDZJRlZ1YTI1dmQyNGdKSHROVkc5dmJrMWhkR1Z5YVdGc1RHOWhaR1Z5VUd4MVoybHVMa1ZZVkVWT1UwbFBUbDlPUVUxRmZTQnpjR1ZqVm1WeWMybHZiaUJjSWlSN2MzQmxZMVpsY25OcGIyNTlYQ0pnTEZ4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHVjRkR1Z1YzJsdmJqdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdZWE41Ym1NZ1gyVjRkR1Z1WkUxaGRHVnlhV0ZzVUdGeVlXMXpLRnh1SUNBZ0lHVjRkR1Z1YzJsdmJqb2dWakZOVkc5dmJsTmphR1Z0WVM1V1VrMURUV0YwWlhKcFlXeHpUVlJ2YjI0c1hHNGdJQ0FnYldGMFpYSnBZV3hRWVhKaGJYTTZJRTFVYjI5dVRXRjBaWEpwWVd4UVlYSmhiV1YwWlhKekxGeHVJQ0FwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQXZMeUJTWlcxdmRtbHVaeUJ0WVhSbGNtbGhiQ0J3WVhKaGJYTWdkR2hoZENCcGN5QnViM1FnY21WeGRXbHlaV1FnZEc4Z2MzVndjbVZ6Y3lCM1lYSnVhVzVuY3k1Y2JpQWdJQ0JrWld4bGRHVWdLRzFoZEdWeWFXRnNVR0Z5WVcxeklHRnpJRlJJVWtWRkxrMWxjMmhUZEdGdVpHRnlaRTFoZEdWeWFXRnNVR0Z5WVcxbGRHVnljeWt1YldWMFlXeHVaWE56TzF4dUlDQWdJR1JsYkdWMFpTQW9iV0YwWlhKcFlXeFFZWEpoYlhNZ1lYTWdWRWhTUlVVdVRXVnphRk4wWVc1a1lYSmtUV0YwWlhKcFlXeFFZWEpoYldWMFpYSnpLUzV5YjNWbmFHNWxjM003WEc1Y2JpQWdJQ0JqYjI1emRDQmhjM05wWjI1SVpXeHdaWElnUFNCdVpYY2dSMHhVUmsxVWIyOXVUV0YwWlhKcFlXeFFZWEpoYlhOQmMzTnBaMjVJWld4d1pYSW9kR2hwY3k1d1lYSnpaWElzSUcxaGRHVnlhV0ZzVUdGeVlXMXpLVHRjYmx4dUlDQWdJR0Z6YzJsbmJraGxiSEJsY2k1aGMzTnBaMjVRY21sdGFYUnBkbVVvSjNSeVlXNXpjR0Z5Wlc1MFYybDBhRnBYY21sMFpTY3NJR1Y0ZEdWdWMybHZiaTUwY21GdWMzQmhjbVZ1ZEZkcGRHaGFWM0pwZEdVcE8xeHVJQ0FnSUdGemMybG5ia2hsYkhCbGNpNWhjM05wWjI1RGIyeHZjaWduYzJoaFpHVkRiMnh2Y2taaFkzUnZjaWNzSUdWNGRHVnVjMmx2Ymk1emFHRmtaVU52Ykc5eVJtRmpkRzl5S1R0Y2JpQWdJQ0JoYzNOcFoyNUlaV3h3WlhJdVlYTnphV2R1VkdWNGRIVnlaU2duYzJoaFpHVk5kV3gwYVhCc2VWUmxlSFIxY21VbkxDQmxlSFJsYm5OcGIyNHVjMmhoWkdWTmRXeDBhWEJzZVZSbGVIUjFjbVVzSUhSeWRXVXBPMXh1SUNBZ0lHRnpjMmxuYmtobGJIQmxjaTVoYzNOcFoyNVFjbWx0YVhScGRtVW9KM05vWVdScGJtZFRhR2xtZEVaaFkzUnZjaWNzSUdWNGRHVnVjMmx2Ymk1emFHRmthVzVuVTJocFpuUkdZV04wYjNJcE8xeHVJQ0FnSUdGemMybG5ia2hsYkhCbGNpNWhjM05wWjI1VVpYaDBkWEpsS0NkemFHRmthVzVuVTJocFpuUlVaWGgwZFhKbEp5d2daWGgwWlc1emFXOXVMbk5vWVdScGJtZFRhR2xtZEZSbGVIUjFjbVVzSUhSeWRXVXBPMXh1SUNBZ0lHRnpjMmxuYmtobGJIQmxjaTVoYzNOcFoyNVFjbWx0YVhScGRtVW9KM05vWVdScGJtZFRhR2xtZEZSbGVIUjFjbVZUWTJGc1pTY3NJR1Y0ZEdWdWMybHZiaTV6YUdGa2FXNW5VMmhwWm5SVVpYaDBkWEpsUHk1elkyRnNaU2s3WEc0Z0lDQWdZWE56YVdkdVNHVnNjR1Z5TG1GemMybG5ibEJ5YVcxcGRHbDJaU2duYzJoaFpHbHVaMVJ2YjI1NVJtRmpkRzl5Snl3Z1pYaDBaVzV6YVc5dUxuTm9ZV1JwYm1kVWIyOXVlVVpoWTNSdmNpazdYRzRnSUNBZ1lYTnphV2R1U0dWc2NHVnlMbUZ6YzJsbmJsQnlhVzFwZEdsMlpTZ25aMmxGY1hWaGJHbDZZWFJwYjI1R1lXTjBiM0luTENCbGVIUmxibk5wYjI0dVoybEZjWFZoYkdsNllYUnBiMjVHWVdOMGIzSXBPMXh1SUNBZ0lHRnpjMmxuYmtobGJIQmxjaTVoYzNOcFoyNURiMnh2Y2lnbmJXRjBZMkZ3Um1GamRHOXlKeXdnWlhoMFpXNXphVzl1TG0xaGRHTmhjRVpoWTNSdmNpazdYRzRnSUNBZ1lYTnphV2R1U0dWc2NHVnlMbUZ6YzJsbmJsUmxlSFIxY21Vb0oyMWhkR05oY0ZSbGVIUjFjbVVuTENCbGVIUmxibk5wYjI0dWJXRjBZMkZ3VkdWNGRIVnlaU3dnZEhKMVpTazdYRzRnSUNBZ1lYTnphV2R1U0dWc2NHVnlMbUZ6YzJsbmJrTnZiRzl5S0Nkd1lYSmhiV1YwY21salVtbHRRMjlzYjNKR1lXTjBiM0luTENCbGVIUmxibk5wYjI0dWNHRnlZVzFsZEhKcFkxSnBiVU52Ykc5eVJtRmpkRzl5S1R0Y2JpQWdJQ0JoYzNOcFoyNUlaV3h3WlhJdVlYTnphV2R1VkdWNGRIVnlaU2duY21sdFRYVnNkR2x3YkhsVVpYaDBkWEpsSnl3Z1pYaDBaVzV6YVc5dUxuSnBiVTExYkhScGNHeDVWR1Y0ZEhWeVpTd2dkSEoxWlNrN1hHNGdJQ0FnWVhOemFXZHVTR1ZzY0dWeUxtRnpjMmxuYmxCeWFXMXBkR2wyWlNnbmNtbHRUR2xuYUhScGJtZE5hWGhHWVdOMGIzSW5MQ0JsZUhSbGJuTnBiMjR1Y21sdFRHbG5hSFJwYm1kTmFYaEdZV04wYjNJcE8xeHVJQ0FnSUdGemMybG5ia2hsYkhCbGNpNWhjM05wWjI1UWNtbHRhWFJwZG1Vb0ozQmhjbUZ0WlhSeWFXTlNhVzFHY21WemJtVnNVRzkzWlhKR1lXTjBiM0luTENCbGVIUmxibk5wYjI0dWNHRnlZVzFsZEhKcFkxSnBiVVp5WlhOdVpXeFFiM2RsY2taaFkzUnZjaWs3WEc0Z0lDQWdZWE56YVdkdVNHVnNjR1Z5TG1GemMybG5ibEJ5YVcxcGRHbDJaU2duY0dGeVlXMWxkSEpwWTFKcGJVeHBablJHWVdOMGIzSW5MQ0JsZUhSbGJuTnBiMjR1Y0dGeVlXMWxkSEpwWTFKcGJVeHBablJHWVdOMGIzSXBPMXh1SUNBZ0lHRnpjMmxuYmtobGJIQmxjaTVoYzNOcFoyNVFjbWx0YVhScGRtVW9KMjkxZEd4cGJtVlhhV1IwYUUxdlpHVW5MQ0JsZUhSbGJuTnBiMjR1YjNWMGJHbHVaVmRwWkhSb1RXOWtaU0JoY3lCTlZHOXZiazFoZEdWeWFXRnNUM1YwYkdsdVpWZHBaSFJvVFc5a1pTazdYRzRnSUNBZ1lYTnphV2R1U0dWc2NHVnlMbUZ6YzJsbmJsQnlhVzFwZEdsMlpTZ25iM1YwYkdsdVpWZHBaSFJvUm1GamRHOXlKeXdnWlhoMFpXNXphVzl1TG05MWRHeHBibVZYYVdSMGFFWmhZM1J2Y2lrN1hHNGdJQ0FnWVhOemFXZHVTR1ZzY0dWeUxtRnpjMmxuYmxSbGVIUjFjbVVvSjI5MWRHeHBibVZYYVdSMGFFMTFiSFJwY0d4NVZHVjRkSFZ5WlNjc0lHVjRkR1Z1YzJsdmJpNXZkWFJzYVc1bFYybGtkR2hOZFd4MGFYQnNlVlJsZUhSMWNtVXNJR1poYkhObEtUdGNiaUFnSUNCaGMzTnBaMjVJWld4d1pYSXVZWE56YVdkdVEyOXNiM0lvSjI5MWRHeHBibVZEYjJ4dmNrWmhZM1J2Y2ljc0lHVjRkR1Z1YzJsdmJpNXZkWFJzYVc1bFEyOXNiM0pHWVdOMGIzSXBPMXh1SUNBZ0lHRnpjMmxuYmtobGJIQmxjaTVoYzNOcFoyNVFjbWx0YVhScGRtVW9KMjkxZEd4cGJtVk1hV2RvZEdsdVowMXBlRVpoWTNSdmNpY3NJR1Y0ZEdWdWMybHZiaTV2ZFhSc2FXNWxUR2xuYUhScGJtZE5hWGhHWVdOMGIzSXBPMXh1SUNBZ0lHRnpjMmxuYmtobGJIQmxjaTVoYzNOcFoyNVVaWGgwZFhKbEtDZDFka0Z1YVcxaGRHbHZiazFoYzJ0VVpYaDBkWEpsSnl3Z1pYaDBaVzV6YVc5dUxuVjJRVzVwYldGMGFXOXVUV0Z6YTFSbGVIUjFjbVVzSUdaaGJITmxLVHRjYmlBZ0lDQmhjM05wWjI1SVpXeHdaWEl1WVhOemFXZHVVSEpwYldsMGFYWmxLQ2QxZGtGdWFXMWhkR2x2YmxOamNtOXNiRmhUY0dWbFpFWmhZM1J2Y2ljc0lHVjRkR1Z1YzJsdmJpNTFka0Z1YVcxaGRHbHZibE5qY205c2JGaFRjR1ZsWkVaaFkzUnZjaWs3WEc0Z0lDQWdZWE56YVdkdVNHVnNjR1Z5TG1GemMybG5ibEJ5YVcxcGRHbDJaU2duZFhaQmJtbHRZWFJwYjI1VFkzSnZiR3haVTNCbFpXUkdZV04wYjNJbkxDQmxlSFJsYm5OcGIyNHVkWFpCYm1sdFlYUnBiMjVUWTNKdmJHeFpVM0JsWldSR1lXTjBiM0lwTzF4dUlDQWdJR0Z6YzJsbmJraGxiSEJsY2k1aGMzTnBaMjVRY21sdGFYUnBkbVVvSjNWMlFXNXBiV0YwYVc5dVVtOTBZWFJwYjI1VGNHVmxaRVpoWTNSdmNpY3NJR1Y0ZEdWdWMybHZiaTUxZGtGdWFXMWhkR2x2YmxKdmRHRjBhVzl1VTNCbFpXUkdZV04wYjNJcE8xeHVYRzRnSUNBZ1lYTnphV2R1U0dWc2NHVnlMbUZ6YzJsbmJsQnlhVzFwZEdsMlpTZ25kakJEYjIxd1lYUlRhR0ZrWlNjc0lIUm9hWE11ZGpCRGIyMXdZWFJUYUdGa1pTazdYRzRnSUNBZ1lYTnphV2R1U0dWc2NHVnlMbUZ6YzJsbmJsQnlhVzFwZEdsMlpTZ25aR1ZpZFdkTmIyUmxKeXdnZEdocGN5NWtaV0oxWjAxdlpHVXBPMXh1WEc0Z0lDQWdZWGRoYVhRZ1lYTnphV2R1U0dWc2NHVnlMbkJsYm1ScGJtYzdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdocGN5QjNhV3hzSUdSdklIUjNieUJ3Y205alpYTnpaWE1nZEdoaGRDQnBjeUJ5WlhGMWFYSmxaQ0IwYnlCeVpXNWtaWElnVFZSdmIyNGdjSEp2Y0dWeWJIa3VYRzRnSUNBcVhHNGdJQ0FxSUMwZ1UyVjBJSEpsYm1SbGNpQnZjbVJsY2x4dUlDQWdLaUF0SUVkbGJtVnlZWFJsSUc5MWRHeHBibVZjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUcxbGMyZ2dRU0IwWVhKblpYUWdSMHhVUmlCd2NtbHRhWFJwZG1WY2JpQWdJQ29nUUhCaGNtRnRJRzFoZEdWeWFXRnNTVzVrWlhnZ1ZHaGxJRzFoZEdWeWFXRnNJR2x1WkdWNElHOW1JSFJvWlNCd2NtbHRhWFJwZG1WY2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1gzTmxkSFZ3VUhKcGJXbDBhWFpsS0cxbGMyZzZJRlJJVWtWRkxrMWxjMmdzSUcxaGRHVnlhV0ZzU1c1a1pYZzZJRzUxYldKbGNpazZJSFp2YVdRZ2UxeHVJQ0FnSUdOdmJuTjBJR1Y0ZEdWdWMybHZiaUE5SUhSb2FYTXVYMmRsZEUxVWIyOXVSWGgwWlc1emFXOXVLRzFoZEdWeWFXRnNTVzVrWlhncE8xeHVJQ0FnSUdsbUlDaGxlSFJsYm5OcGIyNHBJSHRjYmlBZ0lDQWdJR052Ym5OMElISmxibVJsY2s5eVpHVnlJRDBnZEdocGN5NWZjR0Z5YzJWU1pXNWtaWEpQY21SbGNpaGxlSFJsYm5OcGIyNHBPMXh1SUNBZ0lDQWdiV1Z6YUM1eVpXNWtaWEpQY21SbGNpQTlJSEpsYm1SbGNrOXlaR1Z5SUNzZ2RHaHBjeTV5Wlc1a1pYSlBjbVJsY2s5bVpuTmxkRHRjYmx4dUlDQWdJQ0FnZEdocGN5NWZaMlZ1WlhKaGRHVlBkWFJzYVc1bEtHMWxjMmdwTzF4dVhHNGdJQ0FnSUNCMGFHbHpMbDloWkdSVWIwMWhkR1Z5YVdGc1UyVjBLRzFsYzJncE8xeHVYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFZGxibVZ5WVhSbElHOTFkR3hwYm1VZ1ptOXlJSFJvWlNCbmFYWmxiaUJ0WlhOb0xDQnBaaUJwZENCdVpXVmtjeTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUcxbGMyZ2dWR2hsSUhSaGNtZGxkQ0J0WlhOb1hHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElGOW5aVzVsY21GMFpVOTFkR3hwYm1Vb2JXVnphRG9nVkVoU1JVVXVUV1Z6YUNrNklIWnZhV1FnZTF4dUlDQWdJQzh2SUU5TExDQnBkQ2R6SUhSb1pTQm9ZV05yZVNCd1lYSjBMbHh1SUNBZ0lDOHZJRmRsSUdGeVpTQm5iMmx1WnlCMGJ5QmtkWEJzYVdOaGRHVWdkR2hsSUUxVWIyOXVUV0YwWlhKcFlXd2dabTl5SUc5MWRHeHBibVVnZFhObExseHVJQ0FnSUM4dklGUm9aVzRnZDJVZ1lYSmxJR2R2YVc1bklIUnZJR055WldGMFpTQjBkMjhnWjJWdmJXVjBjbmtnWjNKdmRYQnpJR0Z1WkNCeVpXWmxjaUJ6WVcxbElHSjFabVpsY2lCaWRYUWdaR2xtWm1WeVpXNTBJRzFoZEdWeWFXRnNMbHh1SUNBZ0lDOHZJRWwwSjNNZ2FHOTNJSGRsSUdSeVlYY2dkSGR2SUcxaGRHVnlhV0ZzY3lCaGRDQnZibU5sSUhWemFXNW5JR0VnYzJsdVoyeGxJRzFsYzJndVhHNWNiaUFnSUNBdkx5QnRZV3RsSUhOMWNtVWdkR2hsSUcxaGRHVnlhV0ZzSUdseklHMTBiMjl1WEc0Z0lDQWdZMjl1YzNRZ2MzVnlabUZqWlUxaGRHVnlhV0ZzSUQwZ2JXVnphQzV0WVhSbGNtbGhiRHRjYmlBZ0lDQnBaaUFvSVNoemRYSm1ZV05sVFdGMFpYSnBZV3dnYVc1emRHRnVZMlZ2WmlCTlZHOXZiazFoZEdWeWFXRnNLU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJR05vWldOcklIZG9aWFJvWlhJZ2QyVWdjbVZoYkd4NUlHaGhkbVVnZEc4Z2NISmxjR0Z5WlNCdmRYUnNhVzVsSUc5eUlHNXZkRnh1SUNBZ0lHbG1JQ2h6ZFhKbVlXTmxUV0YwWlhKcFlXd3ViM1YwYkdsdVpWZHBaSFJvVFc5a1pTQTlQVDBnSjI1dmJtVW5JSHg4SUhOMWNtWmhZMlZOWVhSbGNtbGhiQzV2ZFhSc2FXNWxWMmxrZEdoR1lXTjBiM0lnUEQwZ01DNHdLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdiV0ZyWlNCcGRITWdiV0YwWlhKcFlXd2dZVzRnWVhKeVlYbGNiaUFnSUNCdFpYTm9MbTFoZEdWeWFXRnNJRDBnVzNOMWNtWmhZMlZOWVhSbGNtbGhiRjA3SUM4dklHMWxjMmd1YldGMFpYSnBZV3dnYVhNZ1ozVmhjbUZ1ZEdWbFpDQjBieUJpWlNCaElFMWhkR1Z5YVdGc0lHbHVJRWRNVkVaTWIyRmtaWEpjYmx4dUlDQWdJQzh2SUdSMWNHeHBZMkYwWlNCMGFHVWdiV0YwWlhKcFlXd2dabTl5SUc5MWRHeHBibVVnZFhObFhHNGdJQ0FnWTI5dWMzUWdiM1YwYkdsdVpVMWhkR1Z5YVdGc0lEMGdjM1Z5Wm1GalpVMWhkR1Z5YVdGc0xtTnNiMjVsS0NrN1hHNGdJQ0FnYjNWMGJHbHVaVTFoZEdWeWFXRnNMbTVoYldVZ0t6MGdKeUFvVDNWMGJHbHVaU2tuTzF4dUlDQWdJRzkxZEd4cGJtVk5ZWFJsY21saGJDNXBjMDkxZEd4cGJtVWdQU0IwY25WbE8xeHVJQ0FnSUc5MWRHeHBibVZOWVhSbGNtbGhiQzV6YVdSbElEMGdWRWhTUlVVdVFtRmphMU5wWkdVN1hHNGdJQ0FnYldWemFDNXRZWFJsY21saGJDNXdkWE5vS0c5MWRHeHBibVZOWVhSbGNtbGhiQ2s3WEc1Y2JpQWdJQ0F2THlCdFlXdGxJSFIzYnlCblpXOXRaWFJ5ZVNCbmNtOTFjSE1nYjNWMElHOW1JR0VnYzJGdFpTQmlkV1ptWlhKY2JpQWdJQ0JqYjI1emRDQm5aVzl0WlhSeWVTQTlJRzFsYzJndVoyVnZiV1YwY25rN0lDOHZJRzFsYzJndVoyVnZiV1YwY25rZ2FYTWdaM1ZoY21GdWRHVmxaQ0IwYnlCaVpTQmhJRUoxWm1abGNrZGxiMjFsZEhKNUlHbHVJRWRNVkVaTWIyRmtaWEpjYmlBZ0lDQmpiMjV6ZENCd2NtbHRhWFJwZG1WV1pYSjBhV05sY3lBOUlHZGxiMjFsZEhKNUxtbHVaR1Y0SUQ4Z1oyVnZiV1YwY25rdWFXNWtaWGd1WTI5MWJuUWdPaUJuWlc5dFpYUnllUzVoZEhSeWFXSjFkR1Z6TG5CdmMybDBhVzl1TG1OdmRXNTBJQzhnTXp0Y2JpQWdJQ0JuWlc5dFpYUnllUzVoWkdSSGNtOTFjQ2d3TENCd2NtbHRhWFJwZG1WV1pYSjBhV05sY3l3Z01DazdYRzRnSUNBZ1oyVnZiV1YwY25rdVlXUmtSM0p2ZFhBb01Dd2djSEpwYldsMGFYWmxWbVZ5ZEdsalpYTXNJREVwTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCZllXUmtWRzlOWVhSbGNtbGhiRk5sZENodFpYTm9PaUJVU0ZKRlJTNU5aWE5vS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdZMjl1YzNRZ2JXRjBaWEpwWVd4UGNrMWhkR1Z5YVdGc2N5QTlJRzFsYzJndWJXRjBaWEpwWVd3N1hHNGdJQ0FnWTI5dWMzUWdiV0YwWlhKcFlXeFRaWFFnUFNCdVpYY2dVMlYwUEZSSVVrVkZMazFoZEdWeWFXRnNQaWdwTzF4dVhHNGdJQ0FnYVdZZ0tFRnljbUY1TG1selFYSnlZWGtvYldGMFpYSnBZV3hQY2sxaGRHVnlhV0ZzY3lrcElIdGNiaUFnSUNBZ0lHMWhkR1Z5YVdGc1QzSk5ZWFJsY21saGJITXVabTl5UldGamFDZ29iV0YwWlhKcFlXd3BJRDArSUcxaGRHVnlhV0ZzVTJWMExtRmtaQ2h0WVhSbGNtbGhiQ2twTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnRZWFJsY21saGJGTmxkQzVoWkdRb2JXRjBaWEpwWVd4UGNrMWhkR1Z5YVdGc2N5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQnRZWFJsY21saGJDQnZaaUJ0WVhSbGNtbGhiRk5sZENrZ2UxeHVJQ0FnSUNBZ2FXWWdLRzFoZEdWeWFXRnNJR2x1YzNSaGJtTmxiMllnVFZSdmIyNU5ZWFJsY21saGJDa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxsOXRWRzl2YmsxaGRHVnlhV0ZzVTJWMExtRmtaQ2h0WVhSbGNtbGhiQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JmY0dGeWMyVlNaVzVrWlhKUGNtUmxjaWhsZUhSbGJuTnBiMjQ2SUZZeFRWUnZiMjVUWTJobGJXRXVWbEpOUTAxaGRHVnlhV0ZzYzAxVWIyOXVLVG9nYm5WdFltVnlJSHRjYmlBZ0lDQXZMeUIwY21GdWMzQmhjbVZ1ZEZkcGRHaGFWM0pwZEdVZ2NtRnVaMlZ6SUdaeWIyMGdNQ0IwYnlBck9WeHVJQ0FnSUM4dklHMWxjbVVnZEhKaGJuTndZWEpsYm5RZ2NtRnVaMlZ6SUdaeWIyMGdMVGtnZEc4Z01GeHVJQ0FnSUdOdmJuTjBJR1Z1WVdKc1pXUmFWM0pwZEdVZ1BTQmxlSFJsYm5OcGIyNHVkSEpoYm5Od1lYSmxiblJYYVhSb1dsZHlhWFJsTzF4dUlDQWdJSEpsZEhWeWJpQW9aVzVoWW14bFpGcFhjbWwwWlNBL0lEQWdPaUF4T1NrZ0t5QW9aWGgwWlc1emFXOXVMbkpsYm1SbGNsRjFaWFZsVDJabWMyVjBUblZ0WW1WeUlEOC9JREFwTzF4dUlDQjlYRzU5WEc0aVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3p0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGdlIwRTdRVUZEVHl4VFFVRlRMRk5CUVZNc1EwRkJReXhQUVVGUExFVkJRVVVzVlVGQlZTeEZRVUZGTEVOQlFVTXNSVUZCUlN4VFFVRlRMRVZCUVVVN1FVRkROMFFzU1VGQlNTeFRRVUZUTEV0QlFVc3NRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSU3hQUVVGUExFdEJRVXNzV1VGQldTeERRVUZETEVkQlFVY3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExGVkJRVlVzVDBGQlR5eEZRVUZGTEVWQlFVVXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVTdRVUZEYUVnc1NVRkJTU3hQUVVGUExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1JVRkJSU3hWUVVGVkxFOUJRVThzUlVGQlJTeE5RVUZOTEVWQlFVVTdRVUZETDBRc1VVRkJVU3hUUVVGVExGTkJRVk1zUTBGQlF5eExRVUZMTEVWQlFVVXNSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlEyNUhMRkZCUVZFc1UwRkJVeXhSUVVGUkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlEzUkhMRkZCUVZFc1UwRkJVeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNUVUZCVFN4RFFVRkRMRWxCUVVrc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF5eEZRVUZGTzBGQlEzUklMRkZCUVZFc1NVRkJTU3hEUVVGRExFTkJRVU1zVTBGQlV5eEhRVUZITEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRkxGVkJRVlVzU1VGQlNTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRemxGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTFBN096czdPenRCUXpGSVFUdEJRVVZCT3pzN08wRkJTVWM3UVVGRFZTeE5RVUZCTEhOQ1FVRnpRaXhIUVVGSE8wRkJRM0JET3p0QlFVVkhPMEZCUTBnc1NVRkJRU3hKUVVGSkxFVkJRVVVzVFVGQlRUdEJRVVZhT3p0QlFVVkhPMEZCUTBnc1NVRkJRU3hOUVVGTkxFVkJRVVVzVVVGQlVUdEJRVVZvUWpzN1FVRkZSenRCUVVOSUxFbEJRVUVzV1VGQldTeEZRVUZGTEdOQlFXTTdRVUZGTlVJN08wRkJSVWM3UVVGRFNDeEpRVUZCTEVWQlFVVXNSVUZCUlN4SlFVRkpPenM3UVVNeFFsWTdRVUZGWVN4TlFVRkJMRFpDUVVFMlFpeEhRVUZITzBGQlF6TkRMRWxCUVVFc1NVRkJTU3hGUVVGRkxFMUJRVTA3UVVGRFdpeEpRVUZCTEdkQ1FVRm5RaXhGUVVGRkxHdENRVUZyUWp0QlFVTndReXhKUVVGQkxHbENRVUZwUWl4RlFVRkZMRzFDUVVGdFFqczdPMEZEU0hoRExFMUJRVTBzY1VKQlFYRkNMRWRCUVRaQ08wRkJRM1JFTEVsQlFVRXNTVUZCU1N4RlFVRkZMRVZCUVVVN1FVRkRVaXhKUVVGQkxFbEJRVWtzUlVGQlJTeE5RVUZOTzBOQlEySXNRMEZCUXp0QlFVVkdPenM3T3pzN096dEJRVkZITzBGQlEwY3NVMEZCVlN4dlFrRkJiMElzUTBGQlF5eFBRVUZ6UWl4RlFVRkJPMGxCUTNwRUxFbEJRVWtzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTzFGQlEzWkRMRTlCUVU4c1QwRkJUeXhEUVVGRExGVkJRWGxDTEVOQlFVTTdRVUZETVVNc1MwRkJRVHRCUVVGTkxGTkJRVUU3UVVGRFRDeFJRVUZCTEU5QlFVOHNjVUpCUVhGQ0xFTkJRVVVzVDBGQlpTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUTNwRUxFdEJRVUU3UVVGRFNEczdRVU4wUWtFN1FVRlZRVHM3T3pzN1FVRkxSenRCUVVOVkxFMUJRVUVzWVVGQll5eFRRVUZSTEV0QlFVc3NRMEZCUXl4alFVRmpMRU5CUVVFN1FVRTBRM0pFTEVsQlFVRXNTVUZCVnl4TFFVRkxMRWRCUVVFN1FVRkRaQ3hSUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRE8wdEJRM1JETzBsQlEwUXNTVUZCVnl4TFFVRkxMRU5CUVVNc1MwRkJhMElzUlVGQlFUdFJRVU5xUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMHRCUTNaRE8wRkJSVVFzU1VGQlFTeEpRVUZYTEVkQlFVY3NSMEZCUVR0QlFVTmFMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNN1MwRkRhRU03U1VGRFJDeEpRVUZYTEVkQlFVY3NRMEZCUXl4TFFVRXlRaXhGUVVGQk8xRkJRM2hETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdTMEZEYWtNN1FVRkZSQ3hKUVVGQkxFbEJRVmNzVTBGQlV5eEhRVUZCTzBGQlEyeENMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNN1MwRkRkRU03U1VGRFJDeEpRVUZYTEZOQlFWTXNRMEZCUXl4TFFVRXlRaXhGUVVGQk8xRkJRemxETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdTMEZEZGtNN1FVRkZSQ3hKUVVGQkxFbEJRVmNzVjBGQlZ5eEhRVUZCTzBGQlEzQkNMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNN1MwRkRlRU03U1VGRFJDeEpRVUZYTEZkQlFWY3NRMEZCUXl4TFFVRnZRaXhGUVVGQk8xRkJRM3BETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdTMEZEZWtNN1FVRkZSQ3hKUVVGQkxFbEJRVmNzVVVGQlVTeEhRVUZCTzBGQlEycENMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNN1MwRkRja003U1VGRFJDeEpRVUZYTEZGQlFWRXNRMEZCUXl4TFFVRnJRaXhGUVVGQk8xRkJRM0JETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdTMEZEZEVNN1FVRkZSQ3hKUVVGQkxFbEJRVmNzYVVKQlFXbENMRWRCUVVFN1FVRkRNVUlzVVVGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNTMEZCU3l4RFFVRkRPMHRCUXpsRE8wbEJRMFFzU1VGQlZ5eHBRa0ZCYVVJc1EwRkJReXhMUVVGaExFVkJRVUU3VVVGRGVFTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8wdEJReTlETzBGQlJVUXNTVUZCUVN4SlFVRlhMRmRCUVZjc1IwRkJRVHRCUVVOd1FpeFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhYUVVGWExFTkJRVU1zUzBGQlN5eERRVUZETzB0QlEzaERPMGxCUTBRc1NVRkJWeXhYUVVGWExFTkJRVU1zUzBGQk1rSXNSVUZCUVR0UlFVTm9SQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8wdEJRM3BETzBGQlJVUXNTVUZCUVN4SlFVRlhMR2RDUVVGblFpeEhRVUZCTzBGQlEzcENMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFdEJRVXNzUTBGQlF6dExRVU0zUXp0SlFVTkVMRWxCUVZjc1owSkJRV2RDTEVOQlFVTXNTMEZCYTBJc1JVRkJRVHRSUVVNMVF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMR2RDUVVGblFpeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1MwRkRPVU03UVVGRlJDeEpRVUZCTEVsQlFWY3NiMEpCUVc5Q0xFZEJRVUU3UVVGRE4wSXNVVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1MwRkJTeXhEUVVGRE8wdEJRMnBFTzBsQlEwUXNTVUZCVnl4dlFrRkJiMElzUTBGQlF5eExRVUV5UWl4RlFVRkJPMUZCUTNwRUxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0TFFVTnNSRHRCUVVWRUxFbEJRVUVzU1VGQlZ5eHJRa0ZCYTBJc1IwRkJRVHRCUVVNelFpeFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4TFFVRkxMRU5CUVVNN1MwRkRMME03U1VGRFJDeEpRVUZYTEd0Q1FVRnJRaXhEUVVGRExFdEJRV0VzUlVGQlFUdFJRVU42UXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU03UzBGRGFFUTdRVUZGUkN4SlFVRkJMRWxCUVZjc2JVSkJRVzFDTEVkQlFVRTdRVUZETlVJc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUzBGQlN5eERRVUZETzB0QlEyaEVPMGxCUTBRc1NVRkJWeXh0UWtGQmJVSXNRMEZCUXl4TFFVRXlRaXhGUVVGQk8xRkJRM2hFTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJRenRMUVVOcVJEdEJRVVZFTEVsQlFVRXNTVUZCVnl4M1FrRkJkMElzUjBGQlFUdEJRVU5xUXl4UlFVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eDNRa0ZCZDBJc1EwRkJReXhMUVVGTExFTkJRVU03UzBGRGNrUTdTVUZEUkN4SlFVRlhMSGRDUVVGM1FpeERRVUZETEV0QlFXRXNSVUZCUVR0UlFVTXZReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEhkQ1FVRjNRaXhEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdTMEZEZEVRN1FVRkZSQ3hKUVVGQkxFbEJRVmNzYTBKQlFXdENMRWRCUVVFN1FVRkRNMElzVVVGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNTMEZCU3l4RFFVRkRPMHRCUXk5RE8wbEJRMFFzU1VGQlZ5eHJRa0ZCYTBJc1EwRkJReXhMUVVGaExFVkJRVUU3VVVGRGVrTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8wdEJRMmhFTzBGQlJVUXNTVUZCUVN4SlFVRlhMRzlDUVVGdlFpeEhRVUZCTzBGQlF6ZENMRkZCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFdEJRVXNzUTBGQlF6dExRVU5xUkR0SlFVTkVMRWxCUVZjc2IwSkJRVzlDTEVOQlFVTXNTMEZCWVN4RlFVRkJPMUZCUXpORExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0TFFVTnNSRHRCUVVWRUxFbEJRVUVzU1VGQlZ5eFpRVUZaTEVkQlFVRTdRVUZEY2tJc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNXVUZCV1N4RFFVRkRMRXRCUVVzc1EwRkJRenRMUVVONlF6dEpRVU5FTEVsQlFWY3NXVUZCV1N4RFFVRkRMRXRCUVd0Q0xFVkJRVUU3VVVGRGVFTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhaUVVGWkxFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0TFFVTXhRenRCUVVWRUxFbEJRVUVzU1VGQlZ5eGhRVUZoTEVkQlFVRTdRVUZEZEVJc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNZVUZCWVN4RFFVRkRMRXRCUVVzc1EwRkJRenRMUVVNeFF6dEpRVU5FTEVsQlFWY3NZVUZCWVN4RFFVRkRMRXRCUVRKQ0xFVkJRVUU3VVVGRGJFUXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhoUVVGaExFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0TFFVTXpRenRCUVVWRUxFbEJRVUVzU1VGQlZ5eDNRa0ZCZDBJc1IwRkJRVHRCUVVOcVF5eFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4TFFVRkxMRU5CUVVNN1MwRkRja1E3U1VGRFJDeEpRVUZYTEhkQ1FVRjNRaXhEUVVGRExFdEJRV3RDTEVWQlFVRTdVVUZEY0VRc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eDNRa0ZCZDBJc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzB0QlEzUkVPMEZCUlVRc1NVRkJRU3hKUVVGWExHdENRVUZyUWl4SFFVRkJPMEZCUXpOQ0xGRkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMR3RDUVVGclFpeERRVUZETEV0QlFVc3NRMEZCUXp0TFFVTXZRenRKUVVORUxFbEJRVmNzYTBKQlFXdENMRU5CUVVNc1MwRkJNa0lzUlVGQlFUdFJRVU4yUkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU03UzBGRGFFUTdRVUZGUkN4SlFVRkJMRWxCUVZjc2IwSkJRVzlDTEVkQlFVRTdRVUZETjBJc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zUzBGQlN5eERRVUZETzB0QlEycEVPMGxCUTBRc1NVRkJWeXh2UWtGQmIwSXNRMEZCUXl4TFFVRmhMRVZCUVVFN1VVRkRNME1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMHRCUTJ4RU8wRkJSVVFzU1VGQlFTeEpRVUZYTEN0Q1FVRXJRaXhIUVVGQk8wRkJRM2hETEZGQlFVRXNUMEZCVHl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExDdENRVUVyUWl4RFFVRkRMRXRCUVVzc1EwRkJRenRMUVVNMVJEdEpRVU5FTEVsQlFWY3NLMEpCUVN0Q0xFTkJRVU1zUzBGQllTeEZRVUZCTzFGQlEzUkVMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zSzBKQlFTdENMRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF6dExRVU0zUkR0QlFVVkVMRWxCUVVFc1NVRkJWeXgxUWtGQmRVSXNSMEZCUVR0QlFVTm9ReXhSUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eExRVUZMTEVOQlFVTTdTMEZEY0VRN1NVRkRSQ3hKUVVGWExIVkNRVUYxUWl4RFFVRkRMRXRCUVdFc1JVRkJRVHRSUVVNNVF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMSFZDUVVGMVFpeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1MwRkRja1E3UVVGRlJDeEpRVUZCTEVsQlFWY3NNa0pCUVRKQ0xFZEJRVUU3UVVGRGNFTXNVVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zTWtKQlFUSkNMRU5CUVVNc1MwRkJTeXhEUVVGRE8wdEJRM2hFTzBsQlEwUXNTVUZCVnl3eVFrRkJNa0lzUTBGQlF5eExRVUV5UWl4RlFVRkJPMUZCUTJoRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNNa0pCUVRKQ0xFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0TFFVTjZSRHRCUVVWRUxFbEJRVUVzU1VGQlZ5eHJRa0ZCYTBJc1IwRkJRVHRCUVVNelFpeFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4TFFVRkxMRU5CUVVNN1MwRkRMME03U1VGRFJDeEpRVUZYTEd0Q1FVRnJRaXhEUVVGRExFdEJRV0VzUlVGQlFUdFJRVU42UXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU03UzBGRGFFUTdRVUZGUkN4SlFVRkJMRWxCUVZjc2EwSkJRV3RDTEVkQlFVRTdRVUZETTBJc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUzBGQlN5eERRVUZETzB0QlF5OURPMGxCUTBRc1NVRkJWeXhyUWtGQmEwSXNRMEZCUXl4TFFVRnJRaXhGUVVGQk8xRkJRemxETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJRenRMUVVOb1JEdEJRVVZFTEVsQlFVRXNTVUZCVnl4M1FrRkJkMElzUjBGQlFUdEJRVU5xUXl4UlFVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eDNRa0ZCZDBJc1EwRkJReXhMUVVGTExFTkJRVU03UzBGRGNrUTdTVUZEUkN4SlFVRlhMSGRDUVVGM1FpeERRVUZETEV0QlFXRXNSVUZCUVR0UlFVTXZReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEhkQ1FVRjNRaXhEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdTMEZEZEVRN1FVRkZSQ3hKUVVGQkxFbEJRVmNzYzBKQlFYTkNMRWRCUVVFN1FVRkRMMElzVVVGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNTMEZCU3l4RFFVRkRPMHRCUTI1RU8wbEJRMFFzU1VGQlZ5eHpRa0ZCYzBJc1EwRkJReXhMUVVFeVFpeEZRVUZCTzFGQlF6TkVMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zYzBKQlFYTkNMRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF6dExRVU53UkR0QlFVVkVMRWxCUVVFc1NVRkJWeXgzUWtGQmQwSXNSMEZCUVR0QlFVTnFReXhSUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eExRVUZMTEVOQlFVTTdTMEZEY2tRN1NVRkRSQ3hKUVVGWExIZENRVUYzUWl4RFFVRkRMRXRCUVdFc1JVRkJRVHRSUVVNdlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMSGRDUVVGM1FpeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1MwRkRkRVE3UVVGRlJDeEpRVUZCTEVsQlFWY3NkMEpCUVhkQ0xFZEJRVUU3UVVGRGFrTXNVVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zZDBKQlFYZENMRU5CUVVNc1MwRkJTeXhEUVVGRE8wdEJRM0pFTzBsQlEwUXNTVUZCVnl4M1FrRkJkMElzUTBGQlF5eExRVUZoTEVWQlFVRTdVVUZETDBNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eDNRa0ZCZDBJc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzB0QlEzUkVPMEZCUlVRc1NVRkJRU3hKUVVGWExIZENRVUYzUWl4SFFVRkJPMEZCUTJwRExGRkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMSGRDUVVGM1FpeERRVUZETEV0QlFVc3NRMEZCUXp0TFFVTnlSRHRKUVVORUxFbEJRVmNzZDBKQlFYZENMRU5CUVVNc1MwRkJZU3hGUVVGQk8xRkJReTlETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJRenRMUVVOMFJEdEJRWGxDUkRzN08wRkJSMGM3UVVGRFNDeEpRVUZCTEVsQlFWY3NhVUpCUVdsQ0xFZEJRVUU3VVVGRE1VSXNUMEZCVHl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTTdTMEZEYUVNN1NVRkRSQ3hKUVVGWExHbENRVUZwUWl4RFFVRkRMRXRCUVdNc1JVRkJRVHRCUVVONlF5eFJRVUZCTEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZGYUVNc1VVRkJRU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXp0TFFVTjZRanRCUVVsRU96czdPenRCUVV0SE8wRkJRMGdzU1VGQlFTeEpRVUZKTEdGQlFXRXNSMEZCUVR0UlFVTm1MRTlCUVU4c1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF6dExRVU0xUWp0QlFVVkVPenM3T3p0QlFVdEhPMGxCUTBnc1NVRkJTU3hoUVVGaExFTkJRVU1zUTBGQlZTeEZRVUZCTzBGQlF6RkNMRkZCUVVFc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZGZUVJc1VVRkJRU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXp0TFFVTjZRanRCUVVsRU96czdPenRCUVV0SE8wRkJRMGdzU1VGQlFTeEpRVUZKTEZOQlFWTXNSMEZCUVR0UlFVTllMRTlCUVU4c1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF6dExRVU40UWp0QlFVVkVPenM3T3p0QlFVdEhPMGxCUTBnc1NVRkJTU3hUUVVGVExFTkJRVU1zUTBGQmVVSXNSVUZCUVR0QlFVTnlReXhSUVVGQkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUlhCQ0xGRkJRVUVzU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNN1MwRkRla0k3UVVGSlJDeEpRVUZCTEVsQlFVa3NaMEpCUVdkQ0xFZEJRVUU3VVVGRGJFSXNUMEZCVHl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTTdTMEZETDBJN1NVRkRSQ3hKUVVGSkxHZENRVUZuUWl4RFFVRkRMRU5CUVdkRExFVkJRVUU3UVVGRGJrUXNVVUZCUVN4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUlROQ0xGRkJRVUVzU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNN1MwRkRla0k3UVVGSlJDeEpRVUZCTEVsQlFVa3NVMEZCVXl4SFFVRkJPMUZCUTFnc1QwRkJUeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETzB0QlEzaENPMGxCUTBRc1NVRkJTU3hUUVVGVExFTkJRVU1zUTBGQlZTeEZRVUZCTzBGQlEzUkNMRkZCUVVFc1NVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZGY0VJc1VVRkJRU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXp0TFFVTjZRanRCUVVWRU96dEJRVVZITzBGQlEwZ3NTVUZCUVN4SlFVRlhMR1ZCUVdVc1IwRkJRVHRCUVVONFFpeFJRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRPMHRCUTJJN1FVRkZSQ3hKUVVGQkxGZEJRVUVzUTBGQldTeGhRVUZ6UXl4RlFVRkZMRVZCUVVFN1FVRkRiRVFzVVVGQlFTeExRVUZMTEVOQlFVTXNSVUZCUlN4WlFVRlpMRVZCUVVVc1kwRkJZeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRV3hJYmtNc1NVRkJOa0lzUTBGQlFTdzJRa0ZCUVN4SFFVRkhMRWRCUVVjc1EwRkJRenRSUVVOd1F5eEpRVUUyUWl4RFFVRkJMRFpDUVVGQkxFZEJRVWNzUjBGQlJ5eERRVUZETzFGQlEzQkRMRWxCUVRoQ0xFTkJRVUVzT0VKQlFVRXNSMEZCUnl4SFFVRkhMRU5CUVVNN1FVRkZOVU03T3p0QlFVZEhPMUZCUTBrc1NVRkJSeXhEUVVGQkxFZEJRVUVzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZGYkVJN096czdRVUZKUnp0QlFVTkpMRkZCUVVFc1NVRkJRU3hEUVVGQkxHRkJRV0VzUjBGQlJ5eExRVUZMTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU03UVVGRmJrUTdPenRCUVVkSE8xRkJRMHNzU1VGQmEwSXNRMEZCUVN4clFrRkJRU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRV1V4UWl4SlFVRmpMRU5CUVVFc1kwRkJRU3hIUVVGSExFdEJRVXNzUTBGQlF6dEJRWGRDZGtJc1VVRkJRU3hKUVVGQkxFTkJRVUVzVlVGQlZTeEhRVUV5UWl4elFrRkJjMElzUTBGQlF5eEpRVUZKTEVOQlFVTTdRVUYzUW1wRkxGRkJRVUVzU1VGQlFTeERRVUZCTEdsQ1FVRnBRaXhIUVVGclF5dzJRa0ZCTmtJc1EwRkJReXhKUVVGSkxFTkJRVU03VVVGWGRFWXNTVUZCVlN4RFFVRkJMRlZCUVVFc1IwRkJSeXhMUVVGTExFTkJRVU03TzFGQmMwSjZRaXhKUVVGSkxGVkJRVlVzUTBGQlF5eHhRa0ZCY1VJc1JVRkJSVHRCUVVOd1F5eFpRVUZCTEZWQlFWVXNRMEZCUXl4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJRemxDTEZOQlFVRTdVVUZEUkN4UFFVRlBMRlZCUVZVc1EwRkJReXh4UWtGQmNVSXNRMEZCUXpzN1FVRkhlRU1zVVVGQlFTeFZRVUZWTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVOMFFpeFJRVUZCTEZWQlFWVXNRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJRM3BDTEZGQlFVRXNWVUZCVlN4RFFVRkRMRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU03T3p0UlFVa3pRaXhKUVVGSkxGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJUdFpRVU55UXl4VlFVRnJRaXhEUVVGRExGRkJRVkVzUjBGQlNTeFZRVUZyUWl4RFFVRkRMRkZCUVZFc1NVRkJTU3hMUVVGTExFTkJRVU03UVVGRGRFVXNVMEZCUVRzN08xRkJTVVFzU1VGQlNTeFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVWQlFVVTdXVUZEY2tNc1ZVRkJhMElzUTBGQlF5eFpRVUZaTEVkQlFVa3NWVUZCYTBJc1EwRkJReXhaUVVGWkxFbEJRVWtzUzBGQlN5eERRVUZETzFsQlF6VkZMRlZCUVd0Q0xFTkJRVU1zV1VGQldTeEhRVUZKTEZWQlFXdENMRU5CUVVNc1dVRkJXU3hKUVVGSkxFdEJRVXNzUTBGQlF6dEJRVU01UlN4VFFVRkJPenRSUVVkRUxFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NTMEZCU3l4RFFVRkRMR0ZCUVdFc1EwRkJReXhMUVVGTExFTkJRVU03V1VGRGVFTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1EwRkJReXhOUVVGTk8xbEJRM2hDTEV0QlFVc3NRMEZCUXl4WFFVRlhMRU5CUVVNc1UwRkJVenRaUVVNelFpeExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmRCUVZjN1dVRkROMElzUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4SFFVRkhPMWxCUTNKQ0xFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNUVUZCVFR0QlFVTjRRaXhaUVVGQk8wRkJRMFVzWjBKQlFVRXNVMEZCVXl4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTzJkQ1FVTndSQ3hqUVVGakxFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRkxFVkJRVVU3UVVGRE9VTXNaMEpCUVVFc1ZVRkJWU3hGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVkQlFVY3NSVUZCUlR0blFrRkRNVUlzYjBKQlFXOUNMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRVZCUVVVN1FVRkRjRVFzWjBKQlFVRXNaMEpCUVdkQ0xFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNTVUZCU1N4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRVZCUVVVN1FVRkRPVVFzWjBKQlFVRXNiMEpCUVc5Q0xFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNTVUZCU1N4RlFVRkZPMmRDUVVOeVF5d3JRa0ZCSzBJc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1JVRkJSVHRCUVVNdlJDeG5Ra0ZCUVN4clFrRkJhMElzUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4SFFVRkhMRVZCUVVVN1FVRkRiRU1zWjBKQlFVRXNiVUpCUVcxQ0xFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNTVUZCU1N4RlFVRkZPMmRDUVVOd1F5dzRRa0ZCT0VJc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1JVRkJSVHRCUVVNNVJDeG5Ra0ZCUVN4M1FrRkJkMElzUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4SFFVRkhMRVZCUVVVN1FVRkRlRU1zWjBKQlFVRXNhMEpCUVd0Q0xFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNSMEZCUnl4RlFVRkZPMEZCUTJ4RExHZENRVUZCTEc5Q1FVRnZRaXhGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVkQlFVY3NSVUZCUlR0QlFVTndReXhuUWtGQlFTeFpRVUZaTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVU3UVVGRGRrUXNaMEpCUVVFc1lVRkJZU3hGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NSVUZCUlR0blFrRkRPVUlzZDBKQlFYZENMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRVZCUVVVN1FVRkRlRVFzWjBKQlFVRXNkMEpCUVhkQ0xFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNTVUZCU1N4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVN1FVRkRia1VzWjBKQlFVRXNhMEpCUVd0Q0xFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNTVUZCU1N4RlFVRkZPMmRDUVVOdVF5dzJRa0ZCTmtJc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1JVRkJSVHRCUVVNM1JDeG5Ra0ZCUVN4dlFrRkJiMElzUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4SFFVRkhMRVZCUVVVN1FVRkRjRU1zWjBKQlFVRXNLMEpCUVN0Q0xFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNSMEZCUnl4RlFVRkZPMEZCUXk5RExHZENRVUZCTEhWQ1FVRjFRaXhGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVkQlFVY3NSVUZCUlR0QlFVTjJReXhuUWtGQlFTeFJRVUZSTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVU3UVVGRGJrUXNaMEpCUVVFc2FVSkJRV2xDTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1IwRkJSeXhGUVVGRk8yZENRVU5xUXl4elFrRkJjMElzUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUlVGQlJUdEJRVU4wUkN4blFrRkJRU3d5UWtGQk1rSXNSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFVkJRVVU3WjBKQlF6VkRMSE5EUVVGelF5eEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeEZRVUZGTzBGQlEzUkZMR2RDUVVGQkxHdENRVUZyUWl4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxFZEJRVWNzUlVGQlJUdEJRVU5zUXl4blFrRkJRU3hyUWtGQmEwSXNSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJUdEJRVU0zUkN4blFrRkJRU3gzUWtGQmQwSXNSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hIUVVGSExFVkJRVVU3UVVGRGVFTXNaMEpCUVVFc2MwSkJRWE5DTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hGUVVGRk8yZENRVU4yUXl4cFEwRkJhVU1zUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUlVGQlJUdEJRVU5xUlN4blFrRkJRU3gzUWtGQmQwSXNSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hIUVVGSExFVkJRVVU3UVVGRGVFTXNaMEpCUVVFc2QwSkJRWGRDTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1IwRkJSeXhGUVVGRk8wRkJRM2hETEdkQ1FVRkJMSGRDUVVGM1FpeEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWRCUVVjc1JVRkJSVHRCUVVONlF5eGhRVUZCTzBGQlEwUXNXVUZCUVN4VlFVRlZMRU5CUVVNc1VVRkJVVHRCUVVOd1FpeFRRVUZCTEVOQlFVTXNRMEZCUXpzN1FVRkhTQ3hSUVVGQkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN08xRkJSek5DTEVsQlFVa3NRMEZCUXl4NVFrRkJlVUlzUlVGQlJTeERRVUZET3p0QlFVZHFReXhSUVVGQkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1IwRkJSeXhOUVVNelFqdFpRVU5GTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVUVzUlVGQlJ5eExRVUZMTEVOQlFVRXNRMEZCUVN4RlFVRkpMRXRCUVVzc1EwRkJRU3hEUVVGRkxFTkJRVU03UVVGRGRrWXNXVUZCUVN4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExESkNRVUV5UWl4dlFrRkJiMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVFc1EwRkJSU3hIUVVGSExFVkJRVVU3UVVGREwwWXNXVUZCUVN4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTzJ0Q1FVTnlRaXhyUTBGQmEwTXNiMEpCUVc5Q0xFTkJRVU1zU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFTkJRVVVzUTBGQlFUdEJRVU55Uml4clFrRkJSU3hGUVVGRk8wRkJRMDRzV1VGQlFTeEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFZEJRVWNzWjBOQlFXZERMRzlDUVVGdlFpeERRVUZETEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZCTEVOQlFVVXNSMEZCUnl4RlFVRkZPMEZCUXk5SExGTkJRVUVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkZaQ3hSUVVGQkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVkQlFVY3NRMEZCUXl4TlFVRk5MRXRCUVVrN1dVRkRhRU1zVFVGQlRTeGhRVUZoTEVkQlFVY3NVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZGYmtRc1dVRkJRU3hOUVVGTkxFOUJRVThzUjBGRFdDeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRk5MRTFCUVVFc1EwRkJRU3hOUVVGQkxFTkJRVUVzVFVGQlFTeERRVUZCTEUxQlFVRXNRMEZCUVN4RlFVRkJMRVZCUVVFc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMRU5CUVVFc1JVRkJTeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZITEVOQlFVRTdRVUZETlVRc2FVSkJRVUVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXp0QlFVTnVReXhwUWtGQlFTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZYTEZGQlFVRXNSVUZCUVN4TFFVRkxMRU5CUVVrc1EwRkJRU3hGUVVGQkxFdEJRVXNzUlVGQlJTeERRVUZETzBGQlEzQkVMR2xDUVVGQkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNN08xbEJSM1pDTEUxQlFVMHNRMEZCUXl4WlFVRlpMRWRCUVVjc1QwRkJUeXhIUVVGSExFMUJRVTBzUTBGQlF5eFpRVUZaTEVOQlFVTTdXVUZEY0VRc1RVRkJUU3hEUVVGRExHTkJRV01zUjBGQlJ5eFBRVUZQTEVkQlFVY3NUVUZCVFN4RFFVRkRMR05CUVdNc1EwRkJRenM3T3p0WlFVMTRSQ3hKUVVGSkxHRkJRV0VzUjBGQlJ5eEhRVUZITEVWQlFVVTdRVUZEZGtJc1owSkJRVUVzVFVGQlRTeERRVUZETEdOQlFXTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExFOUJRVThzUTBGRGJrUXNaME5CUVdkRExFVkJRMmhETEN0Q1FVRXJRaXhEUVVOb1F5eERRVUZETzBGQlEwZ3NZVUZCUVRzN08xbEJTVVFzU1VGQlNTeGhRVUZoTEVkQlFVY3NSMEZCUnl4RlFVRkZPMEZCUTNaQ0xHZENRVUZCTEUxQlFVMHNRMEZCUXl4alFVRmpMRWRCUVVjc1RVRkJUU3hEUVVGRExHTkJRV01zUTBGQlF5eFBRVUZQTEVOQlFVTXNhVU5CUVdsRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZETjBZc1owSkJRVUVzVFVGQlRTeERRVUZETEdOQlFXTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExFOUJRVThzUTBGQlF5eHZRMEZCYjBNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU5xUnl4aFFVRkJPMEZCUTBnc1UwRkJReXhEUVVGRE8wdEJRMGc3UVVGRlJEczdPenRCUVVsSE8wRkJRMGtzU1VGQlFTeE5RVUZOTEVOQlFVTXNTMEZCWVN4RlFVRkJPMUZCUTNwQ0xFbEJRVWtzUTBGQlF5eDVRa0ZCZVVJc1JVRkJSU3hEUVVGRE8wRkJRMnBETEZGQlFVRXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMHRCUTJoRE8wRkJSVTBzU1VGQlFTeEpRVUZKTEVOQlFVTXNUVUZCV1N4RlFVRkJPMEZCUTNSQ0xGRkJRVUVzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenM3T3pzN096czdPMEZCVlc1Q0xGRkJRVUVzU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRE8wRkJRM1JDTEZGQlFVRXNTVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETzBGQlEyeERMRkZCUVVFc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNWMEZCVnl4RFFVRkRPMEZCUTNSRExGRkJRVUVzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhIUVVGSExFMUJRVTBzUTBGQlF5eHZRa0ZCYjBJc1EwRkJRenRCUVVONFJDeFJRVUZCTEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUjBGQlJ5eE5RVUZOTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU03UVVGRGRFUXNVVUZCUVN4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTTdRVUZETVVNc1VVRkJRU3hKUVVGSkxFTkJRVU1zYTBKQlFXdENMRWRCUVVjc1RVRkJUU3hEUVVGRExHdENRVUZyUWl4RFFVRkRPMEZCUTNCRUxGRkJRVUVzU1VGQlNTeERRVUZETERKQ1FVRXlRaXhIUVVGSExFMUJRVTBzUTBGQlF5d3lRa0ZCTWtJc1EwRkJRenRCUVVOMFJTeFJRVUZCTEVsQlFVa3NRMEZCUXl4elFrRkJjMElzUjBGQlJ5eE5RVUZOTEVOQlFVTXNjMEpCUVhOQ0xFTkJRVU03TzBGQlJ6VkVMRkZCUVVFc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRPMEZCUlRGRExGRkJRVUVzU1VGQlNTeERRVUZETERaQ1FVRTJRaXhIUVVGSExFMUJRVTBzUTBGQlF5dzJRa0ZCTmtJc1EwRkJRenRCUVVNeFJTeFJRVUZCTEVsQlFVa3NRMEZCUXl3MlFrRkJOa0lzUjBGQlJ5eE5RVUZOTEVOQlFVTXNOa0pCUVRaQ0xFTkJRVU03UVVGRE1VVXNVVUZCUVN4SlFVRkpMRU5CUVVNc09FSkJRVGhDTEVkQlFVY3NUVUZCVFN4RFFVRkRMRGhDUVVFNFFpeERRVUZETzBGQlJUVkZMRkZCUVVFc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4SFFVRkhMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNRMEZCUXp0QlFVVnNSQ3hSUVVGQkxFbEJRVWtzUTBGQlF5eGhRVUZoTEVkQlFVY3NUVUZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJRenRCUVVNeFF5eFJRVUZCTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1RVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF6dEJRVU5zUXl4UlFVRkJMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNSMEZCUnl4TlFVRk5MRU5CUVVNc1owSkJRV2RDTEVOQlFVTTdRVUZGYUVRc1VVRkJRU3hKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNN08wRkJSMnhETEZGQlFVRXNTVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRmVFSXNVVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJRenRMUVVOaU8wRkJSVVE3T3pzN1FVRkpSenRCUVVOTExFbEJRVUVzYTBKQlFXdENMRU5CUVVNc1MwRkJZU3hGUVVGQk8wRkJRM1JETEZGQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4TFFVRkxMRWxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5dzJRa0ZCTmtJc1EwRkJRenRCUVVNelJpeFJRVUZCTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNTMEZCU3l4SlFVRkpMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zTmtKQlFUWkNMRU5CUVVNN1FVRkRNMFlzVVVGQlFTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMSGRDUVVGM1FpeERRVUZETEV0QlFVc3NTVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExEaENRVUU0UWl4RFFVRkRPMEZCUlRWR0xGRkJRVUVzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhIUVVGSExFbEJRVWtzUTBGQlF6dExRVU5vUXp0QlFVVkVPenM3UVVGSFJ6dEpRVU5MTEhsQ1FVRjVRaXhIUVVGQk96czdPMUZCU1M5Q0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZET3p0QlFVY3pReXhSUVVGQkxFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETzBGQlF6TkZMRkZCUVVFc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNRMEZCUXp0QlFVTjJSaXhSUVVGQkxFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZkQlFWY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRU5CUVVNN1FVRkRNMFlzVVVGQlFTeEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4dlFrRkJiMElzUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMQ3RDUVVFclFpeERRVUZETEVOQlFVTTdRVUZETjBjc1VVRkJRU3hKUVVGSkxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eHRRa0ZCYlVJc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETERoQ1FVRTRRaXhEUVVGRExFTkJRVU03UVVGRE0wY3NVVUZCUVN4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhoUVVGaExFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eERRVUZETzBGQlF5OUdMRkZCUVVFc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5dzJRa0ZCTmtJc1EwRkJReXhEUVVGRE8wRkJRM3BITEZGQlFVRXNTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeERRVU4yUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExESkNRVUV5UWl4RlFVTjZReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEhORFFVRnpReXhEUVVOeVJDeERRVUZETzBGQlEwWXNVVUZCUVN4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXh6UWtGQmMwSXNSVUZCUlN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExHbERRVUZwUXl4RFFVRkRMRU5CUVVNN08xRkJSMnBJTEUxQlFVMHNZVUZCWVN4SFFVRkhMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUlc1RUxFbEJRVWtzWVVGQllTeEpRVUZKTEVkQlFVY3NSVUZCUlR0WlFVTjRRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF6dEJRVU5vUkN4VFFVRkJPMEZCUlVRc1VVRkJRU3hKUVVGSkxFTkJRVU1zYTBKQlFXdENMRWRCUVVjc1NVRkJTU3hEUVVGRE8wdEJRMmhETzBGQlJVUTdPMEZCUlVjN1NVRkRTeXhuUWtGQlowSXNSMEZCUVR0UlFVTjBRaXhOUVVGTkxHRkJRV0VzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVVZ1UkN4UlFVRkJMRTFCUVUwc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5d3lRa0ZCTWtJc1MwRkJTeXhKUVVGSkxFTkJRVU03UVVGRE9VUXNVVUZCUVN4TlFVRk5MRmRCUVZjc1IwRkRaaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVsQlFVazdXVUZEYWtJc1NVRkJTU3hEUVVGRExGZEJRVmNzUzBGQlN5eEpRVUZKTzFsQlEzcENMRWxCUVVrc1EwRkJReXh2UWtGQmIwSXNTMEZCU3l4SlFVRkpPMWxCUTJ4RExFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1MwRkJTeXhKUVVGSk8xbEJRMnBETEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUzBGQlN5eEpRVUZKTzBGQlEyaERMRmxCUVVFc1NVRkJTU3hEUVVGRExITkNRVUZ6UWl4TFFVRkxMRWxCUVVrc1EwRkJRenRSUVVWMlF5eFBRVUZQT3pzN1FVRkhUQ3haUVVGQkxIZENRVUYzUWl4RlFVRkZMR0ZCUVdFN1dVRkZka01zVDBGQlR5eEZRVUZGTEVsQlFVa3NRMEZCUXl4VlFVRlZPMWxCUTNoQ0xGbEJRVmtzUlVGQlJTeFhRVUZYTEVsQlFVa3NWMEZCVnp0QlFVTjRReXhaUVVGQkxIRkNRVUZ4UWl4RlFVRkZMRmRCUVZjc1NVRkJTU3hEUVVGRExGZEJRVmM3V1VGRGJFUXNaVUZCWlN4RlFVRkZMRWxCUVVrc1EwRkJReXhqUVVGak8wRkJRM0JETEZsQlFVRXNkMEpCUVhkQ0xFVkJRVVVzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhMUVVGTExFbEJRVWs3UVVGRE5VUXNXVUZCUVN4MVFrRkJkVUlzUlVGQlJTeEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFdEJRVXNzU1VGQlNUdEJRVU14UkN4WlFVRkJMR2xDUVVGcFFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4aFFVRmhMRXRCUVVzc1NVRkJTVHRCUVVNNVF5eFpRVUZCTEhOQ1FVRnpRaXhGUVVGRkxFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1MwRkJTeXhKUVVGSk8xbEJRM2hFTEN0Q1FVRXJRaXhGUVVGRkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVsQlFVa3NTVUZCU1N4RFFVRkRMREpDUVVFeVFpeExRVUZMTEVsQlFVazdRVUZETjBZc1dVRkJRU3d3UWtGQk1FSXNSVUZCUlN4SlFVRkpMRU5CUVVNc2MwSkJRWE5DTEV0QlFVc3NTVUZCU1R0QlFVTm9SU3haUVVGQkxHMUNRVUZ0UWl4RlFVRkZMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNTMEZCU3l4SlFVRkpPMEZCUTNKRUxGbEJRVUVzV1VGQldTeEZRVUZGTEVsQlFVa3NRMEZCUXl4VlFVRlZMRXRCUVVzc1VVRkJVVHRCUVVNeFF5eFpRVUZCTEd0Q1FVRnJRaXhGUVVGRkxFbEJRVWtzUTBGQlF5eFZRVUZWTEV0QlFVc3NZMEZCWXp0QlFVTjBSQ3haUVVGQkxGRkJRVkVzUlVGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlN4TFFVRkxMRWxCUVVrN1dVRkRiRU1zYlVKQlFXMUNMRVZCUVVVc1NVRkJTU3hEUVVGRExGVkJRVlVzU1VGQlNTeEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFdEJRVXNzTmtKQlFUWkNMRU5CUVVNc1owSkJRV2RDTzFsQlEycElMRzlDUVVGdlFpeEZRVU5zUWl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1MwRkJTeXcyUWtGQk5rSXNRMEZCUXl4cFFrRkJhVUk3VTBGRGFFY3NRMEZCUXp0TFFVTklPMGxCUlU4c2IwSkJRVzlDTEVOQlFVTXNSMEZCZVVNc1JVRkJSU3hIUVVGclF5eEZRVUZCTzFGQlEzaEhMRWxCUVVrc1IwRkJSeXhEUVVGRExFdEJRVXNzUlVGQlJUdEJRVU5pTEZsQlFVRXNTVUZCU1N4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExHZENRVUZuUWl4RlFVRkZPMEZCUXpsQ0xHZENRVUZCTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03UVVGRE1VSXNZVUZCUVR0WlFVVkVMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRGJFTXNVMEZCUVR0TFFVTkdPMEZCUTBZN08wRkRkRzlDUkN4TlFVRk5MSEZDUVVGeFFpeEhRVUUyUWp0QlFVTjBSQ3hKUVVGQkxFVkJRVVVzUlVGQlJTeEpRVUZKTzBGQlExSXNTVUZCUVN4SlFVRkpMRVZCUVVVc1NVRkJTVHREUVVOWUxFTkJRVU03UVVGRlJqczdPenM3T3pzN08wRkJVMGM3UVVGRFlTeFRRVUZCTEc5Q1FVRnZRaXhEUVVGRExFOUJRWE5DTEVWQlFVVXNWVUZCZFVJc1JVRkJRVHRKUVVOc1JpeEpRVUZKTEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVkQlFVY3NSVUZCUlR0QlFVTjJReXhSUVVGQkxFOUJRVThzUTBGQlF5eFZRVUZWTEVkQlFVY3NWVUZCVlN4RFFVRkRPMEZCUTJwRExFdEJRVUU3UVVGQlRTeFRRVUZCTzBGQlEwb3NVVUZCUVN4UFFVRmxMRU5CUVVNc1VVRkJVU3hIUVVGSExIRkNRVUZ4UWl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wRkJReTlFTEV0QlFVRTdRVUZEU0RzN1FVTnNRa0U3T3pzN1FVRkpSenROUVVOVkxHMURRVUZ0UXl4RFFVRkJPMEZCU3psRExFbEJRVUVzU1VGQlZ5eFBRVUZQTEVkQlFVRTdVVUZEYUVJc1QwRkJUeXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRMUVVOd1F6dEpRVVZFTEZkQlFXMUNMRU5CUVVFc1RVRkJhMElzUlVGQlJTeGpRVUYxUXl4RlFVRkJPMEZCUXpWRkxGRkJRVUVzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4TlFVRk5MRU5CUVVNN1FVRkRkRUlzVVVGQlFTeEpRVUZKTEVOQlFVTXNaVUZCWlN4SFFVRkhMR05CUVdNc1EwRkJRenRCUVVOMFF5eFJRVUZCTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1JVRkJSU3hEUVVGRE8wdEJRM0pDTzBsQlJVMHNaVUZCWlN4RFFVRXdReXhIUVVGTkxFVkJRVVVzUzBGQmFVTXNSVUZCUVR0UlFVTjJSeXhKUVVGSkxFdEJRVXNzU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZEYWtJc1dVRkJRU3hKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJRenRCUVVOdVF5eFRRVUZCTzB0QlEwWTdRVUZGVFN4SlFVRkJMRmRCUVZjc1EwRkRhRUlzUjBGQlRTeEZRVU5PTEV0QlFUSkNMRVZCUXpOQ0xHMUNRVUUyUWl4RlFVRkJPMUZCUlRkQ0xFbEJRVWtzUzBGQlN5eEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTnFRaXhaUVVGQkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJSUzlFTEZsQlFVRXNTVUZCU1N4dFFrRkJiVUlzUlVGQlJUdG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4dFFrRkJiVUlzUlVGQlJTeERRVUZETzBGQlEycEVMR0ZCUVVFN1FVRkRSaXhUUVVGQk8wdEJRMFk3UVVGRldTeEpRVUZCTEdGQlFXRXNRMEZEZUVJc1IwRkJUU3hGUVVOT0xFOUJRWE5ETEVWQlEzUkRMR05CUVhWQ0xFVkJRVUU3TzBGQlJYWkNMRmxCUVVFc1RVRkJUU3hQUVVGUExFZEJRVWNzUTBGQlF5eE5RVUZYTEZOQlFVRXNRMEZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hEUVVGQkxFVkJRVUVzUzBGQlFTeERRVUZCTEVWQlFVRXNZVUZCUVR0blFrRkRNVUlzU1VGQlNTeFBRVUZQTEVsQlFVa3NTVUZCU1N4RlFVRkZPMEZCUTI1Q0xHOUNRVUZCTEUxQlFVMHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEdWQlFXVXNSVUZCUlN4SFFVRkhMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRmNrVXNiMEpCUVVFc1NVRkJTU3hqUVVGakxFVkJRVVU3ZDBKQlEyeENMRzlDUVVGdlFpeERRVUZETEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdRVUZEZWtRc2NVSkJRVUU3UVVGRFJpeHBRa0ZCUVR0aFFVTkdMRU5CUVVFc1IwRkJSeXhEUVVGRE8wRkJSVXdzV1VGQlFTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEJRVVUzUWl4WlFVRkJMRTlCUVU4c1QwRkJUeXhEUVVGRE8xTkJRMmhDTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUVVFN1FVRkZXU3hKUVVGQkxHOUNRVUZ2UWl4RFFVTXZRaXhIUVVGTkxFVkJRMDRzV1VGQlowTXNSVUZEYUVNc1kwRkJkVUlzUlVGQlFUczdXVUZGZGtJc1QwRkJUeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVkQlFVY3NSVUZCUlN4WlFVRlpMRWxCUVVrc1NVRkJTU3hIUVVGSExFVkJRVVVzUzBGQlN5eEZRVUZGTEZsQlFWa3NSVUZCUlN4SFFVRkhMRk5CUVZNc1JVRkJSU3hqUVVGakxFTkJRVU1zUTBGQlF6dFRRVU0xUnl4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVGQk8wRkJRMFk3TzBGRE4wUkVPenRCUVVWSE8wRkJRMGdzVFVGQlRTeHpRa0ZCYzBJc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRE8wMUJSUzlETEhsQ1FVRjVRaXhEUVVGQk8wRkJhME53UXl4SlFVRkJMRWxCUVZjc1NVRkJTU3hIUVVGQk8xRkJRMklzVDBGQlR5eDVRa0ZCZVVJc1EwRkJReXhqUVVGakxFTkJRVU03UzBGRGFrUTdTVUZGUkN4WFFVRnRRaXhEUVVGQkxFMUJRV3RDTEVWQlFVVXNUMEZCUVN4SFFVRTBReXhGUVVGRkxFVkJRVUU3TzBGQlEyNUdMRkZCUVVFc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTTdVVUZGY2tJc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4SFFVRkhMRU5CUVVFc1JVRkJRU3hIUVVGQkxFOUJRVThzUTBGQlF5eHBRa0ZCYVVJc1RVRkJTU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJRU3hEUVVGRExFTkJRVU03VVVGRGVFUXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeFBRVUZQTEVOQlFVTXNZVUZCWVN4TlFVRkpMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkJMRXRCUVVzc1EwRkJRenRSUVVOd1JDeEpRVUZKTEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVFc1JVRkJRU3hIUVVGQkxFOUJRVThzUTBGQlF5eFRRVUZUTEUxQlFVa3NTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVRXNUVUZCVFN4RFFVRkRPMEZCUlRkRExGRkJRVUVzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTTdTMEZEY0VNN1NVRkZXU3hWUVVGVkxFZEJRVUU3TzFsQlEzSkNMRWxCUVVrc1EwRkJReXhyUTBGQmEwTXNSVUZCUlN4RFFVRkRPMU5CUXpORExFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlFVRTdRVUZGV1N4SlFVRkJMRk5CUVZNc1EwRkJReXhKUVVGVkxFVkJRVUU3TzBGQlF5OUNMRmxCUVVFc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzFOQlEzUkZMRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRVUU3UVVGRlRTeEpRVUZCTEdWQlFXVXNRMEZCUXl4aFFVRnhRaXhGUVVGQk8xRkJRekZETEUxQlFVMHNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJRenRCUVVNelJDeFJRVUZCTEVsQlFVa3NWMEZCVnl4RlFVRkZPMEZCUTJZc1dVRkJRU3hQUVVGUExHRkJRV0VzUTBGQlF6dEJRVU4wUWl4VFFVRkJPMEZCUlVRc1VVRkJRU3hQUVVGUExFbEJRVWtzUTBGQlF6dExRVU5pTzBsQlJVMHNiMEpCUVc5Q0xFTkJRVU1zWVVGQmNVSXNSVUZCUlN4alFVRjFReXhGUVVGQk8xRkJRM2hHTEUxQlFVMHNVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJRenRCUVVONlJDeFJRVUZCTEVsQlFVa3NVMEZCVXl4RlFVRkZPMWxCUTJJc1QwRkJUeXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1UwRkJVeXhGUVVGRkxHTkJRV01zUTBGQlF5eERRVUZETzBGQlF6bEVMRk5CUVVFN1FVRkZSQ3hSUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETzB0QlEySTdRVUZGV1N4SlFVRkJMRkZCUVZFc1EwRkJReXhUUVVGcFFpeEZRVUZCT3pzN1FVRkRja01zV1VGQlFTeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRek5DTEZsQlFVRXNUVUZCVFN4SlFVRkpMRWRCUVVjc1RVRkJUU3hEUVVGRExFbEJRWGRDTEVOQlFVTTdXVUZGTjBNc1RVRkJUU3hQUVVGUExFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNTVUZCU1N4RFFVRkRMRTFCUVUwc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlJ5eFRRVUZUTEVOQlFVTXNRMEZCUXp0WlFVVjZReXhKUVVGSkxFOUJRVThzU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZEYmtJc1owSkJRVUVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZEWWl4dlJFRkJiMFFzVTBGQlV5eERRVUZCTEc5RFFVRkJMRU5CUVhORExFTkJRM0JITEVOQlFVTTdRVUZEU0N4aFFVRkJPMEZCUlVRc1dVRkJRU3hOUVVGTkxHRkJRV0VzUjBGQlJ5eFBRVUZQTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUlhwRExFMUJRVTBzVjBGQlZ5eEhRVUZITEUxQlFVMHNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dEJRVVZ5UkN4WlFVRkJMRWxCUVVrc1lVRkJZU3hEUVVGRExFMUJRVTBzUzBGQlN5eERRVUZETEVWQlFVVTdaMEpCUXpsQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEZkQlFYbENMRU5CUVVNN1owSkJRM1pETEUxQlFVMHNZVUZCWVN4SFFVRkhMR0ZCUVdFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTTdaMEpCUldoRUxFbEJRVWtzWVVGQllTeEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTjZRaXh2UWtGQlFTeEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hoUVVGaExFTkJRVU1zUTBGQlF6dEJRVU16UXl4cFFrRkJRVHRCUVVOR0xHRkJRVUU3UVVGQlRTeHBRa0ZCUVR0blFrRkRUQ3hOUVVGTkxFdEJRVXNzUjBGQlJ5eFhRVUV3UWl4RFFVRkRPMEZCUTNwRExHZENRVUZCTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eGhRVUZoTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8yOUNRVU0zUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCWlN4RFFVRkRPMjlDUVVNM1F5eE5RVUZOTEdGQlFXRXNSMEZCUnl4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETzI5Q1FVVm9SQ3hKUVVGSkxHRkJRV0VzU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZEZWtJc2QwSkJRVUVzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1lVRkJZU3hEUVVGRExFTkJRVU03UVVGRE0wTXNjVUpCUVVFN1FVRkRSaXhwUWtGQlFUdEJRVU5HTEdGQlFVRTdRVUZGUkN4WlFVRkJMRTlCUVU4c1YwRkJWeXhEUVVGRE96dEJRVU53UWl4TFFVRkJPMEZCUlVRN096czdPMEZCUzBjN1NVRkRTeXhyUTBGQmEwTXNSMEZCUVR0QlFVTjRReXhSUVVGQkxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRNMElzVVVGQlFTeE5RVUZOTEVsQlFVa3NSMEZCUnl4TlFVRk5MRU5CUVVNc1NVRkJkMElzUTBGQlF6dEJRVVUzUXl4UlFVRkJMRTFCUVUwc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTTdRVUZEY0VNc1VVRkJRU3haUVVGWkxFdEJRVm9zU1VGQlFTeEpRVUZCTEZsQlFWa3NTMEZCV2l4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeFpRVUZaTEVOQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1YwRkJWeXhGUVVGRkxGTkJRVk1zUzBGQlNUczdXVUZETTBNc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFsQlJYSkVMRWxCUVVrc1UwRkJVeXhMUVVGSkxFTkJRVUVzUlVGQlFTeEhRVUZCTEZkQlFWY3NRMEZCUXl4VlFVRlZMRTFCUVVjc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVUVzY1VKQlFYRkNMRU5CUVVNc1EwRkJRU3hGUVVGRk8wRkJRMmhGTEdkQ1FVRkJMRTlCUVU4c1YwRkJWeXhEUVVGRExGVkJRVlVzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhEUVVGRE8wRkJRM1JFTEdGQlFVRTdRVUZEU0N4VFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOS08wRkJSVThzU1VGQlFTeHJRa0ZCYTBJc1EwRkJReXhoUVVGeFFpeEZRVUZCT3p0QlFVTTVReXhSUVVGQkxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRNMElzVVVGQlFTeE5RVUZOTEVsQlFVa3NSMEZCUnl4TlFVRk5MRU5CUVVNc1NVRkJkMElzUTBGQlF6dFJRVVUzUXl4TlFVRk5MRmRCUVZjc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZKTEVOQlFVTXNVMEZCVXl4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGSExHRkJRV0VzUTBGQlF5eERRVUZETzFGQlJYQkVMRWxCUVVrc1YwRkJWeXhKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU4yUWl4WlFVRkJMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRMVlzZFVSQlFYVkVMR0ZCUVdFc1EwRkJRU3gzUTBGQlFTeERRVUV3UXl4RFFVTXZSeXhEUVVGRE8wRkJRMFlzV1VGQlFTeFBRVUZQTEZOQlFWTXNRMEZCUXp0QlFVTnNRaXhUUVVGQk8xRkJSVVFzVFVGQlRTeFRRVUZUTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1YwRkJWeXhEUVVGRExGVkJRVlVzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUnl4NVFrRkJlVUlzUTBGQlF5eGpRVUZqTEVOQlJYUkZMRU5CUVVNN1VVRkRaQ3hKUVVGSkxGTkJRVk1zU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZEY2tJc1dVRkJRU3hQUVVGUExGTkJRVk1zUTBGQlF6dEJRVU5zUWl4VFFVRkJPMEZCUlVRc1VVRkJRU3hOUVVGTkxGZEJRVmNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNWMEZCVnl4RFFVRkRPMEZCUXpGRExGRkJRVUVzU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExFZEJRVWNzUTBGQlF5eFhRVUZYTEVOQlFVTXNSVUZCUlR0WlFVTTFReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVU5XTEVOQlFYTkRMRzFEUVVGQkxFVkJRVUVzZVVKQlFYbENMRU5CUVVNc1kwRkJZeXhEUVVGcFFpeGpRVUZCTEVWQlFVRXNWMEZCVnl4RFFVRkhMRU5CUVVFc1EwRkJRU3hEUVVNNVJ5eERRVUZETzBGQlEwWXNXVUZCUVN4UFFVRlBMRk5CUVZNc1EwRkJRenRCUVVOc1FpeFRRVUZCTzBGQlJVUXNVVUZCUVN4UFFVRlBMRk5CUVZNc1EwRkJRenRMUVVOc1FqdEpRVVZoTEhGQ1FVRnhRaXhEUVVOcVF5eFRRVUV5UXl4RlFVTXpReXhqUVVGMVF5eEZRVUZCT3pzN08xbEJSM1pETEU5QlFWRXNZMEZCZFVRc1EwRkJReXhUUVVGVExFTkJRVU03V1VGRE1VVXNUMEZCVVN4alFVRjFSQ3hEUVVGRExGTkJRVk1zUTBGQlF6dFpRVVV4UlN4TlFVRk5MRmxCUVZrc1IwRkJSeXhKUVVGSkxHMURRVUZ0UXl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzWTBGQll5eERRVUZETEVOQlFVTTdXVUZGTVVZc1dVRkJXU3hEUVVGRExHVkJRV1VzUTBGQlF5eDFRa0ZCZFVJc1JVRkJSU3hUUVVGVExFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1EwRkJRenRaUVVOMlJpeFpRVUZaTEVOQlFVTXNWMEZCVnl4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEZOQlFWTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETzFsQlEzcEZMRmxCUVZrc1EwRkJReXhoUVVGaExFTkJRVU1zYzBKQlFYTkNMRVZCUVVVc1UwRkJVeXhEUVVGRExHOUNRVUZ2UWl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRM3BHTEZsQlFWa3NRMEZCUXl4bFFVRmxMRU5CUVVNc2IwSkJRVzlDTEVWQlFVVXNVMEZCVXl4RFFVRkRMR3RDUVVGclFpeERRVUZETEVOQlFVTTdXVUZEYWtZc1dVRkJXU3hEUVVGRExHRkJRV0VzUTBGQlF5eHhRa0ZCY1VJc1JVRkJSU3hUUVVGVExFTkJRVU1zYlVKQlFXMUNMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRGRrWXNXVUZCUVN4WlFVRlpMRU5CUVVNc1pVRkJaU3hEUVVGRExEQkNRVUV3UWl4RlFVRkZMRU5CUVVFc1JVRkJRU3hIUVVGQkxGTkJRVk1zUTBGQlF5eHRRa0ZCYlVJc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTXZSaXhaUVVGWkxFTkJRVU1zWlVGQlpTeERRVUZETEc5Q1FVRnZRaXhGUVVGRkxGTkJRVk1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8xbEJRMnBHTEZsQlFWa3NRMEZCUXl4bFFVRmxMRU5CUVVNc2MwSkJRWE5DTEVWQlFVVXNVMEZCVXl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEVOQlFVTTdXVUZEY2tZc1dVRkJXU3hEUVVGRExGZEJRVmNzUTBGQlF5eGpRVUZqTEVWQlFVVXNVMEZCVXl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xbEJRMnBGTEZsQlFWa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1pVRkJaU3hGUVVGRkxGTkJRVk1zUTBGQlF5eGhRVUZoTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkRNMFVzV1VGQldTeERRVUZETEZkQlFWY3NRMEZCUXl3d1FrRkJNRUlzUlVGQlJTeFRRVUZUTEVOQlFVTXNkMEpCUVhkQ0xFTkJRVU1zUTBGQlF6dFpRVU42Uml4WlFVRlpMRU5CUVVNc1lVRkJZU3hEUVVGRExHOUNRVUZ2UWl4RlFVRkZMRk5CUVZNc1EwRkJReXhyUWtGQmEwSXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVOeVJpeFpRVUZaTEVOQlFVTXNaVUZCWlN4RFFVRkRMSE5DUVVGelFpeEZRVUZGTEZOQlFWTXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eERRVUZETzFsQlEzSkdMRmxCUVZrc1EwRkJReXhsUVVGbExFTkJRVU1zYVVOQlFXbERMRVZCUVVVc1UwRkJVeXhEUVVGRExDdENRVUVyUWl4RFFVRkRMRU5CUVVNN1dVRkRNMGNzV1VGQldTeERRVUZETEdWQlFXVXNRMEZCUXl4NVFrRkJlVUlzUlVGQlJTeFRRVUZUTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF6dFpRVU16Uml4WlFVRlpMRU5CUVVNc1pVRkJaU3hEUVVGRExHdENRVUZyUWl4RlFVRkZMRk5CUVZNc1EwRkJReXhuUWtGQmFVUXNRMEZCUXl4RFFVRkRPMWxCUXpsSExGbEJRVmtzUTBGQlF5eGxRVUZsTEVOQlFVTXNiMEpCUVc5Q0xFVkJRVVVzVTBGQlV5eERRVUZETEd0Q1FVRnJRaXhEUVVGRExFTkJRVU03V1VGRGFrWXNXVUZCV1N4RFFVRkRMR0ZCUVdFc1EwRkJReXcyUWtGQk5rSXNSVUZCUlN4VFFVRlRMRU5CUVVNc01rSkJRVEpDTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1dVRkRlRWNzV1VGQldTeERRVUZETEZkQlFWY3NRMEZCUXl4dlFrRkJiMElzUlVGQlJTeFRRVUZUTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFpRVU0zUlN4WlFVRlpMRU5CUVVNc1pVRkJaU3hEUVVGRExEQkNRVUV3UWl4RlFVRkZMRk5CUVZNc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4RFFVRkRPMWxCUXpkR0xGbEJRVmtzUTBGQlF5eGhRVUZoTEVOQlFVTXNkMEpCUVhkQ0xFVkJRVVVzVTBGQlV5eERRVUZETEhOQ1FVRnpRaXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFsQlF6bEdMRmxCUVZrc1EwRkJReXhsUVVGbExFTkJRVU1zSzBKQlFTdENMRVZCUVVVc1UwRkJVeXhEUVVGRExEWkNRVUUyUWl4RFFVRkRMRU5CUVVNN1dVRkRka2NzV1VGQldTeERRVUZETEdWQlFXVXNRMEZCUXl3clFrRkJLMElzUlVGQlJTeFRRVUZUTEVOQlFVTXNOa0pCUVRaQ0xFTkJRVU1zUTBGQlF6dFpRVU4yUnl4WlFVRlpMRU5CUVVNc1pVRkJaU3hEUVVGRExHZERRVUZuUXl4RlFVRkZMRk5CUVZNc1EwRkJReXc0UWtGQk9FSXNRMEZCUXl4RFFVRkRPMWxCUlhwSExGbEJRVmtzUTBGQlF5eGxRVUZsTEVOQlFVTXNaVUZCWlN4RlFVRkZMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dFpRVU5zUlN4WlFVRlpMRU5CUVVNc1pVRkJaU3hEUVVGRExGZEJRVmNzUlVGQlJTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1dVRkZNVVFzVFVGQlRTeFpRVUZaTEVOQlFVTXNUMEZCVHl4RFFVRkRPenRCUVVNMVFpeExRVUZCTzBGQlJVUTdPenM3T3pzN08wRkJVVWM3U1VGRFN5eGxRVUZsTEVOQlFVTXNTVUZCWjBJc1JVRkJSU3hoUVVGeFFpeEZRVUZCTzFGQlF6ZEVMRTFCUVUwc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dEJRVU42UkN4UlFVRkJMRWxCUVVrc1UwRkJVeXhGUVVGRk8xbEJRMklzVFVGQlRTeFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMWxCUTNSRUxFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXp0QlFVVjRSQ3haUVVGQkxFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVVUxUWl4WlFVRkJMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVVM1FpeFBRVUZQTzBGQlExSXNVMEZCUVR0TFFVTkdPMEZCUlVRN096czdRVUZKUnp0QlFVTkxMRWxCUVVFc1owSkJRV2RDTEVOQlFVTXNTVUZCWjBJc1JVRkJRVHM3T3pzN08wRkJUM1pETEZGQlFVRXNUVUZCVFN4bFFVRmxMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF6dEJRVU4wUXl4UlFVRkJMRWxCUVVrc1JVRkJSU3hsUVVGbExGbEJRVmtzWVVGQllTeERRVUZETEVWQlFVVTdXVUZETDBNc1QwRkJUenRCUVVOU0xGTkJRVUU3TzFGQlIwUXNTVUZCU1N4bFFVRmxMRU5CUVVNc1owSkJRV2RDTEV0QlFVc3NUVUZCVFN4SlFVRkpMR1ZCUVdVc1EwRkJReXhyUWtGQmEwSXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkROVVlzVDBGQlR6dEJRVU5TTEZOQlFVRTdPMUZCUjBRc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRPenRCUVVkc1F5eFJRVUZCTEUxQlFVMHNaVUZCWlN4SFFVRkhMR1ZCUVdVc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dEJRVU5vUkN4UlFVRkJMR1ZCUVdVc1EwRkJReXhKUVVGSkxFbEJRVWtzV1VGQldTeERRVUZETzBGQlEzSkRMRkZCUVVFc1pVRkJaU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZEYWtNc1VVRkJRU3hsUVVGbExFTkJRVU1zU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNN1FVRkRkRU1zVVVGQlFTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF6czdRVUZIY0VNc1VVRkJRU3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRPMUZCUXk5Q0xFMUJRVTBzYVVKQlFXbENMRWRCUVVjc1VVRkJVU3hEUVVGRExFdEJRVXNzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1IwRkJSeXhSUVVGUkxFTkJRVU1zVlVGQlZTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM3BITEZGQlFWRXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhGUVVGRkxHbENRVUZwUWl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRek5ETEZGQlFWRXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhGUVVGRkxHbENRVUZwUWl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRelZETzBGQlJVOHNTVUZCUVN4cFFrRkJhVUlzUTBGQlF5eEpRVUZuUWl4RlFVRkJPMEZCUTNoRExGRkJRVUVzVFVGQlRTeHRRa0ZCYlVJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETzBGQlF6RkRMRkZCUVVFc1RVRkJUU3hYUVVGWExFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFXdENMRU5CUVVNN1FVRkZPVU1zVVVGQlFTeEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNSVUZCUlR0QlFVTjBReXhaUVVGQkxHMUNRVUZ0UWl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExGRkJRVkVzUzBGQlN5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGRFVXNVMEZCUVR0QlFVRk5MR0ZCUVVFN1FVRkRUQ3haUVVGQkxGZEJRVmNzUTBGQlF5eEhRVUZITEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUTBGQlF6dEJRVU4wUXl4VFFVRkJPMEZCUlVRc1VVRkJRU3hMUVVGTExFMUJRVTBzVVVGQlVTeEpRVUZKTEZkQlFWY3NSVUZCUlR0WlFVTnNReXhKUVVGSkxGRkJRVkVzV1VGQldTeGhRVUZoTEVWQlFVVTdRVUZEY2tNc1owSkJRVUVzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0QlFVTjBReXhoUVVGQk8wRkJRMFlzVTBGQlFUdExRVU5HTzBGQlJVOHNTVUZCUVN4cFFrRkJhVUlzUTBGQlF5eFRRVUV5UXl4RlFVRkJPenM3TzBGQlIyNUZMRkZCUVVFc1RVRkJUU3hoUVVGaExFZEJRVWNzVTBGQlV5eERRVUZETEhGQ1FVRnhRaXhEUVVGRE8xRkJRM1JFTEU5QlFVOHNRMEZCUXl4aFFVRmhMRWRCUVVjc1EwRkJReXhIUVVGSExFVkJRVVVzUzBGQlN5eE5RVUZCTEZOQlFWTXNRMEZCUXl4MVFrRkJkVUlzVFVGQlNTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUjBGQlFTeERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTTFSVHM3UVVFdlVtRXNlVUpCUVdNc1EwRkJRU3hqUVVGQkxFZEJRVWNzYzBKQlFYTkNPenM3T3lKOVxuIiwiLyohXG4gKiBAcGl4aXYvdGhyZWUtdnJtLW1hdGVyaWFscy1oZHItZW1pc3NpdmUtbXVsdGlwbGllciB2Mi4wLjZcbiAqIFN1cHBvcnQgVlJNQ19oZHJfZW1pc3NpdmVNdWx0aXBsaWVyIGZvciBAcGl4aXYvdGhyZWUtdnJtXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjMgcGl4aXYgSW5jLlxuICogQHBpeGl2L3RocmVlLXZybS1tYXRlcmlhbHMtaGRyLWVtaXNzaXZlLW11bHRpcGxpZXIgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgTUlUIExpY2Vuc2VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9waXhpdi90aHJlZS12cm0vYmxvYi9yZWxlYXNlL0xJQ0VOU0VcbiAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcblxyXG5mdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XG5cbmNsYXNzIFZSTU1hdGVyaWFsc0hEUkVtaXNzaXZlTXVsdGlwbGllckxvYWRlclBsdWdpbiB7XG4gICAgZ2V0IG5hbWUoKSB7XG4gICAgICAgIHJldHVybiBWUk1NYXRlcmlhbHNIRFJFbWlzc2l2ZU11bHRpcGxpZXJMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUU7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhcnNlcikge1xuICAgICAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICB9XG4gICAgZXh0ZW5kTWF0ZXJpYWxQYXJhbXMobWF0ZXJpYWxJbmRleCwgbWF0ZXJpYWxQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IHRoaXMuX2dldEhEUkVtaXNzaXZlTXVsdGlwbGllckV4dGVuc2lvbihtYXRlcmlhbEluZGV4KTtcbiAgICAgICAgICAgIGlmIChleHRlbnNpb24gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRoaXMgZXh0ZW5zaW9uIGlzIGFyY2hpdmVkLiBFbWl0IHdhcm5pbmdcbiAgICAgICAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3ZybS1jL3ZybS1zcGVjaWZpY2F0aW9uL3B1bGwvMzc1XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTU1hdGVyaWFsc0hEUkVtaXNzaXZlTXVsdGlwbGllckxvYWRlclBsdWdpbjogYFZSTUNfbWF0ZXJpYWxzX2hkcl9lbWlzc2l2ZU11bHRpcGxpZXJgIGlzIGFyY2hpdmVkLiBVc2UgYEtIUl9tYXRlcmlhbHNfZW1pc3NpdmVfc3RyZW5ndGhgIGluc3RlYWQuJyk7XG4gICAgICAgICAgICBjb25zdCBlbWlzc2l2ZU11bHRpcGxpZXIgPSBleHRlbnNpb24uZW1pc3NpdmVNdWx0aXBsaWVyO1xuICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMuZW1pc3NpdmVJbnRlbnNpdHkgPSBlbWlzc2l2ZU11bHRpcGxpZXI7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfZ2V0SERSRW1pc3NpdmVNdWx0aXBsaWVyRXh0ZW5zaW9uKG1hdGVyaWFsSW5kZXgpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5wYXJzZXI7XG4gICAgICAgIGNvbnN0IGpzb24gPSBwYXJzZXIuanNvbjtcbiAgICAgICAgY29uc3QgbWF0ZXJpYWxEZWYgPSAoX2EgPSBqc29uLm1hdGVyaWFscykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW21hdGVyaWFsSW5kZXhdO1xuICAgICAgICBpZiAobWF0ZXJpYWxEZWYgPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBWUk1NYXRlcmlhbHNIRFJFbWlzc2l2ZU11bHRpcGxpZXJMb2FkZXJQbHVnaW46IEF0dGVtcHQgdG8gdXNlIG1hdGVyaWFsc1ske21hdGVyaWFsSW5kZXh9XSBvZiBnbFRGIGJ1dCB0aGUgbWF0ZXJpYWwgZG9lc24ndCBleGlzdGApO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleHRlbnNpb24gPSAoX2IgPSBtYXRlcmlhbERlZi5leHRlbnNpb25zKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2JbVlJNTWF0ZXJpYWxzSERSRW1pc3NpdmVNdWx0aXBsaWVyTG9hZGVyUGx1Z2luLkVYVEVOU0lPTl9OQU1FXTtcbiAgICAgICAgaWYgKGV4dGVuc2lvbiA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBleHRlbnNpb247XG4gICAgfVxufVxuVlJNTWF0ZXJpYWxzSERSRW1pc3NpdmVNdWx0aXBsaWVyTG9hZGVyUGx1Z2luLkVYVEVOU0lPTl9OQU1FID0gJ1ZSTUNfbWF0ZXJpYWxzX2hkcl9lbWlzc2l2ZU11bHRpcGxpZXInO1xuXG5leHBvcnQgeyBWUk1NYXRlcmlhbHNIRFJFbWlzc2l2ZU11bHRpcGxpZXJMb2FkZXJQbHVnaW4gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEdoeVpXVXRkbkp0TFcxaGRHVnlhV0ZzY3kxb1pISXRaVzFwYzNOcGRtVXRiWFZzZEdsd2JHbGxjaTV0YjJSMWJHVXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyNXZaR1ZmYlc5a2RXeGxjeTkwYzJ4cFlpOTBjMnhwWWk1bGN6WXVhbk1pTENJdUxpOXpjbU12VmxKTlRXRjBaWEpwWVd4elNFUlNSVzFwYzNOcGRtVk5kV3gwYVhCc2FXVnlURzloWkdWeVVHeDFaMmx1TG5SeklsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpcGNjbHh1UTI5d2VYSnBaMmgwSUNoaktTQk5hV055YjNOdlpuUWdRMjl5Y0c5eVlYUnBiMjR1WEhKY2JseHlYRzVRWlhKdGFYTnphVzl1SUhSdklIVnpaU3dnWTI5d2VTd2diVzlrYVdaNUxDQmhibVF2YjNJZ1pHbHpkSEpwWW5WMFpTQjBhR2x6SUhOdlpuUjNZWEpsSUdadmNpQmhibmxjY2x4dWNIVnljRzl6WlNCM2FYUm9JRzl5SUhkcGRHaHZkWFFnWm1WbElHbHpJR2hsY21WaWVTQm5jbUZ1ZEdWa0xseHlYRzVjY2x4dVZFaEZJRk5QUmxSWFFWSkZJRWxUSUZCU1QxWkpSRVZFSUZ3aVFWTWdTVk5jSWlCQlRrUWdWRWhGSUVGVlZFaFBVaUJFU1ZORFRFRkpUVk1nUVV4TUlGZEJVbEpCVGxSSlJWTWdWMGxVU0Z4eVhHNVNSVWRCVWtRZ1ZFOGdWRWhKVXlCVFQwWlVWMEZTUlNCSlRrTk1WVVJKVGtjZ1FVeE1JRWxOVUV4SlJVUWdWMEZTVWtGT1ZFbEZVeUJQUmlCTlJWSkRTRUZPVkVGQ1NVeEpWRmxjY2x4dVFVNUVJRVpKVkU1RlUxTXVJRWxPSUU1UElFVldSVTVVSUZOSVFVeE1JRlJJUlNCQlZWUklUMUlnUWtVZ1RFbEJRa3hGSUVaUFVpQkJUbGtnVTFCRlEwbEJUQ3dnUkVsU1JVTlVMRnh5WEc1SlRrUkpVa1ZEVkN3Z1QxSWdRMDlPVTBWUlZVVk9WRWxCVENCRVFVMUJSMFZUSUU5U0lFRk9XU0JFUVUxQlIwVlRJRmRJUVZSVFQwVldSVklnVWtWVFZVeFVTVTVISUVaU1QwMWNjbHh1VEU5VFV5QlBSaUJWVTBVc0lFUkJWRUVnVDFJZ1VGSlBSa2xVVXl3Z1YwaEZWRWhGVWlCSlRpQkJUaUJCUTFSSlQwNGdUMFlnUTA5T1ZGSkJRMVFzSUU1RlIweEpSMFZPUTBVZ1QxSmNjbHh1VDFSSVJWSWdWRTlTVkVsUFZWTWdRVU5VU1U5T0xDQkJVa2xUU1U1SElFOVZWQ0JQUmlCUFVpQkpUaUJEVDA1T1JVTlVTVTlPSUZkSlZFZ2dWRWhGSUZWVFJTQlBVbHh5WEc1UVJWSkdUMUpOUVU1RFJTQlBSaUJVU0VsVElGTlBSbFJYUVZKRkxseHlYRzRxS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpQXFMMXh5WEc0dktpQm5iRzlpWVd3Z1VtVm1iR1ZqZEN3Z1VISnZiV2x6WlNBcUwxeHlYRzVjY2x4dWRtRnlJR1Y0ZEdWdVpGTjBZWFJwWTNNZ1BTQm1kVzVqZEdsdmJpaGtMQ0JpS1NCN1hISmNiaUFnSUNCbGVIUmxibVJUZEdGMGFXTnpJRDBnVDJKcVpXTjBMbk5sZEZCeWIzUnZkSGx3WlU5bUlIeDhYSEpjYmlBZ0lDQWdJQ0FnS0hzZ1gxOXdjbTkwYjE5Zk9pQmJYU0I5SUdsdWMzUmhibU5sYjJZZ1FYSnlZWGtnSmlZZ1puVnVZM1JwYjI0Z0tHUXNJR0lwSUhzZ1pDNWZYM0J5YjNSdlgxOGdQU0JpT3lCOUtTQjhmRnh5WEc0Z0lDQWdJQ0FnSUdaMWJtTjBhVzl1SUNoa0xDQmlLU0I3SUdadmNpQW9kbUZ5SUhBZ2FXNGdZaWtnYVdZZ0tFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVdWFHRnpUM2R1VUhKdmNHVnlkSGt1WTJGc2JDaGlMQ0J3S1NrZ1pGdHdYU0E5SUdKYmNGMDdJSDA3WEhKY2JpQWdJQ0J5WlhSMWNtNGdaWGgwWlc1a1UzUmhkR2xqY3loa0xDQmlLVHRjY2x4dWZUdGNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyVjRkR1Z1WkhNb1pDd2dZaWtnZTF4eVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCaUlDRTlQU0JjSW1aMWJtTjBhVzl1WENJZ0ppWWdZaUFoUFQwZ2JuVnNiQ2xjY2x4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lRMnhoYzNNZ1pYaDBaVzVrY3lCMllXeDFaU0JjSWlBcklGTjBjbWx1WnloaUtTQXJJRndpSUdseklHNXZkQ0JoSUdOdmJuTjBjblZqZEc5eUlHOXlJRzUxYkd4Y0lpazdYSEpjYmlBZ0lDQmxlSFJsYm1SVGRHRjBhV056S0dRc0lHSXBPMXh5WEc0Z0lDQWdablZ1WTNScGIyNGdYMThvS1NCN0lIUm9hWE11WTI5dWMzUnlkV04wYjNJZ1BTQmtPeUI5WEhKY2JpQWdJQ0JrTG5CeWIzUnZkSGx3WlNBOUlHSWdQVDA5SUc1MWJHd2dQeUJQWW1wbFkzUXVZM0psWVhSbEtHSXBJRG9nS0Y5ZkxuQnliM1J2ZEhsd1pTQTlJR0l1Y0hKdmRHOTBlWEJsTENCdVpYY2dYMThvS1NrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQjJZWElnWDE5aGMzTnBaMjRnUFNCbWRXNWpkR2x2YmlncElIdGNjbHh1SUNBZ0lGOWZZWE56YVdkdUlEMGdUMkpxWldOMExtRnpjMmxuYmlCOGZDQm1kVzVqZEdsdmJpQmZYMkZ6YzJsbmJpaDBLU0I3WEhKY2JpQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2N5d2dhU0E5SURFc0lHNGdQU0JoY21kMWJXVnVkSE11YkdWdVozUm9PeUJwSUR3Z2Jqc2dhU3NyS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhNZ1BTQmhjbWQxYldWdWRITmJhVjA3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJSEFnYVc0Z2N5a2dhV1lnS0U5aWFtVmpkQzV3Y205MGIzUjVjR1V1YUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNoekxDQndLU2tnZEZ0d1hTQTlJSE5iY0YwN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwTzF4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJRjlmWVhOemFXZHVMbUZ3Y0d4NUtIUm9hWE1zSUdGeVozVnRaVzUwY3lrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM0psYzNRb2N5d2daU2tnZTF4eVhHNGdJQ0FnZG1GeUlIUWdQU0I3ZlR0Y2NseHVJQ0FnSUdadmNpQW9kbUZ5SUhBZ2FXNGdjeWtnYVdZZ0tFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVdWFHRnpUM2R1VUhKdmNHVnlkSGt1WTJGc2JDaHpMQ0J3S1NBbUppQmxMbWx1WkdWNFQyWW9jQ2tnUENBd0tWeHlYRzRnSUNBZ0lDQWdJSFJiY0YwZ1BTQnpXM0JkTzF4eVhHNGdJQ0FnYVdZZ0tITWdJVDBnYm5Wc2JDQW1KaUIwZVhCbGIyWWdUMkpxWldOMExtZGxkRTkzYmxCeWIzQmxjblI1VTNsdFltOXNjeUE5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLVnh5WEc0Z0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdMQ0J3SUQwZ1QySnFaV04wTG1kbGRFOTNibEJ5YjNCbGNuUjVVM2x0WW05c2N5aHpLVHNnYVNBOElIQXViR1Z1WjNSb095QnBLeXNwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHVXVhVzVrWlhoUFppaHdXMmxkS1NBOElEQWdKaVlnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzV3Y205d1pYSjBlVWx6Ulc1MWJXVnlZV0pzWlM1allXeHNLSE1zSUhCYmFWMHBLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEZ0d1cybGRYU0E5SUhOYmNGdHBYVjA3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2NtVjBkWEp1SUhRN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMlJsWTI5eVlYUmxLR1JsWTI5eVlYUnZjbk1zSUhSaGNtZGxkQ3dnYTJWNUxDQmtaWE5qS1NCN1hISmNiaUFnSUNCMllYSWdZeUE5SUdGeVozVnRaVzUwY3k1c1pXNW5kR2dzSUhJZ1BTQmpJRHdnTXlBL0lIUmhjbWRsZENBNklHUmxjMk1nUFQwOUlHNTFiR3dnUHlCa1pYTmpJRDBnVDJKcVpXTjBMbWRsZEU5M2JsQnliM0JsY25SNVJHVnpZM0pwY0hSdmNpaDBZWEpuWlhRc0lHdGxlU2tnT2lCa1pYTmpMQ0JrTzF4eVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCU1pXWnNaV04wSUQwOVBTQmNJbTlpYW1WamRGd2lJQ1ltSUhSNWNHVnZaaUJTWldac1pXTjBMbVJsWTI5eVlYUmxJRDA5UFNCY0ltWjFibU4wYVc5dVhDSXBJSElnUFNCU1pXWnNaV04wTG1SbFkyOXlZWFJsS0dSbFkyOXlZWFJ2Y25Nc0lIUmhjbWRsZEN3Z2EyVjVMQ0JrWlhOaktUdGNjbHh1SUNBZ0lHVnNjMlVnWm05eUlDaDJZWElnYVNBOUlHUmxZMjl5WVhSdmNuTXViR1Z1WjNSb0lDMGdNVHNnYVNBK1BTQXdPeUJwTFMwcElHbG1JQ2hrSUQwZ1pHVmpiM0poZEc5eWMxdHBYU2tnY2lBOUlDaGpJRHdnTXlBL0lHUW9jaWtnT2lCaklENGdNeUEvSUdRb2RHRnlaMlYwTENCclpYa3NJSElwSURvZ1pDaDBZWEpuWlhRc0lHdGxlU2twSUh4OElISTdYSEpjYmlBZ0lDQnlaWFIxY200Z1l5QStJRE1nSmlZZ2NpQW1KaUJQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb2RHRnlaMlYwTENCclpYa3NJSElwTENCeU8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl3WVhKaGJTaHdZWEpoYlVsdVpHVjRMQ0JrWldOdmNtRjBiM0lwSUh0Y2NseHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaUFvZEdGeVoyVjBMQ0JyWlhrcElIc2daR1ZqYjNKaGRHOXlLSFJoY21kbGRDd2dhMlY1TENCd1lYSmhiVWx1WkdWNEtUc2dmVnh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5bGMwUmxZMjl5WVhSbEtHTjBiM0lzSUdSbGMyTnlhWEIwYjNKSmJpd2daR1ZqYjNKaGRHOXljeXdnWTI5dWRHVjRkRWx1TENCcGJtbDBhV0ZzYVhwbGNuTXNJR1Y0ZEhKaFNXNXBkR2xoYkdsNlpYSnpLU0I3WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJoWTJObGNIUW9aaWtnZXlCcFppQW9aaUFoUFQwZ2RtOXBaQ0F3SUNZbUlIUjVjR1Z2WmlCbUlDRTlQU0JjSW1aMWJtTjBhVzl1WENJcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pHZFc1amRHbHZiaUJsZUhCbFkzUmxaRndpS1RzZ2NtVjBkWEp1SUdZN0lIMWNjbHh1SUNBZ0lIWmhjaUJyYVc1a0lEMGdZMjl1ZEdWNGRFbHVMbXRwYm1Rc0lHdGxlU0E5SUd0cGJtUWdQVDA5SUZ3aVoyVjBkR1Z5WENJZ1B5QmNJbWRsZEZ3aUlEb2dhMmx1WkNBOVBUMGdYQ0p6WlhSMFpYSmNJaUEvSUZ3aWMyVjBYQ0lnT2lCY0luWmhiSFZsWENJN1hISmNiaUFnSUNCMllYSWdkR0Z5WjJWMElEMGdJV1JsYzJOeWFYQjBiM0pKYmlBbUppQmpkRzl5SUQ4Z1kyOXVkR1Y0ZEVsdVcxd2ljM1JoZEdsalhDSmRJRDhnWTNSdmNpQTZJR04wYjNJdWNISnZkRzkwZVhCbElEb2diblZzYkR0Y2NseHVJQ0FnSUhaaGNpQmtaWE5qY21sd2RHOXlJRDBnWkdWelkzSnBjSFJ2Y2tsdUlIeDhJQ2gwWVhKblpYUWdQeUJQWW1wbFkzUXVaMlYwVDNkdVVISnZjR1Z5ZEhsRVpYTmpjbWx3ZEc5eUtIUmhjbWRsZEN3Z1kyOXVkR1Y0ZEVsdUxtNWhiV1VwSURvZ2UzMHBPMXh5WEc0Z0lDQWdkbUZ5SUY4c0lHUnZibVVnUFNCbVlXeHpaVHRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNCa1pXTnZjbUYwYjNKekxteGxibWQwYUNBdElERTdJR2tnUGowZ01Ec2dhUzB0S1NCN1hISmNiaUFnSUNBZ0lDQWdkbUZ5SUdOdmJuUmxlSFFnUFNCN2ZUdGNjbHh1SUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJ3SUdsdUlHTnZiblJsZUhSSmJpa2dZMjl1ZEdWNGRGdHdYU0E5SUhBZ1BUMDlJRndpWVdOalpYTnpYQ0lnUHlCN2ZTQTZJR052Ym5SbGVIUkpibHR3WFR0Y2NseHVJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQndJR2x1SUdOdmJuUmxlSFJKYmk1aFkyTmxjM01wSUdOdmJuUmxlSFF1WVdOalpYTnpXM0JkSUQwZ1kyOXVkR1Y0ZEVsdUxtRmpZMlZ6YzF0d1hUdGNjbHh1SUNBZ0lDQWdJQ0JqYjI1MFpYaDBMbUZrWkVsdWFYUnBZV3hwZW1WeUlEMGdablZ1WTNScGIyNGdLR1lwSUhzZ2FXWWdLR1J2Ym1VcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pEWVc1dWIzUWdZV1JrSUdsdWFYUnBZV3hwZW1WeWN5QmhablJsY2lCa1pXTnZjbUYwYVc5dUlHaGhjeUJqYjIxd2JHVjBaV1JjSWlrN0lHVjRkSEpoU1c1cGRHbGhiR2w2WlhKekxuQjFjMmdvWVdOalpYQjBLR1lnZkh3Z2JuVnNiQ2twT3lCOU8xeHlYRzRnSUNBZ0lDQWdJSFpoY2lCeVpYTjFiSFFnUFNBb01Dd2daR1ZqYjNKaGRHOXljMXRwWFNrb2EybHVaQ0E5UFQwZ1hDSmhZMk5sYzNOdmNsd2lJRDhnZXlCblpYUTZJR1JsYzJOeWFYQjBiM0l1WjJWMExDQnpaWFE2SUdSbGMyTnlhWEIwYjNJdWMyVjBJSDBnT2lCa1pYTmpjbWx3ZEc5eVcydGxlVjBzSUdOdmJuUmxlSFFwTzF4eVhHNGdJQ0FnSUNBZ0lHbG1JQ2hyYVc1a0lEMDlQU0JjSW1GalkyVnpjMjl5WENJcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSEpsYzNWc2RDQTlQVDBnZG05cFpDQXdLU0JqYjI1MGFXNTFaVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hKbGMzVnNkQ0E5UFQwZ2JuVnNiQ0I4ZkNCMGVYQmxiMllnY21WemRXeDBJQ0U5UFNCY0ltOWlhbVZqZEZ3aUtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpVDJKcVpXTjBJR1Y0Y0dWamRHVmtYQ0lwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1h5QTlJR0ZqWTJWd2RDaHlaWE4xYkhRdVoyVjBLU2tnWkdWelkzSnBjSFJ2Y2k1blpYUWdQU0JmTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1h5QTlJR0ZqWTJWd2RDaHlaWE4xYkhRdWMyVjBLU2tnWkdWelkzSnBjSFJ2Y2k1elpYUWdQU0JmTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1h5QTlJR0ZqWTJWd2RDaHlaWE4xYkhRdWFXNXBkQ2twSUdsdWFYUnBZV3hwZW1WeWN5NXdkWE5vS0Y4cE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoZklEMGdZV05qWlhCMEtISmxjM1ZzZENrcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR3RwYm1RZ1BUMDlJRndpWm1sbGJHUmNJaWtnYVc1cGRHbGhiR2w2WlhKekxuQjFjMmdvWHlrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdWc2MyVWdaR1Z6WTNKcGNIUnZjbHRyWlhsZElEMGdYenRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnSUNCcFppQW9kR0Z5WjJWMEtTQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvZEdGeVoyVjBMQ0JqYjI1MFpYaDBTVzR1Ym1GdFpTd2daR1Z6WTNKcGNIUnZjaWs3WEhKY2JpQWdJQ0JrYjI1bElEMGdkSEoxWlR0Y2NseHVmVHRjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM0oxYmtsdWFYUnBZV3hwZW1WeWN5aDBhR2x6UVhKbkxDQnBibWwwYVdGc2FYcGxjbk1zSUhaaGJIVmxLU0I3WEhKY2JpQWdJQ0IyWVhJZ2RYTmxWbUZzZFdVZ1BTQmhjbWQxYldWdWRITXViR1Z1WjNSb0lENGdNanRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnYVc1cGRHbGhiR2w2WlhKekxteGxibWQwYURzZ2FTc3JLU0I3WEhKY2JpQWdJQ0FnSUNBZ2RtRnNkV1VnUFNCMWMyVldZV3gxWlNBL0lHbHVhWFJwWVd4cGVtVnljMXRwWFM1allXeHNLSFJvYVhOQmNtY3NJSFpoYkhWbEtTQTZJR2x1YVhScFlXeHBlbVZ5YzF0cFhTNWpZV3hzS0hSb2FYTkJjbWNwTzF4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJSFZ6WlZaaGJIVmxJRDhnZG1Gc2RXVWdPaUIyYjJsa0lEQTdYSEpjYm4wN1hISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5d2NtOXdTMlY1S0hncElIdGNjbHh1SUNBZ0lISmxkSFZ5YmlCMGVYQmxiMllnZUNBOVBUMGdYQ0p6ZVcxaWIyeGNJaUEvSUhnZ09pQmNJbHdpTG1OdmJtTmhkQ2g0S1R0Y2NseHVmVHRjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM05sZEVaMWJtTjBhVzl1VG1GdFpTaG1MQ0J1WVcxbExDQndjbVZtYVhncElIdGNjbHh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdibUZ0WlNBOVBUMGdYQ0p6ZVcxaWIyeGNJaWtnYm1GdFpTQTlJRzVoYldVdVpHVnpZM0pwY0hScGIyNGdQeUJjSWx0Y0lpNWpiMjVqWVhRb2JtRnRaUzVrWlhOamNtbHdkR2x2Yml3Z1hDSmRYQ0lwSURvZ1hDSmNJanRjY2x4dUlDQWdJSEpsZEhWeWJpQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvWml3Z1hDSnVZVzFsWENJc0lIc2dZMjl1Wm1sbmRYSmhZbXhsT2lCMGNuVmxMQ0IyWVd4MVpUb2djSEpsWm1sNElEOGdYQ0pjSWk1amIyNWpZWFFvY0hKbFptbDRMQ0JjSWlCY0lpd2dibUZ0WlNrZ09pQnVZVzFsSUgwcE8xeHlYRzU5TzF4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmYldWMFlXUmhkR0VvYldWMFlXUmhkR0ZMWlhrc0lHMWxkR0ZrWVhSaFZtRnNkV1VwSUh0Y2NseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ1VtVm1iR1ZqZENBOVBUMGdYQ0p2WW1wbFkzUmNJaUFtSmlCMGVYQmxiMllnVW1WbWJHVmpkQzV0WlhSaFpHRjBZU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0J5WlhSMWNtNGdVbVZtYkdWamRDNXRaWFJoWkdGMFlTaHRaWFJoWkdGMFlVdGxlU3dnYldWMFlXUmhkR0ZXWVd4MVpTazdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJGM1lXbDBaWElvZEdocGMwRnlaeXdnWDJGeVozVnRaVzUwY3l3Z1VDd2daMlZ1WlhKaGRHOXlLU0I3WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJoWkc5d2RDaDJZV3gxWlNrZ2V5QnlaWFIxY200Z2RtRnNkV1VnYVc1emRHRnVZMlZ2WmlCUUlEOGdkbUZzZFdVZ09pQnVaWGNnVUNobWRXNWpkR2x2YmlBb2NtVnpiMngyWlNrZ2V5QnlaWE52YkhabEtIWmhiSFZsS1RzZ2ZTazdJSDFjY2x4dUlDQWdJSEpsZEhWeWJpQnVaWGNnS0ZBZ2ZId2dLRkFnUFNCUWNtOXRhWE5sS1Nrb1puVnVZM1JwYjI0Z0tISmxjMjlzZG1Vc0lISmxhbVZqZENrZ2UxeHlYRzRnSUNBZ0lDQWdJR1oxYm1OMGFXOXVJR1oxYkdacGJHeGxaQ2gyWVd4MVpTa2dleUIwY25rZ2V5QnpkR1Z3S0dkbGJtVnlZWFJ2Y2k1dVpYaDBLSFpoYkhWbEtTazdJSDBnWTJGMFkyZ2dLR1VwSUhzZ2NtVnFaV04wS0dVcE95QjlJSDFjY2x4dUlDQWdJQ0FnSUNCbWRXNWpkR2x2YmlCeVpXcGxZM1JsWkNoMllXeDFaU2tnZXlCMGNua2dleUJ6ZEdWd0tHZGxibVZ5WVhSdmNsdGNJblJvY205M1hDSmRLSFpoYkhWbEtTazdJSDBnWTJGMFkyZ2dLR1VwSUhzZ2NtVnFaV04wS0dVcE95QjlJSDFjY2x4dUlDQWdJQ0FnSUNCbWRXNWpkR2x2YmlCemRHVndLSEpsYzNWc2RDa2dleUJ5WlhOMWJIUXVaRzl1WlNBL0lISmxjMjlzZG1Vb2NtVnpkV3gwTG5aaGJIVmxLU0E2SUdGa2IzQjBLSEpsYzNWc2RDNTJZV3gxWlNrdWRHaGxiaWhtZFd4bWFXeHNaV1FzSUhKbGFtVmpkR1ZrS1RzZ2ZWeHlYRzRnSUNBZ0lDQWdJSE4wWlhBb0tHZGxibVZ5WVhSdmNpQTlJR2RsYm1WeVlYUnZjaTVoY0hCc2VTaDBhR2x6UVhKbkxDQmZZWEpuZFcxbGJuUnpJSHg4SUZ0ZEtTa3VibVY0ZENncEtUdGNjbHh1SUNBZ0lIMHBPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5blpXNWxjbUYwYjNJb2RHaHBjMEZ5Wnl3Z1ltOWtlU2tnZTF4eVhHNGdJQ0FnZG1GeUlGOGdQU0I3SUd4aFltVnNPaUF3TENCelpXNTBPaUJtZFc1amRHbHZiaWdwSUhzZ2FXWWdLSFJiTUYwZ0ppQXhLU0IwYUhKdmR5QjBXekZkT3lCeVpYUjFjbTRnZEZzeFhUc2dmU3dnZEhKNWN6b2dXMTBzSUc5d2N6b2dXMTBnZlN3Z1ppd2dlU3dnZEN3Z1p6dGNjbHh1SUNBZ0lISmxkSFZ5YmlCbklEMGdleUJ1WlhoME9pQjJaWEppS0RBcExDQmNJblJvY205M1hDSTZJSFpsY21Jb01Ta3NJRndpY21WMGRYSnVYQ0k2SUhabGNtSW9NaWtnZlN3Z2RIbHdaVzltSUZONWJXSnZiQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJQ1ltSUNoblcxTjViV0p2YkM1cGRHVnlZWFJ2Y2wwZ1BTQm1kVzVqZEdsdmJpZ3BJSHNnY21WMGRYSnVJSFJvYVhNN0lIMHBMQ0JuTzF4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnZG1WeVlpaHVLU0I3SUhKbGRIVnliaUJtZFc1amRHbHZiaUFvZGlrZ2V5QnlaWFIxY200Z2MzUmxjQ2hiYml3Z2RsMHBPeUI5T3lCOVhISmNiaUFnSUNCbWRXNWpkR2x2YmlCemRHVndLRzl3S1NCN1hISmNiaUFnSUNBZ0lDQWdhV1lnS0dZcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pIWlc1bGNtRjBiM0lnYVhNZ1lXeHlaV0ZrZVNCbGVHVmpkWFJwYm1jdVhDSXBPMXh5WEc0Z0lDQWdJQ0FnSUhkb2FXeGxJQ2huSUNZbUlDaG5JRDBnTUN3Z2IzQmJNRjBnSmlZZ0tGOGdQU0F3S1Nrc0lGOHBJSFJ5ZVNCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaG1JRDBnTVN3Z2VTQW1KaUFvZENBOUlHOXdXekJkSUNZZ01pQS9JSGxiWENKeVpYUjFjbTVjSWwwZ09pQnZjRnN3WFNBL0lIbGJYQ0owYUhKdmQxd2lYU0I4ZkNBb0tIUWdQU0I1VzF3aWNtVjBkWEp1WENKZEtTQW1KaUIwTG1OaGJHd29lU2tzSURBcElEb2dlUzV1WlhoMEtTQW1KaUFoS0hRZ1BTQjBMbU5oYkd3b2VTd2diM0JiTVYwcEtTNWtiMjVsS1NCeVpYUjFjbTRnZER0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIa2dQU0F3TENCMEtTQnZjQ0E5SUZ0dmNGc3dYU0FtSURJc0lIUXVkbUZzZFdWZE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCemQybDBZMmdnS0c5d1d6QmRLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJREE2SUdOaGMyVWdNVG9nZENBOUlHOXdPeUJpY21WaGF6dGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ05Eb2dYeTVzWVdKbGJDc3JPeUJ5WlhSMWNtNGdleUIyWVd4MVpUb2diM0JiTVYwc0lHUnZibVU2SUdaaGJITmxJSDA3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRFU2SUY4dWJHRmlaV3dyS3pzZ2VTQTlJRzl3V3pGZE95QnZjQ0E5SUZzd1hUc2dZMjl1ZEdsdWRXVTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElEYzZJRzl3SUQwZ1h5NXZjSE11Y0c5d0tDazdJRjh1ZEhKNWN5NXdiM0FvS1RzZ1kyOXVkR2x1ZFdVN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtaV1poZFd4ME9seHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hLSFFnUFNCZkxuUnllWE1zSUhRZ1BTQjBMbXhsYm1kMGFDQStJREFnSmlZZ2RGdDBMbXhsYm1kMGFDQXRJREZkS1NBbUppQW9iM0JiTUYwZ1BUMDlJRFlnZkh3Z2IzQmJNRjBnUFQwOUlESXBLU0I3SUY4Z1BTQXdPeUJqYjI1MGFXNTFaVHNnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodmNGc3dYU0E5UFQwZ015QW1KaUFvSVhRZ2ZId2dLRzl3V3pGZElENGdkRnN3WFNBbUppQnZjRnN4WFNBOElIUmJNMTBwS1NrZ2V5QmZMbXhoWW1Wc0lEMGdiM0JiTVYwN0lHSnlaV0ZyT3lCOVhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHOXdXekJkSUQwOVBTQTJJQ1ltSUY4dWJHRmlaV3dnUENCMFd6RmRLU0I3SUY4dWJHRmlaV3dnUFNCMFd6RmRPeUIwSUQwZ2IzQTdJR0p5WldGck95QjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFFnSmlZZ1h5NXNZV0psYkNBOElIUmJNbDBwSUhzZ1h5NXNZV0psYkNBOUlIUmJNbDA3SUY4dWIzQnpMbkIxYzJnb2IzQXBPeUJpY21WaGF6c2dmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwV3pKZEtTQmZMbTl3Y3k1d2IzQW9LVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmZMblJ5ZVhNdWNHOXdLQ2s3SUdOdmJuUnBiblZsTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJRzl3SUQwZ1ltOWtlUzVqWVd4c0tIUm9hWE5CY21jc0lGOHBPMXh5WEc0Z0lDQWdJQ0FnSUgwZ1kyRjBZMmdnS0dVcElIc2diM0FnUFNCYk5pd2daVjA3SUhrZ1BTQXdPeUI5SUdacGJtRnNiSGtnZXlCbUlEMGdkQ0E5SURBN0lIMWNjbHh1SUNBZ0lDQWdJQ0JwWmlBb2IzQmJNRjBnSmlBMUtTQjBhSEp2ZHlCdmNGc3hYVHNnY21WMGRYSnVJSHNnZG1Gc2RXVTZJRzl3V3pCZElEOGdiM0JiTVYwZ09pQjJiMmxrSURBc0lHUnZibVU2SUhSeWRXVWdmVHRjY2x4dUlDQWdJSDFjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUhaaGNpQmZYMk55WldGMFpVSnBibVJwYm1jZ1BTQlBZbXBsWTNRdVkzSmxZWFJsSUQ4Z0tHWjFibU4wYVc5dUtHOHNJRzBzSUdzc0lHc3lLU0I3WEhKY2JpQWdJQ0JwWmlBb2F6SWdQVDA5SUhWdVpHVm1hVzVsWkNrZ2F6SWdQU0JyTzF4eVhHNGdJQ0FnZG1GeUlHUmxjMk1nUFNCUFltcGxZM1F1WjJWMFQzZHVVSEp2Y0dWeWRIbEVaWE5qY21sd2RHOXlLRzBzSUdzcE8xeHlYRzRnSUNBZ2FXWWdLQ0ZrWlhOaklIeDhJQ2hjSW1kbGRGd2lJR2x1SUdSbGMyTWdQeUFoYlM1ZlgyVnpUVzlrZFd4bElEb2daR1Z6WXk1M2NtbDBZV0pzWlNCOGZDQmtaWE5qTG1OdmJtWnBaM1Z5WVdKc1pTa3BJSHRjY2x4dUlDQWdJQ0FnSUNCa1pYTmpJRDBnZXlCbGJuVnRaWEpoWW14bE9pQjBjblZsTENCblpYUTZJR1oxYm1OMGFXOXVLQ2tnZXlCeVpYUjFjbTRnYlZ0clhUc2dmU0I5TzF4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtHOHNJR3N5TENCa1pYTmpLVHRjY2x4dWZTa2dPaUFvWm5WdVkzUnBiMjRvYnl3Z2JTd2dheXdnYXpJcElIdGNjbHh1SUNBZ0lHbG1JQ2hyTWlBOVBUMGdkVzVrWldacGJtVmtLU0JyTWlBOUlHczdYSEpjYmlBZ0lDQnZXMnN5WFNBOUlHMWJhMTA3WEhKY2JuMHBPMXh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZaWGh3YjNKMFUzUmhjaWh0TENCdktTQjdYSEpjYmlBZ0lDQm1iM0lnS0haaGNpQndJR2x1SUcwcElHbG1JQ2h3SUNFOVBTQmNJbVJsWm1GMWJIUmNJaUFtSmlBaFQySnFaV04wTG5CeWIzUnZkSGx3WlM1b1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tHOHNJSEFwS1NCZlgyTnlaV0YwWlVKcGJtUnBibWNvYnl3Z2JTd2djQ2s3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgzWmhiSFZsY3lodktTQjdYSEpjYmlBZ0lDQjJZWElnY3lBOUlIUjVjR1Z2WmlCVGVXMWliMndnUFQwOUlGd2lablZ1WTNScGIyNWNJaUFtSmlCVGVXMWliMnd1YVhSbGNtRjBiM0lzSUcwZ1BTQnpJQ1ltSUc5YmMxMHNJR2tnUFNBd08xeHlYRzRnSUNBZ2FXWWdLRzBwSUhKbGRIVnliaUJ0TG1OaGJHd29ieWs3WEhKY2JpQWdJQ0JwWmlBb2J5QW1KaUIwZVhCbGIyWWdieTVzWlc1bmRHZ2dQVDA5SUZ3aWJuVnRZbVZ5WENJcElISmxkSFZ5YmlCN1hISmNiaUFnSUNBZ0lDQWdibVY0ZERvZ1puVnVZM1JwYjI0Z0tDa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYnlBbUppQnBJRDQ5SUc4dWJHVnVaM1JvS1NCdklEMGdkbTlwWkNBd08xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZXlCMllXeDFaVG9nYnlBbUppQnZXMmtySzEwc0lHUnZibVU2SUNGdklIMDdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb2N5QS9JRndpVDJKcVpXTjBJR2x6SUc1dmRDQnBkR1Z5WVdKc1pTNWNJaUE2SUZ3aVUzbHRZbTlzTG1sMFpYSmhkRzl5SUdseklHNXZkQ0JrWldacGJtVmtMbHdpS1R0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZjbVZoWkNodkxDQnVLU0I3WEhKY2JpQWdJQ0IyWVhJZ2JTQTlJSFI1Y0dWdlppQlRlVzFpYjJ3Z1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBbUppQnZXMU41YldKdmJDNXBkR1Z5WVhSdmNsMDdYSEpjYmlBZ0lDQnBaaUFvSVcwcElISmxkSFZ5YmlCdk8xeHlYRzRnSUNBZ2RtRnlJR2tnUFNCdExtTmhiR3dvYnlrc0lISXNJR0Z5SUQwZ1cxMHNJR1U3WEhKY2JpQWdJQ0IwY25rZ2UxeHlYRzRnSUNBZ0lDQWdJSGRvYVd4bElDZ29iaUE5UFQwZ2RtOXBaQ0F3SUh4OElHNHRMU0ErSURBcElDWW1JQ0VvY2lBOUlHa3VibVY0ZENncEtTNWtiMjVsS1NCaGNpNXdkWE5vS0hJdWRtRnNkV1VwTzF4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnWTJGMFkyZ2dLR1Z5Y205eUtTQjdJR1VnUFNCN0lHVnljbTl5T2lCbGNuSnZjaUI5T3lCOVhISmNiaUFnSUNCbWFXNWhiR3g1SUh0Y2NseHVJQ0FnSUNBZ0lDQjBjbmtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NpQW1KaUFoY2k1a2IyNWxJQ1ltSUNodElEMGdhVnRjSW5KbGRIVnlibHdpWFNrcElHMHVZMkZzYkNocEtUdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ1ptbHVZV3hzZVNCN0lHbG1JQ2hsS1NCMGFISnZkeUJsTG1WeWNtOXlPeUI5WEhKY2JpQWdJQ0I5WEhKY2JpQWdJQ0J5WlhSMWNtNGdZWEk3WEhKY2JuMWNjbHh1WEhKY2JpOHFLaUJBWkdWd2NtVmpZWFJsWkNBcUwxeHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl6Y0hKbFlXUW9LU0I3WEhKY2JpQWdJQ0JtYjNJZ0tIWmhjaUJoY2lBOUlGdGRMQ0JwSUQwZ01Ec2dhU0E4SUdGeVozVnRaVzUwY3k1c1pXNW5kR2c3SUdrckt5bGNjbHh1SUNBZ0lDQWdJQ0JoY2lBOUlHRnlMbU52Ym1OaGRDaGZYM0psWVdRb1lYSm5kVzFsYm5SelcybGRLU2s3WEhKY2JpQWdJQ0J5WlhSMWNtNGdZWEk3WEhKY2JuMWNjbHh1WEhKY2JpOHFLaUJBWkdWd2NtVmpZWFJsWkNBcUwxeHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl6Y0hKbFlXUkJjbkpoZVhNb0tTQjdYSEpjYmlBZ0lDQm1iM0lnS0haaGNpQnpJRDBnTUN3Z2FTQTlJREFzSUdsc0lEMGdZWEpuZFcxbGJuUnpMbXhsYm1kMGFEc2dhU0E4SUdsc095QnBLeXNwSUhNZ0t6MGdZWEpuZFcxbGJuUnpXMmxkTG14bGJtZDBhRHRjY2x4dUlDQWdJR1p2Y2lBb2RtRnlJSElnUFNCQmNuSmhlU2h6S1N3Z2F5QTlJREFzSUdrZ1BTQXdPeUJwSUR3Z2FXdzdJR2tyS3lsY2NseHVJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQmhJRDBnWVhKbmRXMWxiblJ6VzJsZExDQnFJRDBnTUN3Z2Ftd2dQU0JoTG14bGJtZDBhRHNnYWlBOElHcHNPeUJxS3lzc0lHc3JLeWxjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbHRyWFNBOUlHRmJhbDA3WEhKY2JpQWdJQ0J5WlhSMWNtNGdjanRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmMzQnlaV0ZrUVhKeVlYa29kRzhzSUdaeWIyMHNJSEJoWTJzcElIdGNjbHh1SUNBZ0lHbG1JQ2h3WVdOcklIeDhJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dQVDA5SURJcElHWnZjaUFvZG1GeUlHa2dQU0F3TENCc0lEMGdabkp2YlM1c1pXNW5kR2dzSUdGeU95QnBJRHdnYkRzZ2FTc3JLU0I3WEhKY2JpQWdJQ0FnSUNBZ2FXWWdLR0Z5SUh4OElDRW9hU0JwYmlCbWNtOXRLU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lXRnlLU0JoY2lBOUlFRnljbUY1TG5CeWIzUnZkSGx3WlM1emJHbGpaUzVqWVd4c0tHWnliMjBzSURBc0lHa3BPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmhjbHRwWFNBOUlHWnliMjFiYVYwN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc0Z0lDQWdjbVYwZFhKdUlIUnZMbU52Ym1OaGRDaGhjaUI4ZkNCQmNuSmhlUzV3Y205MGIzUjVjR1V1YzJ4cFkyVXVZMkZzYkNobWNtOXRLU2s3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyRjNZV2wwS0hZcElIdGNjbHh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpJR2x1YzNSaGJtTmxiMllnWDE5aGQyRnBkQ0EvSUNoMGFHbHpMbllnUFNCMkxDQjBhR2x6S1NBNklHNWxkeUJmWDJGM1lXbDBLSFlwTzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWhjM2x1WTBkbGJtVnlZWFJ2Y2loMGFHbHpRWEpuTENCZllYSm5kVzFsYm5SekxDQm5aVzVsY21GMGIzSXBJSHRjY2x4dUlDQWdJR2xtSUNnaFUzbHRZbTlzTG1GemVXNWpTWFJsY21GMGIzSXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKVGVXMWliMnd1WVhONWJtTkpkR1Z5WVhSdmNpQnBjeUJ1YjNRZ1pHVm1hVzVsWkM1Y0lpazdYSEpjYmlBZ0lDQjJZWElnWnlBOUlHZGxibVZ5WVhSdmNpNWhjSEJzZVNoMGFHbHpRWEpuTENCZllYSm5kVzFsYm5SeklIeDhJRnRkS1N3Z2FTd2djU0E5SUZ0ZE8xeHlYRzRnSUNBZ2NtVjBkWEp1SUdrZ1BTQjdmU3dnZG1WeVlpaGNJbTVsZUhSY0lpa3NJSFpsY21Jb1hDSjBhSEp2ZDF3aUtTd2dkbVZ5WWloY0luSmxkSFZ5Ymx3aUtTd2dhVnRUZVcxaWIyd3VZWE41Ym1OSmRHVnlZWFJ2Y2wwZ1BTQm1kVzVqZEdsdmJpQW9LU0I3SUhKbGRIVnliaUIwYUdsek95QjlMQ0JwTzF4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnZG1WeVlpaHVLU0I3SUdsbUlDaG5XMjVkS1NCcFcyNWRJRDBnWm5WdVkzUnBiMjRnS0hZcElIc2djbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLR1oxYm1OMGFXOXVJQ2hoTENCaUtTQjdJSEV1Y0hWemFDaGJiaXdnZGl3Z1lTd2dZbDBwSUQ0Z01TQjhmQ0J5WlhOMWJXVW9iaXdnZGlrN0lIMHBPeUI5T3lCOVhISmNiaUFnSUNCbWRXNWpkR2x2YmlCeVpYTjFiV1VvYml3Z2Rpa2dleUIwY25rZ2V5QnpkR1Z3S0dkYmJsMG9kaWtwT3lCOUlHTmhkR05vSUNobEtTQjdJSE5sZEhSc1pTaHhXekJkV3pOZExDQmxLVHNnZlNCOVhISmNiaUFnSUNCbWRXNWpkR2x2YmlCemRHVndLSElwSUhzZ2NpNTJZV3gxWlNCcGJuTjBZVzVqWlc5bUlGOWZZWGRoYVhRZ1B5QlFjbTl0YVhObExuSmxjMjlzZG1Vb2NpNTJZV3gxWlM1MktTNTBhR1Z1S0daMWJHWnBiR3dzSUhKbGFtVmpkQ2tnT2lCelpYUjBiR1VvY1Zzd1hWc3lYU3dnY2lrN0lIMWNjbHh1SUNBZ0lHWjFibU4wYVc5dUlHWjFiR1pwYkd3b2RtRnNkV1VwSUhzZ2NtVnpkVzFsS0Z3aWJtVjRkRndpTENCMllXeDFaU2s3SUgxY2NseHVJQ0FnSUdaMWJtTjBhVzl1SUhKbGFtVmpkQ2gyWVd4MVpTa2dleUJ5WlhOMWJXVW9YQ0owYUhKdmQxd2lMQ0IyWVd4MVpTazdJSDFjY2x4dUlDQWdJR1oxYm1OMGFXOXVJSE5sZEhSc1pTaG1MQ0IyS1NCN0lHbG1JQ2htS0hZcExDQnhMbk5vYVdaMEtDa3NJSEV1YkdWdVozUm9LU0J5WlhOMWJXVW9jVnN3WFZzd1hTd2djVnN3WFZzeFhTazdJSDFjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZllYTjVibU5FWld4bFoyRjBiM0lvYnlrZ2UxeHlYRzRnSUNBZ2RtRnlJR2tzSUhBN1hISmNiaUFnSUNCeVpYUjFjbTRnYVNBOUlIdDlMQ0IyWlhKaUtGd2libVY0ZEZ3aUtTd2dkbVZ5WWloY0luUm9jbTkzWENJc0lHWjFibU4wYVc5dUlDaGxLU0I3SUhSb2NtOTNJR1U3SUgwcExDQjJaWEppS0Z3aWNtVjBkWEp1WENJcExDQnBXMU41YldKdmJDNXBkR1Z5WVhSdmNsMGdQU0JtZFc1amRHbHZiaUFvS1NCN0lISmxkSFZ5YmlCMGFHbHpPeUI5TENCcE8xeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z2RtVnlZaWh1TENCbUtTQjdJR2xiYmwwZ1BTQnZXMjVkSUQ4Z1puVnVZM1JwYjI0Z0tIWXBJSHNnY21WMGRYSnVJQ2h3SUQwZ0lYQXBJRDhnZXlCMllXeDFaVG9nWDE5aGQyRnBkQ2h2VzI1ZEtIWXBLU3dnWkc5dVpUb2dabUZzYzJVZ2ZTQTZJR1lnUHlCbUtIWXBJRG9nZGpzZ2ZTQTZJR1k3SUgxY2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZZWE41Ym1OV1lXeDFaWE1vYnlrZ2UxeHlYRzRnSUNBZ2FXWWdLQ0ZUZVcxaWIyd3VZWE41Ym1OSmRHVnlZWFJ2Y2lrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJbE41YldKdmJDNWhjM2x1WTBsMFpYSmhkRzl5SUdseklHNXZkQ0JrWldacGJtVmtMbHdpS1R0Y2NseHVJQ0FnSUhaaGNpQnRJRDBnYjF0VGVXMWliMnd1WVhONWJtTkpkR1Z5WVhSdmNsMHNJR2s3WEhKY2JpQWdJQ0J5WlhSMWNtNGdiU0EvSUcwdVkyRnNiQ2h2S1NBNklDaHZJRDBnZEhsd1pXOW1JRjlmZG1Gc2RXVnpJRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdQeUJmWDNaaGJIVmxjeWh2S1NBNklHOWJVM2x0WW05c0xtbDBaWEpoZEc5eVhTZ3BMQ0JwSUQwZ2UzMHNJSFpsY21Jb1hDSnVaWGgwWENJcExDQjJaWEppS0Z3aWRHaHliM2RjSWlrc0lIWmxjbUlvWENKeVpYUjFjbTVjSWlrc0lHbGJVM2x0WW05c0xtRnplVzVqU1hSbGNtRjBiM0pkSUQwZ1puVnVZM1JwYjI0Z0tDa2dleUJ5WlhSMWNtNGdkR2hwY3pzZ2ZTd2dhU2s3WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUIyWlhKaUtHNHBJSHNnYVZ0dVhTQTlJRzliYmwwZ0ppWWdablZ1WTNScGIyNGdLSFlwSUhzZ2NtVjBkWEp1SUc1bGR5QlFjbTl0YVhObEtHWjFibU4wYVc5dUlDaHlaWE52YkhabExDQnlaV3BsWTNRcElIc2dkaUE5SUc5YmJsMG9kaWtzSUhObGRIUnNaU2h5WlhOdmJIWmxMQ0J5WldwbFkzUXNJSFl1Wkc5dVpTd2dkaTUyWVd4MVpTazdJSDBwT3lCOU95QjlYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQnpaWFIwYkdVb2NtVnpiMngyWlN3Z2NtVnFaV04wTENCa0xDQjJLU0I3SUZCeWIyMXBjMlV1Y21WemIyeDJaU2gyS1M1MGFHVnVLR1oxYm1OMGFXOXVLSFlwSUhzZ2NtVnpiMngyWlNoN0lIWmhiSFZsT2lCMkxDQmtiMjVsT2lCa0lIMHBPeUI5TENCeVpXcGxZM1FwT3lCOVhISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMjFoYTJWVVpXMXdiR0YwWlU5aWFtVmpkQ2hqYjI5clpXUXNJSEpoZHlrZ2UxeHlYRzRnSUNBZ2FXWWdLRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNrZ2V5QlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvWTI5dmEyVmtMQ0JjSW5KaGQxd2lMQ0I3SUhaaGJIVmxPaUJ5WVhjZ2ZTazdJSDBnWld4elpTQjdJR052YjJ0bFpDNXlZWGNnUFNCeVlYYzdJSDFjY2x4dUlDQWdJSEpsZEhWeWJpQmpiMjlyWldRN1hISmNibjA3WEhKY2JseHlYRzUyWVhJZ1gxOXpaWFJOYjJSMWJHVkVaV1poZFd4MElEMGdUMkpxWldOMExtTnlaV0YwWlNBL0lDaG1kVzVqZEdsdmJpaHZMQ0IyS1NCN1hISmNiaUFnSUNCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29ieXdnWENKa1pXWmhkV3gwWENJc0lIc2daVzUxYldWeVlXSnNaVG9nZEhKMVpTd2dkbUZzZFdVNklIWWdmU2s3WEhKY2JuMHBJRG9nWm5WdVkzUnBiMjRvYnl3Z2Rpa2dlMXh5WEc0Z0lDQWdiMXRjSW1SbFptRjFiSFJjSWwwZ1BTQjJPMXh5WEc1OU8xeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmFXMXdiM0owVTNSaGNpaHRiMlFwSUh0Y2NseHVJQ0FnSUdsbUlDaHRiMlFnSmlZZ2JXOWtMbDlmWlhOTmIyUjFiR1VwSUhKbGRIVnliaUJ0YjJRN1hISmNiaUFnSUNCMllYSWdjbVZ6ZFd4MElEMGdlMzA3WEhKY2JpQWdJQ0JwWmlBb2JXOWtJQ0U5SUc1MWJHd3BJR1p2Y2lBb2RtRnlJR3NnYVc0Z2JXOWtLU0JwWmlBb2F5QWhQVDBnWENKa1pXWmhkV3gwWENJZ0ppWWdUMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLRzF2WkN3Z2F5a3BJRjlmWTNKbFlYUmxRbWx1WkdsdVp5aHlaWE4xYkhRc0lHMXZaQ3dnYXlrN1hISmNiaUFnSUNCZlgzTmxkRTF2WkhWc1pVUmxabUYxYkhRb2NtVnpkV3gwTENCdGIyUXBPMXh5WEc0Z0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZhVzF3YjNKMFJHVm1ZWFZzZENodGIyUXBJSHRjY2x4dUlDQWdJSEpsZEhWeWJpQW9iVzlrSUNZbUlHMXZaQzVmWDJWelRXOWtkV3hsS1NBL0lHMXZaQ0E2SUhzZ1pHVm1ZWFZzZERvZ2JXOWtJSDA3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyTnNZWE56VUhKcGRtRjBaVVpwWld4a1IyVjBLSEpsWTJWcGRtVnlMQ0J6ZEdGMFpTd2dhMmx1WkN3Z1ppa2dlMXh5WEc0Z0lDQWdhV1lnS0d0cGJtUWdQVDA5SUZ3aVlWd2lJQ1ltSUNGbUtTQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpVUhKcGRtRjBaU0JoWTJObGMzTnZjaUIzWVhNZ1pHVm1hVzVsWkNCM2FYUm9iM1YwSUdFZ1oyVjBkR1Z5WENJcE8xeHlYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQnpkR0YwWlNBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUQ4Z2NtVmpaV2wyWlhJZ0lUMDlJSE4wWVhSbElIeDhJQ0ZtSURvZ0lYTjBZWFJsTG1oaGN5aHlaV05sYVhabGNpa3BJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKRFlXNXViM1FnY21WaFpDQndjbWwyWVhSbElHMWxiV0psY2lCbWNtOXRJR0Z1SUc5aWFtVmpkQ0IzYUc5elpTQmpiR0Z6Y3lCa2FXUWdibTkwSUdSbFkyeGhjbVVnYVhSY0lpazdYSEpjYmlBZ0lDQnlaWFIxY200Z2EybHVaQ0E5UFQwZ1hDSnRYQ0lnUHlCbUlEb2dhMmx1WkNBOVBUMGdYQ0poWENJZ1B5Qm1MbU5oYkd3b2NtVmpaV2wyWlhJcElEb2daaUEvSUdZdWRtRnNkV1VnT2lCemRHRjBaUzVuWlhRb2NtVmpaV2wyWlhJcE8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTlqYkdGemMxQnlhWFpoZEdWR2FXVnNaRk5sZENoeVpXTmxhWFpsY2l3Z2MzUmhkR1VzSUhaaGJIVmxMQ0JyYVc1a0xDQm1LU0I3WEhKY2JpQWdJQ0JwWmlBb2EybHVaQ0E5UFQwZ1hDSnRYQ0lwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSlFjbWwyWVhSbElHMWxkR2h2WkNCcGN5QnViM1FnZDNKcGRHRmliR1ZjSWlrN1hISmNiaUFnSUNCcFppQW9hMmx1WkNBOVBUMGdYQ0poWENJZ0ppWWdJV1lwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSlFjbWwyWVhSbElHRmpZMlZ6YzI5eUlIZGhjeUJrWldacGJtVmtJSGRwZEdodmRYUWdZU0J6WlhSMFpYSmNJaWs3WEhKY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUhOMFlYUmxJRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdQeUJ5WldObGFYWmxjaUFoUFQwZ2MzUmhkR1VnZkh3Z0lXWWdPaUFoYzNSaGRHVXVhR0Z6S0hKbFkyVnBkbVZ5S1NrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJa05oYm01dmRDQjNjbWwwWlNCd2NtbDJZWFJsSUcxbGJXSmxjaUIwYnlCaGJpQnZZbXBsWTNRZ2QyaHZjMlVnWTJ4aGMzTWdaR2xrSUc1dmRDQmtaV05zWVhKbElHbDBYQ0lwTzF4eVhHNGdJQ0FnY21WMGRYSnVJQ2hyYVc1a0lEMDlQU0JjSW1GY0lpQS9JR1l1WTJGc2JDaHlaV05sYVhabGNpd2dkbUZzZFdVcElEb2daaUEvSUdZdWRtRnNkV1VnUFNCMllXeDFaU0E2SUhOMFlYUmxMbk5sZENoeVpXTmxhWFpsY2l3Z2RtRnNkV1VwS1N3Z2RtRnNkV1U3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyTnNZWE56VUhKcGRtRjBaVVpwWld4a1NXNG9jM1JoZEdVc0lISmxZMlZwZG1WeUtTQjdYSEpjYmlBZ0lDQnBaaUFvY21WalpXbDJaWElnUFQwOUlHNTFiR3dnZkh3Z0tIUjVjR1Z2WmlCeVpXTmxhWFpsY2lBaFBUMGdYQ0p2WW1wbFkzUmNJaUFtSmlCMGVYQmxiMllnY21WalpXbDJaWElnSVQwOUlGd2lablZ1WTNScGIyNWNJaWtwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSkRZVzV1YjNRZ2RYTmxJQ2RwYmljZ2IzQmxjbUYwYjNJZ2IyNGdibTl1TFc5aWFtVmpkRndpS1R0Y2NseHVJQ0FnSUhKbGRIVnliaUIwZVhCbGIyWWdjM1JoZEdVZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBL0lISmxZMlZwZG1WeUlEMDlQU0J6ZEdGMFpTQTZJSE4wWVhSbExtaGhjeWh5WldObGFYWmxjaWs3WEhKY2JuMWNjbHh1SWl3aWFXMXdiM0owSUhzZ1IweFVSa3h2WVdSbGNsQnNkV2RwYml3Z1IweFVSbEJoY25ObGNpQjlJR1p5YjIwZ0ozUm9jbVZsTDJWNFlXMXdiR1Z6TDJwemJTOXNiMkZrWlhKekwwZE1WRVpNYjJGa1pYSXVhbk1uTzF4dWFXMXdiM0owSUNvZ1lYTWdTRVJTUlcxcGMzTnBkbVZOZFd4MGFYQnNhV1Z5VTJOb1pXMWhJR1p5YjIwZ0owQndhWGhwZGk5MGVYQmxjeTEyY20xakxXMWhkR1Z5YVdGc2N5MW9aSEl0WlcxcGMzTnBkbVV0YlhWc2RHbHdiR2xsY2kweExqQW5PMXh1YVcxd2IzSjBJSHNnUjB4VVJpQmhjeUJIVEZSR1UyTm9aVzFoSUgwZ1puSnZiU0FuUUdkc2RHWXRkSEpoYm5ObWIzSnRMMk52Y21Vbk8xeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZsSk5UV0YwWlhKcFlXeHpTRVJTUlcxcGMzTnBkbVZOZFd4MGFYQnNhV1Z5VEc5aFpHVnlVR3gxWjJsdUlHbHRjR3hsYldWdWRITWdSMHhVUmt4dllXUmxjbEJzZFdkcGJpQjdYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdSVmhVUlU1VFNVOU9YMDVCVFVVZ1BTQW5WbEpOUTE5dFlYUmxjbWxoYkhOZmFHUnlYMlZ0YVhOemFYWmxUWFZzZEdsd2JHbGxjaWNnWVhNZ1kyOXVjM1E3WEc1Y2JpQWdjSFZpYkdsaklISmxZV1J2Ym14NUlIQmhjbk5sY2pvZ1IweFVSbEJoY25ObGNqdGNibHh1SUNCd2RXSnNhV01nWjJWMElHNWhiV1VvS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0J5WlhSMWNtNGdWbEpOVFdGMFpYSnBZV3h6U0VSU1JXMXBjM05wZG1WTmRXeDBhWEJzYVdWeVRHOWhaR1Z5VUd4MVoybHVMa1ZZVkVWT1UwbFBUbDlPUVUxRk8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHTnZibk4wY25WamRHOXlLSEJoY25ObGNqb2dSMHhVUmxCaGNuTmxjaWtnZTF4dUlDQWdJSFJvYVhNdWNHRnljMlZ5SUQwZ2NHRnljMlZ5TzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdGemVXNWpJR1Y0ZEdWdVpFMWhkR1Z5YVdGc1VHRnlZVzF6S0cxaGRHVnlhV0ZzU1c1a1pYZzZJRzUxYldKbGNpd2diV0YwWlhKcFlXeFFZWEpoYlhNNklIc2dXMnRsZVRvZ2MzUnlhVzVuWFRvZ1lXNTVJSDBwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQmpiMjV6ZENCbGVIUmxibk5wYjI0Z1BTQjBhR2x6TGw5blpYUklSRkpGYldsemMybDJaVTExYkhScGNHeHBaWEpGZUhSbGJuTnBiMjRvYldGMFpYSnBZV3hKYm1SbGVDazdYRzRnSUNBZ2FXWWdLR1Y0ZEdWdWMybHZiaUE5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdWR2hwY3lCbGVIUmxibk5wYjI0Z2FYTWdZWEpqYUdsMlpXUXVJRVZ0YVhRZ2QyRnlibWx1WjF4dUlDQWdJQzh2SUZObFpUb2dhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMM1p5YlMxakwzWnliUzF6Y0dWamFXWnBZMkYwYVc5dUwzQjFiR3d2TXpjMVhHNGdJQ0FnWTI5dWMyOXNaUzUzWVhKdUtGeHVJQ0FnSUNBZ0oxWlNUVTFoZEdWeWFXRnNjMGhFVWtWdGFYTnphWFpsVFhWc2RHbHdiR2xsY2t4dllXUmxjbEJzZFdkcGJqb2dZRlpTVFVOZmJXRjBaWEpwWVd4elgyaGtjbDlsYldsemMybDJaVTExYkhScGNHeHBaWEpnSUdseklHRnlZMmhwZG1Wa0xpQlZjMlVnWUV0SVVsOXRZWFJsY21saGJITmZaVzFwYzNOcGRtVmZjM1J5Wlc1bmRHaGdJR2x1YzNSbFlXUXVKeXhjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ1pXMXBjM05wZG1WTmRXeDBhWEJzYVdWeUlEMGdaWGgwWlc1emFXOXVMbVZ0YVhOemFYWmxUWFZzZEdsd2JHbGxjanRjYmlBZ0lDQnRZWFJsY21saGJGQmhjbUZ0Y3k1bGJXbHpjMmwyWlVsdWRHVnVjMmwwZVNBOUlHVnRhWE56YVhabFRYVnNkR2x3YkdsbGNqdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdYMmRsZEVoRVVrVnRhWE56YVhabFRYVnNkR2x3YkdsbGNrVjRkR1Z1YzJsdmJpaGNiaUFnSUNCdFlYUmxjbWxoYkVsdVpHVjRPaUJ1ZFcxaVpYSXNYRzRnSUNrNklFaEVVa1Z0YVhOemFYWmxUWFZzZEdsd2JHbGxjbE5qYUdWdFlTNVdVazFEVFdGMFpYSnBZV3h6U0VSU1JXMXBjM05wZG1WTmRXeDBhWEJzYVdWeUlId2dkVzVrWldacGJtVmtJSHRjYmlBZ0lDQmpiMjV6ZENCd1lYSnpaWElnUFNCMGFHbHpMbkJoY25ObGNqdGNiaUFnSUNCamIyNXpkQ0JxYzI5dUlEMGdjR0Z5YzJWeUxtcHpiMjRnWVhNZ1IweFVSbE5qYUdWdFlTNUpSMHhVUmp0Y2JseHVJQ0FnSUdOdmJuTjBJRzFoZEdWeWFXRnNSR1ZtSUQwZ2FuTnZiaTV0WVhSbGNtbGhiSE0vTGx0dFlYUmxjbWxoYkVsdVpHVjRYVHRjYmx4dUlDQWdJR2xtSUNodFlYUmxjbWxoYkVSbFppQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQmpiMjV6YjJ4bExuZGhjbTRvWEc0Z0lDQWdJQ0FnSUdCV1VrMU5ZWFJsY21saGJITklSRkpGYldsemMybDJaVTExYkhScGNHeHBaWEpNYjJGa1pYSlFiSFZuYVc0NklFRjBkR1Z0Y0hRZ2RHOGdkWE5sSUcxaGRHVnlhV0ZzYzFza2UyMWhkR1Z5YVdGc1NXNWtaWGg5WFNCdlppQm5iRlJHSUdKMWRDQjBhR1VnYldGMFpYSnBZV3dnWkc5bGMyNG5kQ0JsZUdsemRHQXNYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdjbVYwZFhKdUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0JsZUhSbGJuTnBiMjRnUFNCdFlYUmxjbWxoYkVSbFppNWxlSFJsYm5OcGIyNXpQeTViVmxKTlRXRjBaWEpwWVd4elNFUlNSVzFwYzNOcGRtVk5kV3gwYVhCc2FXVnlURzloWkdWeVVHeDFaMmx1TGtWWVZFVk9VMGxQVGw5T1FVMUZYU0JoYzF4dUlDQWdJQ0FnZkNCSVJGSkZiV2x6YzJsMlpVMTFiSFJwY0d4cFpYSlRZMmhsYldFdVZsSk5RMDFoZEdWeWFXRnNjMGhFVWtWdGFYTnphWFpsVFhWc2RHbHdiR2xsY2x4dUlDQWdJQ0FnZkNCMWJtUmxabWx1WldRN1hHNGdJQ0FnYVdZZ0tHVjRkR1Z1YzJsdmJpQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJsZUhSbGJuTnBiMjQ3WEc0Z0lIMWNibjFjYmlKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPenRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZ2UjBFN1FVRkRUeXhUUVVGVExGTkJRVk1zUTBGQlF5eFBRVUZQTEVWQlFVVXNWVUZCVlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hUUVVGVExFVkJRVVU3UVVGRE4wUXNTVUZCU1N4VFFVRlRMRXRCUVVzc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJTeFBRVUZQTEV0QlFVc3NXVUZCV1N4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEZWQlFWVXNUMEZCVHl4RlFVRkZMRVZCUVVVc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVN1FVRkRhRWdzU1VGQlNTeFBRVUZQTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zUlVGQlJTeFZRVUZWTEU5QlFVOHNSVUZCUlN4TlFVRk5MRVZCUVVVN1FVRkRMMFFzVVVGQlVTeFRRVUZUTEZOQlFWTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTI1SExGRkJRVkVzVTBGQlV5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTNSSExGRkJRVkVzVTBGQlV5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVVc1RVRkJUU3hEUVVGRExFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUTNSSUxGRkJRVkVzU1VGQlNTeERRVUZETEVOQlFVTXNVMEZCVXl4SFFVRkhMRk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEZWQlFWVXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlF6bEZMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRMUE3TzAxRGRFaGhMRFpEUVVFMlF5eERRVUZCTzBGQlMzaEVMRWxCUVVFc1NVRkJWeXhKUVVGSkxFZEJRVUU3VVVGRFlpeFBRVUZQTERaRFFVRTJReXhEUVVGRExHTkJRV01zUTBGQlF6dExRVU55UlR0QlFVVkVMRWxCUVVFc1YwRkJRU3hEUVVGdFFpeE5RVUZyUWl4RlFVRkJPMEZCUTI1RExGRkJRVUVzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4TlFVRk5MRU5CUVVNN1MwRkRkRUk3U1VGRldTeHZRa0ZCYjBJc1EwRkJReXhoUVVGeFFpeEZRVUZGTEdOQlFYTkRMRVZCUVVFN08xbEJRemRHTEUxQlFVMHNVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhyUTBGQmEwTXNRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJRenRaUVVONlJTeEpRVUZKTEZOQlFWTXNTVUZCU1N4SlFVRkpMRVZCUVVVN1owSkJRM0pDTEU5QlFVODdRVUZEVWl4aFFVRkJPenM3UVVGSlJDeFpRVUZCTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUTFZc2IwcEJRVzlLTEVOQlEzSktMRU5CUVVNN1FVRkZSaXhaUVVGQkxFMUJRVTBzYTBKQlFXdENMRWRCUVVjc1UwRkJVeXhEUVVGRExHdENRVUZyUWl4RFFVRkRPMEZCUTNoRUxGbEJRVUVzWTBGQll5eERRVUZETEdsQ1FVRnBRaXhIUVVGSExHdENRVUZyUWl4RFFVRkRPMU5CUTNaRUxFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlFVRTdRVUZGVHl4SlFVRkJMR3REUVVGclF5eERRVU40UXl4aFFVRnhRaXhGUVVGQk96dEJRVVZ5UWl4UlFVRkJMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdRVUZETTBJc1VVRkJRU3hOUVVGTkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEVOQlFVTXNTVUZCZDBJc1EwRkJRenRSUVVVM1F5eE5RVUZOTEZkQlFWY3NSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGSkxFTkJRVU1zVTBGQlV5eE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkhMR0ZCUVdFc1EwRkJReXhEUVVGRE8xRkJSWEJFTEVsQlFVa3NWMEZCVnl4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOMlFpeFpRVUZCTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUTFZc01rVkJRVEpGTEdGQlFXRXNRMEZCUVN4M1EwRkJRU3hEUVVFd1F5eERRVU51U1N4RFFVRkRPMEZCUTBZc1dVRkJRU3hQUVVGUExGTkJRVk1zUTBGQlF6dEJRVU5zUWl4VFFVRkJPMUZCUlVRc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNWMEZCVnl4RFFVRkRMRlZCUVZVc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlJ5dzJRMEZCTmtNc1EwRkJReXhqUVVGakxFTkJSVEZHTEVOQlFVTTdVVUZEWkN4SlFVRkpMRk5CUVZNc1NVRkJTU3hKUVVGSkxFVkJRVVU3UVVGRGNrSXNXVUZCUVN4UFFVRlBMRk5CUVZNc1EwRkJRenRCUVVOc1FpeFRRVUZCTzBGQlJVUXNVVUZCUVN4UFFVRlBMRk5CUVZNc1EwRkJRenRMUVVOc1FqczdRVUZ1UkdFc05rTkJRV01zUTBGQlFTeGpRVUZCTEVkQlFVY3NkVU5CUVdkRU96czdPeUo5XG4iLCIvKiFcbiAqIEBwaXhpdi90aHJlZS12cm0tbWF0ZXJpYWxzLXYwY29tcGF0IHYyLjAuNlxuICogVlJNMC4wIG1hdGVyaWFscyBjb21wYXRpYmlsaXR5IGxheWVyIHBsdWdpbiBmb3IgQHBpeGl2L3RocmVlLXZybVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAyMC0yMDIzIHBpeGl2IEluYy5cbiAqIEBwaXhpdi90aHJlZS12cm0tbWF0ZXJpYWxzLXYwY29tcGF0IGlzIGRpc3RyaWJ1dGVkIHVuZGVyIE1JVCBMaWNlbnNlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcGl4aXYvdGhyZWUtdnJtL2Jsb2IvcmVsZWFzZS9MSUNFTlNFXG4gKi9cbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcblxyXG5mdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XG5cbmZ1bmN0aW9uIGdhbW1hRU9URihlKSB7XG4gICAgcmV0dXJuIE1hdGgucG93KGUsIDIuMik7XG59XG5cbmNsYXNzIFZSTU1hdGVyaWFsc1YwQ29tcGF0UGx1Z2luIHtcbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgICAgcmV0dXJuICdWUk1NYXRlcmlhbHNWMENvbXBhdFBsdWdpbic7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhcnNlcikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuICAgICAgICB0aGlzLl9yZW5kZXJRdWV1ZU1hcFRyYW5zcGFyZW50ID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLl9yZW5kZXJRdWV1ZU1hcFRyYW5zcGFyZW50WldyaXRlID0gbmV3IE1hcCgpO1xuICAgICAgICAvLyBXT1JLQVJPVU5EOiBBZGQgS0hSX3RleHR1cmVfdHJhbnNmb3JtIHRvIGV4dGVuc2lvbnNVc2VkXG4gICAgICAgIC8vIEl0IGlzIHRvbyBsYXRlIHRvIGFkZCB0aGlzIGluIGJlZm9yZVJvb3RcbiAgICAgICAgY29uc3QganNvbiA9IHRoaXMucGFyc2VyLmpzb247XG4gICAgICAgIGpzb24uZXh0ZW5zaW9uc1VzZWQgPSAoX2EgPSBqc29uLmV4dGVuc2lvbnNVc2VkKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXTtcbiAgICAgICAgaWYgKGpzb24uZXh0ZW5zaW9uc1VzZWQuaW5kZXhPZignS0hSX3RleHR1cmVfdHJhbnNmb3JtJykgPT09IC0xKSB7XG4gICAgICAgICAgICBqc29uLmV4dGVuc2lvbnNVc2VkLnB1c2goJ0tIUl90ZXh0dXJlX3RyYW5zZm9ybScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGJlZm9yZVJvb3QoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnBhcnNlci5qc29uO1xuICAgICAgICAgICAgLy8gZWFybHkgYWJvcnQgaWYgaXQgZG9lc24ndCB1c2UgVjBWUk1cbiAgICAgICAgICAgIGNvbnN0IHYwVlJNRXh0ZW5zaW9uID0gKF9hID0ganNvbi5leHRlbnNpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbJ1ZSTSddO1xuICAgICAgICAgICAgY29uc3QgdjBNYXRlcmlhbFByb3BlcnRpZXMgPSB2MFZSTUV4dGVuc2lvbiA9PT0gbnVsbCB8fCB2MFZSTUV4dGVuc2lvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdjBWUk1FeHRlbnNpb24ubWF0ZXJpYWxQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgaWYgKCF2ME1hdGVyaWFsUHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHBvcHVsYXRlIHJlbmRlciBxdWV1ZSBtYXBcbiAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlUmVuZGVyUXVldWVNYXAodjBNYXRlcmlhbFByb3BlcnRpZXMpO1xuICAgICAgICAgICAgLy8gY29udmVydCBWMCBtYXRlcmlhbCBwcm9wZXJ0aWVzIGludG8gVjEgY29tcGF0aWJsZSBmb3JtYXRcbiAgICAgICAgICAgIHYwTWF0ZXJpYWxQcm9wZXJ0aWVzLmZvckVhY2goKG1hdGVyaWFsUHJvcGVydGllcywgbWF0ZXJpYWxJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxEZWYgPSAoX2EgPSBqc29uLm1hdGVyaWFscykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW21hdGVyaWFsSW5kZXhdO1xuICAgICAgICAgICAgICAgIGlmIChtYXRlcmlhbERlZiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVlJNTWF0ZXJpYWxzVjBDb21wYXRQbHVnaW46IEF0dGVtcHQgdG8gdXNlIG1hdGVyaWFsc1ske21hdGVyaWFsSW5kZXh9XSBvZiBnbFRGIGJ1dCB0aGUgbWF0ZXJpYWwgZG9lc24ndCBleGlzdGApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChtYXRlcmlhbFByb3BlcnRpZXMuc2hhZGVyID09PSAnVlJNL01Ub29uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRlcmlhbCA9IHRoaXMuX3BhcnNlVjBNVG9vblByb3BlcnRpZXMobWF0ZXJpYWxQcm9wZXJ0aWVzLCBtYXRlcmlhbERlZik7XG4gICAgICAgICAgICAgICAgICAgIGpzb24ubWF0ZXJpYWxzW21hdGVyaWFsSW5kZXhdID0gbWF0ZXJpYWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChfYiA9IG1hdGVyaWFsUHJvcGVydGllcy5zaGFkZXIpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5zdGFydHNXaXRoKCdWUk0vVW5saXQnKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRlcmlhbCA9IHRoaXMuX3BhcnNlVjBVbmxpdFByb3BlcnRpZXMobWF0ZXJpYWxQcm9wZXJ0aWVzLCBtYXRlcmlhbERlZik7XG4gICAgICAgICAgICAgICAgICAgIGpzb24ubWF0ZXJpYWxzW21hdGVyaWFsSW5kZXhdID0gbWF0ZXJpYWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1hdGVyaWFsUHJvcGVydGllcy5zaGFkZXIgPT09ICdWUk1fVVNFX0dMVEZTSEFERVInKSA7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVlJNTWF0ZXJpYWxzVjBDb21wYXRQbHVnaW46IFVua25vd24gc2hhZGVyOiAke21hdGVyaWFsUHJvcGVydGllcy5zaGFkZXJ9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfcGFyc2VWME1Ub29uUHJvcGVydGllcyhtYXRlcmlhbFByb3BlcnRpZXMsIHNjaGVtYU1hdGVyaWFsKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaywgX2wsIF9tLCBfbywgX3AsIF9xLCBfciwgX3MsIF90LCBfdSwgX3YsIF93LCBfeCwgX3ksIF96LCBfMCwgXzEsIF8yLCBfMywgXzQsIF81LCBfNiwgXzcsIF84LCBfOSwgXzEwLCBfMTEsIF8xMiwgXzEzLCBfMTQsIF8xNSwgXzE2LCBfMTcsIF8xOCwgXzE5O1xuICAgICAgICBjb25zdCBpc1RyYW5zcGFyZW50ID0gKF9iID0gKF9hID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmtleXdvcmRNYXApID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVsnX0FMUEhBQkxFTkRfT04nXSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogZmFsc2U7XG4gICAgICAgIGNvbnN0IGVuYWJsZWRaV3JpdGUgPSAoKF9jID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmZsb2F0UHJvcGVydGllcykgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jWydfWldyaXRlJ10pID09PSAxO1xuICAgICAgICBjb25zdCB0cmFuc3BhcmVudFdpdGhaV3JpdGUgPSBlbmFibGVkWldyaXRlICYmIGlzVHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbnN0IHJlbmRlclF1ZXVlT2Zmc2V0TnVtYmVyID0gdGhpcy5fdjBQYXJzZVJlbmRlclF1ZXVlKG1hdGVyaWFsUHJvcGVydGllcyk7XG4gICAgICAgIGNvbnN0IGlzQ3V0b2ZmID0gKF9lID0gKF9kID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmtleXdvcmRNYXApID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZFsnX0FMUEhBVEVTVF9PTiddKSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiBmYWxzZTtcbiAgICAgICAgY29uc3QgYWxwaGFNb2RlID0gaXNUcmFuc3BhcmVudCA/ICdCTEVORCcgOiBpc0N1dG9mZiA/ICdNQVNLJyA6ICdPUEFRVUUnO1xuICAgICAgICBjb25zdCBhbHBoYUN1dG9mZiA9IGlzQ3V0b2ZmID8gKF9mID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmZsb2F0UHJvcGVydGllcykgPT09IG51bGwgfHwgX2YgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mWydfQ3V0b2ZmJ10gOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGN1bGxNb2RlID0gKF9oID0gKF9nID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmZsb2F0UHJvcGVydGllcykgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nWydfQ3VsbE1vZGUnXSkgIT09IG51bGwgJiYgX2ggIT09IHZvaWQgMCA/IF9oIDogMjsgLy8gZW51bSwgeyBPZmYsIEZyb250LCBCYWNrIH1cbiAgICAgICAgY29uc3QgZG91YmxlU2lkZWQgPSBjdWxsTW9kZSA9PT0gMDtcbiAgICAgICAgY29uc3QgdGV4dHVyZVRyYW5zZm9ybUV4dCA9IHRoaXMuX3BvcnRUZXh0dXJlVHJhbnNmb3JtKG1hdGVyaWFsUHJvcGVydGllcyk7XG4gICAgICAgIGNvbnN0IGJhc2VDb2xvckZhY3RvciA9IChfayA9IChfaiA9IG1hdGVyaWFsUHJvcGVydGllcy52ZWN0b3JQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2pbJ19Db2xvciddKSA9PT0gbnVsbCB8fCBfayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2subWFwKCh2LCBpKSA9PiAoaSA9PT0gMyA/IHYgOiBnYW1tYUVPVEYodikpKTtcbiAgICAgICAgY29uc3QgYmFzZUNvbG9yVGV4dHVyZUluZGV4ID0gKF9sID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnRleHR1cmVQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2xbJ19NYWluVGV4J107XG4gICAgICAgIGNvbnN0IGJhc2VDb2xvclRleHR1cmUgPSBiYXNlQ29sb3JUZXh0dXJlSW5kZXggIT0gbnVsbFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgaW5kZXg6IGJhc2VDb2xvclRleHR1cmVJbmRleCxcbiAgICAgICAgICAgICAgICBleHRlbnNpb25zOiBPYmplY3QuYXNzaWduKHt9LCB0ZXh0dXJlVHJhbnNmb3JtRXh0KSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBub3JtYWxUZXh0dXJlU2NhbGUgPSAoX20gPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21bJ19CdW1wU2NhbGUnXTtcbiAgICAgICAgY29uc3Qgbm9ybWFsVGV4dHVyZUluZGV4ID0gKF9vID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnRleHR1cmVQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29bJ19CdW1wTWFwJ107XG4gICAgICAgIGNvbnN0IG5vcm1hbFRleHR1cmUgPSBub3JtYWxUZXh0dXJlSW5kZXggIT0gbnVsbFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgaW5kZXg6IG5vcm1hbFRleHR1cmVJbmRleCxcbiAgICAgICAgICAgICAgICBzY2FsZTogbm9ybWFsVGV4dHVyZVNjYWxlLFxuICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6IE9iamVjdC5hc3NpZ24oe30sIHRleHR1cmVUcmFuc2Zvcm1FeHQpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGVtaXNzaXZlRmFjdG9yID0gKF9xID0gKF9wID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnZlY3RvclByb3BlcnRpZXMpID09PSBudWxsIHx8IF9wID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfcFsnX0VtaXNzaW9uQ29sb3InXSkgPT09IG51bGwgfHwgX3EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9xLm1hcChnYW1tYUVPVEYpO1xuICAgICAgICBjb25zdCBlbWlzc2l2ZVRleHR1cmVJbmRleCA9IChfciA9IG1hdGVyaWFsUHJvcGVydGllcy50ZXh0dXJlUHJvcGVydGllcykgPT09IG51bGwgfHwgX3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9yWydfRW1pc3Npb25NYXAnXTtcbiAgICAgICAgY29uc3QgZW1pc3NpdmVUZXh0dXJlID0gZW1pc3NpdmVUZXh0dXJlSW5kZXggIT0gbnVsbFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgaW5kZXg6IGVtaXNzaXZlVGV4dHVyZUluZGV4LFxuICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6IE9iamVjdC5hc3NpZ24oe30sIHRleHR1cmVUcmFuc2Zvcm1FeHQpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHNoYWRlQ29sb3JGYWN0b3IgPSAoX3QgPSAoX3MgPSBtYXRlcmlhbFByb3BlcnRpZXMudmVjdG9yUHJvcGVydGllcykgPT09IG51bGwgfHwgX3MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zWydfU2hhZGVDb2xvciddKSA9PT0gbnVsbCB8fCBfdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3QubWFwKGdhbW1hRU9URik7XG4gICAgICAgIGNvbnN0IHNoYWRlTXVsdGlwbHlUZXh0dXJlSW5kZXggPSAoX3UgPSBtYXRlcmlhbFByb3BlcnRpZXMudGV4dHVyZVByb3BlcnRpZXMpID09PSBudWxsIHx8IF91ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdVsnX1NoYWRlVGV4dHVyZSddO1xuICAgICAgICBjb25zdCBzaGFkZU11bHRpcGx5VGV4dHVyZSA9IHNoYWRlTXVsdGlwbHlUZXh0dXJlSW5kZXggIT0gbnVsbFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgaW5kZXg6IHNoYWRlTXVsdGlwbHlUZXh0dXJlSW5kZXgsXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uczogT2JqZWN0LmFzc2lnbih7fSwgdGV4dHVyZVRyYW5zZm9ybUV4dCksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gLy8gY29udmVydCB2MCBzaGFkZSBzaGlmdCAvIHNoYWRlIHRvb255XG4gICAgICAgIGxldCBzaGFkaW5nU2hpZnRGYWN0b3IgPSAoX3cgPSAoX3YgPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfdiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3ZbJ19TaGFkZVNoaWZ0J10pICE9PSBudWxsICYmIF93ICE9PSB2b2lkIDAgPyBfdyA6IDAuMDtcbiAgICAgICAgbGV0IHNoYWRpbmdUb29ueUZhY3RvciA9IChfeSA9IChfeCA9IG1hdGVyaWFsUHJvcGVydGllcy5mbG9hdFByb3BlcnRpZXMpID09PSBudWxsIHx8IF94ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfeFsnX1NoYWRlVG9vbnknXSkgIT09IG51bGwgJiYgX3kgIT09IHZvaWQgMCA/IF95IDogMC45O1xuICAgICAgICBzaGFkaW5nVG9vbnlGYWN0b3IgPSBUSFJFRS5NYXRoVXRpbHMubGVycChzaGFkaW5nVG9vbnlGYWN0b3IsIDEuMCwgMC41ICsgMC41ICogc2hhZGluZ1NoaWZ0RmFjdG9yKTtcbiAgICAgICAgc2hhZGluZ1NoaWZ0RmFjdG9yID0gLXNoYWRpbmdTaGlmdEZhY3RvciAtICgxLjAgLSBzaGFkaW5nVG9vbnlGYWN0b3IpO1xuICAgICAgICBjb25zdCBnaUludGVuc2l0eUZhY3RvciA9IChfeiA9IG1hdGVyaWFsUHJvcGVydGllcy5mbG9hdFByb3BlcnRpZXMpID09PSBudWxsIHx8IF96ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfelsnX0luZGlyZWN0TGlnaHRJbnRlbnNpdHknXTtcbiAgICAgICAgY29uc3QgZ2lFcXVhbGl6YXRpb25GYWN0b3IgPSBnaUludGVuc2l0eUZhY3RvciA/IDEuMCAtIGdpSW50ZW5zaXR5RmFjdG9yIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBtYXRjYXBUZXh0dXJlSW5kZXggPSAoXzAgPSBtYXRlcmlhbFByb3BlcnRpZXMudGV4dHVyZVByb3BlcnRpZXMpID09PSBudWxsIHx8IF8wID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfMFsnX1NwaGVyZUFkZCddO1xuICAgICAgICBjb25zdCBtYXRjYXBGYWN0b3IgPSBtYXRjYXBUZXh0dXJlSW5kZXggIT0gbnVsbCA/IFsxLjAsIDEuMCwgMS4wXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgbWF0Y2FwVGV4dHVyZSA9IG1hdGNhcFRleHR1cmVJbmRleCAhPSBudWxsXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBpbmRleDogbWF0Y2FwVGV4dHVyZUluZGV4LFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHJpbUxpZ2h0aW5nTWl4RmFjdG9yID0gKF8xID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmZsb2F0UHJvcGVydGllcykgPT09IG51bGwgfHwgXzEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF8xWydfUmltTGlnaHRpbmdNaXgnXTtcbiAgICAgICAgY29uc3QgcmltTXVsdGlwbHlUZXh0dXJlSW5kZXggPSAoXzIgPSBtYXRlcmlhbFByb3BlcnRpZXMudGV4dHVyZVByb3BlcnRpZXMpID09PSBudWxsIHx8IF8yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfMlsnX1JpbVRleHR1cmUnXTtcbiAgICAgICAgY29uc3QgcmltTXVsdGlwbHlUZXh0dXJlID0gcmltTXVsdGlwbHlUZXh0dXJlSW5kZXggIT0gbnVsbFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgaW5kZXg6IHJpbU11bHRpcGx5VGV4dHVyZUluZGV4LFxuICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6IE9iamVjdC5hc3NpZ24oe30sIHRleHR1cmVUcmFuc2Zvcm1FeHQpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHBhcmFtZXRyaWNSaW1Db2xvckZhY3RvciA9IChfNCA9IChfMyA9IG1hdGVyaWFsUHJvcGVydGllcy52ZWN0b3JQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogXzNbJ19SaW1Db2xvciddKSA9PT0gbnVsbCB8fCBfNCA9PT0gdm9pZCAwID8gdm9pZCAwIDogXzQubWFwKGdhbW1hRU9URik7XG4gICAgICAgIGNvbnN0IHBhcmFtZXRyaWNSaW1GcmVzbmVsUG93ZXJGYWN0b3IgPSAoXzUgPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfNSA9PT0gdm9pZCAwID8gdm9pZCAwIDogXzVbJ19SaW1GcmVzbmVsUG93ZXInXTtcbiAgICAgICAgY29uc3QgcGFyYW1ldHJpY1JpbUxpZnRGYWN0b3IgPSAoXzYgPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfNiA9PT0gdm9pZCAwID8gdm9pZCAwIDogXzZbJ19SaW1MaWZ0J107XG4gICAgICAgIGNvbnN0IG91dGxpbmVXaWR0aE1vZGUgPSBbJ25vbmUnLCAnd29ybGRDb29yZGluYXRlcycsICdzY3JlZW5Db29yZGluYXRlcyddWyhfOCA9IChfNyA9IG1hdGVyaWFsUHJvcGVydGllcy5mbG9hdFByb3BlcnRpZXMpID09PSBudWxsIHx8IF83ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfN1snX091dGxpbmVXaWR0aE1vZGUnXSkgIT09IG51bGwgJiYgXzggIT09IHZvaWQgMCA/IF84IDogMF07XG4gICAgICAgIC8vIC8vIHYwIG91dGxpbmVXaWR0aEZhY3RvciBpcyBpbiBjZW50aW1ldGVyXG4gICAgICAgIGxldCBvdXRsaW5lV2lkdGhGYWN0b3IgPSAoXzEwID0gKF85ID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmZsb2F0UHJvcGVydGllcykgPT09IG51bGwgfHwgXzkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF85WydfT3V0bGluZVdpZHRoJ10pICE9PSBudWxsICYmIF8xMCAhPT0gdm9pZCAwID8gXzEwIDogMC4wO1xuICAgICAgICBvdXRsaW5lV2lkdGhGYWN0b3IgPSAwLjAxICogb3V0bGluZVdpZHRoRmFjdG9yO1xuICAgICAgICBjb25zdCBvdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmVJbmRleCA9IChfMTEgPSBtYXRlcmlhbFByb3BlcnRpZXMudGV4dHVyZVByb3BlcnRpZXMpID09PSBudWxsIHx8IF8xMSA9PT0gdm9pZCAwID8gdm9pZCAwIDogXzExWydfT3V0bGluZVdpZHRoVGV4dHVyZSddO1xuICAgICAgICBjb25zdCBvdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmUgPSBvdXRsaW5lV2lkdGhNdWx0aXBseVRleHR1cmVJbmRleCAhPSBudWxsXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBpbmRleDogb3V0bGluZVdpZHRoTXVsdGlwbHlUZXh0dXJlSW5kZXgsXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uczogT2JqZWN0LmFzc2lnbih7fSwgdGV4dHVyZVRyYW5zZm9ybUV4dCksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3Qgb3V0bGluZUNvbG9yRmFjdG9yID0gKF8xMyA9IChfMTIgPSBtYXRlcmlhbFByb3BlcnRpZXMudmVjdG9yUHJvcGVydGllcykgPT09IG51bGwgfHwgXzEyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfMTJbJ19PdXRsaW5lQ29sb3InXSkgPT09IG51bGwgfHwgXzEzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfMTMubWFwKGdhbW1hRU9URik7XG4gICAgICAgIGNvbnN0IG91dGxpbmVDb2xvck1vZGUgPSAoXzE0ID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmZsb2F0UHJvcGVydGllcykgPT09IG51bGwgfHwgXzE0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfMTRbJ19PdXRsaW5lQ29sb3JNb2RlJ107IC8vIGVudW0sIHsgRml4ZWQsIE1peGVkIH1cbiAgICAgICAgY29uc3Qgb3V0bGluZUxpZ2h0aW5nTWl4RmFjdG9yID0gb3V0bGluZUNvbG9yTW9kZSA9PT0gMSA/IChfMTUgPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfMTUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF8xNVsnX091dGxpbmVMaWdodGluZ01peCddIDogMC4wO1xuICAgICAgICBjb25zdCB1dkFuaW1hdGlvbk1hc2tUZXh0dXJlSW5kZXggPSAoXzE2ID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnRleHR1cmVQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfMTYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF8xNlsnX1V2QW5pbU1hc2tUZXh0dXJlJ107XG4gICAgICAgIGNvbnN0IHV2QW5pbWF0aW9uTWFza1RleHR1cmUgPSB1dkFuaW1hdGlvbk1hc2tUZXh0dXJlSW5kZXggIT0gbnVsbFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgaW5kZXg6IHV2QW5pbWF0aW9uTWFza1RleHR1cmVJbmRleCxcbiAgICAgICAgICAgICAgICBleHRlbnNpb25zOiBPYmplY3QuYXNzaWduKHt9LCB0ZXh0dXJlVHJhbnNmb3JtRXh0KSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCB1dkFuaW1hdGlvblNjcm9sbFhTcGVlZEZhY3RvciA9IChfMTcgPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfMTcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF8xN1snX1V2QW5pbVNjcm9sbFgnXTtcbiAgICAgICAgLy8gdXZBbmltYXRpb25TY3JvbGxZU3BlZWRGYWN0b3Igd2lsbCBiZSBvcHBvc2l0ZSBiZXR3ZWVuIFYwIGFuZCBWMVxuICAgICAgICBsZXQgdXZBbmltYXRpb25TY3JvbGxZU3BlZWRGYWN0b3IgPSAoXzE4ID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmZsb2F0UHJvcGVydGllcykgPT09IG51bGwgfHwgXzE4ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfMThbJ19VdkFuaW1TY3JvbGxZJ107XG4gICAgICAgIGlmICh1dkFuaW1hdGlvblNjcm9sbFlTcGVlZEZhY3RvciAhPSBudWxsKSB7XG4gICAgICAgICAgICB1dkFuaW1hdGlvblNjcm9sbFlTcGVlZEZhY3RvciA9IC11dkFuaW1hdGlvblNjcm9sbFlTcGVlZEZhY3RvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1dkFuaW1hdGlvblJvdGF0aW9uU3BlZWRGYWN0b3IgPSAoXzE5ID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmZsb2F0UHJvcGVydGllcykgPT09IG51bGwgfHwgXzE5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfMTlbJ19VdkFuaW1Sb3RhdGlvbiddO1xuICAgICAgICBjb25zdCBtdG9vbkV4dGVuc2lvbiA9IHtcbiAgICAgICAgICAgIHNwZWNWZXJzaW9uOiAnMS4wJyxcbiAgICAgICAgICAgIHRyYW5zcGFyZW50V2l0aFpXcml0ZSxcbiAgICAgICAgICAgIHJlbmRlclF1ZXVlT2Zmc2V0TnVtYmVyLFxuICAgICAgICAgICAgc2hhZGVDb2xvckZhY3RvcixcbiAgICAgICAgICAgIHNoYWRlTXVsdGlwbHlUZXh0dXJlLFxuICAgICAgICAgICAgc2hhZGluZ1NoaWZ0RmFjdG9yLFxuICAgICAgICAgICAgc2hhZGluZ1Rvb255RmFjdG9yLFxuICAgICAgICAgICAgZ2lFcXVhbGl6YXRpb25GYWN0b3IsXG4gICAgICAgICAgICBtYXRjYXBGYWN0b3IsXG4gICAgICAgICAgICBtYXRjYXBUZXh0dXJlLFxuICAgICAgICAgICAgcmltTGlnaHRpbmdNaXhGYWN0b3IsXG4gICAgICAgICAgICByaW1NdWx0aXBseVRleHR1cmUsXG4gICAgICAgICAgICBwYXJhbWV0cmljUmltQ29sb3JGYWN0b3IsXG4gICAgICAgICAgICBwYXJhbWV0cmljUmltRnJlc25lbFBvd2VyRmFjdG9yLFxuICAgICAgICAgICAgcGFyYW1ldHJpY1JpbUxpZnRGYWN0b3IsXG4gICAgICAgICAgICBvdXRsaW5lV2lkdGhNb2RlLFxuICAgICAgICAgICAgb3V0bGluZVdpZHRoRmFjdG9yLFxuICAgICAgICAgICAgb3V0bGluZVdpZHRoTXVsdGlwbHlUZXh0dXJlLFxuICAgICAgICAgICAgb3V0bGluZUNvbG9yRmFjdG9yLFxuICAgICAgICAgICAgb3V0bGluZUxpZ2h0aW5nTWl4RmFjdG9yLFxuICAgICAgICAgICAgdXZBbmltYXRpb25NYXNrVGV4dHVyZSxcbiAgICAgICAgICAgIHV2QW5pbWF0aW9uU2Nyb2xsWFNwZWVkRmFjdG9yLFxuICAgICAgICAgICAgdXZBbmltYXRpb25TY3JvbGxZU3BlZWRGYWN0b3IsXG4gICAgICAgICAgICB1dkFuaW1hdGlvblJvdGF0aW9uU3BlZWRGYWN0b3IsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNjaGVtYU1hdGVyaWFsKSwgeyBwYnJNZXRhbGxpY1JvdWdobmVzczoge1xuICAgICAgICAgICAgICAgIGJhc2VDb2xvckZhY3RvcixcbiAgICAgICAgICAgICAgICBiYXNlQ29sb3JUZXh0dXJlLFxuICAgICAgICAgICAgfSwgbm9ybWFsVGV4dHVyZSxcbiAgICAgICAgICAgIGVtaXNzaXZlVGV4dHVyZSxcbiAgICAgICAgICAgIGVtaXNzaXZlRmFjdG9yLFxuICAgICAgICAgICAgYWxwaGFNb2RlLFxuICAgICAgICAgICAgYWxwaGFDdXRvZmYsXG4gICAgICAgICAgICBkb3VibGVTaWRlZCwgZXh0ZW5zaW9uczoge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAgICAgICAgICAgICBWUk1DX21hdGVyaWFsc19tdG9vbjogbXRvb25FeHRlbnNpb24sXG4gICAgICAgICAgICB9IH0pO1xuICAgIH1cbiAgICBfcGFyc2VWMFVubGl0UHJvcGVydGllcyhtYXRlcmlhbFByb3BlcnRpZXMsIHNjaGVtYU1hdGVyaWFsKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgY29uc3QgaXNUcmFuc3BhcmVudFpXcml0ZSA9IG1hdGVyaWFsUHJvcGVydGllcy5zaGFkZXIgPT09ICdWUk0vVW5saXRUcmFuc3BhcmVudFpXcml0ZSc7XG4gICAgICAgIGNvbnN0IGlzVHJhbnNwYXJlbnQgPSBtYXRlcmlhbFByb3BlcnRpZXMuc2hhZGVyID09PSAnVlJNL1VubGl0VHJhbnNwYXJlbnQnIHx8IGlzVHJhbnNwYXJlbnRaV3JpdGU7XG4gICAgICAgIGNvbnN0IHJlbmRlclF1ZXVlT2Zmc2V0TnVtYmVyID0gdGhpcy5fdjBQYXJzZVJlbmRlclF1ZXVlKG1hdGVyaWFsUHJvcGVydGllcyk7XG4gICAgICAgIGNvbnN0IGlzQ3V0b2ZmID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnNoYWRlciA9PT0gJ1ZSTS9VbmxpdEN1dG91dCc7XG4gICAgICAgIGNvbnN0IGFscGhhTW9kZSA9IGlzVHJhbnNwYXJlbnQgPyAnQkxFTkQnIDogaXNDdXRvZmYgPyAnTUFTSycgOiAnT1BBUVVFJztcbiAgICAgICAgY29uc3QgYWxwaGFDdXRvZmYgPSBpc0N1dG9mZiA/IChfYSA9IG1hdGVyaWFsUHJvcGVydGllcy5mbG9hdFByb3BlcnRpZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVsnX0N1dG9mZiddIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCB0ZXh0dXJlVHJhbnNmb3JtRXh0ID0gdGhpcy5fcG9ydFRleHR1cmVUcmFuc2Zvcm0obWF0ZXJpYWxQcm9wZXJ0aWVzKTtcbiAgICAgICAgY29uc3QgYmFzZUNvbG9yRmFjdG9yID0gKF9jID0gKF9iID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnZlY3RvclByb3BlcnRpZXMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYlsnX0NvbG9yJ10pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5tYXAoZ2FtbWFFT1RGKTtcbiAgICAgICAgY29uc3QgYmFzZUNvbG9yVGV4dHVyZUluZGV4ID0gKF9kID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnRleHR1cmVQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RbJ19NYWluVGV4J107XG4gICAgICAgIGNvbnN0IGJhc2VDb2xvclRleHR1cmUgPSBiYXNlQ29sb3JUZXh0dXJlSW5kZXggIT0gbnVsbFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgaW5kZXg6IGJhc2VDb2xvclRleHR1cmVJbmRleCxcbiAgICAgICAgICAgICAgICBleHRlbnNpb25zOiBPYmplY3QuYXNzaWduKHt9LCB0ZXh0dXJlVHJhbnNmb3JtRXh0KSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAvLyB1c2UgbXRvb24gaW5zdGVhZCBvZiB1bmxpdCwgc2luY2UgdGhlcmUgbWlnaHQgYmUgVlJNMC4wIHNwZWNpZmljIGZlYXR1cmVzIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgZ2x0ZlxuICAgICAgICBjb25zdCBtdG9vbkV4dGVuc2lvbiA9IHtcbiAgICAgICAgICAgIHNwZWNWZXJzaW9uOiAnMS4wJyxcbiAgICAgICAgICAgIHRyYW5zcGFyZW50V2l0aFpXcml0ZTogaXNUcmFuc3BhcmVudFpXcml0ZSxcbiAgICAgICAgICAgIHJlbmRlclF1ZXVlT2Zmc2V0TnVtYmVyLFxuICAgICAgICAgICAgc2hhZGVDb2xvckZhY3RvcjogYmFzZUNvbG9yRmFjdG9yLFxuICAgICAgICAgICAgc2hhZGVNdWx0aXBseVRleHR1cmU6IGJhc2VDb2xvclRleHR1cmUsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNjaGVtYU1hdGVyaWFsKSwgeyBwYnJNZXRhbGxpY1JvdWdobmVzczoge1xuICAgICAgICAgICAgICAgIGJhc2VDb2xvckZhY3RvcixcbiAgICAgICAgICAgICAgICBiYXNlQ29sb3JUZXh0dXJlLFxuICAgICAgICAgICAgfSwgYWxwaGFNb2RlLFxuICAgICAgICAgICAgYWxwaGFDdXRvZmYsIGV4dGVuc2lvbnM6IHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgICAgICAgICAgICAgVlJNQ19tYXRlcmlhbHNfbXRvb246IG10b29uRXh0ZW5zaW9uLFxuICAgICAgICAgICAgfSB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgZ2xURiBgS0hSX3RleHR1cmVfdHJhbnNmb3JtYCBleHRlbnNpb24gZnJvbSB2MCB0ZXh0dXJlIHRyYW5zZm9ybSBpbmZvLlxuICAgICAqL1xuICAgIF9wb3J0VGV4dHVyZVRyYW5zZm9ybShtYXRlcmlhbFByb3BlcnRpZXMpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgY29uc3QgdGV4dHVyZVRyYW5zZm9ybSA9IChfYSA9IG1hdGVyaWFsUHJvcGVydGllcy52ZWN0b3JQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbJ19NYWluVGV4J107XG4gICAgICAgIGlmICh0ZXh0dXJlVHJhbnNmb3JtID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvZmZzZXQgPSBbKF9iID0gdGV4dHVyZVRyYW5zZm9ybSA9PT0gbnVsbCB8fCB0ZXh0dXJlVHJhbnNmb3JtID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0ZXh0dXJlVHJhbnNmb3JtWzBdKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwLjAsIChfYyA9IHRleHR1cmVUcmFuc2Zvcm0gPT09IG51bGwgfHwgdGV4dHVyZVRyYW5zZm9ybSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGV4dHVyZVRyYW5zZm9ybVsxXSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMC4wXTtcbiAgICAgICAgY29uc3Qgc2NhbGUgPSBbKF9kID0gdGV4dHVyZVRyYW5zZm9ybSA9PT0gbnVsbCB8fCB0ZXh0dXJlVHJhbnNmb3JtID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0ZXh0dXJlVHJhbnNmb3JtWzJdKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAxLjAsIChfZSA9IHRleHR1cmVUcmFuc2Zvcm0gPT09IG51bGwgfHwgdGV4dHVyZVRyYW5zZm9ybSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGV4dHVyZVRyYW5zZm9ybVszXSkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogMS4wXTtcbiAgICAgICAgb2Zmc2V0WzFdID0gMS4wIC0gc2NhbGVbMV0gLSBvZmZzZXRbMV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgICAgICAgICBLSFJfdGV4dHVyZV90cmFuc2Zvcm06IHsgb2Zmc2V0LCBzY2FsZSB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IHYwIHJlbmRlciBvcmRlciBpbnRvIHYxIHJlbmRlciBvcmRlci5cbiAgICAgKiBUaGlzIHVzZXMgYSBtYXAgZnJvbSB2MCByZW5kZXIgcXVldWUgdG8gdjEgY29tcGxpYW50IHJlbmRlciBxdWV1ZSBvZmZzZXQgd2hpY2ggaXMgZ2VuZXJhdGVkIGluIHtAbGluayBfcG9wdWxhdGVSZW5kZXJRdWV1ZU1hcH0uXG4gICAgICovXG4gICAgX3YwUGFyc2VSZW5kZXJRdWV1ZShtYXRlcmlhbFByb3BlcnRpZXMpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGNvbnN0IGlzVHJhbnNwYXJlbnQgPSAoX2IgPSAoX2EgPSBtYXRlcmlhbFByb3BlcnRpZXMua2V5d29yZE1hcCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWydfQUxQSEFCTEVORF9PTiddKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBmYWxzZTtcbiAgICAgICAgY29uc3QgZW5hYmxlZFpXcml0ZSA9ICgoX2MgPSBtYXRlcmlhbFByb3BlcnRpZXMuZmxvYXRQcm9wZXJ0aWVzKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NbJ19aV3JpdGUnXSkgPT09IDE7XG4gICAgICAgIGxldCBvZmZzZXQgPSAwO1xuICAgICAgICBpZiAoaXNUcmFuc3BhcmVudCkge1xuICAgICAgICAgICAgY29uc3QgdjBRdWV1ZSA9IG1hdGVyaWFsUHJvcGVydGllcy5yZW5kZXJRdWV1ZTtcbiAgICAgICAgICAgIGlmICh2MFF1ZXVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoZW5hYmxlZFpXcml0ZSkge1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSB0aGlzLl9yZW5kZXJRdWV1ZU1hcFRyYW5zcGFyZW50WldyaXRlLmdldCh2MFF1ZXVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHRoaXMuX3JlbmRlclF1ZXVlTWFwVHJhbnNwYXJlbnQuZ2V0KHYwUXVldWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBtYXAgd2hpY2ggbWFwcyB2MCByZW5kZXIgcXVldWUgdG8gdjEgY29tcGxpYW50IHJlbmRlciBxdWV1ZSBvZmZzZXQuXG4gICAgICogVGhpcyBsaXN0cyB1cCBhbGwgcmVuZGVyIHF1ZXVlcyB0aGUgbW9kZWwgdXNlIGFuZCBjcmVhdGVzIGEgbWFwIHRvIG5ldyByZW5kZXIgcXVldWUgb2Zmc2V0cyBpbiB0aGUgc2FtZSBvcmRlci5cbiAgICAgKi9cbiAgICBfcG9wdWxhdGVSZW5kZXJRdWV1ZU1hcChtYXRlcmlhbFByb3BlcnRpZXNMaXN0KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIHNldCBvZiB1c2VkIHJlbmRlciBxdWV1ZXMgaW4gVHJhbnNwYXJlbnQgbWF0ZXJpYWxzLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgcmVuZGVyUXVldWVzVHJhbnNwYXJlbnQgPSBuZXcgU2V0KCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIHNldCBvZiB1c2VkIHJlbmRlciBxdWV1ZXMgaW4gVHJhbnNwYXJlbnRaV3JpdGUgbWF0ZXJpYWxzLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgcmVuZGVyUXVldWVzVHJhbnNwYXJlbnRaV3JpdGUgPSBuZXcgU2V0KCk7XG4gICAgICAgIC8vIHBvcHVsYXRlIHRoZSByZW5kZXIgcXVldWUgc2V0XG4gICAgICAgIG1hdGVyaWFsUHJvcGVydGllc0xpc3QuZm9yRWFjaCgobWF0ZXJpYWxQcm9wZXJ0aWVzKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIGNvbnN0IGlzVHJhbnNwYXJlbnQgPSAoX2IgPSAoX2EgPSBtYXRlcmlhbFByb3BlcnRpZXMua2V5d29yZE1hcCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWydfQUxQSEFCTEVORF9PTiddKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGVuYWJsZWRaV3JpdGUgPSAoKF9jID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLmZsb2F0UHJvcGVydGllcykgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jWydfWldyaXRlJ10pID09PSAxO1xuICAgICAgICAgICAgaWYgKGlzVHJhbnNwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2MFF1ZXVlID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnJlbmRlclF1ZXVlO1xuICAgICAgICAgICAgICAgIGlmICh2MFF1ZXVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVuYWJsZWRaV3JpdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclF1ZXVlc1RyYW5zcGFyZW50WldyaXRlLmFkZCh2MFF1ZXVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclF1ZXVlc1RyYW5zcGFyZW50LmFkZCh2MFF1ZXVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHNob3cgYSB3YXJuaW5nIGlmIHRoZSBtb2RlbCB1c2VzIHYxIGluY29tcGF0aWJsZSBudW1iZXIgb2YgcmVuZGVyIHF1ZXVlc1xuICAgICAgICBpZiAocmVuZGVyUXVldWVzVHJhbnNwYXJlbnQuc2l6ZSA+IDEwKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFZSTU1hdGVyaWFsc1YwQ29tcGF0UGx1Z2luOiBUaGlzIFZSTSB1c2VzICR7cmVuZGVyUXVldWVzVHJhbnNwYXJlbnQuc2l6ZX0gcmVuZGVyIHF1ZXVlcyBmb3IgVHJhbnNwYXJlbnQgbWF0ZXJpYWxzIHdoaWxlIFZSTSAxLjAgb25seSBzdXBwb3J0cyB1cCB0byAxMCByZW5kZXIgcXVldWVzLiBUaGUgbW9kZWwgbWlnaHQgbm90IGJlIHJlbmRlcmVkIGNvcnJlY3RseS5gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVuZGVyUXVldWVzVHJhbnNwYXJlbnRaV3JpdGUuc2l6ZSA+IDEwKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFZSTU1hdGVyaWFsc1YwQ29tcGF0UGx1Z2luOiBUaGlzIFZSTSB1c2VzICR7cmVuZGVyUXVldWVzVHJhbnNwYXJlbnRaV3JpdGUuc2l6ZX0gcmVuZGVyIHF1ZXVlcyBmb3IgVHJhbnNwYXJlbnRaV3JpdGUgbWF0ZXJpYWxzIHdoaWxlIFZSTSAxLjAgb25seSBzdXBwb3J0cyB1cCB0byAxMCByZW5kZXIgcXVldWVzLiBUaGUgbW9kZWwgbWlnaHQgbm90IGJlIHJlbmRlcmVkIGNvcnJlY3RseS5gKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjcmVhdGUgYSBtYXAgZnJvbSB2MCByZW5kZXIgcXVldWUgdG8gdjEgcmVuZGVyIHF1ZXVlIG9mZnNldFxuICAgICAgICBBcnJheS5mcm9tKHJlbmRlclF1ZXVlc1RyYW5zcGFyZW50KVxuICAgICAgICAgICAgLnNvcnQoKVxuICAgICAgICAgICAgLmZvckVhY2goKHF1ZXVlLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdRdWV1ZU9mZnNldCA9IE1hdGgubWluKE1hdGgubWF4KGkgLSByZW5kZXJRdWV1ZXNUcmFuc3BhcmVudC5zaXplICsgMSwgLTkpLCAwKTtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlclF1ZXVlTWFwVHJhbnNwYXJlbnQuc2V0KHF1ZXVlLCBuZXdRdWV1ZU9mZnNldCk7XG4gICAgICAgIH0pO1xuICAgICAgICBBcnJheS5mcm9tKHJlbmRlclF1ZXVlc1RyYW5zcGFyZW50WldyaXRlKVxuICAgICAgICAgICAgLnNvcnQoKVxuICAgICAgICAgICAgLmZvckVhY2goKHF1ZXVlLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdRdWV1ZU9mZnNldCA9IE1hdGgubWluKE1hdGgubWF4KGksIDApLCA5KTtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlclF1ZXVlTWFwVHJhbnNwYXJlbnRaV3JpdGUuc2V0KHF1ZXVlLCBuZXdRdWV1ZU9mZnNldCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IHsgVlJNTWF0ZXJpYWxzVjBDb21wYXRQbHVnaW4gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEdoeVpXVXRkbkp0TFcxaGRHVnlhV0ZzY3kxMk1HTnZiWEJoZEM1dGIyUjFiR1V1YW5NaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMMjV2WkdWZmJXOWtkV3hsY3k5MGMyeHBZaTkwYzJ4cFlpNWxjell1YW5NaUxDSXVMaTl6Y21NdmRYUnBiSE12WjJGdGJXRkZUMVJHTG5Seklpd2lMaTR2YzNKakwxWlNUVTFoZEdWeWFXRnNjMVl3UTI5dGNHRjBVR3gxWjJsdUxuUnpJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaXBjY2x4dVEyOXdlWEpwWjJoMElDaGpLU0JOYVdOeWIzTnZablFnUTI5eWNHOXlZWFJwYjI0dVhISmNibHh5WEc1UVpYSnRhWE56YVc5dUlIUnZJSFZ6WlN3Z1kyOXdlU3dnYlc5a2FXWjVMQ0JoYm1RdmIzSWdaR2x6ZEhKcFluVjBaU0IwYUdseklITnZablIzWVhKbElHWnZjaUJoYm5sY2NseHVjSFZ5Y0c5elpTQjNhWFJvSUc5eUlIZHBkR2h2ZFhRZ1ptVmxJR2x6SUdobGNtVmllU0JuY21GdWRHVmtMbHh5WEc1Y2NseHVWRWhGSUZOUFJsUlhRVkpGSUVsVElGQlNUMVpKUkVWRUlGd2lRVk1nU1ZOY0lpQkJUa1FnVkVoRklFRlZWRWhQVWlCRVNWTkRURUZKVFZNZ1FVeE1JRmRCVWxKQlRsUkpSVk1nVjBsVVNGeHlYRzVTUlVkQlVrUWdWRThnVkVoSlV5QlRUMFpVVjBGU1JTQkpUa05NVlVSSlRrY2dRVXhNSUVsTlVFeEpSVVFnVjBGU1VrRk9WRWxGVXlCUFJpQk5SVkpEU0VGT1ZFRkNTVXhKVkZsY2NseHVRVTVFSUVaSlZFNUZVMU11SUVsT0lFNVBJRVZXUlU1VUlGTklRVXhNSUZSSVJTQkJWVlJJVDFJZ1FrVWdURWxCUWt4RklFWlBVaUJCVGxrZ1UxQkZRMGxCVEN3Z1JFbFNSVU5VTEZ4eVhHNUpUa1JKVWtWRFZDd2dUMUlnUTA5T1UwVlJWVVZPVkVsQlRDQkVRVTFCUjBWVElFOVNJRUZPV1NCRVFVMUJSMFZUSUZkSVFWUlRUMFZXUlZJZ1VrVlRWVXhVU1U1SElFWlNUMDFjY2x4dVRFOVRVeUJQUmlCVlUwVXNJRVJCVkVFZ1QxSWdVRkpQUmtsVVV5d2dWMGhGVkVoRlVpQkpUaUJCVGlCQlExUkpUMDRnVDBZZ1EwOU9WRkpCUTFRc0lFNUZSMHhKUjBWT1EwVWdUMUpjY2x4dVQxUklSVklnVkU5U1ZFbFBWVk1nUVVOVVNVOU9MQ0JCVWtsVFNVNUhJRTlWVkNCUFJpQlBVaUJKVGlCRFQwNU9SVU5VU1U5T0lGZEpWRWdnVkVoRklGVlRSU0JQVWx4eVhHNVFSVkpHVDFKTlFVNURSU0JQUmlCVVNFbFRJRk5QUmxSWFFWSkZMbHh5WEc0cUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaUFxTDF4eVhHNHZLaUJuYkc5aVlXd2dVbVZtYkdWamRDd2dVSEp2YldselpTQXFMMXh5WEc1Y2NseHVkbUZ5SUdWNGRHVnVaRk4wWVhScFkzTWdQU0JtZFc1amRHbHZiaWhrTENCaUtTQjdYSEpjYmlBZ0lDQmxlSFJsYm1SVGRHRjBhV056SUQwZ1QySnFaV04wTG5ObGRGQnliM1J2ZEhsd1pVOW1JSHg4WEhKY2JpQWdJQ0FnSUNBZ0tIc2dYMTl3Y205MGIxOWZPaUJiWFNCOUlHbHVjM1JoYm1ObGIyWWdRWEp5WVhrZ0ppWWdablZ1WTNScGIyNGdLR1FzSUdJcElIc2daQzVmWDNCeWIzUnZYMThnUFNCaU95QjlLU0I4ZkZ4eVhHNGdJQ0FnSUNBZ0lHWjFibU4wYVc5dUlDaGtMQ0JpS1NCN0lHWnZjaUFvZG1GeUlIQWdhVzRnWWlrZ2FXWWdLRTlpYW1WamRDNXdjbTkwYjNSNWNHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrdVkyRnNiQ2hpTENCd0tTa2daRnR3WFNBOUlHSmJjRjA3SUgwN1hISmNiaUFnSUNCeVpYUjFjbTRnWlhoMFpXNWtVM1JoZEdsamN5aGtMQ0JpS1R0Y2NseHVmVHRjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMlY0ZEdWdVpITW9aQ3dnWWlrZ2UxeHlYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQmlJQ0U5UFNCY0ltWjFibU4wYVc5dVhDSWdKaVlnWWlBaFBUMGdiblZzYkNsY2NseHVJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpUTJ4aGMzTWdaWGgwWlc1a2N5QjJZV3gxWlNCY0lpQXJJRk4wY21sdVp5aGlLU0FySUZ3aUlHbHpJRzV2ZENCaElHTnZibk4wY25WamRHOXlJRzl5SUc1MWJHeGNJaWs3WEhKY2JpQWdJQ0JsZUhSbGJtUlRkR0YwYVdOektHUXNJR0lwTzF4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnWDE4b0tTQjdJSFJvYVhNdVkyOXVjM1J5ZFdOMGIzSWdQU0JrT3lCOVhISmNiaUFnSUNCa0xuQnliM1J2ZEhsd1pTQTlJR0lnUFQwOUlHNTFiR3dnUHlCUFltcGxZM1F1WTNKbFlYUmxLR0lwSURvZ0tGOWZMbkJ5YjNSdmRIbHdaU0E5SUdJdWNISnZkRzkwZVhCbExDQnVaWGNnWDE4b0tTazdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0IyWVhJZ1gxOWhjM05wWjI0Z1BTQm1kVzVqZEdsdmJpZ3BJSHRjY2x4dUlDQWdJRjlmWVhOemFXZHVJRDBnVDJKcVpXTjBMbUZ6YzJsbmJpQjhmQ0JtZFc1amRHbHZiaUJmWDJGemMybG5iaWgwS1NCN1hISmNiaUFnSUNBZ0lDQWdabTl5SUNoMllYSWdjeXdnYVNBOUlERXNJRzRnUFNCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvT3lCcElEd2dianNnYVNzcktTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lITWdQU0JoY21kMWJXVnVkSE5iYVYwN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUhBZ2FXNGdjeWtnYVdZZ0tFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVdWFHRnpUM2R1VUhKdmNHVnlkSGt1WTJGc2JDaHpMQ0J3S1NrZ2RGdHdYU0E5SUhOYmNGMDdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCME8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUNBZ2NtVjBkWEp1SUY5ZllYTnphV2R1TG1Gd2NHeDVLSFJvYVhNc0lHRnlaM1Z0Wlc1MGN5azdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNKbGMzUW9jeXdnWlNrZ2UxeHlYRzRnSUNBZ2RtRnlJSFFnUFNCN2ZUdGNjbHh1SUNBZ0lHWnZjaUFvZG1GeUlIQWdhVzRnY3lrZ2FXWWdLRTlpYW1WamRDNXdjbTkwYjNSNWNHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrdVkyRnNiQ2h6TENCd0tTQW1KaUJsTG1sdVpHVjRUMllvY0NrZ1BDQXdLVnh5WEc0Z0lDQWdJQ0FnSUhSYmNGMGdQU0J6VzNCZE8xeHlYRzRnSUNBZ2FXWWdLSE1nSVQwZ2JuVnNiQ0FtSmlCMGVYQmxiMllnVDJKcVpXTjBMbWRsZEU5M2JsQnliM0JsY25SNVUzbHRZbTlzY3lBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1Z4eVhHNGdJQ0FnSUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3TENCd0lEMGdUMkpxWldOMExtZGxkRTkzYmxCeWIzQmxjblI1VTNsdFltOXNjeWh6S1RzZ2FTQThJSEF1YkdWdVozUm9PeUJwS3lzcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR1V1YVc1a1pYaFBaaWh3VzJsZEtTQThJREFnSmlZZ1QySnFaV04wTG5CeWIzUnZkSGx3WlM1d2NtOXdaWEowZVVselJXNTFiV1Z5WVdKc1pTNWpZV3hzS0hNc0lIQmJhVjBwS1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RGdHdXMmxkWFNBOUlITmJjRnRwWFYwN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdjbVYwZFhKdUlIUTdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJSbFkyOXlZWFJsS0dSbFkyOXlZWFJ2Y25Nc0lIUmhjbWRsZEN3Z2EyVjVMQ0JrWlhOaktTQjdYSEpjYmlBZ0lDQjJZWElnWXlBOUlHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnc0lISWdQU0JqSUR3Z015QS9JSFJoY21kbGRDQTZJR1JsYzJNZ1BUMDlJRzUxYkd3Z1B5QmtaWE5qSUQwZ1QySnFaV04wTG1kbGRFOTNibEJ5YjNCbGNuUjVSR1Z6WTNKcGNIUnZjaWgwWVhKblpYUXNJR3RsZVNrZ09pQmtaWE5qTENCa08xeHlYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQlNaV1pzWldOMElEMDlQU0JjSW05aWFtVmpkRndpSUNZbUlIUjVjR1Z2WmlCU1pXWnNaV04wTG1SbFkyOXlZWFJsSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUhJZ1BTQlNaV1pzWldOMExtUmxZMjl5WVhSbEtHUmxZMjl5WVhSdmNuTXNJSFJoY21kbGRDd2dhMlY1TENCa1pYTmpLVHRjY2x4dUlDQWdJR1ZzYzJVZ1ptOXlJQ2gyWVhJZ2FTQTlJR1JsWTI5eVlYUnZjbk11YkdWdVozUm9JQzBnTVRzZ2FTQStQU0F3T3lCcExTMHBJR2xtSUNoa0lEMGdaR1ZqYjNKaGRHOXljMXRwWFNrZ2NpQTlJQ2hqSUR3Z015QS9JR1FvY2lrZ09pQmpJRDRnTXlBL0lHUW9kR0Z5WjJWMExDQnJaWGtzSUhJcElEb2daQ2gwWVhKblpYUXNJR3RsZVNrcElIeDhJSEk3WEhKY2JpQWdJQ0J5WlhSMWNtNGdZeUErSURNZ0ppWWdjaUFtSmlCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29kR0Z5WjJWMExDQnJaWGtzSUhJcExDQnlPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5d1lYSmhiU2h3WVhKaGJVbHVaR1Y0TENCa1pXTnZjbUYwYjNJcElIdGNjbHh1SUNBZ0lISmxkSFZ5YmlCbWRXNWpkR2x2YmlBb2RHRnlaMlYwTENCclpYa3BJSHNnWkdWamIzSmhkRzl5S0hSaGNtZGxkQ3dnYTJWNUxDQndZWEpoYlVsdVpHVjRLVHNnZlZ4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWxjMFJsWTI5eVlYUmxLR04wYjNJc0lHUmxjMk55YVhCMGIzSkpiaXdnWkdWamIzSmhkRzl5Y3l3Z1kyOXVkR1Y0ZEVsdUxDQnBibWwwYVdGc2FYcGxjbk1zSUdWNGRISmhTVzVwZEdsaGJHbDZaWEp6S1NCN1hISmNiaUFnSUNCbWRXNWpkR2x2YmlCaFkyTmxjSFFvWmlrZ2V5QnBaaUFvWmlBaFBUMGdkbTlwWkNBd0lDWW1JSFI1Y0dWdlppQm1JQ0U5UFNCY0ltWjFibU4wYVc5dVhDSXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKR2RXNWpkR2x2YmlCbGVIQmxZM1JsWkZ3aUtUc2djbVYwZFhKdUlHWTdJSDFjY2x4dUlDQWdJSFpoY2lCcmFXNWtJRDBnWTI5dWRHVjRkRWx1TG10cGJtUXNJR3RsZVNBOUlHdHBibVFnUFQwOUlGd2laMlYwZEdWeVhDSWdQeUJjSW1kbGRGd2lJRG9nYTJsdVpDQTlQVDBnWENKelpYUjBaWEpjSWlBL0lGd2ljMlYwWENJZ09pQmNJblpoYkhWbFhDSTdYSEpjYmlBZ0lDQjJZWElnZEdGeVoyVjBJRDBnSVdSbGMyTnlhWEIwYjNKSmJpQW1KaUJqZEc5eUlEOGdZMjl1ZEdWNGRFbHVXMXdpYzNSaGRHbGpYQ0pkSUQ4Z1kzUnZjaUE2SUdOMGIzSXVjSEp2ZEc5MGVYQmxJRG9nYm5Wc2JEdGNjbHh1SUNBZ0lIWmhjaUJrWlhOamNtbHdkRzl5SUQwZ1pHVnpZM0pwY0hSdmNrbHVJSHg4SUNoMFlYSm5aWFFnUHlCUFltcGxZM1F1WjJWMFQzZHVVSEp2Y0dWeWRIbEVaWE5qY21sd2RHOXlLSFJoY21kbGRDd2dZMjl1ZEdWNGRFbHVMbTVoYldVcElEb2dlMzBwTzF4eVhHNGdJQ0FnZG1GeUlGOHNJR1J2Ym1VZ1BTQm1ZV3h6WlR0Y2NseHVJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQmtaV052Y21GMGIzSnpMbXhsYm1kMGFDQXRJREU3SUdrZ1BqMGdNRHNnYVMwdEtTQjdYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlHTnZiblJsZUhRZ1BTQjdmVHRjY2x4dUlDQWdJQ0FnSUNCbWIzSWdLSFpoY2lCd0lHbHVJR052Ym5SbGVIUkpiaWtnWTI5dWRHVjRkRnR3WFNBOUlIQWdQVDA5SUZ3aVlXTmpaWE56WENJZ1B5QjdmU0E2SUdOdmJuUmxlSFJKYmx0d1hUdGNjbHh1SUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJ3SUdsdUlHTnZiblJsZUhSSmJpNWhZMk5sYzNNcElHTnZiblJsZUhRdVlXTmpaWE56VzNCZElEMGdZMjl1ZEdWNGRFbHVMbUZqWTJWemMxdHdYVHRjY2x4dUlDQWdJQ0FnSUNCamIyNTBaWGgwTG1Ga1pFbHVhWFJwWVd4cGVtVnlJRDBnWm5WdVkzUnBiMjRnS0dZcElIc2dhV1lnS0dSdmJtVXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKRFlXNXViM1FnWVdSa0lHbHVhWFJwWVd4cGVtVnljeUJoWm5SbGNpQmtaV052Y21GMGFXOXVJR2hoY3lCamIyMXdiR1YwWldSY0lpazdJR1Y0ZEhKaFNXNXBkR2xoYkdsNlpYSnpMbkIxYzJnb1lXTmpaWEIwS0dZZ2ZId2diblZzYkNrcE95QjlPMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQnlaWE4xYkhRZ1BTQW9NQ3dnWkdWamIzSmhkRzl5YzF0cFhTa29hMmx1WkNBOVBUMGdYQ0poWTJObGMzTnZjbHdpSUQ4Z2V5Qm5aWFE2SUdSbGMyTnlhWEIwYjNJdVoyVjBMQ0J6WlhRNklHUmxjMk55YVhCMGIzSXVjMlYwSUgwZ09pQmtaWE5qY21sd2RHOXlXMnRsZVYwc0lHTnZiblJsZUhRcE8xeHlYRzRnSUNBZ0lDQWdJR2xtSUNocmFXNWtJRDA5UFNCY0ltRmpZMlZ6YzI5eVhDSXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hKbGMzVnNkQ0E5UFQwZ2RtOXBaQ0F3S1NCamIyNTBhVzUxWlR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tISmxjM1ZzZENBOVBUMGdiblZzYkNCOGZDQjBlWEJsYjJZZ2NtVnpkV3gwSUNFOVBTQmNJbTlpYW1WamRGd2lLU0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0Z3aVQySnFaV04wSUdWNGNHVmpkR1ZrWENJcE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9YeUE5SUdGalkyVndkQ2h5WlhOMWJIUXVaMlYwS1NrZ1pHVnpZM0pwY0hSdmNpNW5aWFFnUFNCZk8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9YeUE5SUdGalkyVndkQ2h5WlhOMWJIUXVjMlYwS1NrZ1pHVnpZM0pwY0hSdmNpNXpaWFFnUFNCZk8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9YeUE5SUdGalkyVndkQ2h5WlhOMWJIUXVhVzVwZENrcElHbHVhWFJwWVd4cGVtVnljeTV3ZFhOb0tGOHBPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaGZJRDBnWVdOalpYQjBLSEpsYzNWc2RDa3BJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0d0cGJtUWdQVDA5SUZ3aVptbGxiR1JjSWlrZ2FXNXBkR2xoYkdsNlpYSnpMbkIxYzJnb1h5azdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlVnWkdWelkzSnBjSFJ2Y2x0clpYbGRJRDBnWHp0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ0lDQnBaaUFvZEdGeVoyVjBLU0JQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb2RHRnlaMlYwTENCamIyNTBaWGgwU1c0dWJtRnRaU3dnWkdWelkzSnBjSFJ2Y2lrN1hISmNiaUFnSUNCa2IyNWxJRDBnZEhKMVpUdGNjbHh1ZlR0Y2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNKMWJrbHVhWFJwWVd4cGVtVnljeWgwYUdselFYSm5MQ0JwYm1sMGFXRnNhWHBsY25Nc0lIWmhiSFZsS1NCN1hISmNiaUFnSUNCMllYSWdkWE5sVm1Gc2RXVWdQU0JoY21kMWJXVnVkSE11YkdWdVozUm9JRDRnTWp0Y2NseHVJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z2FXNXBkR2xoYkdsNlpYSnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hISmNiaUFnSUNBZ0lDQWdkbUZzZFdVZ1BTQjFjMlZXWVd4MVpTQS9JR2x1YVhScFlXeHBlbVZ5YzF0cFhTNWpZV3hzS0hSb2FYTkJjbWNzSUhaaGJIVmxLU0E2SUdsdWFYUnBZV3hwZW1WeWMxdHBYUzVqWVd4c0tIUm9hWE5CY21jcE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUNBZ2NtVjBkWEp1SUhWelpWWmhiSFZsSUQ4Z2RtRnNkV1VnT2lCMmIybGtJREE3WEhKY2JuMDdYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOXdjbTl3UzJWNUtIZ3BJSHRjY2x4dUlDQWdJSEpsZEhWeWJpQjBlWEJsYjJZZ2VDQTlQVDBnWENKemVXMWliMnhjSWlBL0lIZ2dPaUJjSWx3aUxtTnZibU5oZENoNEtUdGNjbHh1ZlR0Y2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNObGRFWjFibU4wYVc5dVRtRnRaU2htTENCdVlXMWxMQ0J3Y21WbWFYZ3BJSHRjY2x4dUlDQWdJR2xtSUNoMGVYQmxiMllnYm1GdFpTQTlQVDBnWENKemVXMWliMnhjSWlrZ2JtRnRaU0E5SUc1aGJXVXVaR1Z6WTNKcGNIUnBiMjRnUHlCY0lsdGNJaTVqYjI1allYUW9ibUZ0WlM1a1pYTmpjbWx3ZEdsdmJpd2dYQ0pkWENJcElEb2dYQ0pjSWp0Y2NseHVJQ0FnSUhKbGRIVnliaUJQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb1ppd2dYQ0p1WVcxbFhDSXNJSHNnWTI5dVptbG5kWEpoWW14bE9pQjBjblZsTENCMllXeDFaVG9nY0hKbFptbDRJRDhnWENKY0lpNWpiMjVqWVhRb2NISmxabWw0TENCY0lpQmNJaXdnYm1GdFpTa2dPaUJ1WVcxbElIMHBPMXh5WEc1OU8xeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmJXVjBZV1JoZEdFb2JXVjBZV1JoZEdGTFpYa3NJRzFsZEdGa1lYUmhWbUZzZFdVcElIdGNjbHh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdVbVZtYkdWamRDQTlQVDBnWENKdlltcGxZM1JjSWlBbUppQjBlWEJsYjJZZ1VtVm1iR1ZqZEM1dFpYUmhaR0YwWVNBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCeVpYUjFjbTRnVW1WbWJHVmpkQzV0WlhSaFpHRjBZU2h0WlhSaFpHRjBZVXRsZVN3Z2JXVjBZV1JoZEdGV1lXeDFaU2s3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyRjNZV2wwWlhJb2RHaHBjMEZ5Wnl3Z1gyRnlaM1Z0Wlc1MGN5d2dVQ3dnWjJWdVpYSmhkRzl5S1NCN1hISmNiaUFnSUNCbWRXNWpkR2x2YmlCaFpHOXdkQ2gyWVd4MVpTa2dleUJ5WlhSMWNtNGdkbUZzZFdVZ2FXNXpkR0Z1WTJWdlppQlFJRDhnZG1Gc2RXVWdPaUJ1WlhjZ1VDaG1kVzVqZEdsdmJpQW9jbVZ6YjJ4MlpTa2dleUJ5WlhOdmJIWmxLSFpoYkhWbEtUc2dmU2s3SUgxY2NseHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ0tGQWdmSHdnS0ZBZ1BTQlFjbTl0YVhObEtTa29ablZ1WTNScGIyNGdLSEpsYzI5c2RtVXNJSEpsYW1WamRDa2dlMXh5WEc0Z0lDQWdJQ0FnSUdaMWJtTjBhVzl1SUdaMWJHWnBiR3hsWkNoMllXeDFaU2tnZXlCMGNua2dleUJ6ZEdWd0tHZGxibVZ5WVhSdmNpNXVaWGgwS0haaGJIVmxLU2s3SUgwZ1kyRjBZMmdnS0dVcElIc2djbVZxWldOMEtHVXBPeUI5SUgxY2NseHVJQ0FnSUNBZ0lDQm1kVzVqZEdsdmJpQnlaV3BsWTNSbFpDaDJZV3gxWlNrZ2V5QjBjbmtnZXlCemRHVndLR2RsYm1WeVlYUnZjbHRjSW5Sb2NtOTNYQ0pkS0haaGJIVmxLU2s3SUgwZ1kyRjBZMmdnS0dVcElIc2djbVZxWldOMEtHVXBPeUI5SUgxY2NseHVJQ0FnSUNBZ0lDQm1kVzVqZEdsdmJpQnpkR1Z3S0hKbGMzVnNkQ2tnZXlCeVpYTjFiSFF1Wkc5dVpTQS9JSEpsYzI5c2RtVW9jbVZ6ZFd4MExuWmhiSFZsS1NBNklHRmtiM0IwS0hKbGMzVnNkQzUyWVd4MVpTa3VkR2hsYmlobWRXeG1hV3hzWldRc0lISmxhbVZqZEdWa0tUc2dmVnh5WEc0Z0lDQWdJQ0FnSUhOMFpYQW9LR2RsYm1WeVlYUnZjaUE5SUdkbGJtVnlZWFJ2Y2k1aGNIQnNlU2gwYUdselFYSm5MQ0JmWVhKbmRXMWxiblJ6SUh4OElGdGRLU2t1Ym1WNGRDZ3BLVHRjY2x4dUlDQWdJSDBwTzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOW5aVzVsY21GMGIzSW9kR2hwYzBGeVp5d2dZbTlrZVNrZ2UxeHlYRzRnSUNBZ2RtRnlJRjhnUFNCN0lHeGhZbVZzT2lBd0xDQnpaVzUwT2lCbWRXNWpkR2x2YmlncElIc2dhV1lnS0hSYk1GMGdKaUF4S1NCMGFISnZkeUIwV3pGZE95QnlaWFIxY200Z2RGc3hYVHNnZlN3Z2RISjVjem9nVzEwc0lHOXdjem9nVzEwZ2ZTd2daaXdnZVN3Z2RDd2daenRjY2x4dUlDQWdJSEpsZEhWeWJpQm5JRDBnZXlCdVpYaDBPaUIyWlhKaUtEQXBMQ0JjSW5Sb2NtOTNYQ0k2SUhabGNtSW9NU2tzSUZ3aWNtVjBkWEp1WENJNklIWmxjbUlvTWlrZ2ZTd2dkSGx3Wlc5bUlGTjViV0p2YkNBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUNZbUlDaG5XMU41YldKdmJDNXBkR1Z5WVhSdmNsMGdQU0JtZFc1amRHbHZiaWdwSUhzZ2NtVjBkWEp1SUhSb2FYTTdJSDBwTENCbk8xeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z2RtVnlZaWh1S1NCN0lISmxkSFZ5YmlCbWRXNWpkR2x2YmlBb2Rpa2dleUJ5WlhSMWNtNGdjM1JsY0NoYmJpd2dkbDBwT3lCOU95QjlYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQnpkR1Z3S0c5d0tTQjdYSEpjYmlBZ0lDQWdJQ0FnYVdZZ0tHWXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKSFpXNWxjbUYwYjNJZ2FYTWdZV3h5WldGa2VTQmxlR1ZqZFhScGJtY3VYQ0lwTzF4eVhHNGdJQ0FnSUNBZ0lIZG9hV3hsSUNobklDWW1JQ2huSUQwZ01Dd2diM0JiTUYwZ0ppWWdLRjhnUFNBd0tTa3NJRjhwSUhSeWVTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2htSUQwZ01Td2dlU0FtSmlBb2RDQTlJRzl3V3pCZElDWWdNaUEvSUhsYlhDSnlaWFIxY201Y0lsMGdPaUJ2Y0Zzd1hTQS9JSGxiWENKMGFISnZkMXdpWFNCOGZDQW9LSFFnUFNCNVcxd2ljbVYwZFhKdVhDSmRLU0FtSmlCMExtTmhiR3dvZVNrc0lEQXBJRG9nZVM1dVpYaDBLU0FtSmlBaEtIUWdQU0IwTG1OaGJHd29lU3dnYjNCYk1WMHBLUzVrYjI1bEtTQnlaWFIxY200Z2REdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSGtnUFNBd0xDQjBLU0J2Y0NBOUlGdHZjRnN3WFNBbUlESXNJSFF1ZG1Gc2RXVmRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpkMmwwWTJnZ0tHOXdXekJkS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSURBNklHTmhjMlVnTVRvZ2RDQTlJRzl3T3lCaWNtVmhhenRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdORG9nWHk1c1lXSmxiQ3NyT3lCeVpYUjFjbTRnZXlCMllXeDFaVG9nYjNCYk1WMHNJR1J2Ym1VNklHWmhiSE5sSUgwN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSURVNklGOHViR0ZpWld3ckt6c2dlU0E5SUc5d1d6RmRPeUJ2Y0NBOUlGc3dYVHNnWTI5dWRHbHVkV1U3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRGM2SUc5d0lEMGdYeTV2Y0hNdWNHOXdLQ2s3SUY4dWRISjVjeTV3YjNBb0tUc2dZMjl1ZEdsdWRXVTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrWldaaGRXeDBPbHh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2doS0hRZ1BTQmZMblJ5ZVhNc0lIUWdQU0IwTG14bGJtZDBhQ0ErSURBZ0ppWWdkRnQwTG14bGJtZDBhQ0F0SURGZEtTQW1KaUFvYjNCYk1GMGdQVDA5SURZZ2ZId2diM0JiTUYwZ1BUMDlJRElwS1NCN0lGOGdQU0F3T3lCamIyNTBhVzUxWlRzZ2ZWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHZjRnN3WFNBOVBUMGdNeUFtSmlBb0lYUWdmSHdnS0c5d1d6RmRJRDRnZEZzd1hTQW1KaUJ2Y0ZzeFhTQThJSFJiTTEwcEtTa2dleUJmTG14aFltVnNJRDBnYjNCYk1WMDdJR0p5WldGck95QjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzl3V3pCZElEMDlQU0EySUNZbUlGOHViR0ZpWld3Z1BDQjBXekZkS1NCN0lGOHViR0ZpWld3Z1BTQjBXekZkT3lCMElEMGdiM0E3SUdKeVpXRnJPeUI5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hRZ0ppWWdYeTVzWVdKbGJDQThJSFJiTWwwcElIc2dYeTVzWVdKbGJDQTlJSFJiTWwwN0lGOHViM0J6TG5CMWMyZ29iM0FwT3lCaWNtVmhhenNnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMFd6SmRLU0JmTG05d2N5NXdiM0FvS1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JmTG5SeWVYTXVjRzl3S0NrN0lHTnZiblJwYm5WbE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdJQ0FnSUc5d0lEMGdZbTlrZVM1allXeHNLSFJvYVhOQmNtY3NJRjhwTzF4eVhHNGdJQ0FnSUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHNnYjNBZ1BTQmJOaXdnWlYwN0lIa2dQU0F3T3lCOUlHWnBibUZzYkhrZ2V5Qm1JRDBnZENBOUlEQTdJSDFjY2x4dUlDQWdJQ0FnSUNCcFppQW9iM0JiTUYwZ0ppQTFLU0IwYUhKdmR5QnZjRnN4WFRzZ2NtVjBkWEp1SUhzZ2RtRnNkV1U2SUc5d1d6QmRJRDhnYjNCYk1WMGdPaUIyYjJsa0lEQXNJR1J2Ym1VNklIUnlkV1VnZlR0Y2NseHVJQ0FnSUgxY2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElIWmhjaUJmWDJOeVpXRjBaVUpwYm1ScGJtY2dQU0JQWW1wbFkzUXVZM0psWVhSbElEOGdLR1oxYm1OMGFXOXVLRzhzSUcwc0lHc3NJR3N5S1NCN1hISmNiaUFnSUNCcFppQW9heklnUFQwOUlIVnVaR1ZtYVc1bFpDa2dheklnUFNCck8xeHlYRzRnSUNBZ2RtRnlJR1JsYzJNZ1BTQlBZbXBsWTNRdVoyVjBUM2R1VUhKdmNHVnlkSGxFWlhOamNtbHdkRzl5S0cwc0lHc3BPMXh5WEc0Z0lDQWdhV1lnS0NGa1pYTmpJSHg4SUNoY0ltZGxkRndpSUdsdUlHUmxjMk1nUHlBaGJTNWZYMlZ6VFc5a2RXeGxJRG9nWkdWell5NTNjbWwwWVdKc1pTQjhmQ0JrWlhOakxtTnZibVpwWjNWeVlXSnNaU2twSUh0Y2NseHVJQ0FnSUNBZ0lDQmtaWE5qSUQwZ2V5QmxiblZ0WlhKaFlteGxPaUIwY25WbExDQm5aWFE2SUdaMWJtTjBhVzl1S0NrZ2V5QnlaWFIxY200Z2JWdHJYVHNnZlNCOU8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUNBZ1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLRzhzSUdzeUxDQmtaWE5qS1R0Y2NseHVmU2tnT2lBb1puVnVZM1JwYjI0b2J5d2diU3dnYXl3Z2F6SXBJSHRjY2x4dUlDQWdJR2xtSUNock1pQTlQVDBnZFc1a1pXWnBibVZrS1NCck1pQTlJR3M3WEhKY2JpQWdJQ0J2VzJzeVhTQTlJRzFiYTEwN1hISmNibjBwTzF4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmWlhod2IzSjBVM1JoY2lodExDQnZLU0I3WEhKY2JpQWdJQ0JtYjNJZ0tIWmhjaUJ3SUdsdUlHMHBJR2xtSUNod0lDRTlQU0JjSW1SbFptRjFiSFJjSWlBbUppQWhUMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLRzhzSUhBcEtTQmZYMk55WldGMFpVSnBibVJwYm1jb2J5d2diU3dnY0NrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM1poYkhWbGN5aHZLU0I3WEhKY2JpQWdJQ0IyWVhJZ2N5QTlJSFI1Y0dWdlppQlRlVzFpYjJ3Z1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBbUppQlRlVzFpYjJ3dWFYUmxjbUYwYjNJc0lHMGdQU0J6SUNZbUlHOWJjMTBzSUdrZ1BTQXdPMXh5WEc0Z0lDQWdhV1lnS0cwcElISmxkSFZ5YmlCdExtTmhiR3dvYnlrN1hISmNiaUFnSUNCcFppQW9ieUFtSmlCMGVYQmxiMllnYnk1c1pXNW5kR2dnUFQwOUlGd2liblZ0WW1WeVhDSXBJSEpsZEhWeWJpQjdYSEpjYmlBZ0lDQWdJQ0FnYm1WNGREb2dablZ1WTNScGIyNGdLQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2J5QW1KaUJwSUQ0OUlHOHViR1Z1WjNSb0tTQnZJRDBnZG05cFpDQXdPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2V5QjJZV3gxWlRvZ2J5QW1KaUJ2VzJrcksxMHNJR1J2Ym1VNklDRnZJSDA3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZUdGNjbHh1SUNBZ0lIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9jeUEvSUZ3aVQySnFaV04wSUdseklHNXZkQ0JwZEdWeVlXSnNaUzVjSWlBNklGd2lVM2x0WW05c0xtbDBaWEpoZEc5eUlHbHpJRzV2ZENCa1pXWnBibVZrTGx3aUtUdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmY21WaFpDaHZMQ0J1S1NCN1hISmNiaUFnSUNCMllYSWdiU0E5SUhSNWNHVnZaaUJUZVcxaWIyd2dQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQW1KaUJ2VzFONWJXSnZiQzVwZEdWeVlYUnZjbDA3WEhKY2JpQWdJQ0JwWmlBb0lXMHBJSEpsZEhWeWJpQnZPMXh5WEc0Z0lDQWdkbUZ5SUdrZ1BTQnRMbU5oYkd3b2J5a3NJSElzSUdGeUlEMGdXMTBzSUdVN1hISmNiaUFnSUNCMGNua2dlMXh5WEc0Z0lDQWdJQ0FnSUhkb2FXeGxJQ2dvYmlBOVBUMGdkbTlwWkNBd0lIeDhJRzR0TFNBK0lEQXBJQ1ltSUNFb2NpQTlJR2t1Ym1WNGRDZ3BLUzVrYjI1bEtTQmhjaTV3ZFhOb0tISXVkbUZzZFdVcE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUNBZ1kyRjBZMmdnS0dWeWNtOXlLU0I3SUdVZ1BTQjdJR1Z5Y205eU9pQmxjbkp2Y2lCOU95QjlYSEpjYmlBZ0lDQm1hVzVoYkd4NUlIdGNjbHh1SUNBZ0lDQWdJQ0IwY25rZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jaUFtSmlBaGNpNWtiMjVsSUNZbUlDaHRJRDBnYVZ0Y0luSmxkSFZ5Ymx3aVhTa3BJRzB1WTJGc2JDaHBLVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdabWx1WVd4c2VTQjdJR2xtSUNobEtTQjBhSEp2ZHlCbExtVnljbTl5T3lCOVhISmNiaUFnSUNCOVhISmNiaUFnSUNCeVpYUjFjbTRnWVhJN1hISmNibjFjY2x4dVhISmNiaThxS2lCQVpHVndjbVZqWVhSbFpDQXFMMXh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5emNISmxZV1FvS1NCN1hISmNiaUFnSUNCbWIzSWdLSFpoY2lCaGNpQTlJRnRkTENCcElEMGdNRHNnYVNBOElHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnN0lHa3JLeWxjY2x4dUlDQWdJQ0FnSUNCaGNpQTlJR0Z5TG1OdmJtTmhkQ2hmWDNKbFlXUW9ZWEpuZFcxbGJuUnpXMmxkS1NrN1hISmNiaUFnSUNCeVpYUjFjbTRnWVhJN1hISmNibjFjY2x4dVhISmNiaThxS2lCQVpHVndjbVZqWVhSbFpDQXFMMXh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5emNISmxZV1JCY25KaGVYTW9LU0I3WEhKY2JpQWdJQ0JtYjNJZ0tIWmhjaUJ6SUQwZ01Dd2dhU0E5SURBc0lHbHNJRDBnWVhKbmRXMWxiblJ6TG14bGJtZDBhRHNnYVNBOElHbHNPeUJwS3lzcElITWdLejBnWVhKbmRXMWxiblJ6VzJsZExteGxibWQwYUR0Y2NseHVJQ0FnSUdadmNpQW9kbUZ5SUhJZ1BTQkJjbkpoZVNoektTd2dheUE5SURBc0lHa2dQU0F3T3lCcElEd2dhV3c3SUdrckt5bGNjbHh1SUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJoSUQwZ1lYSm5kVzFsYm5SelcybGRMQ0JxSUQwZ01Dd2dhbXdnUFNCaExteGxibWQwYURzZ2FpQThJR3BzT3lCcUt5c3NJR3NyS3lsY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnY2x0clhTQTlJR0ZiYWwwN1hISmNiaUFnSUNCeVpYUjFjbTRnY2p0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZjM0J5WldGa1FYSnlZWGtvZEc4c0lHWnliMjBzSUhCaFkyc3BJSHRjY2x4dUlDQWdJR2xtSUNod1lXTnJJSHg4SUdGeVozVnRaVzUwY3k1c1pXNW5kR2dnUFQwOUlESXBJR1p2Y2lBb2RtRnlJR2tnUFNBd0xDQnNJRDBnWm5KdmJTNXNaVzVuZEdnc0lHRnlPeUJwSUR3Z2JEc2dhU3NyS1NCN1hISmNiaUFnSUNBZ0lDQWdhV1lnS0dGeUlIeDhJQ0VvYVNCcGJpQm1jbTl0S1NrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JV0Z5S1NCaGNpQTlJRUZ5Y21GNUxuQnliM1J2ZEhsd1pTNXpiR2xqWlM1allXeHNLR1p5YjIwc0lEQXNJR2twTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JoY2x0cFhTQTlJR1p5YjIxYmFWMDdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJSFJ2TG1OdmJtTmhkQ2hoY2lCOGZDQkJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyeHBZMlV1WTJGc2JDaG1jbTl0S1NrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMkYzWVdsMEtIWXBJSHRjY2x4dUlDQWdJSEpsZEhWeWJpQjBhR2x6SUdsdWMzUmhibU5sYjJZZ1gxOWhkMkZwZENBL0lDaDBhR2x6TG5ZZ1BTQjJMQ0IwYUdsektTQTZJRzVsZHlCZlgyRjNZV2wwS0hZcE8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTloYzNsdVkwZGxibVZ5WVhSdmNpaDBhR2x6UVhKbkxDQmZZWEpuZFcxbGJuUnpMQ0JuWlc1bGNtRjBiM0lwSUh0Y2NseHVJQ0FnSUdsbUlDZ2hVM2x0WW05c0xtRnplVzVqU1hSbGNtRjBiM0lwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSlRlVzFpYjJ3dVlYTjVibU5KZEdWeVlYUnZjaUJwY3lCdWIzUWdaR1ZtYVc1bFpDNWNJaWs3WEhKY2JpQWdJQ0IyWVhJZ1p5QTlJR2RsYm1WeVlYUnZjaTVoY0hCc2VTaDBhR2x6UVhKbkxDQmZZWEpuZFcxbGJuUnpJSHg4SUZ0ZEtTd2dhU3dnY1NBOUlGdGRPMXh5WEc0Z0lDQWdjbVYwZFhKdUlHa2dQU0I3ZlN3Z2RtVnlZaWhjSW01bGVIUmNJaWtzSUhabGNtSW9YQ0owYUhKdmQxd2lLU3dnZG1WeVlpaGNJbkpsZEhWeWJsd2lLU3dnYVZ0VGVXMWliMnd1WVhONWJtTkpkR1Z5WVhSdmNsMGdQU0JtZFc1amRHbHZiaUFvS1NCN0lISmxkSFZ5YmlCMGFHbHpPeUI5TENCcE8xeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z2RtVnlZaWh1S1NCN0lHbG1JQ2huVzI1ZEtTQnBXMjVkSUQwZ1puVnVZM1JwYjI0Z0tIWXBJSHNnY21WMGRYSnVJRzVsZHlCUWNtOXRhWE5sS0daMWJtTjBhVzl1SUNoaExDQmlLU0I3SUhFdWNIVnphQ2hiYml3Z2Rpd2dZU3dnWWwwcElENGdNU0I4ZkNCeVpYTjFiV1VvYml3Z2RpazdJSDBwT3lCOU95QjlYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQnlaWE4xYldVb2Jpd2dkaWtnZXlCMGNua2dleUJ6ZEdWd0tHZGJibDBvZGlrcE95QjlJR05oZEdOb0lDaGxLU0I3SUhObGRIUnNaU2h4V3pCZFd6TmRMQ0JsS1RzZ2ZTQjlYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQnpkR1Z3S0hJcElIc2djaTUyWVd4MVpTQnBibk4wWVc1alpXOW1JRjlmWVhkaGFYUWdQeUJRY205dGFYTmxMbkpsYzI5c2RtVW9jaTUyWVd4MVpTNTJLUzUwYUdWdUtHWjFiR1pwYkd3c0lISmxhbVZqZENrZ09pQnpaWFIwYkdVb2NWc3dYVnN5WFN3Z2NpazdJSDFjY2x4dUlDQWdJR1oxYm1OMGFXOXVJR1oxYkdacGJHd29kbUZzZFdVcElIc2djbVZ6ZFcxbEtGd2libVY0ZEZ3aUxDQjJZV3gxWlNrN0lIMWNjbHh1SUNBZ0lHWjFibU4wYVc5dUlISmxhbVZqZENoMllXeDFaU2tnZXlCeVpYTjFiV1VvWENKMGFISnZkMXdpTENCMllXeDFaU2s3SUgxY2NseHVJQ0FnSUdaMWJtTjBhVzl1SUhObGRIUnNaU2htTENCMktTQjdJR2xtSUNobUtIWXBMQ0J4TG5Ob2FXWjBLQ2tzSUhFdWJHVnVaM1JvS1NCeVpYTjFiV1VvY1Zzd1hWc3dYU3dnY1Zzd1hWc3hYU2s3SUgxY2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZZWE41Ym1ORVpXeGxaMkYwYjNJb2J5a2dlMXh5WEc0Z0lDQWdkbUZ5SUdrc0lIQTdYSEpjYmlBZ0lDQnlaWFIxY200Z2FTQTlJSHQ5TENCMlpYSmlLRndpYm1WNGRGd2lLU3dnZG1WeVlpaGNJblJvY205M1hDSXNJR1oxYm1OMGFXOXVJQ2hsS1NCN0lIUm9jbTkzSUdVN0lIMHBMQ0IyWlhKaUtGd2ljbVYwZFhKdVhDSXBMQ0JwVzFONWJXSnZiQzVwZEdWeVlYUnZjbDBnUFNCbWRXNWpkR2x2YmlBb0tTQjdJSEpsZEhWeWJpQjBhR2x6T3lCOUxDQnBPMXh5WEc0Z0lDQWdablZ1WTNScGIyNGdkbVZ5WWlodUxDQm1LU0I3SUdsYmJsMGdQU0J2VzI1ZElEOGdablZ1WTNScGIyNGdLSFlwSUhzZ2NtVjBkWEp1SUNod0lEMGdJWEFwSUQ4Z2V5QjJZV3gxWlRvZ1gxOWhkMkZwZENodlcyNWRLSFlwS1N3Z1pHOXVaVG9nWm1Gc2MyVWdmU0E2SUdZZ1B5Qm1LSFlwSURvZ2Rqc2dmU0E2SUdZN0lIMWNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmWVhONWJtTldZV3gxWlhNb2J5a2dlMXh5WEc0Z0lDQWdhV1lnS0NGVGVXMWliMnd1WVhONWJtTkpkR1Z5WVhSdmNpa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWxONWJXSnZiQzVoYzNsdVkwbDBaWEpoZEc5eUlHbHpJRzV2ZENCa1pXWnBibVZrTGx3aUtUdGNjbHh1SUNBZ0lIWmhjaUJ0SUQwZ2IxdFRlVzFpYjJ3dVlYTjVibU5KZEdWeVlYUnZjbDBzSUdrN1hISmNiaUFnSUNCeVpYUjFjbTRnYlNBL0lHMHVZMkZzYkNodktTQTZJQ2h2SUQwZ2RIbHdaVzltSUY5ZmRtRnNkV1Z6SUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lnUHlCZlgzWmhiSFZsY3lodktTQTZJRzliVTNsdFltOXNMbWwwWlhKaGRHOXlYU2dwTENCcElEMGdlMzBzSUhabGNtSW9YQ0p1WlhoMFhDSXBMQ0IyWlhKaUtGd2lkR2h5YjNkY0lpa3NJSFpsY21Jb1hDSnlaWFIxY201Y0lpa3NJR2xiVTNsdFltOXNMbUZ6ZVc1alNYUmxjbUYwYjNKZElEMGdablZ1WTNScGIyNGdLQ2tnZXlCeVpYUjFjbTRnZEdocGN6c2dmU3dnYVNrN1hISmNiaUFnSUNCbWRXNWpkR2x2YmlCMlpYSmlLRzRwSUhzZ2FWdHVYU0E5SUc5YmJsMGdKaVlnWm5WdVkzUnBiMjRnS0hZcElIc2djbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLR1oxYm1OMGFXOXVJQ2h5WlhOdmJIWmxMQ0J5WldwbFkzUXBJSHNnZGlBOUlHOWJibDBvZGlrc0lITmxkSFJzWlNoeVpYTnZiSFpsTENCeVpXcGxZM1FzSUhZdVpHOXVaU3dnZGk1MllXeDFaU2s3SUgwcE95QjlPeUI5WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJ6WlhSMGJHVW9jbVZ6YjJ4MlpTd2djbVZxWldOMExDQmtMQ0IyS1NCN0lGQnliMjFwYzJVdWNtVnpiMngyWlNoMktTNTBhR1Z1S0daMWJtTjBhVzl1S0hZcElIc2djbVZ6YjJ4MlpTaDdJSFpoYkhWbE9pQjJMQ0JrYjI1bE9pQmtJSDBwT3lCOUxDQnlaV3BsWTNRcE95QjlYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDIxaGEyVlVaVzF3YkdGMFpVOWlhbVZqZENoamIyOXJaV1FzSUhKaGR5a2dlMXh5WEc0Z0lDQWdhV1lnS0U5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTa2dleUJQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb1kyOXZhMlZrTENCY0luSmhkMXdpTENCN0lIWmhiSFZsT2lCeVlYY2dmU2s3SUgwZ1pXeHpaU0I3SUdOdmIydGxaQzV5WVhjZ1BTQnlZWGM3SUgxY2NseHVJQ0FnSUhKbGRIVnliaUJqYjI5clpXUTdYSEpjYm4wN1hISmNibHh5WEc1MllYSWdYMTl6WlhSTmIyUjFiR1ZFWldaaGRXeDBJRDBnVDJKcVpXTjBMbU55WldGMFpTQS9JQ2htZFc1amRHbHZiaWh2TENCMktTQjdYSEpjYmlBZ0lDQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvYnl3Z1hDSmtaV1poZFd4MFhDSXNJSHNnWlc1MWJXVnlZV0pzWlRvZ2RISjFaU3dnZG1Gc2RXVTZJSFlnZlNrN1hISmNibjBwSURvZ1puVnVZM1JwYjI0b2J5d2dkaWtnZTF4eVhHNGdJQ0FnYjF0Y0ltUmxabUYxYkhSY0lsMGdQU0IyTzF4eVhHNTlPMXh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZhVzF3YjNKMFUzUmhjaWh0YjJRcElIdGNjbHh1SUNBZ0lHbG1JQ2h0YjJRZ0ppWWdiVzlrTGw5ZlpYTk5iMlIxYkdVcElISmxkSFZ5YmlCdGIyUTdYSEpjYmlBZ0lDQjJZWElnY21WemRXeDBJRDBnZTMwN1hISmNiaUFnSUNCcFppQW9iVzlrSUNFOUlHNTFiR3dwSUdadmNpQW9kbUZ5SUdzZ2FXNGdiVzlrS1NCcFppQW9heUFoUFQwZ1hDSmtaV1poZFd4MFhDSWdKaVlnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzVvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0cxdlpDd2dheWtwSUY5ZlkzSmxZWFJsUW1sdVpHbHVaeWh5WlhOMWJIUXNJRzF2WkN3Z2F5azdYSEpjYmlBZ0lDQmZYM05sZEUxdlpIVnNaVVJsWm1GMWJIUW9jbVZ6ZFd4MExDQnRiMlFwTzF4eVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmYVcxd2IzSjBSR1ZtWVhWc2RDaHRiMlFwSUh0Y2NseHVJQ0FnSUhKbGRIVnliaUFvYlc5a0lDWW1JRzF2WkM1ZlgyVnpUVzlrZFd4bEtTQS9JRzF2WkNBNklIc2daR1ZtWVhWc2REb2diVzlrSUgwN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMk5zWVhOelVISnBkbUYwWlVacFpXeGtSMlYwS0hKbFkyVnBkbVZ5TENCemRHRjBaU3dnYTJsdVpDd2daaWtnZTF4eVhHNGdJQ0FnYVdZZ0tHdHBibVFnUFQwOUlGd2lZVndpSUNZbUlDRm1LU0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0Z3aVVISnBkbUYwWlNCaFkyTmxjM052Y2lCM1lYTWdaR1ZtYVc1bFpDQjNhWFJvYjNWMElHRWdaMlYwZEdWeVhDSXBPMXh5WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ6ZEdGMFpTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlEOGdjbVZqWldsMlpYSWdJVDA5SUhOMFlYUmxJSHg4SUNGbUlEb2dJWE4wWVhSbExtaGhjeWh5WldObGFYWmxjaWtwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSkRZVzV1YjNRZ2NtVmhaQ0J3Y21sMllYUmxJRzFsYldKbGNpQm1jbTl0SUdGdUlHOWlhbVZqZENCM2FHOXpaU0JqYkdGemN5QmthV1FnYm05MElHUmxZMnhoY21VZ2FYUmNJaWs3WEhKY2JpQWdJQ0J5WlhSMWNtNGdhMmx1WkNBOVBUMGdYQ0p0WENJZ1B5Qm1JRG9nYTJsdVpDQTlQVDBnWENKaFhDSWdQeUJtTG1OaGJHd29jbVZqWldsMlpYSXBJRG9nWmlBL0lHWXVkbUZzZFdVZ09pQnpkR0YwWlM1blpYUW9jbVZqWldsMlpYSXBPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5amJHRnpjMUJ5YVhaaGRHVkdhV1ZzWkZObGRDaHlaV05sYVhabGNpd2djM1JoZEdVc0lIWmhiSFZsTENCcmFXNWtMQ0JtS1NCN1hISmNiaUFnSUNCcFppQW9hMmx1WkNBOVBUMGdYQ0p0WENJcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pRY21sMllYUmxJRzFsZEdodlpDQnBjeUJ1YjNRZ2QzSnBkR0ZpYkdWY0lpazdYSEpjYmlBZ0lDQnBaaUFvYTJsdVpDQTlQVDBnWENKaFhDSWdKaVlnSVdZcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pRY21sMllYUmxJR0ZqWTJWemMyOXlJSGRoY3lCa1pXWnBibVZrSUhkcGRHaHZkWFFnWVNCelpYUjBaWEpjSWlrN1hISmNiaUFnSUNCcFppQW9kSGx3Wlc5bUlITjBZWFJsSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lnUHlCeVpXTmxhWFpsY2lBaFBUMGdjM1JoZEdVZ2ZId2dJV1lnT2lBaGMzUmhkR1V1YUdGektISmxZMlZwZG1WeUtTa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWtOaGJtNXZkQ0IzY21sMFpTQndjbWwyWVhSbElHMWxiV0psY2lCMGJ5QmhiaUJ2WW1wbFkzUWdkMmh2YzJVZ1kyeGhjM01nWkdsa0lHNXZkQ0JrWldOc1lYSmxJR2wwWENJcE8xeHlYRzRnSUNBZ2NtVjBkWEp1SUNocmFXNWtJRDA5UFNCY0ltRmNJaUEvSUdZdVkyRnNiQ2h5WldObGFYWmxjaXdnZG1Gc2RXVXBJRG9nWmlBL0lHWXVkbUZzZFdVZ1BTQjJZV3gxWlNBNklITjBZWFJsTG5ObGRDaHlaV05sYVhabGNpd2dkbUZzZFdVcEtTd2dkbUZzZFdVN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMk5zWVhOelVISnBkbUYwWlVacFpXeGtTVzRvYzNSaGRHVXNJSEpsWTJWcGRtVnlLU0I3WEhKY2JpQWdJQ0JwWmlBb2NtVmpaV2wyWlhJZ1BUMDlJRzUxYkd3Z2ZId2dLSFI1Y0dWdlppQnlaV05sYVhabGNpQWhQVDBnWENKdlltcGxZM1JjSWlBbUppQjBlWEJsYjJZZ2NtVmpaV2wyWlhJZ0lUMDlJRndpWm5WdVkzUnBiMjVjSWlrcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pEWVc1dWIzUWdkWE5sSUNkcGJpY2diM0JsY21GMGIzSWdiMjRnYm05dUxXOWlhbVZqZEZ3aUtUdGNjbHh1SUNBZ0lISmxkSFZ5YmlCMGVYQmxiMllnYzNSaGRHVWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQS9JSEpsWTJWcGRtVnlJRDA5UFNCemRHRjBaU0E2SUhOMFlYUmxMbWhoY3loeVpXTmxhWFpsY2lrN1hISmNibjFjY2x4dUlpd2laWGh3YjNKMElHWjFibU4wYVc5dUlHZGhiVzFoUlU5VVJpaGxPaUJ1ZFcxaVpYSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnVFdGMGFDNXdiM2NvWlN3Z01pNHlLVHRjYm4xY2JpSXNJbWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCN0lGWlNUU0JoY3lCV01GWlNUU3dnVFdGMFpYSnBZV3dnWVhNZ1ZqQk5ZWFJsY21saGJDQjlJR1p5YjIwZ0owQndhWGhwZGk5MGVYQmxjeTEyY20wdE1DNHdKenRjYm1sdGNHOXlkQ0FxSUdGeklGWXhUVlJ2YjI1VFkyaGxiV0VnWm5KdmJTQW5RSEJwZUdsMkwzUjVjR1Z6TFhaeWJXTXRiV0YwWlhKcFlXeHpMVzEwYjI5dUxURXVNQ2M3WEc1cGJYQnZjblFnZEhsd1pTQjdJRWRNVkVaTWIyRmtaWEpRYkhWbmFXNHNJRWRNVkVaUVlYSnpaWElnZlNCbWNtOXRJQ2QwYUhKbFpTOWxlR0Z0Y0d4bGN5OXFjMjB2Ykc5aFpHVnljeTlIVEZSR1RHOWhaR1Z5TG1wekp6dGNibWx0Y0c5eWRDQjdJR2RoYlcxaFJVOVVSaUI5SUdaeWIyMGdKeTR2ZFhScGJITXZaMkZ0YldGRlQxUkdKenRjYm1sdGNHOXlkQ0I3SUVkTVZFWWdZWE1nUjB4VVJsTmphR1Z0WVNCOUlHWnliMjBnSjBCbmJIUm1MWFJ5WVc1elptOXliUzlqYjNKbEp6dGNibHh1Wlhod2IzSjBJR05zWVhOeklGWlNUVTFoZEdWeWFXRnNjMVl3UTI5dGNHRjBVR3gxWjJsdUlHbHRjR3hsYldWdWRITWdSMHhVUmt4dllXUmxjbEJzZFdkcGJpQjdYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0J3WVhKelpYSTZJRWRNVkVaUVlYSnpaWEk3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUVnYldGd0lHWnliMjBnZGpBZ2NtVnVaR1Z5SUhGMVpYVmxJSFJ2SUhZeElISmxibVJsY2lCeGRXVjFaU0J2Wm1aelpYUXNJR1p2Y2lCVWNtRnVjM0JoY21WdWRDQnRZWFJsY21saGJITXVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJSEpsWVdSdmJteDVJRjl5Wlc1a1pYSlJkV1YxWlUxaGNGUnlZVzV6Y0dGeVpXNTBPaUJOWVhBOGJuVnRZbVZ5TENCdWRXMWlaWEkrTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJCSUcxaGNDQm1jbTl0SUhZd0lISmxibVJsY2lCeGRXVjFaU0IwYnlCMk1TQnlaVzVrWlhJZ2NYVmxkV1VnYjJabWMyVjBMQ0JtYjNJZ1ZISmhibk53WVhKbGJuUmFWM0pwZEdVZ2JXRjBaWEpwWVd4ekxseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQnlaV0ZrYjI1c2VTQmZjbVZ1WkdWeVVYVmxkV1ZOWVhCVWNtRnVjM0JoY21WdWRGcFhjbWwwWlRvZ1RXRndQRzUxYldKbGNpd2diblZ0WW1WeVBqdGNibHh1SUNCd2RXSnNhV01nWjJWMElHNWhiV1VvS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0J5WlhSMWNtNGdKMVpTVFUxaGRHVnlhV0ZzYzFZd1EyOXRjR0YwVUd4MVoybHVKenRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJqYjI1emRISjFZM1J2Y2lod1lYSnpaWEk2SUVkTVZFWlFZWEp6WlhJcElIdGNiaUFnSUNCMGFHbHpMbkJoY25ObGNpQTlJSEJoY25ObGNqdGNibHh1SUNBZ0lIUm9hWE11WDNKbGJtUmxjbEYxWlhWbFRXRndWSEpoYm5Od1lYSmxiblFnUFNCdVpYY2dUV0Z3S0NrN1hHNGdJQ0FnZEdocGN5NWZjbVZ1WkdWeVVYVmxkV1ZOWVhCVWNtRnVjM0JoY21WdWRGcFhjbWwwWlNBOUlHNWxkeUJOWVhBb0tUdGNibHh1SUNBZ0lDOHZJRmRQVWt0QlVrOVZUa1E2SUVGa1pDQkxTRkpmZEdWNGRIVnlaVjkwY21GdWMyWnZjbTBnZEc4Z1pYaDBaVzV6YVc5dWMxVnpaV1JjYmlBZ0lDQXZMeUJKZENCcGN5QjBiMjhnYkdGMFpTQjBieUJoWkdRZ2RHaHBjeUJwYmlCaVpXWnZjbVZTYjI5MFhHNGdJQ0FnWTI5dWMzUWdhbk52YmlBOUlIUm9hWE11Y0dGeWMyVnlMbXB6YjI0Z1lYTWdSMHhVUmxOamFHVnRZUzVKUjB4VVJqdGNibHh1SUNBZ0lHcHpiMjR1WlhoMFpXNXphVzl1YzFWelpXUWdQU0JxYzI5dUxtVjRkR1Z1YzJsdmJuTlZjMlZrSUQ4L0lGdGRPMXh1SUNBZ0lHbG1JQ2hxYzI5dUxtVjRkR1Z1YzJsdmJuTlZjMlZrTG1sdVpHVjRUMllvSjB0SVVsOTBaWGgwZFhKbFgzUnlZVzV6Wm05eWJTY3BJRDA5UFNBdE1Ta2dlMXh1SUNBZ0lDQWdhbk52Ymk1bGVIUmxibk5wYjI1elZYTmxaQzV3ZFhOb0tDZExTRkpmZEdWNGRIVnlaVjkwY21GdWMyWnZjbTBuS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWVhONWJtTWdZbVZtYjNKbFVtOXZkQ2dwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQmpiMjV6ZENCcWMyOXVJRDBnZEdocGN5NXdZWEp6WlhJdWFuTnZiaUJoY3lCSFRGUkdVMk5vWlcxaExrbEhURlJHTzF4dVhHNGdJQ0FnTHk4Z1pXRnliSGtnWVdKdmNuUWdhV1lnYVhRZ1pHOWxjMjRuZENCMWMyVWdWakJXVWsxY2JpQWdJQ0JqYjI1emRDQjJNRlpTVFVWNGRHVnVjMmx2YmlBOUlHcHpiMjR1WlhoMFpXNXphVzl1Y3o4dVd5ZFdVazBuWFNCaGN5QldNRlpTVFNCOElIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCamIyNXpkQ0IyTUUxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsY3lBOUlIWXdWbEpOUlhoMFpXNXphVzl1UHk1dFlYUmxjbWxoYkZCeWIzQmxjblJwWlhNN1hHNGdJQ0FnYVdZZ0tDRjJNRTFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJSEJ2Y0hWc1lYUmxJSEpsYm1SbGNpQnhkV1YxWlNCdFlYQmNiaUFnSUNCMGFHbHpMbDl3YjNCMWJHRjBaVkpsYm1SbGNsRjFaWFZsVFdGd0tIWXdUV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpLVHRjYmx4dUlDQWdJQzh2SUdOdmJuWmxjblFnVmpBZ2JXRjBaWEpwWVd3Z2NISnZjR1Z5ZEdsbGN5QnBiblJ2SUZZeElHTnZiWEJoZEdsaWJHVWdabTl5YldGMFhHNGdJQ0FnZGpCTllYUmxjbWxoYkZCeWIzQmxjblJwWlhNdVptOXlSV0ZqYUNnb2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxDQnRZWFJsY21saGJFbHVaR1Y0S1NBOVBpQjdYRzRnSUNBZ0lDQmpiMjV6ZENCdFlYUmxjbWxoYkVSbFppQTlJR3B6YjI0dWJXRjBaWEpwWVd4elB5NWJiV0YwWlhKcFlXeEpibVJsZUYwN1hHNWNiaUFnSUNBZ0lHbG1JQ2h0WVhSbGNtbGhiRVJsWmlBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk52YkdVdWQyRnliaWhjYmlBZ0lDQWdJQ0FnSUNCZ1ZsSk5UV0YwWlhKcFlXeHpWakJEYjIxd1lYUlFiSFZuYVc0NklFRjBkR1Z0Y0hRZ2RHOGdkWE5sSUcxaGRHVnlhV0ZzYzFza2UyMWhkR1Z5YVdGc1NXNWtaWGg5WFNCdlppQm5iRlJHSUdKMWRDQjBhR1VnYldGMFpYSnBZV3dnWkc5bGMyNG5kQ0JsZUdsemRHQXNYRzRnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnYVdZZ0tHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5NXphR0ZrWlhJZ1BUMDlJQ2RXVWswdlRWUnZiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUcxaGRHVnlhV0ZzSUQwZ2RHaHBjeTVmY0dGeWMyVldNRTFVYjI5dVVISnZjR1Z5ZEdsbGN5aHRZWFJsY21saGJGQnliM0JsY25ScFpYTXNJRzFoZEdWeWFXRnNSR1ZtS1R0Y2JpQWdJQ0FnSUNBZ2FuTnZiaTV0WVhSbGNtbGhiSE1oVzIxaGRHVnlhV0ZzU1c1a1pYaGRJRDBnYldGMFpYSnBZV3c3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0cxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsY3k1emFHRmtaWEkvTG5OMFlYSjBjMWRwZEdnb0oxWlNUUzlWYm14cGRDY3BLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJRzFoZEdWeWFXRnNJRDBnZEdocGN5NWZjR0Z5YzJWV01GVnViR2wwVUhKdmNHVnlkR2xsY3lodFlYUmxjbWxoYkZCeWIzQmxjblJwWlhNc0lHMWhkR1Z5YVdGc1JHVm1LVHRjYmlBZ0lDQWdJQ0FnYW5OdmJpNXRZWFJsY21saGJITWhXMjFoZEdWeWFXRnNTVzVrWlhoZElEMGdiV0YwWlhKcFlXdzdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeTV6YUdGa1pYSWdQVDA5SUNkV1VrMWZWVk5GWDBkTVZFWlRTRUZFUlZJbktTQjdYRzRnSUNBZ0lDQWdJQzh2SUdCcWMyOXVMbTFoZEdWeWFXRnNjMXR0WVhSbGNtbGhiRWx1WkdWNFhXQWdjMmh2ZFd4a0lHSmxJR0ZzY21WaFpIa2dkbUZzYVdSY2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpaGdWbEpOVFdGMFpYSnBZV3h6VmpCRGIyMXdZWFJRYkhWbmFXNDZJRlZ1YTI1dmQyNGdjMmhoWkdWeU9pQWtlMjFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeTV6YUdGa1pYSjlZQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUY5d1lYSnpaVll3VFZSdmIyNVFjbTl3WlhKMGFXVnpLRnh1SUNBZ0lHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN6b2dWakJOWVhSbGNtbGhiQ3hjYmlBZ0lDQnpZMmhsYldGTllYUmxjbWxoYkRvZ1IweFVSbE5qYUdWdFlTNUpUV0YwWlhKcFlXd3NYRzRnSUNrNklFZE1WRVpUWTJobGJXRXVTVTFoZEdWeWFXRnNJSHRjYmlBZ0lDQmpiMjV6ZENCcGMxUnlZVzV6Y0dGeVpXNTBJRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG10bGVYZHZjbVJOWVhBL0xsc25YMEZNVUVoQlFreEZUa1JmVDA0blhTQS9QeUJtWVd4elpUdGNiaUFnSUNCamIyNXpkQ0JsYm1GaWJHVmtXbGR5YVhSbElEMGdiV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpMbVpzYjJGMFVISnZjR1Z5ZEdsbGN6OHVXeWRmV2xkeWFYUmxKMTBnUFQwOUlERTdYRzRnSUNBZ1kyOXVjM1FnZEhKaGJuTndZWEpsYm5SWGFYUm9XbGR5YVhSbElEMGdaVzVoWW14bFpGcFhjbWwwWlNBbUppQnBjMVJ5WVc1emNHRnlaVzUwTzF4dVhHNGdJQ0FnWTI5dWMzUWdjbVZ1WkdWeVVYVmxkV1ZQWm1aelpYUk9kVzFpWlhJZ1BTQjBhR2x6TGw5Mk1GQmhjbk5sVW1WdVpHVnlVWFZsZFdVb2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWektUdGNibHh1SUNBZ0lHTnZibk4wSUdselEzVjBiMlptSUQwZ2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxtdGxlWGR2Y21STllYQS9MbHNuWDBGTVVFaEJWRVZUVkY5UFRpZGRJRDgvSUdaaGJITmxPMXh1SUNBZ0lHTnZibk4wSUdGc2NHaGhUVzlrWlNBOUlHbHpWSEpoYm5Od1lYSmxiblFnUHlBblFreEZUa1FuSURvZ2FYTkRkWFJ2Wm1ZZ1B5QW5UVUZUU3ljZ09pQW5UMUJCVVZWRkp6dGNiaUFnSUNCamIyNXpkQ0JoYkhCb1lVTjFkRzltWmlBOUlHbHpRM1YwYjJabUlEOGdiV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpMbVpzYjJGMFVISnZjR1Z5ZEdsbGN6OHVXeWRmUTNWMGIyWm1KMTBnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNCamIyNXpkQ0JqZFd4c1RXOWtaU0E5SUcxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsY3k1bWJHOWhkRkJ5YjNCbGNuUnBaWE0vTGxzblgwTjFiR3hOYjJSbEoxMGdQejhnTWpzZ0x5OGdaVzUxYlN3Z2V5QlBabVlzSUVaeWIyNTBMQ0JDWVdOcklIMWNiaUFnSUNCamIyNXpkQ0JrYjNWaWJHVlRhV1JsWkNBOUlHTjFiR3hOYjJSbElEMDlQU0F3TzF4dVhHNGdJQ0FnWTI5dWMzUWdkR1Y0ZEhWeVpWUnlZVzV6Wm05eWJVVjRkQ0E5SUhSb2FYTXVYM0J2Y25SVVpYaDBkWEpsVkhKaGJuTm1iM0p0S0cxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsY3lrN1hHNWNiaUFnSUNCamIyNXpkQ0JpWVhObFEyOXNiM0pHWVdOMGIzSWdQU0J0WVhSbGNtbGhiRkJ5YjNCbGNuUnBaWE11ZG1WamRHOXlVSEp2Y0dWeWRHbGxjejh1V3lkZlEyOXNiM0luWFQ4dWJXRndLRnh1SUNBZ0lDQWdLSFk2SUc1MWJXSmxjaXdnYVRvZ2JuVnRZbVZ5S1NBOVBpQW9hU0E5UFQwZ015QS9JSFlnT2lCbllXMXRZVVZQVkVZb2Rpa3BMQ0F2THlCaGJIQm9ZU0JqYUdGdWJtVnNJR2x6SUhOMGIzSmxaQ0JwYmlCc2FXNWxZWEpjYmlBZ0lDQXBPMXh1SUNBZ0lHTnZibk4wSUdKaGMyVkRiMnh2Y2xSbGVIUjFjbVZKYm1SbGVDQTlJRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeTUwWlhoMGRYSmxVSEp2Y0dWeWRHbGxjejh1V3lkZlRXRnBibFJsZUNkZE8xeHVJQ0FnSUdOdmJuTjBJR0poYzJWRGIyeHZjbFJsZUhSMWNtVWdQVnh1SUNBZ0lDQWdZbUZ6WlVOdmJHOXlWR1Y0ZEhWeVpVbHVaR1Y0SUNFOUlHNTFiR3hjYmlBZ0lDQWdJQ0FnUHlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwYm1SbGVEb2dZbUZ6WlVOdmJHOXlWR1Y0ZEhWeVpVbHVaR1Y0TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdaWGgwWlc1emFXOXVjem9nZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F1TGk1MFpYaDBkWEpsVkhKaGJuTm1iM0p0UlhoMExGeHVJQ0FnSUNBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnWTI5dWMzUWdibTl5YldGc1ZHVjRkSFZ5WlZOallXeGxJRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG1ac2IyRjBVSEp2Y0dWeWRHbGxjejh1V3lkZlFuVnRjRk5qWVd4bEoxMDdYRzRnSUNBZ1kyOXVjM1FnYm05eWJXRnNWR1Y0ZEhWeVpVbHVaR1Y0SUQwZ2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxuUmxlSFIxY21WUWNtOXdaWEowYVdWelB5NWJKMTlDZFcxd1RXRndKMTA3WEc0Z0lDQWdZMjl1YzNRZ2JtOXliV0ZzVkdWNGRIVnlaU0E5WEc0Z0lDQWdJQ0J1YjNKdFlXeFVaWGgwZFhKbFNXNWtaWGdnSVQwZ2JuVnNiRnh1SUNBZ0lDQWdJQ0EvSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2x1WkdWNE9pQnViM0p0WVd4VVpYaDBkWEpsU1c1a1pYZ3NYRzRnSUNBZ0lDQWdJQ0FnSUNCelkyRnNaVG9nYm05eWJXRnNWR1Y0ZEhWeVpWTmpZV3hsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdaWGgwWlc1emFXOXVjem9nZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F1TGk1MFpYaDBkWEpsVkhKaGJuTm1iM0p0UlhoMExGeHVJQ0FnSUNBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnWTI5dWMzUWdaVzFwYzNOcGRtVkdZV04wYjNJZ1BTQnRZWFJsY21saGJGQnliM0JsY25ScFpYTXVkbVZqZEc5eVVISnZjR1Z5ZEdsbGN6OHVXeWRmUlcxcGMzTnBiMjVEYjJ4dmNpZGRQeTV0WVhBb1oyRnRiV0ZGVDFSR0tUdGNiaUFnSUNCamIyNXpkQ0JsYldsemMybDJaVlJsZUhSMWNtVkpibVJsZUNBOUlHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5NTBaWGgwZFhKbFVISnZjR1Z5ZEdsbGN6OHVXeWRmUlcxcGMzTnBiMjVOWVhBblhUdGNiaUFnSUNCamIyNXpkQ0JsYldsemMybDJaVlJsZUhSMWNtVWdQVnh1SUNBZ0lDQWdaVzFwYzNOcGRtVlVaWGgwZFhKbFNXNWtaWGdnSVQwZ2JuVnNiRnh1SUNBZ0lDQWdJQ0EvSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2x1WkdWNE9pQmxiV2x6YzJsMlpWUmxlSFIxY21WSmJtUmxlQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHVjRkR1Z1YzJsdmJuTTZJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMaTR1ZEdWNGRIVnlaVlJ5WVc1elptOXliVVY0ZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJR052Ym5OMElITm9ZV1JsUTI5c2IzSkdZV04wYjNJZ1BTQnRZWFJsY21saGJGQnliM0JsY25ScFpYTXVkbVZqZEc5eVVISnZjR1Z5ZEdsbGN6OHVXeWRmVTJoaFpHVkRiMnh2Y2lkZFB5NXRZWEFvWjJGdGJXRkZUMVJHS1R0Y2JpQWdJQ0JqYjI1emRDQnphR0ZrWlUxMWJIUnBjR3g1VkdWNGRIVnlaVWx1WkdWNElEMGdiV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpMblJsZUhSMWNtVlFjbTl3WlhKMGFXVnpQeTViSjE5VGFHRmtaVlJsZUhSMWNtVW5YVHRjYmlBZ0lDQmpiMjV6ZENCemFHRmtaVTExYkhScGNHeDVWR1Y0ZEhWeVpTQTlYRzRnSUNBZ0lDQnphR0ZrWlUxMWJIUnBjR3g1VkdWNGRIVnlaVWx1WkdWNElDRTlJRzUxYkd4Y2JpQWdJQ0FnSUNBZ1B5QjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcGJtUmxlRG9nYzJoaFpHVk5kV3gwYVhCc2VWUmxlSFIxY21WSmJtUmxlQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHVjRkR1Z1YzJsdmJuTTZJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMaTR1ZEdWNGRIVnlaVlJ5WVc1elptOXliVVY0ZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJQzh2SUM4dklHTnZiblpsY25RZ2RqQWdjMmhoWkdVZ2MyaHBablFnTHlCemFHRmtaU0IwYjI5dWVWeHVJQ0FnSUd4bGRDQnphR0ZrYVc1blUyaHBablJHWVdOMGIzSWdQU0J0WVhSbGNtbGhiRkJ5YjNCbGNuUnBaWE11Wm14dllYUlFjbTl3WlhKMGFXVnpQeTViSjE5VGFHRmtaVk5vYVdaMEoxMGdQejhnTUM0d08xeHVJQ0FnSUd4bGRDQnphR0ZrYVc1blZHOXZibmxHWVdOMGIzSWdQU0J0WVhSbGNtbGhiRkJ5YjNCbGNuUnBaWE11Wm14dllYUlFjbTl3WlhKMGFXVnpQeTViSjE5VGFHRmtaVlJ2YjI1NUoxMGdQejhnTUM0NU8xeHVJQ0FnSUhOb1lXUnBibWRVYjI5dWVVWmhZM1J2Y2lBOUlGUklVa1ZGTGsxaGRHaFZkR2xzY3k1c1pYSndLSE5vWVdScGJtZFViMjl1ZVVaaFkzUnZjaXdnTVM0d0xDQXdMalVnS3lBd0xqVWdLaUJ6YUdGa2FXNW5VMmhwWm5SR1lXTjBiM0lwTzF4dUlDQWdJSE5vWVdScGJtZFRhR2xtZEVaaFkzUnZjaUE5SUMxemFHRmthVzVuVTJocFpuUkdZV04wYjNJZ0xTQW9NUzR3SUMwZ2MyaGhaR2x1WjFSdmIyNTVSbUZqZEc5eUtUdGNibHh1SUNBZ0lHTnZibk4wSUdkcFNXNTBaVzV6YVhSNVJtRmpkRzl5SUQwZ2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxtWnNiMkYwVUhKdmNHVnlkR2xsY3o4dVd5ZGZTVzVrYVhKbFkzUk1hV2RvZEVsdWRHVnVjMmwwZVNkZE8xeHVJQ0FnSUdOdmJuTjBJR2RwUlhGMVlXeHBlbUYwYVc5dVJtRmpkRzl5SUQwZ1oybEpiblJsYm5OcGRIbEdZV04wYjNJZ1B5QXhMakFnTFNCbmFVbHVkR1Z1YzJsMGVVWmhZM1J2Y2lBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lHTnZibk4wSUcxaGRHTmhjRlJsZUhSMWNtVkpibVJsZUNBOUlHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5NTBaWGgwZFhKbFVISnZjR1Z5ZEdsbGN6OHVXeWRmVTNCb1pYSmxRV1JrSjEwN1hHNGdJQ0FnWTI5dWMzUWdiV0YwWTJGd1JtRmpkRzl5SUQwZ2JXRjBZMkZ3VkdWNGRIVnlaVWx1WkdWNElDRTlJRzUxYkd3Z1B5QmJNUzR3TENBeExqQXNJREV1TUYwZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ1kyOXVjM1FnYldGMFkyRndWR1Y0ZEhWeVpTQTlYRzRnSUNBZ0lDQnRZWFJqWVhCVVpYaDBkWEpsU1c1a1pYZ2dJVDBnYm5Wc2JGeHVJQ0FnSUNBZ0lDQS9JSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbHVaR1Y0T2lCdFlYUmpZWEJVWlhoMGRYSmxTVzVrWlhnc1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUdOdmJuTjBJSEpwYlV4cFoyaDBhVzVuVFdsNFJtRmpkRzl5SUQwZ2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxtWnNiMkYwVUhKdmNHVnlkR2xsY3o4dVd5ZGZVbWx0VEdsbmFIUnBibWROYVhnblhUdGNiaUFnSUNCamIyNXpkQ0J5YVcxTmRXeDBhWEJzZVZSbGVIUjFjbVZKYm1SbGVDQTlJRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeTUwWlhoMGRYSmxVSEp2Y0dWeWRHbGxjejh1V3lkZlVtbHRWR1Y0ZEhWeVpTZGRPMXh1SUNBZ0lHTnZibk4wSUhKcGJVMTFiSFJwY0d4NVZHVjRkSFZ5WlNBOVhHNGdJQ0FnSUNCeWFXMU5kV3gwYVhCc2VWUmxlSFIxY21WSmJtUmxlQ0FoUFNCdWRXeHNYRzRnSUNBZ0lDQWdJRDhnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhVzVrWlhnNklISnBiVTExYkhScGNHeDVWR1Y0ZEhWeVpVbHVaR1Y0TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdaWGgwWlc1emFXOXVjem9nZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F1TGk1MFpYaDBkWEpsVkhKaGJuTm1iM0p0UlhoMExGeHVJQ0FnSUNBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnWTI5dWMzUWdjR0Z5WVcxbGRISnBZMUpwYlVOdmJHOXlSbUZqZEc5eUlEMGdiV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpMblpsWTNSdmNsQnliM0JsY25ScFpYTS9MbHNuWDFKcGJVTnZiRzl5SjEwL0xtMWhjQ2huWVcxdFlVVlBWRVlwTzF4dUlDQWdJR052Ym5OMElIQmhjbUZ0WlhSeWFXTlNhVzFHY21WemJtVnNVRzkzWlhKR1lXTjBiM0lnUFNCdFlYUmxjbWxoYkZCeWIzQmxjblJwWlhNdVpteHZZWFJRY205d1pYSjBhV1Z6UHk1YkoxOVNhVzFHY21WemJtVnNVRzkzWlhJblhUdGNiaUFnSUNCamIyNXpkQ0J3WVhKaGJXVjBjbWxqVW1sdFRHbG1kRVpoWTNSdmNpQTlJRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeTVtYkc5aGRGQnliM0JsY25ScFpYTS9MbHNuWDFKcGJVeHBablFuWFR0Y2JseHVJQ0FnSUdOdmJuTjBJRzkxZEd4cGJtVlhhV1IwYUUxdlpHVWdQU0JiSjI1dmJtVW5MQ0FuZDI5eWJHUkRiMjl5WkdsdVlYUmxjeWNzSUNkelkzSmxaVzVEYjI5eVpHbHVZWFJsY3lkZFcxeHVJQ0FnSUNBZ2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxtWnNiMkYwVUhKdmNHVnlkR2xsY3o4dVd5ZGZUM1YwYkdsdVpWZHBaSFJvVFc5a1pTZGRJRDgvSURCY2JpQWdJQ0JkSUdGeklGWXhUVlJ2YjI1VFkyaGxiV0V1VFdGMFpYSnBZV3h6VFZSdmIyNVBkWFJzYVc1bFYybGtkR2hOYjJSbE8xeHVYRzRnSUNBZ0x5OGdMeThnZGpBZ2IzVjBiR2x1WlZkcFpIUm9SbUZqZEc5eUlHbHpJR2x1SUdObGJuUnBiV1YwWlhKY2JpQWdJQ0JzWlhRZ2IzVjBiR2x1WlZkcFpIUm9SbUZqZEc5eUlEMGdiV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpMbVpzYjJGMFVISnZjR1Z5ZEdsbGN6OHVXeWRmVDNWMGJHbHVaVmRwWkhSb0oxMGdQejhnTUM0d08xeHVJQ0FnSUc5MWRHeHBibVZYYVdSMGFFWmhZM1J2Y2lBOUlEQXVNREVnS2lCdmRYUnNhVzVsVjJsa2RHaEdZV04wYjNJN1hHNWNiaUFnSUNCamIyNXpkQ0J2ZFhSc2FXNWxWMmxrZEdoTmRXeDBhWEJzZVZSbGVIUjFjbVZKYm1SbGVDQTlJRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeTUwWlhoMGRYSmxVSEp2Y0dWeWRHbGxjejh1V3lkZlQzVjBiR2x1WlZkcFpIUm9WR1Y0ZEhWeVpTZGRPMXh1SUNBZ0lHTnZibk4wSUc5MWRHeHBibVZYYVdSMGFFMTFiSFJwY0d4NVZHVjRkSFZ5WlNBOVhHNGdJQ0FnSUNCdmRYUnNhVzVsVjJsa2RHaE5kV3gwYVhCc2VWUmxlSFIxY21WSmJtUmxlQ0FoUFNCdWRXeHNYRzRnSUNBZ0lDQWdJRDhnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhVzVrWlhnNklHOTFkR3hwYm1WWGFXUjBhRTExYkhScGNHeDVWR1Y0ZEhWeVpVbHVaR1Y0TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdaWGgwWlc1emFXOXVjem9nZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F1TGk1MFpYaDBkWEpsVkhKaGJuTm1iM0p0UlhoMExGeHVJQ0FnSUNBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnWTI5dWMzUWdiM1YwYkdsdVpVTnZiRzl5Um1GamRHOXlJRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG5abFkzUnZjbEJ5YjNCbGNuUnBaWE0vTGxzblgwOTFkR3hwYm1WRGIyeHZjaWRkUHk1dFlYQW9aMkZ0YldGRlQxUkdLVHRjYmlBZ0lDQmpiMjV6ZENCdmRYUnNhVzVsUTI5c2IzSk5iMlJsSUQwZ2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxtWnNiMkYwVUhKdmNHVnlkR2xsY3o4dVd5ZGZUM1YwYkdsdVpVTnZiRzl5VFc5a1pTZGRPeUF2THlCbGJuVnRMQ0I3SUVacGVHVmtMQ0JOYVhobFpDQjlYRzRnSUNBZ1kyOXVjM1FnYjNWMGJHbHVaVXhwWjJoMGFXNW5UV2w0Um1GamRHOXlJRDFjYmlBZ0lDQWdJRzkxZEd4cGJtVkRiMnh2Y2sxdlpHVWdQVDA5SURFZ1B5QnRZWFJsY21saGJGQnliM0JsY25ScFpYTXVabXh2WVhSUWNtOXdaWEowYVdWelB5NWJKMTlQZFhSc2FXNWxUR2xuYUhScGJtZE5hWGduWFNBNklEQXVNRHRjYmx4dUlDQWdJR052Ym5OMElIVjJRVzVwYldGMGFXOXVUV0Z6YTFSbGVIUjFjbVZKYm1SbGVDQTlJRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeTUwWlhoMGRYSmxVSEp2Y0dWeWRHbGxjejh1V3lkZlZYWkJibWx0VFdGemExUmxlSFIxY21VblhUdGNiaUFnSUNCamIyNXpkQ0IxZGtGdWFXMWhkR2x2YmsxaGMydFVaWGgwZFhKbElEMWNiaUFnSUNBZ0lIVjJRVzVwYldGMGFXOXVUV0Z6YTFSbGVIUjFjbVZKYm1SbGVDQWhQU0J1ZFd4c1hHNGdJQ0FnSUNBZ0lEOGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXNWtaWGc2SUhWMlFXNXBiV0YwYVc5dVRXRnphMVJsZUhSMWNtVkpibVJsZUN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR1Y0ZEdWdWMybHZibk02SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnTGk0dWRHVjRkSFZ5WlZSeVlXNXpabTl5YlVWNGRDeGNiaUFnSUNBZ0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUdOdmJuTjBJSFYyUVc1cGJXRjBhVzl1VTJOeWIyeHNXRk53WldWa1JtRmpkRzl5SUQwZ2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxtWnNiMkYwVUhKdmNHVnlkR2xsY3o4dVd5ZGZWWFpCYm1sdFUyTnliMnhzV0NkZE8xeHVYRzRnSUNBZ0x5OGdkWFpCYm1sdFlYUnBiMjVUWTNKdmJHeFpVM0JsWldSR1lXTjBiM0lnZDJsc2JDQmlaU0J2Y0hCdmMybDBaU0JpWlhSM1pXVnVJRll3SUdGdVpDQldNVnh1SUNBZ0lHeGxkQ0IxZGtGdWFXMWhkR2x2YmxOamNtOXNiRmxUY0dWbFpFWmhZM1J2Y2lBOUlHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5NW1iRzloZEZCeWIzQmxjblJwWlhNL0xsc25YMVYyUVc1cGJWTmpjbTlzYkZrblhUdGNiaUFnSUNCcFppQW9kWFpCYm1sdFlYUnBiMjVUWTNKdmJHeFpVM0JsWldSR1lXTjBiM0lnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnZFhaQmJtbHRZWFJwYjI1VFkzSnZiR3haVTNCbFpXUkdZV04wYjNJZ1BTQXRkWFpCYm1sdFlYUnBiMjVUWTNKdmJHeFpVM0JsWldSR1lXTjBiM0k3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2RYWkJibWx0WVhScGIyNVNiM1JoZEdsdmJsTndaV1ZrUm1GamRHOXlJRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG1ac2IyRjBVSEp2Y0dWeWRHbGxjejh1V3lkZlZYWkJibWx0VW05MFlYUnBiMjRuWFR0Y2JseHVJQ0FnSUdOdmJuTjBJRzEwYjI5dVJYaDBaVzV6YVc5dU9pQldNVTFVYjI5dVUyTm9aVzFoTGxaU1RVTk5ZWFJsY21saGJITk5WRzl2YmlBOUlIdGNiaUFnSUNBZ0lITndaV05XWlhKemFXOXVPaUFuTVM0d0p5eGNiaUFnSUNBZ0lIUnlZVzV6Y0dGeVpXNTBWMmwwYUZwWGNtbDBaU3hjYmlBZ0lDQWdJSEpsYm1SbGNsRjFaWFZsVDJabWMyVjBUblZ0WW1WeUxGeHVJQ0FnSUNBZ2MyaGhaR1ZEYjJ4dmNrWmhZM1J2Y2l4Y2JpQWdJQ0FnSUhOb1lXUmxUWFZzZEdsd2JIbFVaWGgwZFhKbExGeHVJQ0FnSUNBZ2MyaGhaR2x1WjFOb2FXWjBSbUZqZEc5eUxGeHVJQ0FnSUNBZ2MyaGhaR2x1WjFSdmIyNTVSbUZqZEc5eUxGeHVJQ0FnSUNBZ1oybEZjWFZoYkdsNllYUnBiMjVHWVdOMGIzSXNYRzRnSUNBZ0lDQnRZWFJqWVhCR1lXTjBiM0lzWEc0Z0lDQWdJQ0J0WVhSallYQlVaWGgwZFhKbExGeHVJQ0FnSUNBZ2NtbHRUR2xuYUhScGJtZE5hWGhHWVdOMGIzSXNYRzRnSUNBZ0lDQnlhVzFOZFd4MGFYQnNlVlJsZUhSMWNtVXNYRzRnSUNBZ0lDQndZWEpoYldWMGNtbGpVbWx0UTI5c2IzSkdZV04wYjNJc1hHNGdJQ0FnSUNCd1lYSmhiV1YwY21salVtbHRSbkpsYzI1bGJGQnZkMlZ5Um1GamRHOXlMRnh1SUNBZ0lDQWdjR0Z5WVcxbGRISnBZMUpwYlV4cFpuUkdZV04wYjNJc1hHNGdJQ0FnSUNCdmRYUnNhVzVsVjJsa2RHaE5iMlJsTEZ4dUlDQWdJQ0FnYjNWMGJHbHVaVmRwWkhSb1JtRmpkRzl5TEZ4dUlDQWdJQ0FnYjNWMGJHbHVaVmRwWkhSb1RYVnNkR2x3YkhsVVpYaDBkWEpsTEZ4dUlDQWdJQ0FnYjNWMGJHbHVaVU52Ykc5eVJtRmpkRzl5TEZ4dUlDQWdJQ0FnYjNWMGJHbHVaVXhwWjJoMGFXNW5UV2w0Um1GamRHOXlMRnh1SUNBZ0lDQWdkWFpCYm1sdFlYUnBiMjVOWVhOclZHVjRkSFZ5WlN4Y2JpQWdJQ0FnSUhWMlFXNXBiV0YwYVc5dVUyTnliMnhzV0ZOd1pXVmtSbUZqZEc5eUxGeHVJQ0FnSUNBZ2RYWkJibWx0WVhScGIyNVRZM0p2Ykd4WlUzQmxaV1JHWVdOMGIzSXNYRzRnSUNBZ0lDQjFka0Z1YVcxaGRHbHZibEp2ZEdGMGFXOXVVM0JsWldSR1lXTjBiM0lzWEc0Z0lDQWdmVHRjYmx4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQXVMaTV6WTJobGJXRk5ZWFJsY21saGJDeGNibHh1SUNBZ0lDQWdjR0p5VFdWMFlXeHNhV05TYjNWbmFHNWxjM002SUh0Y2JpQWdJQ0FnSUNBZ1ltRnpaVU52Ykc5eVJtRmpkRzl5TEZ4dUlDQWdJQ0FnSUNCaVlYTmxRMjlzYjNKVVpYaDBkWEpsTEZ4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUc1dmNtMWhiRlJsZUhSMWNtVXNYRzRnSUNBZ0lDQmxiV2x6YzJsMlpWUmxlSFIxY21Vc1hHNGdJQ0FnSUNCbGJXbHpjMmwyWlVaaFkzUnZjaXhjYmlBZ0lDQWdJR0ZzY0doaFRXOWtaU3hjYmlBZ0lDQWdJR0ZzY0doaFEzVjBiMlptTEZ4dUlDQWdJQ0FnWkc5MVlteGxVMmxrWldRc1hHNGdJQ0FnSUNCbGVIUmxibk5wYjI1ek9pQjdYRzRnSUNBZ0lDQWdJQzh2SUdWemJHbHVkQzFrYVhOaFlteGxMVzVsZUhRdGJHbHVaU0JBZEhsd1pYTmpjbWx3ZEMxbGMyeHBiblF2Ym1GdGFXNW5MV052Ym5abGJuUnBiMjVjYmlBZ0lDQWdJQ0FnVmxKTlExOXRZWFJsY21saGJITmZiWFJ2YjI0NklHMTBiMjl1UlhoMFpXNXphVzl1TEZ4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0I5TzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCZmNHRnljMlZXTUZWdWJHbDBVSEp2Y0dWeWRHbGxjeWhjYmlBZ0lDQnRZWFJsY21saGJGQnliM0JsY25ScFpYTTZJRll3VFdGMFpYSnBZV3dzWEc0Z0lDQWdjMk5vWlcxaFRXRjBaWEpwWVd3NklFZE1WRVpUWTJobGJXRXVTVTFoZEdWeWFXRnNMRnh1SUNBcE9pQkhURlJHVTJOb1pXMWhMa2xOWVhSbGNtbGhiQ0I3WEc0Z0lDQWdZMjl1YzNRZ2FYTlVjbUZ1YzNCaGNtVnVkRnBYY21sMFpTQTlJRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeTV6YUdGa1pYSWdQVDA5SUNkV1VrMHZWVzVzYVhSVWNtRnVjM0JoY21WdWRGcFhjbWwwWlNjN1hHNGdJQ0FnWTI5dWMzUWdhWE5VY21GdWMzQmhjbVZ1ZENBOUlHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGN5NXphR0ZrWlhJZ1BUMDlJQ2RXVWswdlZXNXNhWFJVY21GdWMzQmhjbVZ1ZENjZ2ZId2dhWE5VY21GdWMzQmhjbVZ1ZEZwWGNtbDBaVHRjYmx4dUlDQWdJR052Ym5OMElISmxibVJsY2xGMVpYVmxUMlptYzJWMFRuVnRZbVZ5SUQwZ2RHaHBjeTVmZGpCUVlYSnpaVkpsYm1SbGNsRjFaWFZsS0cxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsY3lrN1hHNWNiaUFnSUNCamIyNXpkQ0JwYzBOMWRHOW1aaUE5SUcxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsY3k1emFHRmtaWElnUFQwOUlDZFdVazB2Vlc1c2FYUkRkWFJ2ZFhRbk8xeHVJQ0FnSUdOdmJuTjBJR0ZzY0doaFRXOWtaU0E5SUdselZISmhibk53WVhKbGJuUWdQeUFuUWt4RlRrUW5JRG9nYVhORGRYUnZabVlnUHlBblRVRlRTeWNnT2lBblQxQkJVVlZGSnp0Y2JpQWdJQ0JqYjI1emRDQmhiSEJvWVVOMWRHOW1aaUE5SUdselEzVjBiMlptSUQ4Z2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxtWnNiMkYwVUhKdmNHVnlkR2xsY3o4dVd5ZGZRM1YwYjJabUoxMGdPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0JqYjI1emRDQjBaWGgwZFhKbFZISmhibk5tYjNKdFJYaDBJRDBnZEdocGN5NWZjRzl5ZEZSbGVIUjFjbVZVY21GdWMyWnZjbTBvYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6S1R0Y2JseHVJQ0FnSUdOdmJuTjBJR0poYzJWRGIyeHZja1poWTNSdmNpQTlJRzFoZEdWeWFXRnNVSEp2Y0dWeWRHbGxjeTUyWldOMGIzSlFjbTl3WlhKMGFXVnpQeTViSjE5RGIyeHZjaWRkUHk1dFlYQW9aMkZ0YldGRlQxUkdLVHRjYmlBZ0lDQmpiMjV6ZENCaVlYTmxRMjlzYjNKVVpYaDBkWEpsU1c1a1pYZ2dQU0J0WVhSbGNtbGhiRkJ5YjNCbGNuUnBaWE11ZEdWNGRIVnlaVkJ5YjNCbGNuUnBaWE0vTGxzblgwMWhhVzVVWlhnblhUdGNiaUFnSUNCamIyNXpkQ0JpWVhObFEyOXNiM0pVWlhoMGRYSmxJRDFjYmlBZ0lDQWdJR0poYzJWRGIyeHZjbFJsZUhSMWNtVkpibVJsZUNBaFBTQnVkV3hzWEc0Z0lDQWdJQ0FnSUQ4Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVc1a1pYZzZJR0poYzJWRGIyeHZjbFJsZUhSMWNtVkpibVJsZUN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR1Y0ZEdWdWMybHZibk02SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnTGk0dWRHVjRkSFZ5WlZSeVlXNXpabTl5YlVWNGRDeGNiaUFnSUNBZ0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUM4dklIVnpaU0J0ZEc5dmJpQnBibk4wWldGa0lHOW1JSFZ1YkdsMExDQnphVzVqWlNCMGFHVnlaU0J0YVdkb2RDQmlaU0JXVWswd0xqQWdjM0JsWTJsbWFXTWdabVZoZEhWeVpYTWdkR2hoZENCaGNtVWdibTkwSUhOMWNIQnZjblJsWkNCaWVTQm5iSFJtWEc0Z0lDQWdZMjl1YzNRZ2JYUnZiMjVGZUhSbGJuTnBiMjQ2SUZZeFRWUnZiMjVUWTJobGJXRXVWbEpOUTAxaGRHVnlhV0ZzYzAxVWIyOXVJRDBnZTF4dUlDQWdJQ0FnYzNCbFkxWmxjbk5wYjI0NklDY3hMakFuTEZ4dUlDQWdJQ0FnZEhKaGJuTndZWEpsYm5SWGFYUm9XbGR5YVhSbE9pQnBjMVJ5WVc1emNHRnlaVzUwV2xkeWFYUmxMRnh1SUNBZ0lDQWdjbVZ1WkdWeVVYVmxkV1ZQWm1aelpYUk9kVzFpWlhJc1hHNGdJQ0FnSUNCemFHRmtaVU52Ykc5eVJtRmpkRzl5T2lCaVlYTmxRMjlzYjNKR1lXTjBiM0lzWEc0Z0lDQWdJQ0J6YUdGa1pVMTFiSFJwY0d4NVZHVjRkSFZ5WlRvZ1ltRnpaVU52Ykc5eVZHVjRkSFZ5WlN4Y2JpQWdJQ0I5TzF4dVhHNGdJQ0FnY21WMGRYSnVJSHRjYmlBZ0lDQWdJQzR1TG5OamFHVnRZVTFoZEdWeWFXRnNMRnh1WEc0Z0lDQWdJQ0J3WW5KTlpYUmhiR3hwWTFKdmRXZG9ibVZ6Y3pvZ2UxeHVJQ0FnSUNBZ0lDQmlZWE5sUTI5c2IzSkdZV04wYjNJc1hHNGdJQ0FnSUNBZ0lHSmhjMlZEYjJ4dmNsUmxlSFIxY21Vc1hHNGdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ1lXeHdhR0ZOYjJSbExGeHVJQ0FnSUNBZ1lXeHdhR0ZEZFhSdlptWXNYRzRnSUNBZ0lDQmxlSFJsYm5OcGIyNXpPaUI3WEc0Z0lDQWdJQ0FnSUM4dklHVnpiR2x1ZEMxa2FYTmhZbXhsTFc1bGVIUXRiR2x1WlNCQWRIbHdaWE5qY21sd2RDMWxjMnhwYm5RdmJtRnRhVzVuTFdOdmJuWmxiblJwYjI1Y2JpQWdJQ0FnSUNBZ1ZsSk5RMTl0WVhSbGNtbGhiSE5mYlhSdmIyNDZJRzEwYjI5dVJYaDBaVzV6YVc5dUxGeHVJQ0FnSUNBZ2ZTeGNiaUFnSUNCOU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU55WldGMFpTQmhJR2RzVkVZZ1lFdElVbDkwWlhoMGRYSmxYM1J5WVc1elptOXliV0FnWlhoMFpXNXphVzl1SUdaeWIyMGdkakFnZEdWNGRIVnlaU0IwY21GdWMyWnZjbTBnYVc1bWJ5NWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdYM0J2Y25SVVpYaDBkWEpsVkhKaGJuTm1iM0p0S0cxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsY3pvZ1ZqQk5ZWFJsY21saGJDazZJSHNnVzI1aGJXVTZJSE4wY21sdVoxMDZJR0Z1ZVNCOUlIdGNiaUFnSUNCamIyNXpkQ0IwWlhoMGRYSmxWSEpoYm5ObWIzSnRJRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG5abFkzUnZjbEJ5YjNCbGNuUnBaWE0vTGxzblgwMWhhVzVVWlhnblhUdGNiaUFnSUNCcFppQW9kR1Y0ZEhWeVpWUnlZVzV6Wm05eWJTQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2UzMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnYjJabWMyVjBJRDBnVzNSbGVIUjFjbVZVY21GdWMyWnZjbTAvTGxzd1hTQS9QeUF3TGpBc0lIUmxlSFIxY21WVWNtRnVjMlp2Y20wL0xsc3hYU0EvUHlBd0xqQmRPMXh1SUNBZ0lHTnZibk4wSUhOallXeGxJRDBnVzNSbGVIUjFjbVZVY21GdWMyWnZjbTAvTGxzeVhTQS9QeUF4TGpBc0lIUmxlSFIxY21WVWNtRnVjMlp2Y20wL0xsc3pYU0EvUHlBeExqQmRPMXh1WEc0Z0lDQWdiMlptYzJWMFd6RmRJRDBnTVM0d0lDMGdjMk5oYkdWYk1WMGdMU0J2Wm1aelpYUmJNVjA3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJHVXRibVY0ZEMxc2FXNWxJRUIwZVhCbGMyTnlhWEIwTFdWemJHbHVkQzl1WVcxcGJtY3RZMjl1ZG1WdWRHbHZibHh1SUNBZ0lDQWdTMGhTWDNSbGVIUjFjbVZmZEhKaGJuTm1iM0p0T2lCN0lHOW1abk5sZEN3Z2MyTmhiR1VnZlN4Y2JpQWdJQ0I5TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnZiblpsY25RZ2RqQWdjbVZ1WkdWeUlHOXlaR1Z5SUdsdWRHOGdkakVnY21WdVpHVnlJRzl5WkdWeUxseHVJQ0FnS2lCVWFHbHpJSFZ6WlhNZ1lTQnRZWEFnWm5KdmJTQjJNQ0J5Wlc1a1pYSWdjWFZsZFdVZ2RHOGdkakVnWTI5dGNHeHBZVzUwSUhKbGJtUmxjaUJ4ZFdWMVpTQnZabVp6WlhRZ2QyaHBZMmdnYVhNZ1oyVnVaWEpoZEdWa0lHbHVJSHRBYkdsdWF5QmZjRzl3ZFd4aGRHVlNaVzVrWlhKUmRXVjFaVTFoY0gwdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElGOTJNRkJoY25ObFVtVnVaR1Z5VVhWbGRXVW9iV0YwWlhKcFlXeFFjbTl3WlhKMGFXVnpPaUJXTUUxaGRHVnlhV0ZzS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0JqYjI1emRDQnBjMVJ5WVc1emNHRnlaVzUwSUQwZ2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxtdGxlWGR2Y21STllYQS9MbHNuWDBGTVVFaEJRa3hGVGtSZlQwNG5YU0EvUHlCbVlXeHpaVHRjYmlBZ0lDQmpiMjV6ZENCbGJtRmliR1ZrV2xkeWFYUmxJRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG1ac2IyRjBVSEp2Y0dWeWRHbGxjejh1V3lkZldsZHlhWFJsSjEwZ1BUMDlJREU3WEc1Y2JpQWdJQ0JzWlhRZ2IyWm1jMlYwSUQwZ01EdGNibHh1SUNBZ0lHbG1JQ2hwYzFSeVlXNXpjR0Z5Wlc1MEtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCMk1GRjFaWFZsSUQwZ2JXRjBaWEpwWVd4UWNtOXdaWEowYVdWekxuSmxibVJsY2xGMVpYVmxPMXh1WEc0Z0lDQWdJQ0JwWmlBb2RqQlJkV1YxWlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hsYm1GaWJHVmtXbGR5YVhSbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnYjJabWMyVjBJRDBnZEdocGN5NWZjbVZ1WkdWeVVYVmxkV1ZOWVhCVWNtRnVjM0JoY21WdWRGcFhjbWwwWlM1blpYUW9kakJSZFdWMVpTa2hPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUc5bVpuTmxkQ0E5SUhSb2FYTXVYM0psYm1SbGNsRjFaWFZsVFdGd1ZISmhibk53WVhKbGJuUXVaMlYwS0hZd1VYVmxkV1VwSVR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJ2Wm1aelpYUTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxJR0VnYldGd0lIZG9hV05vSUcxaGNITWdkakFnY21WdVpHVnlJSEYxWlhWbElIUnZJSFl4SUdOdmJYQnNhV0Z1ZENCeVpXNWtaWElnY1hWbGRXVWdiMlptYzJWMExseHVJQ0FnS2lCVWFHbHpJR3hwYzNSeklIVndJR0ZzYkNCeVpXNWtaWElnY1hWbGRXVnpJSFJvWlNCdGIyUmxiQ0IxYzJVZ1lXNWtJR055WldGMFpYTWdZU0J0WVhBZ2RHOGdibVYzSUhKbGJtUmxjaUJ4ZFdWMVpTQnZabVp6WlhSeklHbHVJSFJvWlNCellXMWxJRzl5WkdWeUxseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmZjRzl3ZFd4aGRHVlNaVzVrWlhKUmRXVjFaVTFoY0NodFlYUmxjbWxoYkZCeWIzQmxjblJwWlhOTWFYTjBPaUJXTUUxaGRHVnlhV0ZzVzEwcElIdGNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkJJSE5sZENCdlppQjFjMlZrSUhKbGJtUmxjaUJ4ZFdWMVpYTWdhVzRnVkhKaGJuTndZWEpsYm5RZ2JXRjBaWEpwWVd4ekxseHVJQ0FnSUNBcUwxeHVJQ0FnSUdOdmJuTjBJSEpsYm1SbGNsRjFaWFZsYzFSeVlXNXpjR0Z5Wlc1MElEMGdibVYzSUZObGREeHVkVzFpWlhJK0tDazdYRzVjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJCSUhObGRDQnZaaUIxYzJWa0lISmxibVJsY2lCeGRXVjFaWE1nYVc0Z1ZISmhibk53WVhKbGJuUmFWM0pwZEdVZ2JXRjBaWEpwWVd4ekxseHVJQ0FnSUNBcUwxeHVJQ0FnSUdOdmJuTjBJSEpsYm1SbGNsRjFaWFZsYzFSeVlXNXpjR0Z5Wlc1MFdsZHlhWFJsSUQwZ2JtVjNJRk5sZER4dWRXMWlaWEkrS0NrN1hHNWNiaUFnSUNBdkx5QndiM0IxYkdGMFpTQjBhR1VnY21WdVpHVnlJSEYxWlhWbElITmxkRnh1SUNBZ0lHMWhkR1Z5YVdGc1VISnZjR1Z5ZEdsbGMweHBjM1F1Wm05eVJXRmphQ2dvYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6S1NBOVBpQjdYRzRnSUNBZ0lDQmpiMjV6ZENCcGMxUnlZVzV6Y0dGeVpXNTBJRDBnYldGMFpYSnBZV3hRY205d1pYSjBhV1Z6TG10bGVYZHZjbVJOWVhBL0xsc25YMEZNVUVoQlFreEZUa1JmVDA0blhTQS9QeUJtWVd4elpUdGNiaUFnSUNBZ0lHTnZibk4wSUdWdVlXSnNaV1JhVjNKcGRHVWdQU0J0WVhSbGNtbGhiRkJ5YjNCbGNuUnBaWE11Wm14dllYUlFjbTl3WlhKMGFXVnpQeTViSjE5YVYzSnBkR1VuWFNBOVBUMGdNVHRjYmx4dUlDQWdJQ0FnYVdZZ0tHbHpWSEpoYm5Od1lYSmxiblFwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnZGpCUmRXVjFaU0E5SUcxaGRHVnlhV0ZzVUhKdmNHVnlkR2xsY3k1eVpXNWtaWEpSZFdWMVpUdGNibHh1SUNBZ0lDQWdJQ0JwWmlBb2RqQlJkV1YxWlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dWdVlXSnNaV1JhVjNKcGRHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxibVJsY2xGMVpYVmxjMVJ5WVc1emNHRnlaVzUwV2xkeWFYUmxMbUZrWkNoMk1GRjFaWFZsS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WdVpHVnlVWFZsZFdWelZISmhibk53WVhKbGJuUXVZV1JrS0hZd1VYVmxkV1VwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdMeThnYzJodmR5QmhJSGRoY201cGJtY2dhV1lnZEdobElHMXZaR1ZzSUhWelpYTWdkakVnYVc1amIyMXdZWFJwWW14bElHNTFiV0psY2lCdlppQnlaVzVrWlhJZ2NYVmxkV1Z6WEc0Z0lDQWdhV1lnS0hKbGJtUmxjbEYxWlhWbGMxUnlZVzV6Y0dGeVpXNTBMbk5wZW1VZ1BpQXhNQ2tnZTF4dUlDQWdJQ0FnWTI5dWMyOXNaUzUzWVhKdUtGeHVJQ0FnSUNBZ0lDQmdWbEpOVFdGMFpYSnBZV3h6VmpCRGIyMXdZWFJRYkhWbmFXNDZJRlJvYVhNZ1ZsSk5JSFZ6WlhNZ0pIdHlaVzVrWlhKUmRXVjFaWE5VY21GdWMzQmhjbVZ1ZEM1emFYcGxmU0J5Wlc1a1pYSWdjWFZsZFdWeklHWnZjaUJVY21GdWMzQmhjbVZ1ZENCdFlYUmxjbWxoYkhNZ2QyaHBiR1VnVmxKTklERXVNQ0J2Ym14NUlITjFjSEJ2Y25SeklIVndJSFJ2SURFd0lISmxibVJsY2lCeGRXVjFaWE11SUZSb1pTQnRiMlJsYkNCdGFXZG9kQ0J1YjNRZ1ltVWdjbVZ1WkdWeVpXUWdZMjl5Y21WamRHeDVMbUFzWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoeVpXNWtaWEpSZFdWMVpYTlVjbUZ1YzNCaGNtVnVkRnBYY21sMFpTNXphWHBsSUQ0Z01UQXBJSHRjYmlBZ0lDQWdJR052Ym5OdmJHVXVkMkZ5YmloY2JpQWdJQ0FnSUNBZ1lGWlNUVTFoZEdWeWFXRnNjMVl3UTI5dGNHRjBVR3gxWjJsdU9pQlVhR2x6SUZaU1RTQjFjMlZ6SUNSN2NtVnVaR1Z5VVhWbGRXVnpWSEpoYm5Od1lYSmxiblJhVjNKcGRHVXVjMmw2WlgwZ2NtVnVaR1Z5SUhGMVpYVmxjeUJtYjNJZ1ZISmhibk53WVhKbGJuUmFWM0pwZEdVZ2JXRjBaWEpwWVd4eklIZG9hV3hsSUZaU1RTQXhMakFnYjI1c2VTQnpkWEJ3YjNKMGN5QjFjQ0IwYnlBeE1DQnlaVzVrWlhJZ2NYVmxkV1Z6TGlCVWFHVWdiVzlrWld3Z2JXbG5hSFFnYm05MElHSmxJSEpsYm1SbGNtVmtJR052Y25KbFkzUnNlUzVnTEZ4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCamNtVmhkR1VnWVNCdFlYQWdabkp2YlNCMk1DQnlaVzVrWlhJZ2NYVmxkV1VnZEc4Z2RqRWdjbVZ1WkdWeUlIRjFaWFZsSUc5bVpuTmxkRnh1SUNBZ0lFRnljbUY1TG1aeWIyMG9jbVZ1WkdWeVVYVmxkV1Z6VkhKaGJuTndZWEpsYm5RcFhHNGdJQ0FnSUNBdWMyOXlkQ2dwWEc0Z0lDQWdJQ0F1Wm05eVJXRmphQ2dvY1hWbGRXVXNJR2twSUQwK0lIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2JtVjNVWFZsZFdWUFptWnpaWFFnUFNCTllYUm9MbTFwYmloTllYUm9MbTFoZUNocElDMGdjbVZ1WkdWeVVYVmxkV1Z6VkhKaGJuTndZWEpsYm5RdWMybDZaU0FySURFc0lDMDVLU3dnTUNrN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WDNKbGJtUmxjbEYxWlhWbFRXRndWSEpoYm5Od1lYSmxiblF1YzJWMEtIRjFaWFZsTENCdVpYZFJkV1YxWlU5bVpuTmxkQ2s3WEc0Z0lDQWdJQ0I5S1R0Y2JseHVJQ0FnSUVGeWNtRjVMbVp5YjIwb2NtVnVaR1Z5VVhWbGRXVnpWSEpoYm5Od1lYSmxiblJhVjNKcGRHVXBYRzRnSUNBZ0lDQXVjMjl5ZENncFhHNGdJQ0FnSUNBdVptOXlSV0ZqYUNnb2NYVmxkV1VzSUdrcElEMCtJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdibVYzVVhWbGRXVlBabVp6WlhRZ1BTQk5ZWFJvTG0xcGJpaE5ZWFJvTG0xaGVDaHBMQ0F3S1N3Z09TazdYRzRnSUNBZ0lDQWdJSFJvYVhNdVgzSmxibVJsY2xGMVpYVmxUV0Z3VkhKaGJuTndZWEpsYm5SYVYzSnBkR1V1YzJWMEtIRjFaWFZsTENCdVpYZFJkV1YxWlU5bVpuTmxkQ2s3WEc0Z0lDQWdJQ0I5S1R0Y2JpQWdmVnh1ZlZ4dUlsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQmIwZEJPMEZCUTA4c1UwRkJVeXhUUVVGVExFTkJRVU1zVDBGQlR5eEZRVUZGTEZWQlFWVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1UwRkJVeXhGUVVGRk8wRkJRemRFTEVsQlFVa3NVMEZCVXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzVDBGQlR5eExRVUZMTEZsQlFWa3NRMEZCUXl4SFFVRkhMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eFZRVUZWTEU5QlFVOHNSVUZCUlN4RlFVRkZMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUTJoSUxFbEJRVWtzVDBGQlR5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1QwRkJUeXhEUVVGRExFVkJRVVVzVlVGQlZTeFBRVUZQTEVWQlFVVXNUVUZCVFN4RlFVRkZPMEZCUXk5RUxGRkJRVkVzVTBGQlV5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTnVSeXhSUVVGUkxGTkJRVk1zVVVGQlVTeERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTjBSeXhSUVVGUkxGTkJRVk1zU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRTFCUVUwc1EwRkJReXhKUVVGSkxFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTXNSVUZCUlR0QlFVTjBTQ3hSUVVGUkxFbEJRVWtzUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeFZRVUZWTEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU01UlN4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVOUU96dEJRekZJVFN4VFFVRlZMRk5CUVZNc1EwRkJReXhEUVVGVExFVkJRVUU3U1VGRGFrTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTXhRanM3VFVOTFlTd3dRa0ZCTUVJc1EwRkJRVHRCUVdGeVF5eEpRVUZCTEVsQlFWY3NTVUZCU1N4SFFVRkJPMEZCUTJJc1VVRkJRU3hQUVVGUExEUkNRVUUwUWl4RFFVRkRPMHRCUTNKRE8wRkJSVVFzU1VGQlFTeFhRVUZCTEVOQlFXMUNMRTFCUVd0Q0xFVkJRVUU3TzBGQlEyNURMRkZCUVVFc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTTdRVUZGY2tJc1VVRkJRU3hKUVVGSkxFTkJRVU1zTUVKQlFUQkNMRWRCUVVjc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU0xUXl4UlFVRkJMRWxCUVVrc1EwRkJReXhuUTBGQlowTXNSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE96czdRVUZKYkVRc1VVRkJRU3hOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVhkQ0xFTkJRVU03VVVGRmJFUXNTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZKTEVOQlFVTXNZMEZCWXl4TlFVRkpMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkJMRVZCUVVVc1EwRkJRenRSUVVOb1JDeEpRVUZKTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1QwRkJUeXhEUVVGRExIVkNRVUYxUWl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVU3UVVGREwwUXNXVUZCUVN4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhEUVVGRE8wRkJRMjVFTEZOQlFVRTdTMEZEUmp0SlFVVlpMRlZCUVZVc1IwRkJRVHM3TzBGQlEzSkNMRmxCUVVFc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRjNRaXhEUVVGRE96dFpRVWRzUkN4TlFVRk5MR05CUVdNc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZKTEVOQlFVTXNWVUZCVlN4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGSExFdEJRVXNzUTBGQmMwSXNRMEZCUXp0WlFVTnlSU3hOUVVGTkxHOUNRVUZ2UWl4SFFVRkhMR05CUVdNc1MwRkJRU3hKUVVGQkxFbEJRV1FzWTBGQll5eExRVUZrTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxHTkJRV01zUTBGQlJTeHJRa0ZCYTBJc1EwRkJRenRaUVVOb1JTeEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFVkJRVVU3WjBKQlEzcENMRTlCUVU4N1FVRkRVaXhoUVVGQk96dEJRVWRFTEZsQlFVRXNTVUZCU1N4RFFVRkRMSFZDUVVGMVFpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFTkJRVU03TzFsQlIyNUVMRzlDUVVGdlFpeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEdGQlFXRXNTMEZCU1RzN1owSkJRMnBGTEUxQlFVMHNWMEZCVnl4SFFVRkhMRU5CUVVFc1JVRkJRU3hIUVVGQkxFbEJRVWtzUTBGQlF5eFRRVUZUTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVjc1lVRkJZU3hEUVVGRExFTkJRVU03WjBKQlJYQkVMRWxCUVVrc1YwRkJWeXhKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU4yUWl4dlFrRkJRU3hQUVVGUExFTkJRVU1zU1VGQlNTeERRVU5XTEhkRVFVRjNSQ3hoUVVGaExFTkJRVUVzZDBOQlFVRXNRMEZCTUVNc1EwRkRhRWdzUTBGQlF6dHZRa0ZEUml4UFFVRlBPMEZCUTFJc2FVSkJRVUU3UVVGRlJDeG5Ra0ZCUVN4SlFVRkpMR3RDUVVGclFpeERRVUZETEUxQlFVMHNTMEZCU3l4WFFVRlhMRVZCUVVVN2IwSkJRemRETEUxQlFVMHNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4clFrRkJhMElzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXp0QlFVTXZSU3h2UWtGQlFTeEpRVUZKTEVOQlFVTXNVMEZCVlN4RFFVRkRMR0ZCUVdFc1EwRkJReXhIUVVGSExGRkJRVkVzUTBGQlF6dEJRVU16UXl4cFFrRkJRVHR4UWtGQlRTeEpRVUZKTEVOQlFVRXNSVUZCUVN4SFFVRkJMR3RDUVVGclFpeERRVUZETEUxQlFVMHNNRU5CUVVVc1ZVRkJWU3hEUVVGRExGZEJRVmNzUTBGQlF5eEZRVUZGTzI5Q1FVTTNSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zYTBKQlFXdENMRVZCUVVVc1YwRkJWeXhEUVVGRExFTkJRVU03UVVGREwwVXNiMEpCUVVFc1NVRkJTU3hEUVVGRExGTkJRVlVzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNN1FVRkRNME1zYVVKQlFVRTdRVUZCVFN4eFFrRkJRU3hKUVVGSkxHdENRVUZyUWl4RFFVRkRMRTFCUVUwc1MwRkJTeXh2UWtGQmIwSXNSVUZCUlN4RFFVVTVSRHRCUVVGTkxIRkNRVUZCTzI5Q1FVTk1MRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlFTdzBRMEZCUVN4RlFVRXJReXhyUWtGQmEwSXNRMEZCUXl4TlFVRk5MRU5CUVVVc1EwRkJRU3hEUVVGRExFTkJRVU03UVVGRE1VWXNhVUpCUVVFN1FVRkRTQ3hoUVVGRExFTkJRVU1zUTBGQlF6czdRVUZEU2l4TFFVRkJPMGxCUlU4c2RVSkJRWFZDTEVOQlF6ZENMR3RDUVVFNFFpeEZRVU01UWl4alFVRnZReXhGUVVGQk96dEJRVVZ3UXl4UlFVRkJMRTFCUVUwc1lVRkJZU3hIUVVGSExFTkJRVUVzUlVGQlFTeEhRVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMR3RDUVVGclFpeERRVUZETEZWQlFWVXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSeXhuUWtGQlowSXNRMEZCUXl4TlFVRkpMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkJMRXRCUVVzc1EwRkJRenRCUVVOcVJpeFJRVUZCTEUxQlFVMHNZVUZCWVN4SFFVRkhMRU5CUVVFc1EwRkJRU3hGUVVGQkxFZEJRVUVzYTBKQlFXdENMRU5CUVVNc1pVRkJaU3hOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZITEZOQlFWTXNRMEZCUXl4TlFVRkxMRU5CUVVNc1EwRkJRenRCUVVNMVJTeFJRVUZCTEUxQlFVMHNjVUpCUVhGQ0xFZEJRVWNzWVVGQllTeEpRVUZKTEdGQlFXRXNRMEZCUXp0UlFVVTNSQ3hOUVVGTkxIVkNRVUYxUWl4SFFVRkhMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZETzBGQlJUZEZMRkZCUVVFc1RVRkJUU3hSUVVGUkxFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNRMEZCUVN4RlFVRkJMRWRCUVVFc2EwSkJRV3RDTEVOQlFVTXNWVUZCVlN4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGSExHVkJRV1VzUTBGQlF5eE5RVUZKTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZCTEV0QlFVc3NRMEZCUXp0QlFVTXpSU3hSUVVGQkxFMUJRVTBzVTBGQlV5eEhRVUZITEdGQlFXRXNSMEZCUnl4UFFVRlBMRWRCUVVjc1VVRkJVU3hIUVVGSExFMUJRVTBzUjBGQlJ5eFJRVUZSTEVOQlFVTTdRVUZEZWtVc1VVRkJRU3hOUVVGTkxGZEJRVmNzUjBGQlJ5eFJRVUZSTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc2EwSkJRV3RDTEVOQlFVTXNaVUZCWlN3d1EwRkJSeXhUUVVGVExFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTTdRVUZGTTBZc1VVRkJRU3hOUVVGTkxGRkJRVkVzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4RFFVRkJMRVZCUVVFc1IwRkJRU3hyUWtGQmEwSXNRMEZCUXl4bFFVRmxMRTFCUVVjc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVUVzVjBGQlZ5eERRVUZETEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVa3NRMEZCUXl4RFFVRkRPMEZCUTNoRkxGRkJRVUVzVFVGQlRTeFhRVUZYTEVkQlFVY3NVVUZCVVN4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVWdVF5eE5RVUZOTEcxQ1FVRnRRaXhIUVVGSExFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRPMEZCUlRORkxGRkJRVUVzVFVGQlRTeGxRVUZsTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1EwRkJRU3hGUVVGQkxFZEJRVUVzYTBKQlFXdENMRU5CUVVNc1owSkJRV2RDTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVjc1VVRkJVU3hEUVVGRExEQkRRVUZGTEVkQlFVY3NRMEZETVVVc1EwRkJReXhEUVVGVExFVkJRVVVzUTBGQlV5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVTjJSQ3hEUVVGRE8xRkJRMFlzVFVGQlRTeHhRa0ZCY1VJc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeHJRa0ZCYTBJc1EwRkJReXhwUWtGQmFVSXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSeXhWUVVGVkxFTkJRVU1zUTBGQlF6dEJRVU5xUml4UlFVRkJMRTFCUVUwc1owSkJRV2RDTEVkQlEzQkNMSEZDUVVGeFFpeEpRVUZKTEVsQlFVazdRVUZETTBJc1kwRkJSVHRCUVVORkxHZENRVUZCTEV0QlFVc3NSVUZCUlN4eFFrRkJjVUk3WjBKQlF6VkNMRlZCUVZVc1JVRkJRU3hOUVVGQkxFTkJRVUVzVFVGQlFTeERRVUZCTEVWQlFVRXNSVUZEVEN4dFFrRkJiVUlzUTBGRGRrSTdRVUZEUml4aFFVRkJPMk5CUTBRc1UwRkJVeXhEUVVGRE8xRkJSV2hDTEUxQlFVMHNhMEpCUVd0Q0xFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU1zWlVGQlpTeE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkhMRmxCUVZrc1EwRkJReXhEUVVGRE8xRkJRemxGTEUxQlFVMHNhMEpCUVd0Q0xFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU1zYVVKQlFXbENMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVWNzVlVGQlZTeERRVUZETEVOQlFVTTdRVUZET1VVc1VVRkJRU3hOUVVGTkxHRkJRV0VzUjBGRGFrSXNhMEpCUVd0Q0xFbEJRVWtzU1VGQlNUdEJRVU40UWl4alFVRkZPMEZCUTBVc1owSkJRVUVzUzBGQlN5eEZRVUZGTEd0Q1FVRnJRanRCUVVONlFpeG5Ra0ZCUVN4TFFVRkxMRVZCUVVVc2EwSkJRV3RDTzJkQ1FVTjZRaXhWUVVGVkxFVkJRVUVzVFVGQlFTeERRVUZCTEUxQlFVRXNRMEZCUVN4RlFVRkJMRVZCUTB3c2JVSkJRVzFDTEVOQlEzWkNPMEZCUTBZc1lVRkJRVHRqUVVORUxGTkJRVk1zUTBGQlF6dEJRVVZvUWl4UlFVRkJMRTFCUVUwc1kwRkJZeXhIUVVGSExFTkJRVUVzUlVGQlFTeEhRVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMR3RDUVVGclFpeERRVUZETEdkQ1FVRm5RaXhOUVVGSExFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZCTEdkQ1FVRm5RaXhEUVVGRExFMUJRVVVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVRXNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJReTlHTEUxQlFVMHNiMEpCUVc5Q0xFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU1zYVVKQlFXbENMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVWNzWTBGQll5eERRVUZETEVOQlFVTTdRVUZEY0VZc1VVRkJRU3hOUVVGTkxHVkJRV1VzUjBGRGJrSXNiMEpCUVc5Q0xFbEJRVWtzU1VGQlNUdEJRVU14UWl4alFVRkZPMEZCUTBVc1owSkJRVUVzUzBGQlN5eEZRVUZGTEc5Q1FVRnZRanRuUWtGRE0wSXNWVUZCVlN4RlFVRkJMRTFCUVVFc1EwRkJRU3hOUVVGQkxFTkJRVUVzUlVGQlFTeEZRVU5NTEcxQ1FVRnRRaXhEUVVOMlFqdEJRVU5HTEdGQlFVRTdZMEZEUkN4VFFVRlRMRU5CUVVNN1FVRkZhRUlzVVVGQlFTeE5RVUZOTEdkQ1FVRm5RaXhIUVVGSExFTkJRVUVzUlVGQlFTeEhRVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMR3RDUVVGclFpeERRVUZETEdkQ1FVRm5RaXhOUVVGSExFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZCTEdGQlFXRXNRMEZCUXl4TlFVRkZMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGQkxFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0UlFVTTVSaXhOUVVGTkxIbENRVUY1UWl4SFFVRkhMRU5CUVVFc1JVRkJRU3hIUVVGQkxHdENRVUZyUWl4RFFVRkRMR2xDUVVGcFFpeE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkhMR1ZCUVdVc1EwRkJReXhEUVVGRE8wRkJRekZHTEZGQlFVRXNUVUZCVFN4dlFrRkJiMElzUjBGRGVFSXNlVUpCUVhsQ0xFbEJRVWtzU1VGQlNUdEJRVU12UWl4alFVRkZPMEZCUTBVc1owSkJRVUVzUzBGQlN5eEZRVUZGTEhsQ1FVRjVRanRuUWtGRGFFTXNWVUZCVlN4RlFVRkJMRTFCUVVFc1EwRkJRU3hOUVVGQkxFTkJRVUVzUlVGQlFTeEZRVU5NTEcxQ1FVRnRRaXhEUVVOMlFqdEJRVU5HTEdGQlFVRTdZMEZEUkN4VFFVRlRMRU5CUVVNN08wRkJSMmhDTEZGQlFVRXNTVUZCU1N4clFrRkJhMElzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4RFFVRkJMRVZCUVVFc1IwRkJRU3hyUWtGQmEwSXNRMEZCUXl4bFFVRmxMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVWNzWVVGQllTeERRVUZETEUxQlFVa3NTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVRXNSMEZCUnl4RFFVRkRPMEZCUTNCR0xGRkJRVUVzU1VGQlNTeHJRa0ZCYTBJc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeERRVUZCTEVWQlFVRXNSMEZCUVN4clFrRkJhMElzUTBGQlF5eGxRVUZsTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVjc1lVRkJZU3hEUVVGRExFMUJRVWtzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFZEJRVUVzUjBGQlJ5eERRVUZETzBGQlEzQkdMRkZCUVVFc2EwSkJRV3RDTEVkQlFVY3NTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFJRVU51Unl4clFrRkJhMElzUjBGQlJ5eERRVUZETEd0Q1FVRnJRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8xRkJSWFJGTEUxQlFVMHNhVUpCUVdsQ0xFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU1zWlVGQlpTeE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkhMSGxDUVVGNVFpeERRVUZETEVOQlFVTTdRVUZETVVZc1VVRkJRU3hOUVVGTkxHOUNRVUZ2UWl4SFFVRkhMR2xDUVVGcFFpeEhRVUZITEVkQlFVY3NSMEZCUnl4cFFrRkJhVUlzUjBGQlJ5eFRRVUZUTEVOQlFVTTdVVUZGY2tZc1RVRkJUU3hyUWtGQmEwSXNSMEZCUnl4RFFVRkJMRVZCUVVFc1IwRkJRU3hyUWtGQmEwSXNRMEZCUXl4cFFrRkJhVUlzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUnl4WlFVRlpMRU5CUVVNc1EwRkJRenRCUVVOb1JpeFJRVUZCTEUxQlFVMHNXVUZCV1N4SFFVRkhMR3RDUVVGclFpeEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRPMEZCUXpsRkxGRkJRVUVzVFVGQlRTeGhRVUZoTEVkQlEycENMR3RDUVVGclFpeEpRVUZKTEVsQlFVazdRVUZEZUVJc1kwRkJSVHRCUVVORkxHZENRVUZCTEV0QlFVc3NSVUZCUlN4clFrRkJhMEk3UVVGRE1VSXNZVUZCUVR0alFVTkVMRk5CUVZNc1EwRkJRenRSUVVWb1FpeE5RVUZOTEc5Q1FVRnZRaXhIUVVGSExFTkJRVUVzUlVGQlFTeEhRVUZCTEd0Q1FVRnJRaXhEUVVGRExHVkJRV1VzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUnl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzFGQlEzSkdMRTFCUVUwc2RVSkJRWFZDTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc2EwSkJRV3RDTEVOQlFVTXNhVUpCUVdsQ0xFMUJRVUVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVY3NZVUZCWVN4RFFVRkRMRU5CUVVNN1FVRkRkRVlzVVVGQlFTeE5RVUZOTEd0Q1FVRnJRaXhIUVVOMFFpeDFRa0ZCZFVJc1NVRkJTU3hKUVVGSk8wRkJRemRDTEdOQlFVVTdRVUZEUlN4blFrRkJRU3hMUVVGTExFVkJRVVVzZFVKQlFYVkNPMmRDUVVNNVFpeFZRVUZWTEVWQlFVRXNUVUZCUVN4RFFVRkJMRTFCUVVFc1EwRkJRU3hGUVVGQkxFVkJRMHdzYlVKQlFXMUNMRU5CUTNaQ08wRkJRMFlzWVVGQlFUdGpRVU5FTEZOQlFWTXNRMEZCUXp0QlFVVm9RaXhSUVVGQkxFMUJRVTBzZDBKQlFYZENMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzUTBGQlFTeEZRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU1zWjBKQlFXZENMRTFCUVVjc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVUVzVjBGQlZ5eERRVUZETEUxQlFVVXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVFc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFGQlEzQkhMRTFCUVUwc0swSkJRU3RDTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc2EwSkJRV3RDTEVOQlFVTXNaVUZCWlN4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGSExHdENRVUZyUWl4RFFVRkRMRU5CUVVNN1VVRkRha2NzVFVGQlRTeDFRa0ZCZFVJc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeHJRa0ZCYTBJc1EwRkJReXhsUVVGbExFMUJRVUVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVY3NWVUZCVlN4RFFVRkRMRU5CUVVNN1VVRkZha1lzVFVGQlRTeG5Ra0ZCWjBJc1IwRkJSeXhEUVVGRExFMUJRVTBzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3h0UWtGQmJVSXNRMEZCUXl4RFFVTjRSU3hOUVVGQkxFTkJRVUVzUlVGQlFTeEhRVUZCTEd0Q1FVRnJRaXhEUVVGRExHVkJRV1VzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUnl4dFFrRkJiVUlzUTBGQlF5eE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZKTEVOQlFVTXNRMEZEWml4RFFVRkRPenRCUVVkc1JDeFJRVUZCTEVsQlFVa3NhMEpCUVd0Q0xFZEJRVWNzUTBGQlFTeEhRVUZCTEVkQlFVRXNRMEZCUVN4RlFVRkJMRWRCUVVFc2EwSkJRV3RDTEVOQlFVTXNaVUZCWlN4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGSExHVkJRV1VzUTBGQlF5eE5RVUZKTEVsQlFVRXNTVUZCUVN4SFFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUjBGQlFTeEhRVUZCTEVkQlFVY3NRMEZCUXp0QlFVTjBSaXhSUVVGQkxHdENRVUZyUWl4SFFVRkhMRWxCUVVrc1IwRkJSeXhyUWtGQmEwSXNRMEZCUXp0UlFVVXZReXhOUVVGTkxHZERRVUZuUXl4SFFVRkhMRU5CUVVFc1IwRkJRU3hIUVVGQkxHdENRVUZyUWl4RFFVRkRMR2xDUVVGcFFpeE5RVUZCTEVsQlFVRXNTVUZCUVN4SFFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSMEZCUVN4RFFVRkhMSE5DUVVGelFpeERRVUZETEVOQlFVTTdRVUZEZUVjc1VVRkJRU3hOUVVGTkxESkNRVUV5UWl4SFFVTXZRaXhuUTBGQlowTXNTVUZCU1N4SlFVRkpPMEZCUTNSRExHTkJRVVU3UVVGRFJTeG5Ra0ZCUVN4TFFVRkxMRVZCUVVVc1owTkJRV2RETzJkQ1FVTjJReXhWUVVGVkxFVkJRVUVzVFVGQlFTeERRVUZCTEUxQlFVRXNRMEZCUVN4RlFVRkJMRVZCUTB3c2JVSkJRVzFDTEVOQlEzWkNPMEZCUTBZc1lVRkJRVHRqUVVORUxGTkJRVk1zUTBGQlF6dEJRVVZvUWl4UlFVRkJMRTFCUVUwc2EwSkJRV3RDTEVkQlFVY3NRMEZCUVN4SFFVRkJMRWRCUVVFc1EwRkJRU3hIUVVGQkxFZEJRVUVzYTBKQlFXdENMRU5CUVVNc1owSkJRV2RDTEUxQlFVY3NTVUZCUVN4SlFVRkJMRWRCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4SFFVRkJMRU5CUVVFc1pVRkJaU3hEUVVGRExFMUJRVVVzU1VGQlFTeEpRVUZCTEVkQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEhRVUZCTEVOQlFVRXNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRMnhITEUxQlFVMHNaMEpCUVdkQ0xFZEJRVWNzUTBGQlFTeEhRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU1zWlVGQlpTeE5RVUZCTEVsQlFVRXNTVUZCUVN4SFFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSMEZCUVN4RFFVRkhMRzFDUVVGdFFpeERRVUZETEVOQlFVTTdRVUZEYmtZc1VVRkJRU3hOUVVGTkxIZENRVUYzUWl4SFFVTTFRaXhuUWtGQlowSXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJRU3hIUVVGQkxFZEJRVUVzYTBKQlFXdENMRU5CUVVNc1pVRkJaU3cwUTBGQlJ5eHhRa0ZCY1VJc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dFJRVVUzUml4TlFVRk5MREpDUVVFeVFpeEhRVUZITEVOQlFVRXNSMEZCUVN4SFFVRkJMR3RDUVVGclFpeERRVUZETEdsQ1FVRnBRaXhOUVVGQkxFbEJRVUVzU1VGQlFTeEhRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUjBGQlFTeERRVUZITEc5Q1FVRnZRaXhEUVVGRExFTkJRVU03UVVGRGFrY3NVVUZCUVN4TlFVRk5MSE5DUVVGelFpeEhRVU14UWl3eVFrRkJNa0lzU1VGQlNTeEpRVUZKTzBGQlEycERMR05CUVVVN1FVRkRSU3huUWtGQlFTeExRVUZMTEVWQlFVVXNNa0pCUVRKQ08yZENRVU5zUXl4VlFVRlZMRVZCUVVFc1RVRkJRU3hEUVVGQkxFMUJRVUVzUTBGQlFTeEZRVUZCTEVWQlEwd3NiVUpCUVcxQ0xFTkJRM1pDTzBGQlEwWXNZVUZCUVR0alFVTkVMRk5CUVZNc1EwRkJRenRSUVVWb1FpeE5RVUZOTERaQ1FVRTJRaXhIUVVGSExFTkJRVUVzUjBGQlFTeEhRVUZCTEd0Q1FVRnJRaXhEUVVGRExHVkJRV1VzVFVGQlFTeEpRVUZCTEVsQlFVRXNSMEZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVkQlFVRXNRMEZCUnl4blFrRkJaMElzUTBGQlF5eERRVUZET3p0UlFVYzNSaXhKUVVGSkxEWkNRVUUyUWl4SFFVRkhMRU5CUVVFc1IwRkJRU3hIUVVGQkxHdENRVUZyUWl4RFFVRkRMR1ZCUVdVc1RVRkJRU3hKUVVGQkxFbEJRVUVzUjBGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFZEJRVUVzUTBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8xRkJRek5HTEVsQlFVa3NOa0pCUVRaQ0xFbEJRVWtzU1VGQlNTeEZRVUZGTzFsQlEzcERMRFpDUVVFMlFpeEhRVUZITEVOQlFVTXNOa0pCUVRaQ0xFTkJRVU03UVVGRGFFVXNVMEZCUVR0UlFVVkVMRTFCUVUwc09FSkJRVGhDTEVkQlFVY3NRMEZCUVN4SFFVRkJMRWRCUVVFc2EwSkJRV3RDTEVOQlFVTXNaVUZCWlN4TlFVRkJMRWxCUVVFc1NVRkJRU3hIUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1IwRkJRU3hEUVVGSExHbENRVUZwUWl4RFFVRkRMRU5CUVVNN1FVRkZMMFlzVVVGQlFTeE5RVUZOTEdOQlFXTXNSMEZCY1VNN1FVRkRka1FzV1VGQlFTeFhRVUZYTEVWQlFVVXNTMEZCU3p0WlFVTnNRaXh4UWtGQmNVSTdXVUZEY2tJc2RVSkJRWFZDTzFsQlEzWkNMR2RDUVVGblFqdFpRVU5vUWl4dlFrRkJiMEk3V1VGRGNFSXNhMEpCUVd0Q08xbEJRMnhDTEd0Q1FVRnJRanRaUVVOc1FpeHZRa0ZCYjBJN1dVRkRjRUlzV1VGQldUdFpRVU5hTEdGQlFXRTdXVUZEWWl4dlFrRkJiMEk3V1VGRGNFSXNhMEpCUVd0Q08xbEJRMnhDTEhkQ1FVRjNRanRaUVVONFFpd3JRa0ZCSzBJN1dVRkRMMElzZFVKQlFYVkNPMWxCUTNaQ0xHZENRVUZuUWp0WlFVTm9RaXhyUWtGQmEwSTdXVUZEYkVJc01rSkJRVEpDTzFsQlF6TkNMR3RDUVVGclFqdFpRVU5zUWl4M1FrRkJkMEk3V1VGRGVFSXNjMEpCUVhOQ08xbEJRM1JDTERaQ1FVRTJRanRaUVVNM1FpdzJRa0ZCTmtJN1dVRkROMElzT0VKQlFUaENPMU5CUXk5Q0xFTkJRVU03VVVGRlJpeFBRVU5MTEUxQlFVRXNRMEZCUVN4TlFVRkJMRU5CUVVFc1RVRkJRU3hEUVVGQkxFMUJRVUVzUTBGQlFTeEZRVUZCTEVWQlFVRXNZMEZCWXl4RFFVVnFRaXhGUVVGQkxFVkJRVUVzYjBKQlFXOUNMRVZCUVVVN1owSkJRM0JDTEdWQlFXVTdaMEpCUTJZc1owSkJRV2RDTzBGQlEycENMR0ZCUVVFc1JVRkRSQ3hoUVVGaE8xbEJRMklzWlVGQlpUdFpRVU5tTEdOQlFXTTdXVUZEWkN4VFFVRlRPMWxCUTFRc1YwRkJWenRaUVVOWUxGZEJRVmNzUlVGRFdDeFZRVUZWTEVWQlFVVTdPMEZCUlZZc1owSkJRVUVzYjBKQlFXOUNMRVZCUVVVc1kwRkJZenRoUVVOeVF5eEZRVU5FTEVOQlFVRXNRMEZCUVR0TFFVTklPMGxCUlU4c2RVSkJRWFZDTEVOQlF6ZENMR3RDUVVFNFFpeEZRVU01UWl4alFVRnZReXhGUVVGQk96dEJRVVZ3UXl4UlFVRkJMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zVFVGQlRTeExRVUZMTERSQ1FVRTBRaXhEUVVGRE8xRkJRM1pHTEUxQlFVMHNZVUZCWVN4SFFVRkhMR3RDUVVGclFpeERRVUZETEUxQlFVMHNTMEZCU3l4elFrRkJjMElzU1VGQlNTeHRRa0ZCYlVJc1EwRkJRenRSUVVWc1J5eE5RVUZOTEhWQ1FVRjFRaXhIUVVGSExFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRPMEZCUlRkRkxGRkJRVUVzVFVGQlRTeFJRVUZSTEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zVFVGQlRTeExRVUZMTEdsQ1FVRnBRaXhEUVVGRE8wRkJRMnBGTEZGQlFVRXNUVUZCVFN4VFFVRlRMRWRCUVVjc1lVRkJZU3hIUVVGSExFOUJRVThzUjBGQlJ5eFJRVUZSTEVkQlFVY3NUVUZCVFN4SFFVRkhMRkZCUVZFc1EwRkJRenRCUVVONlJTeFJRVUZCTEUxQlFVMHNWMEZCVnl4SFFVRkhMRkZCUVZFc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeHJRa0ZCYTBJc1EwRkJReXhsUVVGbExEQkRRVUZITEZOQlFWTXNRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJRenRSUVVVelJpeE5RVUZOTEcxQ1FVRnRRaXhIUVVGSExFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRPMEZCUlRORkxGRkJRVUVzVFVGQlRTeGxRVUZsTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1EwRkJRU3hGUVVGQkxFZEJRVUVzYTBKQlFXdENMRU5CUVVNc1owSkJRV2RDTEUxQlFVY3NTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVFc1VVRkJVU3hEUVVGRExFMUJRVVVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVRXNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRM2hHTEUxQlFVMHNjVUpCUVhGQ0xFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU1zYVVKQlFXbENMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVWNzVlVGQlZTeERRVUZETEVOQlFVTTdRVUZEYWtZc1VVRkJRU3hOUVVGTkxHZENRVUZuUWl4SFFVTndRaXh4UWtGQmNVSXNTVUZCU1N4SlFVRkpPMEZCUXpOQ0xHTkJRVVU3UVVGRFJTeG5Ra0ZCUVN4TFFVRkxMRVZCUVVVc2NVSkJRWEZDTzJkQ1FVTTFRaXhWUVVGVkxFVkJRVUVzVFVGQlFTeERRVUZCTEUxQlFVRXNRMEZCUVN4RlFVRkJMRVZCUTB3c2JVSkJRVzFDTEVOQlEzWkNPMEZCUTBZc1lVRkJRVHRqUVVORUxGTkJRVk1zUTBGQlF6czdRVUZIYUVJc1VVRkJRU3hOUVVGTkxHTkJRV01zUjBGQmNVTTdRVUZEZGtRc1dVRkJRU3hYUVVGWExFVkJRVVVzUzBGQlN6dEJRVU5zUWl4WlFVRkJMSEZDUVVGeFFpeEZRVUZGTEcxQ1FVRnRRanRaUVVNeFF5eDFRa0ZCZFVJN1FVRkRka0lzV1VGQlFTeG5Ra0ZCWjBJc1JVRkJSU3hsUVVGbE8wRkJRMnBETEZsQlFVRXNiMEpCUVc5Q0xFVkJRVVVzWjBKQlFXZENPMU5CUTNaRExFTkJRVU03VVVGRlJpeFBRVU5MTEUxQlFVRXNRMEZCUVN4TlFVRkJMRU5CUVVFc1RVRkJRU3hEUVVGQkxFMUJRVUVzUTBGQlFTeEZRVUZCTEVWQlFVRXNZMEZCWXl4RFFVVnFRaXhGUVVGQkxFVkJRVUVzYjBKQlFXOUNMRVZCUVVVN1owSkJRM0JDTEdWQlFXVTdaMEpCUTJZc1owSkJRV2RDTzBGQlEycENMR0ZCUVVFc1JVRkRSQ3hUUVVGVE8xbEJRMVFzVjBGQlZ5eEZRVU5ZTEZWQlFWVXNSVUZCUlRzN1FVRkZWaXhuUWtGQlFTeHZRa0ZCYjBJc1JVRkJSU3hqUVVGak8yRkJRM0pETEVWQlEwUXNRMEZCUVN4RFFVRkJPMHRCUTBnN1FVRkZSRHM3UVVGRlJ6dEJRVU5MTEVsQlFVRXNjVUpCUVhGQ0xFTkJRVU1zYTBKQlFUaENMRVZCUVVFN08xRkJRekZFTEUxQlFVMHNaMEpCUVdkQ0xFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNhMEpCUVd0Q0xFTkJRVU1zWjBKQlFXZENMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVWNzVlVGQlZTeERRVUZETEVOQlFVTTdVVUZETTBVc1NVRkJTU3huUWtGQlowSXNTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkROVUlzV1VGQlFTeFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTllMRk5CUVVFN1VVRkZSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVRXNSVUZCUVN4SFFVRkJMR2RDUVVGblFpeExRVUZvUWl4SlFVRkJMRWxCUVVFc1owSkJRV2RDTEV0QlFXaENMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEdkQ1FVRm5RaXhEUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkJMRVZCUVVFc1IwRkJRU3huUWtGQlowSXNTMEZCYUVJc1NVRkJRU3hKUVVGQkxHZENRVUZuUWl4TFFVRm9RaXhMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4blFrRkJaMElzUTBGQlJ5eERRVUZETEVOQlFVTXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNSMEZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNMVJTeE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVFc1JVRkJRU3hIUVVGQkxHZENRVUZuUWl4TFFVRm9RaXhKUVVGQkxFbEJRVUVzWjBKQlFXZENMRXRCUVdoQ0xFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMR2RDUVVGblFpeERRVUZITEVOQlFVTXNRMEZCUXl4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGQkxFVkJRVUVzUjBGQlFTeG5Ra0ZCWjBJc1MwRkJhRUlzU1VGQlFTeEpRVUZCTEdkQ1FVRm5RaXhMUVVGb1FpeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3huUWtGQlowSXNRMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF6dEJRVVV6UlN4UlFVRkJMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVjJReXhQUVVGUE96dEJRVVZNTEZsQlFVRXNjVUpCUVhGQ0xFVkJRVVVzUlVGQlJTeE5RVUZOTEVWQlFVVXNTMEZCU3l4RlFVRkZPMU5CUTNwRExFTkJRVU03UzBGRFNEdEJRVVZFT3pzN1FVRkhSenRCUVVOTExFbEJRVUVzYlVKQlFXMUNMRU5CUVVNc2EwSkJRVGhDTEVWQlFVRTdPMEZCUTNoRUxGRkJRVUVzVFVGQlRTeGhRVUZoTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1EwRkJRU3hGUVVGQkxFZEJRVUVzYTBKQlFXdENMRU5CUVVNc1ZVRkJWU3hOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZITEdkQ1FVRm5RaXhEUVVGRExFMUJRVWtzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFZEJRVUVzUzBGQlN5eERRVUZETzBGQlEycEdMRkZCUVVFc1RVRkJUU3hoUVVGaExFZEJRVWNzUTBGQlFTeERRVUZCTEVWQlFVRXNSMEZCUVN4clFrRkJhMElzUTBGQlF5eGxRVUZsTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVjc1UwRkJVeXhEUVVGRExFMUJRVXNzUTBGQlF5eERRVUZETzFGQlJUVkZMRWxCUVVrc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dEJRVVZtTEZGQlFVRXNTVUZCU1N4aFFVRmhMRVZCUVVVN1FVRkRha0lzV1VGQlFTeE5RVUZOTEU5QlFVOHNSMEZCUnl4clFrRkJhMElzUTBGQlF5eFhRVUZYTEVOQlFVTTdXVUZGTDBNc1NVRkJTU3hQUVVGUExFbEJRVWtzU1VGQlNTeEZRVUZGTzBGQlEyNUNMR2RDUVVGQkxFbEJRVWtzWVVGQllTeEZRVUZGTzI5Q1FVTnFRaXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEdkRFFVRm5ReXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVVXNRMEZCUXp0QlFVTTVSQ3hwUWtGQlFUdEJRVUZOTEhGQ1FVRkJPMjlDUVVOTUxFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNNRUpCUVRCQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUlN4RFFVRkRPMEZCUTNoRUxHbENRVUZCTzBGQlEwWXNZVUZCUVR0QlFVTkdMRk5CUVVFN1FVRkZSQ3hSUVVGQkxFOUJRVThzVFVGQlRTeERRVUZETzB0QlEyWTdRVUZGUkRzN08wRkJSMGM3UVVGRFN5eEpRVUZCTEhWQ1FVRjFRaXhEUVVGRExITkNRVUZ2UXl4RlFVRkJPMEZCUTJ4Rk96dEJRVVZITzBGQlEwZ3NVVUZCUVN4TlFVRk5MSFZDUVVGMVFpeEhRVUZITEVsQlFVa3NSMEZCUnl4RlFVRlZMRU5CUVVNN1FVRkZiRVE3TzBGQlJVYzdRVUZEU0N4UlFVRkJMRTFCUVUwc05rSkJRVFpDTEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVZVc1EwRkJRenM3UVVGSGVFUXNVVUZCUVN4elFrRkJjMElzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4clFrRkJhMElzUzBGQlNUczdRVUZEY0VRc1dVRkJRU3hOUVVGTkxHRkJRV0VzUjBGQlJ5eERRVUZCTEVWQlFVRXNSMEZCUVN4RFFVRkJMRVZCUVVFc1IwRkJRU3hyUWtGQmEwSXNRMEZCUXl4VlFVRlZMRTFCUVVFc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVWNzWjBKQlFXZENMRU5CUVVNc1RVRkJTU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1IwRkJRU3hMUVVGTExFTkJRVU03UVVGRGFrWXNXVUZCUVN4TlFVRk5MR0ZCUVdFc1IwRkJSeXhEUVVGQkxFTkJRVUVzUlVGQlFTeEhRVUZCTEd0Q1FVRnJRaXhEUVVGRExHVkJRV1VzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUnl4VFFVRlRMRU5CUVVNc1RVRkJTeXhEUVVGRExFTkJRVU03UVVGRk5VVXNXVUZCUVN4SlFVRkpMR0ZCUVdFc1JVRkJSVHRCUVVOcVFpeG5Ra0ZCUVN4TlFVRk5MRTlCUVU4c1IwRkJSeXhyUWtGQmEwSXNRMEZCUXl4WFFVRlhMRU5CUVVNN1owSkJSUzlETEVsQlFVa3NUMEZCVHl4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOdVFpeHZRa0ZCUVN4SlFVRkpMR0ZCUVdFc1JVRkJSVHRCUVVOcVFpeDNRa0ZCUVN3MlFrRkJOa0lzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1FVRkROVU1zY1VKQlFVRTdRVUZCVFN4NVFrRkJRVHRCUVVOTUxIZENRVUZCTEhWQ1FVRjFRaXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTjBReXh4UWtGQlFUdEJRVU5HTEdsQ1FVRkJPMEZCUTBZc1lVRkJRVHRCUVVOSUxGTkJRVU1zUTBGQlF5eERRVUZET3p0QlFVZElMRkZCUVVFc1NVRkJTU3gxUWtGQmRVSXNRMEZCUXl4SlFVRkpMRWRCUVVjc1JVRkJSU3hGUVVGRk8xbEJRM0pETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUTFZc1EwRkJRU3d3UTBGQlFTeEZRVUUyUXl4MVFrRkJkVUlzUTBGQlF5eEpRVUZKTEVOQlFYbEpMSFZKUVVGQkxFTkJRVUVzUTBGRGJrNHNRMEZCUXp0QlFVTklMRk5CUVVFN1FVRkZSQ3hSUVVGQkxFbEJRVWtzTmtKQlFUWkNMRU5CUVVNc1NVRkJTU3hIUVVGSExFVkJRVVVzUlVGQlJUdFpRVU16UXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVOV0xFTkJRVUVzTUVOQlFVRXNSVUZCTmtNc05rSkJRVFpDTEVOQlFVTXNTVUZCU1N4RFFVRXJTU3cyU1VGQlFTeERRVUZCTEVOQlF5OU9MRU5CUVVNN1FVRkRTQ3hUUVVGQk96dEJRVWRFTEZGQlFVRXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXgxUWtGQmRVSXNRMEZCUXp0QlFVTm9ReXhoUVVGQkxFbEJRVWtzUlVGQlJUdEJRVU5PTEdGQlFVRXNUMEZCVHl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUzBGQlNUdFpRVU53UWl4TlFVRk5MR05CUVdNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExIVkNRVUYxUWl4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOMlJpeEpRVUZKTEVOQlFVTXNNRUpCUVRCQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NSVUZCUlN4alFVRmpMRU5CUVVNc1EwRkJRenRCUVVNM1JDeFRRVUZETEVOQlFVTXNRMEZCUXp0QlFVVk1MRkZCUVVFc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5dzJRa0ZCTmtJc1EwRkJRenRCUVVOMFF5eGhRVUZCTEVsQlFVa3NSVUZCUlR0QlFVTk9MR0ZCUVVFc1QwRkJUeXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNTMEZCU1R0QlFVTndRaXhaUVVGQkxFMUJRVTBzWTBGQll5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGJrUXNTVUZCU1N4RFFVRkRMR2REUVVGblF5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRVZCUVVVc1kwRkJZeXhEUVVGRExFTkJRVU03UVVGRGJrVXNVMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRUanRCUVVOR096czdPeUo5XG4iLCIvKiFcbiAqIEBwaXhpdi90aHJlZS12cm0tbm9kZS1jb25zdHJhaW50IHYyLjAuNlxuICogTm9kZSBjb25zdHJhaW50IG1vZHVsZSBmb3IgQHBpeGl2L3RocmVlLXZybVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAyMC0yMDIzIHBpeGl2IEluYy5cbiAqIEBwaXhpdi90aHJlZS12cm0tbm9kZS1jb25zdHJhaW50IGlzIGRpc3RyaWJ1dGVkIHVuZGVyIE1JVCBMaWNlbnNlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcGl4aXYvdGhyZWUtdnJtL2Jsb2IvcmVsZWFzZS9MSUNFTlNFXG4gKi9cbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuY29uc3QgX3YzQSQzID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNsYXNzIFZSTU5vZGVDb25zdHJhaW50SGVscGVyIGV4dGVuZHMgVEhSRUUuR3JvdXAge1xuICAgIGNvbnN0cnVjdG9yKGNvbnN0cmFpbnQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fYXR0clBvc2l0aW9uID0gbmV3IFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZShuZXcgRmxvYXQzMkFycmF5KFswLCAwLCAwLCAwLCAwLCAwXSksIDMpO1xuICAgICAgICB0aGlzLl9hdHRyUG9zaXRpb24uc2V0VXNhZ2UoVEhSRUUuRHluYW1pY0RyYXdVc2FnZSk7XG4gICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gbmV3IFRIUkVFLkJ1ZmZlckdlb21ldHJ5KCk7XG4gICAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCB0aGlzLl9hdHRyUG9zaXRpb24pO1xuICAgICAgICBjb25zdCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5MaW5lQmFzaWNNYXRlcmlhbCh7XG4gICAgICAgICAgICBjb2xvcjogMHhmZjAwZmYsXG4gICAgICAgICAgICBkZXB0aFRlc3Q6IGZhbHNlLFxuICAgICAgICAgICAgZGVwdGhXcml0ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9saW5lID0gbmV3IFRIUkVFLkxpbmUoZ2VvbWV0cnksIG1hdGVyaWFsKTtcbiAgICAgICAgdGhpcy5hZGQodGhpcy5fbGluZSk7XG4gICAgICAgIHRoaXMuY29uc3RyYWludCA9IGNvbnN0cmFpbnQ7XG4gICAgfVxuICAgIHVwZGF0ZU1hdHJpeFdvcmxkKGZvcmNlKSB7XG4gICAgICAgIF92M0EkMy5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5jb25zdHJhaW50LmRlc3RpbmF0aW9uLm1hdHJpeFdvcmxkKTtcbiAgICAgICAgdGhpcy5fYXR0clBvc2l0aW9uLnNldFhZWigwLCBfdjNBJDMueCwgX3YzQSQzLnksIF92M0EkMy56KTtcbiAgICAgICAgaWYgKHRoaXMuY29uc3RyYWludC5zb3VyY2UpIHtcbiAgICAgICAgICAgIF92M0EkMy5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5jb25zdHJhaW50LnNvdXJjZS5tYXRyaXhXb3JsZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYXR0clBvc2l0aW9uLnNldFhZWigxLCBfdjNBJDMueCwgX3YzQSQzLnksIF92M0EkMy56KTtcbiAgICAgICAgdGhpcy5fYXR0clBvc2l0aW9uLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgc3VwZXIudXBkYXRlTWF0cml4V29ybGQoZm9yY2UpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZGVjb21wb3NlUG9zaXRpb24obWF0cml4LCB0YXJnZXQpIHtcbiAgICByZXR1cm4gdGFyZ2V0LnNldChtYXRyaXguZWxlbWVudHNbMTJdLCBtYXRyaXguZWxlbWVudHNbMTNdLCBtYXRyaXguZWxlbWVudHNbMTRdKTtcbn1cblxuY29uc3QgX3YzQSQyID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IF92M0IkMSA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5mdW5jdGlvbiBkZWNvbXBvc2VSb3RhdGlvbihtYXRyaXgsIHRhcmdldCkge1xuICAgIG1hdHJpeC5kZWNvbXBvc2UoX3YzQSQyLCB0YXJnZXQsIF92M0IkMSk7XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cblxuLyoqXG4gKiBBIGNvbXBhdCBmdW5jdGlvbiBmb3IgYFF1YXRlcm5pb24uaW52ZXJ0KClgIC8gYFF1YXRlcm5pb24uaW52ZXJzZSgpYC5cbiAqIGBRdWF0ZXJuaW9uLmludmVydCgpYCBpcyBpbnRyb2R1Y2VkIGluIHIxMjMgYW5kIGBRdWF0ZXJuaW9uLmludmVyc2UoKWAgZW1pdHMgYSB3YXJuaW5nLlxuICogV2UgYXJlIGdvaW5nIHRvIHVzZSB0aGlzIGNvbXBhdCBmb3IgYSB3aGlsZS5cbiAqIEBwYXJhbSB0YXJnZXQgQSB0YXJnZXQgcXVhdGVybmlvblxuICovXG5mdW5jdGlvbiBxdWF0SW52ZXJ0Q29tcGF0KHRhcmdldCkge1xuICAgIGlmICh0YXJnZXQuaW52ZXJ0KSB7XG4gICAgICAgIHRhcmdldC5pbnZlcnQoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRhcmdldC5pbnZlcnNlKCk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59XG5cbi8qKlxuICogQSBiYXNlIGNsYXNzIG9mIFZSTSBjb25zdHJhaW50IGNsYXNzZXMuXG4gKi9cbmNsYXNzIFZSTU5vZGVDb25zdHJhaW50IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGVzdGluYXRpb24gVGhlIGRlc3RpbmF0aW9uIG9iamVjdFxuICAgICAqIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3RcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihkZXN0aW5hdGlvbiwgc291cmNlKSB7XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjtcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgIHRoaXMud2VpZ2h0ID0gMS4wO1xuICAgIH1cbn1cblxuY29uc3QgX3YzQSQxID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IF92M0IgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgX3YzQyA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jb25zdCBfcXVhdEEkMiA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jb25zdCBfcXVhdEIkMiA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jb25zdCBfcXVhdEMgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuLyoqXG4gKiBBIGNvbnN0cmFpbnQgdGhhdCBtYWtlcyBpdCBsb29rIGF0IGEgc291cmNlIG9iamVjdC5cbiAqXG4gKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS92cm0tYy92cm0tc3BlY2lmaWNhdGlvbi90cmVlL21hc3Rlci9zcGVjaWZpY2F0aW9uL1ZSTUNfbm9kZV9jb25zdHJhaW50LTEuMF9iZXRhI3JvbGwtY29uc3RyYWludFxuICovXG5jbGFzcyBWUk1BaW1Db25zdHJhaW50IGV4dGVuZHMgVlJNTm9kZUNvbnN0cmFpbnQge1xuICAgIC8qKlxuICAgICAqIFRoZSBhaW0gYXhpcyBvZiB0aGUgY29uc3RyYWludC5cbiAgICAgKi9cbiAgICBnZXQgYWltQXhpcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FpbUF4aXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSBhaW0gYXhpcyBvZiB0aGUgY29uc3RyYWludC5cbiAgICAgKi9cbiAgICBzZXQgYWltQXhpcyhhaW1BeGlzKSB7XG4gICAgICAgIHRoaXMuX2FpbUF4aXMgPSBhaW1BeGlzO1xuICAgICAgICB0aGlzLl92M0FpbUF4aXMuc2V0KGFpbUF4aXMgPT09ICdQb3NpdGl2ZVgnID8gMS4wIDogYWltQXhpcyA9PT0gJ05lZ2F0aXZlWCcgPyAtMS4wIDogMC4wLCBhaW1BeGlzID09PSAnUG9zaXRpdmVZJyA/IDEuMCA6IGFpbUF4aXMgPT09ICdOZWdhdGl2ZVknID8gLTEuMCA6IDAuMCwgYWltQXhpcyA9PT0gJ1Bvc2l0aXZlWicgPyAxLjAgOiBhaW1BeGlzID09PSAnTmVnYXRpdmVaJyA/IC0xLjAgOiAwLjApO1xuICAgIH1cbiAgICBnZXQgZGVwZW5kZW5jaWVzKCkge1xuICAgICAgICBjb25zdCBzZXQgPSBuZXcgU2V0KFt0aGlzLnNvdXJjZV0pO1xuICAgICAgICBpZiAodGhpcy5kZXN0aW5hdGlvbi5wYXJlbnQpIHtcbiAgICAgICAgICAgIHNldC5hZGQodGhpcy5kZXN0aW5hdGlvbi5wYXJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXQ7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGRlc3RpbmF0aW9uLCBzb3VyY2UpIHtcbiAgICAgICAgc3VwZXIoZGVzdGluYXRpb24sIHNvdXJjZSk7XG4gICAgICAgIHRoaXMuX2FpbUF4aXMgPSAnUG9zaXRpdmVYJztcbiAgICAgICAgdGhpcy5fdjNBaW1BeGlzID0gbmV3IFRIUkVFLlZlY3RvcjMoMSwgMCwgMCk7XG4gICAgICAgIHRoaXMuX2RzdFJlc3RRdWF0ID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbiAgICB9XG4gICAgc2V0SW5pdFN0YXRlKCkge1xuICAgICAgICB0aGlzLl9kc3RSZXN0UXVhdC5jb3B5KHRoaXMuZGVzdGluYXRpb24ucXVhdGVybmlvbik7XG4gICAgfVxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgLy8gdXBkYXRlIHdvcmxkIG1hdHJpeCBvZiBkZXN0aW5hdGlvbiBhbmQgc291cmNlIG1hbnVhbGx5XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb24udXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgZmFsc2UpO1xuICAgICAgICB0aGlzLnNvdXJjZS51cGRhdGVXb3JsZE1hdHJpeCh0cnVlLCBmYWxzZSk7XG4gICAgICAgIC8vIGdldCB3b3JsZCBxdWF0ZXJuaW9uIG9mIHRoZSBwYXJlbnQgb2YgdGhlIGRlc3RpbmF0aW9uXG4gICAgICAgIGNvbnN0IGRzdFBhcmVudFdvcmxkUXVhdCA9IF9xdWF0QSQyLmlkZW50aXR5KCk7XG4gICAgICAgIGNvbnN0IGludkRzdFBhcmVudFdvcmxkUXVhdCA9IF9xdWF0QiQyLmlkZW50aXR5KCk7XG4gICAgICAgIGlmICh0aGlzLmRlc3RpbmF0aW9uLnBhcmVudCkge1xuICAgICAgICAgICAgZGVjb21wb3NlUm90YXRpb24odGhpcy5kZXN0aW5hdGlvbi5wYXJlbnQubWF0cml4V29ybGQsIGRzdFBhcmVudFdvcmxkUXVhdCk7XG4gICAgICAgICAgICBxdWF0SW52ZXJ0Q29tcGF0KGludkRzdFBhcmVudFdvcmxkUXVhdC5jb3B5KGRzdFBhcmVudFdvcmxkUXVhdCkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNhbGN1bGF0ZSBmcm9tLXRvIHZlY3RvcnMgaW4gd29ybGQgY29vcmRcbiAgICAgICAgY29uc3QgYTAgPSBfdjNBJDEuY29weSh0aGlzLl92M0FpbUF4aXMpLmFwcGx5UXVhdGVybmlvbih0aGlzLl9kc3RSZXN0UXVhdCkuYXBwbHlRdWF0ZXJuaW9uKGRzdFBhcmVudFdvcmxkUXVhdCk7XG4gICAgICAgIGNvbnN0IGExID0gZGVjb21wb3NlUG9zaXRpb24odGhpcy5zb3VyY2UubWF0cml4V29ybGQsIF92M0IpXG4gICAgICAgICAgICAuc3ViKGRlY29tcG9zZVBvc2l0aW9uKHRoaXMuZGVzdGluYXRpb24ubWF0cml4V29ybGQsIF92M0MpKVxuICAgICAgICAgICAgLm5vcm1hbGl6ZSgpO1xuICAgICAgICAvLyBjcmVhdGUgYSBmcm9tLXRvIHF1YXRlcm5pb24sIGNvbnZlcnQgdG8gZGVzdGluYXRpb24gbG9jYWwgY29vcmQsIHRoZW4gbXVsdGlwbHkgcmVzdCBxdWF0ZXJuaW9uXG4gICAgICAgIGNvbnN0IHRhcmdldFF1YXQgPSBfcXVhdENcbiAgICAgICAgICAgIC5zZXRGcm9tVW5pdFZlY3RvcnMoYTAsIGExKVxuICAgICAgICAgICAgLnByZW11bHRpcGx5KGludkRzdFBhcmVudFdvcmxkUXVhdClcbiAgICAgICAgICAgIC5tdWx0aXBseShkc3RQYXJlbnRXb3JsZFF1YXQpXG4gICAgICAgICAgICAubXVsdGlwbHkodGhpcy5fZHN0UmVzdFF1YXQpO1xuICAgICAgICAvLyBibGVuZCB3aXRoIHRoZSByZXN0IHF1YXRlcm5pb24gdXNpbmcgd2VpZ2h0XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb24ucXVhdGVybmlvbi5jb3B5KHRoaXMuX2RzdFJlc3RRdWF0KS5zbGVycCh0YXJnZXRRdWF0LCB0aGlzLndlaWdodCk7XG4gICAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuXHJcbmZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cblxuLyoqXG4gKiBUcmF2ZXJzZSBhbmNlc3RvcnMgb2YgZ2l2ZW4gb2JqZWN0IGFuZCBjYWxsIGdpdmVuIGNhbGxiYWNrIGZyb20gcm9vdCBzaWRlLlxuICogSXQgd2lsbCBpbmNsdWRlIHRoZSBnaXZlbiBvYmplY3QgaXRzZWxmLlxuICpcbiAqIEBwYXJhbSBvYmplY3QgVGhlIG9iamVjdCB5b3Ugd2FudCB0byB0cmF2ZXJzZVxuICogQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsIGJhY2sgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaCBhbmNlc3RvcnNcbiAqL1xuZnVuY3Rpb24gdHJhdmVyc2VBbmNlc3RvcnNGcm9tUm9vdChvYmplY3QsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgYW5jZXN0b3JzID0gW29iamVjdF07XG4gICAgbGV0IGhlYWQgPSBvYmplY3QucGFyZW50O1xuICAgIHdoaWxlIChoZWFkICE9PSBudWxsKSB7XG4gICAgICAgIGFuY2VzdG9ycy51bnNoaWZ0KGhlYWQpO1xuICAgICAgICBoZWFkID0gaGVhZC5wYXJlbnQ7XG4gICAgfVxuICAgIGFuY2VzdG9ycy5mb3JFYWNoKChhbmNlc3RvcikgPT4ge1xuICAgICAgICBjYWxsYmFjayhhbmNlc3Rvcik7XG4gICAgfSk7XG59XG5cbmNsYXNzIFZSTU5vZGVDb25zdHJhaW50TWFuYWdlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuX2NvbnN0cmFpbnRzID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLl9vYmplY3RDb25zdHJhaW50c01hcCA9IG5ldyBNYXAoKTtcbiAgICB9XG4gICAgZ2V0IGNvbnN0cmFpbnRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uc3RyYWludHM7XG4gICAgfVxuICAgIGFkZENvbnN0cmFpbnQoY29uc3RyYWludCkge1xuICAgICAgICB0aGlzLl9jb25zdHJhaW50cy5hZGQoY29uc3RyYWludCk7XG4gICAgICAgIGxldCBvYmplY3RTZXQgPSB0aGlzLl9vYmplY3RDb25zdHJhaW50c01hcC5nZXQoY29uc3RyYWludC5kZXN0aW5hdGlvbik7XG4gICAgICAgIGlmIChvYmplY3RTZXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgb2JqZWN0U2V0ID0gbmV3IFNldCgpO1xuICAgICAgICAgICAgdGhpcy5fb2JqZWN0Q29uc3RyYWludHNNYXAuc2V0KGNvbnN0cmFpbnQuZGVzdGluYXRpb24sIG9iamVjdFNldCk7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0U2V0LmFkZChjb25zdHJhaW50KTtcbiAgICB9XG4gICAgZGVsZXRlQ29uc3RyYWludChjb25zdHJhaW50KSB7XG4gICAgICAgIHRoaXMuX2NvbnN0cmFpbnRzLmRlbGV0ZShjb25zdHJhaW50KTtcbiAgICAgICAgY29uc3Qgb2JqZWN0U2V0ID0gdGhpcy5fb2JqZWN0Q29uc3RyYWludHNNYXAuZ2V0KGNvbnN0cmFpbnQuZGVzdGluYXRpb24pO1xuICAgICAgICBvYmplY3RTZXQuZGVsZXRlKGNvbnN0cmFpbnQpO1xuICAgIH1cbiAgICBzZXRJbml0U3RhdGUoKSB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzVHJpZWQgPSBuZXcgU2V0KCk7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzRG9uZSA9IG5ldyBTZXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25zdHJhaW50IG9mIHRoaXMuX2NvbnN0cmFpbnRzKSB7XG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzQ29uc3RyYWludChjb25zdHJhaW50LCBjb25zdHJhaW50c1RyaWVkLCBjb25zdHJhaW50c0RvbmUsIChjb25zdHJhaW50KSA9PiBjb25zdHJhaW50LnNldEluaXRTdGF0ZSgpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1cGRhdGUoKSB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzVHJpZWQgPSBuZXcgU2V0KCk7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzRG9uZSA9IG5ldyBTZXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25zdHJhaW50IG9mIHRoaXMuX2NvbnN0cmFpbnRzKSB7XG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzQ29uc3RyYWludChjb25zdHJhaW50LCBjb25zdHJhaW50c1RyaWVkLCBjb25zdHJhaW50c0RvbmUsIChjb25zdHJhaW50KSA9PiBjb25zdHJhaW50LnVwZGF0ZSgpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgYSBjb25zdHJhaW50LlxuICAgICAqIElmIHRoZXJlIGFyZSBvdGhlciBjb25zdHJhaW50cyB0aGF0IGFyZSBkZXBlbmRhbnQsIGl0IHdpbGwgdHJ5IHRvIHVwZGF0ZSB0aGVtIHJlY3Vyc2l2ZWx5LlxuICAgICAqIEl0IG1pZ2h0IHRocm93IGFuIGVycm9yIGlmIHRoZXJlIGFyZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMuXG4gICAgICpcbiAgICAgKiBJbnRlbmRlZCB0byBiZSB1c2VkIGluIHtAbGluayB1cGRhdGV9IGFuZCB7QGxpbmsgX3Byb2Nlc3NDb25zdHJhaW50fSBpdHNlbGYgcmVjdXJzaXZlbHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29uc3RyYWludCBBIGNvbnN0cmFpbnQgeW91IHdhbnQgdG8gdXBkYXRlXG4gICAgICogQHBhcmFtIGNvbnN0cmFpbnRzVHJpZWQgU2V0IG9mIGNvbnN0cmFpbnRzIHRoYXQgYXJlIGFscmVhZHkgdHJpZWQgdG8gYmUgdXBkYXRlZFxuICAgICAqIEBwYXJhbSBjb25zdHJhaW50c0RvbmUgU2V0IG9mIGNvbnN0cmFpbnRzIHRoYXQgYXJlIGFscmVhZHkgdXAgdG8gZGF0ZVxuICAgICAqL1xuICAgIF9wcm9jZXNzQ29uc3RyYWludChjb25zdHJhaW50LCBjb25zdHJhaW50c1RyaWVkLCBjb25zdHJhaW50c0RvbmUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmIChjb25zdHJhaW50c0RvbmUuaGFzKGNvbnN0cmFpbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnN0cmFpbnRzVHJpZWQuaGFzKGNvbnN0cmFpbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZSTU5vZGVDb25zdHJhaW50TWFuYWdlcjogQ2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZCB3aGlsZSB1cGRhdGluZyBjb25zdHJhaW50cycpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0cmFpbnRzVHJpZWQuYWRkKGNvbnN0cmFpbnQpO1xuICAgICAgICBjb25zdCBkZXBPYmplY3RzID0gY29uc3RyYWludC5kZXBlbmRlbmNpZXM7XG4gICAgICAgIGZvciAoY29uc3QgZGVwT2JqZWN0IG9mIGRlcE9iamVjdHMpIHtcbiAgICAgICAgICAgIHRyYXZlcnNlQW5jZXN0b3JzRnJvbVJvb3QoZGVwT2JqZWN0LCAoZGVwT2JqZWN0QW5jZXN0b3IpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvYmplY3RTZXQgPSB0aGlzLl9vYmplY3RDb25zdHJhaW50c01hcC5nZXQoZGVwT2JqZWN0QW5jZXN0b3IpO1xuICAgICAgICAgICAgICAgIGlmIChvYmplY3RTZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXBDb25zdHJhaW50IG9mIG9iamVjdFNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc0NvbnN0cmFpbnQoZGVwQ29uc3RyYWludCwgY29uc3RyYWludHNUcmllZCwgY29uc3RyYWludHNEb25lLCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayhjb25zdHJhaW50KTtcbiAgICAgICAgY29uc3RyYWludHNEb25lLmFkZChjb25zdHJhaW50KTtcbiAgICB9XG59XG5cbmNvbnN0IF9xdWF0QSQxID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IF9xdWF0QiQxID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbi8qKlxuICogQSBjb25zdHJhaW50IHRoYXQgdHJhbnNmZXJzIGEgcm90YXRpb24gYXJvdW5kIG9uZSBheGlzIG9mIGEgc291cmNlLlxuICpcbiAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3ZybS1jL3ZybS1zcGVjaWZpY2F0aW9uL3RyZWUvbWFzdGVyL3NwZWNpZmljYXRpb24vVlJNQ19ub2RlX2NvbnN0cmFpbnQtMS4wX2JldGEjcm9sbC1jb25zdHJhaW50XG4gKi9cbmNsYXNzIFZSTVJvdGF0aW9uQ29uc3RyYWludCBleHRlbmRzIFZSTU5vZGVDb25zdHJhaW50IHtcbiAgICBnZXQgZGVwZW5kZW5jaWVzKCkge1xuICAgICAgICByZXR1cm4gbmV3IFNldChbdGhpcy5zb3VyY2VdKTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoZGVzdGluYXRpb24sIHNvdXJjZSkge1xuICAgICAgICBzdXBlcihkZXN0aW5hdGlvbiwgc291cmNlKTtcbiAgICAgICAgdGhpcy5fZHN0UmVzdFF1YXQgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuICAgICAgICB0aGlzLl9pbnZTcmNSZXN0UXVhdCA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4gICAgfVxuICAgIHNldEluaXRTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5fZHN0UmVzdFF1YXQuY29weSh0aGlzLmRlc3RpbmF0aW9uLnF1YXRlcm5pb24pO1xuICAgICAgICBxdWF0SW52ZXJ0Q29tcGF0KHRoaXMuX2ludlNyY1Jlc3RRdWF0LmNvcHkodGhpcy5zb3VyY2UucXVhdGVybmlvbikpO1xuICAgIH1cbiAgICB1cGRhdGUoKSB7XG4gICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgZGVsdGEgcm90YXRpb24gZnJvbSB0aGUgcmVzdCBhYm91dCB0aGUgc291cmNlXG4gICAgICAgIGNvbnN0IHNyY0RlbHRhUXVhdCA9IF9xdWF0QSQxLmNvcHkodGhpcy5faW52U3JjUmVzdFF1YXQpLm11bHRpcGx5KHRoaXMuc291cmNlLnF1YXRlcm5pb24pO1xuICAgICAgICAvLyBtdWx0aXBseSB0aGUgZGVsdGEgdG8gdGhlIHJlc3Qgb2YgdGhlIGRlc3RpbmF0aW9uXG4gICAgICAgIGNvbnN0IHRhcmdldFF1YXQgPSBfcXVhdEIkMS5jb3B5KHRoaXMuX2RzdFJlc3RRdWF0KS5tdWx0aXBseShzcmNEZWx0YVF1YXQpO1xuICAgICAgICAvLyBibGVuZCB3aXRoIHRoZSByZXN0IHF1YXRlcm5pb24gdXNpbmcgd2VpZ2h0XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb24ucXVhdGVybmlvbi5jb3B5KHRoaXMuX2RzdFJlc3RRdWF0KS5zbGVycCh0YXJnZXRRdWF0LCB0aGlzLndlaWdodCk7XG4gICAgfVxufVxuXG5jb25zdCBfdjNBID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IF9xdWF0QSA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jb25zdCBfcXVhdEIgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuLyoqXG4gKiBBIGNvbnN0cmFpbnQgdGhhdCB0cmFuc2ZlcnMgYSByb3RhdGlvbiBhcm91bmQgb25lIGF4aXMgb2YgYSBzb3VyY2UuXG4gKlxuICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vdnJtLWMvdnJtLXNwZWNpZmljYXRpb24vdHJlZS9tYXN0ZXIvc3BlY2lmaWNhdGlvbi9WUk1DX25vZGVfY29uc3RyYWludC0xLjBfYmV0YSNyb2xsLWNvbnN0cmFpbnRcbiAqL1xuY2xhc3MgVlJNUm9sbENvbnN0cmFpbnQgZXh0ZW5kcyBWUk1Ob2RlQ29uc3RyYWludCB7XG4gICAgLyoqXG4gICAgICogVGhlIHJvbGwgYXhpcyBvZiB0aGUgY29uc3RyYWludC5cbiAgICAgKi9cbiAgICBnZXQgcm9sbEF4aXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb2xsQXhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIHJvbGwgYXhpcyBvZiB0aGUgY29uc3RyYWludC5cbiAgICAgKi9cbiAgICBzZXQgcm9sbEF4aXMocm9sbEF4aXMpIHtcbiAgICAgICAgdGhpcy5fcm9sbEF4aXMgPSByb2xsQXhpcztcbiAgICAgICAgdGhpcy5fdjNSb2xsQXhpcy5zZXQocm9sbEF4aXMgPT09ICdYJyA/IDEuMCA6IDAuMCwgcm9sbEF4aXMgPT09ICdZJyA/IDEuMCA6IDAuMCwgcm9sbEF4aXMgPT09ICdaJyA/IDEuMCA6IDAuMCk7XG4gICAgfVxuICAgIGdldCBkZXBlbmRlbmNpZXMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KFt0aGlzLnNvdXJjZV0pO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihkZXN0aW5hdGlvbiwgc291cmNlKSB7XG4gICAgICAgIHN1cGVyKGRlc3RpbmF0aW9uLCBzb3VyY2UpO1xuICAgICAgICB0aGlzLl9yb2xsQXhpcyA9ICdYJztcbiAgICAgICAgdGhpcy5fdjNSb2xsQXhpcyA9IG5ldyBUSFJFRS5WZWN0b3IzKDEsIDAsIDApO1xuICAgICAgICB0aGlzLl9kc3RSZXN0UXVhdCA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4gICAgICAgIHRoaXMuX2ludkRzdFJlc3RRdWF0ID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbiAgICAgICAgdGhpcy5faW52U3JjUmVzdFF1YXRNdWxEc3RSZXN0UXVhdCA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4gICAgfVxuICAgIHNldEluaXRTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5fZHN0UmVzdFF1YXQuY29weSh0aGlzLmRlc3RpbmF0aW9uLnF1YXRlcm5pb24pO1xuICAgICAgICBxdWF0SW52ZXJ0Q29tcGF0KHRoaXMuX2ludkRzdFJlc3RRdWF0LmNvcHkodGhpcy5fZHN0UmVzdFF1YXQpKTtcbiAgICAgICAgcXVhdEludmVydENvbXBhdCh0aGlzLl9pbnZTcmNSZXN0UXVhdE11bERzdFJlc3RRdWF0LmNvcHkodGhpcy5zb3VyY2UucXVhdGVybmlvbikpLm11bHRpcGx5KHRoaXMuX2RzdFJlc3RRdWF0KTtcbiAgICB9XG4gICAgdXBkYXRlKCkge1xuICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIGRlbHRhIHJvdGF0aW9uIGZyb20gdGhlIHJlc3QgYWJvdXQgdGhlIHNvdXJjZSwgdGhlbiBjb252ZXJ0IHRvIHRoZSBkZXN0aW5hdGlvbiBsb2NhbCBjb29yZFxuICAgICAgICAvKipcbiAgICAgICAgICogV2hhdCB0aGUgcXVhdERlbHRhIGlzIGludGVuZGVkIHRvIGJlOlxuICAgICAgICAgKlxuICAgICAgICAgKiBgYGB0c1xuICAgICAgICAgKiBjb25zdCBxdWF0U3JjRGVsdGEgPSBfcXVhdEFcbiAgICAgICAgICogICAuY29weSggdGhpcy5faW52U3JjUmVzdFF1YXQgKVxuICAgICAgICAgKiAgIC5tdWx0aXBseSggdGhpcy5zb3VyY2UucXVhdGVybmlvbiApO1xuICAgICAgICAgKiBjb25zdCBxdWF0U3JjRGVsdGFJblBhcmVudCA9IF9xdWF0QlxuICAgICAgICAgKiAgIC5jb3B5KCB0aGlzLl9zcmNSZXN0UXVhdCApXG4gICAgICAgICAqICAgLm11bHRpcGx5KCBxdWF0U3JjRGVsdGEgKVxuICAgICAgICAgKiAgIC5tdWx0aXBseSggdGhpcy5faW52U3JjUmVzdFF1YXQgKTtcbiAgICAgICAgICogY29uc3QgcXVhdFNyY0RlbHRhSW5Ec3QgPSBfcXVhdEFcbiAgICAgICAgICogICAuY29weSggdGhpcy5faW52RHN0UmVzdFF1YXQgKVxuICAgICAgICAgKiAgIC5tdWx0aXBseSggcXVhdFNyY0RlbHRhSW5QYXJlbnQgKVxuICAgICAgICAgKiAgIC5tdWx0aXBseSggdGhpcy5fZHN0UmVzdFF1YXQgKTtcbiAgICAgICAgICogYGBgXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBxdWF0RGVsdGEgPSBfcXVhdEFcbiAgICAgICAgICAgIC5jb3B5KHRoaXMuX2ludkRzdFJlc3RRdWF0KVxuICAgICAgICAgICAgLm11bHRpcGx5KHRoaXMuc291cmNlLnF1YXRlcm5pb24pXG4gICAgICAgICAgICAubXVsdGlwbHkodGhpcy5faW52U3JjUmVzdFF1YXRNdWxEc3RSZXN0UXVhdCk7XG4gICAgICAgIC8vIGNyZWF0ZSBhIGZyb20tdG8gcXVhdGVybmlvblxuICAgICAgICBjb25zdCBuMSA9IF92M0EuY29weSh0aGlzLl92M1JvbGxBeGlzKS5hcHBseVF1YXRlcm5pb24ocXVhdERlbHRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdoYXQgdGhlIHF1YXRGcm9tVG8gaXMgaW50ZW5kZWQgdG8gYmU6XG4gICAgICAgICAqXG4gICAgICAgICAqIGBgYHRzXG4gICAgICAgICAqIGNvbnN0IHF1YXRGcm9tVG8gPSBfcXVhdEIuc2V0RnJvbVVuaXRWZWN0b3JzKCB0aGlzLl92M1JvbGxBeGlzLCBuMSApLmludmVyc2UoKTtcbiAgICAgICAgICogYGBgXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBxdWF0RnJvbVRvID0gX3F1YXRCLnNldEZyb21Vbml0VmVjdG9ycyhuMSwgdGhpcy5fdjNSb2xsQXhpcyk7XG4gICAgICAgIC8vIHF1YXRGcm9tVG8gKiBxdWF0RGVsdGEgPT0gcm9sbCBleHRyYWN0ZWQgZnJvbSBxdWF0RGVsdGFcbiAgICAgICAgY29uc3QgdGFyZ2V0UXVhdCA9IHF1YXRGcm9tVG8ucHJlbXVsdGlwbHkodGhpcy5fZHN0UmVzdFF1YXQpLm11bHRpcGx5KHF1YXREZWx0YSk7XG4gICAgICAgIC8vIGJsZW5kIHdpdGggdGhlIHJlc3QgcXVhdGVybmlvbiB1c2luZyB3ZWlnaHRcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbi5xdWF0ZXJuaW9uLmNvcHkodGhpcy5fZHN0UmVzdFF1YXQpLnNsZXJwKHRhcmdldFF1YXQsIHRoaXMud2VpZ2h0KTtcbiAgICB9XG59XG5cbi8qKlxuICogUG9zc2libGUgc3BlYyB2ZXJzaW9ucyBpdCByZWNvZ25pemVzLlxuICovXG5jb25zdCBQT1NTSUJMRV9TUEVDX1ZFUlNJT05TID0gbmV3IFNldChbJzEuMCcsICcxLjAtYmV0YSddKTtcbmNsYXNzIFZSTU5vZGVDb25zdHJhaW50TG9hZGVyUGx1Z2luIHtcbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIFZSTU5vZGVDb25zdHJhaW50TG9hZGVyUGx1Z2luLkVYVEVOU0lPTl9OQU1FO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihwYXJzZXIsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG4gICAgICAgIHRoaXMuaGVscGVyUm9vdCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5oZWxwZXJSb290O1xuICAgIH1cbiAgICBhZnRlclJvb3QoZ2x0Zikge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgZ2x0Zi51c2VyRGF0YS52cm1Ob2RlQ29uc3RyYWludE1hbmFnZXIgPSB5aWVsZCB0aGlzLl9pbXBvcnQoZ2x0Zik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbXBvcnQgY29uc3RyYWludHMgZnJvbSBhIEdMVEYgYW5kIHJldHVybnMgYSB7QGxpbmsgVlJNTm9kZUNvbnN0cmFpbnRNYW5hZ2VyfS5cbiAgICAgKiBJdCBtaWdodCByZXR1cm4gYG51bGxgIGluc3RlYWQgd2hlbiBpdCBkb2VzIG5vdCBuZWVkIHRvIGJlIGNyZWF0ZWQgb3Igc29tZXRoaW5nIGdvIHdyb25nLlxuICAgICAqXG4gICAgICogQHBhcmFtIGdsdGYgQSBwYXJzZWQgcmVzdWx0IG9mIEdMVEYgdGFrZW4gZnJvbSBHTFRGTG9hZGVyXG4gICAgICovXG4gICAgX2ltcG9ydChnbHRmKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLnBhcnNlci5qc29uO1xuICAgICAgICAgICAgLy8gZWFybHkgYWJvcnQgaWYgaXQgZG9lc24ndCB1c2UgY29uc3RyYWludHNcbiAgICAgICAgICAgIGNvbnN0IGlzQ29uc3RyYWludHNVc2VkID0gKChfYSA9IGpzb24uZXh0ZW5zaW9uc1VzZWQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pbmRleE9mKFZSTU5vZGVDb25zdHJhaW50TG9hZGVyUGx1Z2luLkVYVEVOU0lPTl9OQU1FKSkgIT09IC0xO1xuICAgICAgICAgICAgaWYgKCFpc0NvbnN0cmFpbnRzVXNlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWUk1Ob2RlQ29uc3RyYWludE1hbmFnZXIoKTtcbiAgICAgICAgICAgIGNvbnN0IHRocmVlTm9kZXMgPSB5aWVsZCB0aGlzLnBhcnNlci5nZXREZXBlbmRlbmNpZXMoJ25vZGUnKTtcbiAgICAgICAgICAgIC8vIGltcG9ydCBjb25zdHJhaW50cyBmb3IgZWFjaCBub2Rlc1xuICAgICAgICAgICAgdGhyZWVOb2Rlcy5mb3JFYWNoKChub2RlLCBub2RlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NoZW1hTm9kZSA9IGpzb24ubm9kZXNbbm9kZUluZGV4XTtcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiB0aGUgZXh0ZW5zaW9uIHVzZXMgdGhlIGV4dGVuc2lvblxuICAgICAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IChfYSA9IHNjaGVtYU5vZGUgPT09IG51bGwgfHwgc2NoZW1hTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2NoZW1hTm9kZS5leHRlbnNpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbVlJNTm9kZUNvbnN0cmFpbnRMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUVdO1xuICAgICAgICAgICAgICAgIGlmIChleHRlbnNpb24gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHNwZWNWZXJzaW9uID0gZXh0ZW5zaW9uLnNwZWNWZXJzaW9uO1xuICAgICAgICAgICAgICAgIGlmICghUE9TU0lCTEVfU1BFQ19WRVJTSU9OUy5oYXMoc3BlY1ZlcnNpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVlJNTm9kZUNvbnN0cmFpbnRMb2FkZXJQbHVnaW46IFVua25vd24gJHtWUk1Ob2RlQ29uc3RyYWludExvYWRlclBsdWdpbi5FWFRFTlNJT05fTkFNRX0gc3BlY1ZlcnNpb24gXCIke3NwZWNWZXJzaW9ufVwiYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY29uc3RyYWludERlZiA9IGV4dGVuc2lvbi5jb25zdHJhaW50O1xuICAgICAgICAgICAgICAgIC8vIGltcG9ydCBjb25zdHJhaW50c1xuICAgICAgICAgICAgICAgIGlmIChjb25zdHJhaW50RGVmLnJvbGwgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb25zdHJhaW50ID0gdGhpcy5faW1wb3J0Um9sbENvbnN0cmFpbnQobm9kZSwgdGhyZWVOb2RlcywgY29uc3RyYWludERlZi5yb2xsKTtcbiAgICAgICAgICAgICAgICAgICAgbWFuYWdlci5hZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25zdHJhaW50RGVmLmFpbSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPSB0aGlzLl9pbXBvcnRBaW1Db25zdHJhaW50KG5vZGUsIHRocmVlTm9kZXMsIGNvbnN0cmFpbnREZWYuYWltKTtcbiAgICAgICAgICAgICAgICAgICAgbWFuYWdlci5hZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25zdHJhaW50RGVmLnJvdGF0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29uc3RyYWludCA9IHRoaXMuX2ltcG9ydFJvdGF0aW9uQ29uc3RyYWludChub2RlLCB0aHJlZU5vZGVzLCBjb25zdHJhaW50RGVmLnJvdGF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgbWFuYWdlci5hZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gaW5pdCBjb25zdHJhaW50c1xuICAgICAgICAgICAgZ2x0Zi5zY2VuZS51cGRhdGVNYXRyaXhXb3JsZCgpO1xuICAgICAgICAgICAgbWFuYWdlci5zZXRJbml0U3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBtYW5hZ2VyO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX2ltcG9ydFJvbGxDb25zdHJhaW50KGRlc3RpbmF0aW9uLCBub2Rlcywgcm9sbENvbnN0cmFpbnREZWYpIHtcbiAgICAgICAgY29uc3QgeyBzb3VyY2U6IHNvdXJjZUluZGV4LCByb2xsQXhpcywgd2VpZ2h0IH0gPSByb2xsQ29uc3RyYWludERlZjtcbiAgICAgICAgY29uc3Qgc291cmNlID0gbm9kZXNbc291cmNlSW5kZXhdO1xuICAgICAgICBjb25zdCBjb25zdHJhaW50ID0gbmV3IFZSTVJvbGxDb25zdHJhaW50KGRlc3RpbmF0aW9uLCBzb3VyY2UpO1xuICAgICAgICBpZiAocm9sbEF4aXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3RyYWludC5yb2xsQXhpcyA9IHJvbGxBeGlzO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3ZWlnaHQgIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3RyYWludC53ZWlnaHQgPSB3ZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGVscGVyUm9vdCkge1xuICAgICAgICAgICAgY29uc3QgaGVscGVyID0gbmV3IFZSTU5vZGVDb25zdHJhaW50SGVscGVyKGNvbnN0cmFpbnQpO1xuICAgICAgICAgICAgdGhpcy5oZWxwZXJSb290LmFkZChoZWxwZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb25zdHJhaW50O1xuICAgIH1cbiAgICBfaW1wb3J0QWltQ29uc3RyYWludChkZXN0aW5hdGlvbiwgbm9kZXMsIGFpbUNvbnN0cmFpbnREZWYpIHtcbiAgICAgICAgY29uc3QgeyBzb3VyY2U6IHNvdXJjZUluZGV4LCBhaW1BeGlzLCB3ZWlnaHQgfSA9IGFpbUNvbnN0cmFpbnREZWY7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IG5vZGVzW3NvdXJjZUluZGV4XTtcbiAgICAgICAgY29uc3QgY29uc3RyYWludCA9IG5ldyBWUk1BaW1Db25zdHJhaW50KGRlc3RpbmF0aW9uLCBzb3VyY2UpO1xuICAgICAgICBpZiAoYWltQXhpcyAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdHJhaW50LmFpbUF4aXMgPSBhaW1BeGlzO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3ZWlnaHQgIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3RyYWludC53ZWlnaHQgPSB3ZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGVscGVyUm9vdCkge1xuICAgICAgICAgICAgY29uc3QgaGVscGVyID0gbmV3IFZSTU5vZGVDb25zdHJhaW50SGVscGVyKGNvbnN0cmFpbnQpO1xuICAgICAgICAgICAgdGhpcy5oZWxwZXJSb290LmFkZChoZWxwZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb25zdHJhaW50O1xuICAgIH1cbiAgICBfaW1wb3J0Um90YXRpb25Db25zdHJhaW50KGRlc3RpbmF0aW9uLCBub2Rlcywgcm90YXRpb25Db25zdHJhaW50RGVmKSB7XG4gICAgICAgIGNvbnN0IHsgc291cmNlOiBzb3VyY2VJbmRleCwgd2VpZ2h0IH0gPSByb3RhdGlvbkNvbnN0cmFpbnREZWY7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IG5vZGVzW3NvdXJjZUluZGV4XTtcbiAgICAgICAgY29uc3QgY29uc3RyYWludCA9IG5ldyBWUk1Sb3RhdGlvbkNvbnN0cmFpbnQoZGVzdGluYXRpb24sIHNvdXJjZSk7XG4gICAgICAgIGlmICh3ZWlnaHQgIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3RyYWludC53ZWlnaHQgPSB3ZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGVscGVyUm9vdCkge1xuICAgICAgICAgICAgY29uc3QgaGVscGVyID0gbmV3IFZSTU5vZGVDb25zdHJhaW50SGVscGVyKGNvbnN0cmFpbnQpO1xuICAgICAgICAgICAgdGhpcy5oZWxwZXJSb290LmFkZChoZWxwZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb25zdHJhaW50O1xuICAgIH1cbn1cblZSTU5vZGVDb25zdHJhaW50TG9hZGVyUGx1Z2luLkVYVEVOU0lPTl9OQU1FID0gJ1ZSTUNfbm9kZV9jb25zdHJhaW50JztcblxuZXhwb3J0IHsgVlJNQWltQ29uc3RyYWludCwgVlJNTm9kZUNvbnN0cmFpbnQsIFZSTU5vZGVDb25zdHJhaW50SGVscGVyLCBWUk1Ob2RlQ29uc3RyYWludExvYWRlclBsdWdpbiwgVlJNTm9kZUNvbnN0cmFpbnRNYW5hZ2VyLCBWUk1Sb2xsQ29uc3RyYWludCwgVlJNUm90YXRpb25Db25zdHJhaW50IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRHaHlaV1V0ZG5KdExXNXZaR1V0WTI5dWMzUnlZV2x1ZEM1dGIyUjFiR1V1YW5NaUxDSnpiM1Z5WTJWeklqcGJJaTR1TDNOeVl5OW9aV3h3WlhKekwxWlNUVTV2WkdWRGIyNXpkSEpoYVc1MFNHVnNjR1Z5TG5Seklpd2lMaTR2YzNKakwzVjBhV3h6TDJSbFkyOXRjRzl6WlZCdmMybDBhVzl1TG5Seklpd2lMaTR2YzNKakwzVjBhV3h6TDJSbFkyOXRjRzl6WlZKdmRHRjBhVzl1TG5Seklpd2lMaTR2YzNKakwzVjBhV3h6TDNGMVlYUkpiblpsY25SRGIyMXdZWFF1ZEhNaUxDSXVMaTl6Y21NdlZsSk5UbTlrWlVOdmJuTjBjbUZwYm5RdWRITWlMQ0l1TGk5emNtTXZWbEpOUVdsdFEyOXVjM1J5WVdsdWRDNTBjeUlzSWk0dUx5NHVMeTR1TDI1dlpHVmZiVzlrZFd4bGN5OTBjMnhwWWk5MGMyeHBZaTVsY3pZdWFuTWlMQ0l1TGk5emNtTXZkWFJwYkhNdmRISmhkbVZ5YzJWQmJtTmxjM1J2Y25OR2NtOXRVbTl2ZEM1MGN5SXNJaTR1TDNOeVl5OVdVazFPYjJSbFEyOXVjM1J5WVdsdWRFMWhibUZuWlhJdWRITWlMQ0l1TGk5emNtTXZWbEpOVW05MFlYUnBiMjVEYjI1emRISmhhVzUwTG5Seklpd2lMaTR2YzNKakwxWlNUVkp2Ykd4RGIyNXpkSEpoYVc1MExuUnpJaXdpTGk0dmMzSmpMMVpTVFU1dlpHVkRiMjV6ZEhKaGFXNTBURzloWkdWeVVHeDFaMmx1TG5SeklsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCN0lGWlNUVTV2WkdWRGIyNXpkSEpoYVc1MElIMGdabkp2YlNBbkxpNHZWbEpOVG05a1pVTnZibk4wY21GcGJuUW5PMXh1WEc1amIyNXpkQ0JmZGpOQklEMGdibVYzSUZSSVVrVkZMbFpsWTNSdmNqTW9LVHRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRlpTVFU1dlpHVkRiMjV6ZEhKaGFXNTBTR1ZzY0dWeUlHVjRkR1Z1WkhNZ1ZFaFNSVVV1UjNKdmRYQWdlMXh1SUNCd2RXSnNhV01nY21WaFpHOXViSGtnWTI5dWMzUnlZV2x1ZERvZ1ZsSk5UbTlrWlVOdmJuTjBjbUZwYm5RN1hHNGdJSEJ5YVhaaGRHVWdYMnhwYm1VNklGUklVa1ZGTGt4cGJtVTdYRzRnSUhCeWFYWmhkR1VnWDJGMGRISlFiM05wZEdsdmJqb2dWRWhTUlVVdVFuVm1abVZ5UVhSMGNtbGlkWFJsTzF4dVhHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWhqYjI1emRISmhhVzUwT2lCV1VrMU9iMlJsUTI5dWMzUnlZV2x1ZENrZ2UxeHVJQ0FnSUhOMWNHVnlLQ2s3WEc1Y2JpQWdJQ0IwYUdsekxsOWhkSFJ5VUc5emFYUnBiMjRnUFNCdVpYY2dWRWhTUlVVdVFuVm1abVZ5UVhSMGNtbGlkWFJsS0c1bGR5QkdiRzloZERNeVFYSnlZWGtvV3pBc0lEQXNJREFzSURBc0lEQXNJREJkS1N3Z015azdYRzRnSUNBZ2RHaHBjeTVmWVhSMGNsQnZjMmwwYVc5dUxuTmxkRlZ6WVdkbEtGUklVa1ZGTGtSNWJtRnRhV05FY21GM1ZYTmhaMlVwTzF4dVhHNGdJQ0FnWTI5dWMzUWdaMlZ2YldWMGNua2dQU0J1WlhjZ1ZFaFNSVVV1UW5WbVptVnlSMlZ2YldWMGNua29LVHRjYmlBZ0lDQm5aVzl0WlhSeWVTNXpaWFJCZEhSeWFXSjFkR1VvSjNCdmMybDBhVzl1Snl3Z2RHaHBjeTVmWVhSMGNsQnZjMmwwYVc5dUtUdGNibHh1SUNBZ0lHTnZibk4wSUcxaGRHVnlhV0ZzSUQwZ2JtVjNJRlJJVWtWRkxreHBibVZDWVhOcFkwMWhkR1Z5YVdGc0tIdGNiaUFnSUNBZ0lHTnZiRzl5T2lBd2VHWm1NREJtWml4Y2JpQWdJQ0FnSUdSbGNIUm9WR1Z6ZERvZ1ptRnNjMlVzWEc0Z0lDQWdJQ0JrWlhCMGFGZHlhWFJsT2lCbVlXeHpaU3hjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJSFJvYVhNdVgyeHBibVVnUFNCdVpYY2dWRWhTUlVVdVRHbHVaU2huWlc5dFpYUnllU3dnYldGMFpYSnBZV3dwTzF4dUlDQWdJSFJvYVhNdVlXUmtLSFJvYVhNdVgyeHBibVVwTzF4dVhHNGdJQ0FnZEdocGN5NWpiMjV6ZEhKaGFXNTBJRDBnWTI5dWMzUnlZV2x1ZER0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCMWNHUmhkR1ZOWVhSeWFYaFhiM0pzWkNobWIzSmpaVDg2SUdKdmIyeGxZVzRwT2lCMmIybGtJSHRjYmlBZ0lDQmZkak5CTG5ObGRFWnliMjFOWVhSeWFYaFFiM05wZEdsdmJpaDBhR2x6TG1OdmJuTjBjbUZwYm5RdVpHVnpkR2x1WVhScGIyNHViV0YwY21sNFYyOXliR1FwTzF4dUlDQWdJSFJvYVhNdVgyRjBkSEpRYjNOcGRHbHZiaTV6WlhSWVdWb29NQ3dnWDNZelFTNTRMQ0JmZGpOQkxua3NJRjkyTTBFdWVpazdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NWpiMjV6ZEhKaGFXNTBMbk52ZFhKalpTa2dlMXh1SUNBZ0lDQWdYM1l6UVM1elpYUkdjbTl0VFdGMGNtbDRVRzl6YVhScGIyNG9kR2hwY3k1amIyNXpkSEpoYVc1MExuTnZkWEpqWlM1dFlYUnlhWGhYYjNKc1pDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhSb2FYTXVYMkYwZEhKUWIzTnBkR2x2Ymk1elpYUllXVm9vTVN3Z1gzWXpRUzU0TENCZmRqTkJMbmtzSUY5Mk0wRXVlaWs3WEc1Y2JpQWdJQ0IwYUdsekxsOWhkSFJ5VUc5emFYUnBiMjR1Ym1WbFpITlZjR1JoZEdVZ1BTQjBjblZsTzF4dVhHNGdJQ0FnYzNWd1pYSXVkWEJrWVhSbFRXRjBjbWw0VjI5eWJHUW9abTl5WTJVcE8xeHVJQ0I5WEc1OVhHNGlMQ0pwYlhCdmNuUWdLaUJoY3lCVVNGSkZSU0JtY205dElDZDBhSEpsWlNjN1hHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmtaV052YlhCdmMyVlFiM05wZEdsdmJqeFVJR1Y0ZEdWdVpITWdWRWhTUlVVdVZtVmpkRzl5TXo0b2JXRjBjbWw0T2lCVVNGSkZSUzVOWVhSeWFYZzBMQ0IwWVhKblpYUTZJRlFwT2lCVUlIdGNiaUFnY21WMGRYSnVJSFJoY21kbGRDNXpaWFFvYldGMGNtbDRMbVZzWlcxbGJuUnpXekV5WFN3Z2JXRjBjbWw0TG1Wc1pXMWxiblJ6V3pFelhTd2diV0YwY21sNExtVnNaVzFsYm5Seld6RTBYU2s3WEc1OVhHNGlMQ0pwYlhCdmNuUWdLaUJoY3lCVVNGSkZSU0JtY205dElDZDBhSEpsWlNjN1hHNWNibU52Ym5OMElGOTJNMEVnUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncE8xeHVZMjl1YzNRZ1gzWXpRaUE5SUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0NrN1hHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmtaV052YlhCdmMyVlNiM1JoZEdsdmJqeFVJR1Y0ZEdWdVpITWdWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJqNG9iV0YwY21sNE9pQlVTRkpGUlM1TllYUnlhWGcwTENCMFlYSm5aWFE2SUZRcE9pQlVJSHRjYmlBZ2JXRjBjbWw0TG1SbFkyOXRjRzl6WlNoZmRqTkJMQ0IwWVhKblpYUXNJRjkyTTBJcE8xeHVJQ0J5WlhSMWNtNGdkR0Z5WjJWME8xeHVmVnh1SWl3aWFXMXdiM0owSUNvZ1lYTWdWRWhTUlVVZ1puSnZiU0FuZEdoeVpXVW5PMXh1WEc0dktpcGNiaUFxSUVFZ1kyOXRjR0YwSUdaMWJtTjBhVzl1SUdadmNpQmdVWFZoZEdWeWJtbHZiaTVwYm5abGNuUW9LV0FnTHlCZ1VYVmhkR1Z5Ym1sdmJpNXBiblpsY25ObEtDbGdMbHh1SUNvZ1lGRjFZWFJsY201cGIyNHVhVzUyWlhKMEtDbGdJR2x6SUdsdWRISnZaSFZqWldRZ2FXNGdjakV5TXlCaGJtUWdZRkYxWVhSbGNtNXBiMjR1YVc1MlpYSnpaU2dwWUNCbGJXbDBjeUJoSUhkaGNtNXBibWN1WEc0Z0tpQlhaU0JoY21VZ1oyOXBibWNnZEc4Z2RYTmxJSFJvYVhNZ1kyOXRjR0YwSUdadmNpQmhJSGRvYVd4bExseHVJQ29nUUhCaGNtRnRJSFJoY21kbGRDQkJJSFJoY21kbGRDQnhkV0YwWlhKdWFXOXVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCeGRXRjBTVzUyWlhKMFEyOXRjR0YwUEZRZ1pYaDBaVzVrY3lCVVNGSkZSUzVSZFdGMFpYSnVhVzl1UGloMFlYSm5aWFE2SUZRcE9pQlVJSHRjYmlBZ2FXWWdLQ2gwWVhKblpYUWdZWE1nWVc1NUtTNXBiblpsY25RcElIdGNiaUFnSUNCMFlYSm5aWFF1YVc1MlpYSjBLQ2s3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnS0hSaGNtZGxkQ0JoY3lCaGJua3BMbWx1ZG1WeWMyVW9LVHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUIwWVhKblpYUTdYRzU5WEc0aUxDSnBiWEJ2Y25RZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1Y2JpOHFLbHh1SUNvZ1FTQmlZWE5sSUdOc1lYTnpJRzltSUZaU1RTQmpiMjV6ZEhKaGFXNTBJR05zWVhOelpYTXVYRzRnS2k5Y2JtVjRjRzl5ZENCaFluTjBjbUZqZENCamJHRnpjeUJXVWsxT2IyUmxRMjl1YzNSeVlXbHVkQ0I3WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1VnYjJKcVpXTjBJR0psYVc1bklHTnZibk4wY21GcGJtVmtJR0o1SUhSb1pTQjdRR3hwYm1zZ2MyOTFjbU5sZlM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCa1pYTjBhVzVoZEdsdmJqb2dWRWhTUlVVdVQySnFaV04wTTBRN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSb1pTQnZZbXBsWTNRZ1kyOXVjM1J5WVdsdWN5QjBhR1VnZTBCc2FXNXJJR1JsYzNScGJtRjBhVzl1ZlM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCemIzVnlZMlU2SUZSSVVrVkZMazlpYW1WamRETkVPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1VnZDJWcFoyaDBJRzltSUhSb1pTQmpiMjV6ZEhKaGFXNTBMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSGRsYVdkb2REb2diblZ0WW1WeU8xeHVYRzRnSUhCMVlteHBZeUJoWW5OMGNtRmpkQ0JuWlhRZ1pHVndaVzVrWlc1amFXVnpLQ2s2SUZObGREeFVTRkpGUlM1UFltcGxZM1F6UkQ0N1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCd1lYSmhiU0JrWlhOMGFXNWhkR2x2YmlCVWFHVWdaR1Z6ZEdsdVlYUnBiMjRnYjJKcVpXTjBYRzRnSUNBcUlFQndZWEpoYlNCemIzVnlZMlVnVkdobElITnZkWEpqWlNCdlltcGxZM1JjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJqYjI1emRISjFZM1J2Y2loa1pYTjBhVzVoZEdsdmJqb2dWRWhTUlVVdVQySnFaV04wTTBRc0lITnZkWEpqWlRvZ1ZFaFNSVVV1VDJKcVpXTjBNMFFwSUh0Y2JpQWdJQ0IwYUdsekxtUmxjM1JwYm1GMGFXOXVJRDBnWkdWemRHbHVZWFJwYjI0N1hHNGdJQ0FnZEdocGN5NXpiM1Z5WTJVZ1BTQnpiM1Z5WTJVN1hHNWNiaUFnSUNCMGFHbHpMbmRsYVdkb2RDQTlJREV1TUR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlRaWFFnYVc1cGRHbGhiQ0J6ZEdGMFpTQnZaaUIwYUdVZ1kyOXVjM1J5WVdsdWRDNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QmhZbk4wY21GamRDQnpaWFJKYm1sMFUzUmhkR1VvS1RvZ2RtOXBaRHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWWEJrWVhSbElHRnVaQ0JoY0hCc2VTQjBhR1VnWTI5dWMzUnlZV2x1ZEM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCaFluTjBjbUZqZENCMWNHUmhkR1VvS1RvZ2RtOXBaRHRjYm4xY2JpSXNJbWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCN0lHUmxZMjl0Y0c5elpWQnZjMmwwYVc5dUlIMGdabkp2YlNBbkxpOTFkR2xzY3k5a1pXTnZiWEJ2YzJWUWIzTnBkR2x2YmljN1hHNXBiWEJ2Y25RZ2V5QmtaV052YlhCdmMyVlNiM1JoZEdsdmJpQjlJR1p5YjIwZ0p5NHZkWFJwYkhNdlpHVmpiMjF3YjNObFVtOTBZWFJwYjI0bk8xeHVhVzF3YjNKMElIc2djWFZoZEVsdWRtVnlkRU52YlhCaGRDQjlJR1p5YjIwZ0p5NHZkWFJwYkhNdmNYVmhkRWx1ZG1WeWRFTnZiWEJoZENjN1hHNXBiWEJ2Y25RZ2V5QldVazFPYjJSbFEyOXVjM1J5WVdsdWRDQjlJR1p5YjIwZ0p5NHZWbEpOVG05a1pVTnZibk4wY21GcGJuUW5PMXh1WEc1amIyNXpkQ0JmZGpOQklEMGdibVYzSUZSSVVrVkZMbFpsWTNSdmNqTW9LVHRjYm1OdmJuTjBJRjkyTTBJZ1BTQnVaWGNnVkVoU1JVVXVWbVZqZEc5eU15Z3BPMXh1WTI5dWMzUWdYM1l6UXlBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektDazdYRzVqYjI1emRDQmZjWFZoZEVFZ1BTQnVaWGNnVkVoU1JVVXVVWFZoZEdWeWJtbHZiaWdwTzF4dVkyOXVjM1FnWDNGMVlYUkNJRDBnYm1WM0lGUklVa1ZGTGxGMVlYUmxjbTVwYjI0b0tUdGNibU52Ym5OMElGOXhkV0YwUXlBOUlHNWxkeUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVLQ2s3WEc1Y2JpOHFLbHh1SUNvZ1FTQmpiMjV6ZEhKaGFXNTBJSFJvWVhRZ2JXRnJaWE1nYVhRZ2JHOXZheUJoZENCaElITnZkWEpqWlNCdlltcGxZM1F1WEc0Z0tseHVJQ29nVTJWbE9pQm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZkbkp0TFdNdmRuSnRMWE53WldOcFptbGpZWFJwYjI0dmRISmxaUzl0WVhOMFpYSXZjM0JsWTJsbWFXTmhkR2x2Ymk5V1VrMURYMjV2WkdWZlkyOXVjM1J5WVdsdWRDMHhMakJmWW1WMFlTTnliMnhzTFdOdmJuTjBjbUZwYm5SY2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklGWlNUVUZwYlVOdmJuTjBjbUZwYm5RZ1pYaDBaVzVrY3lCV1VrMU9iMlJsUTI5dWMzUnlZV2x1ZENCN1hHNGdJQzhxS2x4dUlDQWdLaUJVYUdVZ1lXbHRJR0Y0YVhNZ2IyWWdkR2hsSUdOdmJuTjBjbUZwYm5RdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBJR0ZwYlVGNGFYTW9LVG9nSjFCdmMybDBhWFpsV0NjZ2ZDQW5UbVZuWVhScGRtVllKeUI4SUNkUWIzTnBkR2wyWlZrbklId2dKMDVsWjJGMGFYWmxXU2NnZkNBblVHOXphWFJwZG1WYUp5QjhJQ2RPWldkaGRHbDJaVm9uSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZllXbHRRWGhwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1VnWVdsdElHRjRhWE1nYjJZZ2RHaGxJR052Ym5OMGNtRnBiblF1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nYzJWMElHRnBiVUY0YVhNb1lXbHRRWGhwY3pvZ0oxQnZjMmwwYVhabFdDY2dmQ0FuVG1WbllYUnBkbVZZSnlCOElDZFFiM05wZEdsMlpWa25JSHdnSjA1bFoyRjBhWFpsV1NjZ2ZDQW5VRzl6YVhScGRtVmFKeUI4SUNkT1pXZGhkR2wyWlZvbktTQjdYRzRnSUNBZ2RHaHBjeTVmWVdsdFFYaHBjeUE5SUdGcGJVRjRhWE03WEc0Z0lDQWdkR2hwY3k1ZmRqTkJhVzFCZUdsekxuTmxkQ2hjYmlBZ0lDQWdJR0ZwYlVGNGFYTWdQVDA5SUNkUWIzTnBkR2wyWlZnbklEOGdNUzR3SURvZ1lXbHRRWGhwY3lBOVBUMGdKMDVsWjJGMGFYWmxXQ2NnUHlBdE1TNHdJRG9nTUM0d0xGeHVJQ0FnSUNBZ1lXbHRRWGhwY3lBOVBUMGdKMUJ2YzJsMGFYWmxXU2NnUHlBeExqQWdPaUJoYVcxQmVHbHpJRDA5UFNBblRtVm5ZWFJwZG1WWkp5QS9JQzB4TGpBZ09pQXdMakFzWEc0Z0lDQWdJQ0JoYVcxQmVHbHpJRDA5UFNBblVHOXphWFJwZG1WYUp5QS9JREV1TUNBNklHRnBiVUY0YVhNZ1BUMDlJQ2RPWldkaGRHbDJaVm9uSUQ4Z0xURXVNQ0E2SURBdU1DeGNiaUFnSUNBcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlNCaGFXMGdZWGhwY3lCdlppQjBhR1VnWTI5dWMzUnlZV2x1ZEM1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1gyRnBiVUY0YVhNNklDZFFiM05wZEdsMlpWZ25JSHdnSjA1bFoyRjBhWFpsV0NjZ2ZDQW5VRzl6YVhScGRtVlpKeUI4SUNkT1pXZGhkR2wyWlZrbklId2dKMUJ2YzJsMGFYWmxXaWNnZkNBblRtVm5ZWFJwZG1WYUp6dGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJSHRBYkdsdWF5QmZZV2x0UVhocGMzMGdZblYwSUdsdUlHRnVJR0ZqZEhWaGJDQldaV04wYjNJeklHWnZjbTB1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUY5Mk0wRnBiVUY0YVhNNklGUklVa1ZGTGxabFkzUnZjak03WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlNCeVpYTjBJSEYxWVhSbGNtNXBiMjRnYjJZZ2RHaGxJSHRBYkdsdWF5QmtaWE4wYVc1aGRHbHZibjB1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUY5a2MzUlNaWE4wVVhWaGREb2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJqdGNibHh1SUNCd2RXSnNhV01nWjJWMElHUmxjR1Z1WkdWdVkybGxjeWdwT2lCVFpYUThWRWhTUlVVdVQySnFaV04wTTBROFZFaFNSVVV1UlhabGJuUStQaUI3WEc0Z0lDQWdZMjl1YzNRZ2MyVjBJRDBnYm1WM0lGTmxkRHhVU0ZKRlJTNVBZbXBsWTNRelJENG9XM1JvYVhNdWMyOTFjbU5sWFNrN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1a1pYTjBhVzVoZEdsdmJpNXdZWEpsYm5RcElIdGNiaUFnSUNBZ0lITmxkQzVoWkdRb2RHaHBjeTVrWlhOMGFXNWhkR2x2Ymk1d1lYSmxiblFwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnpaWFE3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb1pHVnpkR2x1WVhScGIyNDZJRlJJVWtWRkxrOWlhbVZqZERORUxDQnpiM1Z5WTJVNklGUklVa1ZGTGs5aWFtVmpkRE5FS1NCN1hHNGdJQ0FnYzNWd1pYSW9aR1Z6ZEdsdVlYUnBiMjRzSUhOdmRYSmpaU2s3WEc1Y2JpQWdJQ0IwYUdsekxsOWhhVzFCZUdseklEMGdKMUJ2YzJsMGFYWmxXQ2M3WEc0Z0lDQWdkR2hwY3k1ZmRqTkJhVzFCZUdseklEMGdibVYzSUZSSVVrVkZMbFpsWTNSdmNqTW9NU3dnTUN3Z01DazdYRzVjYmlBZ0lDQjBhR2x6TGw5a2MzUlNaWE4wVVhWaGRDQTlJRzVsZHlCVVNGSkZSUzVSZFdGMFpYSnVhVzl1S0NrN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2MyVjBTVzVwZEZOMFlYUmxLQ2s2SUhadmFXUWdlMXh1SUNBZ0lIUm9hWE11WDJSemRGSmxjM1JSZFdGMExtTnZjSGtvZEdocGN5NWtaWE4wYVc1aGRHbHZiaTV4ZFdGMFpYSnVhVzl1S1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCMWNHUmhkR1VvS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdMeThnZFhCa1lYUmxJSGR2Y214a0lHMWhkSEpwZUNCdlppQmtaWE4wYVc1aGRHbHZiaUJoYm1RZ2MyOTFjbU5sSUcxaGJuVmhiR3g1WEc0Z0lDQWdkR2hwY3k1a1pYTjBhVzVoZEdsdmJpNTFjR1JoZEdWWGIzSnNaRTFoZEhKcGVDaDBjblZsTENCbVlXeHpaU2s3WEc0Z0lDQWdkR2hwY3k1emIzVnlZMlV1ZFhCa1lYUmxWMjl5YkdSTllYUnlhWGdvZEhKMVpTd2dabUZzYzJVcE8xeHVYRzRnSUNBZ0x5OGdaMlYwSUhkdmNteGtJSEYxWVhSbGNtNXBiMjRnYjJZZ2RHaGxJSEJoY21WdWRDQnZaaUIwYUdVZ1pHVnpkR2x1WVhScGIyNWNiaUFnSUNCamIyNXpkQ0JrYzNSUVlYSmxiblJYYjNKc1pGRjFZWFFnUFNCZmNYVmhkRUV1YVdSbGJuUnBkSGtvS1R0Y2JpQWdJQ0JqYjI1emRDQnBiblpFYzNSUVlYSmxiblJYYjNKc1pGRjFZWFFnUFNCZmNYVmhkRUl1YVdSbGJuUnBkSGtvS1R0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVrWlhOMGFXNWhkR2x2Ymk1d1lYSmxiblFwSUh0Y2JpQWdJQ0FnSUdSbFkyOXRjRzl6WlZKdmRHRjBhVzl1S0hSb2FYTXVaR1Z6ZEdsdVlYUnBiMjR1Y0dGeVpXNTBMbTFoZEhKcGVGZHZjbXhrTENCa2MzUlFZWEpsYm5SWGIzSnNaRkYxWVhRcE8xeHVJQ0FnSUNBZ2NYVmhkRWx1ZG1WeWRFTnZiWEJoZENocGJuWkVjM1JRWVhKbGJuUlhiM0pzWkZGMVlYUXVZMjl3ZVNoa2MzUlFZWEpsYm5SWGIzSnNaRkYxWVhRcEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QmpZV3hqZFd4aGRHVWdabkp2YlMxMGJ5QjJaV04wYjNKeklHbHVJSGR2Y214a0lHTnZiM0prWEc0Z0lDQWdZMjl1YzNRZ1lUQWdQU0JmZGpOQkxtTnZjSGtvZEdocGN5NWZkak5CYVcxQmVHbHpLUzVoY0hCc2VWRjFZWFJsY201cGIyNG9kR2hwY3k1ZlpITjBVbVZ6ZEZGMVlYUXBMbUZ3Y0d4NVVYVmhkR1Z5Ym1sdmJpaGtjM1JRWVhKbGJuUlhiM0pzWkZGMVlYUXBPMXh1SUNBZ0lHTnZibk4wSUdFeElEMGdaR1ZqYjIxd2IzTmxVRzl6YVhScGIyNG9kR2hwY3k1emIzVnlZMlV1YldGMGNtbDRWMjl5YkdRc0lGOTJNMElwWEc0Z0lDQWdJQ0F1YzNWaUtHUmxZMjl0Y0c5elpWQnZjMmwwYVc5dUtIUm9hWE11WkdWemRHbHVZWFJwYjI0dWJXRjBjbWw0VjI5eWJHUXNJRjkyTTBNcEtWeHVJQ0FnSUNBZ0xtNXZjbTFoYkdsNlpTZ3BPMXh1WEc0Z0lDQWdMeThnWTNKbFlYUmxJR0VnWm5KdmJTMTBieUJ4ZFdGMFpYSnVhVzl1TENCamIyNTJaWEowSUhSdklHUmxjM1JwYm1GMGFXOXVJR3h2WTJGc0lHTnZiM0prTENCMGFHVnVJRzExYkhScGNHeDVJSEpsYzNRZ2NYVmhkR1Z5Ym1sdmJseHVJQ0FnSUdOdmJuTjBJSFJoY21kbGRGRjFZWFFnUFNCZmNYVmhkRU5jYmlBZ0lDQWdJQzV6WlhSR2NtOXRWVzVwZEZabFkzUnZjbk1vWVRBc0lHRXhLVnh1SUNBZ0lDQWdMbkJ5WlcxMWJIUnBjR3g1S0dsdWRrUnpkRkJoY21WdWRGZHZjbXhrVVhWaGRDbGNiaUFnSUNBZ0lDNXRkV3gwYVhCc2VTaGtjM1JRWVhKbGJuUlhiM0pzWkZGMVlYUXBYRzRnSUNBZ0lDQXViWFZzZEdsd2JIa29kR2hwY3k1ZlpITjBVbVZ6ZEZGMVlYUXBPMXh1WEc0Z0lDQWdMeThnWW14bGJtUWdkMmwwYUNCMGFHVWdjbVZ6ZENCeGRXRjBaWEp1YVc5dUlIVnphVzVuSUhkbGFXZG9kRnh1SUNBZ0lIUm9hWE11WkdWemRHbHVZWFJwYjI0dWNYVmhkR1Z5Ym1sdmJpNWpiM0I1S0hSb2FYTXVYMlJ6ZEZKbGMzUlJkV0YwS1M1emJHVnljQ2gwWVhKblpYUlJkV0YwTENCMGFHbHpMbmRsYVdkb2RDazdYRzRnSUgxY2JuMWNiaUlzSWk4cUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaXBjY2x4dVEyOXdlWEpwWjJoMElDaGpLU0JOYVdOeWIzTnZablFnUTI5eWNHOXlZWFJwYjI0dVhISmNibHh5WEc1UVpYSnRhWE56YVc5dUlIUnZJSFZ6WlN3Z1kyOXdlU3dnYlc5a2FXWjVMQ0JoYm1RdmIzSWdaR2x6ZEhKcFluVjBaU0IwYUdseklITnZablIzWVhKbElHWnZjaUJoYm5sY2NseHVjSFZ5Y0c5elpTQjNhWFJvSUc5eUlIZHBkR2h2ZFhRZ1ptVmxJR2x6SUdobGNtVmllU0JuY21GdWRHVmtMbHh5WEc1Y2NseHVWRWhGSUZOUFJsUlhRVkpGSUVsVElGQlNUMVpKUkVWRUlGd2lRVk1nU1ZOY0lpQkJUa1FnVkVoRklFRlZWRWhQVWlCRVNWTkRURUZKVFZNZ1FVeE1JRmRCVWxKQlRsUkpSVk1nVjBsVVNGeHlYRzVTUlVkQlVrUWdWRThnVkVoSlV5QlRUMFpVVjBGU1JTQkpUa05NVlVSSlRrY2dRVXhNSUVsTlVFeEpSVVFnVjBGU1VrRk9WRWxGVXlCUFJpQk5SVkpEU0VGT1ZFRkNTVXhKVkZsY2NseHVRVTVFSUVaSlZFNUZVMU11SUVsT0lFNVBJRVZXUlU1VUlGTklRVXhNSUZSSVJTQkJWVlJJVDFJZ1FrVWdURWxCUWt4RklFWlBVaUJCVGxrZ1UxQkZRMGxCVEN3Z1JFbFNSVU5VTEZ4eVhHNUpUa1JKVWtWRFZDd2dUMUlnUTA5T1UwVlJWVVZPVkVsQlRDQkVRVTFCUjBWVElFOVNJRUZPV1NCRVFVMUJSMFZUSUZkSVFWUlRUMFZXUlZJZ1VrVlRWVXhVU1U1SElFWlNUMDFjY2x4dVRFOVRVeUJQUmlCVlUwVXNJRVJCVkVFZ1QxSWdVRkpQUmtsVVV5d2dWMGhGVkVoRlVpQkpUaUJCVGlCQlExUkpUMDRnVDBZZ1EwOU9WRkpCUTFRc0lFNUZSMHhKUjBWT1EwVWdUMUpjY2x4dVQxUklSVklnVkU5U1ZFbFBWVk1nUVVOVVNVOU9MQ0JCVWtsVFNVNUhJRTlWVkNCUFJpQlBVaUJKVGlCRFQwNU9SVU5VU1U5T0lGZEpWRWdnVkVoRklGVlRSU0JQVWx4eVhHNVFSVkpHVDFKTlFVNURSU0JQUmlCVVNFbFRJRk5QUmxSWFFWSkZMbHh5WEc0cUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaUFxTDF4eVhHNHZLaUJuYkc5aVlXd2dVbVZtYkdWamRDd2dVSEp2YldselpTQXFMMXh5WEc1Y2NseHVkbUZ5SUdWNGRHVnVaRk4wWVhScFkzTWdQU0JtZFc1amRHbHZiaWhrTENCaUtTQjdYSEpjYmlBZ0lDQmxlSFJsYm1SVGRHRjBhV056SUQwZ1QySnFaV04wTG5ObGRGQnliM1J2ZEhsd1pVOW1JSHg4WEhKY2JpQWdJQ0FnSUNBZ0tIc2dYMTl3Y205MGIxOWZPaUJiWFNCOUlHbHVjM1JoYm1ObGIyWWdRWEp5WVhrZ0ppWWdablZ1WTNScGIyNGdLR1FzSUdJcElIc2daQzVmWDNCeWIzUnZYMThnUFNCaU95QjlLU0I4ZkZ4eVhHNGdJQ0FnSUNBZ0lHWjFibU4wYVc5dUlDaGtMQ0JpS1NCN0lHWnZjaUFvZG1GeUlIQWdhVzRnWWlrZ2FXWWdLRTlpYW1WamRDNXdjbTkwYjNSNWNHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrdVkyRnNiQ2hpTENCd0tTa2daRnR3WFNBOUlHSmJjRjA3SUgwN1hISmNiaUFnSUNCeVpYUjFjbTRnWlhoMFpXNWtVM1JoZEdsamN5aGtMQ0JpS1R0Y2NseHVmVHRjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMlY0ZEdWdVpITW9aQ3dnWWlrZ2UxeHlYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQmlJQ0U5UFNCY0ltWjFibU4wYVc5dVhDSWdKaVlnWWlBaFBUMGdiblZzYkNsY2NseHVJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpUTJ4aGMzTWdaWGgwWlc1a2N5QjJZV3gxWlNCY0lpQXJJRk4wY21sdVp5aGlLU0FySUZ3aUlHbHpJRzV2ZENCaElHTnZibk4wY25WamRHOXlJRzl5SUc1MWJHeGNJaWs3WEhKY2JpQWdJQ0JsZUhSbGJtUlRkR0YwYVdOektHUXNJR0lwTzF4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnWDE4b0tTQjdJSFJvYVhNdVkyOXVjM1J5ZFdOMGIzSWdQU0JrT3lCOVhISmNiaUFnSUNCa0xuQnliM1J2ZEhsd1pTQTlJR0lnUFQwOUlHNTFiR3dnUHlCUFltcGxZM1F1WTNKbFlYUmxLR0lwSURvZ0tGOWZMbkJ5YjNSdmRIbHdaU0E5SUdJdWNISnZkRzkwZVhCbExDQnVaWGNnWDE4b0tTazdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0IyWVhJZ1gxOWhjM05wWjI0Z1BTQm1kVzVqZEdsdmJpZ3BJSHRjY2x4dUlDQWdJRjlmWVhOemFXZHVJRDBnVDJKcVpXTjBMbUZ6YzJsbmJpQjhmQ0JtZFc1amRHbHZiaUJmWDJGemMybG5iaWgwS1NCN1hISmNiaUFnSUNBZ0lDQWdabTl5SUNoMllYSWdjeXdnYVNBOUlERXNJRzRnUFNCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvT3lCcElEd2dianNnYVNzcktTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lITWdQU0JoY21kMWJXVnVkSE5iYVYwN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUhBZ2FXNGdjeWtnYVdZZ0tFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVdWFHRnpUM2R1VUhKdmNHVnlkSGt1WTJGc2JDaHpMQ0J3S1NrZ2RGdHdYU0E5SUhOYmNGMDdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCME8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUNBZ2NtVjBkWEp1SUY5ZllYTnphV2R1TG1Gd2NHeDVLSFJvYVhNc0lHRnlaM1Z0Wlc1MGN5azdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNKbGMzUW9jeXdnWlNrZ2UxeHlYRzRnSUNBZ2RtRnlJSFFnUFNCN2ZUdGNjbHh1SUNBZ0lHWnZjaUFvZG1GeUlIQWdhVzRnY3lrZ2FXWWdLRTlpYW1WamRDNXdjbTkwYjNSNWNHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrdVkyRnNiQ2h6TENCd0tTQW1KaUJsTG1sdVpHVjRUMllvY0NrZ1BDQXdLVnh5WEc0Z0lDQWdJQ0FnSUhSYmNGMGdQU0J6VzNCZE8xeHlYRzRnSUNBZ2FXWWdLSE1nSVQwZ2JuVnNiQ0FtSmlCMGVYQmxiMllnVDJKcVpXTjBMbWRsZEU5M2JsQnliM0JsY25SNVUzbHRZbTlzY3lBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1Z4eVhHNGdJQ0FnSUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3TENCd0lEMGdUMkpxWldOMExtZGxkRTkzYmxCeWIzQmxjblI1VTNsdFltOXNjeWh6S1RzZ2FTQThJSEF1YkdWdVozUm9PeUJwS3lzcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR1V1YVc1a1pYaFBaaWh3VzJsZEtTQThJREFnSmlZZ1QySnFaV04wTG5CeWIzUnZkSGx3WlM1d2NtOXdaWEowZVVselJXNTFiV1Z5WVdKc1pTNWpZV3hzS0hNc0lIQmJhVjBwS1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RGdHdXMmxkWFNBOUlITmJjRnRwWFYwN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdjbVYwZFhKdUlIUTdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJSbFkyOXlZWFJsS0dSbFkyOXlZWFJ2Y25Nc0lIUmhjbWRsZEN3Z2EyVjVMQ0JrWlhOaktTQjdYSEpjYmlBZ0lDQjJZWElnWXlBOUlHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnc0lISWdQU0JqSUR3Z015QS9JSFJoY21kbGRDQTZJR1JsYzJNZ1BUMDlJRzUxYkd3Z1B5QmtaWE5qSUQwZ1QySnFaV04wTG1kbGRFOTNibEJ5YjNCbGNuUjVSR1Z6WTNKcGNIUnZjaWgwWVhKblpYUXNJR3RsZVNrZ09pQmtaWE5qTENCa08xeHlYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQlNaV1pzWldOMElEMDlQU0JjSW05aWFtVmpkRndpSUNZbUlIUjVjR1Z2WmlCU1pXWnNaV04wTG1SbFkyOXlZWFJsSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUhJZ1BTQlNaV1pzWldOMExtUmxZMjl5WVhSbEtHUmxZMjl5WVhSdmNuTXNJSFJoY21kbGRDd2dhMlY1TENCa1pYTmpLVHRjY2x4dUlDQWdJR1ZzYzJVZ1ptOXlJQ2gyWVhJZ2FTQTlJR1JsWTI5eVlYUnZjbk11YkdWdVozUm9JQzBnTVRzZ2FTQStQU0F3T3lCcExTMHBJR2xtSUNoa0lEMGdaR1ZqYjNKaGRHOXljMXRwWFNrZ2NpQTlJQ2hqSUR3Z015QS9JR1FvY2lrZ09pQmpJRDRnTXlBL0lHUW9kR0Z5WjJWMExDQnJaWGtzSUhJcElEb2daQ2gwWVhKblpYUXNJR3RsZVNrcElIeDhJSEk3WEhKY2JpQWdJQ0J5WlhSMWNtNGdZeUErSURNZ0ppWWdjaUFtSmlCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29kR0Z5WjJWMExDQnJaWGtzSUhJcExDQnlPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5d1lYSmhiU2h3WVhKaGJVbHVaR1Y0TENCa1pXTnZjbUYwYjNJcElIdGNjbHh1SUNBZ0lISmxkSFZ5YmlCbWRXNWpkR2x2YmlBb2RHRnlaMlYwTENCclpYa3BJSHNnWkdWamIzSmhkRzl5S0hSaGNtZGxkQ3dnYTJWNUxDQndZWEpoYlVsdVpHVjRLVHNnZlZ4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOWxjMFJsWTI5eVlYUmxLR04wYjNJc0lHUmxjMk55YVhCMGIzSkpiaXdnWkdWamIzSmhkRzl5Y3l3Z1kyOXVkR1Y0ZEVsdUxDQnBibWwwYVdGc2FYcGxjbk1zSUdWNGRISmhTVzVwZEdsaGJHbDZaWEp6S1NCN1hISmNiaUFnSUNCbWRXNWpkR2x2YmlCaFkyTmxjSFFvWmlrZ2V5QnBaaUFvWmlBaFBUMGdkbTlwWkNBd0lDWW1JSFI1Y0dWdlppQm1JQ0U5UFNCY0ltWjFibU4wYVc5dVhDSXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKR2RXNWpkR2x2YmlCbGVIQmxZM1JsWkZ3aUtUc2djbVYwZFhKdUlHWTdJSDFjY2x4dUlDQWdJSFpoY2lCcmFXNWtJRDBnWTI5dWRHVjRkRWx1TG10cGJtUXNJR3RsZVNBOUlHdHBibVFnUFQwOUlGd2laMlYwZEdWeVhDSWdQeUJjSW1kbGRGd2lJRG9nYTJsdVpDQTlQVDBnWENKelpYUjBaWEpjSWlBL0lGd2ljMlYwWENJZ09pQmNJblpoYkhWbFhDSTdYSEpjYmlBZ0lDQjJZWElnZEdGeVoyVjBJRDBnSVdSbGMyTnlhWEIwYjNKSmJpQW1KaUJqZEc5eUlEOGdZMjl1ZEdWNGRFbHVXMXdpYzNSaGRHbGpYQ0pkSUQ4Z1kzUnZjaUE2SUdOMGIzSXVjSEp2ZEc5MGVYQmxJRG9nYm5Wc2JEdGNjbHh1SUNBZ0lIWmhjaUJrWlhOamNtbHdkRzl5SUQwZ1pHVnpZM0pwY0hSdmNrbHVJSHg4SUNoMFlYSm5aWFFnUHlCUFltcGxZM1F1WjJWMFQzZHVVSEp2Y0dWeWRIbEVaWE5qY21sd2RHOXlLSFJoY21kbGRDd2dZMjl1ZEdWNGRFbHVMbTVoYldVcElEb2dlMzBwTzF4eVhHNGdJQ0FnZG1GeUlGOHNJR1J2Ym1VZ1BTQm1ZV3h6WlR0Y2NseHVJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQmtaV052Y21GMGIzSnpMbXhsYm1kMGFDQXRJREU3SUdrZ1BqMGdNRHNnYVMwdEtTQjdYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlHTnZiblJsZUhRZ1BTQjdmVHRjY2x4dUlDQWdJQ0FnSUNCbWIzSWdLSFpoY2lCd0lHbHVJR052Ym5SbGVIUkpiaWtnWTI5dWRHVjRkRnR3WFNBOUlIQWdQVDA5SUZ3aVlXTmpaWE56WENJZ1B5QjdmU0E2SUdOdmJuUmxlSFJKYmx0d1hUdGNjbHh1SUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJ3SUdsdUlHTnZiblJsZUhSSmJpNWhZMk5sYzNNcElHTnZiblJsZUhRdVlXTmpaWE56VzNCZElEMGdZMjl1ZEdWNGRFbHVMbUZqWTJWemMxdHdYVHRjY2x4dUlDQWdJQ0FnSUNCamIyNTBaWGgwTG1Ga1pFbHVhWFJwWVd4cGVtVnlJRDBnWm5WdVkzUnBiMjRnS0dZcElIc2dhV1lnS0dSdmJtVXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKRFlXNXViM1FnWVdSa0lHbHVhWFJwWVd4cGVtVnljeUJoWm5SbGNpQmtaV052Y21GMGFXOXVJR2hoY3lCamIyMXdiR1YwWldSY0lpazdJR1Y0ZEhKaFNXNXBkR2xoYkdsNlpYSnpMbkIxYzJnb1lXTmpaWEIwS0dZZ2ZId2diblZzYkNrcE95QjlPMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQnlaWE4xYkhRZ1BTQW9NQ3dnWkdWamIzSmhkRzl5YzF0cFhTa29hMmx1WkNBOVBUMGdYQ0poWTJObGMzTnZjbHdpSUQ4Z2V5Qm5aWFE2SUdSbGMyTnlhWEIwYjNJdVoyVjBMQ0J6WlhRNklHUmxjMk55YVhCMGIzSXVjMlYwSUgwZ09pQmtaWE5qY21sd2RHOXlXMnRsZVYwc0lHTnZiblJsZUhRcE8xeHlYRzRnSUNBZ0lDQWdJR2xtSUNocmFXNWtJRDA5UFNCY0ltRmpZMlZ6YzI5eVhDSXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hKbGMzVnNkQ0E5UFQwZ2RtOXBaQ0F3S1NCamIyNTBhVzUxWlR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tISmxjM1ZzZENBOVBUMGdiblZzYkNCOGZDQjBlWEJsYjJZZ2NtVnpkV3gwSUNFOVBTQmNJbTlpYW1WamRGd2lLU0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0Z3aVQySnFaV04wSUdWNGNHVmpkR1ZrWENJcE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9YeUE5SUdGalkyVndkQ2h5WlhOMWJIUXVaMlYwS1NrZ1pHVnpZM0pwY0hSdmNpNW5aWFFnUFNCZk8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9YeUE5SUdGalkyVndkQ2h5WlhOMWJIUXVjMlYwS1NrZ1pHVnpZM0pwY0hSdmNpNXpaWFFnUFNCZk8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9YeUE5SUdGalkyVndkQ2h5WlhOMWJIUXVhVzVwZENrcElHbHVhWFJwWVd4cGVtVnljeTV3ZFhOb0tGOHBPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaGZJRDBnWVdOalpYQjBLSEpsYzNWc2RDa3BJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0d0cGJtUWdQVDA5SUZ3aVptbGxiR1JjSWlrZ2FXNXBkR2xoYkdsNlpYSnpMbkIxYzJnb1h5azdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlVnWkdWelkzSnBjSFJ2Y2x0clpYbGRJRDBnWHp0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ0lDQnBaaUFvZEdGeVoyVjBLU0JQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb2RHRnlaMlYwTENCamIyNTBaWGgwU1c0dWJtRnRaU3dnWkdWelkzSnBjSFJ2Y2lrN1hISmNiaUFnSUNCa2IyNWxJRDBnZEhKMVpUdGNjbHh1ZlR0Y2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNKMWJrbHVhWFJwWVd4cGVtVnljeWgwYUdselFYSm5MQ0JwYm1sMGFXRnNhWHBsY25Nc0lIWmhiSFZsS1NCN1hISmNiaUFnSUNCMllYSWdkWE5sVm1Gc2RXVWdQU0JoY21kMWJXVnVkSE11YkdWdVozUm9JRDRnTWp0Y2NseHVJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z2FXNXBkR2xoYkdsNlpYSnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hISmNiaUFnSUNBZ0lDQWdkbUZzZFdVZ1BTQjFjMlZXWVd4MVpTQS9JR2x1YVhScFlXeHBlbVZ5YzF0cFhTNWpZV3hzS0hSb2FYTkJjbWNzSUhaaGJIVmxLU0E2SUdsdWFYUnBZV3hwZW1WeWMxdHBYUzVqWVd4c0tIUm9hWE5CY21jcE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUNBZ2NtVjBkWEp1SUhWelpWWmhiSFZsSUQ4Z2RtRnNkV1VnT2lCMmIybGtJREE3WEhKY2JuMDdYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOXdjbTl3UzJWNUtIZ3BJSHRjY2x4dUlDQWdJSEpsZEhWeWJpQjBlWEJsYjJZZ2VDQTlQVDBnWENKemVXMWliMnhjSWlBL0lIZ2dPaUJjSWx3aUxtTnZibU5oZENoNEtUdGNjbHh1ZlR0Y2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDNObGRFWjFibU4wYVc5dVRtRnRaU2htTENCdVlXMWxMQ0J3Y21WbWFYZ3BJSHRjY2x4dUlDQWdJR2xtSUNoMGVYQmxiMllnYm1GdFpTQTlQVDBnWENKemVXMWliMnhjSWlrZ2JtRnRaU0E5SUc1aGJXVXVaR1Z6WTNKcGNIUnBiMjRnUHlCY0lsdGNJaTVqYjI1allYUW9ibUZ0WlM1a1pYTmpjbWx3ZEdsdmJpd2dYQ0pkWENJcElEb2dYQ0pjSWp0Y2NseHVJQ0FnSUhKbGRIVnliaUJQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb1ppd2dYQ0p1WVcxbFhDSXNJSHNnWTI5dVptbG5kWEpoWW14bE9pQjBjblZsTENCMllXeDFaVG9nY0hKbFptbDRJRDhnWENKY0lpNWpiMjVqWVhRb2NISmxabWw0TENCY0lpQmNJaXdnYm1GdFpTa2dPaUJ1WVcxbElIMHBPMXh5WEc1OU8xeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmJXVjBZV1JoZEdFb2JXVjBZV1JoZEdGTFpYa3NJRzFsZEdGa1lYUmhWbUZzZFdVcElIdGNjbHh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdVbVZtYkdWamRDQTlQVDBnWENKdlltcGxZM1JjSWlBbUppQjBlWEJsYjJZZ1VtVm1iR1ZqZEM1dFpYUmhaR0YwWVNBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCeVpYUjFjbTRnVW1WbWJHVmpkQzV0WlhSaFpHRjBZU2h0WlhSaFpHRjBZVXRsZVN3Z2JXVjBZV1JoZEdGV1lXeDFaU2s3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyRjNZV2wwWlhJb2RHaHBjMEZ5Wnl3Z1gyRnlaM1Z0Wlc1MGN5d2dVQ3dnWjJWdVpYSmhkRzl5S1NCN1hISmNiaUFnSUNCbWRXNWpkR2x2YmlCaFpHOXdkQ2gyWVd4MVpTa2dleUJ5WlhSMWNtNGdkbUZzZFdVZ2FXNXpkR0Z1WTJWdlppQlFJRDhnZG1Gc2RXVWdPaUJ1WlhjZ1VDaG1kVzVqZEdsdmJpQW9jbVZ6YjJ4MlpTa2dleUJ5WlhOdmJIWmxLSFpoYkhWbEtUc2dmU2s3SUgxY2NseHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ0tGQWdmSHdnS0ZBZ1BTQlFjbTl0YVhObEtTa29ablZ1WTNScGIyNGdLSEpsYzI5c2RtVXNJSEpsYW1WamRDa2dlMXh5WEc0Z0lDQWdJQ0FnSUdaMWJtTjBhVzl1SUdaMWJHWnBiR3hsWkNoMllXeDFaU2tnZXlCMGNua2dleUJ6ZEdWd0tHZGxibVZ5WVhSdmNpNXVaWGgwS0haaGJIVmxLU2s3SUgwZ1kyRjBZMmdnS0dVcElIc2djbVZxWldOMEtHVXBPeUI5SUgxY2NseHVJQ0FnSUNBZ0lDQm1kVzVqZEdsdmJpQnlaV3BsWTNSbFpDaDJZV3gxWlNrZ2V5QjBjbmtnZXlCemRHVndLR2RsYm1WeVlYUnZjbHRjSW5Sb2NtOTNYQ0pkS0haaGJIVmxLU2s3SUgwZ1kyRjBZMmdnS0dVcElIc2djbVZxWldOMEtHVXBPeUI5SUgxY2NseHVJQ0FnSUNBZ0lDQm1kVzVqZEdsdmJpQnpkR1Z3S0hKbGMzVnNkQ2tnZXlCeVpYTjFiSFF1Wkc5dVpTQS9JSEpsYzI5c2RtVW9jbVZ6ZFd4MExuWmhiSFZsS1NBNklHRmtiM0IwS0hKbGMzVnNkQzUyWVd4MVpTa3VkR2hsYmlobWRXeG1hV3hzWldRc0lISmxhbVZqZEdWa0tUc2dmVnh5WEc0Z0lDQWdJQ0FnSUhOMFpYQW9LR2RsYm1WeVlYUnZjaUE5SUdkbGJtVnlZWFJ2Y2k1aGNIQnNlU2gwYUdselFYSm5MQ0JmWVhKbmRXMWxiblJ6SUh4OElGdGRLU2t1Ym1WNGRDZ3BLVHRjY2x4dUlDQWdJSDBwTzF4eVhHNTlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOW5aVzVsY21GMGIzSW9kR2hwYzBGeVp5d2dZbTlrZVNrZ2UxeHlYRzRnSUNBZ2RtRnlJRjhnUFNCN0lHeGhZbVZzT2lBd0xDQnpaVzUwT2lCbWRXNWpkR2x2YmlncElIc2dhV1lnS0hSYk1GMGdKaUF4S1NCMGFISnZkeUIwV3pGZE95QnlaWFIxY200Z2RGc3hYVHNnZlN3Z2RISjVjem9nVzEwc0lHOXdjem9nVzEwZ2ZTd2daaXdnZVN3Z2RDd2daenRjY2x4dUlDQWdJSEpsZEhWeWJpQm5JRDBnZXlCdVpYaDBPaUIyWlhKaUtEQXBMQ0JjSW5Sb2NtOTNYQ0k2SUhabGNtSW9NU2tzSUZ3aWNtVjBkWEp1WENJNklIWmxjbUlvTWlrZ2ZTd2dkSGx3Wlc5bUlGTjViV0p2YkNBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUNZbUlDaG5XMU41YldKdmJDNXBkR1Z5WVhSdmNsMGdQU0JtZFc1amRHbHZiaWdwSUhzZ2NtVjBkWEp1SUhSb2FYTTdJSDBwTENCbk8xeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z2RtVnlZaWh1S1NCN0lISmxkSFZ5YmlCbWRXNWpkR2x2YmlBb2Rpa2dleUJ5WlhSMWNtNGdjM1JsY0NoYmJpd2dkbDBwT3lCOU95QjlYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQnpkR1Z3S0c5d0tTQjdYSEpjYmlBZ0lDQWdJQ0FnYVdZZ0tHWXBJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKSFpXNWxjbUYwYjNJZ2FYTWdZV3h5WldGa2VTQmxlR1ZqZFhScGJtY3VYQ0lwTzF4eVhHNGdJQ0FnSUNBZ0lIZG9hV3hsSUNobklDWW1JQ2huSUQwZ01Dd2diM0JiTUYwZ0ppWWdLRjhnUFNBd0tTa3NJRjhwSUhSeWVTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2htSUQwZ01Td2dlU0FtSmlBb2RDQTlJRzl3V3pCZElDWWdNaUEvSUhsYlhDSnlaWFIxY201Y0lsMGdPaUJ2Y0Zzd1hTQS9JSGxiWENKMGFISnZkMXdpWFNCOGZDQW9LSFFnUFNCNVcxd2ljbVYwZFhKdVhDSmRLU0FtSmlCMExtTmhiR3dvZVNrc0lEQXBJRG9nZVM1dVpYaDBLU0FtSmlBaEtIUWdQU0IwTG1OaGJHd29lU3dnYjNCYk1WMHBLUzVrYjI1bEtTQnlaWFIxY200Z2REdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSGtnUFNBd0xDQjBLU0J2Y0NBOUlGdHZjRnN3WFNBbUlESXNJSFF1ZG1Gc2RXVmRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpkMmwwWTJnZ0tHOXdXekJkS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSURBNklHTmhjMlVnTVRvZ2RDQTlJRzl3T3lCaWNtVmhhenRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdORG9nWHk1c1lXSmxiQ3NyT3lCeVpYUjFjbTRnZXlCMllXeDFaVG9nYjNCYk1WMHNJR1J2Ym1VNklHWmhiSE5sSUgwN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSURVNklGOHViR0ZpWld3ckt6c2dlU0E5SUc5d1d6RmRPeUJ2Y0NBOUlGc3dYVHNnWTI5dWRHbHVkV1U3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRGM2SUc5d0lEMGdYeTV2Y0hNdWNHOXdLQ2s3SUY4dWRISjVjeTV3YjNBb0tUc2dZMjl1ZEdsdWRXVTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrWldaaGRXeDBPbHh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2doS0hRZ1BTQmZMblJ5ZVhNc0lIUWdQU0IwTG14bGJtZDBhQ0ErSURBZ0ppWWdkRnQwTG14bGJtZDBhQ0F0SURGZEtTQW1KaUFvYjNCYk1GMGdQVDA5SURZZ2ZId2diM0JiTUYwZ1BUMDlJRElwS1NCN0lGOGdQU0F3T3lCamIyNTBhVzUxWlRzZ2ZWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHZjRnN3WFNBOVBUMGdNeUFtSmlBb0lYUWdmSHdnS0c5d1d6RmRJRDRnZEZzd1hTQW1KaUJ2Y0ZzeFhTQThJSFJiTTEwcEtTa2dleUJmTG14aFltVnNJRDBnYjNCYk1WMDdJR0p5WldGck95QjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzl3V3pCZElEMDlQU0EySUNZbUlGOHViR0ZpWld3Z1BDQjBXekZkS1NCN0lGOHViR0ZpWld3Z1BTQjBXekZkT3lCMElEMGdiM0E3SUdKeVpXRnJPeUI5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hRZ0ppWWdYeTVzWVdKbGJDQThJSFJiTWwwcElIc2dYeTVzWVdKbGJDQTlJSFJiTWwwN0lGOHViM0J6TG5CMWMyZ29iM0FwT3lCaWNtVmhhenNnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMFd6SmRLU0JmTG05d2N5NXdiM0FvS1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JmTG5SeWVYTXVjRzl3S0NrN0lHTnZiblJwYm5WbE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdJQ0FnSUc5d0lEMGdZbTlrZVM1allXeHNLSFJvYVhOQmNtY3NJRjhwTzF4eVhHNGdJQ0FnSUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHNnYjNBZ1BTQmJOaXdnWlYwN0lIa2dQU0F3T3lCOUlHWnBibUZzYkhrZ2V5Qm1JRDBnZENBOUlEQTdJSDFjY2x4dUlDQWdJQ0FnSUNCcFppQW9iM0JiTUYwZ0ppQTFLU0IwYUhKdmR5QnZjRnN4WFRzZ2NtVjBkWEp1SUhzZ2RtRnNkV1U2SUc5d1d6QmRJRDhnYjNCYk1WMGdPaUIyYjJsa0lEQXNJR1J2Ym1VNklIUnlkV1VnZlR0Y2NseHVJQ0FnSUgxY2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElIWmhjaUJmWDJOeVpXRjBaVUpwYm1ScGJtY2dQU0JQWW1wbFkzUXVZM0psWVhSbElEOGdLR1oxYm1OMGFXOXVLRzhzSUcwc0lHc3NJR3N5S1NCN1hISmNiaUFnSUNCcFppQW9heklnUFQwOUlIVnVaR1ZtYVc1bFpDa2dheklnUFNCck8xeHlYRzRnSUNBZ2RtRnlJR1JsYzJNZ1BTQlBZbXBsWTNRdVoyVjBUM2R1VUhKdmNHVnlkSGxFWlhOamNtbHdkRzl5S0cwc0lHc3BPMXh5WEc0Z0lDQWdhV1lnS0NGa1pYTmpJSHg4SUNoY0ltZGxkRndpSUdsdUlHUmxjMk1nUHlBaGJTNWZYMlZ6VFc5a2RXeGxJRG9nWkdWell5NTNjbWwwWVdKc1pTQjhmQ0JrWlhOakxtTnZibVpwWjNWeVlXSnNaU2twSUh0Y2NseHVJQ0FnSUNBZ0lDQmtaWE5qSUQwZ2V5QmxiblZ0WlhKaFlteGxPaUIwY25WbExDQm5aWFE2SUdaMWJtTjBhVzl1S0NrZ2V5QnlaWFIxY200Z2JWdHJYVHNnZlNCOU8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUNBZ1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLRzhzSUdzeUxDQmtaWE5qS1R0Y2NseHVmU2tnT2lBb1puVnVZM1JwYjI0b2J5d2diU3dnYXl3Z2F6SXBJSHRjY2x4dUlDQWdJR2xtSUNock1pQTlQVDBnZFc1a1pXWnBibVZrS1NCck1pQTlJR3M3WEhKY2JpQWdJQ0J2VzJzeVhTQTlJRzFiYTEwN1hISmNibjBwTzF4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmWlhod2IzSjBVM1JoY2lodExDQnZLU0I3WEhKY2JpQWdJQ0JtYjNJZ0tIWmhjaUJ3SUdsdUlHMHBJR2xtSUNod0lDRTlQU0JjSW1SbFptRjFiSFJjSWlBbUppQWhUMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLRzhzSUhBcEtTQmZYMk55WldGMFpVSnBibVJwYm1jb2J5d2diU3dnY0NrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM1poYkhWbGN5aHZLU0I3WEhKY2JpQWdJQ0IyWVhJZ2N5QTlJSFI1Y0dWdlppQlRlVzFpYjJ3Z1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBbUppQlRlVzFpYjJ3dWFYUmxjbUYwYjNJc0lHMGdQU0J6SUNZbUlHOWJjMTBzSUdrZ1BTQXdPMXh5WEc0Z0lDQWdhV1lnS0cwcElISmxkSFZ5YmlCdExtTmhiR3dvYnlrN1hISmNiaUFnSUNCcFppQW9ieUFtSmlCMGVYQmxiMllnYnk1c1pXNW5kR2dnUFQwOUlGd2liblZ0WW1WeVhDSXBJSEpsZEhWeWJpQjdYSEpjYmlBZ0lDQWdJQ0FnYm1WNGREb2dablZ1WTNScGIyNGdLQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2J5QW1KaUJwSUQ0OUlHOHViR1Z1WjNSb0tTQnZJRDBnZG05cFpDQXdPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2V5QjJZV3gxWlRvZ2J5QW1KaUJ2VzJrcksxMHNJR1J2Ym1VNklDRnZJSDA3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZUdGNjbHh1SUNBZ0lIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9jeUEvSUZ3aVQySnFaV04wSUdseklHNXZkQ0JwZEdWeVlXSnNaUzVjSWlBNklGd2lVM2x0WW05c0xtbDBaWEpoZEc5eUlHbHpJRzV2ZENCa1pXWnBibVZrTGx3aUtUdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmY21WaFpDaHZMQ0J1S1NCN1hISmNiaUFnSUNCMllYSWdiU0E5SUhSNWNHVnZaaUJUZVcxaWIyd2dQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQW1KaUJ2VzFONWJXSnZiQzVwZEdWeVlYUnZjbDA3WEhKY2JpQWdJQ0JwWmlBb0lXMHBJSEpsZEhWeWJpQnZPMXh5WEc0Z0lDQWdkbUZ5SUdrZ1BTQnRMbU5oYkd3b2J5a3NJSElzSUdGeUlEMGdXMTBzSUdVN1hISmNiaUFnSUNCMGNua2dlMXh5WEc0Z0lDQWdJQ0FnSUhkb2FXeGxJQ2dvYmlBOVBUMGdkbTlwWkNBd0lIeDhJRzR0TFNBK0lEQXBJQ1ltSUNFb2NpQTlJR2t1Ym1WNGRDZ3BLUzVrYjI1bEtTQmhjaTV3ZFhOb0tISXVkbUZzZFdVcE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUNBZ1kyRjBZMmdnS0dWeWNtOXlLU0I3SUdVZ1BTQjdJR1Z5Y205eU9pQmxjbkp2Y2lCOU95QjlYSEpjYmlBZ0lDQm1hVzVoYkd4NUlIdGNjbHh1SUNBZ0lDQWdJQ0IwY25rZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jaUFtSmlBaGNpNWtiMjVsSUNZbUlDaHRJRDBnYVZ0Y0luSmxkSFZ5Ymx3aVhTa3BJRzB1WTJGc2JDaHBLVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdabWx1WVd4c2VTQjdJR2xtSUNobEtTQjBhSEp2ZHlCbExtVnljbTl5T3lCOVhISmNiaUFnSUNCOVhISmNiaUFnSUNCeVpYUjFjbTRnWVhJN1hISmNibjFjY2x4dVhISmNiaThxS2lCQVpHVndjbVZqWVhSbFpDQXFMMXh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5emNISmxZV1FvS1NCN1hISmNiaUFnSUNCbWIzSWdLSFpoY2lCaGNpQTlJRnRkTENCcElEMGdNRHNnYVNBOElHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnN0lHa3JLeWxjY2x4dUlDQWdJQ0FnSUNCaGNpQTlJR0Z5TG1OdmJtTmhkQ2hmWDNKbFlXUW9ZWEpuZFcxbGJuUnpXMmxkS1NrN1hISmNiaUFnSUNCeVpYUjFjbTRnWVhJN1hISmNibjFjY2x4dVhISmNiaThxS2lCQVpHVndjbVZqWVhSbFpDQXFMMXh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5emNISmxZV1JCY25KaGVYTW9LU0I3WEhKY2JpQWdJQ0JtYjNJZ0tIWmhjaUJ6SUQwZ01Dd2dhU0E5SURBc0lHbHNJRDBnWVhKbmRXMWxiblJ6TG14bGJtZDBhRHNnYVNBOElHbHNPeUJwS3lzcElITWdLejBnWVhKbmRXMWxiblJ6VzJsZExteGxibWQwYUR0Y2NseHVJQ0FnSUdadmNpQW9kbUZ5SUhJZ1BTQkJjbkpoZVNoektTd2dheUE5SURBc0lHa2dQU0F3T3lCcElEd2dhV3c3SUdrckt5bGNjbHh1SUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJoSUQwZ1lYSm5kVzFsYm5SelcybGRMQ0JxSUQwZ01Dd2dhbXdnUFNCaExteGxibWQwYURzZ2FpQThJR3BzT3lCcUt5c3NJR3NyS3lsY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnY2x0clhTQTlJR0ZiYWwwN1hISmNiaUFnSUNCeVpYUjFjbTRnY2p0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZjM0J5WldGa1FYSnlZWGtvZEc4c0lHWnliMjBzSUhCaFkyc3BJSHRjY2x4dUlDQWdJR2xtSUNod1lXTnJJSHg4SUdGeVozVnRaVzUwY3k1c1pXNW5kR2dnUFQwOUlESXBJR1p2Y2lBb2RtRnlJR2tnUFNBd0xDQnNJRDBnWm5KdmJTNXNaVzVuZEdnc0lHRnlPeUJwSUR3Z2JEc2dhU3NyS1NCN1hISmNiaUFnSUNBZ0lDQWdhV1lnS0dGeUlIeDhJQ0VvYVNCcGJpQm1jbTl0S1NrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JV0Z5S1NCaGNpQTlJRUZ5Y21GNUxuQnliM1J2ZEhsd1pTNXpiR2xqWlM1allXeHNLR1p5YjIwc0lEQXNJR2twTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JoY2x0cFhTQTlJR1p5YjIxYmFWMDdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJSFJ2TG1OdmJtTmhkQ2hoY2lCOGZDQkJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyeHBZMlV1WTJGc2JDaG1jbTl0S1NrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMkYzWVdsMEtIWXBJSHRjY2x4dUlDQWdJSEpsZEhWeWJpQjBhR2x6SUdsdWMzUmhibU5sYjJZZ1gxOWhkMkZwZENBL0lDaDBhR2x6TG5ZZ1BTQjJMQ0IwYUdsektTQTZJRzVsZHlCZlgyRjNZV2wwS0hZcE8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTloYzNsdVkwZGxibVZ5WVhSdmNpaDBhR2x6UVhKbkxDQmZZWEpuZFcxbGJuUnpMQ0JuWlc1bGNtRjBiM0lwSUh0Y2NseHVJQ0FnSUdsbUlDZ2hVM2x0WW05c0xtRnplVzVqU1hSbGNtRjBiM0lwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSlRlVzFpYjJ3dVlYTjVibU5KZEdWeVlYUnZjaUJwY3lCdWIzUWdaR1ZtYVc1bFpDNWNJaWs3WEhKY2JpQWdJQ0IyWVhJZ1p5QTlJR2RsYm1WeVlYUnZjaTVoY0hCc2VTaDBhR2x6UVhKbkxDQmZZWEpuZFcxbGJuUnpJSHg4SUZ0ZEtTd2dhU3dnY1NBOUlGdGRPMXh5WEc0Z0lDQWdjbVYwZFhKdUlHa2dQU0I3ZlN3Z2RtVnlZaWhjSW01bGVIUmNJaWtzSUhabGNtSW9YQ0owYUhKdmQxd2lLU3dnZG1WeVlpaGNJbkpsZEhWeWJsd2lLU3dnYVZ0VGVXMWliMnd1WVhONWJtTkpkR1Z5WVhSdmNsMGdQU0JtZFc1amRHbHZiaUFvS1NCN0lISmxkSFZ5YmlCMGFHbHpPeUI5TENCcE8xeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z2RtVnlZaWh1S1NCN0lHbG1JQ2huVzI1ZEtTQnBXMjVkSUQwZ1puVnVZM1JwYjI0Z0tIWXBJSHNnY21WMGRYSnVJRzVsZHlCUWNtOXRhWE5sS0daMWJtTjBhVzl1SUNoaExDQmlLU0I3SUhFdWNIVnphQ2hiYml3Z2Rpd2dZU3dnWWwwcElENGdNU0I4ZkNCeVpYTjFiV1VvYml3Z2RpazdJSDBwT3lCOU95QjlYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQnlaWE4xYldVb2Jpd2dkaWtnZXlCMGNua2dleUJ6ZEdWd0tHZGJibDBvZGlrcE95QjlJR05oZEdOb0lDaGxLU0I3SUhObGRIUnNaU2h4V3pCZFd6TmRMQ0JsS1RzZ2ZTQjlYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQnpkR1Z3S0hJcElIc2djaTUyWVd4MVpTQnBibk4wWVc1alpXOW1JRjlmWVhkaGFYUWdQeUJRY205dGFYTmxMbkpsYzI5c2RtVW9jaTUyWVd4MVpTNTJLUzUwYUdWdUtHWjFiR1pwYkd3c0lISmxhbVZqZENrZ09pQnpaWFIwYkdVb2NWc3dYVnN5WFN3Z2NpazdJSDFjY2x4dUlDQWdJR1oxYm1OMGFXOXVJR1oxYkdacGJHd29kbUZzZFdVcElIc2djbVZ6ZFcxbEtGd2libVY0ZEZ3aUxDQjJZV3gxWlNrN0lIMWNjbHh1SUNBZ0lHWjFibU4wYVc5dUlISmxhbVZqZENoMllXeDFaU2tnZXlCeVpYTjFiV1VvWENKMGFISnZkMXdpTENCMllXeDFaU2s3SUgxY2NseHVJQ0FnSUdaMWJtTjBhVzl1SUhObGRIUnNaU2htTENCMktTQjdJR2xtSUNobUtIWXBMQ0J4TG5Ob2FXWjBLQ2tzSUhFdWJHVnVaM1JvS1NCeVpYTjFiV1VvY1Zzd1hWc3dYU3dnY1Zzd1hWc3hYU2s3SUgxY2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZZWE41Ym1ORVpXeGxaMkYwYjNJb2J5a2dlMXh5WEc0Z0lDQWdkbUZ5SUdrc0lIQTdYSEpjYmlBZ0lDQnlaWFIxY200Z2FTQTlJSHQ5TENCMlpYSmlLRndpYm1WNGRGd2lLU3dnZG1WeVlpaGNJblJvY205M1hDSXNJR1oxYm1OMGFXOXVJQ2hsS1NCN0lIUm9jbTkzSUdVN0lIMHBMQ0IyWlhKaUtGd2ljbVYwZFhKdVhDSXBMQ0JwVzFONWJXSnZiQzVwZEdWeVlYUnZjbDBnUFNCbWRXNWpkR2x2YmlBb0tTQjdJSEpsZEhWeWJpQjBhR2x6T3lCOUxDQnBPMXh5WEc0Z0lDQWdablZ1WTNScGIyNGdkbVZ5WWlodUxDQm1LU0I3SUdsYmJsMGdQU0J2VzI1ZElEOGdablZ1WTNScGIyNGdLSFlwSUhzZ2NtVjBkWEp1SUNod0lEMGdJWEFwSUQ4Z2V5QjJZV3gxWlRvZ1gxOWhkMkZwZENodlcyNWRLSFlwS1N3Z1pHOXVaVG9nWm1Gc2MyVWdmU0E2SUdZZ1B5Qm1LSFlwSURvZ2Rqc2dmU0E2SUdZN0lIMWNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmWVhONWJtTldZV3gxWlhNb2J5a2dlMXh5WEc0Z0lDQWdhV1lnS0NGVGVXMWliMnd1WVhONWJtTkpkR1Z5WVhSdmNpa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWxONWJXSnZiQzVoYzNsdVkwbDBaWEpoZEc5eUlHbHpJRzV2ZENCa1pXWnBibVZrTGx3aUtUdGNjbHh1SUNBZ0lIWmhjaUJ0SUQwZ2IxdFRlVzFpYjJ3dVlYTjVibU5KZEdWeVlYUnZjbDBzSUdrN1hISmNiaUFnSUNCeVpYUjFjbTRnYlNBL0lHMHVZMkZzYkNodktTQTZJQ2h2SUQwZ2RIbHdaVzltSUY5ZmRtRnNkV1Z6SUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lnUHlCZlgzWmhiSFZsY3lodktTQTZJRzliVTNsdFltOXNMbWwwWlhKaGRHOXlYU2dwTENCcElEMGdlMzBzSUhabGNtSW9YQ0p1WlhoMFhDSXBMQ0IyWlhKaUtGd2lkR2h5YjNkY0lpa3NJSFpsY21Jb1hDSnlaWFIxY201Y0lpa3NJR2xiVTNsdFltOXNMbUZ6ZVc1alNYUmxjbUYwYjNKZElEMGdablZ1WTNScGIyNGdLQ2tnZXlCeVpYUjFjbTRnZEdocGN6c2dmU3dnYVNrN1hISmNiaUFnSUNCbWRXNWpkR2x2YmlCMlpYSmlLRzRwSUhzZ2FWdHVYU0E5SUc5YmJsMGdKaVlnWm5WdVkzUnBiMjRnS0hZcElIc2djbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLR1oxYm1OMGFXOXVJQ2h5WlhOdmJIWmxMQ0J5WldwbFkzUXBJSHNnZGlBOUlHOWJibDBvZGlrc0lITmxkSFJzWlNoeVpYTnZiSFpsTENCeVpXcGxZM1FzSUhZdVpHOXVaU3dnZGk1MllXeDFaU2s3SUgwcE95QjlPeUI5WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUJ6WlhSMGJHVW9jbVZ6YjJ4MlpTd2djbVZxWldOMExDQmtMQ0IyS1NCN0lGQnliMjFwYzJVdWNtVnpiMngyWlNoMktTNTBhR1Z1S0daMWJtTjBhVzl1S0hZcElIc2djbVZ6YjJ4MlpTaDdJSFpoYkhWbE9pQjJMQ0JrYjI1bE9pQmtJSDBwT3lCOUxDQnlaV3BsWTNRcE95QjlYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDIxaGEyVlVaVzF3YkdGMFpVOWlhbVZqZENoamIyOXJaV1FzSUhKaGR5a2dlMXh5WEc0Z0lDQWdhV1lnS0U5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTa2dleUJQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb1kyOXZhMlZrTENCY0luSmhkMXdpTENCN0lIWmhiSFZsT2lCeVlYY2dmU2s3SUgwZ1pXeHpaU0I3SUdOdmIydGxaQzV5WVhjZ1BTQnlZWGM3SUgxY2NseHVJQ0FnSUhKbGRIVnliaUJqYjI5clpXUTdYSEpjYm4wN1hISmNibHh5WEc1MllYSWdYMTl6WlhSTmIyUjFiR1ZFWldaaGRXeDBJRDBnVDJKcVpXTjBMbU55WldGMFpTQS9JQ2htZFc1amRHbHZiaWh2TENCMktTQjdYSEpjYmlBZ0lDQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvYnl3Z1hDSmtaV1poZFd4MFhDSXNJSHNnWlc1MWJXVnlZV0pzWlRvZ2RISjFaU3dnZG1Gc2RXVTZJSFlnZlNrN1hISmNibjBwSURvZ1puVnVZM1JwYjI0b2J5d2dkaWtnZTF4eVhHNGdJQ0FnYjF0Y0ltUmxabUYxYkhSY0lsMGdQU0IyTzF4eVhHNTlPMXh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZhVzF3YjNKMFUzUmhjaWh0YjJRcElIdGNjbHh1SUNBZ0lHbG1JQ2h0YjJRZ0ppWWdiVzlrTGw5ZlpYTk5iMlIxYkdVcElISmxkSFZ5YmlCdGIyUTdYSEpjYmlBZ0lDQjJZWElnY21WemRXeDBJRDBnZTMwN1hISmNiaUFnSUNCcFppQW9iVzlrSUNFOUlHNTFiR3dwSUdadmNpQW9kbUZ5SUdzZ2FXNGdiVzlrS1NCcFppQW9heUFoUFQwZ1hDSmtaV1poZFd4MFhDSWdKaVlnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzVvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0cxdlpDd2dheWtwSUY5ZlkzSmxZWFJsUW1sdVpHbHVaeWh5WlhOMWJIUXNJRzF2WkN3Z2F5azdYSEpjYmlBZ0lDQmZYM05sZEUxdlpIVnNaVVJsWm1GMWJIUW9jbVZ6ZFd4MExDQnRiMlFwTzF4eVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmYVcxd2IzSjBSR1ZtWVhWc2RDaHRiMlFwSUh0Y2NseHVJQ0FnSUhKbGRIVnliaUFvYlc5a0lDWW1JRzF2WkM1ZlgyVnpUVzlrZFd4bEtTQS9JRzF2WkNBNklIc2daR1ZtWVhWc2REb2diVzlrSUgwN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMk5zWVhOelVISnBkbUYwWlVacFpXeGtSMlYwS0hKbFkyVnBkbVZ5TENCemRHRjBaU3dnYTJsdVpDd2daaWtnZTF4eVhHNGdJQ0FnYVdZZ0tHdHBibVFnUFQwOUlGd2lZVndpSUNZbUlDRm1LU0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0Z3aVVISnBkbUYwWlNCaFkyTmxjM052Y2lCM1lYTWdaR1ZtYVc1bFpDQjNhWFJvYjNWMElHRWdaMlYwZEdWeVhDSXBPMXh5WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ6ZEdGMFpTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlEOGdjbVZqWldsMlpYSWdJVDA5SUhOMFlYUmxJSHg4SUNGbUlEb2dJWE4wWVhSbExtaGhjeWh5WldObGFYWmxjaWtwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSkRZVzV1YjNRZ2NtVmhaQ0J3Y21sMllYUmxJRzFsYldKbGNpQm1jbTl0SUdGdUlHOWlhbVZqZENCM2FHOXpaU0JqYkdGemN5QmthV1FnYm05MElHUmxZMnhoY21VZ2FYUmNJaWs3WEhKY2JpQWdJQ0J5WlhSMWNtNGdhMmx1WkNBOVBUMGdYQ0p0WENJZ1B5Qm1JRG9nYTJsdVpDQTlQVDBnWENKaFhDSWdQeUJtTG1OaGJHd29jbVZqWldsMlpYSXBJRG9nWmlBL0lHWXVkbUZzZFdVZ09pQnpkR0YwWlM1blpYUW9jbVZqWldsMlpYSXBPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5amJHRnpjMUJ5YVhaaGRHVkdhV1ZzWkZObGRDaHlaV05sYVhabGNpd2djM1JoZEdVc0lIWmhiSFZsTENCcmFXNWtMQ0JtS1NCN1hISmNiaUFnSUNCcFppQW9hMmx1WkNBOVBUMGdYQ0p0WENJcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pRY21sMllYUmxJRzFsZEdodlpDQnBjeUJ1YjNRZ2QzSnBkR0ZpYkdWY0lpazdYSEpjYmlBZ0lDQnBaaUFvYTJsdVpDQTlQVDBnWENKaFhDSWdKaVlnSVdZcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pRY21sMllYUmxJR0ZqWTJWemMyOXlJSGRoY3lCa1pXWnBibVZrSUhkcGRHaHZkWFFnWVNCelpYUjBaWEpjSWlrN1hISmNiaUFnSUNCcFppQW9kSGx3Wlc5bUlITjBZWFJsSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lnUHlCeVpXTmxhWFpsY2lBaFBUMGdjM1JoZEdVZ2ZId2dJV1lnT2lBaGMzUmhkR1V1YUdGektISmxZMlZwZG1WeUtTa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWtOaGJtNXZkQ0IzY21sMFpTQndjbWwyWVhSbElHMWxiV0psY2lCMGJ5QmhiaUJ2WW1wbFkzUWdkMmh2YzJVZ1kyeGhjM01nWkdsa0lHNXZkQ0JrWldOc1lYSmxJR2wwWENJcE8xeHlYRzRnSUNBZ2NtVjBkWEp1SUNocmFXNWtJRDA5UFNCY0ltRmNJaUEvSUdZdVkyRnNiQ2h5WldObGFYWmxjaXdnZG1Gc2RXVXBJRG9nWmlBL0lHWXVkbUZzZFdVZ1BTQjJZV3gxWlNBNklITjBZWFJsTG5ObGRDaHlaV05sYVhabGNpd2dkbUZzZFdVcEtTd2dkbUZzZFdVN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMk5zWVhOelVISnBkbUYwWlVacFpXeGtTVzRvYzNSaGRHVXNJSEpsWTJWcGRtVnlLU0I3WEhKY2JpQWdJQ0JwWmlBb2NtVmpaV2wyWlhJZ1BUMDlJRzUxYkd3Z2ZId2dLSFI1Y0dWdlppQnlaV05sYVhabGNpQWhQVDBnWENKdlltcGxZM1JjSWlBbUppQjBlWEJsYjJZZ2NtVmpaV2wyWlhJZ0lUMDlJRndpWm5WdVkzUnBiMjVjSWlrcElIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pEWVc1dWIzUWdkWE5sSUNkcGJpY2diM0JsY21GMGIzSWdiMjRnYm05dUxXOWlhbVZqZEZ3aUtUdGNjbHh1SUNBZ0lISmxkSFZ5YmlCMGVYQmxiMllnYzNSaGRHVWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQS9JSEpsWTJWcGRtVnlJRDA5UFNCemRHRjBaU0E2SUhOMFlYUmxMbWhoY3loeVpXTmxhWFpsY2lrN1hISmNibjFjY2x4dUlpd2lhVzF3YjNKMElIUjVjR1VnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVjYmk4cUtseHVJQ29nVkhKaGRtVnljMlVnWVc1alpYTjBiM0p6SUc5bUlHZHBkbVZ1SUc5aWFtVmpkQ0JoYm1RZ1kyRnNiQ0JuYVhabGJpQmpZV3hzWW1GamF5Qm1jbTl0SUhKdmIzUWdjMmxrWlM1Y2JpQXFJRWwwSUhkcGJHd2dhVzVqYkhWa1pTQjBhR1VnWjJsMlpXNGdiMkpxWldOMElHbDBjMlZzWmk1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnYjJKcVpXTjBJRlJvWlNCdlltcGxZM1FnZVc5MUlIZGhiblFnZEc4Z2RISmhkbVZ5YzJWY2JpQXFJRUJ3WVhKaGJTQmpZV3hzWW1GamF5QlVhR1VnWTJGc2JDQmlZV05ySUdaMWJtTjBhVzl1SUhSb1lYUWdkMmxzYkNCaVpTQmpZV3hzWldRZ1ptOXlJR1ZoWTJnZ1lXNWpaWE4wYjNKelhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIwY21GMlpYSnpaVUZ1WTJWemRHOXljMFp5YjIxU2IyOTBLRzlpYW1WamREb2dWRWhTUlVVdVQySnFaV04wTTBRc0lHTmhiR3hpWVdOck9pQW9iMkpxWldOME9pQlVTRkpGUlM1UFltcGxZM1F6UkNrZ1BUNGdkbTlwWkNrNklIWnZhV1FnZTF4dUlDQmpiMjV6ZENCaGJtTmxjM1J2Y25NNklGUklVa1ZGTGs5aWFtVmpkRE5FVzEwZ1BTQmJiMkpxWldOMFhUdGNibHh1SUNCc1pYUWdhR1ZoWkRvZ1ZFaFNSVVV1VDJKcVpXTjBNMFFnZkNCdWRXeHNJRDBnYjJKcVpXTjBMbkJoY21WdWREdGNiaUFnZDJocGJHVWdLR2hsWVdRZ0lUMDlJRzUxYkd3cElIdGNiaUFnSUNCaGJtTmxjM1J2Y25NdWRXNXphR2xtZENob1pXRmtLVHRjYmlBZ0lDQm9aV0ZrSUQwZ2FHVmhaQzV3WVhKbGJuUTdYRzRnSUgxY2JseHVJQ0JoYm1ObGMzUnZjbk11Wm05eVJXRmphQ2dvWVc1alpYTjBiM0lwSUQwK0lIdGNiaUFnSUNCallXeHNZbUZqYXloaGJtTmxjM1J2Y2lrN1hHNGdJSDBwTzF4dWZWeHVJaXdpYVcxd2IzSjBJSFI1Y0dVZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1cGJYQnZjblFnZEhsd1pTQjdJRlpTVFU1dlpHVkRiMjV6ZEhKaGFXNTBJSDBnWm5KdmJTQW5MaTlXVWsxT2IyUmxRMjl1YzNSeVlXbHVkQ2M3WEc1cGJYQnZjblFnZXlCMGNtRjJaWEp6WlVGdVkyVnpkRzl5YzBaeWIyMVNiMjkwSUgwZ1puSnZiU0FuTGk5MWRHbHNjeTkwY21GMlpYSnpaVUZ1WTJWemRHOXljMFp5YjIxU2IyOTBKenRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRlpTVFU1dlpHVkRiMjV6ZEhKaGFXNTBUV0Z1WVdkbGNpQjdYRzRnSUhCeWFYWmhkR1VnWDJOdmJuTjBjbUZwYm5SeklEMGdibVYzSUZObGREeFdVazFPYjJSbFEyOXVjM1J5WVdsdWRENG9LVHRjYmlBZ2NIVmliR2xqSUdkbGRDQmpiMjV6ZEhKaGFXNTBjeWdwT2lCVFpYUThWbEpOVG05a1pVTnZibk4wY21GcGJuUStJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmWTI5dWMzUnlZV2x1ZEhNN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElGOXZZbXBsWTNSRGIyNXpkSEpoYVc1MGMwMWhjQ0E5SUc1bGR5Qk5ZWEE4VkVoU1JVVXVUMkpxWldOME0wUXNJRk5sZER4V1VrMU9iMlJsUTI5dWMzUnlZV2x1ZEQ0K0tDazdYRzVjYmlBZ2NIVmliR2xqSUdGa1pFTnZibk4wY21GcGJuUW9ZMjl1YzNSeVlXbHVkRG9nVmxKTlRtOWtaVU52Ym5OMGNtRnBiblFwT2lCMmIybGtJSHRjYmlBZ0lDQjBhR2x6TGw5amIyNXpkSEpoYVc1MGN5NWhaR1FvWTI5dWMzUnlZV2x1ZENrN1hHNWNiaUFnSUNCc1pYUWdiMkpxWldOMFUyVjBJRDBnZEdocGN5NWZiMkpxWldOMFEyOXVjM1J5WVdsdWRITk5ZWEF1WjJWMEtHTnZibk4wY21GcGJuUXVaR1Z6ZEdsdVlYUnBiMjRwTzF4dUlDQWdJR2xtSUNodlltcGxZM1JUWlhRZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2IySnFaV04wVTJWMElEMGdibVYzSUZObGREeFdVazFPYjJSbFEyOXVjM1J5WVdsdWRENG9LVHRjYmlBZ0lDQWdJSFJvYVhNdVgyOWlhbVZqZEVOdmJuTjBjbUZwYm5SelRXRndMbk5sZENoamIyNXpkSEpoYVc1MExtUmxjM1JwYm1GMGFXOXVMQ0J2WW1wbFkzUlRaWFFwTzF4dUlDQWdJSDFjYmlBZ0lDQnZZbXBsWTNSVFpYUXVZV1JrS0dOdmJuTjBjbUZwYm5RcE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHUmxiR1YwWlVOdmJuTjBjbUZwYm5Rb1kyOXVjM1J5WVdsdWREb2dWbEpOVG05a1pVTnZibk4wY21GcGJuUXBPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbDlqYjI1emRISmhhVzUwY3k1a1pXeGxkR1VvWTI5dWMzUnlZV2x1ZENrN1hHNWNiaUFnSUNCamIyNXpkQ0J2WW1wbFkzUlRaWFFnUFNCMGFHbHpMbDl2WW1wbFkzUkRiMjV6ZEhKaGFXNTBjMDFoY0M1blpYUW9ZMjl1YzNSeVlXbHVkQzVrWlhOMGFXNWhkR2x2YmlraE8xeHVJQ0FnSUc5aWFtVmpkRk5sZEM1a1pXeGxkR1VvWTI5dWMzUnlZV2x1ZENrN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2MyVjBTVzVwZEZOMFlYUmxLQ2s2SUhadmFXUWdlMXh1SUNBZ0lHTnZibk4wSUdOdmJuTjBjbUZwYm5SelZISnBaV1FnUFNCdVpYY2dVMlYwUEZaU1RVNXZaR1ZEYjI1emRISmhhVzUwUGlncE8xeHVJQ0FnSUdOdmJuTjBJR052Ym5OMGNtRnBiblJ6Ukc5dVpTQTlJRzVsZHlCVFpYUThWbEpOVG05a1pVTnZibk4wY21GcGJuUStLQ2s3WEc1Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUdOdmJuTjBjbUZwYm5RZ2IyWWdkR2hwY3k1ZlkyOXVjM1J5WVdsdWRITXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVgzQnliMk5sYzNORGIyNXpkSEpoYVc1MEtHTnZibk4wY21GcGJuUXNJR052Ym5OMGNtRnBiblJ6VkhKcFpXUXNJR052Ym5OMGNtRnBiblJ6Ukc5dVpTd2dLR052Ym5OMGNtRnBiblFwSUQwK0lHTnZibk4wY21GcGJuUXVjMlYwU1c1cGRGTjBZWFJsS0NrcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCMWNHUmhkR1VvS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdZMjl1YzNRZ1kyOXVjM1J5WVdsdWRITlVjbWxsWkNBOUlHNWxkeUJUWlhROFZsSk5UbTlrWlVOdmJuTjBjbUZwYm5RK0tDazdYRzRnSUNBZ1kyOXVjM1FnWTI5dWMzUnlZV2x1ZEhORWIyNWxJRDBnYm1WM0lGTmxkRHhXVWsxT2IyUmxRMjl1YzNSeVlXbHVkRDRvS1R0Y2JseHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ1kyOXVjM1J5WVdsdWRDQnZaaUIwYUdsekxsOWpiMjV6ZEhKaGFXNTBjeWtnZTF4dUlDQWdJQ0FnZEdocGN5NWZjSEp2WTJWemMwTnZibk4wY21GcGJuUW9ZMjl1YzNSeVlXbHVkQ3dnWTI5dWMzUnlZV2x1ZEhOVWNtbGxaQ3dnWTI5dWMzUnlZV2x1ZEhORWIyNWxMQ0FvWTI5dWMzUnlZV2x1ZENrZ1BUNGdZMjl1YzNSeVlXbHVkQzUxY0dSaGRHVW9LU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWd1pHRjBaU0JoSUdOdmJuTjBjbUZwYm5RdVhHNGdJQ0FxSUVsbUlIUm9aWEpsSUdGeVpTQnZkR2hsY2lCamIyNXpkSEpoYVc1MGN5QjBhR0YwSUdGeVpTQmtaWEJsYm1SaGJuUXNJR2wwSUhkcGJHd2dkSEo1SUhSdklIVndaR0YwWlNCMGFHVnRJSEpsWTNWeWMybDJaV3g1TGx4dUlDQWdLaUJKZENCdGFXZG9kQ0IwYUhKdmR5QmhiaUJsY25KdmNpQnBaaUIwYUdWeVpTQmhjbVVnWTJseVkzVnNZWElnWkdWd1pXNWtaVzVqYVdWekxseHVJQ0FnS2x4dUlDQWdLaUJKYm5SbGJtUmxaQ0IwYnlCaVpTQjFjMlZrSUdsdUlIdEFiR2x1YXlCMWNHUmhkR1Y5SUdGdVpDQjdRR3hwYm1zZ1gzQnliMk5sYzNORGIyNXpkSEpoYVc1MGZTQnBkSE5sYkdZZ2NtVmpkWEp6YVhabGJIa3VYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0JqYjI1emRISmhhVzUwSUVFZ1kyOXVjM1J5WVdsdWRDQjViM1VnZDJGdWRDQjBieUIxY0dSaGRHVmNiaUFnSUNvZ1FIQmhjbUZ0SUdOdmJuTjBjbUZwYm5SelZISnBaV1FnVTJWMElHOW1JR052Ym5OMGNtRnBiblJ6SUhSb1lYUWdZWEpsSUdGc2NtVmhaSGtnZEhKcFpXUWdkRzhnWW1VZ2RYQmtZWFJsWkZ4dUlDQWdLaUJBY0dGeVlXMGdZMjl1YzNSeVlXbHVkSE5FYjI1bElGTmxkQ0J2WmlCamIyNXpkSEpoYVc1MGN5QjBhR0YwSUdGeVpTQmhiSEpsWVdSNUlIVndJSFJ2SUdSaGRHVmNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdYM0J5YjJObGMzTkRiMjV6ZEhKaGFXNTBLRnh1SUNBZ0lHTnZibk4wY21GcGJuUTZJRlpTVFU1dlpHVkRiMjV6ZEhKaGFXNTBMRnh1SUNBZ0lHTnZibk4wY21GcGJuUnpWSEpwWldRNklGTmxkRHhXVWsxT2IyUmxRMjl1YzNSeVlXbHVkRDRzWEc0Z0lDQWdZMjl1YzNSeVlXbHVkSE5FYjI1bE9pQlRaWFE4VmxKTlRtOWtaVU52Ym5OMGNtRnBiblErTEZ4dUlDQWdJR05oYkd4aVlXTnJPaUFvWTI5dWMzUnlZV2x1ZERvZ1ZsSk5UbTlrWlVOdmJuTjBjbUZwYm5RcElEMCtJSFp2YVdRc1hHNGdJQ2s2SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2hqYjI1emRISmhhVzUwYzBSdmJtVXVhR0Z6S0dOdmJuTjBjbUZwYm5RcEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHTnZibk4wY21GcGJuUnpWSEpwWldRdWFHRnpLR052Ym5OMGNtRnBiblFwS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjFaU1RVNXZaR1ZEYjI1emRISmhhVzUwVFdGdVlXZGxjam9nUTJseVkzVnNZWElnWkdWd1pXNWtaVzVqZVNCa1pYUmxZM1JsWkNCM2FHbHNaU0IxY0dSaGRHbHVaeUJqYjI1emRISmhhVzUwY3ljcE8xeHVJQ0FnSUgxY2JpQWdJQ0JqYjI1emRISmhhVzUwYzFSeWFXVmtMbUZrWkNoamIyNXpkSEpoYVc1MEtUdGNibHh1SUNBZ0lHTnZibk4wSUdSbGNFOWlhbVZqZEhNZ1BTQmpiMjV6ZEhKaGFXNTBMbVJsY0dWdVpHVnVZMmxsY3p0Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUdSbGNFOWlhbVZqZENCdlppQmtaWEJQWW1wbFkzUnpLU0I3WEc0Z0lDQWdJQ0IwY21GMlpYSnpaVUZ1WTJWemRHOXljMFp5YjIxU2IyOTBLR1JsY0U5aWFtVmpkQ3dnS0dSbGNFOWlhbVZqZEVGdVkyVnpkRzl5S1NBOVBpQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHOWlhbVZqZEZObGRDQTlJSFJvYVhNdVgyOWlhbVZqZEVOdmJuTjBjbUZwYm5SelRXRndMbWRsZENoa1pYQlBZbXBsWTNSQmJtTmxjM1J2Y2lrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h2WW1wbFkzUlRaWFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJR1JsY0VOdmJuTjBjbUZwYm5RZ2IyWWdiMkpxWldOMFUyVjBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TGw5d2NtOWpaWE56UTI5dWMzUnlZV2x1ZENoa1pYQkRiMjV6ZEhKaGFXNTBMQ0JqYjI1emRISmhhVzUwYzFSeWFXVmtMQ0JqYjI1emRISmhhVzUwYzBSdmJtVXNJR05oYkd4aVlXTnJLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTmhiR3hpWVdOcktHTnZibk4wY21GcGJuUXBPMXh1WEc0Z0lDQWdZMjl1YzNSeVlXbHVkSE5FYjI1bExtRmtaQ2hqYjI1emRISmhhVzUwS1R0Y2JpQWdmVnh1ZlZ4dUlpd2lhVzF3YjNKMElDb2dZWE1nVkVoU1JVVWdabkp2YlNBbmRHaHlaV1VuTzF4dWFXMXdiM0owSUhzZ2NYVmhkRWx1ZG1WeWRFTnZiWEJoZENCOUlHWnliMjBnSnk0dmRYUnBiSE12Y1hWaGRFbHVkbVZ5ZEVOdmJYQmhkQ2M3WEc1cGJYQnZjblFnZXlCV1VrMU9iMlJsUTI5dWMzUnlZV2x1ZENCOUlHWnliMjBnSnk0dlZsSk5UbTlrWlVOdmJuTjBjbUZwYm5Rbk8xeHVYRzVqYjI1emRDQmZjWFZoZEVFZ1BTQnVaWGNnVkVoU1JVVXVVWFZoZEdWeWJtbHZiaWdwTzF4dVkyOXVjM1FnWDNGMVlYUkNJRDBnYm1WM0lGUklVa1ZGTGxGMVlYUmxjbTVwYjI0b0tUdGNibHh1THlvcVhHNGdLaUJCSUdOdmJuTjBjbUZwYm5RZ2RHaGhkQ0IwY21GdWMyWmxjbk1nWVNCeWIzUmhkR2x2YmlCaGNtOTFibVFnYjI1bElHRjRhWE1nYjJZZ1lTQnpiM1Z5WTJVdVhHNGdLbHh1SUNvZ1UyVmxPaUJvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2ZG5KdExXTXZkbkp0TFhOd1pXTnBabWxqWVhScGIyNHZkSEpsWlM5dFlYTjBaWEl2YzNCbFkybG1hV05oZEdsdmJpOVdVazFEWDI1dlpHVmZZMjl1YzNSeVlXbHVkQzB4TGpCZlltVjBZU055YjJ4c0xXTnZibk4wY21GcGJuUmNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRlpTVFZKdmRHRjBhVzl1UTI5dWMzUnlZV2x1ZENCbGVIUmxibVJ6SUZaU1RVNXZaR1ZEYjI1emRISmhhVzUwSUh0Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlNCeVpYTjBJSEYxWVhSbGNtNXBiMjRnYjJZZ2RHaGxJSHRBYkdsdWF5QmtaWE4wYVc1aGRHbHZibjB1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUY5a2MzUlNaWE4wVVhWaGREb2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJqdGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJR2x1ZG1WeWMyVWdiMllnZEdobElISmxjM1FnY1hWaGRHVnlibWx2YmlCdlppQjBhR1VnZTBCc2FXNXJJSE52ZFhKalpYMHVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjlwYm5aVGNtTlNaWE4wVVhWaGREb2dWRWhTUlVVdVVYVmhkR1Z5Ym1sdmJqdGNibHh1SUNCd2RXSnNhV01nWjJWMElHUmxjR1Z1WkdWdVkybGxjeWdwT2lCVFpYUThWRWhTUlVVdVQySnFaV04wTTBROFZFaFNSVVV1UlhabGJuUStQaUI3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJUWlhRb1czUm9hWE11YzI5MWNtTmxYU2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb1pHVnpkR2x1WVhScGIyNDZJRlJJVWtWRkxrOWlhbVZqZERORUxDQnpiM1Z5WTJVNklGUklVa1ZGTGs5aWFtVmpkRE5FS1NCN1hHNGdJQ0FnYzNWd1pYSW9aR1Z6ZEdsdVlYUnBiMjRzSUhOdmRYSmpaU2s3WEc1Y2JpQWdJQ0IwYUdsekxsOWtjM1JTWlhOMFVYVmhkQ0E5SUc1bGR5QlVTRkpGUlM1UmRXRjBaWEp1YVc5dUtDazdYRzRnSUNBZ2RHaHBjeTVmYVc1MlUzSmpVbVZ6ZEZGMVlYUWdQU0J1WlhjZ1ZFaFNSVVV1VVhWaGRHVnlibWx2YmlncE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklITmxkRWx1YVhSVGRHRjBaU2dwT2lCMmIybGtJSHRjYmlBZ0lDQjBhR2x6TGw5a2MzUlNaWE4wVVhWaGRDNWpiM0I1S0hSb2FYTXVaR1Z6ZEdsdVlYUnBiMjR1Y1hWaGRHVnlibWx2YmlrN1hHNGdJQ0FnY1hWaGRFbHVkbVZ5ZEVOdmJYQmhkQ2gwYUdsekxsOXBiblpUY21OU1pYTjBVWFZoZEM1amIzQjVLSFJvYVhNdWMyOTFjbU5sTG5GMVlYUmxjbTVwYjI0cEtUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QjFjR1JoZEdVb0tUb2dkbTlwWkNCN1hHNGdJQ0FnTHk4Z1kyRnNZM1ZzWVhSbElIUm9aU0JrWld4MFlTQnliM1JoZEdsdmJpQm1jbTl0SUhSb1pTQnlaWE4wSUdGaWIzVjBJSFJvWlNCemIzVnlZMlZjYmlBZ0lDQmpiMjV6ZENCemNtTkVaV3gwWVZGMVlYUWdQU0JmY1hWaGRFRXVZMjl3ZVNoMGFHbHpMbDlwYm5aVGNtTlNaWE4wVVhWaGRDa3ViWFZzZEdsd2JIa29kR2hwY3k1emIzVnlZMlV1Y1hWaGRHVnlibWx2YmlrN1hHNWNiaUFnSUNBdkx5QnRkV3gwYVhCc2VTQjBhR1VnWkdWc2RHRWdkRzhnZEdobElISmxjM1FnYjJZZ2RHaGxJR1JsYzNScGJtRjBhVzl1WEc0Z0lDQWdZMjl1YzNRZ2RHRnlaMlYwVVhWaGRDQTlJRjl4ZFdGMFFpNWpiM0I1S0hSb2FYTXVYMlJ6ZEZKbGMzUlJkV0YwS1M1dGRXeDBhWEJzZVNoemNtTkVaV3gwWVZGMVlYUXBPMXh1WEc0Z0lDQWdMeThnWW14bGJtUWdkMmwwYUNCMGFHVWdjbVZ6ZENCeGRXRjBaWEp1YVc5dUlIVnphVzVuSUhkbGFXZG9kRnh1SUNBZ0lIUm9hWE11WkdWemRHbHVZWFJwYjI0dWNYVmhkR1Z5Ym1sdmJpNWpiM0I1S0hSb2FYTXVYMlJ6ZEZKbGMzUlJkV0YwS1M1emJHVnljQ2gwWVhKblpYUlJkV0YwTENCMGFHbHpMbmRsYVdkb2RDazdYRzRnSUgxY2JuMWNiaUlzSW1sdGNHOXlkQ0FxSUdGeklGUklVa1ZGSUdaeWIyMGdKM1JvY21WbEp6dGNibWx0Y0c5eWRDQjdJSEYxWVhSSmJuWmxjblJEYjIxd1lYUWdmU0JtY205dElDY3VMM1YwYVd4ekwzRjFZWFJKYm5abGNuUkRiMjF3WVhRbk8xeHVhVzF3YjNKMElIc2dWbEpOVG05a1pVTnZibk4wY21GcGJuUWdmU0JtY205dElDY3VMMVpTVFU1dlpHVkRiMjV6ZEhKaGFXNTBKenRjYmx4dVkyOXVjM1FnWDNZelFTQTlJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLQ2s3WEc1amIyNXpkQ0JmY1hWaGRFRWdQU0J1WlhjZ1ZFaFNSVVV1VVhWaGRHVnlibWx2YmlncE8xeHVZMjl1YzNRZ1gzRjFZWFJDSUQwZ2JtVjNJRlJJVWtWRkxsRjFZWFJsY201cGIyNG9LVHRjYmx4dUx5b3FYRzRnS2lCQklHTnZibk4wY21GcGJuUWdkR2hoZENCMGNtRnVjMlpsY25NZ1lTQnliM1JoZEdsdmJpQmhjbTkxYm1RZ2IyNWxJR0Y0YVhNZ2IyWWdZU0J6YjNWeVkyVXVYRzRnS2x4dUlDb2dVMlZsT2lCb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdmRuSnRMV012ZG5KdExYTndaV05wWm1sallYUnBiMjR2ZEhKbFpTOXRZWE4wWlhJdmMzQmxZMmxtYVdOaGRHbHZiaTlXVWsxRFgyNXZaR1ZmWTI5dWMzUnlZV2x1ZEMweExqQmZZbVYwWVNOeWIyeHNMV052Ym5OMGNtRnBiblJjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUZaU1RWSnZiR3hEYjI1emRISmhhVzUwSUdWNGRHVnVaSE1nVmxKTlRtOWtaVU52Ym5OMGNtRnBiblFnZTF4dUlDQXZLaXBjYmlBZ0lDb2dWR2hsSUhKdmJHd2dZWGhwY3lCdlppQjBhR1VnWTI5dWMzUnlZV2x1ZEM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCblpYUWdjbTlzYkVGNGFYTW9LVG9nSjFnbklId2dKMWtuSUh3Z0oxb25JSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmY205c2JFRjRhWE03WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJSEp2Ykd3Z1lYaHBjeUJ2WmlCMGFHVWdZMjl1YzNSeVlXbHVkQzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6WlhRZ2NtOXNiRUY0YVhNb2NtOXNiRUY0YVhNNklDZFlKeUI4SUNkWkp5QjhJQ2RhSnlrZ2UxeHVJQ0FnSUhSb2FYTXVYM0p2Ykd4QmVHbHpJRDBnY205c2JFRjRhWE03WEc0Z0lDQWdkR2hwY3k1ZmRqTlNiMnhzUVhocGN5NXpaWFFvY205c2JFRjRhWE1nUFQwOUlDZFlKeUEvSURFdU1DQTZJREF1TUN3Z2NtOXNiRUY0YVhNZ1BUMDlJQ2RaSnlBL0lERXVNQ0E2SURBdU1Dd2djbTlzYkVGNGFYTWdQVDA5SUNkYUp5QS9JREV1TUNBNklEQXVNQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJSEp2Ykd3Z1lYaHBjeUJ2WmlCMGFHVWdZMjl1YzNSeVlXbHVkQzVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWDNKdmJHeEJlR2x6T2lBbldDY2dmQ0FuV1NjZ2ZDQW5XaWM3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlNCN1FHeHBibXNnWDNKdmJHeEJlR2x6ZlNCaWRYUWdhVzRnWVc0Z1lXTjBkV0ZzSUZabFkzUnZjak1nWm05eWJTNWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdYM1l6VW05c2JFRjRhWE02SUZSSVVrVkZMbFpsWTNSdmNqTTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aU0J5WlhOMElIRjFZWFJsY201cGIyNGdiMllnZEdobElIdEFiR2x1YXlCa1pYTjBhVzVoZEdsdmJuMHVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjlrYzNSU1pYTjBVWFZoZERvZ1ZFaFNSVVV1VVhWaGRHVnlibWx2Ymp0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdobElHbHVkbVZ5YzJVZ2IyWWdkR2hsSUhKbGMzUWdjWFZoZEdWeWJtbHZiaUJ2WmlCMGFHVWdlMEJzYVc1cklHUmxjM1JwYm1GMGFXOXVmUzVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWDJsdWRrUnpkRkpsYzNSUmRXRjBPaUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQmdjM0pqVW1WemRGRjFZWFF1YVc1MlpYSjBLQ2tnS2lCa2MzUlNaWE4wVVhWaGRHQXVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRjlwYm5aVGNtTlNaWE4wVVhWaGRFMTFiRVJ6ZEZKbGMzUlJkV0YwT2lCVVNGSkZSUzVSZFdGMFpYSnVhVzl1TzF4dVhHNGdJSEIxWW14cFl5Qm5aWFFnWkdWd1pXNWtaVzVqYVdWektDazZJRk5sZER4VVNGSkZSUzVQWW1wbFkzUXpSRHhVU0ZKRlJTNUZkbVZ1ZEQ0K0lIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGTmxkQ2hiZEdocGN5NXpiM1Z5WTJWZEtUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWhrWlhOMGFXNWhkR2x2YmpvZ1ZFaFNSVVV1VDJKcVpXTjBNMFFzSUhOdmRYSmpaVG9nVkVoU1JVVXVUMkpxWldOME0wUXBJSHRjYmlBZ0lDQnpkWEJsY2loa1pYTjBhVzVoZEdsdmJpd2djMjkxY21ObEtUdGNibHh1SUNBZ0lIUm9hWE11WDNKdmJHeEJlR2x6SUQwZ0oxZ25PMXh1SUNBZ0lIUm9hWE11WDNZelVtOXNiRUY0YVhNZ1BTQnVaWGNnVkVoU1JVVXVWbVZqZEc5eU15Z3hMQ0F3TENBd0tUdGNibHh1SUNBZ0lIUm9hWE11WDJSemRGSmxjM1JSZFdGMElEMGdibVYzSUZSSVVrVkZMbEYxWVhSbGNtNXBiMjRvS1R0Y2JpQWdJQ0IwYUdsekxsOXBiblpFYzNSU1pYTjBVWFZoZENBOUlHNWxkeUJVU0ZKRlJTNVJkV0YwWlhKdWFXOXVLQ2s3WEc0Z0lDQWdkR2hwY3k1ZmFXNTJVM0pqVW1WemRGRjFZWFJOZFd4RWMzUlNaWE4wVVhWaGRDQTlJRzVsZHlCVVNGSkZSUzVSZFdGMFpYSnVhVzl1S0NrN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2MyVjBTVzVwZEZOMFlYUmxLQ2s2SUhadmFXUWdlMXh1SUNBZ0lIUm9hWE11WDJSemRGSmxjM1JSZFdGMExtTnZjSGtvZEdocGN5NWtaWE4wYVc1aGRHbHZiaTV4ZFdGMFpYSnVhVzl1S1R0Y2JpQWdJQ0J4ZFdGMFNXNTJaWEowUTI5dGNHRjBLSFJvYVhNdVgybHVka1J6ZEZKbGMzUlJkV0YwTG1OdmNIa29kR2hwY3k1ZlpITjBVbVZ6ZEZGMVlYUXBLVHRjYmlBZ0lDQnhkV0YwU1c1MlpYSjBRMjl0Y0dGMEtIUm9hWE11WDJsdWRsTnlZMUpsYzNSUmRXRjBUWFZzUkhOMFVtVnpkRkYxWVhRdVkyOXdlU2gwYUdsekxuTnZkWEpqWlM1eGRXRjBaWEp1YVc5dUtTa3ViWFZzZEdsd2JIa29kR2hwY3k1ZlpITjBVbVZ6ZEZGMVlYUXBPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJSFZ3WkdGMFpTZ3BPaUIyYjJsa0lIdGNiaUFnSUNBdkx5QmpZV3hqZFd4aGRHVWdkR2hsSUdSbGJIUmhJSEp2ZEdGMGFXOXVJR1p5YjIwZ2RHaGxJSEpsYzNRZ1lXSnZkWFFnZEdobElITnZkWEpqWlN3Z2RHaGxiaUJqYjI1MlpYSjBJSFJ2SUhSb1pTQmtaWE4wYVc1aGRHbHZiaUJzYjJOaGJDQmpiMjl5WkZ4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUZkb1lYUWdkR2hsSUhGMVlYUkVaV3gwWVNCcGN5QnBiblJsYm1SbFpDQjBieUJpWlRwY2JpQWdJQ0FnS2x4dUlDQWdJQ0FxSUdCZ1lIUnpYRzRnSUNBZ0lDb2dZMjl1YzNRZ2NYVmhkRk55WTBSbGJIUmhJRDBnWDNGMVlYUkJYRzRnSUNBZ0lDb2dJQ0F1WTI5d2VTZ2dkR2hwY3k1ZmFXNTJVM0pqVW1WemRGRjFZWFFnS1Z4dUlDQWdJQ0FxSUNBZ0xtMTFiSFJwY0d4NUtDQjBhR2x6TG5OdmRYSmpaUzV4ZFdGMFpYSnVhVzl1SUNrN1hHNGdJQ0FnSUNvZ1kyOXVjM1FnY1hWaGRGTnlZMFJsYkhSaFNXNVFZWEpsYm5RZ1BTQmZjWFZoZEVKY2JpQWdJQ0FnS2lBZ0lDNWpiM0I1S0NCMGFHbHpMbDl6Y21OU1pYTjBVWFZoZENBcFhHNGdJQ0FnSUNvZ0lDQXViWFZzZEdsd2JIa29JSEYxWVhSVGNtTkVaV3gwWVNBcFhHNGdJQ0FnSUNvZ0lDQXViWFZzZEdsd2JIa29JSFJvYVhNdVgybHVkbE55WTFKbGMzUlJkV0YwSUNrN1hHNGdJQ0FnSUNvZ1kyOXVjM1FnY1hWaGRGTnlZMFJsYkhSaFNXNUVjM1FnUFNCZmNYVmhkRUZjYmlBZ0lDQWdLaUFnSUM1amIzQjVLQ0IwYUdsekxsOXBiblpFYzNSU1pYTjBVWFZoZENBcFhHNGdJQ0FnSUNvZ0lDQXViWFZzZEdsd2JIa29JSEYxWVhSVGNtTkVaV3gwWVVsdVVHRnlaVzUwSUNsY2JpQWdJQ0FnS2lBZ0lDNXRkV3gwYVhCc2VTZ2dkR2hwY3k1ZlpITjBVbVZ6ZEZGMVlYUWdLVHRjYmlBZ0lDQWdLaUJnWUdCY2JpQWdJQ0FnS2k5Y2JpQWdJQ0JqYjI1emRDQnhkV0YwUkdWc2RHRWdQU0JmY1hWaGRFRmNiaUFnSUNBZ0lDNWpiM0I1S0hSb2FYTXVYMmx1ZGtSemRGSmxjM1JSZFdGMEtWeHVJQ0FnSUNBZ0xtMTFiSFJwY0d4NUtIUm9hWE11YzI5MWNtTmxMbkYxWVhSbGNtNXBiMjRwWEc0Z0lDQWdJQ0F1YlhWc2RHbHdiSGtvZEdocGN5NWZhVzUyVTNKalVtVnpkRkYxWVhSTmRXeEVjM1JTWlhOMFVYVmhkQ2s3WEc1Y2JpQWdJQ0F2THlCamNtVmhkR1VnWVNCbWNtOXRMWFJ2SUhGMVlYUmxjbTVwYjI1Y2JpQWdJQ0JqYjI1emRDQnVNU0E5SUY5Mk0wRXVZMjl3ZVNoMGFHbHpMbDkyTTFKdmJHeEJlR2x6S1M1aGNIQnNlVkYxWVhSbGNtNXBiMjRvY1hWaGRFUmxiSFJoS1R0Y2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlGZG9ZWFFnZEdobElIRjFZWFJHY205dFZHOGdhWE1nYVc1MFpXNWtaV1FnZEc4Z1ltVTZYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQmdZR0IwYzF4dUlDQWdJQ0FxSUdOdmJuTjBJSEYxWVhSR2NtOXRWRzhnUFNCZmNYVmhkRUl1YzJWMFJuSnZiVlZ1YVhSV1pXTjBiM0p6S0NCMGFHbHpMbDkyTTFKdmJHeEJlR2x6TENCdU1TQXBMbWx1ZG1WeWMyVW9LVHRjYmlBZ0lDQWdLaUJnWUdCY2JpQWdJQ0FnS2k5Y2JpQWdJQ0JqYjI1emRDQnhkV0YwUm5KdmJWUnZJRDBnWDNGMVlYUkNMbk5sZEVaeWIyMVZibWwwVm1WamRHOXljeWh1TVN3Z2RHaHBjeTVmZGpOU2IyeHNRWGhwY3lrN1hHNWNiaUFnSUNBdkx5QnhkV0YwUm5KdmJWUnZJQ29nY1hWaGRFUmxiSFJoSUQwOUlISnZiR3dnWlhoMGNtRmpkR1ZrSUdaeWIyMGdjWFZoZEVSbGJIUmhYRzRnSUNBZ1kyOXVjM1FnZEdGeVoyVjBVWFZoZENBOUlIRjFZWFJHY205dFZHOHVjSEpsYlhWc2RHbHdiSGtvZEdocGN5NWZaSE4wVW1WemRGRjFZWFFwTG0xMWJIUnBjR3g1S0hGMVlYUkVaV3gwWVNrN1hHNWNiaUFnSUNBdkx5QmliR1Z1WkNCM2FYUm9JSFJvWlNCeVpYTjBJSEYxWVhSbGNtNXBiMjRnZFhOcGJtY2dkMlZwWjJoMFhHNGdJQ0FnZEdocGN5NWtaWE4wYVc1aGRHbHZiaTV4ZFdGMFpYSnVhVzl1TG1OdmNIa29kR2hwY3k1ZlpITjBVbVZ6ZEZGMVlYUXBMbk5zWlhKd0tIUmhjbWRsZEZGMVlYUXNJSFJvYVhNdWQyVnBaMmgwS1R0Y2JpQWdmVnh1ZlZ4dUlpd2lhVzF3YjNKMElIUjVjR1VnS2lCaGN5QkRiMjV6ZEhKaGFXNTBVMk5vWlcxaElHWnliMjBnSjBCd2FYaHBkaTkwZVhCbGN5MTJjbTFqTFc1dlpHVXRZMjl1YzNSeVlXbHVkQzB4TGpBbk8xeHVhVzF3YjNKMElIUjVjR1VnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVwYlhCdmNuUWdkSGx3WlNCN0lFZE1WRVlzSUVkTVZFWk1iMkZrWlhKUWJIVm5hVzRzSUVkTVZFWlFZWEp6WlhJZ2ZTQm1jbTl0SUNkMGFISmxaUzlsZUdGdGNHeGxjeTlxYzIwdmJHOWhaR1Z5Y3k5SFRGUkdURzloWkdWeUxtcHpKenRjYm1sdGNHOXlkQ0I3SUZaU1RVNXZaR1ZEYjI1emRISmhhVzUwU0dWc2NHVnlJSDBnWm5KdmJTQW5MaTlvWld4d1pYSnpKenRjYm1sdGNHOXlkQ0IwZVhCbElIc2dWbEpOVG05a1pVTnZibk4wY21GcGJuUk1iMkZrWlhKUWJIVm5hVzVQY0hScGIyNXpJSDBnWm5KdmJTQW5MaTlXVWsxT2IyUmxRMjl1YzNSeVlXbHVkRXh2WVdSbGNsQnNkV2RwYms5d2RHbHZibk1uTzF4dWFXMXdiM0owSUhzZ1ZsSk5UbTlrWlVOdmJuTjBjbUZwYm5STllXNWhaMlZ5SUgwZ1puSnZiU0FuTGk5V1VrMU9iMlJsUTI5dWMzUnlZV2x1ZEUxaGJtRm5aWEluTzF4dWFXMXdiM0owSUhzZ1ZsSk5VbTkwWVhScGIyNURiMjV6ZEhKaGFXNTBJSDBnWm5KdmJTQW5MaTlXVWsxU2IzUmhkR2x2YmtOdmJuTjBjbUZwYm5Rbk8xeHVhVzF3YjNKMElIc2dSMHhVUmlCaGN5QkhURlJHVTJOb1pXMWhJSDBnWm5KdmJTQW5RR2RzZEdZdGRISmhibk5tYjNKdEwyTnZjbVVuTzF4dWFXMXdiM0owSUhzZ1ZsSk5RV2x0UTI5dWMzUnlZV2x1ZENCOUlHWnliMjBnSnk0dlZsSk5RV2x0UTI5dWMzUnlZV2x1ZENjN1hHNXBiWEJ2Y25RZ2V5QldVazFTYjJ4c1EyOXVjM1J5WVdsdWRDQjlJR1p5YjIwZ0p5NHZWbEpOVW05c2JFTnZibk4wY21GcGJuUW5PMXh1WEc0dktpcGNiaUFxSUZCdmMzTnBZbXhsSUhOd1pXTWdkbVZ5YzJsdmJuTWdhWFFnY21WamIyZHVhWHBsY3k1Y2JpQXFMMXh1WTI5dWMzUWdVRTlUVTBsQ1RFVmZVMUJGUTE5V1JWSlRTVTlPVXlBOUlHNWxkeUJUWlhRb1d5Y3hMakFuTENBbk1TNHdMV0psZEdFblhTazdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QldVazFPYjJSbFEyOXVjM1J5WVdsdWRFeHZZV1JsY2xCc2RXZHBiaUJwYlhCc1pXMWxiblJ6SUVkTVZFWk1iMkZrWlhKUWJIVm5hVzRnZTF4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUhKbFlXUnZibXg1SUVWWVZFVk9VMGxQVGw5T1FVMUZJRDBnSjFaU1RVTmZibTlrWlY5amIyNXpkSEpoYVc1MEp6dGNibHh1SUNBdktpcGNiaUFnSUNvZ1UzQmxZMmxtZVNCaGJpQlBZbXBsWTNRelJDQjBieUJoWkdRZ2UwQnNhVzVySUZaU1RVNXZaR1ZEYjI1emRISmhhVzUwU0dWc2NHVnlmU0J6TGx4dUlDQWdLaUJKWmlCdWIzUWdjM0JsWTJsbWFXVmtMQ0JvWld4d1pYSWdkMmxzYkNCdWIzUWdZbVVnWTNKbFlYUmxaQzVjYmlBZ0lDb2dTV1lnWUhKbGJtUmxjazl5WkdWeVlDQnBjeUJ6WlhRZ2RHOGdkR2hsSUhKdmIzUXNJR2hsYkhCbGNuTWdkMmxzYkNCamIzQjVJSFJvWlNCellXMWxJR0J5Wlc1a1pYSlBjbVJsY21BZ0xseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHaGxiSEJsY2xKdmIzUS9PaUJVU0ZKRlJTNVBZbXBsWTNRelJEdGNibHh1SUNCd2RXSnNhV01nY21WaFpHOXViSGtnY0dGeWMyVnlPaUJIVEZSR1VHRnljMlZ5TzF4dVhHNGdJSEIxWW14cFl5Qm5aWFFnYm1GdFpTZ3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lISmxkSFZ5YmlCV1VrMU9iMlJsUTI5dWMzUnlZV2x1ZEV4dllXUmxjbEJzZFdkcGJpNUZXRlJGVGxOSlQwNWZUa0ZOUlR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpaHdZWEp6WlhJNklFZE1WRVpRWVhKelpYSXNJRzl3ZEdsdmJuTS9PaUJXVWsxT2IyUmxRMjl1YzNSeVlXbHVkRXh2WVdSbGNsQnNkV2RwYms5d2RHbHZibk1wSUh0Y2JpQWdJQ0IwYUdsekxuQmhjbk5sY2lBOUlIQmhjbk5sY2p0Y2JseHVJQ0FnSUhSb2FYTXVhR1ZzY0dWeVVtOXZkQ0E5SUc5d2RHbHZibk0vTG1obGJIQmxjbEp2YjNRN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1lYTjVibU1nWVdaMFpYSlNiMjkwS0dkc2RHWTZJRWRNVkVZcE9pQlFjbTl0YVhObFBIWnZhV1ErSUh0Y2JpQWdJQ0JuYkhSbUxuVnpaWEpFWVhSaExuWnliVTV2WkdWRGIyNXpkSEpoYVc1MFRXRnVZV2RsY2lBOUlHRjNZV2wwSUhSb2FYTXVYMmx0Y0c5eWRDaG5iSFJtS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpiWEJ2Y25RZ1kyOXVjM1J5WVdsdWRITWdabkp2YlNCaElFZE1WRVlnWVc1a0lISmxkSFZ5Ym5NZ1lTQjdRR3hwYm1zZ1ZsSk5UbTlrWlVOdmJuTjBjbUZwYm5STllXNWhaMlZ5ZlM1Y2JpQWdJQ29nU1hRZ2JXbG5hSFFnY21WMGRYSnVJR0J1ZFd4c1lDQnBibk4wWldGa0lIZG9aVzRnYVhRZ1pHOWxjeUJ1YjNRZ2JtVmxaQ0IwYnlCaVpTQmpjbVZoZEdWa0lHOXlJSE52YldWMGFHbHVaeUJuYnlCM2NtOXVaeTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUdkc2RHWWdRU0J3WVhKelpXUWdjbVZ6ZFd4MElHOW1JRWRNVkVZZ2RHRnJaVzRnWm5KdmJTQkhURlJHVEc5aFpHVnlYRzRnSUNBcUwxeHVJQ0J3Y205MFpXTjBaV1FnWVhONWJtTWdYMmx0Y0c5eWRDaG5iSFJtT2lCSFRGUkdLVG9nVUhKdmJXbHpaVHhXVWsxT2IyUmxRMjl1YzNSeVlXbHVkRTFoYm1GblpYSWdmQ0J1ZFd4c1BpQjdYRzRnSUNBZ1kyOXVjM1FnYW5OdmJpQTlJSFJvYVhNdWNHRnljMlZ5TG1wemIyNGdZWE1nUjB4VVJsTmphR1Z0WVM1SlIweFVSanRjYmx4dUlDQWdJQzh2SUdWaGNteDVJR0ZpYjNKMElHbG1JR2wwSUdSdlpYTnVKM1FnZFhObElHTnZibk4wY21GcGJuUnpYRzRnSUNBZ1kyOXVjM1FnYVhORGIyNXpkSEpoYVc1MGMxVnpaV1FnUFNCcWMyOXVMbVY0ZEdWdWMybHZibk5WYzJWa1B5NXBibVJsZUU5bUtGWlNUVTV2WkdWRGIyNXpkSEpoYVc1MFRHOWhaR1Z5VUd4MVoybHVMa1ZZVkVWT1UwbFBUbDlPUVUxRktTQWhQVDBnTFRFN1hHNGdJQ0FnYVdZZ0tDRnBjME52Ym5OMGNtRnBiblJ6VlhObFpDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2JXRnVZV2RsY2lBOUlHNWxkeUJXVWsxT2IyUmxRMjl1YzNSeVlXbHVkRTFoYm1GblpYSW9LVHRjYmlBZ0lDQmpiMjV6ZENCMGFISmxaVTV2WkdWek9pQlVTRkpGUlM1UFltcGxZM1F6UkZ0ZElEMGdZWGRoYVhRZ2RHaHBjeTV3WVhKelpYSXVaMlYwUkdWd1pXNWtaVzVqYVdWektDZHViMlJsSnlrN1hHNWNiaUFnSUNBdkx5QnBiWEJ2Y25RZ1kyOXVjM1J5WVdsdWRITWdabTl5SUdWaFkyZ2dibTlrWlhOY2JpQWdJQ0IwYUhKbFpVNXZaR1Z6TG1admNrVmhZMmdvS0c1dlpHVXNJRzV2WkdWSmJtUmxlQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYzJOb1pXMWhUbTlrWlNBOUlHcHpiMjR1Ym05a1pYTWhXMjV2WkdWSmJtUmxlRjA3WEc1Y2JpQWdJQ0FnSUM4dklHTm9aV05ySUdsbUlIUm9aU0JsZUhSbGJuTnBiMjRnZFhObGN5QjBhR1VnWlhoMFpXNXphVzl1WEc0Z0lDQWdJQ0JqYjI1emRDQmxlSFJsYm5OcGIyNGdQU0J6WTJobGJXRk9iMlJsUHk1bGVIUmxibk5wYjI1elB5NWJWbEpOVG05a1pVTnZibk4wY21GcGJuUk1iMkZrWlhKUWJIVm5hVzR1UlZoVVJVNVRTVTlPWDA1QlRVVmRJR0Z6WEc0Z0lDQWdJQ0FnSUh3Z1EyOXVjM1J5WVdsdWRGTmphR1Z0WVM1V1VrMURUbTlrWlVOdmJuTjBjbUZwYm5SY2JpQWdJQ0FnSUNBZ2ZDQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQWdJR2xtSUNobGVIUmxibk5wYjI0Z1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHTnZibk4wSUhOd1pXTldaWEp6YVc5dUlEMGdaWGgwWlc1emFXOXVMbk53WldOV1pYSnphVzl1TzF4dUlDQWdJQ0FnYVdZZ0tDRlFUMU5UU1VKTVJWOVRVRVZEWDFaRlVsTkpUMDVUTG1oaGN5aHpjR1ZqVm1WeWMybHZiaWtwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1M1lYSnVLRnh1SUNBZ0lDQWdJQ0FnSUdCV1VrMU9iMlJsUTI5dWMzUnlZV2x1ZEV4dllXUmxjbEJzZFdkcGJqb2dWVzVyYm05M2JpQWtlMVpTVFU1dlpHVkRiMjV6ZEhKaGFXNTBURzloWkdWeVVHeDFaMmx1TGtWWVZFVk9VMGxQVGw5T1FVMUZmU0J6Y0dWalZtVnljMmx2YmlCY0lpUjdjM0JsWTFabGNuTnBiMjU5WENKZ0xGeHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR052Ym5OMElHTnZibk4wY21GcGJuUkVaV1lnUFNCbGVIUmxibk5wYjI0dVkyOXVjM1J5WVdsdWREdGNibHh1SUNBZ0lDQWdMeThnYVcxd2IzSjBJR052Ym5OMGNtRnBiblJ6WEc0Z0lDQWdJQ0JwWmlBb1kyOXVjM1J5WVdsdWRFUmxaaTV5YjJ4c0lDRTlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1kyOXVjM1J5WVdsdWRDQTlJSFJvYVhNdVgybHRjRzl5ZEZKdmJHeERiMjV6ZEhKaGFXNTBLRzV2WkdVc0lIUm9jbVZsVG05a1pYTXNJR052Ym5OMGNtRnBiblJFWldZdWNtOXNiQ2s3WEc0Z0lDQWdJQ0FnSUcxaGJtRm5aWEl1WVdSa1EyOXVjM1J5WVdsdWRDaGpiMjV6ZEhKaGFXNTBLVHRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvWTI5dWMzUnlZV2x1ZEVSbFppNWhhVzBnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JqYjI1emRISmhhVzUwSUQwZ2RHaHBjeTVmYVcxd2IzSjBRV2x0UTI5dWMzUnlZV2x1ZENodWIyUmxMQ0IwYUhKbFpVNXZaR1Z6TENCamIyNXpkSEpoYVc1MFJHVm1MbUZwYlNrN1hHNGdJQ0FnSUNBZ0lHMWhibUZuWlhJdVlXUmtRMjl1YzNSeVlXbHVkQ2hqYjI1emRISmhhVzUwS1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1kyOXVjM1J5WVdsdWRFUmxaaTV5YjNSaGRHbHZiaUFoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR052Ym5OMGNtRnBiblFnUFNCMGFHbHpMbDlwYlhCdmNuUlNiM1JoZEdsdmJrTnZibk4wY21GcGJuUW9ibTlrWlN3Z2RHaHlaV1ZPYjJSbGN5d2dZMjl1YzNSeVlXbHVkRVJsWmk1eWIzUmhkR2x2YmlrN1hHNGdJQ0FnSUNBZ0lHMWhibUZuWlhJdVlXUmtRMjl1YzNSeVlXbHVkQ2hqYjI1emRISmhhVzUwS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUM4dklHbHVhWFFnWTI5dWMzUnlZV2x1ZEhOY2JpQWdJQ0JuYkhSbUxuTmpaVzVsTG5Wd1pHRjBaVTFoZEhKcGVGZHZjbXhrS0NrN1hHNGdJQ0FnYldGdVlXZGxjaTV6WlhSSmJtbDBVM1JoZEdVb0tUdGNibHh1SUNBZ0lISmxkSFZ5YmlCdFlXNWhaMlZ5TzF4dUlDQjlYRzVjYmlBZ2NISnZkR1ZqZEdWa0lGOXBiWEJ2Y25SU2IyeHNRMjl1YzNSeVlXbHVkQ2hjYmlBZ0lDQmtaWE4wYVc1aGRHbHZiam9nVkVoU1JVVXVUMkpxWldOME0wUXNYRzRnSUNBZ2JtOWtaWE02SUZSSVVrVkZMazlpYW1WamRETkVXMTBzWEc0Z0lDQWdjbTlzYkVOdmJuTjBjbUZwYm5SRVpXWTZJRU52Ym5OMGNtRnBiblJUWTJobGJXRXVVbTlzYkVOdmJuTjBjbUZwYm5Rc1hHNGdJQ2s2SUZaU1RWSnZiR3hEYjI1emRISmhhVzUwSUh0Y2JpQWdJQ0JqYjI1emRDQjdJSE52ZFhKalpUb2djMjkxY21ObFNXNWtaWGdzSUhKdmJHeEJlR2x6TENCM1pXbG5hSFFnZlNBOUlISnZiR3hEYjI1emRISmhhVzUwUkdWbU8xeHVJQ0FnSUdOdmJuTjBJSE52ZFhKalpTQTlJRzV2WkdWelczTnZkWEpqWlVsdVpHVjRYVHRjYmlBZ0lDQmpiMjV6ZENCamIyNXpkSEpoYVc1MElEMGdibVYzSUZaU1RWSnZiR3hEYjI1emRISmhhVzUwS0dSbGMzUnBibUYwYVc5dUxDQnpiM1Z5WTJVcE8xeHVYRzRnSUNBZ2FXWWdLSEp2Ykd4QmVHbHpJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJR052Ym5OMGNtRnBiblF1Y205c2JFRjRhWE1nUFNCeWIyeHNRWGhwY3p0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0hkbGFXZG9kQ0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0JqYjI1emRISmhhVzUwTG5kbGFXZG9kQ0E5SUhkbGFXZG9kRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NW9aV3h3WlhKU2IyOTBLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQm9aV3h3WlhJZ1BTQnVaWGNnVmxKTlRtOWtaVU52Ym5OMGNtRnBiblJJWld4d1pYSW9ZMjl1YzNSeVlXbHVkQ2s3WEc0Z0lDQWdJQ0IwYUdsekxtaGxiSEJsY2xKdmIzUXVZV1JrS0dobGJIQmxjaWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHTnZibk4wY21GcGJuUTdYRzRnSUgxY2JseHVJQ0J3Y205MFpXTjBaV1FnWDJsdGNHOXlkRUZwYlVOdmJuTjBjbUZwYm5Rb1hHNGdJQ0FnWkdWemRHbHVZWFJwYjI0NklGUklVa1ZGTGs5aWFtVmpkRE5FTEZ4dUlDQWdJRzV2WkdWek9pQlVTRkpGUlM1UFltcGxZM1F6UkZ0ZExGeHVJQ0FnSUdGcGJVTnZibk4wY21GcGJuUkVaV1k2SUVOdmJuTjBjbUZwYm5SVFkyaGxiV0V1UVdsdFEyOXVjM1J5WVdsdWRDeGNiaUFnS1RvZ1ZsSk5RV2x0UTI5dWMzUnlZV2x1ZENCN1hHNGdJQ0FnWTI5dWMzUWdleUJ6YjNWeVkyVTZJSE52ZFhKalpVbHVaR1Y0TENCaGFXMUJlR2x6TENCM1pXbG5hSFFnZlNBOUlHRnBiVU52Ym5OMGNtRnBiblJFWldZN1hHNGdJQ0FnWTI5dWMzUWdjMjkxY21ObElEMGdibTlrWlhOYmMyOTFjbU5sU1c1a1pYaGRPMXh1SUNBZ0lHTnZibk4wSUdOdmJuTjBjbUZwYm5RZ1BTQnVaWGNnVmxKTlFXbHRRMjl1YzNSeVlXbHVkQ2hrWlhOMGFXNWhkR2x2Yml3Z2MyOTFjbU5sS1R0Y2JseHVJQ0FnSUdsbUlDaGhhVzFCZUdseklDRTlJRzUxYkd3cElIdGNiaUFnSUNBZ0lHTnZibk4wY21GcGJuUXVZV2x0UVhocGN5QTlJR0ZwYlVGNGFYTTdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaDNaV2xuYUhRZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1J5WVdsdWRDNTNaV2xuYUhRZ1BTQjNaV2xuYUhRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11YUdWc2NHVnlVbTl2ZENrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYUdWc2NHVnlJRDBnYm1WM0lGWlNUVTV2WkdWRGIyNXpkSEpoYVc1MFNHVnNjR1Z5S0dOdmJuTjBjbUZwYm5RcE8xeHVJQ0FnSUNBZ2RHaHBjeTVvWld4d1pYSlNiMjkwTG1Ga1pDaG9aV3h3WlhJcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJqYjI1emRISmhhVzUwTzF4dUlDQjlYRzVjYmlBZ2NISnZkR1ZqZEdWa0lGOXBiWEJ2Y25SU2IzUmhkR2x2YmtOdmJuTjBjbUZwYm5Rb1hHNGdJQ0FnWkdWemRHbHVZWFJwYjI0NklGUklVa1ZGTGs5aWFtVmpkRE5FTEZ4dUlDQWdJRzV2WkdWek9pQlVTRkpGUlM1UFltcGxZM1F6UkZ0ZExGeHVJQ0FnSUhKdmRHRjBhVzl1UTI5dWMzUnlZV2x1ZEVSbFpqb2dRMjl1YzNSeVlXbHVkRk5qYUdWdFlTNVNiM1JoZEdsdmJrTnZibk4wY21GcGJuUXNYRzRnSUNrNklGWlNUVkp2ZEdGMGFXOXVRMjl1YzNSeVlXbHVkQ0I3WEc0Z0lDQWdZMjl1YzNRZ2V5QnpiM1Z5WTJVNklITnZkWEpqWlVsdVpHVjRMQ0IzWldsbmFIUWdmU0E5SUhKdmRHRjBhVzl1UTI5dWMzUnlZV2x1ZEVSbFpqdGNiaUFnSUNCamIyNXpkQ0J6YjNWeVkyVWdQU0J1YjJSbGMxdHpiM1Z5WTJWSmJtUmxlRjA3WEc0Z0lDQWdZMjl1YzNRZ1kyOXVjM1J5WVdsdWRDQTlJRzVsZHlCV1VrMVNiM1JoZEdsdmJrTnZibk4wY21GcGJuUW9aR1Z6ZEdsdVlYUnBiMjRzSUhOdmRYSmpaU2s3WEc1Y2JpQWdJQ0JwWmlBb2QyVnBaMmgwSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBjbUZwYm5RdWQyVnBaMmgwSUQwZ2QyVnBaMmgwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbWhsYkhCbGNsSnZiM1FwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR2hsYkhCbGNpQTlJRzVsZHlCV1VrMU9iMlJsUTI5dWMzUnlZV2x1ZEVobGJIQmxjaWhqYjI1emRISmhhVzUwS1R0Y2JpQWdJQ0FnSUhSb2FYTXVhR1ZzY0dWeVVtOXZkQzVoWkdRb2FHVnNjR1Z5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdZMjl1YzNSeVlXbHVkRHRjYmlBZ2ZWeHVmVnh1SWwwc0ltNWhiV1Z6SWpwYklsOTJNMEVpTENKZmRqTkNJaXdpWDNGMVlYUkJJaXdpWDNGMVlYUkNJbDBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN08wRkJSMEVzVFVGQlRVRXNUVUZCU1N4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlJYQkNMRTFCUVVFc2RVSkJRWGRDTEZOQlFWRXNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJRVHRCUVV0MFJDeEpRVUZCTEZkQlFVRXNRMEZCYlVJc1ZVRkJOa0lzUlVGQlFUdEJRVU01UXl4UlFVRkJMRXRCUVVzc1JVRkJSU3hEUVVGRE8wRkJSVklzVVVGQlFTeEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExHVkJRV1VzUTBGQlF5eEpRVUZKTEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjRSaXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNRMEZCUXp0QlFVVndSQ3hSUVVGQkxFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMR05CUVdNc1JVRkJSU3hEUVVGRE8xRkJRelZETEZGQlFWRXNRMEZCUXl4WlFVRlpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0QlFVVjBSQ3hSUVVGQkxFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMR2xDUVVGcFFpeERRVUZETzBGQlF6TkRMRmxCUVVFc1MwRkJTeXhGUVVGRkxGRkJRVkU3UVVGRFppeFpRVUZCTEZOQlFWTXNSVUZCUlN4TFFVRkxPMEZCUTJoQ0xGbEJRVUVzVlVGQlZTeEZRVUZGTEV0QlFVczdRVUZEYkVJc1UwRkJRU3hEUVVGRExFTkJRVU03UVVGRlNDeFJRVUZCTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVOb1JDeFJRVUZCTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBGQlJYSkNMRkZCUVVFc1NVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFZRVUZWTEVOQlFVTTdTMEZET1VJN1FVRkZUU3hKUVVGQkxHbENRVUZwUWl4RFFVRkRMRXRCUVdVc1JVRkJRVHRSUVVOMFEwRXNUVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1YwRkJWeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzBGQlEzQkZMRkZCUVVFc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RlFVRkZRU3hOUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGUVN4TlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRlFTeE5RVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkZja1FzVVVGQlFTeEpRVUZKTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1RVRkJUU3hGUVVGRk8xbEJRekZDUVN4TlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdRVUZEYUVVc1UwRkJRVHRCUVVORUxGRkJRVUVzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhGUVVGRlFTeE5RVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZRU3hOUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGUVN4TlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRmNrUXNVVUZCUVN4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZGZEVNc1VVRkJRU3hMUVVGTExFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UzBGRGFFTTdRVUZEUmpzN1FVTXhRMlVzVTBGQlFTeHBRa0ZCYVVJc1EwRkJNRUlzVFVGQmNVSXNSVUZCUlN4TlFVRlRMRVZCUVVFN1NVRkRla1lzVDBGQlR5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGJrWTdPMEZEUmtFc1RVRkJUVUVzVFVGQlNTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnBETEUxQlFVMURMRTFCUVVrc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVVnFRaXhUUVVGQkxHbENRVUZwUWl4RFFVRTJRaXhOUVVGeFFpeEZRVUZGTEUxQlFWTXNSVUZCUVR0SlFVTTFSaXhOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZEUkN4TlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRlF5eE5RVUZKTEVOQlFVTXNRMEZCUXp0QlFVTnlReXhKUVVGQkxFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENPenRCUTA1Qk96czdPenRCUVV0SE8wRkJRMGNzVTBGQlZTeG5Ra0ZCWjBJc1EwRkJOa0lzVFVGQlV5eEZRVUZCTzBsQlEzQkZMRWxCUVVzc1RVRkJZeXhEUVVGRExFMUJRVTBzUlVGQlJUdFJRVU14UWl4TlFVRk5MRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03UVVGRGFrSXNTMEZCUVR0QlFVRk5MRk5CUVVFN1VVRkRTaXhOUVVGakxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZETTBJc1MwRkJRVHRCUVVWRUxFbEJRVUVzVDBGQlR5eE5RVUZOTEVOQlFVTTdRVUZEYUVJN08wRkRaRUU3TzBGQlJVYzdUVUZEYlVJc2FVSkJRV2xDTEVOQlFVRTdRVUZyUW5KRE96czdRVUZIUnp0SlFVTklMRmRCUVcxQ0xFTkJRVUVzVjBGQk1rSXNSVUZCUlN4TlFVRnpRaXhGUVVGQk8wRkJRM0JGTEZGQlFVRXNTVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhYUVVGWExFTkJRVU03UVVGREwwSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF6dEJRVVZ5UWl4UlFVRkJMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUjBGQlJ5eERRVUZETzB0QlEyNUNPMEZCVjBZN08wRkRja05FTEUxQlFVMUVMRTFCUVVrc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnFReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVOcVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5xUXl4TlFVRk5SU3hSUVVGTkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1FVRkRkRU1zVFVGQlRVTXNVVUZCVFN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzBGQlEzUkRMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMEZCUlhSRE96czdPMEZCU1VjN1FVRkRSeXhOUVVGUExHZENRVUZwUWl4VFFVRlJMR2xDUVVGcFFpeERRVUZCTzBGQlEzSkVPenRCUVVWSE8wRkJRMGdzU1VGQlFTeEpRVUZYTEU5QlFVOHNSMEZCUVR0UlFVTm9RaXhQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTTdTMEZEZEVJN1FVRkZSRHM3UVVGRlJ6dEpRVU5JTEVsQlFWY3NUMEZCVHl4RFFVRkRMRTlCUVRCR0xFVkJRVUU3UVVGRE0wY3NVVUZCUVN4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF6dEJRVU40UWl4UlFVRkJMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVU5xUWl4UFFVRlBMRXRCUVVzc1YwRkJWeXhIUVVGSExFZEJRVWNzUjBGQlJ5eFBRVUZQTEV0QlFVc3NWMEZCVnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUlVGRGNFVXNUMEZCVHl4TFFVRkxMRmRCUVZjc1IwRkJSeXhIUVVGSExFZEJRVWNzVDBGQlR5eExRVUZMTEZkQlFWY3NSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFVkJRM0JGTEU5QlFVOHNTMEZCU3l4WFFVRlhMRWRCUVVjc1IwRkJSeXhIUVVGSExFOUJRVThzUzBGQlN5eFhRVUZYTEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVOeVJTeERRVUZETzB0QlEwZzdRVUZwUWtRc1NVRkJRU3hKUVVGWExGbEJRVmtzUjBGQlFUdFJRVU55UWl4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQmFVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVVZ1UkN4UlFVRkJMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eE5RVUZOTEVWQlFVVTdXVUZETTBJc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRMnhETEZOQlFVRTdRVUZGUkN4UlFVRkJMRTlCUVU4c1IwRkJSeXhEUVVGRE8wdEJRMW83U1VGRlJDeFhRVUZ0UWl4RFFVRkJMRmRCUVRKQ0xFVkJRVVVzVFVGQmMwSXNSVUZCUVR0QlFVTndSU3hSUVVGQkxFdEJRVXNzUTBGQlF5eFhRVUZYTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1FVRkZNMElzVVVGQlFTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRmRCUVZjc1EwRkJRenRCUVVNMVFpeFJRVUZCTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRk4wTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXp0TFFVTTFRenRKUVVWTkxGbEJRVmtzUjBGQlFUdFJRVU5xUWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wdEJRM0pFTzBsQlJVMHNUVUZCVFN4SFFVRkJPenRSUVVWWUxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTJoRUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPenRCUVVjelF5eFJRVUZCTEUxQlFVMHNhMEpCUVd0Q0xFZEJRVWRFTEZGQlFVMHNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRCUVVNM1F5eFJRVUZCTEUxQlFVMHNjVUpCUVhGQ0xFZEJRVWRETEZGQlFVMHNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRCUVVOb1JDeFJRVUZCTEVsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhOUVVGTkxFVkJRVVU3V1VGRE0wSXNhVUpCUVdsQ0xFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhGUVVGRkxHdENRVUZyUWl4RFFVRkRMRU5CUVVNN1dVRkRNMFVzWjBKQlFXZENMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnNSU3hUUVVGQk96dFJRVWRFTEUxQlFVMHNSVUZCUlN4SFFVRkhTQ3hOUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhsUVVGbExFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMR1ZCUVdVc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRPMUZCUXpkSExFMUJRVTBzUlVGQlJTeEhRVUZITEdsQ1FVRnBRaXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWMEZCVnl4RlFVRkZMRWxCUVVrc1EwRkJRenRoUVVONFJDeEhRVUZITEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4WFFVRlhMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRE1VUXNZVUZCUVN4VFFVRlRMRVZCUVVVc1EwRkJRenM3VVVGSFppeE5RVUZOTEZWQlFWVXNSMEZCUnl4TlFVRk5PMEZCUTNSQ0xHRkJRVUVzYTBKQlFXdENMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF6dGhRVU14UWl4WFFVRlhMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTTdZVUZEYkVNc1VVRkJVU3hEUVVGRExHdENRVUZyUWl4RFFVRkRPMEZCUXpWQ0xHRkJRVUVzVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenM3VVVGSEwwSXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zVlVGQlZTeEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRMUVVOd1JqdEJRVU5HT3p0QlEzcEhSRHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQmIwZEJPMEZCUTA4c1UwRkJVeXhUUVVGVExFTkJRVU1zVDBGQlR5eEZRVUZGTEZWQlFWVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1UwRkJVeXhGUVVGRk8wRkJRemRFTEVsQlFVa3NVMEZCVXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzVDBGQlR5eExRVUZMTEZsQlFWa3NRMEZCUXl4SFFVRkhMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eFZRVUZWTEU5QlFVOHNSVUZCUlN4RlFVRkZMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUTJoSUxFbEJRVWtzVDBGQlR5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1QwRkJUeXhEUVVGRExFVkJRVVVzVlVGQlZTeFBRVUZQTEVWQlFVVXNUVUZCVFN4RlFVRkZPMEZCUXk5RUxGRkJRVkVzVTBGQlV5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTnVSeXhSUVVGUkxGTkJRVk1zVVVGQlVTeERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTjBSeXhSUVVGUkxGTkJRVk1zU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRTFCUVUwc1EwRkJReXhKUVVGSkxFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTXNSVUZCUlR0QlFVTjBTQ3hSUVVGUkxFbEJRVWtzUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeFZRVUZWTEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU01UlN4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVOUU96dEJRM2hJUVRzN096czdPMEZCVFVjN1FVRkRZU3hUUVVGQkxIbENRVUY1UWl4RFFVRkRMRTFCUVhOQ0xFVkJRVVVzVVVGQk1FTXNSVUZCUVR0QlFVTXhSeXhKUVVGQkxFMUJRVTBzVTBGQlV5eEhRVUZ4UWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJSVGRETEVsQlFVRXNTVUZCU1N4SlFVRkpMRWRCUVRCQ0xFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZEYUVRc1QwRkJUeXhKUVVGSkxFdEJRVXNzU1VGQlNTeEZRVUZGTzBGQlEzQkNMRkZCUVVFc1UwRkJVeXhEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTjRRaXhSUVVGQkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMEZCUTNCQ0xFdEJRVUU3UVVGRlJDeEpRVUZCTEZOQlFWTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhSUVVGUkxFdEJRVWs3VVVGRE4wSXNVVUZCVVN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM0pDTEV0QlFVTXNRMEZCUXl4RFFVRkRPMEZCUTB3N08wMURha0poTEhkQ1FVRjNRaXhEUVVGQk8wRkJRWEpETEVsQlFVRXNWMEZCUVN4SFFVRkJPMEZCUTFVc1VVRkJRU3hKUVVGQkxFTkJRVUVzV1VGQldTeEhRVUZITEVsQlFVa3NSMEZCUnl4RlFVRnhRaXhEUVVGRE8wRkJTelZETEZGQlFVRXNTVUZCUVN4RFFVRkJMSEZDUVVGeFFpeEhRVUZITEVsQlFVa3NSMEZCUnl4RlFVRXdReXhEUVVGRE8wdEJaMFp1Ump0QlFYQkdReXhKUVVGQkxFbEJRVmNzVjBGQlZ5eEhRVUZCTzFGQlEzQkNMRTlCUVU4c1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF6dExRVU14UWp0QlFVbE5MRWxCUVVFc1lVRkJZU3hEUVVGRExGVkJRVFpDTEVWQlFVRTdRVUZEYUVRc1VVRkJRU3hKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRCUVVWc1F5eFJRVUZCTEVsQlFVa3NVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJWU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzFGQlEzWkZMRWxCUVVrc1UwRkJVeXhKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU55UWl4WlFVRkJMRk5CUVZNc1IwRkJSeXhKUVVGSkxFZEJRVWNzUlVGQmNVSXNRMEZCUXp0WlFVTjZReXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1IwRkJSeXhEUVVGRExGVkJRVlVzUTBGQlF5eFhRVUZYTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNN1FVRkRia1VzVTBGQlFUdEJRVU5FTEZGQlFVRXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dExRVU16UWp0QlFVVk5MRWxCUVVFc1owSkJRV2RDTEVOQlFVTXNWVUZCTmtJc1JVRkJRVHRCUVVOdVJDeFJRVUZCTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzBGQlJYSkRMRkZCUVVFc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZWTEVOQlFVTXNWMEZCVnl4RFFVRkZMRU5CUVVNN1FVRkRNVVVzVVVGQlFTeFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wdEJRemxDTzBsQlJVMHNXVUZCV1N4SFFVRkJPMEZCUTJwQ0xGRkJRVUVzVFVGQlRTeG5Ra0ZCWjBJc1IwRkJSeXhKUVVGSkxFZEJRVWNzUlVGQmNVSXNRMEZCUXp0QlFVTjBSQ3hSUVVGQkxFMUJRVTBzWlVGQlpTeEhRVUZITEVsQlFVa3NSMEZCUnl4RlFVRnhRaXhEUVVGRE8wRkJSWEpFTEZGQlFVRXNTMEZCU3l4TlFVRk5MRlZCUVZVc1NVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTzBGQlF6RkRMRmxCUVVFc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRlZCUVZVc1JVRkJSU3huUWtGQlowSXNSVUZCUlN4bFFVRmxMRVZCUVVVc1EwRkJReXhWUVVGVkxFdEJRVXNzVlVGQlZTeERRVUZETEZsQlFWa3NSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRia2dzVTBGQlFUdExRVU5HTzBsQlJVMHNUVUZCVFN4SFFVRkJPMEZCUTFnc1VVRkJRU3hOUVVGTkxHZENRVUZuUWl4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGeFFpeERRVUZETzBGQlEzUkVMRkZCUVVFc1RVRkJUU3hsUVVGbExFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFYRkNMRU5CUVVNN1FVRkZja1FzVVVGQlFTeExRVUZMTEUxQlFVMHNWVUZCVlN4SlFVRkpMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVU3UVVGRE1VTXNXVUZCUVN4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNWVUZCVlN4RlFVRkZMR2RDUVVGblFpeEZRVUZGTEdWQlFXVXNSVUZCUlN4RFFVRkRMRlZCUVZVc1MwRkJTeXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTTNSeXhUUVVGQk8wdEJRMFk3UVVGRlJEczdPenM3T3pzN096dEJRVlZITzBGQlEwc3NTVUZCUVN4clFrRkJhMElzUTBGRGVFSXNWVUZCTmtJc1JVRkROMElzWjBKQlFYZERMRVZCUTNoRExHVkJRWFZETEVWQlEzWkRMRkZCUVdsRUxFVkJRVUU3UVVGRmFrUXNVVUZCUVN4SlFVRkpMR1ZCUVdVc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVTdXVUZEYmtNc1QwRkJUenRCUVVOU0xGTkJRVUU3UVVGRlJDeFJRVUZCTEVsQlFVa3NaMEpCUVdkQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZPMEZCUTNCRExGbEJRVUVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4dFJrRkJiVVlzUTBGQlF5eERRVUZETzBGQlEzUkhMRk5CUVVFN1FVRkRSQ3hSUVVGQkxHZENRVUZuUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dEJRVVZxUXl4UlFVRkJMRTFCUVUwc1ZVRkJWU3hIUVVGSExGVkJRVlVzUTBGQlF5eFpRVUZaTEVOQlFVTTdRVUZETTBNc1VVRkJRU3hMUVVGTExFMUJRVTBzVTBGQlV5eEpRVUZKTEZWQlFWVXNSVUZCUlR0QlFVTnNReXhaUVVGQkxIbENRVUY1UWl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExHbENRVUZwUWl4TFFVRkpPMmRDUVVONlJDeE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNSMEZCUnl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTTdRVUZEY0VVc1owSkJRVUVzU1VGQlNTeFRRVUZUTEVWQlFVVTdRVUZEWWl4dlFrRkJRU3hMUVVGTExFMUJRVTBzWVVGQllTeEpRVUZKTEZOQlFWTXNSVUZCUlR0M1FrRkRja01zU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExHRkJRV0VzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3hsUVVGbExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdRVUZEY2tZc2NVSkJRVUU3UVVGRFJpeHBRa0ZCUVR0QlFVTklMR0ZCUVVNc1EwRkJReXhEUVVGRE8wRkJRMG9zVTBGQlFUdFJRVVZFTEZGQlFWRXNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRCUVVWeVFpeFJRVUZCTEdWQlFXVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03UzBGRGFrTTdRVUZEUmpzN1FVTjBSa1FzVFVGQlRVVXNVVUZCVFN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzBGQlEzUkRMRTFCUVUxRExGRkJRVTBzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRCUVVWMFF6czdPenRCUVVsSE8wRkJRMGNzVFVGQlR5eHhRa0ZCYzBJc1UwRkJVU3hwUWtGQmFVSXNRMEZCUVR0QlFWY3hSQ3hKUVVGQkxFbEJRVmNzV1VGQldTeEhRVUZCTzFGQlEzSkNMRTlCUVU4c1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVNdlFqdEpRVVZFTEZkQlFXMUNMRU5CUVVFc1YwRkJNa0lzUlVGQlJTeE5RVUZ6UWl4RlFVRkJPMEZCUTNCRkxGRkJRVUVzUzBGQlN5eERRVUZETEZkQlFWY3NSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVVelFpeEpRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzFGQlF6TkRMRWxCUVVrc1EwRkJReXhsUVVGbExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1MwRkRMME03U1VGRlRTeFpRVUZaTEVkQlFVRTdVVUZEYWtJc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dEJRVU53UkN4UlFVRkJMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOeVJUdEpRVVZOTEUxQlFVMHNSMEZCUVRzN1FVRkZXQ3hSUVVGQkxFMUJRVTBzV1VGQldTeEhRVUZIUkN4UlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXpzN1FVRkhlRVlzVVVGQlFTeE5RVUZOTEZWQlFWVXNSMEZCUjBNc1VVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZET3p0UlFVZDZSU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4VlFVRlZMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzB0QlEzQkdPMEZCUTBZN08wRkROME5FTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlEycERMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMEZCUTNSRExFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8wRkJSWFJET3pzN08wRkJTVWM3UVVGRFJ5eE5RVUZQTEdsQ1FVRnJRaXhUUVVGUkxHbENRVUZwUWl4RFFVRkJPMEZCUTNSRU96dEJRVVZITzBGQlEwZ3NTVUZCUVN4SlFVRlhMRkZCUVZFc1IwRkJRVHRSUVVOcVFpeFBRVUZQTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN1MwRkRka0k3UVVGRlJEczdRVUZGUnp0SlFVTklMRWxCUVZjc1VVRkJVU3hEUVVGRExGRkJRWGxDTEVWQlFVRTdRVUZETTBNc1VVRkJRU3hKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEZGQlFWRXNRMEZCUXp0QlFVTXhRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1MwRkJTeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NSVUZCUlN4UlFVRlJMRXRCUVVzc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEVWQlFVVXNVVUZCVVN4TFFVRkxMRWRCUVVjc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZEYUVnN1FVRXlRa1FzU1VGQlFTeEpRVUZYTEZsQlFWa3NSMEZCUVR0UlFVTnlRaXhQUVVGUExFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU03UzBGREwwSTdTVUZGUkN4WFFVRnRRaXhEUVVGQkxGZEJRVEpDTEVWQlFVVXNUVUZCYzBJc1JVRkJRVHRCUVVOd1JTeFJRVUZCTEV0QlFVc3NRMEZCUXl4WFFVRlhMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRk0wSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFZEJRVWNzUTBGQlF6dEJRVU55UWl4UlFVRkJMRWxCUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGT1VNc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRSUVVNelF5eEpRVUZKTEVOQlFVTXNaVUZCWlN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzFGQlF6bERMRWxCUVVrc1EwRkJReXcyUWtGQk5rSXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF6dExRVU0zUkR0SlFVVk5MRmxCUVZrc1IwRkJRVHRSUVVOcVFpeEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMEZCUTNCRUxGRkJRVUVzWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU03VVVGREwwUXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeERRVUZETERaQ1FVRTJRaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRMUVVNdlJ6dEpRVVZOTEUxQlFVMHNSMEZCUVRzN1FVRkZXRHM3T3pzN096czdPenM3T3pzN096dEJRV2RDUnp0UlFVTklMRTFCUVUwc1UwRkJVeXhIUVVGSExFMUJRVTA3UVVGRGNrSXNZVUZCUVN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF6dEJRVU14UWl4aFFVRkJMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXp0QlFVTm9ReXhoUVVGQkxGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNOa0pCUVRaQ0xFTkJRVU1zUTBGQlF6czdRVUZIYUVRc1VVRkJRU3hOUVVGTkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eGxRVUZsTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1FVRkZiRVU3T3pzN096dEJRVTFITzBGQlEwZ3NVVUZCUVN4TlFVRk5MRlZCUVZVc1IwRkJSeXhOUVVGTkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXpzN1FVRkhia1VzVVVGQlFTeE5RVUZOTEZWQlFWVXNSMEZCUnl4VlFVRlZMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03TzFGQlIycEdMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEZWQlFWVXNSVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UzBGRGNFWTdRVUZEUmpzN1FVTXhSMFE3TzBGQlJVYzdRVUZEU0N4TlFVRk5MSE5DUVVGelFpeEhRVUZITEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTTdUVUZGTDBNc05rSkJRVFpDTEVOQlFVRTdRVUZaZUVNc1NVRkJRU3hKUVVGWExFbEJRVWtzUjBGQlFUdFJRVU5pTEU5QlFVOHNOa0pCUVRaQ0xFTkJRVU1zWTBGQll5eERRVUZETzB0QlEzSkVPMGxCUlVRc1YwRkJiVUlzUTBGQlFTeE5RVUZyUWl4RlFVRkZMRTlCUVRoRExFVkJRVUU3UVVGRGJrWXNVVUZCUVN4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF6dFJRVVZ5UWl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFOUJRVThzUzBGQlFTeEpRVUZCTEVsQlFWQXNUMEZCVHl4TFFVRlFMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEU5QlFVOHNRMEZCUlN4VlFVRlZMRU5CUVVNN1MwRkRka003UVVGRldTeEpRVUZCTEZOQlFWTXNRMEZCUXl4SlFVRlZMRVZCUVVFN08wRkJReTlDTEZsQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXgzUWtGQmQwSXNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVMEZEYmtVc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGQlFUdEJRVVZFT3pzN096dEJRVXRITzBGQlEyRXNTVUZCUVN4UFFVRlBMRU5CUVVNc1NVRkJWU3hGUVVGQk96czdRVUZEYUVNc1dVRkJRU3hOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVhkQ0xFTkJRVU03TzBGQlIyeEVMRmxCUVVFc1RVRkJUU3hwUWtGQmFVSXNSMEZCUnl4RFFVRkJMRU5CUVVFc1JVRkJRU3hIUVVGQkxFbEJRVWtzUTBGQlF5eGpRVUZqTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVVc1QwRkJUeXhEUVVGRExEWkNRVUUyUWl4RFFVRkRMR05CUVdNc1EwRkJReXhOUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6VkhMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSVUZCUlR0QlFVTjBRaXhuUWtGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmlMR0ZCUVVFN1FVRkZSQ3haUVVGQkxFMUJRVTBzVDBGQlR5eEhRVUZITEVsQlFVa3NkMEpCUVhkQ0xFVkJRVVVzUTBGQlF6dFpRVU12UXl4TlFVRk5MRlZCUVZVc1IwRkJjVUlzVFVGQlRTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR1ZCUVdVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6czdXVUZITDBVc1ZVRkJWU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4VFFVRlRMRXRCUVVrN08yZENRVU55UXl4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlRTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPenRCUVVjeFF5eG5Ra0ZCUVN4TlFVRk5MRk5CUVZNc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeFZRVUZWTEdGQlFWWXNWVUZCVlN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZXTEZWQlFWVXNRMEZCUlN4VlFVRlZMRTFCUVVjc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVUVzTmtKQlFUWkNMRU5CUVVNc1kwRkJZeXhEUVVVeFJTeERRVUZETzJkQ1FVVmtMRWxCUVVrc1UwRkJVeXhKUVVGSkxFbEJRVWtzUlVGQlJUdHZRa0ZEY2tJc1QwRkJUenRCUVVOU0xHbENRVUZCTzBGQlJVUXNaMEpCUVVFc1RVRkJUU3hYUVVGWExFZEJRVWNzVTBGQlV5eERRVUZETEZkQlFWY3NRMEZCUXp0QlFVTXhReXhuUWtGQlFTeEpRVUZKTEVOQlFVTXNjMEpCUVhOQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NRMEZCUXl4RlFVRkZPMjlDUVVNMVF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVTldMRU5CUVRCRExIVkRRVUZCTEVWQlFVRXNOa0pCUVRaQ0xFTkJRVU1zWTBGQll5eERRVUZwUWl4alFVRkJMRVZCUVVFc1YwRkJWeXhEUVVGSExFTkJRVUVzUTBGQlFTeERRVU4wU0N4RFFVRkRPMjlDUVVOR0xFOUJRVTg3UVVGRFVpeHBRa0ZCUVR0QlFVVkVMR2RDUVVGQkxFMUJRVTBzWVVGQllTeEhRVUZITEZOQlFWTXNRMEZCUXl4VlFVRlZMRU5CUVVNN08wRkJSek5ETEdkQ1FVRkJMRWxCUVVrc1lVRkJZU3hEUVVGRExFbEJRVWtzU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZET1VJc2IwSkJRVUVzVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVsQlFVa3NSVUZCUlN4VlFVRlZMRVZCUVVVc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEzQkdMRzlDUVVGQkxFOUJRVThzUTBGQlF5eGhRVUZoTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1FVRkRia01zYVVKQlFVRTdRVUZCVFN4eFFrRkJRU3hKUVVGSkxHRkJRV0VzUTBGQlF5eEhRVUZITEVsQlFVa3NTVUZCU1N4RlFVRkZPMEZCUTNCRExHOUNRVUZCTEUxQlFVMHNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4SlFVRkpMRVZCUVVVc1ZVRkJWU3hGUVVGRkxHRkJRV0VzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTnNSaXh2UWtGQlFTeFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wRkJRMjVETEdsQ1FVRkJPMEZCUVUwc2NVSkJRVUVzU1VGQlNTeGhRVUZoTEVOQlFVTXNVVUZCVVN4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVONlF5eHZRa0ZCUVN4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1zZVVKQlFYbENMRU5CUVVNc1NVRkJTU3hGUVVGRkxGVkJRVlVzUlVGQlJTeGhRVUZoTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1FVRkROVVlzYjBKQlFVRXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dEJRVU51UXl4cFFrRkJRVHRCUVVOSUxHRkJRVU1zUTBGQlF5eERRVUZET3p0QlFVZElMRmxCUVVFc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hEUVVGRE8xbEJReTlDTEU5QlFVOHNRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRCUVVWMlFpeFpRVUZCTEU5QlFVOHNUMEZCVHl4RFFVRkRPenRCUVVOb1FpeExRVUZCTzBGQlJWTXNTVUZCUVN4eFFrRkJjVUlzUTBGRE4wSXNWMEZCTWtJc1JVRkRNMElzUzBGQmRVSXNSVUZEZGtJc2FVSkJRV3RFTEVWQlFVRTdVVUZGYkVRc1RVRkJUU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFhRVUZYTEVWQlFVVXNVVUZCVVN4RlFVRkZMRTFCUVUwc1JVRkJSU3hIUVVGSExHbENRVUZwUWl4RFFVRkRPMEZCUTNCRkxGRkJRVUVzVFVGQlRTeE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8xRkJRMnhETEUxQlFVMHNWVUZCVlN4SFFVRkhMRWxCUVVrc2FVSkJRV2xDTEVOQlFVTXNWMEZCVnl4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJSVGxFTEVsQlFVa3NVVUZCVVN4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOd1FpeFpRVUZCTEZWQlFWVXNRMEZCUXl4UlFVRlJMRWRCUVVjc1VVRkJVU3hEUVVGRE8wRkJRMmhETEZOQlFVRTdVVUZEUkN4SlFVRkpMRTFCUVUwc1NVRkJTU3hKUVVGSkxFVkJRVVU3UVVGRGJFSXNXVUZCUVN4VlFVRlZMRU5CUVVNc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF6dEJRVU0xUWl4VFFVRkJPMUZCUlVRc1NVRkJTU3hKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTzBGQlEyNUNMRmxCUVVFc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeDFRa0ZCZFVJc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dEJRVU4yUkN4WlFVRkJMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUXpkQ0xGTkJRVUU3UVVGRlJDeFJRVUZCTEU5QlFVOHNWVUZCVlN4RFFVRkRPMHRCUTI1Q08wRkJSVk1zU1VGQlFTeHZRa0ZCYjBJc1EwRkROVUlzVjBGQk1rSXNSVUZETTBJc1MwRkJkVUlzUlVGRGRrSXNaMEpCUVdkRUxFVkJRVUU3VVVGRmFFUXNUVUZCVFN4RlFVRkZMRTFCUVUwc1JVRkJSU3hYUVVGWExFVkJRVVVzVDBGQlR5eEZRVUZGTEUxQlFVMHNSVUZCUlN4SFFVRkhMR2RDUVVGblFpeERRVUZETzBGQlEyeEZMRkZCUVVFc1RVRkJUU3hOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMUZCUTJ4RExFMUJRVTBzVlVGQlZTeEhRVUZITEVsQlFVa3NaMEpCUVdkQ0xFTkJRVU1zVjBGQlZ5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUlRkRUxFbEJRVWtzVDBGQlR5eEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTnVRaXhaUVVGQkxGVkJRVlVzUTBGQlF5eFBRVUZQTEVkQlFVY3NUMEZCVHl4RFFVRkRPMEZCUXpsQ0xGTkJRVUU3VVVGRFJDeEpRVUZKTEUxQlFVMHNTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRiRUlzV1VGQlFTeFZRVUZWTEVOQlFVTXNUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenRCUVVNMVFpeFRRVUZCTzFGQlJVUXNTVUZCU1N4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRk8wRkJRMjVDTEZsQlFVRXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3gxUWtGQmRVSXNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRCUVVOMlJDeFpRVUZCTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlF6ZENMRk5CUVVFN1FVRkZSQ3hSUVVGQkxFOUJRVThzVlVGQlZTeERRVUZETzB0QlEyNUNPMEZCUlZNc1NVRkJRU3g1UWtGQmVVSXNRMEZEYWtNc1YwRkJNa0lzUlVGRE0wSXNTMEZCZFVJc1JVRkRka0lzY1VKQlFUQkVMRVZCUVVFN1VVRkZNVVFzVFVGQlRTeEZRVUZGTEUxQlFVMHNSVUZCUlN4WFFVRlhMRVZCUVVVc1RVRkJUU3hGUVVGRkxFZEJRVWNzY1VKQlFYRkNMRU5CUVVNN1FVRkRPVVFzVVVGQlFTeE5RVUZOTEUxQlFVMHNSMEZCUnl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03VVVGRGJFTXNUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3h4UWtGQmNVSXNRMEZCUXl4WFFVRlhMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRmJFVXNTVUZCU1N4TlFVRk5MRWxCUVVrc1NVRkJTU3hGUVVGRk8wRkJRMnhDTEZsQlFVRXNWVUZCVlN4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU03UVVGRE5VSXNVMEZCUVR0UlFVVkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJUdEJRVU51UWl4WlFVRkJMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzZFVKQlFYVkNMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03UVVGRGRrUXNXVUZCUVN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTTNRaXhUUVVGQk8wRkJSVVFzVVVGQlFTeFBRVUZQTEZWQlFWVXNRMEZCUXp0TFFVTnVRanM3UVVGNlNuTkNMRFpDUVVGakxFTkJRVUVzWTBGQlFTeEhRVUZITEhOQ1FVRnpRanM3T3pzaWZRPT1cbiIsIi8qIVxuICogQHBpeGl2L3RocmVlLXZybS1zcHJpbmdib25lIHYyLjAuNlxuICogU3ByaW5nIGJvbmUgbW9kdWxlIGZvciBAcGl4aXYvdGhyZWUtdnJtXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjMgcGl4aXYgSW5jLlxuICogQHBpeGl2L3RocmVlLXZybS1zcHJpbmdib25lIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIE1JVCBMaWNlbnNlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcGl4aXYvdGhyZWUtdnJtL2Jsb2IvcmVsZWFzZS9MSUNFTlNFXG4gKi9cbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2hhcGUgb2YgYSBjb2xsaWRlci5cbiAqL1xuY2xhc3MgVlJNU3ByaW5nQm9uZUNvbGxpZGVyU2hhcGUge1xufVxuXG5jb25zdCBfdjNBJDQgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgX3YzQiQxID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNsYXNzIFZSTVNwcmluZ0JvbmVDb2xsaWRlclNoYXBlQ2Fwc3VsZSBleHRlbmRzIFZSTVNwcmluZ0JvbmVDb2xsaWRlclNoYXBlIHtcbiAgICBnZXQgdHlwZSgpIHtcbiAgICAgICAgcmV0dXJuICdjYXBzdWxlJztcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGFyYW1zKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm9mZnNldCA9IChfYSA9IHBhcmFtcyA9PT0gbnVsbCB8fCBwYXJhbXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhcmFtcy5vZmZzZXQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG5ldyBUSFJFRS5WZWN0b3IzKDAuMCwgMC4wLCAwLjApO1xuICAgICAgICB0aGlzLnRhaWwgPSAoX2IgPSBwYXJhbXMgPT09IG51bGwgfHwgcGFyYW1zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJhbXMudGFpbCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogbmV3IFRIUkVFLlZlY3RvcjMoMC4wLCAwLjAsIDAuMCk7XG4gICAgICAgIHRoaXMucmFkaXVzID0gKF9jID0gcGFyYW1zID09PSBudWxsIHx8IHBhcmFtcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFyYW1zLnJhZGl1cykgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMC4wO1xuICAgIH1cbiAgICBjYWxjdWxhdGVDb2xsaXNpb24oY29sbGlkZXJNYXRyaXgsIG9iamVjdFBvc2l0aW9uLCBvYmplY3RSYWRpdXMsIHRhcmdldCkge1xuICAgICAgICBfdjNBJDQuY29weSh0aGlzLm9mZnNldCkuYXBwbHlNYXRyaXg0KGNvbGxpZGVyTWF0cml4KTsgLy8gdHJhbnNmb3JtZWQgaGVhZFxuICAgICAgICBfdjNCJDEuY29weSh0aGlzLnRhaWwpLmFwcGx5TWF0cml4NChjb2xsaWRlck1hdHJpeCk7IC8vIHRyYW5zZm9ybWVkIHRhaWxcbiAgICAgICAgX3YzQiQxLnN1YihfdjNBJDQpOyAvLyBmcm9tIGhlYWQgdG8gdGFpbFxuICAgICAgICBjb25zdCBsZW5ndGhTcUNhcHN1bGUgPSBfdjNCJDEubGVuZ3RoU3EoKTtcbiAgICAgICAgdGFyZ2V0LmNvcHkob2JqZWN0UG9zaXRpb24pLnN1YihfdjNBJDQpOyAvLyBmcm9tIGhlYWQgdG8gb2JqZWN0XG4gICAgICAgIGNvbnN0IGRvdCA9IF92M0IkMS5kb3QodGFyZ2V0KTsgLy8gZG90IHByb2R1Y3Qgb2Ygb2Zmc2V0VG9UYWlsIGFuZCBvZmZzZXRUb09iamVjdFxuICAgICAgICBpZiAoZG90IDw9IDAuMCkgO1xuICAgICAgICBlbHNlIGlmIChsZW5ndGhTcUNhcHN1bGUgPD0gZG90KSB7XG4gICAgICAgICAgICAvLyBpZiBvYmplY3QgaXMgbmVhciBmcm9tIHRoZSB0YWlsXG4gICAgICAgICAgICB0YXJnZXQuc3ViKF92M0IkMSk7IC8vIGZyb20gdGFpbCB0byBvYmplY3RcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIG9iamVjdCBpcyBiZXR3ZWVuIHR3byBlbmRzXG4gICAgICAgICAgICBfdjNCJDEubXVsdGlwbHlTY2FsYXIoZG90IC8gbGVuZ3RoU3FDYXBzdWxlKTsgLy8gZnJvbSBoZWFkIHRvIHRoZSBuZWFyZXN0IHBvaW50IG9mIHRoZSBzaGFmdFxuICAgICAgICAgICAgdGFyZ2V0LnN1YihfdjNCJDEpOyAvLyBmcm9tIHRoZSBzaGFmdCBwb2ludCB0byBvYmplY3RcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByYWRpdXMgPSBvYmplY3RSYWRpdXMgKyB0aGlzLnJhZGl1cztcbiAgICAgICAgY29uc3QgZGlzdGFuY2UgPSB0YXJnZXQubGVuZ3RoKCkgLSByYWRpdXM7XG4gICAgICAgIHRhcmdldC5ub3JtYWxpemUoKTtcbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlO1xuICAgIH1cbn1cblxuY2xhc3MgVlJNU3ByaW5nQm9uZUNvbGxpZGVyU2hhcGVTcGhlcmUgZXh0ZW5kcyBWUk1TcHJpbmdCb25lQ29sbGlkZXJTaGFwZSB7XG4gICAgZ2V0IHR5cGUoKSB7XG4gICAgICAgIHJldHVybiAnc3BoZXJlJztcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGFyYW1zKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gKF9hID0gcGFyYW1zID09PSBudWxsIHx8IHBhcmFtcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFyYW1zLm9mZnNldCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbmV3IFRIUkVFLlZlY3RvcjMoMC4wLCAwLjAsIDAuMCk7XG4gICAgICAgIHRoaXMucmFkaXVzID0gKF9iID0gcGFyYW1zID09PSBudWxsIHx8IHBhcmFtcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFyYW1zLnJhZGl1cykgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMC4wO1xuICAgIH1cbiAgICBjYWxjdWxhdGVDb2xsaXNpb24oY29sbGlkZXJNYXRyaXgsIG9iamVjdFBvc2l0aW9uLCBvYmplY3RSYWRpdXMsIHRhcmdldCkge1xuICAgICAgICB0YXJnZXQuY29weSh0aGlzLm9mZnNldCkuYXBwbHlNYXRyaXg0KGNvbGxpZGVyTWF0cml4KTsgLy8gdHJhbnNmb3JtZWQgb2Zmc2V0XG4gICAgICAgIHRhcmdldC5uZWdhdGUoKS5hZGQob2JqZWN0UG9zaXRpb24pOyAvLyBhIHZlY3RvciBmcm9tIGNvbGxpZGVyIGNlbnRlciB0byBvYmplY3QgcG9zaXRpb25cbiAgICAgICAgY29uc3QgcmFkaXVzID0gb2JqZWN0UmFkaXVzICsgdGhpcy5yYWRpdXM7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlID0gdGFyZ2V0Lmxlbmd0aCgpIC0gcmFkaXVzO1xuICAgICAgICB0YXJnZXQubm9ybWFsaXplKCk7XG4gICAgICAgIHJldHVybiBkaXN0YW5jZTtcbiAgICB9XG59XG5cbmNvbnN0IF92M0EkMyA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jbGFzcyBDb2xsaWRlclNoYXBlQ2Fwc3VsZUJ1ZmZlckdlb21ldHJ5IGV4dGVuZHMgVEhSRUUuQnVmZmVyR2VvbWV0cnkge1xuICAgIGNvbnN0cnVjdG9yKHNoYXBlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMud29ybGRTY2FsZSA9IDEuMDtcbiAgICAgICAgdGhpcy5fY3VycmVudFJhZGl1cyA9IDA7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRPZmZzZXQgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICB0aGlzLl9jdXJyZW50VGFpbCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgIHRoaXMuX3NoYXBlID0gc2hhcGU7XG4gICAgICAgIHRoaXMuX2F0dHJQb3MgPSBuZXcgVEhSRUUuQnVmZmVyQXR0cmlidXRlKG5ldyBGbG9hdDMyQXJyYXkoMzk2KSwgMyk7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdwb3NpdGlvbicsIHRoaXMuX2F0dHJQb3MpO1xuICAgICAgICB0aGlzLl9hdHRySW5kZXggPSBuZXcgVEhSRUUuQnVmZmVyQXR0cmlidXRlKG5ldyBVaW50MTZBcnJheSgyNjQpLCAxKTtcbiAgICAgICAgdGhpcy5zZXRJbmRleCh0aGlzLl9hdHRySW5kZXgpO1xuICAgICAgICB0aGlzLl9idWlsZEluZGV4KCk7XG4gICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgbGV0IHNob3VsZFVwZGF0ZUdlb21ldHJ5ID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHJhZGl1cyA9IHRoaXMuX3NoYXBlLnJhZGl1cyAvIHRoaXMud29ybGRTY2FsZTtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRSYWRpdXMgIT09IHJhZGl1cykge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFJhZGl1cyA9IHJhZGl1cztcbiAgICAgICAgICAgIHNob3VsZFVwZGF0ZUdlb21ldHJ5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2N1cnJlbnRPZmZzZXQuZXF1YWxzKHRoaXMuX3NoYXBlLm9mZnNldCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRPZmZzZXQuY29weSh0aGlzLl9zaGFwZS5vZmZzZXQpO1xuICAgICAgICAgICAgc2hvdWxkVXBkYXRlR2VvbWV0cnkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhaWwgPSBfdjNBJDMuY29weSh0aGlzLl9zaGFwZS50YWlsKS5kaXZpZGVTY2FsYXIodGhpcy53b3JsZFNjYWxlKTtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRUYWlsLmRpc3RhbmNlVG9TcXVhcmVkKHRhaWwpID4gMWUtMTApIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRUYWlsLmNvcHkodGFpbCk7XG4gICAgICAgICAgICBzaG91bGRVcGRhdGVHZW9tZXRyeSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZUdlb21ldHJ5KSB7XG4gICAgICAgICAgICB0aGlzLl9idWlsZFBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2J1aWxkUG9zaXRpb24oKSB7XG4gICAgICAgIF92M0EkMy5jb3B5KHRoaXMuX2N1cnJlbnRUYWlsKS5zdWIodGhpcy5fY3VycmVudE9mZnNldCk7XG4gICAgICAgIGNvbnN0IGwgPSBfdjNBJDMubGVuZ3RoKCkgLyB0aGlzLl9jdXJyZW50UmFkaXVzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAxNjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gKGkgLyAxNi4wKSAqIE1hdGguUEk7XG4gICAgICAgICAgICB0aGlzLl9hdHRyUG9zLnNldFhZWihpLCAtTWF0aC5zaW4odCksIC1NYXRoLmNvcyh0KSwgMC4wKTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJQb3Muc2V0WFlaKDE3ICsgaSwgbCArIE1hdGguc2luKHQpLCBNYXRoLmNvcyh0KSwgMC4wKTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJQb3Muc2V0WFlaKDM0ICsgaSwgLU1hdGguc2luKHQpLCAwLjAsIC1NYXRoLmNvcyh0KSk7XG4gICAgICAgICAgICB0aGlzLl9hdHRyUG9zLnNldFhZWig1MSArIGksIGwgKyBNYXRoLnNpbih0KSwgMC4wLCBNYXRoLmNvcyh0KSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzMjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gKGkgLyAxNi4wKSAqIE1hdGguUEk7XG4gICAgICAgICAgICB0aGlzLl9hdHRyUG9zLnNldFhZWig2OCArIGksIDAuMCwgTWF0aC5zaW4odCksIE1hdGguY29zKHQpKTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJQb3Muc2V0WFlaKDEwMCArIGksIGwsIE1hdGguc2luKHQpLCBNYXRoLmNvcyh0KSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGhldGEgPSBNYXRoLmF0YW4yKF92M0EkMy55LCBNYXRoLnNxcnQoX3YzQSQzLnggKiBfdjNBJDMueCArIF92M0EkMy56ICogX3YzQSQzLnopKTtcbiAgICAgICAgY29uc3QgcGhpID0gLU1hdGguYXRhbjIoX3YzQSQzLnosIF92M0EkMy54KTtcbiAgICAgICAgdGhpcy5yb3RhdGVaKHRoZXRhKTtcbiAgICAgICAgdGhpcy5yb3RhdGVZKHBoaSk7XG4gICAgICAgIHRoaXMuc2NhbGUodGhpcy5fY3VycmVudFJhZGl1cywgdGhpcy5fY3VycmVudFJhZGl1cywgdGhpcy5fY3VycmVudFJhZGl1cyk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlKHRoaXMuX2N1cnJlbnRPZmZzZXQueCwgdGhpcy5fY3VycmVudE9mZnNldC55LCB0aGlzLl9jdXJyZW50T2Zmc2V0LnopO1xuICAgICAgICB0aGlzLl9hdHRyUG9zLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgX2J1aWxkSW5kZXgoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzQ7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaTEgPSAoaSArIDEpICUgMzQ7XG4gICAgICAgICAgICB0aGlzLl9hdHRySW5kZXguc2V0WFkoaSAqIDIsIGksIGkxKTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJJbmRleC5zZXRYWSg2OCArIGkgKiAyLCAzNCArIGksIDM0ICsgaTEpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzI7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaTEgPSAoaSArIDEpICUgMzI7XG4gICAgICAgICAgICB0aGlzLl9hdHRySW5kZXguc2V0WFkoMTM2ICsgaSAqIDIsIDY4ICsgaSwgNjggKyBpMSk7XG4gICAgICAgICAgICB0aGlzLl9hdHRySW5kZXguc2V0WFkoMjAwICsgaSAqIDIsIDEwMCArIGksIDEwMCArIGkxKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hdHRySW5kZXgubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIH1cbn1cblxuY2xhc3MgQ29sbGlkZXJTaGFwZVNwaGVyZUJ1ZmZlckdlb21ldHJ5IGV4dGVuZHMgVEhSRUUuQnVmZmVyR2VvbWV0cnkge1xuICAgIGNvbnN0cnVjdG9yKHNoYXBlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMud29ybGRTY2FsZSA9IDEuMDtcbiAgICAgICAgdGhpcy5fY3VycmVudFJhZGl1cyA9IDA7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRPZmZzZXQgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICB0aGlzLl9zaGFwZSA9IHNoYXBlO1xuICAgICAgICB0aGlzLl9hdHRyUG9zID0gbmV3IFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZShuZXcgRmxvYXQzMkFycmF5KDMyICogMyAqIDMpLCAzKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgdGhpcy5fYXR0clBvcyk7XG4gICAgICAgIHRoaXMuX2F0dHJJbmRleCA9IG5ldyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUobmV3IFVpbnQxNkFycmF5KDY0ICogMyksIDEpO1xuICAgICAgICB0aGlzLnNldEluZGV4KHRoaXMuX2F0dHJJbmRleCk7XG4gICAgICAgIHRoaXMuX2J1aWxkSW5kZXgoKTtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG4gICAgdXBkYXRlKCkge1xuICAgICAgICBsZXQgc2hvdWxkVXBkYXRlR2VvbWV0cnkgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgcmFkaXVzID0gdGhpcy5fc2hhcGUucmFkaXVzIC8gdGhpcy53b3JsZFNjYWxlO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudFJhZGl1cyAhPT0gcmFkaXVzKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50UmFkaXVzID0gcmFkaXVzO1xuICAgICAgICAgICAgc2hvdWxkVXBkYXRlR2VvbWV0cnkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fY3VycmVudE9mZnNldC5lcXVhbHModGhpcy5fc2hhcGUub2Zmc2V0KSkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudE9mZnNldC5jb3B5KHRoaXMuX3NoYXBlLm9mZnNldCk7XG4gICAgICAgICAgICBzaG91bGRVcGRhdGVHZW9tZXRyeSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZUdlb21ldHJ5KSB7XG4gICAgICAgICAgICB0aGlzLl9idWlsZFBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2J1aWxkUG9zaXRpb24oKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzI7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdCA9IChpIC8gMTYuMCkgKiBNYXRoLlBJO1xuICAgICAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooaSwgTWF0aC5jb3ModCksIE1hdGguc2luKHQpLCAwLjApO1xuICAgICAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooMzIgKyBpLCAwLjAsIE1hdGguY29zKHQpLCBNYXRoLnNpbih0KSk7XG4gICAgICAgICAgICB0aGlzLl9hdHRyUG9zLnNldFhZWig2NCArIGksIE1hdGguc2luKHQpLCAwLjAsIE1hdGguY29zKHQpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNjYWxlKHRoaXMuX2N1cnJlbnRSYWRpdXMsIHRoaXMuX2N1cnJlbnRSYWRpdXMsIHRoaXMuX2N1cnJlbnRSYWRpdXMpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZSh0aGlzLl9jdXJyZW50T2Zmc2V0LngsIHRoaXMuX2N1cnJlbnRPZmZzZXQueSwgdGhpcy5fY3VycmVudE9mZnNldC56KTtcbiAgICAgICAgdGhpcy5fYXR0clBvcy5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIF9idWlsZEluZGV4KCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDMyOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGkxID0gKGkgKyAxKSAlIDMyO1xuICAgICAgICAgICAgdGhpcy5fYXR0ckluZGV4LnNldFhZKGkgKiAyLCBpLCBpMSk7XG4gICAgICAgICAgICB0aGlzLl9hdHRySW5kZXguc2V0WFkoNjQgKyBpICogMiwgMzIgKyBpLCAzMiArIGkxKTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJJbmRleC5zZXRYWSgxMjggKyBpICogMiwgNjQgKyBpLCA2NCArIGkxKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hdHRySW5kZXgubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIH1cbn1cblxuY29uc3QgX3YzQSQyID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNsYXNzIFZSTVNwcmluZ0JvbmVDb2xsaWRlckhlbHBlciBleHRlbmRzIFRIUkVFLkdyb3VwIHtcbiAgICBjb25zdHJ1Y3Rvcihjb2xsaWRlcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1hdHJpeEF1dG9VcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb2xsaWRlciA9IGNvbGxpZGVyO1xuICAgICAgICBpZiAodGhpcy5jb2xsaWRlci5zaGFwZSBpbnN0YW5jZW9mIFZSTVNwcmluZ0JvbmVDb2xsaWRlclNoYXBlU3BoZXJlKSB7XG4gICAgICAgICAgICB0aGlzLl9nZW9tZXRyeSA9IG5ldyBDb2xsaWRlclNoYXBlU3BoZXJlQnVmZmVyR2VvbWV0cnkodGhpcy5jb2xsaWRlci5zaGFwZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5jb2xsaWRlci5zaGFwZSBpbnN0YW5jZW9mIFZSTVNwcmluZ0JvbmVDb2xsaWRlclNoYXBlQ2Fwc3VsZSkge1xuICAgICAgICAgICAgdGhpcy5fZ2VvbWV0cnkgPSBuZXcgQ29sbGlkZXJTaGFwZUNhcHN1bGVCdWZmZXJHZW9tZXRyeSh0aGlzLmNvbGxpZGVyLnNoYXBlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVlJNU3ByaW5nQm9uZUNvbGxpZGVySGVscGVyOiBVbmtub3duIGNvbGxpZGVyIHNoYXBlIHR5cGUgZGV0ZWN0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5MaW5lQmFzaWNNYXRlcmlhbCh7XG4gICAgICAgICAgICBjb2xvcjogMHhmZjAwZmYsXG4gICAgICAgICAgICBkZXB0aFRlc3Q6IGZhbHNlLFxuICAgICAgICAgICAgZGVwdGhXcml0ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9saW5lID0gbmV3IFRIUkVFLkxpbmVTZWdtZW50cyh0aGlzLl9nZW9tZXRyeSwgbWF0ZXJpYWwpO1xuICAgICAgICB0aGlzLmFkZCh0aGlzLl9saW5lKTtcbiAgICB9XG4gICAgZGlzcG9zZSgpIHtcbiAgICAgICAgdGhpcy5fZ2VvbWV0cnkuZGlzcG9zZSgpO1xuICAgIH1cbiAgICB1cGRhdGVNYXRyaXhXb3JsZChmb3JjZSkge1xuICAgICAgICB0aGlzLmNvbGxpZGVyLnVwZGF0ZVdvcmxkTWF0cml4KHRydWUsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5tYXRyaXguY29weSh0aGlzLmNvbGxpZGVyLm1hdHJpeFdvcmxkKTtcbiAgICAgICAgY29uc3QgbWF0cml4V29ybGRFbGVtZW50cyA9IHRoaXMubWF0cml4LmVsZW1lbnRzO1xuICAgICAgICB0aGlzLl9nZW9tZXRyeS53b3JsZFNjYWxlID0gX3YzQSQyXG4gICAgICAgICAgICAuc2V0KG1hdHJpeFdvcmxkRWxlbWVudHNbMF0sIG1hdHJpeFdvcmxkRWxlbWVudHNbMV0sIG1hdHJpeFdvcmxkRWxlbWVudHNbMl0pXG4gICAgICAgICAgICAubGVuZ3RoKCk7IC8vIGNhbGN1bGF0ZSBzY2FsZSBvZiB4IGNvbXBvbmVudFxuICAgICAgICB0aGlzLl9nZW9tZXRyeS51cGRhdGUoKTtcbiAgICAgICAgc3VwZXIudXBkYXRlTWF0cml4V29ybGQoZm9yY2UpO1xuICAgIH1cbn1cblxuY2xhc3MgU3ByaW5nQm9uZUJ1ZmZlckdlb21ldHJ5IGV4dGVuZHMgVEhSRUUuQnVmZmVyR2VvbWV0cnkge1xuICAgIGNvbnN0cnVjdG9yKHNwcmluZ0JvbmUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy53b3JsZFNjYWxlID0gMS4wO1xuICAgICAgICB0aGlzLl9jdXJyZW50UmFkaXVzID0gMDtcbiAgICAgICAgdGhpcy5fY3VycmVudFRhaWwgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICB0aGlzLl9zcHJpbmdCb25lID0gc3ByaW5nQm9uZTtcbiAgICAgICAgdGhpcy5fYXR0clBvcyA9IG5ldyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUobmV3IEZsb2F0MzJBcnJheSgyOTQpLCAzKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgdGhpcy5fYXR0clBvcyk7XG4gICAgICAgIHRoaXMuX2F0dHJJbmRleCA9IG5ldyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUobmV3IFVpbnQxNkFycmF5KDE5NCksIDEpO1xuICAgICAgICB0aGlzLnNldEluZGV4KHRoaXMuX2F0dHJJbmRleCk7XG4gICAgICAgIHRoaXMuX2J1aWxkSW5kZXgoKTtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG4gICAgdXBkYXRlKCkge1xuICAgICAgICBsZXQgc2hvdWxkVXBkYXRlR2VvbWV0cnkgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgcmFkaXVzID0gdGhpcy5fc3ByaW5nQm9uZS5zZXR0aW5ncy5oaXRSYWRpdXMgLyB0aGlzLndvcmxkU2NhbGU7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50UmFkaXVzICE9PSByYWRpdXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRSYWRpdXMgPSByYWRpdXM7XG4gICAgICAgICAgICBzaG91bGRVcGRhdGVHZW9tZXRyeSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9jdXJyZW50VGFpbC5lcXVhbHModGhpcy5fc3ByaW5nQm9uZS5pbml0aWFsTG9jYWxDaGlsZFBvc2l0aW9uKSkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFRhaWwuY29weSh0aGlzLl9zcHJpbmdCb25lLmluaXRpYWxMb2NhbENoaWxkUG9zaXRpb24pO1xuICAgICAgICAgICAgc2hvdWxkVXBkYXRlR2VvbWV0cnkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaG91bGRVcGRhdGVHZW9tZXRyeSkge1xuICAgICAgICAgICAgdGhpcy5fYnVpbGRQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9idWlsZFBvc2l0aW9uKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDMyOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSAoaSAvIDE2LjApICogTWF0aC5QSTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJQb3Muc2V0WFlaKGksIE1hdGguY29zKHQpLCBNYXRoLnNpbih0KSwgMC4wKTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJQb3Muc2V0WFlaKDMyICsgaSwgMC4wLCBNYXRoLmNvcyh0KSwgTWF0aC5zaW4odCkpO1xuICAgICAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooNjQgKyBpLCBNYXRoLnNpbih0KSwgMC4wLCBNYXRoLmNvcyh0KSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY2FsZSh0aGlzLl9jdXJyZW50UmFkaXVzLCB0aGlzLl9jdXJyZW50UmFkaXVzLCB0aGlzLl9jdXJyZW50UmFkaXVzKTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGUodGhpcy5fY3VycmVudFRhaWwueCwgdGhpcy5fY3VycmVudFRhaWwueSwgdGhpcy5fY3VycmVudFRhaWwueik7XG4gICAgICAgIHRoaXMuX2F0dHJQb3Muc2V0WFlaKDk2LCAwLCAwLCAwKTtcbiAgICAgICAgdGhpcy5fYXR0clBvcy5zZXRYWVooOTcsIHRoaXMuX2N1cnJlbnRUYWlsLngsIHRoaXMuX2N1cnJlbnRUYWlsLnksIHRoaXMuX2N1cnJlbnRUYWlsLnopO1xuICAgICAgICB0aGlzLl9hdHRyUG9zLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgX2J1aWxkSW5kZXgoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzI7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaTEgPSAoaSArIDEpICUgMzI7XG4gICAgICAgICAgICB0aGlzLl9hdHRySW5kZXguc2V0WFkoaSAqIDIsIGksIGkxKTtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJJbmRleC5zZXRYWSg2NCArIGkgKiAyLCAzMiArIGksIDMyICsgaTEpO1xuICAgICAgICAgICAgdGhpcy5fYXR0ckluZGV4LnNldFhZKDEyOCArIGkgKiAyLCA2NCArIGksIDY0ICsgaTEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2F0dHJJbmRleC5zZXRYWSgxOTIsIDk2LCA5Nyk7XG4gICAgICAgIHRoaXMuX2F0dHJJbmRleC5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxufVxuXG5jb25zdCBfdjNBJDEgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY2xhc3MgVlJNU3ByaW5nQm9uZUpvaW50SGVscGVyIGV4dGVuZHMgVEhSRUUuR3JvdXAge1xuICAgIGNvbnN0cnVjdG9yKHNwcmluZ0JvbmUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5tYXRyaXhBdXRvVXBkYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3ByaW5nQm9uZSA9IHNwcmluZ0JvbmU7XG4gICAgICAgIHRoaXMuX2dlb21ldHJ5ID0gbmV3IFNwcmluZ0JvbmVCdWZmZXJHZW9tZXRyeSh0aGlzLnNwcmluZ0JvbmUpO1xuICAgICAgICBjb25zdCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5MaW5lQmFzaWNNYXRlcmlhbCh7XG4gICAgICAgICAgICBjb2xvcjogMHhmZmZmMDAsXG4gICAgICAgICAgICBkZXB0aFRlc3Q6IGZhbHNlLFxuICAgICAgICAgICAgZGVwdGhXcml0ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9saW5lID0gbmV3IFRIUkVFLkxpbmVTZWdtZW50cyh0aGlzLl9nZW9tZXRyeSwgbWF0ZXJpYWwpO1xuICAgICAgICB0aGlzLmFkZCh0aGlzLl9saW5lKTtcbiAgICB9XG4gICAgZGlzcG9zZSgpIHtcbiAgICAgICAgdGhpcy5fZ2VvbWV0cnkuZGlzcG9zZSgpO1xuICAgIH1cbiAgICB1cGRhdGVNYXRyaXhXb3JsZChmb3JjZSkge1xuICAgICAgICB0aGlzLnNwcmluZ0JvbmUuYm9uZS51cGRhdGVXb3JsZE1hdHJpeCh0cnVlLCBmYWxzZSk7XG4gICAgICAgIHRoaXMubWF0cml4LmNvcHkodGhpcy5zcHJpbmdCb25lLmJvbmUubWF0cml4V29ybGQpO1xuICAgICAgICBjb25zdCBtYXRyaXhXb3JsZEVsZW1lbnRzID0gdGhpcy5tYXRyaXguZWxlbWVudHM7XG4gICAgICAgIHRoaXMuX2dlb21ldHJ5LndvcmxkU2NhbGUgPSBfdjNBJDFcbiAgICAgICAgICAgIC5zZXQobWF0cml4V29ybGRFbGVtZW50c1swXSwgbWF0cml4V29ybGRFbGVtZW50c1sxXSwgbWF0cml4V29ybGRFbGVtZW50c1syXSlcbiAgICAgICAgICAgIC5sZW5ndGgoKTsgLy8gY2FsY3VsYXRlIHNjYWxlIG9mIHggY29tcG9uZW50XG4gICAgICAgIHRoaXMuX2dlb21ldHJ5LnVwZGF0ZSgpO1xuICAgICAgICBzdXBlci51cGRhdGVNYXRyaXhXb3JsZChmb3JjZSk7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjb2xsaWRlciBvZiBhIFZSTS5cbiAqL1xuY2xhc3MgVlJNU3ByaW5nQm9uZUNvbGxpZGVyIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0Qge1xuICAgIGNvbnN0cnVjdG9yKHNoYXBlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuc2hhcGUgPSBzaGFwZTtcbiAgICB9XG59XG5cbmNvbnN0IF9tYXRBJDEgPSBuZXcgVEhSRUUuTWF0cml4NCgpO1xuLyoqXG4gKiBBIGNvbXBhdCBmdW5jdGlvbiBmb3IgYE1hdHJpeDQuaW52ZXJ0KClgIC8gYE1hdHJpeDQuZ2V0SW52ZXJzZSgpYC5cbiAqIGBNYXRyaXg0LmludmVydCgpYCBpcyBpbnRyb2R1Y2VkIGluIHIxMjMgYW5kIGBNYXRyaXg0LmdldEludmVyc2UoKWAgZW1pdHMgYSB3YXJuaW5nLlxuICogV2UgYXJlIGdvaW5nIHRvIHVzZSB0aGlzIGNvbXBhdCBmb3IgYSB3aGlsZS5cbiAqIEBwYXJhbSB0YXJnZXQgQSB0YXJnZXQgbWF0cml4XG4gKi9cbmZ1bmN0aW9uIG1hdDRJbnZlcnRDb21wYXQodGFyZ2V0KSB7XG4gICAgaWYgKHRhcmdldC5pbnZlcnQpIHtcbiAgICAgICAgdGFyZ2V0LmludmVydCgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGFyZ2V0LmdldEludmVyc2UoX21hdEEkMS5jb3B5KHRhcmdldCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuXG5jbGFzcyBNYXRyaXg0SW52ZXJzZUNhY2hlIHtcbiAgICAvKipcbiAgICAgKiBJbnZlcnNlIG9mIGdpdmVuIG1hdHJpeC5cbiAgICAgKiBOb3RlIHRoYXQgaXQgd2lsbCByZXR1cm4gaXRzIGludGVybmFsIHByaXZhdGUgaW5zdGFuY2UuXG4gICAgICogTWFrZSBzdXJlIGNvcHlpbmcgdGhpcyBiZWZvcmUgbXV0YXRlIHRoaXMuXG4gICAgICovXG4gICAgZ2V0IGludmVyc2UoKSB7XG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRVcGRhdGVJbnZlcnNlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnZlcnNlQ2FjaGUuY29weSh0aGlzLm1hdHJpeCk7XG4gICAgICAgICAgICBtYXQ0SW52ZXJ0Q29tcGF0KHRoaXMuX2ludmVyc2VDYWNoZSk7XG4gICAgICAgICAgICB0aGlzLl9zaG91bGRVcGRhdGVJbnZlcnNlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludmVyc2VDYWNoZTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IobWF0cml4KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIGNhY2hlIG9mIGludmVyc2Ugb2YgY3VycmVudCBtYXRyaXguXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9pbnZlcnNlQ2FjaGUgPSBuZXcgVEhSRUUuTWF0cml4NCgpO1xuICAgICAgICAvKipcbiAgICAgICAgICogQSBmbGFnIHRoYXQgbWFrZXMgaXQgd2FudCB0byByZWNhbGN1bGF0ZSBpdHMge0BsaW5rIF9pbnZlcnNlQ2FjaGV9LlxuICAgICAgICAgKiBXaWxsIGJlIHNldCBgdHJ1ZWAgd2hlbiBgZWxlbWVudHNgIGFyZSBtdXRhdGVkIGFuZCBiZSB1c2VkIGluIGBnZXRJbnZlcnNlYC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX3Nob3VsZFVwZGF0ZUludmVyc2UgPSB0cnVlO1xuICAgICAgICB0aGlzLm1hdHJpeCA9IG1hdHJpeDtcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IHtcbiAgICAgICAgICAgIHNldDogKG9iaiwgcHJvcCwgbmV3VmFsKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvdWxkVXBkYXRlSW52ZXJzZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgb2JqW3Byb3BdID0gbmV3VmFsO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fb3JpZ2luYWxFbGVtZW50cyA9IG1hdHJpeC5lbGVtZW50cztcbiAgICAgICAgbWF0cml4LmVsZW1lbnRzID0gbmV3IFByb3h5KG1hdHJpeC5lbGVtZW50cywgaGFuZGxlcik7XG4gICAgfVxuICAgIHJldmVydCgpIHtcbiAgICAgICAgdGhpcy5tYXRyaXguZWxlbWVudHMgPSB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzO1xuICAgIH1cbn1cblxuLy8gYmFzZWQgb25cbi8vIGh0dHA6Ly9yb2NrZXRqdW1wLnNrci5qcC91bml0eTNkLzEwOS9cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kd2FuZ28vVW5pVlJNL2Jsb2IvbWFzdGVyL1NjcmlwdHMvU3ByaW5nQm9uZS9WUk1TcHJpbmdCb25lLmNzXG5jb25zdCBJREVOVElUWV9NQVRSSVg0ID0gbmV3IFRIUkVFLk1hdHJpeDQoKTtcbi8vIOioiOeul+S4reOBruS4gOaZguS/neWtmOeUqOWkieaVsO+8iOS4gOW6puOCpOODs+OCueOCv+ODs+OCueOCkuS9nOOBo+OBn+OCieOBguOBqOOBr+S9v+OBhOWbnuOBme+8iVxuY29uc3QgX3YzQSA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jb25zdCBfdjNCID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IF92M0MgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuLyoqXG4gKiBBIHRlbXBvcmFyeSB2YXJpYWJsZSB3aGljaCBpcyB1c2VkIGluIGB1cGRhdGVgXG4gKi9cbmNvbnN0IF93b3JsZFNwYWNlUG9zaXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuLyoqXG4gKiBBIHRlbXBvcmFyeSB2YXJpYWJsZSB3aGljaCBpcyB1c2VkIGluIGB1cGRhdGVgXG4gKi9cbmNvbnN0IF9jZW50ZXJTcGFjZVBvc2l0aW9uID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbi8qKlxuICogQSB0ZW1wb3JhcnkgdmFyaWFibGUgd2hpY2ggaXMgdXNlZCBpbiBgdXBkYXRlYFxuICovXG5jb25zdCBfbmV4dFRhaWwgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgX3F1YXRBID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IF9tYXRBID0gbmV3IFRIUkVFLk1hdHJpeDQoKTtcbmNvbnN0IF9tYXRCID0gbmV3IFRIUkVFLk1hdHJpeDQoKTtcbi8qKlxuICogQSBjbGFzcyByZXByZXNlbnRzIGEgc2luZ2xlIGpvaW50IG9mIGEgc3ByaW5nIGJvbmUuXG4gKiBJdCBzaG91bGQgYmUgbWFuYWdlZCBieSBhIFtbVlJNU3ByaW5nQm9uZU1hbmFnZXJdXS5cbiAqL1xuY2xhc3MgVlJNU3ByaW5nQm9uZUpvaW50IHtcbiAgICBnZXQgY2VudGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2VudGVyO1xuICAgIH1cbiAgICBzZXQgY2VudGVyKGNlbnRlcikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIC8vIHVuaW5zdGFsbCBpbnZlcnNlIGNhY2hlXG4gICAgICAgIGlmICgoX2EgPSB0aGlzLl9jZW50ZXIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS51c2VyRGF0YS5pbnZlcnNlQ2FjaGVQcm94eSkge1xuICAgICAgICAgICAgdGhpcy5fY2VudGVyLnVzZXJEYXRhLmludmVyc2VDYWNoZVByb3h5LnJldmVydCgpO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2NlbnRlci51c2VyRGF0YS5pbnZlcnNlQ2FjaGVQcm94eTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjaGFuZ2UgdGhlIGNlbnRlclxuICAgICAgICB0aGlzLl9jZW50ZXIgPSBjZW50ZXI7XG4gICAgICAgIC8vIGluc3RhbGwgaW52ZXJzZSBjYWNoZVxuICAgICAgICBpZiAodGhpcy5fY2VudGVyKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2NlbnRlci51c2VyRGF0YS5pbnZlcnNlQ2FjaGVQcm94eSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NlbnRlci51c2VyRGF0YS5pbnZlcnNlQ2FjaGVQcm94eSA9IG5ldyBNYXRyaXg0SW52ZXJzZUNhY2hlKHRoaXMuX2NlbnRlci5tYXRyaXhXb3JsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGluaXRpYWxMb2NhbENoaWxkUG9zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbml0aWFsTG9jYWxDaGlsZFBvc2l0aW9uO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB3b3JsZCBtYXRyaXggb2YgaXRzIHBhcmVudCBvYmplY3QuXG4gICAgICogTm90ZSB0aGF0IGl0IHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIG1hdHJpeC4gRG9uJ3QgbXV0YXRlIHRoaXMgZGlyZWN0bHkhXG4gICAgICovXG4gICAgZ2V0IF9wYXJlbnRNYXRyaXhXb3JsZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYm9uZS5wYXJlbnQgPyB0aGlzLmJvbmUucGFyZW50Lm1hdHJpeFdvcmxkIDogSURFTlRJVFlfTUFUUklYNDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbmV3IFZSTVNwcmluZ0JvbmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYm9uZSBBbiBPYmplY3QzRCB0aGF0IHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhpcyBib25lXG4gICAgICogQHBhcmFtIGNoaWxkIEFuIE9iamVjdDNEIHRoYXQgd2lsbCBiZSB1c2VkIGFzIGEgdGFpbCBvZiB0aGlzIHNwcmluZyBib25lLiBJdCBjYW4gYmUgbnVsbCB3aGVuIHRoZSBzcHJpbmcgYm9uZSBpcyBpbXBvcnRlZCBmcm9tIFZSTSAwLjBcbiAgICAgKiBAcGFyYW0gc2V0dGluZ3MgU2V2ZXJhbCBwYXJhbWV0ZXJzIHJlbGF0ZWQgdG8gYmVoYXZpb3Igb2YgdGhlIHNwcmluZyBib25lXG4gICAgICogQHBhcmFtIGNvbGxpZGVyR3JvdXBzIENvbGxpZGVyIGdyb3VwcyB0aGF0IHdpbGwgYmUgY29sbGlkZWQgd2l0aCB0aGlzIHNwcmluZyBib25lXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoYm9uZSwgY2hpbGQsIHNldHRpbmdzID0ge30sIGNvbGxpZGVyR3JvdXBzID0gW10pIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2Y7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDdXJyZW50IHBvc2l0aW9uIG9mIGNoaWxkIHRhaWwsIGluIGNlbnRlciB1bml0LiBXaWxsIGJlIHVzZWQgZm9yIHZlcmxldCBpbnRlZ3JhdGlvbi5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2N1cnJlbnRUYWlsID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFByZXZpb3VzIHBvc2l0aW9uIG9mIGNoaWxkIHRhaWwsIGluIGNlbnRlciB1bml0LiBXaWxsIGJlIHVzZWQgZm9yIHZlcmxldCBpbnRlZ3JhdGlvbi5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX3ByZXZUYWlsID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluaXRpYWwgYXhpcyBvZiB0aGUgYm9uZSwgaW4gbG9jYWwgdW5pdC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2JvbmVBeGlzID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExlbmd0aCBvZiB0aGUgYm9uZSBpbiB3b3JsZCB1bml0LlxuICAgICAgICAgKiBXaWxsIGJlIHVzZWQgZm9yIG5vcm1hbGl6YXRpb24gaW4gdXBkYXRlIGxvb3AsIHdpbGwgYmUgdXBkYXRlZCBieSB7QGxpbmsgX2NhbGNXb3JsZFNwYWNlQm9uZUxlbmd0aH0uXG4gICAgICAgICAqXG4gICAgICAgICAqIEl0J3Mgc2FtZSBhcyBsb2NhbCB1bml0IGxlbmd0aCB1bmxlc3MgdGhlcmUgYXJlIHNjYWxlIHRyYW5zZm9ybWF0aW9ucyBpbiB0aGUgd29ybGQgc3BhY2UuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl93b3JsZFNwYWNlQm9uZUxlbmd0aCA9IDAuMDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoaXMgc3ByaW5nYm9uZSB3aWxsIGJlIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIHNwYWNlIHJlbGF0aXZlIGZyb20gdGhpcyBvYmplY3QuXG4gICAgICAgICAqIElmIHRoaXMgaXMgYG51bGxgLCBzcHJpbmdib25lIHdpbGwgYmUgY2FsY3VsYXRlZCBpbiB3b3JsZCBzcGFjZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2NlbnRlciA9IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbml0aWFsIHN0YXRlIG9mIHRoZSBsb2NhbCBtYXRyaXggb2YgdGhlIGJvbmUuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9pbml0aWFsTG9jYWxNYXRyaXggPSBuZXcgVEhSRUUuTWF0cml4NCgpO1xuICAgICAgICAvKipcbiAgICAgICAgICogSW5pdGlhbCBzdGF0ZSBvZiB0aGUgcm90YXRpb24gb2YgdGhlIGJvbmUuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9pbml0aWFsTG9jYWxSb3RhdGlvbiA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbml0aWFsIHN0YXRlIG9mIHRoZSBwb3NpdGlvbiBvZiBpdHMgY2hpbGQuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9pbml0aWFsTG9jYWxDaGlsZFBvc2l0aW9uID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICAgICAgdGhpcy5ib25lID0gYm9uZTsgLy8gdW5pVlJN44Gn44GuIHBhcmVudFxuICAgICAgICB0aGlzLmJvbmUubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlOyAvLyB1cGRhdGXjgavjgojjgoroqIjnrpfjgZXjgozjgovjga7jgad0aHJlZS5qc+WGheOBp+OBruiHquWLleWHpueQhuOBr+S4jeimgVxuICAgICAgICB0aGlzLmNoaWxkID0gY2hpbGQ7XG4gICAgICAgIHRoaXMuc2V0dGluZ3MgPSB7XG4gICAgICAgICAgICBoaXRSYWRpdXM6IChfYSA9IHNldHRpbmdzLmhpdFJhZGl1cykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMC4wLFxuICAgICAgICAgICAgc3RpZmZuZXNzOiAoX2IgPSBzZXR0aW5ncy5zdGlmZm5lc3MpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDEuMCxcbiAgICAgICAgICAgIGdyYXZpdHlQb3dlcjogKF9jID0gc2V0dGluZ3MuZ3Jhdml0eVBvd2VyKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwLjAsXG4gICAgICAgICAgICBncmF2aXR5RGlyOiAoX2UgPSAoX2QgPSBzZXR0aW5ncy5ncmF2aXR5RGlyKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QuY2xvbmUoKSkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogbmV3IFRIUkVFLlZlY3RvcjMoMC4wLCAtMS4wLCAwLjApLFxuICAgICAgICAgICAgZHJhZ0ZvcmNlOiAoX2YgPSBzZXR0aW5ncy5kcmFnRm9yY2UpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDAuNCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb2xsaWRlckdyb3VwcyA9IGNvbGxpZGVyR3JvdXBzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhpcyBzcHJpbmcgYm9uZS5cbiAgICAgKiBZb3UgbWlnaHQgd2FudCB0byBjYWxsIHtAbGluayBWUk1TcHJpbmdCb25lTWFuYWdlci5zZXRJbml0U3RhdGV9IGluc3RlYWQuXG4gICAgICovXG4gICAgc2V0SW5pdFN0YXRlKCkge1xuICAgICAgICAvLyByZW1lbWJlciBpbml0aWFsIHBvc2l0aW9uIG9mIGl0c2VsZlxuICAgICAgICB0aGlzLl9pbml0aWFsTG9jYWxNYXRyaXguY29weSh0aGlzLmJvbmUubWF0cml4KTtcbiAgICAgICAgdGhpcy5faW5pdGlhbExvY2FsUm90YXRpb24uY29weSh0aGlzLmJvbmUucXVhdGVybmlvbik7XG4gICAgICAgIC8vIHNlZSBpbml0aWFsIHBvc2l0aW9uIG9mIGl0cyBsb2NhbCBjaGlsZFxuICAgICAgICBpZiAodGhpcy5jaGlsZCkge1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbExvY2FsQ2hpbGRQb3NpdGlvbi5jb3B5KHRoaXMuY2hpbGQucG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gdnJtMCByZXF1aXJlcyBhIDdjbSBmaXhlZCBib25lIGxlbmd0aCBmb3IgdGhlIGZpbmFsIG5vZGUgaW4gYSBjaGFpblxuICAgICAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vdnJtLWMvdnJtLXNwZWNpZmljYXRpb24vdHJlZS9tYXN0ZXIvc3BlY2lmaWNhdGlvbi9WUk1DX3NwcmluZ0JvbmUtMS4wI2Fib3V0LXNwcmluZy1jb25maWd1cmF0aW9uXG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsTG9jYWxDaGlsZFBvc2l0aW9uLmNvcHkodGhpcy5ib25lLnBvc2l0aW9uKS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcigwLjA3KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb3B5IHRoZSBjaGlsZCBwb3NpdGlvbiB0byB0YWlsc1xuICAgICAgICBjb25zdCBtYXRyaXhXb3JsZFRvQ2VudGVyID0gdGhpcy5fZ2V0TWF0cml4V29ybGRUb0NlbnRlcihfbWF0QSk7XG4gICAgICAgIHRoaXMuYm9uZS5sb2NhbFRvV29ybGQodGhpcy5fY3VycmVudFRhaWwuY29weSh0aGlzLl9pbml0aWFsTG9jYWxDaGlsZFBvc2l0aW9uKSkuYXBwbHlNYXRyaXg0KG1hdHJpeFdvcmxkVG9DZW50ZXIpO1xuICAgICAgICB0aGlzLl9wcmV2VGFpbC5jb3B5KHRoaXMuX2N1cnJlbnRUYWlsKTtcbiAgICAgICAgLy8gc2V0IGluaXRpYWwgc3RhdGVzIHRoYXQgYXJlIHJlbGF0ZWQgdG8gbG9jYWwgY2hpbGQgcG9zaXRpb25cbiAgICAgICAgdGhpcy5fYm9uZUF4aXMuY29weSh0aGlzLl9pbml0aWFsTG9jYWxDaGlsZFBvc2l0aW9uKS5ub3JtYWxpemUoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVzZXQgdGhlIHN0YXRlIG9mIHRoaXMgYm9uZS5cbiAgICAgKiBZb3UgbWlnaHQgd2FudCB0byBjYWxsIFtbVlJNU3ByaW5nQm9uZU1hbmFnZXIucmVzZXRdXSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHJlc2V0KCkge1xuICAgICAgICB0aGlzLmJvbmUucXVhdGVybmlvbi5jb3B5KHRoaXMuX2luaXRpYWxMb2NhbFJvdGF0aW9uKTtcbiAgICAgICAgLy8gV2UgbmVlZCB0byB1cGRhdGUgaXRzIG1hdHJpeFdvcmxkIG1hbnVhbGx5LCBzaW5jZSB3ZSB0d2Vha2VkIHRoZSBib25lIGJ5IG91ciBoYW5kXG4gICAgICAgIHRoaXMuYm9uZS51cGRhdGVNYXRyaXgoKTtcbiAgICAgICAgdGhpcy5ib25lLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5fcGFyZW50TWF0cml4V29ybGQsIHRoaXMuYm9uZS5tYXRyaXgpO1xuICAgICAgICAvLyBBcHBseSB1cGRhdGVkIHBvc2l0aW9uIHRvIHRhaWwgc3RhdGVzXG4gICAgICAgIGNvbnN0IG1hdHJpeFdvcmxkVG9DZW50ZXIgPSB0aGlzLl9nZXRNYXRyaXhXb3JsZFRvQ2VudGVyKF9tYXRBKTtcbiAgICAgICAgdGhpcy5ib25lLmxvY2FsVG9Xb3JsZCh0aGlzLl9jdXJyZW50VGFpbC5jb3B5KHRoaXMuX2luaXRpYWxMb2NhbENoaWxkUG9zaXRpb24pKS5hcHBseU1hdHJpeDQobWF0cml4V29ybGRUb0NlbnRlcik7XG4gICAgICAgIHRoaXMuX3ByZXZUYWlsLmNvcHkodGhpcy5fY3VycmVudFRhaWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgdGhlIHN0YXRlIG9mIHRoaXMgYm9uZS5cbiAgICAgKiBZb3UgbWlnaHQgd2FudCB0byBjYWxsIFtbVlJNU3ByaW5nQm9uZU1hbmFnZXIudXBkYXRlXV0gaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkZWx0YSBkZWx0YVRpbWVcbiAgICAgKi9cbiAgICB1cGRhdGUoZGVsdGEpIHtcbiAgICAgICAgaWYgKGRlbHRhIDw9IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgX3dvcmxkU3BhY2VCb25lTGVuZ3RoXG4gICAgICAgIHRoaXMuX2NhbGNXb3JsZFNwYWNlQm9uZUxlbmd0aCgpO1xuICAgICAgICAvLyBHZXQgYm9uZSBwb3NpdGlvbiBpbiBjZW50ZXIgc3BhY2VcbiAgICAgICAgX3dvcmxkU3BhY2VQb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5ib25lLm1hdHJpeFdvcmxkKTtcbiAgICAgICAgbGV0IG1hdHJpeFdvcmxkVG9DZW50ZXIgPSB0aGlzLl9nZXRNYXRyaXhXb3JsZFRvQ2VudGVyKF9tYXRBKTtcbiAgICAgICAgX2NlbnRlclNwYWNlUG9zaXRpb24uY29weShfd29ybGRTcGFjZVBvc2l0aW9uKS5hcHBseU1hdHJpeDQobWF0cml4V29ybGRUb0NlbnRlcik7XG4gICAgICAgIGNvbnN0IHF1YXRXb3JsZFRvQ2VudGVyID0gX3F1YXRBLnNldEZyb21Sb3RhdGlvbk1hdHJpeChtYXRyaXhXb3JsZFRvQ2VudGVyKTtcbiAgICAgICAgLy8gR2V0IHBhcmVudCBtYXRyaXggaW4gY2VudGVyIHNwYWNlXG4gICAgICAgIGNvbnN0IGNlbnRlclNwYWNlUGFyZW50TWF0cml4ID0gX21hdEIuY29weShtYXRyaXhXb3JsZFRvQ2VudGVyKS5tdWx0aXBseSh0aGlzLl9wYXJlbnRNYXRyaXhXb3JsZCk7XG4gICAgICAgIC8vIEdldCBib25lQXhpcyBpbiBjZW50ZXIgc3BhY2VcbiAgICAgICAgY29uc3QgY2VudGVyU3BhY2VCb25lQXhpcyA9IF92M0JcbiAgICAgICAgICAgIC5jb3B5KHRoaXMuX2JvbmVBeGlzKVxuICAgICAgICAgICAgLmFwcGx5TWF0cml4NCh0aGlzLl9pbml0aWFsTG9jYWxNYXRyaXgpXG4gICAgICAgICAgICAuYXBwbHlNYXRyaXg0KGNlbnRlclNwYWNlUGFyZW50TWF0cml4KVxuICAgICAgICAgICAgLnN1YihfY2VudGVyU3BhY2VQb3NpdGlvbilcbiAgICAgICAgICAgIC5ub3JtYWxpemUoKTtcbiAgICAgICAgLy8gZ3Jhdml0eSBpbiBjZW50ZXIgc3BhY2VcbiAgICAgICAgY29uc3QgY2VudGVyU3BhY2VHcmF2aXR5ID0gX3YzQy5jb3B5KHRoaXMuc2V0dGluZ3MuZ3Jhdml0eURpcikuYXBwbHlRdWF0ZXJuaW9uKHF1YXRXb3JsZFRvQ2VudGVyKS5ub3JtYWxpemUoKTtcbiAgICAgICAgY29uc3QgbWF0cml4Q2VudGVyVG9Xb3JsZCA9IHRoaXMuX2dldE1hdHJpeENlbnRlclRvV29ybGQoX21hdEEpO1xuICAgICAgICAvLyB2ZXJsZXTnqY3liIbjgafmrKHjga7kvY3nva7jgpLoqIjnrpdcbiAgICAgICAgX25leHRUYWlsXG4gICAgICAgICAgICAuY29weSh0aGlzLl9jdXJyZW50VGFpbClcbiAgICAgICAgICAgIC5hZGQoX3YzQVxuICAgICAgICAgICAgLmNvcHkodGhpcy5fY3VycmVudFRhaWwpXG4gICAgICAgICAgICAuc3ViKHRoaXMuX3ByZXZUYWlsKVxuICAgICAgICAgICAgLm11bHRpcGx5U2NhbGFyKDEgLSB0aGlzLnNldHRpbmdzLmRyYWdGb3JjZSkpIC8vIOWJjeODleODrOODvOODoOOBruenu+WLleOCkue2mee2muOBmeOCiyjmuJvoobDjgoLjgYLjgovjgogpXG4gICAgICAgICAgICAuYWRkKF92M0EuY29weShjZW50ZXJTcGFjZUJvbmVBeGlzKS5tdWx0aXBseVNjYWxhcih0aGlzLnNldHRpbmdzLnN0aWZmbmVzcyAqIGRlbHRhKSkgLy8g6Kaq44Gu5Zue6Lui44Gr44KI44KL5a2Q44Oc44O844Oz44Gu56e75YuV55uu5qiZXG4gICAgICAgICAgICAuYWRkKF92M0EuY29weShjZW50ZXJTcGFjZUdyYXZpdHkpLm11bHRpcGx5U2NhbGFyKHRoaXMuc2V0dGluZ3MuZ3Jhdml0eVBvd2VyICogZGVsdGEpKSAvLyDlpJblipvjgavjgojjgovnp7vli5Xph49cbiAgICAgICAgICAgIC5hcHBseU1hdHJpeDQobWF0cml4Q2VudGVyVG9Xb3JsZCk7IC8vIHRhaWzjgpJ3b3JsZCBzcGFjZeOBq+aIu+OBmVxuICAgICAgICAvLyBub3JtYWxpemUgYm9uZSBsZW5ndGhcbiAgICAgICAgX25leHRUYWlsLnN1Yihfd29ybGRTcGFjZVBvc2l0aW9uKS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0aGlzLl93b3JsZFNwYWNlQm9uZUxlbmd0aCkuYWRkKF93b3JsZFNwYWNlUG9zaXRpb24pO1xuICAgICAgICAvLyBDb2xsaXNpb27jgafnp7vli5VcbiAgICAgICAgdGhpcy5fY29sbGlzaW9uKF9uZXh0VGFpbCk7XG4gICAgICAgIC8vIHVwZGF0ZSBwcmV2VGFpbCBhbmQgY3VycmVudFRhaWxcbiAgICAgICAgbWF0cml4V29ybGRUb0NlbnRlciA9IHRoaXMuX2dldE1hdHJpeFdvcmxkVG9DZW50ZXIoX21hdEEpO1xuICAgICAgICB0aGlzLl9wcmV2VGFpbC5jb3B5KHRoaXMuX2N1cnJlbnRUYWlsKTtcbiAgICAgICAgdGhpcy5fY3VycmVudFRhaWwuY29weShfdjNBLmNvcHkoX25leHRUYWlsKS5hcHBseU1hdHJpeDQobWF0cml4V29ybGRUb0NlbnRlcikpO1xuICAgICAgICAvLyBBcHBseSByb3RhdGlvbiwgY29udmVydCB2ZWN0b3IzIHRoaW5nIGludG8gYWN0dWFsIHF1YXRlcm5pb25cbiAgICAgICAgLy8gT3JpZ2luYWwgVW5pVlJNIGlzIGRvaW5nIGNlbnRlciB1bml0IGNhbGN1bHVzIGF0IGhlcmUgYnV0IHdlJ3JlIGdvbm5hIGRvIHRoaXMgb24gbG9jYWwgdW5pdFxuICAgICAgICBjb25zdCB3b3JsZFNwYWNlSW5pdGlhbE1hdHJpeEludiA9IG1hdDRJbnZlcnRDb21wYXQoX21hdEEuY29weSh0aGlzLl9wYXJlbnRNYXRyaXhXb3JsZCkubXVsdGlwbHkodGhpcy5faW5pdGlhbExvY2FsTWF0cml4KSk7XG4gICAgICAgIGNvbnN0IGFwcGx5Um90YXRpb24gPSBfcXVhdEEuc2V0RnJvbVVuaXRWZWN0b3JzKHRoaXMuX2JvbmVBeGlzLCBfdjNBLmNvcHkoX25leHRUYWlsKS5hcHBseU1hdHJpeDQod29ybGRTcGFjZUluaXRpYWxNYXRyaXhJbnYpLm5vcm1hbGl6ZSgpKTtcbiAgICAgICAgdGhpcy5ib25lLnF1YXRlcm5pb24uY29weSh0aGlzLl9pbml0aWFsTG9jYWxSb3RhdGlvbikubXVsdGlwbHkoYXBwbHlSb3RhdGlvbik7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIGl0cyBtYXRyaXhXb3JsZCBtYW51YWxseSwgc2luY2Ugd2UgdHdlYWtlZCB0aGUgYm9uZSBieSBvdXIgaGFuZFxuICAgICAgICB0aGlzLmJvbmUudXBkYXRlTWF0cml4KCk7XG4gICAgICAgIHRoaXMuYm9uZS5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKHRoaXMuX3BhcmVudE1hdHJpeFdvcmxkLCB0aGlzLmJvbmUubWF0cml4KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRG8gY29sbGlzaW9uIG1hdGggYWdhaW5zdCBldmVyeSBjb2xsaWRlcnMgYXR0YWNoZWQgdG8gdGhpcyBib25lLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhaWwgVGhlIHRhaWwgeW91IHdhbnQgdG8gcHJvY2Vzc1xuICAgICAqL1xuICAgIF9jb2xsaXNpb24odGFpbCkge1xuICAgICAgICB0aGlzLmNvbGxpZGVyR3JvdXBzLmZvckVhY2goKGNvbGxpZGVyR3JvdXApID0+IHtcbiAgICAgICAgICAgIGNvbGxpZGVyR3JvdXAuY29sbGlkZXJzLmZvckVhY2goKGNvbGxpZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdCA9IGNvbGxpZGVyLnNoYXBlLmNhbGN1bGF0ZUNvbGxpc2lvbihjb2xsaWRlci5tYXRyaXhXb3JsZCwgdGFpbCwgdGhpcy5zZXR0aW5ncy5oaXRSYWRpdXMsIF92M0EpO1xuICAgICAgICAgICAgICAgIGlmIChkaXN0IDwgMC4wKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGhpdFxuICAgICAgICAgICAgICAgICAgICB0YWlsLmFkZChfdjNBLm11bHRpcGx5U2NhbGFyKC1kaXN0KSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSBib25lIGxlbmd0aFxuICAgICAgICAgICAgICAgICAgICB0YWlsLnN1Yihfd29ybGRTcGFjZVBvc2l0aW9uKS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0aGlzLl93b3JsZFNwYWNlQm9uZUxlbmd0aCkuYWRkKF93b3JsZFNwYWNlUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlIHRoZSB7QGxpbmsgX3dvcmxkU3BhY2VCb25lTGVuZ3RofS5cbiAgICAgKiBJbnRlbmRlZCB0byBiZSB1c2VkIGluIHtAbGluayB1cGRhdGV9LlxuICAgICAqL1xuICAgIF9jYWxjV29ybGRTcGFjZUJvbmVMZW5ndGgoKSB7XG4gICAgICAgIF92M0Euc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMuYm9uZS5tYXRyaXhXb3JsZCk7IC8vIGdldCB3b3JsZCBwb3NpdGlvbiBvZiB0aGlzLmJvbmVcbiAgICAgICAgaWYgKHRoaXMuY2hpbGQpIHtcbiAgICAgICAgICAgIF92M0Iuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMuY2hpbGQubWF0cml4V29ybGQpOyAvLyBnZXQgd29ybGQgcG9zaXRpb24gb2YgdGhpcy5jaGlsZFxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgX3YzQi5jb3B5KHRoaXMuX2luaXRpYWxMb2NhbENoaWxkUG9zaXRpb24pO1xuICAgICAgICAgICAgX3YzQi5hcHBseU1hdHJpeDQodGhpcy5ib25lLm1hdHJpeFdvcmxkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl93b3JsZFNwYWNlQm9uZUxlbmd0aCA9IF92M0Euc3ViKF92M0IpLmxlbmd0aCgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBtYXRyaXggdGhhdCBjb252ZXJ0cyBjZW50ZXIgc3BhY2UgaW50byB3b3JsZCBzcGFjZS5cbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRhcmdldCBtYXRyaXhcbiAgICAgKi9cbiAgICBfZ2V0TWF0cml4Q2VudGVyVG9Xb3JsZCh0YXJnZXQpIHtcbiAgICAgICAgaWYgKHRoaXMuX2NlbnRlcikge1xuICAgICAgICAgICAgdGFyZ2V0LmNvcHkodGhpcy5fY2VudGVyLm1hdHJpeFdvcmxkKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldC5pZGVudGl0eSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG1hdHJpeCB0aGF0IGNvbnZlcnRzIHdvcmxkIHNwYWNlIGludG8gY2VudGVyIHNwYWNlLlxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGFyZ2V0IG1hdHJpeFxuICAgICAqL1xuICAgIF9nZXRNYXRyaXhXb3JsZFRvQ2VudGVyKHRhcmdldCkge1xuICAgICAgICBpZiAodGhpcy5fY2VudGVyKSB7XG4gICAgICAgICAgICB0YXJnZXQuY29weSh0aGlzLl9jZW50ZXIudXNlckRhdGEuaW52ZXJzZUNhY2hlUHJveHkuaW52ZXJzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0YXJnZXQuaWRlbnRpdHkoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcblxyXG5mdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XG5cbmZ1bmN0aW9uIHRyYXZlcnNlQW5jZXN0b3JzRnJvbVJvb3Qob2JqZWN0LCBjYWxsYmFjaykge1xuICAgIGNvbnN0IGFuY2VzdG9ycyA9IFtdO1xuICAgIGxldCBoZWFkID0gb2JqZWN0O1xuICAgIHdoaWxlIChoZWFkICE9PSBudWxsKSB7XG4gICAgICAgIGFuY2VzdG9ycy51bnNoaWZ0KGhlYWQpO1xuICAgICAgICBoZWFkID0gaGVhZC5wYXJlbnQ7XG4gICAgfVxuICAgIGFuY2VzdG9ycy5mb3JFYWNoKChhbmNlc3RvcikgPT4ge1xuICAgICAgICBjYWxsYmFjayhhbmNlc3Rvcik7XG4gICAgfSk7XG59XG5cbi8qKlxuICogVHJhdmVyc2UgY2hpbGRyZW4gb2YgZ2l2ZW4gb2JqZWN0IGFuZCBleGVjdXRlIGdpdmVuIGNhbGxiYWNrLlxuICogVGhlIGdpdmVuIG9iamVjdCBpdHNlbGYgd29udCBiZSBnaXZlbiB0byB0aGUgY2FsbGJhY2suXG4gKiBJZiB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjYWxsYmFjayBpcyBgdHJ1ZWAsIGl0IHdpbGwgaGFsdCB0aGUgdHJhdmVyc2FsIG9mIGl0cyBjaGlsZHJlbi5cbiAqIEBwYXJhbSBvYmplY3QgQSByb290IG9iamVjdFxuICogQHBhcmFtIGNhbGxiYWNrIEEgY2FsbGJhY2sgZnVuY3Rpb24gY2FsbGVkIGZvciBlYWNoIGNoaWxkcmVuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlQ2hpbGRyZW5VbnRpbENvbmRpdGlvbk1ldChvYmplY3QsIGNhbGxiYWNrKSB7XG4gICAgb2JqZWN0LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxiYWNrKGNoaWxkKTtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgIHRyYXZlcnNlQ2hpbGRyZW5VbnRpbENvbmRpdGlvbk1ldChjaGlsZCwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmNsYXNzIFZSTVNwcmluZ0JvbmVNYW5hZ2VyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5fam9pbnRzID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLl9vYmplY3RTcHJpbmdCb25lc01hcCA9IG5ldyBNYXAoKTtcbiAgICB9XG4gICAgZ2V0IGpvaW50cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2pvaW50cztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBqb2ludHN9IGluc3RlYWQuXG4gICAgICovXG4gICAgZ2V0IHNwcmluZ0JvbmVzKCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1ZSTVNwcmluZ0JvbmVNYW5hZ2VyOiBzcHJpbmdCb25lcyBpcyBkZXByZWNhdGVkLiB1c2Ugam9pbnRzIGluc3RlYWQuJyk7XG4gICAgICAgIHJldHVybiB0aGlzLl9qb2ludHM7XG4gICAgfVxuICAgIGdldCBjb2xsaWRlckdyb3VwcygpIHtcbiAgICAgICAgY29uc3Qgc2V0ID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLl9qb2ludHMuZm9yRWFjaCgoc3ByaW5nQm9uZSkgPT4ge1xuICAgICAgICAgICAgc3ByaW5nQm9uZS5jb2xsaWRlckdyb3Vwcy5mb3JFYWNoKChjb2xsaWRlckdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0LmFkZChjb2xsaWRlckdyb3VwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oc2V0KTtcbiAgICB9XG4gICAgZ2V0IGNvbGxpZGVycygpIHtcbiAgICAgICAgY29uc3Qgc2V0ID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLmNvbGxpZGVyR3JvdXBzLmZvckVhY2goKGNvbGxpZGVyR3JvdXApID0+IHtcbiAgICAgICAgICAgIGNvbGxpZGVyR3JvdXAuY29sbGlkZXJzLmZvckVhY2goKGNvbGxpZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0LmFkZChjb2xsaWRlcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHNldCk7XG4gICAgfVxuICAgIGFkZEpvaW50KGpvaW50KSB7XG4gICAgICAgIHRoaXMuX2pvaW50cy5hZGQoam9pbnQpO1xuICAgICAgICBsZXQgb2JqZWN0U2V0ID0gdGhpcy5fb2JqZWN0U3ByaW5nQm9uZXNNYXAuZ2V0KGpvaW50LmJvbmUpO1xuICAgICAgICBpZiAob2JqZWN0U2V0ID09IG51bGwpIHtcbiAgICAgICAgICAgIG9iamVjdFNldCA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgIHRoaXMuX29iamVjdFNwcmluZ0JvbmVzTWFwLnNldChqb2ludC5ib25lLCBvYmplY3RTZXQpO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdFNldC5hZGQoam9pbnQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIGFkZEpvaW50fSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGFkZFNwcmluZ0JvbmUoam9pbnQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdWUk1TcHJpbmdCb25lTWFuYWdlcjogYWRkU3ByaW5nQm9uZSgpIGlzIGRlcHJlY2F0ZWQuIHVzZSBhZGRKb2ludCgpIGluc3RlYWQuJyk7XG4gICAgICAgIHRoaXMuYWRkSm9pbnQoam9pbnQpO1xuICAgIH1cbiAgICBkZWxldGVKb2ludChqb2ludCkge1xuICAgICAgICB0aGlzLl9qb2ludHMuZGVsZXRlKGpvaW50KTtcbiAgICAgICAgY29uc3Qgb2JqZWN0U2V0ID0gdGhpcy5fb2JqZWN0U3ByaW5nQm9uZXNNYXAuZ2V0KGpvaW50LmJvbmUpO1xuICAgICAgICBvYmplY3RTZXQuZGVsZXRlKGpvaW50KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBkZWxldGVKb2ludH0gaW5zdGVhZC5cbiAgICAgKi9cbiAgICBkZWxldGVTcHJpbmdCb25lKGpvaW50KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignVlJNU3ByaW5nQm9uZU1hbmFnZXI6IGRlbGV0ZVNwcmluZ0JvbmUoKSBpcyBkZXByZWNhdGVkLiB1c2UgZGVsZXRlSm9pbnQoKSBpbnN0ZWFkLicpO1xuICAgICAgICB0aGlzLmRlbGV0ZUpvaW50KGpvaW50KTtcbiAgICB9XG4gICAgc2V0SW5pdFN0YXRlKCkge1xuICAgICAgICBjb25zdCBzcHJpbmdCb25lc1RyaWVkID0gbmV3IFNldCgpO1xuICAgICAgICBjb25zdCBzcHJpbmdCb25lc0RvbmUgPSBuZXcgU2V0KCk7XG4gICAgICAgIGNvbnN0IG9iamVjdFVwZGF0ZWQgPSBuZXcgU2V0KCk7XG4gICAgICAgIGZvciAoY29uc3Qgc3ByaW5nQm9uZSBvZiB0aGlzLl9qb2ludHMpIHtcbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NTcHJpbmdCb25lKHNwcmluZ0JvbmUsIHNwcmluZ0JvbmVzVHJpZWQsIHNwcmluZ0JvbmVzRG9uZSwgb2JqZWN0VXBkYXRlZCwgKHNwcmluZ0JvbmUpID0+IHNwcmluZ0JvbmUuc2V0SW5pdFN0YXRlKCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlc2V0KCkge1xuICAgICAgICBjb25zdCBzcHJpbmdCb25lc1RyaWVkID0gbmV3IFNldCgpO1xuICAgICAgICBjb25zdCBzcHJpbmdCb25lc0RvbmUgPSBuZXcgU2V0KCk7XG4gICAgICAgIGNvbnN0IG9iamVjdFVwZGF0ZWQgPSBuZXcgU2V0KCk7XG4gICAgICAgIGZvciAoY29uc3Qgc3ByaW5nQm9uZSBvZiB0aGlzLl9qb2ludHMpIHtcbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NTcHJpbmdCb25lKHNwcmluZ0JvbmUsIHNwcmluZ0JvbmVzVHJpZWQsIHNwcmluZ0JvbmVzRG9uZSwgb2JqZWN0VXBkYXRlZCwgKHNwcmluZ0JvbmUpID0+IHNwcmluZ0JvbmUucmVzZXQoKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdXBkYXRlKGRlbHRhKSB7XG4gICAgICAgIGNvbnN0IHNwcmluZ0JvbmVzVHJpZWQgPSBuZXcgU2V0KCk7XG4gICAgICAgIGNvbnN0IHNwcmluZ0JvbmVzRG9uZSA9IG5ldyBTZXQoKTtcbiAgICAgICAgY29uc3Qgb2JqZWN0VXBkYXRlZCA9IG5ldyBTZXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBzcHJpbmdCb25lIG9mIHRoaXMuX2pvaW50cykge1xuICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBzcHJpbmdib25lXG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzU3ByaW5nQm9uZShzcHJpbmdCb25lLCBzcHJpbmdCb25lc1RyaWVkLCBzcHJpbmdCb25lc0RvbmUsIG9iamVjdFVwZGF0ZWQsIChzcHJpbmdCb25lKSA9PiBzcHJpbmdCb25lLnVwZGF0ZShkZWx0YSkpO1xuICAgICAgICAgICAgLy8gdXBkYXRlIGNoaWxkcmVuIHdvcmxkIG1hdHJpY2VzXG4gICAgICAgICAgICAvLyBpdCBpcyByZXF1aXJlZCB3aGVuIHRoZSBzcHJpbmcgYm9uZSBjaGFpbiBpcyBzcGFyc2VcbiAgICAgICAgICAgIHRyYXZlcnNlQ2hpbGRyZW5VbnRpbENvbmRpdGlvbk1ldChzcHJpbmdCb25lLmJvbmUsIChvYmplY3QpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBvYmplY3QgaGFzIGF0dGFjaGVkIHNwcmluZ2JvbmUsIGhhbHQgdGhlIHRyYXZlcnNhbFxuICAgICAgICAgICAgICAgIGlmICgoKF9iID0gKF9hID0gdGhpcy5fb2JqZWN0U3ByaW5nQm9uZXNNYXAuZ2V0KG9iamVjdCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zaXplKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwKSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSB1cGRhdGUgaXRzIHdvcmxkIG1hdHJpeFxuICAgICAgICAgICAgICAgIG9iamVjdC51cGRhdGVXb3JsZE1hdHJpeChmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBhIHNwcmluZyBib25lLlxuICAgICAqIElmIHRoZXJlIGFyZSBvdGhlciBzcHJpbmcgYm9uZSB0aGF0IGFyZSBkZXBlbmRhbnQsIGl0IHdpbGwgdHJ5IHRvIHVwZGF0ZSB0aGVtIHJlY3Vyc2l2ZWx5LlxuICAgICAqIEl0IHVwZGF0ZXMgbWF0cml4V29ybGQgb2YgYWxsIGFuY2VzdG9ycyBhbmQgbXlzZWxmLlxuICAgICAqIEl0IG1pZ2h0IHRocm93IGFuIGVycm9yIGlmIHRoZXJlIGFyZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMuXG4gICAgICpcbiAgICAgKiBJbnRlbmRlZCB0byBiZSB1c2VkIGluIHtAbGluayB1cGRhdGV9IGFuZCB7QGxpbmsgX3Byb2Nlc3NTcHJpbmdCb25lfSBpdHNlbGYgcmVjdXJzaXZlbHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3ByaW5nQm9uZSBBIHNwcmluZ0JvbmUgeW91IHdhbnQgdG8gdXBkYXRlXG4gICAgICogQHBhcmFtIHNwcmluZ0JvbmVzVHJpZWQgU2V0IG9mIHNwcmluZ0JvbmVzIHRoYXQgYXJlIGFscmVhZHkgdHJpZWQgdG8gYmUgdXBkYXRlZFxuICAgICAqIEBwYXJhbSBzcHJpbmdCb25lc0RvbmUgU2V0IG9mIHNwcmluZ0JvbmVzIHRoYXQgYXJlIGFscmVhZHkgdXAgdG8gZGF0ZVxuICAgICAqIEBwYXJhbSBvYmplY3RVcGRhdGVkIFNldCBvZiBvYmplY3QzRCB3aG9zZSBtYXRyaXhXb3JsZCBpcyB1cGRhdGVkXG4gICAgICovXG4gICAgX3Byb2Nlc3NTcHJpbmdCb25lKHNwcmluZ0JvbmUsIHNwcmluZ0JvbmVzVHJpZWQsIHNwcmluZ0JvbmVzRG9uZSwgb2JqZWN0VXBkYXRlZCwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKHNwcmluZ0JvbmVzRG9uZS5oYXMoc3ByaW5nQm9uZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3ByaW5nQm9uZXNUcmllZC5oYXMoc3ByaW5nQm9uZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVlJNU3ByaW5nQm9uZU1hbmFnZXI6IENpcmN1bGFyIGRlcGVuZGVuY3kgZGV0ZWN0ZWQgd2hpbGUgdXBkYXRpbmcgc3ByaW5nYm9uZXMnKTtcbiAgICAgICAgfVxuICAgICAgICBzcHJpbmdCb25lc1RyaWVkLmFkZChzcHJpbmdCb25lKTtcbiAgICAgICAgY29uc3QgZGVwT2JqZWN0cyA9IHRoaXMuX2dldERlcGVuZGVuY2llcyhzcHJpbmdCb25lKTtcbiAgICAgICAgZm9yIChjb25zdCBkZXBPYmplY3Qgb2YgZGVwT2JqZWN0cykge1xuICAgICAgICAgICAgdHJhdmVyc2VBbmNlc3RvcnNGcm9tUm9vdChkZXBPYmplY3QsIChkZXBPYmplY3RBbmNlc3RvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9iamVjdFNldCA9IHRoaXMuX29iamVjdFNwcmluZ0JvbmVzTWFwLmdldChkZXBPYmplY3RBbmNlc3Rvcik7XG4gICAgICAgICAgICAgICAgaWYgKG9iamVjdFNldCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcFNwcmluZ0JvbmUgb2Ygb2JqZWN0U2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzU3ByaW5nQm9uZShkZXBTcHJpbmdCb25lLCBzcHJpbmdCb25lc1RyaWVkLCBzcHJpbmdCb25lc0RvbmUsIG9iamVjdFVwZGF0ZWQsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICghb2JqZWN0VXBkYXRlZC5oYXMoZGVwT2JqZWN0QW5jZXN0b3IpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBtYXRyaXggb2Ygbm9uLXNwcmluZ2JvbmVcbiAgICAgICAgICAgICAgICAgICAgZGVwT2JqZWN0QW5jZXN0b3IudXBkYXRlV29ybGRNYXRyaXgoZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0VXBkYXRlZC5hZGQoZGVwT2JqZWN0QW5jZXN0b3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHVwZGF0ZSBteSBtYXRyaXhcbiAgICAgICAgc3ByaW5nQm9uZS5ib25lLnVwZGF0ZU1hdHJpeCgpO1xuICAgICAgICBzcHJpbmdCb25lLmJvbmUudXBkYXRlV29ybGRNYXRyaXgoZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgY2FsbGJhY2soc3ByaW5nQm9uZSk7XG4gICAgICAgIG9iamVjdFVwZGF0ZWQuYWRkKHNwcmluZ0JvbmUuYm9uZSk7XG4gICAgICAgIHNwcmluZ0JvbmVzRG9uZS5hZGQoc3ByaW5nQm9uZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIHNldCBvZiBvYmplY3RzIHRoYXQgYXJlIGRlcGVuZGFudCBvZiBnaXZlbiBzcHJpbmcgYm9uZS5cbiAgICAgKiBAcGFyYW0gc3ByaW5nQm9uZSBBIHNwcmluZyBib25lXG4gICAgICogQHJldHVybiBBIHNldCBvZiBvYmplY3RzIHRoYXQgYXJlIGRlcGVuZGFudCBvZiBnaXZlbiBzcHJpbmcgYm9uZVxuICAgICAqL1xuICAgIF9nZXREZXBlbmRlbmNpZXMoc3ByaW5nQm9uZSkge1xuICAgICAgICBjb25zdCBzZXQgPSBuZXcgU2V0KCk7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHNwcmluZ0JvbmUuYm9uZS5wYXJlbnQ7XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIHNldC5hZGQocGFyZW50KTtcbiAgICAgICAgfVxuICAgICAgICBzcHJpbmdCb25lLmNvbGxpZGVyR3JvdXBzLmZvckVhY2goKGNvbGxpZGVyR3JvdXApID0+IHtcbiAgICAgICAgICAgIGNvbGxpZGVyR3JvdXAuY29sbGlkZXJzLmZvckVhY2goKGNvbGxpZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0LmFkZChjb2xsaWRlcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzZXQ7XG4gICAgfVxufVxuXG4vKipcbiAqIFBvc3NpYmxlIHNwZWMgdmVyc2lvbnMgaXQgcmVjb2duaXplcy5cbiAqL1xuY29uc3QgUE9TU0lCTEVfU1BFQ19WRVJTSU9OUyA9IG5ldyBTZXQoWycxLjAnLCAnMS4wLWJldGEnXSk7XG5jbGFzcyBWUk1TcHJpbmdCb25lTG9hZGVyUGx1Z2luIHtcbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIFZSTVNwcmluZ0JvbmVMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUU7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhcnNlciwgb3B0aW9ucykge1xuICAgICAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICAgICAgdGhpcy5qb2ludEhlbHBlclJvb3QgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuam9pbnRIZWxwZXJSb290O1xuICAgICAgICB0aGlzLmNvbGxpZGVySGVscGVyUm9vdCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5jb2xsaWRlckhlbHBlclJvb3Q7XG4gICAgfVxuICAgIGFmdGVyUm9vdChnbHRmKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBnbHRmLnVzZXJEYXRhLnZybVNwcmluZ0JvbmVNYW5hZ2VyID0geWllbGQgdGhpcy5faW1wb3J0KGdsdGYpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW1wb3J0IHNwcmluZyBib25lcyBmcm9tIGEgR0xURiBhbmQgcmV0dXJuIGEge0BsaW5rIFZSTVNwcmluZ0JvbmVNYW5hZ2VyfS5cbiAgICAgKiBJdCBtaWdodCByZXR1cm4gYG51bGxgIGluc3RlYWQgd2hlbiBpdCBkb2VzIG5vdCBuZWVkIHRvIGJlIGNyZWF0ZWQgb3Igc29tZXRoaW5nIGdvIHdyb25nLlxuICAgICAqXG4gICAgICogQHBhcmFtIGdsdGYgQSBwYXJzZWQgcmVzdWx0IG9mIEdMVEYgdGFrZW4gZnJvbSBHTFRGTG9hZGVyXG4gICAgICovXG4gICAgX2ltcG9ydChnbHRmKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCB2MVJlc3VsdCA9IHlpZWxkIHRoaXMuX3YxSW1wb3J0KGdsdGYpO1xuICAgICAgICAgICAgaWYgKHYxUmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdjFSZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2MFJlc3VsdCA9IHlpZWxkIHRoaXMuX3YwSW1wb3J0KGdsdGYpO1xuICAgICAgICAgICAgaWYgKHYwUmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdjBSZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF92MUltcG9ydChnbHRmKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBqc29uID0gZ2x0Zi5wYXJzZXIuanNvbjtcbiAgICAgICAgICAgIC8vIGVhcmx5IGFib3J0IGlmIGl0IGRvZXNuJ3QgdXNlIHNwcmluZyBib25lc1xuICAgICAgICAgICAgY29uc3QgaXNTcHJpbmdCb25lVXNlZCA9ICgoX2EgPSBqc29uLmV4dGVuc2lvbnNVc2VkKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaW5kZXhPZihWUk1TcHJpbmdCb25lTG9hZGVyUGx1Z2luLkVYVEVOU0lPTl9OQU1FKSkgIT09IC0xO1xuICAgICAgICAgICAgaWYgKCFpc1NwcmluZ0JvbmVVc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZSTVNwcmluZ0JvbmVNYW5hZ2VyKCk7XG4gICAgICAgICAgICBjb25zdCB0aHJlZU5vZGVzID0geWllbGQgZ2x0Zi5wYXJzZXIuZ2V0RGVwZW5kZW5jaWVzKCdub2RlJyk7XG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSAoX2IgPSBqc29uLmV4dGVuc2lvbnMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYltWUk1TcHJpbmdCb25lTG9hZGVyUGx1Z2luLkVYVEVOU0lPTl9OQU1FXTtcbiAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzcGVjVmVyc2lvbiA9IGV4dGVuc2lvbi5zcGVjVmVyc2lvbjtcbiAgICAgICAgICAgIGlmICghUE9TU0lCTEVfU1BFQ19WRVJTSU9OUy5oYXMoc3BlY1ZlcnNpb24pKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBWUk1TcHJpbmdCb25lTG9hZGVyUGx1Z2luOiBVbmtub3duICR7VlJNU3ByaW5nQm9uZUxvYWRlclBsdWdpbi5FWFRFTlNJT05fTkFNRX0gc3BlY1ZlcnNpb24gXCIke3NwZWNWZXJzaW9ufVwiYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjb2xsaWRlcnMgPSAoX2MgPSBleHRlbnNpb24uY29sbGlkZXJzKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubWFwKChzY2hlbWFDb2xsaWRlciwgaUNvbGxpZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gdGhyZWVOb2Rlc1tzY2hlbWFDb2xsaWRlci5ub2RlXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzY2hlbWFTaGFwZSA9IHNjaGVtYUNvbGxpZGVyLnNoYXBlO1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWFTaGFwZS5zcGhlcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ltcG9ydFNwaGVyZUNvbGxpZGVyKG5vZGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogbmV3IFRIUkVFLlZlY3RvcjMoKS5mcm9tQXJyYXkoKF9hID0gc2NoZW1hU2hhcGUuc3BoZXJlLm9mZnNldCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogWzAuMCwgMC4wLCAwLjBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhZGl1czogKF9iID0gc2NoZW1hU2hhcGUuc3BoZXJlLnJhZGl1cykgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMC4wLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NoZW1hU2hhcGUuY2Fwc3VsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5faW1wb3J0Q2Fwc3VsZUNvbGxpZGVyKG5vZGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogbmV3IFRIUkVFLlZlY3RvcjMoKS5mcm9tQXJyYXkoKF9jID0gc2NoZW1hU2hhcGUuY2Fwc3VsZS5vZmZzZXQpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IFswLjAsIDAuMCwgMC4wXSksXG4gICAgICAgICAgICAgICAgICAgICAgICByYWRpdXM6IChfZCA9IHNjaGVtYVNoYXBlLmNhcHN1bGUucmFkaXVzKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwLjAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWlsOiBuZXcgVEhSRUUuVmVjdG9yMygpLmZyb21BcnJheSgoX2UgPSBzY2hlbWFTaGFwZS5jYXBzdWxlLnRhaWwpICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6IFswLjAsIDAuMCwgMC4wXSksXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFZSTVNwcmluZ0JvbmVMb2FkZXJQbHVnaW46IFRoZSBjb2xsaWRlciAjJHtpQ29sbGlkZXJ9IGhhcyBubyB2YWxpZCBzaGFwZWApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBjb2xsaWRlckdyb3VwcyA9IChfZCA9IGV4dGVuc2lvbi5jb2xsaWRlckdyb3VwcykgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLm1hcCgoc2NoZW1hQ29sbGlkZXJHcm91cCwgaUNvbGxpZGVyR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgY29uc3QgY29scyA9ICgoX2EgPSBzY2hlbWFDb2xsaWRlckdyb3VwLmNvbGxpZGVycykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogW10pLm1hcCgoaUNvbGxpZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbCA9IGNvbGxpZGVycyA9PT0gbnVsbCB8fCBjb2xsaWRlcnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbGxpZGVyc1tpQ29sbGlkZXJdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29sID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVlJNU3ByaW5nQm9uZUxvYWRlclBsdWdpbjogVGhlIGNvbGxpZGVyR3JvdXAgIyR7aUNvbGxpZGVyR3JvdXB9IGF0dGVtcHRlZCB0byB1c2UgYSBjb2xsaWRlciAjJHtpQ29sbGlkZXJ9IGJ1dCBub3QgZm91bmRgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbGxpZGVyczogY29scyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogc2NoZW1hQ29sbGlkZXJHcm91cC5uYW1lLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIChfZSA9IGV4dGVuc2lvbi5zcHJpbmdzKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UuZm9yRWFjaCgoc2NoZW1hU3ByaW5nLCBpU3ByaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjaGVtYUpvaW50cyA9IHNjaGVtYVNwcmluZy5qb2ludHM7XG4gICAgICAgICAgICAgICAgLy8gcHJlcGFyZSBjb2xsaWRlcnNcbiAgICAgICAgICAgICAgICBjb25zdCBjb2xsaWRlckdyb3Vwc0ZvclNwcmluZyA9IChfYSA9IHNjaGVtYVNwcmluZy5jb2xsaWRlckdyb3VwcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm1hcCgoaUNvbGxpZGVyR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBjb2xsaWRlckdyb3VwcyA9PT0gbnVsbCB8fCBjb2xsaWRlckdyb3VwcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29sbGlkZXJHcm91cHNbaUNvbGxpZGVyR3JvdXBdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXAgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBWUk1TcHJpbmdCb25lTG9hZGVyUGx1Z2luOiBUaGUgc3ByaW5nICMke2lTcHJpbmd9IGF0dGVtcHRlZCB0byB1c2UgYSBjb2xsaWRlckdyb3VwICR7aUNvbGxpZGVyR3JvdXB9IGJ1dCBub3QgZm91bmRgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VudGVyID0gc2NoZW1hU3ByaW5nLmNlbnRlciAhPSBudWxsID8gdGhyZWVOb2Rlc1tzY2hlbWFTcHJpbmcuY2VudGVyXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBsZXQgcHJldlNjaGVtYUpvaW50O1xuICAgICAgICAgICAgICAgIHNjaGVtYUpvaW50cy5mb3JFYWNoKChzY2hlbWFKb2ludCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJldlNjaGVtYUpvaW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmVwYXJlIG5vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVJbmRleCA9IHByZXZTY2hlbWFKb2ludC5ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRocmVlTm9kZXNbbm9kZUluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkSW5kZXggPSBzY2hlbWFKb2ludC5ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSB0aHJlZU5vZGVzW2NoaWxkSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJlcGFyZSBzZXR0aW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXR0aW5nID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpdFJhZGl1czogcHJldlNjaGVtYUpvaW50LmhpdFJhZGl1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFnRm9yY2U6IHByZXZTY2hlbWFKb2ludC5kcmFnRm9yY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Jhdml0eVBvd2VyOiBwcmV2U2NoZW1hSm9pbnQuZ3Jhdml0eVBvd2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWZmbmVzczogcHJldlNjaGVtYUpvaW50LnN0aWZmbmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmF2aXR5RGlyOiBwcmV2U2NoZW1hSm9pbnQuZ3Jhdml0eURpciAhPSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3IFRIUkVFLlZlY3RvcjMoKS5mcm9tQXJyYXkocHJldlNjaGVtYUpvaW50LmdyYXZpdHlEaXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBzcHJpbmcgYm9uZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpvaW50ID0gdGhpcy5faW1wb3J0Sm9pbnQobm9kZSwgY2hpbGQsIHNldHRpbmcsIGNvbGxpZGVyR3JvdXBzRm9yU3ByaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZW50ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2ludC5jZW50ZXIgPSBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyLmFkZEpvaW50KGpvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwcmV2U2NoZW1hSm9pbnQgPSBzY2hlbWFKb2ludDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gaW5pdCBzcHJpbmcgYm9uZXNcbiAgICAgICAgICAgIG1hbmFnZXIuc2V0SW5pdFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gbWFuYWdlcjtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF92MEltcG9ydChnbHRmKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QganNvbiA9IGdsdGYucGFyc2VyLmpzb247XG4gICAgICAgICAgICAvLyBlYXJseSBhYm9ydCBpZiBpdCBkb2Vzbid0IHVzZSB2cm1cbiAgICAgICAgICAgIGNvbnN0IGlzVlJNVXNlZCA9ICgoX2EgPSBqc29uLmV4dGVuc2lvbnNVc2VkKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaW5kZXhPZignVlJNJykpICE9PSAtMTtcbiAgICAgICAgICAgIGlmICghaXNWUk1Vc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlYXJseSBhYm9ydCBpZiBpdCBkb2Vzbid0IGhhdmUgYm9uZSBncm91cHNcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IChfYiA9IGpzb24uZXh0ZW5zaW9ucykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iWydWUk0nXTtcbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYVNlY29uZGFyeUFuaW1hdGlvbiA9IGV4dGVuc2lvbiA9PT0gbnVsbCB8fCBleHRlbnNpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4dGVuc2lvbi5zZWNvbmRhcnlBbmltYXRpb247XG4gICAgICAgICAgICBpZiAoIXNjaGVtYVNlY29uZGFyeUFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2NoZW1hQm9uZUdyb3VwcyA9IHNjaGVtYVNlY29uZGFyeUFuaW1hdGlvbiA9PT0gbnVsbCB8fCBzY2hlbWFTZWNvbmRhcnlBbmltYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjaGVtYVNlY29uZGFyeUFuaW1hdGlvbi5ib25lR3JvdXBzO1xuICAgICAgICAgICAgaWYgKCFzY2hlbWFCb25lR3JvdXBzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZSTVNwcmluZ0JvbmVNYW5hZ2VyKCk7XG4gICAgICAgICAgICBjb25zdCB0aHJlZU5vZGVzID0geWllbGQgZ2x0Zi5wYXJzZXIuZ2V0RGVwZW5kZW5jaWVzKCdub2RlJyk7XG4gICAgICAgICAgICBjb25zdCBjb2xsaWRlckdyb3VwcyA9IChfYyA9IHNjaGVtYVNlY29uZGFyeUFuaW1hdGlvbi5jb2xsaWRlckdyb3VwcykgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm1hcCgoc2NoZW1hQ29sbGlkZXJHcm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gdGhyZWVOb2Rlc1tzY2hlbWFDb2xsaWRlckdyb3VwLm5vZGVdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbGxpZGVycyA9ICgoX2EgPSBzY2hlbWFDb2xsaWRlckdyb3VwLmNvbGxpZGVycykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogW10pLm1hcCgoc2NoZW1hQ29sbGlkZXIsIGlDb2xsaWRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gbmV3IFRIUkVFLlZlY3RvcjMoMC4wLCAwLjAsIDAuMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzY2hlbWFDb2xsaWRlci5vZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldC5zZXQoKF9hID0gc2NoZW1hQ29sbGlkZXIub2Zmc2V0LngpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDAuMCwgKF9iID0gc2NoZW1hQ29sbGlkZXIub2Zmc2V0LnkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDAuMCwgc2NoZW1hQ29sbGlkZXIub2Zmc2V0LnogPyAtc2NoZW1hQ29sbGlkZXIub2Zmc2V0LnogOiAwLjApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pbXBvcnRTcGhlcmVDb2xsaWRlcihub2RlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICByYWRpdXM6IChfYyA9IHNjaGVtYUNvbGxpZGVyLnJhZGl1cykgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMC4wLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjb2xsaWRlcnMgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gaW1wb3J0IHNwcmluZyBib25lcyBmb3IgZWFjaCBzcHJpbmcgYm9uZSBncm91cHNcbiAgICAgICAgICAgIHNjaGVtYUJvbmVHcm91cHMgPT09IG51bGwgfHwgc2NoZW1hQm9uZUdyb3VwcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2NoZW1hQm9uZUdyb3Vwcy5mb3JFYWNoKChzY2hlbWFCb25lR3JvdXAsIGlCb25lR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb290SW5kaWNlcyA9IHNjaGVtYUJvbmVHcm91cC5ib25lcztcbiAgICAgICAgICAgICAgICBpZiAoIXJvb3RJbmRpY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcm9vdEluZGljZXMuZm9yRWFjaCgocm9vdEluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm9vdCA9IHRocmVlTm9kZXNbcm9vdEluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgLy8gcHJlcGFyZSBzZXR0aW5nXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyYXZpdHlEaXIgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2NoZW1hQm9uZUdyb3VwLmdyYXZpdHlEaXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyYXZpdHlEaXIuc2V0KChfYSA9IHNjaGVtYUJvbmVHcm91cC5ncmF2aXR5RGlyLngpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDAuMCwgKF9iID0gc2NoZW1hQm9uZUdyb3VwLmdyYXZpdHlEaXIueSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMC4wLCAoX2MgPSBzY2hlbWFCb25lR3JvdXAuZ3Jhdml0eURpci56KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwLjApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3Jhdml0eURpci5zZXQoMC4wLCAtMS4wLCAwLjApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbnRlciA9IHNjaGVtYUJvbmVHcm91cC5jZW50ZXIgIT0gbnVsbCA/IHRocmVlTm9kZXNbc2NoZW1hQm9uZUdyb3VwLmNlbnRlcl0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoaXRSYWRpdXM6IHNjaGVtYUJvbmVHcm91cC5oaXRSYWRpdXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBkcmFnRm9yY2U6IHNjaGVtYUJvbmVHcm91cC5kcmFnRm9yY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBncmF2aXR5UG93ZXI6IHNjaGVtYUJvbmVHcm91cC5ncmF2aXR5UG93ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGlmZm5lc3M6IHNjaGVtYUJvbmVHcm91cC5zdGlmZmluZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3Jhdml0eURpcixcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgLy8gcHJlcGFyZSBjb2xsaWRlcnNcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sbGlkZXJHcm91cHNGb3JTcHJpbmcgPSAoX2QgPSBzY2hlbWFCb25lR3JvdXAuY29sbGlkZXJHcm91cHMpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5tYXAoKGlDb2xsaWRlckdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IGNvbGxpZGVyR3JvdXBzID09PSBudWxsIHx8IGNvbGxpZGVyR3JvdXBzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb2xsaWRlckdyb3Vwc1tpQ29sbGlkZXJHcm91cF07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXAgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVlJNU3ByaW5nQm9uZUxvYWRlclBsdWdpbjogVGhlIHNwcmluZyAjJHtpQm9uZUdyb3VwfSBhdHRlbXB0ZWQgdG8gdXNlIGEgY29sbGlkZXJHcm91cCAke2lDb2xsaWRlckdyb3VwfSBidXQgbm90IGZvdW5kYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAvLyBjcmVhdGUgc3ByaW5nIGJvbmVzXG4gICAgICAgICAgICAgICAgICAgIHJvb3QudHJhdmVyc2UoKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gKF9hID0gbm9kZS5jaGlsZHJlblswXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpvaW50ID0gdGhpcy5faW1wb3J0Sm9pbnQobm9kZSwgY2hpbGQsIHNldHRpbmcsIGNvbGxpZGVyR3JvdXBzRm9yU3ByaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZW50ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2ludC5jZW50ZXIgPSBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyLmFkZEpvaW50KGpvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIGluaXQgc3ByaW5nIGJvbmVzXG4gICAgICAgICAgICBnbHRmLnNjZW5lLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG4gICAgICAgICAgICBtYW5hZ2VyLnNldEluaXRTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIG1hbmFnZXI7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfaW1wb3J0Sm9pbnQobm9kZSwgY2hpbGQsIHNldHRpbmcsIGNvbGxpZGVyR3JvdXBzRm9yU3ByaW5nKSB7XG4gICAgICAgIGNvbnN0IHNwcmluZ0JvbmUgPSBuZXcgVlJNU3ByaW5nQm9uZUpvaW50KG5vZGUsIGNoaWxkLCBzZXR0aW5nLCBjb2xsaWRlckdyb3Vwc0ZvclNwcmluZyk7XG4gICAgICAgIGlmICh0aGlzLmpvaW50SGVscGVyUm9vdCkge1xuICAgICAgICAgICAgY29uc3QgaGVscGVyID0gbmV3IFZSTVNwcmluZ0JvbmVKb2ludEhlbHBlcihzcHJpbmdCb25lKTtcbiAgICAgICAgICAgIHRoaXMuam9pbnRIZWxwZXJSb290LmFkZChoZWxwZXIpO1xuICAgICAgICAgICAgaGVscGVyLnJlbmRlck9yZGVyID0gdGhpcy5qb2ludEhlbHBlclJvb3QucmVuZGVyT3JkZXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNwcmluZ0JvbmU7XG4gICAgfVxuICAgIF9pbXBvcnRTcGhlcmVDb2xsaWRlcihkZXN0aW5hdGlvbiwgcGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IHsgb2Zmc2V0LCByYWRpdXMgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3Qgc2hhcGUgPSBuZXcgVlJNU3ByaW5nQm9uZUNvbGxpZGVyU2hhcGVTcGhlcmUoeyBvZmZzZXQsIHJhZGl1cyB9KTtcbiAgICAgICAgY29uc3QgY29sbGlkZXIgPSBuZXcgVlJNU3ByaW5nQm9uZUNvbGxpZGVyKHNoYXBlKTtcbiAgICAgICAgZGVzdGluYXRpb24uYWRkKGNvbGxpZGVyKTtcbiAgICAgICAgaWYgKHRoaXMuY29sbGlkZXJIZWxwZXJSb290KSB7XG4gICAgICAgICAgICBjb25zdCBoZWxwZXIgPSBuZXcgVlJNU3ByaW5nQm9uZUNvbGxpZGVySGVscGVyKGNvbGxpZGVyKTtcbiAgICAgICAgICAgIHRoaXMuY29sbGlkZXJIZWxwZXJSb290LmFkZChoZWxwZXIpO1xuICAgICAgICAgICAgaGVscGVyLnJlbmRlck9yZGVyID0gdGhpcy5jb2xsaWRlckhlbHBlclJvb3QucmVuZGVyT3JkZXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbGxpZGVyO1xuICAgIH1cbiAgICBfaW1wb3J0Q2Fwc3VsZUNvbGxpZGVyKGRlc3RpbmF0aW9uLCBwYXJhbXMpIHtcbiAgICAgICAgY29uc3QgeyBvZmZzZXQsIHJhZGl1cywgdGFpbCB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCBzaGFwZSA9IG5ldyBWUk1TcHJpbmdCb25lQ29sbGlkZXJTaGFwZUNhcHN1bGUoeyBvZmZzZXQsIHJhZGl1cywgdGFpbCB9KTtcbiAgICAgICAgY29uc3QgY29sbGlkZXIgPSBuZXcgVlJNU3ByaW5nQm9uZUNvbGxpZGVyKHNoYXBlKTtcbiAgICAgICAgZGVzdGluYXRpb24uYWRkKGNvbGxpZGVyKTtcbiAgICAgICAgaWYgKHRoaXMuY29sbGlkZXJIZWxwZXJSb290KSB7XG4gICAgICAgICAgICBjb25zdCBoZWxwZXIgPSBuZXcgVlJNU3ByaW5nQm9uZUNvbGxpZGVySGVscGVyKGNvbGxpZGVyKTtcbiAgICAgICAgICAgIHRoaXMuY29sbGlkZXJIZWxwZXJSb290LmFkZChoZWxwZXIpO1xuICAgICAgICAgICAgaGVscGVyLnJlbmRlck9yZGVyID0gdGhpcy5jb2xsaWRlckhlbHBlclJvb3QucmVuZGVyT3JkZXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbGxpZGVyO1xuICAgIH1cbn1cblZSTVNwcmluZ0JvbmVMb2FkZXJQbHVnaW4uRVhURU5TSU9OX05BTUUgPSAnVlJNQ19zcHJpbmdCb25lJztcblxuZXhwb3J0IHsgVlJNU3ByaW5nQm9uZUNvbGxpZGVyLCBWUk1TcHJpbmdCb25lQ29sbGlkZXJIZWxwZXIsIFZSTVNwcmluZ0JvbmVDb2xsaWRlclNoYXBlLCBWUk1TcHJpbmdCb25lQ29sbGlkZXJTaGFwZUNhcHN1bGUsIFZSTVNwcmluZ0JvbmVDb2xsaWRlclNoYXBlU3BoZXJlLCBWUk1TcHJpbmdCb25lSm9pbnQsIFZSTVNwcmluZ0JvbmVKb2ludEhlbHBlciwgVlJNU3ByaW5nQm9uZUxvYWRlclBsdWdpbiwgVlJNU3ByaW5nQm9uZU1hbmFnZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEdoeVpXVXRkbkp0TFhOd2NtbHVaMkp2Ym1VdWJXOWtkV3hsTG1weklpd2ljMjkxY21ObGN5STZXeUl1TGk5emNtTXZWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5VTJoaGNHVXVkSE1pTENJdUxpOXpjbU12VmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVUyaGhjR1ZEWVhCemRXeGxMblJ6SWl3aUxpNHZjM0pqTDFaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNsTm9ZWEJsVTNCb1pYSmxMblJ6SWl3aUxpNHZjM0pqTDJobGJIQmxjbk12ZFhScGJITXZRMjlzYkdsa1pYSlRhR0Z3WlVOaGNITjFiR1ZDZFdabVpYSkhaVzl0WlhSeWVTNTBjeUlzSWk0dUwzTnlZeTlvWld4d1pYSnpMM1YwYVd4ekwwTnZiR3hwWkdWeVUyaGhjR1ZUY0dobGNtVkNkV1ptWlhKSFpXOXRaWFJ5ZVM1MGN5SXNJaTR1TDNOeVl5OW9aV3h3WlhKekwxWlNUVk53Y21sdVowSnZibVZEYjJ4c2FXUmxja2hsYkhCbGNpNTBjeUlzSWk0dUwzTnlZeTlvWld4d1pYSnpMM1YwYVd4ekwxTndjbWx1WjBKdmJtVkNkV1ptWlhKSFpXOXRaWFJ5ZVM1MGN5SXNJaTR1TDNOeVl5OW9aV3h3WlhKekwxWlNUVk53Y21sdVowSnZibVZLYjJsdWRFaGxiSEJsY2k1MGN5SXNJaTR1TDNOeVl5OVdVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWEl1ZEhNaUxDSXVMaTl6Y21NdmRYUnBiSE12YldGME5FbHVkbVZ5ZEVOdmJYQmhkQzUwY3lJc0lpNHVMM055WXk5MWRHbHNjeTlOWVhSeWFYZzBTVzUyWlhKelpVTmhZMmhsTG5Seklpd2lMaTR2YzNKakwxWlNUVk53Y21sdVowSnZibVZLYjJsdWRDNTBjeUlzSWk0dUx5NHVMeTR1TDI1dlpHVmZiVzlrZFd4bGN5OTBjMnhwWWk5MGMyeHBZaTVsY3pZdWFuTWlMQ0l1TGk5emNtTXZkWFJwYkhNdmRISmhkbVZ5YzJWQmJtTmxjM1J2Y25OR2NtOXRVbTl2ZEM1MGN5SXNJaTR1TDNOeVl5OTFkR2xzY3k5MGNtRjJaWEp6WlVOb2FXeGtjbVZ1Vlc1MGFXeERiMjVrYVhScGIyNU5aWFF1ZEhNaUxDSXVMaTl6Y21NdlZsSk5VM0J5YVc1blFtOXVaVTFoYm1GblpYSXVkSE1pTENJdUxpOXpjbU12VmxKTlUzQnlhVzVuUW05dVpVeHZZV1JsY2xCc2RXZHBiaTUwY3lKZExDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlGSmxjSEpsYzJWdWRITWdZU0J6YUdGd1pTQnZaaUJoSUdOdmJHeHBaR1Z5TGx4dUlDb3ZYRzVsZUhCdmNuUWdZV0p6ZEhKaFkzUWdZMnhoYzNNZ1ZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlVMmhoY0dVZ2UxeHVJQ0F2S2lwY2JpQWdJQ29nVkdobElIUjVjR1VnYjJZZ2RHaGxJSE5vWVhCbExseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHRmljM1J5WVdOMElHZGxkQ0IwZVhCbEtDazZJSE4wY21sdVp6dGNibHh1SUNBdktpcGNiaUFnSUNvZ1EyRnNZM1ZzWVhSbElHRWdaR2x6ZEdGdVkyVWdZVzVrSUdFZ1pHbHlaV04wYVc5dUlHWnliMjBnZEdobElHTnZiR3hwWkdWeUlIUnZJR0VnZEdGeVoyVjBJRzlpYW1WamRDNWNiaUFnSUNvZ1NYUW5jeUJvYVhRZ2FXWWdkR2hsSUdScGMzUmhibU5sSUdseklHNWxaMkYwYVhabExseHVJQ0FnS2lCVWFHVWdaR2x5WldOMGFXOXVJSGRwYkd3Z1ltVWdZMjl1ZEdGcGJtVmtJR2x1SUhSb1pTQm5hWFpsYmlCMFlYSm5aWFFnZG1WamRHOXlMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnWTI5c2JHbGtaWEpOWVhSeWFYZ2dRU0J0WVhSeWFYZ2djbVZ3Y21WelpXNTBjeUIwYUdVZ2RISmhibk5tYjNKdElHOW1JSFJvWlNCamIyeHNhV1JsY2x4dUlDQWdLaUJBY0dGeVlXMGdiMkpxWldOMFVHOXphWFJwYjI0Z1FTQjJaV04wYjNJZ2NtVndjbVZ6Wlc1MGN5QjBhR1VnY0c5emFYUnBiMjRnYjJZZ2RHaGxJSFJoY21kbGRDQnZZbXBsWTNSY2JpQWdJQ29nUUhCaGNtRnRJRzlpYW1WamRGSmhaR2wxY3lCVWFHVWdjbUZrYVhWeklHOW1JSFJvWlNCdlltcGxZM1JjYmlBZ0lDb2dRSEJoY21GdElIUmhjbWRsZENCVWFHVWdjbVZ6ZFd4MElHUnBjbVZqZEdsdmJpQjNhV3hzSUdKbElHTnZiblJoYVc1bFpDQnBiaUIwYUdseklIWmxZM1J2Y2x4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdGaWMzUnlZV04wSUdOaGJHTjFiR0YwWlVOdmJHeHBjMmx2YmloY2JpQWdJQ0JqYjJ4c2FXUmxjazFoZEhKcGVEb2dWRWhTUlVVdVRXRjBjbWw0TkN4Y2JpQWdJQ0J2WW1wbFkzUlFiM05wZEdsdmJqb2dWRWhTUlVVdVZtVmpkRzl5TXl4Y2JpQWdJQ0J2WW1wbFkzUlNZV1JwZFhNNklHNTFiV0psY2l4Y2JpQWdJQ0IwWVhKblpYUTZJRlJJVWtWRkxsWmxZM1J2Y2pNc1hHNGdJQ2s2SUc1MWJXSmxjanRjYm4xY2JpSXNJbWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCN0lGWlNUVk53Y21sdVowSnZibVZEYjJ4c2FXUmxjbE5vWVhCbElIMGdabkp2YlNBbkxpOVdVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWEpUYUdGd1pTYzdYRzVjYm1OdmJuTjBJRjkyTTBFZ1BTQnVaWGNnVkVoU1JVVXVWbVZqZEc5eU15Z3BPMXh1WTI5dWMzUWdYM1l6UWlBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektDazdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QldVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWEpUYUdGd1pVTmhjSE4xYkdVZ1pYaDBaVzVrY3lCV1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSlRhR0Z3WlNCN1hHNGdJSEIxWW14cFl5Qm5aWFFnZEhsd1pTZ3BPaUFuWTJGd2MzVnNaU2NnZTF4dUlDQWdJSEpsZEhWeWJpQW5ZMkZ3YzNWc1pTYzdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdobElHOW1abk5sZENCdlppQjBhR1VnYUdWaFpDQm1jbTl0SUhSb1pTQnZjbWxuYVc0dVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2IyWm1jMlYwT2lCVVNGSkZSUzVXWldOMGIzSXpPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1VnYjJabWMyVjBJRzltSUhSb1pTQjBZV2xzSUdaeWIyMGdkR2hsSUc5eWFXZHBiaTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUIwWVdsc09pQlVTRkpGUlM1V1pXTjBiM0l6TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJVYUdVZ2NtRmthWFZ6TGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhKaFpHbDFjem9nYm5WdFltVnlPMXh1WEc0Z0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpaHdZWEpoYlhNL09pQjdJSEpoWkdsMWN6ODZJRzUxYldKbGNqc2diMlptYzJWMFB6b2dWRWhTUlVVdVZtVmpkRzl5TXpzZ2RHRnBiRDg2SUZSSVVrVkZMbFpsWTNSdmNqTWdmU2tnZTF4dUlDQWdJSE4xY0dWeUtDazdYRzVjYmlBZ0lDQjBhR2x6TG05bVpuTmxkQ0E5SUhCaGNtRnRjejh1YjJabWMyVjBJRDgvSUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0RBdU1Dd2dNQzR3TENBd0xqQXBPMXh1SUNBZ0lIUm9hWE11ZEdGcGJDQTlJSEJoY21GdGN6OHVkR0ZwYkNBL1B5QnVaWGNnVkVoU1JVVXVWbVZqZEc5eU15Z3dMakFzSURBdU1Dd2dNQzR3S1R0Y2JpQWdJQ0IwYUdsekxuSmhaR2wxY3lBOUlIQmhjbUZ0Y3o4dWNtRmthWFZ6SUQ4L0lEQXVNRHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJqWVd4amRXeGhkR1ZEYjJ4c2FYTnBiMjRvWEc0Z0lDQWdZMjlzYkdsa1pYSk5ZWFJ5YVhnNklGUklVa1ZGTGsxaGRISnBlRFFzWEc0Z0lDQWdiMkpxWldOMFVHOXphWFJwYjI0NklGUklVa1ZGTGxabFkzUnZjak1zWEc0Z0lDQWdiMkpxWldOMFVtRmthWFZ6T2lCdWRXMWlaWElzWEc0Z0lDQWdkR0Z5WjJWME9pQlVTRkpGUlM1V1pXTjBiM0l6TEZ4dUlDQXBPaUJ1ZFcxaVpYSWdlMXh1SUNBZ0lGOTJNMEV1WTI5d2VTaDBhR2x6TG05bVpuTmxkQ2t1WVhCd2JIbE5ZWFJ5YVhnMEtHTnZiR3hwWkdWeVRXRjBjbWw0S1RzZ0x5OGdkSEpoYm5ObWIzSnRaV1FnYUdWaFpGeHVJQ0FnSUY5Mk0wSXVZMjl3ZVNoMGFHbHpMblJoYVd3cExtRndjR3g1VFdGMGNtbDROQ2hqYjJ4c2FXUmxjazFoZEhKcGVDazdJQzh2SUhSeVlXNXpabTl5YldWa0lIUmhhV3hjYmlBZ0lDQmZkak5DTG5OMVlpaGZkak5CS1RzZ0x5OGdabkp2YlNCb1pXRmtJSFJ2SUhSaGFXeGNiaUFnSUNCamIyNXpkQ0JzWlc1bmRHaFRjVU5oY0hOMWJHVWdQU0JmZGpOQ0xteGxibWQwYUZOeEtDazdYRzVjYmlBZ0lDQjBZWEpuWlhRdVkyOXdlU2h2WW1wbFkzUlFiM05wZEdsdmJpa3VjM1ZpS0Y5Mk0wRXBPeUF2THlCbWNtOXRJR2hsWVdRZ2RHOGdiMkpxWldOMFhHNGdJQ0FnWTI5dWMzUWdaRzkwSUQwZ1gzWXpRaTVrYjNRb2RHRnlaMlYwS1RzZ0x5OGdaRzkwSUhCeWIyUjFZM1FnYjJZZ2IyWm1jMlYwVkc5VVlXbHNJR0Z1WkNCdlptWnpaWFJVYjA5aWFtVmpkRnh1WEc0Z0lDQWdhV1lnS0dSdmRDQThQU0F3TGpBcElIdGNiaUFnSUNBZ0lDOHZJR2xtSUc5aWFtVmpkQ0JwY3lCdVpXRnlJR1p5YjIwZ2RHaGxJR2hsWVdSY2JpQWdJQ0FnSUM4dklHUnZJRzV2ZEdocGJtY3NJSFZ6WlNCMGFHVWdZM1Z5Y21WdWRDQjJZV3gxWlNCa2FYSmxZM1JzZVZ4dUlDQWdJSDBnWld4elpTQnBaaUFvYkdWdVozUm9VM0ZEWVhCemRXeGxJRHc5SUdSdmRDa2dlMXh1SUNBZ0lDQWdMeThnYVdZZ2IySnFaV04wSUdseklHNWxZWElnWm5KdmJTQjBhR1VnZEdGcGJGeHVJQ0FnSUNBZ2RHRnlaMlYwTG5OMVlpaGZkak5DS1RzZ0x5OGdabkp2YlNCMFlXbHNJSFJ2SUc5aWFtVmpkRnh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBdkx5QnBaaUJ2WW1wbFkzUWdhWE1nWW1WMGQyVmxiaUIwZDI4Z1pXNWtjMXh1SUNBZ0lDQWdYM1l6UWk1dGRXeDBhWEJzZVZOallXeGhjaWhrYjNRZ0x5QnNaVzVuZEdoVGNVTmhjSE4xYkdVcE95QXZMeUJtY205dElHaGxZV1FnZEc4Z2RHaGxJRzVsWVhKbGMzUWdjRzlwYm5RZ2IyWWdkR2hsSUhOb1lXWjBYRzRnSUNBZ0lDQjBZWEpuWlhRdWMzVmlLRjkyTTBJcE95QXZMeUJtY205dElIUm9aU0J6YUdGbWRDQndiMmx1ZENCMGJ5QnZZbXBsWTNSY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQnlZV1JwZFhNZ1BTQnZZbXBsWTNSU1lXUnBkWE1nS3lCMGFHbHpMbkpoWkdsMWN6dGNiaUFnSUNCamIyNXpkQ0JrYVhOMFlXNWpaU0E5SUhSaGNtZGxkQzVzWlc1bmRHZ29LU0F0SUhKaFpHbDFjenRjYmlBZ0lDQjBZWEpuWlhRdWJtOXliV0ZzYVhwbEtDazdYRzRnSUNBZ2NtVjBkWEp1SUdScGMzUmhibU5sTzF4dUlDQjlYRzU5WEc0aUxDSnBiWEJ2Y25RZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1cGJYQnZjblFnZXlCV1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSlRhR0Z3WlNCOUlHWnliMjBnSnk0dlZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlVMmhoY0dVbk8xeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlVMmhoY0dWVGNHaGxjbVVnWlhoMFpXNWtjeUJXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhKVGFHRndaU0I3WEc0Z0lIQjFZbXhwWXlCblpYUWdkSGx3WlNncE9pQW5jM0JvWlhKbEp5QjdYRzRnSUNBZ2NtVjBkWEp1SUNkemNHaGxjbVVuTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aU0J2Wm1aelpYUWdabkp2YlNCMGFHVWdiM0pwWjJsdUxseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHOW1abk5sZERvZ1ZFaFNSVVV1Vm1WamRHOXlNenRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWR2hsSUhKaFpHbDFjeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ5WVdScGRYTTZJRzUxYldKbGNqdGNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2NHRnlZVzF6UHpvZ2V5QnlZV1JwZFhNL09pQnVkVzFpWlhJN0lHOW1abk5sZEQ4NklGUklVa1ZGTGxabFkzUnZjak1nZlNrZ2UxeHVJQ0FnSUhOMWNHVnlLQ2s3WEc1Y2JpQWdJQ0IwYUdsekxtOW1abk5sZENBOUlIQmhjbUZ0Y3o4dWIyWm1jMlYwSUQ4L0lHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektEQXVNQ3dnTUM0d0xDQXdMakFwTzF4dUlDQWdJSFJvYVhNdWNtRmthWFZ6SUQwZ2NHRnlZVzF6UHk1eVlXUnBkWE1nUHo4Z01DNHdPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR05oYkdOMWJHRjBaVU52Ykd4cGMybHZiaWhjYmlBZ0lDQmpiMnhzYVdSbGNrMWhkSEpwZURvZ1ZFaFNSVVV1VFdGMGNtbDROQ3hjYmlBZ0lDQnZZbXBsWTNSUWIzTnBkR2x2YmpvZ1ZFaFNSVVV1Vm1WamRHOXlNeXhjYmlBZ0lDQnZZbXBsWTNSU1lXUnBkWE02SUc1MWJXSmxjaXhjYmlBZ0lDQjBZWEpuWlhRNklGUklVa1ZGTGxabFkzUnZjak1zWEc0Z0lDazZJRzUxYldKbGNpQjdYRzRnSUNBZ2RHRnlaMlYwTG1OdmNIa29kR2hwY3k1dlptWnpaWFFwTG1Gd2NHeDVUV0YwY21sNE5DaGpiMnhzYVdSbGNrMWhkSEpwZUNrN0lDOHZJSFJ5WVc1elptOXliV1ZrSUc5bVpuTmxkRnh1SUNBZ0lIUmhjbWRsZEM1dVpXZGhkR1VvS1M1aFpHUW9iMkpxWldOMFVHOXphWFJwYjI0cE95QXZMeUJoSUhabFkzUnZjaUJtY205dElHTnZiR3hwWkdWeUlHTmxiblJsY2lCMGJ5QnZZbXBsWTNRZ2NHOXphWFJwYjI1Y2JpQWdJQ0JqYjI1emRDQnlZV1JwZFhNZ1BTQnZZbXBsWTNSU1lXUnBkWE1nS3lCMGFHbHpMbkpoWkdsMWN6dGNiaUFnSUNCamIyNXpkQ0JrYVhOMFlXNWpaU0E5SUhSaGNtZGxkQzVzWlc1bmRHZ29LU0F0SUhKaFpHbDFjenRjYmlBZ0lDQjBZWEpuWlhRdWJtOXliV0ZzYVhwbEtDazdYRzRnSUNBZ2NtVjBkWEp1SUdScGMzUmhibU5sTzF4dUlDQjlYRzU5WEc0aUxDSnBiWEJ2Y25RZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1cGJYQnZjblFnZXlCV1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSlRhR0Z3WlVOaGNITjFiR1VnZlNCbWNtOXRJQ2N1TGk4dUxpOVdVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWEpUYUdGd1pVTmhjSE4xYkdVbk8xeHVhVzF3YjNKMElIc2dRMjlzYkdsa1pYSlRhR0Z3WlVKMVptWmxja2RsYjIxbGRISjVJSDBnWm5KdmJTQW5MaTlEYjJ4c2FXUmxjbE5vWVhCbFFuVm1abVZ5UjJWdmJXVjBjbmtuTzF4dVhHNWpiMjV6ZENCZmRqTkJJRDBnYm1WM0lGUklVa1ZGTGxabFkzUnZjak1vS1R0Y2JseHVaWGh3YjNKMElHTnNZWE56SUVOdmJHeHBaR1Z5VTJoaGNHVkRZWEJ6ZFd4bFFuVm1abVZ5UjJWdmJXVjBjbmtnWlhoMFpXNWtjeUJVU0ZKRlJTNUNkV1ptWlhKSFpXOXRaWFJ5ZVNCcGJYQnNaVzFsYm5SeklFTnZiR3hwWkdWeVUyaGhjR1ZDZFdabVpYSkhaVzl0WlhSeWVTQjdYRzRnSUhCMVlteHBZeUIzYjNKc1pGTmpZV3hsSUQwZ01TNHdPMXh1WEc0Z0lIQnlhWFpoZEdVZ2NtVmhaRzl1YkhrZ1gyRjBkSEpRYjNNNklGUklVa1ZGTGtKMVptWmxja0YwZEhKcFluVjBaVHRjYmlBZ2NISnBkbUYwWlNCeVpXRmtiMjVzZVNCZllYUjBja2x1WkdWNE9pQlVTRkpGUlM1Q2RXWm1aWEpCZEhSeWFXSjFkR1U3WEc0Z0lIQnlhWFpoZEdVZ2NtVmhaRzl1YkhrZ1gzTm9ZWEJsT2lCV1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSlRhR0Z3WlVOaGNITjFiR1U3WEc0Z0lIQnlhWFpoZEdVZ1gyTjFjbkpsYm5SU1lXUnBkWE1nUFNBd08xeHVJQ0J3Y21sMllYUmxJSEpsWVdSdmJteDVJRjlqZFhKeVpXNTBUMlptYzJWMElEMGdibVYzSUZSSVVrVkZMbFpsWTNSdmNqTW9LVHRjYmlBZ2NISnBkbUYwWlNCeVpXRmtiMjVzZVNCZlkzVnljbVZ1ZEZSaGFXd2dQU0J1WlhjZ1ZFaFNSVVV1Vm1WamRHOXlNeWdwTzF4dVhHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWh6YUdGd1pUb2dWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5VTJoaGNHVkRZWEJ6ZFd4bEtTQjdYRzRnSUNBZ2MzVndaWElvS1R0Y2JseHVJQ0FnSUhSb2FYTXVYM05vWVhCbElEMGdjMmhoY0dVN1hHNWNiaUFnSUNCMGFHbHpMbDloZEhSeVVHOXpJRDBnYm1WM0lGUklVa1ZGTGtKMVptWmxja0YwZEhKcFluVjBaU2h1WlhjZ1JteHZZWFF6TWtGeWNtRjVLRE01Tmlrc0lETXBPMXh1SUNBZ0lIUm9hWE11YzJWMFFYUjBjbWxpZFhSbEtDZHdiM05wZEdsdmJpY3NJSFJvYVhNdVgyRjBkSEpRYjNNcE8xeHVYRzRnSUNBZ2RHaHBjeTVmWVhSMGNrbHVaR1Y0SUQwZ2JtVjNJRlJJVWtWRkxrSjFabVpsY2tGMGRISnBZblYwWlNodVpYY2dWV2x1ZERFMlFYSnlZWGtvTWpZMEtTd2dNU2s3WEc0Z0lDQWdkR2hwY3k1elpYUkpibVJsZUNoMGFHbHpMbDloZEhSeVNXNWtaWGdwTzF4dVhHNGdJQ0FnZEdocGN5NWZZblZwYkdSSmJtUmxlQ2dwTzF4dUlDQWdJSFJvYVhNdWRYQmtZWFJsS0NrN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2RYQmtZWFJsS0NrNklIWnZhV1FnZTF4dUlDQWdJR3hsZENCemFHOTFiR1JWY0dSaGRHVkhaVzl0WlhSeWVTQTlJR1poYkhObE8xeHVYRzRnSUNBZ1kyOXVjM1FnY21Ga2FYVnpJRDBnZEdocGN5NWZjMmhoY0dVdWNtRmthWFZ6SUM4Z2RHaHBjeTUzYjNKc1pGTmpZV3hsTzF4dUlDQWdJR2xtSUNoMGFHbHpMbDlqZFhKeVpXNTBVbUZrYVhWeklDRTlQU0J5WVdScGRYTXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVgyTjFjbkpsYm5SU1lXUnBkWE1nUFNCeVlXUnBkWE03WEc0Z0lDQWdJQ0J6YUc5MWJHUlZjR1JoZEdWSFpXOXRaWFJ5ZVNBOUlIUnlkV1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbDlqZFhKeVpXNTBUMlptYzJWMExtVnhkV0ZzY3loMGFHbHpMbDl6YUdGd1pTNXZabVp6WlhRcEtTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5amRYSnlaVzUwVDJabWMyVjBMbU52Y0hrb2RHaHBjeTVmYzJoaGNHVXViMlptYzJWMEtUdGNiaUFnSUNBZ0lITm9iM1ZzWkZWd1pHRjBaVWRsYjIxbGRISjVJRDBnZEhKMVpUdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0IwWVdsc0lEMGdYM1l6UVM1amIzQjVLSFJvYVhNdVgzTm9ZWEJsTG5SaGFXd3BMbVJwZG1sa1pWTmpZV3hoY2loMGFHbHpMbmR2Y214a1UyTmhiR1VwTzF4dUlDQWdJR2xtSUNoMGFHbHpMbDlqZFhKeVpXNTBWR0ZwYkM1a2FYTjBZVzVqWlZSdlUzRjFZWEpsWkNoMFlXbHNLU0ErSURGbExURXdLU0I3WEc0Z0lDQWdJQ0IwYUdsekxsOWpkWEp5Wlc1MFZHRnBiQzVqYjNCNUtIUmhhV3dwTzF4dUlDQWdJQ0FnYzJodmRXeGtWWEJrWVhSbFIyVnZiV1YwY25rZ1BTQjBjblZsTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoemFHOTFiR1JWY0dSaGRHVkhaVzl0WlhSeWVTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZlluVnBiR1JRYjNOcGRHbHZiaWdwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWDJKMWFXeGtVRzl6YVhScGIyNG9LVG9nZG05cFpDQjdYRzRnSUNBZ1gzWXpRUzVqYjNCNUtIUm9hWE11WDJOMWNuSmxiblJVWVdsc0tTNXpkV0lvZEdocGN5NWZZM1Z5Y21WdWRFOW1abk5sZENrN1hHNGdJQ0FnWTI5dWMzUWdiQ0E5SUY5Mk0wRXViR1Z1WjNSb0tDa2dMeUIwYUdsekxsOWpkWEp5Wlc1MFVtRmthWFZ6TzF4dVhHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUEQwZ01UWTdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnZENBOUlDaHBJQzhnTVRZdU1Da2dLaUJOWVhSb0xsQkpPMXh1WEc0Z0lDQWdJQ0IwYUdsekxsOWhkSFJ5VUc5ekxuTmxkRmhaV2locExDQXRUV0YwYUM1emFXNG9kQ2tzSUMxTllYUm9MbU52Y3loMEtTd2dNQzR3S1R0Y2JpQWdJQ0FnSUhSb2FYTXVYMkYwZEhKUWIzTXVjMlYwV0ZsYUtERTNJQ3NnYVN3Z2JDQXJJRTFoZEdndWMybHVLSFFwTENCTllYUm9MbU52Y3loMEtTd2dNQzR3S1R0Y2JpQWdJQ0FnSUhSb2FYTXVYMkYwZEhKUWIzTXVjMlYwV0ZsYUtETTBJQ3NnYVN3Z0xVMWhkR2d1YzJsdUtIUXBMQ0F3TGpBc0lDMU5ZWFJvTG1OdmN5aDBLU2s3WEc0Z0lDQWdJQ0IwYUdsekxsOWhkSFJ5VUc5ekxuTmxkRmhaV2lnMU1TQXJJR2tzSUd3Z0t5Qk5ZWFJvTG5OcGJpaDBLU3dnTUM0d0xDQk5ZWFJvTG1OdmN5aDBLU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0F6TWpzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQjBJRDBnS0drZ0x5QXhOaTR3S1NBcUlFMWhkR2d1VUVrN1hHNGdJQ0FnSUNCMGFHbHpMbDloZEhSeVVHOXpMbk5sZEZoWldpZzJPQ0FySUdrc0lEQXVNQ3dnVFdGMGFDNXphVzRvZENrc0lFMWhkR2d1WTI5ektIUXBLVHRjYmlBZ0lDQWdJSFJvYVhNdVgyRjBkSEpRYjNNdWMyVjBXRmxhS0RFd01DQXJJR2tzSUd3c0lFMWhkR2d1YzJsdUtIUXBMQ0JOWVhSb0xtTnZjeWgwS1NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdkR2hsZEdFZ1BTQk5ZWFJvTG1GMFlXNHlLRjkyTTBFdWVTd2dUV0YwYUM1emNYSjBLRjkyTTBFdWVDQXFJRjkyTTBFdWVDQXJJRjkyTTBFdWVpQXFJRjkyTTBFdWVpa3BPMXh1SUNBZ0lHTnZibk4wSUhCb2FTQTlJQzFOWVhSb0xtRjBZVzR5S0Y5Mk0wRXVlaXdnWDNZelFTNTRLVHRjYmx4dUlDQWdJSFJvYVhNdWNtOTBZWFJsV2loMGFHVjBZU2s3WEc0Z0lDQWdkR2hwY3k1eWIzUmhkR1ZaS0hCb2FTazdYRzRnSUNBZ2RHaHBjeTV6WTJGc1pTaDBhR2x6TGw5amRYSnlaVzUwVW1Ga2FYVnpMQ0IwYUdsekxsOWpkWEp5Wlc1MFVtRmthWFZ6TENCMGFHbHpMbDlqZFhKeVpXNTBVbUZrYVhWektUdGNiaUFnSUNCMGFHbHpMblJ5WVc1emJHRjBaU2gwYUdsekxsOWpkWEp5Wlc1MFQyWm1jMlYwTG5nc0lIUm9hWE11WDJOMWNuSmxiblJQWm1aelpYUXVlU3dnZEdocGN5NWZZM1Z5Y21WdWRFOW1abk5sZEM1NktUdGNibHh1SUNBZ0lIUm9hWE11WDJGMGRISlFiM011Ym1WbFpITlZjR1JoZEdVZ1BTQjBjblZsTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCZlluVnBiR1JKYm1SbGVDZ3BPaUIyYjJsa0lIdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElETTBPeUJwS3lzcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdreElEMGdLR2tnS3lBeEtTQWxJRE0wTzF4dVhHNGdJQ0FnSUNCMGFHbHpMbDloZEhSeVNXNWtaWGd1YzJWMFdGa29hU0FxSURJc0lHa3NJR2t4S1R0Y2JpQWdJQ0FnSUhSb2FYTXVYMkYwZEhKSmJtUmxlQzV6WlhSWVdTZzJPQ0FySUdrZ0tpQXlMQ0F6TkNBcklHa3NJRE0wSUNzZ2FURXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dNekk3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2FURWdQU0FvYVNBcklERXBJQ1VnTXpJN1hHNWNiaUFnSUNBZ0lIUm9hWE11WDJGMGRISkpibVJsZUM1elpYUllXU2d4TXpZZ0t5QnBJQ29nTWl3Z05qZ2dLeUJwTENBMk9DQXJJR2t4S1R0Y2JpQWdJQ0FnSUhSb2FYTXVYMkYwZEhKSmJtUmxlQzV6WlhSWVdTZ3lNREFnS3lCcElDb2dNaXdnTVRBd0lDc2dhU3dnTVRBd0lDc2dhVEVwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdVgyRjBkSEpKYm1SbGVDNXVaV1ZrYzFWd1pHRjBaU0E5SUhSeWRXVTdYRzRnSUgxY2JuMWNiaUlzSW1sdGNHOXlkQ0FxSUdGeklGUklVa1ZGSUdaeWIyMGdKM1JvY21WbEp6dGNibWx0Y0c5eWRDQjdJRlpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2xOb1lYQmxVM0JvWlhKbElIMGdabkp2YlNBbkxpNHZMaTR2VmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVUyaGhjR1ZUY0dobGNtVW5PMXh1YVcxd2IzSjBJSHNnUTI5c2JHbGtaWEpUYUdGd1pVSjFabVpsY2tkbGIyMWxkSEo1SUgwZ1puSnZiU0FuTGk5RGIyeHNhV1JsY2xOb1lYQmxRblZtWm1WeVIyVnZiV1YwY25rbk8xeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1EyOXNiR2xrWlhKVGFHRndaVk53YUdWeVpVSjFabVpsY2tkbGIyMWxkSEo1SUdWNGRHVnVaSE1nVkVoU1JVVXVRblZtWm1WeVIyVnZiV1YwY25rZ2FXMXdiR1Z0Wlc1MGN5QkRiMnhzYVdSbGNsTm9ZWEJsUW5WbVptVnlSMlZ2YldWMGNua2dlMXh1SUNCd2RXSnNhV01nZDI5eWJHUlRZMkZzWlNBOUlERXVNRHRjYmx4dUlDQndjbWwyWVhSbElISmxZV1J2Ym14NUlGOWhkSFJ5VUc5ek9pQlVTRkpGUlM1Q2RXWm1aWEpCZEhSeWFXSjFkR1U3WEc0Z0lIQnlhWFpoZEdVZ2NtVmhaRzl1YkhrZ1gyRjBkSEpKYm1SbGVEb2dWRWhTUlVVdVFuVm1abVZ5UVhSMGNtbGlkWFJsTzF4dUlDQndjbWwyWVhSbElISmxZV1J2Ym14NUlGOXphR0Z3WlRvZ1ZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlVMmhoY0dWVGNHaGxjbVU3WEc0Z0lIQnlhWFpoZEdVZ1gyTjFjbkpsYm5SU1lXUnBkWE1nUFNBd08xeHVJQ0J3Y21sMllYUmxJSEpsWVdSdmJteDVJRjlqZFhKeVpXNTBUMlptYzJWMElEMGdibVYzSUZSSVVrVkZMbFpsWTNSdmNqTW9LVHRjYmx4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9jMmhoY0dVNklGWlNUVk53Y21sdVowSnZibVZEYjJ4c2FXUmxjbE5vWVhCbFUzQm9aWEpsS1NCN1hHNGdJQ0FnYzNWd1pYSW9LVHRjYmx4dUlDQWdJSFJvYVhNdVgzTm9ZWEJsSUQwZ2MyaGhjR1U3WEc1Y2JpQWdJQ0IwYUdsekxsOWhkSFJ5VUc5eklEMGdibVYzSUZSSVVrVkZMa0oxWm1abGNrRjBkSEpwWW5WMFpTaHVaWGNnUm14dllYUXpNa0Z5Y21GNUtETXlJQ29nTXlBcUlETXBMQ0F6S1R0Y2JpQWdJQ0IwYUdsekxuTmxkRUYwZEhKcFluVjBaU2duY0c5emFYUnBiMjRuTENCMGFHbHpMbDloZEhSeVVHOXpLVHRjYmx4dUlDQWdJSFJvYVhNdVgyRjBkSEpKYm1SbGVDQTlJRzVsZHlCVVNGSkZSUzVDZFdabVpYSkJkSFJ5YVdKMWRHVW9ibVYzSUZWcGJuUXhOa0Z5Y21GNUtEWTBJQ29nTXlrc0lERXBPMXh1SUNBZ0lIUm9hWE11YzJWMFNXNWtaWGdvZEdocGN5NWZZWFIwY2tsdVpHVjRLVHRjYmx4dUlDQWdJSFJvYVhNdVgySjFhV3hrU1c1a1pYZ29LVHRjYmlBZ0lDQjBhR2x6TG5Wd1pHRjBaU2dwTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUhWd1pHRjBaU2dwT2lCMmIybGtJSHRjYmlBZ0lDQnNaWFFnYzJodmRXeGtWWEJrWVhSbFIyVnZiV1YwY25rZ1BTQm1ZV3h6WlR0Y2JseHVJQ0FnSUdOdmJuTjBJSEpoWkdsMWN5QTlJSFJvYVhNdVgzTm9ZWEJsTG5KaFpHbDFjeUF2SUhSb2FYTXVkMjl5YkdSVFkyRnNaVHRjYmlBZ0lDQnBaaUFvZEdocGN5NWZZM1Z5Y21WdWRGSmhaR2wxY3lBaFBUMGdjbUZrYVhWektTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5amRYSnlaVzUwVW1Ga2FYVnpJRDBnY21Ga2FYVnpPMXh1SUNBZ0lDQWdjMmh2ZFd4a1ZYQmtZWFJsUjJWdmJXVjBjbmtnUFNCMGNuVmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2doZEdocGN5NWZZM1Z5Y21WdWRFOW1abk5sZEM1bGNYVmhiSE1vZEdocGN5NWZjMmhoY0dVdWIyWm1jMlYwS1NrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmWTNWeWNtVnVkRTltWm5ObGRDNWpiM0I1S0hSb2FYTXVYM05vWVhCbExtOW1abk5sZENrN1hHNGdJQ0FnSUNCemFHOTFiR1JWY0dSaGRHVkhaVzl0WlhSeWVTQTlJSFJ5ZFdVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tITm9iM1ZzWkZWd1pHRjBaVWRsYjIxbGRISjVLU0I3WEc0Z0lDQWdJQ0IwYUdsekxsOWlkV2xzWkZCdmMybDBhVzl1S0NrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCZlluVnBiR1JRYjNOcGRHbHZiaWdwT2lCMmIybGtJSHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJRE15T3lCcEt5c3BJSHRjYmlBZ0lDQWdJR052Ym5OMElIUWdQU0FvYVNBdklERTJMakFwSUNvZ1RXRjBhQzVRU1R0Y2JseHVJQ0FnSUNBZ2RHaHBjeTVmWVhSMGNsQnZjeTV6WlhSWVdWb29hU3dnVFdGMGFDNWpiM01vZENrc0lFMWhkR2d1YzJsdUtIUXBMQ0F3TGpBcE8xeHVJQ0FnSUNBZ2RHaHBjeTVmWVhSMGNsQnZjeTV6WlhSWVdWb29NeklnS3lCcExDQXdMakFzSUUxaGRHZ3VZMjl6S0hRcExDQk5ZWFJvTG5OcGJpaDBLU2s3WEc0Z0lDQWdJQ0IwYUdsekxsOWhkSFJ5VUc5ekxuTmxkRmhaV2lnMk5DQXJJR2tzSUUxaGRHZ3VjMmx1S0hRcExDQXdMakFzSUUxaGRHZ3VZMjl6S0hRcEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbk5qWVd4bEtIUm9hWE11WDJOMWNuSmxiblJTWVdScGRYTXNJSFJvYVhNdVgyTjFjbkpsYm5SU1lXUnBkWE1zSUhSb2FYTXVYMk4xY25KbGJuUlNZV1JwZFhNcE8xeHVJQ0FnSUhSb2FYTXVkSEpoYm5Oc1lYUmxLSFJvYVhNdVgyTjFjbkpsYm5SUFptWnpaWFF1ZUN3Z2RHaHBjeTVmWTNWeWNtVnVkRTltWm5ObGRDNTVMQ0IwYUdsekxsOWpkWEp5Wlc1MFQyWm1jMlYwTG5vcE8xeHVYRzRnSUNBZ2RHaHBjeTVmWVhSMGNsQnZjeTV1WldWa2MxVndaR0YwWlNBOUlIUnlkV1U3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUY5aWRXbHNaRWx1WkdWNEtDazZJSFp2YVdRZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z016STdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYVRFZ1BTQW9hU0FySURFcElDVWdNekk3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVYMkYwZEhKSmJtUmxlQzV6WlhSWVdTaHBJQ29nTWl3Z2FTd2dhVEVwTzF4dUlDQWdJQ0FnZEdocGN5NWZZWFIwY2tsdVpHVjRMbk5sZEZoWktEWTBJQ3NnYVNBcUlESXNJRE15SUNzZ2FTd2dNeklnS3lCcE1TazdYRzRnSUNBZ0lDQjBhR2x6TGw5aGRIUnlTVzVrWlhndWMyVjBXRmtvTVRJNElDc2dhU0FxSURJc0lEWTBJQ3NnYVN3Z05qUWdLeUJwTVNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NWZZWFIwY2tsdVpHVjRMbTVsWldSelZYQmtZWFJsSUQwZ2RISjFaVHRjYmlBZ2ZWeHVmVnh1SWl3aWFXMXdiM0owSUNvZ1lYTWdWRWhTUlVVZ1puSnZiU0FuZEdoeVpXVW5PMXh1YVcxd2IzSjBJSHNnVmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeUlIMGdabkp2YlNBbkxpNHZWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5Snp0Y2JtbHRjRzl5ZENCN0lGWlNUVk53Y21sdVowSnZibVZEYjJ4c2FXUmxjbE5vWVhCbFEyRndjM1ZzWlNCOUlHWnliMjBnSnk0dUwxWlNUVk53Y21sdVowSnZibVZEYjJ4c2FXUmxjbE5vWVhCbFEyRndjM1ZzWlNjN1hHNXBiWEJ2Y25RZ2V5QldVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWEpUYUdGd1pWTndhR1Z5WlNCOUlHWnliMjBnSnk0dUwxWlNUVk53Y21sdVowSnZibVZEYjJ4c2FXUmxjbE5vWVhCbFUzQm9aWEpsSnp0Y2JtbHRjRzl5ZENCN0lFTnZiR3hwWkdWeVUyaGhjR1ZDZFdabVpYSkhaVzl0WlhSeWVTQjlJR1p5YjIwZ0p5NHZkWFJwYkhNdlEyOXNiR2xrWlhKVGFHRndaVUoxWm1abGNrZGxiMjFsZEhKNUp6dGNibWx0Y0c5eWRDQjdJRU52Ykd4cFpHVnlVMmhoY0dWRFlYQnpkV3hsUW5WbVptVnlSMlZ2YldWMGNua2dmU0JtY205dElDY3VMM1YwYVd4ekwwTnZiR3hwWkdWeVUyaGhjR1ZEWVhCemRXeGxRblZtWm1WeVIyVnZiV1YwY25rbk8xeHVhVzF3YjNKMElIc2dRMjlzYkdsa1pYSlRhR0Z3WlZOd2FHVnlaVUoxWm1abGNrZGxiMjFsZEhKNUlIMGdabkp2YlNBbkxpOTFkR2xzY3k5RGIyeHNhV1JsY2xOb1lYQmxVM0JvWlhKbFFuVm1abVZ5UjJWdmJXVjBjbmtuTzF4dVhHNWpiMjV6ZENCZmRqTkJJRDBnYm1WM0lGUklVa1ZGTGxabFkzUnZjak1vS1R0Y2JseHVaWGh3YjNKMElHTnNZWE56SUZaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNraGxiSEJsY2lCbGVIUmxibVJ6SUZSSVVrVkZMa2R5YjNWd0lIdGNiaUFnY0hWaWJHbGpJSEpsWVdSdmJteDVJR052Ykd4cFpHVnlPaUJXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhJN1hHNGdJSEJ5YVhaaGRHVWdjbVZoWkc5dWJIa2dYMmRsYjIxbGRISjVPaUJEYjJ4c2FXUmxjbE5vWVhCbFFuVm1abVZ5UjJWdmJXVjBjbms3WEc0Z0lIQnlhWFpoZEdVZ2NtVmhaRzl1YkhrZ1gyeHBibVU2SUZSSVVrVkZMa3hwYm1WVFpXZHRaVzUwY3p0Y2JseHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvWTI5c2JHbGtaWEk2SUZaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNpa2dlMXh1SUNBZ0lITjFjR1Z5S0NrN1hHNGdJQ0FnZEdocGN5NXRZWFJ5YVhoQmRYUnZWWEJrWVhSbElEMGdabUZzYzJVN1hHNWNiaUFnSUNCMGFHbHpMbU52Ykd4cFpHVnlJRDBnWTI5c2JHbGtaWEk3WEc1Y2JpQWdJQ0JwWmlBb2RHaHBjeTVqYjJ4c2FXUmxjaTV6YUdGd1pTQnBibk4wWVc1alpXOW1JRlpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2xOb1lYQmxVM0JvWlhKbEtTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5blpXOXRaWFJ5ZVNBOUlHNWxkeUJEYjJ4c2FXUmxjbE5vWVhCbFUzQm9aWEpsUW5WbVptVnlSMlZ2YldWMGNua29kR2hwY3k1amIyeHNhV1JsY2k1emFHRndaU2s3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2gwYUdsekxtTnZiR3hwWkdWeUxuTm9ZWEJsSUdsdWMzUmhibU5sYjJZZ1ZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlVMmhoY0dWRFlYQnpkV3hsS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDluWlc5dFpYUnllU0E5SUc1bGR5QkRiMnhzYVdSbGNsTm9ZWEJsUTJGd2MzVnNaVUoxWm1abGNrZGxiMjFsZEhKNUtIUm9hWE11WTI5c2JHbGtaWEl1YzJoaGNHVXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjFaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNraGxiSEJsY2pvZ1ZXNXJibTkzYmlCamIyeHNhV1JsY2lCemFHRndaU0IwZVhCbElHUmxkR1ZqZEdWa0p5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnYldGMFpYSnBZV3dnUFNCdVpYY2dWRWhTUlVVdVRHbHVaVUpoYzJsalRXRjBaWEpwWVd3b2UxeHVJQ0FnSUNBZ1kyOXNiM0k2SURCNFptWXdNR1ptTEZ4dUlDQWdJQ0FnWkdWd2RHaFVaWE4wT2lCbVlXeHpaU3hjYmlBZ0lDQWdJR1JsY0hSb1YzSnBkR1U2SUdaaGJITmxMRnh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdkR2hwY3k1ZmJHbHVaU0E5SUc1bGR5QlVTRkpGUlM1TWFXNWxVMlZuYldWdWRITW9kR2hwY3k1ZloyVnZiV1YwY25rc0lHMWhkR1Z5YVdGc0tUdGNiaUFnSUNCMGFHbHpMbUZrWkNoMGFHbHpMbDlzYVc1bEtUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QmthWE53YjNObEtDazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVYMmRsYjIxbGRISjVMbVJwYzNCdmMyVW9LVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUIxY0dSaGRHVk5ZWFJ5YVhoWGIzSnNaQ2htYjNKalpUb2dZbTl2YkdWaGJpazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVZMjlzYkdsa1pYSXVkWEJrWVhSbFYyOXliR1JOWVhSeWFYZ29kSEoxWlN3Z1ptRnNjMlVwTzF4dVhHNGdJQ0FnZEdocGN5NXRZWFJ5YVhndVkyOXdlU2gwYUdsekxtTnZiR3hwWkdWeUxtMWhkSEpwZUZkdmNteGtLVHRjYmx4dUlDQWdJR052Ym5OMElHMWhkSEpwZUZkdmNteGtSV3hsYldWdWRITWdQU0IwYUdsekxtMWhkSEpwZUM1bGJHVnRaVzUwY3p0Y2JpQWdJQ0IwYUdsekxsOW5aVzl0WlhSeWVTNTNiM0pzWkZOallXeGxJRDBnWDNZelFWeHVJQ0FnSUNBZ0xuTmxkQ2h0WVhSeWFYaFhiM0pzWkVWc1pXMWxiblJ6V3pCZExDQnRZWFJ5YVhoWGIzSnNaRVZzWlcxbGJuUnpXekZkTENCdFlYUnlhWGhYYjNKc1pFVnNaVzFsYm5Seld6SmRLVnh1SUNBZ0lDQWdMbXhsYm1kMGFDZ3BPeUF2THlCallXeGpkV3hoZEdVZ2MyTmhiR1VnYjJZZ2VDQmpiMjF3YjI1bGJuUmNibHh1SUNBZ0lIUm9hWE11WDJkbGIyMWxkSEo1TG5Wd1pHRjBaU2dwTzF4dVhHNGdJQ0FnYzNWd1pYSXVkWEJrWVhSbFRXRjBjbWw0VjI5eWJHUW9abTl5WTJVcE8xeHVJQ0I5WEc1OVhHNGlMQ0pwYlhCdmNuUWdLaUJoY3lCVVNGSkZSU0JtY205dElDZDBhSEpsWlNjN1hHNXBiWEJ2Y25RZ2V5QldVazFUY0hKcGJtZENiMjVsU205cGJuUWdmU0JtY205dElDY3VMaTh1TGk5V1VrMVRjSEpwYm1kQ2IyNWxTbTlwYm5Rbk8xeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1UzQnlhVzVuUW05dVpVSjFabVpsY2tkbGIyMWxkSEo1SUdWNGRHVnVaSE1nVkVoU1JVVXVRblZtWm1WeVIyVnZiV1YwY25rZ2UxeHVJQ0J3ZFdKc2FXTWdkMjl5YkdSVFkyRnNaU0E5SURFdU1EdGNibHh1SUNCd2NtbDJZWFJsSUhKbFlXUnZibXg1SUY5aGRIUnlVRzl6T2lCVVNGSkZSUzVDZFdabVpYSkJkSFJ5YVdKMWRHVTdYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnWDJGMGRISkpibVJsZURvZ1ZFaFNSVVV1UW5WbVptVnlRWFIwY21saWRYUmxPMXh1SUNCd2NtbDJZWFJsSUhKbFlXUnZibXg1SUY5emNISnBibWRDYjI1bE9pQldVazFUY0hKcGJtZENiMjVsU205cGJuUTdYRzRnSUhCeWFYWmhkR1VnWDJOMWNuSmxiblJTWVdScGRYTWdQU0F3TzF4dUlDQndjbWwyWVhSbElISmxZV1J2Ym14NUlGOWpkWEp5Wlc1MFZHRnBiQ0E5SUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0NrN1hHNWNiaUFnY0hWaWJHbGpJR052Ym5OMGNuVmpkRzl5S0hOd2NtbHVaMEp2Ym1VNklGWlNUVk53Y21sdVowSnZibVZLYjJsdWRDa2dlMXh1SUNBZ0lITjFjR1Z5S0NrN1hHNWNiaUFnSUNCMGFHbHpMbDl6Y0hKcGJtZENiMjVsSUQwZ2MzQnlhVzVuUW05dVpUdGNibHh1SUNBZ0lIUm9hWE11WDJGMGRISlFiM01nUFNCdVpYY2dWRWhTUlVVdVFuVm1abVZ5UVhSMGNtbGlkWFJsS0c1bGR5QkdiRzloZERNeVFYSnlZWGtvTWprMEtTd2dNeWs3WEc0Z0lDQWdkR2hwY3k1elpYUkJkSFJ5YVdKMWRHVW9KM0J2YzJsMGFXOXVKeXdnZEdocGN5NWZZWFIwY2xCdmN5azdYRzVjYmlBZ0lDQjBhR2x6TGw5aGRIUnlTVzVrWlhnZ1BTQnVaWGNnVkVoU1JVVXVRblZtWm1WeVFYUjBjbWxpZFhSbEtHNWxkeUJWYVc1ME1UWkJjbkpoZVNneE9UUXBMQ0F4S1R0Y2JpQWdJQ0IwYUdsekxuTmxkRWx1WkdWNEtIUm9hWE11WDJGMGRISkpibVJsZUNrN1hHNWNiaUFnSUNCMGFHbHpMbDlpZFdsc1pFbHVaR1Y0S0NrN1hHNGdJQ0FnZEdocGN5NTFjR1JoZEdVb0tUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QjFjR1JoZEdVb0tUb2dkbTlwWkNCN1hHNGdJQ0FnYkdWMElITm9iM1ZzWkZWd1pHRjBaVWRsYjIxbGRISjVJRDBnWm1Gc2MyVTdYRzVjYmlBZ0lDQmpiMjV6ZENCeVlXUnBkWE1nUFNCMGFHbHpMbDl6Y0hKcGJtZENiMjVsTG5ObGRIUnBibWR6TG1ocGRGSmhaR2wxY3lBdklIUm9hWE11ZDI5eWJHUlRZMkZzWlR0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmWTNWeWNtVnVkRkpoWkdsMWN5QWhQVDBnY21Ga2FYVnpLU0I3WEc0Z0lDQWdJQ0IwYUdsekxsOWpkWEp5Wlc1MFVtRmthWFZ6SUQwZ2NtRmthWFZ6TzF4dUlDQWdJQ0FnYzJodmRXeGtWWEJrWVhSbFIyVnZiV1YwY25rZ1BTQjBjblZsTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNnaGRHaHBjeTVmWTNWeWNtVnVkRlJoYVd3dVpYRjFZV3h6S0hSb2FYTXVYM053Y21sdVowSnZibVV1YVc1cGRHbGhiRXh2WTJGc1EyaHBiR1JRYjNOcGRHbHZiaWtwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVYMk4xY25KbGJuUlVZV2xzTG1OdmNIa29kR2hwY3k1ZmMzQnlhVzVuUW05dVpTNXBibWwwYVdGc1RHOWpZV3hEYUdsc1pGQnZjMmwwYVc5dUtUdGNiaUFnSUNBZ0lITm9iM1ZzWkZWd1pHRjBaVWRsYjIxbGRISjVJRDBnZEhKMVpUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9jMmh2ZFd4a1ZYQmtZWFJsUjJWdmJXVjBjbmtwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVYMkoxYVd4a1VHOXphWFJwYjI0b0tUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElGOWlkV2xzWkZCdmMybDBhVzl1S0NrNklIWnZhV1FnZTF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnTXpJN0lHa3JLeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdkQ0E5SUNocElDOGdNVFl1TUNrZ0tpQk5ZWFJvTGxCSk8xeHVYRzRnSUNBZ0lDQjBhR2x6TGw5aGRIUnlVRzl6TG5ObGRGaFpXaWhwTENCTllYUm9MbU52Y3loMEtTd2dUV0YwYUM1emFXNG9kQ2tzSURBdU1DazdYRzRnSUNBZ0lDQjBhR2x6TGw5aGRIUnlVRzl6TG5ObGRGaFpXaWd6TWlBcklHa3NJREF1TUN3Z1RXRjBhQzVqYjNNb2RDa3NJRTFoZEdndWMybHVLSFFwS1R0Y2JpQWdJQ0FnSUhSb2FYTXVYMkYwZEhKUWIzTXVjMlYwV0ZsYUtEWTBJQ3NnYVN3Z1RXRjBhQzV6YVc0b2RDa3NJREF1TUN3Z1RXRjBhQzVqYjNNb2RDa3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11YzJOaGJHVW9kR2hwY3k1ZlkzVnljbVZ1ZEZKaFpHbDFjeXdnZEdocGN5NWZZM1Z5Y21WdWRGSmhaR2wxY3l3Z2RHaHBjeTVmWTNWeWNtVnVkRkpoWkdsMWN5azdYRzRnSUNBZ2RHaHBjeTUwY21GdWMyeGhkR1VvZEdocGN5NWZZM1Z5Y21WdWRGUmhhV3d1ZUN3Z2RHaHBjeTVmWTNWeWNtVnVkRlJoYVd3dWVTd2dkR2hwY3k1ZlkzVnljbVZ1ZEZSaGFXd3VlaWs3WEc1Y2JpQWdJQ0IwYUdsekxsOWhkSFJ5VUc5ekxuTmxkRmhaV2lnNU5pd2dNQ3dnTUN3Z01DazdYRzRnSUNBZ2RHaHBjeTVmWVhSMGNsQnZjeTV6WlhSWVdWb29PVGNzSUhSb2FYTXVYMk4xY25KbGJuUlVZV2xzTG5nc0lIUm9hWE11WDJOMWNuSmxiblJVWVdsc0xua3NJSFJvYVhNdVgyTjFjbkpsYm5SVVlXbHNMbm9wTzF4dVhHNGdJQ0FnZEdocGN5NWZZWFIwY2xCdmN5NXVaV1ZrYzFWd1pHRjBaU0E5SUhSeWRXVTdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJRjlpZFdsc1pFbHVaR1Y0S0NrNklIWnZhV1FnZTF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnTXpJN0lHa3JLeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdhVEVnUFNBb2FTQXJJREVwSUNVZ016STdYRzVjYmlBZ0lDQWdJSFJvYVhNdVgyRjBkSEpKYm1SbGVDNXpaWFJZV1NocElDb2dNaXdnYVN3Z2FURXBPMXh1SUNBZ0lDQWdkR2hwY3k1ZllYUjBja2x1WkdWNExuTmxkRmhaS0RZMElDc2dhU0FxSURJc0lETXlJQ3NnYVN3Z016SWdLeUJwTVNrN1hHNGdJQ0FnSUNCMGFHbHpMbDloZEhSeVNXNWtaWGd1YzJWMFdGa29NVEk0SUNzZ2FTQXFJRElzSURZMElDc2dhU3dnTmpRZ0t5QnBNU2s3WEc0Z0lDQWdmVnh1SUNBZ0lIUm9hWE11WDJGMGRISkpibVJsZUM1elpYUllXU2d4T1RJc0lEazJMQ0E1TnlrN1hHNWNiaUFnSUNCMGFHbHpMbDloZEhSeVNXNWtaWGd1Ym1WbFpITlZjR1JoZEdVZ1BTQjBjblZsTzF4dUlDQjlYRzU5WEc0aUxDSnBiWEJ2Y25RZ0tpQmhjeUJVU0ZKRlJTQm1jbTl0SUNkMGFISmxaU2M3WEc1cGJYQnZjblFnZXlCV1VrMVRjSEpwYm1kQ2IyNWxTbTlwYm5RZ2ZTQm1jbTl0SUNjdUxpOVdVazFUY0hKcGJtZENiMjVsU205cGJuUW5PMXh1YVcxd2IzSjBJSHNnVTNCeWFXNW5RbTl1WlVKMVptWmxja2RsYjIxbGRISjVJSDBnWm5KdmJTQW5MaTkxZEdsc2N5OVRjSEpwYm1kQ2IyNWxRblZtWm1WeVIyVnZiV1YwY25rbk8xeHVYRzVqYjI1emRDQmZkak5CSUQwZ2JtVjNJRlJJVWtWRkxsWmxZM1J2Y2pNb0tUdGNibHh1Wlhod2IzSjBJR05zWVhOeklGWlNUVk53Y21sdVowSnZibVZLYjJsdWRFaGxiSEJsY2lCbGVIUmxibVJ6SUZSSVVrVkZMa2R5YjNWd0lIdGNiaUFnY0hWaWJHbGpJSEpsWVdSdmJteDVJSE53Y21sdVowSnZibVU2SUZaU1RWTndjbWx1WjBKdmJtVktiMmx1ZER0Y2JpQWdjSEpwZG1GMFpTQnlaV0ZrYjI1c2VTQmZaMlZ2YldWMGNuazZJRk53Y21sdVowSnZibVZDZFdabVpYSkhaVzl0WlhSeWVUdGNiaUFnY0hKcGRtRjBaU0J5WldGa2IyNXNlU0JmYkdsdVpUb2dWRWhTUlVVdVRHbHVaVk5sWjIxbGJuUnpPMXh1WEc0Z0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpaHpjSEpwYm1kQ2IyNWxPaUJXVWsxVGNISnBibWRDYjI1bFNtOXBiblFwSUh0Y2JpQWdJQ0J6ZFhCbGNpZ3BPMXh1SUNBZ0lIUm9hWE11YldGMGNtbDRRWFYwYjFWd1pHRjBaU0E5SUdaaGJITmxPMXh1WEc0Z0lDQWdkR2hwY3k1emNISnBibWRDYjI1bElEMGdjM0J5YVc1blFtOXVaVHRjYmx4dUlDQWdJSFJvYVhNdVgyZGxiMjFsZEhKNUlEMGdibVYzSUZOd2NtbHVaMEp2Ym1WQ2RXWm1aWEpIWlc5dFpYUnllU2gwYUdsekxuTndjbWx1WjBKdmJtVXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2JXRjBaWEpwWVd3Z1BTQnVaWGNnVkVoU1JVVXVUR2x1WlVKaGMybGpUV0YwWlhKcFlXd29lMXh1SUNBZ0lDQWdZMjlzYjNJNklEQjRabVptWmpBd0xGeHVJQ0FnSUNBZ1pHVndkR2hVWlhOME9pQm1ZV3h6WlN4Y2JpQWdJQ0FnSUdSbGNIUm9WM0pwZEdVNklHWmhiSE5sTEZ4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnZEdocGN5NWZiR2x1WlNBOUlHNWxkeUJVU0ZKRlJTNU1hVzVsVTJWbmJXVnVkSE1vZEdocGN5NWZaMlZ2YldWMGNua3NJRzFoZEdWeWFXRnNLVHRjYmlBZ0lDQjBhR2x6TG1Ga1pDaDBhR2x6TGw5c2FXNWxLVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJrYVhOd2IzTmxLQ2s2SUhadmFXUWdlMXh1SUNBZ0lIUm9hWE11WDJkbGIyMWxkSEo1TG1ScGMzQnZjMlVvS1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCMWNHUmhkR1ZOWVhSeWFYaFhiM0pzWkNobWIzSmpaVG9nWW05dmJHVmhiaWs2SUhadmFXUWdlMXh1SUNBZ0lIUm9hWE11YzNCeWFXNW5RbTl1WlM1aWIyNWxMblZ3WkdGMFpWZHZjbXhrVFdGMGNtbDRLSFJ5ZFdVc0lHWmhiSE5sS1R0Y2JseHVJQ0FnSUhSb2FYTXViV0YwY21sNExtTnZjSGtvZEdocGN5NXpjSEpwYm1kQ2IyNWxMbUp2Ym1VdWJXRjBjbWw0VjI5eWJHUXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2JXRjBjbWw0VjI5eWJHUkZiR1Z0Wlc1MGN5QTlJSFJvYVhNdWJXRjBjbWw0TG1Wc1pXMWxiblJ6TzF4dUlDQWdJSFJvYVhNdVgyZGxiMjFsZEhKNUxuZHZjbXhrVTJOaGJHVWdQU0JmZGpOQlhHNGdJQ0FnSUNBdWMyVjBLRzFoZEhKcGVGZHZjbXhrUld4bGJXVnVkSE5iTUYwc0lHMWhkSEpwZUZkdmNteGtSV3hsYldWdWRITmJNVjBzSUcxaGRISnBlRmR2Y214a1JXeGxiV1Z1ZEhOYk1sMHBYRzRnSUNBZ0lDQXViR1Z1WjNSb0tDazdJQzh2SUdOaGJHTjFiR0YwWlNCelkyRnNaU0J2WmlCNElHTnZiWEJ2Ym1WdWRGeHVYRzRnSUNBZ2RHaHBjeTVmWjJWdmJXVjBjbmt1ZFhCa1lYUmxLQ2s3WEc1Y2JpQWdJQ0J6ZFhCbGNpNTFjR1JoZEdWTllYUnlhWGhYYjNKc1pDaG1iM0pqWlNrN1hHNGdJSDFjYm4xY2JpSXNJbWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnVmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVUyaGhjR1VnZlNCbWNtOXRJQ2N1TDFaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNsTm9ZWEJsSnp0Y2JseHVMeW9xWEc0Z0tpQlNaWEJ5WlhObGJuUnpJR0VnWTI5c2JHbGtaWElnYjJZZ1lTQldVazB1WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCV1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSWdaWGgwWlc1a2N5QlVTRkpGUlM1UFltcGxZM1F6UkNCN1hHNGdJQzhxS2x4dUlDQWdLaUJVYUdVZ2MyaGhjR1VnYjJZZ2RHaGxJR052Ykd4cFpHVnlMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSEpsWVdSdmJteDVJSE5vWVhCbE9pQldVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWEpUYUdGd1pUdGNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2MyaGhjR1U2SUZaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNsTm9ZWEJsS1NCN1hHNGdJQ0FnYzNWd1pYSW9LVHRjYmx4dUlDQWdJSFJvYVhNdWMyaGhjR1VnUFNCemFHRndaVHRjYmlBZ2ZWeHVmVnh1SWl3aWFXMXdiM0owSUNvZ1lYTWdWRWhTUlVVZ1puSnZiU0FuZEdoeVpXVW5PMXh1WEc1amIyNXpkQ0JmYldGMFFTQTlJRzVsZHlCVVNGSkZSUzVOWVhSeWFYZzBLQ2s3WEc1Y2JpOHFLbHh1SUNvZ1FTQmpiMjF3WVhRZ1puVnVZM1JwYjI0Z1ptOXlJR0JOWVhSeWFYZzBMbWx1ZG1WeWRDZ3BZQ0F2SUdCTllYUnlhWGcwTG1kbGRFbHVkbVZ5YzJVb0tXQXVYRzRnS2lCZ1RXRjBjbWw0TkM1cGJuWmxjblFvS1dBZ2FYTWdhVzUwY205a2RXTmxaQ0JwYmlCeU1USXpJR0Z1WkNCZ1RXRjBjbWw0TkM1blpYUkpiblpsY25ObEtDbGdJR1Z0YVhSeklHRWdkMkZ5Ym1sdVp5NWNiaUFxSUZkbElHRnlaU0JuYjJsdVp5QjBieUIxYzJVZ2RHaHBjeUJqYjIxd1lYUWdabTl5SUdFZ2QyaHBiR1V1WEc0Z0tpQkFjR0Z5WVcwZ2RHRnlaMlYwSUVFZ2RHRnlaMlYwSUcxaGRISnBlRnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2JXRjBORWx1ZG1WeWRFTnZiWEJoZER4VUlHVjRkR1Z1WkhNZ1ZFaFNSVVV1VFdGMGNtbDRORDRvZEdGeVoyVjBPaUJVS1RvZ1ZDQjdYRzRnSUdsbUlDZ29kR0Z5WjJWMElHRnpJR0Z1ZVNrdWFXNTJaWEowS1NCN1hHNGdJQ0FnZEdGeVoyVjBMbWx1ZG1WeWRDZ3BPMXh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJQ2gwWVhKblpYUWdZWE1nWVc1NUtTNW5aWFJKYm5abGNuTmxLRjl0WVhSQkxtTnZjSGtvZEdGeVoyVjBLU2s3WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnZEdGeVoyVjBPMXh1ZlZ4dUlpd2lhVzF3YjNKMElDb2dZWE1nVkVoU1JVVWdabkp2YlNBbmRHaHlaV1VuTzF4dWFXMXdiM0owSUhzZ2JXRjBORWx1ZG1WeWRFTnZiWEJoZENCOUlHWnliMjBnSnk0dmJXRjBORWx1ZG1WeWRFTnZiWEJoZENjN1hHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTllYUnlhWGcwU1c1MlpYSnpaVU5oWTJobElIdGNiaUFnTHlvcVhHNGdJQ0FxSUZSb1pTQjBZWEpuWlhRZ2JXRjBjbWw0TGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhKbFlXUnZibXg1SUcxaGRISnBlRG9nVkVoU1JVVXVUV0YwY21sNE5EdGNibHh1SUNBdktpcGNiaUFnSUNvZ1FTQmpZV05vWlNCdlppQnBiblpsY25ObElHOW1JR04xY25KbGJuUWdiV0YwY21sNExseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQnlaV0ZrYjI1c2VTQmZhVzUyWlhKelpVTmhZMmhsSUQwZ2JtVjNJRlJJVWtWRkxrMWhkSEpwZURRb0tUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1FTQm1iR0ZuSUhSb1lYUWdiV0ZyWlhNZ2FYUWdkMkZ1ZENCMGJ5QnlaV05oYkdOMWJHRjBaU0JwZEhNZ2UwQnNhVzVySUY5cGJuWmxjbk5sUTJGamFHVjlMbHh1SUNBZ0tpQlhhV3hzSUdKbElITmxkQ0JnZEhKMVpXQWdkMmhsYmlCZ1pXeGxiV1Z1ZEhOZ0lHRnlaU0J0ZFhSaGRHVmtJR0Z1WkNCaVpTQjFjMlZrSUdsdUlHQm5aWFJKYm5abGNuTmxZQzVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWDNOb2IzVnNaRlZ3WkdGMFpVbHVkbVZ5YzJVZ1BTQjBjblZsTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJVYUdVZ2IzSnBaMmx1WVd3Z2IyWWdZRzFoZEhKcGVDNWxiR1Z0Wlc1MGMyQmNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdjbVZoWkc5dWJIa2dYMjl5YVdkcGJtRnNSV3hsYldWdWRITTZJRzUxYldKbGNsdGRPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpiblpsY25ObElHOW1JR2RwZG1WdUlHMWhkSEpwZUM1Y2JpQWdJQ29nVG05MFpTQjBhR0YwSUdsMElIZHBiR3dnY21WMGRYSnVJR2wwY3lCcGJuUmxjbTVoYkNCd2NtbDJZWFJsSUdsdWMzUmhibU5sTGx4dUlDQWdLaUJOWVd0bElITjFjbVVnWTI5d2VXbHVaeUIwYUdseklHSmxabTl5WlNCdGRYUmhkR1VnZEdocGN5NWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFFnYVc1MlpYSnpaU2dwT2lCVVNGSkZSUzVOWVhSeWFYZzBJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NWZjMmh2ZFd4a1ZYQmtZWFJsU1c1MlpYSnpaU2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZhVzUyWlhKelpVTmhZMmhsTG1OdmNIa29kR2hwY3k1dFlYUnlhWGdwTzF4dUlDQWdJQ0FnYldGME5FbHVkbVZ5ZEVOdmJYQmhkQ2gwYUdsekxsOXBiblpsY25ObFEyRmphR1VwTzF4dUlDQWdJQ0FnZEdocGN5NWZjMmh2ZFd4a1ZYQmtZWFJsU1c1MlpYSnpaU0E5SUdaaGJITmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDlwYm5abGNuTmxRMkZqYUdVN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9iV0YwY21sNE9pQlVTRkpGUlM1TllYUnlhWGcwS1NCN1hHNGdJQ0FnZEdocGN5NXRZWFJ5YVhnZ1BTQnRZWFJ5YVhnN1hHNWNiaUFnSUNCamIyNXpkQ0JvWVc1a2JHVnlPaUJRY205NGVVaGhibVJzWlhJOGJuVnRZbVZ5VzEwK0lEMGdlMXh1SUNBZ0lDQWdjMlYwT2lBb2IySnFMQ0J3Y205d09pQmhibmtzSUc1bGQxWmhiQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TGw5emFHOTFiR1JWY0dSaGRHVkpiblpsY25ObElEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ2IySnFXM0J5YjNCZElEMGdibVYzVm1Gc08xeHVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0I5TzF4dVhHNGdJQ0FnZEdocGN5NWZiM0pwWjJsdVlXeEZiR1Z0Wlc1MGN5QTlJRzFoZEhKcGVDNWxiR1Z0Wlc1MGN6dGNiaUFnSUNCdFlYUnlhWGd1Wld4bGJXVnVkSE1nUFNCdVpYY2dVSEp2ZUhrb2JXRjBjbWw0TG1Wc1pXMWxiblJ6TENCb1lXNWtiR1Z5S1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCeVpYWmxjblFvS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdkR2hwY3k1dFlYUnlhWGd1Wld4bGJXVnVkSE1nUFNCMGFHbHpMbDl2Y21sbmFXNWhiRVZzWlcxbGJuUnpPMXh1SUNCOVhHNTlYRzRpTENKcGJYQnZjblFnS2lCaGN5QlVTRkpGUlNCbWNtOXRJQ2QwYUhKbFpTYzdYRzVwYlhCdmNuUWdleUJ0WVhRMFNXNTJaWEowUTI5dGNHRjBJSDBnWm5KdmJTQW5MaTkxZEdsc2N5OXRZWFEwU1c1MlpYSjBRMjl0Y0dGMEp6dGNibWx0Y0c5eWRDQjdJRTFoZEhKcGVEUkpiblpsY25ObFEyRmphR1VnZlNCbWNtOXRJQ2N1TDNWMGFXeHpMMDFoZEhKcGVEUkpiblpsY25ObFEyRmphR1VuTzF4dWFXMXdiM0owSUhSNWNHVWdleUJXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhKSGNtOTFjQ0I5SUdaeWIyMGdKeTR2VmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVIzSnZkWEFuTzF4dWFXMXdiM0owSUhSNWNHVWdleUJXVWsxVGNISnBibWRDYjI1bFNtOXBiblJUWlhSMGFXNW5jeUI5SUdaeWIyMGdKeTR2VmxKTlUzQnlhVzVuUW05dVpVcHZhVzUwVTJWMGRHbHVaM01uTzF4dVhHNHZMeUJpWVhObFpDQnZibHh1THk4Z2FIUjBjRG92TDNKdlkydGxkR3AxYlhBdWMydHlMbXB3TDNWdWFYUjVNMlF2TVRBNUwxeHVMeThnYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDJSM1lXNW5ieTlWYm1sV1VrMHZZbXh2WWk5dFlYTjBaWEl2VTJOeWFYQjBjeTlUY0hKcGJtZENiMjVsTDFaU1RWTndjbWx1WjBKdmJtVXVZM05jYmx4dVkyOXVjM1FnU1VSRlRsUkpWRmxmVFVGVVVrbFlOQ0E5SUc1bGR5QlVTRkpGUlM1TllYUnlhWGcwS0NrN1hHNWNiaTh2SU9pb2lPZXVsK1M0cmVPQnJ1UzRnT2FaZ3VTL25lV3RtT2VVcU9Xa2llYVZzTys4aU9TNGdPVzZwdU9DcE9PRHMrT0N1ZU9DditPRHMrT0N1ZU9Da3VTOW5PT0JvK09CbitPQ2llT0JndU9CcU9PQnIrUzl2K09CaE9XYm51T0JtZSs4aVZ4dVkyOXVjM1FnWDNZelFTQTlJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLQ2s3WEc1amIyNXpkQ0JmZGpOQ0lEMGdibVYzSUZSSVVrVkZMbFpsWTNSdmNqTW9LVHRjYm1OdmJuTjBJRjkyTTBNZ1BTQnVaWGNnVkVoU1JVVXVWbVZqZEc5eU15Z3BPMXh1WEc0dktpcGNiaUFxSUVFZ2RHVnRjRzl5WVhKNUlIWmhjbWxoWW14bElIZG9hV05vSUdseklIVnpaV1FnYVc0Z1lIVndaR0YwWldCY2JpQXFMMXh1WTI5dWMzUWdYM2R2Y214a1UzQmhZMlZRYjNOcGRHbHZiaUE5SUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0NrN1hHNWNiaThxS2x4dUlDb2dRU0IwWlcxd2IzSmhjbmtnZG1GeWFXRmliR1VnZDJocFkyZ2dhWE1nZFhObFpDQnBiaUJnZFhCa1lYUmxZRnh1SUNvdlhHNWpiMjV6ZENCZlkyVnVkR1Z5VTNCaFkyVlFiM05wZEdsdmJpQTlJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLQ2s3WEc1Y2JpOHFLbHh1SUNvZ1FTQjBaVzF3YjNKaGNua2dkbUZ5YVdGaWJHVWdkMmhwWTJnZ2FYTWdkWE5sWkNCcGJpQmdkWEJrWVhSbFlGeHVJQ292WEc1amIyNXpkQ0JmYm1WNGRGUmhhV3dnUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncE8xeHVYRzVqYjI1emRDQmZjWFZoZEVFZ1BTQnVaWGNnVkVoU1JVVXVVWFZoZEdWeWJtbHZiaWdwTzF4dVkyOXVjM1FnWDIxaGRFRWdQU0J1WlhjZ1ZFaFNSVVV1VFdGMGNtbDROQ2dwTzF4dVkyOXVjM1FnWDIxaGRFSWdQU0J1WlhjZ1ZFaFNSVVV1VFdGMGNtbDROQ2dwTzF4dVhHNHZLaXBjYmlBcUlFRWdZMnhoYzNNZ2NtVndjbVZ6Wlc1MGN5QmhJSE5wYm1kc1pTQnFiMmx1ZENCdlppQmhJSE53Y21sdVp5QmliMjVsTGx4dUlDb2dTWFFnYzJodmRXeGtJR0psSUcxaGJtRm5aV1FnWW5rZ1lTQmJXMVpTVFZOd2NtbHVaMEp2Ym1WTllXNWhaMlZ5WFYwdVhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5QldVazFUY0hKcGJtZENiMjVsU205cGJuUWdlMXh1SUNBdktpcGNiaUFnSUNvZ1UyVjBkR2x1WjNNZ2IyWWdkR2hsSUdKdmJtVXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjMlYwZEdsdVozTTZJRlpTVFZOd2NtbHVaMEp2Ym1WS2IybHVkRk5sZEhScGJtZHpPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRiMnhzYVdSbGNpQm5jbTkxY0hNZ1lYUjBZV05vWldRZ2RHOGdkR2hwY3lCaWIyNWxMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR052Ykd4cFpHVnlSM0p2ZFhCek9pQldVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWEpIY205MWNGdGRPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJiaUJQWW1wbFkzUXpSQ0JoZEhSaFkyaGxaQ0IwYnlCMGFHbHpJR0p2Ym1VdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2NtVmhaRzl1YkhrZ1ltOXVaVG9nVkVoU1JVVXVUMkpxWldOME0wUTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFRnVJRTlpYW1WamRETkVJSFJvWVhRZ2QybHNiQ0JpWlNCMWMyVmtJR0Z6SUdFZ2RHRnBiQ0J2WmlCMGFHbHpJSE53Y21sdVp5QmliMjVsTGx4dUlDQWdLaUJKZENCallXNGdZbVVnYm5Wc2JDQjNhR1Z1SUhSb1pTQnpjSEpwYm1jZ1ltOXVaU0JwY3lCcGJYQnZjblJsWkNCbWNtOXRJRlpTVFNBd0xqQXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjbVZoWkc5dWJIa2dZMmhwYkdRNklGUklVa1ZGTGs5aWFtVmpkRE5FSUh3Z2JuVnNiRHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM1Z5Y21WdWRDQndiM05wZEdsdmJpQnZaaUJqYUdsc1pDQjBZV2xzTENCcGJpQmpaVzUwWlhJZ2RXNXBkQzRnVjJsc2JDQmlaU0IxYzJWa0lHWnZjaUIyWlhKc1pYUWdhVzUwWldkeVlYUnBiMjR1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUY5amRYSnlaVzUwVkdGcGJDQTlJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLQ2s3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkJ5WlhacGIzVnpJSEJ2YzJsMGFXOXVJRzltSUdOb2FXeGtJSFJoYVd3c0lHbHVJR05sYm5SbGNpQjFibWwwTGlCWGFXeHNJR0psSUhWelpXUWdabTl5SUhabGNteGxkQ0JwYm5SbFozSmhkR2x2Ymk1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1gzQnlaWFpVWVdsc0lEMGdibVYzSUZSSVVrVkZMbFpsWTNSdmNqTW9LVHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTVzVwZEdsaGJDQmhlR2x6SUc5bUlIUm9aU0JpYjI1bExDQnBiaUJzYjJOaGJDQjFibWwwTGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCZlltOXVaVUY0YVhNZ1BTQnVaWGNnVkVoU1JVVXVWbVZqZEc5eU15Z3BPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQk1aVzVuZEdnZ2IyWWdkR2hsSUdKdmJtVWdhVzRnZDI5eWJHUWdkVzVwZEM1Y2JpQWdJQ29nVjJsc2JDQmlaU0IxYzJWa0lHWnZjaUJ1YjNKdFlXeHBlbUYwYVc5dUlHbHVJSFZ3WkdGMFpTQnNiMjl3TENCM2FXeHNJR0psSUhWd1pHRjBaV1FnWW5rZ2UwQnNhVzVySUY5allXeGpWMjl5YkdSVGNHRmpaVUp2Ym1WTVpXNW5kR2g5TGx4dUlDQWdLbHh1SUNBZ0tpQkpkQ2R6SUhOaGJXVWdZWE1nYkc5allXd2dkVzVwZENCc1pXNW5kR2dnZFc1c1pYTnpJSFJvWlhKbElHRnlaU0J6WTJGc1pTQjBjbUZ1YzJadmNtMWhkR2x2Ym5NZ2FXNGdkR2hsSUhkdmNteGtJSE53WVdObExseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmZkMjl5YkdSVGNHRmpaVUp2Ym1WTVpXNW5kR2dnUFNBd0xqQTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUm9hWE1nYzNCeWFXNW5ZbTl1WlNCM2FXeHNJR0psSUdOaGJHTjFiR0YwWldRZ1ltRnpaV1FnYjI0Z2RHaGxJSE53WVdObElISmxiR0YwYVhabElHWnliMjBnZEdocGN5QnZZbXBsWTNRdVhHNGdJQ0FxSUVsbUlIUm9hWE1nYVhNZ1lHNTFiR3hnTENCemNISnBibWRpYjI1bElIZHBiR3dnWW1VZ1kyRnNZM1ZzWVhSbFpDQnBiaUIzYjNKc1pDQnpjR0ZqWlM1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1gyTmxiblJsY2pvZ1ZFaFNSVVV1VDJKcVpXTjBNMFFnZkNCdWRXeHNJRDBnYm5Wc2JEdGNiaUFnY0hWaWJHbGpJR2RsZENCalpXNTBaWElvS1RvZ1ZFaFNSVVV1VDJKcVpXTjBNMFFnZkNCdWRXeHNJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmWTJWdWRHVnlPMXh1SUNCOVhHNGdJSEIxWW14cFl5QnpaWFFnWTJWdWRHVnlLR05sYm5SbGNqb2dWRWhTUlVVdVQySnFaV04wTTBRZ2ZDQnVkV3hzS1NCN1hHNGdJQ0FnTHk4Z2RXNXBibk4wWVd4c0lHbHVkbVZ5YzJVZ1kyRmphR1ZjYmlBZ0lDQnBaaUFvZEdocGN5NWZZMlZ1ZEdWeVB5NTFjMlZ5UkdGMFlTNXBiblpsY25ObFEyRmphR1ZRY205NGVTa2dlMXh1SUNBZ0lDQWdLSFJvYVhNdVgyTmxiblJsY2k1MWMyVnlSR0YwWVM1cGJuWmxjbk5sUTJGamFHVlFjbTk0ZVNCaGN5Qk5ZWFJ5YVhnMFNXNTJaWEp6WlVOaFkyaGxLUzV5WlhabGNuUW9LVHRjYmlBZ0lDQWdJR1JsYkdWMFpTQjBhR2x6TGw5alpXNTBaWEl1ZFhObGNrUmhkR0V1YVc1MlpYSnpaVU5oWTJobFVISnZlSGs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnWTJoaGJtZGxJSFJvWlNCalpXNTBaWEpjYmlBZ0lDQjBhR2x6TGw5alpXNTBaWElnUFNCalpXNTBaWEk3WEc1Y2JpQWdJQ0F2THlCcGJuTjBZV3hzSUdsdWRtVnljMlVnWTJGamFHVmNiaUFnSUNCcFppQW9kR2hwY3k1ZlkyVnVkR1Z5S1NCN1hHNGdJQ0FnSUNCcFppQW9JWFJvYVhNdVgyTmxiblJsY2k1MWMyVnlSR0YwWVM1cGJuWmxjbk5sUTJGamFHVlFjbTk0ZVNrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TGw5alpXNTBaWEl1ZFhObGNrUmhkR0V1YVc1MlpYSnpaVU5oWTJobFVISnZlSGtnUFNCdVpYY2dUV0YwY21sNE5FbHVkbVZ5YzJWRFlXTm9aU2gwYUdsekxsOWpaVzUwWlhJdWJXRjBjbWw0VjI5eWJHUXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYm1sMGFXRnNJSE4wWVhSbElHOW1JSFJvWlNCc2IyTmhiQ0J0WVhSeWFYZ2diMllnZEdobElHSnZibVV1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUY5cGJtbDBhV0ZzVEc5allXeE5ZWFJ5YVhnZ1BTQnVaWGNnVkVoU1JVVXVUV0YwY21sNE5DZ3BPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpibWwwYVdGc0lITjBZWFJsSUc5bUlIUm9aU0J5YjNSaGRHbHZiaUJ2WmlCMGFHVWdZbTl1WlM1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1gybHVhWFJwWVd4TWIyTmhiRkp2ZEdGMGFXOXVJRDBnYm1WM0lGUklVa1ZGTGxGMVlYUmxjbTVwYjI0b0tUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1NXNXBkR2xoYkNCemRHRjBaU0J2WmlCMGFHVWdjRzl6YVhScGIyNGdiMllnYVhSeklHTm9hV3hrTGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCZmFXNXBkR2xoYkV4dlkyRnNRMmhwYkdSUWIzTnBkR2x2YmlBOUlHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektDazdYRzRnSUhCMVlteHBZeUJuWlhRZ2FXNXBkR2xoYkV4dlkyRnNRMmhwYkdSUWIzTnBkR2x2YmlncE9pQlVTRkpGUlM1V1pXTjBiM0l6SUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmFXNXBkR2xoYkV4dlkyRnNRMmhwYkdSUWIzTnBkR2x2Ymp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklIUm9aU0IzYjNKc1pDQnRZWFJ5YVhnZ2IyWWdhWFJ6SUhCaGNtVnVkQ0J2WW1wbFkzUXVYRzRnSUNBcUlFNXZkR1VnZEdoaGRDQnBkQ0J5WlhSMWNtNXpJR0VnY21WbVpYSmxibU5sSUhSdklIUm9aU0J0WVhSeWFYZ3VJRVJ2YmlkMElHMTFkR0YwWlNCMGFHbHpJR1JwY21WamRHeDVJVnh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0JuWlhRZ1gzQmhjbVZ1ZEUxaGRISnBlRmR2Y214a0tDazZJRlJJVWtWRkxrMWhkSEpwZURRZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtSnZibVV1Y0dGeVpXNTBJRDhnZEdocGN5NWliMjVsTG5CaGNtVnVkQzV0WVhSeWFYaFhiM0pzWkNBNklFbEVSVTVVU1ZSWlgwMUJWRkpKV0RRN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbElHRWdibVYzSUZaU1RWTndjbWx1WjBKdmJtVXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0JpYjI1bElFRnVJRTlpYW1WamRETkVJSFJvWVhRZ2QybHNiQ0JpWlNCaGRIUmhZMmhsWkNCMGJ5QjBhR2x6SUdKdmJtVmNiaUFnSUNvZ1FIQmhjbUZ0SUdOb2FXeGtJRUZ1SUU5aWFtVmpkRE5FSUhSb1lYUWdkMmxzYkNCaVpTQjFjMlZrSUdGeklHRWdkR0ZwYkNCdlppQjBhR2x6SUhOd2NtbHVaeUJpYjI1bExpQkpkQ0JqWVc0Z1ltVWdiblZzYkNCM2FHVnVJSFJvWlNCemNISnBibWNnWW05dVpTQnBjeUJwYlhCdmNuUmxaQ0JtY205dElGWlNUU0F3TGpCY2JpQWdJQ29nUUhCaGNtRnRJSE5sZEhScGJtZHpJRk5sZG1WeVlXd2djR0Z5WVcxbGRHVnljeUJ5Wld4aGRHVmtJSFJ2SUdKbGFHRjJhVzl5SUc5bUlIUm9aU0J6Y0hKcGJtY2dZbTl1WlZ4dUlDQWdLaUJBY0dGeVlXMGdZMjlzYkdsa1pYSkhjbTkxY0hNZ1EyOXNiR2xrWlhJZ1ozSnZkWEJ6SUhSb1lYUWdkMmxzYkNCaVpTQmpiMnhzYVdSbFpDQjNhWFJvSUhSb2FYTWdjM0J5YVc1bklHSnZibVZjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtGeHVJQ0FnSUdKdmJtVTZJRlJJVWtWRkxrOWlhbVZqZERORUxGeHVJQ0FnSUdOb2FXeGtPaUJVU0ZKRlJTNVBZbXBsWTNRelJDQjhJRzUxYkd3c1hHNGdJQ0FnYzJWMGRHbHVaM002SUZCaGNuUnBZV3c4VmxKTlUzQnlhVzVuUW05dVpVcHZhVzUwVTJWMGRHbHVaM00rSUQwZ2UzMHNYRzRnSUNBZ1kyOXNiR2xrWlhKSGNtOTFjSE02SUZaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNrZHliM1Z3VzEwZ1BTQmJYU3hjYmlBZ0tTQjdYRzRnSUNBZ2RHaHBjeTVpYjI1bElEMGdZbTl1WlRzZ0x5OGdkVzVwVmxKTjQ0R240NEd1SUhCaGNtVnVkRnh1SUNBZ0lIUm9hWE11WW05dVpTNXRZWFJ5YVhoQmRYUnZWWEJrWVhSbElEMGdabUZzYzJVN0lDOHZJSFZ3WkdGMFplT0JxK09DaU9PQ2l1aW9pT2V1bCtPQmxlT0NqT09DaStPQnJ1T0JwM1JvY21WbExtcHo1WWFGNDRHbjQ0R3U2SWVxNVl1VjVZZW01NUNHNDRHdjVMaU42S2FCWEc1Y2JpQWdJQ0IwYUdsekxtTm9hV3hrSUQwZ1kyaHBiR1E3WEc1Y2JpQWdJQ0IwYUdsekxuTmxkSFJwYm1keklEMGdlMXh1SUNBZ0lDQWdhR2wwVW1Ga2FYVnpPaUJ6WlhSMGFXNW5jeTVvYVhSU1lXUnBkWE1nUHo4Z01DNHdMRnh1SUNBZ0lDQWdjM1JwWm1adVpYTnpPaUJ6WlhSMGFXNW5jeTV6ZEdsbVptNWxjM01nUHo4Z01TNHdMRnh1SUNBZ0lDQWdaM0poZG1sMGVWQnZkMlZ5T2lCelpYUjBhVzVuY3k1bmNtRjJhWFI1VUc5M1pYSWdQejhnTUM0d0xGeHVJQ0FnSUNBZ1ozSmhkbWwwZVVScGNqb2djMlYwZEdsdVozTXVaM0poZG1sMGVVUnBjajh1WTJ4dmJtVW9LU0EvUHlCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlnd0xqQXNJQzB4TGpBc0lEQXVNQ2tzWEc0Z0lDQWdJQ0JrY21GblJtOXlZMlU2SUhObGRIUnBibWR6TG1SeVlXZEdiM0pqWlNBL1B5QXdMalFzWEc0Z0lDQWdmVHRjYmx4dUlDQWdJSFJvYVhNdVkyOXNiR2xrWlhKSGNtOTFjSE1nUFNCamIyeHNhV1JsY2tkeWIzVndjenRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCVFpYUWdkR2hsSUdsdWFYUnBZV3dnYzNSaGRHVWdiMllnZEdocGN5QnpjSEpwYm1jZ1ltOXVaUzVjYmlBZ0lDb2dXVzkxSUcxcFoyaDBJSGRoYm5RZ2RHOGdZMkZzYkNCN1FHeHBibXNnVmxKTlUzQnlhVzVuUW05dVpVMWhibUZuWlhJdWMyVjBTVzVwZEZOMFlYUmxmU0JwYm5OMFpXRmtMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE5sZEVsdWFYUlRkR0YwWlNncE9pQjJiMmxrSUh0Y2JpQWdJQ0F2THlCeVpXMWxiV0psY2lCcGJtbDBhV0ZzSUhCdmMybDBhVzl1SUc5bUlHbDBjMlZzWmx4dUlDQWdJSFJvYVhNdVgybHVhWFJwWVd4TWIyTmhiRTFoZEhKcGVDNWpiM0I1S0hSb2FYTXVZbTl1WlM1dFlYUnlhWGdwTzF4dUlDQWdJSFJvYVhNdVgybHVhWFJwWVd4TWIyTmhiRkp2ZEdGMGFXOXVMbU52Y0hrb2RHaHBjeTVpYjI1bExuRjFZWFJsY201cGIyNHBPMXh1WEc0Z0lDQWdMeThnYzJWbElHbHVhWFJwWVd3Z2NHOXphWFJwYjI0Z2IyWWdhWFJ6SUd4dlkyRnNJR05vYVd4a1hHNGdJQ0FnYVdZZ0tIUm9hWE11WTJocGJHUXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVgybHVhWFJwWVd4TWIyTmhiRU5vYVd4a1VHOXphWFJwYjI0dVkyOXdlU2gwYUdsekxtTm9hV3hrTG5CdmMybDBhVzl1S1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdMeThnZG5KdE1DQnlaWEYxYVhKbGN5QmhJRGRqYlNCbWFYaGxaQ0JpYjI1bElHeGxibWQwYUNCbWIzSWdkR2hsSUdacGJtRnNJRzV2WkdVZ2FXNGdZU0JqYUdGcGJseHVJQ0FnSUNBZ0x5OGdVMlZsT2lCb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdmRuSnRMV012ZG5KdExYTndaV05wWm1sallYUnBiMjR2ZEhKbFpTOXRZWE4wWlhJdmMzQmxZMmxtYVdOaGRHbHZiaTlXVWsxRFgzTndjbWx1WjBKdmJtVXRNUzR3STJGaWIzVjBMWE53Y21sdVp5MWpiMjVtYVdkMWNtRjBhVzl1WEc0Z0lDQWdJQ0IwYUdsekxsOXBibWwwYVdGc1RHOWpZV3hEYUdsc1pGQnZjMmwwYVc5dUxtTnZjSGtvZEdocGN5NWliMjVsTG5CdmMybDBhVzl1S1M1dWIzSnRZV3hwZW1Vb0tTNXRkV3gwYVhCc2VWTmpZV3hoY2lnd0xqQTNLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJqYjNCNUlIUm9aU0JqYUdsc1pDQndiM05wZEdsdmJpQjBieUIwWVdsc2MxeHVJQ0FnSUdOdmJuTjBJRzFoZEhKcGVGZHZjbXhrVkc5RFpXNTBaWElnUFNCMGFHbHpMbDluWlhSTllYUnlhWGhYYjNKc1pGUnZRMlZ1ZEdWeUtGOXRZWFJCS1R0Y2JpQWdJQ0IwYUdsekxtSnZibVV1Ykc5allXeFViMWR2Y214a0tIUm9hWE11WDJOMWNuSmxiblJVWVdsc0xtTnZjSGtvZEdocGN5NWZhVzVwZEdsaGJFeHZZMkZzUTJocGJHUlFiM05wZEdsdmJpa3BMbUZ3Y0d4NVRXRjBjbWw0TkNodFlYUnlhWGhYYjNKc1pGUnZRMlZ1ZEdWeUtUdGNiaUFnSUNCMGFHbHpMbDl3Y21WMlZHRnBiQzVqYjNCNUtIUm9hWE11WDJOMWNuSmxiblJVWVdsc0tUdGNibHh1SUNBZ0lDOHZJSE5sZENCcGJtbDBhV0ZzSUhOMFlYUmxjeUIwYUdGMElHRnlaU0J5Wld4aGRHVmtJSFJ2SUd4dlkyRnNJR05vYVd4a0lIQnZjMmwwYVc5dVhHNGdJQ0FnZEdocGN5NWZZbTl1WlVGNGFYTXVZMjl3ZVNoMGFHbHpMbDlwYm1sMGFXRnNURzlqWVd4RGFHbHNaRkJ2YzJsMGFXOXVLUzV1YjNKdFlXeHBlbVVvS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWE5sZENCMGFHVWdjM1JoZEdVZ2IyWWdkR2hwY3lCaWIyNWxMbHh1SUNBZ0tpQlpiM1VnYldsbmFIUWdkMkZ1ZENCMGJ5QmpZV3hzSUZ0YlZsSk5VM0J5YVc1blFtOXVaVTFoYm1GblpYSXVjbVZ6WlhSZFhTQnBibk4wWldGa0xseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklISmxjMlYwS0NrNklIWnZhV1FnZTF4dUlDQWdJSFJvYVhNdVltOXVaUzV4ZFdGMFpYSnVhVzl1TG1OdmNIa29kR2hwY3k1ZmFXNXBkR2xoYkV4dlkyRnNVbTkwWVhScGIyNHBPMXh1WEc0Z0lDQWdMeThnVjJVZ2JtVmxaQ0IwYnlCMWNHUmhkR1VnYVhSeklHMWhkSEpwZUZkdmNteGtJRzFoYm5WaGJHeDVMQ0J6YVc1alpTQjNaU0IwZDJWaGEyVmtJSFJvWlNCaWIyNWxJR0o1SUc5MWNpQm9ZVzVrWEc0Z0lDQWdkR2hwY3k1aWIyNWxMblZ3WkdGMFpVMWhkSEpwZUNncE8xeHVJQ0FnSUhSb2FYTXVZbTl1WlM1dFlYUnlhWGhYYjNKc1pDNXRkV3gwYVhCc2VVMWhkSEpwWTJWektIUm9hWE11WDNCaGNtVnVkRTFoZEhKcGVGZHZjbXhrTENCMGFHbHpMbUp2Ym1VdWJXRjBjbWw0S1R0Y2JseHVJQ0FnSUM4dklFRndjR3g1SUhWd1pHRjBaV1FnY0c5emFYUnBiMjRnZEc4Z2RHRnBiQ0J6ZEdGMFpYTmNiaUFnSUNCamIyNXpkQ0J0WVhSeWFYaFhiM0pzWkZSdlEyVnVkR1Z5SUQwZ2RHaHBjeTVmWjJWMFRXRjBjbWw0VjI5eWJHUlViME5sYm5SbGNpaGZiV0YwUVNrN1hHNGdJQ0FnZEdocGN5NWliMjVsTG14dlkyRnNWRzlYYjNKc1pDaDBhR2x6TGw5amRYSnlaVzUwVkdGcGJDNWpiM0I1S0hSb2FYTXVYMmx1YVhScFlXeE1iMk5oYkVOb2FXeGtVRzl6YVhScGIyNHBLUzVoY0hCc2VVMWhkSEpwZURRb2JXRjBjbWw0VjI5eWJHUlViME5sYm5SbGNpazdYRzRnSUNBZ2RHaHBjeTVmY0hKbGRsUmhhV3d1WTI5d2VTaDBhR2x6TGw5amRYSnlaVzUwVkdGcGJDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVlhCa1lYUmxJSFJvWlNCemRHRjBaU0J2WmlCMGFHbHpJR0p2Ym1VdVhHNGdJQ0FxSUZsdmRTQnRhV2RvZENCM1lXNTBJSFJ2SUdOaGJHd2dXMXRXVWsxVGNISnBibWRDYjI1bFRXRnVZV2RsY2k1MWNHUmhkR1ZkWFNCcGJuTjBaV0ZrTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ1pHVnNkR0VnWkdWc2RHRlVhVzFsWEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nZFhCa1lYUmxLR1JsYkhSaE9pQnVkVzFpWlhJcE9pQjJiMmxrSUh0Y2JpQWdJQ0JwWmlBb1pHVnNkR0VnUEQwZ01Da2djbVYwZFhKdU8xeHVYRzRnSUNBZ0x5OGdWWEJrWVhSbElIUm9aU0JmZDI5eWJHUlRjR0ZqWlVKdmJtVk1aVzVuZEdoY2JpQWdJQ0IwYUdsekxsOWpZV3hqVjI5eWJHUlRjR0ZqWlVKdmJtVk1aVzVuZEdnb0tUdGNibHh1SUNBZ0lDOHZJRWRsZENCaWIyNWxJSEJ2YzJsMGFXOXVJR2x1SUdObGJuUmxjaUJ6Y0dGalpWeHVJQ0FnSUY5M2IzSnNaRk53WVdObFVHOXphWFJwYjI0dWMyVjBSbkp2YlUxaGRISnBlRkJ2YzJsMGFXOXVLSFJvYVhNdVltOXVaUzV0WVhSeWFYaFhiM0pzWkNrN1hHNGdJQ0FnYkdWMElHMWhkSEpwZUZkdmNteGtWRzlEWlc1MFpYSWdQU0IwYUdsekxsOW5aWFJOWVhSeWFYaFhiM0pzWkZSdlEyVnVkR1Z5S0Y5dFlYUkJLVHRjYmlBZ0lDQmZZMlZ1ZEdWeVUzQmhZMlZRYjNOcGRHbHZiaTVqYjNCNUtGOTNiM0pzWkZOd1lXTmxVRzl6YVhScGIyNHBMbUZ3Y0d4NVRXRjBjbWw0TkNodFlYUnlhWGhYYjNKc1pGUnZRMlZ1ZEdWeUtUdGNiaUFnSUNCamIyNXpkQ0J4ZFdGMFYyOXliR1JVYjBObGJuUmxjaUE5SUY5eGRXRjBRUzV6WlhSR2NtOXRVbTkwWVhScGIyNU5ZWFJ5YVhnb2JXRjBjbWw0VjI5eWJHUlViME5sYm5SbGNpazdYRzVjYmlBZ0lDQXZMeUJIWlhRZ2NHRnlaVzUwSUcxaGRISnBlQ0JwYmlCalpXNTBaWElnYzNCaFkyVmNiaUFnSUNCamIyNXpkQ0JqWlc1MFpYSlRjR0ZqWlZCaGNtVnVkRTFoZEhKcGVDQTlJRjl0WVhSQ0xtTnZjSGtvYldGMGNtbDRWMjl5YkdSVWIwTmxiblJsY2lrdWJYVnNkR2x3Ykhrb2RHaHBjeTVmY0dGeVpXNTBUV0YwY21sNFYyOXliR1FwTzF4dVhHNGdJQ0FnTHk4Z1IyVjBJR0p2Ym1WQmVHbHpJR2x1SUdObGJuUmxjaUJ6Y0dGalpWeHVJQ0FnSUdOdmJuTjBJR05sYm5SbGNsTndZV05sUW05dVpVRjRhWE1nUFNCZmRqTkNYRzRnSUNBZ0lDQXVZMjl3ZVNoMGFHbHpMbDlpYjI1bFFYaHBjeWxjYmlBZ0lDQWdJQzVoY0hCc2VVMWhkSEpwZURRb2RHaHBjeTVmYVc1cGRHbGhiRXh2WTJGc1RXRjBjbWw0S1Z4dUlDQWdJQ0FnTG1Gd2NHeDVUV0YwY21sNE5DaGpaVzUwWlhKVGNHRmpaVkJoY21WdWRFMWhkSEpwZUNsY2JpQWdJQ0FnSUM1emRXSW9YMk5sYm5SbGNsTndZV05sVUc5emFYUnBiMjRwWEc0Z0lDQWdJQ0F1Ym05eWJXRnNhWHBsS0NrN1hHNWNiaUFnSUNBdkx5Qm5jbUYyYVhSNUlHbHVJR05sYm5SbGNpQnpjR0ZqWlZ4dUlDQWdJR052Ym5OMElHTmxiblJsY2xOd1lXTmxSM0poZG1sMGVTQTlJRjkyTTBNdVkyOXdlU2gwYUdsekxuTmxkSFJwYm1kekxtZHlZWFpwZEhsRWFYSXBMbUZ3Y0d4NVVYVmhkR1Z5Ym1sdmJpaHhkV0YwVjI5eWJHUlViME5sYm5SbGNpa3VibTl5YldGc2FYcGxLQ2s3WEc1Y2JpQWdJQ0JqYjI1emRDQnRZWFJ5YVhoRFpXNTBaWEpVYjFkdmNteGtJRDBnZEdocGN5NWZaMlYwVFdGMGNtbDRRMlZ1ZEdWeVZHOVhiM0pzWkNoZmJXRjBRU2s3WEc1Y2JpQWdJQ0F2THlCMlpYSnNaWFRucVkzbGlJYmpnYWZtcktIamdhN2t2WTNudmE3amdwTG9xSWpucnBkY2JpQWdJQ0JmYm1WNGRGUmhhV3hjYmlBZ0lDQWdJQzVqYjNCNUtIUm9hWE11WDJOMWNuSmxiblJVWVdsc0tWeHVJQ0FnSUNBZ0xtRmtaQ2hjYmlBZ0lDQWdJQ0FnWDNZelFWeHVJQ0FnSUNBZ0lDQWdJQzVqYjNCNUtIUm9hWE11WDJOMWNuSmxiblJVWVdsc0tWeHVJQ0FnSUNBZ0lDQWdJQzV6ZFdJb2RHaHBjeTVmY0hKbGRsUmhhV3dwWEc0Z0lDQWdJQ0FnSUNBZ0xtMTFiSFJwY0d4NVUyTmhiR0Z5S0RFZ0xTQjBhR2x6TG5ObGRIUnBibWR6TG1SeVlXZEdiM0pqWlNrc1hHNGdJQ0FnSUNBcElDOHZJT1dKamVPRGxlT0RyT09Edk9PRG9PT0JydWVudStXTGxlT0NrdWUybWVlMm11T0JtZU9DaXlqbXVKdm9vYkRqZ29MamdZTGpnb3ZqZ29ncFhHNGdJQ0FnSUNBdVlXUmtLRjkyTTBFdVkyOXdlU2hqWlc1MFpYSlRjR0ZqWlVKdmJtVkJlR2x6S1M1dGRXeDBhWEJzZVZOallXeGhjaWgwYUdsekxuTmxkSFJwYm1kekxuTjBhV1ptYm1WemN5QXFJR1JsYkhSaEtTa2dMeThnNkthcTQ0R3U1WnVlNkx1aTQ0R3I0NEtJNDRLTDVhMlE0NE9jNDRPODQ0T3o0NEd1NTZlNzVZdVY1NXV1NXFpWlhHNGdJQ0FnSUNBdVlXUmtLRjkyTTBFdVkyOXdlU2hqWlc1MFpYSlRjR0ZqWlVkeVlYWnBkSGtwTG0xMWJIUnBjR3g1VTJOaGJHRnlLSFJvYVhNdWMyVjBkR2x1WjNNdVozSmhkbWwwZVZCdmQyVnlJQ29nWkdWc2RHRXBLU0F2THlEbHBKYmxpcHZqZ2F2amdvampnb3ZucDd2bGk1WHBoNDljYmlBZ0lDQWdJQzVoY0hCc2VVMWhkSEpwZURRb2JXRjBjbWw0UTJWdWRHVnlWRzlYYjNKc1pDazdJQzh2SUhSaGFXempncEozYjNKc1pDQnpjR0ZqWmVPQnErYUl1K09CbVZ4dVhHNGdJQ0FnTHk4Z2JtOXliV0ZzYVhwbElHSnZibVVnYkdWdVozUm9YRzRnSUNBZ1gyNWxlSFJVWVdsc0xuTjFZaWhmZDI5eWJHUlRjR0ZqWlZCdmMybDBhVzl1S1M1dWIzSnRZV3hwZW1Vb0tTNXRkV3gwYVhCc2VWTmpZV3hoY2loMGFHbHpMbDkzYjNKc1pGTndZV05sUW05dVpVeGxibWQwYUNrdVlXUmtLRjkzYjNKc1pGTndZV05sVUc5emFYUnBiMjRwTzF4dVhHNGdJQ0FnTHk4Z1EyOXNiR2x6YVc5dTQ0R241NmU3NVl1VlhHNGdJQ0FnZEdocGN5NWZZMjlzYkdsemFXOXVLRjl1WlhoMFZHRnBiQ2s3WEc1Y2JpQWdJQ0F2THlCMWNHUmhkR1VnY0hKbGRsUmhhV3dnWVc1a0lHTjFjbkpsYm5SVVlXbHNYRzRnSUNBZ2JXRjBjbWw0VjI5eWJHUlViME5sYm5SbGNpQTlJSFJvYVhNdVgyZGxkRTFoZEhKcGVGZHZjbXhrVkc5RFpXNTBaWElvWDIxaGRFRXBPMXh1WEc0Z0lDQWdkR2hwY3k1ZmNISmxkbFJoYVd3dVkyOXdlU2gwYUdsekxsOWpkWEp5Wlc1MFZHRnBiQ2s3WEc0Z0lDQWdkR2hwY3k1ZlkzVnljbVZ1ZEZSaGFXd3VZMjl3ZVNoZmRqTkJMbU52Y0hrb1gyNWxlSFJVWVdsc0tTNWhjSEJzZVUxaGRISnBlRFFvYldGMGNtbDRWMjl5YkdSVWIwTmxiblJsY2lrcE8xeHVYRzRnSUNBZ0x5OGdRWEJ3YkhrZ2NtOTBZWFJwYjI0c0lHTnZiblpsY25RZ2RtVmpkRzl5TXlCMGFHbHVaeUJwYm5SdklHRmpkSFZoYkNCeGRXRjBaWEp1YVc5dVhHNGdJQ0FnTHk4Z1QzSnBaMmx1WVd3Z1ZXNXBWbEpOSUdseklHUnZhVzVuSUdObGJuUmxjaUIxYm1sMElHTmhiR04xYkhWeklHRjBJR2hsY21VZ1luVjBJSGRsSjNKbElHZHZibTVoSUdSdklIUm9hWE1nYjI0Z2JHOWpZV3dnZFc1cGRGeHVJQ0FnSUdOdmJuTjBJSGR2Y214a1UzQmhZMlZKYm1sMGFXRnNUV0YwY21sNFNXNTJJRDBnYldGME5FbHVkbVZ5ZEVOdmJYQmhkQ2hjYmlBZ0lDQWdJRjl0WVhSQkxtTnZjSGtvZEdocGN5NWZjR0Z5Wlc1MFRXRjBjbWw0VjI5eWJHUXBMbTExYkhScGNHeDVLSFJvYVhNdVgybHVhWFJwWVd4TWIyTmhiRTFoZEhKcGVDa3NYRzRnSUNBZ0tUdGNiaUFnSUNCamIyNXpkQ0JoY0hCc2VWSnZkR0YwYVc5dUlEMGdYM0YxWVhSQkxuTmxkRVp5YjIxVmJtbDBWbVZqZEc5eWN5aGNiaUFnSUNBZ0lIUm9hWE11WDJKdmJtVkJlR2x6TEZ4dUlDQWdJQ0FnWDNZelFTNWpiM0I1S0Y5dVpYaDBWR0ZwYkNrdVlYQndiSGxOWVhSeWFYZzBLSGR2Y214a1UzQmhZMlZKYm1sMGFXRnNUV0YwY21sNFNXNTJLUzV1YjNKdFlXeHBlbVVvS1N4Y2JpQWdJQ0FwTzF4dVhHNGdJQ0FnZEdocGN5NWliMjVsTG5GMVlYUmxjbTVwYjI0dVkyOXdlU2gwYUdsekxsOXBibWwwYVdGc1RHOWpZV3hTYjNSaGRHbHZiaWt1YlhWc2RHbHdiSGtvWVhCd2JIbFNiM1JoZEdsdmJpazdYRzVjYmlBZ0lDQXZMeUJYWlNCdVpXVmtJSFJ2SUhWd1pHRjBaU0JwZEhNZ2JXRjBjbWw0VjI5eWJHUWdiV0Z1ZFdGc2JIa3NJSE5wYm1ObElIZGxJSFIzWldGclpXUWdkR2hsSUdKdmJtVWdZbmtnYjNWeUlHaGhibVJjYmlBZ0lDQjBhR2x6TG1KdmJtVXVkWEJrWVhSbFRXRjBjbWw0S0NrN1hHNGdJQ0FnZEdocGN5NWliMjVsTG0xaGRISnBlRmR2Y214a0xtMTFiSFJwY0d4NVRXRjBjbWxqWlhNb2RHaHBjeTVmY0dGeVpXNTBUV0YwY21sNFYyOXliR1FzSUhSb2FYTXVZbTl1WlM1dFlYUnlhWGdwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFUnZJR052Ykd4cGMybHZiaUJ0WVhSb0lHRm5ZV2x1YzNRZ1pYWmxjbmtnWTI5c2JHbGtaWEp6SUdGMGRHRmphR1ZrSUhSdklIUm9hWE1nWW05dVpTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSFJoYVd3Z1ZHaGxJSFJoYVd3Z2VXOTFJSGRoYm5RZ2RHOGdjSEp2WTJWemMxeHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmZZMjlzYkdsemFXOXVLSFJoYVd3NklGUklVa1ZGTGxabFkzUnZjak1wT2lCMmIybGtJSHRjYmlBZ0lDQjBhR2x6TG1OdmJHeHBaR1Z5UjNKdmRYQnpMbVp2Y2tWaFkyZ29LR052Ykd4cFpHVnlSM0p2ZFhBcElEMCtJSHRjYmlBZ0lDQWdJR052Ykd4cFpHVnlSM0p2ZFhBdVkyOXNiR2xrWlhKekxtWnZja1ZoWTJnb0tHTnZiR3hwWkdWeUtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR1JwYzNRZ1BTQmpiMnhzYVdSbGNpNXphR0Z3WlM1allXeGpkV3hoZEdWRGIyeHNhWE5wYjI0b1kyOXNiR2xrWlhJdWJXRjBjbWw0VjI5eWJHUXNJSFJoYVd3c0lIUm9hWE11YzJWMGRHbHVaM011YUdsMFVtRmthWFZ6TENCZmRqTkJLVHRjYmx4dUlDQWdJQ0FnSUNCcFppQW9aR2x6ZENBOElEQXVNQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJR2hwZEZ4dUlDQWdJQ0FnSUNBZ0lIUmhhV3d1WVdSa0tGOTJNMEV1YlhWc2RHbHdiSGxUWTJGc1lYSW9MV1JwYzNRcEtUdGNibHh1SUNBZ0lDQWdJQ0FnSUM4dklHNXZjbTFoYkdsNlpTQmliMjVsSUd4bGJtZDBhRnh1SUNBZ0lDQWdJQ0FnSUhSaGFXd3VjM1ZpS0Y5M2IzSnNaRk53WVdObFVHOXphWFJwYjI0cExtNXZjbTFoYkdsNlpTZ3BMbTExYkhScGNHeDVVMk5oYkdGeUtIUm9hWE11WDNkdmNteGtVM0JoWTJWQ2IyNWxUR1Z1WjNSb0tTNWhaR1FvWDNkdmNteGtVM0JoWTJWUWIzTnBkR2x2YmlrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOaGJHTjFiR0YwWlNCMGFHVWdlMEJzYVc1cklGOTNiM0pzWkZOd1lXTmxRbTl1WlV4bGJtZDBhSDB1WEc0Z0lDQXFJRWx1ZEdWdVpHVmtJSFJ2SUdKbElIVnpaV1FnYVc0Z2UwQnNhVzVySUhWd1pHRjBaWDB1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUY5allXeGpWMjl5YkdSVGNHRmpaVUp2Ym1WTVpXNW5kR2dvS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdYM1l6UVM1elpYUkdjbTl0VFdGMGNtbDRVRzl6YVhScGIyNG9kR2hwY3k1aWIyNWxMbTFoZEhKcGVGZHZjbXhrS1RzZ0x5OGdaMlYwSUhkdmNteGtJSEJ2YzJsMGFXOXVJRzltSUhSb2FYTXVZbTl1WlZ4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11WTJocGJHUXBJSHRjYmlBZ0lDQWdJRjkyTTBJdWMyVjBSbkp2YlUxaGRISnBlRkJ2YzJsMGFXOXVLSFJvYVhNdVkyaHBiR1F1YldGMGNtbDRWMjl5YkdRcE95QXZMeUJuWlhRZ2QyOXliR1FnY0c5emFYUnBiMjRnYjJZZ2RHaHBjeTVqYUdsc1pGeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JmZGpOQ0xtTnZjSGtvZEdocGN5NWZhVzVwZEdsaGJFeHZZMkZzUTJocGJHUlFiM05wZEdsdmJpazdYRzRnSUNBZ0lDQmZkak5DTG1Gd2NHeDVUV0YwY21sNE5DaDBhR2x6TG1KdmJtVXViV0YwY21sNFYyOXliR1FwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdVgzZHZjbXhrVTNCaFkyVkNiMjVsVEdWdVozUm9JRDBnWDNZelFTNXpkV0lvWDNZelFpa3ViR1Z1WjNSb0tDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxJR0VnYldGMGNtbDRJSFJvWVhRZ1kyOXVkbVZ5ZEhNZ1kyVnVkR1Z5SUhOd1lXTmxJR2x1ZEc4Z2QyOXliR1FnYzNCaFkyVXVYRzRnSUNBcUlFQndZWEpoYlNCMFlYSm5aWFFnVkdGeVoyVjBJRzFoZEhKcGVGeHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmZaMlYwVFdGMGNtbDRRMlZ1ZEdWeVZHOVhiM0pzWkNoMFlYSm5aWFE2SUZSSVVrVkZMazFoZEhKcGVEUXBPaUJVU0ZKRlJTNU5ZWFJ5YVhnMElIdGNiaUFnSUNCcFppQW9kR2hwY3k1ZlkyVnVkR1Z5S1NCN1hHNGdJQ0FnSUNCMFlYSm5aWFF1WTI5d2VTaDBhR2x6TGw5alpXNTBaWEl1YldGMGNtbDRWMjl5YkdRcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0IwWVhKblpYUXVhV1JsYm5ScGRIa29LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2RHRnlaMlYwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlNCaElHMWhkSEpwZUNCMGFHRjBJR052Ym5abGNuUnpJSGR2Y214a0lITndZV05sSUdsdWRHOGdZMlZ1ZEdWeUlITndZV05sTGx4dUlDQWdLaUJBY0dGeVlXMGdkR0Z5WjJWMElGUmhjbWRsZENCdFlYUnlhWGhjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWDJkbGRFMWhkSEpwZUZkdmNteGtWRzlEWlc1MFpYSW9kR0Z5WjJWME9pQlVTRkpGUlM1TllYUnlhWGcwS1RvZ1ZFaFNSVVV1VFdGMGNtbDROQ0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYMk5sYm5SbGNpa2dlMXh1SUNBZ0lDQWdkR0Z5WjJWMExtTnZjSGtvS0hSb2FYTXVYMk5sYm5SbGNpNTFjMlZ5UkdGMFlTNXBiblpsY25ObFEyRmphR1ZRY205NGVTQmhjeUJOWVhSeWFYZzBTVzUyWlhKelpVTmhZMmhsS1M1cGJuWmxjbk5sS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR0Z5WjJWMExtbGtaVzUwYVhSNUtDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhSaGNtZGxkRHRjYmlBZ2ZWeHVmVnh1SWl3aUx5b3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2x4eVhHNURiM0I1Y21sbmFIUWdLR01wSUUxcFkzSnZjMjltZENCRGIzSndiM0poZEdsdmJpNWNjbHh1WEhKY2JsQmxjbTFwYzNOcGIyNGdkRzhnZFhObExDQmpiM0I1TENCdGIyUnBabmtzSUdGdVpDOXZjaUJrYVhOMGNtbGlkWFJsSUhSb2FYTWdjMjltZEhkaGNtVWdabTl5SUdGdWVWeHlYRzV3ZFhKd2IzTmxJSGRwZEdnZ2IzSWdkMmwwYUc5MWRDQm1aV1VnYVhNZ2FHVnlaV0o1SUdkeVlXNTBaV1F1WEhKY2JseHlYRzVVU0VVZ1UwOUdWRmRCVWtVZ1NWTWdVRkpQVmtsRVJVUWdYQ0pCVXlCSlUxd2lJRUZPUkNCVVNFVWdRVlZVU0U5U0lFUkpVME5NUVVsTlV5QkJURXdnVjBGU1VrRk9WRWxGVXlCWFNWUklYSEpjYmxKRlIwRlNSQ0JVVHlCVVNFbFRJRk5QUmxSWFFWSkZJRWxPUTB4VlJFbE9SeUJCVEV3Z1NVMVFURWxGUkNCWFFWSlNRVTVVU1VWVElFOUdJRTFGVWtOSVFVNVVRVUpKVEVsVVdWeHlYRzVCVGtRZ1JrbFVUa1ZUVXk0Z1NVNGdUazhnUlZaRlRsUWdVMGhCVEV3Z1ZFaEZJRUZWVkVoUFVpQkNSU0JNU1VGQ1RFVWdSazlTSUVGT1dTQlRVRVZEU1VGTUxDQkVTVkpGUTFRc1hISmNia2xPUkVsU1JVTlVMQ0JQVWlCRFQwNVRSVkZWUlU1VVNVRk1JRVJCVFVGSFJWTWdUMUlnUVU1WklFUkJUVUZIUlZNZ1YwaEJWRk5QUlZaRlVpQlNSVk5WVEZSSlRrY2dSbEpQVFZ4eVhHNU1UMU5USUU5R0lGVlRSU3dnUkVGVVFTQlBVaUJRVWs5R1NWUlRMQ0JYU0VWVVNFVlNJRWxPSUVGT0lFRkRWRWxQVGlCUFJpQkRUMDVVVWtGRFZDd2dUa1ZIVEVsSFJVNURSU0JQVWx4eVhHNVBWRWhGVWlCVVQxSlVTVTlWVXlCQlExUkpUMDRzSUVGU1NWTkpUa2NnVDFWVUlFOUdJRTlTSUVsT0lFTlBUazVGUTFSSlQwNGdWMGxVU0NCVVNFVWdWVk5GSUU5U1hISmNibEJGVWtaUFVrMUJUa05GSUU5R0lGUklTVk1nVTA5R1ZGZEJVa1V1WEhKY2Jpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xSUNvdlhISmNiaThxSUdkc2IySmhiQ0JTWldac1pXTjBMQ0JRY205dGFYTmxJQ292WEhKY2JseHlYRzUyWVhJZ1pYaDBaVzVrVTNSaGRHbGpjeUE5SUdaMWJtTjBhVzl1S0dRc0lHSXBJSHRjY2x4dUlDQWdJR1Y0ZEdWdVpGTjBZWFJwWTNNZ1BTQlBZbXBsWTNRdWMyVjBVSEp2ZEc5MGVYQmxUMllnZkh4Y2NseHVJQ0FnSUNBZ0lDQW9leUJmWDNCeWIzUnZYMTg2SUZ0ZElIMGdhVzV6ZEdGdVkyVnZaaUJCY25KaGVTQW1KaUJtZFc1amRHbHZiaUFvWkN3Z1lpa2dleUJrTGw5ZmNISnZkRzlmWHlBOUlHSTdJSDBwSUh4OFhISmNiaUFnSUNBZ0lDQWdablZ1WTNScGIyNGdLR1FzSUdJcElIc2dabTl5SUNoMllYSWdjQ0JwYmlCaUtTQnBaaUFvVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzVvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0dJc0lIQXBLU0JrVzNCZElEMGdZbHR3WFRzZ2ZUdGNjbHh1SUNBZ0lISmxkSFZ5YmlCbGVIUmxibVJUZEdGMGFXTnpLR1FzSUdJcE8xeHlYRzU5TzF4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmWlhoMFpXNWtjeWhrTENCaUtTQjdYSEpjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JR0lnSVQwOUlGd2lablZ1WTNScGIyNWNJaUFtSmlCaUlDRTlQU0J1ZFd4c0tWeHlYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKRGJHRnpjeUJsZUhSbGJtUnpJSFpoYkhWbElGd2lJQ3NnVTNSeWFXNW5LR0lwSUNzZ1hDSWdhWE1nYm05MElHRWdZMjl1YzNSeWRXTjBiM0lnYjNJZ2JuVnNiRndpS1R0Y2NseHVJQ0FnSUdWNGRHVnVaRk4wWVhScFkzTW9aQ3dnWWlrN1hISmNiaUFnSUNCbWRXNWpkR2x2YmlCZlh5Z3BJSHNnZEdocGN5NWpiMjV6ZEhKMVkzUnZjaUE5SUdRN0lIMWNjbHh1SUNBZ0lHUXVjSEp2ZEc5MGVYQmxJRDBnWWlBOVBUMGdiblZzYkNBL0lFOWlhbVZqZEM1amNtVmhkR1VvWWlrZ09pQW9YMTh1Y0hKdmRHOTBlWEJsSUQwZ1lpNXdjbTkwYjNSNWNHVXNJRzVsZHlCZlh5Z3BLVHRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUhaaGNpQmZYMkZ6YzJsbmJpQTlJR1oxYm1OMGFXOXVLQ2tnZTF4eVhHNGdJQ0FnWDE5aGMzTnBaMjRnUFNCUFltcGxZM1F1WVhOemFXZHVJSHg4SUdaMWJtTjBhVzl1SUY5ZllYTnphV2R1S0hRcElIdGNjbHh1SUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJ6TENCcElEMGdNU3dnYmlBOUlHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnN0lHa2dQQ0J1T3lCcEt5c3BJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjeUE5SUdGeVozVnRaVzUwYzF0cFhUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2NDQnBiaUJ6S1NCcFppQW9UMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLSE1zSUhBcEtTQjBXM0JkSUQwZ2MxdHdYVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUTdYSEpjYmlBZ0lDQjlYSEpjYmlBZ0lDQnlaWFIxY200Z1gxOWhjM05wWjI0dVlYQndiSGtvZEdocGN5d2dZWEpuZFcxbGJuUnpLVHRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmNtVnpkQ2h6TENCbEtTQjdYSEpjYmlBZ0lDQjJZWElnZENBOUlIdDlPMXh5WEc0Z0lDQWdabTl5SUNoMllYSWdjQ0JwYmlCektTQnBaaUFvVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzVvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0hNc0lIQXBJQ1ltSUdVdWFXNWtaWGhQWmlod0tTQThJREFwWEhKY2JpQWdJQ0FnSUNBZ2RGdHdYU0E5SUhOYmNGMDdYSEpjYmlBZ0lDQnBaaUFvY3lBaFBTQnVkV3hzSUNZbUlIUjVjR1Z2WmlCUFltcGxZM1F1WjJWMFQzZHVVSEp2Y0dWeWRIbFRlVzFpYjJ4eklEMDlQU0JjSW1aMWJtTjBhVzl1WENJcFhISmNiaUFnSUNBZ0lDQWdabTl5SUNoMllYSWdhU0E5SURBc0lIQWdQU0JQWW1wbFkzUXVaMlYwVDNkdVVISnZjR1Z5ZEhsVGVXMWliMnh6S0hNcE95QnBJRHdnY0M1c1pXNW5kR2c3SUdrckt5a2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWlM1cGJtUmxlRTltS0hCYmFWMHBJRHdnTUNBbUppQlBZbXBsWTNRdWNISnZkRzkwZVhCbExuQnliM0JsY25SNVNYTkZiblZ0WlhKaFlteGxMbU5oYkd3b2N5d2djRnRwWFNrcFhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBXM0JiYVYxZElEMGdjMXR3VzJsZFhUdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0J5WlhSMWNtNGdkRHRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZlpHVmpiM0poZEdVb1pHVmpiM0poZEc5eWN5d2dkR0Z5WjJWMExDQnJaWGtzSUdSbGMyTXBJSHRjY2x4dUlDQWdJSFpoY2lCaklEMGdZWEpuZFcxbGJuUnpMbXhsYm1kMGFDd2djaUE5SUdNZ1BDQXpJRDhnZEdGeVoyVjBJRG9nWkdWell5QTlQVDBnYm5Wc2JDQS9JR1JsYzJNZ1BTQlBZbXBsWTNRdVoyVjBUM2R1VUhKdmNHVnlkSGxFWlhOamNtbHdkRzl5S0hSaGNtZGxkQ3dnYTJWNUtTQTZJR1JsYzJNc0lHUTdYSEpjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JRkpsWm14bFkzUWdQVDA5SUZ3aWIySnFaV04wWENJZ0ppWWdkSGx3Wlc5bUlGSmxabXhsWTNRdVpHVmpiM0poZEdVZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlrZ2NpQTlJRkpsWm14bFkzUXVaR1ZqYjNKaGRHVW9aR1ZqYjNKaGRHOXljeXdnZEdGeVoyVjBMQ0JyWlhrc0lHUmxjMk1wTzF4eVhHNGdJQ0FnWld4elpTQm1iM0lnS0haaGNpQnBJRDBnWkdWamIzSmhkRzl5Y3k1c1pXNW5kR2dnTFNBeE95QnBJRDQ5SURBN0lHa3RMU2tnYVdZZ0tHUWdQU0JrWldOdmNtRjBiM0p6VzJsZEtTQnlJRDBnS0dNZ1BDQXpJRDhnWkNoeUtTQTZJR01nUGlBeklEOGdaQ2gwWVhKblpYUXNJR3RsZVN3Z2Npa2dPaUJrS0hSaGNtZGxkQ3dnYTJWNUtTa2dmSHdnY2p0Y2NseHVJQ0FnSUhKbGRIVnliaUJqSUQ0Z015QW1KaUJ5SUNZbUlFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2gwWVhKblpYUXNJR3RsZVN3Z2Npa3NJSEk3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgzQmhjbUZ0S0hCaGNtRnRTVzVrWlhnc0lHUmxZMjl5WVhSdmNpa2dlMXh5WEc0Z0lDQWdjbVYwZFhKdUlHWjFibU4wYVc5dUlDaDBZWEpuWlhRc0lHdGxlU2tnZXlCa1pXTnZjbUYwYjNJb2RHRnlaMlYwTENCclpYa3NJSEJoY21GdFNXNWtaWGdwT3lCOVhISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMlZ6UkdWamIzSmhkR1VvWTNSdmNpd2daR1Z6WTNKcGNIUnZja2x1TENCa1pXTnZjbUYwYjNKekxDQmpiMjUwWlhoMFNXNHNJR2x1YVhScFlXeHBlbVZ5Y3l3Z1pYaDBjbUZKYm1sMGFXRnNhWHBsY25NcElIdGNjbHh1SUNBZ0lHWjFibU4wYVc5dUlHRmpZMlZ3ZENobUtTQjdJR2xtSUNobUlDRTlQU0IyYjJsa0lEQWdKaVlnZEhsd1pXOW1JR1lnSVQwOUlGd2lablZ1WTNScGIyNWNJaWtnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lrWjFibU4wYVc5dUlHVjRjR1ZqZEdWa1hDSXBPeUJ5WlhSMWNtNGdaanNnZlZ4eVhHNGdJQ0FnZG1GeUlHdHBibVFnUFNCamIyNTBaWGgwU1c0dWEybHVaQ3dnYTJWNUlEMGdhMmx1WkNBOVBUMGdYQ0puWlhSMFpYSmNJaUEvSUZ3aVoyVjBYQ0lnT2lCcmFXNWtJRDA5UFNCY0luTmxkSFJsY2x3aUlEOGdYQ0p6WlhSY0lpQTZJRndpZG1Gc2RXVmNJanRjY2x4dUlDQWdJSFpoY2lCMFlYSm5aWFFnUFNBaFpHVnpZM0pwY0hSdmNrbHVJQ1ltSUdOMGIzSWdQeUJqYjI1MFpYaDBTVzViWENKemRHRjBhV05jSWwwZ1B5QmpkRzl5SURvZ1kzUnZjaTV3Y205MGIzUjVjR1VnT2lCdWRXeHNPMXh5WEc0Z0lDQWdkbUZ5SUdSbGMyTnlhWEIwYjNJZ1BTQmtaWE5qY21sd2RHOXlTVzRnZkh3Z0tIUmhjbWRsZENBL0lFOWlhbVZqZEM1blpYUlBkMjVRY205d1pYSjBlVVJsYzJOeWFYQjBiM0lvZEdGeVoyVjBMQ0JqYjI1MFpYaDBTVzR1Ym1GdFpTa2dPaUI3ZlNrN1hISmNiaUFnSUNCMllYSWdYeXdnWkc5dVpTQTlJR1poYkhObE8xeHlYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJR1JsWTI5eVlYUnZjbk11YkdWdVozUm9JQzBnTVRzZ2FTQStQU0F3T3lCcExTMHBJSHRjY2x4dUlDQWdJQ0FnSUNCMllYSWdZMjl1ZEdWNGRDQTlJSHQ5TzF4eVhHNGdJQ0FnSUNBZ0lHWnZjaUFvZG1GeUlIQWdhVzRnWTI5dWRHVjRkRWx1S1NCamIyNTBaWGgwVzNCZElEMGdjQ0E5UFQwZ1hDSmhZMk5sYzNOY0lpQS9JSHQ5SURvZ1kyOXVkR1Y0ZEVsdVczQmRPMXh5WEc0Z0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUhBZ2FXNGdZMjl1ZEdWNGRFbHVMbUZqWTJWemN5a2dZMjl1ZEdWNGRDNWhZMk5sYzNOYmNGMGdQU0JqYjI1MFpYaDBTVzR1WVdOalpYTnpXM0JkTzF4eVhHNGdJQ0FnSUNBZ0lHTnZiblJsZUhRdVlXUmtTVzVwZEdsaGJHbDZaWElnUFNCbWRXNWpkR2x2YmlBb1ppa2dleUJwWmlBb1pHOXVaU2tnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lrTmhibTV2ZENCaFpHUWdhVzVwZEdsaGJHbDZaWEp6SUdGbWRHVnlJR1JsWTI5eVlYUnBiMjRnYUdGeklHTnZiWEJzWlhSbFpGd2lLVHNnWlhoMGNtRkpibWwwYVdGc2FYcGxjbk11Y0hWemFDaGhZMk5sY0hRb1ppQjhmQ0J1ZFd4c0tTazdJSDA3WEhKY2JpQWdJQ0FnSUNBZ2RtRnlJSEpsYzNWc2RDQTlJQ2d3TENCa1pXTnZjbUYwYjNKelcybGRLU2hyYVc1a0lEMDlQU0JjSW1GalkyVnpjMjl5WENJZ1B5QjdJR2RsZERvZ1pHVnpZM0pwY0hSdmNpNW5aWFFzSUhObGREb2daR1Z6WTNKcGNIUnZjaTV6WlhRZ2ZTQTZJR1JsYzJOeWFYQjBiM0piYTJWNVhTd2dZMjl1ZEdWNGRDazdYSEpjYmlBZ0lDQWdJQ0FnYVdZZ0tHdHBibVFnUFQwOUlGd2lZV05qWlhOemIzSmNJaWtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NtVnpkV3gwSUQwOVBTQjJiMmxrSURBcElHTnZiblJwYm5WbE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jbVZ6ZFd4MElEMDlQU0J1ZFd4c0lIeDhJSFI1Y0dWdlppQnlaWE4xYkhRZ0lUMDlJRndpYjJKcVpXTjBYQ0lwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSlBZbXBsWTNRZ1pYaHdaV04wWldSY0lpazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hmSUQwZ1lXTmpaWEIwS0hKbGMzVnNkQzVuWlhRcEtTQmtaWE5qY21sd2RHOXlMbWRsZENBOUlGODdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hmSUQwZ1lXTmpaWEIwS0hKbGMzVnNkQzV6WlhRcEtTQmtaWE5qY21sd2RHOXlMbk5sZENBOUlGODdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hmSUQwZ1lXTmpaWEIwS0hKbGMzVnNkQzVwYm1sMEtTa2dhVzVwZEdsaGJHbDZaWEp6TG5CMWMyZ29YeWs3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLRjhnUFNCaFkyTmxjSFFvY21WemRXeDBLU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2EybHVaQ0E5UFQwZ1hDSm1hV1ZzWkZ3aUtTQnBibWwwYVdGc2FYcGxjbk11Y0hWemFDaGZLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCa1pYTmpjbWx3ZEc5eVcydGxlVjBnUFNCZk8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQWdJR2xtSUNoMFlYSm5aWFFwSUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaDBZWEpuWlhRc0lHTnZiblJsZUhSSmJpNXVZVzFsTENCa1pYTmpjbWx3ZEc5eUtUdGNjbHh1SUNBZ0lHUnZibVVnUFNCMGNuVmxPMXh5WEc1OU8xeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmNuVnVTVzVwZEdsaGJHbDZaWEp6S0hSb2FYTkJjbWNzSUdsdWFYUnBZV3hwZW1WeWN5d2dkbUZzZFdVcElIdGNjbHh1SUNBZ0lIWmhjaUIxYzJWV1lXeDFaU0E5SUdGeVozVnRaVzUwY3k1c1pXNW5kR2dnUGlBeU8xeHlYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQnBibWwwYVdGc2FYcGxjbk11YkdWdVozUm9PeUJwS3lzcElIdGNjbHh1SUNBZ0lDQWdJQ0IyWVd4MVpTQTlJSFZ6WlZaaGJIVmxJRDhnYVc1cGRHbGhiR2w2WlhKelcybGRMbU5oYkd3b2RHaHBjMEZ5Wnl3Z2RtRnNkV1VwSURvZ2FXNXBkR2xoYkdsNlpYSnpXMmxkTG1OaGJHd29kR2hwYzBGeVp5azdYSEpjYmlBZ0lDQjlYSEpjYmlBZ0lDQnlaWFIxY200Z2RYTmxWbUZzZFdVZ1B5QjJZV3gxWlNBNklIWnZhV1FnTUR0Y2NseHVmVHRjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYM0J5YjNCTFpYa29lQ2tnZTF4eVhHNGdJQ0FnY21WMGRYSnVJSFI1Y0dWdlppQjRJRDA5UFNCY0luTjViV0p2YkZ3aUlEOGdlQ0E2SUZ3aVhDSXVZMjl1WTJGMEtIZ3BPMXh5WEc1OU8xeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmMyVjBSblZ1WTNScGIyNU9ZVzFsS0dZc0lHNWhiV1VzSUhCeVpXWnBlQ2tnZTF4eVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCdVlXMWxJRDA5UFNCY0luTjViV0p2YkZ3aUtTQnVZVzFsSUQwZ2JtRnRaUzVrWlhOamNtbHdkR2x2YmlBL0lGd2lXMXdpTG1OdmJtTmhkQ2h1WVcxbExtUmxjMk55YVhCMGFXOXVMQ0JjSWwxY0lpa2dPaUJjSWx3aU8xeHlYRzRnSUNBZ2NtVjBkWEp1SUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaG1MQ0JjSW01aGJXVmNJaXdnZXlCamIyNW1hV2QxY21GaWJHVTZJSFJ5ZFdVc0lIWmhiSFZsT2lCd2NtVm1hWGdnUHlCY0lsd2lMbU52Ym1OaGRDaHdjbVZtYVhnc0lGd2lJRndpTENCdVlXMWxLU0E2SUc1aGJXVWdmU2s3WEhKY2JuMDdYSEpjYmx4eVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1gxOXRaWFJoWkdGMFlTaHRaWFJoWkdGMFlVdGxlU3dnYldWMFlXUmhkR0ZXWVd4MVpTa2dlMXh5WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJTWldac1pXTjBJRDA5UFNCY0ltOWlhbVZqZEZ3aUlDWW1JSFI1Y0dWdlppQlNaV1pzWldOMExtMWxkR0ZrWVhSaElEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElISmxkSFZ5YmlCU1pXWnNaV04wTG0xbGRHRmtZWFJoS0cxbGRHRmtZWFJoUzJWNUxDQnRaWFJoWkdGMFlWWmhiSFZsS1R0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGOWZZWGRoYVhSbGNpaDBhR2x6UVhKbkxDQmZZWEpuZFcxbGJuUnpMQ0JRTENCblpXNWxjbUYwYjNJcElIdGNjbHh1SUNBZ0lHWjFibU4wYVc5dUlHRmtiM0IwS0haaGJIVmxLU0I3SUhKbGRIVnliaUIyWVd4MVpTQnBibk4wWVc1alpXOW1JRkFnUHlCMllXeDFaU0E2SUc1bGR5QlFLR1oxYm1OMGFXOXVJQ2h5WlhOdmJIWmxLU0I3SUhKbGMyOXNkbVVvZG1Gc2RXVXBPeUI5S1RzZ2ZWeHlYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QW9VQ0I4ZkNBb1VDQTlJRkJ5YjIxcGMyVXBLU2htZFc1amRHbHZiaUFvY21WemIyeDJaU3dnY21WcVpXTjBLU0I3WEhKY2JpQWdJQ0FnSUNBZ1puVnVZM1JwYjI0Z1puVnNabWxzYkdWa0tIWmhiSFZsS1NCN0lIUnllU0I3SUhOMFpYQW9aMlZ1WlhKaGRHOXlMbTVsZUhRb2RtRnNkV1VwS1RzZ2ZTQmpZWFJqYUNBb1pTa2dleUJ5WldwbFkzUW9aU2s3SUgwZ2ZWeHlYRzRnSUNBZ0lDQWdJR1oxYm1OMGFXOXVJSEpsYW1WamRHVmtLSFpoYkhWbEtTQjdJSFJ5ZVNCN0lITjBaWEFvWjJWdVpYSmhkRzl5VzF3aWRHaHliM2RjSWwwb2RtRnNkV1VwS1RzZ2ZTQmpZWFJqYUNBb1pTa2dleUJ5WldwbFkzUW9aU2s3SUgwZ2ZWeHlYRzRnSUNBZ0lDQWdJR1oxYm1OMGFXOXVJSE4wWlhBb2NtVnpkV3gwS1NCN0lISmxjM1ZzZEM1a2IyNWxJRDhnY21WemIyeDJaU2h5WlhOMWJIUXVkbUZzZFdVcElEb2dZV1J2Y0hRb2NtVnpkV3gwTG5aaGJIVmxLUzUwYUdWdUtHWjFiR1pwYkd4bFpDd2djbVZxWldOMFpXUXBPeUI5WEhKY2JpQWdJQ0FnSUNBZ2MzUmxjQ2dvWjJWdVpYSmhkRzl5SUQwZ1oyVnVaWEpoZEc5eUxtRndjR3g1S0hSb2FYTkJjbWNzSUY5aGNtZDFiV1Z1ZEhNZ2ZId2dXMTBwS1M1dVpYaDBLQ2twTzF4eVhHNGdJQ0FnZlNrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmZYMmRsYm1WeVlYUnZjaWgwYUdselFYSm5MQ0JpYjJSNUtTQjdYSEpjYmlBZ0lDQjJZWElnWHlBOUlIc2diR0ZpWld3NklEQXNJSE5sYm5RNklHWjFibU4wYVc5dUtDa2dleUJwWmlBb2RGc3dYU0FtSURFcElIUm9jbTkzSUhSYk1WMDdJSEpsZEhWeWJpQjBXekZkT3lCOUxDQjBjbmx6T2lCYlhTd2diM0J6T2lCYlhTQjlMQ0JtTENCNUxDQjBMQ0JuTzF4eVhHNGdJQ0FnY21WMGRYSnVJR2NnUFNCN0lHNWxlSFE2SUhabGNtSW9NQ2tzSUZ3aWRHaHliM2RjSWpvZ2RtVnlZaWd4S1N3Z1hDSnlaWFIxY201Y0lqb2dkbVZ5WWlneUtTQjlMQ0IwZVhCbGIyWWdVM2x0WW05c0lEMDlQU0JjSW1aMWJtTjBhVzl1WENJZ0ppWWdLR2RiVTNsdFltOXNMbWwwWlhKaGRHOXlYU0E5SUdaMWJtTjBhVzl1S0NrZ2V5QnlaWFIxY200Z2RHaHBjenNnZlNrc0lHYzdYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQjJaWEppS0c0cElIc2djbVYwZFhKdUlHWjFibU4wYVc5dUlDaDJLU0I3SUhKbGRIVnliaUJ6ZEdWd0tGdHVMQ0IyWFNrN0lIMDdJSDFjY2x4dUlDQWdJR1oxYm1OMGFXOXVJSE4wWlhBb2IzQXBJSHRjY2x4dUlDQWdJQ0FnSUNCcFppQW9aaWtnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lrZGxibVZ5WVhSdmNpQnBjeUJoYkhKbFlXUjVJR1Y0WldOMWRHbHVaeTVjSWlrN1hISmNiaUFnSUNBZ0lDQWdkMmhwYkdVZ0tHY2dKaVlnS0djZ1BTQXdMQ0J2Y0Zzd1hTQW1KaUFvWHlBOUlEQXBLU3dnWHlrZ2RISjVJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dZZ1BTQXhMQ0I1SUNZbUlDaDBJRDBnYjNCYk1GMGdKaUF5SUQ4Z2VWdGNJbkpsZEhWeWJsd2lYU0E2SUc5d1d6QmRJRDhnZVZ0Y0luUm9jbTkzWENKZElIeDhJQ2dvZENBOUlIbGJYQ0p5WlhSMWNtNWNJbDBwSUNZbUlIUXVZMkZzYkNoNUtTd2dNQ2tnT2lCNUxtNWxlSFFwSUNZbUlDRW9kQ0E5SUhRdVkyRnNiQ2g1TENCdmNGc3hYU2twTG1SdmJtVXBJSEpsZEhWeWJpQjBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZVNBOUlEQXNJSFFwSUc5d0lEMGdXMjl3V3pCZElDWWdNaXdnZEM1MllXeDFaVjA3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSE4zYVhSamFDQW9iM0JiTUYwcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ01Eb2dZMkZ6WlNBeE9pQjBJRDBnYjNBN0lHSnlaV0ZyTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0EwT2lCZkxteGhZbVZzS3lzN0lISmxkSFZ5YmlCN0lIWmhiSFZsT2lCdmNGc3hYU3dnWkc5dVpUb2dabUZzYzJVZ2ZUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ05Ub2dYeTVzWVdKbGJDc3JPeUI1SUQwZ2IzQmJNVjA3SUc5d0lEMGdXekJkT3lCamIyNTBhVzUxWlR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnTnpvZ2IzQWdQU0JmTG05d2N5NXdiM0FvS1RzZ1h5NTBjbmx6TG5CdmNDZ3BPeUJqYjI1MGFXNTFaVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdSbFptRjFiSFE2WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0NFb2RDQTlJRjh1ZEhKNWN5d2dkQ0E5SUhRdWJHVnVaM1JvSUQ0Z01DQW1KaUIwVzNRdWJHVnVaM1JvSUMwZ01WMHBJQ1ltSUNodmNGc3dYU0E5UFQwZ05pQjhmQ0J2Y0Zzd1hTQTlQVDBnTWlrcElIc2dYeUE5SURBN0lHTnZiblJwYm5WbE95QjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzl3V3pCZElEMDlQU0F6SUNZbUlDZ2hkQ0I4ZkNBb2IzQmJNVjBnUGlCMFd6QmRJQ1ltSUc5d1d6RmRJRHdnZEZzelhTa3BLU0I3SUY4dWJHRmlaV3dnUFNCdmNGc3hYVHNnWW5KbFlXczdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYjNCYk1GMGdQVDA5SURZZ0ppWWdYeTVzWVdKbGJDQThJSFJiTVYwcElIc2dYeTVzWVdKbGJDQTlJSFJiTVYwN0lIUWdQU0J2Y0RzZ1luSmxZV3M3SUgxY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RDQW1KaUJmTG14aFltVnNJRHdnZEZzeVhTa2dleUJmTG14aFltVnNJRDBnZEZzeVhUc2dYeTV2Y0hNdWNIVnphQ2h2Y0NrN0lHSnlaV0ZyT3lCOVhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUmJNbDBwSUY4dWIzQnpMbkJ2Y0NncE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUY4dWRISjVjeTV3YjNBb0tUc2dZMjl1ZEdsdWRXVTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2IzQWdQU0JpYjJSNUxtTmhiR3dvZEdocGMwRnlaeXdnWHlrN1hISmNiaUFnSUNBZ0lDQWdmU0JqWVhSamFDQW9aU2tnZXlCdmNDQTlJRnMyTENCbFhUc2dlU0E5SURBN0lIMGdabWx1WVd4c2VTQjdJR1lnUFNCMElEMGdNRHNnZlZ4eVhHNGdJQ0FnSUNBZ0lHbG1JQ2h2Y0Zzd1hTQW1JRFVwSUhSb2NtOTNJRzl3V3pGZE95QnlaWFIxY200Z2V5QjJZV3gxWlRvZ2IzQmJNRjBnUHlCdmNGc3hYU0E2SUhadmFXUWdNQ3dnWkc5dVpUb2dkSEoxWlNCOU8xeHlYRzRnSUNBZ2ZWeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdkbUZ5SUY5ZlkzSmxZWFJsUW1sdVpHbHVaeUE5SUU5aWFtVmpkQzVqY21WaGRHVWdQeUFvWm5WdVkzUnBiMjRvYnl3Z2JTd2dheXdnYXpJcElIdGNjbHh1SUNBZ0lHbG1JQ2hyTWlBOVBUMGdkVzVrWldacGJtVmtLU0JyTWlBOUlHczdYSEpjYmlBZ0lDQjJZWElnWkdWell5QTlJRTlpYW1WamRDNW5aWFJQZDI1UWNtOXdaWEowZVVSbGMyTnlhWEIwYjNJb2JTd2dheWs3WEhKY2JpQWdJQ0JwWmlBb0lXUmxjMk1nZkh3Z0tGd2laMlYwWENJZ2FXNGdaR1Z6WXlBL0lDRnRMbDlmWlhOTmIyUjFiR1VnT2lCa1pYTmpMbmR5YVhSaFlteGxJSHg4SUdSbGMyTXVZMjl1Wm1sbmRYSmhZbXhsS1NrZ2UxeHlYRzRnSUNBZ0lDQWdJR1JsYzJNZ1BTQjdJR1Z1ZFcxbGNtRmliR1U2SUhSeWRXVXNJR2RsZERvZ1puVnVZM1JwYjI0b0tTQjdJSEpsZEhWeWJpQnRXMnRkT3lCOUlIMDdYSEpjYmlBZ0lDQjlYSEpjYmlBZ0lDQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvYnl3Z2F6SXNJR1JsYzJNcE8xeHlYRzU5S1NBNklDaG1kVzVqZEdsdmJpaHZMQ0J0TENCckxDQnJNaWtnZTF4eVhHNGdJQ0FnYVdZZ0tHc3lJRDA5UFNCMWJtUmxabWx1WldRcElHc3lJRDBnYXp0Y2NseHVJQ0FnSUc5YmF6SmRJRDBnYlZ0clhUdGNjbHh1ZlNrN1hISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5bGVIQnZjblJUZEdGeUtHMHNJRzhwSUh0Y2NseHVJQ0FnSUdadmNpQW9kbUZ5SUhBZ2FXNGdiU2tnYVdZZ0tIQWdJVDA5SUZ3aVpHVm1ZWFZzZEZ3aUlDWW1JQ0ZQWW1wbFkzUXVjSEp2ZEc5MGVYQmxMbWhoYzA5M2JsQnliM0JsY25SNUxtTmhiR3dvYnl3Z2NDa3BJRjlmWTNKbFlYUmxRbWx1WkdsdVp5aHZMQ0J0TENCd0tUdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmZG1Gc2RXVnpLRzhwSUh0Y2NseHVJQ0FnSUhaaGNpQnpJRDBnZEhsd1pXOW1JRk41YldKdmJDQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlDWW1JRk41YldKdmJDNXBkR1Z5WVhSdmNpd2diU0E5SUhNZ0ppWWdiMXR6WFN3Z2FTQTlJREE3WEhKY2JpQWdJQ0JwWmlBb2JTa2djbVYwZFhKdUlHMHVZMkZzYkNodktUdGNjbHh1SUNBZ0lHbG1JQ2h2SUNZbUlIUjVjR1Z2WmlCdkxteGxibWQwYUNBOVBUMGdYQ0p1ZFcxaVpYSmNJaWtnY21WMGRYSnVJSHRjY2x4dUlDQWdJQ0FnSUNCdVpYaDBPaUJtZFc1amRHbHZiaUFvS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHZJQ1ltSUdrZ1BqMGdieTVzWlc1bmRHZ3BJRzhnUFNCMmIybGtJREE3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjdJSFpoYkhWbE9pQnZJQ1ltSUc5YmFTc3JYU3dnWkc5dVpUb2dJVzhnZlR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlPMXh5WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWh6SUQ4Z1hDSlBZbXBsWTNRZ2FYTWdibTkwSUdsMFpYSmhZbXhsTGx3aUlEb2dYQ0pUZVcxaWIyd3VhWFJsY21GMGIzSWdhWE1nYm05MElHUmxabWx1WldRdVhDSXBPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5eVpXRmtLRzhzSUc0cElIdGNjbHh1SUNBZ0lIWmhjaUJ0SUQwZ2RIbHdaVzltSUZONWJXSnZiQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJQ1ltSUc5YlUzbHRZbTlzTG1sMFpYSmhkRzl5WFR0Y2NseHVJQ0FnSUdsbUlDZ2hiU2tnY21WMGRYSnVJRzg3WEhKY2JpQWdJQ0IyWVhJZ2FTQTlJRzB1WTJGc2JDaHZLU3dnY2l3Z1lYSWdQU0JiWFN3Z1pUdGNjbHh1SUNBZ0lIUnllU0I3WEhKY2JpQWdJQ0FnSUNBZ2QyaHBiR1VnS0NodUlEMDlQU0IyYjJsa0lEQWdmSHdnYmkwdElENGdNQ2tnSmlZZ0lTaHlJRDBnYVM1dVpYaDBLQ2twTG1SdmJtVXBJR0Z5TG5CMWMyZ29jaTUyWVd4MVpTazdYSEpjYmlBZ0lDQjlYSEpjYmlBZ0lDQmpZWFJqYUNBb1pYSnliM0lwSUhzZ1pTQTlJSHNnWlhKeWIzSTZJR1Z5Y205eUlIMDdJSDFjY2x4dUlDQWdJR1pwYm1Gc2JIa2dlMXh5WEc0Z0lDQWdJQ0FnSUhSeWVTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h5SUNZbUlDRnlMbVJ2Ym1VZ0ppWWdLRzBnUFNCcFcxd2ljbVYwZFhKdVhDSmRLU2tnYlM1allXeHNLR2twTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0JtYVc1aGJHeDVJSHNnYVdZZ0tHVXBJSFJvY205M0lHVXVaWEp5YjNJN0lIMWNjbHh1SUNBZ0lIMWNjbHh1SUNBZ0lISmxkSFZ5YmlCaGNqdGNjbHh1ZlZ4eVhHNWNjbHh1THlvcUlFQmtaWEJ5WldOaGRHVmtJQ292WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgzTndjbVZoWkNncElIdGNjbHh1SUNBZ0lHWnZjaUFvZG1GeUlHRnlJRDBnVzEwc0lHa2dQU0F3T3lCcElEd2dZWEpuZFcxbGJuUnpMbXhsYm1kMGFEc2dhU3NyS1Z4eVhHNGdJQ0FnSUNBZ0lHRnlJRDBnWVhJdVkyOXVZMkYwS0Y5ZmNtVmhaQ2hoY21kMWJXVnVkSE5iYVYwcEtUdGNjbHh1SUNBZ0lISmxkSFZ5YmlCaGNqdGNjbHh1ZlZ4eVhHNWNjbHh1THlvcUlFQmtaWEJ5WldOaGRHVmtJQ292WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgzTndjbVZoWkVGeWNtRjVjeWdwSUh0Y2NseHVJQ0FnSUdadmNpQW9kbUZ5SUhNZ1BTQXdMQ0JwSUQwZ01Dd2dhV3dnUFNCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvT3lCcElEd2dhV3c3SUdrckt5a2djeUFyUFNCaGNtZDFiV1Z1ZEhOYmFWMHViR1Z1WjNSb08xeHlYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2NpQTlJRUZ5Y21GNUtITXBMQ0JySUQwZ01Dd2dhU0E5SURBN0lHa2dQQ0JwYkRzZ2FTc3JLVnh5WEc0Z0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUdFZ1BTQmhjbWQxYldWdWRITmJhVjBzSUdvZ1BTQXdMQ0JxYkNBOUlHRXViR1Z1WjNSb095QnFJRHdnYW13N0lHb3JLeXdnYXlzcktWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVcydGRJRDBnWVZ0cVhUdGNjbHh1SUNBZ0lISmxkSFZ5YmlCeU8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTl6Y0hKbFlXUkJjbkpoZVNoMGJ5d2dabkp2YlN3Z2NHRmpheWtnZTF4eVhHNGdJQ0FnYVdZZ0tIQmhZMnNnZkh3Z1lYSm5kVzFsYm5SekxteGxibWQwYUNBOVBUMGdNaWtnWm05eUlDaDJZWElnYVNBOUlEQXNJR3dnUFNCbWNtOXRMbXhsYm1kMGFDd2dZWEk3SUdrZ1BDQnNPeUJwS3lzcElIdGNjbHh1SUNBZ0lDQWdJQ0JwWmlBb1lYSWdmSHdnSVNocElHbHVJR1p5YjIwcEtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2doWVhJcElHRnlJRDBnUVhKeVlYa3VjSEp2ZEc5MGVYQmxMbk5zYVdObExtTmhiR3dvWm5KdmJTd2dNQ3dnYVNrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdGeVcybGRJRDBnWm5KdmJWdHBYVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNCOVhISmNiaUFnSUNCeVpYUjFjbTRnZEc4dVkyOXVZMkYwS0dGeUlIeDhJRUZ5Y21GNUxuQnliM1J2ZEhsd1pTNXpiR2xqWlM1allXeHNLR1p5YjIwcEtUdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmWVhkaGFYUW9kaWtnZTF4eVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNZ2FXNXpkR0Z1WTJWdlppQmZYMkYzWVdsMElEOGdLSFJvYVhNdWRpQTlJSFlzSUhSb2FYTXBJRG9nYm1WM0lGOWZZWGRoYVhRb2RpazdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJmWDJGemVXNWpSMlZ1WlhKaGRHOXlLSFJvYVhOQmNtY3NJRjloY21kMWJXVnVkSE1zSUdkbGJtVnlZWFJ2Y2lrZ2UxeHlYRzRnSUNBZ2FXWWdLQ0ZUZVcxaWIyd3VZWE41Ym1OSmRHVnlZWFJ2Y2lrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJbE41YldKdmJDNWhjM2x1WTBsMFpYSmhkRzl5SUdseklHNXZkQ0JrWldacGJtVmtMbHdpS1R0Y2NseHVJQ0FnSUhaaGNpQm5JRDBnWjJWdVpYSmhkRzl5TG1Gd2NHeDVLSFJvYVhOQmNtY3NJRjloY21kMWJXVnVkSE1nZkh3Z1cxMHBMQ0JwTENCeElEMGdXMTA3WEhKY2JpQWdJQ0J5WlhSMWNtNGdhU0E5SUh0OUxDQjJaWEppS0Z3aWJtVjRkRndpS1N3Z2RtVnlZaWhjSW5Sb2NtOTNYQ0lwTENCMlpYSmlLRndpY21WMGRYSnVYQ0lwTENCcFcxTjViV0p2YkM1aGMzbHVZMGwwWlhKaGRHOXlYU0E5SUdaMWJtTjBhVzl1SUNncElIc2djbVYwZFhKdUlIUm9hWE03SUgwc0lHazdYSEpjYmlBZ0lDQm1kVzVqZEdsdmJpQjJaWEppS0c0cElIc2dhV1lnS0dkYmJsMHBJR2xiYmwwZ1BTQm1kVzVqZEdsdmJpQW9kaWtnZXlCeVpYUjFjbTRnYm1WM0lGQnliMjFwYzJVb1puVnVZM1JwYjI0Z0tHRXNJR0lwSUhzZ2NTNXdkWE5vS0Z0dUxDQjJMQ0JoTENCaVhTa2dQaUF4SUh4OElISmxjM1Z0WlNodUxDQjJLVHNnZlNrN0lIMDdJSDFjY2x4dUlDQWdJR1oxYm1OMGFXOXVJSEpsYzNWdFpTaHVMQ0IyS1NCN0lIUnllU0I3SUhOMFpYQW9aMXR1WFNoMktTazdJSDBnWTJGMFkyZ2dLR1VwSUhzZ2MyVjBkR3hsS0hGYk1GMWJNMTBzSUdVcE95QjlJSDFjY2x4dUlDQWdJR1oxYm1OMGFXOXVJSE4wWlhBb2Npa2dleUJ5TG5aaGJIVmxJR2x1YzNSaGJtTmxiMllnWDE5aGQyRnBkQ0EvSUZCeWIyMXBjMlV1Y21WemIyeDJaU2h5TG5aaGJIVmxMbllwTG5Sb1pXNG9ablZzWm1sc2JDd2djbVZxWldOMEtTQTZJSE5sZEhSc1pTaHhXekJkV3pKZExDQnlLVHNnZlZ4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnWm5Wc1ptbHNiQ2gyWVd4MVpTa2dleUJ5WlhOMWJXVW9YQ0p1WlhoMFhDSXNJSFpoYkhWbEtUc2dmVnh5WEc0Z0lDQWdablZ1WTNScGIyNGdjbVZxWldOMEtIWmhiSFZsS1NCN0lISmxjM1Z0WlNoY0luUm9jbTkzWENJc0lIWmhiSFZsS1RzZ2ZWeHlYRzRnSUNBZ1puVnVZM1JwYjI0Z2MyVjBkR3hsS0dZc0lIWXBJSHNnYVdZZ0tHWW9kaWtzSUhFdWMyaHBablFvS1N3Z2NTNXNaVzVuZEdncElISmxjM1Z0WlNoeFd6QmRXekJkTENCeFd6QmRXekZkS1RzZ2ZWeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTloYzNsdVkwUmxiR1ZuWVhSdmNpaHZLU0I3WEhKY2JpQWdJQ0IyWVhJZ2FTd2djRHRjY2x4dUlDQWdJSEpsZEhWeWJpQnBJRDBnZTMwc0lIWmxjbUlvWENKdVpYaDBYQ0lwTENCMlpYSmlLRndpZEdoeWIzZGNJaXdnWm5WdVkzUnBiMjRnS0dVcElIc2dkR2h5YjNjZ1pUc2dmU2tzSUhabGNtSW9YQ0p5WlhSMWNtNWNJaWtzSUdsYlUzbHRZbTlzTG1sMFpYSmhkRzl5WFNBOUlHWjFibU4wYVc5dUlDZ3BJSHNnY21WMGRYSnVJSFJvYVhNN0lIMHNJR2s3WEhKY2JpQWdJQ0JtZFc1amRHbHZiaUIyWlhKaUtHNHNJR1lwSUhzZ2FWdHVYU0E5SUc5YmJsMGdQeUJtZFc1amRHbHZiaUFvZGlrZ2V5QnlaWFIxY200Z0tIQWdQU0FoY0NrZ1B5QjdJSFpoYkhWbE9pQmZYMkYzWVdsMEtHOWJibDBvZGlrcExDQmtiMjVsT2lCbVlXeHpaU0I5SURvZ1ppQS9JR1lvZGlrZ09pQjJPeUI5SURvZ1pqc2dmVnh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5aGMzbHVZMVpoYkhWbGN5aHZLU0I3WEhKY2JpQWdJQ0JwWmlBb0lWTjViV0p2YkM1aGMzbHVZMGwwWlhKaGRHOXlLU0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0Z3aVUzbHRZbTlzTG1GemVXNWpTWFJsY21GMGIzSWdhWE1nYm05MElHUmxabWx1WldRdVhDSXBPMXh5WEc0Z0lDQWdkbUZ5SUcwZ1BTQnZXMU41YldKdmJDNWhjM2x1WTBsMFpYSmhkRzl5WFN3Z2FUdGNjbHh1SUNBZ0lISmxkSFZ5YmlCdElEOGdiUzVqWVd4c0tHOHBJRG9nS0c4Z1BTQjBlWEJsYjJZZ1gxOTJZV3gxWlhNZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBL0lGOWZkbUZzZFdWektHOHBJRG9nYjF0VGVXMWliMnd1YVhSbGNtRjBiM0pkS0Nrc0lHa2dQU0I3ZlN3Z2RtVnlZaWhjSW01bGVIUmNJaWtzSUhabGNtSW9YQ0owYUhKdmQxd2lLU3dnZG1WeVlpaGNJbkpsZEhWeWJsd2lLU3dnYVZ0VGVXMWliMnd1WVhONWJtTkpkR1Z5WVhSdmNsMGdQU0JtZFc1amRHbHZiaUFvS1NCN0lISmxkSFZ5YmlCMGFHbHpPeUI5TENCcEtUdGNjbHh1SUNBZ0lHWjFibU4wYVc5dUlIWmxjbUlvYmlrZ2V5QnBXMjVkSUQwZ2IxdHVYU0FtSmlCbWRXNWpkR2x2YmlBb2Rpa2dleUJ5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvWm5WdVkzUnBiMjRnS0hKbGMyOXNkbVVzSUhKbGFtVmpkQ2tnZXlCMklEMGdiMXR1WFNoMktTd2djMlYwZEd4bEtISmxjMjlzZG1Vc0lISmxhbVZqZEN3Z2RpNWtiMjVsTENCMkxuWmhiSFZsS1RzZ2ZTazdJSDA3SUgxY2NseHVJQ0FnSUdaMWJtTjBhVzl1SUhObGRIUnNaU2h5WlhOdmJIWmxMQ0J5WldwbFkzUXNJR1FzSUhZcElIc2dVSEp2YldselpTNXlaWE52YkhabEtIWXBMblJvWlc0b1puVnVZM1JwYjI0b2Rpa2dleUJ5WlhOdmJIWmxLSHNnZG1Gc2RXVTZJSFlzSUdSdmJtVTZJR1FnZlNrN0lIMHNJSEpsYW1WamRDazdJSDFjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUY5ZmJXRnJaVlJsYlhCc1lYUmxUMkpxWldOMEtHTnZiMnRsWkN3Z2NtRjNLU0I3WEhKY2JpQWdJQ0JwWmlBb1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLU0I3SUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaGpiMjlyWldRc0lGd2ljbUYzWENJc0lIc2dkbUZzZFdVNklISmhkeUI5S1RzZ2ZTQmxiSE5sSUhzZ1kyOXZhMlZrTG5KaGR5QTlJSEpoZHpzZ2ZWeHlYRzRnSUNBZ2NtVjBkWEp1SUdOdmIydGxaRHRjY2x4dWZUdGNjbHh1WEhKY2JuWmhjaUJmWDNObGRFMXZaSFZzWlVSbFptRjFiSFFnUFNCUFltcGxZM1F1WTNKbFlYUmxJRDhnS0daMWJtTjBhVzl1S0c4c0lIWXBJSHRjY2x4dUlDQWdJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNodkxDQmNJbVJsWm1GMWJIUmNJaXdnZXlCbGJuVnRaWEpoWW14bE9pQjBjblZsTENCMllXeDFaVG9nZGlCOUtUdGNjbHh1ZlNrZ09pQm1kVzVqZEdsdmJpaHZMQ0IyS1NCN1hISmNiaUFnSUNCdlcxd2laR1ZtWVhWc2RGd2lYU0E5SUhZN1hISmNibjA3WEhKY2JseHlYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdYMTlwYlhCdmNuUlRkR0Z5S0cxdlpDa2dlMXh5WEc0Z0lDQWdhV1lnS0cxdlpDQW1KaUJ0YjJRdVgxOWxjMDF2WkhWc1pTa2djbVYwZFhKdUlHMXZaRHRjY2x4dUlDQWdJSFpoY2lCeVpYTjFiSFFnUFNCN2ZUdGNjbHh1SUNBZ0lHbG1JQ2h0YjJRZ0lUMGdiblZzYkNrZ1ptOXlJQ2gyWVhJZ2F5QnBiaUJ0YjJRcElHbG1JQ2hySUNFOVBTQmNJbVJsWm1GMWJIUmNJaUFtSmlCUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG1oaGMwOTNibEJ5YjNCbGNuUjVMbU5oYkd3b2JXOWtMQ0JyS1NrZ1gxOWpjbVZoZEdWQ2FXNWthVzVuS0hKbGMzVnNkQ3dnYlc5a0xDQnJLVHRjY2x4dUlDQWdJRjlmYzJWMFRXOWtkV3hsUkdWbVlYVnNkQ2h5WlhOMWJIUXNJRzF2WkNrN1hISmNiaUFnSUNCeVpYUjFjbTRnY21WemRXeDBPMXh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWDE5cGJYQnZjblJFWldaaGRXeDBLRzF2WkNrZ2UxeHlYRzRnSUNBZ2NtVjBkWEp1SUNodGIyUWdKaVlnYlc5a0xsOWZaWE5OYjJSMWJHVXBJRDhnYlc5a0lEb2dleUJrWldaaGRXeDBPaUJ0YjJRZ2ZUdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmWTJ4aGMzTlFjbWwyWVhSbFJtbGxiR1JIWlhRb2NtVmpaV2wyWlhJc0lITjBZWFJsTENCcmFXNWtMQ0JtS1NCN1hISmNiaUFnSUNCcFppQW9hMmx1WkNBOVBUMGdYQ0poWENJZ0ppWWdJV1lwSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1hDSlFjbWwyWVhSbElHRmpZMlZ6YzI5eUlIZGhjeUJrWldacGJtVmtJSGRwZEdodmRYUWdZU0JuWlhSMFpYSmNJaWs3WEhKY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUhOMFlYUmxJRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdQeUJ5WldObGFYWmxjaUFoUFQwZ2MzUmhkR1VnZkh3Z0lXWWdPaUFoYzNSaGRHVXVhR0Z6S0hKbFkyVnBkbVZ5S1NrZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJa05oYm01dmRDQnlaV0ZrSUhCeWFYWmhkR1VnYldWdFltVnlJR1p5YjIwZ1lXNGdiMkpxWldOMElIZG9iM05sSUdOc1lYTnpJR1JwWkNCdWIzUWdaR1ZqYkdGeVpTQnBkRndpS1R0Y2NseHVJQ0FnSUhKbGRIVnliaUJyYVc1a0lEMDlQU0JjSW0xY0lpQS9JR1lnT2lCcmFXNWtJRDA5UFNCY0ltRmNJaUEvSUdZdVkyRnNiQ2h5WldObGFYWmxjaWtnT2lCbUlEOGdaaTUyWVd4MVpTQTZJSE4wWVhSbExtZGxkQ2h5WldObGFYWmxjaWs3WEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCZlgyTnNZWE56VUhKcGRtRjBaVVpwWld4a1UyVjBLSEpsWTJWcGRtVnlMQ0J6ZEdGMFpTd2dkbUZzZFdVc0lHdHBibVFzSUdZcElIdGNjbHh1SUNBZ0lHbG1JQ2hyYVc1a0lEMDlQU0JjSW0xY0lpa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWxCeWFYWmhkR1VnYldWMGFHOWtJR2x6SUc1dmRDQjNjbWwwWVdKc1pWd2lLVHRjY2x4dUlDQWdJR2xtSUNocmFXNWtJRDA5UFNCY0ltRmNJaUFtSmlBaFppa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWxCeWFYWmhkR1VnWVdOalpYTnpiM0lnZDJGeklHUmxabWx1WldRZ2QybDBhRzkxZENCaElITmxkSFJsY2x3aUtUdGNjbHh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdjM1JoZEdVZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBL0lISmxZMlZwZG1WeUlDRTlQU0J6ZEdGMFpTQjhmQ0FoWmlBNklDRnpkR0YwWlM1b1lYTW9jbVZqWldsMlpYSXBLU0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0Z3aVEyRnVibTkwSUhkeWFYUmxJSEJ5YVhaaGRHVWdiV1Z0WW1WeUlIUnZJR0Z1SUc5aWFtVmpkQ0IzYUc5elpTQmpiR0Z6Y3lCa2FXUWdibTkwSUdSbFkyeGhjbVVnYVhSY0lpazdYSEpjYmlBZ0lDQnlaWFIxY200Z0tHdHBibVFnUFQwOUlGd2lZVndpSUQ4Z1ppNWpZV3hzS0hKbFkyVnBkbVZ5TENCMllXeDFaU2tnT2lCbUlEOGdaaTUyWVd4MVpTQTlJSFpoYkhWbElEb2djM1JoZEdVdWMyVjBLSEpsWTJWcGRtVnlMQ0IyWVd4MVpTa3BMQ0IyWVd4MVpUdGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRjlmWTJ4aGMzTlFjbWwyWVhSbFJtbGxiR1JKYmloemRHRjBaU3dnY21WalpXbDJaWElwSUh0Y2NseHVJQ0FnSUdsbUlDaHlaV05sYVhabGNpQTlQVDBnYm5Wc2JDQjhmQ0FvZEhsd1pXOW1JSEpsWTJWcGRtVnlJQ0U5UFNCY0ltOWlhbVZqZEZ3aUlDWW1JSFI1Y0dWdlppQnlaV05sYVhabGNpQWhQVDBnWENKbWRXNWpkR2x2Ymx3aUtTa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWtOaGJtNXZkQ0IxYzJVZ0oybHVKeUJ2Y0dWeVlYUnZjaUJ2YmlCdWIyNHRiMkpxWldOMFhDSXBPMXh5WEc0Z0lDQWdjbVYwZFhKdUlIUjVjR1Z2WmlCemRHRjBaU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJRDhnY21WalpXbDJaWElnUFQwOUlITjBZWFJsSURvZ2MzUmhkR1V1YUdGektISmxZMlZwZG1WeUtUdGNjbHh1ZlZ4eVhHNGlMQ0pwYlhCdmNuUWdkSGx3WlNBcUlHRnpJRlJJVWtWRklHWnliMjBnSjNSb2NtVmxKenRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhSeVlYWmxjbk5sUVc1alpYTjBiM0p6Um5KdmJWSnZiM1FvYjJKcVpXTjBPaUJVU0ZKRlJTNVBZbXBsWTNRelJDd2dZMkZzYkdKaFkyczZJQ2h2WW1wbFkzUTZJRlJJVWtWRkxrOWlhbVZqZERORUtTQTlQaUIyYjJsa0tUb2dkbTlwWkNCN1hHNGdJR052Ym5OMElHRnVZMlZ6ZEc5eWN6b2dWRWhTUlVVdVQySnFaV04wTTBSYlhTQTlJRnRkTzF4dVhHNGdJR3hsZENCb1pXRmtPaUJVU0ZKRlJTNVBZbXBsWTNRelJDQjhJRzUxYkd3Z1BTQnZZbXBsWTNRN1hHNGdJSGRvYVd4bElDaG9aV0ZrSUNFOVBTQnVkV3hzS1NCN1hHNGdJQ0FnWVc1alpYTjBiM0p6TG5WdWMyaHBablFvYUdWaFpDazdYRzRnSUNBZ2FHVmhaQ0E5SUdobFlXUXVjR0Z5Wlc1ME8xeHVJQ0I5WEc1Y2JpQWdZVzVqWlhOMGIzSnpMbVp2Y2tWaFkyZ29LR0Z1WTJWemRHOXlLU0E5UGlCN1hHNGdJQ0FnWTJGc2JHSmhZMnNvWVc1alpYTjBiM0lwTzF4dUlDQjlLVHRjYm4xY2JpSXNJaThxS2x4dUlDb2dWSEpoZG1WeWMyVWdZMmhwYkdSeVpXNGdiMllnWjJsMlpXNGdiMkpxWldOMElHRnVaQ0JsZUdWamRYUmxJR2RwZG1WdUlHTmhiR3hpWVdOckxseHVJQ29nVkdobElHZHBkbVZ1SUc5aWFtVmpkQ0JwZEhObGJHWWdkMjl1ZENCaVpTQm5hWFpsYmlCMGJ5QjBhR1VnWTJGc2JHSmhZMnN1WEc0Z0tpQkpaaUIwYUdVZ2NtVjBkWEp1SUhaaGJIVmxJRzltSUhSb1pTQmpZV3hzWW1GamF5QnBjeUJnZEhKMVpXQXNJR2wwSUhkcGJHd2dhR0ZzZENCMGFHVWdkSEpoZG1WeWMyRnNJRzltSUdsMGN5QmphR2xzWkhKbGJpNWNiaUFxSUVCd1lYSmhiU0J2WW1wbFkzUWdRU0J5YjI5MElHOWlhbVZqZEZ4dUlDb2dRSEJoY21GdElHTmhiR3hpWVdOcklFRWdZMkZzYkdKaFkyc2dablZ1WTNScGIyNGdZMkZzYkdWa0lHWnZjaUJsWVdOb0lHTm9hV3hrY21WdVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIwY21GMlpYSnpaVU5vYVd4a2NtVnVWVzUwYVd4RGIyNWthWFJwYjI1TlpYUW9YRzRnSUc5aWFtVmpkRG9nVkVoU1JVVXVUMkpxWldOME0wUXNYRzRnSUdOaGJHeGlZV05yT2lBb2IySnFaV04wT2lCVVNGSkZSUzVQWW1wbFkzUXpSQ2tnUFQ0Z1ltOXZiR1ZoYml4Y2JpazZJSFp2YVdRZ2UxeHVJQ0J2WW1wbFkzUXVZMmhwYkdSeVpXNHVabTl5UldGamFDZ29ZMmhwYkdRcElEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCeVpYTjFiSFFnUFNCallXeHNZbUZqYXloamFHbHNaQ2s3WEc0Z0lDQWdhV1lnS0NGeVpYTjFiSFFwSUh0Y2JpQWdJQ0FnSUhSeVlYWmxjbk5sUTJocGJHUnlaVzVWYm5ScGJFTnZibVJwZEdsdmJrMWxkQ2hqYUdsc1pDd2dZMkZzYkdKaFkyc3BPMXh1SUNBZ0lIMWNiaUFnZlNrN1hHNTlYRzRpTENKcGJYQnZjblFnZEhsd1pTQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnVmxKTlUzQnlhVzVuUW05dVpVcHZhVzUwSUgwZ1puSnZiU0FuTGk5V1VrMVRjSEpwYm1kQ2IyNWxTbTlwYm5Rbk8xeHVhVzF3YjNKMElIc2dkSEpoZG1WeWMyVkJibU5sYzNSdmNuTkdjbTl0VW05dmRDQjlJR1p5YjIwZ0p5NHZkWFJwYkhNdmRISmhkbVZ5YzJWQmJtTmxjM1J2Y25OR2NtOXRVbTl2ZENjN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3SUZaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNpQjlJR1p5YjIwZ0p5NHZWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5Snp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnVmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVIzSnZkWEFnZlNCbWNtOXRJQ2N1TDFaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNrZHliM1Z3Snp0Y2JtbHRjRzl5ZENCN0lIUnlZWFpsY25ObFEyaHBiR1J5Wlc1VmJuUnBiRU52Ym1ScGRHbHZiazFsZENCOUlHWnliMjBnSnk0dmRYUnBiSE12ZEhKaGRtVnljMlZEYUdsc1pISmxibFZ1ZEdsc1EyOXVaR2wwYVc5dVRXVjBKenRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRlpTVFZOd2NtbHVaMEp2Ym1WTllXNWhaMlZ5SUh0Y2JpQWdjSEpwZG1GMFpTQmZhbTlwYm5SeklEMGdibVYzSUZObGREeFdVazFUY0hKcGJtZENiMjVsU205cGJuUStLQ2s3WEc0Z0lIQjFZbXhwWXlCblpYUWdhbTlwYm5SektDazZJRk5sZER4V1VrMVRjSEpwYm1kQ2IyNWxTbTlwYm5RK0lIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZhbTlwYm5Sek8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhCeVpXTmhkR1ZrSUZWelpTQjdRR3hwYm1zZ2FtOXBiblJ6ZlNCcGJuTjBaV0ZrTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdkbGRDQnpjSEpwYm1kQ2IyNWxjeWdwT2lCVFpYUThWbEpOVTNCeWFXNW5RbTl1WlVwdmFXNTBQaUI3WEc0Z0lDQWdZMjl1YzI5c1pTNTNZWEp1S0NkV1VrMVRjSEpwYm1kQ2IyNWxUV0Z1WVdkbGNqb2djM0J5YVc1blFtOXVaWE1nYVhNZ1pHVndjbVZqWVhSbFpDNGdkWE5sSUdwdmFXNTBjeUJwYm5OMFpXRmtMaWNwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgycHZhVzUwY3p0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUWdZMjlzYkdsa1pYSkhjbTkxY0hNb0tUb2dWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5UjNKdmRYQmJYU0I3WEc0Z0lDQWdZMjl1YzNRZ2MyVjBJRDBnYm1WM0lGTmxkRHhXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhKSGNtOTFjRDRvS1R0Y2JpQWdJQ0IwYUdsekxsOXFiMmx1ZEhNdVptOXlSV0ZqYUNnb2MzQnlhVzVuUW05dVpTa2dQVDRnZTF4dUlDQWdJQ0FnYzNCeWFXNW5RbTl1WlM1amIyeHNhV1JsY2tkeWIzVndjeTVtYjNKRllXTm9LQ2hqYjJ4c2FXUmxja2R5YjNWd0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUhObGRDNWhaR1FvWTI5c2JHbGtaWEpIY205MWNDazdYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlLVHRjYmlBZ0lDQnlaWFIxY200Z1FYSnlZWGt1Wm5KdmJTaHpaWFFwTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQmpiMnhzYVdSbGNuTW9LVG9nVmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVcxMGdlMXh1SUNBZ0lHTnZibk4wSUhObGRDQTlJRzVsZHlCVFpYUThWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5UGlncE8xeHVJQ0FnSUhSb2FYTXVZMjlzYkdsa1pYSkhjbTkxY0hNdVptOXlSV0ZqYUNnb1kyOXNiR2xrWlhKSGNtOTFjQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXNiR2xrWlhKSGNtOTFjQzVqYjJ4c2FXUmxjbk11Wm05eVJXRmphQ2dvWTI5c2JHbGtaWElwSUQwK0lIdGNiaUFnSUNBZ0lDQWdjMlYwTG1Ga1pDaGpiMnhzYVdSbGNpazdYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlLVHRjYmlBZ0lDQnlaWFIxY200Z1FYSnlZWGt1Wm5KdmJTaHpaWFFwTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCZmIySnFaV04wVTNCeWFXNW5RbTl1WlhOTllYQWdQU0J1WlhjZ1RXRndQRlJJVWtWRkxrOWlhbVZqZERORUxDQlRaWFE4VmxKTlUzQnlhVzVuUW05dVpVcHZhVzUwUGo0b0tUdGNibHh1SUNCd2RXSnNhV01nWVdSa1NtOXBiblFvYW05cGJuUTZJRlpTVFZOd2NtbHVaMEp2Ym1WS2IybHVkQ2s2SUhadmFXUWdlMXh1SUNBZ0lIUm9hWE11WDJwdmFXNTBjeTVoWkdRb2FtOXBiblFwTzF4dVhHNGdJQ0FnYkdWMElHOWlhbVZqZEZObGRDQTlJSFJvYVhNdVgyOWlhbVZqZEZOd2NtbHVaMEp2Ym1WelRXRndMbWRsZENocWIybHVkQzVpYjI1bEtUdGNiaUFnSUNCcFppQW9iMkpxWldOMFUyVjBJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJRzlpYW1WamRGTmxkQ0E5SUc1bGR5QlRaWFE4VmxKTlUzQnlhVzVuUW05dVpVcHZhVzUwUGlncE8xeHVJQ0FnSUNBZ2RHaHBjeTVmYjJKcVpXTjBVM0J5YVc1blFtOXVaWE5OWVhBdWMyVjBLR3B2YVc1MExtSnZibVVzSUc5aWFtVmpkRk5sZENrN1hHNGdJQ0FnZlZ4dUlDQWdJRzlpYW1WamRGTmxkQzVoWkdRb2FtOXBiblFwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWEJ5WldOaGRHVmtJRlZ6WlNCN1FHeHBibXNnWVdSa1NtOXBiblI5SUdsdWMzUmxZV1F1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWVdSa1UzQnlhVzVuUW05dVpTaHFiMmx1ZERvZ1ZsSk5VM0J5YVc1blFtOXVaVXB2YVc1MEtUb2dkbTlwWkNCN1hHNGdJQ0FnWTI5dWMyOXNaUzUzWVhKdUtDZFdVazFUY0hKcGJtZENiMjVsVFdGdVlXZGxjam9nWVdSa1UzQnlhVzVuUW05dVpTZ3BJR2x6SUdSbGNISmxZMkYwWldRdUlIVnpaU0JoWkdSS2IybHVkQ2dwSUdsdWMzUmxZV1F1SnlrN1hHNWNiaUFnSUNCMGFHbHpMbUZrWkVwdmFXNTBLR3B2YVc1MEtUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QmtaV3hsZEdWS2IybHVkQ2hxYjJsdWREb2dWbEpOVTNCeWFXNW5RbTl1WlVwdmFXNTBLVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTVmYW05cGJuUnpMbVJsYkdWMFpTaHFiMmx1ZENrN1hHNWNiaUFnSUNCamIyNXpkQ0J2WW1wbFkzUlRaWFFnUFNCMGFHbHpMbDl2WW1wbFkzUlRjSEpwYm1kQ2IyNWxjMDFoY0M1blpYUW9hbTlwYm5RdVltOXVaU2toTzF4dUlDQWdJRzlpYW1WamRGTmxkQzVrWld4bGRHVW9hbTlwYm5RcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhCeVpXTmhkR1ZrSUZWelpTQjdRR3hwYm1zZ1pHVnNaWFJsU205cGJuUjlJR2x1YzNSbFlXUXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdaR1ZzWlhSbFUzQnlhVzVuUW05dVpTaHFiMmx1ZERvZ1ZsSk5VM0J5YVc1blFtOXVaVXB2YVc1MEtUb2dkbTlwWkNCN1hHNGdJQ0FnWTI5dWMyOXNaUzUzWVhKdUtDZFdVazFUY0hKcGJtZENiMjVsVFdGdVlXZGxjam9nWkdWc1pYUmxVM0J5YVc1blFtOXVaU2dwSUdseklHUmxjSEpsWTJGMFpXUXVJSFZ6WlNCa1pXeGxkR1ZLYjJsdWRDZ3BJR2x1YzNSbFlXUXVKeWs3WEc1Y2JpQWdJQ0IwYUdsekxtUmxiR1YwWlVwdmFXNTBLR3B2YVc1MEtUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnpaWFJKYm1sMFUzUmhkR1VvS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdZMjl1YzNRZ2MzQnlhVzVuUW05dVpYTlVjbWxsWkNBOUlHNWxkeUJUWlhROFZsSk5VM0J5YVc1blFtOXVaVXB2YVc1MFBpZ3BPMXh1SUNBZ0lHTnZibk4wSUhOd2NtbHVaMEp2Ym1WelJHOXVaU0E5SUc1bGR5QlRaWFE4VmxKTlUzQnlhVzVuUW05dVpVcHZhVzUwUGlncE8xeHVJQ0FnSUdOdmJuTjBJRzlpYW1WamRGVndaR0YwWldRZ1BTQnVaWGNnVTJWMFBGUklVa1ZGTGs5aWFtVmpkRE5FUGlncE8xeHVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQnpjSEpwYm1kQ2IyNWxJRzltSUhSb2FYTXVYMnB2YVc1MGN5a2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZmNISnZZMlZ6YzFOd2NtbHVaMEp2Ym1Vb2MzQnlhVzVuUW05dVpTd2djM0J5YVc1blFtOXVaWE5VY21sbFpDd2djM0J5YVc1blFtOXVaWE5FYjI1bExDQnZZbXBsWTNSVmNHUmhkR1ZrTENBb2MzQnlhVzVuUW05dVpTa2dQVDVjYmlBZ0lDQWdJQ0FnYzNCeWFXNW5RbTl1WlM1elpYUkpibWwwVTNSaGRHVW9LU3hjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJSEpsYzJWMEtDazZJSFp2YVdRZ2UxeHVJQ0FnSUdOdmJuTjBJSE53Y21sdVowSnZibVZ6VkhKcFpXUWdQU0J1WlhjZ1UyVjBQRlpTVFZOd2NtbHVaMEp2Ym1WS2IybHVkRDRvS1R0Y2JpQWdJQ0JqYjI1emRDQnpjSEpwYm1kQ2IyNWxjMFJ2Ym1VZ1BTQnVaWGNnVTJWMFBGWlNUVk53Y21sdVowSnZibVZLYjJsdWRENG9LVHRjYmlBZ0lDQmpiMjV6ZENCdlltcGxZM1JWY0dSaGRHVmtJRDBnYm1WM0lGTmxkRHhVU0ZKRlJTNVBZbXBsWTNRelJENG9LVHRjYmx4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnYzNCeWFXNW5RbTl1WlNCdlppQjBhR2x6TGw5cWIybHVkSE1wSUh0Y2JpQWdJQ0FnSUhSb2FYTXVYM0J5YjJObGMzTlRjSEpwYm1kQ2IyNWxLSE53Y21sdVowSnZibVVzSUhOd2NtbHVaMEp2Ym1WelZISnBaV1FzSUhOd2NtbHVaMEp2Ym1WelJHOXVaU3dnYjJKcVpXTjBWWEJrWVhSbFpDd2dLSE53Y21sdVowSnZibVVwSUQwK1hHNGdJQ0FnSUNBZ0lITndjbWx1WjBKdmJtVXVjbVZ6WlhRb0tTeGNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklIVndaR0YwWlNoa1pXeDBZVG9nYm5WdFltVnlLVG9nZG05cFpDQjdYRzRnSUNBZ1kyOXVjM1FnYzNCeWFXNW5RbTl1WlhOVWNtbGxaQ0E5SUc1bGR5QlRaWFE4VmxKTlUzQnlhVzVuUW05dVpVcHZhVzUwUGlncE8xeHVJQ0FnSUdOdmJuTjBJSE53Y21sdVowSnZibVZ6Ukc5dVpTQTlJRzVsZHlCVFpYUThWbEpOVTNCeWFXNW5RbTl1WlVwdmFXNTBQaWdwTzF4dUlDQWdJR052Ym5OMElHOWlhbVZqZEZWd1pHRjBaV1FnUFNCdVpYY2dVMlYwUEZSSVVrVkZMazlpYW1WamRETkVQaWdwTzF4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCemNISnBibWRDYjI1bElHOW1JSFJvYVhNdVgycHZhVzUwY3lrZ2UxeHVJQ0FnSUNBZ0x5OGdkWEJrWVhSbElIUm9aU0J6Y0hKcGJtZGliMjVsWEc0Z0lDQWdJQ0IwYUdsekxsOXdjbTlqWlhOelUzQnlhVzVuUW05dVpTaHpjSEpwYm1kQ2IyNWxMQ0J6Y0hKcGJtZENiMjVsYzFSeWFXVmtMQ0J6Y0hKcGJtZENiMjVsYzBSdmJtVXNJRzlpYW1WamRGVndaR0YwWldRc0lDaHpjSEpwYm1kQ2IyNWxLU0E5UGx4dUlDQWdJQ0FnSUNCemNISnBibWRDYjI1bExuVndaR0YwWlNoa1pXeDBZU2tzWEc0Z0lDQWdJQ0FwTzF4dVhHNGdJQ0FnSUNBdkx5QjFjR1JoZEdVZ1kyaHBiR1J5Wlc0Z2QyOXliR1FnYldGMGNtbGpaWE5jYmlBZ0lDQWdJQzh2SUdsMElHbHpJSEpsY1hWcGNtVmtJSGRvWlc0Z2RHaGxJSE53Y21sdVp5QmliMjVsSUdOb1lXbHVJR2x6SUhOd1lYSnpaVnh1SUNBZ0lDQWdkSEpoZG1WeWMyVkRhR2xzWkhKbGJsVnVkR2xzUTI5dVpHbDBhVzl1VFdWMEtITndjbWx1WjBKdmJtVXVZbTl1WlN3Z0tHOWlhbVZqZENrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0F2THlCcFppQjBhR1VnYjJKcVpXTjBJR2hoY3lCaGRIUmhZMmhsWkNCemNISnBibWRpYjI1bExDQm9ZV3gwSUhSb1pTQjBjbUYyWlhKellXeGNiaUFnSUNBZ0lDQWdhV1lnS0NoMGFHbHpMbDl2WW1wbFkzUlRjSEpwYm1kQ2IyNWxjMDFoY0M1blpYUW9iMkpxWldOMEtUOHVjMmw2WlNBL1B5QXdLU0ErSURBcElIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQzh2SUc5MGFHVnlkMmx6WlNCMWNHUmhkR1VnYVhSeklIZHZjbXhrSUcxaGRISnBlRnh1SUNBZ0lDQWdJQ0J2WW1wbFkzUXVkWEJrWVhSbFYyOXliR1JOWVhSeWFYZ29abUZzYzJVc0lHWmhiSE5sS1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWd1pHRjBaU0JoSUhOd2NtbHVaeUJpYjI1bExseHVJQ0FnS2lCSlppQjBhR1Z5WlNCaGNtVWdiM1JvWlhJZ2MzQnlhVzVuSUdKdmJtVWdkR2hoZENCaGNtVWdaR1Z3Wlc1a1lXNTBMQ0JwZENCM2FXeHNJSFJ5ZVNCMGJ5QjFjR1JoZEdVZ2RHaGxiU0J5WldOMWNuTnBkbVZzZVM1Y2JpQWdJQ29nU1hRZ2RYQmtZWFJsY3lCdFlYUnlhWGhYYjNKc1pDQnZaaUJoYkd3Z1lXNWpaWE4wYjNKeklHRnVaQ0J0ZVhObGJHWXVYRzRnSUNBcUlFbDBJRzFwWjJoMElIUm9jbTkzSUdGdUlHVnljbTl5SUdsbUlIUm9aWEpsSUdGeVpTQmphWEpqZFd4aGNpQmtaWEJsYm1SbGJtTnBaWE11WEc0Z0lDQXFYRzRnSUNBcUlFbHVkR1Z1WkdWa0lIUnZJR0psSUhWelpXUWdhVzRnZTBCc2FXNXJJSFZ3WkdGMFpYMGdZVzVrSUh0QWJHbHVheUJmY0hKdlkyVnpjMU53Y21sdVowSnZibVY5SUdsMGMyVnNaaUJ5WldOMWNuTnBkbVZzZVM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElITndjbWx1WjBKdmJtVWdRU0J6Y0hKcGJtZENiMjVsSUhsdmRTQjNZVzUwSUhSdklIVndaR0YwWlZ4dUlDQWdLaUJBY0dGeVlXMGdjM0J5YVc1blFtOXVaWE5VY21sbFpDQlRaWFFnYjJZZ2MzQnlhVzVuUW05dVpYTWdkR2hoZENCaGNtVWdZV3h5WldGa2VTQjBjbWxsWkNCMGJ5QmlaU0IxY0dSaGRHVmtYRzRnSUNBcUlFQndZWEpoYlNCemNISnBibWRDYjI1bGMwUnZibVVnVTJWMElHOW1JSE53Y21sdVowSnZibVZ6SUhSb1lYUWdZWEpsSUdGc2NtVmhaSGtnZFhBZ2RHOGdaR0YwWlZ4dUlDQWdLaUJBY0dGeVlXMGdiMkpxWldOMFZYQmtZWFJsWkNCVFpYUWdiMllnYjJKcVpXTjBNMFFnZDJodmMyVWdiV0YwY21sNFYyOXliR1FnYVhNZ2RYQmtZWFJsWkZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCZmNISnZZMlZ6YzFOd2NtbHVaMEp2Ym1Vb1hHNGdJQ0FnYzNCeWFXNW5RbTl1WlRvZ1ZsSk5VM0J5YVc1blFtOXVaVXB2YVc1MExGeHVJQ0FnSUhOd2NtbHVaMEp2Ym1WelZISnBaV1E2SUZObGREeFdVazFUY0hKcGJtZENiMjVsU205cGJuUStMRnh1SUNBZ0lITndjbWx1WjBKdmJtVnpSRzl1WlRvZ1UyVjBQRlpTVFZOd2NtbHVaMEp2Ym1WS2IybHVkRDRzWEc0Z0lDQWdiMkpxWldOMFZYQmtZWFJsWkRvZ1UyVjBQRlJJVWtWRkxrOWlhbVZqZERORVBpeGNiaUFnSUNCallXeHNZbUZqYXpvZ0tITndjbWx1WjBKdmJtVTZJRlpTVFZOd2NtbHVaMEp2Ym1WS2IybHVkQ2tnUFQ0Z2RtOXBaQ3hjYmlBZ0tUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tITndjbWx1WjBKdmJtVnpSRzl1WlM1b1lYTW9jM0J5YVc1blFtOXVaU2twSUh0Y2JpQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYzNCeWFXNW5RbTl1WlhOVWNtbGxaQzVvWVhNb2MzQnlhVzVuUW05dVpTa3BJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25WbEpOVTNCeWFXNW5RbTl1WlUxaGJtRm5aWEk2SUVOcGNtTjFiR0Z5SUdSbGNHVnVaR1Z1WTNrZ1pHVjBaV04wWldRZ2QyaHBiR1VnZFhCa1lYUnBibWNnYzNCeWFXNW5ZbTl1WlhNbktUdGNiaUFnSUNCOVhHNGdJQ0FnYzNCeWFXNW5RbTl1WlhOVWNtbGxaQzVoWkdRb2MzQnlhVzVuUW05dVpTazdYRzVjYmlBZ0lDQmpiMjV6ZENCa1pYQlBZbXBsWTNSeklEMGdkR2hwY3k1ZloyVjBSR1Z3Wlc1a1pXNWphV1Z6S0hOd2NtbHVaMEp2Ym1VcE8xeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ1pHVndUMkpxWldOMElHOW1JR1JsY0U5aWFtVmpkSE1wSUh0Y2JpQWdJQ0FnSUhSeVlYWmxjbk5sUVc1alpYTjBiM0p6Um5KdmJWSnZiM1FvWkdWd1QySnFaV04wTENBb1pHVndUMkpxWldOMFFXNWpaWE4wYjNJcElEMCtJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdiMkpxWldOMFUyVjBJRDBnZEdocGN5NWZiMkpxWldOMFUzQnlhVzVuUW05dVpYTk5ZWEF1WjJWMEtHUmxjRTlpYW1WamRFRnVZMlZ6ZEc5eUtUdGNiaUFnSUNBZ0lDQWdhV1lnS0c5aWFtVmpkRk5sZENrZ2UxeHVJQ0FnSUNBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnWkdWd1UzQnlhVzVuUW05dVpTQnZaaUJ2WW1wbFkzUlRaWFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdVgzQnliMk5sYzNOVGNISnBibWRDYjI1bEtHUmxjRk53Y21sdVowSnZibVVzSUhOd2NtbHVaMEp2Ym1WelZISnBaV1FzSUhOd2NtbHVaMEp2Ym1WelJHOXVaU3dnYjJKcVpXTjBWWEJrWVhSbFpDd2dZMkZzYkdKaFkyc3BPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDZ2hiMkpxWldOMFZYQmtZWFJsWkM1b1lYTW9aR1Z3VDJKcVpXTjBRVzVqWlhOMGIzSXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdkWEJrWVhSbElHMWhkSEpwZUNCdlppQnViMjR0YzNCeWFXNW5ZbTl1WlZ4dUlDQWdJQ0FnSUNBZ0lHUmxjRTlpYW1WamRFRnVZMlZ6ZEc5eUxuVndaR0YwWlZkdmNteGtUV0YwY21sNEtHWmhiSE5sTENCbVlXeHpaU2s3WEc0Z0lDQWdJQ0FnSUNBZ2IySnFaV04wVlhCa1lYUmxaQzVoWkdRb1pHVndUMkpxWldOMFFXNWpaWE4wYjNJcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUIxY0dSaGRHVWdiWGtnYldGMGNtbDRYRzRnSUNBZ2MzQnlhVzVuUW05dVpTNWliMjVsTG5Wd1pHRjBaVTFoZEhKcGVDZ3BPMXh1SUNBZ0lITndjbWx1WjBKdmJtVXVZbTl1WlM1MWNHUmhkR1ZYYjNKc1pFMWhkSEpwZUNobVlXeHpaU3dnWm1Gc2MyVXBPMXh1WEc0Z0lDQWdZMkZzYkdKaFkyc29jM0J5YVc1blFtOXVaU2s3WEc1Y2JpQWdJQ0J2WW1wbFkzUlZjR1JoZEdWa0xtRmtaQ2h6Y0hKcGJtZENiMjVsTG1KdmJtVXBPMXh1WEc0Z0lDQWdjM0J5YVc1blFtOXVaWE5FYjI1bExtRmtaQ2h6Y0hKcGJtZENiMjVsS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY200Z1lTQnpaWFFnYjJZZ2IySnFaV04wY3lCMGFHRjBJR0Z5WlNCa1pYQmxibVJoYm5RZ2IyWWdaMmwyWlc0Z2MzQnlhVzVuSUdKdmJtVXVYRzRnSUNBcUlFQndZWEpoYlNCemNISnBibWRDYjI1bElFRWdjM0J5YVc1bklHSnZibVZjYmlBZ0lDb2dRSEpsZEhWeWJpQkJJSE5sZENCdlppQnZZbXBsWTNSeklIUm9ZWFFnWVhKbElHUmxjR1Z1WkdGdWRDQnZaaUJuYVhabGJpQnpjSEpwYm1jZ1ltOXVaVnh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0JmWjJWMFJHVndaVzVrWlc1amFXVnpLSE53Y21sdVowSnZibVU2SUZaU1RWTndjbWx1WjBKdmJtVktiMmx1ZENrNklGTmxkRHhVU0ZKRlJTNVBZbXBsWTNRelJENGdlMXh1SUNBZ0lHTnZibk4wSUhObGRDQTlJRzVsZHlCVFpYUThWRWhTUlVVdVQySnFaV04wTTBRK0tDazdYRzVjYmlBZ0lDQmpiMjV6ZENCd1lYSmxiblFnUFNCemNISnBibWRDYjI1bExtSnZibVV1Y0dGeVpXNTBPMXh1SUNBZ0lHbG1JQ2h3WVhKbGJuUXBJSHRjYmlBZ0lDQWdJSE5sZEM1aFpHUW9jR0Z5Wlc1MEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCemNISnBibWRDYjI1bExtTnZiR3hwWkdWeVIzSnZkWEJ6TG1admNrVmhZMmdvS0dOdmJHeHBaR1Z5UjNKdmRYQXBJRDArSUh0Y2JpQWdJQ0FnSUdOdmJHeHBaR1Z5UjNKdmRYQXVZMjlzYkdsa1pYSnpMbVp2Y2tWaFkyZ29LR052Ykd4cFpHVnlLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lITmxkQzVoWkdRb1kyOXNiR2xrWlhJcE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQnlaWFIxY200Z2MyVjBPMXh1SUNCOVhHNTlYRzRpTENKcGJYQnZjblFnZEhsd1pTQXFJR0Z6SUZZd1ZsSk5JR1p5YjIwZ0owQndhWGhwZGk5MGVYQmxjeTEyY20wdE1DNHdKenRjYm1sdGNHOXlkQ0IwZVhCbElDb2dZWE1nVmpGVGNISnBibWRDYjI1bFUyTm9aVzFoSUdaeWIyMGdKMEJ3YVhocGRpOTBlWEJsY3kxMmNtMWpMWE53Y21sdVoySnZibVV0TVM0d0p6dGNibWx0Y0c5eWRDQXFJR0Z6SUZSSVVrVkZJR1p5YjIwZ0ozUm9jbVZsSnp0Y2JtbHRjRzl5ZENCMGVYQmxJSHNnUjB4VVJpd2dSMHhVUmt4dllXUmxjbEJzZFdkcGJpd2dSMHhVUmxCaGNuTmxjaUI5SUdaeWIyMGdKM1JvY21WbEwyVjRZVzF3YkdWekwycHpiUzlzYjJGa1pYSnpMMGRNVkVaTWIyRmtaWEl1YW5Nbk8xeHVhVzF3YjNKMElIc2dWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5U0dWc2NHVnlMQ0JXVWsxVGNISnBibWRDYjI1bFNtOXBiblJJWld4d1pYSWdmU0JtY205dElDY3VMMmhsYkhCbGNuTW5PMXh1YVcxd2IzSjBJSHNnVmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeUlIMGdabkp2YlNBbkxpOVdVazFUY0hKcGJtZENiMjVsUTI5c2JHbGtaWEluTzF4dWFXMXdiM0owSUhSNWNHVWdleUJXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhKSGNtOTFjQ0I5SUdaeWIyMGdKeTR2VmxKTlUzQnlhVzVuUW05dVpVTnZiR3hwWkdWeVIzSnZkWEFuTzF4dWFXMXdiM0owSUhzZ1ZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlVMmhoY0dWRFlYQnpkV3hsSUgwZ1puSnZiU0FuTGk5V1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSlRhR0Z3WlVOaGNITjFiR1VuTzF4dWFXMXdiM0owSUhzZ1ZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlVMmhoY0dWVGNHaGxjbVVnZlNCbWNtOXRJQ2N1TDFaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNsTm9ZWEJsVTNCb1pYSmxKenRjYm1sdGNHOXlkQ0I3SUZaU1RWTndjbWx1WjBKdmJtVktiMmx1ZENCOUlHWnliMjBnSnk0dlZsSk5VM0J5YVc1blFtOXVaVXB2YVc1MEp6dGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1ZsSk5VM0J5YVc1blFtOXVaVXh2WVdSbGNsQnNkV2RwYms5d2RHbHZibk1nZlNCbWNtOXRJQ2N1TDFaU1RWTndjbWx1WjBKdmJtVk1iMkZrWlhKUWJIVm5hVzVQY0hScGIyNXpKenRjYm1sdGNHOXlkQ0I3SUZaU1RWTndjbWx1WjBKdmJtVk5ZVzVoWjJWeUlIMGdabkp2YlNBbkxpOVdVazFUY0hKcGJtZENiMjVsVFdGdVlXZGxjaWM3WEc1cGJYQnZjblFnZEhsd1pTQjdJRlpTVFZOd2NtbHVaMEp2Ym1WS2IybHVkRk5sZEhScGJtZHpJSDBnWm5KdmJTQW5MaTlXVWsxVGNISnBibWRDYjI1bFNtOXBiblJUWlhSMGFXNW5jeWM3WEc1cGJYQnZjblFnZXlCSFRGUkdJR0Z6SUVkTVZFWlRZMmhsYldFZ2ZTQm1jbTl0SUNkQVoyeDBaaTEwY21GdWMyWnZjbTB2WTI5eVpTYzdYRzVjYmk4cUtseHVJQ29nVUc5emMybGliR1VnYzNCbFl5QjJaWEp6YVc5dWN5QnBkQ0J5WldOdloyNXBlbVZ6TGx4dUlDb3ZYRzVqYjI1emRDQlFUMU5UU1VKTVJWOVRVRVZEWDFaRlVsTkpUMDVUSUQwZ2JtVjNJRk5sZENoYkp6RXVNQ2NzSUNjeExqQXRZbVYwWVNkZEtUdGNibHh1Wlhod2IzSjBJR05zWVhOeklGWlNUVk53Y21sdVowSnZibVZNYjJGa1pYSlFiSFZuYVc0Z2FXMXdiR1Z0Wlc1MGN5QkhURlJHVEc5aFpHVnlVR3gxWjJsdUlIdGNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QnlaV0ZrYjI1c2VTQkZXRlJGVGxOSlQwNWZUa0ZOUlNBOUlDZFdVazFEWDNOd2NtbHVaMEp2Ym1Vbk8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCVGNHVmphV1o1SUdGdUlFOWlhbVZqZERORUlIUnZJR0ZrWkNCN1FHeHBibXNnVmxKTlUzQnlhVzVuUW05dVpVcHZhVzUwU0dWc2NHVnlmU0J6TGx4dUlDQWdLaUJKWmlCdWIzUWdjM0JsWTJsbWFXVmtMQ0JvWld4d1pYSWdkMmxzYkNCdWIzUWdZbVVnWTNKbFlYUmxaQzVjYmlBZ0lDb2dTV1lnWUhKbGJtUmxjazl5WkdWeVlDQnBjeUJ6WlhRZ2RHOGdkR2hsSUhKdmIzUXNJR2hsYkhCbGNuTWdkMmxzYkNCamIzQjVJSFJvWlNCellXMWxJR0J5Wlc1a1pYSlBjbVJsY21BZ0xseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHcHZhVzUwU0dWc2NHVnlVbTl2ZEQ4NklGUklVa1ZGTGs5aWFtVmpkRE5FTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJUY0dWamFXWjVJR0Z1SUU5aWFtVmpkRE5FSUhSdklHRmtaQ0I3UUd4cGJtc2dWbEpOVTNCeWFXNW5RbTl1WlVwdmFXNTBTR1ZzY0dWeWZTQnpMbHh1SUNBZ0tpQkpaaUJ1YjNRZ2MzQmxZMmxtYVdWa0xDQm9aV3h3WlhJZ2QybHNiQ0J1YjNRZ1ltVWdZM0psWVhSbFpDNWNiaUFnSUNvZ1NXWWdZSEpsYm1SbGNrOXlaR1Z5WUNCcGN5QnpaWFFnZEc4Z2RHaGxJSEp2YjNRc0lHaGxiSEJsY25NZ2QybHNiQ0JqYjNCNUlIUm9aU0J6WVcxbElHQnlaVzVrWlhKUGNtUmxjbUFnTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdOdmJHeHBaR1Z5U0dWc2NHVnlVbTl2ZEQ4NklGUklVa1ZGTGs5aWFtVmpkRE5FTzF4dVhHNGdJSEIxWW14cFl5QnlaV0ZrYjI1c2VTQndZWEp6WlhJNklFZE1WRVpRWVhKelpYSTdYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQnVZVzFsS0NrNklITjBjbWx1WnlCN1hHNGdJQ0FnY21WMGRYSnVJRlpTVFZOd2NtbHVaMEp2Ym1WTWIyRmtaWEpRYkhWbmFXNHVSVmhVUlU1VFNVOU9YMDVCVFVVN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9jR0Z5YzJWeU9pQkhURlJHVUdGeWMyVnlMQ0J2Y0hScGIyNXpQem9nVmxKTlUzQnlhVzVuUW05dVpVeHZZV1JsY2xCc2RXZHBiazl3ZEdsdmJuTXBJSHRjYmlBZ0lDQjBhR2x6TG5CaGNuTmxjaUE5SUhCaGNuTmxjanRjYmx4dUlDQWdJSFJvYVhNdWFtOXBiblJJWld4d1pYSlNiMjkwSUQwZ2IzQjBhVzl1Y3o4dWFtOXBiblJJWld4d1pYSlNiMjkwTzF4dUlDQWdJSFJvYVhNdVkyOXNiR2xrWlhKSVpXeHdaWEpTYjI5MElEMGdiM0IwYVc5dWN6OHVZMjlzYkdsa1pYSklaV3h3WlhKU2IyOTBPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR0Z6ZVc1aklHRm1kR1Z5VW05dmRDaG5iSFJtT2lCSFRGUkdLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ1oyeDBaaTUxYzJWeVJHRjBZUzUyY20xVGNISnBibWRDYjI1bFRXRnVZV2RsY2lBOUlHRjNZV2wwSUhSb2FYTXVYMmx0Y0c5eWRDaG5iSFJtS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpiWEJ2Y25RZ2MzQnlhVzVuSUdKdmJtVnpJR1p5YjIwZ1lTQkhURlJHSUdGdVpDQnlaWFIxY200Z1lTQjdRR3hwYm1zZ1ZsSk5VM0J5YVc1blFtOXVaVTFoYm1GblpYSjlMbHh1SUNBZ0tpQkpkQ0J0YVdkb2RDQnlaWFIxY200Z1lHNTFiR3hnSUdsdWMzUmxZV1FnZDJobGJpQnBkQ0JrYjJWeklHNXZkQ0J1WldWa0lIUnZJR0psSUdOeVpXRjBaV1FnYjNJZ2MyOXRaWFJvYVc1bklHZHZJSGR5YjI1bkxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdaMngwWmlCQklIQmhjbk5sWkNCeVpYTjFiSFFnYjJZZ1IweFVSaUIwWVd0bGJpQm1jbTl0SUVkTVZFWk1iMkZrWlhKY2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1lYTjVibU1nWDJsdGNHOXlkQ2huYkhSbU9pQkhURlJHS1RvZ1VISnZiV2x6WlR4V1VrMVRjSEpwYm1kQ2IyNWxUV0Z1WVdkbGNpQjhJRzUxYkd3K0lIdGNiaUFnSUNCamIyNXpkQ0IyTVZKbGMzVnNkQ0E5SUdGM1lXbDBJSFJvYVhNdVgzWXhTVzF3YjNKMEtHZHNkR1lwTzF4dUlDQWdJR2xtSUNoMk1WSmxjM1ZzZENBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZGpGU1pYTjFiSFE3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2RqQlNaWE4xYkhRZ1BTQmhkMkZwZENCMGFHbHpMbDkyTUVsdGNHOXlkQ2huYkhSbUtUdGNiaUFnSUNCcFppQW9kakJTWlhOMWJIUWdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIWXdVbVZ6ZFd4ME8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQmhjM2x1WXlCZmRqRkpiWEJ2Y25Rb1oyeDBaam9nUjB4VVJpazZJRkJ5YjIxcGMyVThWbEpOVTNCeWFXNW5RbTl1WlUxaGJtRm5aWElnZkNCdWRXeHNQaUI3WEc0Z0lDQWdZMjl1YzNRZ2FuTnZiaUE5SUdkc2RHWXVjR0Z5YzJWeUxtcHpiMjRnWVhNZ1IweFVSbE5qYUdWdFlTNUpSMHhVUmp0Y2JseHVJQ0FnSUM4dklHVmhjbXg1SUdGaWIzSjBJR2xtSUdsMElHUnZaWE51SjNRZ2RYTmxJSE53Y21sdVp5QmliMjVsYzF4dUlDQWdJR052Ym5OMElHbHpVM0J5YVc1blFtOXVaVlZ6WldRZ1BTQnFjMjl1TG1WNGRHVnVjMmx2Ym5OVmMyVmtQeTVwYm1SbGVFOW1LRlpTVFZOd2NtbHVaMEp2Ym1WTWIyRmtaWEpRYkhWbmFXNHVSVmhVUlU1VFNVOU9YMDVCVFVVcElDRTlQU0F0TVR0Y2JpQWdJQ0JwWmlBb0lXbHpVM0J5YVc1blFtOXVaVlZ6WldRcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUcxaGJtRm5aWElnUFNCdVpYY2dWbEpOVTNCeWFXNW5RbTl1WlUxaGJtRm5aWElvS1R0Y2JseHVJQ0FnSUdOdmJuTjBJSFJvY21WbFRtOWtaWE02SUZSSVVrVkZMazlpYW1WamRETkVXMTBnUFNCaGQyRnBkQ0JuYkhSbUxuQmhjbk5sY2k1blpYUkVaWEJsYm1SbGJtTnBaWE1vSjI1dlpHVW5LVHRjYmx4dUlDQWdJR052Ym5OMElHVjRkR1Z1YzJsdmJpQTlJR3B6YjI0dVpYaDBaVzV6YVc5dWN6OHVXMVpTVFZOd2NtbHVaMEp2Ym1WTWIyRmtaWEpRYkhWbmFXNHVSVmhVUlU1VFNVOU9YMDVCVFVWZElHRnpYRzRnSUNBZ0lDQjhJRll4VTNCeWFXNW5RbTl1WlZOamFHVnRZUzVXVWsxRFUzQnlhVzVuUW05dVpWeHVJQ0FnSUNBZ2ZDQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2FXWWdLQ0ZsZUhSbGJuTnBiMjRwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJSE53WldOV1pYSnphVzl1SUQwZ1pYaDBaVzV6YVc5dUxuTndaV05XWlhKemFXOXVPMXh1SUNBZ0lHbG1JQ2doVUU5VFUwbENURVZmVTFCRlExOVdSVkpUU1U5T1V5NW9ZWE1vYzNCbFkxWmxjbk5wYjI0cEtTQjdYRzRnSUNBZ0lDQmpiMjV6YjJ4bExuZGhjbTRvWEc0Z0lDQWdJQ0FnSUdCV1VrMVRjSEpwYm1kQ2IyNWxURzloWkdWeVVHeDFaMmx1T2lCVmJtdHViM2R1SUNSN1ZsSk5VM0J5YVc1blFtOXVaVXh2WVdSbGNsQnNkV2RwYmk1RldGUkZUbE5KVDA1ZlRrRk5SWDBnYzNCbFkxWmxjbk5wYjI0Z1hDSWtlM053WldOV1pYSnphVzl1ZlZ3aVlDeGNiaUFnSUNBZ0lDazdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCamIyeHNhV1JsY25NZ1BTQmxlSFJsYm5OcGIyNHVZMjlzYkdsa1pYSnpQeTV0WVhBb0tITmphR1Z0WVVOdmJHeHBaR1Z5TENCcFEyOXNiR2xrWlhJcElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElHNXZaR1VnUFNCMGFISmxaVTV2WkdWelczTmphR1Z0WVVOdmJHeHBaR1Z5TG01dlpHVWhYVHRjYmlBZ0lDQWdJR052Ym5OMElITmphR1Z0WVZOb1lYQmxJRDBnYzJOb1pXMWhRMjlzYkdsa1pYSXVjMmhoY0dVaE8xeHVYRzRnSUNBZ0lDQnBaaUFvYzJOb1pXMWhVMmhoY0dVdWMzQm9aWEpsS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDlwYlhCdmNuUlRjR2hsY21WRGIyeHNhV1JsY2lodWIyUmxMQ0I3WEc0Z0lDQWdJQ0FnSUNBZ2IyWm1jMlYwT2lCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncExtWnliMjFCY25KaGVTaHpZMmhsYldGVGFHRndaUzV6Y0dobGNtVXViMlptYzJWMElEOC9JRnN3TGpBc0lEQXVNQ3dnTUM0d1hTa3NYRzRnSUNBZ0lDQWdJQ0FnY21Ga2FYVnpPaUJ6WTJobGJXRlRhR0Z3WlM1emNHaGxjbVV1Y21Ga2FYVnpJRDgvSURBdU1DeGNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0hOamFHVnRZVk5vWVhCbExtTmhjSE4xYkdVcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11WDJsdGNHOXlkRU5oY0hOMWJHVkRiMnhzYVdSbGNpaHViMlJsTENCN1hHNGdJQ0FnSUNBZ0lDQWdiMlptYzJWME9pQnVaWGNnVkVoU1JVVXVWbVZqZEc5eU15Z3BMbVp5YjIxQmNuSmhlU2h6WTJobGJXRlRhR0Z3WlM1allYQnpkV3hsTG05bVpuTmxkQ0EvUHlCYk1DNHdMQ0F3TGpBc0lEQXVNRjBwTEZ4dUlDQWdJQ0FnSUNBZ0lISmhaR2wxY3pvZ2MyTm9aVzFoVTJoaGNHVXVZMkZ3YzNWc1pTNXlZV1JwZFhNZ1B6OGdNQzR3TEZ4dUlDQWdJQ0FnSUNBZ0lIUmhhV3c2SUc1bGR5QlVTRkpGUlM1V1pXTjBiM0l6S0NrdVpuSnZiVUZ5Y21GNUtITmphR1Z0WVZOb1lYQmxMbU5oY0hOMWJHVXVkR0ZwYkNBL1B5QmJNQzR3TENBd0xqQXNJREF1TUYwcExGeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLR0JXVWsxVGNISnBibWRDYjI1bFRHOWhaR1Z5VUd4MVoybHVPaUJVYUdVZ1kyOXNiR2xrWlhJZ0l5UjdhVU52Ykd4cFpHVnlmU0JvWVhNZ2JtOGdkbUZzYVdRZ2MyaGhjR1ZnS1R0Y2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUdOdmJuTjBJR052Ykd4cFpHVnlSM0p2ZFhCeklEMGdaWGgwWlc1emFXOXVMbU52Ykd4cFpHVnlSM0p2ZFhCelB5NXRZWEFvWEc0Z0lDQWdJQ0FvYzJOb1pXMWhRMjlzYkdsa1pYSkhjbTkxY0N3Z2FVTnZiR3hwWkdWeVIzSnZkWEFwT2lCV1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSkhjbTkxY0NBOVBpQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHTnZiSE1nUFNBb2MyTm9aVzFoUTI5c2JHbGtaWEpIY205MWNDNWpiMnhzYVdSbGNuTWdQejhnVzEwcExtMWhjQ2dvYVVOdmJHeHBaR1Z5S1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdZMjlzSUQwZ1kyOXNiR2xrWlhKelB5NWJhVU52Ykd4cFpHVnlYVHRjYmx4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2hqYjJ3Z1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQmdWbEpOVTNCeWFXNW5RbTl1WlV4dllXUmxjbEJzZFdkcGJqb2dWR2hsSUdOdmJHeHBaR1Z5UjNKdmRYQWdJeVI3YVVOdmJHeHBaR1Z5UjNKdmRYQjlJR0YwZEdWdGNIUmxaQ0IwYnlCMWMyVWdZU0JqYjJ4c2FXUmxjaUFqSkh0cFEyOXNiR2xrWlhKOUlHSjFkQ0J1YjNRZ1ptOTFibVJnTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZMjlzTzF4dUlDQWdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJHeHBaR1Z5Y3pvZ1kyOXNjeXhjYmlBZ0lDQWdJQ0FnSUNCdVlXMWxPaUJ6WTJobGJXRkRiMnhzYVdSbGNrZHliM1Z3TG01aGJXVXNYRzRnSUNBZ0lDQWdJSDA3WEc0Z0lDQWdJQ0I5TEZ4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0JsZUhSbGJuTnBiMjR1YzNCeWFXNW5jejh1Wm05eVJXRmphQ2dvYzJOb1pXMWhVM0J5YVc1bkxDQnBVM0J5YVc1bktTQTlQaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQnpZMmhsYldGS2IybHVkSE1nUFNCelkyaGxiV0ZUY0hKcGJtY3VhbTlwYm5Sek8xeHVYRzRnSUNBZ0lDQXZMeUJ3Y21Wd1lYSmxJR052Ykd4cFpHVnljMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyOXNiR2xrWlhKSGNtOTFjSE5HYjNKVGNISnBibWNnUFNCelkyaGxiV0ZUY0hKcGJtY3VZMjlzYkdsa1pYSkhjbTkxY0hNL0xtMWhjQ2dvYVVOdmJHeHBaR1Z5UjNKdmRYQXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWjNKdmRYQWdQU0JqYjJ4c2FXUmxja2R5YjNWd2N6OHVXMmxEYjJ4c2FXUmxja2R5YjNWd1hUdGNibHh1SUNBZ0lDQWdJQ0JwWmlBb1ozSnZkWEFnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loY2JpQWdJQ0FnSUNBZ0lDQWdJR0JXVWsxVGNISnBibWRDYjI1bFRHOWhaR1Z5VUd4MVoybHVPaUJVYUdVZ2MzQnlhVzVuSUNNa2UybFRjSEpwYm1kOUlHRjBkR1Z0Y0hSbFpDQjBieUIxYzJVZ1lTQmpiMnhzYVdSbGNrZHliM1Z3SUNSN2FVTnZiR3hwWkdWeVIzSnZkWEI5SUdKMWRDQnViM1FnWm05MWJtUmdMRnh1SUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdaM0p2ZFhBN1hHNGdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdZMjl1YzNRZ1kyVnVkR1Z5SUQwZ2MyTm9aVzFoVTNCeWFXNW5MbU5sYm5SbGNpQWhQU0J1ZFd4c0lEOGdkR2h5WldWT2IyUmxjMXR6WTJobGJXRlRjSEpwYm1jdVkyVnVkR1Z5WFNBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lDQWdiR1YwSUhCeVpYWlRZMmhsYldGS2IybHVkRG9nVmpGVGNISnBibWRDYjI1bFUyTm9aVzFoTGxOd2NtbHVaMEp2Ym1WS2IybHVkQ0I4SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUhOamFHVnRZVXB2YVc1MGN5NW1iM0pGWVdOb0tDaHpZMmhsYldGS2IybHVkQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQnBaaUFvY0hKbGRsTmphR1Z0WVVwdmFXNTBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdjSEpsY0dGeVpTQnViMlJsWEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYm05a1pVbHVaR1Y0SUQwZ2NISmxkbE5qYUdWdFlVcHZhVzUwTG01dlpHVTdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdibTlrWlNBOUlIUm9jbVZsVG05a1pYTmJibTlrWlVsdVpHVjRYVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JqYUdsc1pFbHVaR1Y0SUQwZ2MyTm9aVzFoU205cGJuUXVibTlrWlR0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCamFHbHNaQ0E5SUhSb2NtVmxUbTlrWlhOYlkyaHBiR1JKYm1SbGVGMDdYRzVjYmlBZ0lDQWdJQ0FnSUNBdkx5QndjbVZ3WVhKbElITmxkSFJwYm1kY2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCelpYUjBhVzVuT2lCUVlYSjBhV0ZzUEZaU1RWTndjbWx1WjBKdmJtVktiMmx1ZEZObGRIUnBibWR6UGlBOUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdocGRGSmhaR2wxY3pvZ2NISmxkbE5qYUdWdFlVcHZhVzUwTG1ocGRGSmhaR2wxY3l4Y2JpQWdJQ0FnSUNBZ0lDQWdJR1J5WVdkR2IzSmpaVG9nY0hKbGRsTmphR1Z0WVVwdmFXNTBMbVJ5WVdkR2IzSmpaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHZHlZWFpwZEhsUWIzZGxjam9nY0hKbGRsTmphR1Z0WVVwdmFXNTBMbWR5WVhacGRIbFFiM2RsY2l4Y2JpQWdJQ0FnSUNBZ0lDQWdJSE4wYVdabWJtVnpjem9nY0hKbGRsTmphR1Z0WVVwdmFXNTBMbk4wYVdabWJtVnpjeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lHZHlZWFpwZEhsRWFYSTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIQnlaWFpUWTJobGJXRktiMmx1ZEM1bmNtRjJhWFI1UkdseUlDRTlJRzUxYkd4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBL0lHNWxkeUJVU0ZKRlJTNVdaV04wYjNJektDa3Vabkp2YlVGeWNtRjVLSEJ5WlhaVFkyaGxiV0ZLYjJsdWRDNW5jbUYyYVhSNVJHbHlLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRG9nZFc1a1pXWnBibVZrTEZ4dUlDQWdJQ0FnSUNBZ0lIMDdYRzVjYmlBZ0lDQWdJQ0FnSUNBdkx5QmpjbVZoZEdVZ2MzQnlhVzVuSUdKdmJtVnpYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdhbTlwYm5RZ1BTQjBhR2x6TGw5cGJYQnZjblJLYjJsdWRDaHViMlJsTENCamFHbHNaQ3dnYzJWMGRHbHVaeXdnWTI5c2JHbGtaWEpIY205MWNITkdiM0pUY0hKcGJtY3BPMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGpaVzUwWlhJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdwdmFXNTBMbU5sYm5SbGNpQTlJR05sYm5SbGNqdGNiaUFnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0lDQnRZVzVoWjJWeUxtRmtaRXB2YVc1MEtHcHZhVzUwS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJSEJ5WlhaVFkyaGxiV0ZLYjJsdWRDQTlJSE5qYUdWdFlVcHZhVzUwTzF4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnZlNrN1hHNWNiaUFnSUNBdkx5QnBibWwwSUhOd2NtbHVaeUJpYjI1bGMxeHVJQ0FnSUcxaGJtRm5aWEl1YzJWMFNXNXBkRk4wWVhSbEtDazdYRzVjYmlBZ0lDQnlaWFIxY200Z2JXRnVZV2RsY2p0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1lYTjVibU1nWDNZd1NXMXdiM0owS0dkc2RHWTZJRWRNVkVZcE9pQlFjbTl0YVhObFBGWlNUVk53Y21sdVowSnZibVZOWVc1aFoyVnlJSHdnYm5Wc2JENGdlMXh1SUNBZ0lHTnZibk4wSUdwemIyNGdQU0JuYkhSbUxuQmhjbk5sY2k1cWMyOXVJR0Z6SUVkTVZFWlRZMmhsYldFdVNVZE1WRVk3WEc1Y2JpQWdJQ0F2THlCbFlYSnNlU0JoWW05eWRDQnBaaUJwZENCa2IyVnpiaWQwSUhWelpTQjJjbTFjYmlBZ0lDQmpiMjV6ZENCcGMxWlNUVlZ6WldRZ1BTQnFjMjl1TG1WNGRHVnVjMmx2Ym5OVmMyVmtQeTVwYm1SbGVFOW1LQ2RXVWswbktTQWhQVDBnTFRFN1hHNGdJQ0FnYVdZZ0tDRnBjMVpTVFZWelpXUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUdWaGNteDVJR0ZpYjNKMElHbG1JR2wwSUdSdlpYTnVKM1FnYUdGMlpTQmliMjVsSUdkeWIzVndjMXh1SUNBZ0lHTnZibk4wSUdWNGRHVnVjMmx2YmlBOUlHcHpiMjR1WlhoMFpXNXphVzl1Y3o4dVd5ZFdVazBuWFNCaGN5QldNRlpTVFM1V1VrMGdmQ0IxYm1SbFptbHVaV1E3WEc0Z0lDQWdZMjl1YzNRZ2MyTm9aVzFoVTJWamIyNWtZWEo1UVc1cGJXRjBhVzl1SUQwZ1pYaDBaVzV6YVc5dVB5NXpaV052Ym1SaGNubEJibWx0WVhScGIyNDdYRzRnSUNBZ2FXWWdLQ0Z6WTJobGJXRlRaV052Ym1SaGNubEJibWx0WVhScGIyNHBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElITmphR1Z0WVVKdmJtVkhjbTkxY0hNZ1BTQnpZMmhsYldGVFpXTnZibVJoY25sQmJtbHRZWFJwYjI0L0xtSnZibVZIY205MWNITTdYRzRnSUNBZ2FXWWdLQ0Z6WTJobGJXRkNiMjVsUjNKdmRYQnpLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQnRZVzVoWjJWeUlEMGdibVYzSUZaU1RWTndjbWx1WjBKdmJtVk5ZVzVoWjJWeUtDazdYRzVjYmlBZ0lDQmpiMjV6ZENCMGFISmxaVTV2WkdWek9pQlVTRkpGUlM1UFltcGxZM1F6UkZ0ZElEMGdZWGRoYVhRZ1oyeDBaaTV3WVhKelpYSXVaMlYwUkdWd1pXNWtaVzVqYVdWektDZHViMlJsSnlrN1hHNWNiaUFnSUNCamIyNXpkQ0JqYjJ4c2FXUmxja2R5YjNWd2N5QTlJSE5qYUdWdFlWTmxZMjl1WkdGeWVVRnVhVzFoZEdsdmJpNWpiMnhzYVdSbGNrZHliM1Z3Y3o4dWJXRndLRnh1SUNBZ0lDQWdLSE5qYUdWdFlVTnZiR3hwWkdWeVIzSnZkWEFwT2lCV1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSkhjbTkxY0NBOVBpQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHNXZaR1VnUFNCMGFISmxaVTV2WkdWelczTmphR1Z0WVVOdmJHeHBaR1Z5UjNKdmRYQXVibTlrWlNGZE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCamIyeHNhV1JsY25NZ1BTQW9jMk5vWlcxaFEyOXNiR2xrWlhKSGNtOTFjQzVqYjJ4c2FXUmxjbk1nUHo4Z1cxMHBMbTFoY0Nnb2MyTm9aVzFoUTI5c2JHbGtaWElzSUdsRGIyeHNhV1JsY2lrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzltWm5ObGRDQTlJRzVsZHlCVVNGSkZSUzVXWldOMGIzSXpLREF1TUN3Z01DNHdMQ0F3TGpBcE8xeHVJQ0FnSUNBZ0lDQWdJR2xtSUNoelkyaGxiV0ZEYjJ4c2FXUmxjaTV2Wm1aelpYUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHOW1abk5sZEM1elpYUW9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lITmphR1Z0WVVOdmJHeHBaR1Z5TG05bVpuTmxkQzU0SUQ4L0lEQXVNQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjMk5vWlcxaFEyOXNiR2xrWlhJdWIyWm1jMlYwTG5rZ1B6OGdNQzR3TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J6WTJobGJXRkRiMnhzYVdSbGNpNXZabVp6WlhRdWVpQS9JQzF6WTJobGJXRkRiMnhzYVdSbGNpNXZabVp6WlhRdWVpQTZJREF1TUN3Z0x5OGdlaUJwY3lCdmNIQnZjMmwwWlNCcGJpQldVazB3TGpCY2JpQWdJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVgybHRjRzl5ZEZOd2FHVnlaVU52Ykd4cFpHVnlLRzV2WkdVc0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUc5bVpuTmxkQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lISmhaR2wxY3pvZ2MyTm9aVzFoUTI5c2JHbGtaWEl1Y21Ga2FYVnpJRDgvSURBdU1DeGNiaUFnSUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ2ZTazdYRzVjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSHNnWTI5c2JHbGtaWEp6SUgwN1hHNGdJQ0FnSUNCOUxGeHVJQ0FnSUNrN1hHNWNiaUFnSUNBdkx5QnBiWEJ2Y25RZ2MzQnlhVzVuSUdKdmJtVnpJR1p2Y2lCbFlXTm9JSE53Y21sdVp5QmliMjVsSUdkeWIzVndjMXh1SUNBZ0lITmphR1Z0WVVKdmJtVkhjbTkxY0hNL0xtWnZja1ZoWTJnb0tITmphR1Z0WVVKdmJtVkhjbTkxY0N3Z2FVSnZibVZIY205MWNDa2dQVDRnZTF4dUlDQWdJQ0FnWTI5dWMzUWdjbTl2ZEVsdVpHbGpaWE1nUFNCelkyaGxiV0ZDYjI1bFIzSnZkWEF1WW05dVpYTTdYRzRnSUNBZ0lDQnBaaUFvSVhKdmIzUkpibVJwWTJWektTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdjbTl2ZEVsdVpHbGpaWE11Wm05eVJXRmphQ2dvY205dmRFbHVaR1Y0S1NBOVBpQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElISnZiM1FnUFNCMGFISmxaVTV2WkdWelczSnZiM1JKYm1SbGVGMDdYRzVjYmlBZ0lDQWdJQ0FnTHk4Z2NISmxjR0Z5WlNCelpYUjBhVzVuWEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR2R5WVhacGRIbEVhWElnUFNCdVpYY2dWRWhTUlVVdVZtVmpkRzl5TXlncE8xeHVJQ0FnSUNBZ0lDQnBaaUFvYzJOb1pXMWhRbTl1WlVkeWIzVndMbWR5WVhacGRIbEVhWElwSUh0Y2JpQWdJQ0FnSUNBZ0lDQm5jbUYyYVhSNVJHbHlMbk5sZENoY2JpQWdJQ0FnSUNBZ0lDQWdJSE5qYUdWdFlVSnZibVZIY205MWNDNW5jbUYyYVhSNVJHbHlMbmdnUHo4Z01DNHdMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2MyTm9aVzFoUW05dVpVZHliM1Z3TG1keVlYWnBkSGxFYVhJdWVTQS9QeUF3TGpBc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6WTJobGJXRkNiMjVsUjNKdmRYQXVaM0poZG1sMGVVUnBjaTU2SUQ4L0lEQXVNQ3hjYmlBZ0lDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJR2R5WVhacGRIbEVhWEl1YzJWMEtEQXVNQ3dnTFRFdU1Dd2dNQzR3S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJR052Ym5OMElHTmxiblJsY2lBOUlITmphR1Z0WVVKdmJtVkhjbTkxY0M1alpXNTBaWElnSVQwZ2JuVnNiQ0EvSUhSb2NtVmxUbTlrWlhOYmMyTm9aVzFoUW05dVpVZHliM1Z3TG1ObGJuUmxjbDBnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2MyVjBkR2x1WnpvZ1VHRnlkR2xoYkR4V1VrMVRjSEpwYm1kQ2IyNWxTbTlwYm5SVFpYUjBhVzVuY3o0Z1BTQjdYRzRnSUNBZ0lDQWdJQ0FnYUdsMFVtRmthWFZ6T2lCelkyaGxiV0ZDYjI1bFIzSnZkWEF1YUdsMFVtRmthWFZ6TEZ4dUlDQWdJQ0FnSUNBZ0lHUnlZV2RHYjNKalpUb2djMk5vWlcxaFFtOXVaVWR5YjNWd0xtUnlZV2RHYjNKalpTeGNiaUFnSUNBZ0lDQWdJQ0JuY21GMmFYUjVVRzkzWlhJNklITmphR1Z0WVVKdmJtVkhjbTkxY0M1bmNtRjJhWFI1VUc5M1pYSXNYRzRnSUNBZ0lDQWdJQ0FnYzNScFptWnVaWE56T2lCelkyaGxiV0ZDYjI1bFIzSnZkWEF1YzNScFptWnBibVZ6Y3l4Y2JpQWdJQ0FnSUNBZ0lDQm5jbUYyYVhSNVJHbHlMRnh1SUNBZ0lDQWdJQ0I5TzF4dVhHNGdJQ0FnSUNBZ0lDOHZJSEJ5WlhCaGNtVWdZMjlzYkdsa1pYSnpYRzRnSUNBZ0lDQWdJR052Ym5OMElHTnZiR3hwWkdWeVIzSnZkWEJ6Um05eVUzQnlhVzVuSUQwZ2MyTm9aVzFoUW05dVpVZHliM1Z3TG1OdmJHeHBaR1Z5UjNKdmRYQnpQeTV0WVhBb0tHbERiMnhzYVdSbGNrZHliM1Z3S1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdaM0p2ZFhBZ1BTQmpiMnhzYVdSbGNrZHliM1Z3Y3o4dVcybERiMnhzYVdSbGNrZHliM1Z3WFR0Y2JseHVJQ0FnSUNBZ0lDQWdJR2xtSUNobmNtOTFjQ0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdCV1VrMVRjSEpwYm1kQ2IyNWxURzloWkdWeVVHeDFaMmx1T2lCVWFHVWdjM0J5YVc1bklDTWtlMmxDYjI1bFIzSnZkWEI5SUdGMGRHVnRjSFJsWkNCMGJ5QjFjMlVnWVNCamIyeHNhV1JsY2tkeWIzVndJQ1I3YVVOdmJHeHBaR1Z5UjNKdmRYQjlJR0oxZENCdWIzUWdabTkxYm1SZ0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWjNKdmRYQTdYRzRnSUNBZ0lDQWdJSDBwTzF4dVhHNGdJQ0FnSUNBZ0lDOHZJR055WldGMFpTQnpjSEpwYm1jZ1ltOXVaWE5jYmlBZ0lDQWdJQ0FnY205dmRDNTBjbUYyWlhKelpTZ29ibTlrWlNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR05vYVd4a09pQlVTRkpGUlM1UFltcGxZM1F6UkNCOElHNTFiR3dnUFNCdWIyUmxMbU5vYVd4a2NtVnVXekJkSUQ4L0lHNTFiR3c3WEc1Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCcWIybHVkQ0E5SUhSb2FYTXVYMmx0Y0c5eWRFcHZhVzUwS0c1dlpHVXNJR05vYVd4a0xDQnpaWFIwYVc1bkxDQmpiMnhzYVdSbGNrZHliM1Z3YzBadmNsTndjbWx1WnlrN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dObGJuUmxjaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhbTlwYm5RdVkyVnVkR1Z5SUQwZ1kyVnVkR1Z5TzF4dUlDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUcxaGJtRm5aWEl1WVdSa1NtOXBiblFvYW05cGJuUXBPMXh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ0x5OGdhVzVwZENCemNISnBibWNnWW05dVpYTmNiaUFnSUNCbmJIUm1Mbk5qWlc1bExuVndaR0YwWlUxaGRISnBlRmR2Y214a0tDazdYRzRnSUNBZ2JXRnVZV2RsY2k1elpYUkpibWwwVTNSaGRHVW9LVHRjYmx4dUlDQWdJSEpsZEhWeWJpQnRZVzVoWjJWeU8xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQmZhVzF3YjNKMFNtOXBiblFvWEc0Z0lDQWdibTlrWlRvZ1ZFaFNSVVV1VDJKcVpXTjBNMFFzWEc0Z0lDQWdZMmhwYkdRNklGUklVa1ZGTGs5aWFtVmpkRE5FTEZ4dUlDQWdJSE5sZEhScGJtYy9PaUJRWVhKMGFXRnNQRlpTVFZOd2NtbHVaMEp2Ym1WS2IybHVkRk5sZEhScGJtZHpQaXhjYmlBZ0lDQmpiMnhzYVdSbGNrZHliM1Z3YzBadmNsTndjbWx1Wno4NklGWlNUVk53Y21sdVowSnZibVZEYjJ4c2FXUmxja2R5YjNWd1cxMHNYRzRnSUNrNklGWlNUVk53Y21sdVowSnZibVZLYjJsdWRDQjdYRzRnSUNBZ1kyOXVjM1FnYzNCeWFXNW5RbTl1WlNBOUlHNWxkeUJXVWsxVGNISnBibWRDYjI1bFNtOXBiblFvYm05a1pTd2dZMmhwYkdRc0lITmxkSFJwYm1jc0lHTnZiR3hwWkdWeVIzSnZkWEJ6Um05eVUzQnlhVzVuS1R0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG1wdmFXNTBTR1ZzY0dWeVVtOXZkQ2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdhR1ZzY0dWeUlEMGdibVYzSUZaU1RWTndjbWx1WjBKdmJtVktiMmx1ZEVobGJIQmxjaWh6Y0hKcGJtZENiMjVsS1R0Y2JpQWdJQ0FnSUhSb2FYTXVhbTlwYm5SSVpXeHdaWEpTYjI5MExtRmtaQ2hvWld4d1pYSXBPMXh1SUNBZ0lDQWdhR1ZzY0dWeUxuSmxibVJsY2s5eVpHVnlJRDBnZEdocGN5NXFiMmx1ZEVobGJIQmxjbEp2YjNRdWNtVnVaR1Z5VDNKa1pYSTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhOd2NtbHVaMEp2Ym1VN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElGOXBiWEJ2Y25SVGNHaGxjbVZEYjJ4c2FXUmxjaWhjYmlBZ0lDQmtaWE4wYVc1aGRHbHZiam9nVkVoU1JVVXVUMkpxWldOME0wUXNYRzRnSUNBZ2NHRnlZVzF6T2lCN1hHNGdJQ0FnSUNCdlptWnpaWFE2SUZSSVVrVkZMbFpsWTNSdmNqTTdYRzRnSUNBZ0lDQnlZV1JwZFhNNklHNTFiV0psY2p0Y2JpQWdJQ0I5TEZ4dUlDQXBPaUJXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhJZ2UxeHVJQ0FnSUdOdmJuTjBJSHNnYjJabWMyVjBMQ0J5WVdScGRYTWdmU0E5SUhCaGNtRnRjenRjYmx4dUlDQWdJR052Ym5OMElITm9ZWEJsSUQwZ2JtVjNJRlpTVFZOd2NtbHVaMEp2Ym1WRGIyeHNhV1JsY2xOb1lYQmxVM0JvWlhKbEtIc2diMlptYzJWMExDQnlZV1JwZFhNZ2ZTazdYRzVjYmlBZ0lDQmpiMjV6ZENCamIyeHNhV1JsY2lBOUlHNWxkeUJXVWsxVGNISnBibWRDYjI1bFEyOXNiR2xrWlhJb2MyaGhjR1VwTzF4dVhHNGdJQ0FnWkdWemRHbHVZWFJwYjI0dVlXUmtLR052Ykd4cFpHVnlLVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbU52Ykd4cFpHVnlTR1ZzY0dWeVVtOXZkQ2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdhR1ZzY0dWeUlEMGdibVYzSUZaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNraGxiSEJsY2loamIyeHNhV1JsY2lrN1hHNGdJQ0FnSUNCMGFHbHpMbU52Ykd4cFpHVnlTR1ZzY0dWeVVtOXZkQzVoWkdRb2FHVnNjR1Z5S1R0Y2JpQWdJQ0FnSUdobGJIQmxjaTV5Wlc1a1pYSlBjbVJsY2lBOUlIUm9hWE11WTI5c2JHbGtaWEpJWld4d1pYSlNiMjkwTG5KbGJtUmxjazl5WkdWeU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJqYjJ4c2FXUmxjanRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWDJsdGNHOXlkRU5oY0hOMWJHVkRiMnhzYVdSbGNpaGNiaUFnSUNCa1pYTjBhVzVoZEdsdmJqb2dWRWhTUlVVdVQySnFaV04wTTBRc1hHNGdJQ0FnY0dGeVlXMXpPaUI3WEc0Z0lDQWdJQ0J2Wm1aelpYUTZJRlJJVWtWRkxsWmxZM1J2Y2pNN1hHNGdJQ0FnSUNCeVlXUnBkWE02SUc1MWJXSmxjanRjYmlBZ0lDQWdJSFJoYVd3NklGUklVa1ZGTGxabFkzUnZjak03WEc0Z0lDQWdmU3hjYmlBZ0tUb2dWbEpOVTNCeWFXNW5RbTl1WlVOdmJHeHBaR1Z5SUh0Y2JpQWdJQ0JqYjI1emRDQjdJRzltWm5ObGRDd2djbUZrYVhWekxDQjBZV2xzSUgwZ1BTQndZWEpoYlhNN1hHNWNiaUFnSUNCamIyNXpkQ0J6YUdGd1pTQTlJRzVsZHlCV1VrMVRjSEpwYm1kQ2IyNWxRMjlzYkdsa1pYSlRhR0Z3WlVOaGNITjFiR1VvZXlCdlptWnpaWFFzSUhKaFpHbDFjeXdnZEdGcGJDQjlLVHRjYmx4dUlDQWdJR052Ym5OMElHTnZiR3hwWkdWeUlEMGdibVYzSUZaU1RWTndjbWx1WjBKdmJtVkRiMnhzYVdSbGNpaHphR0Z3WlNrN1hHNWNiaUFnSUNCa1pYTjBhVzVoZEdsdmJpNWhaR1FvWTI5c2JHbGtaWElwTzF4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11WTI5c2JHbGtaWEpJWld4d1pYSlNiMjkwS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JvWld4d1pYSWdQU0J1WlhjZ1ZsSk5VM0J5YVc1blFtOXVaVU52Ykd4cFpHVnlTR1ZzY0dWeUtHTnZiR3hwWkdWeUtUdGNiaUFnSUNBZ0lIUm9hWE11WTI5c2JHbGtaWEpJWld4d1pYSlNiMjkwTG1Ga1pDaG9aV3h3WlhJcE8xeHVJQ0FnSUNBZ2FHVnNjR1Z5TG5KbGJtUmxjazl5WkdWeUlEMGdkR2hwY3k1amIyeHNhV1JsY2tobGJIQmxjbEp2YjNRdWNtVnVaR1Z5VDNKa1pYSTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUdOdmJHeHBaR1Z5TzF4dUlDQjlYRzU5WEc0aVhTd2libUZ0WlhNaU9sc2lYM1l6UVNJc0lsOTJNMElpTENKZmJXRjBRU0pkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096dEJRVUZCT3p0QlFVVkhPMDFCUTIxQ0xEQkNRVUV3UWl4RFFVRkJPMEZCYzBJdlF6czdRVU4wUWtRc1RVRkJUVUVzVFVGQlNTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnBETEUxQlFVMURMRTFCUVVrc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVVXpRaXhOUVVGUExHbERRVUZyUXl4VFFVRlJMREJDUVVFd1FpeERRVUZCTzBGQlF5OUZMRWxCUVVFc1NVRkJWeXhKUVVGSkxFZEJRVUU3UVVGRFlpeFJRVUZCTEU5QlFVOHNVMEZCVXl4RFFVRkRPMHRCUTJ4Q08wRkJhVUpFTEVsQlFVRXNWMEZCUVN4RFFVRnRRaXhOUVVFd1JTeEZRVUZCT3p0QlFVTXpSaXhSUVVGQkxFdEJRVXNzUlVGQlJTeERRVUZETzFGQlJWSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeE5RVUZOTEV0QlFVNHNTVUZCUVN4SlFVRkJMRTFCUVUwc1MwRkJUaXhMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TlFVRk5MRU5CUVVVc1RVRkJUU3h0UTBGQlNTeEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnFSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVRXNSVUZCUVN4SFFVRkJMRTFCUVUwc1MwRkJUaXhKUVVGQkxFbEJRVUVzVFVGQlRTeExRVUZPTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFMUJRVTBzUTBGQlJTeEpRVUZKTEcxRFFVRkpMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJRemRFTEZGQlFVRXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGQkxFVkJRVUVzUjBGQlFTeE5RVUZOTEV0QlFVRXNTVUZCUVN4SlFVRk9MRTFCUVUwc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCVGl4TlFVRk5MRU5CUVVVc1RVRkJUU3hOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGSkxFZEJRVWNzUTBGQlF6dExRVU55UXp0QlFVVk5MRWxCUVVFc2EwSkJRV3RDTEVOQlEzWkNMR05CUVRaQ0xFVkJRemRDTEdOQlFUWkNMRVZCUXpkQ0xGbEJRVzlDTEVWQlEzQkNMRTFCUVhGQ0xFVkJRVUU3UVVGRmNrSXNVVUZCUVVRc1RVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1dVRkJXU3hEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETzBGQlEzQkVMRkZCUVVGRExFMUJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExGbEJRVmtzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXp0QlFVTnNSQ3hSUVVGQlFTeE5RVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRSQ3hOUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU5tTEZGQlFVRXNUVUZCVFN4bFFVRmxMRWRCUVVkRExFMUJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0QlFVVjRReXhSUVVGQkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRFJDeE5RVUZKTEVOQlFVTXNRMEZCUXp0UlFVTjBReXhOUVVGTkxFZEJRVWNzUjBGQlIwTXNUVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVVUzUWl4SlFVRkpMRWRCUVVjc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGSFpqdGhRVUZOTEVsQlFVa3NaVUZCWlN4SlFVRkpMRWRCUVVjc1JVRkJSVHM3UVVGRmFrTXNXVUZCUVN4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRFFTeE5RVUZKTEVOQlFVTXNRMEZCUXp0QlFVTnNRaXhUUVVGQk8wRkJRVTBzWVVGQlFUczdXVUZGVEVFc1RVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eEhRVUZITEVkQlFVY3NaVUZCWlN4RFFVRkRMRU5CUVVNN1FVRkRNME1zV1VGQlFTeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRRU3hOUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU5zUWl4VFFVRkJPMEZCUlVRc1VVRkJRU3hOUVVGTkxFMUJRVTBzUjBGQlJ5eFpRVUZaTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVNeFF5eE5RVUZOTEZGQlFWRXNSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzVFVGQlRTeERRVUZETzFGQlF6RkRMRTFCUVUwc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEJRVU51UWl4UlFVRkJMRTlCUVU4c1VVRkJVU3hEUVVGRE8wdEJRMnBDTzBGQlEwWTdPMEZET1VSTExFMUJRVThzWjBOQlFXbERMRk5CUVZFc01FSkJRVEJDTEVOQlFVRTdRVUZET1VVc1NVRkJRU3hKUVVGWExFbEJRVWtzUjBGQlFUdEJRVU5pTEZGQlFVRXNUMEZCVHl4UlFVRlJMRU5CUVVNN1MwRkRha0k3UVVGWlJDeEpRVUZCTEZkQlFVRXNRMEZCYlVJc1RVRkJiMFFzUlVGQlFUczdRVUZEY2tVc1VVRkJRU3hMUVVGTExFVkJRVVVzUTBGQlF6dFJRVVZTTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzVFVGQlRTeExRVUZPTEVsQlFVRXNTVUZCUVN4TlFVRk5MRXRCUVU0c1MwRkJRU3hEUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNUVUZCVFN4RFFVRkZMRTFCUVUwc2JVTkJRVWtzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEYWtVc1VVRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVRXNSVUZCUVN4SFFVRkJMRTFCUVUwc1MwRkJRU3hKUVVGQkxFbEJRVTRzVFVGQlRTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGT0xFMUJRVTBzUTBGQlJTeE5RVUZOTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVkQlFVa3NSMEZCUnl4RFFVRkRPMHRCUTNKRE8wRkJSVTBzU1VGQlFTeHJRa0ZCYTBJc1EwRkRka0lzWTBGQk5rSXNSVUZETjBJc1kwRkJOa0lzUlVGRE4wSXNXVUZCYjBJc1JVRkRjRUlzVFVGQmNVSXNSVUZCUVR0QlFVVnlRaXhSUVVGQkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExGbEJRVmtzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXp0UlFVTjBSQ3hOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRE8wRkJRM0JETEZGQlFVRXNUVUZCVFN4TlFVRk5MRWRCUVVjc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZETVVNc1RVRkJUU3hSUVVGUkxFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlN4SFFVRkhMRTFCUVUwc1EwRkJRenRSUVVNeFF5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1FVRkRia0lzVVVGQlFTeFBRVUZQTEZGQlFWRXNRMEZCUXp0TFFVTnFRanRCUVVOR096dEJRMnhEUkN4TlFVRk5SQ3hOUVVGSkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkZjRUlzVFVGQlFTeHJRMEZCYlVNc1UwRkJVU3hMUVVGTExFTkJRVU1zWTBGQll5eERRVUZCTzBGQlZURkZMRWxCUVVFc1YwRkJRU3hEUVVGdFFpeExRVUYzUXl4RlFVRkJPMEZCUTNwRUxGRkJRVUVzUzBGQlN5eEZRVUZGTEVOQlFVTTdVVUZXU0N4SlFVRlZMRU5CUVVFc1ZVRkJRU3hIUVVGSExFZEJRVWNzUTBGQlF6dFJRVXRvUWl4SlFVRmpMRU5CUVVFc1kwRkJRU3hIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU5XTEZGQlFVRXNTVUZCUVN4RFFVRkJMR05CUVdNc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnlReXhSUVVGQkxFbEJRVUVzUTBGQlFTeFpRVUZaTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGTGJFUXNVVUZCUVN4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF6dEJRVVZ3UWl4UlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNCRkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNWVUZCVlN4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVVUzUXl4UlFVRkJMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1YwRkJWeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNKRkxGRkJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03VVVGRkwwSXNTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRE8xRkJRMjVDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRMUVVObU8wbEJSVTBzVFVGQlRTeEhRVUZCTzFGQlExZ3NTVUZCU1N4dlFrRkJiMElzUjBGQlJ5eExRVUZMTEVOQlFVTTdVVUZGYWtNc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF6dEJRVU53UkN4UlFVRkJMRWxCUVVrc1NVRkJTU3hEUVVGRExHTkJRV01zUzBGQlN5eE5RVUZOTEVWQlFVVTdRVUZEYkVNc1dVRkJRU3hKUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEUxQlFVMHNRMEZCUXp0WlFVTTNRaXh2UWtGQmIwSXNSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkROMElzVTBGQlFUdEJRVVZFTEZGQlFVRXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVU3V1VGRGJrUXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRaUVVNM1F5eHZRa0ZCYjBJc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRE4wSXNVMEZCUVR0QlFVVkVMRkZCUVVFc1RVRkJUU3hKUVVGSkxFZEJRVWRCTEUxQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzFGQlEzWkZMRWxCUVVrc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVWQlFVVTdRVUZEY2tRc1dVRkJRU3hKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVNM1FpeHZRa0ZCYjBJc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRE4wSXNVMEZCUVR0QlFVVkVMRkZCUVVFc1NVRkJTU3h2UWtGQmIwSXNSVUZCUlR0WlFVTjRRaXhKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTEVOQlFVTTdRVUZEZGtJc1UwRkJRVHRMUVVOR08wbEJSVThzWTBGQll5eEhRVUZCTzBGQlEzQkNMRkZCUVVGQkxFMUJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNN1VVRkRkRVFzVFVGQlRTeERRVUZETEVkQlFVZEJMRTFCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRPMUZCUlRsRExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETlVJc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU03V1VGRkwwSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEZWtRc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMmhGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTTVSQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGFrVXNVMEZCUVR0UlFVVkVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE0wSXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeEpRVUZKTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkRMMElzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE5VUXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETlVRc1UwRkJRVHRCUVVWRUxGRkJRVUVzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRMEVzVFVGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRFFTeE5RVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhRU3hOUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZIUVN4TlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSFFTeE5RVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNdlJTeFJRVUZCTEUxQlFVMHNSMEZCUnl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlEwRXNUVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSVUVzVFVGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlhoRExGRkJRVUVzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVOd1FpeFJRVUZCTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRGJFSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVWQlFVVXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3hKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTTdVVUZETVVVc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlJYQkdMRkZCUVVFc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRPMHRCUTJ4RE8wbEJSVThzVjBGQlZ5eEhRVUZCTzFGQlEycENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE0wSXNUVUZCVFN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXp0QlFVVjRRaXhaUVVGQkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNCRExGbEJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEY0VRc1UwRkJRVHRSUVVWRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETTBJc1RVRkJUU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRCUVVWNFFpeFpRVUZCTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNCRUxGbEJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEZGtRc1UwRkJRVHRCUVVWRUxGRkJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRE8wdEJRM0JETzBGQlEwWTdPMEZEYmtkWkxFMUJRVUVzYVVOQlFXdERMRk5CUVZFc1MwRkJTeXhEUVVGRExHTkJRV01zUTBGQlFUdEJRVk42UlN4SlFVRkJMRmRCUVVFc1EwRkJiVUlzUzBGQmRVTXNSVUZCUVR0QlFVTjRSQ3hSUVVGQkxFdEJRVXNzUlVGQlJTeERRVUZETzFGQlZFZ3NTVUZCVlN4RFFVRkJMRlZCUVVFc1IwRkJSeXhIUVVGSExFTkJRVU03VVVGTGFFSXNTVUZCWXl4RFFVRkJMR05CUVVFc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRFZpeFJRVUZCTEVsQlFVRXNRMEZCUVN4alFVRmpMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZMY0VRc1VVRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXp0UlFVVndRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMR1ZCUVdVc1EwRkJReXhKUVVGSkxGbEJRVmtzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6TkZMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVVM1F5eFJRVUZCTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zWlVGQlpTeERRVUZETEVsQlFVa3NWMEZCVnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjRSU3hSUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJSUzlDTEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJRenRSUVVOdVFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1MwRkRaanRKUVVWTkxFMUJRVTBzUjBGQlFUdFJRVU5ZTEVsQlFVa3NiMEpCUVc5Q0xFZEJRVWNzUzBGQlN5eERRVUZETzFGQlJXcERMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU03UVVGRGNFUXNVVUZCUVN4SlFVRkpMRWxCUVVrc1EwRkJReXhqUVVGakxFdEJRVXNzVFVGQlRTeEZRVUZGTzBGQlEyeERMRmxCUVVFc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eE5RVUZOTEVOQlFVTTdXVUZETjBJc2IwSkJRVzlDTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUXpkQ0xGTkJRVUU3UVVGRlJDeFJRVUZCTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRk8xbEJRMjVFTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkROME1zYjBKQlFXOUNMRWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJRemRDTEZOQlFVRTdRVUZGUkN4UlFVRkJMRWxCUVVrc2IwSkJRVzlDTEVWQlFVVTdXVUZEZUVJc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeERRVUZETzBGQlEzWkNMRk5CUVVFN1MwRkRSanRKUVVWUExHTkJRV01zUjBGQlFUdFJRVU53UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRek5DTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRPMWxCUlM5Q0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRka1FzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE5VUXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETjBRc1UwRkJRVHRCUVVWRUxGRkJRVUVzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVWQlFVVXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRE8xRkJRekZGTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVWd1JpeFJRVUZCTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF6dExRVU5zUXp0SlFVVlBMRmRCUVZjc1IwRkJRVHRSUVVOcVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUXpOQ0xFMUJRVTBzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU03UVVGRmVFSXNXVUZCUVN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU53UXl4WlFVRkJMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRMjVFTEZsQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRja1FzVTBGQlFUdEJRVVZFTEZGQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETzB0QlEzQkRPMEZCUTBZN08wRkRha1ZFTEUxQlFVMUJMRTFCUVVrc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVVndRaXhOUVVGQkxESkNRVUUwUWl4VFFVRlJMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVUU3UVVGTE1VUXNTVUZCUVN4WFFVRkJMRU5CUVcxQ0xGRkJRU3RDTEVWQlFVRTdRVUZEYUVRc1VVRkJRU3hMUVVGTExFVkJRVVVzUTBGQlF6dEJRVU5TTEZGQlFVRXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVVTVRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NVVUZCVVN4RFFVRkRPMEZCUlhwQ0xGRkJRVUVzU1VGQlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1dVRkJXU3huUTBGQlowTXNSVUZCUlR0QlFVTnVSU3haUVVGQkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVkQlFVY3NTVUZCU1N4cFEwRkJhVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRemRGTEZOQlFVRTdRVUZCVFN4aFFVRkJMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEZsQlFWa3NhVU5CUVdsRExFVkJRVVU3UVVGRE0wVXNXVUZCUVN4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzYTBOQlFXdERMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTTVSU3hUUVVGQk8wRkJRVTBzWVVGQlFUdEJRVU5NTEZsQlFVRXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXh0UlVGQmJVVXNRMEZCUXl4RFFVRkRPMEZCUTNSR0xGTkJRVUU3UVVGRlJDeFJRVUZCTEUxQlFVMHNVVUZCVVN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVRkRPMEZCUXpORExGbEJRVUVzUzBGQlN5eEZRVUZGTEZGQlFWRTdRVUZEWml4WlFVRkJMRk5CUVZNc1JVRkJSU3hMUVVGTE8wRkJRMmhDTEZsQlFVRXNWVUZCVlN4RlFVRkZMRXRCUVVzN1FVRkRiRUlzVTBGQlFTeERRVUZETEVOQlFVTTdRVUZGU0N4UlFVRkJMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdRVUZET1VRc1VVRkJRU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOMFFqdEpRVVZOTEU5QlFVOHNSMEZCUVR0QlFVTmFMRkZCUVVFc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0TFFVTXhRanRCUVVWTkxFbEJRVUVzYVVKQlFXbENMRU5CUVVNc1MwRkJZeXhGUVVGQk8xRkJRM0pETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJSVGRETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNN1FVRkZOVU1zVVVGQlFTeE5RVUZOTEcxQ1FVRnRRaXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRPMEZCUTJwRUxGRkJRVUVzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4VlFVRlZMRWRCUVVkQkxFMUJRVWs3UVVGRE4wSXNZVUZCUVN4SFFVRkhMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRNMFVzVFVGQlRTeEZRVUZGTEVOQlFVTTdRVUZGV2l4UlFVRkJMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdRVUZGZUVJc1VVRkJRU3hMUVVGTExFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UzBGRGFFTTdRVUZEUmpzN1FVTjBSRmtzVFVGQlFTeDNRa0ZCZVVJc1UwRkJVU3hMUVVGTExFTkJRVU1zWTBGQll5eERRVUZCTzBGQlUyaEZMRWxCUVVFc1YwRkJRU3hEUVVGdFFpeFZRVUU0UWl4RlFVRkJPMEZCUXk5RExGRkJRVUVzUzBGQlN5eEZRVUZGTEVOQlFVTTdVVUZVU0N4SlFVRlZMRU5CUVVFc1ZVRkJRU3hIUVVGSExFZEJRVWNzUTBGQlF6dFJRVXRvUWl4SlFVRmpMRU5CUVVFc1kwRkJRU3hIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU5XTEZGQlFVRXNTVUZCUVN4RFFVRkJMRmxCUVZrc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVdHNSQ3hSUVVGQkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NWVUZCVlN4RFFVRkRPMEZCUlRsQ0xGRkJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU1zU1VGQlNTeFpRVUZaTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGNFVXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhWUVVGVkxFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUlRkRExGRkJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU1zU1VGQlNTeFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGNrVXNVVUZCUVN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0UlFVVXZRaXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTTdVVUZEYmtJc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzB0QlEyWTdTVUZGVFN4TlFVRk5MRWRCUVVFN1VVRkRXQ3hKUVVGSkxHOUNRVUZ2UWl4SFFVRkhMRXRCUVVzc1EwRkJRenRCUVVWcVF5eFJRVUZCTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRE8wRkJRM0pGTEZGQlFVRXNTVUZCU1N4SlFVRkpMRU5CUVVNc1kwRkJZeXhMUVVGTExFMUJRVTBzUlVGQlJUdEJRVU5zUXl4WlFVRkJMRWxCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzVFVGQlRTeERRVUZETzFsQlF6ZENMRzlDUVVGdlFpeEhRVUZITEVsQlFVa3NRMEZCUXp0QlFVTTNRaXhUUVVGQk8wRkJSVVFzVVVGQlFTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4NVFrRkJlVUlzUTBGQlF5eEZRVUZGTzFsQlEzcEZMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc2VVSkJRWGxDTEVOQlFVTXNRMEZCUXp0WlFVTnVSU3h2UWtGQmIwSXNSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkROMElzVTBGQlFUdEJRVVZFTEZGQlFVRXNTVUZCU1N4dlFrRkJiMElzUlVGQlJUdFpRVU40UWl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxFTkJRVU03UVVGRGRrSXNVMEZCUVR0TFFVTkdPMGxCUlU4c1kwRkJZeXhIUVVGQk8xRkJRM0JDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRNMElzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZGTDBJc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTjJSQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNMVJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU0zUkN4VFFVRkJPMEZCUlVRc1VVRkJRU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRVZCUVVVc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNN1VVRkRNVVVzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlRsRkxGRkJRVUVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRiRU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRmVFWXNVVUZCUVN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdTMEZEYkVNN1NVRkZUeXhYUVVGWExFZEJRVUU3VVVGRGFrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVNelFpeE5RVUZOTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETzBGQlJYaENMRmxCUVVFc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEY0VNc1dVRkJRU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU51UkN4WlFVRkJMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM0pFTEZOQlFVRTdVVUZEUkN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJSVzVETEZGQlFVRXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETzB0QlEzQkRPMEZCUTBZN08wRkRlRVZFTEUxQlFVMUJMRTFCUVVrc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVVndRaXhOUVVGQkxIZENRVUY1UWl4VFFVRlJMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVUU3UVVGTGRrUXNTVUZCUVN4WFFVRkJMRU5CUVcxQ0xGVkJRVGhDTEVWQlFVRTdRVUZETDBNc1VVRkJRU3hMUVVGTExFVkJRVVVzUTBGQlF6dEJRVU5TTEZGQlFVRXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVVTVRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NWVUZCVlN4RFFVRkRPMUZCUlRkQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVkQlFVY3NTVUZCU1N4M1FrRkJkMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1FVRkZMMFFzVVVGQlFTeE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNRMEZCUXp0QlFVTXpReXhaUVVGQkxFdEJRVXNzUlVGQlJTeFJRVUZSTzBGQlEyWXNXVUZCUVN4VFFVRlRMRVZCUVVVc1MwRkJTenRCUVVOb1FpeFpRVUZCTEZWQlFWVXNSVUZCUlN4TFFVRkxPMEZCUTJ4Q0xGTkJRVUVzUTBGQlF5eERRVUZETzBGQlJVZ3NVVUZCUVN4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZETzBGQlF6bEVMRkZCUVVFc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRkRUk3U1VGRlRTeFBRVUZQTEVkQlFVRTdRVUZEV2l4UlFVRkJMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdTMEZETVVJN1FVRkZUU3hKUVVGQkxHbENRVUZwUWl4RFFVRkRMRXRCUVdNc1JVRkJRVHRSUVVOeVF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRmNFUXNVVUZCUVN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dEJRVVZ1UkN4UlFVRkJMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU03UVVGRGFrUXNVVUZCUVN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExGVkJRVlVzUjBGQlIwRXNUVUZCU1R0QlFVTTNRaXhoUVVGQkxFZEJRVWNzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU16UlN4TlFVRk5MRVZCUVVVc1EwRkJRenRCUVVWYUxGRkJRVUVzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRCUVVWNFFpeFJRVUZCTEV0QlFVc3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0TFFVTm9RenRCUVVOR096dEJRelZEUkRzN1FVRkZSenRCUVVOVkxFMUJRVUVzY1VKQlFYTkNMRk5CUVZFc1MwRkJTeXhEUVVGRExGRkJRVkVzUTBGQlFUdEJRVTEyUkN4SlFVRkJMRmRCUVVFc1EwRkJiVUlzUzBGQmFVTXNSVUZCUVR0QlFVTnNSQ3hSUVVGQkxFdEJRVXNzUlVGQlJTeERRVUZETzBGQlJWSXNVVUZCUVN4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF6dExRVU53UWp0QlFVTkdPenRCUTJaRUxFMUJRVTFGTEU5QlFVc3NSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVVZzUXpzN096czdRVUZMUnp0QlFVTkhMRk5CUVZVc1owSkJRV2RDTEVOQlFUQkNMRTFCUVZNc1JVRkJRVHRKUVVOcVJTeEpRVUZMTEUxQlFXTXNRMEZCUXl4TlFVRk5MRVZCUVVVN1VVRkRNVUlzVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMEZCUTJwQ0xFdEJRVUU3UVVGQlRTeFRRVUZCTzFGQlEwb3NUVUZCWXl4RFFVRkRMRlZCUVZVc1EwRkJRMEVzVDBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMmhFTEV0QlFVRTdRVUZGUkN4SlFVRkJMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDT3p0TlEyWmhMRzFDUVVGdFFpeERRVUZCTzBGQmMwSTVRanM3T3p0QlFVbEhPMEZCUTBnc1NVRkJRU3hKUVVGWExFOUJRVThzUjBGQlFUdFJRVU5vUWl4SlFVRkpMRWxCUVVrc1EwRkJReXh2UWtGQmIwSXNSVUZCUlR0WlFVTTNRaXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRGNrTXNXVUZCUVN4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNN1FVRkRja01zV1VGQlFTeEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFZEJRVWNzUzBGQlN5eERRVUZETzBGQlEyNURMRk5CUVVFN1VVRkZSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTTdTMEZETTBJN1FVRkZSQ3hKUVVGQkxGZEJRVUVzUTBGQmJVSXNUVUZCY1VJc1JVRkJRVHRCUVM5Q2VFTTdPMEZCUlVjN1FVRkRZeXhSUVVGQkxFbEJRVUVzUTBGQlFTeGhRVUZoTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRmNrUTdPenRCUVVkSE8xRkJRMHNzU1VGQmIwSXNRMEZCUVN4dlFrRkJRU3hIUVVGSExFbEJRVWtzUTBGQlF6dEJRWFZDYkVNc1VVRkJRU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXp0QlFVVnlRaXhSUVVGQkxFMUJRVTBzVDBGQlR5eEhRVUV5UWp0WlFVTjBReXhIUVVGSExFVkJRVVVzUTBGQlF5eEhRVUZITEVWQlFVVXNTVUZCVXl4RlFVRkZMRTFCUVUwc1MwRkJTVHRCUVVNNVFpeG5Ra0ZCUVN4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTJwRExHZENRVUZCTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhOUVVGTkxFTkJRVU03UVVGRmJrSXNaMEpCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03WVVGRFlqdFRRVU5HTEVOQlFVTTdRVUZGUml4UlFVRkJMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSMEZCUnl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRE8wRkJRM3BETEZGQlFVRXNUVUZCVFN4RFFVRkRMRkZCUVZFc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wdEJRM1pFTzBsQlJVMHNUVUZCVFN4SFFVRkJPMUZCUTFnc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETzB0QlF5OURPMEZCUTBZN08wRkRja1JFTzBGQlEwRTdRVUZEUVR0QlFVVkJMRTFCUVUwc1owSkJRV2RDTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRk4wTTdRVUZEUVN4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnFReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVOcVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVVZxUXpzN1FVRkZSenRCUVVOSUxFMUJRVTBzYlVKQlFXMUNMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZGYUVRN08wRkJSVWM3UVVGRFNDeE5RVUZOTEc5Q1FVRnZRaXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMEZCUldwRU96dEJRVVZITzBGQlEwZ3NUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZGZEVNc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1FVRkRkRU1zVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRGJFTXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZGYkVNN096dEJRVWRITzAxQlExVXNhMEpCUVd0Q0xFTkJRVUU3UVVGclJEZENMRWxCUVVFc1NVRkJWeXhOUVVGTkxFZEJRVUU3VVVGRFppeFBRVUZQTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNN1MwRkRja0k3U1VGRFJDeEpRVUZYTEUxQlFVMHNRMEZCUXl4TlFVRTJRaXhGUVVGQk96czdVVUZGTjBNc1NVRkJTU3hEUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZKTEVOQlFVTXNUMEZCVHl3d1EwRkJSU3hSUVVGUkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVN1dVRkRNME1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc2FVSkJRWGxETEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1FVRkRNVVVzV1VGQlFTeFBRVUZQTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExHbENRVUZwUWl4RFFVRkRPMEZCUTJoRUxGTkJRVUU3TzBGQlIwUXNVVUZCUVN4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFMUJRVTBzUTBGQlF6czdVVUZIZEVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFsQlEyaENMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4cFFrRkJhVUlzUlVGQlJUdEJRVU0xUXl4blFrRkJRU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4cFFrRkJhVUlzUjBGQlJ5eEpRVUZKTEcxQ1FVRnRRaXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNN1FVRkROMFlzWVVGQlFUdEJRVU5HTEZOQlFVRTdTMEZEUmp0QlFXZENSQ3hKUVVGQkxFbEJRVmNzZVVKQlFYbENMRWRCUVVFN1VVRkRiRU1zVDBGQlR5eEpRVUZKTEVOQlFVTXNNRUpCUVRCQ0xFTkJRVU03UzBGRGVFTTdRVUZGUkRzN08wRkJSMGM3UVVGRFNDeEpRVUZCTEVsQlFWa3NhMEpCUVd0Q0xFZEJRVUU3UVVGRE5VSXNVVUZCUVN4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGZEJRVmNzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJRenRMUVVNelJUdEJRVVZFT3pzN096czdPMEZCVDBjN1NVRkRTQ3hYUVVORkxFTkJRVUVzU1VGQmIwSXNSVUZEY0VJc1MwRkJORUlzUlVGRE5VSXNWMEZCWjBRc1JVRkJSU3hGUVVOc1JDeHBRa0ZCSzBNc1JVRkJSU3hGUVVGQk96dEJRWFpHYmtRN08wRkJSVWM3UVVGRFN5eFJRVUZCTEVsQlFVRXNRMEZCUVN4WlFVRlpMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZGTTBNN08wRkJSVWM3UVVGRFN5eFJRVUZCTEVsQlFVRXNRMEZCUVN4VFFVRlRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZGZUVNN08wRkJSVWM3UVVGRFN5eFJRVUZCTEVsQlFVRXNRMEZCUVN4VFFVRlRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZGZUVNN096czdPMEZCUzBjN1VVRkRTeXhKUVVGeFFpeERRVUZCTEhGQ1FVRkJMRWRCUVVjc1IwRkJSeXhEUVVGRE8wRkJSWEJET3pzN1FVRkhSenRSUVVOTExFbEJRVThzUTBGQlFTeFBRVUZCTEVkQlFUQkNMRWxCUVVrc1EwRkJRenRCUVhOQ09VTTdPMEZCUlVjN1FVRkRTeXhSUVVGQkxFbEJRVUVzUTBGQlFTeHRRa0ZCYlVJc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVVnNSRHM3UVVGRlJ6dEJRVU5MTEZGQlFVRXNTVUZCUVN4RFFVRkJMSEZDUVVGeFFpeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8wRkJSWFpFT3p0QlFVVkhPMEZCUTBzc1VVRkJRU3hKUVVGQkxFTkJRVUVzTUVKQlFUQkNMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUV5UW5aRUxGRkJRVUVzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRha0lzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZGYmtNc1VVRkJRU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0UlFVVnVRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITzBGQlEyUXNXVUZCUVN4VFFVRlRMRVZCUVVVc1EwRkJRU3hGUVVGQkxFZEJRVUVzVVVGQlVTeERRVUZETEZOQlFWTXNiVU5CUVVrc1IwRkJSenRCUVVOd1F5eFpRVUZCTEZOQlFWTXNSVUZCUlN4RFFVRkJMRVZCUVVFc1IwRkJRU3hSUVVGUkxFTkJRVU1zVTBGQlV5eHRRMEZCU1N4SFFVRkhPMEZCUTNCRExGbEJRVUVzV1VGQldTeEZRVUZGTEVOQlFVRXNSVUZCUVN4SFFVRkJMRkZCUVZFc1EwRkJReXhaUVVGWkxHMURRVUZKTEVkQlFVYzdXVUZETVVNc1ZVRkJWU3hGUVVGRkxFMUJRVUVzUTBGQlFTeEZRVUZCTEVkQlFVRXNVVUZCVVN4RFFVRkRMRlZCUVZVc1RVRkJRU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlJTeExRVUZMTEVWQlFVVXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNSMEZCU1N4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJRenRCUVVNM1JTeFpRVUZCTEZOQlFWTXNSVUZCUlN4RFFVRkJMRVZCUVVFc1IwRkJRU3hSUVVGUkxFTkJRVU1zVTBGQlV5eHRRMEZCU1N4SFFVRkhPMU5CUTNKRExFTkJRVU03UVVGRlJpeFJRVUZCTEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1kwRkJZeXhEUVVGRE8wdEJRM1JETzBGQlJVUTdPenRCUVVkSE8wbEJRMGtzV1VGQldTeEhRVUZCT3p0UlFVVnFRaXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRhRVFzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE96dFJRVWQwUkN4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVU3V1VGRFpDeEpRVUZKTEVOQlFVTXNNRUpCUVRCQ0xFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03UVVGRE0wUXNVMEZCUVR0QlFVRk5MR0ZCUVVFN096dEJRVWRNTEZsQlFVRXNTVUZCU1N4RFFVRkRMREJDUVVFd1FpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU16Uml4VFFVRkJPenRSUVVkRUxFMUJRVTBzYlVKQlFXMUNMRWRCUVVjc1NVRkJTU3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJRMmhGTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXd3UWtGQk1FSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1dVRkJXU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNN1VVRkRiRWdzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZET3p0QlFVZDJReXhSUVVGQkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXd3UWtGQk1FSXNRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8wdEJRMnhGTzBGQlJVUTdPenRCUVVkSE8wbEJRMGtzUzBGQlN5eEhRVUZCTzFGQlExWXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eERRVUZET3p0QlFVZDBSQ3hSUVVGQkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNN1FVRkRla0lzVVVGQlFTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6czdVVUZIYkVZc1RVRkJUU3h0UWtGQmJVSXNSMEZCUnl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRhRVVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMREJDUVVFd1FpeERRVUZETEVOQlFVTXNRMEZCUXl4WlFVRlpMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXp0UlFVTnNTQ3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03UzBGRGVFTTdRVUZGUkRzN096czdRVUZMUnp0QlFVTkpMRWxCUVVFc1RVRkJUU3hEUVVGRExFdEJRV0VzUlVGQlFUdFJRVU42UWl4SlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRE8xbEJRVVVzVDBGQlR6czdVVUZIZGtJc1NVRkJTU3hEUVVGRExIbENRVUY1UWl4RlFVRkZMRU5CUVVNN08xRkJSMnBETEcxQ1FVRnRRaXhEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdVVUZEYWtVc1NVRkJTU3h0UWtGQmJVSXNSMEZCUnl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRPVVFzYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNc1dVRkJXU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNN1VVRkRha1lzVFVGQlRTeHBRa0ZCYVVJc1IwRkJSeXhOUVVGTkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXpzN1FVRkhOVVVzVVVGQlFTeE5RVUZOTEhWQ1FVRjFRaXhIUVVGSExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEVOQlFVTTdPMUZCUjJ4SExFMUJRVTBzYlVKQlFXMUNMRWRCUVVjc1NVRkJTVHRCUVVNM1FpeGhRVUZCTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRE8wRkJRM0JDTEdGQlFVRXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNRMEZCUXp0aFFVTjBReXhaUVVGWkxFTkJRVU1zZFVKQlFYVkNMRU5CUVVNN1lVRkRja01zUjBGQlJ5eERRVUZETEc5Q1FVRnZRaXhEUVVGRE8wRkJRM3BDTEdGQlFVRXNVMEZCVXl4RlFVRkZMRU5CUVVNN08xRkJSMllzVFVGQlRTeHJRa0ZCYTBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zWlVGQlpTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdVVUZGT1Vjc1RVRkJUU3h0UWtGQmJVSXNSMEZCUnl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN08xRkJSMmhGTEZOQlFWTTdRVUZEVGl4aFFVRkJMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETzBGQlEzWkNMR0ZCUVVFc1IwRkJSeXhEUVVOR0xFbEJRVWs3UVVGRFJDeGhRVUZCTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRE8wRkJRM1pDTEdGQlFVRXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU03WVVGRGJrSXNZMEZCWXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVTXZRenRoUVVOQkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVTBGQlV5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRPMkZCUTI1R0xFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zV1VGQldTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTNKR0xHRkJRVUVzV1VGQldTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExFTkJRVU03TzFGQlIzSkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVOQlFVTTdPMEZCUjI1SUxGRkJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenM3UVVGSE0wSXNVVUZCUVN4dFFrRkJiVUlzUjBGQlJ5eEpRVUZKTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZGTVVRc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8wRkJRM1pETEZGQlFVRXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhaUVVGWkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1EwRkJReXhEUVVGRE96czdVVUZKTDBVc1RVRkJUU3d3UWtGQk1FSXNSMEZCUnl4blFrRkJaMElzUTBGRGFrUXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExFTkJRM1pGTEVOQlFVTTdVVUZEUml4TlFVRk5MR0ZCUVdFc1IwRkJSeXhOUVVGTkxFTkJRVU1zYTBKQlFXdENMRU5CUXpkRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVWQlEyUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eFpRVUZaTEVOQlFVTXNNRUpCUVRCQ0xFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZETVVVc1EwRkJRenRCUVVWR0xGRkJRVUVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXpzN1FVRkhPVVVzVVVGQlFTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRE8wRkJRM3BDTEZGQlFVRXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RlFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTMEZEYmtZN1FVRkZSRHM3T3p0QlFVbEhPMEZCUTBzc1NVRkJRU3hWUVVGVkxFTkJRVU1zU1VGQmJVSXNSVUZCUVR0UlFVTndReXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMR0ZCUVdFc1MwRkJTVHRaUVVNMVF5eGhRVUZoTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExGRkJRVkVzUzBGQlNUdG5Ra0ZETTBNc1RVRkJUU3hKUVVGSkxFZEJRVWNzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eFJRVUZSTEVOQlFVTXNWMEZCVnl4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRk1VY3NTVUZCU1N4SlFVRkpMRWRCUVVjc1IwRkJSeXhGUVVGRk96dHZRa0ZGWkN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE96dHZRa0ZIY2tNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXp0QlFVTXZSeXhwUWtGQlFUdEJRVU5JTEdGQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTB3c1UwRkJReXhEUVVGRExFTkJRVU03UzBGRFNqdEJRVVZFT3pzN1FVRkhSenRKUVVOTExIbENRVUY1UWl4SFFVRkJPMUZCUXk5Q0xFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMUZCUld4RUxFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlR0WlFVTmtMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzBGQlEzQkVMRk5CUVVFN1FVRkJUU3hoUVVGQk8wRkJRMHdzV1VGQlFTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXd3UWtGQk1FSXNRMEZCUXl4RFFVRkRPMWxCUXpORExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dEJRVU14UXl4VFFVRkJPMEZCUlVRc1VVRkJRU3hKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRMUVVOMFJEdEJRVVZFT3pzN1FVRkhSenRCUVVOTExFbEJRVUVzZFVKQlFYVkNMRU5CUVVNc1RVRkJjVUlzUlVGQlFUdFJRVU51UkN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVU3V1VGRGFFSXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMEZCUTNaRExGTkJRVUU3UVVGQlRTeGhRVUZCTzFsQlEwd3NUVUZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8wRkJRMjVDTEZOQlFVRTdRVUZGUkN4UlFVRkJMRTlCUVU4c1RVRkJUU3hEUVVGRE8wdEJRMlk3UVVGRlJEczdPMEZCUjBjN1FVRkRTeXhKUVVGQkxIVkNRVUYxUWl4RFFVRkRMRTFCUVhGQ0xFVkJRVUU3VVVGRGJrUXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRk8wRkJRMmhDTEZsQlFVRXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJSU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4cFFrRkJlVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTjJSaXhUUVVGQk8wRkJRVTBzWVVGQlFUdFpRVU5NTEUxQlFVMHNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRCUVVOdVFpeFRRVUZCTzBGQlJVUXNVVUZCUVN4UFFVRlBMRTFCUVUwc1EwRkJRenRMUVVObU8wRkJRMFk3TzBGRGFGZEVPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGdlIwRTdRVUZEVHl4VFFVRlRMRk5CUVZNc1EwRkJReXhQUVVGUExFVkJRVVVzVlVGQlZTeEZRVUZGTEVOQlFVTXNSVUZCUlN4VFFVRlRMRVZCUVVVN1FVRkROMFFzU1VGQlNTeFRRVUZUTEV0QlFVc3NRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSU3hQUVVGUExFdEJRVXNzV1VGQldTeERRVUZETEVkQlFVY3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExGVkJRVlVzVDBGQlR5eEZRVUZGTEVWQlFVVXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVTdRVUZEYUVnc1NVRkJTU3hQUVVGUExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1JVRkJSU3hWUVVGVkxFOUJRVThzUlVGQlJTeE5RVUZOTEVWQlFVVTdRVUZETDBRc1VVRkJVU3hUUVVGVExGTkJRVk1zUTBGQlF5eExRVUZMTEVWQlFVVXNSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlEyNUhMRkZCUVZFc1UwRkJVeXhSUVVGUkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlEzUkhMRkZCUVZFc1UwRkJVeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNUVUZCVFN4RFFVRkRMRWxCUVVrc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF5eEZRVUZGTzBGQlEzUklMRkZCUVZFc1NVRkJTU3hEUVVGRExFTkJRVU1zVTBGQlV5eEhRVUZITEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRkxGVkJRVlVzU1VGQlNTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRemxGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTFBN08wRkRlRWhuUWl4VFFVRkJMSGxDUVVGNVFpeERRVUZETEUxQlFYTkNMRVZCUVVVc1VVRkJNRU1zUlVGQlFUdEpRVU14Unl4TlFVRk5MRk5CUVZNc1IwRkJjVUlzUlVGQlJTeERRVUZETzBsQlJYWkRMRWxCUVVrc1NVRkJTU3hIUVVFd1FpeE5RVUZOTEVOQlFVTTdTVUZEZWtNc1QwRkJUeXhKUVVGSkxFdEJRVXNzU1VGQlNTeEZRVUZGTzBGQlEzQkNMRkZCUVVFc1UwRkJVeXhEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTjRRaXhSUVVGQkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMEZCUTNCQ0xFdEJRVUU3UVVGRlJDeEpRVUZCTEZOQlFWTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhSUVVGUkxFdEJRVWs3VVVGRE4wSXNVVUZCVVN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM0pDTEV0QlFVTXNRMEZCUXl4RFFVRkRPMEZCUTB3N08wRkRaRUU3T3pzN096dEJRVTFITzBGQlEyRXNVMEZCUVN4cFEwRkJhVU1zUTBGREwwTXNUVUZCYzBJc1JVRkRkRUlzVVVGQk5rTXNSVUZCUVR0SlFVVTNReXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRXRCUVVzc1MwRkJTVHRCUVVOb1F5eFJRVUZCTEUxQlFVMHNUVUZCVFN4SFFVRkhMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU12UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRMWdzV1VGQlFTeHBRMEZCYVVNc1EwRkJReXhMUVVGTExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdRVUZEY0VRc1UwRkJRVHRCUVVOSUxFdEJRVU1zUTBGQlF5eERRVUZETzBGQlEwdzdPMDFEVm1Fc2IwSkJRVzlDTEVOQlFVRTdRVUZCYWtNc1NVRkJRU3hYUVVGQkxFZEJRVUU3UVVGRFZTeFJRVUZCTEVsQlFVRXNRMEZCUVN4UFFVRlBMRWRCUVVjc1NVRkJTU3hIUVVGSExFVkJRWE5DTEVOQlFVTTdRVUZyUTNoRExGRkJRVUVzU1VGQlFTeERRVUZCTEhGQ1FVRnhRaXhIUVVGSExFbEJRVWtzUjBGQlJ5eEZRVUV5UXl4RFFVRkRPMHRCY1V0d1JqdEJRWFJOUXl4SlFVRkJMRWxCUVZjc1RVRkJUU3hIUVVGQk8xRkJRMllzVDBGQlR5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRPMHRCUTNKQ08wRkJSVVE3TzBGQlJVYzdRVUZEU0N4SlFVRkJMRWxCUVZjc1YwRkJWeXhIUVVGQk8wRkJRM0JDTEZGQlFVRXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXh6UlVGQmMwVXNRMEZCUXl4RFFVRkRPMUZCUlhKR0xFOUJRVThzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0TFFVTnlRanRCUVVWRUxFbEJRVUVzU1VGQlZ5eGpRVUZqTEVkQlFVRTdRVUZEZGtJc1VVRkJRU3hOUVVGTkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCT0VJc1EwRkJRenRSUVVOc1JDeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExGVkJRVlVzUzBGQlNUdFpRVU5zUXl4VlFVRlZMRU5CUVVNc1kwRkJZeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEdGQlFXRXNTMEZCU1R0QlFVTnNSQ3huUWtGQlFTeEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRE8wRkJRM3BDTEdGQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTB3c1UwRkJReXhEUVVGRExFTkJRVU03UVVGRFNDeFJRVUZCTEU5QlFVOHNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dExRVU40UWp0QlFVVkVMRWxCUVVFc1NVRkJWeXhUUVVGVExFZEJRVUU3UVVGRGJFSXNVVUZCUVN4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFZEJRVWNzUlVGQmVVSXNRMEZCUXp0UlFVTTNReXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMR0ZCUVdFc1MwRkJTVHRaUVVNMVF5eGhRVUZoTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExGRkJRVkVzUzBGQlNUdEJRVU16UXl4blFrRkJRU3hIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUTNCQ0xHRkJRVU1zUTBGQlF5eERRVUZETzBGQlEwd3NVMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRTQ3hSUVVGQkxFOUJRVThzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRMUVVONFFqdEJRVWxOTEVsQlFVRXNVVUZCVVN4RFFVRkRMRXRCUVhsQ0xFVkJRVUU3UVVGRGRrTXNVVUZCUVN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVVjRRaXhSUVVGQkxFbEJRVWtzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRek5FTEVsQlFVa3NVMEZCVXl4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOeVFpeFpRVUZCTEZOQlFWTXNSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJjMElzUTBGQlF6dFpRVU14UXl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdRVUZEZGtRc1UwRkJRVHRCUVVORUxGRkJRVUVzVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOMFFqdEJRVVZFT3p0QlFVVkhPMEZCUTBrc1NVRkJRU3hoUVVGaExFTkJRVU1zUzBGQmVVSXNSVUZCUVR0QlFVTTFReXhSUVVGQkxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNPRVZCUVRoRkxFTkJRVU1zUTBGQlF6dEJRVVUzUml4UlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdTMEZEZEVJN1FVRkZUU3hKUVVGQkxGZEJRVmNzUTBGQlF5eExRVUY1UWl4RlFVRkJPMEZCUXpGRExGRkJRVUVzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRk0wSXNVVUZCUVN4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVVXNRMEZCUXp0QlFVTTVSQ3hSUVVGQkxGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRla0k3UVVGRlJEczdRVUZGUnp0QlFVTkpMRWxCUVVFc1owSkJRV2RDTEVOQlFVTXNTMEZCZVVJc1JVRkJRVHRCUVVNdlF5eFJRVUZCTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc2IwWkJRVzlHTEVOQlFVTXNRMEZCUXp0QlFVVnVSeXhSUVVGQkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRla0k3U1VGRlRTeFpRVUZaTEVkQlFVRTdRVUZEYWtJc1VVRkJRU3hOUVVGTkxHZENRVUZuUWl4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGelFpeERRVUZETzBGQlEzWkVMRkZCUVVFc1RVRkJUU3hsUVVGbExFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFYTkNMRU5CUVVNN1FVRkRkRVFzVVVGQlFTeE5RVUZOTEdGQlFXRXNSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJhMElzUTBGQlF6dEJRVVZvUkN4UlFVRkJMRXRCUVVzc1RVRkJUU3hWUVVGVkxFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlR0WlFVTnlReXhKUVVGSkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1ZVRkJWU3hGUVVGRkxHZENRVUZuUWl4RlFVRkZMR1ZCUVdVc1JVRkJSU3hoUVVGaExFVkJRVVVzUTBGQlF5eFZRVUZWTEV0QlF5OUdMRlZCUVZVc1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGRE1VSXNRMEZCUXp0QlFVTklMRk5CUVVFN1MwRkRSanRKUVVWTkxFdEJRVXNzUjBGQlFUdEJRVU5XTEZGQlFVRXNUVUZCVFN4blFrRkJaMElzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCYzBJc1EwRkJRenRCUVVOMlJDeFJRVUZCTEUxQlFVMHNaVUZCWlN4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGelFpeERRVUZETzBGQlEzUkVMRkZCUVVFc1RVRkJUU3hoUVVGaExFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFXdENMRU5CUVVNN1FVRkZhRVFzVVVGQlFTeExRVUZMTEUxQlFVMHNWVUZCVlN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVU3V1VGRGNrTXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEZWQlFWVXNSVUZCUlN4blFrRkJaMElzUlVGQlJTeGxRVUZsTEVWQlFVVXNZVUZCWVN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hMUVVNdlJpeFZRVUZWTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUTI1Q0xFTkJRVU03UVVGRFNDeFRRVUZCTzB0QlEwWTdRVUZGVFN4SlFVRkJMRTFCUVUwc1EwRkJReXhMUVVGaExFVkJRVUU3UVVGRGVrSXNVVUZCUVN4TlFVRk5MR2RDUVVGblFpeEhRVUZITEVsQlFVa3NSMEZCUnl4RlFVRnpRaXhEUVVGRE8wRkJRM1pFTEZGQlFVRXNUVUZCVFN4bFFVRmxMRWRCUVVjc1NVRkJTU3hIUVVGSExFVkJRWE5DTEVOQlFVTTdRVUZEZEVRc1VVRkJRU3hOUVVGTkxHRkJRV0VzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCYTBJc1EwRkJRenRCUVVWb1JDeFJRVUZCTEV0QlFVc3NUVUZCVFN4VlFVRlZMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJUczdXVUZGY2tNc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRlZCUVZVc1JVRkJSU3huUWtGQlowSXNSVUZCUlN4bFFVRmxMRVZCUVVVc1lVRkJZU3hGUVVGRkxFTkJRVU1zVlVGQlZTeExRVU12Uml4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVU42UWl4RFFVRkRPenM3V1VGSlJpeHBRMEZCYVVNc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNUVUZCVFN4TFFVRkpPenM3UVVGRk5VUXNaMEpCUVVFc1NVRkJTU3hEUVVGRExFTkJRVUVzUlVGQlFTeEhRVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExEQkRRVUZGTEVsQlFVa3NUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNSMEZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRk8wRkJRek5FTEc5Q1FVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMklzYVVKQlFVRTdPMEZCUjBRc1owSkJRVUVzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTjJReXhuUWtGQlFTeFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MR0ZCUVVNc1EwRkJReXhEUVVGRE8wRkJRMG9zVTBGQlFUdExRVU5HTzBGQlJVUTdPenM3T3pzN096czdPenRCUVZsSE8wbEJRMHNzYTBKQlFXdENMRU5CUTNoQ0xGVkJRVGhDTEVWQlF6bENMR2RDUVVGNVF5eEZRVU42UXl4bFFVRjNReXhGUVVONFF5eGhRVUZyUXl4RlFVTnNReXhSUVVGclJDeEZRVUZCTzBGQlJXeEVMRkZCUVVFc1NVRkJTU3hsUVVGbExFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZPMWxCUTI1RExFOUJRVTg3UVVGRFVpeFRRVUZCTzBGQlJVUXNVVUZCUVN4SlFVRkpMR2RDUVVGblFpeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1JVRkJSVHRCUVVOd1F5eFpRVUZCTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc0swVkJRU3RGTEVOQlFVTXNRMEZCUXp0QlFVTnNSeXhUUVVGQk8wRkJRMFFzVVVGQlFTeG5Ra0ZCWjBJc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdVVUZGYWtNc1RVRkJUU3hWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzBGQlEzSkVMRkZCUVVFc1MwRkJTeXhOUVVGTkxGTkJRVk1zU1VGQlNTeFZRVUZWTEVWQlFVVTdRVUZEYkVNc1dVRkJRU3g1UWtGQmVVSXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNTMEZCU1R0blFrRkRla1FzVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVkQlFVY3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzBGQlEzQkZMR2RDUVVGQkxFbEJRVWtzVTBGQlV5eEZRVUZGTzBGQlEySXNiMEpCUVVFc1MwRkJTeXhOUVVGTkxHRkJRV0VzU1VGQlNTeFRRVUZUTEVWQlFVVTdRVUZEY2tNc2QwSkJRVUVzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExHRkJRV0VzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3hsUVVGbExFVkJRVVVzWVVGQllTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUTNCSExIRkNRVUZCTzBGQlEwWXNhVUpCUVVFN1FVRkJUU3h4UWtGQlFTeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWRCUVVjc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RlFVRkZPenRCUVVWb1JDeHZRa0ZCUVN4cFFrRkJhVUlzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdRVUZEYkVRc2IwSkJRVUVzWVVGQllTeERRVUZETEVkQlFVY3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzBGQlEzUkRMR2xDUVVGQk8wRkJRMGdzWVVGQlF5eERRVUZETEVOQlFVTTdRVUZEU2l4VFFVRkJPenRCUVVkRUxGRkJRVUVzVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRSUVVNdlFpeFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVWb1JDeFJRVUZSTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1FVRkZja0lzVVVGQlFTeGhRVUZoTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVVZ1UXl4UlFVRkJMR1ZCUVdVc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdTMEZEYWtNN1FVRkZSRHM3T3p0QlFVbEhPMEZCUTBzc1NVRkJRU3huUWtGQlowSXNRMEZCUXl4VlFVRTRRaXhGUVVGQk8wRkJRM0pFTEZGQlFVRXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hIUVVGSExFVkJRV3RDTEVOQlFVTTdRVUZGZEVNc1VVRkJRU3hOUVVGTkxFMUJRVTBzUjBGQlJ5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVOMFF5eFJRVUZCTEVsQlFVa3NUVUZCVFN4RlFVRkZPMEZCUTFZc1dVRkJRU3hIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTJwQ0xGTkJRVUU3VVVGRlJDeFZRVUZWTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExHRkJRV0VzUzBGQlNUdFpRVU5zUkN4aFFVRmhMRU5CUVVNc1UwRkJVeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEZGQlFWRXNTMEZCU1R0QlFVTXpReXhuUWtGQlFTeEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM0JDTEdGQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTB3c1UwRkJReXhEUVVGRExFTkJRVU03UVVGRlNDeFJRVUZCTEU5QlFVOHNSMEZCUnl4RFFVRkRPMHRCUTFvN1FVRkRSanM3UVVOb1RVUTdPMEZCUlVjN1FVRkRTQ3hOUVVGTkxITkNRVUZ6UWl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1RVRkZMME1zZVVKQlFYbENMRU5CUVVFN1FVRnRRbkJETEVsQlFVRXNTVUZCVnl4SlFVRkpMRWRCUVVFN1VVRkRZaXhQUVVGUExIbENRVUY1UWl4RFFVRkRMR05CUVdNc1EwRkJRenRMUVVOcVJEdEpRVVZFTEZkQlFXMUNMRU5CUVVFc1RVRkJhMElzUlVGQlJTeFBRVUV3UXl4RlFVRkJPMEZCUXk5RkxGRkJRVUVzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4TlFVRk5MRU5CUVVNN1VVRkZja0lzU1VGQlNTeERRVUZETEdWQlFXVXNSMEZCUnl4UFFVRlBMRXRCUVVFc1NVRkJRU3hKUVVGUUxFOUJRVThzUzBGQlVDeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hQUVVGUExFTkJRVVVzWlVGQlpTeERRVUZETzFGQlEyaEVMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4UFFVRlBMRXRCUVVFc1NVRkJRU3hKUVVGUUxFOUJRVThzUzBGQlVDeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hQUVVGUExFTkJRVVVzYTBKQlFXdENMRU5CUVVNN1MwRkRka1E3UVVGRldTeEpRVUZCTEZOQlFWTXNRMEZCUXl4SlFVRlZMRVZCUVVFN08wRkJReTlDTEZsQlFVRXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXh2UWtGQmIwSXNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVMEZETDBRc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGQlFUdEJRVVZFT3pzN096dEJRVXRITzBGQlExY3NTVUZCUVN4UFFVRlBMRU5CUVVNc1NVRkJWU3hGUVVGQk96dFpRVU01UWl4TlFVRk5MRkZCUVZFc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkROVU1zU1VGQlNTeFJRVUZSTEVsQlFVa3NTVUZCU1N4RlFVRkZPMEZCUTNCQ0xHZENRVUZCTEU5QlFVOHNVVUZCVVN4RFFVRkRPMEZCUTJwQ0xHRkJRVUU3V1VGRlJDeE5RVUZOTEZGQlFWRXNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZETlVNc1NVRkJTU3hSUVVGUkxFbEJRVWtzU1VGQlNTeEZRVUZGTzBGQlEzQkNMR2RDUVVGQkxFOUJRVThzVVVGQlVTeERRVUZETzBGQlEycENMR0ZCUVVFN1FVRkZSQ3haUVVGQkxFOUJRVThzU1VGQlNTeERRVUZETzFOQlEySXNRMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkJRVHRCUVVWaExFbEJRVUVzVTBGQlV5eERRVUZETEVsQlFWVXNSVUZCUVRzN08wRkJRMmhETEZsQlFVRXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUYzUWl4RFFVRkRPenRCUVVkc1JDeFpRVUZCTEUxQlFVMHNaMEpCUVdkQ0xFZEJRVWNzUTBGQlFTeERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkpMRU5CUVVNc1kwRkJZeXhOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZGTEU5QlFVOHNRMEZCUXl4NVFrRkJlVUlzUTBGQlF5eGpRVUZqTEVOQlFVTXNUVUZCU3l4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOMlJ5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVU3UVVGRGNrSXNaMEpCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFlpeGhRVUZCTzBGQlJVUXNXVUZCUVN4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxHOUNRVUZ2UWl4RlFVRkZMRU5CUVVNN1dVRkZNME1zVFVGQlRTeFZRVUZWTEVkQlFYRkNMRTFCUVUwc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGxRVUZsTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkZMMFVzVFVGQlRTeFRRVUZUTEVkQlFVY3NRMEZCUVN4RlFVRkJMRWRCUVVFc1NVRkJTU3hEUVVGRExGVkJRVlVzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUnl4NVFrRkJlVUlzUTBGQlF5eGpRVUZqTEVOQlJTOUVMRU5CUVVNN1dVRkRaQ3hKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTzBGQlEyUXNaMEpCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFlpeGhRVUZCTzBGQlJVUXNXVUZCUVN4TlFVRk5MRmRCUVZjc1IwRkJSeXhUUVVGVExFTkJRVU1zVjBGQlZ5eERRVUZETzBGQlF6RkRMRmxCUVVFc1NVRkJTU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRWRCUVVjc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGQlJUdG5Ra0ZETlVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGRFZpeERRVUZ6UXl4dFEwRkJRU3hGUVVGQkxIbENRVUY1UWl4RFFVRkRMR05CUVdNc1EwRkJhVUlzWTBGQlFTeEZRVUZCTEZkQlFWY3NRMEZCUnl4RFFVRkJMRU5CUVVFc1EwRkRPVWNzUTBGQlF6dEJRVU5HTEdkQ1FVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMklzWVVGQlFUdEJRVVZFTEZsQlFVRXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzVTBGQlV5eERRVUZETEZOQlFWTXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eGpRVUZqTEVWQlFVVXNVMEZCVXl4TFFVRkpPenRuUWtGRGRrVXNUVUZCVFN4SlFVRkpMRWRCUVVjc1ZVRkJWU3hEUVVGRExHTkJRV01zUTBGQlF5eEpRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTTVReXhuUWtGQlFTeE5RVUZOTEZkQlFWY3NSMEZCUnl4alFVRmpMRU5CUVVNc1MwRkJUU3hEUVVGRE8yZENRVVV4UXl4SlFVRkpMRmRCUVZjc1EwRkJReXhOUVVGTkxFVkJRVVU3UVVGRGRFSXNiMEpCUVVFc1QwRkJUeXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1NVRkJTU3hGUVVGRk8zZENRVU4wUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVFc1JVRkJRU3hIUVVGQkxGZEJRVmNzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0M1FrRkRia1lzVFVGQlRTeEZRVUZGTEUxQlFVRXNWMEZCVnl4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxHMURRVUZKTEVkQlFVYzdRVUZEZWtNc2NVSkJRVUVzUTBGQlF5eERRVUZETzBGQlEwb3NhVUpCUVVFN2NVSkJRVTBzU1VGQlNTeFhRVUZYTEVOQlFVTXNUMEZCVHl4RlFVRkZPMEZCUXpsQ0xHOUNRVUZCTEU5QlFVOHNTVUZCU1N4RFFVRkRMSE5DUVVGelFpeERRVUZETEVsQlFVa3NSVUZCUlR0M1FrRkRka01zVFVGQlRTeEZRVUZGTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZCTEVWQlFVRXNSMEZCUVN4WFFVRlhMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzVFVGQlFTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUjBGQlNTeERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03ZDBKQlEzQkdMRTFCUVUwc1JVRkJSU3hOUVVGQkxGZEJRVmNzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4dFEwRkJTU3hIUVVGSE8zZENRVU42UXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVFc1JVRkJRU3hIUVVGQkxGZEJRVmNzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4TlFVRkJMRWxCUVVFc1NVRkJRU3hGUVVGQkxFdEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTnFSaXh4UWtGQlFTeERRVUZETEVOQlFVTTdRVUZEU2l4cFFrRkJRVHRCUVVWRUxHZENRVUZCTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc05FTkJRVFJETEZOQlFWTXNRMEZCUVN4dFFrRkJRU3hEUVVGeFFpeERRVUZETEVOQlFVTTdRVUZET1VZc1lVRkJReXhEUVVGRExFTkJRVU03UVVGRlNDeFpRVUZCTEUxQlFVMHNZMEZCWXl4SFFVRkhMRU5CUVVFc1JVRkJRU3hIUVVGQkxGTkJRVk1zUTBGQlF5eGpRVUZqTEUxQlFVRXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVVc1IwRkJSeXhEUVVOc1JDeERRVUZETEcxQ1FVRnRRaXhGUVVGRkxHTkJRV01zUzBGQlowTTdPMEZCUTJ4RkxHZENRVUZCTEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRU3hGUVVGQkxFZEJRVUVzYlVKQlFXMUNMRU5CUVVNc1UwRkJVeXhOUVVGQkxFbEJRVUVzU1VGQlFTeEZRVUZCTEV0QlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hIUVVGSkxFVkJRVVVzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRXRCUVVrN2IwSkJRMjVGTEUxQlFVMHNSMEZCUnl4SFFVRkhMRk5CUVZNc1MwRkJWQ3hKUVVGQkxFbEJRVUVzVTBGQlV5eDFRa0ZCVkN4VFFVRlRMRU5CUVVjc1UwRkJVeXhEUVVGRExFTkJRVU03YjBKQlJXNURMRWxCUVVrc1IwRkJSeXhKUVVGSkxFbEJRVWtzUlVGQlJUdDNRa0ZEWml4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVOaUxFTkJRVUVzT0VOQlFVRXNSVUZCYVVRc1kwRkJZeXhEUVVGcFF5dzRRa0ZCUVN4RlFVRkJMRk5CUVZNc1EwRkJaMElzWTBGQlFTeERRVUZCTEVOQlF6RklMRU5CUVVNN1FVRkRTQ3h4UWtGQlFUdEJRVVZFTEc5Q1FVRkJMRTlCUVU4c1IwRkJSeXhEUVVGRE8wRkJRMklzYVVKQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVWSUxFOUJRVTg3UVVGRFRDeHZRa0ZCUVN4VFFVRlRMRVZCUVVVc1NVRkJTVHR2UWtGRFppeEpRVUZKTEVWQlFVVXNiVUpCUVcxQ0xFTkJRVU1zU1VGQlNUdHBRa0ZETDBJc1EwRkJRenRCUVVOS0xHRkJRVU1zUTBGRFJpeERRVUZETzFsQlJVWXNRMEZCUVN4RlFVRkJMRWRCUVVFc1UwRkJVeXhEUVVGRExFOUJRVThzVFVGQlJTeEpRVUZCTEVsQlFVRXNSVUZCUVN4TFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUVN4UFFVRlBMRU5CUVVNc1EwRkJReXhaUVVGWkxFVkJRVVVzVDBGQlR5eExRVUZKT3p0QlFVTnVSQ3huUWtGQlFTeE5RVUZOTEZsQlFWa3NSMEZCUnl4WlFVRlpMRU5CUVVNc1RVRkJUU3hEUVVGRE96dEJRVWQ2UXl4blFrRkJRU3hOUVVGTkxIVkNRVUYxUWl4SFFVRkhMRU5CUVVFc1JVRkJRU3hIUVVGQkxGbEJRVmtzUTBGQlF5eGpRVUZqTEUxQlFVVXNTVUZCUVN4SlFVRkJMRVZCUVVFc1MwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVFc1IwRkJSeXhEUVVGRExFTkJRVU1zWTBGQll5eExRVUZKTzI5Q1FVTnNSaXhOUVVGTkxFdEJRVXNzUjBGQlJ5eGpRVUZqTEV0QlFXUXNTVUZCUVN4SlFVRkJMR05CUVdNc2RVSkJRV1FzWTBGQll5eERRVUZITEdOQlFXTXNRMEZCUXl4RFFVRkRPMjlDUVVVdlF5eEpRVUZKTEV0QlFVc3NTVUZCU1N4SlFVRkpMRVZCUVVVN2QwSkJRMnBDTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUTJJc1EwRkJRU3gxUTBGQlFTeEZRVUV3UXl4UFFVRlBMRU5CUVhGRExHdERRVUZCTEVWQlFVRXNZMEZCWXl4RFFVRm5RaXhqUVVGQkxFTkJRVUVzUTBGRGNrZ3NRMEZCUXp0QlFVTklMSEZDUVVGQk8wRkJSVVFzYjBKQlFVRXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhwUWtGQlF5eERRVUZETEVOQlFVTTdaMEpCUlVnc1RVRkJUU3hOUVVGTkxFZEJRVWNzV1VGQldTeERRVUZETEUxQlFVMHNTVUZCU1N4SlFVRkpMRWRCUVVjc1ZVRkJWU3hEUVVGRExGbEJRVmtzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNN1FVRkZla1lzWjBKQlFVRXNTVUZCU1N4bFFVRXJSQ3hEUVVGRE8wRkJRM0JGTEdkQ1FVRkJMRmxCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eFhRVUZYTEV0QlFVazdRVUZEYmtNc2IwSkJRVUVzU1VGQlNTeGxRVUZsTEVWQlFVVTdPMEZCUlc1Q0xIZENRVUZCTEUxQlFVMHNVMEZCVXl4SFFVRkhMR1ZCUVdVc1EwRkJReXhKUVVGSkxFTkJRVU03UVVGRGRrTXNkMEpCUVVFc1RVRkJUU3hKUVVGSkxFZEJRVWNzVlVGQlZTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMEZCUTI1RExIZENRVUZCTEUxQlFVMHNWVUZCVlN4SFFVRkhMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU03UVVGRGNFTXNkMEpCUVVFc1RVRkJUU3hMUVVGTExFZEJRVWNzVlVGQlZTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPenRCUVVkeVF5eDNRa0ZCUVN4TlFVRk5MRTlCUVU4c1IwRkJkME03TkVKQlEyNUVMRk5CUVZNc1JVRkJSU3hsUVVGbExFTkJRVU1zVTBGQlV6czBRa0ZEY0VNc1UwRkJVeXhGUVVGRkxHVkJRV1VzUTBGQlF5eFRRVUZUT3pSQ1FVTndReXhaUVVGWkxFVkJRVVVzWlVGQlpTeERRVUZETEZsQlFWazdORUpCUXpGRExGTkJRVk1zUlVGQlJTeGxRVUZsTEVOQlFVTXNVMEZCVXp0QlFVTndReXcwUWtGQlFTeFZRVUZWTEVWQlExSXNaVUZCWlN4RFFVRkRMRlZCUVZVc1NVRkJTU3hKUVVGSk8wRkJRMmhETEd0RFFVRkZMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4bFFVRmxMRU5CUVVNc1ZVRkJWU3hEUVVGRE8wRkJRek5FTEd0RFFVRkZMRk5CUVZNN2VVSkJRMmhDTEVOQlFVTTdPMEZCUjBZc2QwSkJRVUVzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eEZRVUZGTEU5QlFVOHNSVUZCUlN4MVFrRkJkVUlzUTBGQlF5eERRVUZETzBGQlF5OUZMSGRDUVVGQkxFbEJRVWtzVFVGQlRTeEZRVUZGTzBGQlExWXNORUpCUVVFc1MwRkJTeXhEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTTdRVUZEZGtJc2VVSkJRVUU3UVVGRlJDeDNRa0ZCUVN4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBGQlEzcENMSEZDUVVGQk8yOUNRVVZFTEdWQlFXVXNSMEZCUnl4WFFVRlhMRU5CUVVNN1FVRkRhRU1zYVVKQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTB3c1lVRkJReXhEUVVGRExFTkJRVU03TzFsQlIwZ3NUMEZCVHl4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRE8wRkJSWFpDTEZsQlFVRXNUMEZCVHl4UFFVRlBMRU5CUVVNN08wRkJRMmhDTEV0QlFVRTdRVUZGWVN4SlFVRkJMRk5CUVZNc1EwRkJReXhKUVVGVkxFVkJRVUU3T3p0QlFVTm9ReXhaUVVGQkxFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJkMElzUTBGQlF6czdRVUZIYkVRc1dVRkJRU3hOUVVGTkxGTkJRVk1zUjBGQlJ5eERRVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMRWxCUVVrc1EwRkJReXhqUVVGakxFMUJRVVVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVRXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6ZEVMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVU3UVVGRFpDeG5Ra0ZCUVN4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOaUxHRkJRVUU3TzFsQlIwUXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJRU3hGUVVGQkxFZEJRVUVzU1VGQlNTeERRVUZETEZWQlFWVXNUVUZCUVN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJSeXhMUVVGTExFTkJRVEJDTEVOQlFVTTdXVUZEY0VVc1RVRkJUU3gzUWtGQmQwSXNSMEZCUnl4VFFVRlRMRXRCUVVFc1NVRkJRU3hKUVVGVUxGTkJRVk1zUzBGQlZDeExRVUZCTEVOQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hUUVVGVExFTkJRVVVzYTBKQlFXdENMRU5CUVVNN1dVRkRMMFFzU1VGQlNTeERRVUZETEhkQ1FVRjNRaXhGUVVGRk8wRkJRemRDTEdkQ1FVRkJMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMklzWVVGQlFUdFpRVVZFTEUxQlFVMHNaMEpCUVdkQ0xFZEJRVWNzZDBKQlFYZENMRXRCUVVFc1NVRkJRU3hKUVVGNFFpeDNRa0ZCZDBJc1MwRkJlRUlzUzBGQlFTeERRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc2QwSkJRWGRDTEVOQlFVVXNWVUZCVlN4RFFVRkRPMWxCUXpsRUxFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSVHRCUVVOeVFpeG5Ra0ZCUVN4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOaUxHRkJRVUU3UVVGRlJDeFpRVUZCTEUxQlFVMHNUMEZCVHl4SFFVRkhMRWxCUVVrc2IwSkJRVzlDTEVWQlFVVXNRMEZCUXp0WlFVVXpReXhOUVVGTkxGVkJRVlVzUjBGQmNVSXNUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHVkJRV1VzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVVXZSU3haUVVGQkxFMUJRVTBzWTBGQll5eEhRVUZITEVOQlFVRXNSVUZCUVN4SFFVRkJMSGRDUVVGM1FpeERRVUZETEdOQlFXTXNUVUZCUlN4SlFVRkJMRWxCUVVFc1JVRkJRU3hMUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJRU3hIUVVGSExFTkJRMnBGTEVOQlFVTXNiVUpCUVcxQ0xFdEJRV2RET3p0blFrRkRiRVFzVFVGQlRTeEpRVUZKTEVkQlFVY3NWVUZCVlN4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVsQlFVc3NRMEZCUXl4RFFVRkRPMEZCUTI1RUxHZENRVUZCTEUxQlFVMHNVMEZCVXl4SFFVRkhMRU5CUVVNc1RVRkJRU3h0UWtGQmJVSXNRMEZCUXl4VFFVRlRMRTFCUVVrc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVFc1JVRkJSU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEdOQlFXTXNSVUZCUlN4VFFVRlRMRXRCUVVrN08wRkJRM2hHTEc5Q1FVRkJMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzI5Q1FVTm9SQ3hKUVVGSkxHTkJRV01zUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZEZWtJc2QwSkJRVUVzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZEVWl4TlFVRkJMR05CUVdNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eE5RVUZKTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZCTEVkQlFVY3NSVUZET1VJc1EwRkJRU3hGUVVGQkxFZEJRVUVzWTBGQll5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRTFCUVVrc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVFc1IwRkJSeXhGUVVNNVFpeGpRVUZqTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExHTkJRV01zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkRla1FzUTBGQlF6dEJRVU5JTEhGQ1FVRkJPMEZCUlVRc2IwSkJRVUVzVDBGQlR5eEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTzNkQ1FVTjBReXhOUVVGTk8wRkJRMDRzZDBKQlFVRXNUVUZCVFN4RlFVRkZMRU5CUVVFc1JVRkJRU3hIUVVGQkxHTkJRV01zUTBGQlF5eE5RVUZOTEcxRFFVRkpMRWRCUVVjN1FVRkRja01zY1VKQlFVRXNRMEZCUXl4RFFVRkRPMEZCUTB3c2FVSkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVVklMRTlCUVU4c1JVRkJSU3hUUVVGVExFVkJRVVVzUTBGQlF6dEJRVU4yUWl4aFFVRkRMRU5CUTBZc1EwRkJRenM3UVVGSFJpeFpRVUZCTEdkQ1FVRm5RaXhMUVVGb1FpeEpRVUZCTEVsQlFVRXNaMEpCUVdkQ0xFdEJRV2hDTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxHZENRVUZuUWl4RFFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRExHVkJRV1VzUlVGQlJTeFZRVUZWTEV0QlFVazdRVUZEZUVRc1owSkJRVUVzVFVGQlRTeFhRVUZYTEVkQlFVY3NaVUZCWlN4RFFVRkRMRXRCUVVzc1EwRkJRenRuUWtGRE1VTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSVHR2UWtGRGFFSXNUMEZCVHp0QlFVTlNMR2xDUVVGQk8wRkJSVVFzWjBKQlFVRXNWMEZCVnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExGTkJRVk1zUzBGQlNUczdRVUZEYUVNc2IwSkJRVUVzVFVGQlRTeEpRVUZKTEVkQlFVY3NWVUZCVlN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE96dEJRVWR1UXl4dlFrRkJRU3hOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenR2UWtGRGRrTXNTVUZCU1N4bFFVRmxMRU5CUVVNc1ZVRkJWU3hGUVVGRk8wRkJRemxDTEhkQ1FVRkJMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRMW9zUTBGQlFTeEZRVUZCTEVkQlFVRXNaVUZCWlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFMUJRVUVzU1VGQlFTeEpRVUZCTEVWQlFVRXNTMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFZEJRVWtzUjBGQlJ5eEZRVU51UXl4TlFVRkJMR1ZCUVdVc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eE5RVUZCTEVsQlFVRXNTVUZCUVN4RlFVRkJMRXRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeEhRVUZKTEVkQlFVY3NSVUZEYmtNc1EwRkJRU3hGUVVGQkxFZEJRVUVzWlVGQlpTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRTFCUVVrc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVFc1IwRkJSeXhEUVVOd1F5eERRVUZETzBGQlEwZ3NjVUpCUVVFN1FVRkJUU3g1UWtGQlFUdDNRa0ZEVEN4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVOb1F5eHhRa0ZCUVR0dlFrRkZSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eGxRVUZsTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1IwRkJSeXhWUVVGVkxFTkJRVU1zWlVGQlpTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJRenRCUVVVdlJpeHZRa0ZCUVN4TlFVRk5MRTlCUVU4c1IwRkJkME03ZDBKQlEyNUVMRk5CUVZNc1JVRkJSU3hsUVVGbExFTkJRVU1zVTBGQlV6dDNRa0ZEY0VNc1UwRkJVeXhGUVVGRkxHVkJRV1VzUTBGQlF5eFRRVUZUTzNkQ1FVTndReXhaUVVGWkxFVkJRVVVzWlVGQlpTeERRVUZETEZsQlFWazdkMEpCUXpGRExGTkJRVk1zUlVGQlJTeGxRVUZsTEVOQlFVTXNWVUZCVlR0M1FrRkRja01zVlVGQlZUdHhRa0ZEV0N4RFFVRkRPenRCUVVkR0xHOUNRVUZCTEUxQlFVMHNkVUpCUVhWQ0xFZEJRVWNzUTBGQlFTeEZRVUZCTEVkQlFVRXNaVUZCWlN4RFFVRkRMR05CUVdNc1RVRkJSU3hKUVVGQkxFbEJRVUVzUlVGQlFTeExRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlFTeEhRVUZITEVOQlFVTXNRMEZCUXl4alFVRmpMRXRCUVVrN2QwSkJRM0pHTEUxQlFVMHNTMEZCU3l4SFFVRkhMR05CUVdNc1MwRkJaQ3hKUVVGQkxFbEJRVUVzWTBGQll5eDFRa0ZCWkN4alFVRmpMRU5CUVVjc1kwRkJZeXhEUVVGRExFTkJRVU03ZDBKQlJTOURMRWxCUVVrc1MwRkJTeXhKUVVGSkxFbEJRVWtzUlVGQlJUczBRa0ZEYWtJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGRFlpeERRVUZCTEhWRFFVRkJMRVZCUVRCRExGVkJRVlVzUTBGQmNVTXNhME5CUVVFc1JVRkJRU3hqUVVGakxFTkJRV2RDTEdOQlFVRXNRMEZCUVN4RFFVTjRTQ3hEUVVGRE8wRkJRMGdzZVVKQlFVRTdRVUZGUkN4M1FrRkJRU3hQUVVGUExFdEJRVXNzUTBGQlF6dEJRVU5tTEhGQ1FVRkRMRU5CUVVNc1EwRkJRenM3UVVGSFNDeHZRa0ZCUVN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zU1VGQlNTeExRVUZKT3p0M1FrRkRja0lzVFVGQlRTeExRVUZMTEVkQlFUQkNMRU5CUVVFc1JVRkJRU3hIUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVVrc1NVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVVFc1NVRkJTU3hEUVVGRE8wRkJSVGxFTEhkQ1FVRkJMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJSU3hQUVVGUExFVkJRVVVzZFVKQlFYVkNMRU5CUVVNc1EwRkJRenRCUVVNdlJTeDNRa0ZCUVN4SlFVRkpMRTFCUVUwc1JVRkJSVHRCUVVOV0xEUkNRVUZCTEV0QlFVc3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8wRkJRM1pDTEhsQ1FVRkJPMEZCUlVRc2QwSkJRVUVzVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVNeFFpeHhRa0ZCUXl4RFFVRkRMRU5CUVVNN1FVRkRUQ3hwUWtGQlF5eERRVUZETEVOQlFVTTdRVUZEVEN4aFFVRkRMRU5CUVVNc1EwRkJRenM3UVVGSFNDeFpRVUZCTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVXNRMEZCUXp0WlFVTXZRaXhQUVVGUExFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTTdRVUZGZGtJc1dVRkJRU3hQUVVGUExFOUJRVThzUTBGQlF6czdRVUZEYUVJc1MwRkJRVHRCUVVWUExFbEJRVUVzV1VGQldTeERRVU5zUWl4SlFVRnZRaXhGUVVOd1FpeExRVUZ4UWl4RlFVTnlRaXhQUVVFMlF5eEZRVU0zUXl4MVFrRkJjMFFzUlVGQlFUdEJRVVYwUkN4UlFVRkJMRTFCUVUwc1ZVRkJWU3hIUVVGSExFbEJRVWtzYTBKQlFXdENMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUlVGQlJTeFBRVUZQTEVWQlFVVXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF6dFJRVVY2Uml4SlFVRkpMRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVU3UVVGRGVFSXNXVUZCUVN4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxIZENRVUYzUWl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wRkJRM2hFTEZsQlFVRXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdXVUZEYWtNc1RVRkJUU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRmRCUVZjc1EwRkJRenRCUVVOMlJDeFRRVUZCTzBGQlJVUXNVVUZCUVN4UFFVRlBMRlZCUVZVc1EwRkJRenRMUVVOdVFqdEpRVVZQTEhGQ1FVRnhRaXhEUVVNelFpeFhRVUV5UWl4RlFVTXpRaXhOUVVkRExFVkJRVUU3UVVGRlJDeFJRVUZCTEUxQlFVMHNSVUZCUlN4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRkxFZEJRVWNzVFVGQlRTeERRVUZETzFGQlJXeERMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzWjBOQlFXZERMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVVjJSU3hSUVVGQkxFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NjVUpCUVhGQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdRVUZGYkVRc1VVRkJRU3hYUVVGWExFTkJRVU1zUjBGQlJ5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMUZCUlRGQ0xFbEJRVWtzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhGUVVGRk8wRkJRek5DTEZsQlFVRXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3d5UWtGQk1rSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVONlJDeFpRVUZCTEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRjRU1zVFVGQlRTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNWMEZCVnl4RFFVRkRPMEZCUXpGRUxGTkJRVUU3UVVGRlJDeFJRVUZCTEU5QlFVOHNVVUZCVVN4RFFVRkRPMHRCUTJwQ08wbEJSVThzYzBKQlFYTkNMRU5CUXpWQ0xGZEJRVEpDTEVWQlF6TkNMRTFCU1VNc1JVRkJRVHRSUVVWRUxFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hIUVVGSExFMUJRVTBzUTBGQlF6dEJRVVY0UXl4UlFVRkJMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzYVVOQlFXbERMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkZPVVVzVVVGQlFTeE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRkpMSEZDUVVGeFFpeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUld4RUxGRkJRVUVzVjBGQlZ5eERRVUZETEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRSUVVVeFFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUlVGQlJUdEJRVU16UWl4WlFVRkJMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzTWtKQlFUSkNMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03UVVGRGVrUXNXVUZCUVN4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xbEJRM0JETEUxQlFVMHNRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRmRCUVZjc1EwRkJRenRCUVVNeFJDeFRRVUZCTzBGQlJVUXNVVUZCUVN4UFFVRlBMRkZCUVZFc1EwRkJRenRMUVVOcVFqczdRVUYwVjNOQ0xIbENRVUZqTEVOQlFVRXNZMEZCUVN4SFFVRkhMR2xDUVVGcFFqczdPenNpZlE9PVxuIiwiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgR0xURiwgR0xURkxvYWRlclBsdWdpbiwgR0xURlBhcnNlciB9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9sb2FkZXJzL0dMVEZMb2FkZXIuanMnO1xuaW1wb3J0IHtcbiAgVlJNRXhwcmVzc2lvbkxvYWRlclBsdWdpbixcbiAgVlJNRmlyc3RQZXJzb25Mb2FkZXJQbHVnaW4sXG4gIFZSTUh1bWFub2lkLFxuICBWUk1IdW1hbm9pZExvYWRlclBsdWdpbixcbiAgVlJNTG9va0F0TG9hZGVyUGx1Z2luLFxuICBWUk1NZXRhLFxuICBWUk1NZXRhTG9hZGVyUGx1Z2luLFxufSBmcm9tICdAcGl4aXYvdGhyZWUtdnJtLWNvcmUnO1xuaW1wb3J0IHsgTVRvb25NYXRlcmlhbExvYWRlclBsdWdpbiB9IGZyb20gJ0BwaXhpdi90aHJlZS12cm0tbWF0ZXJpYWxzLW10b29uJztcbmltcG9ydCB7IFZSTU1hdGVyaWFsc0hEUkVtaXNzaXZlTXVsdGlwbGllckxvYWRlclBsdWdpbiB9IGZyb20gJ0BwaXhpdi90aHJlZS12cm0tbWF0ZXJpYWxzLWhkci1lbWlzc2l2ZS1tdWx0aXBsaWVyJztcbmltcG9ydCB7IFZSTU1hdGVyaWFsc1YwQ29tcGF0UGx1Z2luIH0gZnJvbSAnQHBpeGl2L3RocmVlLXZybS1tYXRlcmlhbHMtdjBjb21wYXQnO1xuaW1wb3J0IHsgVlJNTm9kZUNvbnN0cmFpbnRMb2FkZXJQbHVnaW4gfSBmcm9tICdAcGl4aXYvdGhyZWUtdnJtLW5vZGUtY29uc3RyYWludCc7XG5pbXBvcnQgeyBWUk1TcHJpbmdCb25lTG9hZGVyUGx1Z2luIH0gZnJvbSAnQHBpeGl2L3RocmVlLXZybS1zcHJpbmdib25lJztcbmltcG9ydCB7IFZSTUxvYWRlclBsdWdpbk9wdGlvbnMgfSBmcm9tICcuL1ZSTUxvYWRlclBsdWdpbk9wdGlvbnMnO1xuaW1wb3J0IHsgVlJNIH0gZnJvbSAnLi9WUk0nO1xuXG5leHBvcnQgY2xhc3MgVlJNTG9hZGVyUGx1Z2luIGltcGxlbWVudHMgR0xURkxvYWRlclBsdWdpbiB7XG4gIHB1YmxpYyByZWFkb25seSBwYXJzZXI6IEdMVEZQYXJzZXI7XG5cbiAgcHVibGljIHJlYWRvbmx5IGV4cHJlc3Npb25QbHVnaW46IFZSTUV4cHJlc3Npb25Mb2FkZXJQbHVnaW47XG4gIHB1YmxpYyByZWFkb25seSBmaXJzdFBlcnNvblBsdWdpbjogVlJNRmlyc3RQZXJzb25Mb2FkZXJQbHVnaW47XG4gIHB1YmxpYyByZWFkb25seSBodW1hbm9pZFBsdWdpbjogVlJNSHVtYW5vaWRMb2FkZXJQbHVnaW47XG4gIHB1YmxpYyByZWFkb25seSBsb29rQXRQbHVnaW46IFZSTUxvb2tBdExvYWRlclBsdWdpbjtcbiAgcHVibGljIHJlYWRvbmx5IG1ldGFQbHVnaW46IFZSTU1ldGFMb2FkZXJQbHVnaW47XG4gIHB1YmxpYyByZWFkb25seSBtdG9vbk1hdGVyaWFsUGx1Z2luOiBNVG9vbk1hdGVyaWFsTG9hZGVyUGx1Z2luO1xuICBwdWJsaWMgcmVhZG9ubHkgbWF0ZXJpYWxzSERSRW1pc3NpdmVNdWx0aXBsaWVyUGx1Z2luOiBWUk1NYXRlcmlhbHNIRFJFbWlzc2l2ZU11bHRpcGxpZXJMb2FkZXJQbHVnaW47XG4gIHB1YmxpYyByZWFkb25seSBtYXRlcmlhbHNWMENvbXBhdFBsdWdpbjogVlJNTWF0ZXJpYWxzVjBDb21wYXRQbHVnaW47XG4gIHB1YmxpYyByZWFkb25seSBzcHJpbmdCb25lUGx1Z2luOiBWUk1TcHJpbmdCb25lTG9hZGVyUGx1Z2luO1xuICBwdWJsaWMgcmVhZG9ubHkgbm9kZUNvbnN0cmFpbnRQbHVnaW46IFZSTU5vZGVDb25zdHJhaW50TG9hZGVyUGx1Z2luO1xuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnVlJNTG9hZGVyUGx1Z2luJztcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJzZXI6IEdMVEZQYXJzZXIsIG9wdGlvbnM/OiBWUk1Mb2FkZXJQbHVnaW5PcHRpb25zKSB7XG4gICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG5cbiAgICBjb25zdCBoZWxwZXJSb290ID0gb3B0aW9ucz8uaGVscGVyUm9vdDtcbiAgICBjb25zdCBhdXRvVXBkYXRlSHVtYW5Cb25lcyA9IG9wdGlvbnM/LmF1dG9VcGRhdGVIdW1hbkJvbmVzO1xuXG4gICAgdGhpcy5leHByZXNzaW9uUGx1Z2luID0gb3B0aW9ucz8uZXhwcmVzc2lvblBsdWdpbiA/PyBuZXcgVlJNRXhwcmVzc2lvbkxvYWRlclBsdWdpbihwYXJzZXIpO1xuICAgIHRoaXMuZmlyc3RQZXJzb25QbHVnaW4gPSBvcHRpb25zPy5maXJzdFBlcnNvblBsdWdpbiA/PyBuZXcgVlJNRmlyc3RQZXJzb25Mb2FkZXJQbHVnaW4ocGFyc2VyKTtcbiAgICB0aGlzLmh1bWFub2lkUGx1Z2luID1cbiAgICAgIG9wdGlvbnM/Lmh1bWFub2lkUGx1Z2luID8/XG4gICAgICBuZXcgVlJNSHVtYW5vaWRMb2FkZXJQbHVnaW4ocGFyc2VyLCB7XG4gICAgICAgIGhlbHBlclJvb3QsXG4gICAgICAgIGF1dG9VcGRhdGVIdW1hbkJvbmVzLFxuICAgICAgfSk7XG4gICAgdGhpcy5sb29rQXRQbHVnaW4gPSBvcHRpb25zPy5sb29rQXRQbHVnaW4gPz8gbmV3IFZSTUxvb2tBdExvYWRlclBsdWdpbihwYXJzZXIsIHsgaGVscGVyUm9vdCB9KTtcbiAgICB0aGlzLm1ldGFQbHVnaW4gPSBvcHRpb25zPy5tZXRhUGx1Z2luID8/IG5ldyBWUk1NZXRhTG9hZGVyUGx1Z2luKHBhcnNlcik7XG4gICAgdGhpcy5tdG9vbk1hdGVyaWFsUGx1Z2luID0gb3B0aW9ucz8ubXRvb25NYXRlcmlhbFBsdWdpbiA/PyBuZXcgTVRvb25NYXRlcmlhbExvYWRlclBsdWdpbihwYXJzZXIpO1xuICAgIHRoaXMubWF0ZXJpYWxzSERSRW1pc3NpdmVNdWx0aXBsaWVyUGx1Z2luID1cbiAgICAgIG9wdGlvbnM/Lm1hdGVyaWFsc0hEUkVtaXNzaXZlTXVsdGlwbGllclBsdWdpbiA/PyBuZXcgVlJNTWF0ZXJpYWxzSERSRW1pc3NpdmVNdWx0aXBsaWVyTG9hZGVyUGx1Z2luKHBhcnNlcik7XG4gICAgdGhpcy5tYXRlcmlhbHNWMENvbXBhdFBsdWdpbiA9IG9wdGlvbnM/Lm1hdGVyaWFsc1YwQ29tcGF0UGx1Z2luID8/IG5ldyBWUk1NYXRlcmlhbHNWMENvbXBhdFBsdWdpbihwYXJzZXIpO1xuXG4gICAgdGhpcy5zcHJpbmdCb25lUGx1Z2luID1cbiAgICAgIG9wdGlvbnM/LnNwcmluZ0JvbmVQbHVnaW4gPz9cbiAgICAgIG5ldyBWUk1TcHJpbmdCb25lTG9hZGVyUGx1Z2luKHBhcnNlciwge1xuICAgICAgICBjb2xsaWRlckhlbHBlclJvb3Q6IGhlbHBlclJvb3QsXG4gICAgICAgIGpvaW50SGVscGVyUm9vdDogaGVscGVyUm9vdCxcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ub2RlQ29uc3RyYWludFBsdWdpbiA9XG4gICAgICBvcHRpb25zPy5ub2RlQ29uc3RyYWludFBsdWdpbiA/PyBuZXcgVlJNTm9kZUNvbnN0cmFpbnRMb2FkZXJQbHVnaW4ocGFyc2VyLCB7IGhlbHBlclJvb3QgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYmVmb3JlUm9vdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLm1hdGVyaWFsc1YwQ29tcGF0UGx1Z2luLmJlZm9yZVJvb3QoKTtcbiAgICBhd2FpdCB0aGlzLm10b29uTWF0ZXJpYWxQbHVnaW4uYmVmb3JlUm9vdCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRNZXNoKG1lc2hJbmRleDogbnVtYmVyKTogUHJvbWlzZTxUSFJFRS5Hcm91cCB8IFRIUkVFLk1lc2ggfCBUSFJFRS5Ta2lubmVkTWVzaD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm10b29uTWF0ZXJpYWxQbHVnaW4ubG9hZE1lc2gobWVzaEluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYXRlcmlhbFR5cGUobWF0ZXJpYWxJbmRleDogbnVtYmVyKTogdHlwZW9mIFRIUkVFLk1hdGVyaWFsIHwgbnVsbCB7XG4gICAgY29uc3QgbXRvb25UeXBlID0gdGhpcy5tdG9vbk1hdGVyaWFsUGx1Z2luLmdldE1hdGVyaWFsVHlwZShtYXRlcmlhbEluZGV4KTtcbiAgICBpZiAobXRvb25UeXBlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBtdG9vblR5cGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZXh0ZW5kTWF0ZXJpYWxQYXJhbXMobWF0ZXJpYWxJbmRleDogbnVtYmVyLCBtYXRlcmlhbFBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IFByb21pc2U8YW55PiB7XG4gICAgYXdhaXQgdGhpcy5tYXRlcmlhbHNIRFJFbWlzc2l2ZU11bHRpcGxpZXJQbHVnaW4uZXh0ZW5kTWF0ZXJpYWxQYXJhbXMobWF0ZXJpYWxJbmRleCwgbWF0ZXJpYWxQYXJhbXMpO1xuICAgIGF3YWl0IHRoaXMubXRvb25NYXRlcmlhbFBsdWdpbi5leHRlbmRNYXRlcmlhbFBhcmFtcyhtYXRlcmlhbEluZGV4LCBtYXRlcmlhbFBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWZ0ZXJSb290KGdsdGY6IEdMVEYpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLm1ldGFQbHVnaW4uYWZ0ZXJSb290KGdsdGYpO1xuICAgIGF3YWl0IHRoaXMuaHVtYW5vaWRQbHVnaW4uYWZ0ZXJSb290KGdsdGYpO1xuICAgIGF3YWl0IHRoaXMuZXhwcmVzc2lvblBsdWdpbi5hZnRlclJvb3QoZ2x0Zik7XG4gICAgYXdhaXQgdGhpcy5sb29rQXRQbHVnaW4uYWZ0ZXJSb290KGdsdGYpO1xuICAgIGF3YWl0IHRoaXMuZmlyc3RQZXJzb25QbHVnaW4uYWZ0ZXJSb290KGdsdGYpO1xuICAgIGF3YWl0IHRoaXMuc3ByaW5nQm9uZVBsdWdpbi5hZnRlclJvb3QoZ2x0Zik7XG4gICAgYXdhaXQgdGhpcy5ub2RlQ29uc3RyYWludFBsdWdpbi5hZnRlclJvb3QoZ2x0Zik7XG4gICAgYXdhaXQgdGhpcy5tdG9vbk1hdGVyaWFsUGx1Z2luLmFmdGVyUm9vdChnbHRmKTtcblxuICAgIGNvbnN0IG1ldGEgPSBnbHRmLnVzZXJEYXRhLnZybU1ldGEgYXMgVlJNTWV0YSB8IG51bGw7XG4gICAgY29uc3QgaHVtYW5vaWQgPSBnbHRmLnVzZXJEYXRhLnZybUh1bWFub2lkIGFzIFZSTUh1bWFub2lkIHwgbnVsbDtcblxuICAgIC8vIG1ldGEgYW5kIGh1bWFub2lkIGFyZSByZXF1aXJlZCB0byBiZSBhIFZSTS5cbiAgICAvLyBEb24ndCBjcmVhdGUgVlJNIGlmIHRoZXkgYXJlIG51bGxcbiAgICBpZiAobWV0YSAmJiBodW1hbm9pZCkge1xuICAgICAgY29uc3QgdnJtID0gbmV3IFZSTSh7XG4gICAgICAgIHNjZW5lOiBnbHRmLnNjZW5lLFxuICAgICAgICBleHByZXNzaW9uTWFuYWdlcjogZ2x0Zi51c2VyRGF0YS52cm1FeHByZXNzaW9uTWFuYWdlcixcbiAgICAgICAgZmlyc3RQZXJzb246IGdsdGYudXNlckRhdGEudnJtRmlyc3RQZXJzb24sXG4gICAgICAgIGh1bWFub2lkLFxuICAgICAgICBsb29rQXQ6IGdsdGYudXNlckRhdGEudnJtTG9va0F0LFxuICAgICAgICBtZXRhLFxuICAgICAgICBtYXRlcmlhbHM6IGdsdGYudXNlckRhdGEudnJtTVRvb25NYXRlcmlhbHMsXG4gICAgICAgIHNwcmluZ0JvbmVNYW5hZ2VyOiBnbHRmLnVzZXJEYXRhLnZybVNwcmluZ0JvbmVNYW5hZ2VyLFxuICAgICAgICBub2RlQ29uc3RyYWludE1hbmFnZXI6IGdsdGYudXNlckRhdGEudnJtTm9kZUNvbnN0cmFpbnRNYW5hZ2VyLFxuICAgICAgfSk7XG5cbiAgICAgIGdsdGYudXNlckRhdGEudnJtID0gdnJtO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gU2VlOiBodHRwczovL3RocmVlanMub3JnL2RvY3MvI21hbnVhbC9lbi9pbnRyb2R1Y3Rpb24vSG93LXRvLWRpc3Bvc2Utb2Ytb2JqZWN0c1xuXG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbmZ1bmN0aW9uIGRpc3Bvc2VNYXRlcmlhbChtYXRlcmlhbDogVEhSRUUuTWF0ZXJpYWwpOiB2b2lkIHtcbiAgT2JqZWN0LnZhbHVlcyhtYXRlcmlhbCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICBpZiAodmFsdWU/LmlzVGV4dHVyZSkge1xuICAgICAgY29uc3QgdGV4dHVyZSA9IHZhbHVlIGFzIFRIUkVFLlRleHR1cmU7XG4gICAgICB0ZXh0dXJlLmRpc3Bvc2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICgobWF0ZXJpYWwgYXMgYW55KS5pc1NoYWRlck1hdGVyaWFsKSB7XG4gICAgY29uc3QgdW5pZm9ybXM6IHsgW3VuaWZvcm06IHN0cmluZ106IFRIUkVFLklVbmlmb3JtPGFueT4gfSA9IChtYXRlcmlhbCBhcyBhbnkpLnVuaWZvcm1zO1xuICAgIGlmICh1bmlmb3Jtcykge1xuICAgICAgT2JqZWN0LnZhbHVlcyh1bmlmb3JtcykuZm9yRWFjaCgodW5pZm9ybSkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHVuaWZvcm0udmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZT8uaXNUZXh0dXJlKSB7XG4gICAgICAgICAgY29uc3QgdGV4dHVyZSA9IHZhbHVlIGFzIFRIUkVFLlRleHR1cmU7XG4gICAgICAgICAgdGV4dHVyZS5kaXNwb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG1hdGVyaWFsLmRpc3Bvc2UoKTtcbn1cblxuZnVuY3Rpb24gZGlzcG9zZShvYmplY3QzRDogVEhSRUUuT2JqZWN0M0QpOiB2b2lkIHtcbiAgY29uc3QgZ2VvbWV0cnk6IFRIUkVFLkJ1ZmZlckdlb21ldHJ5IHwgdW5kZWZpbmVkID0gKG9iamVjdDNEIGFzIGFueSkuZ2VvbWV0cnk7XG4gIGlmIChnZW9tZXRyeSkge1xuICAgIGdlb21ldHJ5LmRpc3Bvc2UoKTtcbiAgfVxuXG4gIGNvbnN0IHNrZWxldG9uOiBUSFJFRS5Ta2VsZXRvbiB8IHVuZGVmaW5lZCA9IChvYmplY3QzRCBhcyBhbnkpLnNrZWxldG9uO1xuICBpZiAoc2tlbGV0b24pIHtcbiAgICBza2VsZXRvbi5kaXNwb3NlKCk7XG4gIH1cblxuICBjb25zdCBtYXRlcmlhbDogVEhSRUUuTWF0ZXJpYWwgfCBUSFJFRS5NYXRlcmlhbFtdIHwgdW5kZWZpbmVkID0gKG9iamVjdDNEIGFzIGFueSkubWF0ZXJpYWw7XG4gIGlmIChtYXRlcmlhbCkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG1hdGVyaWFsKSkge1xuICAgICAgbWF0ZXJpYWwuZm9yRWFjaCgobWF0ZXJpYWw6IFRIUkVFLk1hdGVyaWFsKSA9PiBkaXNwb3NlTWF0ZXJpYWwobWF0ZXJpYWwpKTtcbiAgICB9IGVsc2UgaWYgKG1hdGVyaWFsKSB7XG4gICAgICBkaXNwb3NlTWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVlcERpc3Bvc2Uob2JqZWN0M0Q6IFRIUkVFLk9iamVjdDNEKTogdm9pZCB7XG4gIG9iamVjdDNELnRyYXZlcnNlKGRpc3Bvc2UpO1xufVxuIiwiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG4vKipcbiAqIFRyYXZlcnNlIGdpdmVuIG9iamVjdCBhbmQgcmVtb3ZlIHVubmVjZXNzYXJpbHkgYm91bmQgam9pbnRzIGZyb20gZXZlcnkgYFRIUkVFLlNraW5uZWRNZXNoYC5cbiAqIFNvbWUgZW52aXJvbm1lbnRzIGxpa2UgbW9iaWxlIGRldmljZXMgaGF2ZSBhIGxvd2VyIGxpbWl0IG9mIGJvbmVzIGFuZCBtaWdodCBiZSB1bmFibGUgdG8gcGVyZm9ybSBtZXNoIHNraW5uaW5nLCB0aGlzIGZ1bmN0aW9uIG1pZ2h0IHJlc29sdmUgc3VjaCBhbiBpc3N1ZS5cbiAqIEFsc28gdGhpcyBmdW5jdGlvbiBtaWdodCBncmVhdGx5IGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIG1lc2ggc2tpbm5pbmcuXG4gKlxuICogQHBhcmFtIHJvb3QgUm9vdCBvYmplY3QgdGhhdCB3aWxsIGJlIHRyYXZlcnNlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVW5uZWNlc3NhcnlKb2ludHMocm9vdDogVEhSRUUuT2JqZWN0M0QpOiB2b2lkIHtcbiAgLy8gc29tZSBtZXNoZXMgbWlnaHQgc2hhcmUgYSBzYW1lIHNraW5JbmRleCBhdHRyaWJ1dGUgYW5kIHRoaXMgbWFwIHByZXZlbnRzIHRvIGNvbnZlcnQgdGhlIGF0dHJpYnV0ZSB0d2ljZVxuICBjb25zdCBza2VsZXRvbkxpc3Q6IE1hcDxUSFJFRS5CdWZmZXJBdHRyaWJ1dGUsIFRIUkVFLlNrZWxldG9uPiA9IG5ldyBNYXAoKTtcblxuICAvLyBUcmF2ZXJzZSBhbiBlbnRpcmUgdHJlZVxuICByb290LnRyYXZlcnNlKChvYmopID0+IHtcbiAgICBpZiAob2JqLnR5cGUgIT09ICdTa2lubmVkTWVzaCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNoID0gb2JqIGFzIFRIUkVFLlNraW5uZWRNZXNoO1xuICAgIGNvbnN0IGdlb21ldHJ5ID0gbWVzaC5nZW9tZXRyeTtcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSBnZW9tZXRyeS5nZXRBdHRyaWJ1dGUoJ3NraW5JbmRleCcpIGFzIFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTtcblxuICAgIC8vIGxvb2sgZm9yIGV4aXN0aW5nIHNrZWxldG9uXG4gICAgbGV0IHNrZWxldG9uID0gc2tlbGV0b25MaXN0LmdldChhdHRyaWJ1dGUpO1xuXG4gICAgaWYgKCFza2VsZXRvbikge1xuICAgICAgLy8gZ2VuZXJhdGUgcmVkdWNlZCBib25lIGxpc3RcbiAgICAgIGNvbnN0IGJvbmVzOiBUSFJFRS5Cb25lW10gPSBbXTsgLy8gbmV3IGxpc3Qgb2YgYm9uZVxuICAgICAgY29uc3QgYm9uZUludmVyc2VzOiBUSFJFRS5NYXRyaXg0W10gPSBbXTsgLy8gbmV3IGxpc3Qgb2YgYm9uZUludmVyc2VcbiAgICAgIGNvbnN0IGJvbmVJbmRleE1hcDogeyBbaW5kZXg6IG51bWJlcl06IG51bWJlciB9ID0ge307IC8vIG1hcCBvZiBvbGQgYm9uZSBpbmRleCB2cy4gbmV3IGJvbmUgaW5kZXhcblxuICAgICAgLy8gY3JlYXRlIGEgbmV3IGJvbmUgbWFwXG4gICAgICBjb25zdCBhcnJheSA9IGF0dHJpYnV0ZS5hcnJheTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBhcnJheVtpXTtcblxuICAgICAgICAvLyBuZXcgc2tpbkluZGV4IGJ1ZmZlclxuICAgICAgICBpZiAoYm9uZUluZGV4TWFwW2luZGV4XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYm9uZUluZGV4TWFwW2luZGV4XSA9IGJvbmVzLmxlbmd0aDtcbiAgICAgICAgICBib25lcy5wdXNoKG1lc2guc2tlbGV0b24uYm9uZXNbaW5kZXhdKTtcbiAgICAgICAgICBib25lSW52ZXJzZXMucHVzaChtZXNoLnNrZWxldG9uLmJvbmVJbnZlcnNlc1tpbmRleF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJyYXlbaV0gPSBib25lSW5kZXhNYXBbaW5kZXhdO1xuICAgICAgfVxuXG4gICAgICAvLyByZXBsYWNlIHdpdGggbmV3IGluZGljZXNcbiAgICAgIGF0dHJpYnV0ZS5jb3B5QXJyYXkoYXJyYXkpO1xuICAgICAgYXR0cmlidXRlLm5lZWRzVXBkYXRlID0gdHJ1ZTtcblxuICAgICAgLy8gcmVwbGFjZSB3aXRoIG5ldyBpbmRpY2VzXG4gICAgICBza2VsZXRvbiA9IG5ldyBUSFJFRS5Ta2VsZXRvbihib25lcywgYm9uZUludmVyc2VzKTtcbiAgICAgIHNrZWxldG9uTGlzdC5zZXQoYXR0cmlidXRlLCBza2VsZXRvbik7XG4gICAgfVxuXG4gICAgbWVzaC5iaW5kKHNrZWxldG9uLCBuZXcgVEhSRUUuTWF0cml4NCgpKTtcbiAgICAvLyAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl4gdHJhbnNmb3JtIG9mIG1lc2hlcyBzaG91bGQgYmUgaWdub3JlZFxuICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9nbFRGL3RyZWUvbWFzdGVyL3NwZWNpZmljYXRpb24vMi4wI3NraW5zXG4gIH0pO1xufVxuIiwiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgQnVmZmVyQXR0cmlidXRlIH0gZnJvbSAndGhyZWUnO1xuXG4vKipcbiAqIFRyYXZlcnNlIGdpdmVuIG9iamVjdCBhbmQgcmVtb3ZlIHVubmVjZXNzYXJ5IHZlcnRpY2VzIGZyb20gZXZlcnkgQnVmZmVyR2VvbWV0cmllcy5cbiAqIFRoaXMgb25seSBwcm9jZXNzZXMgYnVmZmVyIGdlb21ldHJpZXMgd2l0aCBpbmRleCBidWZmZXIuXG4gKlxuICogVGhyZWUuanMgY3JlYXRlcyBtb3JwaCB0ZXh0dXJlcyBmb3IgZWFjaCBnZW9tZXRyaWVzIGFuZCBpdCBzb21ldGltZXMgY29uc3VtZXMgdW5uZWNlc3NhcnkgYW1vdW50IG9mIFZSQU0gZm9yIGNlcnRhaW4gbW9kZWxzLlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIG9wdGltaXplIGdlb21ldHJpZXMgdG8gcmVkdWNlIHRoZSBzaXplIG9mIG1vcnBoIHRleHR1cmUuXG4gKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tcmRvb2IvdGhyZWUuanMvaXNzdWVzLzIzMDk1XG4gKlxuICogQHBhcmFtIHJvb3QgUm9vdCBvYmplY3QgdGhhdCB3aWxsIGJlIHRyYXZlcnNlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVW5uZWNlc3NhcnlWZXJ0aWNlcyhyb290OiBUSFJFRS5PYmplY3QzRCk6IHZvaWQge1xuICBjb25zdCBnZW9tZXRyeU1hcCA9IG5ldyBNYXA8VEhSRUUuQnVmZmVyR2VvbWV0cnksIFRIUkVFLkJ1ZmZlckdlb21ldHJ5PigpO1xuXG4gIC8vIFRyYXZlcnNlIGFuIGVudGlyZSB0cmVlXG4gIHJvb3QudHJhdmVyc2UoKG9iaikgPT4ge1xuICAgIGlmICghKG9iaiBhcyBhbnkpLmlzTWVzaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1lc2ggPSBvYmogYXMgVEhSRUUuTWVzaDtcbiAgICBjb25zdCBnZW9tZXRyeSA9IG1lc2guZ2VvbWV0cnk7XG5cbiAgICAvLyBpZiB0aGUgZ2VvbWV0cnkgZG9lcyBub3QgaGF2ZSBhbiBpbmRleCBidWZmZXIgaXQgZG9lcyBub3QgbmVlZCB0byBwcm9jZXNzXG4gICAgY29uc3Qgb3JpZ2lhbmxJbmRleCA9IGdlb21ldHJ5LmluZGV4O1xuICAgIGlmIChvcmlnaWFubEluZGV4ID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBza2lwIGFscmVhZHkgcHJvY2Vzc2VkIGdlb21ldHJ5XG4gICAgY29uc3QgbmV3R2VvbWV0cnlBbHJlYWR5RXhpc3RlZCA9IGdlb21ldHJ5TWFwLmdldChnZW9tZXRyeSk7XG4gICAgaWYgKG5ld0dlb21ldHJ5QWxyZWFkeUV4aXN0ZWQgIT0gbnVsbCkge1xuICAgICAgbWVzaC5nZW9tZXRyeSA9IG5ld0dlb21ldHJ5QWxyZWFkeUV4aXN0ZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV3R2VvbWV0cnkgPSBuZXcgVEhSRUUuQnVmZmVyR2VvbWV0cnkoKTtcblxuICAgIC8vIGNvcHkgdmFyaW91cyBwcm9wZXJ0aWVzXG4gICAgLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL2Jsb2IvMWEyNDFlZjEwMDQ4NzcwZDU2ZTA2ZDZjZDZhNjRjNzZjYzcyMGY5NS9zcmMvY29yZS9CdWZmZXJHZW9tZXRyeS5qcyNMMTAxMVxuICAgIG5ld0dlb21ldHJ5Lm5hbWUgPSBnZW9tZXRyeS5uYW1lO1xuXG4gICAgbmV3R2VvbWV0cnkubW9ycGhUYXJnZXRzUmVsYXRpdmUgPSBnZW9tZXRyeS5tb3JwaFRhcmdldHNSZWxhdGl2ZTtcblxuICAgIGdlb21ldHJ5Lmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgbmV3R2VvbWV0cnkuYWRkR3JvdXAoZ3JvdXAuc3RhcnQsIGdyb3VwLmNvdW50LCBncm91cC5tYXRlcmlhbEluZGV4KTtcbiAgICB9KTtcblxuICAgIG5ld0dlb21ldHJ5LmJvdW5kaW5nQm94ID0gZ2VvbWV0cnkuYm91bmRpbmdCb3g/LmNsb25lKCkgPz8gbnVsbDtcbiAgICBuZXdHZW9tZXRyeS5ib3VuZGluZ1NwaGVyZSA9IGdlb21ldHJ5LmJvdW5kaW5nU3BoZXJlPy5jbG9uZSgpID8/IG51bGw7XG5cbiAgICBuZXdHZW9tZXRyeS5zZXREcmF3UmFuZ2UoZ2VvbWV0cnkuZHJhd1JhbmdlLnN0YXJ0LCBnZW9tZXRyeS5kcmF3UmFuZ2UuY291bnQpO1xuXG4gICAgbmV3R2VvbWV0cnkudXNlckRhdGEgPSBnZW9tZXRyeS51c2VyRGF0YTtcblxuICAgIC8vIHNldCB0byBnZW9tZXRyeU1hcFxuICAgIGdlb21ldHJ5TWFwLnNldChnZW9tZXRyeSwgbmV3R2VvbWV0cnkpO1xuXG4gICAgLyoqIGZyb20gb3JpZ2luYWwgaW5kZXggdG8gbmV3IGluZGV4ICovXG4gICAgY29uc3Qgb3JpZ2luYWxJbmRleE5ld0luZGV4TWFwOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgLyoqIGZyb20gbmV3IGluZGV4IHRvIG9yaWdpbmFsIGluZGV4ICovXG4gICAgY29uc3QgbmV3SW5kZXhPcmlnaW5hbEluZGV4TWFwOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgLy8gcmVvcmdhbml6ZSBpbmRpY2VzXG4gICAge1xuICAgICAgY29uc3Qgb3JpZ2luYWxJbmRleEFycmF5ID0gb3JpZ2lhbmxJbmRleC5hcnJheTtcbiAgICAgIGNvbnN0IG5ld0luZGV4QXJyYXkgPSBuZXcgKG9yaWdpbmFsSW5kZXhBcnJheS5jb25zdHJ1Y3RvciBhcyBhbnkpKG9yaWdpbmFsSW5kZXhBcnJheS5sZW5ndGgpO1xuXG4gICAgICBsZXQgaW5kZXhIZWFkID0gMDtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcmlnaW5hbEluZGV4QXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxJbmRleCA9IG9yaWdpbmFsSW5kZXhBcnJheVtpXTtcblxuICAgICAgICBsZXQgbmV3SW5kZXggPSBvcmlnaW5hbEluZGV4TmV3SW5kZXhNYXBbb3JpZ2luYWxJbmRleF07XG4gICAgICAgIGlmIChuZXdJbmRleCA9PSBudWxsKSB7XG4gICAgICAgICAgb3JpZ2luYWxJbmRleE5ld0luZGV4TWFwW29yaWdpbmFsSW5kZXhdID0gaW5kZXhIZWFkO1xuICAgICAgICAgIG5ld0luZGV4T3JpZ2luYWxJbmRleE1hcFtpbmRleEhlYWRdID0gb3JpZ2luYWxJbmRleDtcbiAgICAgICAgICBuZXdJbmRleCA9IGluZGV4SGVhZDtcbiAgICAgICAgICBpbmRleEhlYWQrKztcbiAgICAgICAgfVxuICAgICAgICBuZXdJbmRleEFycmF5W2ldID0gbmV3SW5kZXg7XG4gICAgICB9XG5cbiAgICAgIG5ld0dlb21ldHJ5LnNldEluZGV4KG5ldyBCdWZmZXJBdHRyaWJ1dGUobmV3SW5kZXhBcnJheSwgMSwgZmFsc2UpKTtcbiAgICB9XG5cbiAgICAvLyByZW9yZ2FuaXplIGF0dHJpYnV0ZXNcbiAgICBPYmplY3Qua2V5cyhnZW9tZXRyeS5hdHRyaWJ1dGVzKS5mb3JFYWNoKChhdHRyaWJ1dGVOYW1lKSA9PiB7XG4gICAgICBjb25zdCBvcmlnaW5hbEF0dHJpYnV0ZSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0gYXMgVEhSRUUuQnVmZmVyQXR0cmlidXRlO1xuXG4gICAgICBpZiAoKG9yaWdpbmFsQXR0cmlidXRlIGFzIGFueSkuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlbW92ZVVubmVjZXNzYXJ5VmVydGljZXM6IEludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb3JpZ2luYWxBdHRyaWJ1dGVBcnJheSA9IG9yaWdpbmFsQXR0cmlidXRlLmFycmF5O1xuICAgICAgY29uc3QgeyBpdGVtU2l6ZSwgbm9ybWFsaXplZCB9ID0gb3JpZ2luYWxBdHRyaWJ1dGU7XG5cbiAgICAgIGNvbnN0IG5ld0F0dHJpYnV0ZUFycmF5ID0gbmV3IChvcmlnaW5hbEF0dHJpYnV0ZUFycmF5LmNvbnN0cnVjdG9yIGFzIGFueSkoXG4gICAgICAgIG5ld0luZGV4T3JpZ2luYWxJbmRleE1hcC5sZW5ndGggKiBpdGVtU2l6ZSxcbiAgICAgICk7XG5cbiAgICAgIG5ld0luZGV4T3JpZ2luYWxJbmRleE1hcC5mb3JFYWNoKChvcmlnaW5hbEluZGV4LCBpKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaXRlbVNpemU7IGorKykge1xuICAgICAgICAgIG5ld0F0dHJpYnV0ZUFycmF5W2kgKiBpdGVtU2l6ZSArIGpdID0gb3JpZ2luYWxBdHRyaWJ1dGVBcnJheVtvcmlnaW5hbEluZGV4ICogaXRlbVNpemUgKyBqXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIG5ld0dlb21ldHJ5LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBuZXcgQnVmZmVyQXR0cmlidXRlKG5ld0F0dHJpYnV0ZUFycmF5LCBpdGVtU2l6ZSwgbm9ybWFsaXplZCkpO1xuICAgIH0pO1xuXG4gICAgLy8gcmVvcmdhbml6ZSBtb3JwaCBhdHRyaWJ1dGVzXG4gICAgLyoqIFRydWUgaWYgYWxsIG1vcnBocyBhcmUgemVyby4gKi9cbiAgICBsZXQgaXNOdWxsTW9ycGggPSB0cnVlO1xuXG4gICAgT2JqZWN0LmtleXMoZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzKS5mb3JFYWNoKChhdHRyaWJ1dGVOYW1lKSA9PiB7XG4gICAgICBuZXdHZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0gPSBbXTtcblxuICAgICAgY29uc3QgbW9ycGhzID0gZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdO1xuICAgICAgZm9yIChsZXQgaU1vcnBoID0gMDsgaU1vcnBoIDwgbW9ycGhzLmxlbmd0aDsgaU1vcnBoKyspIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxBdHRyaWJ1dGUgPSBtb3JwaHNbaU1vcnBoXSBhcyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGU7XG5cbiAgICAgICAgaWYgKChvcmlnaW5hbEF0dHJpYnV0ZSBhcyBhbnkpLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlbW92ZVVubmVjZXNzYXJ5VmVydGljZXM6IEludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQXR0cmlidXRlQXJyYXkgPSBvcmlnaW5hbEF0dHJpYnV0ZS5hcnJheTtcbiAgICAgICAgY29uc3QgeyBpdGVtU2l6ZSwgbm9ybWFsaXplZCB9ID0gb3JpZ2luYWxBdHRyaWJ1dGU7XG5cbiAgICAgICAgY29uc3QgbmV3QXR0cmlidXRlQXJyYXkgPSBuZXcgKG9yaWdpbmFsQXR0cmlidXRlQXJyYXkuY29uc3RydWN0b3IgYXMgYW55KShcbiAgICAgICAgICBuZXdJbmRleE9yaWdpbmFsSW5kZXhNYXAubGVuZ3RoICogaXRlbVNpemUsXG4gICAgICAgICk7XG5cbiAgICAgICAgbmV3SW5kZXhPcmlnaW5hbEluZGV4TWFwLmZvckVhY2goKG9yaWdpbmFsSW5kZXgsIGkpID0+IHtcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGl0ZW1TaXplOyBqKyspIHtcbiAgICAgICAgICAgIG5ld0F0dHJpYnV0ZUFycmF5W2kgKiBpdGVtU2l6ZSArIGpdID0gb3JpZ2luYWxBdHRyaWJ1dGVBcnJheVtvcmlnaW5hbEluZGV4ICogaXRlbVNpemUgKyBqXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlzTnVsbE1vcnBoID0gaXNOdWxsTW9ycGggJiYgbmV3QXR0cmlidXRlQXJyYXkuZXZlcnkoKHY6IG51bWJlcikgPT4gdiA9PT0gMCk7XG5cbiAgICAgICAgbmV3R2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdW2lNb3JwaF0gPSBuZXcgQnVmZmVyQXR0cmlidXRlKFxuICAgICAgICAgIG5ld0F0dHJpYnV0ZUFycmF5LFxuICAgICAgICAgIGl0ZW1TaXplLFxuICAgICAgICAgIG5vcm1hbGl6ZWQsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBJZiBhbGwgbW9ycGhzIGFyZSB6ZXJvLCBqdXN0IGRpc2NhcmQgdGhlIG1vcnBoIGF0dHJpYnV0ZXMgd2UndmUganVzdCBtYWRlXG4gICAgaWYgKGlzTnVsbE1vcnBoKSB7XG4gICAgICBuZXdHZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMgPSB7fTtcbiAgICB9XG5cbiAgICBtZXNoLmdlb21ldHJ5ID0gbmV3R2VvbWV0cnk7XG4gIH0pO1xuXG4gIEFycmF5LmZyb20oZ2VvbWV0cnlNYXAua2V5cygpKS5mb3JFYWNoKChvcmlnaW5hbEdlb21ldHJ5KSA9PiB7XG4gICAgb3JpZ2luYWxHZW9tZXRyeS5kaXNwb3NlKCk7XG4gIH0pO1xufVxuIiwiaW1wb3J0IHsgVlJNIH0gZnJvbSAnLi4vVlJNJztcblxuLyoqXG4gKiBJZiB0aGUgZ2l2ZW4gVlJNIGlzIFZSTTAuMCwgcm90YXRlIHRoZSBgdnJtLnNjZW5lYCBieSAxODAgZGVncmVlcyBhcm91bmQgdGhlIFkgYXhpcy5cbiAqXG4gKiBAcGFyYW0gdnJtIFRoZSB0YXJnZXQgVlJNXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVWUk0wKHZybTogVlJNKTogdm9pZCB7XG4gIGlmICh2cm0ubWV0YT8ubWV0YVZlcnNpb24gPT09ICcwJykge1xuICAgIHZybS5zY2VuZS5yb3RhdGlvbi55ID0gTWF0aC5QSTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgZGVlcERpc3Bvc2UgfSBmcm9tICcuL2RlZXBEaXNwb3NlJztcbmltcG9ydCB7IHJlbW92ZVVubmVjZXNzYXJ5Sm9pbnRzIH0gZnJvbSAnLi9yZW1vdmVVbm5lY2Vzc2FyeUpvaW50cyc7XG5pbXBvcnQgeyByZW1vdmVVbm5lY2Vzc2FyeVZlcnRpY2VzIH0gZnJvbSAnLi9yZW1vdmVVbm5lY2Vzc2FyeVZlcnRpY2VzJztcbmltcG9ydCB7IHJvdGF0ZVZSTTAgfSBmcm9tICcuL3JvdGF0ZVZSTTAnO1xuXG5leHBvcnQgY2xhc3MgVlJNVXRpbHMge1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIHRoaXMgY2xhc3MgaXMgbm90IG1lYW50IHRvIGJlIGluc3RhbnRpYXRlZFxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkZWVwRGlzcG9zZSA9IGRlZXBEaXNwb3NlO1xuICBwdWJsaWMgc3RhdGljIHJlbW92ZVVubmVjZXNzYXJ5Sm9pbnRzID0gcmVtb3ZlVW5uZWNlc3NhcnlKb2ludHM7XG4gIHB1YmxpYyBzdGF0aWMgcmVtb3ZlVW5uZWNlc3NhcnlWZXJ0aWNlcyA9IHJlbW92ZVVubmVjZXNzYXJ5VmVydGljZXM7XG4gIHB1YmxpYyBzdGF0aWMgcm90YXRlVlJNMCA9IHJvdGF0ZVZSTTA7XG59XG4iXSwibmFtZXMiOlsiX19hd2FpdGVyIiwiX3YzQSQ0IiwiX3YzQiQyIiwicXVhdEludmVydENvbXBhdCIsIl92M0EkMyIsIl92M0EkMiIsIl9xdWF0QSQzIiwiUE9TU0lCTEVfU1BFQ19WRVJTSU9OUyQyIiwiX3F1YXRBJDIiLCJfcXVhdEIkMiIsIl92M0EkMSIsIl92M0IkMSIsIl92M0EiLCJfdjNCIiwiX3YzQyIsIl9xdWF0QSQxIiwiX3F1YXRCJDEiLCJfcXVhdEMiLCJfcXVhdEEiLCJfcXVhdEIiLCJQT1NTSUJMRV9TUEVDX1ZFUlNJT05TJDEiLCJQT1NTSUJMRV9TUEVDX1ZFUlNJT05TIiwidHJhdmVyc2VBbmNlc3RvcnNGcm9tUm9vdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTSxhQUFhLFNBQVMsS0FBSyxDQUFDLFFBQVEsQ0FBQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxtQkFBbUIsR0FBRztBQUM5QixRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxPQUFPLEVBQUU7QUFDNUMsWUFBWSxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDakQsU0FBUztBQUNULGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLE9BQU8sRUFBRTtBQUNqRCxZQUFZLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUMvQixTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksT0FBTyxHQUFHLENBQUM7QUFDdkIsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxvQkFBb0IsR0FBRztBQUMvQixRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxPQUFPLEVBQUU7QUFDN0MsWUFBWSxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDakQsU0FBUztBQUNULGFBQWEsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLE9BQU8sRUFBRTtBQUNsRCxZQUFZLE9BQU8sSUFBSSxDQUFDLE1BQU0s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RUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUN0RCxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUNoSCxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLFVBQVUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUMvRCxRQUFRLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDbkcsUUFBUSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDdEcsUUFBUSxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFDdEgsUUFBUSxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUUsS0FB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UUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ25FLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEUsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RSxTQUFTO0FBQ1QsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDbEYsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEYsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxQyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hHLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FB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UyxDQUFDLHNCQUFzQixDQUFDRCxRQUFNLENBQUMsQ0FBQztBQUN0RCxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUNGLFVBQVEsQ0FBQyxDQUFDO0FBQzFEO0FBQ0EsUUFBUUEsVUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDQyxVQUFRLENBQUMsQ0FBQyxDQUFDO0FBQzNFO0FBQ0EsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUNDLFFBQU0sQ0FBQyxDQUFDO0FBQzVDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDRixVQUFRLENBQUMsQ0FBQztBQUNoRCxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQ0UsUUFBTSxDQUFDLENBQUM7QUFDOUMsUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUNGLFVBQVEsQ0FBQyxDQUFDO0FBQ2xELFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDQyxVQUFRLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0YsUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDMUQ7QUFDQSxRQUFRLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUN0RCxRQUFRLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxVQUFVLEVBQUU7QUFDMUMsWUFBWSxNQUFNLENBQUMsZ0JBQWdCLENBQUNFLFFBQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQ0QsUUFBTSxDQUFDLENBQUM7QUFDeEQsWUFBWSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDQyxRQUFNLENBQUMsQ0FBQztBQUN4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LENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN0RyxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUN0SCxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RSxLQUFLLENBQUMsQ0FBQztBQUNQOztBQzFIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxXQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQ3RELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN0RyxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUN0SCxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RSxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRDtBQUNBLElBQUksWUFBWSxHQUFHLCs3R0FBKzdHLENBQUM7QUFDbjlHO0FBQ0EsSUFBSSxjQUFjLEdBQUcsa3owQkFBa3owQixDQUFDO0FBQ3gwMEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDSyxNQUFDLHNCQUFzQixHQUFHO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxFQUFFLE1BQU07QUFDaEI7QUFDQTtBQUNBO0FBQ0EsSUFBSSxNQUFNLEVBQUUsUUFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQSxJQUFJLFlBQVksRUFBRSxjQUFjO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLElBQUksRUFBRSxFQUFFLElBQUk7QUFDWixFQUFFO0FBQ0Y7QUFDQTtBQUNLLE1BQUMsNkJBQTZCLEdBQUc7QUFDdEMsSUFBSSxJQUFJLEVBQUUsTUFBTTtBQUNoQixJQUFJLGdCQUFnQixFQUFFLGtCQUFrQjtBQUN4QyxJQUFJLGlCQUFpQixFQUFFLG1CQUFtQjtBQUMxQyxFQUFFO0FBQ0Y7QUFDQSxNQUFNLHFCQUFxQixHQUFHO0FBQzlCLElBQUksSUFBSSxFQUFFLEVBQUU7QUFDWixJQUFJLElBQUksRUFBRSxNQUFNO0FBQ2hCLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsb0JBQW9CLENBQUMsT0FBTyxFQUFFO0FBQ3ZDLElBQUksSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUU7QUFDN0MsUUFBUSxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUM7QUFDbEMsS0FBSztBQUNMLFNBQVM7QUFDVCxRQUFRLE9BQU8scUJBQXFCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZELEtBQUs7QUFDTCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sYUFBYSxTQUFTLEtBQUssQ0FBQyxjQUFjLENBQUM7QUFDakQsSUFBSSxJQUFJLEtBQUssR0FBRztBQUNoQixRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0FBQzdDLEtBQUs7QUFDTCxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtBQUNyQixRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDOUMsS0FBSztBQUNMLElBQUksSUFBSSxHQUFHLEdBQUc7QUFDZCxRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTCxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRTtBQUNuQixRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDeEMsS0FBSztBQUNMLElBQUksSUFBSSxTQUFTLEdBQUc7QUFDcEIsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztBQUM3QyxLQUFLO0FBQ0wsSUFBSSxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUU7QUFDekIsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzlDLEtBQUs7QUFDTCxJQUFJLElBQUksV0FBVyxHQUFHO0FBQ3RCLFFBQVEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7QUFDL0MsS0FBSztBQUNMLElBQUksSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFO0FBQzNCLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNoRCxLQUFLO0FBQ0wsSUFBSSxJQUFJLFFBQVEsR0FBRztBQUNuQixRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0FBQzVDLEtBQUs7QUFDTCxJQUFJLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRTtBQUN4QixRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDN0MsS0FBSztBQUNMLElBQUksSUFBSSxpQkFBaUIsR0FBRztBQUM1QixRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7QUFDckQsS0FBSztBQUNMLElBQUksSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUU7QUFDakMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDdEQsS0FBSztBQUNMLElBQUksSUFBSSxXQUFXLEdBQUc7QUFDdEIsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztBQUMvQyxLQUFLO0FBQ0wsSUFBSSxJQUFJLFdBQVcsQ0FBQyxLQUFLLEVBQUU7QUFDM0IsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ2hELEtBQUs7QUFDTCxJQUFJLElBQUksZ0JBQWdCLEdBQUc7QUFDM0IsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3BELEtBQUs7QUFDTCxJQUFJLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFO0FBQ2hDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3JELEtBQUs7QUFDTCxJQUFJLElBQUksb0JBQW9CLEdBQUc7QUFDL0IsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDO0FBQ3hELEtBQUs7QUFDTCxJQUFJLElBQUksb0JBQW9CLENBQUMsS0FBSyxFQUFFO0FBQ3BDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3pELEtBQUs7QUFDTCxJQUFJLElBQUksa0JBQWtCLEdBQUc7QUFDN0IsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO0FBQ3RELEtBQUs7QUFDTCxJQUFJLElBQUksa0JBQWtCLENBQUMsS0FBSyxFQUFFO0FBQ2xDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3ZELEtBQUs7QUFDTCxJQUFJLElBQUksbUJBQW1CLEdBQUc7QUFDOUIsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDO0FBQ3ZELEtBQUs7QUFDTCxJQUFJLElBQUksbUJBQW1CLENBQUMsS0FBSyxFQUFFO0FBQ25DLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3hELEtBQUs7QUFDTCxJQUFJLElBQUksd0JBQXdCLEdBQUc7QUFDbkMsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDO0FBQzVELEtBQUs7QUFDTCxJQUFJLElBQUksd0JBQXdCLENBQUMsS0FBSyxFQUFFO0FBQ3hDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzdELEtBQUs7QUFDTCxJQUFJLElBQUksa0JBQWtCLEdBQUc7QUFDN0IsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO0FBQ3RELEtBQUs7QUFDTCxJQUFJLElBQUksa0JBQWtCLENBQUMsS0FBSyxFQUFFO0FBQ2xDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3ZELEtBQUs7QUFDTCxJQUFJLElBQUksb0JBQW9CLEdBQUc7QUFDL0IsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDO0FBQ3hELEtBQUs7QUFDTCxJQUFJLElBQUksb0JBQW9CLENBQUMsS0FBSyxFQUFFO0FBQ3BDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3pELEtBQUs7QUFDTCxJQUFJLElBQUksWUFBWSxHQUFHO0FBQ3ZCLFFBQVEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7QUFDaEQsS0FBSztBQUNMLElBQUksSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFO0FBQzVCLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqRCxLQUFLO0FBQ0wsSUFBSSxJQUFJLGFBQWEsR0FBRztBQUN4QixRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0FBQ2pELEtBQUs7QUFDTCxJQUFJLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRTtBQUM3QixRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbEQsS0FBSztBQUNMLElBQUksSUFBSSx3QkFBd0IsR0FBRztBQUNuQyxRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUM7QUFDNUQsS0FBSztBQUNMLElBQUksSUFBSSx3QkFBd0IsQ0FBQyxLQUFLLEVBQUU7QUFDeEMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDN0QsS0FBSztBQUNMLElBQUksSUFBSSxrQkFBa0IsR0FBRztBQUM3QixRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7QUFDdEQsS0FBSztBQUNMLElBQUksSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7QUFDbEMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDdkQsS0FBSztBQUNMLElBQUksSUFBSSxvQkFBb0IsR0FBRztBQUMvQixRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7QUFDeEQsS0FBSztBQUNMLElBQUksSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUU7QUFDcEMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDekQsS0FBSztBQUNMLElBQUksSUFBSSwrQkFBK0IsR0FBRztBQUMxQyxRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUM7QUFDbkUsS0FBSztBQUNMLElBQUksSUFBSSwrQkFBK0IsQ0FBQyxLQUFLLEVBQUU7QUFDL0MsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLCtCQUErQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDcEUsS0FBSztBQUNMLElBQUksSUFBSSx1QkFBdUIsR0FBRztBQUNsQyxRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUM7QUFDM0QsS0FBSztBQUNMLElBQUksSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLEVBQUU7QUFDdkMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDNUQsS0FBSztBQUNMLElBQUksSUFBSSwyQkFBMkIsR0FBRztBQUN0QyxRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUM7QUFDL0QsS0FBSztBQUNMLElBQUksSUFBSSwyQkFBMkIsQ0FBQyxLQUFLLEVBQUU7QUFDM0MsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDaEUsS0FBSztBQUNMLElBQUksSUFBSSxrQkFBa0IsR0FBRztBQUM3QixRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7QUFDdEQsS0FBSztBQUNMLElBQUksSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7QUFDbEMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDdkQsS0FBSztBQUNMLElBQUksSUFBSSxrQkFBa0IsR0FBRztBQUM3QixRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7QUFDdEQsS0FBSztBQUNMLElBQUksSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7QUFDbEMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDdkQsS0FBSztBQUNMLElBQUksSUFBSSx3QkFBd0IsR0FBRztBQUNuQyxRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUM7QUFDNUQsS0FBSztBQUNMLElBQUksSUFBSSx3QkFBd0IsQ0FBQyxLQUFLLEVBQUU7QUFDeEMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDN0QsS0FBSztBQUNMLElBQUksSUFBSSxzQkFBc0IsR0FBRztBQUNqQyxRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUM7QUFDMUQsS0FBSztBQUNMLElBQUksSUFBSSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUU7QUFDdEMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDM0QsS0FBSztBQUNMLElBQUksSUFB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QUFDOUIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFO0FBQzNCLFFBQVEsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7QUFDbEMsUUFBUSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsUUFBUSxLQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLFFBQVEsS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZILEtBQUs7QUFDTCxJQUFJLElBQUksWUFBWSxHQUFHO0FBQ3ZCLFFBQVEsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLEtBQUs7QUFDTCxJQUFJLFdBQVcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFO0FBQ3JDLFFBQVEsS0FBSyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNuQyxRQUFRLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO0FBQzdCLFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0RCxRQUFRLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDbkQsUUFBUSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3RELFFBQVEsSUFBSSxDQUFDLDZCQUE2QixHQUFHLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3BFLEtBQUs7QUFDTCxJQUFJLFlBQVksR0FBRztBQUNuQixRQUFRLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDNUQsUUFB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QUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRSxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RSxTQUFTO0FBQ1QsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3JDLFlBQVksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDM0MsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RSxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLFNBQVM7QUFDVCxRQUFRLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxD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QUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDdkQ7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDOUQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN6QixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0FBQzNDLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDM0IsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHO0FBQ3hCLFlBQVksU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxTQUFTLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRztBQUNyRixZQUFZLFNBQVMsRUFBRSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsU0FBUyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUc7QUFDckYsWUFBWSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLFlBQVksTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHO0FBQzNGLFlBQVksVUFBVSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxVQUFVLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDNUssWUFBWSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLFNBQVMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHO0FBQ3JGLFNBQVMsQ0FBQztBQUNWLFFBQVEsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7QUFDN0MsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxZQUFZLEdBQUc7QUFDbkI7QUFDQSxRQUFRLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4RCxRQUFRLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM5RDtBQUNBLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3hCLFlBQVksSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3RFLFNBQVM7QUFDVCxhQUFhO0FBQ2I7QUFDQTtBQUNBLFlBQVksSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hFLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUMxSCxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMvQztBQUNBLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDekUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxLQUFLLEdBQUc7QUFDWixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUM5RDtBQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUNqQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFGO0FBQ0EsUUFBUSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RSxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDMUgsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDL0MsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRTtBQUNsQixRQUFRLElBQUksS0FBSyxJQUFJLENBQUM7QUFDdEIsWUFBWSxPQUFPO0FBQ25CO0FBQ0EsUUFBUSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztBQUN6QztBQUNBLFFBQVEsbUJBQW1CLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6RSxRQUFRLElBQUksbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RFLFFBQVEsb0JBQW9CLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDekYsUUFBUSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3BGO0FBQ0EsUUFBUSxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDMUc7QUFDQSxRQUFRLE1BQU0sbUJBQW1CLEdBQUcsSUFBSTtBQUN4QyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ2pDLGFBQWEsWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztBQUNuRCxhQUFhLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQztBQUNsRCxhQUFhLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQztBQUN0QyxhQUFhLFNBQVMsRUFBRSxDQUFDO0FBQ3pCO0FBQ0EsUUFBUSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN0SCxRQUFRLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hFO0FBQ0EsUUFBUSxTQUFTO0FBQ2pCLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7QUFDcEMsYUFBYSxHQUFHLENBQUMsSUFBSTtBQUNyQixhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0FBQ3BDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7QUFDaEMsYUFBYSxjQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekQsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNoRyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ2xHLGFBQWEsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDL0M7QUFDQSxRQUFRLFNBQVMsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDM0g7QUFDQSxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDbkM7QUFDQSxRQUFRLG1CQUFtQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsRSxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMvQyxRQUFRLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztBQUN2RjtBQUNBO0FBQ0EsUUFBUSxNQUFNLDBCQUEwQixHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7QUFDcEksUUFBUSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDbkosUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3RGO0FBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ2pDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUYsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUU7QUFDckIsUUFBUSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsS0FBSztBQUN2RCxZQUFZLGFBQWEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxLQUFLO0FBQzFELGdCQUFnQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFILGdCQUFnQixJQUFJLElBQUksR0FBRyxHQUFHLEVBQUU7QUFDaEM7QUFDQSxvQkFBb0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN6RDtBQUNBLG9CQUFvQixJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2xJLGlCQUFpQjtBQUNqQixhQUFhLENBQUMsQ0FBQztBQUNmLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx5QkFBeUIsR0FBRztBQUNoQyxRQUFRLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzFELFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3hCLFlBQVksSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDL0QsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFDdkQsWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDckQsU0FBUztBQUNULFFBQVEsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDN0QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEVBQUU7QUFDcEMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDMUIsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbEQsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM5QixTQUFTO0FBQ1QsUUFBUSxPQUFPLE1BQU0sQ0FBQztBQUN0QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVCQUF1QixDQUFDLE1BQU0sRUFBRTtBQUNwQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUMxQixZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekUsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM5QixTQUFTO0FBQ1QsUUFBUSxPQUFPLE1BQU0sQ0FBQztBQUN0QixLQUFLO0FBQ0wsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQ3RELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN0RyxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUN0SCxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RSxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRDtBQUNBLFNBQVMseUJBQXlCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTtBQUNyRCxJQUFJLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUN6QixJQUFJLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUN0QixJQUFJLE9BQU8sSUFBSSxLQUFLLElBQUksRUFBRTtBQUMxQixRQUFRLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEMsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUMzQixLQUFLO0FBQ0wsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxLQUFLO0FBQ3BDLFFBQVEsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzNCLEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGlDQUFpQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDN0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSztBQUN2QyxRQUFRLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2QyxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckIsWUFBWSxpQ0FBaUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDL0QsU0FBUztBQUNULEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNEO0FBQ0EsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQixJQUFJLFdBQVcsR0FBRztBQUNsQixRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNqQyxRQUFRLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQy9DLEtBQUs7QUFDTCxJQUFJLElBQUksTUFBTSxHQUFHO0FBQ2pCLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQzVCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksV0FBVyxHQUFHO0FBQ3RCLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO0FBQzdGLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQzVCLEtBQUs7QUFDTCxJQUFJLElBQUksY0FBYyxHQUFHO0FBQ3pCLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUM5QixRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxLQUFLO0FBQzdDLFlBQVksVUFBVSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLEtBQUs7QUFDakUsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDdkMsYUFBYSxDQUFDLENBQUM7QUFDZixTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLEtBQUs7QUFDTCxJQUFJLElBQUksU0FBUyxHQUFHO0FBQ3BCLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUM5QixRQUFRLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxLQUFLO0FBQ3ZELFlBQVksYUFBYSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEtBQUs7QUFDMUQsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEMsYUFBYSxDQUFDLENBQUM7QUFDZixTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLEtBQUs7QUFDTCxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDcEIsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxRQUFRLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25FLFFBQVEsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO0FBQy9CLFlBQVksU0FBUyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDbEMsWUFBWSxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbEUsU0FBUztBQUNULFFBQVEsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsSUFBSSxhQUFhLENBQUMsS0FBSyxFQUFFO0FBQ3pCLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO0FBQ3JHLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QixLQUFLO0FBQ0wsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFO0FBQ3ZCLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkMsUUFBUSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRSxRQUFRLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFO0FBQzVCLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxvRkFBb0YsQ0FBQyxDQUFDO0FBQzNHLFFBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxLQUFLO0FBQ0wsSUFBSSxZQUFZLEdBQUc7QUFDbkIsUUFBUSxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDM0MsUUFBUSxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzFDLFFBQVEsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUN4QyxRQUFRLEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUMvQyxZQUFZLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUM3SSxTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksS0FBSyxHQUFHO0FBQ1osUUFBUSxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDM0MsUUFBUSxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzFDLFFBQVEsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUN4QyxRQUFRLEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUMvQyxZQUFZLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN0SSxTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRTtBQUNsQixRQUFRLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUMzQyxRQUFRLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDMUMsUUFBUSxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ3hDLFFBQVEsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQy9DO0FBQ0EsWUFBWSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVJO0FBQ0E7QUFDQSxZQUFZLGlDQUFpQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUs7QUFDM0UsZ0JBQWdCLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUMzQjtBQUNBLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNoSyxvQkFBb0IsT0FBTyxJQUFJLENBQUM7QUFDaEMsaUJBQWlCO0FBQ2pCO0FBQ0EsZ0JBQWdCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkQsZ0JBQWdCLE9BQU8sS0FBSyxDQUFDO0FBQzdCLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksa0JBQWtCLENBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFO0FBQy9GLFFBQVEsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQzdDLFlBQVksT0FBTztBQUNuQixTQUFTO0FBQ1QsUUFBUSxJQUFJLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUM5QyxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsK0VBQStFLENBQUMsQ0FBQztBQUM3RyxTQUFTO0FBQ1QsUUFBUSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDekMsUUFBUSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDN0QsUUFBUSxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtBQUM1QyxZQUFZLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixLQUFLO0FBQ3hFLGdCQUFnQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDcEYsZ0JBQWdCLElBQUksU0FBUyxFQUFFO0FBQy9CLG9CQUFvQixLQUFLLE1BQU0sYUFBYSxJQUFJLFNBQVMsRUFBRTtBQUMzRCx3QkFBd0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzNILHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakIscUJBQXFCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7QUFDaEU7QUFDQSxvQkFBb0IsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RFLG9CQUFvQixhQUFhLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDekQsaUJBQWlCO0FBQ2pCLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsU0FBUztBQUNUO0FBQ0EsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ3ZDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDeEQsUUFBUSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDN0IsUUFBUSxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQyxRQUFRLGVBQWUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDeEMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdCQUFnQixDQUFDLFVBQVUsRUFBRTtBQUNqQyxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDOUIsUUFBUSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUM5QyxRQUFRLElBQUksTUFBTSxFQUFFO0FBQ3BCLFlBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QixTQUFTO0FBQ1QsUUFBUSxVQUFVLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsS0FBSztBQUM3RCxZQUFZLGFBQWEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxLQUFLO0FBQzFELGdCQUFnQixHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xDLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLE9BQU8sR0FBRyxDQUFDO0FBQ25CLEtBQUs7QUFDTCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLHNCQUFzQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUQsTUFBTSx5QkFBeUIsQ0FBQztBQUNoQyxJQUFJLElBQUksSUFBSSxHQUFHO0FBQ2YsUUFBUSxPQUFPLHlCQUF5QixDQUFDLGNBQWMsQ0FBQztBQUN4RCxLQUFLO0FBQ0wsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRTtBQUNqQyxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQzdCLFFBQVEsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO0FBQ3pHLFFBQVEsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztBQUMvRyxLQUFLO0FBQ0wsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFO0FBQ3BCLFFBQVEsT0FBTyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLGFBQWE7QUFDNUQsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxRSxTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDbEIsUUFBUSxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsYUFBYTtBQUM1RCxZQUFZLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RCxZQUFZLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtBQUNsQyxnQkFBZ0IsT0FBTyxRQUFRLENBQUM7QUFDaEMsYUFBYTtBQUNiLFlBQVksTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hELFlBQVksSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO0FBQ2xDLGdCQUFnQixPQUFPLFFBQVEsQ0FBQztBQUNoQyxhQUFhO0FBQ2IsWUFBWSxPQUFPLElBQUksQ0FBQztBQUN4QixTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUU7QUFDcEIsUUFBUSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDL0IsUUFBUSxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsYUFBYTtBQUM1RCxZQUFZLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQzFDO0FBQ0EsWUFBWSxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDbkssWUFBWSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7QUFDbkMsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDO0FBQzVCLGFBQWE7QUFDYixZQUFZLE1BQU0sT0FBTyxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztBQUN2RCxZQUFZLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekUsWUFBWSxNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3ZJLFlBQVksSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUM1QixnQkFBZ0IsT0FBTyxJQUFJLENBQUM7QUFDNUIsYUFBYTtBQUNiLFlBQVksTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQztBQUN0RCxZQUFZLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7QUFDMUQsZ0JBQWdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxtQ0FBbUMsRUFBRSx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVJLGdCQUFnQixPQUFPLElBQUksQ0FBQztBQUM1QixhQUFhO0FBQ2IsWUFBWSxNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsU0FBUyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxTQUFTLEtBQUs7QUFDcEksZ0JBQWdCLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN2QyxnQkFBZ0IsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RCxnQkFBZ0IsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQztBQUN6RCxnQkFBZ0IsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ3hDLG9CQUFvQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUU7QUFDNUQsd0JBQXdCLE1BQU0sRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2hKLHdCQUF3QixNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRztBQUNyRyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3ZCLGlCQUFpQjtBQUNqQixxQkFBcUIsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQzlDLG9CQUFvQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUU7QUFDN0Qsd0JBQXdCLE1BQU0sRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2pKLHdCQUF3QixNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRztBQUN0Ryx3QkFBd0IsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0kscUJBQXFCLENBQUMsQ0FBQztBQUN2QixpQkFBaUI7QUFDakIsZ0JBQWdCLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyx5Q0FBeUMsRUFBRSxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0FBQzVHLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsWUFBWSxNQUFNLGNBQWMsR0FBRyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsY0FBYyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLGNBQWMsS0FBSztBQUN4SixnQkFBZ0IsSUFBSSxFQUFFLENBQUM7QUFDdkIsZ0JBQWdCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLEtBQUs7QUFDM0gsb0JBQW9CLE1BQU0sR0FBRyxHQUFHLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzRyxvQkFBb0IsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO0FBQ3JDLHdCQUF3QixNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsOENBQThDLEVBQUUsY0FBYyxDQUFDLDhCQUE4QixFQUFFLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ25LLHFCQUFxQjtBQUNyQixvQkFBb0IsT0FBTyxHQUFHLENBQUM7QUFDL0IsaUJBQWlCLENBQUMsQ0FBQztBQUNuQixnQkFBZ0IsT0FBTztBQUN2QixvQkFBb0IsU0FBUyxFQUFFLElBQUk7QUFDbkMsb0JBQW9CLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxJQUFJO0FBQ2xELGlCQUFpQixDQUFDO0FBQ2xCLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsWUFBWSxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLEtBQUs7QUFDaEgsZ0JBQWdCLElBQUksRUFBRSxDQUFDO0FBQ3ZCLGdCQUFnQixNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO0FBQ3pEO0FBQ0EsZ0JBQWdCLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxFQUFFLEdBQUcsWUFBWSxDQUFDLGNBQWMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEtBQUs7QUFDbkosb0JBQW9CLE1BQU0sS0FBSyxHQUFHLGNBQWMsS0FBSyxJQUFJLElBQUksY0FBYyxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUNqSSxvQkFBb0IsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3ZDLHdCQUF3QixNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsdUNBQXVDLEVBQUUsT0FBTyxDQUFDLGtDQUFrQyxFQUFFLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQzlKLHFCQUFxQjtBQUNyQixvQkFBb0IsT0FBTyxLQUFLLENBQUM7QUFDakMsaUJBQWlCLENBQUMsQ0FBQztBQUNuQixnQkFBZ0IsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDekcsZ0JBQWdCLElBQUksZUFBZSxDQUFDO0FBQ3BDLGdCQUFnQixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxLQUFLO0FBQ3RELG9CQUFvQixJQUFJLGVBQWUsRUFBRTtBQUN6QztBQUNBLHdCQUF3QixNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO0FBQy9ELHdCQUF3QixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0Qsd0JBQXdCLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFDNUQsd0JBQXdCLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM3RDtBQUNBLHdCQUF3QixNQUFNLE9BQU8sR0FBRztBQUN4Qyw0QkFBNEIsU0FBUyxFQUFFLGVBQWUsQ0FBQyxTQUFTO0FBQ2hFLDRCQUE0QixTQUFTLEVBQUUsZUFBZSxDQUFDLFNBQVM7QUFDaEUsNEJBQTRCLFlBQVksRUFBRSxlQUFlLENBQUMsWUFBWTtBQUN0RSw0QkFBNEIsU0FBUyxFQUFFLGVBQWUsQ0FBQyxTQUFTO0FBQ2hFLDRCQUE0QixVQUFVLEVBQUUsZUFBZSxDQUFDLFVBQVUsSUFBSSxJQUFJO0FBQzFFLGtDQUFrQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUMzRixrQ0FBa0MsU0FBUztBQUMzQyx5QkFBeUIsQ0FBQztBQUMxQjtBQUNBLHdCQUF3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFDdkcsd0JBQXdCLElBQUksTUFBTSxFQUFFO0FBQ3BDLDRCQUE0QixLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUNsRCx5QkFBeUI7QUFDekIsd0JBQXdCLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQscUJBQXFCO0FBQ3JCLG9CQUFvQixlQUFlLEdBQUcsV0FBVyxDQUFDO0FBQ2xELGlCQUFpQixDQUFDLENBQUM7QUFDbkIsYUFBYSxDQUFDLENBQUM7QUFDZjtBQUNBLFlBQVksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ25DLFlBQVksT0FBTyxPQUFPLENBQUM7QUFDM0IsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLO0FBQ0wsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFO0FBQ3BCLFFBQVEsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN2QixRQUFRLE9BQU8sU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxhQUFhO0FBQzVELFlBQVksTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDMUM7QUFDQSxZQUFZLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDekgsWUFBWSxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQzVCLGdCQUFnQixPQUFPLElBQUksQ0FBQztBQUM1QixhQUFhO0FBQ2I7QUFDQSxZQUFZLE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEcsWUFBWSxNQUFNLHdCQUF3QixHQUFHLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztBQUNoSSxZQUFZLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtBQUMzQyxnQkFBZ0IsT0FBTyxJQUFJLENBQUM7QUFDNUIsYUFBYTtBQUNiLFlBQVksTUFBTSxnQkFBZ0IsR0FBRyx3QkFBd0IsS0FBSyxJQUFJLElBQUksd0JBQXdCLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsd0JBQXdCLENBQUMsVUFBVSxDQUFDO0FBQzdKLFlBQVksSUFBSSxDQUFDLGdCQUFnQixFQUFFO0FBQ25DLGdCQUFnQixPQUFPLElBQUksQ0FBQztBQUM1QixhQUFhO0FBQ2IsWUFBWSxNQUFNLE9BQU8sR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7QUFDdkQsWUFBWSxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pFLFlBQVksTUFBTSxjQUFjLEdBQUcsQ0FBQyxFQUFFLEdBQUcsd0JBQXdCLENBQUMsY0FBYyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG1CQUFtQixLQUFLO0FBQ3ZKLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztBQUN2QixnQkFBZ0IsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xFLGdCQUFnQixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLG1CQUFtQixDQUFDLFNBQVMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLFNBQVMsS0FBSztBQUNoSixvQkFBb0IsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNuQyxvQkFBb0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDcEUsb0JBQW9CLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRTtBQUMvQyx3QkFBd0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDdk8scUJBQXFCO0FBQ3JCLG9CQUFvQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUU7QUFDNUQsd0JBQXdCLE1BQU07QUFDOUIsd0JBQXdCLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxjQUFjLENBQUMsTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUc7QUFDakcscUJBQXFCLENBQUMsQ0FBQztBQUN2QixpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CLGdCQUFnQixPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDckMsYUFBYSxDQUFDLENBQUM7QUFDZjtBQUNBLFlBQVksZ0JBQWdCLEtBQUssSUFBSSxJQUFJLGdCQUFnQixLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsRUFBRSxVQUFVLEtBQUs7QUFDMUksZ0JBQWdCLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUM7QUFDMUQsZ0JBQWdCLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDbEMsb0JBQW9CLE9BQU87QUFDM0IsaUJBQWlCO0FBQ2pCLGdCQUFnQixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxLQUFLO0FBQ25ELG9CQUFvQixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN2QyxvQkFBb0IsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZEO0FBQ0Esb0JBQW9CLE1BQU0sVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQzNELG9CQUFvQixJQUFJLGVBQWUsQ0FBQyxVQUFVLEVBQUU7QUFDcEQsd0JBQXdCLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNyUSxxQkFBcUI7QUFDckIseUJBQXlCO0FBQ3pCLHdCQUF3QixVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2RCxxQkFBcUI7QUFDckIsb0JBQW9CLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ25ILG9CQUFvQixNQUFNLE9BQU8sR0FBRztBQUNwQyx3QkFBd0IsU0FBUyxFQUFFLGVBQWUsQ0FBQyxTQUFTO0FBQzVELHdCQUF3QixTQUFTLEVBQUUsZUFBZSxDQUFDLFNBQVM7QUFDNUQsd0JBQXdCLFlBQVksRUFBRSxlQUFlLENBQUMsWUFBWTtBQUNsRSx3QkFBd0IsU0FBUyxFQUFFLGVBQWUsQ0FBQyxVQUFVO0FBQzdELHdCQUF3QixVQUFVO0FBQ2xDLHFCQUFxQixDQUFDO0FBQ3RCO0FBQ0Esb0JBQW9CLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxFQUFFLEdBQUcsZUFBZSxDQUFDLGNBQWMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEtBQUs7QUFDMUosd0JBQXdCLE1BQU0sS0FBSyxHQUFHLGNBQWMsS0FBSyxJQUFJLElBQUksY0FBYyxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUNySSx3QkFBd0IsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO0FBQzNDLDRCQUE0QixNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsdUNBQXVDLEVBQUUsVUFBVSxDQUFDLGtDQUFrQyxFQUFFLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ3JLLHlCQUF5QjtBQUN6Qix3QkFBd0IsT0FBTyxLQUFLLENBQUM7QUFDckMscUJBQXFCLENBQUMsQ0FBQztBQUN2QjtBQUNBLG9CQUFvQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxLQUFLO0FBQzVDLHdCQUF3QixJQUFJLEVBQUUsQ0FBQztBQUMvQix3QkFBd0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDcEcsd0JBQXdCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztBQUN2Ryx3QkFBd0IsSUFBSSxNQUFNLEVBQUU7QUFDcEMsNEJBQTRCLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ2xELHlCQUF5QjtBQUN6Qix3QkFBd0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRCxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3ZCLGlCQUFpQixDQUFDLENBQUM7QUFDbkIsYUFBYSxDQUFDLENBQUM7QUFDZjtBQUNBLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0FBQzNDLFlBQVksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ25DLFlBQVksT0FBTyxPQUFPLENBQUM7QUFDM0IsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLO0FBQ0wsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUU7QUFDaEUsUUFBUSxNQUFNLFVBQVUsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFDakcsUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7QUFDbEMsWUFBWSxNQUFNLE1BQU0sR0FBRyxJQUFJLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3BFLFlBQVksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0MsWUFBWSxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDO0FBQ2xFLFNBQVM7QUFDVCxRQUFRLE9BQU8sVUFBVSxDQUFDO0FBQzFCLEtBQUs7QUFDTCxJQUFJLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUU7QUFDL0MsUUFBUSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztBQUMxQyxRQUFRLE1BQU0sS0FBSyxHQUFHLElBQUksZ0NBQWdDLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUMvRSxRQUFRLE1BQU0sUUFBUSxHQUFHLElBQUkscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUQsUUFBUSxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xDLFFBQVEsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7QUFDckMsWUFBWSxNQUFNLE1BQU0sR0FBRyxJQUFJLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JFLFlBQVksSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRCxZQUFZLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQztBQUNyRSxTQUFTO0FBQ1QsUUFBUSxPQUFPLFFBQVEsQ0FBQztBQUN4QixLQUFLO0FBQ0wsSUFBSSxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFO0FBQ2hELFFBQVEsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDO0FBQ2hELFFBQVEsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQ0FBaUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN0RixRQUFRLE1BQU0sUUFBUSxHQUFHLElBQUkscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUQsUUFBUSxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xDLFFBQVEsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7QUFDckMsWUFBWSxNQUFNLE1BQU0sR0FBRyxJQUFJLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JFLFlBQVksSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRCxZQUFZLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQztBQUNyRSxTQUFTO0FBQ1QsUUFBUSxPQUFPLFFBQVEsQ0FBQztBQUN4QixLQUFLO0FBQ0wsQ0FBQztBQUNELHlCQUF5QixDQUFDLGNBQWMsR0FBRyxpQkFBaUI7O01DcmxDL0MsZUFBZSxDQUFBO0FBYzFCLElBQUEsSUFBVyxJQUFJLEdBQUE7QUFDYixRQUFBLE9BQU8saUJBQWlCLENBQUM7S0FDMUI7SUFFRCxXQUFtQixDQUFBLE1BQWtCLEVBQUUsT0FBZ0MsRUFBQTs7QUFDckUsUUFBQSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixNQUFNLFVBQVUsR0FBRyxPQUFPLEtBQUEsSUFBQSxJQUFQLE9BQU8sS0FBUCxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxPQUFPLENBQUUsVUFBVSxDQUFDO1FBQ3ZDLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxLQUFBLElBQUEsSUFBUCxPQUFPLEtBQVAsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsT0FBTyxDQUFFLG9CQUFvQixDQUFDO0FBRTNELFFBQUEsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUEsRUFBQSxHQUFBLE9BQU8sYUFBUCxPQUFPLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVAsT0FBTyxDQUFFLGdCQUFnQixNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUkseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0YsUUFBQSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQSxFQUFBLEdBQUEsT0FBTyxhQUFQLE9BQU8sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBUCxPQUFPLENBQUUsaUJBQWlCLE1BQUksSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLEdBQUEsSUFBSSwwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5RixRQUFBLElBQUksQ0FBQyxjQUFjO0FBQ2pCLFlBQUEsQ0FBQSxFQUFBLEdBQUEsT0FBTyxLQUFBLElBQUEsSUFBUCxPQUFPLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVAsT0FBTyxDQUFFLGNBQWMsTUFBQSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FDdkIsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2xDLFVBQVU7Z0JBQ1Ysb0JBQW9CO0FBQ3JCLGFBQUEsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFBLEVBQUEsR0FBQSxPQUFPLEtBQVAsSUFBQSxJQUFBLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFlBQVksTUFBSSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBQSxJQUFJLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFDL0YsUUFBQSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUEsRUFBQSxHQUFBLE9BQU8sYUFBUCxPQUFPLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVAsT0FBTyxDQUFFLFVBQVUsTUFBSSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBQSxJQUFJLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pFLFFBQUEsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUEsRUFBQSxHQUFBLE9BQU8sYUFBUCxPQUFPLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVAsT0FBTyxDQUFFLG1CQUFtQixNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUkseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakcsUUFBQSxJQUFJLENBQUMsb0NBQW9DO0FBQ3ZDLFlBQUEsQ0FBQSxFQUFBLEdBQUEsT0FBTyxLQUFBLElBQUEsSUFBUCxPQUFPLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVAsT0FBTyxDQUFFLG9DQUFvQyxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFJLElBQUksNkNBQTZDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0csUUFBQSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsQ0FBQSxFQUFBLEdBQUEsT0FBTyxhQUFQLE9BQU8sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBUCxPQUFPLENBQUUsdUJBQXVCLE1BQUksSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLEdBQUEsSUFBSSwwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUUxRyxRQUFBLElBQUksQ0FBQyxnQkFBZ0I7QUFDbkIsWUFBQSxDQUFBLEVBQUEsR0FBQSxPQUFPLEtBQUEsSUFBQSxJQUFQLE9BQU8sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBUCxPQUFPLENBQUUsZ0JBQWdCLE1BQUEsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLEdBQ3pCLElBQUkseUJBQXlCLENBQUMsTUFBTSxFQUFFO0FBQ3BDLGdCQUFBLGtCQUFrQixFQUFFLFVBQVU7QUFDOUIsZ0JBQUEsZUFBZSxFQUFFLFVBQVU7QUFDNUIsYUFBQSxDQUFDLENBQUM7QUFFTCxRQUFBLElBQUksQ0FBQyxvQkFBb0I7QUFDdkIsWUFBQSxDQUFBLEVBQUEsR0FBQSxPQUFPLEtBQVAsSUFBQSxJQUFBLE9BQU8sS0FBUCxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxPQUFPLENBQUUsb0JBQW9CLE1BQUEsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLEdBQUksSUFBSSw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0tBQzlGO0lBRVksVUFBVSxHQUFBOztBQUNyQixZQUFBLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ2hELFlBQUEsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDN0MsQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUVZLElBQUEsUUFBUSxDQUFDLFNBQWlCLEVBQUE7O1lBQ3JDLE9BQU8sTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzNELENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFFTSxJQUFBLGVBQWUsQ0FBQyxhQUFxQixFQUFBO1FBQzFDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUUsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO0FBQ3JCLFlBQUEsT0FBTyxTQUFTLENBQUM7QUFDbEIsU0FBQTtBQUVELFFBQUEsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVZLG9CQUFvQixDQUFDLGFBQXFCLEVBQUUsY0FBc0MsRUFBQTs7WUFDN0YsTUFBTSxJQUFJLENBQUMsb0NBQW9DLENBQUMsb0JBQW9CLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ3BHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQztTQUNwRixDQUFBLENBQUE7QUFBQSxLQUFBO0FBRVksSUFBQSxTQUFTLENBQUMsSUFBVSxFQUFBOztZQUMvQixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEQsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRS9DLFlBQUEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUF5QixDQUFDO0FBQ3JELFlBQUEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFpQyxDQUFDOzs7WUFJakUsSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFO0FBQ3BCLGdCQUFBLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDO29CQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7QUFDakIsb0JBQUEsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0I7QUFDckQsb0JBQUEsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYztvQkFDekMsUUFBUTtBQUNSLG9CQUFBLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVM7b0JBQy9CLElBQUk7QUFDSixvQkFBQSxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUI7QUFDMUMsb0JBQUEsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0I7QUFDckQsb0JBQUEscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0I7QUFDOUQsaUJBQUEsQ0FBQyxDQUFDO0FBRUgsZ0JBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLGFBQUE7U0FDRixDQUFBLENBQUE7QUFBQSxLQUFBO0FBQ0Y7O0FDM0hEO0FBSUEsU0FBUyxlQUFlLENBQUMsUUFBd0IsRUFBQTtJQUMvQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSTtBQUN4QyxRQUFBLElBQUksS0FBSyxLQUFMLElBQUEsSUFBQSxLQUFLLHVCQUFMLEtBQUssQ0FBRSxTQUFTLEVBQUU7WUFDcEIsTUFBTSxPQUFPLEdBQUcsS0FBc0IsQ0FBQztZQUN2QyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDbkIsU0FBQTtBQUNILEtBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSyxRQUFnQixDQUFDLGdCQUFnQixFQUFFO0FBQ3RDLFFBQUEsTUFBTSxRQUFRLEdBQWdELFFBQWdCLENBQUMsUUFBUSxDQUFDO0FBQ3hGLFFBQUEsSUFBSSxRQUFRLEVBQUU7WUFDWixNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSTtBQUMxQyxnQkFBQSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQzVCLGdCQUFBLElBQUksS0FBSyxLQUFMLElBQUEsSUFBQSxLQUFLLHVCQUFMLEtBQUssQ0FBRSxTQUFTLEVBQUU7b0JBQ3BCLE1BQU0sT0FBTyxHQUFHLEtBQXNCLENBQUM7b0JBQ3ZDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNuQixpQkFBQTtBQUNILGFBQUMsQ0FBQyxDQUFDO0FBQ0osU0FBQTtBQUNGLEtBQUE7SUFFRCxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFDLFFBQXdCLEVBQUE7QUFDdkMsSUFBQSxNQUFNLFFBQVEsR0FBc0MsUUFBZ0IsQ0FBQyxRQUFRLENBQUM7QUFDOUUsSUFBQSxJQUFJLFFBQVEsRUFBRTtRQUNaLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNwQixLQUFBO0FBRUQsSUFBQSxNQUFNLFFBQVEsR0FBZ0MsUUFBZ0IsQ0FBQyxRQUFRLENBQUM7QUFDeEUsSUFBQSxJQUFJLFFBQVEsRUFBRTtRQUNaLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNwQixLQUFBO0FBRUQsSUFBQSxNQUFNLFFBQVEsR0FBbUQsUUFBZ0IsQ0FBQyxRQUFRLENBQUM7QUFDM0YsSUFBQSxJQUFJLFFBQVEsRUFBRTtBQUNaLFFBQUEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQzNCLFlBQUEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQXdCLEtBQUssZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDM0UsU0FBQTtBQUFNLGFBQUEsSUFBSSxRQUFRLEVBQUU7WUFDbkIsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzNCLFNBQUE7QUFDRixLQUFBO0FBQ0gsQ0FBQztBQUVLLFNBQVUsV0FBVyxDQUFDLFFBQXdCLEVBQUE7QUFDbEQsSUFBQSxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdCOztBQ2pEQTs7Ozs7O0FBTUc7QUFDRyxTQUFVLHVCQUF1QixDQUFDLElBQW9CLEVBQUE7O0FBRTFELElBQUEsTUFBTSxZQUFZLEdBQStDLElBQUksR0FBRyxFQUFFLENBQUM7O0FBRzNFLElBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSTtBQUNwQixRQUFBLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxhQUFhLEVBQUU7WUFDOUIsT0FBTztBQUNSLFNBQUE7UUFFRCxNQUFNLElBQUksR0FBRyxHQUF3QixDQUFDO0FBQ3RDLFFBQUEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBMEIsQ0FBQzs7UUFHOUUsSUFBSSxRQUFRLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsUUFBUSxFQUFFOztBQUViLFlBQUEsTUFBTSxLQUFLLEdBQWlCLEVBQUUsQ0FBQztBQUMvQixZQUFBLE1BQU0sWUFBWSxHQUFvQixFQUFFLENBQUM7QUFDekMsWUFBQSxNQUFNLFlBQVksR0FBZ0MsRUFBRSxDQUFDOztBQUdyRCxZQUFBLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7QUFDOUIsWUFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNyQyxnQkFBQSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBR3ZCLGdCQUFBLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVMsRUFBRTtBQUNyQyxvQkFBQSxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNuQyxvQkFBQSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdkMsb0JBQUEsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3RELGlCQUFBO2dCQUVELEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEMsYUFBQTs7QUFHRCxZQUFBLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0IsWUFBQSxTQUFTLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzs7WUFHN0IsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDbkQsWUFBQSxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN2QyxTQUFBO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQzs7O0FBRzNDLEtBQUMsQ0FBQyxDQUFDO0FBQ0w7O0FDekRBOzs7Ozs7Ozs7QUFTRztBQUNHLFNBQVUseUJBQXlCLENBQUMsSUFBb0IsRUFBQTtBQUM1RCxJQUFBLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUE4QyxDQUFDOztBQUcxRSxJQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEtBQUk7O0FBQ3BCLFFBQUEsSUFBSSxDQUFFLEdBQVcsQ0FBQyxNQUFNLEVBQUU7WUFDeEIsT0FBTztBQUNSLFNBQUE7UUFFRCxNQUFNLElBQUksR0FBRyxHQUFpQixDQUFDO0FBQy9CLFFBQUEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQzs7QUFHL0IsUUFBQSxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3JDLElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtZQUN6QixPQUFPO0FBQ1IsU0FBQTs7UUFHRCxNQUFNLHlCQUF5QixHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUQsSUFBSSx5QkFBeUIsSUFBSSxJQUFJLEVBQUU7QUFDckMsWUFBQSxJQUFJLENBQUMsUUFBUSxHQUFHLHlCQUF5QixDQUFDO1lBQzFDLE9BQU87QUFDUixTQUFBO0FBRUQsUUFBQSxNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzs7O0FBSS9DLFFBQUEsV0FBVyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO0FBRWpDLFFBQUEsV0FBVyxDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQztRQUVqRSxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSTtBQUNoQyxZQUFBLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN0RSxTQUFDLENBQUMsQ0FBQztBQUVILFFBQUEsV0FBVyxDQUFDLFdBQVcsR0FBRyxDQUFBLEVBQUEsR0FBQSxDQUFBLEVBQUEsR0FBQSxRQUFRLENBQUMsV0FBVyxNQUFFLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLEtBQUssRUFBRSxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFJLElBQUksQ0FBQztBQUNoRSxRQUFBLFdBQVcsQ0FBQyxjQUFjLEdBQUcsQ0FBQSxFQUFBLEdBQUEsQ0FBQSxFQUFBLEdBQUEsUUFBUSxDQUFDLGNBQWMsTUFBRSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxLQUFLLEVBQUUsTUFBQSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBSSxJQUFJLENBQUM7QUFFdEUsUUFBQSxXQUFXLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFN0UsUUFBQSxXQUFXLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7O0FBR3pDLFFBQUEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7O1FBR3ZDLE1BQU0sd0JBQXdCLEdBQWEsRUFBRSxDQUFDOztRQUc5QyxNQUFNLHdCQUF3QixHQUFhLEVBQUUsQ0FBQzs7QUFHOUMsUUFBQTtBQUNFLFlBQUEsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQy9DLE1BQU0sYUFBYSxHQUFHLElBQUssa0JBQWtCLENBQUMsV0FBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU3RixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFFbEIsWUFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2xELGdCQUFBLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTVDLGdCQUFBLElBQUksUUFBUSxHQUFHLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7QUFDcEIsb0JBQUEsd0JBQXdCLENBQUMsYUFBYSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ3BELG9CQUFBLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxHQUFHLGFBQWEsQ0FBQztvQkFDcEQsUUFBUSxHQUFHLFNBQVMsQ0FBQztBQUNyQixvQkFBQSxTQUFTLEVBQUUsQ0FBQztBQUNiLGlCQUFBO0FBQ0QsZ0JBQUEsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM3QixhQUFBO0FBRUQsWUFBQSxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNwRSxTQUFBOztBQUdELFFBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxLQUFJO1lBQ3pELE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQTBCLENBQUM7WUFFdEYsSUFBSyxpQkFBeUIsQ0FBQyw0QkFBNEIsRUFBRTtBQUMzRCxnQkFBQSxNQUFNLElBQUksS0FBSyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7QUFDM0YsYUFBQTtBQUVELFlBQUEsTUFBTSxzQkFBc0IsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7QUFDdkQsWUFBQSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLGlCQUFpQixDQUFDO0FBRW5ELFlBQUEsTUFBTSxpQkFBaUIsR0FBRyxJQUFLLHNCQUFzQixDQUFDLFdBQW1CLENBQ3ZFLHdCQUF3QixDQUFDLE1BQU0sR0FBRyxRQUFRLENBQzNDLENBQUM7WUFFRix3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFJO2dCQUNwRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2pDLG9CQUFBLGlCQUFpQixDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsc0JBQXNCLENBQUMsYUFBYSxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1RixpQkFBQTtBQUNILGFBQUMsQ0FBQyxDQUFDO0FBRUgsWUFBQSxXQUFXLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxJQUFJLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN4RyxTQUFDLENBQUMsQ0FBQzs7O1FBSUgsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBRXZCLFFBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxLQUFJO0FBQzlELFlBQUEsV0FBVyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFaEQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN2RCxZQUFBLEtBQUssSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFO0FBQ3JELGdCQUFBLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBMEIsQ0FBQztnQkFFbEUsSUFBSyxpQkFBeUIsQ0FBQyw0QkFBNEIsRUFBRTtBQUMzRCxvQkFBQSxNQUFNLElBQUksS0FBSyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7QUFDM0YsaUJBQUE7QUFFRCxnQkFBQSxNQUFNLHNCQUFzQixHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQztBQUN2RCxnQkFBQSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLGlCQUFpQixDQUFDO0FBRW5ELGdCQUFBLE1BQU0saUJBQWlCLEdBQUcsSUFBSyxzQkFBc0IsQ0FBQyxXQUFtQixDQUN2RSx3QkFBd0IsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUMzQyxDQUFDO2dCQUVGLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQUk7b0JBQ3BELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDakMsd0JBQUEsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxzQkFBc0IsQ0FBQyxhQUFhLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVGLHFCQUFBO0FBQ0gsaUJBQUMsQ0FBQyxDQUFDO0FBRUgsZ0JBQUEsV0FBVyxHQUFHLFdBQVcsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFTLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRTdFLGdCQUFBLFdBQVcsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxlQUFlLENBQ3RFLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsVUFBVSxDQUNYLENBQUM7QUFDSCxhQUFBO0FBQ0gsU0FBQyxDQUFDLENBQUM7O0FBR0gsUUFBQSxJQUFJLFdBQVcsRUFBRTtBQUNmLFlBQUEsV0FBVyxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDbEMsU0FBQTtBQUVELFFBQUEsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUM7QUFDOUIsS0FBQyxDQUFDLENBQUM7QUFFSCxJQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLEtBQUk7UUFDMUQsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDN0IsS0FBQyxDQUFDLENBQUM7QUFDTDs7QUNoS0E7Ozs7QUFJRztBQUNHLFNBQVUsVUFBVSxDQUFDLEdBQVEsRUFBQTs7SUFDakMsSUFBSSxDQUFBLE1BQUEsR0FBRyxDQUFDLElBQUksTUFBRSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxXQUFXLE1BQUssR0FBRyxFQUFFO1FBQ2pDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ2hDLEtBQUE7QUFDSDs7TUNOYSxRQUFRLENBQUE7QUFDbkIsSUFBQSxXQUFBLEdBQUE7O0tBRUM7O0FBRWEsUUFBVyxDQUFBLFdBQUEsR0FBRyxXQUFXLENBQUM7QUFDMUIsUUFBdUIsQ0FBQSx1QkFBQSxHQUFHLHVCQUF1QixDQUFDO0FBQ2xELFFBQXlCLENBQUEseUJBQUEsR0FBRyx5QkFBeUIsQ0FBQztBQUN0RCxRQUFVLENBQUEsVUFBQSxHQUFHLFVBQVU7Ozs7In0=
diff --git a/render_script/three-js/up_backend.py b/render_script/three-js/up_backend.py
new file mode 100644
index 0000000000000000000000000000000000000000..37e423348bae0c93a3260b181822b06486ec02ea
--- /dev/null
+++ b/render_script/three-js/up_backend.py
@@ -0,0 +1,170 @@
+
+from fastapi import FastAPI, File, UploadFile
+import aiofiles
+import uvicorn, os, io
+import cv2, json, math
+import numpy as np
+from PIL import Image
+from typing import List
+from fastapi.middleware.cors import CORSMiddleware
+origins = [
+ "*"
+]
+
+app = FastAPI()
+app.add_middleware(
+ CORSMiddleware,
+ allow_origins=origins,
+ allow_credentials=True,
+ allow_methods=["*"],
+ allow_headers=["*"],
+)
+
+vertices_list = ['leftUpperArm',
+ 'rightUpperArm',
+ 'leftLowerArm',
+ 'rightLowerArm',
+ 'leftHand',
+ 'rightHand',
+ 'leftUpperLeg',
+ 'rightUpperLeg',
+ 'leftLowerLeg',
+ 'rightLowerLeg',
+ 'leftFoot',
+ 'rightFoot',
+ 'head',
+ 'upperChest']
+
+def process_depth_file(file_data):
+ image = Image.open(io.BytesIO(file_data))
+ if image.mode != 'RGBA':
+ raise ValueError("Image is not in RGBA format")
+
+ data = np.array(image)
+
+ R = data[:, :, 0]
+ G = data[:, :, 1]
+ B = data[:, :, 2]
+ A = data[:, :, 3]
+
+ depth = (R + G / 256.0 + B / (256.0 * 256.0))
+
+ depth[A == 0] = 5.0
+
+ return depth
+
+vertices_list = ['leftUpperArm',
+ 'rightUpperArm',
+ 'leftLowerArm',
+ 'rightLowerArm',
+ 'leftHand',
+ 'rightHand',
+ 'leftUpperLeg',
+ 'rightUpperLeg',
+ 'leftLowerLeg',
+ 'rightLowerLeg',
+ 'leftFoot',
+ 'rightFoot',
+ 'head',
+ 'hips',
+ 'spine']
+
+
+def backproject_to_3d(base_dir):
+ for fn in os.listdir(base_dir):
+ if fn.endswith(".json"):
+ pose_file = open(os.path.join(base_dir, fn), "r")
+ pose_dict = json.load(pose_file)
+ vertices = []
+ joints_name = []
+ for node_name in vertices_list:
+ joints_name.append(node_name)
+ v = pose_dict['node_array'][node_name]
+ vertices.append([v["world_position"]['x'], v["world_position"]['y'], v["world_position"]['z'], 1.0])
+ vertices = np.array(vertices)
+ chest_v = vertices[12] * 2 / 3 + vertices[14] / 3
+ vertices = np.concatenate([vertices[:13], [chest_v]], axis=0)
+ vertices = vertices[[12, 13, 0, 2, 4, 1, 3, 5, 6, 8, 10, 7, 9, 11]]
+ focal_length = 256 / np.tan(40 / 2 / 180 * np.pi)
+ ext = np.array(pose_dict["extrinsicMatrix"]["elements"]).reshape(4,4)
+ ext = np.linalg.inv(ext)
+ vertices = vertices @ ext
+ camera_v = vertices[...,:3] / vertices[...,3:]
+ camera_v = camera_v[...,:2] / camera_v[...,2:] * focal_length
+ camera_v += 256
+ camera_v /= 512
+ camera_v[:,0] = 1 - camera_v[:,0]
+ canvas = np.zeros((768, 768, 3), dtype=np.uint8)
+ #canvas = cv2.imread(os.path.join(base_dir, fn.replace(".json", "_rgb.png")))
+ draw_bodypose(canvas, camera_v)
+ cv2.imwrite(os.path.join(base_dir, fn.replace(".json", "_pose.png")), cv2.cvtColor(canvas, cv2.COLOR_BGR2RGB))
+
+def draw_bodypose(canvas: np.ndarray, keypoints) -> np.ndarray:
+ H, W, C = canvas.shape
+ stickwidth = 4
+
+ limbSeq = [
+ [2, 3], [2, 6], [3, 4], [4, 5],
+ [6, 7], [7, 8], [2, 9], [9, 10],
+ [10, 11], [2, 12], [12, 13], [13, 14],
+ [2, 1],
+ ]
+
+ colors = [[255, 0, 0], [255, 85, 0], [255, 170, 0], [255, 255, 0], [170, 255, 0], [85, 255, 0], [0, 255, 0], \
+ [0, 255, 85], [0, 255, 170], [0, 255, 255], [0, 170, 255], [0, 85, 255], [0, 0, 255], [85, 0, 255], \
+ [170, 0, 255], [255, 0, 255], [255, 0, 170], [255, 0, 85]]
+
+ for (k1_index, k2_index), color in zip(limbSeq, colors):
+ if k1_index-1 >= len(keypoints) or k2_index -1>= len(keypoints):
+ continue
+ keypoint1 = keypoints[k1_index - 1]
+ keypoint2 = keypoints[k2_index - 1]
+
+ if keypoint1 is None or keypoint2 is None:
+ continue
+
+ Y = np.array([keypoint1[0], keypoint2[0]]) * float(W)
+ X = np.array([keypoint1[1], keypoint2[1]]) * float(H)
+ mX = np.mean(X)
+ mY = np.mean(Y)
+ length = ((X[0] - X[1]) ** 2 + (Y[0] - Y[1]) ** 2) ** 0.5
+ angle = math.degrees(math.atan2(X[0] - X[1], Y[0] - Y[1]))
+ polygon = cv2.ellipse2Poly((int(mY), int(mX)), (int(length / 2), stickwidth), int(angle), 0, 360, 1)
+ cv2.fillConvexPoly(canvas, polygon, [int(float(c) * 0.6) for c in color])
+
+ for keypoint, color in zip(keypoints, colors):
+ if keypoint is None:
+ continue
+
+ x, y = keypoint
+ x = int(x * W)
+ y = int(y * H)
+ cv2.circle(canvas, (int(x), int(y)), 4, color, thickness=-1)
+
+ return canvas
+
+count = 0
+@app.post("/upload/")
+async def create_upload_files(files: List[UploadFile] = File(...)):
+ global count
+ count += 1
+ print(count)
+ for file in files:
+ object_name = file.filename.split("_")[0]
+ folder = f"E:/new_render/{object_name}"
+ if not os.path.exists(folder):
+ os.makedirs(folder)
+ file_data = await file.read()
+ if(file.filename.split('_')[-1].split('.')[0] == "depth"):
+ depth = process_depth_file(file_data)
+ cv2.imwrite(f"{folder}/{file.filename}", depth)
+ new_path = f"{folder}/{file.filename}"
+ numpy_path = new_path.replace(".png", ".npz")
+ np.savez_compressed(numpy_path, depth)
+ else:
+ with open(f"{folder}/{file.filename}", "wb") as buffer:
+ buffer.write(file_data)
+ backproject_to_3d(folder)
+
+if __name__ == "__main__":
+ uvicorn.run(app, host="127.0.0.1", port=17070)
\ No newline at end of file
diff --git a/render_script/three-js/vroid0.json b/render_script/three-js/vroid0.json
new file mode 100644
index 0000000000000000000000000000000000000000..bcbc447d1282eb1498ca799be064e1d6f726541c
--- /dev/null
+++ b/render_script/three-js/vroid0.json
@@ -0,0 +1,6879 @@
+[
+ "vroid/0/1000840261433614040/1000840261433614040.vrm",
+ "vroid/0/1008310613509133290/1008310613509133290.vrm",
+ "vroid/0/1011462132209711740/1011462132209711740.vrm",
+ "vroid/0/1016034553385002080/1016034553385002080.vrm",
+ "vroid/0/1017021745350671390/1017021745350671390.vrm",
+ "vroid/0/1031427810505879060/1031427810505879060.vrm",
+ "vroid/0/1042661742956225070/1042661742956225070.vrm",
+ "vroid/0/1052085118322297010/1052085118322297010.vrm",
+ "vroid/0/1054990230631284690/1054990230631284690.vrm",
+ "vroid/0/1059737258558526030/1059737258558526030.vrm",
+ "vroid/0/1069131680353162170/1069131680353162170.vrm",
+ "vroid/0/1075021937486584940/1075021937486584940.vrm",
+ "vroid/0/108074582846007280/108074582846007280.vrm",
+ "vroid/0/1086104341257357750/1086104341257357750.vrm",
+ "vroid/0/1094769317607100660/1094769317607100660.vrm",
+ "vroid/0/1107966252827422570/1107966252827422570.vrm",
+ "vroid/0/111332273246653120/111332273246653120.vrm",
+ "vroid/0/1118161408009810020/1118161408009810020.vrm",
+ "vroid/0/1120169165975032970/1120169165975032970.vrm",
+ "vroid/0/1120594086272924260/1120594086272924260.vrm",
+ "vroid/0/1121781858642647090/1121781858642647090.vrm",
+ "vroid/0/1126107596863674730/1126107596863674730.vrm",
+ "vroid/0/1129399045952250150/1129399045952250150.vrm",
+ "vroid/0/113152142715692910/113152142715692910.vrm",
+ "vroid/0/1135354269388833310/1135354269388833310.vrm",
+ "vroid/0/1150871373227540420/1150871373227540420.vrm",
+ "vroid/0/115573660714302690/115573660714302690.vrm",
+ "vroid/0/1163149156109630540/1163149156109630540.vrm",
+ "vroid/0/1178049153311943070/1178049153311943070.vrm",
+ "vroid/0/117840699245202180/117840699245202180.vrm",
+ "vroid/0/1181252856604371490/1181252856604371490.vrm",
+ "vroid/0/1182977127377327180/1182977127377327180.vrm",
+ "vroid/0/1200559974098547340/1200559974098547340.vrm",
+ "vroid/0/1204308626386023160/1204308626386023160.vrm",
+ "vroid/0/1208582920141502700/1208582920141502700.vrm",
+ "vroid/0/1208641142848445030/1208641142848445030.vrm",
+ "vroid/0/1212088555229009410/1212088555229009410.vrm",
+ "vroid/0/1229661039094377790/1229661039094377790.vrm",
+ "vroid/0/1235541902522224030/1235541902522224030.vrm",
+ "vroid/0/1237575205310118730/1237575205310118730.vrm",
+ "vroid/0/1245551547183764380/1245551547183764380.vrm",
+ "vroid/0/1258947501014432130/1258947501014432130.vrm",
+ "vroid/0/1262286455987910700/1262286455987910700.vrm",
+ "vroid/0/1279595102384408190/1279595102384408190.vrm",
+ "vroid/0/1279913496427333430/1279913496427333430.vrm",
+ "vroid/0/1287829452191532380/1287829452191532380.vrm",
+ "vroid/0/1289282855879821520/1289282855879821520.vrm",
+ "vroid/0/1290125494127258440/1290125494127258440.vrm",
+ "vroid/0/1305742734184900820/1305742734184900820.vrm",
+ "vroid/0/1308030872403459710/1308030872403459710.vrm",
+ "vroid/0/1318125881830846270/1318125881830846270.vrm",
+ "vroid/0/1323933330222715340/1323933330222715340.vrm",
+ "vroid/0/1323974719362660260/1323974719362660260.vrm",
+ "vroid/0/1349439819568636370/1349439819568636370.vrm",
+ "vroid/0/135248480526530010/135248480526530010.vrm",
+ "vroid/0/135557450650410820/135557450650410820.vrm",
+ "vroid/0/1355618821961763180/1355618821961763180.vrm",
+ "vroid/0/1363806862831598710/1363806862831598710.vrm",
+ "vroid/0/1364072830151875550/1364072830151875550.vrm",
+ "vroid/0/1367759809654934240/1367759809654934240.vrm",
+ "vroid/0/1370430444812597790/1370430444812597790.vrm",
+ "vroid/0/1378141831989859130/1378141831989859130.vrm",
+ "vroid/0/1383750324070740740/1383750324070740740.vrm",
+ "vroid/0/1385420381765106560/1385420381765106560.vrm",
+ "vroid/0/1391755575005024160/1391755575005024160.vrm",
+ "vroid/0/1393804178945326420/1393804178945326420.vrm",
+ "vroid/0/13958053289047560/13958053289047560.vrm",
+ "vroid/0/1395988618840518040/1395988618840518040.vrm",
+ "vroid/0/1419236275232778190/1419236275232778190.vrm",
+ "vroid/0/1425096718735300670/1425096718735300670.vrm",
+ "vroid/0/1430424448185754630/1430424448185754630.vrm",
+ "vroid/0/1435405737712196400/1435405737712196400.vrm",
+ "vroid/0/1436320070189150500/1436320070189150500.vrm",
+ "vroid/0/1444282168017799060/1444282168017799060.vrm",
+ "vroid/0/1446024252400909240/1446024252400909240.vrm",
+ "vroid/0/1454391595792024990/1454391595792024990.vrm",
+ "vroid/0/1459459205160396850/1459459205160396850.vrm",
+ "vroid/0/1466759221101933450/1466759221101933450.vrm",
+ "vroid/0/1470190039956376850/1470190039956376850.vrm",
+ "vroid/0/1480558370581501400/1480558370581501400.vrm",
+ "vroid/0/1480997811996769960/1480997811996769960.vrm",
+ "vroid/0/1481930600812860010/1481930600812860010.vrm",
+ "vroid/0/1487008621572599310/1487008621572599310.vrm",
+ "vroid/0/1487097526635566140/1487097526635566140.vrm",
+ "vroid/0/1491719411566264480/1491719411566264480.vrm",
+ "vroid/0/1502947173244485450/1502947173244485450.vrm",
+ "vroid/0/1505326246213873410/1505326246213873410.vrm",
+ "vroid/0/1517021781432004670/1517021781432004670.vrm",
+ "vroid/0/1538079897048270890/1538079897048270890.vrm",
+ "vroid/0/1552558937213282450/1552558937213282450.vrm",
+ "vroid/0/1553014518862768620/1553014518862768620.vrm",
+ "vroid/0/1558924779742579380/1558924779742579380.vrm",
+ "vroid/0/1559125530014622450/1559125530014622450.vrm",
+ "vroid/0/1571385644749914530/1571385644749914530.vrm",
+ "vroid/0/1575226264825187070/1575226264825187070.vrm",
+ "vroid/0/157602924961709450/157602924961709450.vrm",
+ "vroid/0/158495417346710430/158495417346710430.vrm",
+ "vroid/0/1594196832958963090/1594196832958963090.vrm",
+ "vroid/0/1597810835174658540/1597810835174658540.vrm",
+ "vroid/0/1603594943585606910/1603594943585606910.vrm",
+ "vroid/0/1605818113771529170/1605818113771529170.vrm",
+ "vroid/0/1613075819964979400/1613075819964979400.vrm",
+ "vroid/0/1614038526732100950/1614038526732100950.vrm",
+ "vroid/0/1615005819308461230/1615005819308461230.vrm",
+ "vroid/0/1615143097848458660/1615143097848458660.vrm",
+ "vroid/0/1624565670482030990/1624565670482030990.vrm",
+ "vroid/0/1641269018170177840/1641269018170177840.vrm",
+ "vroid/0/165491637515414860/165491637515414860.vrm",
+ "vroid/0/1661755431939727730/1661755431939727730.vrm",
+ "vroid/0/1665852633686692310/1665852633686692310.vrm",
+ "vroid/0/1669388077150762170/1669388077150762170.vrm",
+ "vroid/0/1678928977962611590/1678928977962611590.vrm",
+ "vroid/0/1682013090724119090/1682013090724119090.vrm",
+ "vroid/0/1682774148552185320/1682774148552185320.vrm",
+ "vroid/0/1686801643915325630/1686801643915325630.vrm",
+ "vroid/0/1694004807779533410/1694004807779533410.vrm",
+ "vroid/0/1709827542292688030/1709827542292688030.vrm",
+ "vroid/0/1710372546285420890/1710372546285420890.vrm",
+ "vroid/0/1713208007014210660/1713208007014210660.vrm",
+ "vroid/0/1714179919639209140/1714179919639209140.vrm",
+ "vroid/0/171543245383817010/171543245383817010.vrm",
+ "vroid/0/1722614265537917240/1722614265537917240.vrm",
+ "vroid/0/1726526286747502760/1726526286747502760.vrm",
+ "vroid/0/1727775897434774650/1727775897434774650.vrm",
+ "vroid/0/1728707499389531490/1728707499389531490.vrm",
+ "vroid/0/173556878715354510/173556878715354510.vrm",
+ "vroid/0/1738996183053482330/1738996183053482330.vrm",
+ "vroid/0/1742071160146330470/1742071160146330470.vrm",
+ "vroid/0/1750514182211058250/1750514182211058250.vrm",
+ "vroid/0/1751718851800353870/1751718851800353870.vrm",
+ "vroid/0/1756245348131755400/1756245348131755400.vrm",
+ "vroid/0/1763225234978552570/1763225234978552570.vrm",
+ "vroid/0/1782961049457770190/1782961049457770190.vrm",
+ "vroid/0/1785874600659089590/1785874600659089590.vrm",
+ "vroid/0/1816261651024674810/1816261651024674810.vrm",
+ "vroid/0/1816348373980183560/1816348373980183560.vrm",
+ "vroid/0/1823698582635782310/1823698582635782310.vrm",
+ "vroid/0/1830737733009568010/1830737733009568010.vrm",
+ "vroid/0/183907857502366340/183907857502366340.vrm",
+ "vroid/0/1845202981803098700/1845202981803098700.vrm",
+ "vroid/0/1856377053382217470/1856377053382217470.vrm",
+ "vroid/0/1868237931664165960/1868237931664165960.vrm",
+ "vroid/0/1872196518050675910/1872196518050675910.vrm",
+ "vroid/0/1875132696174736570/1875132696174736570.vrm",
+ "vroid/0/1875967301299573490/1875967301299573490.vrm",
+ "vroid/0/1882103864395358240/1882103864395358240.vrm",
+ "vroid/0/188274074674918210/188274074674918210.vrm",
+ "vroid/0/1891594019375082730/1891594019375082730.vrm",
+ "vroid/0/1893652171856503840/1893652171856503840.vrm",
+ "vroid/0/1896048052644820340/1896048052644820340.vrm",
+ "vroid/0/1897593842887229610/1897593842887229610.vrm",
+ "vroid/0/1899970979779469200/1899970979779469200.vrm",
+ "vroid/0/1911331857931219260/1911331857931219260.vrm",
+ "vroid/0/1921458820952793080/1921458820952793080.vrm",
+ "vroid/0/1922796536014555720/1922796536014555720.vrm",
+ "vroid/0/1926316112310895280/1926316112310895280.vrm",
+ "vroid/0/1942949634214846220/1942949634214846220.vrm",
+ "vroid/0/1949901099817722470/1949901099817722470.vrm",
+ "vroid/0/1959740907814495940/1959740907814495940.vrm",
+ "vroid/0/1970106291763266910/1970106291763266910.vrm",
+ "vroid/0/1973087003520799280/1973087003520799280.vrm",
+ "vroid/0/1975849785064535830/1975849785064535830.vrm",
+ "vroid/0/1983206411903409740/1983206411903409740.vrm",
+ "vroid/0/1992198895632691780/1992198895632691780.vrm",
+ "vroid/0/2007819380846615810/2007819380846615810.vrm",
+ "vroid/0/2020069932749287890/2020069932749287890.vrm",
+ "vroid/0/2027872515557151440/2027872515557151440.vrm",
+ "vroid/0/2033831568594342640/2033831568594342640.vrm",
+ "vroid/0/2036288364139591100/2036288364139591100.vrm",
+ "vroid/0/2050558999678266090/2050558999678266090.vrm",
+ "vroid/0/2059049392780984690/2059049392780984690.vrm",
+ "vroid/0/2059438623989414320/2059438623989414320.vrm",
+ "vroid/0/2068251231361141450/2068251231361141450.vrm",
+ "vroid/0/2069296163614658250/2069296163614658250.vrm",
+ "vroid/0/20989634182092940/20989634182092940.vrm",
+ "vroid/0/2102292881932140500/2102292881932140500.vrm",
+ "vroid/0/2102326503402213750/2102326503402213750.vrm",
+ "vroid/0/210914924290971090/210914924290971090.vrm",
+ "vroid/0/2137248627372066400/2137248627372066400.vrm",
+ "vroid/0/2141494998974786960/2141494998974786960.vrm",
+ "vroid/0/2150932568371058200/2150932568371058200.vrm",
+ "vroid/0/2152136014805138040/2152136014805138040.vrm",
+ "vroid/0/2153306245023308350/2153306245023308350.vrm",
+ "vroid/0/2167457125422507480/2167457125422507480.vrm",
+ "vroid/0/2173874227736583570/2173874227736583570.vrm",
+ "vroid/0/2186363542906764370/2186363542906764370.vrm",
+ "vroid/0/2187724019441449790/2187724019441449790.vrm",
+ "vroid/0/2194783276207936810/2194783276207936810.vrm",
+ "vroid/0/2200047488261504810/2200047488261504810.vrm",
+ "vroid/0/2202490205573898200/2202490205573898200.vrm",
+ "vroid/0/2211698781615780990/2211698781615780990.vrm",
+ "vroid/0/2219049197924093540/2219049197924093540.vrm",
+ "vroid/0/222544134601175410/222544134601175410.vrm",
+ "vroid/0/2225814550013773090/2225814550013773090.vrm",
+ "vroid/0/2233123243502371680/2233123243502371680.vrm",
+ "vroid/0/2238094377305052200/2238094377305052200.vrm",
+ "vroid/0/224084286841900320/224084286841900320.vrm",
+ "vroid/0/2251521728289707950/2251521728289707950.vrm",
+ "vroid/0/2258996553701833420/2258996553701833420.vrm",
+ "vroid/0/2265430288576741530/2265430288576741530.vrm",
+ "vroid/0/2277674519836849880/2277674519836849880.vrm",
+ "vroid/0/2285715303067336500/2285715303067336500.vrm",
+ "vroid/0/2293095535483543420/2293095535483543420.vrm",
+ "vroid/0/2298748470490203300/2298748470490203300.vrm",
+ "vroid/0/230202626758789020/230202626758789020.vrm",
+ "vroid/0/2303733979792843000/2303733979792843000.vrm",
+ "vroid/0/2306978450292449160/2306978450292449160.vrm",
+ "vroid/0/2312717721228006740/2312717721228006740.vrm",
+ "vroid/0/2316741519752623840/2316741519752623840.vrm",
+ "vroid/0/2325173510092748040/2325173510092748040.vrm",
+ "vroid/0/2332871169888526680/2332871169888526680.vrm",
+ "vroid/0/2344105190912960810/2344105190912960810.vrm",
+ "vroid/0/2345925167963617960/2345925167963617960.vrm",
+ "vroid/0/2347715675809234280/2347715675809234280.vrm",
+ "vroid/0/2348528382860728540/2348528382860728540.vrm",
+ "vroid/0/2365360498028818990/2365360498028818990.vrm",
+ "vroid/0/2377045089208906860/2377045089208906860.vrm",
+ "vroid/0/2379326826186727630/2379326826186727630.vrm",
+ "vroid/0/2382367254484807440/2382367254484807440.vrm",
+ "vroid/0/2387506807976752030/2387506807976752030.vrm",
+ "vroid/0/2394376384642802610/2394376384642802610.vrm",
+ "vroid/0/2395050561802155380/2395050561802155380.vrm",
+ "vroid/0/240773120517557880/240773120517557880.vrm",
+ "vroid/0/2421648729184605960/2421648729184605960.vrm",
+ "vroid/0/2435791289321351400/2435791289321351400.vrm",
+ "vroid/0/2442861123545071640/2442861123545071640.vrm",
+ "vroid/0/2446809074413740290/2446809074413740290.vrm",
+ "vroid/0/2453675128932950270/2453675128932950270.vrm",
+ "vroid/0/2465777636628963110/2465777636628963110.vrm",
+ "vroid/0/2473246421774088340/2473246421774088340.vrm",
+ "vroid/0/2474288062315403430/2474288062315403430.vrm",
+ "vroid/0/2476536722195522020/2476536722195522020.vrm",
+ "vroid/0/2476547208890462620/2476547208890462620.vrm",
+ "vroid/0/2489124146515489690/2489124146515489690.vrm",
+ "vroid/0/2508234660084234440/2508234660084234440.vrm",
+ "vroid/0/2520476785781178690/2520476785781178690.vrm",
+ "vroid/0/2529722421325207770/2529722421325207770.vrm",
+ "vroid/0/253109462484089830/253109462484089830.vrm",
+ "vroid/0/2535028045620318960/2535028045620318960.vrm",
+ "vroid/0/2535787320550505460/2535787320550505460.vrm",
+ "vroid/0/2538418299181565750/2538418299181565750.vrm",
+ "vroid/0/2545069743872360110/2545069743872360110.vrm",
+ "vroid/0/2547231251146279200/2547231251146279200.vrm",
+ "vroid/0/2556547498242476390/2556547498242476390.vrm",
+ "vroid/0/2567503970694987750/2567503970694987750.vrm",
+ "vroid/0/257546784424441700/257546784424441700.vrm",
+ "vroid/0/2577209497050625740/2577209497050625740.vrm",
+ "vroid/0/2579403339481054870/2579403339481054870.vrm",
+ "vroid/0/2586415430842779950/2586415430842779950.vrm",
+ "vroid/0/259506102022583640/259506102022583640.vrm",
+ "vroid/0/2602466109784111520/2602466109784111520.vrm",
+ "vroid/0/2613279201202494740/2613279201202494740.vrm",
+ "vroid/0/2630683630726711980/2630683630726711980.vrm",
+ "vroid/0/2636053158702330880/2636053158702330880.vrm",
+ "vroid/0/2636876631900746000/2636876631900746000.vrm",
+ "vroid/0/263915164358685660/263915164358685660.vrm",
+ "vroid/0/2652213809264719780/2652213809264719780.vrm",
+ "vroid/0/265693881831429600/265693881831429600.vrm",
+ "vroid/0/2658638009989801420/2658638009989801420.vrm",
+ "vroid/0/2672128826924130430/2672128826924130430.vrm",
+ "vroid/0/2680743158034059990/2680743158034059990.vrm",
+ "vroid/0/2686648446743840950/2686648446743840950.vrm",
+ "vroid/0/2687158487914293690/2687158487914293690.vrm",
+ "vroid/0/2692751386527662910/2692751386527662910.vrm",
+ "vroid/0/2697323717157458900/2697323717157458900.vrm",
+ "vroid/0/2699748385794095370/2699748385794095370.vrm",
+ "vroid/0/2701328935912987250/2701328935912987250.vrm",
+ "vroid/0/2705757124791257540/2705757124791257540.vrm",
+ "vroid/0/2715706214097865480/2715706214097865480.vrm",
+ "vroid/0/2716054253937514700/2716054253937514700.vrm",
+ "vroid/0/2731375422904745020/2731375422904745020.vrm",
+ "vroid/0/2731625269158914030/2731625269158914030.vrm",
+ "vroid/0/2732454293395088430/2732454293395088430.vrm",
+ "vroid/0/2736697361337560680/2736697361337560680.vrm",
+ "vroid/0/2737843533855360520/2737843533855360520.vrm",
+ "vroid/0/273825114217483940/273825114217483940.vrm",
+ "vroid/0/2746733193933304840/2746733193933304840.vrm",
+ "vroid/0/2748342085424666770/2748342085424666770.vrm",
+ "vroid/0/2755690325740406830/2755690325740406830.vrm",
+ "vroid/0/275620893320860410/275620893320860410.vrm",
+ "vroid/0/2762378205544686260/2762378205544686260.vrm",
+ "vroid/0/2771175736284658490/2771175736284658490.vrm",
+ "vroid/0/2772988205041791480/2772988205041791480.vrm",
+ "vroid/0/2774196279009216940/2774196279009216940.vrm",
+ "vroid/0/2774435758019212500/2774435758019212500.vrm",
+ "vroid/0/2807605844198789530/2807605844198789530.vrm",
+ "vroid/0/2808043571995452300/2808043571995452300.vrm",
+ "vroid/0/2819250428994111880/2819250428994111880.vrm",
+ "vroid/0/2820506325701287300/2820506325701287300.vrm",
+ "vroid/0/2820594878036805140/2820594878036805140.vrm",
+ "vroid/0/2820818233280300960/2820818233280300960.vrm",
+ "vroid/0/2828408126947103260/2828408126947103260.vrm",
+ "vroid/0/2833504018278525760/2833504018278525760.vrm",
+ "vroid/0/2838342212319473090/2838342212319473090.vrm",
+ "vroid/0/2839526287160842700/2839526287160842700.vrm",
+ "vroid/0/2844232584388146190/2844232584388146190.vrm",
+ "vroid/0/2844368355898131150/2844368355898131150.vrm",
+ "vroid/0/2845098613785929750/2845098613785929750.vrm",
+ "vroid/0/2862951959508264140/2862951959508264140.vrm",
+ "vroid/0/2863022553050348660/2863022553050348660.vrm",
+ "vroid/0/2870022636887407510/2870022636887407510.vrm",
+ "vroid/0/2876920112795465120/2876920112795465120.vrm",
+ "vroid/0/2880512674266677230/2880512674266677230.vrm",
+ "vroid/0/288370486109484050/288370486109484050.vrm",
+ "vroid/0/2893040228705091520/2893040228705091520.vrm",
+ "vroid/0/2893859196448162590/2893859196448162590.vrm",
+ "vroid/0/2895280481767493760/2895280481767493760.vrm",
+ "vroid/0/2900995232440866870/2900995232440866870.vrm",
+ "vroid/0/2902003923560190160/2902003923560190160.vrm",
+ "vroid/0/291244906357378860/291244906357378860.vrm",
+ "vroid/0/2915410296383479550/2915410296383479550.vrm",
+ "vroid/0/2928686519363970350/2928686519363970350.vrm",
+ "vroid/0/2947847154051195470/2947847154051195470.vrm",
+ "vroid/0/295789522008369960/295789522008369960.vrm",
+ "vroid/0/2968652229362921690/2968652229362921690.vrm",
+ "vroid/0/2973870449147347470/2973870449147347470.vrm",
+ "vroid/0/2980522565449554680/2980522565449554680.vrm",
+ "vroid/0/2990096815206295500/2990096815206295500.vrm",
+ "vroid/0/301023819188052630/301023819188052630.vrm",
+ "vroid/0/3011248874864667690/3011248874864667690.vrm",
+ "vroid/0/3014427153772381070/3014427153772381070.vrm",
+ "vroid/0/3016030122582984150/3016030122582984150.vrm",
+ "vroid/0/3028657058954104710/3028657058954104710.vrm",
+ "vroid/0/302946235899755680/302946235899755680.vrm",
+ "vroid/0/3030608891457517750/3030608891457517750.vrm",
+ "vroid/0/3035010897010265540/3035010897010265540.vrm",
+ "vroid/0/3036069849554776270/3036069849554776270.vrm",
+ "vroid/0/3038387049903816250/3038387049903816250.vrm",
+ "vroid/0/304713568393608940/304713568393608940.vrm",
+ "vroid/0/3051991851889860100/3051991851889860100.vrm",
+ "vroid/0/3055330343117648230/3055330343117648230.vrm",
+ "vroid/0/3058600652178443110/3058600652178443110.vrm",
+ "vroid/0/3060576616508317690/3060576616508317690.vrm",
+ "vroid/0/3069480645226036330/3069480645226036330.vrm",
+ "vroid/0/3083861286786672640/3083861286786672640.vrm",
+ "vroid/0/3090679104236074920/3090679104236074920.vrm",
+ "vroid/0/3099381836745894460/3099381836745894460.vrm",
+ "vroid/0/3101683195054421640/3101683195054421640.vrm",
+ "vroid/0/3109556741121735040/3109556741121735040.vrm",
+ "vroid/0/3110466464034847360/3110466464034847360.vrm",
+ "vroid/0/3117819230832470450/3117819230832470450.vrm",
+ "vroid/0/3125686151468206220/3125686151468206220.vrm",
+ "vroid/0/3126257232839355290/3126257232839355290.vrm",
+ "vroid/0/3134858340273419210/3134858340273419210.vrm",
+ "vroid/0/3138445241869893150/3138445241869893150.vrm",
+ "vroid/0/3140903778103583830/3140903778103583830.vrm",
+ "vroid/0/3163913378227788910/3163913378227788910.vrm",
+ "vroid/0/3170440119471710540/3170440119471710540.vrm",
+ "vroid/0/3178045218507561080/3178045218507561080.vrm",
+ "vroid/0/3186103325728321880/3186103325728321880.vrm",
+ "vroid/0/3188261933320593080/3188261933320593080.vrm",
+ "vroid/0/3192241547822472100/3192241547822472100.vrm",
+ "vroid/0/3211452901494305850/3211452901494305850.vrm",
+ "vroid/0/3223497478111195610/3223497478111195610.vrm",
+ "vroid/0/3245485593774659670/3245485593774659670.vrm",
+ "vroid/0/3247521123364859180/3247521123364859180.vrm",
+ "vroid/0/3248101090915254240/3248101090915254240.vrm",
+ "vroid/0/3249323346357999770/3249323346357999770.vrm",
+ "vroid/0/3251365818533251360/3251365818533251360.vrm",
+ "vroid/0/3266405811611944060/3266405811611944060.vrm",
+ "vroid/0/3271961944696653520/3271961944696653520.vrm",
+ "vroid/0/3278190700028945380/3278190700028945380.vrm",
+ "vroid/0/3281378081925199250/3281378081925199250.vrm",
+ "vroid/0/3282079607237912010/3282079607237912010.vrm",
+ "vroid/0/3282208207844657250/3282208207844657250.vrm",
+ "vroid/0/33048841234194340/33048841234194340.vrm",
+ "vroid/0/3311279190067488310/3311279190067488310.vrm",
+ "vroid/0/3314921070943113540/3314921070943113540.vrm",
+ "vroid/0/3315598912248432960/3315598912248432960.vrm",
+ "vroid/0/3316027330639534410/3316027330639534410.vrm",
+ "vroid/0/3324097067782386040/3324097067782386040.vrm",
+ "vroid/0/3324293443762710410/3324293443762710410.vrm",
+ "vroid/0/3327887495166663300/3327887495166663300.vrm",
+ "vroid/0/3337424531654674930/3337424531654674930.vrm",
+ "vroid/0/3338394351794840770/3338394351794840770.vrm",
+ "vroid/0/3340203211501676540/3340203211501676540.vrm",
+ "vroid/0/3346175168345274350/3346175168345274350.vrm",
+ "vroid/0/3346200507045763000/3346200507045763000.vrm",
+ "vroid/0/3353733661876323740/3353733661876323740.vrm",
+ "vroid/0/3354667489182854040/3354667489182854040.vrm",
+ "vroid/0/3356330938466745970/3356330938466745970.vrm",
+ "vroid/0/3358609650656129660/3358609650656129660.vrm",
+ "vroid/0/3362864983627574950/3362864983627574950.vrm",
+ "vroid/0/3364006844696992760/3364006844696992760.vrm",
+ "vroid/0/3376936358862619770/3376936358862619770.vrm",
+ "vroid/0/3401581691168880660/3401581691168880660.vrm",
+ "vroid/0/3404980665746001490/3404980665746001490.vrm",
+ "vroid/0/3411627188325814460/3411627188325814460.vrm",
+ "vroid/0/3413208970191952220/3413208970191952220.vrm",
+ "vroid/0/3420340460205253360/3420340460205253360.vrm",
+ "vroid/0/3428672211765944980/3428672211765944980.vrm",
+ "vroid/0/3445188753257345790/3445188753257345790.vrm",
+ "vroid/0/344886352389488430/344886352389488430.vrm",
+ "vroid/0/345563583522419980/345563583522419980.vrm",
+ "vroid/0/3456572857822945460/3456572857822945460.vrm",
+ "vroid/0/3461017189180364510/3461017189180364510.vrm",
+ "vroid/0/3465024955374919620/3465024955374919620.vrm",
+ "vroid/0/3473173188849829670/3473173188849829670.vrm",
+ "vroid/0/3477999226446069490/3477999226446069490.vrm",
+ "vroid/0/3480429732768105720/3480429732768105720.vrm",
+ "vroid/0/3503339509514062420/3503339509514062420.vrm",
+ "vroid/0/3532352608945117170/3532352608945117170.vrm",
+ "vroid/0/3537248622558730330/3537248622558730330.vrm",
+ "vroid/0/3543404773511963660/3543404773511963660.vrm",
+ "vroid/0/3550236534922020260/3550236534922020260.vrm",
+ "vroid/0/3552976378185837890/3552976378185837890.vrm",
+ "vroid/0/3561146370229017260/3561146370229017260.vrm",
+ "vroid/0/3571338828365994540/3571338828365994540.vrm",
+ "vroid/0/3583054622791744620/3583054622791744620.vrm",
+ "vroid/0/358380539472537950/358380539472537950.vrm",
+ "vroid/0/3590506110366233050/3590506110366233050.vrm",
+ "vroid/0/3599551257327653500/3599551257327653500.vrm",
+ "vroid/0/3602150352583400360/3602150352583400360.vrm",
+ "vroid/0/3604417146255922790/3604417146255922790.vrm",
+ "vroid/0/3622679873795150790/3622679873795150790.vrm",
+ "vroid/0/3628536396329063340/3628536396329063340.vrm",
+ "vroid/0/3635159105848535000/3635159105848535000.vrm",
+ "vroid/0/3642708940210726970/3642708940210726970.vrm",
+ "vroid/0/3648171753281176060/3648171753281176060.vrm",
+ "vroid/0/3658379276245038050/3658379276245038050.vrm",
+ "vroid/0/366241717043789580/366241717043789580.vrm",
+ "vroid/0/3676199748666491220/3676199748666491220.vrm",
+ "vroid/0/367929007626953940/367929007626953940.vrm",
+ "vroid/0/3679427845364521740/3679427845364521740.vrm",
+ "vroid/0/3679523714756831200/3679523714756831200.vrm",
+ "vroid/0/3680544747505011980/3680544747505011980.vrm",
+ "vroid/0/3692697510310972960/3692697510310972960.vrm",
+ "vroid/0/3693690919379523380/3693690919379523380.vrm",
+ "vroid/0/3700723093366413770/3700723093366413770.vrm",
+ "vroid/0/3700946007225945100/3700946007225945100.vrm",
+ "vroid/0/373008098193672690/373008098193672690.vrm",
+ "vroid/0/375443313112639850/375443313112639850.vrm",
+ "vroid/0/3764481947787626140/3764481947787626140.vrm",
+ "vroid/0/3766069854738669790/3766069854738669790.vrm",
+ "vroid/0/3777405962858583000/3777405962858583000.vrm",
+ "vroid/0/3791246211154956940/3791246211154956940.vrm",
+ "vroid/0/3797996505326030330/3797996505326030330.vrm",
+ "vroid/0/3801901023809895850/3801901023809895850.vrm",
+ "vroid/0/3805344958290963880/3805344958290963880.vrm",
+ "vroid/0/3806355874761573410/3806355874761573410.vrm",
+ "vroid/0/3819746322122197420/3819746322122197420.vrm",
+ "vroid/0/382192830845740/382192830845740.vrm",
+ "vroid/0/3823405440993540710/3823405440993540710.vrm",
+ "vroid/0/3854037895687150600/3854037895687150600.vrm",
+ "vroid/0/3854399611640760780/3854399611640760780.vrm",
+ "vroid/0/3866406803909260060/3866406803909260060.vrm",
+ "vroid/0/3867145843520076910/3867145843520076910.vrm",
+ "vroid/0/38716312618064220/38716312618064220.vrm",
+ "vroid/0/3872616618668548090/3872616618668548090.vrm",
+ "vroid/0/3875076447850038380/3875076447850038380.vrm",
+ "vroid/0/3877494189957255510/3877494189957255510.vrm",
+ "vroid/0/3878842089005275770/3878842089005275770.vrm",
+ "vroid/0/3891042114173144140/3891042114173144140.vrm",
+ "vroid/0/3895584734015920940/3895584734015920940.vrm",
+ "vroid/0/3901283098535947590/3901283098535947590.vrm",
+ "vroid/0/3904398280363458500/3904398280363458500.vrm",
+ "vroid/0/3919925098503909670/3919925098503909670.vrm",
+ "vroid/0/3920759878220224740/3920759878220224740.vrm",
+ "vroid/0/3921395653604937970/3921395653604937970.vrm",
+ "vroid/0/3923447433376191390/3923447433376191390.vrm",
+ "vroid/0/392850653751314170/392850653751314170.vrm",
+ "vroid/0/3933478832379237860/3933478832379237860.vrm",
+ "vroid/0/3941226150071197300/3941226150071197300.vrm",
+ "vroid/0/3941519388352783050/3941519388352783050.vrm",
+ "vroid/0/3943343976553677060/3943343976553677060.vrm",
+ "vroid/0/3945990285777060300/3945990285777060300.vrm",
+ "vroid/0/3953598288654932620/3953598288654932620.vrm",
+ "vroid/0/3956244387337855300/3956244387337855300.vrm",
+ "vroid/0/3957261456550679790/3957261456550679790.vrm",
+ "vroid/0/395917653879499590/395917653879499590.vrm",
+ "vroid/0/3960128639328682920/3960128639328682920.vrm",
+ "vroid/0/3960375644736155140/3960375644736155140.vrm",
+ "vroid/0/3965411277877895610/3965411277877895610.vrm",
+ "vroid/0/396973528195932890/396973528195932890.vrm",
+ "vroid/0/397137351080683160/397137351080683160.vrm",
+ "vroid/0/3971667644142091930/3971667644142091930.vrm",
+ "vroid/0/3973872337376392490/3973872337376392490.vrm",
+ "vroid/0/3983250026121676070/3983250026121676070.vrm",
+ "vroid/0/3986158436540708210/3986158436540708210.vrm",
+ "vroid/0/3987361231364246210/3987361231364246210.vrm",
+ "vroid/0/3993007504652272190/3993007504652272190.vrm",
+ "vroid/0/3994707169426685940/3994707169426685940.vrm",
+ "vroid/0/4004291503315693390/4004291503315693390.vrm",
+ "vroid/0/4004436873857807090/4004436873857807090.vrm",
+ "vroid/0/4009937008892632950/4009937008892632950.vrm",
+ "vroid/0/4014507138118884940/4014507138118884940.vrm",
+ "vroid/0/4017972466061235320/4017972466061235320.vrm",
+ "vroid/0/4031997518835642720/4031997518835642720.vrm",
+ "vroid/0/4054662229917871080/4054662229917871080.vrm",
+ "vroid/0/4061343146469688940/4061343146469688940.vrm",
+ "vroid/0/4085271909750238500/4085271909750238500.vrm",
+ "vroid/0/4085934708470583430/4085934708470583430.vrm",
+ "vroid/0/4089360612845109290/4089360612845109290.vrm",
+ "vroid/0/4089379538525763820/4089379538525763820.vrm",
+ "vroid/0/4089658609127385490/4089658609127385490.vrm",
+ "vroid/0/4091246605850584600/4091246605850584600.vrm",
+ "vroid/0/409946149650791590/409946149650791590.vrm",
+ "vroid/0/4101867842616169600/4101867842616169600.vrm",
+ "vroid/0/4105600236666635660/4105600236666635660.vrm",
+ "vroid/0/4114204810485978360/4114204810485978360.vrm",
+ "vroid/0/4121398226677993070/4121398226677993070.vrm",
+ "vroid/0/4125010201198246410/4125010201198246410.vrm",
+ "vroid/0/4127708130893548570/4127708130893548570.vrm",
+ "vroid/0/4128532800536575810/4128532800536575810.vrm",
+ "vroid/0/4131979252775564660/4131979252775564660.vrm",
+ "vroid/0/4137210219160093760/4137210219160093760.vrm",
+ "vroid/0/4141492111250696390/4141492111250696390.vrm",
+ "vroid/0/4144683421539045650/4144683421539045650.vrm",
+ "vroid/0/4149374860100334170/4149374860100334170.vrm",
+ "vroid/0/4150908258133118290/4150908258133118290.vrm",
+ "vroid/0/4157320968071852770/4157320968071852770.vrm",
+ "vroid/0/416400926465403190/416400926465403190.vrm",
+ "vroid/0/4171344973810277540/4171344973810277540.vrm",
+ "vroid/0/4190716126965781520/4190716126965781520.vrm",
+ "vroid/0/419290446040770120/419290446040770120.vrm",
+ "vroid/0/4206927045461146330/4206927045461146330.vrm",
+ "vroid/0/4213196292582719310/4213196292582719310.vrm",
+ "vroid/0/4214338010227341470/4214338010227341470.vrm",
+ "vroid/0/4226983837021293760/4226983837021293760.vrm",
+ "vroid/0/4231134736762549290/4231134736762549290.vrm",
+ "vroid/0/4232314507957073140/4232314507957073140.vrm",
+ "vroid/0/4241445133426269310/4241445133426269310.vrm",
+ "vroid/0/424819666859037400/424819666859037400.vrm",
+ "vroid/0/4250111571597570830/4250111571597570830.vrm",
+ "vroid/0/4251029968316135200/4251029968316135200.vrm",
+ "vroid/0/425275497810314700/425275497810314700.vrm",
+ "vroid/0/425302471778916140/425302471778916140.vrm",
+ "vroid/0/4262265738391622890/4262265738391622890.vrm",
+ "vroid/0/4263959701169154120/4263959701169154120.vrm",
+ "vroid/0/4271594026154238810/4271594026154238810.vrm",
+ "vroid/0/427396224867369330/427396224867369330.vrm",
+ "vroid/0/4274383312622040130/4274383312622040130.vrm",
+ "vroid/0/4303931394050307950/4303931394050307950.vrm",
+ "vroid/0/4308883545939832200/4308883545939832200.vrm",
+ "vroid/0/4311228893966976340/4311228893966976340.vrm",
+ "vroid/0/4312434515318330670/4312434515318330670.vrm",
+ "vroid/0/4313685998369196840/4313685998369196840.vrm",
+ "vroid/0/4321559250499143480/4321559250499143480.vrm",
+ "vroid/0/4322346172699812600/4322346172699812600.vrm",
+ "vroid/0/4328188147093725850/4328188147093725850.vrm",
+ "vroid/0/433187289753015430/433187289753015430.vrm",
+ "vroid/0/4341133159010511280/4341133159010511280.vrm",
+ "vroid/0/4348063833041321880/4348063833041321880.vrm",
+ "vroid/0/4348127235762522680/4348127235762522680.vrm",
+ "vroid/0/434871904799223760/434871904799223760.vrm",
+ "vroid/0/4352390042498436160/4352390042498436160.vrm",
+ "vroid/0/4353102586922240240/4353102586922240240.vrm",
+ "vroid/0/4359656527118517790/4359656527118517790.vrm",
+ "vroid/0/4363616983742103200/4363616983742103200.vrm",
+ "vroid/0/436560915854568810/436560915854568810.vrm",
+ "vroid/0/4367116093252590900/4367116093252590900.vrm",
+ "vroid/0/43875995480588670/43875995480588670.vrm",
+ "vroid/0/4388064489425453990/4388064489425453990.vrm",
+ "vroid/0/4395774892235431410/4395774892235431410.vrm",
+ "vroid/0/4400078146530134560/4400078146530134560.vrm",
+ "vroid/0/4401826936623794800/4401826936623794800.vrm",
+ "vroid/0/4402904416840208320/4402904416840208320.vrm",
+ "vroid/0/4406314807761597730/4406314807761597730.vrm",
+ "vroid/0/4407176300058130190/4407176300058130190.vrm",
+ "vroid/0/4408244764032758140/4408244764032758140.vrm",
+ "vroid/0/4408333808135344760/4408333808135344760.vrm",
+ "vroid/0/4425303448078495670/4425303448078495670.vrm",
+ "vroid/0/4434820371983992720/4434820371983992720.vrm",
+ "vroid/0/4435053719743341910/4435053719743341910.vrm",
+ "vroid/0/4437312224034742550/4437312224034742550.vrm",
+ "vroid/0/4444114264114368890/4444114264114368890.vrm",
+ "vroid/0/4448351842255931830/4448351842255931830.vrm",
+ "vroid/0/4449417089315085640/4449417089315085640.vrm",
+ "vroid/0/4450128667582363020/4450128667582363020.vrm",
+ "vroid/0/4451138671717313980/4451138671717313980.vrm",
+ "vroid/0/4451468154605127960/4451468154605127960.vrm",
+ "vroid/0/4453971721652566390/4453971721652566390.vrm",
+ "vroid/0/4460289626909931650/4460289626909931650.vrm",
+ "vroid/0/4468330755173788110/4468330755173788110.vrm",
+ "vroid/0/4481063790707731800/4481063790707731800.vrm",
+ "vroid/0/4484496397092209800/4484496397092209800.vrm",
+ "vroid/0/4487305753198906960/4487305753198906960.vrm",
+ "vroid/0/4497958496244923370/4497958496244923370.vrm",
+ "vroid/0/4499744572796739710/4499744572796739710.vrm",
+ "vroid/0/4503385273468617970/4503385273468617970.vrm",
+ "vroid/0/4506752172236118070/4506752172236118070.vrm",
+ "vroid/0/4507147301381029760/4507147301381029760.vrm",
+ "vroid/0/4507193832473717440/4507193832473717440.vrm",
+ "vroid/0/4510218806292838630/4510218806292838630.vrm",
+ "vroid/0/4512035646585254570/4512035646585254570.vrm",
+ "vroid/0/4518757759610086640/4518757759610086640.vrm",
+ "vroid/0/4527676448555583050/4527676448555583050.vrm",
+ "vroid/0/45278058869983420/45278058869983420.vrm",
+ "vroid/0/4530111849803819560/4530111849803819560.vrm",
+ "vroid/0/4535177541660557750/4535177541660557750.vrm",
+ "vroid/0/4539104050221595010/4539104050221595010.vrm",
+ "vroid/0/4541661979292429260/4541661979292429260.vrm",
+ "vroid/0/454216625739754450/454216625739754450.vrm",
+ "vroid/0/4555885783976703230/4555885783976703230.vrm",
+ "vroid/0/4558791126284353710/4558791126284353710.vrm",
+ "vroid/0/4560222660008055160/4560222660008055160.vrm",
+ "vroid/0/4562948372310139220/4562948372310139220.vrm",
+ "vroid/0/458231061619082120/458231061619082120.vrm",
+ "vroid/0/46021539700593510/46021539700593510.vrm",
+ "vroid/0/4603378324246093870/4603378324246093870.vrm",
+ "vroid/0/4610205575609865810/4610205575609865810.vrm",
+ "vroid/0/4635225194845560580/4635225194845560580.vrm",
+ "vroid/0/4640111154197522330/4640111154197522330.vrm",
+ "vroid/0/4647293997859285300/4647293997859285300.vrm",
+ "vroid/0/465233653445958740/465233653445958740.vrm",
+ "vroid/0/4657751061325609130/4657751061325609130.vrm",
+ "vroid/0/4660843897838789580/4660843897838789580.vrm",
+ "vroid/0/4663775992715899470/4663775992715899470.vrm",
+ "vroid/0/4668883329338734970/4668883329338734970.vrm",
+ "vroid/0/4669908084423878540/4669908084423878540.vrm",
+ "vroid/0/467443238919536990/467443238919536990.vrm",
+ "vroid/0/4688409478273037820/4688409478273037820.vrm",
+ "vroid/0/4691583522217805510/4691583522217805510.vrm",
+ "vroid/0/4694506640810203880/4694506640810203880.vrm",
+ "vroid/0/4695100778877642180/4695100778877642180.vrm",
+ "vroid/0/4707050365373424950/4707050365373424950.vrm",
+ "vroid/0/4708652700785883690/4708652700785883690.vrm",
+ "vroid/0/4708908571398818530/4708908571398818530.vrm",
+ "vroid/0/4718565474006856330/4718565474006856330.vrm",
+ "vroid/0/474222272472287730/474222272472287730.vrm",
+ "vroid/0/4745909504560941260/4745909504560941260.vrm",
+ "vroid/0/4746254182564212140/4746254182564212140.vrm",
+ "vroid/0/4747220625812190480/4747220625812190480.vrm",
+ "vroid/0/4756595039805149720/4756595039805149720.vrm",
+ "vroid/0/4763764133216160860/4763764133216160860.vrm",
+ "vroid/0/4765664150293902220/4765664150293902220.vrm",
+ "vroid/0/4774020387355159990/4774020387355159990.vrm",
+ "vroid/0/4782787250385982690/4782787250385982690.vrm",
+ "vroid/0/4790081704568370500/4790081704568370500.vrm",
+ "vroid/0/4791819849151253660/4791819849151253660.vrm",
+ "vroid/0/4794230662119909630/4794230662119909630.vrm",
+ "vroid/0/4816643170117354060/4816643170117354060.vrm",
+ "vroid/0/4821194456777886400/4821194456777886400.vrm",
+ "vroid/0/4828831661202392800/4828831661202392800.vrm",
+ "vroid/0/4829073249613684300/4829073249613684300.vrm",
+ "vroid/0/483057255317797710/483057255317797710.vrm",
+ "vroid/0/4830594696653672490/4830594696653672490.vrm",
+ "vroid/0/4850516755695240320/4850516755695240320.vrm",
+ "vroid/0/4856910297997836700/4856910297997836700.vrm",
+ "vroid/0/4861638631585186240/4861638631585186240.vrm",
+ "vroid/0/4878505357788891150/4878505357788891150.vrm",
+ "vroid/0/4879987359729999510/4879987359729999510.vrm",
+ "vroid/0/4883178972869056480/4883178972869056480.vrm",
+ "vroid/0/4889494300455822140/4889494300455822140.vrm",
+ "vroid/0/4901961532449844050/4901961532449844050.vrm",
+ "vroid/0/4904143627888872490/4904143627888872490.vrm",
+ "vroid/0/4905526019883109910/4905526019883109910.vrm",
+ "vroid/0/4921158581833843320/4921158581833843320.vrm",
+ "vroid/0/4934057925179572420/4934057925179572420.vrm",
+ "vroid/0/4958885335207550500/4958885335207550500.vrm",
+ "vroid/0/4967716144948667840/4967716144948667840.vrm",
+ "vroid/0/4971470669768233130/4971470669768233130.vrm",
+ "vroid/0/4972353594554679670/4972353594554679670.vrm",
+ "vroid/0/4972355219662424160/4972355219662424160.vrm",
+ "vroid/0/4974359925797921130/4974359925797921130.vrm",
+ "vroid/0/4976451534922498230/4976451534922498230.vrm",
+ "vroid/0/4977032098320876860/4977032098320876860.vrm",
+ "vroid/0/5011954836132549700/5011954836132549700.vrm",
+ "vroid/0/5023207705574688530/5023207705574688530.vrm",
+ "vroid/0/5033935592668089070/5033935592668089070.vrm",
+ "vroid/0/5035036364113489030/5035036364113489030.vrm",
+ "vroid/0/504324931973920670/504324931973920670.vrm",
+ "vroid/0/5047126448212112480/5047126448212112480.vrm",
+ "vroid/0/5053537939493519390/5053537939493519390.vrm",
+ "vroid/0/5058023818935210540/5058023818935210540.vrm",
+ "vroid/0/5060277260065032810/5060277260065032810.vrm",
+ "vroid/0/5062520653326223120/5062520653326223120.vrm",
+ "vroid/0/508186040755283610/508186040755283610.vrm",
+ "vroid/0/5084298483057574450/5084298483057574450.vrm",
+ "vroid/0/5084940010793953700/5084940010793953700.vrm",
+ "vroid/0/508510521668523170/508510521668523170.vrm",
+ "vroid/0/5085527463429017380/5085527463429017380.vrm",
+ "vroid/0/5095386043245893710/5095386043245893710.vrm",
+ "vroid/0/5095847475329593030/5095847475329593030.vrm",
+ "vroid/0/5096645626300805740/5096645626300805740.vrm",
+ "vroid/0/5104728487902097920/5104728487902097920.vrm",
+ "vroid/0/5125149248818876190/5125149248818876190.vrm",
+ "vroid/0/5128321562761302110/5128321562761302110.vrm",
+ "vroid/0/513307881269339810/513307881269339810.vrm",
+ "vroid/0/5140148812800158510/5140148812800158510.vrm",
+ "vroid/0/5151984901263205630/5151984901263205630.vrm",
+ "vroid/0/5154934929951705260/5154934929951705260.vrm",
+ "vroid/0/5172858305116714710/5172858305116714710.vrm",
+ "vroid/0/5176064128372997640/5176064128372997640.vrm",
+ "vroid/0/5191804369929007450/5191804369929007450.vrm",
+ "vroid/0/5195726811299704870/5195726811299704870.vrm",
+ "vroid/0/5203575998142204530/5203575998142204530.vrm",
+ "vroid/0/5203681443154835340/5203681443154835340.vrm",
+ "vroid/0/520988452048630510/520988452048630510.vrm",
+ "vroid/0/5213375051399188660/5213375051399188660.vrm",
+ "vroid/0/5214053721419748950/5214053721419748950.vrm",
+ "vroid/0/5222918352300161090/5222918352300161090.vrm",
+ "vroid/0/5223937355742551370/5223937355742551370.vrm",
+ "vroid/0/5236141067540503850/5236141067540503850.vrm",
+ "vroid/0/5240671838914549160/5240671838914549160.vrm",
+ "vroid/0/5249837227516583140/5249837227516583140.vrm",
+ "vroid/0/5253400920378194250/5253400920378194250.vrm",
+ "vroid/0/5256800219039685080/5256800219039685080.vrm",
+ "vroid/0/525724955230631450/525724955230631450.vrm",
+ "vroid/0/5260772532742320860/5260772532742320860.vrm",
+ "vroid/0/5266023120554637260/5266023120554637260.vrm",
+ "vroid/0/5267643633260029660/5267643633260029660.vrm",
+ "vroid/0/5274355457193658760/5274355457193658760.vrm",
+ "vroid/0/5276172363140445800/5276172363140445800.vrm",
+ "vroid/0/5276826661895662340/5276826661895662340.vrm",
+ "vroid/0/5281133288621340270/5281133288621340270.vrm",
+ "vroid/0/5297094039762368800/5297094039762368800.vrm",
+ "vroid/0/529955899139820130/529955899139820130.vrm",
+ "vroid/0/5304539707372814480/5304539707372814480.vrm",
+ "vroid/0/5304739315308112590/5304739315308112590.vrm",
+ "vroid/0/5310496717732324310/5310496717732324310.vrm",
+ "vroid/0/5310610516056872460/5310610516056872460.vrm",
+ "vroid/0/5312763549025513670/5312763549025513670.vrm",
+ "vroid/0/5315797287503188030/5315797287503188030.vrm",
+ "vroid/0/5315869691386942150/5315869691386942150.vrm",
+ "vroid/0/5316154064835921940/5316154064835921940.vrm",
+ "vroid/0/5317390321082835280/5317390321082835280.vrm",
+ "vroid/0/5326551341176445340/5326551341176445340.vrm",
+ "vroid/0/5331156255299777950/5331156255299777950.vrm",
+ "vroid/0/5335154791579029470/5335154791579029470.vrm",
+ "vroid/0/5350674531901718160/5350674531901718160.vrm",
+ "vroid/0/5358399855452256000/5358399855452256000.vrm",
+ "vroid/0/535847299517724940/535847299517724940.vrm",
+ "vroid/0/5361608075849130290/5361608075849130290.vrm",
+ "vroid/0/5361659915399788560/5361659915399788560.vrm",
+ "vroid/0/5362778520327714040/5362778520327714040.vrm",
+ "vroid/0/536303363180131160/536303363180131160.vrm",
+ "vroid/0/5365633810612934110/5365633810612934110.vrm",
+ "vroid/0/538104409079540000/538104409079540000.vrm",
+ "vroid/0/5381633601546830790/5381633601546830790.vrm",
+ "vroid/0/539003850869479610/539003850869479610.vrm",
+ "vroid/0/5391573223707446900/5391573223707446900.vrm",
+ "vroid/0/5399012092552750060/5399012092552750060.vrm",
+ "vroid/0/5403802845192007530/5403802845192007530.vrm",
+ "vroid/0/5412180471813092590/5412180471813092590.vrm",
+ "vroid/0/5434764071775478040/5434764071775478040.vrm",
+ "vroid/0/5441824940427984270/5441824940427984270.vrm",
+ "vroid/0/5444270174789660010/5444270174789660010.vrm",
+ "vroid/0/5450791992253254160/5450791992253254160.vrm",
+ "vroid/0/5451545064163194160/5451545064163194160.vrm",
+ "vroid/0/5455086490890227020/5455086490890227020.vrm",
+ "vroid/0/5458184579229076100/5458184579229076100.vrm",
+ "vroid/0/5468377297249509370/5468377297249509370.vrm",
+ "vroid/0/5479804697298437040/5479804697298437040.vrm",
+ "vroid/0/548445568634276190/548445568634276190.vrm",
+ "vroid/0/5488958221414592490/5488958221414592490.vrm",
+ "vroid/0/5489213839380529610/5489213839380529610.vrm",
+ "vroid/0/5489791290466646300/5489791290466646300.vrm",
+ "vroid/0/5491317038403698370/5491317038403698370.vrm",
+ "vroid/0/5501800478057769840/5501800478057769840.vrm",
+ "vroid/0/5506960894140983360/5506960894140983360.vrm",
+ "vroid/0/5508826160789603870/5508826160789603870.vrm",
+ "vroid/0/5518221047860740040/5518221047860740040.vrm",
+ "vroid/0/5525969863157062720/5525969863157062720.vrm",
+ "vroid/0/5538041866809564590/5538041866809564590.vrm",
+ "vroid/0/5546109339219730790/5546109339219730790.vrm",
+ "vroid/0/5546312075397993110/5546312075397993110.vrm",
+ "vroid/0/5547092919544096280/5547092919544096280.vrm",
+ "vroid/0/554868399077418500/554868399077418500.vrm",
+ "vroid/0/5554398559458152520/5554398559458152520.vrm",
+ "vroid/0/5559540556040158120/5559540556040158120.vrm",
+ "vroid/0/5559749960132720480/5559749960132720480.vrm",
+ "vroid/0/5562768832970375110/5562768832970375110.vrm",
+ "vroid/0/5563308683522673570/5563308683522673570.vrm",
+ "vroid/0/5564247961016097910/5564247961016097910.vrm",
+ "vroid/0/5567045856309322330/5567045856309322330.vrm",
+ "vroid/0/5568033024168433440/5568033024168433440.vrm",
+ "vroid/0/5570925608414487070/5570925608414487070.vrm",
+ "vroid/0/557543092906025910/557543092906025910.vrm",
+ "vroid/0/5605609387174088340/5605609387174088340.vrm",
+ "vroid/0/5615036675995875910/5615036675995875910.vrm",
+ "vroid/0/5616765306113513760/5616765306113513760.vrm",
+ "vroid/0/5620402198269073980/5620402198269073980.vrm",
+ "vroid/0/5628707354432612020/5628707354432612020.vrm",
+ "vroid/0/5662048210370549490/5662048210370549490.vrm",
+ "vroid/0/5677031321413240170/5677031321413240170.vrm",
+ "vroid/0/5677667025090732770/5677667025090732770.vrm",
+ "vroid/0/5681592095440651740/5681592095440651740.vrm",
+ "vroid/0/5686563297381816910/5686563297381816910.vrm",
+ "vroid/0/5691478655558471940/5691478655558471940.vrm",
+ "vroid/0/5711191903018636410/5711191903018636410.vrm",
+ "vroid/0/5715994959568482740/5715994959568482740.vrm",
+ "vroid/0/5717170051348244430/5717170051348244430.vrm",
+ "vroid/0/5721923735786686500/5721923735786686500.vrm",
+ "vroid/0/5722103564331403470/5722103564331403470.vrm",
+ "vroid/0/5725131045732851240/5725131045732851240.vrm",
+ "vroid/0/5737662982571412510/5737662982571412510.vrm",
+ "vroid/0/5746196675588195290/5746196675588195290.vrm",
+ "vroid/0/5749908116480830630/5749908116480830630.vrm",
+ "vroid/0/5772652057330389900/5772652057330389900.vrm",
+ "vroid/0/5774585348602500240/5774585348602500240.vrm",
+ "vroid/0/577580918549566010/577580918549566010.vrm",
+ "vroid/0/5787695081125271270/5787695081125271270.vrm",
+ "vroid/0/5792171940962566090/5792171940962566090.vrm",
+ "vroid/0/5795565369628361120/5795565369628361120.vrm",
+ "vroid/0/5812530083332159160/5812530083332159160.vrm",
+ "vroid/0/5821968215609305170/5821968215609305170.vrm",
+ "vroid/0/5826292114939950750/5826292114939950750.vrm",
+ "vroid/0/582935371437320100/582935371437320100.vrm",
+ "vroid/0/5834949080810369420/5834949080810369420.vrm",
+ "vroid/0/5843572872469189880/5843572872469189880.vrm",
+ "vroid/0/5845143173536083280/5845143173536083280.vrm",
+ "vroid/0/5852786492213752020/5852786492213752020.vrm",
+ "vroid/0/5858419181677172540/5858419181677172540.vrm",
+ "vroid/0/5865787462267702290/5865787462267702290.vrm",
+ "vroid/0/5878479567254090270/5878479567254090270.vrm",
+ "vroid/0/5878968135684076850/5878968135684076850.vrm",
+ "vroid/0/5887155484586375180/5887155484586375180.vrm",
+ "vroid/0/5921897427008875840/5921897427008875840.vrm",
+ "vroid/0/593023258276062770/593023258276062770.vrm",
+ "vroid/0/5943012913300440460/5943012913300440460.vrm",
+ "vroid/0/5944530833691850320/5944530833691850320.vrm",
+ "vroid/0/5948790368274437760/5948790368274437760.vrm",
+ "vroid/0/5952952956798802070/5952952956798802070.vrm",
+ "vroid/0/5966300186119592740/5966300186119592740.vrm",
+ "vroid/0/5967215620908526330/5967215620908526330.vrm",
+ "vroid/0/5977158210136328630/5977158210136328630.vrm",
+ "vroid/0/5982820027530616870/5982820027530616870.vrm",
+ "vroid/0/5988140637350829640/5988140637350829640.vrm",
+ "vroid/0/599237894156050870/599237894156050870.vrm",
+ "vroid/0/6009414969589134530/6009414969589134530.vrm",
+ "vroid/0/6013861093241849140/6013861093241849140.vrm",
+ "vroid/0/6018826591592337230/6018826591592337230.vrm",
+ "vroid/0/6026774473043542920/6026774473043542920.vrm",
+ "vroid/0/6041489457709942910/6041489457709942910.vrm",
+ "vroid/0/6045005168166653590/6045005168166653590.vrm",
+ "vroid/0/6047237774635459770/6047237774635459770.vrm",
+ "vroid/0/6061954280224355370/6061954280224355370.vrm",
+ "vroid/0/6071811945676480190/6071811945676480190.vrm",
+ "vroid/0/6072591777323049710/6072591777323049710.vrm",
+ "vroid/0/6074563052883127830/6074563052883127830.vrm",
+ "vroid/0/6092469035086739730/6092469035086739730.vrm",
+ "vroid/0/6093838176315624640/6093838176315624640.vrm",
+ "vroid/0/6103766166425636780/6103766166425636780.vrm",
+ "vroid/0/610829115799168820/610829115799168820.vrm",
+ "vroid/0/6124667202009512900/6124667202009512900.vrm",
+ "vroid/0/612584390295458060/612584390295458060.vrm",
+ "vroid/0/6131729745103358130/6131729745103358130.vrm",
+ "vroid/0/6131877353824263450/6131877353824263450.vrm",
+ "vroid/0/6133982799039350770/6133982799039350770.vrm",
+ "vroid/0/6162597630408884100/6162597630408884100.vrm",
+ "vroid/0/6170456383570238760/6170456383570238760.vrm",
+ "vroid/0/6171884197754545830/6171884197754545830.vrm",
+ "vroid/0/6191522870031927060/6191522870031927060.vrm",
+ "vroid/0/620280262008964480/620280262008964480.vrm",
+ "vroid/0/6208651048303545550/6208651048303545550.vrm",
+ "vroid/0/6208657037906638750/6208657037906638750.vrm",
+ "vroid/0/620994320709587260/620994320709587260.vrm",
+ "vroid/0/6212338928903813130/6212338928903813130.vrm",
+ "vroid/0/6214995593725117160/6214995593725117160.vrm",
+ "vroid/0/621499897327414110/621499897327414110.vrm",
+ "vroid/0/6218137938559459280/6218137938559459280.vrm",
+ "vroid/0/6221023046895765220/6221023046895765220.vrm",
+ "vroid/0/6224343331096651320/6224343331096651320.vrm",
+ "vroid/0/6224608419105700790/6224608419105700790.vrm",
+ "vroid/0/6225584509397274330/6225584509397274330.vrm",
+ "vroid/0/6234735045292935440/6234735045292935440.vrm",
+ "vroid/0/6249656528549748430/6249656528549748430.vrm",
+ "vroid/0/6255438164588392660/6255438164588392660.vrm",
+ "vroid/0/6262545079697748710/6262545079697748710.vrm",
+ "vroid/0/6264908970163155290/6264908970163155290.vrm",
+ "vroid/0/6268534403507405240/6268534403507405240.vrm",
+ "vroid/0/6270696799092075950/6270696799092075950.vrm",
+ "vroid/0/6272132803571564230/6272132803571564230.vrm",
+ "vroid/0/6276693827641726240/6276693827641726240.vrm",
+ "vroid/0/6280918187259393020/6280918187259393020.vrm",
+ "vroid/0/6281797156595380390/6281797156595380390.vrm",
+ "vroid/0/6300927560245599240/6300927560245599240.vrm",
+ "vroid/0/6320518386506551930/6320518386506551930.vrm",
+ "vroid/0/6329530994946263130/6329530994946263130.vrm",
+ "vroid/0/6335969086512850070/6335969086512850070.vrm",
+ "vroid/0/6336421179279448380/6336421179279448380.vrm",
+ "vroid/0/6341017956135789830/6341017956135789830.vrm",
+ "vroid/0/6348552246717290040/6348552246717290040.vrm",
+ "vroid/0/6360583494772778210/6360583494772778210.vrm",
+ "vroid/0/6362805195505408980/6362805195505408980.vrm",
+ "vroid/0/6363574465938822600/6363574465938822600.vrm",
+ "vroid/0/6367021567557281020/6367021567557281020.vrm",
+ "vroid/0/6372901907607126600/6372901907607126600.vrm",
+ "vroid/0/6387882850882990800/6387882850882990800.vrm",
+ "vroid/0/6390146497242866370/6390146497242866370.vrm",
+ "vroid/0/6390463699285524330/6390463699285524330.vrm",
+ "vroid/0/6395616647582095860/6395616647582095860.vrm",
+ "vroid/0/6395854213579377930/6395854213579377930.vrm",
+ "vroid/0/6398371425973729540/6398371425973729540.vrm",
+ "vroid/0/639894385122745030/639894385122745030.vrm",
+ "vroid/0/6416308768549590630/6416308768549590630.vrm",
+ "vroid/0/6428390438635892460/6428390438635892460.vrm",
+ "vroid/0/6433997999306839210/6433997999306839210.vrm",
+ "vroid/0/6434136902208675750/6434136902208675750.vrm",
+ "vroid/0/643940367494134630/643940367494134630.vrm",
+ "vroid/0/6449202507101901550/6449202507101901550.vrm",
+ "vroid/0/6452983346054439510/6452983346054439510.vrm",
+ "vroid/0/6454608773066648410/6454608773066648410.vrm",
+ "vroid/0/6454837718794724090/6454837718794724090.vrm",
+ "vroid/0/6457137167414843850/6457137167414843850.vrm",
+ "vroid/0/6461372806987432490/6461372806987432490.vrm",
+ "vroid/0/6464398875425309810/6464398875425309810.vrm",
+ "vroid/0/6466415645121865450/6466415645121865450.vrm",
+ "vroid/0/6468720473731626110/6468720473731626110.vrm",
+ "vroid/0/6473450152832628680/6473450152832628680.vrm",
+ "vroid/0/6477563996640421540/6477563996640421540.vrm",
+ "vroid/0/6479475478460736290/6479475478460736290.vrm",
+ "vroid/0/6482413501671743370/6482413501671743370.vrm",
+ "vroid/0/6482423000775160210/6482423000775160210.vrm",
+ "vroid/0/6493836473108215950/6493836473108215950.vrm",
+ "vroid/0/6497741820074038230/6497741820074038230.vrm",
+ "vroid/0/6517514470021882100/6517514470021882100.vrm",
+ "vroid/0/6533467058439050670/6533467058439050670.vrm",
+ "vroid/0/6534084490972763740/6534084490972763740.vrm",
+ "vroid/0/653919957510492670/653919957510492670.vrm",
+ "vroid/0/6542081384152797970/6542081384152797970.vrm",
+ "vroid/0/6558100820075763550/6558100820075763550.vrm",
+ "vroid/0/6558863026891693050/6558863026891693050.vrm",
+ "vroid/0/6567733039431654330/6567733039431654330.vrm",
+ "vroid/0/6569149197856563010/6569149197856563010.vrm",
+ "vroid/0/6571757468396235560/6571757468396235560.vrm",
+ "vroid/0/6572170742754325140/6572170742754325140.vrm",
+ "vroid/0/6579454328364520340/6579454328364520340.vrm",
+ "vroid/0/6583969661883015580/6583969661883015580.vrm",
+ "vroid/0/6589476796076582770/6589476796076582770.vrm",
+ "vroid/0/6591713808649556440/6591713808649556440.vrm",
+ "vroid/0/6601722472338664890/6601722472338664890.vrm",
+ "vroid/0/660175704950200970/660175704950200970.vrm",
+ "vroid/0/6614258433821636320/6614258433821636320.vrm",
+ "vroid/0/6618065625471645030/6618065625471645030.vrm",
+ "vroid/0/6620620780011977510/6620620780011977510.vrm",
+ "vroid/0/6624113543034085780/6624113543034085780.vrm",
+ "vroid/0/6631964183349210080/6631964183349210080.vrm",
+ "vroid/0/664175832066851580/664175832066851580.vrm",
+ "vroid/0/664390785217845070/664390785217845070.vrm",
+ "vroid/0/6645719916538105920/6645719916538105920.vrm",
+ "vroid/0/6661008364527195590/6661008364527195590.vrm",
+ "vroid/0/6661137413184023060/6661137413184023060.vrm",
+ "vroid/0/6670317538375780990/6670317538375780990.vrm",
+ "vroid/0/6671456705428313660/6671456705428313660.vrm",
+ "vroid/0/6678151772290067940/6678151772290067940.vrm",
+ "vroid/0/6678809849236299320/6678809849236299320.vrm",
+ "vroid/0/6680613593330678370/6680613593330678370.vrm",
+ "vroid/0/6688495297820529400/6688495297820529400.vrm",
+ "vroid/0/6695851703840603160/6695851703840603160.vrm",
+ "vroid/0/6697420977431412240/6697420977431412240.vrm",
+ "vroid/0/6699517023549284870/6699517023549284870.vrm",
+ "vroid/0/670119082639015540/670119082639015540.vrm",
+ "vroid/0/6712162018599777630/6712162018599777630.vrm",
+ "vroid/0/6713835726895453700/6713835726895453700.vrm",
+ "vroid/0/6714768754304091150/6714768754304091150.vrm",
+ "vroid/0/672425528829057870/672425528829057870.vrm",
+ "vroid/0/6734578480501157450/6734578480501157450.vrm",
+ "vroid/0/6743283466012586870/6743283466012586870.vrm",
+ "vroid/0/6746765972629657330/6746765972629657330.vrm",
+ "vroid/0/6757190673025037990/6757190673025037990.vrm",
+ "vroid/0/6759381539548729630/6759381539548729630.vrm",
+ "vroid/0/676446068572630450/676446068572630450.vrm",
+ "vroid/0/6764670966139992370/6764670966139992370.vrm",
+ "vroid/0/6767674508877183930/6767674508877183930.vrm",
+ "vroid/0/676994000435173080/676994000435173080.vrm",
+ "vroid/0/6775150173141543810/6775150173141543810.vrm",
+ "vroid/0/6783688747163981190/6783688747163981190.vrm",
+ "vroid/0/67914400118624960/67914400118624960.vrm",
+ "vroid/0/6795821652068830160/6795821652068830160.vrm",
+ "vroid/0/6807947309263532860/6807947309263532860.vrm",
+ "vroid/0/6812060316877945880/6812060316877945880.vrm",
+ "vroid/0/6815212783537251400/6815212783537251400.vrm",
+ "vroid/0/6820958742949032090/6820958742949032090.vrm",
+ "vroid/0/682239182678089640/682239182678089640.vrm",
+ "vroid/0/6824361808315582980/6824361808315582980.vrm",
+ "vroid/0/6825055588441849410/6825055588441849410.vrm",
+ "vroid/0/6830091751476954110/6830091751476954110.vrm",
+ "vroid/0/6837057087994983790/6837057087994983790.vrm",
+ "vroid/0/6848430247017769140/6848430247017769140.vrm",
+ "vroid/0/685149046101294740/685149046101294740.vrm",
+ "vroid/0/6856454735337972290/6856454735337972290.vrm",
+ "vroid/0/6869834906500348700/6869834906500348700.vrm",
+ "vroid/0/6871117594845158650/6871117594845158650.vrm",
+ "vroid/0/688436609169640890/688436609169640890.vrm",
+ "vroid/0/6884876040546810560/6884876040546810560.vrm",
+ "vroid/0/6898977638359350870/6898977638359350870.vrm",
+ "vroid/0/6901742904912996590/6901742904912996590.vrm",
+ "vroid/0/6914415337401828930/6914415337401828930.vrm",
+ "vroid/0/691988672774479560/691988672774479560.vrm",
+ "vroid/0/6923907163634854460/6923907163634854460.vrm",
+ "vroid/0/6925135000804675580/6925135000804675580.vrm",
+ "vroid/0/6926861501104038640/6926861501104038640.vrm",
+ "vroid/0/6926869549205814370/6926869549205814370.vrm",
+ "vroid/0/6931774109206710060/6931774109206710060.vrm",
+ "vroid/0/6937854530592091310/6937854530592091310.vrm",
+ "vroid/0/6945552017469671350/6945552017469671350.vrm",
+ "vroid/0/694908503894739590/694908503894739590.vrm",
+ "vroid/0/6961412803001747180/6961412803001747180.vrm",
+ "vroid/0/6979656649379903300/6979656649379903300.vrm",
+ "vroid/0/6983064454891729640/6983064454891729640.vrm",
+ "vroid/0/6992076077809456630/6992076077809456630.vrm",
+ "vroid/0/6998505019688906670/6998505019688906670.vrm",
+ "vroid/0/7005809016668373520/7005809016668373520.vrm",
+ "vroid/0/7020701375924349210/7020701375924349210.vrm",
+ "vroid/0/702620824670957500/702620824670957500.vrm",
+ "vroid/0/7040049099142531610/7040049099142531610.vrm",
+ "vroid/0/7042656360297205580/7042656360297205580.vrm",
+ "vroid/0/7045265417833372440/7045265417833372440.vrm",
+ "vroid/0/706655893147151550/706655893147151550.vrm",
+ "vroid/0/7083065615240199830/7083065615240199830.vrm",
+ "vroid/0/7084451072467107780/7084451072467107780.vrm",
+ "vroid/0/7088924578953179820/7088924578953179820.vrm",
+ "vroid/0/7098852939373912760/7098852939373912760.vrm",
+ "vroid/0/7117014808644114040/7117014808644114040.vrm",
+ "vroid/0/7117470774007195360/7117470774007195360.vrm",
+ "vroid/0/7126555487613237360/7126555487613237360.vrm",
+ "vroid/0/7131292229436483690/7131292229436483690.vrm",
+ "vroid/0/7133113854996511690/7133113854996511690.vrm",
+ "vroid/0/7139091799513241490/7139091799513241490.vrm",
+ "vroid/0/7144951221036517300/7144951221036517300.vrm",
+ "vroid/0/7150516355044745790/7150516355044745790.vrm",
+ "vroid/0/7158578614313000000/7158578614313000000.vrm",
+ "vroid/0/7167658058611181120/7167658058611181120.vrm",
+ "vroid/0/7172084603778651130/7172084603778651130.vrm",
+ "vroid/0/7177828059554291450/7177828059554291450.vrm",
+ "vroid/0/717831117442830240/717831117442830240.vrm",
+ "vroid/0/7181079459187717200/7181079459187717200.vrm",
+ "vroid/0/7186714540355579500/7186714540355579500.vrm",
+ "vroid/0/7187692590181794870/7187692590181794870.vrm",
+ "vroid/0/7201634209166570880/7201634209166570880.vrm",
+ "vroid/0/7204668905167953700/7204668905167953700.vrm",
+ "vroid/0/7212360044391798630/7212360044391798630.vrm",
+ "vroid/0/72147510554833510/72147510554833510.vrm",
+ "vroid/0/7226930488959340220/7226930488959340220.vrm",
+ "vroid/0/7246548013864359760/7246548013864359760.vrm",
+ "vroid/0/7265446590600252430/7265446590600252430.vrm",
+ "vroid/0/7270259389917633810/7270259389917633810.vrm",
+ "vroid/0/7307252954150243650/7307252954150243650.vrm",
+ "vroid/0/7308063562971853000/7308063562971853000.vrm",
+ "vroid/0/7314039967881696310/7314039967881696310.vrm",
+ "vroid/0/7316548449766871880/7316548449766871880.vrm",
+ "vroid/0/7317852699862906020/7317852699862906020.vrm",
+ "vroid/0/7322455153625516000/7322455153625516000.vrm",
+ "vroid/0/7335329509054943460/7335329509054943460.vrm",
+ "vroid/0/7352807370309723490/7352807370309723490.vrm",
+ "vroid/0/735396054469583700/735396054469583700.vrm",
+ "vroid/0/7361430858099851290/7361430858099851290.vrm",
+ "vroid/0/7366460052533091580/7366460052533091580.vrm",
+ "vroid/0/7371360686661874960/7371360686661874960.vrm",
+ "vroid/0/7387331977119620580/7387331977119620580.vrm",
+ "vroid/0/7389974636498430490/7389974636498430490.vrm",
+ "vroid/0/7392274702321639960/7392274702321639960.vrm",
+ "vroid/0/7392969633927339060/7392969633927339060.vrm",
+ "vroid/0/7393427492118391970/7393427492118391970.vrm",
+ "vroid/0/7434106461731334380/7434106461731334380.vrm",
+ "vroid/0/744346888595635900/744346888595635900.vrm",
+ "vroid/0/745353349180485440/745353349180485440.vrm",
+ "vroid/0/7454215266761716400/7454215266761716400.vrm",
+ "vroid/0/7472158115440181920/7472158115440181920.vrm",
+ "vroid/0/7480986148278319590/7480986148278319590.vrm",
+ "vroid/0/7483180197742723680/7483180197742723680.vrm",
+ "vroid/0/7496820036356810100/7496820036356810100.vrm",
+ "vroid/0/7496900540385186910/7496900540385186910.vrm",
+ "vroid/0/7499482555770800250/7499482555770800250.vrm",
+ "vroid/0/7511276852238643170/7511276852238643170.vrm",
+ "vroid/0/7542297799535447520/7542297799535447520.vrm",
+ "vroid/0/7556769740489959430/7556769740489959430.vrm",
+ "vroid/0/7562487208440209260/7562487208440209260.vrm",
+ "vroid/0/7568351018788172520/7568351018788172520.vrm",
+ "vroid/0/7569896055100859620/7569896055100859620.vrm",
+ "vroid/0/7573206486630856790/7573206486630856790.vrm",
+ "vroid/0/7576885519182017190/7576885519182017190.vrm",
+ "vroid/0/7580529979354111650/7580529979354111650.vrm",
+ "vroid/0/7591624999403875810/7591624999403875810.vrm",
+ "vroid/0/7593464013742752040/7593464013742752040.vrm",
+ "vroid/0/7604682266301790990/7604682266301790990.vrm",
+ "vroid/0/7605981428195413160/7605981428195413160.vrm",
+ "vroid/0/7606804739301243480/7606804739301243480.vrm",
+ "vroid/0/7611927743894235780/7611927743894235780.vrm",
+ "vroid/0/7620594897549553970/7620594897549553970.vrm",
+ "vroid/0/7632387832653148790/7632387832653148790.vrm",
+ "vroid/0/7635031413657095510/7635031413657095510.vrm",
+ "vroid/0/7640996416344278520/7640996416344278520.vrm",
+ "vroid/0/7646624940245948350/7646624940245948350.vrm",
+ "vroid/0/7647442117269349850/7647442117269349850.vrm",
+ "vroid/0/7649044289384916780/7649044289384916780.vrm",
+ "vroid/0/766605670324597720/766605670324597720.vrm",
+ "vroid/0/7667070359968417650/7667070359968417650.vrm",
+ "vroid/0/7676850743956999790/7676850743956999790.vrm",
+ "vroid/0/7678001411529189570/7678001411529189570.vrm",
+ "vroid/0/7682018328841877110/7682018328841877110.vrm",
+ "vroid/0/7690561115915745220/7690561115915745220.vrm",
+ "vroid/0/7695929267562496220/7695929267562496220.vrm",
+ "vroid/0/7701542287009585640/7701542287009585640.vrm",
+ "vroid/0/7716196316752923290/7716196316752923290.vrm",
+ "vroid/0/7719647660845477840/7719647660845477840.vrm",
+ "vroid/0/7731364021589025750/7731364021589025750.vrm",
+ "vroid/0/7736005844567421570/7736005844567421570.vrm",
+ "vroid/0/7741650732767885480/7741650732767885480.vrm",
+ "vroid/0/7742531345113563550/7742531345113563550.vrm",
+ "vroid/0/7747613270697214540/7747613270697214540.vrm",
+ "vroid/0/7751056344643635500/7751056344643635500.vrm",
+ "vroid/0/77516888041695240/77516888041695240.vrm",
+ "vroid/0/7758856112031886350/7758856112031886350.vrm",
+ "vroid/0/7760484713936417890/7760484713936417890.vrm",
+ "vroid/0/7761370645462552990/7761370645462552990.vrm",
+ "vroid/0/7766370075146139410/7766370075146139410.vrm",
+ "vroid/0/777112453947608090/777112453947608090.vrm",
+ "vroid/0/7775487922942112530/7775487922942112530.vrm",
+ "vroid/0/7776804889307629800/7776804889307629800.vrm",
+ "vroid/0/7782234173617220650/7782234173617220650.vrm",
+ "vroid/0/7786129994382148270/7786129994382148270.vrm",
+ "vroid/0/7788283479966602650/7788283479966602650.vrm",
+ "vroid/0/7789520090253306900/7789520090253306900.vrm",
+ "vroid/0/7792382672409042710/7792382672409042710.vrm",
+ "vroid/0/77926825851157580/77926825851157580.vrm",
+ "vroid/0/7798447377942690/7798447377942690.vrm",
+ "vroid/0/7800352878988086650/7800352878988086650.vrm",
+ "vroid/0/7822765333440968930/7822765333440968930.vrm",
+ "vroid/0/7830516776888334630/7830516776888334630.vrm",
+ "vroid/0/7834382985940473150/7834382985940473150.vrm",
+ "vroid/0/7841446632361984540/7841446632361984540.vrm",
+ "vroid/0/7842905252392321740/7842905252392321740.vrm",
+ "vroid/0/7844856194846375700/7844856194846375700.vrm",
+ "vroid/0/784907483270134600/784907483270134600.vrm",
+ "vroid/0/7861433323248610410/7861433323248610410.vrm",
+ "vroid/0/7867645707095002640/7867645707095002640.vrm",
+ "vroid/0/7871698253949787750/7871698253949787750.vrm",
+ "vroid/0/7873097826542233890/7873097826542233890.vrm",
+ "vroid/0/7879974450168252070/7879974450168252070.vrm",
+ "vroid/0/7881531798894924410/7881531798894924410.vrm",
+ "vroid/0/7883639234543643980/7883639234543643980.vrm",
+ "vroid/0/7885756527108488350/7885756527108488350.vrm",
+ "vroid/0/7904610316889843040/7904610316889843040.vrm",
+ "vroid/0/7907815414169406550/7907815414169406550.vrm",
+ "vroid/0/7924901151459468280/7924901151459468280.vrm",
+ "vroid/0/7938976500746859490/7938976500746859490.vrm",
+ "vroid/0/7939209027710417260/7939209027710417260.vrm",
+ "vroid/0/7945236497123320080/7945236497123320080.vrm",
+ "vroid/0/7964537240511049200/7964537240511049200.vrm",
+ "vroid/0/7969627139005612860/7969627139005612860.vrm",
+ "vroid/0/7975494945379314130/7975494945379314130.vrm",
+ "vroid/0/7988769748039650910/7988769748039650910.vrm",
+ "vroid/0/7995006982890795160/7995006982890795160.vrm",
+ "vroid/0/8000799183243168710/8000799183243168710.vrm",
+ "vroid/0/8004398022173461900/8004398022173461900.vrm",
+ "vroid/0/8008170419771024060/8008170419771024060.vrm",
+ "vroid/0/8016434577036777700/8016434577036777700.vrm",
+ "vroid/0/802065481456126070/802065481456126070.vrm",
+ "vroid/0/8022225244856447090/8022225244856447090.vrm",
+ "vroid/0/8027831038494999240/8027831038494999240.vrm",
+ "vroid/0/8046652229808283390/8046652229808283390.vrm",
+ "vroid/0/8053632341645354910/8053632341645354910.vrm",
+ "vroid/0/8054700857409232470/8054700857409232470.vrm",
+ "vroid/0/8063003960542121020/8063003960542121020.vrm",
+ "vroid/0/8067542465111648760/8067542465111648760.vrm",
+ "vroid/0/807178892880572720/807178892880572720.vrm",
+ "vroid/0/8074754476218727900/8074754476218727900.vrm",
+ "vroid/0/8074856770639515020/8074856770639515020.vrm",
+ "vroid/0/8084875826136800310/8084875826136800310.vrm",
+ "vroid/0/8088887648778491910/8088887648778491910.vrm",
+ "vroid/0/8092906610655828850/8092906610655828850.vrm",
+ "vroid/0/8097056750985053470/8097056750985053470.vrm",
+ "vroid/0/8106655378383995480/8106655378383995480.vrm",
+ "vroid/0/8123663997528475060/8123663997528475060.vrm",
+ "vroid/0/8125541455348828260/8125541455348828260.vrm",
+ "vroid/0/8131136156270507610/8131136156270507610.vrm",
+ "vroid/0/8133444661234276610/8133444661234276610.vrm",
+ "vroid/0/8145239982446012400/8145239982446012400.vrm",
+ "vroid/0/8148110889252125690/8148110889252125690.vrm",
+ "vroid/0/815760880245243370/815760880245243370.vrm",
+ "vroid/0/8164433132905421740/8164433132905421740.vrm",
+ "vroid/0/8169363132395977300/8169363132395977300.vrm",
+ "vroid/0/8169546554462796720/8169546554462796720.vrm",
+ "vroid/0/8174355422039456710/8174355422039456710.vrm",
+ "vroid/0/8174510361203308830/8174510361203308830.vrm",
+ "vroid/0/8175675269941634940/8175675269941634940.vrm",
+ "vroid/0/8193575185094981210/8193575185094981210.vrm",
+ "vroid/0/8209741654252285820/8209741654252285820.vrm",
+ "vroid/0/8211223810014835110/8211223810014835110.vrm",
+ "vroid/0/8221040570619468360/8221040570619468360.vrm",
+ "vroid/0/8226126023235009480/8226126023235009480.vrm",
+ "vroid/0/8234579611156046940/8234579611156046940.vrm",
+ "vroid/0/8247661979959778750/8247661979959778750.vrm",
+ "vroid/0/8248807204760783970/8248807204760783970.vrm",
+ "vroid/0/8250338356503991710/8250338356503991710.vrm",
+ "vroid/0/8253401080169821670/8253401080169821670.vrm",
+ "vroid/0/8255814573216457080/8255814573216457080.vrm",
+ "vroid/0/8262409658999138080/8262409658999138080.vrm",
+ "vroid/0/826998295862811400/826998295862811400.vrm",
+ "vroid/0/8270898449576126860/8270898449576126860.vrm",
+ "vroid/0/827637235619696700/827637235619696700.vrm",
+ "vroid/0/829555908025775110/829555908025775110.vrm",
+ "vroid/0/8308625668225932190/8308625668225932190.vrm",
+ "vroid/0/8312114910777916290/8312114910777916290.vrm",
+ "vroid/0/8317206228696999570/8317206228696999570.vrm",
+ "vroid/0/8322355542207328910/8322355542207328910.vrm",
+ "vroid/0/8324855682355746930/8324855682355746930.vrm",
+ "vroid/0/832552074307715200/832552074307715200.vrm",
+ "vroid/0/8327971414599492970/8327971414599492970.vrm",
+ "vroid/0/832910598912862560/832910598912862560.vrm",
+ "vroid/0/8333490395036169270/8333490395036169270.vrm",
+ "vroid/0/8337261575460534540/8337261575460534540.vrm",
+ "vroid/0/8338708859949158660/8338708859949158660.vrm",
+ "vroid/0/834405263842379530/834405263842379530.vrm",
+ "vroid/0/8348864845156039080/8348864845156039080.vrm",
+ "vroid/0/8358238598611113300/8358238598611113300.vrm",
+ "vroid/0/8359515295614847330/8359515295614847330.vrm",
+ "vroid/0/8362946598482035900/8362946598482035900.vrm",
+ "vroid/0/8367847544880899280/8367847544880899280.vrm",
+ "vroid/0/8368531017655780200/8368531017655780200.vrm",
+ "vroid/0/8369647047646148080/8369647047646148080.vrm",
+ "vroid/0/8373028569797048100/8373028569797048100.vrm",
+ "vroid/0/8374437323460341190/8374437323460341190.vrm",
+ "vroid/0/8383885846813725960/8383885846813725960.vrm",
+ "vroid/0/8385165903303542950/8385165903303542950.vrm",
+ "vroid/0/8387386634295540330/8387386634295540330.vrm",
+ "vroid/0/8389224356776822560/8389224356776822560.vrm",
+ "vroid/0/8393531459986951060/8393531459986951060.vrm",
+ "vroid/0/8399935635225963700/8399935635225963700.vrm",
+ "vroid/0/8402085213686651480/8402085213686651480.vrm",
+ "vroid/0/841294608995543290/841294608995543290.vrm",
+ "vroid/0/8420197695032137410/8420197695032137410.vrm",
+ "vroid/0/8420882445470266330/8420882445470266330.vrm",
+ "vroid/0/8433370769545711120/8433370769545711120.vrm",
+ "vroid/0/8437028400148429690/8437028400148429690.vrm",
+ "vroid/0/8439684538378427820/8439684538378427820.vrm",
+ "vroid/0/8450749031879929410/8450749031879929410.vrm",
+ "vroid/0/8463337257994434480/8463337257994434480.vrm",
+ "vroid/0/8472884992962671160/8472884992962671160.vrm",
+ "vroid/0/8473591188914141490/8473591188914141490.vrm",
+ "vroid/0/8502989928772050470/8502989928772050470.vrm",
+ "vroid/0/8503184837441320660/8503184837441320660.vrm",
+ "vroid/0/8507605388537280210/8507605388537280210.vrm",
+ "vroid/0/8509990442839177560/8509990442839177560.vrm",
+ "vroid/0/8516068067739013480/8516068067739013480.vrm",
+ "vroid/0/8524266909660390490/8524266909660390490.vrm",
+ "vroid/0/8525852089524367540/8525852089524367540.vrm",
+ "vroid/0/8555923729036965020/8555923729036965020.vrm",
+ "vroid/0/8559449156931166340/8559449156931166340.vrm",
+ "vroid/0/8559962400526410910/8559962400526410910.vrm",
+ "vroid/0/8576671924329788810/8576671924329788810.vrm",
+ "vroid/0/8579990441125748430/8579990441125748430.vrm",
+ "vroid/0/8584665334663904430/8584665334663904430.vrm",
+ "vroid/0/8600058867918628820/8600058867918628820.vrm",
+ "vroid/0/8600410671764447720/8600410671764447720.vrm",
+ "vroid/0/8609418469005662480/8609418469005662480.vrm",
+ "vroid/0/8610424099498177230/8610424099498177230.vrm",
+ "vroid/0/8626095268350027320/8626095268350027320.vrm",
+ "vroid/0/8634619520603812890/8634619520603812890.vrm",
+ "vroid/0/8635482204343521060/8635482204343521060.vrm",
+ "vroid/0/8636336199608159880/8636336199608159880.vrm",
+ "vroid/0/8641370956999677800/8641370956999677800.vrm",
+ "vroid/0/8644462100974342710/8644462100974342710.vrm",
+ "vroid/0/8646291641404615410/8646291641404615410.vrm",
+ "vroid/0/8655124843476003860/8655124843476003860.vrm",
+ "vroid/0/8657489412078789060/8657489412078789060.vrm",
+ "vroid/0/8662334761132098050/8662334761132098050.vrm",
+ "vroid/0/8669194254110856830/8669194254110856830.vrm",
+ "vroid/0/8670411436802594950/8670411436802594950.vrm",
+ "vroid/0/8676391309747754780/8676391309747754780.vrm",
+ "vroid/0/8680200687059971760/8680200687059971760.vrm",
+ "vroid/0/8703001686662631920/8703001686662631920.vrm",
+ "vroid/0/8703316823295014690/8703316823295014690.vrm",
+ "vroid/0/8704380013906593380/8704380013906593380.vrm",
+ "vroid/0/8710151161472384840/8710151161472384840.vrm",
+ "vroid/0/8712287634885785010/8712287634885785010.vrm",
+ "vroid/0/8715248657359309670/8715248657359309670.vrm",
+ "vroid/0/8724072263551886190/8724072263551886190.vrm",
+ "vroid/0/8726821150860780470/8726821150860780470.vrm",
+ "vroid/0/872810318700275800/872810318700275800.vrm",
+ "vroid/0/8728751140800533640/8728751140800533640.vrm",
+ "vroid/0/8732392610956747100/8732392610956747100.vrm",
+ "vroid/0/8735417448316250000/8735417448316250000.vrm",
+ "vroid/0/8736918077908108260/8736918077908108260.vrm",
+ "vroid/0/8744275514108622980/8744275514108622980.vrm",
+ "vroid/0/8761204452479506940/8761204452479506940.vrm",
+ "vroid/0/8770144268432617590/8770144268432617590.vrm",
+ "vroid/0/8777223344947987690/8777223344947987690.vrm",
+ "vroid/0/8780943346787222420/8780943346787222420.vrm",
+ "vroid/0/8797438423630194900/8797438423630194900.vrm",
+ "vroid/0/8800589386308311610/8800589386308311610.vrm",
+ "vroid/0/8800669539620296450/8800669539620296450.vrm",
+ "vroid/0/8802163189837214020/8802163189837214020.vrm",
+ "vroid/0/8802858686588882780/8802858686588882780.vrm",
+ "vroid/0/8804266326029196050/8804266326029196050.vrm",
+ "vroid/0/8805113680882661910/8805113680882661910.vrm",
+ "vroid/0/8822344319338528290/8822344319338528290.vrm",
+ "vroid/0/8828360143744956610/8828360143744956610.vrm",
+ "vroid/0/8847402926435158450/8847402926435158450.vrm",
+ "vroid/0/8852604092238021580/8852604092238021580.vrm",
+ "vroid/0/8857664845776689800/8857664845776689800.vrm",
+ "vroid/0/8869205701844681650/8869205701844681650.vrm",
+ "vroid/0/8872106111136623110/8872106111136623110.vrm",
+ "vroid/0/8892256834371837940/8892256834371837940.vrm",
+ "vroid/0/8901552259870781310/8901552259870781310.vrm",
+ "vroid/0/8912744656063950900/8912744656063950900.vrm",
+ "vroid/0/8912770287944959640/8912770287944959640.vrm",
+ "vroid/0/8914373840576530460/8914373840576530460.vrm",
+ "vroid/0/8919846134426001840/8919846134426001840.vrm",
+ "vroid/0/8927342583570168680/8927342583570168680.vrm",
+ "vroid/0/8928535482587791670/8928535482587791670.vrm",
+ "vroid/0/8935394681273503420/8935394681273503420.vrm",
+ "vroid/0/8938511937069759400/8938511937069759400.vrm",
+ "vroid/0/8943996519025208160/8943996519025208160.vrm",
+ "vroid/0/8955652603147556690/8955652603147556690.vrm",
+ "vroid/0/8980955969341634350/8980955969341634350.vrm",
+ "vroid/0/8987093455296006360/8987093455296006360.vrm",
+ "vroid/0/899175114290277630/899175114290277630.vrm",
+ "vroid/0/8992802201046752000/8992802201046752000.vrm",
+ "vroid/0/8996604867263790800/8996604867263790800.vrm",
+ "vroid/0/9002320344716770240/9002320344716770240.vrm",
+ "vroid/0/9006894439960920530/9006894439960920530.vrm",
+ "vroid/0/901383869173127160/901383869173127160.vrm",
+ "vroid/0/9013872449060451940/9013872449060451940.vrm",
+ "vroid/0/9020974662553621940/9020974662553621940.vrm",
+ "vroid/0/9050817711818058770/9050817711818058770.vrm",
+ "vroid/0/9052546920784039950/9052546920784039950.vrm",
+ "vroid/0/9053862980717579070/9053862980717579070.vrm",
+ "vroid/0/9061100355349487940/9061100355349487940.vrm",
+ "vroid/0/9065989522856684860/9065989522856684860.vrm",
+ "vroid/0/9083336656975073230/9083336656975073230.vrm",
+ "vroid/0/9106332051542829310/9106332051542829310.vrm",
+ "vroid/0/9114810641719717370/9114810641719717370.vrm",
+ "vroid/0/9116221112082313570/9116221112082313570.vrm",
+ "vroid/0/9126525980688830890/9126525980688830890.vrm",
+ "vroid/0/9143407152180245470/9143407152180245470.vrm",
+ "vroid/0/9150135379046439420/9150135379046439420.vrm",
+ "vroid/0/9150247512985484710/9150247512985484710.vrm",
+ "vroid/0/9154995939919586240/9154995939919586240.vrm",
+ "vroid/0/9162736259239450750/9162736259239450750.vrm",
+ "vroid/0/9166814195533406740/9166814195533406740.vrm",
+ "vroid/0/9172562088318328350/9172562088318328350.vrm",
+ "vroid/0/9191712985003292040/9191712985003292040.vrm",
+ "vroid/0/9191797850533814010/9191797850533814010.vrm",
+ "vroid/0/9195953207926911830/9195953207926911830.vrm",
+ "vroid/0/9197994185070075770/9197994185070075770.vrm",
+ "vroid/0/9200623882536262490/9200623882536262490.vrm",
+ "vroid/0/9206822890797766450/9206822890797766450.vrm",
+ "vroid/0/928566077423564870/928566077423564870.vrm",
+ "vroid/0/932736021432439820/932736021432439820.vrm",
+ "vroid/0/93344917579228140/93344917579228140.vrm",
+ "vroid/0/947438913772985300/947438913772985300.vrm",
+ "vroid/0/951522184347004450/951522184347004450.vrm",
+ "vroid/0/963243145032318050/963243145032318050.vrm",
+ "vroid/0/965956219368207610/965956219368207610.vrm",
+ "vroid/0/969787756681493770/969787756681493770.vrm",
+ "vroid/0/976329964746524550/976329964746524550.vrm",
+ "vroid/0/983117002616789580/983117002616789580.vrm",
+ "vroid/0/983740415920655850/983740415920655850.vrm",
+ "vroid/0/990769530404275120/990769530404275120.vrm",
+ "vroid/0/992913988693851480/992913988693851480.vrm",
+ "vroid/1/1004923204540354271/1004923204540354271.vrm",
+ "vroid/1/1016079725076527481/1016079725076527481.vrm",
+ "vroid/1/1024091685743800491/1024091685743800491.vrm",
+ "vroid/1/1041853674271011141/1041853674271011141.vrm",
+ "vroid/1/1049344033829733311/1049344033829733311.vrm",
+ "vroid/1/1053718519037955931/1053718519037955931.vrm",
+ "vroid/1/1058315739824695591/1058315739824695591.vrm",
+ "vroid/1/1073382029573933591/1073382029573933591.vrm",
+ "vroid/1/1075842623888539261/1075842623888539261.vrm",
+ "vroid/1/1084485091609565291/1084485091609565291.vrm",
+ "vroid/1/1087029488860255151/1087029488860255151.vrm",
+ "vroid/1/1091836380449953251/1091836380449953251.vrm",
+ "vroid/1/1095264798929760841/1095264798929760841.vrm",
+ "vroid/1/10984283605502311/10984283605502311.vrm",
+ "vroid/1/1105560647981495951/1105560647981495951.vrm",
+ "vroid/1/1109132397976870611/1109132397976870611.vrm",
+ "vroid/1/1110858683856145991/1110858683856145991.vrm",
+ "vroid/1/111256495922937941/111256495922937941.vrm",
+ "vroid/1/111400007359129091/111400007359129091.vrm",
+ "vroid/1/1115769747621879241/1115769747621879241.vrm",
+ "vroid/1/1115979378793808761/1115979378793808761.vrm",
+ "vroid/1/1117798752579688721/1117798752579688721.vrm",
+ "vroid/1/1123781990293086531/1123781990293086531.vrm",
+ "vroid/1/1131769260549437951/1131769260549437951.vrm",
+ "vroid/1/1138706896168470911/1138706896168470911.vrm",
+ "vroid/1/1148793480597679961/1148793480597679961.vrm",
+ "vroid/1/1154033776495559511/1154033776495559511.vrm",
+ "vroid/1/1156902119252125111/1156902119252125111.vrm",
+ "vroid/1/1157583385919161721/1157583385919161721.vrm",
+ "vroid/1/1158926960827141201/1158926960827141201.vrm",
+ "vroid/1/1162366384996818111/1162366384996818111.vrm",
+ "vroid/1/1162514895409064531/1162514895409064531.vrm",
+ "vroid/1/1162567486754192651/1162567486754192651.vrm",
+ "vroid/1/1163308752979495031/1163308752979495031.vrm",
+ "vroid/1/1165399028227540921/1165399028227540921.vrm",
+ "vroid/1/1167488175366488991/1167488175366488991.vrm",
+ "vroid/1/1173929873356452461/1173929873356452461.vrm",
+ "vroid/1/1174948808141461131/1174948808141461131.vrm",
+ "vroid/1/1176527751832228681/1176527751832228681.vrm",
+ "vroid/1/1195561468208589301/1195561468208589301.vrm",
+ "vroid/1/1222092808882420031/1222092808882420031.vrm",
+ "vroid/1/1229759664494945981/1229759664494945981.vrm",
+ "vroid/1/1230351264304094151/1230351264304094151.vrm",
+ "vroid/1/123079904757791821/123079904757791821.vrm",
+ "vroid/1/1230800336477898341/1230800336477898341.vrm",
+ "vroid/1/1230992333702640241/1230992333702640241.vrm",
+ "vroid/1/1269522819588644851/1269522819588644851.vrm",
+ "vroid/1/1274139634006670401/1274139634006670401.vrm",
+ "vroid/1/1281308079819962931/1281308079819962931.vrm",
+ "vroid/1/1291171676559447161/1291171676559447161.vrm",
+ "vroid/1/1304778997727595071/1304778997727595071.vrm",
+ "vroid/1/130496408418468961/130496408418468961.vrm",
+ "vroid/1/1306414790136876321/1306414790136876321.vrm",
+ "vroid/1/1310311954392976461/1310311954392976461.vrm",
+ "vroid/1/1316856962769065381/1316856962769065381.vrm",
+ "vroid/1/1317327301510216991/1317327301510216991.vrm",
+ "vroid/1/13220713505035211/13220713505035211.vrm",
+ "vroid/1/1324200822593727591/1324200822593727591.vrm",
+ "vroid/1/1334415744942041991/1334415744942041991.vrm",
+ "vroid/1/1345723906856866801/1345723906856866801.vrm",
+ "vroid/1/1348887577373130611/1348887577373130611.vrm",
+ "vroid/1/1357558172976932331/1357558172976932331.vrm",
+ "vroid/1/1363009620897505331/1363009620897505331.vrm",
+ "vroid/1/1369482837633169021/1369482837633169021.vrm",
+ "vroid/1/1370764694249308691/1370764694249308691.vrm",
+ "vroid/1/1374644757487551351/1374644757487551351.vrm",
+ "vroid/1/1382855036414655511/1382855036414655511.vrm",
+ "vroid/1/1386219654436732991/1386219654436732991.vrm",
+ "vroid/1/1391290508199654631/1391290508199654631.vrm",
+ "vroid/1/1392071743822559311/1392071743822559311.vrm",
+ "vroid/1/1393721129586540151/1393721129586540151.vrm",
+ "vroid/1/1394877893753545581/1394877893753545581.vrm",
+ "vroid/1/1401369168532460571/1401369168532460571.vrm",
+ "vroid/1/14075469470787881/14075469470787881.vrm",
+ "vroid/1/1409958574012593071/1409958574012593071.vrm",
+ "vroid/1/1417210787874182931/1417210787874182931.vrm",
+ "vroid/1/1417312596849664151/1417312596849664151.vrm",
+ "vroid/1/1417689473433242451/1417689473433242451.vrm",
+ "vroid/1/1418614914743820331/1418614914743820331.vrm",
+ "vroid/1/1428458239061290271/1428458239061290271.vrm",
+ "vroid/1/1441327835679074271/1441327835679074271.vrm",
+ "vroid/1/1447560231688688431/1447560231688688431.vrm",
+ "vroid/1/145488741750073301/145488741750073301.vrm",
+ "vroid/1/1454958172933892401/1454958172933892401.vrm",
+ "vroid/1/145725659114903621/145725659114903621.vrm",
+ "vroid/1/1459718474511782691/1459718474511782691.vrm",
+ "vroid/1/1466421332583445741/1466421332583445741.vrm",
+ "vroid/1/1467718191285838301/1467718191285838301.vrm",
+ "vroid/1/1468244114898007481/1468244114898007481.vrm",
+ "vroid/1/1469797162338836001/1469797162338836001.vrm",
+ "vroid/1/1470645320634805751/1470645320634805751.vrm",
+ "vroid/1/1482720389714333081/1482720389714333081.vrm",
+ "vroid/1/1486335323732609891/1486335323732609891.vrm",
+ "vroid/1/1486611161065919011/1486611161065919011.vrm",
+ "vroid/1/1487609098384792571/1487609098384792571.vrm",
+ "vroid/1/1488959927267435271/1488959927267435271.vrm",
+ "vroid/1/1490600537100433711/1490600537100433711.vrm",
+ "vroid/1/1492946431751459391/1492946431751459391.vrm",
+ "vroid/1/1494754633642073491/1494754633642073491.vrm",
+ "vroid/1/1496974031523688831/1496974031523688831.vrm",
+ "vroid/1/1502013558291644441/1502013558291644441.vrm",
+ "vroid/1/1503505825666809881/1503505825666809881.vrm",
+ "vroid/1/1509027799117919611/1509027799117919611.vrm",
+ "vroid/1/1515552392393428471/1515552392393428471.vrm",
+ "vroid/1/1521525189450511911/1521525189450511911.vrm",
+ "vroid/1/1531187698004953491/1531187698004953491.vrm",
+ "vroid/1/1535970769978605021/1535970769978605021.vrm",
+ "vroid/1/1541365690629957721/1541365690629957721.vrm",
+ "vroid/1/1542224037528704351/1542224037528704351.vrm",
+ "vroid/1/1545127612410415661/1545127612410415661.vrm",
+ "vroid/1/1553435205695252201/1553435205695252201.vrm",
+ "vroid/1/1559958871180200621/1559958871180200621.vrm",
+ "vroid/1/1565718555005076891/1565718555005076891.vrm",
+ "vroid/1/1565797416394314641/1565797416394314641.vrm",
+ "vroid/1/1581629707882210201/1581629707882210201.vrm",
+ "vroid/1/1583158208355053521/1583158208355053521.vrm",
+ "vroid/1/1585940520739241581/1585940520739241581.vrm",
+ "vroid/1/1586117693898759091/1586117693898759091.vrm",
+ "vroid/1/1590785492822321371/1590785492822321371.vrm",
+ "vroid/1/1592161923048188331/1592161923048188331.vrm",
+ "vroid/1/1598642615902728091/1598642615902728091.vrm",
+ "vroid/1/1614084373638353611/1614084373638353611.vrm",
+ "vroid/1/1628501975532529831/1628501975532529831.vrm",
+ "vroid/1/1630439108780928761/1630439108780928761.vrm",
+ "vroid/1/1633099290949034671/1633099290949034671.vrm",
+ "vroid/1/1655670496411828831/1655670496411828831.vrm",
+ "vroid/1/1657123377436338671/1657123377436338671.vrm",
+ "vroid/1/1658711203714006701/1658711203714006701.vrm",
+ "vroid/1/1659655270757096981/1659655270757096981.vrm",
+ "vroid/1/1675920790798262011/1675920790798262011.vrm",
+ "vroid/1/1677109879729212491/1677109879729212491.vrm",
+ "vroid/1/1694721159670568101/1694721159670568101.vrm",
+ "vroid/1/1695521949517134741/1695521949517134741.vrm",
+ "vroid/1/1704414771543567471/1704414771543567471.vrm",
+ "vroid/1/1705510203985444301/1705510203985444301.vrm",
+ "vroid/1/170649228897287261/170649228897287261.vrm",
+ "vroid/1/1706796102516243771/1706796102516243771.vrm",
+ "vroid/1/1724668430970159481/1724668430970159481.vrm",
+ "vroid/1/1727495495037525271/1727495495037525271.vrm",
+ "vroid/1/1729823700308025311/1729823700308025311.vrm",
+ "vroid/1/1730534897091030031/1730534897091030031.vrm",
+ "vroid/1/1730707725432876021/1730707725432876021.vrm",
+ "vroid/1/1734547578277557091/1734547578277557091.vrm",
+ "vroid/1/1753811543700439061/1753811543700439061.vrm",
+ "vroid/1/176143439222681421/176143439222681421.vrm",
+ "vroid/1/1762150802117448871/1762150802117448871.vrm",
+ "vroid/1/1772642229914027881/1772642229914027881.vrm",
+ "vroid/1/1782058959245454351/1782058959245454351.vrm",
+ "vroid/1/1784439579952164251/1784439579952164251.vrm",
+ "vroid/1/1790052109088407981/1790052109088407981.vrm",
+ "vroid/1/1799345027946160731/1799345027946160731.vrm",
+ "vroid/1/1807094138183124221/1807094138183124221.vrm",
+ "vroid/1/1810958824167115191/1810958824167115191.vrm",
+ "vroid/1/1823855990108677051/1823855990108677051.vrm",
+ "vroid/1/182624410504861431/182624410504861431.vrm",
+ "vroid/1/1832114328721653061/1832114328721653061.vrm",
+ "vroid/1/1833072679688745251/1833072679688745251.vrm",
+ "vroid/1/1834816131536437651/1834816131536437651.vrm",
+ "vroid/1/1839775362948760501/1839775362948760501.vrm",
+ "vroid/1/1861092211859222111/1861092211859222111.vrm",
+ "vroid/1/1869531495279110281/1869531495279110281.vrm",
+ "vroid/1/1878061556648112061/1878061556648112061.vrm",
+ "vroid/1/1878331449195281401/1878331449195281401.vrm",
+ "vroid/1/1881144770288923041/1881144770288923041.vrm",
+ "vroid/1/1881237446247271541/1881237446247271541.vrm",
+ "vroid/1/1886494620924570961/1886494620924570961.vrm",
+ "vroid/1/1890319493389188691/1890319493389188691.vrm",
+ "vroid/1/1893231049178374301/1893231049178374301.vrm",
+ "vroid/1/1896353441202863211/1896353441202863211.vrm",
+ "vroid/1/1897370026260194541/1897370026260194541.vrm",
+ "vroid/1/1908231358271751591/1908231358271751591.vrm",
+ "vroid/1/1910258394089325361/1910258394089325361.vrm",
+ "vroid/1/1916463211330544571/1916463211330544571.vrm",
+ "vroid/1/1921717656045601721/1921717656045601721.vrm",
+ "vroid/1/1926465354138495691/1926465354138495691.vrm",
+ "vroid/1/1929107246330492451/1929107246330492451.vrm",
+ "vroid/1/1932060772942879071/1932060772942879071.vrm",
+ "vroid/1/1935072728590389891/1935072728590389891.vrm",
+ "vroid/1/1946521799433149321/1946521799433149321.vrm",
+ "vroid/1/1954466315994769661/1954466315994769661.vrm",
+ "vroid/1/1966755816354457301/1966755816354457301.vrm",
+ "vroid/1/1968822047024548701/1968822047024548701.vrm",
+ "vroid/1/1971129114931600731/1971129114931600731.vrm",
+ "vroid/1/1973442971947694311/1973442971947694311.vrm",
+ "vroid/1/1984110687261908061/1984110687261908061.vrm",
+ "vroid/1/1985970467213131781/1985970467213131781.vrm",
+ "vroid/1/1993927465066194981/1993927465066194981.vrm",
+ "vroid/1/1994438583700369751/1994438583700369751.vrm",
+ "vroid/1/1995551907338074831/1995551907338074831.vrm",
+ "vroid/1/2011227120092560021/2011227120092560021.vrm",
+ "vroid/1/2014862516968027501/2014862516968027501.vrm",
+ "vroid/1/2022267982343604441/2022267982343604441.vrm",
+ "vroid/1/2029033189825518661/2029033189825518661.vrm",
+ "vroid/1/2031960878056126731/2031960878056126731.vrm",
+ "vroid/1/2038409632741971101/2038409632741971101.vrm",
+ "vroid/1/2044031345133894281/2044031345133894281.vrm",
+ "vroid/1/2046757438416173201/2046757438416173201.vrm",
+ "vroid/1/2046934564453848521/2046934564453848521.vrm",
+ "vroid/1/2048027494491891391/2048027494491891391.vrm",
+ "vroid/1/2054402953254552941/2054402953254552941.vrm",
+ "vroid/1/2062841145400257741/2062841145400257741.vrm",
+ "vroid/1/2065715005926564161/2065715005926564161.vrm",
+ "vroid/1/2070662986456721381/2070662986456721381.vrm",
+ "vroid/1/2074787734464940261/2074787734464940261.vrm",
+ "vroid/1/2075214691411526221/2075214691411526221.vrm",
+ "vroid/1/2075581780753499891/2075581780753499891.vrm",
+ "vroid/1/2081763687953869531/2081763687953869531.vrm",
+ "vroid/1/2081883513310721431/2081883513310721431.vrm",
+ "vroid/1/20822327561190851/20822327561190851.vrm",
+ "vroid/1/2087440254714092781/2087440254714092781.vrm",
+ "vroid/1/20984558296654921/20984558296654921.vrm",
+ "vroid/1/2105078234238458121/2105078234238458121.vrm",
+ "vroid/1/2118624526373583451/2118624526373583451.vrm",
+ "vroid/1/2126161250070284911/2126161250070284911.vrm",
+ "vroid/1/2127549029109151671/2127549029109151671.vrm",
+ "vroid/1/2129677048178831621/2129677048178831621.vrm",
+ "vroid/1/2135390553567527841/2135390553567527841.vrm",
+ "vroid/1/2136800623119878871/2136800623119878871.vrm",
+ "vroid/1/2140834189525565891/2140834189525565891.vrm",
+ "vroid/1/2142392856728163321/2142392856728163321.vrm",
+ "vroid/1/2143226385961211671/2143226385961211671.vrm",
+ "vroid/1/2162025625805165901/2162025625805165901.vrm",
+ "vroid/1/2174456000063381611/2174456000063381611.vrm",
+ "vroid/1/2176672401683248891/2176672401683248891.vrm",
+ "vroid/1/2180528853131231531/2180528853131231531.vrm",
+ "vroid/1/2184646705646242691/2184646705646242691.vrm",
+ "vroid/1/2187566785571787971/2187566785571787971.vrm",
+ "vroid/1/2197934626166237261/2197934626166237261.vrm",
+ "vroid/1/2204149645140259881/2204149645140259881.vrm",
+ "vroid/1/2212314670949046311/2212314670949046311.vrm",
+ "vroid/1/2222184718401668421/2222184718401668421.vrm",
+ "vroid/1/222234957343670891/222234957343670891.vrm",
+ "vroid/1/2230583144806488771/2230583144806488771.vrm",
+ "vroid/1/2237352552856169001/2237352552856169001.vrm",
+ "vroid/1/2238856788173553201/2238856788173553201.vrm",
+ "vroid/1/2242823717338452831/2242823717338452831.vrm",
+ "vroid/1/2257951961505802551/2257951961505802551.vrm",
+ "vroid/1/2259603033209151421/2259603033209151421.vrm",
+ "vroid/1/2260824863069322721/2260824863069322721.vrm",
+ "vroid/1/2261229952532596291/2261229952532596291.vrm",
+ "vroid/1/2261418168360521051/2261418168360521051.vrm",
+ "vroid/1/2262201684264747971/2262201684264747971.vrm",
+ "vroid/1/2265855161266097681/2265855161266097681.vrm",
+ "vroid/1/2269224592520751771/2269224592520751771.vrm",
+ "vroid/1/2275316786938917741/2275316786938917741.vrm",
+ "vroid/1/2278694938070140491/2278694938070140491.vrm",
+ "vroid/1/2285085036502704561/2285085036502704561.vrm",
+ "vroid/1/2289026728592985181/2289026728592985181.vrm",
+ "vroid/1/2290048307533210901/2290048307533210901.vrm",
+ "vroid/1/2290091540278737091/2290091540278737091.vrm",
+ "vroid/1/2290430044898376691/2290430044898376691.vrm",
+ "vroid/1/2296482068387247301/2296482068387247301.vrm",
+ "vroid/1/2313079725615839371/2313079725615839371.vrm",
+ "vroid/1/2321412400115669481/2321412400115669481.vrm",
+ "vroid/1/232181091833125731/232181091833125731.vrm",
+ "vroid/1/232581392800987841/232581392800987841.vrm",
+ "vroid/1/2326532951113558711/2326532951113558711.vrm",
+ "vroid/1/2329300086747337941/2329300086747337941.vrm",
+ "vroid/1/2332994901080222631/2332994901080222631.vrm",
+ "vroid/1/2333704213346265971/2333704213346265971.vrm",
+ "vroid/1/2348393436179937711/2348393436179937711.vrm",
+ "vroid/1/2349428633950856621/2349428633950856621.vrm",
+ "vroid/1/2350870325676929171/2350870325676929171.vrm",
+ "vroid/1/2353827007892119101/2353827007892119101.vrm",
+ "vroid/1/2356382610542659531/2356382610542659531.vrm",
+ "vroid/1/2356386726514772941/2356386726514772941.vrm",
+ "vroid/1/2357140593357843071/2357140593357843071.vrm",
+ "vroid/1/2358976685467926201/2358976685467926201.vrm",
+ "vroid/1/2359583848989464291/2359583848989464291.vrm",
+ "vroid/1/2360867422126063781/2360867422126063781.vrm",
+ "vroid/1/2367364438333973441/2367364438333973441.vrm",
+ "vroid/1/2401194732144592181/2401194732144592181.vrm",
+ "vroid/1/2405596258387198341/2405596258387198341.vrm",
+ "vroid/1/2406282037631274831/2406282037631274831.vrm",
+ "vroid/1/2412000209721734941/2412000209721734941.vrm",
+ "vroid/1/2425779803207752301/2425779803207752301.vrm",
+ "vroid/1/243470594541917381/243470594541917381.vrm",
+ "vroid/1/2443776099826430901/2443776099826430901.vrm",
+ "vroid/1/244484176355299761/244484176355299761.vrm",
+ "vroid/1/2450699869941490201/2450699869941490201.vrm",
+ "vroid/1/2453257353128835831/2453257353128835831.vrm",
+ "vroid/1/2454551453314083181/2454551453314083181.vrm",
+ "vroid/1/2455173111990510331/2455173111990510331.vrm",
+ "vroid/1/2466832013530520951/2466832013530520951.vrm",
+ "vroid/1/2468381735455356721/2468381735455356721.vrm",
+ "vroid/1/2469389763710324431/2469389763710324431.vrm",
+ "vroid/1/2478962676924250371/2478962676924250371.vrm",
+ "vroid/1/2482201632656170801/2482201632656170801.vrm",
+ "vroid/1/2483992054347285101/2483992054347285101.vrm",
+ "vroid/1/2487879609577096601/2487879609577096601.vrm",
+ "vroid/1/2492044781315407641/2492044781315407641.vrm",
+ "vroid/1/2497601091155757211/2497601091155757211.vrm",
+ "vroid/1/2498635551624382721/2498635551624382721.vrm",
+ "vroid/1/2504214647955224731/2504214647955224731.vrm",
+ "vroid/1/2506738040855989611/2506738040855989611.vrm",
+ "vroid/1/2510518267862819311/2510518267862819311.vrm",
+ "vroid/1/2524439817046651171/2524439817046651171.vrm",
+ "vroid/1/253062610203856571/253062610203856571.vrm",
+ "vroid/1/253901345176349131/253901345176349131.vrm",
+ "vroid/1/2540058971382283851/2540058971382283851.vrm",
+ "vroid/1/2551712776723735291/2551712776723735291.vrm",
+ "vroid/1/2555443093025822871/2555443093025822871.vrm",
+ "vroid/1/2561005392093649431/2561005392093649431.vrm",
+ "vroid/1/2561401897376971281/2561401897376971281.vrm",
+ "vroid/1/2564667852517275381/2564667852517275381.vrm",
+ "vroid/1/2576775563010082381/2576775563010082381.vrm",
+ "vroid/1/2580957166678351301/2580957166678351301.vrm",
+ "vroid/1/2603641508996140331/2603641508996140331.vrm",
+ "vroid/1/2604085279792578101/2604085279792578101.vrm",
+ "vroid/1/2606023011882248101/2606023011882248101.vrm",
+ "vroid/1/261920665564106181/261920665564106181.vrm",
+ "vroid/1/2624012740072833041/2624012740072833041.vrm",
+ "vroid/1/2624607373990005371/2624607373990005371.vrm",
+ "vroid/1/263286407352862621/263286407352862621.vrm",
+ "vroid/1/2640643288392457331/2640643288392457331.vrm",
+ "vroid/1/2649631954845855661/2649631954845855661.vrm",
+ "vroid/1/2658496460439839761/2658496460439839761.vrm",
+ "vroid/1/2660545661567939761/2660545661567939761.vrm",
+ "vroid/1/2669884680190212321/2669884680190212321.vrm",
+ "vroid/1/2674591775345392651/2674591775345392651.vrm",
+ "vroid/1/267976352872208091/267976352872208091.vrm",
+ "vroid/1/2688949398072248391/2688949398072248391.vrm",
+ "vroid/1/2695443626360045161/2695443626360045161.vrm",
+ "vroid/1/2696752206612441081/2696752206612441081.vrm",
+ "vroid/1/2698399947757247001/2698399947757247001.vrm",
+ "vroid/1/2701143881512740471/2701143881512740471.vrm",
+ "vroid/1/2711692272732822171/2711692272732822171.vrm",
+ "vroid/1/2718411461016088291/2718411461016088291.vrm",
+ "vroid/1/2719243977589910101/2719243977589910101.vrm",
+ "vroid/1/2724436324832285031/2724436324832285031.vrm",
+ "vroid/1/2724568998387593391/2724568998387593391.vrm",
+ "vroid/1/2729494919026563201/2729494919026563201.vrm",
+ "vroid/1/2730950937981517641/2730950937981517641.vrm",
+ "vroid/1/2731259848949386721/2731259848949386721.vrm",
+ "vroid/1/2732453869327955061/2732453869327955061.vrm",
+ "vroid/1/2740154613326384651/2740154613326384651.vrm",
+ "vroid/1/2743140748471131991/2743140748471131991.vrm",
+ "vroid/1/2755255047439220171/2755255047439220171.vrm",
+ "vroid/1/2756563624528705681/2756563624528705681.vrm",
+ "vroid/1/2760281303137876541/2760281303137876541.vrm",
+ "vroid/1/2762701837133721311/2762701837133721311.vrm",
+ "vroid/1/2765312621524325171/2765312621524325171.vrm",
+ "vroid/1/2775573147944747521/2775573147944747521.vrm",
+ "vroid/1/2781997122517205361/2781997122517205361.vrm",
+ "vroid/1/2784030517501305691/2784030517501305691.vrm",
+ "vroid/1/2790641774747553681/2790641774747553681.vrm",
+ "vroid/1/2795238278369141561/2795238278369141561.vrm",
+ "vroid/1/2799452347753289161/2799452347753289161.vrm",
+ "vroid/1/2803961447831582951/2803961447831582951.vrm",
+ "vroid/1/2810498016475225921/2810498016475225921.vrm",
+ "vroid/1/2811929640298252191/2811929640298252191.vrm",
+ "vroid/1/282440679993594731/282440679993594731.vrm",
+ "vroid/1/2843937336606898491/2843937336606898491.vrm",
+ "vroid/1/2846384703415121821/2846384703415121821.vrm",
+ "vroid/1/2850319656257493001/2850319656257493001.vrm",
+ "vroid/1/2857146870294975601/2857146870294975601.vrm",
+ "vroid/1/2858643028373234851/2858643028373234851.vrm",
+ "vroid/1/2869384463823204011/2869384463823204011.vrm",
+ "vroid/1/2870521893641731801/2870521893641731801.vrm",
+ "vroid/1/2870565491315764191/2870565491315764191.vrm",
+ "vroid/1/2883483122183210161/2883483122183210161.vrm",
+ "vroid/1/2889915446081521221/2889915446081521221.vrm",
+ "vroid/1/2893402068216653661/2893402068216653661.vrm",
+ "vroid/1/2895054497496824431/2895054497496824431.vrm",
+ "vroid/1/2895155425520947971/2895155425520947971.vrm",
+ "vroid/1/2904470182291003871/2904470182291003871.vrm",
+ "vroid/1/290693904956088181/290693904956088181.vrm",
+ "vroid/1/2907973641592940511/2907973641592940511.vrm",
+ "vroid/1/2915715444285138961/2915715444285138961.vrm",
+ "vroid/1/2916283856073862521/2916283856073862521.vrm",
+ "vroid/1/2934280044415620621/2934280044415620621.vrm",
+ "vroid/1/2935463770938550931/2935463770938550931.vrm",
+ "vroid/1/2937535331266727931/2937535331266727931.vrm",
+ "vroid/1/2939082903727666681/2939082903727666681.vrm",
+ "vroid/1/2957148092915483501/2957148092915483501.vrm",
+ "vroid/1/2959048023990232481/2959048023990232481.vrm",
+ "vroid/1/2965163607045625291/2965163607045625291.vrm",
+ "vroid/1/2978726768080688841/2978726768080688841.vrm",
+ "vroid/1/299966347030478951/299966347030478951.vrm",
+ "vroid/1/3004438599090196761/3004438599090196761.vrm",
+ "vroid/1/3012098176244451101/3012098176244451101.vrm",
+ "vroid/1/3021120456319869041/3021120456319869041.vrm",
+ "vroid/1/3023150841834285701/3023150841834285701.vrm",
+ "vroid/1/30361990069247811/30361990069247811.vrm",
+ "vroid/1/3046778462849640741/3046778462849640741.vrm",
+ "vroid/1/3070826662851447321/3070826662851447321.vrm",
+ "vroid/1/3074604249630464751/3074604249630464751.vrm",
+ "vroid/1/3085136864384415221/3085136864384415221.vrm",
+ "vroid/1/3097556609595113271/3097556609595113271.vrm",
+ "vroid/1/3101303085507060431/3101303085507060431.vrm",
+ "vroid/1/3101303186252934231/3101303186252934231.vrm",
+ "vroid/1/3102020206516924581/3102020206516924581.vrm",
+ "vroid/1/3106374678377841101/3106374678377841101.vrm",
+ "vroid/1/3115156356047035951/3115156356047035951.vrm",
+ "vroid/1/3122953928152630221/3122953928152630221.vrm",
+ "vroid/1/312596298366943791/312596298366943791.vrm",
+ "vroid/1/3127506230758392801/3127506230758392801.vrm",
+ "vroid/1/3131328431366983771/3131328431366983771.vrm",
+ "vroid/1/3135305830421343901/3135305830421343901.vrm",
+ "vroid/1/3144563150621076701/3144563150621076701.vrm",
+ "vroid/1/3145760100637402111/3145760100637402111.vrm",
+ "vroid/1/3176464897998100131/3176464897998100131.vrm",
+ "vroid/1/3177907144939452471/3177907144939452471.vrm",
+ "vroid/1/3178631086149138381/3178631086149138381.vrm",
+ "vroid/1/3194620038194304371/3194620038194304371.vrm",
+ "vroid/1/3200208125158366011/3200208125158366011.vrm",
+ "vroid/1/3201683093072411401/3201683093072411401.vrm",
+ "vroid/1/3203472211669052061/3203472211669052061.vrm",
+ "vroid/1/3207646242877099251/3207646242877099251.vrm",
+ "vroid/1/3212098387628876311/3212098387628876311.vrm",
+ "vroid/1/3214060123361519761/3214060123361519761.vrm",
+ "vroid/1/3218395715266991341/3218395715266991341.vrm",
+ "vroid/1/322140152385422391/322140152385422391.vrm",
+ "vroid/1/3224981730814003501/3224981730814003501.vrm",
+ "vroid/1/3235958220138042671/3235958220138042671.vrm",
+ "vroid/1/3240806812376959551/3240806812376959551.vrm",
+ "vroid/1/3246774755930247691/3246774755930247691.vrm",
+ "vroid/1/325072800551330411/325072800551330411.vrm",
+ "vroid/1/3250960644595960561/3250960644595960561.vrm",
+ "vroid/1/3253597765743887151/3253597765743887151.vrm",
+ "vroid/1/3257076063288302691/3257076063288302691.vrm",
+ "vroid/1/3259480816011554331/3259480816011554331.vrm",
+ "vroid/1/3260319917403324011/3260319917403324011.vrm",
+ "vroid/1/3265476741258445561/3265476741258445561.vrm",
+ "vroid/1/3270434700520498831/3270434700520498831.vrm",
+ "vroid/1/3273339676978330351/3273339676978330351.vrm",
+ "vroid/1/3273974720890270941/3273974720890270941.vrm",
+ "vroid/1/3274104522446622711/3274104522446622711.vrm",
+ "vroid/1/3280523630200483021/3280523630200483021.vrm",
+ "vroid/1/3285000873683184071/3285000873683184071.vrm",
+ "vroid/1/3296443598628188321/3296443598628188321.vrm",
+ "vroid/1/3303161360637462461/3303161360637462461.vrm",
+ "vroid/1/330383399685245251/330383399685245251.vrm",
+ "vroid/1/3304175886794352241/3304175886794352241.vrm",
+ "vroid/1/3304595581153690651/3304595581153690651.vrm",
+ "vroid/1/3304895568503729351/3304895568503729351.vrm",
+ "vroid/1/3309644128515586661/3309644128515586661.vrm",
+ "vroid/1/3310626362346998171/3310626362346998171.vrm",
+ "vroid/1/3311292861817433001/3311292861817433001.vrm",
+ "vroid/1/3314509704403681651/3314509704403681651.vrm",
+ "vroid/1/3318802821108196631/3318802821108196631.vrm",
+ "vroid/1/3319406557507521511/3319406557507521511.vrm",
+ "vroid/1/3329176709050015631/3329176709050015631.vrm",
+ "vroid/1/3344280995586773341/3344280995586773341.vrm",
+ "vroid/1/3355770283886167111/3355770283886167111.vrm",
+ "vroid/1/3365662863861627051/3365662863861627051.vrm",
+ "vroid/1/3366896327256335261/3366896327256335261.vrm",
+ "vroid/1/3371927503292519671/3371927503292519671.vrm",
+ "vroid/1/3379232584746217331/3379232584746217331.vrm",
+ "vroid/1/3385325415286775371/3385325415286775371.vrm",
+ "vroid/1/338623800314488881/338623800314488881.vrm",
+ "vroid/1/3388793821063471031/3388793821063471031.vrm",
+ "vroid/1/3395264497803964301/3395264497803964301.vrm",
+ "vroid/1/3412750920836365461/3412750920836365461.vrm",
+ "vroid/1/3421276333085287921/3421276333085287921.vrm",
+ "vroid/1/3428569214058220471/3428569214058220471.vrm",
+ "vroid/1/3434622083141981891/3434622083141981891.vrm",
+ "vroid/1/3444209959445967531/3444209959445967531.vrm",
+ "vroid/1/3450959251492673401/3450959251492673401.vrm",
+ "vroid/1/3464814985501340101/3464814985501340101.vrm",
+ "vroid/1/3465160762687355081/3465160762687355081.vrm",
+ "vroid/1/3477883455646406011/3477883455646406011.vrm",
+ "vroid/1/3478617187121467751/3478617187121467751.vrm",
+ "vroid/1/3483101539728317681/3483101539728317681.vrm",
+ "vroid/1/3487757670592986021/3487757670592986021.vrm",
+ "vroid/1/3496068832906934211/3496068832906934211.vrm",
+ "vroid/1/3500156921242714911/3500156921242714911.vrm",
+ "vroid/1/3503434101429144961/3503434101429144961.vrm",
+ "vroid/1/3505220226135068421/3505220226135068421.vrm",
+ "vroid/1/3505528230740792351/3505528230740792351.vrm",
+ "vroid/1/3517390829765660181/3517390829765660181.vrm",
+ "vroid/1/3517654935929737331/3517654935929737331.vrm",
+ "vroid/1/3521114955404685481/3521114955404685481.vrm",
+ "vroid/1/3528812699060467731/3528812699060467731.vrm",
+ "vroid/1/3531107376985865521/3531107376985865521.vrm",
+ "vroid/1/3542915393155774771/3542915393155774771.vrm",
+ "vroid/1/355095182806208701/355095182806208701.vrm",
+ "vroid/1/3551233905788594401/3551233905788594401.vrm",
+ "vroid/1/3552505186024898361/3552505186024898361.vrm",
+ "vroid/1/3561968708320358581/3561968708320358581.vrm",
+ "vroid/1/3565240653778188161/3565240653778188161.vrm",
+ "vroid/1/3569713072475604671/3569713072475604671.vrm",
+ "vroid/1/3594539615127358401/3594539615127358401.vrm",
+ "vroid/1/3596073823653080351/3596073823653080351.vrm",
+ "vroid/1/3598479507266023511/3598479507266023511.vrm",
+ "vroid/1/3600904134636034471/3600904134636034471.vrm",
+ "vroid/1/3612663339037528851/3612663339037528851.vrm",
+ "vroid/1/3614770833222110601/3614770833222110601.vrm",
+ "vroid/1/361703629843041611/361703629843041611.vrm",
+ "vroid/1/3617118845089874551/3617118845089874551.vrm",
+ "vroid/1/3625692226730710991/3625692226730710991.vrm",
+ "vroid/1/3628219351857081811/3628219351857081811.vrm",
+ "vroid/1/3635993485851908911/3635993485851908911.vrm",
+ "vroid/1/3655803486599892611/3655803486599892611.vrm",
+ "vroid/1/3665151837915064641/3665151837915064641.vrm",
+ "vroid/1/366578311138349201/366578311138349201.vrm",
+ "vroid/1/3666246485013702201/3666246485013702201.vrm",
+ "vroid/1/3667237030693236591/3667237030693236591.vrm",
+ "vroid/1/3672973998338587381/3672973998338587381.vrm",
+ "vroid/1/3677902906760788811/3677902906760788811.vrm",
+ "vroid/1/3679865128460699451/3679865128460699451.vrm",
+ "vroid/1/3688140282628267231/3688140282628267231.vrm",
+ "vroid/1/369140217162424471/369140217162424471.vrm",
+ "vroid/1/3693296386267595481/3693296386267595481.vrm",
+ "vroid/1/3696133284886713611/3696133284886713611.vrm",
+ "vroid/1/370420358975297061/370420358975297061.vrm",
+ "vroid/1/3707768113347633771/3707768113347633771.vrm",
+ "vroid/1/3710664550194087831/3710664550194087831.vrm",
+ "vroid/1/371214617347763411/371214617347763411.vrm",
+ "vroid/1/3718030930111108761/3718030930111108761.vrm",
+ "vroid/1/372017696341005441/372017696341005441.vrm",
+ "vroid/1/37242364202981651/37242364202981651.vrm",
+ "vroid/1/3733240847440610651/3733240847440610651.vrm",
+ "vroid/1/3746293917990741901/3746293917990741901.vrm",
+ "vroid/1/3768881479776461831/3768881479776461831.vrm",
+ "vroid/1/3786267114280801711/3786267114280801711.vrm",
+ "vroid/1/3791999351619603141/3791999351619603141.vrm",
+ "vroid/1/3800907618544633671/3800907618544633671.vrm",
+ "vroid/1/3812250484630631171/3812250484630631171.vrm",
+ "vroid/1/383224893846168611/383224893846168611.vrm",
+ "vroid/1/3834500477391656661/3834500477391656661.vrm",
+ "vroid/1/3841768816536593591/3841768816536593591.vrm",
+ "vroid/1/3844742718198866321/3844742718198866321.vrm",
+ "vroid/1/384611690663081201/384611690663081201.vrm",
+ "vroid/1/3850941047512203011/3850941047512203011.vrm",
+ "vroid/1/3858665871155797181/3858665871155797181.vrm",
+ "vroid/1/387059280783045661/387059280783045661.vrm",
+ "vroid/1/3883659452344819891/3883659452344819891.vrm",
+ "vroid/1/388568139399896921/388568139399896921.vrm",
+ "vroid/1/3893978059383162031/3893978059383162031.vrm",
+ "vroid/1/3899415892347272301/3899415892347272301.vrm",
+ "vroid/1/3901474519974299221/3901474519974299221.vrm",
+ "vroid/1/3911910628295666091/3911910628295666091.vrm",
+ "vroid/1/3916583639080172001/3916583639080172001.vrm",
+ "vroid/1/3920278363424195171/3920278363424195171.vrm",
+ "vroid/1/3929361540524345061/3929361540524345061.vrm",
+ "vroid/1/3934112950709188581/3934112950709188581.vrm",
+ "vroid/1/3937078821654495111/3937078821654495111.vrm",
+ "vroid/1/3938053963121257821/3938053963121257821.vrm",
+ "vroid/1/3945562990936736471/3945562990936736471.vrm",
+ "vroid/1/3949800184049805551/3949800184049805551.vrm",
+ "vroid/1/3951908746165693381/3951908746165693381.vrm",
+ "vroid/1/3958644367795362861/3958644367795362861.vrm",
+ "vroid/1/3973449586430068631/3973449586430068631.vrm",
+ "vroid/1/3977832195791253211/3977832195791253211.vrm",
+ "vroid/1/3989036644609888341/3989036644609888341.vrm",
+ "vroid/1/3999674713395316261/3999674713395316261.vrm",
+ "vroid/1/4006466744373691681/4006466744373691681.vrm",
+ "vroid/1/4015384826008232441/4015384826008232441.vrm",
+ "vroid/1/4023337404581210901/4023337404581210901.vrm",
+ "vroid/1/4032527749643104121/4032527749643104121.vrm",
+ "vroid/1/4032717750940376201/4032717750940376201.vrm",
+ "vroid/1/4047529204349096301/4047529204349096301.vrm",
+ "vroid/1/4049698061753217911/4049698061753217911.vrm",
+ "vroid/1/4055018449565205611/4055018449565205611.vrm",
+ "vroid/1/406149290929678011/406149290929678011.vrm",
+ "vroid/1/4068297000673690801/4068297000673690801.vrm",
+ "vroid/1/4069016334478796421/4069016334478796421.vrm",
+ "vroid/1/4071849336988435771/4071849336988435771.vrm",
+ "vroid/1/4089990932457933811/4089990932457933811.vrm",
+ "vroid/1/4090272821872205561/4090272821872205561.vrm",
+ "vroid/1/4090920800054049841/4090920800054049841.vrm",
+ "vroid/1/4094843865985168161/4094843865985168161.vrm",
+ "vroid/1/4101253448286310771/4101253448286310771.vrm",
+ "vroid/1/4102563741824677311/4102563741824677311.vrm",
+ "vroid/1/4104891824923899371/4104891824923899371.vrm",
+ "vroid/1/4112746265717640561/4112746265717640561.vrm",
+ "vroid/1/4119831183190993531/4119831183190993531.vrm",
+ "vroid/1/412189518677615281/412189518677615281.vrm",
+ "vroid/1/4128941077358431921/4128941077358431921.vrm",
+ "vroid/1/4129303098824033801/4129303098824033801.vrm",
+ "vroid/1/4133179172424272321/4133179172424272321.vrm",
+ "vroid/1/4133521169028589781/4133521169028589781.vrm",
+ "vroid/1/4138909813767536191/4138909813767536191.vrm",
+ "vroid/1/4154337379679278501/4154337379679278501.vrm",
+ "vroid/1/4156402837249760691/4156402837249760691.vrm",
+ "vroid/1/4156670572325187401/4156670572325187401.vrm",
+ "vroid/1/4157543400861728711/4157543400861728711.vrm",
+ "vroid/1/4160900049324395731/4160900049324395731.vrm",
+ "vroid/1/4170417758903980411/4170417758903980411.vrm",
+ "vroid/1/4173516901786725911/4173516901786725911.vrm",
+ "vroid/1/4177448355209069491/4177448355209069491.vrm",
+ "vroid/1/4196849583517561891/4196849583517561891.vrm",
+ "vroid/1/4205303764678706801/4205303764678706801.vrm",
+ "vroid/1/421094532540189141/421094532540189141.vrm",
+ "vroid/1/4227592742100161971/4227592742100161971.vrm",
+ "vroid/1/4242779282051930311/4242779282051930311.vrm",
+ "vroid/1/4249674584697782471/4249674584697782471.vrm",
+ "vroid/1/4266145593910690311/4266145593910690311.vrm",
+ "vroid/1/4286246354162142501/4286246354162142501.vrm",
+ "vroid/1/4287759463809176291/4287759463809176291.vrm",
+ "vroid/1/4291452524078531911/4291452524078531911.vrm",
+ "vroid/1/4296943138742309161/4296943138742309161.vrm",
+ "vroid/1/4300809871964377451/4300809871964377451.vrm",
+ "vroid/1/4301273426700228781/4301273426700228781.vrm",
+ "vroid/1/4304276602398713151/4304276602398713151.vrm",
+ "vroid/1/432370468698420651/432370468698420651.vrm",
+ "vroid/1/4327188527532008681/4327188527532008681.vrm",
+ "vroid/1/4332144754046659581/4332144754046659581.vrm",
+ "vroid/1/433328974784645451/433328974784645451.vrm",
+ "vroid/1/4343221595035488901/4343221595035488901.vrm",
+ "vroid/1/4344590844740564561/4344590844740564561.vrm",
+ "vroid/1/4349608594423216851/4349608594423216851.vrm",
+ "vroid/1/4356189680527030641/4356189680527030641.vrm",
+ "vroid/1/4356948780525637941/4356948780525637941.vrm",
+ "vroid/1/4359213148181107711/4359213148181107711.vrm",
+ "vroid/1/435996942611479071/435996942611479071.vrm",
+ "vroid/1/4360318924521426071/4360318924521426071.vrm",
+ "vroid/1/4371611380109090911/4371611380109090911.vrm",
+ "vroid/1/4375059909986428201/4375059909986428201.vrm",
+ "vroid/1/4377347127156968051/4377347127156968051.vrm",
+ "vroid/1/4389968909160434551/4389968909160434551.vrm",
+ "vroid/1/4404281802102057231/4404281802102057231.vrm",
+ "vroid/1/4405759940115638991/4405759940115638991.vrm",
+ "vroid/1/4423811308866478461/4423811308866478461.vrm",
+ "vroid/1/4435539377019562341/4435539377019562341.vrm",
+ "vroid/1/4437300918502001751/4437300918502001751.vrm",
+ "vroid/1/4461968112107671601/4461968112107671601.vrm",
+ "vroid/1/4467594084507801471/4467594084507801471.vrm",
+ "vroid/1/4479308416915248251/4479308416915248251.vrm",
+ "vroid/1/4485246792197913741/4485246792197913741.vrm",
+ "vroid/1/4492206211071919171/4492206211071919171.vrm",
+ "vroid/1/4493151013067088131/4493151013067088131.vrm",
+ "vroid/1/4497086739048287141/4497086739048287141.vrm",
+ "vroid/1/4497564134324266231/4497564134324266231.vrm",
+ "vroid/1/4503910505691697491/4503910505691697491.vrm",
+ "vroid/1/4512021503177430051/4512021503177430051.vrm",
+ "vroid/1/4517416736116217091/4517416736116217091.vrm",
+ "vroid/1/4520754819153774991/4520754819153774991.vrm",
+ "vroid/1/4524025248581336741/4524025248581336741.vrm",
+ "vroid/1/4530049037957577731/4530049037957577731.vrm",
+ "vroid/1/4530523663761343941/4530523663761343941.vrm",
+ "vroid/1/4534369741528001881/4534369741528001881.vrm",
+ "vroid/1/4535824482964496111/4535824482964496111.vrm",
+ "vroid/1/4538590612284718051/4538590612284718051.vrm",
+ "vroid/1/4546037838387991631/4546037838387991631.vrm",
+ "vroid/1/4575604150145195671/4575604150145195671.vrm",
+ "vroid/1/458006334601500661/458006334601500661.vrm",
+ "vroid/1/4592530958900628591/4592530958900628591.vrm",
+ "vroid/1/4612703097244288641/4612703097244288641.vrm",
+ "vroid/1/4620635304498900011/4620635304498900011.vrm",
+ "vroid/1/4629773375945291691/4629773375945291691.vrm",
+ "vroid/1/4632730131677219681/4632730131677219681.vrm",
+ "vroid/1/463498593384374121/463498593384374121.vrm",
+ "vroid/1/4636330178885385401/4636330178885385401.vrm",
+ "vroid/1/4637085770032801101/4637085770032801101.vrm",
+ "vroid/1/4651164363694271281/4651164363694271281.vrm",
+ "vroid/1/465318402175919361/465318402175919361.vrm",
+ "vroid/1/4671562928732575701/4671562928732575701.vrm",
+ "vroid/1/4672482666430099191/4672482666430099191.vrm",
+ "vroid/1/4675194210589373061/4675194210589373061.vrm",
+ "vroid/1/467876739391020351/467876739391020351.vrm",
+ "vroid/1/4679151594301325191/4679151594301325191.vrm",
+ "vroid/1/4679611180621144671/4679611180621144671.vrm",
+ "vroid/1/4681695433163870341/4681695433163870341.vrm",
+ "vroid/1/468523830136070341/468523830136070341.vrm",
+ "vroid/1/4686190781584724231/4686190781584724231.vrm",
+ "vroid/1/4693719590521694361/4693719590521694361.vrm",
+ "vroid/1/4701150385188685551/4701150385188685551.vrm",
+ "vroid/1/4715692627736604301/4715692627736604301.vrm",
+ "vroid/1/4717045365677648271/4717045365677648271.vrm",
+ "vroid/1/4717160465174880341/4717160465174880341.vrm",
+ "vroid/1/4719442675703871761/4719442675703871761.vrm",
+ "vroid/1/4721008145345871951/4721008145345871951.vrm",
+ "vroid/1/4721693241075250441/4721693241075250441.vrm",
+ "vroid/1/4746155579479160561/4746155579479160561.vrm",
+ "vroid/1/474659362631993341/474659362631993341.vrm",
+ "vroid/1/4753460352745319831/4753460352745319831.vrm",
+ "vroid/1/4756724561242989141/4756724561242989141.vrm",
+ "vroid/1/4765494391713542391/4765494391713542391.vrm",
+ "vroid/1/4766645776652438681/4766645776652438681.vrm",
+ "vroid/1/4775578687738182971/4775578687738182971.vrm",
+ "vroid/1/477859093394825511/477859093394825511.vrm",
+ "vroid/1/4782699390497472121/4782699390497472121.vrm",
+ "vroid/1/4784470651049419781/4784470651049419781.vrm",
+ "vroid/1/4820705041838245901/4820705041838245901.vrm",
+ "vroid/1/4829034243951135901/4829034243951135901.vrm",
+ "vroid/1/4830589482300423391/4830589482300423391.vrm",
+ "vroid/1/4832240706625131371/4832240706625131371.vrm",
+ "vroid/1/4834562294022263451/4834562294022263451.vrm",
+ "vroid/1/4835716667839733861/4835716667839733861.vrm",
+ "vroid/1/4837623180596207231/4837623180596207231.vrm",
+ "vroid/1/4838557717083732971/4838557717083732971.vrm",
+ "vroid/1/4838839860991819121/4838839860991819121.vrm",
+ "vroid/1/4847040535209443311/4847040535209443311.vrm",
+ "vroid/1/4852545107023879861/4852545107023879861.vrm",
+ "vroid/1/4854598769700713501/4854598769700713501.vrm",
+ "vroid/1/4860165596960510911/4860165596960510911.vrm",
+ "vroid/1/4864993774034513831/4864993774034513831.vrm",
+ "vroid/1/4865655218439839231/4865655218439839231.vrm",
+ "vroid/1/4869670325514270991/4869670325514270991.vrm",
+ "vroid/1/4875228375326526861/4875228375326526861.vrm",
+ "vroid/1/4882345346959248191/4882345346959248191.vrm",
+ "vroid/1/4883353536191977991/4883353536191977991.vrm",
+ "vroid/1/4900840531406418761/4900840531406418761.vrm",
+ "vroid/1/4903761066018256881/4903761066018256881.vrm",
+ "vroid/1/4919620237696593561/4919620237696593561.vrm",
+ "vroid/1/4924632861143038551/4924632861143038551.vrm",
+ "vroid/1/4924763891151206171/4924763891151206171.vrm",
+ "vroid/1/493878247226081451/493878247226081451.vrm",
+ "vroid/1/4941697531447131141/4941697531447131141.vrm",
+ "vroid/1/4942602512188189781/4942602512188189781.vrm",
+ "vroid/1/4944004789246198011/4944004789246198011.vrm",
+ "vroid/1/4963797020105044721/4963797020105044721.vrm",
+ "vroid/1/4964122100046459771/4964122100046459771.vrm",
+ "vroid/1/4968323712259540951/4968323712259540951.vrm",
+ "vroid/1/4976550448988514431/4976550448988514431.vrm",
+ "vroid/1/497800745961592741/497800745961592741.vrm",
+ "vroid/1/4998261633157467151/4998261633157467151.vrm",
+ "vroid/1/4999430598432360981/4999430598432360981.vrm",
+ "vroid/1/5001662295323857701/5001662295323857701.vrm",
+ "vroid/1/5003222550217900371/5003222550217900371.vrm",
+ "vroid/1/5008579611015443751/5008579611015443751.vrm",
+ "vroid/1/500883403291417381/500883403291417381.vrm",
+ "vroid/1/5016042186266963001/5016042186266963001.vrm",
+ "vroid/1/502322649175390111/502322649175390111.vrm",
+ "vroid/1/5025069241572634651/5025069241572634651.vrm",
+ "vroid/1/502669310103232921/502669310103232921.vrm",
+ "vroid/1/5027451824636848611/5027451824636848611.vrm",
+ "vroid/1/5043170508592976631/5043170508592976631.vrm",
+ "vroid/1/5046427361098778491/5046427361098778491.vrm",
+ "vroid/1/5054205398774972451/5054205398774972451.vrm",
+ "vroid/1/5058729732387507341/5058729732387507341.vrm",
+ "vroid/1/507428325694130401/507428325694130401.vrm",
+ "vroid/1/5081221605969189781/5081221605969189781.vrm",
+ "vroid/1/5095518084022036961/5095518084022036961.vrm",
+ "vroid/1/5095840313780030091/5095840313780030091.vrm",
+ "vroid/1/5097346020793002141/5097346020793002141.vrm",
+ "vroid/1/5120936178785484021/5120936178785484021.vrm",
+ "vroid/1/5126288386014760591/5126288386014760591.vrm",
+ "vroid/1/5131548166288185421/5131548166288185421.vrm",
+ "vroid/1/5133685981891252441/5133685981891252441.vrm",
+ "vroid/1/5135340688758272621/5135340688758272621.vrm",
+ "vroid/1/5138213899673113101/5138213899673113101.vrm",
+ "vroid/1/5147468090878536671/5147468090878536671.vrm",
+ "vroid/1/5152308094743922001/5152308094743922001.vrm",
+ "vroid/1/5153940746945573521/5153940746945573521.vrm",
+ "vroid/1/5160290148479104421/5160290148479104421.vrm",
+ "vroid/1/5160463170664996711/5160463170664996711.vrm",
+ "vroid/1/5166431478277135021/5166431478277135021.vrm",
+ "vroid/1/5166969425306746661/5166969425306746661.vrm",
+ "vroid/1/5168486373686368161/5168486373686368161.vrm",
+ "vroid/1/5173490241528401041/5173490241528401041.vrm",
+ "vroid/1/5183651944648808771/5183651944648808771.vrm",
+ "vroid/1/5188372914972408021/5188372914972408021.vrm",
+ "vroid/1/5212832921257665021/5212832921257665021.vrm",
+ "vroid/1/5213247422684402371/5213247422684402371.vrm",
+ "vroid/1/5214296165796241781/5214296165796241781.vrm",
+ "vroid/1/5220460783879998931/5220460783879998931.vrm",
+ "vroid/1/523395940650418381/523395940650418381.vrm",
+ "vroid/1/523598252987007321/523598252987007321.vrm",
+ "vroid/1/5238584629256071341/5238584629256071341.vrm",
+ "vroid/1/5249112862928602761/5249112862928602761.vrm",
+ "vroid/1/5254957221394100321/5254957221394100321.vrm",
+ "vroid/1/5255649376418142591/5255649376418142591.vrm",
+ "vroid/1/5255890132751733521/5255890132751733521.vrm",
+ "vroid/1/5261553590106137281/5261553590106137281.vrm",
+ "vroid/1/5264936350262658011/5264936350262658011.vrm",
+ "vroid/1/5267509254030836641/5267509254030836641.vrm",
+ "vroid/1/5276707734724701501/5276707734724701501.vrm",
+ "vroid/1/5294134435767282651/5294134435767282651.vrm",
+ "vroid/1/5303124725222601231/5303124725222601231.vrm",
+ "vroid/1/5309985966188515021/5309985966188515021.vrm",
+ "vroid/1/5325966417487639401/5325966417487639401.vrm",
+ "vroid/1/5334759817499373531/5334759817499373531.vrm",
+ "vroid/1/5360086693103195271/5360086693103195271.vrm",
+ "vroid/1/5370458882486076421/5370458882486076421.vrm",
+ "vroid/1/5376543796771754681/5376543796771754681.vrm",
+ "vroid/1/538143534591455061/538143534591455061.vrm",
+ "vroid/1/5382199802193836041/5382199802193836041.vrm",
+ "vroid/1/5382244433714325301/5382244433714325301.vrm",
+ "vroid/1/5402324066234565591/5402324066234565591.vrm",
+ "vroid/1/5408911057894952671/5408911057894952671.vrm",
+ "vroid/1/5413252724795497531/5413252724795497531.vrm",
+ "vroid/1/5414960949380399671/5414960949380399671.vrm",
+ "vroid/1/5419454288879304071/5419454288879304071.vrm",
+ "vroid/1/5420642910684011601/5420642910684011601.vrm",
+ "vroid/1/5426883811680894091/5426883811680894091.vrm",
+ "vroid/1/5429277176836591091/5429277176836591091.vrm",
+ "vroid/1/5430586952197360461/5430586952197360461.vrm",
+ "vroid/1/5433778867540802311/5433778867540802311.vrm",
+ "vroid/1/5446526286182757981/5446526286182757981.vrm",
+ "vroid/1/5455455020583211251/5455455020583211251.vrm",
+ "vroid/1/545752383321418481/545752383321418481.vrm",
+ "vroid/1/5457685771937441241/5457685771937441241.vrm",
+ "vroid/1/5462230266007454111/5462230266007454111.vrm",
+ "vroid/1/5468246808132277251/5468246808132277251.vrm",
+ "vroid/1/547712966708602161/547712966708602161.vrm",
+ "vroid/1/5478053557001654971/5478053557001654971.vrm",
+ "vroid/1/5478602410104597101/5478602410104597101.vrm",
+ "vroid/1/5484256336369926941/5484256336369926941.vrm",
+ "vroid/1/5497367913213514431/5497367913213514431.vrm",
+ "vroid/1/5514826994861002021/5514826994861002021.vrm",
+ "vroid/1/5515912377246749451/5515912377246749451.vrm",
+ "vroid/1/5518261461494463001/5518261461494463001.vrm",
+ "vroid/1/5519539038042185521/5519539038042185521.vrm",
+ "vroid/1/5521101906961849191/5521101906961849191.vrm",
+ "vroid/1/5530703637612252551/5530703637612252551.vrm",
+ "vroid/1/5531766162681345111/5531766162681345111.vrm",
+ "vroid/1/5540169466865010271/5540169466865010271.vrm",
+ "vroid/1/5542338388912950621/5542338388912950621.vrm",
+ "vroid/1/5560338084518139051/5560338084518139051.vrm",
+ "vroid/1/5562264197470237381/5562264197470237381.vrm",
+ "vroid/1/5565201586005995911/5565201586005995911.vrm",
+ "vroid/1/5567831571387242381/5567831571387242381.vrm",
+ "vroid/1/5568052759582744211/5568052759582744211.vrm",
+ "vroid/1/5576744740406939381/5576744740406939381.vrm",
+ "vroid/1/5587717238340115401/5587717238340115401.vrm",
+ "vroid/1/5589934679224791991/5589934679224791991.vrm",
+ "vroid/1/5591804857460095161/5591804857460095161.vrm",
+ "vroid/1/5593492095468482391/5593492095468482391.vrm",
+ "vroid/1/5598758020936908201/5598758020936908201.vrm",
+ "vroid/1/561642829354771371/561642829354771371.vrm",
+ "vroid/1/5620257890340534101/5620257890340534101.vrm",
+ "vroid/1/5626934558368595231/5626934558368595231.vrm",
+ "vroid/1/5629500555325009731/5629500555325009731.vrm",
+ "vroid/1/5635512429473544651/5635512429473544651.vrm",
+ "vroid/1/5666003960918351141/5666003960918351141.vrm",
+ "vroid/1/5668698929381603511/5668698929381603511.vrm",
+ "vroid/1/5669248025946355381/5669248025946355381.vrm",
+ "vroid/1/5681713545733573891/5681713545733573891.vrm",
+ "vroid/1/5682925015061049581/5682925015061049581.vrm",
+ "vroid/1/5684535633769488081/5684535633769488081.vrm",
+ "vroid/1/5704629544502855301/5704629544502855301.vrm",
+ "vroid/1/5708619833618961551/5708619833618961551.vrm",
+ "vroid/1/571302340165690171/571302340165690171.vrm",
+ "vroid/1/5722646392605752741/5722646392605752741.vrm",
+ "vroid/1/5723194634369386041/5723194634369386041.vrm",
+ "vroid/1/5729914957193412161/5729914957193412161.vrm",
+ "vroid/1/5748729218205979201/5748729218205979201.vrm",
+ "vroid/1/5748884261883922761/5748884261883922761.vrm",
+ "vroid/1/5756074210870000251/5756074210870000251.vrm",
+ "vroid/1/5775331282393679171/5775331282393679171.vrm",
+ "vroid/1/5791845589992018391/5791845589992018391.vrm",
+ "vroid/1/5799924575815671221/5799924575815671221.vrm",
+ "vroid/1/5801742470731129141/5801742470731129141.vrm",
+ "vroid/1/5803218296084123071/5803218296084123071.vrm",
+ "vroid/1/5809053930203624151/5809053930203624151.vrm",
+ "vroid/1/5809519060544254401/5809519060544254401.vrm",
+ "vroid/1/5812267062406718701/5812267062406718701.vrm",
+ "vroid/1/5814053702244186801/5814053702244186801.vrm",
+ "vroid/1/5814895889167989321/5814895889167989321.vrm",
+ "vroid/1/5818651445208846641/5818651445208846641.vrm",
+ "vroid/1/5819938522690889441/5819938522690889441.vrm",
+ "vroid/1/5822291936072997961/5822291936072997961.vrm",
+ "vroid/1/5828638768289765721/5828638768289765721.vrm",
+ "vroid/1/5829434386082150391/5829434386082150391.vrm",
+ "vroid/1/5829453442506092661/5829453442506092661.vrm",
+ "vroid/1/583721583512164771/583721583512164771.vrm",
+ "vroid/1/5837583756588472781/5837583756588472781.vrm",
+ "vroid/1/5841538337823699031/5841538337823699031.vrm",
+ "vroid/1/5849178444151792601/5849178444151792601.vrm",
+ "vroid/1/5849713549777513301/5849713549777513301.vrm",
+ "vroid/1/5850510583353445311/5850510583353445311.vrm",
+ "vroid/1/5853062442057935571/5853062442057935571.vrm",
+ "vroid/1/5853862476901312331/5853862476901312331.vrm",
+ "vroid/1/5857106815680428641/5857106815680428641.vrm",
+ "vroid/1/5858108278634830531/5858108278634830531.vrm",
+ "vroid/1/5859501146808325981/5859501146808325981.vrm",
+ "vroid/1/5864751446572989901/5864751446572989901.vrm",
+ "vroid/1/5876063244425452321/5876063244425452321.vrm",
+ "vroid/1/5876353570562991361/5876353570562991361.vrm",
+ "vroid/1/5886390490289149321/5886390490289149321.vrm",
+ "vroid/1/5886972519132295671/5886972519132295671.vrm",
+ "vroid/1/589438644332381911/589438644332381911.vrm",
+ "vroid/1/5906491613125559131/5906491613125559131.vrm",
+ "vroid/1/5911004139119139731/5911004139119139731.vrm",
+ "vroid/1/5917874226658439761/5917874226658439761.vrm",
+ "vroid/1/5918763884300868531/5918763884300868531.vrm",
+ "vroid/1/5923459805139931401/5923459805139931401.vrm",
+ "vroid/1/5924974130952549211/5924974130952549211.vrm",
+ "vroid/1/5931441642178983931/5931441642178983931.vrm",
+ "vroid/1/5946036918249233531/5946036918249233531.vrm",
+ "vroid/1/5946347889059137861/5946347889059137861.vrm",
+ "vroid/1/595080673197488621/595080673197488621.vrm",
+ "vroid/1/595110276517849951/595110276517849951.vrm",
+ "vroid/1/595238247861797411/595238247861797411.vrm",
+ "vroid/1/5953048107225770461/5953048107225770461.vrm",
+ "vroid/1/5963209198618239791/5963209198618239791.vrm",
+ "vroid/1/5963471879404238671/5963471879404238671.vrm",
+ "vroid/1/5966738718842591081/5966738718842591081.vrm",
+ "vroid/1/597507624289805441/597507624289805441.vrm",
+ "vroid/1/5983785747627030801/5983785747627030801.vrm",
+ "vroid/1/5984088369421540531/5984088369421540531.vrm",
+ "vroid/1/5989502450625304221/5989502450625304221.vrm",
+ "vroid/1/6000746542596007531/6000746542596007531.vrm",
+ "vroid/1/601670025961638511/601670025961638511.vrm",
+ "vroid/1/6024403914265142381/6024403914265142381.vrm",
+ "vroid/1/6042660578361825281/6042660578361825281.vrm",
+ "vroid/1/6049365535823533731/6049365535823533731.vrm",
+ "vroid/1/6053480691948476261/6053480691948476261.vrm",
+ "vroid/1/6055280334695119571/6055280334695119571.vrm",
+ "vroid/1/6056393358183577091/6056393358183577091.vrm",
+ "vroid/1/6056622977699794131/6056622977699794131.vrm",
+ "vroid/1/6062369180416756561/6062369180416756561.vrm",
+ "vroid/1/6071840313935036781/6071840313935036781.vrm",
+ "vroid/1/6074954472228245891/6074954472228245891.vrm",
+ "vroid/1/6080319863108825751/6080319863108825751.vrm",
+ "vroid/1/6095560006724677761/6095560006724677761.vrm",
+ "vroid/1/6099896598579578211/6099896598579578211.vrm",
+ "vroid/1/610013033873283061/610013033873283061.vrm",
+ "vroid/1/6101590973454290941/6101590973454290941.vrm",
+ "vroid/1/6104972079575688391/6104972079575688391.vrm",
+ "vroid/1/6127528041164906161/6127528041164906161.vrm",
+ "vroid/1/6150862188605467621/6150862188605467621.vrm",
+ "vroid/1/6153123398881181/6153123398881181.vrm",
+ "vroid/1/6153739573126678641/6153739573126678641.vrm",
+ "vroid/1/6159490911592357381/6159490911592357381.vrm",
+ "vroid/1/6166989665417885301/6166989665417885301.vrm",
+ "vroid/1/617047807225284841/617047807225284841.vrm",
+ "vroid/1/6177351665023679171/6177351665023679171.vrm",
+ "vroid/1/618397441734840651/618397441734840651.vrm",
+ "vroid/1/619179691751808401/619179691751808401.vrm",
+ "vroid/1/6195802145247918331/6195802145247918331.vrm",
+ "vroid/1/6207815496521628711/6207815496521628711.vrm",
+ "vroid/1/6213335165106599881/6213335165106599881.vrm",
+ "vroid/1/621730251299475051/621730251299475051.vrm",
+ "vroid/1/6219090451102052561/6219090451102052561.vrm",
+ "vroid/1/6229148826794015401/6229148826794015401.vrm",
+ "vroid/1/6237677397514654281/6237677397514654281.vrm",
+ "vroid/1/6241784698099368951/6241784698099368951.vrm",
+ "vroid/1/6243831706352568911/6243831706352568911.vrm",
+ "vroid/1/6244056347770385491/6244056347770385491.vrm",
+ "vroid/1/62445570616174591/62445570616174591.vrm",
+ "vroid/1/6259847094717140111/6259847094717140111.vrm",
+ "vroid/1/6261259591666713611/6261259591666713611.vrm",
+ "vroid/1/6263569656144205581/6263569656144205581.vrm",
+ "vroid/1/6277928329391151231/6277928329391151231.vrm",
+ "vroid/1/6291899499287911121/6291899499287911121.vrm",
+ "vroid/1/6298384262870121161/6298384262870121161.vrm",
+ "vroid/1/6301864452870363081/6301864452870363081.vrm",
+ "vroid/1/6304722382660219691/6304722382660219691.vrm",
+ "vroid/1/6306378982101442801/6306378982101442801.vrm",
+ "vroid/1/6307225169499073811/6307225169499073811.vrm",
+ "vroid/1/6310204011248384401/6310204011248384401.vrm",
+ "vroid/1/6319215208492490311/6319215208492490311.vrm",
+ "vroid/1/6319371061963780971/6319371061963780971.vrm",
+ "vroid/1/6330294317498936641/6330294317498936641.vrm",
+ "vroid/1/6337349721818756871/6337349721818756871.vrm",
+ "vroid/1/633964156532929321/633964156532929321.vrm",
+ "vroid/1/6339757183378506081/6339757183378506081.vrm",
+ "vroid/1/6343761810885522311/6343761810885522311.vrm",
+ "vroid/1/6351923201278401701/6351923201278401701.vrm",
+ "vroid/1/6354300123677271981/6354300123677271981.vrm",
+ "vroid/1/6364886098708989321/6364886098708989321.vrm",
+ "vroid/1/6366088887493135561/6366088887493135561.vrm",
+ "vroid/1/6368141928397941111/6368141928397941111.vrm",
+ "vroid/1/6371729868349938331/6371729868349938331.vrm",
+ "vroid/1/6372963420671236131/6372963420671236131.vrm",
+ "vroid/1/6373897191363331861/6373897191363331861.vrm",
+ "vroid/1/6389561570881217511/6389561570881217511.vrm",
+ "vroid/1/6396523141972735121/6396523141972735121.vrm",
+ "vroid/1/6400536473203271601/6400536473203271601.vrm",
+ "vroid/1/6402089046651318481/6402089046651318481.vrm",
+ "vroid/1/6402374552112509851/6402374552112509851.vrm",
+ "vroid/1/6402837517484255071/6402837517484255071.vrm",
+ "vroid/1/6408467424750676251/6408467424750676251.vrm",
+ "vroid/1/641150769790876691/641150769790876691.vrm",
+ "vroid/1/6414320503762002061/6414320503762002061.vrm",
+ "vroid/1/6421195612153720211/6421195612153720211.vrm",
+ "vroid/1/6425226991514907941/6425226991514907941.vrm",
+ "vroid/1/6426378192705592171/6426378192705592171.vrm",
+ "vroid/1/6437805614763322251/6437805614763322251.vrm",
+ "vroid/1/6456519294207032331/6456519294207032331.vrm",
+ "vroid/1/6466550338626112971/6466550338626112971.vrm",
+ "vroid/1/64698951931551351/64698951931551351.vrm",
+ "vroid/1/6470990680125824321/6470990680125824321.vrm",
+ "vroid/1/6474197563450316941/6474197563450316941.vrm",
+ "vroid/1/6479090333116559171/6479090333116559171.vrm",
+ "vroid/1/6486433105600751441/6486433105600751441.vrm",
+ "vroid/1/6493894998064643491/6493894998064643491.vrm",
+ "vroid/1/6496264550199275411/6496264550199275411.vrm",
+ "vroid/1/6509030612452732641/6509030612452732641.vrm",
+ "vroid/1/6512160188489587981/6512160188489587981.vrm",
+ "vroid/1/6513093663347850081/6513093663347850081.vrm",
+ "vroid/1/6547551572577649041/6547551572577649041.vrm",
+ "vroid/1/6560309520353561631/6560309520353561631.vrm",
+ "vroid/1/6572427500943697751/6572427500943697751.vrm",
+ "vroid/1/6583251678831599521/6583251678831599521.vrm",
+ "vroid/1/6585365854334822441/6585365854334822441.vrm",
+ "vroid/1/658595318785034761/658595318785034761.vrm",
+ "vroid/1/6588076113746885561/6588076113746885561.vrm",
+ "vroid/1/6589902704031965401/6589902704031965401.vrm",
+ "vroid/1/6597148375432631971/6597148375432631971.vrm",
+ "vroid/1/6608679800900581791/6608679800900581791.vrm",
+ "vroid/1/6613044604330949311/6613044604330949311.vrm",
+ "vroid/1/6622418931192049421/6622418931192049421.vrm",
+ "vroid/1/6625759305504211061/6625759305504211061.vrm",
+ "vroid/1/6629595159627557391/6629595159627557391.vrm",
+ "vroid/1/6637465496852583151/6637465496852583151.vrm",
+ "vroid/1/6643538760978664541/6643538760978664541.vrm",
+ "vroid/1/6649415686288248821/6649415686288248821.vrm",
+ "vroid/1/6651709141255288181/6651709141255288181.vrm",
+ "vroid/1/6656338785488204611/6656338785488204611.vrm",
+ "vroid/1/6661731186544010901/6661731186544010901.vrm",
+ "vroid/1/6661917859213066551/6661917859213066551.vrm",
+ "vroid/1/6664166316580332301/6664166316580332301.vrm",
+ "vroid/1/6667947239774731401/6667947239774731401.vrm",
+ "vroid/1/6680089461718249571/6680089461718249571.vrm",
+ "vroid/1/6690541765826495011/6690541765826495011.vrm",
+ "vroid/1/6699335418834003921/6699335418834003921.vrm",
+ "vroid/1/6704035059124956161/6704035059124956161.vrm",
+ "vroid/1/6711246478341900951/6711246478341900951.vrm",
+ "vroid/1/6713683777202441811/6713683777202441811.vrm",
+ "vroid/1/6713926218581034621/6713926218581034621.vrm",
+ "vroid/1/6716260305285319481/6716260305285319481.vrm",
+ "vroid/1/6719067072143159921/6719067072143159921.vrm",
+ "vroid/1/6728832197198818621/6728832197198818621.vrm",
+ "vroid/1/6731867896282084321/6731867896282084321.vrm",
+ "vroid/1/6738352374379108541/6738352374379108541.vrm",
+ "vroid/1/6746141678029343921/6746141678029343921.vrm",
+ "vroid/1/6756998997722282931/6756998997722282931.vrm",
+ "vroid/1/6768923994487851071/6768923994487851071.vrm",
+ "vroid/1/6769370592941521121/6769370592941521121.vrm",
+ "vroid/1/6771037327264597731/6771037327264597731.vrm",
+ "vroid/1/6775388655547168091/6775388655547168091.vrm",
+ "vroid/1/6779152075472735761/6779152075472735761.vrm",
+ "vroid/1/6791394175182366541/6791394175182366541.vrm",
+ "vroid/1/6791770876781427551/6791770876781427551.vrm",
+ "vroid/1/6794616872164402231/6794616872164402231.vrm",
+ "vroid/1/6796073987499682721/6796073987499682721.vrm",
+ "vroid/1/679782888939495741/679782888939495741.vrm",
+ "vroid/1/6805427325441283451/6805427325441283451.vrm",
+ "vroid/1/6807161843973371011/6807161843973371011.vrm",
+ "vroid/1/6809299086020048711/6809299086020048711.vrm",
+ "vroid/1/6812512852883270611/6812512852883270611.vrm",
+ "vroid/1/6816309353214618241/6816309353214618241.vrm",
+ "vroid/1/6824594261930153441/6824594261930153441.vrm",
+ "vroid/1/6829560588197088741/6829560588197088741.vrm",
+ "vroid/1/6835313259338533721/6835313259338533721.vrm",
+ "vroid/1/6844008361946595361/6844008361946595361.vrm",
+ "vroid/1/6848771811098796991/6848771811098796991.vrm",
+ "vroid/1/6850070054031594051/6850070054031594051.vrm",
+ "vroid/1/6854277842758547861/6854277842758547861.vrm",
+ "vroid/1/6855039837605057611/6855039837605057611.vrm",
+ "vroid/1/6863109335251963091/6863109335251963091.vrm",
+ "vroid/1/6863856027683363331/6863856027683363331.vrm",
+ "vroid/1/6865990322610747751/6865990322610747751.vrm",
+ "vroid/1/6878356986707439651/6878356986707439651.vrm",
+ "vroid/1/6879061561677998541/6879061561677998541.vrm",
+ "vroid/1/6880165794060534311/6880165794060534311.vrm",
+ "vroid/1/6899390556330075631/6899390556330075631.vrm",
+ "vroid/1/6901622890630979921/6901622890630979921.vrm",
+ "vroid/1/6904704347334266511/6904704347334266511.vrm",
+ "vroid/1/6921946649275728501/6921946649275728501.vrm",
+ "vroid/1/6934274209926083441/6934274209926083441.vrm",
+ "vroid/1/6949387271484764791/6949387271484764791.vrm",
+ "vroid/1/6952166826280123421/6952166826280123421.vrm",
+ "vroid/1/6955513654367412111/6955513654367412111.vrm",
+ "vroid/1/6965222730467574761/6965222730467574761.vrm",
+ "vroid/1/6977569478698903771/6977569478698903771.vrm",
+ "vroid/1/6980020556862390631/6980020556862390631.vrm",
+ "vroid/1/6983323204903776301/6983323204903776301.vrm",
+ "vroid/1/6986514431164740211/6986514431164740211.vrm",
+ "vroid/1/6995762015186280451/6995762015186280451.vrm",
+ "vroid/1/699851464459839621/699851464459839621.vrm",
+ "vroid/1/6999411397032976341/6999411397032976341.vrm",
+ "vroid/1/7000285852793615681/7000285852793615681.vrm",
+ "vroid/1/7008220911332030471/7008220911332030471.vrm",
+ "vroid/1/7019897846797180121/7019897846797180121.vrm",
+ "vroid/1/7024304392589961271/7024304392589961271.vrm",
+ "vroid/1/7024767757390302661/7024767757390302661.vrm",
+ "vroid/1/7025992518027326311/7025992518027326311.vrm",
+ "vroid/1/7026223050431745851/7026223050431745851.vrm",
+ "vroid/1/7026365034410210381/7026365034410210381.vrm",
+ "vroid/1/7028968776990452111/7028968776990452111.vrm",
+ "vroid/1/7048127217568365451/7048127217568365451.vrm",
+ "vroid/1/7051357572540646881/7051357572540646881.vrm",
+ "vroid/1/7055371745312478211/7055371745312478211.vrm",
+ "vroid/1/7057194072147872011/7057194072147872011.vrm",
+ "vroid/1/706035202215802381/706035202215802381.vrm",
+ "vroid/1/7068548199236921251/7068548199236921251.vrm",
+ "vroid/1/7069372682320558701/7069372682320558701.vrm",
+ "vroid/1/7084653422743236531/7084653422743236531.vrm",
+ "vroid/1/709361810424054111/709361810424054111.vrm",
+ "vroid/1/7098276925021196981/7098276925021196981.vrm",
+ "vroid/1/7104226743214656101/7104226743214656101.vrm",
+ "vroid/1/7111881712290499121/7111881712290499121.vrm",
+ "vroid/1/7113624872894404191/7113624872894404191.vrm",
+ "vroid/1/7131157560413998921/7131157560413998921.vrm",
+ "vroid/1/7131306040635482511/7131306040635482511.vrm",
+ "vroid/1/7139079555469494741/7139079555469494741.vrm",
+ "vroid/1/7149685881613780321/7149685881613780321.vrm",
+ "vroid/1/7150594894719357191/7150594894719357191.vrm",
+ "vroid/1/7155733656259991621/7155733656259991621.vrm",
+ "vroid/1/7162419789786961831/7162419789786961831.vrm",
+ "vroid/1/7174035369287231911/7174035369287231911.vrm",
+ "vroid/1/717624175651442541/717624175651442541.vrm",
+ "vroid/1/7185405312957169721/7185405312957169721.vrm",
+ "vroid/1/7189606295007269111/7189606295007269111.vrm",
+ "vroid/1/7195553112756390291/7195553112756390291.vrm",
+ "vroid/1/7197359378663135621/7197359378663135621.vrm",
+ "vroid/1/7199138574551031161/7199138574551031161.vrm",
+ "vroid/1/7205348126170278551/7205348126170278551.vrm",
+ "vroid/1/7206370633471811681/7206370633471811681.vrm",
+ "vroid/1/7211195420814974551/7211195420814974551.vrm",
+ "vroid/1/7212306380824309021/7212306380824309021.vrm",
+ "vroid/1/7216406401821063001/7216406401821063001.vrm",
+ "vroid/1/721898287848381511/721898287848381511.vrm",
+ "vroid/1/7223441362186310711/7223441362186310711.vrm",
+ "vroid/1/7237617259685988831/7237617259685988831.vrm",
+ "vroid/1/7242121163606281221/7242121163606281221.vrm",
+ "vroid/1/7244285169640735531/7244285169640735531.vrm",
+ "vroid/1/7248728530113404831/7248728530113404831.vrm",
+ "vroid/1/7253033858367635031/7253033858367635031.vrm",
+ "vroid/1/7261045011340931211/7261045011340931211.vrm",
+ "vroid/1/7262196385906332731/7262196385906332731.vrm",
+ "vroid/1/7275037842047518381/7275037842047518381.vrm",
+ "vroid/1/7296371252904137891/7296371252904137891.vrm",
+ "vroid/1/7298948548962810991/7298948548962810991.vrm",
+ "vroid/1/7312119895057311421/7312119895057311421.vrm",
+ "vroid/1/73154956057083771/73154956057083771.vrm",
+ "vroid/1/7333155670535245441/7333155670535245441.vrm",
+ "vroid/1/7336157212919190351/7336157212919190351.vrm",
+ "vroid/1/7343431620431733581/7343431620431733581.vrm",
+ "vroid/1/7349236077114615141/7349236077114615141.vrm",
+ "vroid/1/7353203009716449661/7353203009716449661.vrm",
+ "vroid/1/7353607180342148071/7353607180342148071.vrm",
+ "vroid/1/7356772574476607501/7356772574476607501.vrm",
+ "vroid/1/7370345618386181561/7370345618386181561.vrm",
+ "vroid/1/7370521945282859161/7370521945282859161.vrm",
+ "vroid/1/7377970606549247911/7377970606549247911.vrm",
+ "vroid/1/7381036935501099981/7381036935501099981.vrm",
+ "vroid/1/7381799714037915231/7381799714037915231.vrm",
+ "vroid/1/7402903259523183791/7402903259523183791.vrm",
+ "vroid/1/7406979843430730171/7406979843430730171.vrm",
+ "vroid/1/7408253555848629701/7408253555848629701.vrm",
+ "vroid/1/7408854719268264911/7408854719268264911.vrm",
+ "vroid/1/7411947675707280631/7411947675707280631.vrm",
+ "vroid/1/7417171325896201921/7417171325896201921.vrm",
+ "vroid/1/7418579847020355181/7418579847020355181.vrm",
+ "vroid/1/7443901930183559361/7443901930183559361.vrm",
+ "vroid/1/7447252389583832681/7447252389583832681.vrm",
+ "vroid/1/7448500860388557151/7448500860388557151.vrm",
+ "vroid/1/7455106108200845211/7455106108200845211.vrm",
+ "vroid/1/7457003922721937361/7457003922721937361.vrm",
+ "vroid/1/7463384224808695041/7463384224808695041.vrm",
+ "vroid/1/7465997452267241161/7465997452267241161.vrm",
+ "vroid/1/7471784842568411511/7471784842568411511.vrm",
+ "vroid/1/7478235038416289591/7478235038416289591.vrm",
+ "vroid/1/7493408466871392651/7493408466871392651.vrm",
+ "vroid/1/7495418920904880181/7495418920904880181.vrm",
+ "vroid/1/74977012081330331/74977012081330331.vrm",
+ "vroid/1/7498162149102330041/7498162149102330041.vrm",
+ "vroid/1/749825744550307191/749825744550307191.vrm",
+ "vroid/1/751089991267733661/751089991267733661.vrm",
+ "vroid/1/7513514079890229941/7513514079890229941.vrm",
+ "vroid/1/7514566945913796181/7514566945913796181.vrm",
+ "vroid/1/7516614937743018801/7516614937743018801.vrm",
+ "vroid/1/7518098846710786431/7518098846710786431.vrm",
+ "vroid/1/7518600553195712971/7518600553195712971.vrm",
+ "vroid/1/7521735594132563001/7521735594132563001.vrm",
+ "vroid/1/752206033499138421/752206033499138421.vrm",
+ "vroid/1/7535630750915476181/7535630750915476181.vrm",
+ "vroid/1/7538494219521907181/7538494219521907181.vrm",
+ "vroid/1/754408713338427831/754408713338427831.vrm",
+ "vroid/1/754525117494052451/754525117494052451.vrm",
+ "vroid/1/7558107291350947611/7558107291350947611.vrm",
+ "vroid/1/7561330732510734791/7561330732510734791.vrm",
+ "vroid/1/7564423958290859131/7564423958290859131.vrm",
+ "vroid/1/7566616606526846951/7566616606526846951.vrm",
+ "vroid/1/7575635807084359521/7575635807084359521.vrm",
+ "vroid/1/7578384525362077071/7578384525362077071.vrm",
+ "vroid/1/7590656080364442341/7590656080364442341.vrm",
+ "vroid/1/7601630394217788321/7601630394217788321.vrm",
+ "vroid/1/7613337275345944251/7613337275345944251.vrm",
+ "vroid/1/7623985574392900121/7623985574392900121.vrm",
+ "vroid/1/7624910403327043681/7624910403327043681.vrm",
+ "vroid/1/7625969652632717341/7625969652632717341.vrm",
+ "vroid/1/7639142226016334341/7639142226016334341.vrm",
+ "vroid/1/7640373476021823171/7640373476021823171.vrm",
+ "vroid/1/7658140166203647911/7658140166203647911.vrm",
+ "vroid/1/7665680893040044541/7665680893040044541.vrm",
+ "vroid/1/7667114473979999361/7667114473979999361.vrm",
+ "vroid/1/7670972561957042601/7670972561957042601.vrm",
+ "vroid/1/767279254305441631/767279254305441631.vrm",
+ "vroid/1/7682349838595676821/7682349838595676821.vrm",
+ "vroid/1/7685435301043087031/7685435301043087031.vrm",
+ "vroid/1/7685736291345516441/7685736291345516441.vrm",
+ "vroid/1/768919324768057361/768919324768057361.vrm",
+ "vroid/1/7691858106479004081/7691858106479004081.vrm",
+ "vroid/1/7700777981517783921/7700777981517783921.vrm",
+ "vroid/1/7701324510470904151/7701324510470904151.vrm",
+ "vroid/1/7704712720632175781/7704712720632175781.vrm",
+ "vroid/1/7707554809953942621/7707554809953942621.vrm",
+ "vroid/1/771944738245200981/771944738245200981.vrm",
+ "vroid/1/772232194645578801/772232194645578801.vrm",
+ "vroid/1/7731701511509049451/7731701511509049451.vrm",
+ "vroid/1/7736077787257784631/7736077787257784631.vrm",
+ "vroid/1/7742479250397507441/7742479250397507441.vrm",
+ "vroid/1/7742752657999866111/7742752657999866111.vrm",
+ "vroid/1/7747677407119997091/7747677407119997091.vrm",
+ "vroid/1/7755314868136527241/7755314868136527241.vrm",
+ "vroid/1/7773810287406766131/7773810287406766131.vrm",
+ "vroid/1/777442213460481671/777442213460481671.vrm",
+ "vroid/1/7786820513699823271/7786820513699823271.vrm",
+ "vroid/1/7790182907343655461/7790182907343655461.vrm",
+ "vroid/1/7792500844361931371/7792500844361931371.vrm",
+ "vroid/1/7795118936357032931/7795118936357032931.vrm",
+ "vroid/1/7799078809279048971/7799078809279048971.vrm",
+ "vroid/1/7800529072888416891/7800529072888416891.vrm",
+ "vroid/1/7801010784358651341/7801010784358651341.vrm",
+ "vroid/1/7807803713823388121/7807803713823388121.vrm",
+ "vroid/1/7810098897817386061/7810098897817386061.vrm",
+ "vroid/1/7823474291543876121/7823474291543876121.vrm",
+ "vroid/1/7830062573508498821/7830062573508498821.vrm",
+ "vroid/1/7835015323122119881/7835015323122119881.vrm",
+ "vroid/1/7844822918842053261/7844822918842053261.vrm",
+ "vroid/1/7860469306191157151/7860469306191157151.vrm",
+ "vroid/1/7866324839655188631/7866324839655188631.vrm",
+ "vroid/1/7866932545750058721/7866932545750058721.vrm",
+ "vroid/1/7867627244824616321/7867627244824616321.vrm",
+ "vroid/1/7876018362540586531/7876018362540586531.vrm",
+ "vroid/1/7881213198094493431/7881213198094493431.vrm",
+ "vroid/1/7886237444876158931/7886237444876158931.vrm",
+ "vroid/1/7891028594949084611/7891028594949084611.vrm",
+ "vroid/1/7896341740657392791/7896341740657392791.vrm",
+ "vroid/1/7913676393638640461/7913676393638640461.vrm",
+ "vroid/1/7915937628208157741/7915937628208157741.vrm",
+ "vroid/1/7919090366261037871/7919090366261037871.vrm",
+ "vroid/1/7931442559571353081/7931442559571353081.vrm",
+ "vroid/1/794615227486731001/794615227486731001.vrm",
+ "vroid/1/7949478382700571371/7949478382700571371.vrm",
+ "vroid/1/7953716148271220741/7953716148271220741.vrm",
+ "vroid/1/7957235258276770791/7957235258276770791.vrm",
+ "vroid/1/7959271680021153511/7959271680021153511.vrm",
+ "vroid/1/7961499680365681961/7961499680365681961.vrm",
+ "vroid/1/7963759390042817451/7963759390042817451.vrm",
+ "vroid/1/7968583565900035291/7968583565900035291.vrm",
+ "vroid/1/7971714896421466441/7971714896421466441.vrm",
+ "vroid/1/7982134758346735171/7982134758346735171.vrm",
+ "vroid/1/7997844619095837051/7997844619095837051.vrm",
+ "vroid/1/800070265771920491/800070265771920491.vrm",
+ "vroid/1/8003709930821431811/8003709930821431811.vrm",
+ "vroid/1/8010530310752472991/8010530310752472991.vrm",
+ "vroid/1/8022815948228329611/8022815948228329611.vrm",
+ "vroid/1/8023475493372900331/8023475493372900331.vrm",
+ "vroid/1/8026618019094349771/8026618019094349771.vrm",
+ "vroid/1/8026730495184343161/8026730495184343161.vrm",
+ "vroid/1/8033863898162687741/8033863898162687741.vrm",
+ "vroid/1/8034382074004933801/8034382074004933801.vrm",
+ "vroid/1/8039943962664312551/8039943962664312551.vrm",
+ "vroid/1/8042463532360018221/8042463532360018221.vrm",
+ "vroid/1/8043753293826466921/8043753293826466921.vrm",
+ "vroid/1/8049405586737044061/8049405586737044061.vrm",
+ "vroid/1/8051169398293962141/8051169398293962141.vrm",
+ "vroid/1/8053162274482242991/8053162274482242991.vrm",
+ "vroid/1/8053474246998414301/8053474246998414301.vrm",
+ "vroid/1/8056943261237151951/8056943261237151951.vrm",
+ "vroid/1/8064076133108271241/8064076133108271241.vrm",
+ "vroid/1/8071225484420498401/8071225484420498401.vrm",
+ "vroid/1/8071866160991178061/8071866160991178061.vrm",
+ "vroid/1/8076291917186082431/8076291917186082431.vrm",
+ "vroid/1/8077142887631869301/8077142887631869301.vrm",
+ "vroid/1/8080183241024179101/8080183241024179101.vrm",
+ "vroid/1/8082442887688284001/8082442887688284001.vrm",
+ "vroid/1/8083071273834298721/8083071273834298721.vrm",
+ "vroid/1/8085418943914658461/8085418943914658461.vrm",
+ "vroid/1/8086389804674076911/8086389804674076911.vrm",
+ "vroid/1/8088760010814361871/8088760010814361871.vrm",
+ "vroid/1/809594022250528131/809594022250528131.vrm",
+ "vroid/1/809636408191906311/809636408191906311.vrm",
+ "vroid/1/8096636374428877351/8096636374428877351.vrm",
+ "vroid/1/8105372557151104751/8105372557151104751.vrm",
+ "vroid/1/8107112093093434831/8107112093093434831.vrm",
+ "vroid/1/8113702739376202201/8113702739376202201.vrm",
+ "vroid/1/8124279916985855541/8124279916985855541.vrm",
+ "vroid/1/8127082137929448131/8127082137929448131.vrm",
+ "vroid/1/8129970900981194211/8129970900981194211.vrm",
+ "vroid/1/8130519058665699671/8130519058665699671.vrm",
+ "vroid/1/8131468500020880191/8131468500020880191.vrm",
+ "vroid/1/8137590830762050421/8137590830762050421.vrm",
+ "vroid/1/8139737007503461831/8139737007503461831.vrm",
+ "vroid/1/8140520691255695071/8140520691255695071.vrm",
+ "vroid/1/8144010044536474571/8144010044536474571.vrm",
+ "vroid/1/8151932786644209021/8151932786644209021.vrm",
+ "vroid/1/8156270402429088441/8156270402429088441.vrm",
+ "vroid/1/8156587513611022491/8156587513611022491.vrm",
+ "vroid/1/8157948110404911621/8157948110404911621.vrm",
+ "vroid/1/8171777439898545661/8171777439898545661.vrm",
+ "vroid/1/819447960032712841/819447960032712841.vrm",
+ "vroid/1/8196429873185562591/8196429873185562591.vrm",
+ "vroid/1/8209759506462696861/8209759506462696861.vrm",
+ "vroid/1/8216871429311685701/8216871429311685701.vrm",
+ "vroid/1/8219159606638557291/8219159606638557291.vrm",
+ "vroid/1/8219487927260798591/8219487927260798591.vrm",
+ "vroid/1/8224031502850773951/8224031502850773951.vrm",
+ "vroid/1/8224237335829714501/8224237335829714501.vrm",
+ "vroid/1/8229932913821429331/8229932913821429331.vrm",
+ "vroid/1/8237465771239986691/8237465771239986691.vrm",
+ "vroid/1/8258114604697888361/8258114604697888361.vrm",
+ "vroid/1/8259516279575565201/8259516279575565201.vrm",
+ "vroid/1/8262057383824797331/8262057383824797331.vrm",
+ "vroid/1/8293573802339231131/8293573802339231131.vrm",
+ "vroid/1/8322080738943005951/8322080738943005951.vrm",
+ "vroid/1/8323812488188594091/8323812488188594091.vrm",
+ "vroid/1/8331662899765250571/8331662899765250571.vrm",
+ "vroid/1/8336291788408595321/8336291788408595321.vrm",
+ "vroid/1/8340069793014841111/8340069793014841111.vrm",
+ "vroid/1/8344833107682387191/8344833107682387191.vrm",
+ "vroid/1/8362753467127888941/8362753467127888941.vrm",
+ "vroid/1/8363458216134121601/8363458216134121601.vrm",
+ "vroid/1/8365002118131684481/8365002118131684481.vrm",
+ "vroid/1/8365812354325831081/8365812354325831081.vrm",
+ "vroid/1/8375332592266344431/8375332592266344431.vrm",
+ "vroid/1/8380984962060950241/8380984962060950241.vrm",
+ "vroid/1/8384653570951533051/8384653570951533051.vrm",
+ "vroid/1/8407170516812719231/8407170516812719231.vrm",
+ "vroid/1/8422935395567736691/8422935395567736691.vrm",
+ "vroid/1/84239646602894831/84239646602894831.vrm",
+ "vroid/1/842718557527015311/842718557527015311.vrm",
+ "vroid/1/843891097873291681/843891097873291681.vrm",
+ "vroid/1/8439753341771026251/8439753341771026251.vrm",
+ "vroid/1/8444874686386040441/8444874686386040441.vrm",
+ "vroid/1/8451699703832788261/8451699703832788261.vrm",
+ "vroid/1/8453359890314467251/8453359890314467251.vrm",
+ "vroid/1/8467336555942327761/8467336555942327761.vrm",
+ "vroid/1/8468438095579557621/8468438095579557621.vrm",
+ "vroid/1/8473563078422117621/8473563078422117621.vrm",
+ "vroid/1/8478428305558137471/8478428305558137471.vrm",
+ "vroid/1/8485359889302429231/8485359889302429231.vrm",
+ "vroid/1/8487819506678569031/8487819506678569031.vrm",
+ "vroid/1/8491887150922436151/8491887150922436151.vrm",
+ "vroid/1/8513039839375519961/8513039839375519961.vrm",
+ "vroid/1/8513704612203008361/8513704612203008361.vrm",
+ "vroid/1/8514688532530381781/8514688532530381781.vrm",
+ "vroid/1/8521350842968645031/8521350842968645031.vrm",
+ "vroid/1/853082946045047381/853082946045047381.vrm",
+ "vroid/1/8533264211994820631/8533264211994820631.vrm",
+ "vroid/1/8535630064298840571/8535630064298840571.vrm",
+ "vroid/1/8537786175206605231/8537786175206605231.vrm",
+ "vroid/1/8549418581988304081/8549418581988304081.vrm",
+ "vroid/1/8558439142916145201/8558439142916145201.vrm",
+ "vroid/1/8558741977673664791/8558741977673664791.vrm",
+ "vroid/1/8561766676197378971/8561766676197378971.vrm",
+ "vroid/1/8562961060475858791/8562961060475858791.vrm",
+ "vroid/1/8563448397722366971/8563448397722366971.vrm",
+ "vroid/1/8564887055426041931/8564887055426041931.vrm",
+ "vroid/1/8572643371774061641/8572643371774061641.vrm",
+ "vroid/1/8574585983109150341/8574585983109150341.vrm",
+ "vroid/1/8576216623061485151/8576216623061485151.vrm",
+ "vroid/1/8588577689346284201/8588577689346284201.vrm",
+ "vroid/1/8590238486593976221/8590238486593976221.vrm",
+ "vroid/1/8593508068255034351/8593508068255034351.vrm",
+ "vroid/1/8619974046241704021/8619974046241704021.vrm",
+ "vroid/1/8620004109523672041/8620004109523672041.vrm",
+ "vroid/1/8625631318448730331/8625631318448730331.vrm",
+ "vroid/1/8632101110271222781/8632101110271222781.vrm",
+ "vroid/1/8638504913078154741/8638504913078154741.vrm",
+ "vroid/1/8639715320865523811/8639715320865523811.vrm",
+ "vroid/1/8643683884415679701/8643683884415679701.vrm",
+ "vroid/1/8651477780713132291/8651477780713132291.vrm",
+ "vroid/1/8663372489600612961/8663372489600612961.vrm",
+ "vroid/1/8664655373742569271/8664655373742569271.vrm",
+ "vroid/1/866512558730986141/866512558730986141.vrm",
+ "vroid/1/8667387814281009961/8667387814281009961.vrm",
+ "vroid/1/8675525667095239961/8675525667095239961.vrm",
+ "vroid/1/8678744559790903201/8678744559790903201.vrm",
+ "vroid/1/868804545455835421/868804545455835421.vrm",
+ "vroid/1/8696593597056610481/8696593597056610481.vrm",
+ "vroid/1/870507587588303821/870507587588303821.vrm",
+ "vroid/1/8720550668668745521/8720550668668745521.vrm",
+ "vroid/1/8724943852296599921/8724943852296599921.vrm",
+ "vroid/1/8729444168338377051/8729444168338377051.vrm",
+ "vroid/1/8735897422752828861/8735897422752828861.vrm",
+ "vroid/1/8741208969694620391/8741208969694620391.vrm",
+ "vroid/1/8745815653970237081/8745815653970237081.vrm",
+ "vroid/1/8749616311384988721/8749616311384988721.vrm",
+ "vroid/1/8757726435660766791/8757726435660766791.vrm",
+ "vroid/1/8757913672124917361/8757913672124917361.vrm",
+ "vroid/1/8759818440631828231/8759818440631828231.vrm",
+ "vroid/1/8775951377860098931/8775951377860098931.vrm",
+ "vroid/1/8792773110957859071/8792773110957859071.vrm",
+ "vroid/1/8793983573847096751/8793983573847096751.vrm",
+ "vroid/1/8801762025343376001/8801762025343376001.vrm",
+ "vroid/1/8803456785331952541/8803456785331952541.vrm",
+ "vroid/1/8807459480091780411/8807459480091780411.vrm",
+ "vroid/1/8809540013739228631/8809540013739228631.vrm",
+ "vroid/1/8813234378625256321/8813234378625256321.vrm",
+ "vroid/1/8818702093196259691/8818702093196259691.vrm",
+ "vroid/1/8823962987574241581/8823962987574241581.vrm",
+ "vroid/1/8858433977814734731/8858433977814734731.vrm",
+ "vroid/1/8860791254960733661/8860791254960733661.vrm",
+ "vroid/1/8864752956395701931/8864752956395701931.vrm",
+ "vroid/1/8878645883629898051/8878645883629898051.vrm",
+ "vroid/1/8880451771284798751/8880451771284798751.vrm",
+ "vroid/1/8884420168011483831/8884420168011483831.vrm",
+ "vroid/1/8887458137349463421/8887458137349463421.vrm",
+ "vroid/1/8896046644735488841/8896046644735488841.vrm",
+ "vroid/1/8901478439109012091/8901478439109012091.vrm",
+ "vroid/1/890690136953530791/890690136953530791.vrm",
+ "vroid/1/8910077933676264741/8910077933676264741.vrm",
+ "vroid/1/8936676274352684231/8936676274352684231.vrm",
+ "vroid/1/8946350928734757961/8946350928734757961.vrm",
+ "vroid/1/8950072201986383951/8950072201986383951.vrm",
+ "vroid/1/8954875134853759701/8954875134853759701.vrm",
+ "vroid/1/8957211329393964731/8957211329393964731.vrm",
+ "vroid/1/8961287400028426331/8961287400028426331.vrm",
+ "vroid/1/8971798919556773091/8971798919556773091.vrm",
+ "vroid/1/8978795630299006601/8978795630299006601.vrm",
+ "vroid/1/8987941979353575851/8987941979353575851.vrm",
+ "vroid/1/9013382178753146501/9013382178753146501.vrm",
+ "vroid/1/9020784299900229931/9020784299900229931.vrm",
+ "vroid/1/9024799782002137921/9024799782002137921.vrm",
+ "vroid/1/9031484072198065901/9031484072198065901.vrm",
+ "vroid/1/9033197102946877321/9033197102946877321.vrm",
+ "vroid/1/903493244330384021/903493244330384021.vrm",
+ "vroid/1/9035850342572073941/9035850342572073941.vrm",
+ "vroid/1/9036784514919469751/9036784514919469751.vrm",
+ "vroid/1/9041816378508088331/9041816378508088331.vrm",
+ "vroid/1/9047009865154235611/9047009865154235611.vrm",
+ "vroid/1/9047019575018736111/9047019575018736111.vrm",
+ "vroid/1/9050129669071228571/9050129669071228571.vrm",
+ "vroid/1/9055767837966886751/9055767837966886751.vrm",
+ "vroid/1/9074625450251067991/9074625450251067991.vrm",
+ "vroid/1/9086033697753591041/9086033697753591041.vrm",
+ "vroid/1/9086132397359493831/9086132397359493831.vrm",
+ "vroid/1/9095560420332298281/9095560420332298281.vrm",
+ "vroid/1/9103979785208915011/9103979785208915011.vrm",
+ "vroid/1/9116768293335572431/9116768293335572431.vrm",
+ "vroid/1/9118873699124267001/9118873699124267001.vrm",
+ "vroid/1/9139112501675852961/9139112501675852961.vrm",
+ "vroid/1/914833984566867741/914833984566867741.vrm",
+ "vroid/1/9151313470875333331/9151313470875333331.vrm",
+ "vroid/1/9153473776180567991/9153473776180567991.vrm",
+ "vroid/1/9153852317965904581/9153852317965904581.vrm",
+ "vroid/1/9159670699114413141/9159670699114413141.vrm",
+ "vroid/1/9162909123723678341/9162909123723678341.vrm",
+ "vroid/1/9163664459890061861/9163664459890061861.vrm",
+ "vroid/1/9168839217746999081/9168839217746999081.vrm",
+ "vroid/1/9174046812112380561/9174046812112380561.vrm",
+ "vroid/1/9181987379953864051/9181987379953864051.vrm",
+ "vroid/1/9185582202311864361/9185582202311864361.vrm",
+ "vroid/1/9185825961107525131/9185825961107525131.vrm",
+ "vroid/1/919238522726638561/919238522726638561.vrm",
+ "vroid/1/9197703430426866701/9197703430426866701.vrm",
+ "vroid/1/9203467159313512831/9203467159313512831.vrm",
+ "vroid/1/9206462664930997561/9206462664930997561.vrm",
+ "vroid/1/9213860147217965191/9213860147217965191.vrm",
+ "vroid/1/9216824835267030981/9216824835267030981.vrm",
+ "vroid/1/926448783139633501/926448783139633501.vrm",
+ "vroid/1/939117560146450901/939117560146450901.vrm",
+ "vroid/1/939552516132059651/939552516132059651.vrm",
+ "vroid/1/940040357600638101/940040357600638101.vrm",
+ "vroid/1/940430863078135671/940430863078135671.vrm",
+ "vroid/1/940556474393642781/940556474393642781.vrm",
+ "vroid/1/9493089140174401/9493089140174401.vrm",
+ "vroid/1/949839330949353661/949839330949353661.vrm",
+ "vroid/1/963886630917831551/963886630917831551.vrm",
+ "vroid/1/968955350215980841/968955350215980841.vrm",
+ "vroid/1/977542804477205221/977542804477205221.vrm",
+ "vroid/1/993217606515205841/993217606515205841.vrm",
+ "vroid/1/995631284001350521/995631284001350521.vrm",
+ "vroid/2/1004724000688170552/1004724000688170552.vrm",
+ "vroid/2/1012995748550875102/1012995748550875102.vrm",
+ "vroid/2/1016416921489958162/1016416921489958162.vrm",
+ "vroid/2/102160958756299902/102160958756299902.vrm",
+ "vroid/2/1027141227201743722/1027141227201743722.vrm",
+ "vroid/2/1029456057877656872/1029456057877656872.vrm",
+ "vroid/2/1039510241654690522/1039510241654690522.vrm",
+ "vroid/2/1043826810927538942/1043826810927538942.vrm",
+ "vroid/2/1045847649334335362/1045847649334335362.vrm",
+ "vroid/2/1047774768664981142/1047774768664981142.vrm",
+ "vroid/2/1059036574706667702/1059036574706667702.vrm",
+ "vroid/2/1067701920345622582/1067701920345622582.vrm",
+ "vroid/2/1070712620932226502/1070712620932226502.vrm",
+ "vroid/2/1076019316624467752/1076019316624467752.vrm",
+ "vroid/2/1079016274966487822/1079016274966487822.vrm",
+ "vroid/2/1085098988521224662/1085098988521224662.vrm",
+ "vroid/2/1088478011922197912/1088478011922197912.vrm",
+ "vroid/2/1100514084783754682/1100514084783754682.vrm",
+ "vroid/2/1114201452084140282/1114201452084140282.vrm",
+ "vroid/2/1121802978946440822/1121802978946440822.vrm",
+ "vroid/2/1126370395506195482/1126370395506195482.vrm",
+ "vroid/2/1130939135602498912/1130939135602498912.vrm",
+ "vroid/2/113984581738308512/113984581738308512.vrm",
+ "vroid/2/1146977392849123402/1146977392849123402.vrm",
+ "vroid/2/1151556099516795742/1151556099516795742.vrm",
+ "vroid/2/1157175874401749732/1157175874401749732.vrm",
+ "vroid/2/1163537186953528212/1163537186953528212.vrm",
+ "vroid/2/1174997979504657602/1174997979504657602.vrm",
+ "vroid/2/1176572081035769202/1176572081035769202.vrm",
+ "vroid/2/1184247335348348692/1184247335348348692.vrm",
+ "vroid/2/1193688469146821962/1193688469146821962.vrm",
+ "vroid/2/1194569463410626362/1194569463410626362.vrm",
+ "vroid/2/1195607892704345822/1195607892704345822.vrm",
+ "vroid/2/1204201796829180382/1204201796829180382.vrm",
+ "vroid/2/1218464266670370992/1218464266670370992.vrm",
+ "vroid/2/1218633169406462222/1218633169406462222.vrm",
+ "vroid/2/1222185813406301302/1222185813406301302.vrm",
+ "vroid/2/1240869362987573182/1240869362987573182.vrm",
+ "vroid/2/1242588613041463482/1242588613041463482.vrm",
+ "vroid/2/1247060864022452092/1247060864022452092.vrm",
+ "vroid/2/1247098690731450172/1247098690731450172.vrm",
+ "vroid/2/1251381903099536212/1251381903099536212.vrm",
+ "vroid/2/1257820155374701382/1257820155374701382.vrm",
+ "vroid/2/1259843191784755922/1259843191784755922.vrm",
+ "vroid/2/1264248206895332882/1264248206895332882.vrm",
+ "vroid/2/1266755173674339332/1266755173674339332.vrm",
+ "vroid/2/1268015805024708402/1268015805024708402.vrm",
+ "vroid/2/1275510636278288782/1275510636278288782.vrm",
+ "vroid/2/1291000429888279322/1291000429888279322.vrm",
+ "vroid/2/1297111311780761872/1297111311780761872.vrm",
+ "vroid/2/1299367643256975872/1299367643256975872.vrm",
+ "vroid/2/1300316168324499342/1300316168324499342.vrm",
+ "vroid/2/1302689117498204802/1302689117498204802.vrm",
+ "vroid/2/1308745360919045732/1308745360919045732.vrm",
+ "vroid/2/1327092672246986382/1327092672246986382.vrm",
+ "vroid/2/1327271097088794172/1327271097088794172.vrm",
+ "vroid/2/1331428801832460552/1331428801832460552.vrm",
+ "vroid/2/1337760094983144172/1337760094983144172.vrm",
+ "vroid/2/1337997952239146472/1337997952239146472.vrm",
+ "vroid/2/1338801038429127472/1338801038429127472.vrm",
+ "vroid/2/134143913617652842/134143913617652842.vrm",
+ "vroid/2/1350971297625987822/1350971297625987822.vrm",
+ "vroid/2/1352835211892522402/1352835211892522402.vrm",
+ "vroid/2/1361522920851995172/1361522920851995172.vrm",
+ "vroid/2/1366619909189127022/1366619909189127022.vrm",
+ "vroid/2/1381138388015572182/1381138388015572182.vrm",
+ "vroid/2/1393035830671916012/1393035830671916012.vrm",
+ "vroid/2/1393567942866003682/1393567942866003682.vrm",
+ "vroid/2/1402418845893132112/1402418845893132112.vrm",
+ "vroid/2/1408289917605119482/1408289917605119482.vrm",
+ "vroid/2/1408939175752628502/1408939175752628502.vrm",
+ "vroid/2/142414084189733282/142414084189733282.vrm",
+ "vroid/2/1425570447847942332/1425570447847942332.vrm",
+ "vroid/2/1426429297451026542/1426429297451026542.vrm",
+ "vroid/2/1431623522240256412/1431623522240256412.vrm",
+ "vroid/2/144033688736192562/144033688736192562.vrm",
+ "vroid/2/1442779372064889782/1442779372064889782.vrm",
+ "vroid/2/1452070552733757912/1452070552733757912.vrm",
+ "vroid/2/1458591398979287222/1458591398979287222.vrm",
+ "vroid/2/1467321718515275302/1467321718515275302.vrm",
+ "vroid/2/1469109509926212352/1469109509926212352.vrm",
+ "vroid/2/148797622024211842/148797622024211842.vrm",
+ "vroid/2/1493153226311436682/1493153226311436682.vrm",
+ "vroid/2/1499601931380250192/1499601931380250192.vrm",
+ "vroid/2/1506023877218826342/1506023877218826342.vrm",
+ "vroid/2/1508555204972377242/1508555204972377242.vrm",
+ "vroid/2/1525408748696674952/1525408748696674952.vrm",
+ "vroid/2/1530072300304794132/1530072300304794132.vrm",
+ "vroid/2/15504596758204702/15504596758204702.vrm",
+ "vroid/2/1554543400600154282/1554543400600154282.vrm",
+ "vroid/2/1562401934320983612/1562401934320983612.vrm",
+ "vroid/2/1568987476719995942/1568987476719995942.vrm",
+ "vroid/2/157320037785394032/157320037785394032.vrm",
+ "vroid/2/1578687567825845492/1578687567825845492.vrm",
+ "vroid/2/158087043096208012/158087043096208012.vrm",
+ "vroid/2/1589834932341387892/1589834932341387892.vrm",
+ "vroid/2/1595910563922892352/1595910563922892352.vrm",
+ "vroid/2/1596450374399308432/1596450374399308432.vrm",
+ "vroid/2/1605561148280850122/1605561148280850122.vrm",
+ "vroid/2/1610401355232522902/1610401355232522902.vrm",
+ "vroid/2/1613570712703059992/1613570712703059992.vrm",
+ "vroid/2/1617350706952550452/1617350706952550452.vrm",
+ "vroid/2/1632031105392213582/1632031105392213582.vrm",
+ "vroid/2/1634033091184592612/1634033091184592612.vrm",
+ "vroid/2/1644735624732669582/1644735624732669582.vrm",
+ "vroid/2/1652140332365972842/1652140332365972842.vrm",
+ "vroid/2/1659109981496847752/1659109981496847752.vrm",
+ "vroid/2/1662782210195376942/1662782210195376942.vrm",
+ "vroid/2/1669523804655435652/1669523804655435652.vrm",
+ "vroid/2/1692430497155788652/1692430497155788652.vrm",
+ "vroid/2/1697022681522879472/1697022681522879472.vrm",
+ "vroid/2/1697920198043380302/1697920198043380302.vrm",
+ "vroid/2/1698222831185098312/1698222831185098312.vrm",
+ "vroid/2/1706526975328526772/1706526975328526772.vrm",
+ "vroid/2/1714686819082262622/1714686819082262622.vrm",
+ "vroid/2/1715276049049876972/1715276049049876972.vrm",
+ "vroid/2/1716885002307895082/1716885002307895082.vrm",
+ "vroid/2/1721069361132682462/1721069361132682462.vrm",
+ "vroid/2/1723660646870529752/1723660646870529752.vrm",
+ "vroid/2/172905453922646782/172905453922646782.vrm",
+ "vroid/2/1732093664215583462/1732093664215583462.vrm",
+ "vroid/2/1737871928330550922/1737871928330550922.vrm",
+ "vroid/2/1780278949271782702/1780278949271782702.vrm",
+ "vroid/2/1791447513517704572/1791447513517704572.vrm",
+ "vroid/2/1800671567778225362/1800671567778225362.vrm",
+ "vroid/2/1803640178218147762/1803640178218147762.vrm",
+ "vroid/2/1816950320191828622/1816950320191828622.vrm",
+ "vroid/2/1821097988407844792/1821097988407844792.vrm",
+ "vroid/2/1822123506533156802/1822123506533156802.vrm",
+ "vroid/2/1828204423718032212/1828204423718032212.vrm",
+ "vroid/2/1840508207918636352/1840508207918636352.vrm",
+ "vroid/2/1867886958761800052/1867886958761800052.vrm",
+ "vroid/2/1885862779880983472/1885862779880983472.vrm",
+ "vroid/2/1893630260382368312/1893630260382368312.vrm",
+ "vroid/2/1894670422235825672/1894670422235825672.vrm",
+ "vroid/2/190949268332181832/190949268332181832.vrm",
+ "vroid/2/1916745075488934442/1916745075488934442.vrm",
+ "vroid/2/1921350562317843912/1921350562317843912.vrm",
+ "vroid/2/1922287894164474382/1922287894164474382.vrm",
+ "vroid/2/1924223448751087832/1924223448751087832.vrm",
+ "vroid/2/1927706355945175652/1927706355945175652.vrm",
+ "vroid/2/1930811647810428862/1930811647810428862.vrm",
+ "vroid/2/1931046980233671822/1931046980233671822.vrm",
+ "vroid/2/1932169806475749382/1932169806475749382.vrm",
+ "vroid/2/1932576502409963722/1932576502409963722.vrm",
+ "vroid/2/1933689848802463392/1933689848802463392.vrm",
+ "vroid/2/1947748507051062652/1947748507051062652.vrm",
+ "vroid/2/1957891721931439092/1957891721931439092.vrm",
+ "vroid/2/1965558464011950702/1965558464011950702.vrm",
+ "vroid/2/1970468085848546122/1970468085848546122.vrm",
+ "vroid/2/1976769686691690332/1976769686691690332.vrm",
+ "vroid/2/197737947464982862/197737947464982862.vrm",
+ "vroid/2/1989679761024725392/1989679761024725392.vrm",
+ "vroid/2/1991507420646737522/1991507420646737522.vrm",
+ "vroid/2/1994851219558900342/1994851219558900342.vrm",
+ "vroid/2/199859097517858062/199859097517858062.vrm",
+ "vroid/2/2010507666371756662/2010507666371756662.vrm",
+ "vroid/2/2015534260396734612/2015534260396734612.vrm",
+ "vroid/2/2023316076252283902/2023316076252283902.vrm",
+ "vroid/2/2030298728726997092/2030298728726997092.vrm",
+ "vroid/2/2036593766115331822/2036593766115331822.vrm",
+ "vroid/2/2036734521251179672/2036734521251179672.vrm",
+ "vroid/2/2058791483291574302/2058791483291574302.vrm",
+ "vroid/2/2061844726435307122/2061844726435307122.vrm",
+ "vroid/2/2061963051686654052/2061963051686654052.vrm",
+ "vroid/2/2062772670613631052/2062772670613631052.vrm",
+ "vroid/2/2066675240237639342/2066675240237639342.vrm",
+ "vroid/2/2068137275379305802/2068137275379305802.vrm",
+ "vroid/2/2072453306470646362/2072453306470646362.vrm",
+ "vroid/2/207505902300160552/207505902300160552.vrm",
+ "vroid/2/2091238985591589522/2091238985591589522.vrm",
+ "vroid/2/2096527722665540712/2096527722665540712.vrm",
+ "vroid/2/2096904638727288822/2096904638727288822.vrm",
+ "vroid/2/2097079811906449622/2097079811906449622.vrm",
+ "vroid/2/210052847735807182/210052847735807182.vrm",
+ "vroid/2/2107828546276668032/2107828546276668032.vrm",
+ "vroid/2/2119741036496084222/2119741036496084222.vrm",
+ "vroid/2/2128359005336296642/2128359005336296642.vrm",
+ "vroid/2/2137890548568353612/2137890548568353612.vrm",
+ "vroid/2/2146241334548749482/2146241334548749482.vrm",
+ "vroid/2/2148359028610094972/2148359028610094972.vrm",
+ "vroid/2/2153498611513323092/2153498611513323092.vrm",
+ "vroid/2/2160787905481561442/2160787905481561442.vrm",
+ "vroid/2/2164704843891588582/2164704843891588582.vrm",
+ "vroid/2/2171778490981022582/2171778490981022582.vrm",
+ "vroid/2/2181708071175501522/2181708071175501522.vrm",
+ "vroid/2/2189407179745141182/2189407179745141182.vrm",
+ "vroid/2/2206227804909270602/2206227804909270602.vrm",
+ "vroid/2/2220977868644819842/2220977868644819842.vrm",
+ "vroid/2/2221105437507294692/2221105437507294692.vrm",
+ "vroid/2/2231721480495135272/2231721480495135272.vrm",
+ "vroid/2/2244803574771808752/2244803574771808752.vrm",
+ "vroid/2/2247980248774388932/2247980248774388932.vrm",
+ "vroid/2/2258356015996424982/2258356015996424982.vrm",
+ "vroid/2/2264521080704168162/2264521080704168162.vrm",
+ "vroid/2/2269139573228315182/2269139573228315182.vrm",
+ "vroid/2/227065510431993902/227065510431993902.vrm",
+ "vroid/2/2280243886839226582/2280243886839226582.vrm",
+ "vroid/2/2289184635816617522/2289184635816617522.vrm",
+ "vroid/2/2291176475620534602/2291176475620534602.vrm",
+ "vroid/2/2291992557548649802/2291992557548649802.vrm",
+ "vroid/2/2295778394067832962/2295778394067832962.vrm",
+ "vroid/2/2303365712814093752/2303365712814093752.vrm",
+ "vroid/2/2305630454190629312/2305630454190629312.vrm",
+ "vroid/2/2305641621635680252/2305641621635680252.vrm",
+ "vroid/2/2314192731223545002/2314192731223545002.vrm",
+ "vroid/2/2323696964544894012/2323696964544894012.vrm",
+ "vroid/2/2330718709858921932/2330718709858921932.vrm",
+ "vroid/2/2344680047446383402/2344680047446383402.vrm",
+ "vroid/2/2345928322548324602/2345928322548324602.vrm",
+ "vroid/2/2348449683127840832/2348449683127840832.vrm",
+ "vroid/2/2351653257001353042/2351653257001353042.vrm",
+ "vroid/2/2357055483050663332/2357055483050663332.vrm",
+ "vroid/2/2363299828127522992/2363299828127522992.vrm",
+ "vroid/2/2378379463091524792/2378379463091524792.vrm",
+ "vroid/2/2386882672263668972/2386882672263668972.vrm",
+ "vroid/2/2392210178147609172/2392210178147609172.vrm",
+ "vroid/2/2392275067362861232/2392275067362861232.vrm",
+ "vroid/2/2392863452824280262/2392863452824280262.vrm",
+ "vroid/2/2393905683265105622/2393905683265105622.vrm",
+ "vroid/2/2395497967628206032/2395497967628206032.vrm",
+ "vroid/2/2397237866129775872/2397237866129775872.vrm",
+ "vroid/2/240712577021296382/240712577021296382.vrm",
+ "vroid/2/2412750136743804052/2412750136743804052.vrm",
+ "vroid/2/2415058977317263272/2415058977317263272.vrm",
+ "vroid/2/2418052543531788472/2418052543531788472.vrm",
+ "vroid/2/2421036979292221272/2421036979292221272.vrm",
+ "vroid/2/2421337897333296992/2421337897333296992.vrm",
+ "vroid/2/2426517581512337892/2426517581512337892.vrm",
+ "vroid/2/2428645267432720382/2428645267432720382.vrm",
+ "vroid/2/2441326254016319592/2441326254016319592.vrm",
+ "vroid/2/2452883737703436522/2452883737703436522.vrm",
+ "vroid/2/2456831854322629962/2456831854322629962.vrm",
+ "vroid/2/2458586246611428112/2458586246611428112.vrm",
+ "vroid/2/2461411602087862772/2461411602087862772.vrm",
+ "vroid/2/2469817862978112422/2469817862978112422.vrm",
+ "vroid/2/2476822817098562222/2476822817098562222.vrm",
+ "vroid/2/2476885548016084062/2476885548016084062.vrm",
+ "vroid/2/2478342953142755052/2478342953142755052.vrm",
+ "vroid/2/2494905934533282342/2494905934533282342.vrm",
+ "vroid/2/2497672133466072052/2497672133466072052.vrm",
+ "vroid/2/250197765428340922/250197765428340922.vrm",
+ "vroid/2/2508876686254270972/2508876686254270972.vrm",
+ "vroid/2/2515613415964928362/2515613415964928362.vrm",
+ "vroid/2/2518404641225278252/2518404641225278252.vrm",
+ "vroid/2/2518506652783260602/2518506652783260602.vrm",
+ "vroid/2/2527191658957860602/2527191658957860602.vrm",
+ "vroid/2/252721615184455762/252721615184455762.vrm",
+ "vroid/2/2533933388351725142/2533933388351725142.vrm",
+ "vroid/2/253500089699158942/253500089699158942.vrm",
+ "vroid/2/25377324358097192/25377324358097192.vrm",
+ "vroid/2/2544289657183712102/2544289657183712102.vrm",
+ "vroid/2/255185943514066252/255185943514066252.vrm",
+ "vroid/2/2557050557653955342/2557050557653955342.vrm",
+ "vroid/2/255779912685977022/255779912685977022.vrm",
+ "vroid/2/2562185340176823432/2562185340176823432.vrm",
+ "vroid/2/2577460917027827172/2577460917027827172.vrm",
+ "vroid/2/2580656835151788772/2580656835151788772.vrm",
+ "vroid/2/2584323255590418022/2584323255590418022.vrm",
+ "vroid/2/2595082417684813212/2595082417684813212.vrm",
+ "vroid/2/2595518782190390772/2595518782190390772.vrm",
+ "vroid/2/259565388981237582/259565388981237582.vrm",
+ "vroid/2/2596688598359026732/2596688598359026732.vrm",
+ "vroid/2/2600082016450561622/2600082016450561622.vrm",
+ "vroid/2/2600413665397807592/2600413665397807592.vrm",
+ "vroid/2/2601293953407105182/2601293953407105182.vrm",
+ "vroid/2/2602201507921337352/2602201507921337352.vrm",
+ "vroid/2/2604282846818303872/2604282846818303872.vrm",
+ "vroid/2/2605045568692096742/2605045568692096742.vrm",
+ "vroid/2/2608418729693350052/2608418729693350052.vrm",
+ "vroid/2/2612640450310948332/2612640450310948332.vrm",
+ "vroid/2/262629806074294522/262629806074294522.vrm",
+ "vroid/2/2628698222865354312/2628698222865354312.vrm",
+ "vroid/2/263738411747184382/263738411747184382.vrm",
+ "vroid/2/2640155594981957212/2640155594981957212.vrm",
+ "vroid/2/2646601932165959582/2646601932165959582.vrm",
+ "vroid/2/2649833030141553612/2649833030141553612.vrm",
+ "vroid/2/2651565557402789282/2651565557402789282.vrm",
+ "vroid/2/2656801322705739352/2656801322705739352.vrm",
+ "vroid/2/2658544303158784602/2658544303158784602.vrm",
+ "vroid/2/2659064432211870332/2659064432211870332.vrm",
+ "vroid/2/2660163059467836242/2660163059467836242.vrm",
+ "vroid/2/2660363650954301992/2660363650954301992.vrm",
+ "vroid/2/2672943271484762692/2672943271484762692.vrm",
+ "vroid/2/2691839397189024092/2691839397189024092.vrm",
+ "vroid/2/2699043018121883892/2699043018121883892.vrm",
+ "vroid/2/2699540574432895602/2699540574432895602.vrm",
+ "vroid/2/2703765365333054272/2703765365333054272.vrm",
+ "vroid/2/2715458165974974592/2715458165974974592.vrm",
+ "vroid/2/2735564432706549502/2735564432706549502.vrm",
+ "vroid/2/274008431446817732/274008431446817732.vrm",
+ "vroid/2/2748710214622461472/2748710214622461472.vrm",
+ "vroid/2/2751830752453072472/2751830752453072472.vrm",
+ "vroid/2/2754443209819987312/2754443209819987312.vrm",
+ "vroid/2/2762779297260194322/2762779297260194322.vrm",
+ "vroid/2/277394234064294662/277394234064294662.vrm",
+ "vroid/2/2775431071008255092/2775431071008255092.vrm",
+ "vroid/2/2775747553480491432/2775747553480491432.vrm",
+ "vroid/2/2780624868564419562/2780624868564419562.vrm",
+ "vroid/2/2781761904764300142/2781761904764300142.vrm",
+ "vroid/2/2787341911699833262/2787341911699833262.vrm",
+ "vroid/2/2788760468142871482/2788760468142871482.vrm",
+ "vroid/2/2788801838792348562/2788801838792348562.vrm",
+ "vroid/2/2793830142902597022/2793830142902597022.vrm",
+ "vroid/2/2812488015917186492/2812488015917186492.vrm",
+ "vroid/2/2817868232393558092/2817868232393558092.vrm",
+ "vroid/2/2824621868302274922/2824621868302274922.vrm",
+ "vroid/2/2833667053171616932/2833667053171616932.vrm",
+ "vroid/2/2840666635337762782/2840666635337762782.vrm",
+ "vroid/2/284395211979364962/284395211979364962.vrm",
+ "vroid/2/2846077957341649162/2846077957341649162.vrm",
+ "vroid/2/2857199654048629242/2857199654048629242.vrm",
+ "vroid/2/2859360223227588472/2859360223227588472.vrm",
+ "vroid/2/286197236240570072/286197236240570072.vrm",
+ "vroid/2/2864884157652151522/2864884157652151522.vrm",
+ "vroid/2/2867692098142819062/2867692098142819062.vrm",
+ "vroid/2/2868328380021340332/2868328380021340332.vrm",
+ "vroid/2/2883391233340004902/2883391233340004902.vrm",
+ "vroid/2/2894911163717608112/2894911163717608112.vrm",
+ "vroid/2/2896781016698752572/2896781016698752572.vrm",
+ "vroid/2/2898169452733875652/2898169452733875652.vrm",
+ "vroid/2/2899043180384090432/2899043180384090432.vrm",
+ "vroid/2/2901852025516493612/2901852025516493612.vrm",
+ "vroid/2/290867584957661592/290867584957661592.vrm",
+ "vroid/2/2910954713301165382/2910954713301165382.vrm",
+ "vroid/2/2911902517206322152/2911902517206322152.vrm",
+ "vroid/2/2922683892275444312/2922683892275444312.vrm",
+ "vroid/2/2928610714773728012/2928610714773728012.vrm",
+ "vroid/2/292893279581412592/292893279581412592.vrm",
+ "vroid/2/2935630532140297742/2935630532140297742.vrm",
+ "vroid/2/2950858215047039252/2950858215047039252.vrm",
+ "vroid/2/2973174452259214722/2973174452259214722.vrm",
+ "vroid/2/2981913236014364082/2981913236014364082.vrm",
+ "vroid/2/2989984812744789502/2989984812744789502.vrm",
+ "vroid/2/2991393834296826782/2991393834296826782.vrm",
+ "vroid/2/2991548871414310072/2991548871414310072.vrm",
+ "vroid/2/2995908331830868762/2995908331830868762.vrm",
+ "vroid/2/3007737362884307572/3007737362884307572.vrm",
+ "vroid/2/3010372225331029242/3010372225331029242.vrm",
+ "vroid/2/3011753058647032182/3011753058647032182.vrm",
+ "vroid/2/3014186933721700812/3014186933721700812.vrm",
+ "vroid/2/302047413754460742/302047413754460742.vrm",
+ "vroid/2/3020476224201510522/3020476224201510522.vrm",
+ "vroid/2/3026578617142804982/3026578617142804982.vrm",
+ "vroid/2/303571122519395572/303571122519395572.vrm",
+ "vroid/2/3042216413341293692/3042216413341293692.vrm",
+ "vroid/2/3042278862144288202/3042278862144288202.vrm",
+ "vroid/2/3051383117439063652/3051383117439063652.vrm",
+ "vroid/2/3051970609331355692/3051970609331355692.vrm",
+ "vroid/2/3059385373027143472/3059385373027143472.vrm",
+ "vroid/2/3060470529481827002/3060470529481827002.vrm",
+ "vroid/2/3067114970997452802/3067114970997452802.vrm",
+ "vroid/2/3074886997869843352/3074886997869843352.vrm",
+ "vroid/2/3084830209134099582/3084830209134099582.vrm",
+ "vroid/2/3084856549472808662/3084856549472808662.vrm",
+ "vroid/2/3117162008846844982/3117162008846844982.vrm",
+ "vroid/2/312440074879432282/312440074879432282.vrm",
+ "vroid/2/3125895076340973582/3125895076340973582.vrm",
+ "vroid/2/3129948041994511422/3129948041994511422.vrm",
+ "vroid/2/3141678491366924842/3141678491366924842.vrm",
+ "vroid/2/3142841151237817342/3142841151237817342.vrm",
+ "vroid/2/3154016548533978842/3154016548533978842.vrm",
+ "vroid/2/3154254432283287592/3154254432283287592.vrm",
+ "vroid/2/3175751570297863042/3175751570297863042.vrm",
+ "vroid/2/318927266290312882/318927266290312882.vrm",
+ "vroid/2/3195260392287282722/3195260392287282722.vrm",
+ "vroid/2/320047844533056742/320047844533056742.vrm",
+ "vroid/2/3212512770763774692/3212512770763774692.vrm",
+ "vroid/2/3215866441432602142/3215866441432602142.vrm",
+ "vroid/2/3227069832408497232/3227069832408497232.vrm",
+ "vroid/2/3241698566682350962/3241698566682350962.vrm",
+ "vroid/2/3252193062370523582/3252193062370523582.vrm",
+ "vroid/2/3254383844226874422/3254383844226874422.vrm",
+ "vroid/2/3289065806316125852/3289065806316125852.vrm",
+ "vroid/2/3315596700176484522/3315596700176484522.vrm",
+ "vroid/2/3320659143346840522/3320659143346840522.vrm",
+ "vroid/2/3326832283779486382/3326832283779486382.vrm",
+ "vroid/2/3331890870838318602/3331890870838318602.vrm",
+ "vroid/2/334952153970934562/334952153970934562.vrm",
+ "vroid/2/3361560827793155842/3361560827793155842.vrm",
+ "vroid/2/3361738975096649902/3361738975096649902.vrm",
+ "vroid/2/3361952480605675852/3361952480605675852.vrm",
+ "vroid/2/3371613557403409272/3371613557403409272.vrm",
+ "vroid/2/3374881481270467492/3374881481270467492.vrm",
+ "vroid/2/3383822645205997082/3383822645205997082.vrm",
+ "vroid/2/3384386998584881692/3384386998584881692.vrm",
+ "vroid/2/339720302394375012/339720302394375012.vrm",
+ "vroid/2/3398313485754661212/3398313485754661212.vrm",
+ "vroid/2/3398892359852095082/3398892359852095082.vrm",
+ "vroid/2/3406796445734959792/3406796445734959792.vrm",
+ "vroid/2/3411915311437763392/3411915311437763392.vrm",
+ "vroid/2/341229219249260062/341229219249260062.vrm",
+ "vroid/2/3417956562734087162/3417956562734087162.vrm",
+ "vroid/2/3422060565122330572/3422060565122330572.vrm",
+ "vroid/2/3422270282540029732/3422270282540029732.vrm",
+ "vroid/2/3423405179377533632/3423405179377533632.vrm",
+ "vroid/2/3430091746767211132/3430091746767211132.vrm",
+ "vroid/2/343712345541196082/343712345541196082.vrm",
+ "vroid/2/3438970435231027592/3438970435231027592.vrm",
+ "vroid/2/3446496590917567302/3446496590917567302.vrm",
+ "vroid/2/345530964811523372/345530964811523372.vrm",
+ "vroid/2/3458654217260499072/3458654217260499072.vrm",
+ "vroid/2/346212574683666112/346212574683666112.vrm",
+ "vroid/2/3467674422266496512/3467674422266496512.vrm",
+ "vroid/2/3468836247417891142/3468836247417891142.vrm",
+ "vroid/2/3474307973493084792/3474307973493084792.vrm",
+ "vroid/2/3485593427598862772/3485593427598862772.vrm",
+ "vroid/2/3488691670694418252/3488691670694418252.vrm",
+ "vroid/2/3492634749513498032/3492634749513498032.vrm",
+ "vroid/2/3509155013473841442/3509155013473841442.vrm",
+ "vroid/2/35114461466894952/35114461466894952.vrm",
+ "vroid/2/3511652536354576532/3511652536354576532.vrm",
+ "vroid/2/3513249495191246082/3513249495191246082.vrm",
+ "vroid/2/3536896668346387912/3536896668346387912.vrm",
+ "vroid/2/355030101065225622/355030101065225622.vrm",
+ "vroid/2/3553661623190236162/3553661623190236162.vrm",
+ "vroid/2/3558897802501051142/3558897802501051142.vrm",
+ "vroid/2/3560518805923687412/3560518805923687412.vrm",
+ "vroid/2/356901273747251832/356901273747251832.vrm",
+ "vroid/2/3572092017725981412/3572092017725981412.vrm",
+ "vroid/2/3573187218886546312/3573187218886546312.vrm",
+ "vroid/2/3578684916488743922/3578684916488743922.vrm",
+ "vroid/2/358418362623697102/358418362623697102.vrm",
+ "vroid/2/3584259713792915132/3584259713792915132.vrm",
+ "vroid/2/3596454445915136052/3596454445915136052.vrm",
+ "vroid/2/3596930480760905022/3596930480760905022.vrm",
+ "vroid/2/3604199546257090342/3604199546257090342.vrm",
+ "vroid/2/3606434015620076032/3606434015620076032.vrm",
+ "vroid/2/3609856943096327432/3609856943096327432.vrm",
+ "vroid/2/3612243526195493852/3612243526195493852.vrm",
+ "vroid/2/3633000978717992592/3633000978717992592.vrm",
+ "vroid/2/3650616125609963052/3650616125609963052.vrm",
+ "vroid/2/3650773268181865642/3650773268181865642.vrm",
+ "vroid/2/3657935578846223132/3657935578846223132.vrm",
+ "vroid/2/3671051426768008112/3671051426768008112.vrm",
+ "vroid/2/3671578795445943252/3671578795445943252.vrm",
+ "vroid/2/3673424039407095892/3673424039407095892.vrm",
+ "vroid/2/3674582357835639292/3674582357835639292.vrm",
+ "vroid/2/3678796080991474592/3678796080991474592.vrm",
+ "vroid/2/3681590364037504322/3681590364037504322.vrm",
+ "vroid/2/3687872943960472552/3687872943960472552.vrm",
+ "vroid/2/3688512539715076622/3688512539715076622.vrm",
+ "vroid/2/3703708443438255072/3703708443438255072.vrm",
+ "vroid/2/3708456344856391162/3708456344856391162.vrm",
+ "vroid/2/3720845440531286392/3720845440531286392.vrm",
+ "vroid/2/372814291372602902/372814291372602902.vrm",
+ "vroid/2/3736702224938149022/3736702224938149022.vrm",
+ "vroid/2/3740303402669683942/3740303402669683942.vrm",
+ "vroid/2/3750449084033035282/3750449084033035282.vrm",
+ "vroid/2/3752686847197649112/3752686847197649112.vrm",
+ "vroid/2/3761774964848349652/3761774964848349652.vrm",
+ "vroid/2/3769062481440933942/3769062481440933942.vrm",
+ "vroid/2/3772956412224632622/3772956412224632622.vrm",
+ "vroid/2/3776922714048637052/3776922714048637052.vrm",
+ "vroid/2/3777938291893109322/3777938291893109322.vrm",
+ "vroid/2/377983193593706462/377983193593706462.vrm",
+ "vroid/2/378469695762494932/378469695762494932.vrm",
+ "vroid/2/3787980362941243362/3787980362941243362.vrm",
+ "vroid/2/3790243492610960372/3790243492610960372.vrm",
+ "vroid/2/3806396256544251522/3806396256544251522.vrm",
+ "vroid/2/3811179467643340942/3811179467643340942.vrm",
+ "vroid/2/3813123671949683122/3813123671949683122.vrm",
+ "vroid/2/3814054640265963432/3814054640265963432.vrm",
+ "vroid/2/3817731981479809152/3817731981479809152.vrm",
+ "vroid/2/3818327287904270532/3818327287904270532.vrm",
+ "vroid/2/3820632001526997612/3820632001526997612.vrm",
+ "vroid/2/3822119815855584332/3822119815855584332.vrm",
+ "vroid/2/3825621828126009472/3825621828126009472.vrm",
+ "vroid/2/3830381993384589492/3830381993384589492.vrm",
+ "vroid/2/3842413169872837792/3842413169872837792.vrm",
+ "vroid/2/384659604457105962/384659604457105962.vrm",
+ "vroid/2/384682106441658012/384682106441658012.vrm",
+ "vroid/2/3847993790300128552/3847993790300128552.vrm",
+ "vroid/2/3858648399710246282/3858648399710246282.vrm",
+ "vroid/2/3859180227158276112/3859180227158276112.vrm",
+ "vroid/2/3859638009390151932/3859638009390151932.vrm",
+ "vroid/2/3860225451514909512/3860225451514909512.vrm",
+ "vroid/2/3867111405362911542/3867111405362911542.vrm",
+ "vroid/2/3873529460151158622/3873529460151158622.vrm",
+ "vroid/2/3890149047199706732/3890149047199706732.vrm",
+ "vroid/2/3893593173431901592/3893593173431901592.vrm",
+ "vroid/2/3894375096724258462/3894375096724258462.vrm",
+ "vroid/2/3896690311597889932/3896690311597889932.vrm",
+ "vroid/2/3901075757987385912/3901075757987385912.vrm",
+ "vroid/2/3902295136748791102/3902295136748791102.vrm",
+ "vroid/2/3903513155035561412/3903513155035561412.vrm",
+ "vroid/2/3906223403099240902/3906223403099240902.vrm",
+ "vroid/2/3906538436258916502/3906538436258916502.vrm",
+ "vroid/2/3908043431880167762/3908043431880167762.vrm",
+ "vroid/2/3913377050439188122/3913377050439188122.vrm",
+ "vroid/2/3927338852366760712/3927338852366760712.vrm",
+ "vroid/2/3933283683540942262/3933283683540942262.vrm",
+ "vroid/2/3934598381966407802/3934598381966407802.vrm",
+ "vroid/2/3938418644320491122/3938418644320491122.vrm",
+ "vroid/2/3942998026928469972/3942998026928469972.vrm",
+ "vroid/2/3950414239048342012/3950414239048342012.vrm",
+ "vroid/2/3950416373773321952/3950416373773321952.vrm",
+ "vroid/2/3953844180794282162/3953844180794282162.vrm",
+ "vroid/2/3966878440602377412/3966878440602377412.vrm",
+ "vroid/2/3983298311888828662/3983298311888828662.vrm",
+ "vroid/2/398860727436114532/398860727436114532.vrm",
+ "vroid/2/3989684540884810712/3989684540884810712.vrm",
+ "vroid/2/3995065093935185032/3995065093935185032.vrm",
+ "vroid/2/3999869022383286702/3999869022383286702.vrm",
+ "vroid/2/4001162908777714592/4001162908777714592.vrm",
+ "vroid/2/4011064383964041852/4011064383964041852.vrm",
+ "vroid/2/4013228210912311942/4013228210912311942.vrm",
+ "vroid/2/4015249093643561392/4015249093643561392.vrm",
+ "vroid/2/4024387838460407432/4024387838460407432.vrm",
+ "vroid/2/402648680457781162/402648680457781162.vrm",
+ "vroid/2/4031682617126197662/4031682617126197662.vrm",
+ "vroid/2/4036652283010283462/4036652283010283462.vrm",
+ "vroid/2/4060807068226685052/4060807068226685052.vrm",
+ "vroid/2/4063222076047109752/4063222076047109752.vrm",
+ "vroid/2/4066774337278355122/4066774337278355122.vrm",
+ "vroid/2/4068702375678266052/4068702375678266052.vrm",
+ "vroid/2/4083530246457195262/4083530246457195262.vrm",
+ "vroid/2/4094556924028541982/4094556924028541982.vrm",
+ "vroid/2/4111823667322466122/4111823667322466122.vrm",
+ "vroid/2/4112959931130261732/4112959931130261732.vrm",
+ "vroid/2/4118099537374659252/4118099537374659252.vrm",
+ "vroid/2/4133281825102763502/4133281825102763502.vrm",
+ "vroid/2/4135094750493348702/4135094750493348702.vrm",
+ "vroid/2/4138987970002184432/4138987970002184432.vrm",
+ "vroid/2/4143039283540666892/4143039283540666892.vrm",
+ "vroid/2/4160934510205293282/4160934510205293282.vrm",
+ "vroid/2/4167521460305639642/4167521460305639642.vrm",
+ "vroid/2/4191699909477366082/4191699909477366082.vrm",
+ "vroid/2/4212829917140869472/4212829917140869472.vrm",
+ "vroid/2/4213225392696186962/4213225392696186962.vrm",
+ "vroid/2/4214732845929290182/4214732845929290182.vrm",
+ "vroid/2/4234733289692520292/4234733289692520292.vrm",
+ "vroid/2/4241220429075608092/4241220429075608092.vrm",
+ "vroid/2/4248693116586578632/4248693116586578632.vrm",
+ "vroid/2/4255629802141595722/4255629802141595722.vrm",
+ "vroid/2/4266902425398243022/4266902425398243022.vrm",
+ "vroid/2/4270847070875766952/4270847070875766952.vrm",
+ "vroid/2/4276529726596124622/4276529726596124622.vrm",
+ "vroid/2/4276618802626941282/4276618802626941282.vrm",
+ "vroid/2/4280292229247255312/4280292229247255312.vrm",
+ "vroid/2/4284894537432185732/4284894537432185732.vrm",
+ "vroid/2/4299184539624499842/4299184539624499842.vrm",
+ "vroid/2/429996508147870862/429996508147870862.vrm",
+ "vroid/2/4303009138630675952/4303009138630675952.vrm",
+ "vroid/2/4306981254480921172/4306981254480921172.vrm",
+ "vroid/2/4307695340761397762/4307695340761397762.vrm",
+ "vroid/2/4311611041152127582/4311611041152127582.vrm",
+ "vroid/2/4313346611214057212/4313346611214057212.vrm",
+ "vroid/2/431713865646106522/431713865646106522.vrm",
+ "vroid/2/4318492895490716572/4318492895490716572.vrm",
+ "vroid/2/4330399485866046392/4330399485866046392.vrm",
+ "vroid/2/4335511747546821672/4335511747546821672.vrm",
+ "vroid/2/4353627768647147952/4353627768647147952.vrm",
+ "vroid/2/4357308778576060732/4357308778576060732.vrm",
+ "vroid/2/4363313336577191702/4363313336577191702.vrm",
+ "vroid/2/4363441707918566902/4363441707918566902.vrm",
+ "vroid/2/4368545358566996132/4368545358566996132.vrm",
+ "vroid/2/4371351687457744782/4371351687457744782.vrm",
+ "vroid/2/4376469645858959802/4376469645858959802.vrm",
+ "vroid/2/4382303856103217892/4382303856103217892.vrm",
+ "vroid/2/4392402144170594282/4392402144170594282.vrm",
+ "vroid/2/4394701110055791062/4394701110055791062.vrm",
+ "vroid/2/439542171618443362/439542171618443362.vrm",
+ "vroid/2/4405982025368774722/4405982025368774722.vrm",
+ "vroid/2/4406466244032977282/4406466244032977282.vrm",
+ "vroid/2/4407954046739923332/4407954046739923332.vrm",
+ "vroid/2/4419704796134436862/4419704796134436862.vrm",
+ "vroid/2/4424141487789832022/4424141487789832022.vrm",
+ "vroid/2/4436706706077304612/4436706706077304612.vrm",
+ "vroid/2/4438122947900743932/4438122947900743932.vrm",
+ "vroid/2/4445379260543877842/4445379260543877842.vrm",
+ "vroid/2/4450680424595183712/4450680424595183712.vrm",
+ "vroid/2/4454977152945104972/4454977152945104972.vrm",
+ "vroid/2/4456112358993066812/4456112358993066812.vrm",
+ "vroid/2/4461446014363062792/4461446014363062792.vrm",
+ "vroid/2/4470527938291752382/4470527938291752382.vrm",
+ "vroid/2/4480977428454133032/4480977428454133032.vrm",
+ "vroid/2/4487002549221038932/4487002549221038932.vrm",
+ "vroid/2/4490007555013437472/4490007555013437472.vrm",
+ "vroid/2/4500342379178992942/4500342379178992942.vrm",
+ "vroid/2/4503625247978368672/4503625247978368672.vrm",
+ "vroid/2/4513525546695857362/4513525546695857362.vrm",
+ "vroid/2/4518729813653393582/4518729813653393582.vrm",
+ "vroid/2/4522534537199722612/4522534537199722612.vrm",
+ "vroid/2/4523481834360071652/4523481834360071652.vrm",
+ "vroid/2/4523650756064879772/4523650756064879772.vrm",
+ "vroid/2/4531395430432983332/4531395430432983332.vrm",
+ "vroid/2/4531735942934334672/4531735942934334672.vrm",
+ "vroid/2/453214551745758712/453214551745758712.vrm",
+ "vroid/2/4548175043937280522/4548175043937280522.vrm",
+ "vroid/2/455093405321602532/455093405321602532.vrm",
+ "vroid/2/4551500513185396552/4551500513185396552.vrm",
+ "vroid/2/4552130133326244512/4552130133326244512.vrm",
+ "vroid/2/4564470594450545832/4564470594450545832.vrm",
+ "vroid/2/4566331182280296972/4566331182280296972.vrm",
+ "vroid/2/4567281008169214002/4567281008169214002.vrm",
+ "vroid/2/4578532745544698252/4578532745544698252.vrm",
+ "vroid/2/457872302150102492/457872302150102492.vrm",
+ "vroid/2/4582452456001474792/4582452456001474792.vrm",
+ "vroid/2/4592051014091224802/4592051014091224802.vrm",
+ "vroid/2/459364084821263792/459364084821263792.vrm",
+ "vroid/2/4595481744798114512/4595481744798114512.vrm",
+ "vroid/2/4615248582158324122/4615248582158324122.vrm",
+ "vroid/2/4615447451218854292/4615447451218854292.vrm",
+ "vroid/2/4619398241055342002/4619398241055342002.vrm",
+ "vroid/2/4619815427349423792/4619815427349423792.vrm",
+ "vroid/2/4625225937024183182/4625225937024183182.vrm",
+ "vroid/2/462745939168556072/462745939168556072.vrm",
+ "vroid/2/4630330657053452082/4630330657053452082.vrm",
+ "vroid/2/4633186250997272232/4633186250997272232.vrm",
+ "vroid/2/4641927669288369512/4641927669288369512.vrm",
+ "vroid/2/4642201604365203782/4642201604365203782.vrm",
+ "vroid/2/4656027031299733692/4656027031299733692.vrm",
+ "vroid/2/4658786108981502102/4658786108981502102.vrm",
+ "vroid/2/4659341338197699332/4659341338197699332.vrm",
+ "vroid/2/4660044915035045172/4660044915035045172.vrm",
+ "vroid/2/4665767980166602652/4665767980166602652.vrm",
+ "vroid/2/4668464156383159982/4668464156383159982.vrm",
+ "vroid/2/4681818785189935902/4681818785189935902.vrm",
+ "vroid/2/469576624933086052/469576624933086052.vrm",
+ "vroid/2/4700177343135736122/4700177343135736122.vrm",
+ "vroid/2/470377292550674002/470377292550674002.vrm",
+ "vroid/2/4704627153761786482/4704627153761786482.vrm",
+ "vroid/2/4709008853900793222/4709008853900793222.vrm",
+ "vroid/2/4716458025379930912/4716458025379930912.vrm",
+ "vroid/2/4717877532956708232/4717877532956708232.vrm",
+ "vroid/2/4725647638277096382/4725647638277096382.vrm",
+ "vroid/2/4739489777538469062/4739489777538469062.vrm",
+ "vroid/2/4756461375945957302/4756461375945957302.vrm",
+ "vroid/2/4759221590436310902/4759221590436310902.vrm",
+ "vroid/2/4764291500099860702/4764291500099860702.vrm",
+ "vroid/2/4769742243183930282/4769742243183930282.vrm",
+ "vroid/2/4774745053400346812/4774745053400346812.vrm",
+ "vroid/2/4781335451428744942/4781335451428744942.vrm",
+ "vroid/2/4790934918684826912/4790934918684826912.vrm",
+ "vroid/2/4802428519434131022/4802428519434131022.vrm",
+ "vroid/2/4809775450270578102/4809775450270578102.vrm",
+ "vroid/2/4810680866246101072/4810680866246101072.vrm",
+ "vroid/2/4810786262266688672/4810786262266688672.vrm",
+ "vroid/2/4811073942896883392/4811073942896883392.vrm",
+ "vroid/2/4813015553977729402/4813015553977729402.vrm",
+ "vroid/2/4819588958666962552/4819588958666962552.vrm",
+ "vroid/2/4823889503478064612/4823889503478064612.vrm",
+ "vroid/2/4824326200103222702/4824326200103222702.vrm",
+ "vroid/2/4825808665168901772/4825808665168901772.vrm",
+ "vroid/2/4834006063137050692/4834006063137050692.vrm",
+ "vroid/2/483701758467973032/483701758467973032.vrm",
+ "vroid/2/48373735174037732/48373735174037732.vrm",
+ "vroid/2/4845725297462474492/4845725297462474492.vrm",
+ "vroid/2/4846585125076429152/4846585125076429152.vrm",
+ "vroid/2/4853430112364518172/4853430112364518172.vrm",
+ "vroid/2/4862453003268757112/4862453003268757112.vrm",
+ "vroid/2/4864878385507622642/4864878385507622642.vrm",
+ "vroid/2/4866872901819085652/4866872901819085652.vrm",
+ "vroid/2/4875192472731275382/4875192472731275382.vrm",
+ "vroid/2/4875391990883183642/4875391990883183642.vrm",
+ "vroid/2/4880286773680336632/4880286773680336632.vrm",
+ "vroid/2/48806118069599122/48806118069599122.vrm",
+ "vroid/2/4884461931699427272/4884461931699427272.vrm",
+ "vroid/2/4888978989525463772/4888978989525463772.vrm",
+ "vroid/2/4893907081589652822/4893907081589652822.vrm",
+ "vroid/2/4896612472949561592/4896612472949561592.vrm",
+ "vroid/2/4912062288730140912/4912062288730140912.vrm",
+ "vroid/2/4918514641727903092/4918514641727903092.vrm",
+ "vroid/2/4921719778543797742/4921719778543797742.vrm",
+ "vroid/2/4926989997144177842/4926989997144177842.vrm",
+ "vroid/2/4933398581565446662/4933398581565446662.vrm",
+ "vroid/2/4935768397542009742/4935768397542009742.vrm",
+ "vroid/2/4938617892845474462/4938617892845474462.vrm",
+ "vroid/2/4945661283581963932/4945661283581963932.vrm",
+ "vroid/2/4946373600119166322/4946373600119166322.vrm",
+ "vroid/2/4950003360267116722/4950003360267116722.vrm",
+ "vroid/2/4950319200068700502/4950319200068700502.vrm",
+ "vroid/2/4952838935961765562/4952838935961765562.vrm",
+ "vroid/2/495388339999822422/495388339999822422.vrm",
+ "vroid/2/4968698081856791512/4968698081856791512.vrm",
+ "vroid/2/4977460070548850792/4977460070548850792.vrm",
+ "vroid/2/4980685568250817012/4980685568250817012.vrm",
+ "vroid/2/4981644868190999182/4981644868190999182.vrm",
+ "vroid/2/4983511911639454242/4983511911639454242.vrm",
+ "vroid/2/4991506006748497432/4991506006748497432.vrm",
+ "vroid/2/4991623945989355392/4991623945989355392.vrm",
+ "vroid/2/4994256342608708922/4994256342608708922.vrm",
+ "vroid/2/4997619940273737562/4997619940273737562.vrm",
+ "vroid/2/4999733780350751742/4999733780350751742.vrm",
+ "vroid/2/5001054282873561112/5001054282873561112.vrm",
+ "vroid/2/5001060709904160772/5001060709904160772.vrm",
+ "vroid/2/5028910112597032412/5028910112597032412.vrm",
+ "vroid/2/5033392823834002662/5033392823834002662.vrm",
+ "vroid/2/5045835748157545072/5045835748157545072.vrm",
+ "vroid/2/5050123600001026332/5050123600001026332.vrm",
+ "vroid/2/5051517678034413882/5051517678034413882.vrm",
+ "vroid/2/5055337112494986792/5055337112494986792.vrm",
+ "vroid/2/5068469337487318602/5068469337487318602.vrm",
+ "vroid/2/5076950223217633542/5076950223217633542.vrm",
+ "vroid/2/5085628327576700452/5085628327576700452.vrm",
+ "vroid/2/5090829931256376422/5090829931256376422.vrm",
+ "vroid/2/5092038375623347002/5092038375623347002.vrm",
+ "vroid/2/5094428986219464022/5094428986219464022.vrm",
+ "vroid/2/5097801508757047822/5097801508757047822.vrm",
+ "vroid/2/5105970442481665412/5105970442481665412.vrm",
+ "vroid/2/5108236314953630432/5108236314953630432.vrm",
+ "vroid/2/5123353172124589532/5123353172124589532.vrm",
+ "vroid/2/5125181652687549612/5125181652687549612.vrm",
+ "vroid/2/5125209894822119442/5125209894822119442.vrm",
+ "vroid/2/5128663418340512942/5128663418340512942.vrm",
+ "vroid/2/5145783656574689762/5145783656574689762.vrm",
+ "vroid/2/5156647180364061482/5156647180364061482.vrm",
+ "vroid/2/5161260273641014352/5161260273641014352.vrm",
+ "vroid/2/5162790751283987642/5162790751283987642.vrm",
+ "vroid/2/5169376288869386002/5169376288869386002.vrm",
+ "vroid/2/5175281955406061442/5175281955406061442.vrm",
+ "vroid/2/5181119608253271122/5181119608253271122.vrm",
+ "vroid/2/5182478843488378582/5182478843488378582.vrm",
+ "vroid/2/5187945649606965662/5187945649606965662.vrm",
+ "vroid/2/5194811287508650762/5194811287508650762.vrm",
+ "vroid/2/5203782285670109022/5203782285670109022.vrm",
+ "vroid/2/5229998744049876762/5229998744049876762.vrm",
+ "vroid/2/5235255465312006542/5235255465312006542.vrm",
+ "vroid/2/5243993199717884992/5243993199717884992.vrm",
+ "vroid/2/5245073057752601772/5245073057752601772.vrm",
+ "vroid/2/5248433742040134132/5248433742040134132.vrm",
+ "vroid/2/5250613927498898502/5250613927498898502.vrm",
+ "vroid/2/5253076993699193672/5253076993699193672.vrm",
+ "vroid/2/5260472805323374692/5260472805323374692.vrm",
+ "vroid/2/5271287692064896432/5271287692064896432.vrm",
+ "vroid/2/528178839169720472/528178839169720472.vrm",
+ "vroid/2/5285613892080024152/5285613892080024152.vrm",
+ "vroid/2/5286381679835544772/5286381679835544772.vrm",
+ "vroid/2/529119099527257202/529119099527257202.vrm",
+ "vroid/2/5295946555641360982/5295946555641360982.vrm",
+ "vroid/2/530571703733657022/530571703733657022.vrm",
+ "vroid/2/5307077447658239052/5307077447658239052.vrm",
+ "vroid/2/531571040152404652/531571040152404652.vrm",
+ "vroid/2/5328572470088799602/5328572470088799602.vrm",
+ "vroid/2/5334148182589045222/5334148182589045222.vrm",
+ "vroid/2/5338502896772309382/5338502896772309382.vrm",
+ "vroid/2/5342606075560991762/5342606075560991762.vrm",
+ "vroid/2/5343270268749733822/5343270268749733822.vrm",
+ "vroid/2/5358749276939748122/5358749276939748122.vrm",
+ "vroid/2/5358828308239020162/5358828308239020162.vrm",
+ "vroid/2/5359320933588529322/5359320933588529322.vrm",
+ "vroid/2/5363921307373162102/5363921307373162102.vrm",
+ "vroid/2/5365192667708659942/5365192667708659942.vrm",
+ "vroid/2/5368405701543666132/5368405701543666132.vrm",
+ "vroid/2/5384196607048909632/5384196607048909632.vrm",
+ "vroid/2/5384809341261906662/5384809341261906662.vrm",
+ "vroid/2/5387382413140929502/5387382413140929502.vrm",
+ "vroid/2/5393399010551384902/5393399010551384902.vrm",
+ "vroid/2/5396219174677320232/5396219174677320232.vrm",
+ "vroid/2/5399738367594727102/5399738367594727102.vrm",
+ "vroid/2/5406489232460459822/5406489232460459822.vrm",
+ "vroid/2/5408195517211826802/5408195517211826802.vrm",
+ "vroid/2/5428215960990167752/5428215960990167752.vrm",
+ "vroid/2/543089652284491762/543089652284491762.vrm",
+ "vroid/2/5453440707808618372/5453440707808618372.vrm",
+ "vroid/2/5459291555144339262/5459291555144339262.vrm",
+ "vroid/2/5468062136351356862/5468062136351356862.vrm",
+ "vroid/2/5470082269316222592/5470082269316222592.vrm",
+ "vroid/2/5477070035742931472/5477070035742931472.vrm",
+ "vroid/2/5482227222870499762/5482227222870499762.vrm",
+ "vroid/2/5482939411046888152/5482939411046888152.vrm",
+ "vroid/2/5489060948691966612/5489060948691966612.vrm",
+ "vroid/2/5490096827765287172/5490096827765287172.vrm",
+ "vroid/2/5494328499297897752/5494328499297897752.vrm",
+ "vroid/2/5497934617165205182/5497934617165205182.vrm",
+ "vroid/2/550235301681966092/550235301681966092.vrm",
+ "vroid/2/5505467480227107372/5505467480227107372.vrm",
+ "vroid/2/5513372799820378112/5513372799820378112.vrm",
+ "vroid/2/5517514554288168232/5517514554288168232.vrm",
+ "vroid/2/5525279584172639862/5525279584172639862.vrm",
+ "vroid/2/5535606130966593992/5535606130966593992.vrm",
+ "vroid/2/5537801437198417302/5537801437198417302.vrm",
+ "vroid/2/5538248279979578662/5538248279979578662.vrm",
+ "vroid/2/5542029714720682222/5542029714720682222.vrm",
+ "vroid/2/5542034089453320292/5542034089453320292.vrm",
+ "vroid/2/5545655870938777262/5545655870938777262.vrm",
+ "vroid/2/5554820826471298982/5554820826471298982.vrm",
+ "vroid/2/5556663993885133442/5556663993885133442.vrm",
+ "vroid/2/5561431002238379672/5561431002238379672.vrm",
+ "vroid/2/557734212481311412/557734212481311412.vrm",
+ "vroid/2/5579811459889406392/5579811459889406392.vrm",
+ "vroid/2/5581846018284472232/5581846018284472232.vrm",
+ "vroid/2/5594867180276542542/5594867180276542542.vrm",
+ "vroid/2/5602655209095887152/5602655209095887152.vrm",
+ "vroid/2/5606576375583840922/5606576375583840922.vrm",
+ "vroid/2/56092664529491892/56092664529491892.vrm",
+ "vroid/2/5609957671146107062/5609957671146107062.vrm",
+ "vroid/2/5634565105774328162/5634565105774328162.vrm",
+ "vroid/2/5637870368674562282/5637870368674562282.vrm",
+ "vroid/2/5638111985472494222/5638111985472494222.vrm",
+ "vroid/2/5638452109534673112/5638452109534673112.vrm",
+ "vroid/2/565076865147881002/565076865147881002.vrm",
+ "vroid/2/5650817543803294882/5650817543803294882.vrm",
+ "vroid/2/5651571978018196192/5651571978018196192.vrm",
+ "vroid/2/5651844810291349372/5651844810291349372.vrm",
+ "vroid/2/5656950874195901872/5656950874195901872.vrm",
+ "vroid/2/5666086802860575762/5666086802860575762.vrm",
+ "vroid/2/5669673979520114392/5669673979520114392.vrm",
+ "vroid/2/5671376004991695122/5671376004991695122.vrm",
+ "vroid/2/5672423688464444862/5672423688464444862.vrm",
+ "vroid/2/5679884278952881822/5679884278952881822.vrm",
+ "vroid/2/5680462154393945962/5680462154393945962.vrm",
+ "vroid/2/5688972539124480262/5688972539124480262.vrm",
+ "vroid/2/5705496783779132932/5705496783779132932.vrm",
+ "vroid/2/5708305310643015612/5708305310643015612.vrm",
+ "vroid/2/5716547936123925682/5716547936123925682.vrm",
+ "vroid/2/5721112656327594582/5721112656327594582.vrm",
+ "vroid/2/572152403748192702/572152403748192702.vrm",
+ "vroid/2/5722823129187572522/5722823129187572522.vrm",
+ "vroid/2/572682879212580382/572682879212580382.vrm",
+ "vroid/2/5730363034644772862/5730363034644772862.vrm",
+ "vroid/2/5735140442319700032/5735140442319700032.vrm",
+ "vroid/2/5735204273530887482/5735204273530887482.vrm",
+ "vroid/2/5738034821558651092/5738034821558651092.vrm",
+ "vroid/2/574020948268347522/574020948268347522.vrm",
+ "vroid/2/5743659880473480702/5743659880473480702.vrm",
+ "vroid/2/5745292717480303942/5745292717480303942.vrm",
+ "vroid/2/5751150692719069372/5751150692719069372.vrm",
+ "vroid/2/5753123808320641332/5753123808320641332.vrm",
+ "vroid/2/5756987274421722932/5756987274421722932.vrm",
+ "vroid/2/5765801713183035702/5765801713183035702.vrm",
+ "vroid/2/5767347561178683462/5767347561178683462.vrm",
+ "vroid/2/5769309001698910792/5769309001698910792.vrm",
+ "vroid/2/5777106476947864172/5777106476947864172.vrm",
+ "vroid/2/5781043753764977842/5781043753764977842.vrm",
+ "vroid/2/5789366557962814632/5789366557962814632.vrm",
+ "vroid/2/5792082248553311162/5792082248553311162.vrm",
+ "vroid/2/5801155583447752902/5801155583447752902.vrm",
+ "vroid/2/5812908027255165172/5812908027255165172.vrm",
+ "vroid/2/5823655032615875612/5823655032615875612.vrm",
+ "vroid/2/5825641224994083472/5825641224994083472.vrm",
+ "vroid/2/5829433524669364732/5829433524669364732.vrm",
+ "vroid/2/5833252606831232972/5833252606831232972.vrm",
+ "vroid/2/5835894938248970422/5835894938248970422.vrm",
+ "vroid/2/584243721948236092/584243721948236092.vrm",
+ "vroid/2/5888237055865353702/5888237055865353702.vrm",
+ "vroid/2/5888275937070829592/5888275937070829592.vrm",
+ "vroid/2/5896514182903533642/5896514182903533642.vrm",
+ "vroid/2/5903891121090469772/5903891121090469772.vrm",
+ "vroid/2/5911943353778184372/5911943353778184372.vrm",
+ "vroid/2/5921765100853424262/5921765100853424262.vrm",
+ "vroid/2/5932644430724991692/5932644430724991692.vrm",
+ "vroid/2/593269312405780082/593269312405780082.vrm",
+ "vroid/2/5937178188505943322/5937178188505943322.vrm",
+ "vroid/2/5942767694006351882/5942767694006351882.vrm",
+ "vroid/2/5954511009498076152/5954511009498076152.vrm",
+ "vroid/2/5954800965537759402/5954800965537759402.vrm",
+ "vroid/2/5961960337027763802/5961960337027763802.vrm",
+ "vroid/2/5967892718188472252/5967892718188472252.vrm",
+ "vroid/2/5998713863691153332/5998713863691153332.vrm",
+ "vroid/2/6007709302915143982/6007709302915143982.vrm",
+ "vroid/2/6013393559398322172/6013393559398322172.vrm",
+ "vroid/2/6014394015862468112/6014394015862468112.vrm",
+ "vroid/2/6037079455243663552/6037079455243663552.vrm",
+ "vroid/2/6063035646940764772/6063035646940764772.vrm",
+ "vroid/2/6066991611797097412/6066991611797097412.vrm",
+ "vroid/2/6071463041771355532/6071463041771355532.vrm",
+ "vroid/2/6074270909926186272/6074270909926186272.vrm",
+ "vroid/2/6079258846876013002/6079258846876013002.vrm",
+ "vroid/2/6085639806438199632/6085639806438199632.vrm",
+ "vroid/2/6088675063298978402/6088675063298978402.vrm",
+ "vroid/2/6093224344820427462/6093224344820427462.vrm",
+ "vroid/2/6096448856486430472/6096448856486430472.vrm",
+ "vroid/2/6100564161352433372/6100564161352433372.vrm",
+ "vroid/2/6102449611523792972/6102449611523792972.vrm",
+ "vroid/2/6102703971870329322/6102703971870329322.vrm",
+ "vroid/2/6112503679003207952/6112503679003207952.vrm",
+ "vroid/2/6115639441090208852/6115639441090208852.vrm",
+ "vroid/2/6146653747929837122/6146653747929837122.vrm",
+ "vroid/2/6151963903067616952/6151963903067616952.vrm",
+ "vroid/2/6152540728628574462/6152540728628574462.vrm",
+ "vroid/2/6157169189286300642/6157169189286300642.vrm",
+ "vroid/2/6170776114896768792/6170776114896768792.vrm",
+ "vroid/2/6177607916161607002/6177607916161607002.vrm",
+ "vroid/2/617826651123151952/617826651123151952.vrm",
+ "vroid/2/6178757452338375272/6178757452338375272.vrm",
+ "vroid/2/6182012990462426922/6182012990462426922.vrm",
+ "vroid/2/61852856952798292/61852856952798292.vrm",
+ "vroid/2/62134075074990212/62134075074990212.vrm",
+ "vroid/2/6213435874224186662/6213435874224186662.vrm",
+ "vroid/2/6213580497061254232/6213580497061254232.vrm",
+ "vroid/2/6246540026080971552/6246540026080971552.vrm",
+ "vroid/2/6256513592585992142/6256513592585992142.vrm",
+ "vroid/2/6259376098295917222/6259376098295917222.vrm",
+ "vroid/2/6259465237382403862/6259465237382403862.vrm",
+ "vroid/2/6260199844620222502/6260199844620222502.vrm",
+ "vroid/2/6262833680036717772/6262833680036717772.vrm",
+ "vroid/2/6267472578381549682/6267472578381549682.vrm",
+ "vroid/2/6271718707155780762/6271718707155780762.vrm",
+ "vroid/2/6275408169799441612/6275408169799441612.vrm",
+ "vroid/2/6276456162474508112/6276456162474508112.vrm",
+ "vroid/2/6302356560318037282/6302356560318037282.vrm",
+ "vroid/2/6302505551505574612/6302505551505574612.vrm",
+ "vroid/2/6302742622923994562/6302742622923994562.vrm",
+ "vroid/2/6310013336435142122/6310013336435142122.vrm",
+ "vroid/2/6318940155021448332/6318940155021448332.vrm",
+ "vroid/2/6325573534929159502/6325573534929159502.vrm",
+ "vroid/2/6327605299194554072/6327605299194554072.vrm",
+ "vroid/2/6328984370391386842/6328984370391386842.vrm",
+ "vroid/2/6336483251238202602/6336483251238202602.vrm",
+ "vroid/2/6341340029354008602/6341340029354008602.vrm",
+ "vroid/2/6352715204548992022/6352715204548992022.vrm",
+ "vroid/2/6360990702850738382/6360990702850738382.vrm",
+ "vroid/2/6366796272648937732/6366796272648937732.vrm",
+ "vroid/2/6368603163615793792/6368603163615793792.vrm",
+ "vroid/2/6372401895301752782/6372401895301752782.vrm",
+ "vroid/2/6374088771219136692/6374088771219136692.vrm",
+ "vroid/2/6380832707188530972/6380832707188530972.vrm",
+ "vroid/2/6393406335313104462/6393406335313104462.vrm",
+ "vroid/2/639622968775020772/639622968775020772.vrm",
+ "vroid/2/6404472160994339352/6404472160994339352.vrm",
+ "vroid/2/640844777310294452/640844777310294452.vrm",
+ "vroid/2/6432795723413871602/6432795723413871602.vrm",
+ "vroid/2/6435575656720534922/6435575656720534922.vrm",
+ "vroid/2/6435924794891109422/6435924794891109422.vrm",
+ "vroid/2/6438391937465666012/6438391937465666012.vrm",
+ "vroid/2/6440210420953702632/6440210420953702632.vrm",
+ "vroid/2/6442297820900808472/6442297820900808472.vrm",
+ "vroid/2/6444779654406967872/6444779654406967872.vrm",
+ "vroid/2/6457923455158921712/6457923455158921712.vrm",
+ "vroid/2/6460363331023334092/6460363331023334092.vrm",
+ "vroid/2/6471228000569636242/6471228000569636242.vrm",
+ "vroid/2/6477322036975819022/6477322036975819022.vrm",
+ "vroid/2/6477773639857674732/6477773639857674732.vrm",
+ "vroid/2/6480853691732312542/6480853691732312542.vrm",
+ "vroid/2/6488401324921287272/6488401324921287272.vrm",
+ "vroid/2/6489885688909888212/6489885688909888212.vrm",
+ "vroid/2/6490165080348621852/6490165080348621852.vrm",
+ "vroid/2/6490546615782832782/6490546615782832782.vrm",
+ "vroid/2/6501811019124929022/6501811019124929022.vrm",
+ "vroid/2/651844743281046872/651844743281046872.vrm",
+ "vroid/2/6521802055790698352/6521802055790698352.vrm",
+ "vroid/2/6526725883123964832/6526725883123964832.vrm",
+ "vroid/2/6534563580070628532/6534563580070628532.vrm",
+ "vroid/2/6536513027240767392/6536513027240767392.vrm",
+ "vroid/2/654619936389571332/654619936389571332.vrm",
+ "vroid/2/6552881581847756932/6552881581847756932.vrm",
+ "vroid/2/6556395144492779672/6556395144492779672.vrm",
+ "vroid/2/6564024493448091662/6564024493448091662.vrm",
+ "vroid/2/6567653482708784962/6567653482708784962.vrm",
+ "vroid/2/6581675740965803262/6581675740965803262.vrm",
+ "vroid/2/6583730167148858162/6583730167148858162.vrm",
+ "vroid/2/6584912611613350952/6584912611613350952.vrm",
+ "vroid/2/6585403326348018412/6585403326348018412.vrm",
+ "vroid/2/6586122400121045882/6586122400121045882.vrm",
+ "vroid/2/6616378070566279432/6616378070566279432.vrm",
+ "vroid/2/6617574843151473382/6617574843151473382.vrm",
+ "vroid/2/6617763557115899272/6617763557115899272.vrm",
+ "vroid/2/6623635364083317122/6623635364083317122.vrm",
+ "vroid/2/6632844840708282822/6632844840708282822.vrm",
+ "vroid/2/6633695253230349552/6633695253230349552.vrm",
+ "vroid/2/6637359894546940232/6637359894546940232.vrm",
+ "vroid/2/6638281238689435932/6638281238689435932.vrm",
+ "vroid/2/664338643257928792/664338643257928792.vrm",
+ "vroid/2/6644367134279721672/6644367134279721672.vrm",
+ "vroid/2/6650937494358500132/6650937494358500132.vrm",
+ "vroid/2/6651484967025863202/6651484967025863202.vrm",
+ "vroid/2/6673112516343973842/6673112516343973842.vrm",
+ "vroid/2/6687798513594630702/6687798513594630702.vrm",
+ "vroid/2/6697946127959962002/6697946127959962002.vrm",
+ "vroid/2/6718698961891920252/6718698961891920252.vrm",
+ "vroid/2/6729004001492427702/6729004001492427702.vrm",
+ "vroid/2/6729177152338574322/6729177152338574322.vrm",
+ "vroid/2/6731389463174195682/6731389463174195682.vrm",
+ "vroid/2/6732152415572359482/6732152415572359482.vrm",
+ "vroid/2/6735079802213093012/6735079802213093012.vrm",
+ "vroid/2/6740772586675637222/6740772586675637222.vrm",
+ "vroid/2/6756124569695829272/6756124569695829272.vrm",
+ "vroid/2/676424401513733582/676424401513733582.vrm",
+ "vroid/2/6765757824171538632/6765757824171538632.vrm",
+ "vroid/2/6766312960401318942/6766312960401318942.vrm",
+ "vroid/2/6772399800383382862/6772399800383382862.vrm",
+ "vroid/2/6775684926108168842/6775684926108168842.vrm",
+ "vroid/2/6781928617205810162/6781928617205810162.vrm",
+ "vroid/2/6783785571589675822/6783785571589675822.vrm",
+ "vroid/2/6785745410962077282/6785745410962077282.vrm",
+ "vroid/2/680992957581608842/680992957581608842.vrm",
+ "vroid/2/6811288846411424432/6811288846411424432.vrm",
+ "vroid/2/682576374793410112/682576374793410112.vrm",
+ "vroid/2/6833385602186659462/6833385602186659462.vrm",
+ "vroid/2/6836845524042820872/6836845524042820872.vrm",
+ "vroid/2/6844487232620998932/6844487232620998932.vrm",
+ "vroid/2/6850718103922746902/6850718103922746902.vrm",
+ "vroid/2/6864464033330317872/6864464033330317872.vrm",
+ "vroid/2/6865603867409991322/6865603867409991322.vrm",
+ "vroid/2/6872024579834071812/6872024579834071812.vrm",
+ "vroid/2/687458591441253982/687458591441253982.vrm",
+ "vroid/2/6876883837993203062/6876883837993203062.vrm",
+ "vroid/2/6877947397956032302/6877947397956032302.vrm",
+ "vroid/2/6885193412036678332/6885193412036678332.vrm",
+ "vroid/2/6886417100182880262/6886417100182880262.vrm",
+ "vroid/2/6887509072600755632/6887509072600755632.vrm",
+ "vroid/2/6894506726394630992/6894506726394630992.vrm",
+ "vroid/2/6912880592228977462/6912880592228977462.vrm",
+ "vroid/2/6936713468336096812/6936713468336096812.vrm",
+ "vroid/2/6939247859090796182/6939247859090796182.vrm",
+ "vroid/2/694228494403487362/694228494403487362.vrm",
+ "vroid/2/6942807662914539982/6942807662914539982.vrm",
+ "vroid/2/6944444651371698782/6944444651371698782.vrm",
+ "vroid/2/6947059166350753362/6947059166350753362.vrm",
+ "vroid/2/6962510497192536262/6962510497192536262.vrm",
+ "vroid/2/6965310837859584912/6965310837859584912.vrm",
+ "vroid/2/6965689083998764272/6965689083998764272.vrm",
+ "vroid/2/6966107591916396812/6966107591916396812.vrm",
+ "vroid/2/696899412855300532/696899412855300532.vrm",
+ "vroid/2/698399906986647402/698399906986647402.vrm",
+ "vroid/2/6994780871250102312/6994780871250102312.vrm",
+ "vroid/2/7017347069921951582/7017347069921951582.vrm",
+ "vroid/2/7024701762187169352/7024701762187169352.vrm",
+ "vroid/2/7034310279574669932/7034310279574669932.vrm",
+ "vroid/2/703838373038633002/703838373038633002.vrm",
+ "vroid/2/7043657801443847562/7043657801443847562.vrm",
+ "vroid/2/7044707880823556252/7044707880823556252.vrm",
+ "vroid/2/7046560395687132872/7046560395687132872.vrm",
+ "vroid/2/7049965546005720142/7049965546005720142.vrm",
+ "vroid/2/7052508661048680842/7052508661048680842.vrm",
+ "vroid/2/7061227008484535942/7061227008484535942.vrm",
+ "vroid/2/7063627941009170902/7063627941009170902.vrm",
+ "vroid/2/7064776758451300352/7064776758451300352.vrm",
+ "vroid/2/7066446972075342242/7066446972075342242.vrm",
+ "vroid/2/707130625220206882/707130625220206882.vrm",
+ "vroid/2/7072781525120376482/7072781525120376482.vrm",
+ "vroid/2/7073222024036738422/7073222024036738422.vrm",
+ "vroid/2/7073692246945493392/7073692246945493392.vrm",
+ "vroid/2/7086276696764733402/7086276696764733402.vrm",
+ "vroid/2/7093924030475020242/7093924030475020242.vrm",
+ "vroid/2/7094873493536866122/7094873493536866122.vrm",
+ "vroid/2/7099447577383883732/7099447577383883732.vrm",
+ "vroid/2/7108410249690405152/7108410249690405152.vrm",
+ "vroid/2/7119223603782431222/7119223603782431222.vrm",
+ "vroid/2/7120739048128891672/7120739048128891672.vrm",
+ "vroid/2/7124712349118669092/7124712349118669092.vrm",
+ "vroid/2/7125875694227913402/7125875694227913402.vrm",
+ "vroid/2/7137574676463804422/7137574676463804422.vrm",
+ "vroid/2/7139659220392594072/7139659220392594072.vrm",
+ "vroid/2/7141190821048033922/7141190821048033922.vrm",
+ "vroid/2/7144245072362960062/7144245072362960062.vrm",
+ "vroid/2/7155933437557040652/7155933437557040652.vrm",
+ "vroid/2/7158576588856627182/7158576588856627182.vrm",
+ "vroid/2/7158581298979753692/7158581298979753692.vrm",
+ "vroid/2/7167689955208443502/7167689955208443502.vrm",
+ "vroid/2/7177005051602951732/7177005051602951732.vrm",
+ "vroid/2/7183382362047201712/7183382362047201712.vrm",
+ "vroid/2/7185547084027344412/7185547084027344412.vrm",
+ "vroid/2/7190355700736806062/7190355700736806062.vrm",
+ "vroid/2/7208458650122069942/7208458650122069942.vrm",
+ "vroid/2/7209379928654792202/7209379928654792202.vrm",
+ "vroid/2/722061169642205832/722061169642205832.vrm",
+ "vroid/2/7222160953425629862/7222160953425629862.vrm",
+ "vroid/2/7222776562084588132/7222776562084588132.vrm",
+ "vroid/2/7236028209190114132/7236028209190114132.vrm",
+ "vroid/2/7245449506393550312/7245449506393550312.vrm",
+ "vroid/2/725391449293818402/725391449293818402.vrm",
+ "vroid/2/7256892809225831632/7256892809225831632.vrm",
+ "vroid/2/7258376204072139612/7258376204072139612.vrm",
+ "vroid/2/7272011030228537832/7272011030228537832.vrm",
+ "vroid/2/7286499977489254862/7286499977489254862.vrm",
+ "vroid/2/7287949722829928912/7287949722829928912.vrm",
+ "vroid/2/7303382683672708072/7303382683672708072.vrm",
+ "vroid/2/7305439510235746922/7305439510235746922.vrm",
+ "vroid/2/7308359517569840492/7308359517569840492.vrm",
+ "vroid/2/7309770683832736682/7309770683832736682.vrm",
+ "vroid/2/7326424550814939592/7326424550814939592.vrm",
+ "vroid/2/7330051026858447472/7330051026858447472.vrm",
+ "vroid/2/7330477411140241412/7330477411140241412.vrm",
+ "vroid/2/7337606834557334792/7337606834557334792.vrm",
+ "vroid/2/7338824273616211892/7338824273616211892.vrm",
+ "vroid/2/7347553663374376722/7347553663374376722.vrm",
+ "vroid/2/7354176753043569672/7354176753043569672.vrm",
+ "vroid/2/736186984095704672/736186984095704672.vrm",
+ "vroid/2/7362462614953598532/7362462614953598532.vrm",
+ "vroid/2/7363400703615049382/7363400703615049382.vrm",
+ "vroid/2/7377475007847560952/7377475007847560952.vrm",
+ "vroid/2/7378386104625448952/7378386104625448952.vrm",
+ "vroid/2/7385361590501954652/7385361590501954652.vrm",
+ "vroid/2/7389990186018075782/7389990186018075782.vrm",
+ "vroid/2/7396261227955438532/7396261227955438532.vrm",
+ "vroid/2/7398906693866343112/7398906693866343112.vrm",
+ "vroid/2/7418035699657860472/7418035699657860472.vrm",
+ "vroid/2/7421252918637210012/7421252918637210012.vrm",
+ "vroid/2/7421766441879974282/7421766441879974282.vrm",
+ "vroid/2/7422079335257068762/7422079335257068762.vrm",
+ "vroid/2/7423364123038651862/7423364123038651862.vrm",
+ "vroid/2/7423577807032293392/7423577807032293392.vrm",
+ "vroid/2/7427448315933457032/7427448315933457032.vrm",
+ "vroid/2/7431245240076187962/7431245240076187962.vrm",
+ "vroid/2/7436638841571414412/7436638841571414412.vrm",
+ "vroid/2/7441894688341822402/7441894688341822402.vrm",
+ "vroid/2/7444546642454770132/7444546642454770132.vrm",
+ "vroid/2/7446641155049495732/7446641155049495732.vrm",
+ "vroid/2/7448318568739548982/7448318568739548982.vrm",
+ "vroid/2/7448477953944869692/7448477953944869692.vrm",
+ "vroid/2/7473598807397982882/7473598807397982882.vrm",
+ "vroid/2/7474577514188045512/7474577514188045512.vrm",
+ "vroid/2/7477455583505008362/7477455583505008362.vrm",
+ "vroid/2/7489011808819635032/7489011808819635032.vrm",
+ "vroid/2/749579824447787972/749579824447787972.vrm",
+ "vroid/2/7496781274290786892/7496781274290786892.vrm",
+ "vroid/2/7497494977171689882/7497494977171689882.vrm",
+ "vroid/2/7497513472373697872/7497513472373697872.vrm",
+ "vroid/2/7498726242101734282/7498726242101734282.vrm",
+ "vroid/2/7503229929586800812/7503229929586800812.vrm",
+ "vroid/2/7503889826640842862/7503889826640842862.vrm",
+ "vroid/2/7505518185307591862/7505518185307591862.vrm",
+ "vroid/2/7514507093071719362/7514507093071719362.vrm",
+ "vroid/2/7521248020904051532/7521248020904051532.vrm",
+ "vroid/2/7521443843491965792/7521443843491965792.vrm",
+ "vroid/2/7527277404335190062/7527277404335190062.vrm",
+ "vroid/2/7527438108201888412/7527438108201888412.vrm",
+ "vroid/2/753312816236461712/753312816236461712.vrm",
+ "vroid/2/7536039742058787572/7536039742058787572.vrm",
+ "vroid/2/754563783762035292/754563783762035292.vrm",
+ "vroid/2/7548293030159864052/7548293030159864052.vrm",
+ "vroid/2/7548872870222180522/7548872870222180522.vrm",
+ "vroid/2/7563325215904331272/7563325215904331272.vrm",
+ "vroid/2/7580689494652141212/7580689494652141212.vrm",
+ "vroid/2/7581210836348575062/7581210836348575062.vrm",
+ "vroid/2/7583950773220993802/7583950773220993802.vrm",
+ "vroid/2/7587518925221192862/7587518925221192862.vrm",
+ "vroid/2/759528467112785452/759528467112785452.vrm",
+ "vroid/2/75962930918539142/75962930918539142.vrm",
+ "vroid/2/7600935093691746882/7600935093691746882.vrm",
+ "vroid/2/7605040468952058872/7605040468952058872.vrm",
+ "vroid/2/7609687257635001482/7609687257635001482.vrm",
+ "vroid/2/7611508635352485612/7611508635352485612.vrm",
+ "vroid/2/7620852739825032842/7620852739825032842.vrm",
+ "vroid/2/7628832110586514272/7628832110586514272.vrm",
+ "vroid/2/7635621231901626812/7635621231901626812.vrm",
+ "vroid/2/7639970788620392152/7639970788620392152.vrm",
+ "vroid/2/7646379167470448462/7646379167470448462.vrm",
+ "vroid/2/7649110201056191442/7649110201056191442.vrm",
+ "vroid/2/7650794219219239462/7650794219219239462.vrm",
+ "vroid/2/7656366973520885592/7656366973520885592.vrm",
+ "vroid/2/7660005044867218612/7660005044867218612.vrm",
+ "vroid/2/7667654614599930802/7667654614599930802.vrm",
+ "vroid/2/7676798979245675072/7676798979245675072.vrm",
+ "vroid/2/7677588008804024632/7677588008804024632.vrm",
+ "vroid/2/768101844042761502/768101844042761502.vrm",
+ "vroid/2/7682763949440213862/7682763949440213862.vrm",
+ "vroid/2/7686004621368092932/7686004621368092932.vrm",
+ "vroid/2/769346701253311352/769346701253311352.vrm",
+ "vroid/2/7699202260747681132/7699202260747681132.vrm",
+ "vroid/2/7706052876346738422/7706052876346738422.vrm",
+ "vroid/2/770916616352223182/770916616352223182.vrm",
+ "vroid/2/7710318626975760872/7710318626975760872.vrm",
+ "vroid/2/7715517485850034862/7715517485850034862.vrm",
+ "vroid/2/772865032277792982/772865032277792982.vrm",
+ "vroid/2/7733110530979185782/7733110530979185782.vrm",
+ "vroid/2/7739332757677415812/7739332757677415812.vrm",
+ "vroid/2/7749575512013409272/7749575512013409272.vrm",
+ "vroid/2/7751363221716228372/7751363221716228372.vrm",
+ "vroid/2/7753128985817275322/7753128985817275322.vrm",
+ "vroid/2/7755458460076723022/7755458460076723022.vrm",
+ "vroid/2/7766577925281039142/7766577925281039142.vrm",
+ "vroid/2/7767057188371998412/7767057188371998412.vrm",
+ "vroid/2/7768897627191864892/7768897627191864892.vrm",
+ "vroid/2/7782932906908736592/7782932906908736592.vrm",
+ "vroid/2/7788919796382549622/7788919796382549622.vrm",
+ "vroid/2/7789350238100492832/7789350238100492832.vrm",
+ "vroid/2/7804592879366353202/7804592879366353202.vrm",
+ "vroid/2/7823123409758017532/7823123409758017532.vrm",
+ "vroid/2/7826968640656946842/7826968640656946842.vrm",
+ "vroid/2/7832265061256793532/7832265061256793532.vrm",
+ "vroid/2/7833064532316643952/7833064532316643952.vrm",
+ "vroid/2/7845258754454952582/7845258754454952582.vrm",
+ "vroid/2/785806768326406982/785806768326406982.vrm",
+ "vroid/2/7860062650922853892/7860062650922853892.vrm",
+ "vroid/2/7869639222736332402/7869639222736332402.vrm",
+ "vroid/2/7873884091727176672/7873884091727176672.vrm",
+ "vroid/2/7876180780086370752/7876180780086370752.vrm",
+ "vroid/2/7882105284498008202/7882105284498008202.vrm",
+ "vroid/2/7887246019114472392/7887246019114472392.vrm",
+ "vroid/2/7896978892054957962/7896978892054957962.vrm",
+ "vroid/2/7897353998896698972/7897353998896698972.vrm",
+ "vroid/2/7900085694843063802/7900085694843063802.vrm",
+ "vroid/2/7902397444255639382/7902397444255639382.vrm",
+ "vroid/2/7908739909761869772/7908739909761869772.vrm",
+ "vroid/2/7917943121816536692/7917943121816536692.vrm",
+ "vroid/2/7920512987318106512/7920512987318106512.vrm",
+ "vroid/2/7925492256166285842/7925492256166285842.vrm",
+ "vroid/2/7932321634834033872/7932321634834033872.vrm",
+ "vroid/2/7932674293925322252/7932674293925322252.vrm",
+ "vroid/2/7934360887837631772/7934360887837631772.vrm",
+ "vroid/2/7949441207284546892/7949441207284546892.vrm",
+ "vroid/2/7949664354539262822/7949664354539262822.vrm",
+ "vroid/2/7952184021385427232/7952184021385427232.vrm",
+ "vroid/2/7965890699504203532/7965890699504203532.vrm",
+ "vroid/2/796665065994057342/796665065994057342.vrm",
+ "vroid/2/7971929769523463612/7971929769523463612.vrm",
+ "vroid/2/7992454989454650172/7992454989454650172.vrm",
+ "vroid/2/8009708092039059222/8009708092039059222.vrm",
+ "vroid/2/8012591174532230632/8012591174532230632.vrm",
+ "vroid/2/8016903333732566862/8016903333732566862.vrm",
+ "vroid/2/8018510058990830602/8018510058990830602.vrm",
+ "vroid/2/8021249752608972102/8021249752608972102.vrm",
+ "vroid/2/802263666549829372/802263666549829372.vrm",
+ "vroid/2/8025436165019183002/8025436165019183002.vrm",
+ "vroid/2/8029836146860298242/8029836146860298242.vrm",
+ "vroid/2/8036634785346655152/8036634785346655152.vrm",
+ "vroid/2/8042868129841603412/8042868129841603412.vrm",
+ "vroid/2/8049658661498918662/8049658661498918662.vrm",
+ "vroid/2/805099419383588652/805099419383588652.vrm",
+ "vroid/2/8055198646624159272/8055198646624159272.vrm",
+ "vroid/2/8067091881485824422/8067091881485824422.vrm",
+ "vroid/2/8068603115776471912/8068603115776471912.vrm",
+ "vroid/2/8074128729005349492/8074128729005349492.vrm",
+ "vroid/2/8075916088582651752/8075916088582651752.vrm",
+ "vroid/2/808648667813071282/808648667813071282.vrm",
+ "vroid/2/8087977535576956052/8087977535576956052.vrm",
+ "vroid/2/8099665399920348642/8099665399920348642.vrm",
+ "vroid/2/8105886094711648472/8105886094711648472.vrm",
+ "vroid/2/8110808088535731372/8110808088535731372.vrm",
+ "vroid/2/8119019652623178752/8119019652623178752.vrm",
+ "vroid/2/8121927094164064862/8121927094164064862.vrm",
+ "vroid/2/8124505627393927802/8124505627393927802.vrm",
+ "vroid/2/8125722730580362502/8125722730580362502.vrm",
+ "vroid/2/8141508187800374662/8141508187800374662.vrm",
+ "vroid/2/8152009503943464732/8152009503943464732.vrm",
+ "vroid/2/8155573810891968152/8155573810891968152.vrm",
+ "vroid/2/8162836453019997012/8162836453019997012.vrm",
+ "vroid/2/8166888809842957852/8166888809842957852.vrm",
+ "vroid/2/817193750435006422/817193750435006422.vrm",
+ "vroid/2/8175478316754801862/8175478316754801862.vrm",
+ "vroid/2/817590603447971432/817590603447971432.vrm",
+ "vroid/2/8175993306461330672/8175993306461330672.vrm",
+ "vroid/2/8183574163637716952/8183574163637716952.vrm",
+ "vroid/2/8194286805298952562/8194286805298952562.vrm",
+ "vroid/2/8195964786039318272/8195964786039318272.vrm",
+ "vroid/2/8196051987584365092/8196051987584365092.vrm",
+ "vroid/2/8208131451573167262/8208131451573167262.vrm",
+ "vroid/2/8219850164914694922/8219850164914694922.vrm",
+ "vroid/2/8223311327295710812/8223311327295710812.vrm",
+ "vroid/2/8226091555377232402/8226091555377232402.vrm",
+ "vroid/2/8230520207623151262/8230520207623151262.vrm",
+ "vroid/2/8240330771143298962/8240330771143298962.vrm",
+ "vroid/2/8261153689482662852/8261153689482662852.vrm",
+ "vroid/2/8269245622600219022/8269245622600219022.vrm",
+ "vroid/2/8269636340139048062/8269636340139048062.vrm",
+ "vroid/2/8278751952745244642/8278751952745244642.vrm",
+ "vroid/2/8282539564466525742/8282539564466525742.vrm",
+ "vroid/2/8283728993664499602/8283728993664499602.vrm",
+ "vroid/2/829133100868062702/829133100868062702.vrm",
+ "vroid/2/8299653299512327592/8299653299512327592.vrm",
+ "vroid/2/83001657168434402/83001657168434402.vrm",
+ "vroid/2/8300865290622089992/8300865290622089992.vrm",
+ "vroid/2/8318652809636645252/8318652809636645252.vrm",
+ "vroid/2/8320192455822250172/8320192455822250172.vrm",
+ "vroid/2/8323265279392390192/8323265279392390192.vrm",
+ "vroid/2/8325441093063724742/8325441093063724742.vrm",
+ "vroid/2/8329994320024178642/8329994320024178642.vrm",
+ "vroid/2/8330551504836740412/8330551504836740412.vrm",
+ "vroid/2/8334990695929074012/8334990695929074012.vrm",
+ "vroid/2/8344221532085041582/8344221532085041582.vrm",
+ "vroid/2/8348149238527838632/8348149238527838632.vrm",
+ "vroid/2/835088289985553372/835088289985553372.vrm",
+ "vroid/2/8352466282351880232/8352466282351880232.vrm",
+ "vroid/2/835359884374540462/835359884374540462.vrm",
+ "vroid/2/8355707445555826132/8355707445555826132.vrm",
+ "vroid/2/8377970859453653182/8377970859453653182.vrm",
+ "vroid/2/838783918890716872/838783918890716872.vrm",
+ "vroid/2/8389081869026794822/8389081869026794822.vrm",
+ "vroid/2/8394811542971812332/8394811542971812332.vrm",
+ "vroid/2/8400550574703040482/8400550574703040482.vrm",
+ "vroid/2/8402225258248787622/8402225258248787622.vrm",
+ "vroid/2/8405196567738633792/8405196567738633792.vrm",
+ "vroid/2/8418679681742921362/8418679681742921362.vrm",
+ "vroid/2/8429813725147554432/8429813725147554432.vrm",
+ "vroid/2/843024350289432042/843024350289432042.vrm",
+ "vroid/2/8435554657446737362/8435554657446737362.vrm",
+ "vroid/2/8449666785373054962/8449666785373054962.vrm",
+ "vroid/2/8456737402245879062/8456737402245879062.vrm",
+ "vroid/2/8457888881356196992/8457888881356196992.vrm",
+ "vroid/2/8459727593483018802/8459727593483018802.vrm",
+ "vroid/2/8461396993232533562/8461396993232533562.vrm",
+ "vroid/2/8468873606880641312/8468873606880641312.vrm",
+ "vroid/2/8476317259911823332/8476317259911823332.vrm",
+ "vroid/2/8479244661782879712/8479244661782879712.vrm",
+ "vroid/2/8484382488075366132/8484382488075366132.vrm",
+ "vroid/2/8501430030297323652/8501430030297323652.vrm",
+ "vroid/2/8510449266170987222/8510449266170987222.vrm",
+ "vroid/2/8529991038017473402/8529991038017473402.vrm",
+ "vroid/2/8544249562285768412/8544249562285768412.vrm",
+ "vroid/2/8547328479074703022/8547328479074703022.vrm",
+ "vroid/2/8547681707374511432/8547681707374511432.vrm",
+ "vroid/2/8555717203365968882/8555717203365968882.vrm",
+ "vroid/2/8572307410535889942/8572307410535889942.vrm",
+ "vroid/2/8576283354066619342/8576283354066619342.vrm",
+ "vroid/2/8589022505510040492/8589022505510040492.vrm",
+ "vroid/2/8611587996523050622/8611587996523050622.vrm",
+ "vroid/2/8612794801976678562/8612794801976678562.vrm",
+ "vroid/2/8614747459842371442/8614747459842371442.vrm",
+ "vroid/2/862286702990504222/862286702990504222.vrm",
+ "vroid/2/8624770234043260872/8624770234043260872.vrm",
+ "vroid/2/8637837000876959042/8637837000876959042.vrm",
+ "vroid/2/8650526491329306152/8650526491329306152.vrm",
+ "vroid/2/8655581145991166702/8655581145991166702.vrm",
+ "vroid/2/8656296743213400712/8656296743213400712.vrm",
+ "vroid/2/8668604181775298142/8668604181775298142.vrm",
+ "vroid/2/8684681903912042572/8684681903912042572.vrm",
+ "vroid/2/8686593912205981562/8686593912205981562.vrm",
+ "vroid/2/8704501475386386042/8704501475386386042.vrm",
+ "vroid/2/8708192604856108782/8708192604856108782.vrm",
+ "vroid/2/8712411652088153532/8712411652088153532.vrm",
+ "vroid/2/8713341383437424732/8713341383437424732.vrm",
+ "vroid/2/8714033237983024582/8714033237983024582.vrm",
+ "vroid/2/8717566045527862012/8717566045527862012.vrm",
+ "vroid/2/8726483905387573512/8726483905387573512.vrm",
+ "vroid/2/8726551556669143942/8726551556669143942.vrm",
+ "vroid/2/8732821369518478392/8732821369518478392.vrm",
+ "vroid/2/8733362025606154832/8733362025606154832.vrm",
+ "vroid/2/8750745396235730492/8750745396235730492.vrm",
+ "vroid/2/876183723383293742/876183723383293742.vrm",
+ "vroid/2/8768681402994554622/8768681402994554622.vrm",
+ "vroid/2/878764636138223992/878764636138223992.vrm",
+ "vroid/2/8794907355514184402/8794907355514184402.vrm",
+ "vroid/2/8795554192634359092/8795554192634359092.vrm",
+ "vroid/2/879725356723745112/879725356723745112.vrm",
+ "vroid/2/8802986813103864402/8802986813103864402.vrm",
+ "vroid/2/8804182944173514082/8804182944173514082.vrm",
+ "vroid/2/8810996325338888012/8810996325338888012.vrm",
+ "vroid/2/8813781605373071142/8813781605373071142.vrm",
+ "vroid/2/8814157879187696542/8814157879187696542.vrm",
+ "vroid/2/8817152641035308632/8817152641035308632.vrm",
+ "vroid/2/8823684162169653602/8823684162169653602.vrm",
+ "vroid/2/8830409866324801212/8830409866324801212.vrm",
+ "vroid/2/8832464031080848282/8832464031080848282.vrm",
+ "vroid/2/8853962289119748302/8853962289119748302.vrm",
+ "vroid/2/8855572912998233712/8855572912998233712.vrm",
+ "vroid/2/886014711870652692/886014711870652692.vrm",
+ "vroid/2/886057799935114512/886057799935114512.vrm",
+ "vroid/2/8865341321488399942/8865341321488399942.vrm",
+ "vroid/2/8867135773505750162/8867135773505750162.vrm",
+ "vroid/2/8873239130560974462/8873239130560974462.vrm",
+ "vroid/2/8880156118342875802/8880156118342875802.vrm",
+ "vroid/2/8886539608329094002/8886539608329094002.vrm",
+ "vroid/2/8888731159261262422/8888731159261262422.vrm",
+ "vroid/2/8891263394100940152/8891263394100940152.vrm",
+ "vroid/2/8897251037568293982/8897251037568293982.vrm",
+ "vroid/2/8913108787414020132/8913108787414020132.vrm",
+ "vroid/2/8918950932208143592/8918950932208143592.vrm",
+ "vroid/2/8920222163079045132/8920222163079045132.vrm",
+ "vroid/2/8927404183294054652/8927404183294054652.vrm",
+ "vroid/2/8927990496441913622/8927990496441913622.vrm",
+ "vroid/2/8930170258662326922/8930170258662326922.vrm",
+ "vroid/2/893903439165642562/893903439165642562.vrm",
+ "vroid/2/8944409360815097082/8944409360815097082.vrm",
+ "vroid/2/8945610953834761282/8945610953834761282.vrm",
+ "vroid/2/8960374251596696662/8960374251596696662.vrm",
+ "vroid/2/8960934886016346812/8960934886016346812.vrm",
+ "vroid/2/8963902730236334412/8963902730236334412.vrm",
+ "vroid/2/8963920132947456382/8963920132947456382.vrm",
+ "vroid/2/8964160899078430342/8964160899078430342.vrm",
+ "vroid/2/8965889610121040232/8965889610121040232.vrm",
+ "vroid/2/897055308016873762/897055308016873762.vrm",
+ "vroid/2/8977404519790621082/8977404519790621082.vrm",
+ "vroid/2/8987002399062214942/8987002399062214942.vrm",
+ "vroid/2/8991713154429241962/8991713154429241962.vrm",
+ "vroid/2/9007290405290983542/9007290405290983542.vrm",
+ "vroid/2/9027010327169109062/9027010327169109062.vrm",
+ "vroid/2/9035450392825611942/9035450392825611942.vrm",
+ "vroid/2/9039900539223363022/9039900539223363022.vrm",
+ "vroid/2/9041284187348447592/9041284187348447592.vrm",
+ "vroid/2/9052721950503496162/9052721950503496162.vrm",
+ "vroid/2/9056186386598695392/9056186386598695392.vrm",
+ "vroid/2/9056941920805620502/9056941920805620502.vrm",
+ "vroid/2/9058255447431993242/9058255447431993242.vrm",
+ "vroid/2/9063151291642657542/9063151291642657542.vrm",
+ "vroid/2/9063848489763603212/9063848489763603212.vrm",
+ "vroid/2/9067099211541160682/9067099211541160682.vrm",
+ "vroid/2/9077180609196175992/9077180609196175992.vrm",
+ "vroid/2/9110228255863634722/9110228255863634722.vrm",
+ "vroid/2/9112614655695216182/9112614655695216182.vrm",
+ "vroid/2/9113351576540908882/9113351576540908882.vrm",
+ "vroid/2/9118351715271281342/9118351715271281342.vrm",
+ "vroid/2/9123425628260544882/9123425628260544882.vrm",
+ "vroid/2/9126887173262058502/9126887173262058502.vrm",
+ "vroid/2/9129590785957257682/9129590785957257682.vrm",
+ "vroid/2/9133188172751957182/9133188172751957182.vrm",
+ "vroid/2/9138892883072488102/9138892883072488102.vrm",
+ "vroid/2/914147414606380572/914147414606380572.vrm",
+ "vroid/2/9152482058077058562/9152482058077058562.vrm",
+ "vroid/2/9154915791270579142/9154915791270579142.vrm",
+ "vroid/2/9162828813460295862/9162828813460295862.vrm",
+ "vroid/2/9164260455702924502/9164260455702924502.vrm",
+ "vroid/2/9164333760156351952/9164333760156351952.vrm",
+ "vroid/2/9179174858169336592/9179174858169336592.vrm",
+ "vroid/2/9189267131958703952/9189267131958703952.vrm",
+ "vroid/2/9193137841850625512/9193137841850625512.vrm",
+ "vroid/2/9193248666869616492/9193248666869616492.vrm",
+ "vroid/2/9195839135192014792/9195839135192014792.vrm",
+ "vroid/2/9202718670589160852/9202718670589160852.vrm",
+ "vroid/2/9211090345999964852/9211090345999964852.vrm",
+ "vroid/2/921179147922482382/921179147922482382.vrm",
+ "vroid/2/9212177344045717362/9212177344045717362.vrm",
+ "vroid/2/927268377693291392/927268377693291392.vrm",
+ "vroid/2/949823897221888712/949823897221888712.vrm",
+ "vroid/2/9620669429266182/9620669429266182.vrm",
+ "vroid/2/964373624003688272/964373624003688272.vrm",
+ "vroid/2/982459988694164202/982459988694164202.vrm",
+ "vroid/2/986374665069140652/986374665069140652.vrm",
+ "vroid/2/988155513756298762/988155513756298762.vrm",
+ "vroid/2/994475923461944922/994475923461944922.vrm",
+ "vroid/2/998659632641323222/998659632641323222.vrm",
+ "vroid/3/101759313492762033/101759313492762033.vrm",
+ "vroid/3/1023295906498158723/1023295906498158723.vrm",
+ "vroid/3/1024105676958052453/1024105676958052453.vrm",
+ "vroid/3/1026000697424124743/1026000697424124743.vrm",
+ "vroid/3/1033463009526857103/1033463009526857103.vrm",
+ "vroid/3/1040276734267195063/1040276734267195063.vrm",
+ "vroid/3/1046547826485469823/1046547826485469823.vrm",
+ "vroid/3/1048166239328874023/1048166239328874023.vrm",
+ "vroid/3/1051272310404101723/1051272310404101723.vrm",
+ "vroid/3/1054880701434172673/1054880701434172673.vrm",
+ "vroid/3/1060332037922612303/1060332037922612303.vrm",
+ "vroid/3/1064759411779628493/1064759411779628493.vrm",
+ "vroid/3/1065487795967695213/1065487795967695213.vrm",
+ "vroid/3/106690291880000073/106690291880000073.vrm",
+ "vroid/3/1083942653445881133/1083942653445881133.vrm",
+ "vroid/3/1090122510476995853/1090122510476995853.vrm",
+ "vroid/3/110219058387835843/110219058387835843.vrm",
+ "vroid/3/1105448705871304793/1105448705871304793.vrm",
+ "vroid/3/1161319357322856313/1161319357322856313.vrm",
+ "vroid/3/1166579251060663513/1166579251060663513.vrm",
+ "vroid/3/1166721105160214383/1166721105160214383.vrm",
+ "vroid/3/1167764894411228593/1167764894411228593.vrm",
+ "vroid/3/1167869042355662443/1167869042355662443.vrm",
+ "vroid/3/1176434337557471453/1176434337557471453.vrm",
+ "vroid/3/1189352517352589693/1189352517352589693.vrm",
+ "vroid/3/1189853394138531003/1189853394138531003.vrm",
+ "vroid/3/1195023111293678063/1195023111293678063.vrm",
+ "vroid/3/1201490930586774833/1201490930586774833.vrm",
+ "vroid/3/1202331960100371943/1202331960100371943.vrm",
+ "vroid/3/1207691013861805043/1207691013861805043.vrm",
+ "vroid/3/1209609499912209663/1209609499912209663.vrm",
+ "vroid/3/1216026490221825383/1216026490221825383.vrm",
+ "vroid/3/1232400313682664073/1232400313682664073.vrm",
+ "vroid/3/1253541007794808503/1253541007794808503.vrm",
+ "vroid/3/1255821982775001373/1255821982775001373.vrm",
+ "vroid/3/1258484940638572833/1258484940638572833.vrm",
+ "vroid/3/1258753207174753063/1258753207174753063.vrm",
+ "vroid/3/1266911412170010483/1266911412170010483.vrm",
+ "vroid/3/126764673562057493/126764673562057493.vrm",
+ "vroid/3/1270732544845645073/1270732544845645073.vrm",
+ "vroid/3/1284084318512195123/1284084318512195123.vrm",
+ "vroid/3/129054093384319613/129054093384319613.vrm",
+ "vroid/3/1297340487903468493/1297340487903468493.vrm",
+ "vroid/3/1302169756940380993/1302169756940380993.vrm",
+ "vroid/3/1308282546170964273/1308282546170964273.vrm",
+ "vroid/3/1313118938146852103/1313118938146852103.vrm",
+ "vroid/3/1324774703818762023/1324774703818762023.vrm",
+ "vroid/3/1325522680487951313/1325522680487951313.vrm",
+ "vroid/3/1335241312977978453/1335241312977978453.vrm",
+ "vroid/3/1336324369431343373/1336324369431343373.vrm",
+ "vroid/3/1337121005608304633/1337121005608304633.vrm",
+ "vroid/3/1337562090770316483/1337562090770316483.vrm",
+ "vroid/3/134284939277992283/134284939277992283.vrm",
+ "vroid/3/1347519616929655733/1347519616929655733.vrm",
+ "vroid/3/1348145177801223503/1348145177801223503.vrm",
+ "vroid/3/1352260489720519113/1352260489720519113.vrm",
+ "vroid/3/1358675409050355913/1358675409050355913.vrm",
+ "vroid/3/1369914056022121163/1369914056022121163.vrm",
+ "vroid/3/1370709120261729213/1370709120261729213.vrm",
+ "vroid/3/1373152996540211353/1373152996540211353.vrm",
+ "vroid/3/13758987405705943/13758987405705943.vrm",
+ "vroid/3/1375972907487886793/1375972907487886793.vrm",
+ "vroid/3/1377085263774540463/1377085263774540463.vrm",
+ "vroid/3/1381185908427242333/1381185908427242333.vrm",
+ "vroid/3/1387116541968804023/1387116541968804023.vrm",
+ "vroid/3/1388280846970033823/1388280846970033823.vrm",
+ "vroid/3/139103950271970213/139103950271970213.vrm",
+ "vroid/3/1394527666940960993/1394527666940960993.vrm",
+ "vroid/3/1399547407540418033/1399547407540418033.vrm",
+ "vroid/3/1405296689529908833/1405296689529908833.vrm",
+ "vroid/3/1407703364790149943/1407703364790149943.vrm",
+ "vroid/3/140929002833075533/140929002833075533.vrm",
+ "vroid/3/140974880581282593/140974880581282593.vrm",
+ "vroid/3/1414164488266803543/1414164488266803543.vrm",
+ "vroid/3/1415836257264249293/1415836257264249293.vrm",
+ "vroid/3/1418026253792936913/1418026253792936913.vrm",
+ "vroid/3/1420680087979130883/1420680087979130883.vrm",
+ "vroid/3/1421447611127514463/1421447611127514463.vrm",
+ "vroid/3/1425935056861896673/1425935056861896673.vrm",
+ "vroid/3/1442290922395124763/1442290922395124763.vrm",
+ "vroid/3/1443445283907931513/1443445283907931513.vrm",
+ "vroid/3/1449516775148799433/1449516775148799433.vrm",
+ "vroid/3/1450841627953374253/1450841627953374253.vrm",
+ "vroid/3/1461363051938795703/1461363051938795703.vrm",
+ "vroid/3/1461595573867758583/1461595573867758583.vrm",
+ "vroid/3/1467282679131856683/1467282679131856683.vrm",
+ "vroid/3/1483162999254610783/1483162999254610783.vrm",
+ "vroid/3/1489927746429287213/1489927746429287213.vrm",
+ "vroid/3/14899833075877953/14899833075877953.vrm",
+ "vroid/3/1498080299391959083/1498080299391959083.vrm",
+ "vroid/3/1499997358749671973/1499997358749671973.vrm",
+ "vroid/3/1509675832612995713/1509675832612995713.vrm",
+ "vroid/3/1509885226984854813/1509885226984854813.vrm",
+ "vroid/3/1509924419545393813/1509924419545393813.vrm",
+ "vroid/3/151023333795397463/151023333795397463.vrm",
+ "vroid/3/1513917038483588293/1513917038483588293.vrm",
+ "vroid/3/1515748007853837203/1515748007853837203.vrm",
+ "vroid/3/1517000336203320713/1517000336203320713.vrm",
+ "vroid/3/1559201159676596053/1559201159676596053.vrm",
+ "vroid/3/1565679778376587473/1565679778376587473.vrm",
+ "vroid/3/1572137203139875423/1572137203139875423.vrm",
+ "vroid/3/1572933028859430703/1572933028859430703.vrm",
+ "vroid/3/1574370988387470753/1574370988387470753.vrm",
+ "vroid/3/1574461740376798013/1574461740376798013.vrm",
+ "vroid/3/157858796425757033/157858796425757033.vrm",
+ "vroid/3/1579004706764058563/1579004706764058563.vrm",
+ "vroid/3/159103332937229293/159103332937229293.vrm",
+ "vroid/3/1595572115210014983/1595572115210014983.vrm",
+ "vroid/3/1600410704528210323/1600410704528210323.vrm",
+ "vroid/3/1603275115973456053/1603275115973456053.vrm",
+ "vroid/3/1605231876067779823/1605231876067779823.vrm",
+ "vroid/3/1610273395050230973/1610273395050230973.vrm",
+ "vroid/3/1612048880410612423/1612048880410612423.vrm",
+ "vroid/3/1623149069222894093/1623149069222894093.vrm",
+ "vroid/3/1635480120569624363/1635480120569624363.vrm",
+ "vroid/3/1649010589249137493/1649010589249137493.vrm",
+ "vroid/3/1649483199352785553/1649483199352785553.vrm",
+ "vroid/3/1661286501457787513/1661286501457787513.vrm",
+ "vroid/3/1670931150851490203/1670931150851490203.vrm",
+ "vroid/3/1672192252304467223/1672192252304467223.vrm",
+ "vroid/3/1672866218214765503/1672866218214765503.vrm",
+ "vroid/3/1677430162201157113/1677430162201157113.vrm",
+ "vroid/3/1687402265079478193/1687402265079478193.vrm",
+ "vroid/3/1687986054505269563/1687986054505269563.vrm",
+ "vroid/3/1691941150466816513/1691941150466816513.vrm",
+ "vroid/3/1694614593636676983/1694614593636676983.vrm",
+ "vroid/3/1699036783016937613/1699036783016937613.vrm",
+ "vroid/3/1699634147282292793/1699634147282292793.vrm",
+ "vroid/3/1712485084618323603/1712485084618323603.vrm",
+ "vroid/3/1713611303078213823/1713611303078213823.vrm",
+ "vroid/3/1725187267581702993/1725187267581702993.vrm",
+ "vroid/3/1726383403948631923/1726383403948631923.vrm",
+ "vroid/3/1727101356315380553/1727101356315380553.vrm",
+ "vroid/3/1751076049088054923/1751076049088054923.vrm",
+ "vroid/3/1762292759254735663/1762292759254735663.vrm",
+ "vroid/3/1777102296767939153/1777102296767939153.vrm",
+ "vroid/3/1777444296321272133/1777444296321272133.vrm",
+ "vroid/3/1779760268622139493/1779760268622139493.vrm",
+ "vroid/3/1784287441343015773/1784287441343015773.vrm",
+ "vroid/3/1796683932941538963/1796683932941538963.vrm",
+ "vroid/3/1800447232841270123/1800447232841270123.vrm",
+ "vroid/3/1802960095607410603/1802960095607410603.vrm",
+ "vroid/3/1805343257334652033/1805343257334652033.vrm",
+ "vroid/3/1806911761443186593/1806911761443186593.vrm",
+ "vroid/3/1811392964948231403/1811392964948231403.vrm",
+ "vroid/3/1813006167640610653/1813006167640610653.vrm",
+ "vroid/3/181364387222468313/181364387222468313.vrm",
+ "vroid/3/1824506582224391683/1824506582224391683.vrm",
+ "vroid/3/1835899575202376943/1835899575202376943.vrm",
+ "vroid/3/1835994572562990833/1835994572562990833.vrm",
+ "vroid/3/1842309336504834223/1842309336504834223.vrm",
+ "vroid/3/1843776643333490803/1843776643333490803.vrm",
+ "vroid/3/1845521706304530923/1845521706304530923.vrm",
+ "vroid/3/1857188997338734643/1857188997338734643.vrm",
+ "vroid/3/1861062635480748763/1861062635480748763.vrm",
+ "vroid/3/1864468142749822983/1864468142749822983.vrm",
+ "vroid/3/1864739310350593503/1864739310350593503.vrm",
+ "vroid/3/1872898159238913163/1872898159238913163.vrm",
+ "vroid/3/1876191956137745193/1876191956137745193.vrm",
+ "vroid/3/1879316164804560173/1879316164804560173.vrm",
+ "vroid/3/1879334081574912473/1879334081574912473.vrm",
+ "vroid/3/1881286053082663773/1881286053082663773.vrm",
+ "vroid/3/1893178744967546483/1893178744967546483.vrm",
+ "vroid/3/1897304386289042073/1897304386289042073.vrm",
+ "vroid/3/1899018861154575993/1899018861154575993.vrm",
+ "vroid/3/1906747259456464253/1906747259456464253.vrm",
+ "vroid/3/1907241511581177323/1907241511581177323.vrm",
+ "vroid/3/1914698716154970633/1914698716154970633.vrm",
+ "vroid/3/1914911191602797673/1914911191602797673.vrm",
+ "vroid/3/1938168502649588703/1938168502649588703.vrm",
+ "vroid/3/1948622210396124163/1948622210396124163.vrm",
+ "vroid/3/1951296221717730613/1951296221717730613.vrm",
+ "vroid/3/1951973644454057633/1951973644454057633.vrm",
+ "vroid/3/1959622176086110873/1959622176086110873.vrm",
+ "vroid/3/1961107338192758323/1961107338192758323.vrm",
+ "vroid/3/1963530065477614143/1963530065477614143.vrm",
+ "vroid/3/1969394127256090343/1969394127256090343.vrm",
+ "vroid/3/1970290066606554993/1970290066606554993.vrm",
+ "vroid/3/1974284834456564583/1974284834456564583.vrm",
+ "vroid/3/1975557881579879703/1975557881579879703.vrm",
+ "vroid/3/1981376850787241243/1981376850787241243.vrm",
+ "vroid/3/1985724458739161923/1985724458739161923.vrm",
+ "vroid/3/1991305752411748703/1991305752411748703.vrm",
+ "vroid/3/1996007958835719473/1996007958835719473.vrm",
+ "vroid/3/1997246514715262113/1997246514715262113.vrm",
+ "vroid/3/1997816719853729773/1997816719853729773.vrm",
+ "vroid/3/19988700394869513/19988700394869513.vrm",
+ "vroid/3/2009717253816238993/2009717253816238993.vrm",
+ "vroid/3/2010086882502103453/2010086882502103453.vrm",
+ "vroid/3/2012001680120982693/2012001680120982693.vrm",
+ "vroid/3/2018964467260592803/2018964467260592803.vrm",
+ "vroid/3/2020880484629897173/2020880484629897173.vrm",
+ "vroid/3/20225664556850213/20225664556850213.vrm",
+ "vroid/3/2027848636289130093/2027848636289130093.vrm",
+ "vroid/3/2032616363747049053/2032616363747049053.vrm",
+ "vroid/3/2039706529529673733/2039706529529673733.vrm",
+ "vroid/3/2040817588543165353/2040817588543165353.vrm",
+ "vroid/3/2045648447805546043/2045648447805546043.vrm",
+ "vroid/3/2050825423227809033/2050825423227809033.vrm",
+ "vroid/3/205399557937193293/205399557937193293.vrm",
+ "vroid/3/2057738389466596283/2057738389466596283.vrm",
+ "vroid/3/2058653157811018923/2058653157811018923.vrm",
+ "vroid/3/2059041062764118893/2059041062764118893.vrm",
+ "vroid/3/2087296847428612013/2087296847428612013.vrm",
+ "vroid/3/208795451095899873/208795451095899873.vrm",
+ "vroid/3/2094349065274789843/2094349065274789843.vrm",
+ "vroid/3/2099147160093302673/2099147160093302673.vrm",
+ "vroid/3/2106930114676888033/2106930114676888033.vrm",
+ "vroid/3/2110552222755881813/2110552222755881813.vrm",
+ "vroid/3/2111018985456148773/2111018985456148773.vrm",
+ "vroid/3/2134821284017688653/2134821284017688653.vrm",
+ "vroid/3/2151464059920264983/2151464059920264983.vrm",
+ "vroid/3/216214839771849073/216214839771849073.vrm",
+ "vroid/3/2173882191287287973/2173882191287287973.vrm",
+ "vroid/3/217602163163488753/217602163163488753.vrm",
+ "vroid/3/217682653012647533/217682653012647533.vrm",
+ "vroid/3/2179608483405829623/2179608483405829623.vrm",
+ "vroid/3/218005040403873133/218005040403873133.vrm",
+ "vroid/3/2182134165417430373/2182134165417430373.vrm",
+ "vroid/3/2187299772203613563/2187299772203613563.vrm",
+ "vroid/3/2194503284663399103/2194503284663399103.vrm",
+ "vroid/3/2199417609718887143/2199417609718887143.vrm",
+ "vroid/3/2203389896635053213/2203389896635053213.vrm",
+ "vroid/3/2204841658305561853/2204841658305561853.vrm",
+ "vroid/3/2213162180844639443/2213162180844639443.vrm",
+ "vroid/3/2216133263267455143/2216133263267455143.vrm",
+ "vroid/3/2216785897415021683/2216785897415021683.vrm",
+ "vroid/3/2217185802136710963/2217185802136710963.vrm",
+ "vroid/3/2235145095421944693/2235145095421944693.vrm",
+ "vroid/3/2236281770287129803/2236281770287129803.vrm",
+ "vroid/3/2241201055298170623/2241201055298170623.vrm",
+ "vroid/3/2245350602659207533/2245350602659207533.vrm",
+ "vroid/3/2255077519262228973/2255077519262228973.vrm",
+ "vroid/3/2257142630648888643/2257142630648888643.vrm",
+ "vroid/3/2264377130171892673/2264377130171892673.vrm",
+ "vroid/3/2264473144935997213/2264473144935997213.vrm",
+ "vroid/3/2278208686153487343/2278208686153487343.vrm",
+ "vroid/3/2292328259375526973/2292328259375526973.vrm",
+ "vroid/3/2294407606878338493/2294407606878338493.vrm",
+ "vroid/3/2296044519663984363/2296044519663984363.vrm",
+ "vroid/3/2312876252325680723/2312876252325680723.vrm",
+ "vroid/3/2315997181056358793/2315997181056358793.vrm",
+ "vroid/3/2316826782328178853/2316826782328178853.vrm",
+ "vroid/3/2322109277929091513/2322109277929091513.vrm",
+ "vroid/3/2322975217645280133/2322975217645280133.vrm",
+ "vroid/3/2335569681387188123/2335569681387188123.vrm",
+ "vroid/3/2336604342891350243/2336604342891350243.vrm",
+ "vroid/3/2339110021874596503/2339110021874596503.vrm",
+ "vroid/3/2343191429035829883/2343191429035829883.vrm",
+ "vroid/3/2347940326961804623/2347940326961804623.vrm",
+ "vroid/3/2362703425934229423/2362703425934229423.vrm",
+ "vroid/3/2363804125948038953/2363804125948038953.vrm",
+ "vroid/3/2369758946281424763/2369758946281424763.vrm",
+ "vroid/3/2387660069509233433/2387660069509233433.vrm",
+ "vroid/3/2388625469125024993/2388625469125024993.vrm",
+ "vroid/3/2394726150214010383/2394726150214010383.vrm",
+ "vroid/3/2395768502412441903/2395768502412441903.vrm",
+ "vroid/3/2396374806967758533/2396374806967758533.vrm",
+ "vroid/3/2405294150332644693/2405294150332644693.vrm",
+ "vroid/3/2412011419870194283/2412011419870194283.vrm",
+ "vroid/3/2417141131720310713/2417141131720310713.vrm",
+ "vroid/3/2426197968176800013/2426197968176800013.vrm",
+ "vroid/3/2449255814611930293/2449255814611930293.vrm",
+ "vroid/3/2455807521054754063/2455807521054754063.vrm",
+ "vroid/3/2458033189670351553/2458033189670351553.vrm",
+ "vroid/3/2464546053786510023/2464546053786510023.vrm",
+ "vroid/3/2467525599647775873/2467525599647775873.vrm",
+ "vroid/3/2467870727196350003/2467870727196350003.vrm",
+ "vroid/3/2476614896954632403/2476614896954632403.vrm",
+ "vroid/3/2476837096630911843/2476837096630911843.vrm",
+ "vroid/3/2478423076377888783/2478423076377888783.vrm",
+ "vroid/3/2487864093800546473/2487864093800546473.vrm",
+ "vroid/3/2497288247905822453/2497288247905822453.vrm",
+ "vroid/3/2504717117135205053/2504717117135205053.vrm",
+ "vroid/3/251699416383259213/251699416383259213.vrm",
+ "vroid/3/2534860216983941993/2534860216983941993.vrm",
+ "vroid/3/253527076065677013/253527076065677013.vrm",
+ "vroid/3/254121803125341403/254121803125341403.vrm",
+ "vroid/3/2541787245580055133/2541787245580055133.vrm",
+ "vroid/3/2555831198558339623/2555831198558339623.vrm",
+ "vroid/3/2583281743970969893/2583281743970969893.vrm",
+ "vroid/3/2583900293180231763/2583900293180231763.vrm",
+ "vroid/3/2590914223627178563/2590914223627178563.vrm",
+ "vroid/3/2593618598192817563/2593618598192817563.vrm",
+ "vroid/3/2598206716396361433/2598206716396361433.vrm",
+ "vroid/3/2603674588060190993/2603674588060190993.vrm",
+ "vroid/3/26038261536472753/26038261536472753.vrm",
+ "vroid/3/2604413506216462163/2604413506216462163.vrm",
+ "vroid/3/2605352694016374993/2605352694016374993.vrm",
+ "vroid/3/2612541823905582103/2612541823905582103.vrm",
+ "vroid/3/2615954859073790253/2615954859073790253.vrm",
+ "vroid/3/2634735906261091363/2634735906261091363.vrm",
+ "vroid/3/2664500543553668343/2664500543553668343.vrm",
+ "vroid/3/2671801726816697133/2671801726816697133.vrm",
+ "vroid/3/2693644674434863913/2693644674434863913.vrm",
+ "vroid/3/2711409419506343823/2711409419506343823.vrm",
+ "vroid/3/2730854765464989923/2730854765464989923.vrm",
+ "vroid/3/2743341926469026283/2743341926469026283.vrm",
+ "vroid/3/2754075486794210213/2754075486794210213.vrm",
+ "vroid/3/2758537742234432853/2758537742234432853.vrm",
+ "vroid/3/2759235138128174463/2759235138128174463.vrm",
+ "vroid/3/2761488975172641983/2761488975172641983.vrm",
+ "vroid/3/2761553440945705773/2761553440945705773.vrm",
+ "vroid/3/2761604229848006273/2761604229848006273.vrm",
+ "vroid/3/2774647057335343563/2774647057335343563.vrm",
+ "vroid/3/2774910068907685253/2774910068907685253.vrm",
+ "vroid/3/2784811169495498703/2784811169495498703.vrm",
+ "vroid/3/2786822104538631453/2786822104538631453.vrm",
+ "vroid/3/2790598426615737153/2790598426615737153.vrm",
+ "vroid/3/2793393548626034063/2793393548626034063.vrm",
+ "vroid/3/2794896040283657983/2794896040283657983.vrm",
+ "vroid/3/2797375420881902793/2797375420881902793.vrm",
+ "vroid/3/2807713388333566813/2807713388333566813.vrm",
+ "vroid/3/2810876996739457903/2810876996739457903.vrm",
+ "vroid/3/2818779714896100323/2818779714896100323.vrm",
+ "vroid/3/2821896593448370223/2821896593448370223.vrm",
+ "vroid/3/2828266897342750063/2828266897342750063.vrm",
+ "vroid/3/2832080024523265553/2832080024523265553.vrm",
+ "vroid/3/2855115974520683573/2855115974520683573.vrm",
+ "vroid/3/2871505395744595603/2871505395744595603.vrm",
+ "vroid/3/2888910692933454873/2888910692933454873.vrm",
+ "vroid/3/2889743159497651913/2889743159497651913.vrm",
+ "vroid/3/2891620618606739843/2891620618606739843.vrm",
+ "vroid/3/2895881574226811213/2895881574226811213.vrm",
+ "vroid/3/2898916308724968423/2898916308724968423.vrm",
+ "vroid/3/2901031427745908863/2901031427745908863.vrm",
+ "vroid/3/2906093671464963303/2906093671464963303.vrm",
+ "vroid/3/2907349599171434383/2907349599171434383.vrm",
+ "vroid/3/2925983232295463253/2925983232295463253.vrm",
+ "vroid/3/292643614995841973/292643614995841973.vrm",
+ "vroid/3/2928897787632996243/2928897787632996243.vrm",
+ "vroid/3/2936023527996325243/2936023527996325243.vrm",
+ "vroid/3/2942697230019206743/2942697230019206743.vrm",
+ "vroid/3/2943232830161000513/2943232830161000513.vrm",
+ "vroid/3/2945812742657351003/2945812742657351003.vrm",
+ "vroid/3/2946402765924768603/2946402765924768603.vrm",
+ "vroid/3/2951183876194906973/2951183876194906973.vrm",
+ "vroid/3/2960243623713133013/2960243623713133013.vrm",
+ "vroid/3/2961941731769882883/2961941731769882883.vrm",
+ "vroid/3/2972287590586920913/2972287590586920913.vrm",
+ "vroid/3/2976123586979151473/2976123586979151473.vrm",
+ "vroid/3/2987290227824946943/2987290227824946943.vrm",
+ "vroid/3/2992661420849403543/2992661420849403543.vrm",
+ "vroid/3/3001574777560317093/3001574777560317093.vrm",
+ "vroid/3/3007644601428214023/3007644601428214023.vrm",
+ "vroid/3/3009283137372099343/3009283137372099343.vrm",
+ "vroid/3/3011133751710979243/3011133751710979243.vrm",
+ "vroid/3/3014883380485848453/3014883380485848453.vrm",
+ "vroid/3/3030599391575397053/3030599391575397053.vrm",
+ "vroid/3/3038200027433502993/3038200027433502993.vrm",
+ "vroid/3/304075888960918803/304075888960918803.vrm",
+ "vroid/3/3050752005740328003/3050752005740328003.vrm",
+ "vroid/3/3050845760193283223/3050845760193283223.vrm",
+ "vroid/3/3067628465261233723/3067628465261233723.vrm",
+ "vroid/3/3070974174005101393/3070974174005101393.vrm",
+ "vroid/3/3074021764206509253/3074021764206509253.vrm",
+ "vroid/3/3079870631047232533/3079870631047232533.vrm",
+ "vroid/3/30806425399249573/30806425399249573.vrm",
+ "vroid/3/3088158537340799423/3088158537340799423.vrm",
+ "vroid/3/3089181918866171013/3089181918866171013.vrm",
+ "vroid/3/3090125421767118793/3090125421767118793.vrm",
+ "vroid/3/3091549605980727223/3091549605980727223.vrm",
+ "vroid/3/3097247219040037143/3097247219040037143.vrm",
+ "vroid/3/3104143169446680033/3104143169446680033.vrm",
+ "vroid/3/3109165577329658103/3109165577329658103.vrm",
+ "vroid/3/3117980490727190613/3117980490727190613.vrm",
+ "vroid/3/3123188731691264713/3123188731691264713.vrm",
+ "vroid/3/3126697082837770783/3126697082837770783.vrm",
+ "vroid/3/3128235810154971173/3128235810154971173.vrm",
+ "vroid/3/3129898194394824093/3129898194394824093.vrm",
+ "vroid/3/3131707966730538903/3131707966730538903.vrm",
+ "vroid/3/3135703975391565853/3135703975391565853.vrm",
+ "vroid/3/3137080747118889373/3137080747118889373.vrm",
+ "vroid/3/3139291433612528893/3139291433612528893.vrm",
+ "vroid/3/3144024577774710973/3144024577774710973.vrm",
+ "vroid/3/3146942362785787673/3146942362785787673.vrm",
+ "vroid/3/3151577116591927253/3151577116591927253.vrm",
+ "vroid/3/3163414286357494903/3163414286357494903.vrm",
+ "vroid/3/3165390486797812773/3165390486797812773.vrm",
+ "vroid/3/3180297332294680673/3180297332294680673.vrm",
+ "vroid/3/3203837813450525183/3203837813450525183.vrm",
+ "vroid/3/3209668789788631363/3209668789788631363.vrm",
+ "vroid/3/3218406022250506863/3218406022250506863.vrm",
+ "vroid/3/3224208604106063503/3224208604106063503.vrm",
+ "vroid/3/3231661312654182673/3231661312654182673.vrm",
+ "vroid/3/3254516276420800773/3254516276420800773.vrm",
+ "vroid/3/3254693805525326653/3254693805525326653.vrm",
+ "vroid/3/3257784371480269763/3257784371480269763.vrm",
+ "vroid/3/3271268203063937483/3271268203063937483.vrm",
+ "vroid/3/3273844011168698093/3273844011168698093.vrm",
+ "vroid/3/3283421712821668743/3283421712821668743.vrm",
+ "vroid/3/328544282993749123/328544282993749123.vrm",
+ "vroid/3/3286516955484130413/3286516955484130413.vrm",
+ "vroid/3/3291151234541016313/3291151234541016313.vrm",
+ "vroid/3/3291183343793720813/3291183343793720813.vrm",
+ "vroid/3/3303749786314819373/3303749786314819373.vrm",
+ "vroid/3/3306209887297827263/3306209887297827263.vrm",
+ "vroid/3/3309650901715165803/3309650901715165803.vrm",
+ "vroid/3/3319313235420590073/3319313235420590073.vrm",
+ "vroid/3/3331581793716470333/3331581793716470333.vrm",
+ "vroid/3/3335245542185905333/3335245542185905333.vrm",
+ "vroid/3/3340022619121559033/3340022619121559033.vrm",
+ "vroid/3/3343971750259936293/3343971750259936293.vrm",
+ "vroid/3/3356415730615695143/3356415730615695143.vrm",
+ "vroid/3/3369352411054124373/3369352411054124373.vrm",
+ "vroid/3/3371486272268275843/3371486272268275843.vrm",
+ "vroid/3/3371607719222309433/3371607719222309433.vrm",
+ "vroid/3/3373110731915244463/3373110731915244463.vrm",
+ "vroid/3/3374063220751048193/3374063220751048193.vrm",
+ "vroid/3/3381361178805416423/3381361178805416423.vrm",
+ "vroid/3/3381401591857550103/3381401591857550103.vrm",
+ "vroid/3/3387115887010667203/3387115887010667203.vrm",
+ "vroid/3/3390948491544641963/3390948491544641963.vrm",
+ "vroid/3/3393097429897954413/3393097429897954413.vrm",
+ "vroid/3/3397950325695203673/3397950325695203673.vrm",
+ "vroid/3/3400530091060885783/3400530091060885783.vrm",
+ "vroid/3/340275887393271303/340275887393271303.vrm",
+ "vroid/3/3410845006161525673/3410845006161525673.vrm",
+ "vroid/3/341644435446062733/341644435446062733.vrm",
+ "vroid/3/3423789196171610633/3423789196171610633.vrm",
+ "vroid/3/3427362232126273823/3427362232126273823.vrm",
+ "vroid/3/3428571247776109603/3428571247776109603.vrm",
+ "vroid/3/3428652350546452423/3428652350546452423.vrm",
+ "vroid/3/3436336954107950403/3436336954107950403.vrm",
+ "vroid/3/3436737565125838263/3436737565125838263.vrm",
+ "vroid/3/3437331346529574743/3437331346529574743.vrm",
+ "vroid/3/3444215787208976973/3444215787208976973.vrm",
+ "vroid/3/3453560697427573333/3453560697427573333.vrm",
+ "vroid/3/3456489124581533953/3456489124581533953.vrm",
+ "vroid/3/3465315339312066313/3465315339312066313.vrm",
+ "vroid/3/3472996924875914173/3472996924875914173.vrm",
+ "vroid/3/3473420682559528163/3473420682559528163.vrm",
+ "vroid/3/347664028893505503/347664028893505503.vrm",
+ "vroid/3/3506940993491789363/3506940993491789363.vrm",
+ "vroid/3/3523412148019573103/3523412148019573103.vrm",
+ "vroid/3/3525131309951035603/3525131309951035603.vrm",
+ "vroid/3/3525791612577328033/3525791612577328033.vrm",
+ "vroid/3/3542903054937827083/3542903054937827083.vrm",
+ "vroid/3/3542950829566545973/3542950829566545973.vrm",
+ "vroid/3/355758713874488343/355758713874488343.vrm",
+ "vroid/3/355870881718526513/355870881718526513.vrm",
+ "vroid/3/3565956607096944623/3565956607096944623.vrm",
+ "vroid/3/357789660565409693/357789660565409693.vrm",
+ "vroid/3/3603300912079832823/3603300912079832823.vrm",
+ "vroid/3/3606007426502286063/3606007426502286063.vrm",
+ "vroid/3/360826282443203173/360826282443203173.vrm",
+ "vroid/3/3636666584297859773/3636666584297859773.vrm",
+ "vroid/3/3651659624787259053/3651659624787259053.vrm",
+ "vroid/3/3655534719725696643/3655534719725696643.vrm",
+ "vroid/3/3660822153563500663/3660822153563500663.vrm",
+ "vroid/3/3662800110754797483/3662800110754797483.vrm",
+ "vroid/3/3677549253602535113/3677549253602535113.vrm",
+ "vroid/3/3679583753966600653/3679583753966600653.vrm",
+ "vroid/3/3683918333956513243/3683918333956513243.vrm",
+ "vroid/3/3685543217747435783/3685543217747435783.vrm",
+ "vroid/3/3726635505673948453/3726635505673948453.vrm",
+ "vroid/3/3731001811847628653/3731001811847628653.vrm",
+ "vroid/3/3733445186299046263/3733445186299046263.vrm",
+ "vroid/3/3745078404411915023/3745078404411915023.vrm",
+ "vroid/3/3752598582146786473/3752598582146786473.vrm",
+ "vroid/3/3757208051196364423/3757208051196364423.vrm",
+ "vroid/3/3757514141713464173/3757514141713464173.vrm",
+ "vroid/3/3760642930810643713/3760642930810643713.vrm",
+ "vroid/3/3761873271851746773/3761873271851746773.vrm",
+ "vroid/3/3765212230326119123/3765212230326119123.vrm",
+ "vroid/3/3767746663193436593/3767746663193436593.vrm",
+ "vroid/3/3770514454944261723/3770514454944261723.vrm",
+ "vroid/3/3782049197069052043/3782049197069052043.vrm",
+ "vroid/3/3789716009451258553/3789716009451258553.vrm",
+ "vroid/3/3794102652856439953/3794102652856439953.vrm",
+ "vroid/3/3795995748269893103/3795995748269893103.vrm",
+ "vroid/3/3796195171591802013/3796195171591802013.vrm",
+ "vroid/3/379889610112784583/379889610112784583.vrm",
+ "vroid/3/3801044327749703913/3801044327749703913.vrm",
+ "vroid/3/3814323604952041013/3814323604952041013.vrm",
+ "vroid/3/3815935286267726123/3815935286267726123.vrm",
+ "vroid/3/3815992723203505783/3815992723203505783.vrm",
+ "vroid/3/3818502379905271693/3818502379905271693.vrm",
+ "vroid/3/3821519359522885823/3821519359522885823.vrm",
+ "vroid/3/382286415843575863/382286415843575863.vrm",
+ "vroid/3/3824039659973193633/3824039659973193633.vrm",
+ "vroid/3/3825024049136864473/3825024049136864473.vrm",
+ "vroid/3/3834572316987831983/3834572316987831983.vrm",
+ "vroid/3/3836301997357138553/3836301997357138553.vrm",
+ "vroid/3/3837039186147411963/3837039186147411963.vrm",
+ "vroid/3/3839354306289646853/3839354306289646853.vrm",
+ "vroid/3/3840200775688336983/3840200775688336983.vrm",
+ "vroid/3/384234306730533173/384234306730533173.vrm",
+ "vroid/3/3872129583662245093/3872129583662245093.vrm",
+ "vroid/3/3873330367378359043/3873330367378359043.vrm",
+ "vroid/3/3878119832934552523/3878119832934552523.vrm",
+ "vroid/3/3893906657622647213/3893906657622647213.vrm",
+ "vroid/3/3896577222490477683/3896577222490477683.vrm",
+ "vroid/3/3901765515833253253/3901765515833253253.vrm",
+ "vroid/3/3920394029419623883/3920394029419623883.vrm",
+ "vroid/3/3927140802254440973/3927140802254440973.vrm",
+ "vroid/3/3931452965897195073/3931452965897195073.vrm",
+ "vroid/3/3932895462885304883/3932895462885304883.vrm",
+ "vroid/3/3941710224166093243/3941710224166093243.vrm",
+ "vroid/3/3942180503407881683/3942180503407881683.vrm",
+ "vroid/3/3951530788401416123/3951530788401416123.vrm",
+ "vroid/3/3953028511661461823/3953028511661461823.vrm",
+ "vroid/3/3968615886162859413/3968615886162859413.vrm",
+ "vroid/3/3968705977490175983/3968705977490175983.vrm",
+ "vroid/3/3976916034592817673/3976916034592817673.vrm",
+ "vroid/3/3986309793164881793/3986309793164881793.vrm",
+ "vroid/3/3998395869537088143/3998395869537088143.vrm",
+ "vroid/3/4002115698337785543/4002115698337785543.vrm",
+ "vroid/3/4003748146497290413/4003748146497290413.vrm",
+ "vroid/3/4006568588333650243/4006568588333650243.vrm",
+ "vroid/3/4009208193967831273/4009208193967831273.vrm",
+ "vroid/3/4010021021007898943/4010021021007898943.vrm",
+ "vroid/3/4012897761483117833/4012897761483117833.vrm",
+ "vroid/3/4016719517382521373/4016719517382521373.vrm",
+ "vroid/3/4019683323068446733/4019683323068446733.vrm",
+ "vroid/3/4025750153293699633/4025750153293699633.vrm",
+ "vroid/3/4029457123324950633/4029457123324950633.vrm",
+ "vroid/3/4035071186873307563/4035071186873307563.vrm",
+ "vroid/3/4038728624667921633/4038728624667921633.vrm",
+ "vroid/3/4039431816670854013/4039431816670854013.vrm",
+ "vroid/3/4039927923005068523/4039927923005068523.vrm",
+ "vroid/3/4039956347981820983/4039956347981820983.vrm",
+ "vroid/3/404974278667319003/404974278667319003.vrm",
+ "vroid/3/4064206682021827313/4064206682021827313.vrm",
+ "vroid/3/4066133015423582903/4066133015423582903.vrm",
+ "vroid/3/4067931640654570003/4067931640654570003.vrm",
+ "vroid/3/4069442913316567523/4069442913316567523.vrm",
+ "vroid/3/4105993803979103013/4105993803979103013.vrm",
+ "vroid/3/4118767974375244103/4118767974375244103.vrm",
+ "vroid/3/4119171647104079453/4119171647104079453.vrm",
+ "vroid/3/412016789119623153/412016789119623153.vrm",
+ "vroid/3/4126206910126202693/4126206910126202693.vrm",
+ "vroid/3/412628541458115723/412628541458115723.vrm",
+ "vroid/3/4133871064416339223/4133871064416339223.vrm",
+ "vroid/3/414241195814877043/414241195814877043.vrm",
+ "vroid/3/4149422984149986433/4149422984149986433.vrm",
+ "vroid/3/4160108318202521173/4160108318202521173.vrm",
+ "vroid/3/4163587366289010003/4163587366289010003.vrm",
+ "vroid/3/4165927054478767783/4165927054478767783.vrm",
+ "vroid/3/4173163252907756263/4173163252907756263.vrm",
+ "vroid/3/4178308177512802003/4178308177512802003.vrm",
+ "vroid/3/4179213866032040593/4179213866032040593.vrm",
+ "vroid/3/4182664018166291173/4182664018166291173.vrm",
+ "vroid/3/418548703059492153/418548703059492153.vrm",
+ "vroid/3/4189012509709677753/4189012509709677753.vrm",
+ "vroid/3/4219178576020770673/4219178576020770673.vrm",
+ "vroid/3/4223813457938072573/4223813457938072573.vrm",
+ "vroid/3/4224488058671093503/4224488058671093503.vrm",
+ "vroid/3/4224984605186758403/4224984605186758403.vrm",
+ "vroid/3/4227726538279421493/4227726538279421493.vrm",
+ "vroid/3/4234278018884985983/4234278018884985983.vrm",
+ "vroid/3/4234527897594640193/4234527897594640193.vrm",
+ "vroid/3/4241368665895328383/4241368665895328383.vrm",
+ "vroid/3/424803040672360533/424803040672360533.vrm",
+ "vroid/3/424830547089758383/424830547089758383.vrm",
+ "vroid/3/4248313807636410363/4248313807636410363.vrm",
+ "vroid/3/4250916351467305983/4250916351467305983.vrm",
+ "vroid/3/4255520082615966313/4255520082615966313.vrm",
+ "vroid/3/42590255319964973/42590255319964973.vrm",
+ "vroid/3/4264262483741500763/4264262483741500763.vrm",
+ "vroid/3/4280673999031803173/4280673999031803173.vrm",
+ "vroid/3/4306933966373216673/4306933966373216673.vrm",
+ "vroid/3/4307435689630402783/4307435689630402783.vrm",
+ "vroid/3/4321072524734846363/4321072524734846363.vrm",
+ "vroid/3/4326142117361364913/4326142117361364913.vrm",
+ "vroid/3/4328275859979536043/4328275859979536043.vrm",
+ "vroid/3/433053965835849473/433053965835849473.vrm",
+ "vroid/3/4337503029151181733/4337503029151181733.vrm",
+ "vroid/3/4380549049974448183/4380549049974448183.vrm",
+ "vroid/3/4390370895584773043/4390370895584773043.vrm",
+ "vroid/3/4398172501722365653/4398172501722365653.vrm",
+ "vroid/3/4398465440364352073/4398465440364352073.vrm",
+ "vroid/3/4398947929552025793/4398947929552025793.vrm",
+ "vroid/3/4402818084527065813/4402818084527065813.vrm",
+ "vroid/3/4411207344702935743/4411207344702935743.vrm",
+ "vroid/3/4413758190507918203/4413758190507918203.vrm",
+ "vroid/3/4414984268523586293/4414984268523586293.vrm",
+ "vroid/3/4419415376096835873/4419415376096835873.vrm",
+ "vroid/3/4424679446232996723/4424679446232996723.vrm",
+ "vroid/3/4431791432926684773/4431791432926684773.vrm",
+ "vroid/3/4432162651735963343/4432162651735963343.vrm",
+ "vroid/3/443350072694290843/443350072694290843.vrm",
+ "vroid/3/4439079187668441793/4439079187668441793.vrm",
+ "vroid/3/4443534317825729653/4443534317825729653.vrm",
+ "vroid/3/4449535904803874973/4449535904803874973.vrm",
+ "vroid/3/4459414896852336953/4459414896852336953.vrm",
+ "vroid/3/4465455804351597603/4465455804351597603.vrm",
+ "vroid/3/4466978418259763483/4466978418259763483.vrm",
+ "vroid/3/4470142953807462403/4470142953807462403.vrm",
+ "vroid/3/4474392028623326463/4474392028623326463.vrm",
+ "vroid/3/4476825385210294093/4476825385210294093.vrm",
+ "vroid/3/4483414875238004743/4483414875238004743.vrm",
+ "vroid/3/4483799588972943303/4483799588972943303.vrm",
+ "vroid/3/4488819925343164603/4488819925343164603.vrm",
+ "vroid/3/4495812979916686173/4495812979916686173.vrm",
+ "vroid/3/449581594761350973/449581594761350973.vrm",
+ "vroid/3/4498098494395352883/4498098494395352883.vrm",
+ "vroid/3/4503562569152568183/4503562569152568183.vrm",
+ "vroid/3/4521283458467711523/4521283458467711523.vrm",
+ "vroid/3/4523379039112367383/4523379039112367383.vrm",
+ "vroid/3/453005548423575233/453005548423575233.vrm",
+ "vroid/3/4531998551442934313/4531998551442934313.vrm",
+ "vroid/3/4532277464911519793/4532277464911519793.vrm",
+ "vroid/3/4532776261430191433/4532776261430191433.vrm",
+ "vroid/3/4543146929210374703/4543146929210374703.vrm",
+ "vroid/3/4548064921143333313/4548064921143333313.vrm",
+ "vroid/3/4552246683444103733/4552246683444103733.vrm",
+ "vroid/3/4561486144996773683/4561486144996773683.vrm",
+ "vroid/3/4574318620109004873/4574318620109004873.vrm",
+ "vroid/3/4579363324627461453/4579363324627461453.vrm",
+ "vroid/3/4579710624623460083/4579710624623460083.vrm",
+ "vroid/3/4590519451429794613/4590519451429794613.vrm",
+ "vroid/3/461214489355250813/461214489355250813.vrm",
+ "vroid/3/4621559582526883/4621559582526883.vrm",
+ "vroid/3/4632243465461989613/4632243465461989613.vrm",
+ "vroid/3/4633554672541925293/4633554672541925293.vrm",
+ "vroid/3/4640844885998096733/4640844885998096733.vrm",
+ "vroid/3/4649484666968089693/4649484666968089693.vrm",
+ "vroid/3/4649608112536448993/4649608112536448993.vrm",
+ "vroid/3/4651638588223069693/4651638588223069693.vrm",
+ "vroid/3/4665808909041721863/4665808909041721863.vrm",
+ "vroid/3/4668510707019994993/4668510707019994993.vrm",
+ "vroid/3/4671598169449828183/4671598169449828183.vrm",
+ "vroid/3/4687954388558310823/4687954388558310823.vrm",
+ "vroid/3/4690219138491622653/4690219138491622653.vrm",
+ "vroid/3/4726007720599902353/4726007720599902353.vrm",
+ "vroid/3/4728961955850264373/4728961955850264373.vrm",
+ "vroid/3/4734428677943974203/4734428677943974203.vrm",
+ "vroid/3/473850194802898723/473850194802898723.vrm",
+ "vroid/3/4741853417326944013/4741853417326944013.vrm",
+ "vroid/3/4742822505195047423/4742822505195047423.vrm",
+ "vroid/3/4743173224485814973/4743173224485814973.vrm",
+ "vroid/3/4750948401968006753/4750948401968006753.vrm",
+ "vroid/3/4754954774201977533/4754954774201977533.vrm",
+ "vroid/3/4757205849373055133/4757205849373055133.vrm",
+ "vroid/3/4757877242808799803/4757877242808799803.vrm",
+ "vroid/3/4767471923261329223/4767471923261329223.vrm",
+ "vroid/3/4768727380105932283/4768727380105932283.vrm",
+ "vroid/3/4780043027367489683/4780043027367489683.vrm",
+ "vroid/3/4784885962249063213/4784885962249063213.vrm",
+ "vroid/3/4785278436283981733/4785278436283981733.vrm",
+ "vroid/3/4794867160112113133/4794867160112113133.vrm",
+ "vroid/3/4796478438764592333/4796478438764592333.vrm",
+ "vroid/3/4797381000134824183/4797381000134824183.vrm",
+ "vroid/3/4806983698229749003/4806983698229749003.vrm",
+ "vroid/3/4807129838418324733/4807129838418324733.vrm",
+ "vroid/3/4814780557630045173/4814780557630045173.vrm",
+ "vroid/3/4818592442832280693/4818592442832280693.vrm",
+ "vroid/3/4820305073989208443/4820305073989208443.vrm",
+ "vroid/3/4820344821608176823/4820344821608176823.vrm",
+ "vroid/3/4820852255998380203/4820852255998380203.vrm",
+ "vroid/3/4828224633843910283/4828224633843910283.vrm",
+ "vroid/3/482996986693337123/482996986693337123.vrm",
+ "vroid/3/4837425562510762643/4837425562510762643.vrm",
+ "vroid/3/4839676773403380673/4839676773403380673.vrm",
+ "vroid/3/4847593487392262593/4847593487392262593.vrm",
+ "vroid/3/4850584457507960753/4850584457507960753.vrm",
+ "vroid/3/4853960865412697923/4853960865412697923.vrm",
+ "vroid/3/4882471568671269023/4882471568671269023.vrm",
+ "vroid/3/4890297422426932343/4890297422426932343.vrm",
+ "vroid/3/4893874447773783163/4893874447773783163.vrm",
+ "vroid/3/4895206470943262623/4895206470943262623.vrm",
+ "vroid/3/4898160243500542813/4898160243500542813.vrm",
+ "vroid/3/4909753373330315493/4909753373330315493.vrm",
+ "vroid/3/4910260645204753493/4910260645204753493.vrm",
+ "vroid/3/4911021823516220193/4911021823516220193.vrm",
+ "vroid/3/4911696901041385313/4911696901041385313.vrm",
+ "vroid/3/4915163897291682003/4915163897291682003.vrm",
+ "vroid/3/4922639049898806913/4922639049898806913.vrm",
+ "vroid/3/4924928088487924483/4924928088487924483.vrm",
+ "vroid/3/4931316243541780623/4931316243541780623.vrm",
+ "vroid/3/4933478127395617853/4933478127395617853.vrm",
+ "vroid/3/4933842745970534333/4933842745970534333.vrm",
+ "vroid/3/4943499651091960423/4943499651091960423.vrm",
+ "vroid/3/4945477734240634483/4945477734240634483.vrm",
+ "vroid/3/4948821583918098113/4948821583918098113.vrm",
+ "vroid/3/4956665404749893653/4956665404749893653.vrm",
+ "vroid/3/4961327097627052283/4961327097627052283.vrm",
+ "vroid/3/4965522933297130543/4965522933297130543.vrm",
+ "vroid/3/4976804457047767323/4976804457047767323.vrm",
+ "vroid/3/4985462854759152263/4985462854759152263.vrm",
+ "vroid/3/5000430812650603453/5000430812650603453.vrm",
+ "vroid/3/5006361672693158133/5006361672693158133.vrm",
+ "vroid/3/5007385710038818423/5007385710038818423.vrm",
+ "vroid/3/5021243733911153293/5021243733911153293.vrm",
+ "vroid/3/5025720019987463523/5025720019987463523.vrm",
+ "vroid/3/5032252693744548583/5032252693744548583.vrm",
+ "vroid/3/5043653577176737253/5043653577176737253.vrm",
+ "vroid/3/5045946222444720203/5045946222444720203.vrm",
+ "vroid/3/5046311630536504673/5046311630536504673.vrm",
+ "vroid/3/5046740926769088023/5046740926769088023.vrm",
+ "vroid/3/505270318767878003/505270318767878003.vrm",
+ "vroid/3/506390293016086833/506390293016086833.vrm",
+ "vroid/3/5073310188870600023/5073310188870600023.vrm",
+ "vroid/3/5086249136665929873/5086249136665929873.vrm",
+ "vroid/3/5087563825496399123/5087563825496399123.vrm",
+ "vroid/3/5093659356818161593/5093659356818161593.vrm",
+ "vroid/3/5100416502338582813/5100416502338582813.vrm",
+ "vroid/3/5101731875791878913/5101731875791878913.vrm",
+ "vroid/3/5103442855114150413/5103442855114150413.vrm",
+ "vroid/3/5103592228707312313/5103592228707312313.vrm",
+ "vroid/3/5105326671102635813/5105326671102635813.vrm",
+ "vroid/3/5128221828209122063/5128221828209122063.vrm",
+ "vroid/3/5129083298392066923/5129083298392066923.vrm",
+ "vroid/3/5131246365062499933/5131246365062499933.vrm",
+ "vroid/3/5131641055403315923/5131641055403315923.vrm",
+ "vroid/3/5132798291335678023/5132798291335678023.vrm",
+ "vroid/3/5135297894314829183/5135297894314829183.vrm",
+ "vroid/3/5135771707117623213/5135771707117623213.vrm",
+ "vroid/3/5140870824013145193/5140870824013145193.vrm",
+ "vroid/3/5143060280685644453/5143060280685644453.vrm",
+ "vroid/3/5159948761327159373/5159948761327159373.vrm",
+ "vroid/3/5170007545915290253/5170007545915290253.vrm",
+ "vroid/3/5170722977896751143/5170722977896751143.vrm",
+ "vroid/3/5175715654123618513/5175715654123618513.vrm",
+ "vroid/3/5188126800366559893/5188126800366559893.vrm",
+ "vroid/3/5191963093015856873/5191963093015856873.vrm",
+ "vroid/3/5204013134706272913/5204013134706272913.vrm",
+ "vroid/3/5206484181994218153/5206484181994218153.vrm",
+ "vroid/3/5206653761386154353/5206653761386154353.vrm",
+ "vroid/3/5211207779264688233/5211207779264688233.vrm",
+ "vroid/3/5215282993262951523/5215282993262951523.vrm",
+ "vroid/3/522208060684489983/522208060684489983.vrm",
+ "vroid/3/5224395739046739893/5224395739046739893.vrm",
+ "vroid/3/5230725929421019283/5230725929421019283.vrm",
+ "vroid/3/5232644748031178713/5232644748031178713.vrm",
+ "vroid/3/5239707242018124973/5239707242018124973.vrm",
+ "vroid/3/5246353289513024673/5246353289513024673.vrm",
+ "vroid/3/5249300827034551223/5249300827034551223.vrm",
+ "vroid/3/5256550726657819743/5256550726657819743.vrm",
+ "vroid/3/5257159256072657703/5257159256072657703.vrm",
+ "vroid/3/5283458459618495103/5283458459618495103.vrm",
+ "vroid/3/5285869235358627933/5285869235358627933.vrm",
+ "vroid/3/5296422470883699013/5296422470883699013.vrm",
+ "vroid/3/5306361997149740513/5306361997149740513.vrm",
+ "vroid/3/5314513879936966843/5314513879936966843.vrm",
+ "vroid/3/5314780879463064233/5314780879463064233.vrm",
+ "vroid/3/5315041727230031823/5315041727230031823.vrm",
+ "vroid/3/5319986814257972803/5319986814257972803.vrm",
+ "vroid/3/5321564356808317673/5321564356808317673.vrm",
+ "vroid/3/5324463923020193123/5324463923020193123.vrm",
+ "vroid/3/5324985756938222573/5324985756938222573.vrm",
+ "vroid/3/5349324076279548663/5349324076279548663.vrm",
+ "vroid/3/535314897363476913/535314897363476913.vrm",
+ "vroid/3/537531113514541613/537531113514541613.vrm",
+ "vroid/3/5382955670590100173/5382955670590100173.vrm",
+ "vroid/3/538947081538161813/538947081538161813.vrm",
+ "vroid/3/541568955100336303/541568955100336303.vrm",
+ "vroid/3/54161351892430503/54161351892430503.vrm",
+ "vroid/3/5418048640572363973/5418048640572363973.vrm",
+ "vroid/3/5433075351199653863/5433075351199653863.vrm",
+ "vroid/3/5443482058184918283/5443482058184918283.vrm",
+ "vroid/3/5451989996205050163/5451989996205050163.vrm",
+ "vroid/3/5460351055509591033/5460351055509591033.vrm",
+ "vroid/3/5463567720269461373/5463567720269461373.vrm",
+ "vroid/3/5464490792055094103/5464490792055094103.vrm",
+ "vroid/3/5464622927975336483/5464622927975336483.vrm",
+ "vroid/3/5481543690468533283/5481543690468533283.vrm",
+ "vroid/3/5487317706806274873/5487317706806274873.vrm",
+ "vroid/3/5511450783028534503/5511450783028534503.vrm",
+ "vroid/3/5512438410739868243/5512438410739868243.vrm",
+ "vroid/3/5514526301959586573/5514526301959586573.vrm",
+ "vroid/3/5520689415801143193/5520689415801143193.vrm",
+ "vroid/3/5522915515125385003/5522915515125385003.vrm",
+ "vroid/3/5523200696352135293/5523200696352135293.vrm",
+ "vroid/3/552323096019071893/552323096019071893.vrm",
+ "vroid/3/5526201643295310343/5526201643295310343.vrm",
+ "vroid/3/5528998619680412383/5528998619680412383.vrm",
+ "vroid/3/5540146588867710143/5540146588867710143.vrm",
+ "vroid/3/5546234299707999503/5546234299707999503.vrm",
+ "vroid/3/5550964294914912563/5550964294914912563.vrm",
+ "vroid/3/5551852023216327773/5551852023216327773.vrm",
+ "vroid/3/5553937433280223613/5553937433280223613.vrm",
+ "vroid/3/5558202476649691603/5558202476649691603.vrm",
+ "vroid/3/5564131269287919653/5564131269287919653.vrm",
+ "vroid/3/557264301075243263/557264301075243263.vrm",
+ "vroid/3/5575636099597180123/5575636099597180123.vrm",
+ "vroid/3/5580708046197655093/5580708046197655093.vrm",
+ "vroid/3/5586366413714245953/5586366413714245953.vrm",
+ "vroid/3/5590644354574892743/5590644354574892743.vrm",
+ "vroid/3/559932627370530813/559932627370530813.vrm",
+ "vroid/3/5605010914074891913/5605010914074891913.vrm",
+ "vroid/3/5611508807452564433/5611508807452564433.vrm",
+ "vroid/3/5612184339400495333/5612184339400495333.vrm",
+ "vroid/3/5615189115551923983/5615189115551923983.vrm",
+ "vroid/3/5618652786430251653/5618652786430251653.vrm",
+ "vroid/3/5638624753904224953/5638624753904224953.vrm",
+ "vroid/3/5660815674054178913/5660815674054178913.vrm",
+ "vroid/3/5669049866595403963/5669049866595403963.vrm",
+ "vroid/3/5669473825398355613/5669473825398355613.vrm",
+ "vroid/3/5674501942980006443/5674501942980006443.vrm",
+ "vroid/3/5677064444015133503/5677064444015133503.vrm",
+ "vroid/3/5677065286513368023/5677065286513368023.vrm",
+ "vroid/3/5678946914587284973/5678946914587284973.vrm",
+ "vroid/3/5685310128729622343/5685310128729622343.vrm",
+ "vroid/3/5693575368601008753/5693575368601008753.vrm",
+ "vroid/3/5704840537841976003/5704840537841976003.vrm",
+ "vroid/3/5726451039188762273/5726451039188762273.vrm",
+ "vroid/3/5755743183369980203/5755743183369980203.vrm",
+ "vroid/3/5759217260781714893/5759217260781714893.vrm",
+ "vroid/3/5759390714776405273/5759390714776405273.vrm",
+ "vroid/3/5761329275155874023/5761329275155874023.vrm",
+ "vroid/3/5767001413510675963/5767001413510675963.vrm",
+ "vroid/3/5780255812365189633/5780255812365189633.vrm",
+ "vroid/3/5793365020885368793/5793365020885368793.vrm",
+ "vroid/3/5801950896797720953/5801950896797720953.vrm",
+ "vroid/3/5804585806983230143/5804585806983230143.vrm",
+ "vroid/3/5805439166977441693/5805439166977441693.vrm",
+ "vroid/3/5812376474912461403/5812376474912461403.vrm",
+ "vroid/3/5812624248298468103/5812624248298468103.vrm",
+ "vroid/3/5812677046844479693/5812677046844479693.vrm",
+ "vroid/3/5817289027281151963/5817289027281151963.vrm",
+ "vroid/3/58356489114100643/58356489114100643.vrm",
+ "vroid/3/5836455443884917763/5836455443884917763.vrm",
+ "vroid/3/5859374378408139413/5859374378408139413.vrm",
+ "vroid/3/5876263819924843093/5876263819924843093.vrm",
+ "vroid/3/5883986458375682513/5883986458375682513.vrm",
+ "vroid/3/5886081538831140633/5886081538831140633.vrm",
+ "vroid/3/5886478997708374803/5886478997708374803.vrm",
+ "vroid/3/5891379747707740453/5891379747707740453.vrm",
+ "vroid/3/589978576266576093/589978576266576093.vrm",
+ "vroid/3/5905822359597354003/5905822359597354003.vrm",
+ "vroid/3/5912317182965504893/5912317182965504893.vrm",
+ "vroid/3/5919087748985541893/5919087748985541893.vrm",
+ "vroid/3/5921895508919975663/5921895508919975663.vrm",
+ "vroid/3/5930316325962238983/5930316325962238983.vrm",
+ "vroid/3/5943089177390494573/5943089177390494573.vrm",
+ "vroid/3/595849210309179693/595849210309179693.vrm",
+ "vroid/3/59659255624874453/59659255624874453.vrm",
+ "vroid/3/5968344511857198733/5968344511857198733.vrm",
+ "vroid/3/5970290422990604833/5970290422990604833.vrm",
+ "vroid/3/5971207385286757943/5971207385286757943.vrm",
+ "vroid/3/5971956834614159363/5971956834614159363.vrm",
+ "vroid/3/5976296906635233193/5976296906635233193.vrm",
+ "vroid/3/5986059134672120443/5986059134672120443.vrm",
+ "vroid/3/5986298662802155253/5986298662802155253.vrm",
+ "vroid/3/6000720520784890733/6000720520784890733.vrm",
+ "vroid/3/600277288665519343/600277288665519343.vrm",
+ "vroid/3/6003247051917616533/6003247051917616533.vrm",
+ "vroid/3/6014454049723139083/6014454049723139083.vrm",
+ "vroid/3/6027004489203091823/6027004489203091823.vrm",
+ "vroid/3/6027843880774122853/6027843880774122853.vrm",
+ "vroid/3/6037352517894001683/6037352517894001683.vrm",
+ "vroid/3/603818408386122723/603818408386122723.vrm",
+ "vroid/3/6038754210383974343/6038754210383974343.vrm",
+ "vroid/3/6038956950652941663/6038956950652941663.vrm",
+ "vroid/3/6042202070817275373/6042202070817275373.vrm",
+ "vroid/3/604604881987881253/604604881987881253.vrm",
+ "vroid/3/6050439572437625103/6050439572437625103.vrm",
+ "vroid/3/6052234555531379953/6052234555531379953.vrm",
+ "vroid/3/605306139349143413/605306139349143413.vrm",
+ "vroid/3/6060953150171867653/6060953150171867653.vrm",
+ "vroid/3/6064521109874100023/6064521109874100023.vrm",
+ "vroid/3/6064986877329759793/6064986877329759793.vrm",
+ "vroid/3/6088356989047600183/6088356989047600183.vrm",
+ "vroid/3/6089031061085053143/6089031061085053143.vrm",
+ "vroid/3/6091154431638602183/6091154431638602183.vrm",
+ "vroid/3/6112638883590440813/6112638883590440813.vrm",
+ "vroid/3/6113307266297697733/6113307266297697733.vrm",
+ "vroid/3/611522516428915833/611522516428915833.vrm",
+ "vroid/3/6117868846290259573/6117868846290259573.vrm",
+ "vroid/3/6126041197871904243/6126041197871904243.vrm",
+ "vroid/3/6129630079615679413/6129630079615679413.vrm",
+ "vroid/3/6150371710003748393/6150371710003748393.vrm",
+ "vroid/3/6159642200931523803/6159642200931523803.vrm",
+ "vroid/3/6164110345576644123/6164110345576644123.vrm",
+ "vroid/3/617152248567372403/617152248567372403.vrm",
+ "vroid/3/6191833227484182283/6191833227484182283.vrm",
+ "vroid/3/6195586444779081073/6195586444779081073.vrm",
+ "vroid/3/6202102267734934983/6202102267734934983.vrm",
+ "vroid/3/6212357532929727983/6212357532929727983.vrm",
+ "vroid/3/6224576568901140763/6224576568901140763.vrm",
+ "vroid/3/6225670290099542903/6225670290099542903.vrm",
+ "vroid/3/6225916384169133833/6225916384169133833.vrm",
+ "vroid/3/6232619294152759233/6232619294152759233.vrm",
+ "vroid/3/6234351309654358163/6234351309654358163.vrm",
+ "vroid/3/6237086427260515783/6237086427260515783.vrm",
+ "vroid/3/6237314269486860923/6237314269486860923.vrm",
+ "vroid/3/6243093961287102583/6243093961287102583.vrm",
+ "vroid/3/6243985023460516353/6243985023460516353.vrm",
+ "vroid/3/6246540033384508793/6246540033384508793.vrm",
+ "vroid/3/624682478797278543/624682478797278543.vrm",
+ "vroid/3/6252496108574304943/6252496108574304943.vrm",
+ "vroid/3/6252501164420523863/6252501164420523863.vrm",
+ "vroid/3/6260806237225927323/6260806237225927323.vrm",
+ "vroid/3/6262098144992983123/6262098144992983123.vrm",
+ "vroid/3/6275441891015832813/6275441891015832813.vrm",
+ "vroid/3/6278230202689166613/6278230202689166613.vrm",
+ "vroid/3/6282479406020274673/6282479406020274673.vrm",
+ "vroid/3/6282954362890159043/6282954362890159043.vrm",
+ "vroid/3/6285155234327913443/6285155234327913443.vrm",
+ "vroid/3/6289460471097473203/6289460471097473203.vrm",
+ "vroid/3/6295156971852586053/6295156971852586053.vrm",
+ "vroid/3/6303876453618645263/6303876453618645263.vrm",
+ "vroid/3/6308302299904440113/6308302299904440113.vrm",
+ "vroid/3/6313158990697989213/6313158990697989213.vrm",
+ "vroid/3/6327293306673778133/6327293306673778133.vrm",
+ "vroid/3/6328967473283406923/6328967473283406923.vrm",
+ "vroid/3/6333394867182102253/6333394867182102253.vrm",
+ "vroid/3/6334560914448587313/6334560914448587313.vrm",
+ "vroid/3/63381111249527413/63381111249527413.vrm",
+ "vroid/3/6342263473313804313/6342263473313804313.vrm",
+ "vroid/3/6360809473515527413/6360809473515527413.vrm",
+ "vroid/3/6361684564702115373/6361684564702115373.vrm",
+ "vroid/3/6367513288924479393/6367513288924479393.vrm",
+ "vroid/3/637134198387973933/637134198387973933.vrm",
+ "vroid/3/6376244265002218623/6376244265002218623.vrm",
+ "vroid/3/6381892956926176093/6381892956926176093.vrm",
+ "vroid/3/6382454017732456063/6382454017732456063.vrm",
+ "vroid/3/6384163679516639743/6384163679516639743.vrm",
+ "vroid/3/640113050279950663/640113050279950663.vrm",
+ "vroid/3/6416969242395519083/6416969242395519083.vrm",
+ "vroid/3/6417018655147166613/6417018655147166613.vrm",
+ "vroid/3/641796884715615963/641796884715615963.vrm",
+ "vroid/3/6420948867901305443/6420948867901305443.vrm",
+ "vroid/3/642495181627729033/642495181627729033.vrm",
+ "vroid/3/6426502150879816783/6426502150879816783.vrm",
+ "vroid/3/6444673042413325193/6444673042413325193.vrm",
+ "vroid/3/6449802825616607573/6449802825616607573.vrm",
+ "vroid/3/6450725497572843923/6450725497572843923.vrm",
+ "vroid/3/6471435486981101363/6471435486981101363.vrm",
+ "vroid/3/6471552871136847913/6471552871136847913.vrm",
+ "vroid/3/6476415938957962633/6476415938957962633.vrm",
+ "vroid/3/6483630865247989743/6483630865247989743.vrm",
+ "vroid/3/6484725346729263473/6484725346729263473.vrm",
+ "vroid/3/6519025107971781043/6519025107971781043.vrm",
+ "vroid/3/6525912831659547523/6525912831659547523.vrm",
+ "vroid/3/6529427981839151973/6529427981839151973.vrm",
+ "vroid/3/6533860692775108473/6533860692775108473.vrm",
+ "vroid/3/6534950024089237653/6534950024089237653.vrm",
+ "vroid/3/654121199487383363/654121199487383363.vrm",
+ "vroid/3/6547056222955912353/6547056222955912353.vrm",
+ "vroid/3/6552408864062077873/6552408864062077873.vrm",
+ "vroid/3/6561307844714050743/6561307844714050743.vrm",
+ "vroid/3/6572132060494923443/6572132060494923443.vrm",
+ "vroid/3/6576897220312091833/6576897220312091833.vrm",
+ "vroid/3/6585395051784519323/6585395051784519323.vrm",
+ "vroid/3/6587396138077966333/6587396138077966333.vrm",
+ "vroid/3/6591630466089427693/6591630466089427693.vrm",
+ "vroid/3/659197532399240443/659197532399240443.vrm",
+ "vroid/3/6592469042358759003/6592469042358759003.vrm",
+ "vroid/3/6598916172483925393/6598916172483925393.vrm",
+ "vroid/3/6601369478223458153/6601369478223458153.vrm",
+ "vroid/3/6609141258291937953/6609141258291937953.vrm",
+ "vroid/3/6611487682540555093/6611487682540555093.vrm",
+ "vroid/3/661600091288288883/661600091288288883.vrm",
+ "vroid/3/6622014274666102863/6622014274666102863.vrm",
+ "vroid/3/6623301005850812233/6623301005850812233.vrm",
+ "vroid/3/6630089657687973623/6630089657687973623.vrm",
+ "vroid/3/6633315699578416573/6633315699578416573.vrm",
+ "vroid/3/6636547014861986043/6636547014861986043.vrm",
+ "vroid/3/6641440007502131623/6641440007502131623.vrm",
+ "vroid/3/6642385983595143533/6642385983595143533.vrm",
+ "vroid/3/6650527556712225633/6650527556712225633.vrm",
+ "vroid/3/6654342004598497753/6654342004598497753.vrm",
+ "vroid/3/6656317980830834993/6656317980830834993.vrm",
+ "vroid/3/6660199431343688633/6660199431343688633.vrm",
+ "vroid/3/6663676831222881343/6663676831222881343.vrm",
+ "vroid/3/6676068114440953133/6676068114440953133.vrm",
+ "vroid/3/6681379410142047483/6681379410142047483.vrm",
+ "vroid/3/6682500824777996333/6682500824777996333.vrm",
+ "vroid/3/6686126289280304083/6686126289280304083.vrm",
+ "vroid/3/668736714293084943/668736714293084943.vrm",
+ "vroid/3/6689535652738017773/6689535652738017773.vrm",
+ "vroid/3/6689695945343414173/6689695945343414173.vrm",
+ "vroid/3/6693845726863269923/6693845726863269923.vrm",
+ "vroid/3/6702353458033383553/6702353458033383553.vrm",
+ "vroid/3/6703137316210223043/6703137316210223043.vrm",
+ "vroid/3/6705797052278783053/6705797052278783053.vrm",
+ "vroid/3/6707671366066478663/6707671366066478663.vrm",
+ "vroid/3/6712470536061135383/6712470536061135383.vrm",
+ "vroid/3/6713367303710047513/6713367303710047513.vrm",
+ "vroid/3/6717363230252999083/6717363230252999083.vrm",
+ "vroid/3/6719017312476039173/6719017312476039173.vrm",
+ "vroid/3/6720193633695801523/6720193633695801523.vrm",
+ "vroid/3/6721198737295149193/6721198737295149193.vrm",
+ "vroid/3/6723068652267476603/6723068652267476603.vrm",
+ "vroid/3/6731544005085233813/6731544005085233813.vrm",
+ "vroid/3/6735400019433760513/6735400019433760513.vrm",
+ "vroid/3/6752165843335969983/6752165843335969983.vrm",
+ "vroid/3/6756846697426707023/6756846697426707023.vrm",
+ "vroid/3/6760688721988911433/6760688721988911433.vrm",
+ "vroid/3/6774751492126094773/6774751492126094773.vrm",
+ "vroid/3/6775395444992863063/6775395444992863063.vrm",
+ "vroid/3/6804008292710344233/6804008292710344233.vrm",
+ "vroid/3/6810942544358591593/6810942544358591593.vrm",
+ "vroid/3/681353271520015263/681353271520015263.vrm",
+ "vroid/3/6816613200692252333/6816613200692252333.vrm",
+ "vroid/3/6816780302182339833/6816780302182339833.vrm",
+ "vroid/3/682075445492381493/682075445492381493.vrm",
+ "vroid/3/6820830952329841473/6820830952329841473.vrm",
+ "vroid/3/6822878015107633153/6822878015107633153.vrm",
+ "vroid/3/682795477304681383/682795477304681383.vrm",
+ "vroid/3/6828368342012444923/6828368342012444923.vrm",
+ "vroid/3/6833704907884976123/6833704907884976123.vrm",
+ "vroid/3/6869826121935368723/6869826121935368723.vrm",
+ "vroid/3/6875207609515472793/6875207609515472793.vrm",
+ "vroid/3/688203144880428243/688203144880428243.vrm",
+ "vroid/3/6886541766924128273/6886541766924128273.vrm",
+ "vroid/3/6898324111999029403/6898324111999029403.vrm",
+ "vroid/3/6901327910530218503/6901327910530218503.vrm",
+ "vroid/3/6908070641437939853/6908070641437939853.vrm",
+ "vroid/3/6927170614088194163/6927170614088194163.vrm",
+ "vroid/3/692772976158089943/692772976158089943.vrm",
+ "vroid/3/6927831907608304033/6927831907608304033.vrm",
+ "vroid/3/6932712992353381113/6932712992353381113.vrm",
+ "vroid/3/6939460563911338733/6939460563911338733.vrm",
+ "vroid/3/6939461388878140773/6939461388878140773.vrm",
+ "vroid/3/6954490803761888373/6954490803761888373.vrm",
+ "vroid/3/6962734362102743963/6962734362102743963.vrm",
+ "vroid/3/6966706117425650133/6966706117425650133.vrm",
+ "vroid/3/6971208873296331343/6971208873296331343.vrm",
+ "vroid/3/6971904574873301313/6971904574873301313.vrm",
+ "vroid/3/6982879744570542443/6982879744570542443.vrm",
+ "vroid/3/6987101957384148303/6987101957384148303.vrm",
+ "vroid/3/6990115480480718923/6990115480480718923.vrm",
+ "vroid/3/7011781894313868223/7011781894313868223.vrm",
+ "vroid/3/7025227066145448203/7025227066145448203.vrm",
+ "vroid/3/7028619234787967743/7028619234787967743.vrm",
+ "vroid/3/7029355724872194333/7029355724872194333.vrm",
+ "vroid/3/7048945028582962143/7048945028582962143.vrm",
+ "vroid/3/7063605985846675843/7063605985846675843.vrm",
+ "vroid/3/7071339235194606663/7071339235194606663.vrm",
+ "vroid/3/7074759687161874743/7074759687161874743.vrm",
+ "vroid/3/7076868229670232823/7076868229670232823.vrm",
+ "vroid/3/7094194113937784233/7094194113937784233.vrm",
+ "vroid/3/7100170762775151613/7100170762775151613.vrm",
+ "vroid/3/710695027540859103/710695027540859103.vrm",
+ "vroid/3/7108751706575072943/7108751706575072943.vrm",
+ "vroid/3/7109392770062141153/7109392770062141153.vrm",
+ "vroid/3/7111469413025416983/7111469413025416983.vrm",
+ "vroid/3/7124228007698138023/7124228007698138023.vrm",
+ "vroid/3/7128322386476475963/7128322386476475963.vrm",
+ "vroid/3/7132934392320859123/7132934392320859123.vrm",
+ "vroid/3/7147626609772188943/7147626609772188943.vrm",
+ "vroid/3/7152293501603062783/7152293501603062783.vrm",
+ "vroid/3/7154521691337492923/7154521691337492923.vrm",
+ "vroid/3/7155063617421757953/7155063617421757953.vrm",
+ "vroid/3/7164303450729938133/7164303450729938133.vrm",
+ "vroid/3/7188781915339190373/7188781915339190373.vrm",
+ "vroid/3/7195943105876799553/7195943105876799553.vrm",
+ "vroid/3/7200789449243891603/7200789449243891603.vrm",
+ "vroid/3/7203683605028292283/7203683605028292283.vrm",
+ "vroid/3/7203768211648210323/7203768211648210323.vrm",
+ "vroid/3/7209714471425190503/7209714471425190503.vrm",
+ "vroid/3/7210918099522895073/7210918099522895073.vrm",
+ "vroid/3/7214095406957008373/7214095406957008373.vrm",
+ "vroid/3/7231463540513888483/7231463540513888483.vrm",
+ "vroid/3/7243574875622712553/7243574875622712553.vrm",
+ "vroid/3/7244839113819399473/7244839113819399473.vrm",
+ "vroid/3/7245470456694992623/7245470456694992623.vrm",
+ "vroid/3/7250566638687404033/7250566638687404033.vrm",
+ "vroid/3/7255878407025838363/7255878407025838363.vrm",
+ "vroid/3/7255942237911408383/7255942237911408383.vrm",
+ "vroid/3/72572229238788153/72572229238788153.vrm",
+ "vroid/3/7258262270085040463/7258262270085040463.vrm",
+ "vroid/3/7262864065882180183/7262864065882180183.vrm",
+ "vroid/3/7264450062221879303/7264450062221879303.vrm",
+ "vroid/3/7275632761751355193/7275632761751355193.vrm",
+ "vroid/3/7281810506456900633/7281810506456900633.vrm",
+ "vroid/3/7291899527180136163/7291899527180136163.vrm",
+ "vroid/3/7300421241863173093/7300421241863173093.vrm",
+ "vroid/3/7303884560885819623/7303884560885819623.vrm",
+ "vroid/3/7308727983420959583/7308727983420959583.vrm",
+ "vroid/3/73099722059053383/73099722059053383.vrm",
+ "vroid/3/7316512553443830053/7316512553443830053.vrm",
+ "vroid/3/7317656960412906823/7317656960412906823.vrm",
+ "vroid/3/7318668030959952083/7318668030959952083.vrm",
+ "vroid/3/7320271413005562273/7320271413005562273.vrm",
+ "vroid/3/7320281657765897683/7320281657765897683.vrm",
+ "vroid/3/7330427121554479133/7330427121554479133.vrm",
+ "vroid/3/7336836280153714713/7336836280153714713.vrm",
+ "vroid/3/7338815437281089693/7338815437281089693.vrm",
+ "vroid/3/7339126421327028703/7339126421327028703.vrm",
+ "vroid/3/7344782557202619073/7344782557202619073.vrm",
+ "vroid/3/7356184491694903703/7356184491694903703.vrm",
+ "vroid/3/7379130223525389983/7379130223525389983.vrm",
+ "vroid/3/7381112376272692163/7381112376272692163.vrm",
+ "vroid/3/738151191502559263/738151191502559263.vrm",
+ "vroid/3/738942377979992143/738942377979992143.vrm",
+ "vroid/3/7393115450304061373/7393115450304061373.vrm",
+ "vroid/3/741162389022603313/741162389022603313.vrm",
+ "vroid/3/7417270525023396053/7417270525023396053.vrm",
+ "vroid/3/7419276271996465953/7419276271996465953.vrm",
+ "vroid/3/7438204804185032333/7438204804185032333.vrm",
+ "vroid/3/7442805054810587963/7442805054810587963.vrm",
+ "vroid/3/7447514522793883003/7447514522793883003.vrm",
+ "vroid/3/7447772378644649803/7447772378644649803.vrm",
+ "vroid/3/7462147292474573043/7462147292474573043.vrm",
+ "vroid/3/7466662511324497583/7466662511324497583.vrm",
+ "vroid/3/7466990847504840523/7466990847504840523.vrm",
+ "vroid/3/7475295516870535363/7475295516870535363.vrm",
+ "vroid/3/7481024097399709303/7481024097399709303.vrm",
+ "vroid/3/7489833482569711853/7489833482569711853.vrm",
+ "vroid/3/7502195069513595193/7502195069513595193.vrm",
+ "vroid/3/750674783717256823/750674783717256823.vrm",
+ "vroid/3/7513914456245757013/7513914456245757013.vrm",
+ "vroid/3/7517601002174282343/7517601002174282343.vrm",
+ "vroid/3/7528686060615752153/7528686060615752153.vrm",
+ "vroid/3/753530946426922573/753530946426922573.vrm",
+ "vroid/3/7535457796884387173/7535457796884387173.vrm",
+ "vroid/3/7546722064006707723/7546722064006707723.vrm",
+ "vroid/3/7549734254951739943/7549734254951739943.vrm",
+ "vroid/3/7550418202683987413/7550418202683987413.vrm",
+ "vroid/3/7551061461117680333/7551061461117680333.vrm",
+ "vroid/3/7552749586360909333/7552749586360909333.vrm",
+ "vroid/3/7557051254799559143/7557051254799559143.vrm",
+ "vroid/3/7558325973677653833/7558325973677653833.vrm",
+ "vroid/3/7561475388387916083/7561475388387916083.vrm",
+ "vroid/3/7562444953263949103/7562444953263949103.vrm",
+ "vroid/3/7562984795786247593/7562984795786247593.vrm",
+ "vroid/3/7565269830152447563/7565269830152447563.vrm",
+ "vroid/3/7565532286430310973/7565532286430310973.vrm",
+ "vroid/3/757503869823449963/757503869823449963.vrm",
+ "vroid/3/7578097056910117623/7578097056910117623.vrm",
+ "vroid/3/7585930350710497743/7585930350710497743.vrm",
+ "vroid/3/7588289129870078203/7588289129870078203.vrm",
+ "vroid/3/7591264050286500953/7591264050286500953.vrm",
+ "vroid/3/7592906988948093593/7592906988948093593.vrm",
+ "vroid/3/7597316024053104803/7597316024053104803.vrm",
+ "vroid/3/7617993776727431863/7617993776727431863.vrm",
+ "vroid/3/762171720723726023/762171720723726023.vrm",
+ "vroid/3/7627172707176428783/7627172707176428783.vrm",
+ "vroid/3/7639832113922707713/7639832113922707713.vrm",
+ "vroid/3/7641104208094925593/7641104208094925593.vrm",
+ "vroid/3/7641249822388016443/7641249822388016443.vrm",
+ "vroid/3/7641348298964919643/7641348298964919643.vrm",
+ "vroid/3/7647361726437852893/7647361726437852893.vrm",
+ "vroid/3/7670077723001265143/7670077723001265143.vrm",
+ "vroid/3/7686491304897512713/7686491304897512713.vrm",
+ "vroid/3/7687267761482174423/7687267761482174423.vrm",
+ "vroid/3/7693548548476493353/7693548548476493353.vrm",
+ "vroid/3/7697038444955343353/7697038444955343353.vrm",
+ "vroid/3/7698016333528814273/7698016333528814273.vrm",
+ "vroid/3/7703425575429022003/7703425575429022003.vrm",
+ "vroid/3/7704973639664910863/7704973639664910863.vrm",
+ "vroid/3/7706420700948085243/7706420700948085243.vrm",
+ "vroid/3/7706439894036673533/7706439894036673533.vrm",
+ "vroid/3/7713398501964457073/7713398501964457073.vrm",
+ "vroid/3/7718536980439513073/7718536980439513073.vrm",
+ "vroid/3/7732471422487657973/7732471422487657973.vrm",
+ "vroid/3/7744701774078676103/7744701774078676103.vrm",
+ "vroid/3/7745411840772119133/7745411840772119133.vrm",
+ "vroid/3/7759254130066902653/7759254130066902653.vrm",
+ "vroid/3/7760018184999878843/7760018184999878843.vrm",
+ "vroid/3/7786609560119418353/7786609560119418353.vrm",
+ "vroid/3/7790146585492226823/7790146585492226823.vrm",
+ "vroid/3/7793166869127228933/7793166869127228933.vrm",
+ "vroid/3/780789087026681073/780789087026681073.vrm",
+ "vroid/3/7808184629619726723/7808184629619726723.vrm",
+ "vroid/3/7810301450033839893/7810301450033839893.vrm",
+ "vroid/3/781151746456361753/781151746456361753.vrm",
+ "vroid/3/781427084191255913/781427084191255913.vrm",
+ "vroid/3/7818499098682920583/7818499098682920583.vrm",
+ "vroid/3/784391704418059753/784391704418059753.vrm",
+ "vroid/3/7852535245899510533/7852535245899510533.vrm",
+ "vroid/3/7868991420795312873/7868991420795312873.vrm",
+ "vroid/3/7876624312993178723/7876624312993178723.vrm",
+ "vroid/3/7877041305633432073/7877041305633432073.vrm",
+ "vroid/3/7885501204059835453/7885501204059835453.vrm",
+ "vroid/3/7891847710925220063/7891847710925220063.vrm",
+ "vroid/3/7894480858404864473/7894480858404864473.vrm",
+ "vroid/3/789956380904311773/789956380904311773.vrm",
+ "vroid/3/7909799095527677303/7909799095527677303.vrm",
+ "vroid/3/7933750051417673183/7933750051417673183.vrm",
+ "vroid/3/7935736523116051123/7935736523116051123.vrm",
+ "vroid/3/7942393315372211883/7942393315372211883.vrm",
+ "vroid/3/7951297484223540723/7951297484223540723.vrm",
+ "vroid/3/7951958384420395143/7951958384420395143.vrm",
+ "vroid/3/7955601389529721373/7955601389529721373.vrm",
+ "vroid/3/7960013553573330973/7960013553573330973.vrm",
+ "vroid/3/7972288391333055973/7972288391333055973.vrm",
+ "vroid/3/7973416455626790413/7973416455626790413.vrm",
+ "vroid/3/797765792222826723/797765792222826723.vrm",
+ "vroid/3/7982447970357222573/7982447970357222573.vrm",
+ "vroid/3/7984975477586230233/7984975477586230233.vrm",
+ "vroid/3/7988934640415616323/7988934640415616323.vrm",
+ "vroid/3/798947683274570483/798947683274570483.vrm",
+ "vroid/3/8002273135540226203/8002273135540226203.vrm",
+ "vroid/3/8016213920852619463/8016213920852619463.vrm",
+ "vroid/3/8017880837792526993/8017880837792526993.vrm",
+ "vroid/3/8019646499624695283/8019646499624695283.vrm",
+ "vroid/3/8027587767931831963/8027587767931831963.vrm",
+ "vroid/3/8028687793493143303/8028687793493143303.vrm",
+ "vroid/3/8053763459694545433/8053763459694545433.vrm",
+ "vroid/3/805985617218294553/805985617218294553.vrm",
+ "vroid/3/8073566483527818773/8073566483527818773.vrm",
+ "vroid/3/8078143271408337163/8078143271408337163.vrm",
+ "vroid/3/8081058634014031693/8081058634014031693.vrm",
+ "vroid/3/8082340156973858383/8082340156973858383.vrm",
+ "vroid/3/8085702697736096033/8085702697736096033.vrm",
+ "vroid/3/8090874503940925283/8090874503940925283.vrm",
+ "vroid/3/80909814091284453/80909814091284453.vrm",
+ "vroid/3/8096872574695665483/8096872574695665483.vrm",
+ "vroid/3/8097783297422092533/8097783297422092533.vrm",
+ "vroid/3/8100842010897213253/8100842010897213253.vrm",
+ "vroid/3/811224375415896403/811224375415896403.vrm",
+ "vroid/3/8116905130514578493/8116905130514578493.vrm",
+ "vroid/3/8130372855991481783/8130372855991481783.vrm",
+ "vroid/3/8135316096050396633/8135316096050396633.vrm",
+ "vroid/3/8141124424391961463/8141124424391961463.vrm",
+ "vroid/3/8150768453308892493/8150768453308892493.vrm",
+ "vroid/3/8152518989759762353/8152518989759762353.vrm",
+ "vroid/3/8158112097198995243/8158112097198995243.vrm",
+ "vroid/3/8164153273559606533/8164153273559606533.vrm",
+ "vroid/3/816862008645080483/816862008645080483.vrm",
+ "vroid/3/8178280687019504383/8178280687019504383.vrm",
+ "vroid/3/8181200725238065943/8181200725238065943.vrm",
+ "vroid/3/8182074329596332633/8182074329596332633.vrm",
+ "vroid/3/819311080616735463/819311080616735463.vrm",
+ "vroid/3/8206336609281021973/8206336609281021973.vrm",
+ "vroid/3/821021436293024873/821021436293024873.vrm",
+ "vroid/3/8211109093333591803/8211109093333591803.vrm",
+ "vroid/3/8213736070689105653/8213736070689105653.vrm",
+ "vroid/3/8234740753935892103/8234740753935892103.vrm",
+ "vroid/3/8235938808750377033/8235938808750377033.vrm",
+ "vroid/3/8252747518206531743/8252747518206531743.vrm",
+ "vroid/3/8257851689213055483/8257851689213055483.vrm",
+ "vroid/3/8260648571591055253/8260648571591055253.vrm",
+ "vroid/3/8262214622134530483/8262214622134530483.vrm",
+ "vroid/3/8263331353357540253/8263331353357540253.vrm",
+ "vroid/3/8269651625415476073/8269651625415476073.vrm",
+ "vroid/3/8287958311266406833/8287958311266406833.vrm",
+ "vroid/3/8296849551686927123/8296849551686927123.vrm",
+ "vroid/3/8305086994972035273/8305086994972035273.vrm",
+ "vroid/3/8321747560342611723/8321747560342611723.vrm",
+ "vroid/3/833403864655555293/833403864655555293.vrm",
+ "vroid/3/8339658783469654413/8339658783469654413.vrm",
+ "vroid/3/8341253897191133103/8341253897191133103.vrm",
+ "vroid/3/834535115800583053/834535115800583053.vrm",
+ "vroid/3/8345689227823429413/8345689227823429413.vrm",
+ "vroid/3/8358984829572964123/8358984829572964123.vrm",
+ "vroid/3/8369726693628958723/8369726693628958723.vrm",
+ "vroid/3/8371193472106014183/8371193472106014183.vrm",
+ "vroid/3/837693308419586023/837693308419586023.vrm",
+ "vroid/3/837694440387998433/837694440387998433.vrm",
+ "vroid/3/8379675613291902493/8379675613291902493.vrm",
+ "vroid/3/8380297858480414663/8380297858480414663.vrm",
+ "vroid/3/8381795627069059153/8381795627069059153.vrm",
+ "vroid/3/8385999960920044543/8385999960920044543.vrm",
+ "vroid/3/8388708616460855093/8388708616460855093.vrm",
+ "vroid/3/8391142798533381313/8391142798533381313.vrm",
+ "vroid/3/8396024095719864353/8396024095719864353.vrm",
+ "vroid/3/8396721553274572143/8396721553274572143.vrm",
+ "vroid/3/8421423456602614583/8421423456602614583.vrm",
+ "vroid/3/8423385274521872243/8423385274521872243.vrm",
+ "vroid/3/8428027223154511153/8428027223154511153.vrm",
+ "vroid/3/8432680131908319273/8432680131908319273.vrm",
+ "vroid/3/843639379066465493/843639379066465493.vrm",
+ "vroid/3/8445919348955373063/8445919348955373063.vrm",
+ "vroid/3/8447104037050729553/8447104037050729553.vrm",
+ "vroid/3/8465930083918545653/8465930083918545653.vrm",
+ "vroid/3/8466290386245649183/8466290386245649183.vrm",
+ "vroid/3/8470551824465407273/8470551824465407273.vrm",
+ "vroid/3/8477168814437147123/8477168814437147123.vrm",
+ "vroid/3/8477768114641947703/8477768114641947703.vrm",
+ "vroid/3/8480201958172487163/8480201958172487163.vrm",
+ "vroid/3/8492126058247535403/8492126058247535403.vrm",
+ "vroid/3/8494687235128265913/8494687235128265913.vrm",
+ "vroid/3/8504886642341670343/8504886642341670343.vrm",
+ "vroid/3/8528007167651571043/8528007167651571043.vrm",
+ "vroid/3/8530544536064633943/8530544536064633943.vrm",
+ "vroid/3/8530681868426332253/8530681868426332253.vrm",
+ "vroid/3/853800503763044943/853800503763044943.vrm",
+ "vroid/3/8541548153190708443/8541548153190708443.vrm",
+ "vroid/3/8542931992697243673/8542931992697243673.vrm",
+ "vroid/3/8560473280991752653/8560473280991752653.vrm",
+ "vroid/3/8564745454825487033/8564745454825487033.vrm",
+ "vroid/3/8565873767729891513/8565873767729891513.vrm",
+ "vroid/3/8568135705504126663/8568135705504126663.vrm",
+ "vroid/3/8568924610154735883/8568924610154735883.vrm",
+ "vroid/3/8572718001107500203/8572718001107500203.vrm",
+ "vroid/3/8573859242196016153/8573859242196016153.vrm",
+ "vroid/3/8590698985623726633/8590698985623726633.vrm",
+ "vroid/3/859312768382311053/859312768382311053.vrm",
+ "vroid/3/8601983195571599433/8601983195571599433.vrm",
+ "vroid/3/8607764025783609903/8607764025783609903.vrm",
+ "vroid/3/8608402951152839563/8608402951152839563.vrm",
+ "vroid/3/8616304817685763233/8616304817685763233.vrm",
+ "vroid/3/8627194614344825973/8627194614344825973.vrm",
+ "vroid/3/8630486461848266683/8630486461848266683.vrm",
+ "vroid/3/8638923220210673863/8638923220210673863.vrm",
+ "vroid/3/8640547963669442173/8640547963669442173.vrm",
+ "vroid/3/8655966512778755363/8655966512778755363.vrm",
+ "vroid/3/8658676203545783213/8658676203545783213.vrm",
+ "vroid/3/8678127897473467973/8678127897473467973.vrm",
+ "vroid/3/8689321620751842943/8689321620751842943.vrm",
+ "vroid/3/8695121673856494473/8695121673856494473.vrm",
+ "vroid/3/8710875916459471633/8710875916459471633.vrm",
+ "vroid/3/8711433518143634783/8711433518143634783.vrm",
+ "vroid/3/8714102514041342553/8714102514041342553.vrm",
+ "vroid/3/8715871309764737423/8715871309764737423.vrm",
+ "vroid/3/8720634042695652583/8720634042695652583.vrm",
+ "vroid/3/872247437425221173/872247437425221173.vrm",
+ "vroid/3/8722807344296072793/8722807344296072793.vrm",
+ "vroid/3/8726751005166717413/8726751005166717413.vrm",
+ "vroid/3/8727832217237132293/8727832217237132293.vrm",
+ "vroid/3/8728265745846084653/8728265745846084653.vrm",
+ "vroid/3/8740912660242809553/8740912660242809553.vrm",
+ "vroid/3/8743831018235995313/8743831018235995313.vrm",
+ "vroid/3/8748957154263870073/8748957154263870073.vrm",
+ "vroid/3/8753890511560255743/8753890511560255743.vrm",
+ "vroid/3/8758294952013159193/8758294952013159193.vrm",
+ "vroid/3/8758954278605905323/8758954278605905323.vrm",
+ "vroid/3/8766221977801378523/8766221977801378523.vrm",
+ "vroid/3/8791120572889665673/8791120572889665673.vrm",
+ "vroid/3/880320695540753593/880320695540753593.vrm",
+ "vroid/3/8807094627685044913/8807094627685044913.vrm",
+ "vroid/3/8810286222995228723/8810286222995228723.vrm",
+ "vroid/3/8814853464517807013/8814853464517807013.vrm",
+ "vroid/3/8815487538704534553/8815487538704534553.vrm",
+ "vroid/3/8824739006839391253/8824739006839391253.vrm",
+ "vroid/3/8838433116730743043/8838433116730743043.vrm",
+ "vroid/3/8845080473614443393/8845080473614443393.vrm",
+ "vroid/3/8854192597628925843/8854192597628925843.vrm",
+ "vroid/3/8863968327252214133/8863968327252214133.vrm",
+ "vroid/3/8874113692797919593/8874113692797919593.vrm",
+ "vroid/3/8876755361284924753/8876755361284924753.vrm",
+ "vroid/3/887776842981115053/887776842981115053.vrm",
+ "vroid/3/8885468892429666393/8885468892429666393.vrm",
+ "vroid/3/8889328306314608833/8889328306314608833.vrm",
+ "vroid/3/8890866740048855933/8890866740048855933.vrm",
+ "vroid/3/8892300636098168513/8892300636098168513.vrm",
+ "vroid/3/8901310971744228793/8901310971744228793.vrm",
+ "vroid/3/891244164600651843/891244164600651843.vrm",
+ "vroid/3/8915186287769209013/8915186287769209013.vrm",
+ "vroid/3/8925980635027556693/8925980635027556693.vrm",
+ "vroid/3/8931545541487474783/8931545541487474783.vrm",
+ "vroid/3/8935388597621188793/8935388597621188793.vrm",
+ "vroid/3/8954956133197020983/8954956133197020983.vrm",
+ "vroid/3/8957202597900553643/8957202597900553643.vrm",
+ "vroid/3/8959540836585605393/8959540836585605393.vrm",
+ "vroid/3/8964767676466901493/8964767676466901493.vrm",
+ "vroid/3/8974086741810969903/8974086741810969903.vrm",
+ "vroid/3/8977173847732819713/8977173847732819713.vrm",
+ "vroid/3/8980643233572815243/8980643233572815243.vrm",
+ "vroid/3/898867841775910703/898867841775910703.vrm",
+ "vroid/3/8992470295804906303/8992470295804906303.vrm",
+ "vroid/3/9001865128144543193/9001865128144543193.vrm",
+ "vroid/3/9002287068300294373/9002287068300294373.vrm",
+ "vroid/3/9004997287626287253/9004997287626287253.vrm",
+ "vroid/3/9013607533151912493/9013607533151912493.vrm",
+ "vroid/3/9031374932177534443/9031374932177534443.vrm",
+ "vroid/3/9033925806681324513/9033925806681324513.vrm",
+ "vroid/3/904294405622350033/904294405622350033.vrm",
+ "vroid/3/9045188123814655173/9045188123814655173.vrm",
+ "vroid/3/9045430738422343863/9045430738422343863.vrm",
+ "vroid/3/9051856275273462813/9051856275273462813.vrm",
+ "vroid/3/9057779957839848993/9057779957839848993.vrm",
+ "vroid/3/9060652354080069433/9060652354080069433.vrm",
+ "vroid/3/9062586446066503193/9062586446066503193.vrm",
+ "vroid/3/9066315783953855523/9066315783953855523.vrm",
+ "vroid/3/9073171352793703403/9073171352793703403.vrm",
+ "vroid/3/9077577477176826173/9077577477176826173.vrm",
+ "vroid/3/908383944679269673/908383944679269673.vrm",
+ "vroid/3/9094606348905972253/9094606348905972253.vrm",
+ "vroid/3/9110325048752364583/9110325048752364583.vrm",
+ "vroid/3/9111435395978948793/9111435395978948793.vrm",
+ "vroid/3/9115287206960839383/9115287206960839383.vrm",
+ "vroid/3/9134152507708007743/9134152507708007743.vrm",
+ "vroid/3/9139777306075016573/9139777306075016573.vrm",
+ "vroid/3/9143049278777560053/9143049278777560053.vrm",
+ "vroid/3/9158462873877627433/9158462873877627433.vrm",
+ "vroid/3/9163953092985413203/9163953092985413203.vrm",
+ "vroid/3/9165394313582993053/9165394313582993053.vrm",
+ "vroid/3/9167578222778152273/9167578222778152273.vrm",
+ "vroid/3/918764041032041303/918764041032041303.vrm",
+ "vroid/3/9216441880218310963/9216441880218310963.vrm",
+ "vroid/3/9221439482251303113/9221439482251303113.vrm",
+ "vroid/3/925111175431723593/925111175431723593.vrm",
+ "vroid/3/953592588461070173/953592588461070173.vrm",
+ "vroid/3/97035625898389623/97035625898389623.vrm",
+ "vroid/3/971942182065411463/971942182065411463.vrm",
+ "vroid/3/972625185981469383/972625185981469383.vrm",
+ "vroid/3/972833217743589653/972833217743589653.vrm",
+ "vroid/3/974657910986238303/974657910986238303.vrm",
+ "vroid/3/984212584655441443/984212584655441443.vrm",
+ "vroid/4/1000050438984538394/1000050438984538394.vrm",
+ "vroid/4/1026399454137602734/1026399454137602734.vrm",
+ "vroid/4/1042278195394219184/1042278195394219184.vrm",
+ "vroid/4/1046789658494952804/1046789658494952804.vrm",
+ "vroid/4/1049895711055319984/1049895711055319984.vrm",
+ "vroid/4/1061622931103500424/1061622931103500424.vrm",
+ "vroid/4/1063606854645626584/1063606854645626584.vrm",
+ "vroid/4/1068399956173785854/1068399956173785854.vrm",
+ "vroid/4/1088625571770347984/1088625571770347984.vrm",
+ "vroid/4/1090474905405479754/1090474905405479754.vrm",
+ "vroid/4/1100050704346030754/1100050704346030754.vrm",
+ "vroid/4/1116785678563896254/1116785678563896254.vrm",
+ "vroid/4/1117324638092061774/1117324638092061774.vrm",
+ "vroid/4/1121477758559979074/1121477758559979074.vrm",
+ "vroid/4/1127494294653634934/1127494294653634934.vrm",
+ "vroid/4/1128444566661314384/1128444566661314384.vrm",
+ "vroid/4/1129143441810890984/1129143441810890984.vrm",
+ "vroid/4/1129372759822483274/1129372759822483274.vrm",
+ "vroid/4/1135262692643216814/1135262692643216814.vrm",
+ "vroid/4/1138868301081054624/1138868301081054624.vrm",
+ "vroid/4/1147644776127341834/1147644776127341834.vrm",
+ "vroid/4/1163744452041068544/1163744452041068544.vrm",
+ "vroid/4/1165576984200172944/1165576984200172944.vrm",
+ "vroid/4/1167939541923454614/1167939541923454614.vrm",
+ "vroid/4/1173931401109141524/1173931401109141524.vrm",
+ "vroid/4/1174382270511447454/1174382270511447454.vrm",
+ "vroid/4/1183170112391095964/1183170112391095964.vrm",
+ "vroid/4/1186706024373335354/1186706024373335354.vrm",
+ "vroid/4/1201044685638839854/1201044685638839854.vrm",
+ "vroid/4/1205413566459408494/1205413566459408494.vrm",
+ "vroid/4/1214415158703584144/1214415158703584144.vrm",
+ "vroid/4/1226550044855973574/1226550044855973574.vrm",
+ "vroid/4/1228912461000117124/1228912461000117124.vrm",
+ "vroid/4/1235063538098182424/1235063538098182424.vrm",
+ "vroid/4/124265687090861314/124265687090861314.vrm",
+ "vroid/4/1271805975978668114/1271805975978668114.vrm",
+ "vroid/4/1272660441710797464/1272660441710797464.vrm",
+ "vroid/4/1274133265663160344/1274133265663160344.vrm",
+ "vroid/4/1275221937888675694/1275221937888675694.vrm",
+ "vroid/4/1276298857244269084/1276298857244269084.vrm",
+ "vroid/4/1279738585335058094/1279738585335058094.vrm",
+ "vroid/4/1280051458878161154/1280051458878161154.vrm",
+ "vroid/4/128119379118637424/128119379118637424.vrm",
+ "vroid/4/1281884711687367694/1281884711687367694.vrm",
+ "vroid/4/12830497265809044/12830497265809044.vrm",
+ "vroid/4/1290718212267618574/1290718212267618574.vrm",
+ "vroid/4/1295365766487169754/1295365766487169754.vrm",
+ "vroid/4/1301346675128687484/1301346675128687484.vrm",
+ "vroid/4/1307498976801342084/1307498976801342084.vrm",
+ "vroid/4/1309136252055954994/1309136252055954994.vrm",
+ "vroid/4/1309620416716834254/1309620416716834254.vrm",
+ "vroid/4/131196553409461564/131196553409461564.vrm",
+ "vroid/4/1315284779211619704/1315284779211619704.vrm",
+ "vroid/4/1319917548969715264/1319917548969715264.vrm",
+ "vroid/4/132743848766644624/132743848766644624.vrm",
+ "vroid/4/1330412166301364504/1330412166301364504.vrm",
+ "vroid/4/1330880949184825654/1330880949184825654.vrm",
+ "vroid/4/1333105547455797864/1333105547455797864.vrm",
+ "vroid/4/1334597496948457974/1334597496948457974.vrm",
+ "vroid/4/1342450271037201634/1342450271037201634.vrm",
+ "vroid/4/1347447423680480334/1347447423680480334.vrm",
+ "vroid/4/1348015039543374284/1348015039543374284.vrm",
+ "vroid/4/1349537507845739624/1349537507845739624.vrm",
+ "vroid/4/1352134288762112924/1352134288762112924.vrm",
+ "vroid/4/1352673810567437554/1352673810567437554.vrm",
+ "vroid/4/135576677871906674/135576677871906674.vrm",
+ "vroid/4/1357431609893521024/1357431609893521024.vrm",
+ "vroid/4/1357553183842770384/1357553183842770384.vrm",
+ "vroid/4/1357896220782738384/1357896220782738384.vrm",
+ "vroid/4/1359795604149854484/1359795604149854484.vrm",
+ "vroid/4/1367469005064537634/1367469005064537634.vrm",
+ "vroid/4/1373493465952075244/1373493465952075244.vrm",
+ "vroid/4/1377291713465836274/1377291713465836274.vrm",
+ "vroid/4/137956402252565364/137956402252565364.vrm",
+ "vroid/4/1379936808526569174/1379936808526569174.vrm",
+ "vroid/4/1391932049475658724/1391932049475658724.vrm",
+ "vroid/4/139527579193536874/139527579193536874.vrm",
+ "vroid/4/1396696834246536844/1396696834246536844.vrm",
+ "vroid/4/139984086525723494/139984086525723494.vrm",
+ "vroid/4/1405243674575225604/1405243674575225604.vrm",
+ "vroid/4/1420767026212678304/1420767026212678304.vrm",
+ "vroid/4/1424273517731910834/1424273517731910834.vrm",
+ "vroid/4/1437513874880828384/1437513874880828384.vrm",
+ "vroid/4/145245468037886074/145245468037886074.vrm",
+ "vroid/4/145317236772291854/145317236772291854.vrm",
+ "vroid/4/1457612915198682374/1457612915198682374.vrm",
+ "vroid/4/1466163837845597044/1466163837845597044.vrm",
+ "vroid/4/1468817197174101964/1468817197174101964.vrm",
+ "vroid/4/1481553325536802484/1481553325536802484.vrm",
+ "vroid/4/1482250606042009014/1482250606042009014.vrm",
+ "vroid/4/1502505991704265184/1502505991704265184.vrm",
+ "vroid/4/1506756264931307954/1506756264931307954.vrm",
+ "vroid/4/1510675542018136944/1510675542018136944.vrm",
+ "vroid/4/151183502963938654/151183502963938654.vrm",
+ "vroid/4/1513644561038714974/1513644561038714974.vrm",
+ "vroid/4/1514925395959469254/1514925395959469254.vrm",
+ "vroid/4/1527162385508417974/1527162385508417974.vrm",
+ "vroid/4/152908931209812034/152908931209812034.vrm",
+ "vroid/4/153124832013860744/153124832013860744.vrm",
+ "vroid/4/1536340188331302614/1536340188331302614.vrm",
+ "vroid/4/1542457042457108194/1542457042457108194.vrm",
+ "vroid/4/1546107844448979564/1546107844448979564.vrm",
+ "vroid/4/1546903861236762684/1546903861236762684.vrm",
+ "vroid/4/1550199843465167324/1550199843465167324.vrm",
+ "vroid/4/1550870576385219604/1550870576385219604.vrm",
+ "vroid/4/1555213314542952784/1555213314542952784.vrm",
+ "vroid/4/1561794585243959344/1561794585243959344.vrm",
+ "vroid/4/1565888348476572434/1565888348476572434.vrm",
+ "vroid/4/1567990021299526604/1567990021299526604.vrm",
+ "vroid/4/1587704944225966684/1587704944225966684.vrm",
+ "vroid/4/15888540358010344/15888540358010344.vrm",
+ "vroid/4/1593181122290030814/1593181122290030814.vrm",
+ "vroid/4/1595071687360030604/1595071687360030604.vrm",
+ "vroid/4/1598480183280766784/1598480183280766784.vrm",
+ "vroid/4/1600551365669619584/1600551365669619584.vrm",
+ "vroid/4/1600656686511433694/1600656686511433694.vrm",
+ "vroid/4/160114389967956824/160114389967956824.vrm",
+ "vroid/4/160523571497340714/160523571497340714.vrm",
+ "vroid/4/1615067168346010564/1615067168346010564.vrm",
+ "vroid/4/163057664431396564/163057664431396564.vrm",
+ "vroid/4/1638694150745728154/1638694150745728154.vrm",
+ "vroid/4/1641638469549600694/1641638469549600694.vrm",
+ "vroid/4/164816417633468004/164816417633468004.vrm",
+ "vroid/4/1651915408160799874/1651915408160799874.vrm",
+ "vroid/4/1652348751965530264/1652348751965530264.vrm",
+ "vroid/4/1655080296349873884/1655080296349873884.vrm",
+ "vroid/4/1659766355416560734/1659766355416560734.vrm",
+ "vroid/4/1664833116612800304/1664833116612800304.vrm",
+ "vroid/4/1670397492473050184/1670397492473050184.vrm",
+ "vroid/4/1673044366340929784/1673044366340929784.vrm",
+ "vroid/4/1677180392320868564/1677180392320868564.vrm",
+ "vroid/4/1686646059351555594/1686646059351555594.vrm",
+ "vroid/4/1687274387257724544/1687274387257724544.vrm",
+ "vroid/4/1711406166813621424/1711406166813621424.vrm",
+ "vroid/4/1720651895468610074/1720651895468610074.vrm",
+ "vroid/4/1721790012939033454/1721790012939033454.vrm",
+ "vroid/4/1734059925327134384/1734059925327134384.vrm",
+ "vroid/4/1746433897647684184/1746433897647684184.vrm",
+ "vroid/4/1750342272405303024/1750342272405303024.vrm",
+ "vroid/4/1751998635389334054/1751998635389334054.vrm",
+ "vroid/4/1755734736856581944/1755734736856581944.vrm",
+ "vroid/4/1756412906847705434/1756412906847705434.vrm",
+ "vroid/4/175767267243538204/175767267243538204.vrm",
+ "vroid/4/1776389680341435204/1776389680341435204.vrm",
+ "vroid/4/1777736396131987844/1777736396131987844.vrm",
+ "vroid/4/1778591055407605204/1778591055407605204.vrm",
+ "vroid/4/1780107656666421854/1780107656666421854.vrm",
+ "vroid/4/17802834865781484/17802834865781484.vrm",
+ "vroid/4/1782404710685811324/1782404710685811324.vrm",
+ "vroid/4/1788277721215456764/1788277721215456764.vrm",
+ "vroid/4/178836020120729814/178836020120729814.vrm",
+ "vroid/4/1794613792366943544/1794613792366943544.vrm",
+ "vroid/4/1796131030261794404/1796131030261794404.vrm",
+ "vroid/4/1803243465058042814/1803243465058042814.vrm",
+ "vroid/4/1811786328334971294/1811786328334971294.vrm",
+ "vroid/4/181501812366880494/181501812366880494.vrm",
+ "vroid/4/1816227254781894474/1816227254781894474.vrm",
+ "vroid/4/1817189871780993644/1817189871780993644.vrm",
+ "vroid/4/1818332309386975354/1818332309386975354.vrm",
+ "vroid/4/1819150750760271614/1819150750760271614.vrm",
+ "vroid/4/1834725759775046094/1834725759775046094.vrm",
+ "vroid/4/1842605408097340554/1842605408097340554.vrm",
+ "vroid/4/1850828603297939764/1850828603297939764.vrm",
+ "vroid/4/1854561365766471984/1854561365766471984.vrm",
+ "vroid/4/1857261798769392764/1857261798769392764.vrm",
+ "vroid/4/1861922938919587024/1861922938919587024.vrm",
+ "vroid/4/1865440874326808174/1865440874326808174.vrm",
+ "vroid/4/1870019208289738734/1870019208289738734.vrm",
+ "vroid/4/1879637797284036194/1879637797284036194.vrm",
+ "vroid/4/1882248010442901174/1882248010442901174.vrm",
+ "vroid/4/1898765554289435874/1898765554289435874.vrm",
+ "vroid/4/1899198978065935274/1899198978065935274.vrm",
+ "vroid/4/1902002847773072324/1902002847773072324.vrm",
+ "vroid/4/1904578238300398834/1904578238300398834.vrm",
+ "vroid/4/1906351233884725554/1906351233884725554.vrm",
+ "vroid/4/1921458465061714444/1921458465061714444.vrm",
+ "vroid/4/1923360748803707764/1923360748803707764.vrm",
+ "vroid/4/1924056675340464694/1924056675340464694.vrm",
+ "vroid/4/1925930691719566914/1925930691719566914.vrm",
+ "vroid/4/1930087082312443974/1930087082312443974.vrm",
+ "vroid/4/1939194646822269644/1939194646822269644.vrm",
+ "vroid/4/1940902222632681904/1940902222632681904.vrm",
+ "vroid/4/194507835336778444/194507835336778444.vrm",
+ "vroid/4/1946978663155343514/1946978663155343514.vrm",
+ "vroid/4/1952850522372485444/1952850522372485444.vrm",
+ "vroid/4/1953923925616065444/1953923925616065444.vrm",
+ "vroid/4/1955680116965109664/1955680116965109664.vrm",
+ "vroid/4/1957734253971061644/1957734253971061644.vrm",
+ "vroid/4/1958101439721141434/1958101439721141434.vrm",
+ "vroid/4/1962965152838305174/1962965152838305174.vrm",
+ "vroid/4/1964118342118767524/1964118342118767524.vrm",
+ "vroid/4/1972762746623246264/1972762746623246264.vrm",
+ "vroid/4/1980292046866174444/1980292046866174444.vrm",
+ "vroid/4/1992381929919490554/1992381929919490554.vrm",
+ "vroid/4/1993182979350776354/1993182979350776354.vrm",
+ "vroid/4/1995929407271405304/1995929407271405304.vrm",
+ "vroid/4/2006922534595088364/2006922534595088364.vrm",
+ "vroid/4/2006949651349262044/2006949651349262044.vrm",
+ "vroid/4/2020431458010300094/2020431458010300094.vrm",
+ "vroid/4/2026670927552492734/2026670927552492734.vrm",
+ "vroid/4/2031197086742672044/2031197086742672044.vrm",
+ "vroid/4/2031888507042504194/2031888507042504194.vrm",
+ "vroid/4/2056314216403046394/2056314216403046394.vrm",
+ "vroid/4/2063472518759822114/2063472518759822114.vrm",
+ "vroid/4/2077631988930213594/2077631988930213594.vrm",
+ "vroid/4/2078438344509092064/2078438344509092064.vrm",
+ "vroid/4/2098723342403922454/2098723342403922454.vrm",
+ "vroid/4/2107066096198451634/2107066096198451634.vrm",
+ "vroid/4/2112655397200058924/2112655397200058924.vrm",
+ "vroid/4/2113746151335174254/2113746151335174254.vrm",
+ "vroid/4/2118606892634287314/2118606892634287314.vrm",
+ "vroid/4/2120140406539064754/2120140406539064754.vrm",
+ "vroid/4/2122745044761853394/2122745044761853394.vrm",
+ "vroid/4/2137814368426259974/2137814368426259974.vrm",
+ "vroid/4/2144101802400822884/2144101802400822884.vrm",
+ "vroid/4/2144263987876519174/2144263987876519174.vrm",
+ "vroid/4/2149115449529270524/2149115449529270524.vrm",
+ "vroid/4/2155342042068320334/2155342042068320334.vrm",
+ "vroid/4/2172581141013582164/2172581141013582164.vrm",
+ "vroid/4/2176500342827420664/2176500342827420664.vrm",
+ "vroid/4/2177360034892288424/2177360034892288424.vrm",
+ "vroid/4/2180933545875009414/2180933545875009414.vrm",
+ "vroid/4/2189497852238263304/2189497852238263304.vrm",
+ "vroid/4/2190640556461512744/2190640556461512744.vrm",
+ "vroid/4/2193677410218863344/2193677410218863344.vrm",
+ "vroid/4/2205849978101920654/2205849978101920654.vrm",
+ "vroid/4/2206871239571124784/2206871239571124784.vrm",
+ "vroid/4/2221521638726606314/2221521638726606314.vrm",
+ "vroid/4/2228845527337308054/2228845527337308054.vrm",
+ "vroid/4/2229033904446964734/2229033904446964734.vrm",
+ "vroid/4/2231081349844619724/2231081349844619724.vrm",
+ "vroid/4/2234696125985595434/2234696125985595434.vrm",
+ "vroid/4/223547411852859654/223547411852859654.vrm",
+ "vroid/4/2237703447330102744/2237703447330102744.vrm",
+ "vroid/4/2255784145559324234/2255784145559324234.vrm",
+ "vroid/4/2261437227801221284/2261437227801221284.vrm",
+ "vroid/4/227493903386791184/227493903386791184.vrm",
+ "vroid/4/2282789514753408194/2282789514753408194.vrm",
+ "vroid/4/2285357290049346834/2285357290049346834.vrm",
+ "vroid/4/2299212724638591134/2299212724638591134.vrm",
+ "vroid/4/2303678306780963804/2303678306780963804.vrm",
+ "vroid/4/2306049521135971954/2306049521135971954.vrm",
+ "vroid/4/2310505206160112434/2310505206160112434.vrm",
+ "vroid/4/2310977460990127704/2310977460990127704.vrm",
+ "vroid/4/2315136494910371244/2315136494910371244.vrm",
+ "vroid/4/232160098779209824/232160098779209824.vrm",
+ "vroid/4/2326297153229981524/2326297153229981524.vrm",
+ "vroid/4/2337085126114187264/2337085126114187264.vrm",
+ "vroid/4/2353879730810265154/2353879730810265154.vrm",
+ "vroid/4/2358544044324210674/2358544044324210674.vrm",
+ "vroid/4/2366280917566142554/2366280917566142554.vrm",
+ "vroid/4/2366837415828364694/2366837415828364694.vrm",
+ "vroid/4/2375311139449245164/2375311139449245164.vrm",
+ "vroid/4/2375325185483986874/2375325185483986874.vrm",
+ "vroid/4/2377889848246545834/2377889848246545834.vrm",
+ "vroid/4/2379073114277988134/2379073114277988134.vrm",
+ "vroid/4/2380162373126932074/2380162373126932074.vrm",
+ "vroid/4/2383061361882003254/2383061361882003254.vrm",
+ "vroid/4/2393863638024847364/2393863638024847364.vrm",
+ "vroid/4/2408855355088563454/2408855355088563454.vrm",
+ "vroid/4/2409800297994564564/2409800297994564564.vrm",
+ "vroid/4/2410663319859624884/2410663319859624884.vrm",
+ "vroid/4/2417030371199714614/2417030371199714614.vrm",
+ "vroid/4/2418692134395744914/2418692134395744914.vrm",
+ "vroid/4/2422080870072198814/2422080870072198814.vrm",
+ "vroid/4/243951807016792074/243951807016792074.vrm",
+ "vroid/4/2461424810840768934/2461424810840768934.vrm",
+ "vroid/4/2464508213735607664/2464508213735607664.vrm",
+ "vroid/4/2470530058380688564/2470530058380688564.vrm",
+ "vroid/4/2498129228513019844/2498129228513019844.vrm",
+ "vroid/4/2499836152988221874/2499836152988221874.vrm",
+ "vroid/4/2507998202997638234/2507998202997638234.vrm",
+ "vroid/4/251174881638860544/251174881638860544.vrm",
+ "vroid/4/2513891215279609074/2513891215279609074.vrm",
+ "vroid/4/2515322958546858414/2515322958546858414.vrm",
+ "vroid/4/2517881929180422564/2517881929180422564.vrm",
+ "vroid/4/2521127718669456024/2521127718669456024.vrm",
+ "vroid/4/2524658459820004394/2524658459820004394.vrm",
+ "vroid/4/252775699533043464/252775699533043464.vrm",
+ "vroid/4/2532489563255244034/2532489563255244034.vrm",
+ "vroid/4/2539188405944407944/2539188405944407944.vrm",
+ "vroid/4/2549759072059765554/2549759072059765554.vrm",
+ "vroid/4/2549962075505747664/2549962075505747664.vrm",
+ "vroid/4/2552064145181687594/2552064145181687594.vrm",
+ "vroid/4/2557325449913379764/2557325449913379764.vrm",
+ "vroid/4/2562963740628450644/2562963740628450644.vrm",
+ "vroid/4/2566557110510609654/2566557110510609654.vrm",
+ "vroid/4/2576710871901316234/2576710871901316234.vrm",
+ "vroid/4/25771922540830954/25771922540830954.vrm",
+ "vroid/4/2586529368902550764/2586529368902550764.vrm",
+ "vroid/4/2589556697760145714/2589556697760145714.vrm",
+ "vroid/4/2595349898573807824/2595349898573807824.vrm",
+ "vroid/4/2601024431255955204/2601024431255955204.vrm",
+ "vroid/4/2609029497501842494/2609029497501842494.vrm",
+ "vroid/4/2614965118725858464/2614965118725858464.vrm",
+ "vroid/4/262243485062015844/262243485062015844.vrm",
+ "vroid/4/2625485762096367224/2625485762096367224.vrm",
+ "vroid/4/2628198839629467594/2628198839629467594.vrm",
+ "vroid/4/263167045953232284/263167045953232284.vrm",
+ "vroid/4/2650461087797544844/2650461087797544844.vrm",
+ "vroid/4/2657792373895661534/2657792373895661534.vrm",
+ "vroid/4/2666090521927577374/2666090521927577374.vrm",
+ "vroid/4/2670772403062244114/2670772403062244114.vrm",
+ "vroid/4/2671182197303150984/2671182197303150984.vrm",
+ "vroid/4/2678986249076586274/2678986249076586274.vrm",
+ "vroid/4/2679580053945281514/2679580053945281514.vrm",
+ "vroid/4/2682664085443002114/2682664085443002114.vrm",
+ "vroid/4/2685703918892293374/2685703918892293374.vrm",
+ "vroid/4/2686111172578165364/2686111172578165364.vrm",
+ "vroid/4/2701942812514823904/2701942812514823904.vrm",
+ "vroid/4/2702583817442649884/2702583817442649884.vrm",
+ "vroid/4/2711172891783950054/2711172891783950054.vrm",
+ "vroid/4/2722779624643507874/2722779624643507874.vrm",
+ "vroid/4/2723250576156972784/2723250576156972784.vrm",
+ "vroid/4/2738765918105418764/2738765918105418764.vrm",
+ "vroid/4/2739693510492276804/2739693510492276804.vrm",
+ "vroid/4/2741582994348608474/2741582994348608474.vrm",
+ "vroid/4/2752376730498348014/2752376730498348014.vrm",
+ "vroid/4/2759104301105855464/2759104301105855464.vrm",
+ "vroid/4/2765412972905311064/2765412972905311064.vrm",
+ "vroid/4/2766449961095099174/2766449961095099174.vrm",
+ "vroid/4/2775354675143660364/2775354675143660364.vrm",
+ "vroid/4/2784920851583108224/2784920851583108224.vrm",
+ "vroid/4/279805310954342114/279805310954342114.vrm",
+ "vroid/4/2799847056293222554/2799847056293222554.vrm",
+ "vroid/4/2801046905754041904/2801046905754041904.vrm",
+ "vroid/4/2804815387604642754/2804815387604642754.vrm",
+ "vroid/4/282953625281971794/282953625281971794.vrm",
+ "vroid/4/2832951763084104344/2832951763084104344.vrm",
+ "vroid/4/2838821058084527534/2838821058084527534.vrm",
+ "vroid/4/2849169045180588534/2849169045180588534.vrm",
+ "vroid/4/2850265203210483144/2850265203210483144.vrm",
+ "vroid/4/2853914823263748784/2853914823263748784.vrm",
+ "vroid/4/2860734323858529414/2860734323858529414.vrm",
+ "vroid/4/287489854999421414/287489854999421414.vrm",
+ "vroid/4/2879373078954726974/2879373078954726974.vrm",
+ "vroid/4/2889287675568576104/2889287675568576104.vrm",
+ "vroid/4/2899819526027946694/2899819526027946694.vrm",
+ "vroid/4/2906611932107334544/2906611932107334544.vrm",
+ "vroid/4/291163531130708474/291163531130708474.vrm",
+ "vroid/4/2921336439543148034/2921336439543148034.vrm",
+ "vroid/4/2929932472267418714/2929932472267418714.vrm",
+ "vroid/4/293546145870144624/293546145870144624.vrm",
+ "vroid/4/2936810763181299754/2936810763181299754.vrm",
+ "vroid/4/2940684392054129664/2940684392054129664.vrm",
+ "vroid/4/2954415559356004584/2954415559356004584.vrm",
+ "vroid/4/2965203384571898324/2965203384571898324.vrm",
+ "vroid/4/2968655506119680164/2968655506119680164.vrm",
+ "vroid/4/297399322277309154/297399322277309154.vrm",
+ "vroid/4/2974378545170413764/2974378545170413764.vrm",
+ "vroid/4/2979594526490784874/2979594526490784874.vrm",
+ "vroid/4/2981453517967612954/2981453517967612954.vrm",
+ "vroid/4/298157893808836854/298157893808836854.vrm",
+ "vroid/4/2984136409551243744/2984136409551243744.vrm",
+ "vroid/4/2988821767380899174/2988821767380899174.vrm",
+ "vroid/4/2990869328193205914/2990869328193205914.vrm",
+ "vroid/4/3013792371046784894/3013792371046784894.vrm",
+ "vroid/4/3021977883568093444/3021977883568093444.vrm",
+ "vroid/4/3029172804364718444/3029172804364718444.vrm",
+ "vroid/4/3047503415707568064/3047503415707568064.vrm",
+ "vroid/4/3062239418206712304/3062239418206712304.vrm",
+ "vroid/4/3071420849808952634/3071420849808952634.vrm",
+ "vroid/4/307152399930335374/307152399930335374.vrm",
+ "vroid/4/308016549500254364/308016549500254364.vrm",
+ "vroid/4/3084446605351079794/3084446605351079794.vrm",
+ "vroid/4/3104569774069019544/3104569774069019544.vrm",
+ "vroid/4/3114193734050789944/3114193734050789944.vrm",
+ "vroid/4/3120761647874323544/3120761647874323544.vrm",
+ "vroid/4/3127878716793801594/3127878716793801594.vrm",
+ "vroid/4/3132686846894285534/3132686846894285534.vrm",
+ "vroid/4/3138045737141200124/3138045737141200124.vrm",
+ "vroid/4/3138704850234273314/3138704850234273314.vrm",
+ "vroid/4/3140083623524056234/3140083623524056234.vrm",
+ "vroid/4/3140330465309469304/3140330465309469304.vrm",
+ "vroid/4/3142222430386649284/3142222430386649284.vrm",
+ "vroid/4/3144469253563476954/3144469253563476954.vrm",
+ "vroid/4/315703799847088574/315703799847088574.vrm",
+ "vroid/4/3162101059639200804/3162101059639200804.vrm",
+ "vroid/4/3168661637291930014/3168661637291930014.vrm",
+ "vroid/4/3171017434537774374/3171017434537774374.vrm",
+ "vroid/4/3176796226194638114/3176796226194638114.vrm",
+ "vroid/4/3193246921111492914/3193246921111492914.vrm",
+ "vroid/4/3203214879196864884/3203214879196864884.vrm",
+ "vroid/4/3204793096375165354/3204793096375165354.vrm",
+ "vroid/4/3205339589851963504/3205339589851963504.vrm",
+ "vroid/4/3210687953754614334/3210687953754614334.vrm",
+ "vroid/4/3233374830095260224/3233374830095260224.vrm",
+ "vroid/4/3240020585468727994/3240020585468727994.vrm",
+ "vroid/4/3243059948480542954/3243059948480542954.vrm",
+ "vroid/4/3243472514198646884/3243472514198646884.vrm",
+ "vroid/4/3254164253858291954/3254164253858291954.vrm",
+ "vroid/4/3255900920429697394/3255900920429697394.vrm",
+ "vroid/4/3283920330556289294/3283920330556289294.vrm",
+ "vroid/4/3297370904419012394/3297370904419012394.vrm",
+ "vroid/4/3300102868489926654/3300102868489926654.vrm",
+ "vroid/4/3300465989324057504/3300465989324057504.vrm",
+ "vroid/4/3303474614372738664/3303474614372738664.vrm",
+ "vroid/4/3315724731584897674/3315724731584897674.vrm",
+ "vroid/4/3321207713549714024/3321207713549714024.vrm",
+ "vroid/4/3332141018485864234/3332141018485864234.vrm",
+ "vroid/4/3335571488759300404/3335571488759300404.vrm",
+ "vroid/4/3336692514863502924/3336692514863502924.vrm",
+ "vroid/4/3336891135895394264/3336891135895394264.vrm",
+ "vroid/4/3339900600119240874/3339900600119240874.vrm",
+ "vroid/4/3341591471313244634/3341591471313244634.vrm",
+ "vroid/4/3343884176398986024/3343884176398986024.vrm",
+ "vroid/4/3349166829994199294/3349166829994199294.vrm",
+ "vroid/4/3351383747652567514/3351383747652567514.vrm",
+ "vroid/4/3354814635016136694/3354814635016136694.vrm",
+ "vroid/4/3365861068880734424/3365861068880734424.vrm",
+ "vroid/4/3372929349124117544/3372929349124117544.vrm",
+ "vroid/4/3375555473999615904/3375555473999615904.vrm",
+ "vroid/4/3378031604758102524/3378031604758102524.vrm",
+ "vroid/4/3392798036397316754/3392798036397316754.vrm",
+ "vroid/4/3393354991994753574/3393354991994753574.vrm",
+ "vroid/4/3394159562845852154/3394159562845852154.vrm",
+ "vroid/4/3400681287392715154/3400681287392715154.vrm",
+ "vroid/4/340658149770687474/340658149770687474.vrm",
+ "vroid/4/3407432699820922624/3407432699820922624.vrm",
+ "vroid/4/3416990186926465664/3416990186926465664.vrm",
+ "vroid/4/3423417731994324804/3423417731994324804.vrm",
+ "vroid/4/3425960501356503484/3425960501356503484.vrm",
+ "vroid/4/3437947161140431644/3437947161140431644.vrm",
+ "vroid/4/3443316733636413914/3443316733636413914.vrm",
+ "vroid/4/3446396561333608514/3446396561333608514.vrm",
+ "vroid/4/344715357407982844/344715357407982844.vrm",
+ "vroid/4/3455631774722815634/3455631774722815634.vrm",
+ "vroid/4/3458308737906276654/3458308737906276654.vrm",
+ "vroid/4/3467084589621137254/3467084589621137254.vrm",
+ "vroid/4/3468871805519333984/3468871805519333984.vrm",
+ "vroid/4/3477577966611581284/3477577966611581284.vrm",
+ "vroid/4/3477741758697288164/3477741758697288164.vrm",
+ "vroid/4/3480692677615746314/3480692677615746314.vrm",
+ "vroid/4/3484530361677579674/3484530361677579674.vrm",
+ "vroid/4/3489436372575248734/3489436372575248734.vrm",
+ "vroid/4/3495917509753266214/3495917509753266214.vrm",
+ "vroid/4/3498186111862863494/3498186111862863494.vrm",
+ "vroid/4/3509282224356500094/3509282224356500094.vrm",
+ "vroid/4/3521021506644922784/3521021506644922784.vrm",
+ "vroid/4/3527654599295990674/3527654599295990674.vrm",
+ "vroid/4/3533051141446205734/3533051141446205734.vrm",
+ "vroid/4/3533340109308207744/3533340109308207744.vrm",
+ "vroid/4/3537163613564054224/3537163613564054224.vrm",
+ "vroid/4/355196322744063784/355196322744063784.vrm",
+ "vroid/4/3552212544098079374/3552212544098079374.vrm",
+ "vroid/4/3555705602455458464/3555705602455458464.vrm",
+ "vroid/4/3558546714509011804/3558546714509011804.vrm",
+ "vroid/4/3561913042959010474/3561913042959010474.vrm",
+ "vroid/4/3569527460343298464/3569527460343298464.vrm",
+ "vroid/4/35741832170373584/35741832170373584.vrm",
+ "vroid/4/3580876891848542654/3580876891848542654.vrm",
+ "vroid/4/3588603905981282514/3588603905981282514.vrm",
+ "vroid/4/3591776592395398824/3591776592395398824.vrm",
+ "vroid/4/3592706025356098904/3592706025356098904.vrm",
+ "vroid/4/3599584599180516124/3599584599180516124.vrm",
+ "vroid/4/3602359969987581164/3602359969987581164.vrm",
+ "vroid/4/3612248732219924804/3612248732219924804.vrm",
+ "vroid/4/3621054085062799984/3621054085062799984.vrm",
+ "vroid/4/3625952001291203484/3625952001291203484.vrm",
+ "vroid/4/3641312082862486094/3641312082862486094.vrm",
+ "vroid/4/3655468612600055474/3655468612600055474.vrm",
+ "vroid/4/3657543033458435934/3657543033458435934.vrm",
+ "vroid/4/3675808841972851904/3675808841972851904.vrm",
+ "vroid/4/3680662438813906974/3680662438813906974.vrm",
+ "vroid/4/3683125818411978604/3683125818411978604.vrm",
+ "vroid/4/3688204515205684274/3688204515205684274.vrm",
+ "vroid/4/3688917147358425914/3688917147358425914.vrm",
+ "vroid/4/3703346194046576854/3703346194046576854.vrm",
+ "vroid/4/3710040273909006714/3710040273909006714.vrm",
+ "vroid/4/3713336235540478954/3713336235540478954.vrm",
+ "vroid/4/3722743615576184604/3722743615576184604.vrm",
+ "vroid/4/3724267385541886464/3724267385541886464.vrm",
+ "vroid/4/3736428032799423724/3736428032799423724.vrm",
+ "vroid/4/3740420377354097874/3740420377354097874.vrm",
+ "vroid/4/3746400550206881244/3746400550206881244.vrm",
+ "vroid/4/3749367618697512094/3749367618697512094.vrm",
+ "vroid/4/3758698582900854484/3758698582900854484.vrm",
+ "vroid/4/3759591186273122284/3759591186273122284.vrm",
+ "vroid/4/3763250162048057284/3763250162048057284.vrm",
+ "vroid/4/3784807617380451854/3784807617380451854.vrm",
+ "vroid/4/3804872845178539864/3804872845178539864.vrm",
+ "vroid/4/3806128401068099214/3806128401068099214.vrm",
+ "vroid/4/3809448106797971884/3809448106797971884.vrm",
+ "vroid/4/3843200155054922564/3843200155054922564.vrm",
+ "vroid/4/3847891336537514554/3847891336537514554.vrm",
+ "vroid/4/3849766717835692124/3849766717835692124.vrm",
+ "vroid/4/3859605156773608734/3859605156773608734.vrm",
+ "vroid/4/386243996448728294/386243996448728294.vrm",
+ "vroid/4/3863062946924175064/3863062946924175064.vrm",
+ "vroid/4/3873365491404745914/3873365491404745914.vrm",
+ "vroid/4/3875081190657779314/3875081190657779314.vrm",
+ "vroid/4/3894744169104605034/3894744169104605034.vrm",
+ "vroid/4/3902041218968964994/3902041218968964994.vrm",
+ "vroid/4/3907649782078189124/3907649782078189124.vrm",
+ "vroid/4/3923910991539845874/3923910991539845874.vrm",
+ "vroid/4/392894881385542264/392894881385542264.vrm",
+ "vroid/4/395274037685711754/395274037685711754.vrm",
+ "vroid/4/3963041746963158764/3963041746963158764.vrm",
+ "vroid/4/3979539599623415844/3979539599623415844.vrm",
+ "vroid/4/3980521927255593584/3980521927255593584.vrm",
+ "vroid/4/3987640659823808694/3987640659823808694.vrm",
+ "vroid/4/3991746878312368604/3991746878312368604.vrm",
+ "vroid/4/399438378340104814/399438378340104814.vrm",
+ "vroid/4/4008841001091843764/4008841001091843764.vrm",
+ "vroid/4/4022470079644344684/4022470079644344684.vrm",
+ "vroid/4/4025785225347738114/4025785225347738114.vrm",
+ "vroid/4/4031523998783585204/4031523998783585204.vrm",
+ "vroid/4/4059104302593579554/4059104302593579554.vrm",
+ "vroid/4/4068466383107212244/4068466383107212244.vrm",
+ "vroid/4/4070086065653274524/4070086065653274524.vrm",
+ "vroid/4/4070878446179482314/4070878446179482314.vrm",
+ "vroid/4/4072867620425461544/4072867620425461544.vrm",
+ "vroid/4/4076831879646660254/4076831879646660254.vrm",
+ "vroid/4/408276409872620944/408276409872620944.vrm",
+ "vroid/4/4094489117718266554/4094489117718266554.vrm",
+ "vroid/4/410131065258203474/410131065258203474.vrm",
+ "vroid/4/4104458335426488434/4104458335426488434.vrm",
+ "vroid/4/4109340378207584874/4109340378207584874.vrm",
+ "vroid/4/4148961757191340114/4148961757191340114.vrm",
+ "vroid/4/4153750369797952064/4153750369797952064.vrm",
+ "vroid/4/4160101502777068894/4160101502777068894.vrm",
+ "vroid/4/4165174791252842524/4165174791252842524.vrm",
+ "vroid/4/4166765201001939174/4166765201001939174.vrm",
+ "vroid/4/417020987538844134/417020987538844134.vrm",
+ "vroid/4/4170746264075688304/4170746264075688304.vrm",
+ "vroid/4/4171033703090443414/4171033703090443414.vrm",
+ "vroid/4/4171078969601310624/4171078969601310624.vrm",
+ "vroid/4/4172753233845024024/4172753233845024024.vrm",
+ "vroid/4/4177056044747669984/4177056044747669984.vrm",
+ "vroid/4/4179595829365468674/4179595829365468674.vrm",
+ "vroid/4/4194582883881065074/4194582883881065074.vrm",
+ "vroid/4/4195354407464970704/4195354407464970704.vrm",
+ "vroid/4/4195449474589038224/4195449474589038224.vrm",
+ "vroid/4/4197586603012252094/4197586603012252094.vrm",
+ "vroid/4/4204913831720294914/4204913831720294914.vrm",
+ "vroid/4/4213529107951841794/4213529107951841794.vrm",
+ "vroid/4/4213924048194480194/4213924048194480194.vrm",
+ "vroid/4/421450021181577604/421450021181577604.vrm",
+ "vroid/4/4216138460549023514/4216138460549023514.vrm",
+ "vroid/4/4219884292992314314/4219884292992314314.vrm",
+ "vroid/4/4232831853548356394/4232831853548356394.vrm",
+ "vroid/4/4235775703433531834/4235775703433531834.vrm",
+ "vroid/4/4237153073761085164/4237153073761085164.vrm",
+ "vroid/4/4244041182018747354/4244041182018747354.vrm",
+ "vroid/4/4244330328783318154/4244330328783318154.vrm",
+ "vroid/4/4244653179905844774/4244653179905844774.vrm",
+ "vroid/4/4246412337225082244/4246412337225082244.vrm",
+ "vroid/4/4269298378545987884/4269298378545987884.vrm",
+ "vroid/4/4274822910005691554/4274822910005691554.vrm",
+ "vroid/4/429888086316415594/429888086316415594.vrm",
+ "vroid/4/4311660358098678844/4311660358098678844.vrm",
+ "vroid/4/4314176638769213874/4314176638769213874.vrm",
+ "vroid/4/4315913522583493594/4315913522583493594.vrm",
+ "vroid/4/4318450114365286694/4318450114365286694.vrm",
+ "vroid/4/4326650625516406144/4326650625516406144.vrm",
+ "vroid/4/4328407503929256904/4328407503929256904.vrm",
+ "vroid/4/4332299479194544324/4332299479194544324.vrm",
+ "vroid/4/4334653905304799964/4334653905304799964.vrm",
+ "vroid/4/4352024335489565034/4352024335489565034.vrm",
+ "vroid/4/4353434294685314914/4353434294685314914.vrm",
+ "vroid/4/4359090367847228244/4359090367847228244.vrm",
+ "vroid/4/4360249910110062324/4360249910110062324.vrm",
+ "vroid/4/4371132039277509174/4371132039277509174.vrm",
+ "vroid/4/4372607556315731904/4372607556315731904.vrm",
+ "vroid/4/4377701689447813874/4377701689447813874.vrm",
+ "vroid/4/4383025477707035504/4383025477707035504.vrm",
+ "vroid/4/4385923456947277744/4385923456947277744.vrm",
+ "vroid/4/4393199761063374914/4393199761063374914.vrm",
+ "vroid/4/4404716863128361944/4404716863128361944.vrm",
+ "vroid/4/4414013853573166744/4414013853573166744.vrm",
+ "vroid/4/4420433107689405294/4420433107689405294.vrm",
+ "vroid/4/4423006740960699034/4423006740960699034.vrm",
+ "vroid/4/443067035690654314/443067035690654314.vrm",
+ "vroid/4/4432516223845087434/4432516223845087434.vrm",
+ "vroid/4/443675097610180934/443675097610180934.vrm",
+ "vroid/4/4439818607708391304/4439818607708391304.vrm",
+ "vroid/4/444304497790424864/444304497790424864.vrm",
+ "vroid/4/4443588401048481274/4443588401048481274.vrm",
+ "vroid/4/445061534495665744/445061534495665744.vrm",
+ "vroid/4/4464811440145937054/4464811440145937054.vrm",
+ "vroid/4/447862722991273504/447862722991273504.vrm",
+ "vroid/4/4492648597588349674/4492648597588349674.vrm",
+ "vroid/4/4492960262524923424/4492960262524923424.vrm",
+ "vroid/4/4514995713959981034/4514995713959981034.vrm",
+ "vroid/4/4520802565258108164/4520802565258108164.vrm",
+ "vroid/4/4523698854373847874/4523698854373847874.vrm",
+ "vroid/4/4527177686805123514/4527177686805123514.vrm",
+ "vroid/4/453795249730393274/453795249730393274.vrm",
+ "vroid/4/4541016780262166784/4541016780262166784.vrm",
+ "vroid/4/4558620593782812464/4558620593782812464.vrm",
+ "vroid/4/4571472004003098914/4571472004003098914.vrm",
+ "vroid/4/4581811442295991134/4581811442295991134.vrm",
+ "vroid/4/4586461202338429764/4586461202338429764.vrm",
+ "vroid/4/4595133630444475514/4595133630444475514.vrm",
+ "vroid/4/4598908326120234754/4598908326120234754.vrm",
+ "vroid/4/4615693772805331854/4615693772805331854.vrm",
+ "vroid/4/4618633675481632864/4618633675481632864.vrm",
+ "vroid/4/4624889486034598284/4624889486034598284.vrm",
+ "vroid/4/4633688391265789314/4633688391265789314.vrm",
+ "vroid/4/4635398644847192494/4635398644847192494.vrm",
+ "vroid/4/4639133330857729324/4639133330857729324.vrm",
+ "vroid/4/4640076122735076344/4640076122735076344.vrm",
+ "vroid/4/4668782707485659134/4668782707485659134.vrm",
+ "vroid/4/4669126319615355414/4669126319615355414.vrm",
+ "vroid/4/46755153835406754/46755153835406754.vrm",
+ "vroid/4/4679564420883816974/4679564420883816974.vrm",
+ "vroid/4/4683670610787754594/4683670610787754594.vrm",
+ "vroid/4/4719584812246709694/4719584812246709694.vrm",
+ "vroid/4/4724065874390421974/4724065874390421974.vrm",
+ "vroid/4/4726674916309060634/4726674916309060634.vrm",
+ "vroid/4/4728353296340594254/4728353296340594254.vrm",
+ "vroid/4/4730370512010041454/4730370512010041454.vrm",
+ "vroid/4/4736413079532341654/4736413079532341654.vrm",
+ "vroid/4/4741223103160347494/4741223103160347494.vrm",
+ "vroid/4/4750381262179083694/4750381262179083694.vrm",
+ "vroid/4/4771849138405493154/4771849138405493154.vrm",
+ "vroid/4/4774814859001674934/4774814859001674934.vrm",
+ "vroid/4/4776717168411013854/4776717168411013854.vrm",
+ "vroid/4/477741859036429564/477741859036429564.vrm",
+ "vroid/4/4783594772214303574/4783594772214303574.vrm",
+ "vroid/4/4794822077193158214/4794822077193158214.vrm",
+ "vroid/4/4800896164035702114/4800896164035702114.vrm",
+ "vroid/4/4810110767153555644/4810110767153555644.vrm",
+ "vroid/4/481296377309880514/481296377309880514.vrm",
+ "vroid/4/4817068496006848924/4817068496006848924.vrm",
+ "vroid/4/4820105348605269644/4820105348605269644.vrm",
+ "vroid/4/4825168650098397114/4825168650098397114.vrm",
+ "vroid/4/4826166863341949564/4826166863341949564.vrm",
+ "vroid/4/4832741060896983904/4832741060896983904.vrm",
+ "vroid/4/4848287659060022944/4848287659060022944.vrm",
+ "vroid/4/4849934692758594294/4849934692758594294.vrm",
+ "vroid/4/4854218265720612844/4854218265720612844.vrm",
+ "vroid/4/4867408899931044784/4867408899931044784.vrm",
+ "vroid/4/4876344295380323034/4876344295380323034.vrm",
+ "vroid/4/487673722199765014/487673722199765014.vrm",
+ "vroid/4/48828951002328264/48828951002328264.vrm",
+ "vroid/4/4894389097770805644/4894389097770805644.vrm",
+ "vroid/4/4894605842904896714/4894605842904896714.vrm",
+ "vroid/4/489675514011716364/489675514011716364.vrm",
+ "vroid/4/4900860499088253494/4900860499088253494.vrm",
+ "vroid/4/4902025119334400174/4902025119334400174.vrm",
+ "vroid/4/4902374499362098744/4902374499362098744.vrm",
+ "vroid/4/4906250367849098394/4906250367849098394.vrm",
+ "vroid/4/490781986271781264/490781986271781264.vrm",
+ "vroid/4/4908093880881828774/4908093880881828774.vrm",
+ "vroid/4/4928690293147508164/4928690293147508164.vrm",
+ "vroid/4/4942258466275469264/4942258466275469264.vrm",
+ "vroid/4/4942942126251007124/4942942126251007124.vrm",
+ "vroid/4/4948593163156134904/4948593163156134904.vrm",
+ "vroid/4/4951654590940589484/4951654590940589484.vrm",
+ "vroid/4/495832091469052164/495832091469052164.vrm",
+ "vroid/4/4959453736620007434/4959453736620007434.vrm",
+ "vroid/4/4970337013799049314/4970337013799049314.vrm",
+ "vroid/4/4977009894902489564/4977009894902489564.vrm",
+ "vroid/4/4995268633178697674/4995268633178697674.vrm",
+ "vroid/4/5004303770765001684/5004303770765001684.vrm",
+ "vroid/4/500568840969736794/500568840969736794.vrm",
+ "vroid/4/50077920950054374/50077920950054374.vrm",
+ "vroid/4/501614484859397074/501614484859397074.vrm",
+ "vroid/4/5031587324493771954/5031587324493771954.vrm",
+ "vroid/4/5035244349674541804/5035244349674541804.vrm",
+ "vroid/4/5035665141717567664/5035665141717567664.vrm",
+ "vroid/4/5036457925839246344/5036457925839246344.vrm",
+ "vroid/4/503702233138766144/503702233138766144.vrm",
+ "vroid/4/5044815003961393834/5044815003961393834.vrm",
+ "vroid/4/505746274073632634/505746274073632634.vrm",
+ "vroid/4/507146725530952514/507146725530952514.vrm",
+ "vroid/4/5081600001797832684/5081600001797832684.vrm",
+ "vroid/4/5093884526392615774/5093884526392615774.vrm",
+ "vroid/4/5095083118907676264/5095083118907676264.vrm",
+ "vroid/4/5106300963658417234/5106300963658417234.vrm",
+ "vroid/4/5107611009420246844/5107611009420246844.vrm",
+ "vroid/4/5110817549808611164/5110817549808611164.vrm",
+ "vroid/4/5117485835686648194/5117485835686648194.vrm",
+ "vroid/4/5120849541149636934/5120849541149636934.vrm",
+ "vroid/4/5126162032784001064/5126162032784001064.vrm",
+ "vroid/4/5126457399586514124/5126457399586514124.vrm",
+ "vroid/4/5128261934418143194/5128261934418143194.vrm",
+ "vroid/4/5141514256099581824/5141514256099581824.vrm",
+ "vroid/4/5148651649580638864/5148651649580638864.vrm",
+ "vroid/4/515908221821603724/515908221821603724.vrm",
+ "vroid/4/5159630980859045494/5159630980859045494.vrm",
+ "vroid/4/5165499202246879674/5165499202246879674.vrm",
+ "vroid/4/518220629359550044/518220629359550044.vrm",
+ "vroid/4/5187745540396342534/5187745540396342534.vrm",
+ "vroid/4/518913597396045494/518913597396045494.vrm",
+ "vroid/4/5191621268467024024/5191621268467024024.vrm",
+ "vroid/4/5192476078660838754/5192476078660838754.vrm",
+ "vroid/4/5193487038421289754/5193487038421289754.vrm",
+ "vroid/4/5196880032365723214/5196880032365723214.vrm",
+ "vroid/4/5199126144262596784/5199126144262596784.vrm",
+ "vroid/4/5207718481575510074/5207718481575510074.vrm",
+ "vroid/4/5209679646385665604/5209679646385665604.vrm",
+ "vroid/4/5212589392872775634/5212589392872775634.vrm",
+ "vroid/4/5215477834411168034/5215477834411168034.vrm",
+ "vroid/4/5219618950257053714/5219618950257053714.vrm",
+ "vroid/4/5219725788599098474/5219725788599098474.vrm",
+ "vroid/4/5229835939583991694/5229835939583991694.vrm",
+ "vroid/4/5233787077402556494/5233787077402556494.vrm",
+ "vroid/4/5235059319307947094/5235059319307947094.vrm",
+ "vroid/4/5250228917396683534/5250228917396683534.vrm",
+ "vroid/4/5260489449739864494/5260489449739864494.vrm",
+ "vroid/4/5260611575059847274/5260611575059847274.vrm",
+ "vroid/4/5263233711680159014/5263233711680159014.vrm",
+ "vroid/4/527389484389331754/527389484389331754.vrm",
+ "vroid/4/5277884919433851414/5277884919433851414.vrm",
+ "vroid/4/5283406828233254/5283406828233254.vrm",
+ "vroid/4/5294978393562727704/5294978393562727704.vrm",
+ "vroid/4/5301139071612620624/5301139071612620624.vrm",
+ "vroid/4/5303062218074694754/5303062218074694754.vrm",
+ "vroid/4/5303687892461981814/5303687892461981814.vrm",
+ "vroid/4/5306079829291212184/5306079829291212184.vrm",
+ "vroid/4/5323975219609125884/5323975219609125884.vrm",
+ "vroid/4/5329875324130741994/5329875324130741994.vrm",
+ "vroid/4/5338804783071617064/5338804783071617064.vrm",
+ "vroid/4/5340150727178111704/5340150727178111704.vrm",
+ "vroid/4/5364415615309207304/5364415615309207304.vrm",
+ "vroid/4/53665699766149364/53665699766149364.vrm",
+ "vroid/4/5367509602093070954/5367509602093070954.vrm",
+ "vroid/4/5369832494458033364/5369832494458033364.vrm",
+ "vroid/4/5377088408982230294/5377088408982230294.vrm",
+ "vroid/4/5377799571353755354/5377799571353755354.vrm",
+ "vroid/4/539720653783917974/539720653783917974.vrm",
+ "vroid/4/5402901593733060504/5402901593733060504.vrm",
+ "vroid/4/5413774941096058124/5413774941096058124.vrm",
+ "vroid/4/5421803604029499514/5421803604029499514.vrm",
+ "vroid/4/5423369656172284754/5423369656172284754.vrm",
+ "vroid/4/5425980541614731274/5425980541614731274.vrm",
+ "vroid/4/5434767935654035364/5434767935654035364.vrm",
+ "vroid/4/5437016270741417424/5437016270741417424.vrm",
+ "vroid/4/5440469626557640664/5440469626557640664.vrm",
+ "vroid/4/5453293767946364084/5453293767946364084.vrm",
+ "vroid/4/5454140300453686994/5454140300453686994.vrm",
+ "vroid/4/5465500553526305324/5465500553526305324.vrm",
+ "vroid/4/5469599571420815204/5469599571420815204.vrm",
+ "vroid/4/5471487049454825334/5471487049454825334.vrm",
+ "vroid/4/5472908469123373324/5472908469123373324.vrm",
+ "vroid/4/5479521126623014494/5479521126623014494.vrm",
+ "vroid/4/5489159121182749904/5489159121182749904.vrm",
+ "vroid/4/5500506564240555164/5500506564240555164.vrm",
+ "vroid/4/5500890399258653754/5500890399258653754.vrm",
+ "vroid/4/5505867222307235734/5505867222307235734.vrm",
+ "vroid/4/55246016422049914/55246016422049914.vrm",
+ "vroid/4/5525910920880612574/5525910920880612574.vrm",
+ "vroid/4/5541608042739437124/5541608042739437124.vrm",
+ "vroid/4/554753089558606494/554753089558606494.vrm",
+ "vroid/4/5548724676419750234/5548724676419750234.vrm",
+ "vroid/4/5552498783933406374/5552498783933406374.vrm",
+ "vroid/4/5571408976810192984/5571408976810192984.vrm",
+ "vroid/4/5574301519205370824/5574301519205370824.vrm",
+ "vroid/4/5583408578483755974/5583408578483755974.vrm",
+ "vroid/4/5591438386820897474/5591438386820897474.vrm",
+ "vroid/4/5606449916753595174/5606449916753595174.vrm",
+ "vroid/4/5614521851486837744/5614521851486837744.vrm",
+ "vroid/4/5614581532407314814/5614581532407314814.vrm",
+ "vroid/4/5615371321837056324/5615371321837056324.vrm",
+ "vroid/4/5617664353522508624/5617664353522508624.vrm",
+ "vroid/4/5624250898745220294/5624250898745220294.vrm",
+ "vroid/4/5626535682592523064/5626535682592523064.vrm",
+ "vroid/4/5627976508302098184/5627976508302098184.vrm",
+ "vroid/4/562954568302416764/562954568302416764.vrm",
+ "vroid/4/5633123662428398614/5633123662428398614.vrm",
+ "vroid/4/5641146889402690764/5641146889402690764.vrm",
+ "vroid/4/5642576599883154994/5642576599883154994.vrm",
+ "vroid/4/5644550979324015604/5644550979324015604.vrm",
+ "vroid/4/5651581114885857194/5651581114885857194.vrm",
+ "vroid/4/5660112437186557354/5660112437186557354.vrm",
+ "vroid/4/5667363927733355624/5667363927733355624.vrm",
+ "vroid/4/5671022905515670344/5671022905515670344.vrm",
+ "vroid/4/5677073603850561144/5677073603850561144.vrm",
+ "vroid/4/5685923738509281784/5685923738509281784.vrm",
+ "vroid/4/5697606268980424114/5697606268980424114.vrm",
+ "vroid/4/5701967324875172904/5701967324875172904.vrm",
+ "vroid/4/5707061825687431364/5707061825687431364.vrm",
+ "vroid/4/5725887755534211614/5725887755534211614.vrm",
+ "vroid/4/5726181147854757094/5726181147854757094.vrm",
+ "vroid/4/5730840203016335744/5730840203016335744.vrm",
+ "vroid/4/5736484362380956424/5736484362380956424.vrm",
+ "vroid/4/574787773440459534/574787773440459534.vrm",
+ "vroid/4/5749824598023288524/5749824598023288524.vrm",
+ "vroid/4/5757595577275322084/5757595577275322084.vrm",
+ "vroid/4/5757695720456163634/5757695720456163634.vrm",
+ "vroid/4/5759450759111269994/5759450759111269994.vrm",
+ "vroid/4/5765377510248477294/5765377510248477294.vrm",
+ "vroid/4/576735500562034744/576735500562034744.vrm",
+ "vroid/4/577343882912444224/577343882912444224.vrm",
+ "vroid/4/5781033577208828084/5781033577208828084.vrm",
+ "vroid/4/5785700069168527344/5785700069168527344.vrm",
+ "vroid/4/5787737517460082104/5787737517460082104.vrm",
+ "vroid/4/5787945920471349414/5787945920471349414.vrm",
+ "vroid/4/5788803375878961174/5788803375878961174.vrm",
+ "vroid/4/5791380148931290764/5791380148931290764.vrm",
+ "vroid/4/5795553392602678984/5795553392602678984.vrm",
+ "vroid/4/5797812689481340954/5797812689481340954.vrm",
+ "vroid/4/5801638869759218804/5801638869759218804.vrm",
+ "vroid/4/581701394246811354/581701394246811354.vrm",
+ "vroid/4/5818055956712534744/5818055956712534744.vrm",
+ "vroid/4/5825197095860902264/5825197095860902264.vrm",
+ "vroid/4/583267510167629424/583267510167629424.vrm",
+ "vroid/4/5847706480553909204/5847706480553909204.vrm",
+ "vroid/4/5854395701362535344/5854395701362535344.vrm",
+ "vroid/4/5865729498576398634/5865729498576398634.vrm",
+ "vroid/4/5878964422962758534/5878964422962758534.vrm",
+ "vroid/4/5881834820973554044/5881834820973554044.vrm",
+ "vroid/4/5890824493597526694/5890824493597526694.vrm",
+ "vroid/4/5906721519408979774/5906721519408979774.vrm",
+ "vroid/4/5906952404122853274/5906952404122853274.vrm",
+ "vroid/4/5932331136617025954/5932331136617025954.vrm",
+ "vroid/4/5935878506303958564/5935878506303958564.vrm",
+ "vroid/4/5959261440404678264/5959261440404678264.vrm",
+ "vroid/4/5963352016242798364/5963352016242798364.vrm",
+ "vroid/4/59716680249630594/59716680249630594.vrm",
+ "vroid/4/5973115356480461014/5973115356480461014.vrm",
+ "vroid/4/5977406131606415184/5977406131606415184.vrm",
+ "vroid/4/5980295007809284774/5980295007809284774.vrm",
+ "vroid/4/5981427040322860314/5981427040322860314.vrm",
+ "vroid/4/5986125334033160824/5986125334033160824.vrm",
+ "vroid/4/6022784458460749044/6022784458460749044.vrm",
+ "vroid/4/6023572166732847624/6023572166732847624.vrm",
+ "vroid/4/6023903481246448204/6023903481246448204.vrm",
+ "vroid/4/6024659757334799614/6024659757334799614.vrm",
+ "vroid/4/6040016699399544514/6040016699399544514.vrm",
+ "vroid/4/6042466420228011854/6042466420228011854.vrm",
+ "vroid/4/6042571052532137804/6042571052532137804.vrm",
+ "vroid/4/6048841661247486364/6048841661247486364.vrm",
+ "vroid/4/6049383030391771734/6049383030391771734.vrm",
+ "vroid/4/6049532156959307764/6049532156959307764.vrm",
+ "vroid/4/6063262177566326494/6063262177566326494.vrm",
+ "vroid/4/6064832325163610054/6064832325163610054.vrm",
+ "vroid/4/6070772456826090184/6070772456826090184.vrm",
+ "vroid/4/6080851945430092664/6080851945430092664.vrm",
+ "vroid/4/6084497388589527244/6084497388589527244.vrm",
+ "vroid/4/6086473750063161644/6086473750063161644.vrm",
+ "vroid/4/6092454781272856224/6092454781272856224.vrm",
+ "vroid/4/6109644558641171934/6109644558641171934.vrm",
+ "vroid/4/6110227717044215744/6110227717044215744.vrm",
+ "vroid/4/61172549064631184/61172549064631184.vrm",
+ "vroid/4/6119376093825713754/6119376093825713754.vrm",
+ "vroid/4/6126219640569945994/6126219640569945994.vrm",
+ "vroid/4/6127610571954913294/6127610571954913294.vrm",
+ "vroid/4/6129499116745080084/6129499116745080084.vrm",
+ "vroid/4/613377065256434304/613377065256434304.vrm",
+ "vroid/4/6136376472617420904/6136376472617420904.vrm",
+ "vroid/4/6137540671867540984/6137540671867540984.vrm",
+ "vroid/4/61379182488740904/61379182488740904.vrm",
+ "vroid/4/6148327320749482364/6148327320749482364.vrm",
+ "vroid/4/6149434999362947414/6149434999362947414.vrm",
+ "vroid/4/6152286003892148664/6152286003892148664.vrm",
+ "vroid/4/616544020297047684/616544020297047684.vrm",
+ "vroid/4/6170480660003122104/6170480660003122104.vrm",
+ "vroid/4/6183077212588878284/6183077212588878284.vrm",
+ "vroid/4/6188463547069235224/6188463547069235224.vrm",
+ "vroid/4/6188804642239067724/6188804642239067724.vrm",
+ "vroid/4/6189519901163087834/6189519901163087834.vrm",
+ "vroid/4/6193651908993888824/6193651908993888824.vrm",
+ "vroid/4/6195684047124932544/6195684047124932544.vrm",
+ "vroid/4/6197768943214480104/6197768943214480104.vrm",
+ "vroid/4/6197857164424096094/6197857164424096094.vrm",
+ "vroid/4/6207668338338151524/6207668338338151524.vrm",
+ "vroid/4/6208224055638750224/6208224055638750224.vrm",
+ "vroid/4/6210658408952459514/6210658408952459514.vrm",
+ "vroid/4/6219287033410447794/6219287033410447794.vrm",
+ "vroid/4/6224181708507224014/6224181708507224014.vrm",
+ "vroid/4/6225919731412999664/6225919731412999664.vrm",
+ "vroid/4/6235820823680110604/6235820823680110604.vrm",
+ "vroid/4/623932937153560984/623932937153560984.vrm",
+ "vroid/4/6270959030209594304/6270959030209594304.vrm",
+ "vroid/4/6272576728468613364/6272576728468613364.vrm",
+ "vroid/4/6284166620038466654/6284166620038466654.vrm",
+ "vroid/4/6289146358896397464/6289146358896397464.vrm",
+ "vroid/4/629947668462112874/629947668462112874.vrm",
+ "vroid/4/6303529144939809914/6303529144939809914.vrm",
+ "vroid/4/6307522886208290374/6307522886208290374.vrm",
+ "vroid/4/6311016472293885624/6311016472293885624.vrm",
+ "vroid/4/6316645998948470434/6316645998948470434.vrm",
+ "vroid/4/6318274117798360394/6318274117798360394.vrm",
+ "vroid/4/6329823776576556994/6329823776576556994.vrm",
+ "vroid/4/6332312833516801854/6332312833516801854.vrm",
+ "vroid/4/6341932016479485734/6341932016479485734.vrm",
+ "vroid/4/6351679221631652164/6351679221631652164.vrm",
+ "vroid/4/6363161414586125644/6363161414586125644.vrm",
+ "vroid/4/6375734095001892284/6375734095001892284.vrm",
+ "vroid/4/6376513150393262394/6376513150393262394.vrm",
+ "vroid/4/6378241090634625114/6378241090634625114.vrm",
+ "vroid/4/6387901398817364724/6387901398817364724.vrm",
+ "vroid/4/6388609412759201144/6388609412759201144.vrm",
+ "vroid/4/6391371473190793324/6391371473190793324.vrm",
+ "vroid/4/6405470048325239794/6405470048325239794.vrm",
+ "vroid/4/6418846269576239794/6418846269576239794.vrm",
+ "vroid/4/6432914831928308264/6432914831928308264.vrm",
+ "vroid/4/6439316893655830424/6439316893655830424.vrm",
+ "vroid/4/6460358452295137724/6460358452295137724.vrm",
+ "vroid/4/6461960670287462204/6461960670287462204.vrm",
+ "vroid/4/6469013191380825794/6469013191380825794.vrm",
+ "vroid/4/6469452289291317784/6469452289291317784.vrm",
+ "vroid/4/6470534091364198944/6470534091364198944.vrm",
+ "vroid/4/6472263278455391134/6472263278455391134.vrm",
+ "vroid/4/6475182909935626604/6475182909935626604.vrm",
+ "vroid/4/6480879943499945914/6480879943499945914.vrm",
+ "vroid/4/6484941873356349064/6484941873356349064.vrm",
+ "vroid/4/6490178928922019904/6490178928922019904.vrm",
+ "vroid/4/6496131285111957324/6496131285111957324.vrm",
+ "vroid/4/6497519695252388264/6497519695252388264.vrm",
+ "vroid/4/650430037313030894/650430037313030894.vrm",
+ "vroid/4/6504347845724186494/6504347845724186494.vrm",
+ "vroid/4/6506616336949694674/6506616336949694674.vrm",
+ "vroid/4/650702036445054014/650702036445054014.vrm",
+ "vroid/4/6518719133695467254/6518719133695467254.vrm",
+ "vroid/4/6549002942155254534/6549002942155254534.vrm",
+ "vroid/4/6562447960590230054/6562447960590230054.vrm",
+ "vroid/4/6566149738642329014/6566149738642329014.vrm",
+ "vroid/4/6572215897819583074/6572215897819583074.vrm",
+ "vroid/4/6575244400353006004/6575244400353006004.vrm",
+ "vroid/4/6575575988497187954/6575575988497187954.vrm",
+ "vroid/4/6575628826252947034/6575628826252947034.vrm",
+ "vroid/4/6585158831989396844/6585158831989396844.vrm",
+ "vroid/4/659329376418505634/659329376418505634.vrm",
+ "vroid/4/6596804483322828644/6596804483322828644.vrm",
+ "vroid/4/6601449976499183184/6601449976499183184.vrm",
+ "vroid/4/6610695460070356514/6610695460070356514.vrm",
+ "vroid/4/6616489800756417634/6616489800756417634.vrm",
+ "vroid/4/662119430240220134/662119430240220134.vrm",
+ "vroid/4/6639357367451459944/6639357367451459944.vrm",
+ "vroid/4/6644130510462203274/6644130510462203274.vrm",
+ "vroid/4/664632424651989814/664632424651989814.vrm",
+ "vroid/4/6648436694793913434/6648436694793913434.vrm",
+ "vroid/4/6651976130524224974/6651976130524224974.vrm",
+ "vroid/4/6657498104824700544/6657498104824700544.vrm",
+ "vroid/4/6658827659960300254/6658827659960300254.vrm",
+ "vroid/4/6659166054126243134/6659166054126243134.vrm",
+ "vroid/4/666090495498047514/666090495498047514.vrm",
+ "vroid/4/6672696767364048174/6672696767364048174.vrm",
+ "vroid/4/6686080820068702454/6686080820068702454.vrm",
+ "vroid/4/6692541480417590184/6692541480417590184.vrm",
+ "vroid/4/6693494196958487814/6693494196958487814.vrm",
+ "vroid/4/6693500342745230314/6693500342745230314.vrm",
+ "vroid/4/6693558746154078484/6693558746154078484.vrm",
+ "vroid/4/6703993443433078104/6703993443433078104.vrm",
+ "vroid/4/670627483968324134/670627483968324134.vrm",
+ "vroid/4/6708097714365201934/6708097714365201934.vrm",
+ "vroid/4/6712619142851903564/6712619142851903564.vrm",
+ "vroid/4/6714172372514036924/6714172372514036924.vrm",
+ "vroid/4/6715302327334770604/6715302327334770604.vrm",
+ "vroid/4/6720774836290583384/6720774836290583384.vrm",
+ "vroid/4/6734543798194022014/6734543798194022014.vrm",
+ "vroid/4/6740191081587264014/6740191081587264014.vrm",
+ "vroid/4/6746934255553156634/6746934255553156634.vrm",
+ "vroid/4/6755015732946048624/6755015732946048624.vrm",
+ "vroid/4/6765732412546818554/6765732412546818554.vrm",
+ "vroid/4/6775238595644289784/6775238595644289784.vrm",
+ "vroid/4/6784520107746455804/6784520107746455804.vrm",
+ "vroid/4/6793359831420938854/6793359831420938854.vrm",
+ "vroid/4/6794490089473741204/6794490089473741204.vrm",
+ "vroid/4/6794802128711664904/6794802128711664904.vrm",
+ "vroid/4/6799092633183654054/6799092633183654054.vrm",
+ "vroid/4/6799243505136901844/6799243505136901844.vrm",
+ "vroid/4/6812674063388595014/6812674063388595014.vrm",
+ "vroid/4/6813732266138802024/6813732266138802024.vrm",
+ "vroid/4/6820010088740936264/6820010088740936264.vrm",
+ "vroid/4/6827552946979712614/6827552946979712614.vrm",
+ "vroid/4/6831472594427174514/6831472594427174514.vrm",
+ "vroid/4/6840745670228932174/6840745670228932174.vrm",
+ "vroid/4/6841294625329622154/6841294625329622154.vrm",
+ "vroid/4/6842397859908803294/6842397859908803294.vrm",
+ "vroid/4/6850314667601921744/6850314667601921744.vrm",
+ "vroid/4/6851111333736244974/6851111333736244974.vrm",
+ "vroid/4/6854609366117194864/6854609366117194864.vrm",
+ "vroid/4/6858511152582276614/6858511152582276614.vrm",
+ "vroid/4/6860879647215844084/6860879647215844084.vrm",
+ "vroid/4/6867692254199480414/6867692254199480414.vrm",
+ "vroid/4/6873654131695864994/6873654131695864994.vrm",
+ "vroid/4/6887843291475895664/6887843291475895664.vrm",
+ "vroid/4/689551748081700004/689551748081700004.vrm",
+ "vroid/4/6916203899546371784/6916203899546371784.vrm",
+ "vroid/4/6917914460782468874/6917914460782468874.vrm",
+ "vroid/4/6918533285950808734/6918533285950808734.vrm",
+ "vroid/4/6919742514652955284/6919742514652955284.vrm",
+ "vroid/4/6920118971293393844/6920118971293393844.vrm",
+ "vroid/4/6931493768044660854/6931493768044660854.vrm",
+ "vroid/4/6932137419019036224/6932137419019036224.vrm",
+ "vroid/4/6937302608742960734/6937302608742960734.vrm",
+ "vroid/4/6944240538578430844/6944240538578430844.vrm",
+ "vroid/4/6946519873498896364/6946519873498896364.vrm",
+ "vroid/4/6947251991850988664/6947251991850988664.vrm",
+ "vroid/4/6948277763870990364/6948277763870990364.vrm",
+ "vroid/4/694975496441292004/694975496441292004.vrm",
+ "vroid/4/6950411152453646874/6950411152453646874.vrm",
+ "vroid/4/6960030052858640164/6960030052858640164.vrm",
+ "vroid/4/6960825562849490764/6960825562849490764.vrm",
+ "vroid/4/6962397801887831534/6962397801887831534.vrm",
+ "vroid/4/6980262620923349184/6980262620923349184.vrm",
+ "vroid/4/700727952898689994/700727952898689994.vrm",
+ "vroid/4/7009759717195130374/7009759717195130374.vrm",
+ "vroid/4/7019910375032430724/7019910375032430724.vrm",
+ "vroid/4/7025138899811067614/7025138899811067614.vrm",
+ "vroid/4/7025219114402190394/7025219114402190394.vrm",
+ "vroid/4/7027545772473720624/7027545772473720624.vrm",
+ "vroid/4/7033233521012343784/7033233521012343784.vrm",
+ "vroid/4/7041959720894626314/7041959720894626314.vrm",
+ "vroid/4/7045961039347139024/7045961039347139024.vrm",
+ "vroid/4/7051360079525549264/7051360079525549264.vrm",
+ "vroid/4/7058964985593482854/7058964985593482854.vrm",
+ "vroid/4/706226989706066824/706226989706066824.vrm",
+ "vroid/4/7064374131149740644/7064374131149740644.vrm",
+ "vroid/4/7071401529780218484/7071401529780218484.vrm",
+ "vroid/4/7076019118369987374/7076019118369987374.vrm",
+ "vroid/4/7077639655551445194/7077639655551445194.vrm",
+ "vroid/4/7082910778403784144/7082910778403784144.vrm",
+ "vroid/4/7084213414247331784/7084213414247331784.vrm",
+ "vroid/4/7093049344974409954/7093049344974409954.vrm",
+ "vroid/4/7096021423032343054/7096021423032343054.vrm",
+ "vroid/4/7096189538286646334/7096189538286646334.vrm",
+ "vroid/4/7100252542971187364/7100252542971187364.vrm",
+ "vroid/4/7102534965032169924/7102534965032169924.vrm",
+ "vroid/4/7113065783802098634/7113065783802098634.vrm",
+ "vroid/4/7113918617607589234/7113918617607589234.vrm",
+ "vroid/4/7114983652684321474/7114983652684321474.vrm",
+ "vroid/4/7121305972431517844/7121305972431517844.vrm",
+ "vroid/4/7129434782663851864/7129434782663851864.vrm",
+ "vroid/4/7136088785339641984/7136088785339641984.vrm",
+ "vroid/4/7138281883622192894/7138281883622192894.vrm",
+ "vroid/4/7141880670733504864/7141880670733504864.vrm",
+ "vroid/4/7146174902603061914/7146174902603061914.vrm",
+ "vroid/4/7146542349954932994/7146542349954932994.vrm",
+ "vroid/4/715423948920415364/715423948920415364.vrm",
+ "vroid/4/7176283307078560674/7176283307078560674.vrm",
+ "vroid/4/7192785171423243974/7192785171423243974.vrm",
+ "vroid/4/720582893869885644/720582893869885644.vrm",
+ "vroid/4/7207318523410233694/7207318523410233694.vrm",
+ "vroid/4/7218000064796028224/7218000064796028224.vrm",
+ "vroid/4/7220840217069940664/7220840217069940664.vrm",
+ "vroid/4/722748758565259364/722748758565259364.vrm",
+ "vroid/4/7232897851008372344/7232897851008372344.vrm",
+ "vroid/4/7246253593436455104/7246253593436455104.vrm",
+ "vroid/4/7262279538304868254/7262279538304868254.vrm",
+ "vroid/4/7279202903900497514/7279202903900497514.vrm",
+ "vroid/4/7287687206372684614/7287687206372684614.vrm",
+ "vroid/4/7289255131926215874/7289255131926215874.vrm",
+ "vroid/4/7291478949208214384/7291478949208214384.vrm",
+ "vroid/4/7310260224715609424/7310260224715609424.vrm",
+ "vroid/4/7326785546328314734/7326785546328314734.vrm",
+ "vroid/4/7329298678680445974/7329298678680445974.vrm",
+ "vroid/4/733004243205708294/733004243205708294.vrm",
+ "vroid/4/7333049491599241814/7333049491599241814.vrm",
+ "vroid/4/7338982462280956114/7338982462280956114.vrm",
+ "vroid/4/7345066945839319054/7345066945839319054.vrm",
+ "vroid/4/7352526686505303224/7352526686505303224.vrm",
+ "vroid/4/7371417046200586614/7371417046200586614.vrm",
+ "vroid/4/7382636977460649564/7382636977460649564.vrm",
+ "vroid/4/7396952632113792124/7396952632113792124.vrm",
+ "vroid/4/7399805415973111444/7399805415973111444.vrm",
+ "vroid/4/740054836781164404/740054836781164404.vrm",
+ "vroid/4/7403995698479878754/7403995698479878754.vrm",
+ "vroid/4/740921953343758624/740921953343758624.vrm",
+ "vroid/4/7415968921062094644/7415968921062094644.vrm",
+ "vroid/4/7426799322721130564/7426799322721130564.vrm",
+ "vroid/4/7438574361567296424/7438574361567296424.vrm",
+ "vroid/4/7444832889680652574/7444832889680652574.vrm",
+ "vroid/4/7451391488998733524/7451391488998733524.vrm",
+ "vroid/4/7473363650738559624/7473363650738559624.vrm",
+ "vroid/4/7473374001041928634/7473374001041928634.vrm",
+ "vroid/4/7474182781387807274/7474182781387807274.vrm",
+ "vroid/4/7481921185322054694/7481921185322054694.vrm",
+ "vroid/4/7483421074227362664/7483421074227362664.vrm",
+ "vroid/4/7485114862555626864/7485114862555626864.vrm",
+ "vroid/4/74918524375105304/74918524375105304.vrm",
+ "vroid/4/7502834911298610204/7502834911298610204.vrm",
+ "vroid/4/7503482718456416904/7503482718456416904.vrm",
+ "vroid/4/7508051830360446354/7508051830360446354.vrm",
+ "vroid/4/7529376085391518444/7529376085391518444.vrm",
+ "vroid/4/7534109278635576804/7534109278635576804.vrm",
+ "vroid/4/7541635977674374964/7541635977674374964.vrm",
+ "vroid/4/7544896513371512324/7544896513371512324.vrm",
+ "vroid/4/7552306627636156604/7552306627636156604.vrm",
+ "vroid/4/7562245497992388904/7562245497992388904.vrm",
+ "vroid/4/7563919421962081354/7563919421962081354.vrm",
+ "vroid/4/7575226968292712034/7575226968292712034.vrm",
+ "vroid/4/7581212209526173754/7581212209526173754.vrm",
+ "vroid/4/7581783230036554354/7581783230036554354.vrm",
+ "vroid/4/7587336144599321074/7587336144599321074.vrm",
+ "vroid/4/759324185742030314/759324185742030314.vrm",
+ "vroid/4/7594896980748997894/7594896980748997894.vrm",
+ "vroid/4/7628061840645677234/7628061840645677234.vrm",
+ "vroid/4/7658900917447204394/7658900917447204394.vrm",
+ "vroid/4/7660082092392400194/7660082092392400194.vrm",
+ "vroid/4/7669438621341506794/7669438621341506794.vrm",
+ "vroid/4/7675240878622194314/7675240878622194314.vrm",
+ "vroid/4/7676043641332837104/7676043641332837104.vrm",
+ "vroid/4/7680997291201013464/7680997291201013464.vrm",
+ "vroid/4/7683771153069758524/7683771153069758524.vrm",
+ "vroid/4/7685118125136497514/7685118125136497514.vrm",
+ "vroid/4/7686469476165979294/7686469476165979294.vrm",
+ "vroid/4/7689457867860873324/7689457867860873324.vrm",
+ "vroid/4/7694539601874692404/7694539601874692404.vrm",
+ "vroid/4/7707097978094931894/7707097978094931894.vrm",
+ "vroid/4/7729763849583556504/7729763849583556504.vrm",
+ "vroid/4/7731405011875941094/7731405011875941094.vrm",
+ "vroid/4/7738157712230778224/7738157712230778224.vrm",
+ "vroid/4/7740737204873827184/7740737204873827184.vrm",
+ "vroid/4/7741186907561305514/7741186907561305514.vrm",
+ "vroid/4/7749153570476289064/7749153570476289064.vrm",
+ "vroid/4/7750669406647227124/7750669406647227124.vrm",
+ "vroid/4/775121736883739994/775121736883739994.vrm",
+ "vroid/4/775839305180153794/775839305180153794.vrm",
+ "vroid/4/7761482439804825084/7761482439804825084.vrm",
+ "vroid/4/7769186915216177984/7769186915216177984.vrm",
+ "vroid/4/7769902201675501694/7769902201675501694.vrm",
+ "vroid/4/777433512032783244/777433512032783244.vrm",
+ "vroid/4/7775114346400143344/7775114346400143344.vrm",
+ "vroid/4/7776681781440354014/7776681781440354014.vrm",
+ "vroid/4/7791104668696169014/7791104668696169014.vrm",
+ "vroid/4/7800672931338023004/7800672931338023004.vrm",
+ "vroid/4/7818687744359000894/7818687744359000894.vrm",
+ "vroid/4/7822916201794807644/7822916201794807644.vrm",
+ "vroid/4/7829108274631729144/7829108274631729144.vrm",
+ "vroid/4/7837685247324065434/7837685247324065434.vrm",
+ "vroid/4/7843695037835084644/7843695037835084644.vrm",
+ "vroid/4/7850756683217735174/7850756683217735174.vrm",
+ "vroid/4/7860114013084220834/7860114013084220834.vrm",
+ "vroid/4/7863045187650927274/7863045187650927274.vrm",
+ "vroid/4/7869907298647232224/7869907298647232224.vrm",
+ "vroid/4/7873055675512130254/7873055675512130254.vrm",
+ "vroid/4/7874190671782876074/7874190671782876074.vrm",
+ "vroid/4/7894301747274972114/7894301747274972114.vrm",
+ "vroid/4/7905733517093819894/7905733517093819894.vrm",
+ "vroid/4/7905935391879764884/7905935391879764884.vrm",
+ "vroid/4/7911544648096987464/7911544648096987464.vrm",
+ "vroid/4/7920169077624115284/7920169077624115284.vrm",
+ "vroid/4/7927698758430086614/7927698758430086614.vrm",
+ "vroid/4/7932621472215696864/7932621472215696864.vrm",
+ "vroid/4/7936565217882089604/7936565217882089604.vrm",
+ "vroid/4/794228350137288974/794228350137288974.vrm",
+ "vroid/4/7956309335296231494/7956309335296231494.vrm",
+ "vroid/4/7964782863640533354/7964782863640533354.vrm",
+ "vroid/4/7965677467899022054/7965677467899022054.vrm",
+ "vroid/4/7967611415844193024/7967611415844193024.vrm",
+ "vroid/4/7968274847996282704/7968274847996282704.vrm",
+ "vroid/4/7989122072718486224/7989122072718486224.vrm",
+ "vroid/4/7991021174847367064/7991021174847367064.vrm",
+ "vroid/4/7991100460080411164/7991100460080411164.vrm",
+ "vroid/4/7992613180591849424/7992613180591849424.vrm",
+ "vroid/4/8000884384075299894/8000884384075299894.vrm",
+ "vroid/4/8009122004212655614/8009122004212655614.vrm",
+ "vroid/4/8011461789610162454/8011461789610162454.vrm",
+ "vroid/4/8017613268736820994/8017613268736820994.vrm",
+ "vroid/4/8021279369889142944/8021279369889142944.vrm",
+ "vroid/4/8023336547507900284/8023336547507900284.vrm",
+ "vroid/4/8023340313520017564/8023340313520017564.vrm",
+ "vroid/4/8023861737236545414/8023861737236545414.vrm",
+ "vroid/4/8025811996170644434/8025811996170644434.vrm",
+ "vroid/4/8035481501333610604/8035481501333610604.vrm",
+ "vroid/4/8038283893251722914/8038283893251722914.vrm",
+ "vroid/4/8050724852375777084/8050724852375777084.vrm",
+ "vroid/4/8055009134157920134/8055009134157920134.vrm",
+ "vroid/4/8055906888350119364/8055906888350119364.vrm",
+ "vroid/4/8067759664895399224/8067759664895399224.vrm",
+ "vroid/4/8070543453958594274/8070543453958594274.vrm",
+ "vroid/4/8078519021910553034/8078519021910553034.vrm",
+ "vroid/4/8085672168828626304/8085672168828626304.vrm",
+ "vroid/4/8091610111794253144/8091610111794253144.vrm",
+ "vroid/4/8098025434032901454/8098025434032901454.vrm",
+ "vroid/4/809815191355712414/809815191355712414.vrm",
+ "vroid/4/8101939262133117154/8101939262133117154.vrm",
+ "vroid/4/8102987591353279794/8102987591353279794.vrm",
+ "vroid/4/8110779481826086554/8110779481826086554.vrm",
+ "vroid/4/8120471039602742764/8120471039602742764.vrm",
+ "vroid/4/8127918762624373814/8127918762624373814.vrm",
+ "vroid/4/8146406346818854044/8146406346818854044.vrm",
+ "vroid/4/8148693544763795484/8148693544763795484.vrm",
+ "vroid/4/8166391884678514474/8166391884678514474.vrm",
+ "vroid/4/8180868737103742844/8180868737103742844.vrm",
+ "vroid/4/8200284420382621724/8200284420382621724.vrm",
+ "vroid/4/8202322493827924894/8202322493827924894.vrm",
+ "vroid/4/8202516452963305844/8202516452963305844.vrm",
+ "vroid/4/8203950241244317714/8203950241244317714.vrm",
+ "vroid/4/821179359686508964/821179359686508964.vrm",
+ "vroid/4/8212750148332098914/8212750148332098914.vrm",
+ "vroid/4/8221630384582996054/8221630384582996054.vrm",
+ "vroid/4/8228961213094661464/8228961213094661464.vrm",
+ "vroid/4/8230650062989714974/8230650062989714974.vrm",
+ "vroid/4/8237335534011237034/8237335534011237034.vrm",
+ "vroid/4/8241372033020757794/8241372033020757794.vrm",
+ "vroid/4/8242217938580222144/8242217938580222144.vrm",
+ "vroid/4/8244089127362380284/8244089127362380284.vrm",
+ "vroid/4/8248688506529059464/8248688506529059464.vrm",
+ "vroid/4/8253325362347273144/8253325362347273144.vrm",
+ "vroid/4/8260964323852612154/8260964323852612154.vrm",
+ "vroid/4/8263081253484182754/8263081253484182754.vrm",
+ "vroid/4/8266717332221049274/8266717332221049274.vrm",
+ "vroid/4/8278446515690313974/8278446515690313974.vrm",
+ "vroid/4/8280951483532666554/8280951483532666554.vrm",
+ "vroid/4/8284625807371769184/8284625807371769184.vrm",
+ "vroid/4/8287683889410939194/8287683889410939194.vrm",
+ "vroid/4/8305853267344806044/8305853267344806044.vrm",
+ "vroid/4/832640011377056114/832640011377056114.vrm",
+ "vroid/4/8356514890186998954/8356514890186998954.vrm",
+ "vroid/4/8360180124165032324/8360180124165032324.vrm",
+ "vroid/4/836132670204309984/836132670204309984.vrm",
+ "vroid/4/836468045456903654/836468045456903654.vrm",
+ "vroid/4/8369554683334999354/8369554683334999354.vrm",
+ "vroid/4/838161638252237304/838161638252237304.vrm",
+ "vroid/4/8383955103242914294/8383955103242914294.vrm",
+ "vroid/4/8385650727625808204/8385650727625808204.vrm",
+ "vroid/4/8387973149712120894/8387973149712120894.vrm",
+ "vroid/4/8397418225075778264/8397418225075778264.vrm",
+ "vroid/4/8405489314705324524/8405489314705324524.vrm",
+ "vroid/4/8406534285417735194/8406534285417735194.vrm",
+ "vroid/4/8414148411343004164/8414148411343004164.vrm",
+ "vroid/4/8421286427001262534/8421286427001262534.vrm",
+ "vroid/4/843963395517970724/843963395517970724.vrm",
+ "vroid/4/8440218115013757544/8440218115013757544.vrm",
+ "vroid/4/8450961068176067064/8450961068176067064.vrm",
+ "vroid/4/8467422679318573134/8467422679318573134.vrm",
+ "vroid/4/8469278338096545524/8469278338096545524.vrm",
+ "vroid/4/8469815868270111854/8469815868270111854.vrm",
+ "vroid/4/8469821105984540114/8469821105984540114.vrm",
+ "vroid/4/8478394622125376484/8478394622125376484.vrm",
+ "vroid/4/8480189543607908454/8480189543607908454.vrm",
+ "vroid/4/8498589313915246114/8498589313915246114.vrm",
+ "vroid/4/8512589040126873834/8512589040126873834.vrm",
+ "vroid/4/8527978754759125084/8527978754759125084.vrm",
+ "vroid/4/8534915817496114294/8534915817496114294.vrm",
+ "vroid/4/8540266539640206894/8540266539640206894.vrm",
+ "vroid/4/854373604872008344/854373604872008344.vrm",
+ "vroid/4/8547589450614840364/8547589450614840364.vrm",
+ "vroid/4/8556912837760981044/8556912837760981044.vrm",
+ "vroid/4/8562329986564003774/8562329986564003774.vrm",
+ "vroid/4/8575320871477379914/8575320871477379914.vrm",
+ "vroid/4/8575709588203891334/8575709588203891334.vrm",
+ "vroid/4/8587653151013205994/8587653151013205994.vrm",
+ "vroid/4/8587813319965183684/8587813319965183684.vrm",
+ "vroid/4/8591153281189114694/8591153281189114694.vrm",
+ "vroid/4/8591778770462510534/8591778770462510534.vrm",
+ "vroid/4/8593232421020701254/8593232421020701254.vrm",
+ "vroid/4/8600378411377515184/8600378411377515184.vrm",
+ "vroid/4/8604136052650773114/8604136052650773114.vrm",
+ "vroid/4/8615730909363220724/8615730909363220724.vrm",
+ "vroid/4/8631796898569087124/8631796898569087124.vrm",
+ "vroid/4/8632416769107469694/8632416769107469694.vrm",
+ "vroid/4/8642222294459405754/8642222294459405754.vrm",
+ "vroid/4/8642422916954227654/8642422916954227654.vrm",
+ "vroid/4/8654672096102166254/8654672096102166254.vrm",
+ "vroid/4/8658238306774381944/8658238306774381944.vrm",
+ "vroid/4/867762079542052284/867762079542052284.vrm",
+ "vroid/4/8688686534056011164/8688686534056011164.vrm",
+ "vroid/4/8705184649592900804/8705184649592900804.vrm",
+ "vroid/4/8727414523026999034/8727414523026999034.vrm",
+ "vroid/4/8737815739488266554/8737815739488266554.vrm",
+ "vroid/4/874786632111657384/874786632111657384.vrm",
+ "vroid/4/8750902759962388564/8750902759962388564.vrm",
+ "vroid/4/875464064089966864/875464064089966864.vrm",
+ "vroid/4/8756842847257575064/8756842847257575064.vrm",
+ "vroid/4/8765438682341741704/8765438682341741704.vrm",
+ "vroid/4/8775527557759575624/8775527557759575624.vrm",
+ "vroid/4/8776168852245788554/8776168852245788554.vrm",
+ "vroid/4/8781439621958139124/8781439621958139124.vrm",
+ "vroid/4/878636834254571104/878636834254571104.vrm",
+ "vroid/4/8790036735506479314/8790036735506479314.vrm",
+ "vroid/4/8792710390904370104/8792710390904370104.vrm",
+ "vroid/4/8800344865959596794/8800344865959596794.vrm",
+ "vroid/4/8802691737569211464/8802691737569211464.vrm",
+ "vroid/4/8819758656335240084/8819758656335240084.vrm",
+ "vroid/4/8823305295381948444/8823305295381948444.vrm",
+ "vroid/4/8823478936807925074/8823478936807925074.vrm",
+ "vroid/4/8825727034937523474/8825727034937523474.vrm",
+ "vroid/4/8827244949570854374/8827244949570854374.vrm",
+ "vroid/4/8827362987483887434/8827362987483887434.vrm",
+ "vroid/4/8831639097490830004/8831639097490830004.vrm",
+ "vroid/4/8856044865177459044/8856044865177459044.vrm",
+ "vroid/4/8862875536818418524/8862875536818418524.vrm",
+ "vroid/4/8874485777266582654/8874485777266582654.vrm",
+ "vroid/4/8884683832579479574/8884683832579479574.vrm",
+ "vroid/4/8895120517118930164/8895120517118930164.vrm",
+ "vroid/4/8900094584109782174/8900094584109782174.vrm",
+ "vroid/4/890540361341764744/890540361341764744.vrm",
+ "vroid/4/8927075029222123334/8927075029222123334.vrm",
+ "vroid/4/8938618816646420884/8938618816646420884.vrm",
+ "vroid/4/8939233495397566104/8939233495397566104.vrm",
+ "vroid/4/8939681908226125094/8939681908226125094.vrm",
+ "vroid/4/8946034023233910364/8946034023233910364.vrm",
+ "vroid/4/8949864710154562914/8949864710154562914.vrm",
+ "vroid/4/8956976806670161554/8956976806670161554.vrm",
+ "vroid/4/8958062948701988904/8958062948701988904.vrm",
+ "vroid/4/8960699699130987554/8960699699130987554.vrm",
+ "vroid/4/8965265124728465474/8965265124728465474.vrm",
+ "vroid/4/8983251661182098324/8983251661182098324.vrm",
+ "vroid/4/8990791639611776404/8990791639611776404.vrm",
+ "vroid/4/8991757194043971464/8991757194043971464.vrm",
+ "vroid/4/8996458619853340714/8996458619853340714.vrm",
+ "vroid/4/8997206574462348604/8997206574462348604.vrm",
+ "vroid/4/9001649085681893884/9001649085681893884.vrm",
+ "vroid/4/9007047962384581134/9007047962384581134.vrm",
+ "vroid/4/9012292347856087844/9012292347856087844.vrm",
+ "vroid/4/9015787832124495934/9015787832124495934.vrm",
+ "vroid/4/9016035577704388064/9016035577704388064.vrm",
+ "vroid/4/9019984609091856104/9019984609091856104.vrm",
+ "vroid/4/9034435028575096224/9034435028575096224.vrm",
+ "vroid/4/903818101232500644/903818101232500644.vrm",
+ "vroid/4/9059013157626347134/9059013157626347134.vrm"
+]
\ No newline at end of file
diff --git a/render_script/three-js/vroid1.json b/render_script/three-js/vroid1.json
new file mode 100644
index 0000000000000000000000000000000000000000..aec0b539042a8166ac336560a649a5c949d94ec2
--- /dev/null
+++ b/render_script/three-js/vroid1.json
@@ -0,0 +1,6879 @@
+[
+ "vroid/4/906403057901589554/906403057901589554.vrm",
+ "vroid/4/9091877142307726734/9091877142307726734.vrm",
+ "vroid/4/909442568912635284/909442568912635284.vrm",
+ "vroid/4/9094433545268484284/9094433545268484284.vrm",
+ "vroid/4/9101749090883234364/9101749090883234364.vrm",
+ "vroid/4/9118259336314341524/9118259336314341524.vrm",
+ "vroid/4/9139292796331362874/9139292796331362874.vrm",
+ "vroid/4/9140541221099897474/9140541221099897474.vrm",
+ "vroid/4/9150896676959341704/9150896676959341704.vrm",
+ "vroid/4/9158539697408509744/9158539697408509744.vrm",
+ "vroid/4/9176626278410287544/9176626278410287544.vrm",
+ "vroid/4/9181752815174074674/9181752815174074674.vrm",
+ "vroid/4/918209882796929544/918209882796929544.vrm",
+ "vroid/4/9186332036400624514/9186332036400624514.vrm",
+ "vroid/4/9190200764783861544/9190200764783861544.vrm",
+ "vroid/4/9190504965858107214/9190504965858107214.vrm",
+ "vroid/4/9192119832985380134/9192119832985380134.vrm",
+ "vroid/4/9199486868731756004/9199486868731756004.vrm",
+ "vroid/4/9205694911450766144/9205694911450766144.vrm",
+ "vroid/4/9212223181352426964/9212223181352426964.vrm",
+ "vroid/4/9214443118199315264/9214443118199315264.vrm",
+ "vroid/4/924912632080578854/924912632080578854.vrm",
+ "vroid/4/931880135123550914/931880135123550914.vrm",
+ "vroid/4/935388236330189034/935388236330189034.vrm",
+ "vroid/4/937583130145585354/937583130145585354.vrm",
+ "vroid/4/953902483511279254/953902483511279254.vrm",
+ "vroid/4/972714918529738804/972714918529738804.vrm",
+ "vroid/4/975811635341609304/975811635341609304.vrm",
+ "vroid/4/978303521818849924/978303521818849924.vrm",
+ "vroid/4/978544239216323874/978544239216323874.vrm",
+ "vroid/4/980699973061049924/980699973061049924.vrm",
+ "vroid/4/982117949095567334/982117949095567334.vrm",
+ "vroid/4/983962324800807774/983962324800807774.vrm",
+ "vroid/4/998621750803857024/998621750803857024.vrm",
+ "vroid/4/999563983084132734/999563983084132734.vrm",
+ "vroid/5/1006799417544436825/1006799417544436825.vrm",
+ "vroid/5/100757673924144965/100757673924144965.vrm",
+ "vroid/5/1022113573246895015/1022113573246895015.vrm",
+ "vroid/5/1027859204233853085/1027859204233853085.vrm",
+ "vroid/5/1032110111010302715/1032110111010302715.vrm",
+ "vroid/5/1036264542944812295/1036264542944812295.vrm",
+ "vroid/5/1050326709584698115/1050326709584698115.vrm",
+ "vroid/5/1069205329254717955/1069205329254717955.vrm",
+ "vroid/5/1072982586117545345/1072982586117545345.vrm",
+ "vroid/5/1073436683758637235/1073436683758637235.vrm",
+ "vroid/5/1074173863623961375/1074173863623961375.vrm",
+ "vroid/5/1079642278387042455/1079642278387042455.vrm",
+ "vroid/5/1088383567301112955/1088383567301112955.vrm",
+ "vroid/5/1093884124607588575/1093884124607588575.vrm",
+ "vroid/5/1103702363339546915/1103702363339546915.vrm",
+ "vroid/5/1110407157561072225/1110407157561072225.vrm",
+ "vroid/5/1112033150398107825/1112033150398107825.vrm",
+ "vroid/5/1115116609232251615/1115116609232251615.vrm",
+ "vroid/5/111921628408527245/111921628408527245.vrm",
+ "vroid/5/1124366149893063665/1124366149893063665.vrm",
+ "vroid/5/1131385103741323195/1131385103741323195.vrm",
+ "vroid/5/1133867141076447905/1133867141076447905.vrm",
+ "vroid/5/1145495579617531055/1145495579617531055.vrm",
+ "vroid/5/1145913378551792645/1145913378551792645.vrm",
+ "vroid/5/1151795674389057645/1151795674389057645.vrm",
+ "vroid/5/1156491825003973525/1156491825003973525.vrm",
+ "vroid/5/1161741402650279815/1161741402650279815.vrm",
+ "vroid/5/1176936756079508735/1176936756079508735.vrm",
+ "vroid/5/1183734788291523505/1183734788291523505.vrm",
+ "vroid/5/1189318216410191025/1189318216410191025.vrm",
+ "vroid/5/1194749657572661975/1194749657572661975.vrm",
+ "vroid/5/1197156250549172985/1197156250549172985.vrm",
+ "vroid/5/1198063839036133375/1198063839036133375.vrm",
+ "vroid/5/1202466511899293545/1202466511899293545.vrm",
+ "vroid/5/1218337097065897135/1218337097065897135.vrm",
+ "vroid/5/1218903098499870655/1218903098499870655.vrm",
+ "vroid/5/1219903755543174995/1219903755543174995.vrm",
+ "vroid/5/1221288937244077575/1221288937244077575.vrm",
+ "vroid/5/1245840608576904955/1245840608576904955.vrm",
+ "vroid/5/1256423794048308195/1256423794048308195.vrm",
+ "vroid/5/1261468644832343175/1261468644832343175.vrm",
+ "vroid/5/126581782381854485/126581782381854485.vrm",
+ "vroid/5/1268975524224481275/1268975524224481275.vrm",
+ "vroid/5/1270766388219643915/1270766388219643915.vrm",
+ "vroid/5/1270849047285000655/1270849047285000655.vrm",
+ "vroid/5/127085980450427915/127085980450427915.vrm",
+ "vroid/5/127529305027697045/127529305027697045.vrm",
+ "vroid/5/1282091146081873085/1282091146081873085.vrm",
+ "vroid/5/128246101013403685/128246101013403685.vrm",
+ "vroid/5/1290453350363699595/1290453350363699595.vrm",
+ "vroid/5/1292185307802124065/1292185307802124065.vrm",
+ "vroid/5/1295158831528046675/1295158831528046675.vrm",
+ "vroid/5/1297846531609076325/1297846531609076325.vrm",
+ "vroid/5/1301971359504284875/1301971359504284875.vrm",
+ "vroid/5/1304976827323416565/1304976827323416565.vrm",
+ "vroid/5/130580646133700325/130580646133700325.vrm",
+ "vroid/5/1310833939031690725/1310833939031690725.vrm",
+ "vroid/5/1312119359604068365/1312119359604068365.vrm",
+ "vroid/5/1327729301168244475/1327729301168244475.vrm",
+ "vroid/5/1332401009159433575/1332401009159433575.vrm",
+ "vroid/5/1340723204663434905/1340723204663434905.vrm",
+ "vroid/5/1343083580194350305/1343083580194350305.vrm",
+ "vroid/5/1352425100803662735/1352425100803662735.vrm",
+ "vroid/5/1356313125574925715/1356313125574925715.vrm",
+ "vroid/5/1361587051227091605/1361587051227091605.vrm",
+ "vroid/5/1362572755966468585/1362572755966468585.vrm",
+ "vroid/5/1364877347659250455/1364877347659250455.vrm",
+ "vroid/5/1368284020295522005/1368284020295522005.vrm",
+ "vroid/5/1371378583840454755/1371378583840454755.vrm",
+ "vroid/5/1379665771528163375/1379665771528163375.vrm",
+ "vroid/5/1381342713421967215/1381342713421967215.vrm",
+ "vroid/5/1391069864507438225/1391069864507438225.vrm",
+ "vroid/5/1397557297476366035/1397557297476366035.vrm",
+ "vroid/5/1404928100171926815/1404928100171926815.vrm",
+ "vroid/5/1415765011844287625/1415765011844287625.vrm",
+ "vroid/5/1416484814756091075/1416484814756091075.vrm",
+ "vroid/5/1425032261294080525/1425032261294080525.vrm",
+ "vroid/5/1430895048555521655/1430895048555521655.vrm",
+ "vroid/5/1445178862043284715/1445178862043284715.vrm",
+ "vroid/5/1451659979600588005/1451659979600588005.vrm",
+ "vroid/5/1456861330872025215/1456861330872025215.vrm",
+ "vroid/5/1466222815055317245/1466222815055317245.vrm",
+ "vroid/5/1476619738614683245/1476619738614683245.vrm",
+ "vroid/5/1485634855673401225/1485634855673401225.vrm",
+ "vroid/5/1497595267382616485/1497595267382616485.vrm",
+ "vroid/5/1506277472473474915/1506277472473474915.vrm",
+ "vroid/5/1506378956623965565/1506378956623965565.vrm",
+ "vroid/5/1511687083357089375/1511687083357089375.vrm",
+ "vroid/5/1514112769403183895/1514112769403183895.vrm",
+ "vroid/5/1518384985418501835/1518384985418501835.vrm",
+ "vroid/5/152194356532556365/152194356532556365.vrm",
+ "vroid/5/1525193281130644235/1525193281130644235.vrm",
+ "vroid/5/1528567607744376425/1528567607744376425.vrm",
+ "vroid/5/1531996010920011825/1531996010920011825.vrm",
+ "vroid/5/1532706046532373415/1532706046532373415.vrm",
+ "vroid/5/1534988718244207995/1534988718244207995.vrm",
+ "vroid/5/1539827617121628825/1539827617121628825.vrm",
+ "vroid/5/1544084768348700335/1544084768348700335.vrm",
+ "vroid/5/1551918882599055445/1551918882599055445.vrm",
+ "vroid/5/1553109660323820815/1553109660323820815.vrm",
+ "vroid/5/1567349082333131425/1567349082333131425.vrm",
+ "vroid/5/1569598676177551515/1569598676177551515.vrm",
+ "vroid/5/1578111408458547655/1578111408458547655.vrm",
+ "vroid/5/1584565591222609975/1584565591222609975.vrm",
+ "vroid/5/1596187325661735145/1596187325661735145.vrm",
+ "vroid/5/1623750151180632605/1623750151180632605.vrm",
+ "vroid/5/1624057849439889525/1624057849439889525.vrm",
+ "vroid/5/1630291826970164055/1630291826970164055.vrm",
+ "vroid/5/1633223616679492685/1633223616679492685.vrm",
+ "vroid/5/1639271834428494125/1639271834428494125.vrm",
+ "vroid/5/1647802047162606105/1647802047162606105.vrm",
+ "vroid/5/164988712820456275/164988712820456275.vrm",
+ "vroid/5/1651602087077283355/1651602087077283355.vrm",
+ "vroid/5/166563508434482075/166563508434482075.vrm",
+ "vroid/5/1680734546289186825/1680734546289186825.vrm",
+ "vroid/5/1684391530194717755/1684391530194717755.vrm",
+ "vroid/5/1688995057429375245/1688995057429375245.vrm",
+ "vroid/5/1689284054105770555/1689284054105770555.vrm",
+ "vroid/5/1706209859232879105/1706209859232879105.vrm",
+ "vroid/5/1709414029790543955/1709414029790543955.vrm",
+ "vroid/5/1710154829901566435/1710154829901566435.vrm",
+ "vroid/5/1711985605383223655/1711985605383223655.vrm",
+ "vroid/5/1733401653491079165/1733401653491079165.vrm",
+ "vroid/5/1735655375616201575/1735655375616201575.vrm",
+ "vroid/5/1735927702144829895/1735927702144829895.vrm",
+ "vroid/5/1737793948849299245/1737793948849299245.vrm",
+ "vroid/5/1740397047816044785/1740397047816044785.vrm",
+ "vroid/5/1743798470858722215/1743798470858722215.vrm",
+ "vroid/5/1746269716959169065/1746269716959169065.vrm",
+ "vroid/5/1752823520898611725/1752823520898611725.vrm",
+ "vroid/5/1760202437370479045/1760202437370479045.vrm",
+ "vroid/5/1762595656410398115/1762595656410398115.vrm",
+ "vroid/5/1765395304791285425/1765395304791285425.vrm",
+ "vroid/5/1766905117587265545/1766905117587265545.vrm",
+ "vroid/5/1774180271035177525/1774180271035177525.vrm",
+ "vroid/5/177589812913393795/177589812913393795.vrm",
+ "vroid/5/1791936920739581935/1791936920739581935.vrm",
+ "vroid/5/1797884593432864685/1797884593432864685.vrm",
+ "vroid/5/1801883893899893395/1801883893899893395.vrm",
+ "vroid/5/1802261861530848855/1802261861530848855.vrm",
+ "vroid/5/1806650771470867995/1806650771470867995.vrm",
+ "vroid/5/1808473054309891825/1808473054309891825.vrm",
+ "vroid/5/1822719985272668515/1822719985272668515.vrm",
+ "vroid/5/1833026716464781115/1833026716464781115.vrm",
+ "vroid/5/1833029413018140235/1833029413018140235.vrm",
+ "vroid/5/1838701893167507835/1838701893167507835.vrm",
+ "vroid/5/1854842931395237415/1854842931395237415.vrm",
+ "vroid/5/1856354650516367955/1856354650516367955.vrm",
+ "vroid/5/1864193437735862505/1864193437735862505.vrm",
+ "vroid/5/1866740041768931335/1866740041768931335.vrm",
+ "vroid/5/1867173035943809745/1867173035943809745.vrm",
+ "vroid/5/1868020552502323415/1868020552502323415.vrm",
+ "vroid/5/1873027718107222925/1873027718107222925.vrm",
+ "vroid/5/1873873604942283725/1873873604942283725.vrm",
+ "vroid/5/1875855647264516365/1875855647264516365.vrm",
+ "vroid/5/1893609424769848855/1893609424769848855.vrm",
+ "vroid/5/1902169993874119365/1902169993874119365.vrm",
+ "vroid/5/1905833972525405285/1905833972525405285.vrm",
+ "vroid/5/1915206863605013295/1915206863605013295.vrm",
+ "vroid/5/1921642363582387405/1921642363582387405.vrm",
+ "vroid/5/1926676501831534275/1926676501831534275.vrm",
+ "vroid/5/1927412575898895245/1927412575898895245.vrm",
+ "vroid/5/1927734155158373105/1927734155158373105.vrm",
+ "vroid/5/1929017825815731625/1929017825815731625.vrm",
+ "vroid/5/1935617820497549225/1935617820497549225.vrm",
+ "vroid/5/1937299238029817245/1937299238029817245.vrm",
+ "vroid/5/1945415206684062075/1945415206684062075.vrm",
+ "vroid/5/1949603584911025985/1949603584911025985.vrm",
+ "vroid/5/1977855559648316855/1977855559648316855.vrm",
+ "vroid/5/1978210035640756875/1978210035640756875.vrm",
+ "vroid/5/1982620512500016475/1982620512500016475.vrm",
+ "vroid/5/198262403900111585/198262403900111585.vrm",
+ "vroid/5/199532219632004865/199532219632004865.vrm",
+ "vroid/5/2008986589782174715/2008986589782174715.vrm",
+ "vroid/5/2023077283636043145/2023077283636043145.vrm",
+ "vroid/5/2026523486134053435/2026523486134053435.vrm",
+ "vroid/5/2034039673936448385/2034039673936448385.vrm",
+ "vroid/5/2037412370913896575/2037412370913896575.vrm",
+ "vroid/5/2050110104335104085/2050110104335104085.vrm",
+ "vroid/5/2052740533404348905/2052740533404348905.vrm",
+ "vroid/5/2054435755200585555/2054435755200585555.vrm",
+ "vroid/5/2059046742028849085/2059046742028849085.vrm",
+ "vroid/5/2059793974019668345/2059793974019668345.vrm",
+ "vroid/5/2060786739235216615/2060786739235216615.vrm",
+ "vroid/5/2063323527410061325/2063323527410061325.vrm",
+ "vroid/5/2074878895208021825/2074878895208021825.vrm",
+ "vroid/5/2083804273720774555/2083804273720774555.vrm",
+ "vroid/5/2085681570473420985/2085681570473420985.vrm",
+ "vroid/5/2085700345265064865/2085700345265064865.vrm",
+ "vroid/5/2086880656096660245/2086880656096660245.vrm",
+ "vroid/5/2100463417634898805/2100463417634898805.vrm",
+ "vroid/5/2100651621151646765/2100651621151646765.vrm",
+ "vroid/5/2101537987357086155/2101537987357086155.vrm",
+ "vroid/5/2102201183861081145/2102201183861081145.vrm",
+ "vroid/5/210460385689634815/210460385689634815.vrm",
+ "vroid/5/2105481742237380605/2105481742237380605.vrm",
+ "vroid/5/2112055492407353035/2112055492407353035.vrm",
+ "vroid/5/2130899643071046705/2130899643071046705.vrm",
+ "vroid/5/213764751511314985/213764751511314985.vrm",
+ "vroid/5/213995243182823555/213995243182823555.vrm",
+ "vroid/5/2140217831759713345/2140217831759713345.vrm",
+ "vroid/5/214177236959077325/214177236959077325.vrm",
+ "vroid/5/214254074492636475/214254074492636475.vrm",
+ "vroid/5/2155395784193424625/2155395784193424625.vrm",
+ "vroid/5/2156532134075458595/2156532134075458595.vrm",
+ "vroid/5/2163058967642495225/2163058967642495225.vrm",
+ "vroid/5/2167101315176944395/2167101315176944395.vrm",
+ "vroid/5/2174152586543233995/2174152586543233995.vrm",
+ "vroid/5/217489632863290075/217489632863290075.vrm",
+ "vroid/5/2181216406512870165/2181216406512870165.vrm",
+ "vroid/5/2181674704836382945/2181674704836382945.vrm",
+ "vroid/5/2185787635578698415/2185787635578698415.vrm",
+ "vroid/5/219130334806383305/219130334806383305.vrm",
+ "vroid/5/2198537900601776305/2198537900601776305.vrm",
+ "vroid/5/2200697853073864545/2200697853073864545.vrm",
+ "vroid/5/221608166523810535/221608166523810535.vrm",
+ "vroid/5/2217644973232202335/2217644973232202335.vrm",
+ "vroid/5/2218303420591842365/2218303420591842365.vrm",
+ "vroid/5/2219521776142849355/2219521776142849355.vrm",
+ "vroid/5/2226496834504349285/2226496834504349285.vrm",
+ "vroid/5/2230129084637524025/2230129084637524025.vrm",
+ "vroid/5/2236478215825541405/2236478215825541405.vrm",
+ "vroid/5/2237589386884742535/2237589386884742535.vrm",
+ "vroid/5/2245337368107505145/2245337368107505145.vrm",
+ "vroid/5/224905387865820015/224905387865820015.vrm",
+ "vroid/5/2251093004334611505/2251093004334611505.vrm",
+ "vroid/5/2257373388414581145/2257373388414581145.vrm",
+ "vroid/5/2260237456445339295/2260237456445339295.vrm",
+ "vroid/5/2267112666832896835/2267112666832896835.vrm",
+ "vroid/5/2270884242471071455/2270884242471071455.vrm",
+ "vroid/5/2273170151398093785/2273170151398093785.vrm",
+ "vroid/5/2279548755658216645/2279548755658216645.vrm",
+ "vroid/5/2288371930883615985/2288371930883615985.vrm",
+ "vroid/5/2292111146084781305/2292111146084781305.vrm",
+ "vroid/5/229652030789126635/229652030789126635.vrm",
+ "vroid/5/2312978507499910925/2312978507499910925.vrm",
+ "vroid/5/2314536487437756955/2314536487437756955.vrm",
+ "vroid/5/231931955739550455/231931955739550455.vrm",
+ "vroid/5/2319729864449927145/2319729864449927145.vrm",
+ "vroid/5/2321321357005673415/2321321357005673415.vrm",
+ "vroid/5/232666507592380795/232666507592380795.vrm",
+ "vroid/5/2342861699702792885/2342861699702792885.vrm",
+ "vroid/5/2343131210482928185/2343131210482928185.vrm",
+ "vroid/5/2346887950518239555/2346887950518239555.vrm",
+ "vroid/5/2346995220203179545/2346995220203179545.vrm",
+ "vroid/5/2369893486626534195/2369893486626534195.vrm",
+ "vroid/5/2371487913986320325/2371487913986320325.vrm",
+ "vroid/5/2390914022658142075/2390914022658142075.vrm",
+ "vroid/5/2402147865021361345/2402147865021361345.vrm",
+ "vroid/5/2408037004103145425/2408037004103145425.vrm",
+ "vroid/5/2408898553135999495/2408898553135999495.vrm",
+ "vroid/5/2409000945888285955/2409000945888285955.vrm",
+ "vroid/5/242319359223537385/242319359223537385.vrm",
+ "vroid/5/2425909393828717815/2425909393828717815.vrm",
+ "vroid/5/2430764306235392995/2430764306235392995.vrm",
+ "vroid/5/2467583950289246235/2467583950289246235.vrm",
+ "vroid/5/2478566354116729085/2478566354116729085.vrm",
+ "vroid/5/2488143266511751305/2488143266511751305.vrm",
+ "vroid/5/2489796629999020845/2489796629999020845.vrm",
+ "vroid/5/2490118520048524035/2490118520048524035.vrm",
+ "vroid/5/2492810665731128865/2492810665731128865.vrm",
+ "vroid/5/2495393152017985705/2495393152017985705.vrm",
+ "vroid/5/2510466073238548785/2510466073238548785.vrm",
+ "vroid/5/2512285756169640385/2512285756169640385.vrm",
+ "vroid/5/2520597946423982475/2520597946423982475.vrm",
+ "vroid/5/2524020563594372145/2524020563594372145.vrm",
+ "vroid/5/2528830935304930305/2528830935304930305.vrm",
+ "vroid/5/2532507653183704215/2532507653183704215.vrm",
+ "vroid/5/2552542350376939735/2552542350376939735.vrm",
+ "vroid/5/2556208446708616025/2556208446708616025.vrm",
+ "vroid/5/2556727474255527355/2556727474255527355.vrm",
+ "vroid/5/2559391626303297935/2559391626303297935.vrm",
+ "vroid/5/2559901703448533185/2559901703448533185.vrm",
+ "vroid/5/2561811196860998365/2561811196860998365.vrm",
+ "vroid/5/25636180155632295/25636180155632295.vrm",
+ "vroid/5/2571308322050021165/2571308322050021165.vrm",
+ "vroid/5/2571449078961999995/2571449078961999995.vrm",
+ "vroid/5/2577971012972698755/2577971012972698755.vrm",
+ "vroid/5/257874069776736215/257874069776736215.vrm",
+ "vroid/5/2587145337018574235/2587145337018574235.vrm",
+ "vroid/5/2587602336364978065/2587602336364978065.vrm",
+ "vroid/5/2590924240863942595/2590924240863942595.vrm",
+ "vroid/5/2592714631743691285/2592714631743691285.vrm",
+ "vroid/5/2594656766897487475/2594656766897487475.vrm",
+ "vroid/5/2597446306564249485/2597446306564249485.vrm",
+ "vroid/5/2611019882496156805/2611019882496156805.vrm",
+ "vroid/5/2615572324367933175/2615572324367933175.vrm",
+ "vroid/5/2617433940491049275/2617433940491049275.vrm",
+ "vroid/5/2618747745046262165/2618747745046262165.vrm",
+ "vroid/5/2622022835040918895/2622022835040918895.vrm",
+ "vroid/5/2622324197671021255/2622324197671021255.vrm",
+ "vroid/5/2626287743536976635/2626287743536976635.vrm",
+ "vroid/5/262753690165253715/262753690165253715.vrm",
+ "vroid/5/2628358130614353465/2628358130614353465.vrm",
+ "vroid/5/2631957123211239355/2631957123211239355.vrm",
+ "vroid/5/2632870537209253875/2632870537209253875.vrm",
+ "vroid/5/2641475550880856945/2641475550880856945.vrm",
+ "vroid/5/2646975357435184535/2646975357435184535.vrm",
+ "vroid/5/2648637724352168075/2648637724352168075.vrm",
+ "vroid/5/2648965256190438915/2648965256190438915.vrm",
+ "vroid/5/2653408946674684855/2653408946674684855.vrm",
+ "vroid/5/2655355501448359295/2655355501448359295.vrm",
+ "vroid/5/2659535677584024885/2659535677584024885.vrm",
+ "vroid/5/2667448970521023645/2667448970521023645.vrm",
+ "vroid/5/2667796186180045845/2667796186180045845.vrm",
+ "vroid/5/2671154767899835665/2671154767899835665.vrm",
+ "vroid/5/2678050735041751995/2678050735041751995.vrm",
+ "vroid/5/2681015857141695065/2681015857141695065.vrm",
+ "vroid/5/2683937395862215575/2683937395862215575.vrm",
+ "vroid/5/2690056517818280785/2690056517818280785.vrm",
+ "vroid/5/2690878523179408165/2690878523179408165.vrm",
+ "vroid/5/2692771187038708175/2692771187038708175.vrm",
+ "vroid/5/2693331771704007155/2693331771704007155.vrm",
+ "vroid/5/2695497065943219945/2695497065943219945.vrm",
+ "vroid/5/2698952769769442735/2698952769769442735.vrm",
+ "vroid/5/2702150542655057165/2702150542655057165.vrm",
+ "vroid/5/2707378690905714135/2707378690905714135.vrm",
+ "vroid/5/2711962630403364715/2711962630403364715.vrm",
+ "vroid/5/2713974094194593585/2713974094194593585.vrm",
+ "vroid/5/2716996290218539835/2716996290218539835.vrm",
+ "vroid/5/2718165134493318795/2718165134493318795.vrm",
+ "vroid/5/2735143308259190635/2735143308259190635.vrm",
+ "vroid/5/273835879855404065/273835879855404065.vrm",
+ "vroid/5/2743905066072938675/2743905066072938675.vrm",
+ "vroid/5/2746260627452678295/2746260627452678295.vrm",
+ "vroid/5/2755659135629467925/2755659135629467925.vrm",
+ "vroid/5/2761884953622735045/2761884953622735045.vrm",
+ "vroid/5/2766606107738603835/2766606107738603835.vrm",
+ "vroid/5/2801395902410527235/2801395902410527235.vrm",
+ "vroid/5/2802171479466557265/2802171479466557265.vrm",
+ "vroid/5/2824722817057239005/2824722817057239005.vrm",
+ "vroid/5/2831680260194186035/2831680260194186035.vrm",
+ "vroid/5/283574478237497855/283574478237497855.vrm",
+ "vroid/5/2837921263707168355/2837921263707168355.vrm",
+ "vroid/5/2841280483510288335/2841280483510288335.vrm",
+ "vroid/5/2846778408783637085/2846778408783637085.vrm",
+ "vroid/5/2849083974100023855/2849083974100023855.vrm",
+ "vroid/5/2849519965405809515/2849519965405809515.vrm",
+ "vroid/5/2855267860585922915/2855267860585922915.vrm",
+ "vroid/5/2857104481194415595/2857104481194415595.vrm",
+ "vroid/5/2858040366096898295/2858040366096898295.vrm",
+ "vroid/5/2865518998818733885/2865518998818733885.vrm",
+ "vroid/5/2872099866491130635/2872099866491130635.vrm",
+ "vroid/5/2882735265280880535/2882735265280880535.vrm",
+ "vroid/5/2884929598913109605/2884929598913109605.vrm",
+ "vroid/5/2890099955623947255/2890099955623947255.vrm",
+ "vroid/5/2892145959216557405/2892145959216557405.vrm",
+ "vroid/5/2892613434586160725/2892613434586160725.vrm",
+ "vroid/5/2892947478440782625/2892947478440782625.vrm",
+ "vroid/5/2897285871179135515/2897285871179135515.vrm",
+ "vroid/5/2899423985665904145/2899423985665904145.vrm",
+ "vroid/5/2915293962346913645/2915293962346913645.vrm",
+ "vroid/5/2917018918775611705/2917018918775611705.vrm",
+ "vroid/5/2918795826994770785/2918795826994770785.vrm",
+ "vroid/5/2925805146826157965/2925805146826157965.vrm",
+ "vroid/5/293234545391521465/293234545391521465.vrm",
+ "vroid/5/2934024186370237335/2934024186370237335.vrm",
+ "vroid/5/2938194011063189175/2938194011063189175.vrm",
+ "vroid/5/2942198118445381225/2942198118445381225.vrm",
+ "vroid/5/2942932461495639375/2942932461495639375.vrm",
+ "vroid/5/2966989870508698945/2966989870508698945.vrm",
+ "vroid/5/2973989482621088935/2973989482621088935.vrm",
+ "vroid/5/2974642242888295055/2974642242888295055.vrm",
+ "vroid/5/2975862389062298315/2975862389062298315.vrm",
+ "vroid/5/2977154069217817295/2977154069217817295.vrm",
+ "vroid/5/2980346578286950375/2980346578286950375.vrm",
+ "vroid/5/2985295137272701365/2985295137272701365.vrm",
+ "vroid/5/2995271613264348125/2995271613264348125.vrm",
+ "vroid/5/2998766278220826825/2998766278220826825.vrm",
+ "vroid/5/3001119755655036285/3001119755655036285.vrm",
+ "vroid/5/3001864397933680405/3001864397933680405.vrm",
+ "vroid/5/300490283109230915/300490283109230915.vrm",
+ "vroid/5/302030426977948945/302030426977948945.vrm",
+ "vroid/5/3023256861808262485/3023256861808262485.vrm",
+ "vroid/5/3037318618753251395/3037318618753251395.vrm",
+ "vroid/5/3039385667644127805/3039385667644127805.vrm",
+ "vroid/5/3041893866003804805/3041893866003804805.vrm",
+ "vroid/5/3045955944586853795/3045955944586853795.vrm",
+ "vroid/5/3052318023178166285/3052318023178166285.vrm",
+ "vroid/5/3056584925696922505/3056584925696922505.vrm",
+ "vroid/5/3067820901946026755/3067820901946026755.vrm",
+ "vroid/5/307253928048567535/307253928048567535.vrm",
+ "vroid/5/307262761595652215/307262761595652215.vrm",
+ "vroid/5/3073005548923964945/3073005548923964945.vrm",
+ "vroid/5/3078840504752246205/3078840504752246205.vrm",
+ "vroid/5/3081587203408232675/3081587203408232675.vrm",
+ "vroid/5/3086148613954416585/3086148613954416585.vrm",
+ "vroid/5/3088064642985298515/3088064642985298515.vrm",
+ "vroid/5/3103813464864175995/3103813464864175995.vrm",
+ "vroid/5/3106492193812707965/3106492193812707965.vrm",
+ "vroid/5/3110438585028306505/3110438585028306505.vrm",
+ "vroid/5/312635119192760375/312635119192760375.vrm",
+ "vroid/5/3126770821879845525/3126770821879845525.vrm",
+ "vroid/5/313212166305968945/313212166305968945.vrm",
+ "vroid/5/3136056352154258175/3136056352154258175.vrm",
+ "vroid/5/3139392256536187445/3139392256536187445.vrm",
+ "vroid/5/3144349305792015975/3144349305792015975.vrm",
+ "vroid/5/3147724316309573125/3147724316309573125.vrm",
+ "vroid/5/3150019795070182475/3150019795070182475.vrm",
+ "vroid/5/3171279309455981855/3171279309455981855.vrm",
+ "vroid/5/3180968043253260785/3180968043253260785.vrm",
+ "vroid/5/3182254912469961275/3182254912469961275.vrm",
+ "vroid/5/3192118692131575845/3192118692131575845.vrm",
+ "vroid/5/319256753048293325/319256753048293325.vrm",
+ "vroid/5/3193316770724281905/3193316770724281905.vrm",
+ "vroid/5/3197905070799932465/3197905070799932465.vrm",
+ "vroid/5/3199743840641153895/3199743840641153895.vrm",
+ "vroid/5/3217782787472964825/3217782787472964825.vrm",
+ "vroid/5/3236799605732432055/3236799605732432055.vrm",
+ "vroid/5/3237154070470632575/3237154070470632575.vrm",
+ "vroid/5/3253749808490466255/3253749808490466255.vrm",
+ "vroid/5/3257753482468232255/3257753482468232255.vrm",
+ "vroid/5/3258622334831250375/3258622334831250375.vrm",
+ "vroid/5/3262856318884124765/3262856318884124765.vrm",
+ "vroid/5/3270739459103570125/3270739459103570125.vrm",
+ "vroid/5/3276352939381180835/3276352939381180835.vrm",
+ "vroid/5/3277733582142040735/3277733582142040735.vrm",
+ "vroid/5/3289285342441037125/3289285342441037125.vrm",
+ "vroid/5/3292948933284324555/3292948933284324555.vrm",
+ "vroid/5/3316713785534135415/3316713785534135415.vrm",
+ "vroid/5/3318758170145058325/3318758170145058325.vrm",
+ "vroid/5/3319817843682994625/3319817843682994625.vrm",
+ "vroid/5/333231574395362085/333231574395362085.vrm",
+ "vroid/5/3343181951437503075/3343181951437503075.vrm",
+ "vroid/5/3362807306831534385/3362807306831534385.vrm",
+ "vroid/5/3370000588090594865/3370000588090594865.vrm",
+ "vroid/5/3384032076423038835/3384032076423038835.vrm",
+ "vroid/5/3391504583214630305/3391504583214630305.vrm",
+ "vroid/5/3393757543748390415/3393757543748390415.vrm",
+ "vroid/5/339643359642895655/339643359642895655.vrm",
+ "vroid/5/3397493718016412455/3397493718016412455.vrm",
+ "vroid/5/3398158305625371585/3398158305625371585.vrm",
+ "vroid/5/340071900317546815/340071900317546815.vrm",
+ "vroid/5/3408127186773431845/3408127186773431845.vrm",
+ "vroid/5/3417966965829989055/3417966965829989055.vrm",
+ "vroid/5/3425897447856487775/3425897447856487775.vrm",
+ "vroid/5/3432285310999589105/3432285310999589105.vrm",
+ "vroid/5/3448597772920349875/3448597772920349875.vrm",
+ "vroid/5/3460357298354793605/3460357298354793605.vrm",
+ "vroid/5/3464506261774840275/3464506261774840275.vrm",
+ "vroid/5/3467431173460049595/3467431173460049595.vrm",
+ "vroid/5/3467852973802058475/3467852973802058475.vrm",
+ "vroid/5/3482038041502792585/3482038041502792585.vrm",
+ "vroid/5/350163663064200445/350163663064200445.vrm",
+ "vroid/5/3504789543861615175/3504789543861615175.vrm",
+ "vroid/5/3516352359842620515/3516352359842620515.vrm",
+ "vroid/5/351669680155224305/351669680155224305.vrm",
+ "vroid/5/3517397628069587455/3517397628069587455.vrm",
+ "vroid/5/3519100519525308685/3519100519525308685.vrm",
+ "vroid/5/3519827358979131835/3519827358979131835.vrm",
+ "vroid/5/3524153911185507145/3524153911185507145.vrm",
+ "vroid/5/3528456008072524165/3528456008072524165.vrm",
+ "vroid/5/3529120802927635505/3529120802927635505.vrm",
+ "vroid/5/3530536181961828365/3530536181961828365.vrm",
+ "vroid/5/3536630405604453255/3536630405604453255.vrm",
+ "vroid/5/3540342450613632155/3540342450613632155.vrm",
+ "vroid/5/3570699273560243545/3570699273560243545.vrm",
+ "vroid/5/3578647482100625075/3578647482100625075.vrm",
+ "vroid/5/3583556082687070075/3583556082687070075.vrm",
+ "vroid/5/3585173543592582375/3585173543592582375.vrm",
+ "vroid/5/3586316612402584815/3586316612402584815.vrm",
+ "vroid/5/3587824952402951155/3587824952402951155.vrm",
+ "vroid/5/3588447675299432845/3588447675299432845.vrm",
+ "vroid/5/3592989807433612805/3592989807433612805.vrm",
+ "vroid/5/3598188495457736555/3598188495457736555.vrm",
+ "vroid/5/3601121988797006105/3601121988797006105.vrm",
+ "vroid/5/360303607017486045/360303607017486045.vrm",
+ "vroid/5/3608448755355315215/3608448755355315215.vrm",
+ "vroid/5/3608981231980810385/3608981231980810385.vrm",
+ "vroid/5/361567071320367255/361567071320367255.vrm",
+ "vroid/5/3625947947262075915/3625947947262075915.vrm",
+ "vroid/5/3644572816972930805/3644572816972930805.vrm",
+ "vroid/5/3644850763406327365/3644850763406327365.vrm",
+ "vroid/5/3648020358587605305/3648020358587605305.vrm",
+ "vroid/5/3649866755405068835/3649866755405068835.vrm",
+ "vroid/5/3664078105561393705/3664078105561393705.vrm",
+ "vroid/5/3668270348889094215/3668270348889094215.vrm",
+ "vroid/5/3678334901717172325/3678334901717172325.vrm",
+ "vroid/5/3683048663924206105/3683048663924206105.vrm",
+ "vroid/5/3686957944631151425/3686957944631151425.vrm",
+ "vroid/5/36946273189658405/36946273189658405.vrm",
+ "vroid/5/371376302521563495/371376302521563495.vrm",
+ "vroid/5/3716089649369093645/3716089649369093645.vrm",
+ "vroid/5/3716321473806351185/3716321473806351185.vrm",
+ "vroid/5/3720549365976009175/3720549365976009175.vrm",
+ "vroid/5/3734418945126999675/3734418945126999675.vrm",
+ "vroid/5/3738261462210702795/3738261462210702795.vrm",
+ "vroid/5/373889682449698105/373889682449698105.vrm",
+ "vroid/5/3740757761612932885/3740757761612932885.vrm",
+ "vroid/5/3758152488676158725/3758152488676158725.vrm",
+ "vroid/5/3771106190762672415/3771106190762672415.vrm",
+ "vroid/5/3780402224657459085/3780402224657459085.vrm",
+ "vroid/5/378474000147856745/378474000147856745.vrm",
+ "vroid/5/3785350991900031065/3785350991900031065.vrm",
+ "vroid/5/3788330656279862185/3788330656279862185.vrm",
+ "vroid/5/3790713535037537835/3790713535037537835.vrm",
+ "vroid/5/3799024454922510805/3799024454922510805.vrm",
+ "vroid/5/3804666691642089715/3804666691642089715.vrm",
+ "vroid/5/3810331789140828075/3810331789140828075.vrm",
+ "vroid/5/3812763527134696315/3812763527134696315.vrm",
+ "vroid/5/3813842797673607245/3813842797673607245.vrm",
+ "vroid/5/3814556468590721895/3814556468590721895.vrm",
+ "vroid/5/3817658283546403585/3817658283546403585.vrm",
+ "vroid/5/3823533774485655495/3823533774485655495.vrm",
+ "vroid/5/3854217257506355275/3854217257506355275.vrm",
+ "vroid/5/3854599633831606335/3854599633831606335.vrm",
+ "vroid/5/3872188139606895575/3872188139606895575.vrm",
+ "vroid/5/3883963477234259155/3883963477234259155.vrm",
+ "vroid/5/3895651220915859805/3895651220915859805.vrm",
+ "vroid/5/3899312551169605935/3899312551169605935.vrm",
+ "vroid/5/3923264893621553965/3923264893621553965.vrm",
+ "vroid/5/3926920049635523985/3926920049635523985.vrm",
+ "vroid/5/3929038087574881495/3929038087574881495.vrm",
+ "vroid/5/3939746939622725155/3939746939622725155.vrm",
+ "vroid/5/3945966690093149935/3945966690093149935.vrm",
+ "vroid/5/3946969194035712065/3946969194035712065.vrm",
+ "vroid/5/3968147054833037905/3968147054833037905.vrm",
+ "vroid/5/3968163547908660895/3968163547908660895.vrm",
+ "vroid/5/3968756301597113825/3968756301597113825.vrm",
+ "vroid/5/3976337878756675875/3976337878756675875.vrm",
+ "vroid/5/3988074351429433655/3988074351429433655.vrm",
+ "vroid/5/3990104736803302775/3990104736803302775.vrm",
+ "vroid/5/3990751633817285425/3990751633817285425.vrm",
+ "vroid/5/3992649821919072025/3992649821919072025.vrm",
+ "vroid/5/4001765194607581245/4001765194607581245.vrm",
+ "vroid/5/4005757247836429745/4005757247836429745.vrm",
+ "vroid/5/4008648147368907105/4008648147368907105.vrm",
+ "vroid/5/4021455727242353185/4021455727242353185.vrm",
+ "vroid/5/4024628882430479495/4024628882430479495.vrm",
+ "vroid/5/402941082793586535/402941082793586535.vrm",
+ "vroid/5/40303746515574645/40303746515574645.vrm",
+ "vroid/5/4032992653520980025/4032992653520980025.vrm",
+ "vroid/5/4039186803058542515/4039186803058542515.vrm",
+ "vroid/5/4051647757761339555/4051647757761339555.vrm",
+ "vroid/5/4060836441422799265/4060836441422799265.vrm",
+ "vroid/5/4084114146645434415/4084114146645434415.vrm",
+ "vroid/5/4086959822428721955/4086959822428721955.vrm",
+ "vroid/5/4088735031226475595/4088735031226475595.vrm",
+ "vroid/5/410310902790747495/410310902790747495.vrm",
+ "vroid/5/4113139036258175045/4113139036258175045.vrm",
+ "vroid/5/4114931017676042565/4114931017676042565.vrm",
+ "vroid/5/4118230638890744645/4118230638890744645.vrm",
+ "vroid/5/4127744670814663345/4127744670814663345.vrm",
+ "vroid/5/4141208320582280725/4141208320582280725.vrm",
+ "vroid/5/4144856307704418605/4144856307704418605.vrm",
+ "vroid/5/4147077747163398035/4147077747163398035.vrm",
+ "vroid/5/4148778170095081285/4148778170095081285.vrm",
+ "vroid/5/4157881155813144565/4157881155813144565.vrm",
+ "vroid/5/4159929557075258165/4159929557075258165.vrm",
+ "vroid/5/4163109278434085655/4163109278434085655.vrm",
+ "vroid/5/4163161294021067055/4163161294021067055.vrm",
+ "vroid/5/4171201783229145325/4171201783229145325.vrm",
+ "vroid/5/4177681535314588855/4177681535314588855.vrm",
+ "vroid/5/4182225816907858655/4182225816907858655.vrm",
+ "vroid/5/4183408317789486465/4183408317789486465.vrm",
+ "vroid/5/4185422473663177035/4185422473663177035.vrm",
+ "vroid/5/4186047212320027925/4186047212320027925.vrm",
+ "vroid/5/4188635875053572005/4188635875053572005.vrm",
+ "vroid/5/4202072734205168755/4202072734205168755.vrm",
+ "vroid/5/420309691542404725/420309691542404725.vrm",
+ "vroid/5/4209628906344933275/4209628906344933275.vrm",
+ "vroid/5/4211505410143078255/4211505410143078255.vrm",
+ "vroid/5/4220720886298965605/4220720886298965605.vrm",
+ "vroid/5/4235692891134746285/4235692891134746285.vrm",
+ "vroid/5/4236314445855462045/4236314445855462045.vrm",
+ "vroid/5/4237326580663264885/4237326580663264885.vrm",
+ "vroid/5/4239312685834213005/4239312685834213005.vrm",
+ "vroid/5/4239553762581767995/4239553762581767995.vrm",
+ "vroid/5/4241645710074544045/4241645710074544045.vrm",
+ "vroid/5/4248395850933067095/4248395850933067095.vrm",
+ "vroid/5/425165392213076065/425165392213076065.vrm",
+ "vroid/5/4254728240602787185/4254728240602787185.vrm",
+ "vroid/5/4259844274850388665/4259844274850388665.vrm",
+ "vroid/5/4271113145253336205/4271113145253336205.vrm",
+ "vroid/5/4276496504110118155/4276496504110118155.vrm",
+ "vroid/5/427773126925000925/427773126925000925.vrm",
+ "vroid/5/4286363667122813415/4286363667122813415.vrm",
+ "vroid/5/4288088593389319255/4288088593389319255.vrm",
+ "vroid/5/4288331921245818875/4288331921245818875.vrm",
+ "vroid/5/4295391814495981385/4295391814495981385.vrm",
+ "vroid/5/430047758954599295/430047758954599295.vrm",
+ "vroid/5/4302417564751309485/4302417564751309485.vrm",
+ "vroid/5/4303444634751922575/4303444634751922575.vrm",
+ "vroid/5/4307275118727868815/4307275118727868815.vrm",
+ "vroid/5/4312372285374525855/4312372285374525855.vrm",
+ "vroid/5/4314691920884324515/4314691920884324515.vrm",
+ "vroid/5/4320332975603576195/4320332975603576195.vrm",
+ "vroid/5/4326292597002533665/4326292597002533665.vrm",
+ "vroid/5/4328053886523021665/4328053886523021665.vrm",
+ "vroid/5/4357203587379910095/4357203587379910095.vrm",
+ "vroid/5/4359846510194904255/4359846510194904255.vrm",
+ "vroid/5/4373822914214547715/4373822914214547715.vrm",
+ "vroid/5/4377769816523876635/4377769816523876635.vrm",
+ "vroid/5/437960984049918195/437960984049918195.vrm",
+ "vroid/5/4382261067401772085/4382261067401772085.vrm",
+ "vroid/5/4385255082537335895/4385255082537335895.vrm",
+ "vroid/5/4398875609092119365/4398875609092119365.vrm",
+ "vroid/5/4399308183431728375/4399308183431728375.vrm",
+ "vroid/5/4399578747590529925/4399578747590529925.vrm",
+ "vroid/5/4400267240865190935/4400267240865190935.vrm",
+ "vroid/5/4400551462195871165/4400551462195871165.vrm",
+ "vroid/5/4407895463105380685/4407895463105380685.vrm",
+ "vroid/5/4409099180279061875/4409099180279061875.vrm",
+ "vroid/5/4414132513890653705/4414132513890653705.vrm",
+ "vroid/5/4416802282392883205/4416802282392883205.vrm",
+ "vroid/5/441798263159651085/441798263159651085.vrm",
+ "vroid/5/4422821996291298355/4422821996291298355.vrm",
+ "vroid/5/4434500587603106745/4434500587603106745.vrm",
+ "vroid/5/4446065416973979525/4446065416973979525.vrm",
+ "vroid/5/4450486459951461405/4450486459951461405.vrm",
+ "vroid/5/446988878726045345/446988878726045345.vrm",
+ "vroid/5/4479483670611362535/4479483670611362535.vrm",
+ "vroid/5/4492720622436014635/4492720622436014635.vrm",
+ "vroid/5/4496039087318301855/4496039087318301855.vrm",
+ "vroid/5/4498009745895107115/4498009745895107115.vrm",
+ "vroid/5/4502702882548871335/4502702882548871335.vrm",
+ "vroid/5/4509375547150959905/4509375547150959905.vrm",
+ "vroid/5/4510129620075591875/4510129620075591875.vrm",
+ "vroid/5/4518917591424024975/4518917591424024975.vrm",
+ "vroid/5/4521808845677495415/4521808845677495415.vrm",
+ "vroid/5/4522828981943316565/4522828981943316565.vrm",
+ "vroid/5/4523496263931617465/4523496263931617465.vrm",
+ "vroid/5/4526353411592822145/4526353411592822145.vrm",
+ "vroid/5/4526718634015404455/4526718634015404455.vrm",
+ "vroid/5/4527157665786980875/4527157665786980875.vrm",
+ "vroid/5/4536624621665720265/4536624621665720265.vrm",
+ "vroid/5/4536628890164178885/4536628890164178885.vrm",
+ "vroid/5/4544304499696152595/4544304499696152595.vrm",
+ "vroid/5/4544630579919428945/4544630579919428945.vrm",
+ "vroid/5/4552698953368297025/4552698953368297025.vrm",
+ "vroid/5/4553278294241788105/4553278294241788105.vrm",
+ "vroid/5/4564817018053460815/4564817018053460815.vrm",
+ "vroid/5/4567144777158405315/4567144777158405315.vrm",
+ "vroid/5/4571783602257077505/4571783602257077505.vrm",
+ "vroid/5/4575408269977176325/4575408269977176325.vrm",
+ "vroid/5/4579819649010586275/4579819649010586275.vrm",
+ "vroid/5/4581482374647820365/4581482374647820365.vrm",
+ "vroid/5/4585761544093421015/4585761544093421015.vrm",
+ "vroid/5/4587640472934137525/4587640472934137525.vrm",
+ "vroid/5/4589607816097186425/4589607816097186425.vrm",
+ "vroid/5/4598754574942756525/4598754574942756525.vrm",
+ "vroid/5/4599696502972910555/4599696502972910555.vrm",
+ "vroid/5/4601279865919631875/4601279865919631875.vrm",
+ "vroid/5/4604408475005145105/4604408475005145105.vrm",
+ "vroid/5/4605249490218942505/4605249490218942505.vrm",
+ "vroid/5/4607531251409209865/4607531251409209865.vrm",
+ "vroid/5/4607750789674737255/4607750789674737255.vrm",
+ "vroid/5/4607829677685390625/4607829677685390625.vrm",
+ "vroid/5/4614073822320313225/4614073822320313225.vrm",
+ "vroid/5/4614097588272231825/4614097588272231825.vrm",
+ "vroid/5/4614201587041350625/4614201587041350625.vrm",
+ "vroid/5/4624099000467670845/4624099000467670845.vrm",
+ "vroid/5/4626220008392907335/4626220008392907335.vrm",
+ "vroid/5/4629790761962283335/4629790761962283335.vrm",
+ "vroid/5/4660293314540284925/4660293314540284925.vrm",
+ "vroid/5/4670092589235638865/4670092589235638865.vrm",
+ "vroid/5/4671615810908508955/4671615810908508955.vrm",
+ "vroid/5/4673719848154245655/4673719848154245655.vrm",
+ "vroid/5/4674164677548271235/4674164677548271235.vrm",
+ "vroid/5/46894910170888775/46894910170888775.vrm",
+ "vroid/5/4691862570716278115/4691862570716278115.vrm",
+ "vroid/5/470678796273864415/470678796273864415.vrm",
+ "vroid/5/4715615334475754485/4715615334475754485.vrm",
+ "vroid/5/4724574292448295405/4724574292448295405.vrm",
+ "vroid/5/472576464446186925/472576464446186925.vrm",
+ "vroid/5/4732587877766087525/4732587877766087525.vrm",
+ "vroid/5/4739340573082047205/4739340573082047205.vrm",
+ "vroid/5/4748184674918855185/4748184674918855185.vrm",
+ "vroid/5/4748802008620382525/4748802008620382525.vrm",
+ "vroid/5/4749613195386014715/4749613195386014715.vrm",
+ "vroid/5/4765104382877388825/4765104382877388825.vrm",
+ "vroid/5/476789394996073735/476789394996073735.vrm",
+ "vroid/5/4774675222564012115/4774675222564012115.vrm",
+ "vroid/5/4781532734998716755/4781532734998716755.vrm",
+ "vroid/5/4783162599705579845/4783162599705579845.vrm",
+ "vroid/5/4787552419692571295/4787552419692571295.vrm",
+ "vroid/5/4793445567435173465/4793445567435173465.vrm",
+ "vroid/5/4810712245227792815/4810712245227792815.vrm",
+ "vroid/5/4813408486716049005/4813408486716049005.vrm",
+ "vroid/5/4813838604196580385/4813838604196580385.vrm",
+ "vroid/5/4815956493410374445/4815956493410374445.vrm",
+ "vroid/5/481804807488507515/481804807488507515.vrm",
+ "vroid/5/4818958880325362445/4818958880325362445.vrm",
+ "vroid/5/4825333328984925325/4825333328984925325.vrm",
+ "vroid/5/4830008817613427455/4830008817613427455.vrm",
+ "vroid/5/4831227871500338855/4831227871500338855.vrm",
+ "vroid/5/4837830456164053915/4837830456164053915.vrm",
+ "vroid/5/4838912104458469695/4838912104458469695.vrm",
+ "vroid/5/4851265760560318445/4851265760560318445.vrm",
+ "vroid/5/4851664977415615195/4851664977415615195.vrm",
+ "vroid/5/4854044433283425235/4854044433283425235.vrm",
+ "vroid/5/4857196828898112645/4857196828898112645.vrm",
+ "vroid/5/4860533307021547215/4860533307021547215.vrm",
+ "vroid/5/4863066808794270675/4863066808794270675.vrm",
+ "vroid/5/4864853546883004485/4864853546883004485.vrm",
+ "vroid/5/4867589345110436595/4867589345110436595.vrm",
+ "vroid/5/486846451211378695/486846451211378695.vrm",
+ "vroid/5/4870114750986637435/4870114750986637435.vrm",
+ "vroid/5/4878139946750718545/4878139946750718545.vrm",
+ "vroid/5/4886324391800312915/4886324391800312915.vrm",
+ "vroid/5/4895951266715896735/4895951266715896735.vrm",
+ "vroid/5/4899878249524021925/4899878249524021925.vrm",
+ "vroid/5/4911755947499683075/4911755947499683075.vrm",
+ "vroid/5/4922801891149834995/4922801891149834995.vrm",
+ "vroid/5/4928463562439844065/4928463562439844065.vrm",
+ "vroid/5/4928561460504528645/4928561460504528645.vrm",
+ "vroid/5/4929107894253061845/4929107894253061845.vrm",
+ "vroid/5/4930670278777118915/4930670278777118915.vrm",
+ "vroid/5/4935014413338299355/4935014413338299355.vrm",
+ "vroid/5/4940885904179978265/4940885904179978265.vrm",
+ "vroid/5/4941066515041883665/4941066515041883665.vrm",
+ "vroid/5/496802426889633235/496802426889633235.vrm",
+ "vroid/5/4968597639820744425/4968597639820744425.vrm",
+ "vroid/5/4977684120300672415/4977684120300672415.vrm",
+ "vroid/5/4979706053165616975/4979706053165616975.vrm",
+ "vroid/5/4980358580627318965/4980358580627318965.vrm",
+ "vroid/5/4992868780654360375/4992868780654360375.vrm",
+ "vroid/5/4995653884607406245/4995653884607406245.vrm",
+ "vroid/5/4995819846025777395/4995819846025777395.vrm",
+ "vroid/5/5006641165310993785/5006641165310993785.vrm",
+ "vroid/5/5015097855418058995/5015097855418058995.vrm",
+ "vroid/5/5021179383788655075/5021179383788655075.vrm",
+ "vroid/5/5026047563776862715/5026047563776862715.vrm",
+ "vroid/5/5026946661941919765/5026946661941919765.vrm",
+ "vroid/5/5030699323098985115/5030699323098985115.vrm",
+ "vroid/5/5040766168274106655/5040766168274106655.vrm",
+ "vroid/5/5042977376127980035/5042977376127980035.vrm",
+ "vroid/5/5043829834690475225/5043829834690475225.vrm",
+ "vroid/5/5052527902966011205/5052527902966011205.vrm",
+ "vroid/5/5053796267521897325/5053796267521897325.vrm",
+ "vroid/5/5057293803248007815/5057293803248007815.vrm",
+ "vroid/5/5059379111593259445/5059379111593259445.vrm",
+ "vroid/5/5074367596293226965/5074367596293226965.vrm",
+ "vroid/5/5077133732883027885/5077133732883027885.vrm",
+ "vroid/5/5088096696560320575/5088096696560320575.vrm",
+ "vroid/5/5105391043285855395/5105391043285855395.vrm",
+ "vroid/5/5114324981618208775/5114324981618208775.vrm",
+ "vroid/5/5129052387513716225/5129052387513716225.vrm",
+ "vroid/5/5134431763197081015/5134431763197081015.vrm",
+ "vroid/5/514968105968007565/514968105968007565.vrm",
+ "vroid/5/5152657487684857925/5152657487684857925.vrm",
+ "vroid/5/5154154315860116695/5154154315860116695.vrm",
+ "vroid/5/5157132466188255845/5157132466188255845.vrm",
+ "vroid/5/5161065409346175405/5161065409346175405.vrm",
+ "vroid/5/5161440608496640785/5161440608496640785.vrm",
+ "vroid/5/5177034664611963075/5177034664611963075.vrm",
+ "vroid/5/5177716416192716205/5177716416192716205.vrm",
+ "vroid/5/5183102893198660285/5183102893198660285.vrm",
+ "vroid/5/5184553353543437525/5184553353543437525.vrm",
+ "vroid/5/518860287169127175/518860287169127175.vrm",
+ "vroid/5/5189003373814668245/5189003373814668245.vrm",
+ "vroid/5/5189349779423759915/5189349779423759915.vrm",
+ "vroid/5/5199170736416620595/5199170736416620595.vrm",
+ "vroid/5/5209934227616034915/5209934227616034915.vrm",
+ "vroid/5/5233111786253110445/5233111786253110445.vrm",
+ "vroid/5/5238871433779353845/5238871433779353845.vrm",
+ "vroid/5/5273284138764804545/5273284138764804545.vrm",
+ "vroid/5/527448473572660695/527448473572660695.vrm",
+ "vroid/5/5296432935268050955/5296432935268050955.vrm",
+ "vroid/5/5309387392721111965/5309387392721111965.vrm",
+ "vroid/5/5323542932729557455/5323542932729557455.vrm",
+ "vroid/5/5324114501373265115/5324114501373265115.vrm",
+ "vroid/5/5326676257177217505/5326676257177217505.vrm",
+ "vroid/5/5329294145616654275/5329294145616654275.vrm",
+ "vroid/5/5337142539261364925/5337142539261364925.vrm",
+ "vroid/5/5345640411989821555/5345640411989821555.vrm",
+ "vroid/5/5364751601077698895/5364751601077698895.vrm",
+ "vroid/5/5373698935132926015/5373698935132926015.vrm",
+ "vroid/5/5380260198047454895/5380260198047454895.vrm",
+ "vroid/5/5387356868836958125/5387356868836958125.vrm",
+ "vroid/5/5391716625302759955/5391716625302759955.vrm",
+ "vroid/5/5399543496928208675/5399543496928208675.vrm",
+ "vroid/5/5401708425744029885/5401708425744029885.vrm",
+ "vroid/5/5411634974229363635/5411634974229363635.vrm",
+ "vroid/5/5412745680254105535/5412745680254105535.vrm",
+ "vroid/5/5420385329273215325/5420385329273215325.vrm",
+ "vroid/5/5425156009141695095/5425156009141695095.vrm",
+ "vroid/5/5440797798808079685/5440797798808079685.vrm",
+ "vroid/5/5446323131294563505/5446323131294563505.vrm",
+ "vroid/5/5463109976422547845/5463109976422547845.vrm",
+ "vroid/5/5469160871955202975/5469160871955202975.vrm",
+ "vroid/5/5470868599967276255/5470868599967276255.vrm",
+ "vroid/5/5471154108753371845/5471154108753371845.vrm",
+ "vroid/5/5475868033038452095/5475868033038452095.vrm",
+ "vroid/5/5486173170327792755/5486173170327792755.vrm",
+ "vroid/5/5487826867511751215/5487826867511751215.vrm",
+ "vroid/5/5490091509738753255/5490091509738753255.vrm",
+ "vroid/5/5492799937793681515/5492799937793681515.vrm",
+ "vroid/5/5507161474196441835/5507161474196441835.vrm",
+ "vroid/5/5510641928784124845/5510641928784124845.vrm",
+ "vroid/5/5512299383949221015/5512299383949221015.vrm",
+ "vroid/5/5513852353362961635/5513852353362961635.vrm",
+ "vroid/5/5515292016365961105/5515292016365961105.vrm",
+ "vroid/5/5518367694969553135/5518367694969553135.vrm",
+ "vroid/5/5529422519714734325/5529422519714734325.vrm",
+ "vroid/5/5549197548038711445/5549197548038711445.vrm",
+ "vroid/5/5554820983390299175/5554820983390299175.vrm",
+ "vroid/5/5557524141635303615/5557524141635303615.vrm",
+ "vroid/5/5563429867420149455/5563429867420149455.vrm",
+ "vroid/5/5564973231147984475/5564973231147984475.vrm",
+ "vroid/5/5569734386714946175/5569734386714946175.vrm",
+ "vroid/5/5575483498317008375/5575483498317008375.vrm",
+ "vroid/5/5579639280588619405/5579639280588619405.vrm",
+ "vroid/5/5590604547442913925/5590604547442913925.vrm",
+ "vroid/5/5590913886003152165/5590913886003152165.vrm",
+ "vroid/5/5598451732881470255/5598451732881470255.vrm",
+ "vroid/5/5599113232672766225/5599113232672766225.vrm",
+ "vroid/5/560063358799009435/560063358799009435.vrm",
+ "vroid/5/5621554628719150895/5621554628719150895.vrm",
+ "vroid/5/5625808445167402815/5625808445167402815.vrm",
+ "vroid/5/5639616634756226065/5639616634756226065.vrm",
+ "vroid/5/5655495759695609835/5655495759695609835.vrm",
+ "vroid/5/56557314996231055/56557314996231055.vrm",
+ "vroid/5/5658556357865644565/5658556357865644565.vrm",
+ "vroid/5/5660686051540892105/5660686051540892105.vrm",
+ "vroid/5/5665145748607027295/5665145748607027295.vrm",
+ "vroid/5/5665946838590466085/5665946838590466085.vrm",
+ "vroid/5/5672074027257645355/5672074027257645355.vrm",
+ "vroid/5/567443623169499455/567443623169499455.vrm",
+ "vroid/5/5676438052907528485/5676438052907528485.vrm",
+ "vroid/5/5678810653598639915/5678810653598639915.vrm",
+ "vroid/5/568774709738767195/568774709738767195.vrm",
+ "vroid/5/5695319396826737605/5695319396826737605.vrm",
+ "vroid/5/5702636341266013815/5702636341266013815.vrm",
+ "vroid/5/5703129156009866485/5703129156009866485.vrm",
+ "vroid/5/5706210946253671765/5706210946253671765.vrm",
+ "vroid/5/5715475686357816085/5715475686357816085.vrm",
+ "vroid/5/5718924742282692475/5718924742282692475.vrm",
+ "vroid/5/5736421670225398175/5736421670225398175.vrm",
+ "vroid/5/574717111805950325/574717111805950325.vrm",
+ "vroid/5/5749099325640620125/5749099325640620125.vrm",
+ "vroid/5/5751632803342601975/5751632803342601975.vrm",
+ "vroid/5/5752104873684028385/5752104873684028385.vrm",
+ "vroid/5/5756496102249142835/5756496102249142835.vrm",
+ "vroid/5/5765953057047822175/5765953057047822175.vrm",
+ "vroid/5/576660501817893455/576660501817893455.vrm",
+ "vroid/5/5774759200152584105/5774759200152584105.vrm",
+ "vroid/5/577515401879178205/577515401879178205.vrm",
+ "vroid/5/577712379864945865/577712379864945865.vrm",
+ "vroid/5/5798448140922008595/5798448140922008595.vrm",
+ "vroid/5/5798835956913008825/5798835956913008825.vrm",
+ "vroid/5/5800224141316231125/5800224141316231125.vrm",
+ "vroid/5/5802983742146752495/5802983742146752495.vrm",
+ "vroid/5/5809793698340159975/5809793698340159975.vrm",
+ "vroid/5/5813442917391326325/5813442917391326325.vrm",
+ "vroid/5/5837102946346150285/5837102946346150285.vrm",
+ "vroid/5/5840287846486314675/5840287846486314675.vrm",
+ "vroid/5/5842248805605247325/5842248805605247325.vrm",
+ "vroid/5/5846630543406078235/5846630543406078235.vrm",
+ "vroid/5/5850994188310591035/5850994188310591035.vrm",
+ "vroid/5/585976583606153935/585976583606153935.vrm",
+ "vroid/5/5861525371750302985/5861525371750302985.vrm",
+ "vroid/5/5868191702965170715/5868191702965170715.vrm",
+ "vroid/5/5868913774049229405/5868913774049229405.vrm",
+ "vroid/5/5872326206648169935/5872326206648169935.vrm",
+ "vroid/5/5872666540206860925/5872666540206860925.vrm",
+ "vroid/5/5873115647796296075/5873115647796296075.vrm",
+ "vroid/5/5874275780319836035/5874275780319836035.vrm",
+ "vroid/5/5882827413926639565/5882827413926639565.vrm",
+ "vroid/5/5886001424523116195/5886001424523116195.vrm",
+ "vroid/5/588975810108361385/588975810108361385.vrm",
+ "vroid/5/5889790854426331235/5889790854426331235.vrm",
+ "vroid/5/589291343601287195/589291343601287195.vrm",
+ "vroid/5/5894782232309926135/5894782232309926135.vrm",
+ "vroid/5/5894921802924197965/5894921802924197965.vrm",
+ "vroid/5/5897489474801453945/5897489474801453945.vrm",
+ "vroid/5/5898626899785580965/5898626899785580965.vrm",
+ "vroid/5/5902862258865674875/5902862258865674875.vrm",
+ "vroid/5/5903043141553358645/5903043141553358645.vrm",
+ "vroid/5/5907642564216081085/5907642564216081085.vrm",
+ "vroid/5/5917938729860417265/5917938729860417265.vrm",
+ "vroid/5/5920757640428806375/5920757640428806375.vrm",
+ "vroid/5/592931803813176925/592931803813176925.vrm",
+ "vroid/5/59312523474362225/59312523474362225.vrm",
+ "vroid/5/5937793192137169475/5937793192137169475.vrm",
+ "vroid/5/5940334157936316385/5940334157936316385.vrm",
+ "vroid/5/5949079029581838085/5949079029581838085.vrm",
+ "vroid/5/597529654768744185/597529654768744185.vrm",
+ "vroid/5/5976197835917260045/5976197835917260045.vrm",
+ "vroid/5/5982879696205554325/5982879696205554325.vrm",
+ "vroid/5/5984489796346927095/5984489796346927095.vrm",
+ "vroid/5/599586818355752295/599586818355752295.vrm",
+ "vroid/5/5998352093656775665/5998352093656775665.vrm",
+ "vroid/5/6000081993888696505/6000081993888696505.vrm",
+ "vroid/5/6002552795707075255/6002552795707075255.vrm",
+ "vroid/5/6003909188506167085/6003909188506167085.vrm",
+ "vroid/5/6009586923078342105/6009586923078342105.vrm",
+ "vroid/5/6011888263258427785/6011888263258427785.vrm",
+ "vroid/5/6013310442616051095/6013310442616051095.vrm",
+ "vroid/5/601444595769148205/601444595769148205.vrm",
+ "vroid/5/6016779880592276185/6016779880592276185.vrm",
+ "vroid/5/6027461274681654515/6027461274681654515.vrm",
+ "vroid/5/6035071975896458245/6035071975896458245.vrm",
+ "vroid/5/6041304053212813095/6041304053212813095.vrm",
+ "vroid/5/6044347521251892895/6044347521251892895.vrm",
+ "vroid/5/6045489614841181255/6045489614841181255.vrm",
+ "vroid/5/6046379425849650405/6046379425849650405.vrm",
+ "vroid/5/6050815609204893295/6050815609204893295.vrm",
+ "vroid/5/6058480761868724685/6058480761868724685.vrm",
+ "vroid/5/6075550936918641935/6075550936918641935.vrm",
+ "vroid/5/6079196133306282135/6079196133306282135.vrm",
+ "vroid/5/6080506138898379785/6080506138898379785.vrm",
+ "vroid/5/6082061628203004175/6082061628203004175.vrm",
+ "vroid/5/6089821193505472565/6089821193505472565.vrm",
+ "vroid/5/6091482613101890655/6091482613101890655.vrm",
+ "vroid/5/6092323696952852705/6092323696952852705.vrm",
+ "vroid/5/6097863030661385845/6097863030661385845.vrm",
+ "vroid/5/6120747397795702175/6120747397795702175.vrm",
+ "vroid/5/6129706385986831855/6129706385986831855.vrm",
+ "vroid/5/613572801427284405/613572801427284405.vrm",
+ "vroid/5/6147014317871929145/6147014317871929145.vrm",
+ "vroid/5/6148590382905320905/6148590382905320905.vrm",
+ "vroid/5/6148957102328479275/6148957102328479275.vrm",
+ "vroid/5/6151324909537757085/6151324909537757085.vrm",
+ "vroid/5/6170331810480386005/6170331810480386005.vrm",
+ "vroid/5/6174125245342065065/6174125245342065065.vrm",
+ "vroid/5/617662621671999285/617662621671999285.vrm",
+ "vroid/5/6177117516195607825/6177117516195607825.vrm",
+ "vroid/5/6181713042752985595/6181713042752985595.vrm",
+ "vroid/5/6181952774132214705/6181952774132214705.vrm",
+ "vroid/5/6193186437518230755/6193186437518230755.vrm",
+ "vroid/5/6194901173118216745/6194901173118216745.vrm",
+ "vroid/5/6196678968096962775/6196678968096962775.vrm",
+ "vroid/5/6201752632947500315/6201752632947500315.vrm",
+ "vroid/5/6204991851635245085/6204991851635245085.vrm",
+ "vroid/5/620977428041422675/620977428041422675.vrm",
+ "vroid/5/6210119206888473105/6210119206888473105.vrm",
+ "vroid/5/6216809926393625805/6216809926393625805.vrm",
+ "vroid/5/6217212075357934575/6217212075357934575.vrm",
+ "vroid/5/6217492724547130175/6217492724547130175.vrm",
+ "vroid/5/6221578921553971345/6221578921553971345.vrm",
+ "vroid/5/6223439312864253055/6223439312864253055.vrm",
+ "vroid/5/6224476334209147675/6224476334209147675.vrm",
+ "vroid/5/6225510832874111705/6225510832874111705.vrm",
+ "vroid/5/6229409522288202625/6229409522288202625.vrm",
+ "vroid/5/6246294461640755505/6246294461640755505.vrm",
+ "vroid/5/6247354933617509945/6247354933617509945.vrm",
+ "vroid/5/6248852895077709105/6248852895077709105.vrm",
+ "vroid/5/6267293399228752365/6267293399228752365.vrm",
+ "vroid/5/6267323863885777085/6267323863885777085.vrm",
+ "vroid/5/6274072632780357635/6274072632780357635.vrm",
+ "vroid/5/6275331455457888475/6275331455457888475.vrm",
+ "vroid/5/6283721902222867925/6283721902222867925.vrm",
+ "vroid/5/6293212183673765/6293212183673765.vrm",
+ "vroid/5/6296023566292851605/6296023566292851605.vrm",
+ "vroid/5/6311557519740010475/6311557519740010475.vrm",
+ "vroid/5/631741632881919775/631741632881919775.vrm",
+ "vroid/5/6318105331214121395/6318105331214121395.vrm",
+ "vroid/5/632340815171692335/632340815171692335.vrm",
+ "vroid/5/6325551146548640285/6325551146548640285.vrm",
+ "vroid/5/6336887289227144965/6336887289227144965.vrm",
+ "vroid/5/6356867536946099395/6356867536946099395.vrm",
+ "vroid/5/6374444475661765845/6374444475661765845.vrm",
+ "vroid/5/6378994777822690455/6378994777822690455.vrm",
+ "vroid/5/6392682559143477315/6392682559143477315.vrm",
+ "vroid/5/6399887576894682225/6399887576894682225.vrm",
+ "vroid/5/6400918377415310545/6400918377415310545.vrm",
+ "vroid/5/6401029053916578925/6401029053916578925.vrm",
+ "vroid/5/6403747211209480965/6403747211209480965.vrm",
+ "vroid/5/6405371962866090785/6405371962866090785.vrm",
+ "vroid/5/6409734992994224835/6409734992994224835.vrm",
+ "vroid/5/6419369785546160035/6419369785546160035.vrm",
+ "vroid/5/6419504579501372195/6419504579501372195.vrm",
+ "vroid/5/6420883495034926815/6420883495034926815.vrm",
+ "vroid/5/6425270577418507705/6425270577418507705.vrm",
+ "vroid/5/6433334135280042785/6433334135280042785.vrm",
+ "vroid/5/6435300645629039135/6435300645629039135.vrm",
+ "vroid/5/643611346098972825/643611346098972825.vrm",
+ "vroid/5/6438306373201434965/6438306373201434965.vrm",
+ "vroid/5/6452041658041315345/6452041658041315345.vrm",
+ "vroid/5/6461588932396468605/6461588932396468605.vrm",
+ "vroid/5/6462588948507580975/6462588948507580975.vrm",
+ "vroid/5/6469353235575173195/6469353235575173195.vrm",
+ "vroid/5/6479822878657193895/6479822878657193895.vrm",
+ "vroid/5/64852045132622385/64852045132622385.vrm",
+ "vroid/5/6485850038781173505/6485850038781173505.vrm",
+ "vroid/5/648876553405728395/648876553405728395.vrm",
+ "vroid/5/6491330889944452305/6491330889944452305.vrm",
+ "vroid/5/6494608006926259225/6494608006926259225.vrm",
+ "vroid/5/6507951763448284425/6507951763448284425.vrm",
+ "vroid/5/6536389686350476165/6536389686350476165.vrm",
+ "vroid/5/6544715578336440085/6544715578336440085.vrm",
+ "vroid/5/6553563421779226105/6553563421779226105.vrm",
+ "vroid/5/6561797027020455735/6561797027020455735.vrm",
+ "vroid/5/6564220671469507775/6564220671469507775.vrm",
+ "vroid/5/6565294172369507345/6565294172369507345.vrm",
+ "vroid/5/6573746599277345045/6573746599277345045.vrm",
+ "vroid/5/6580385666707423565/6580385666707423565.vrm",
+ "vroid/5/6587150080161605035/6587150080161605035.vrm",
+ "vroid/5/6599394694679490525/6599394694679490525.vrm",
+ "vroid/5/6605858442773846905/6605858442773846905.vrm",
+ "vroid/5/6606912464575045385/6606912464575045385.vrm",
+ "vroid/5/6658447238786234945/6658447238786234945.vrm",
+ "vroid/5/6662460861700787715/6662460861700787715.vrm",
+ "vroid/5/6664059541024100305/6664059541024100305.vrm",
+ "vroid/5/6670956232578798075/6670956232578798075.vrm",
+ "vroid/5/6675635529123282065/6675635529123282065.vrm",
+ "vroid/5/6676755074261288675/6676755074261288675.vrm",
+ "vroid/5/667791317771329205/667791317771329205.vrm",
+ "vroid/5/668058030819763685/668058030819763685.vrm",
+ "vroid/5/6689824559897953255/6689824559897953255.vrm",
+ "vroid/5/6690495103439379625/6690495103439379625.vrm",
+ "vroid/5/6696043012044840335/6696043012044840335.vrm",
+ "vroid/5/6703175165777610935/6703175165777610935.vrm",
+ "vroid/5/6713532193768682045/6713532193768682045.vrm",
+ "vroid/5/6714822956519817135/6714822956519817135.vrm",
+ "vroid/5/6717179868275232935/6717179868275232935.vrm",
+ "vroid/5/6722825344642673975/6722825344642673975.vrm",
+ "vroid/5/6724808086419494585/6724808086419494585.vrm",
+ "vroid/5/6730123312487074945/6730123312487074945.vrm",
+ "vroid/5/6732388446154789665/6732388446154789665.vrm",
+ "vroid/5/674485718542311245/674485718542311245.vrm",
+ "vroid/5/6746228570463343365/6746228570463343365.vrm",
+ "vroid/5/6770489711774126325/6770489711774126325.vrm",
+ "vroid/5/6776948601112619405/6776948601112619405.vrm",
+ "vroid/5/6779203821536586005/6779203821536586005.vrm",
+ "vroid/5/6780165406278549345/6780165406278549345.vrm",
+ "vroid/5/6792369265232745475/6792369265232745475.vrm",
+ "vroid/5/6794697067286320305/6794697067286320305.vrm",
+ "vroid/5/6800743224844513965/6800743224844513965.vrm",
+ "vroid/5/6803328414710613605/6803328414710613605.vrm",
+ "vroid/5/6811424934209101235/6811424934209101235.vrm",
+ "vroid/5/6811452726487214625/6811452726487214625.vrm",
+ "vroid/5/6819867849896987525/6819867849896987525.vrm",
+ "vroid/5/6821114147187091385/6821114147187091385.vrm",
+ "vroid/5/6821746299350863405/6821746299350863405.vrm",
+ "vroid/5/6839839331830586735/6839839331830586735.vrm",
+ "vroid/5/6845343702953780975/6845343702953780975.vrm",
+ "vroid/5/6845468359738936835/6845468359738936835.vrm",
+ "vroid/5/6851302533442009055/6851302533442009055.vrm",
+ "vroid/5/6857702705836239855/6857702705836239855.vrm",
+ "vroid/5/6860464947756606145/6860464947756606145.vrm",
+ "vroid/5/6862635803117960775/6862635803117960775.vrm",
+ "vroid/5/6863943402561342715/6863943402561342715.vrm",
+ "vroid/5/686460618876476735/686460618876476735.vrm",
+ "vroid/5/6867883194346259435/6867883194346259435.vrm",
+ "vroid/5/6871413180860072695/6871413180860072695.vrm",
+ "vroid/5/6872674208282162285/6872674208282162285.vrm",
+ "vroid/5/6881751630709166525/6881751630709166525.vrm",
+ "vroid/5/6882627477254976545/6882627477254976545.vrm",
+ "vroid/5/6882919250922006945/6882919250922006945.vrm",
+ "vroid/5/6885793821433191635/6885793821433191635.vrm",
+ "vroid/5/6886620716630266855/6886620716630266855.vrm",
+ "vroid/5/6893590463502190425/6893590463502190425.vrm",
+ "vroid/5/6896499577398390625/6896499577398390625.vrm",
+ "vroid/5/6903828797741064495/6903828797741064495.vrm",
+ "vroid/5/6911901902541332655/6911901902541332655.vrm",
+ "vroid/5/691945367580485915/691945367580485915.vrm",
+ "vroid/5/6920008806731794225/6920008806731794225.vrm",
+ "vroid/5/692384020234848315/692384020234848315.vrm",
+ "vroid/5/6935549312584578425/6935549312584578425.vrm",
+ "vroid/5/6939392311417218605/6939392311417218605.vrm",
+ "vroid/5/694552105644667655/694552105644667655.vrm",
+ "vroid/5/6968135493788179255/6968135493788179255.vrm",
+ "vroid/5/6968292594615922185/6968292594615922185.vrm",
+ "vroid/5/69714663244878055/69714663244878055.vrm",
+ "vroid/5/6980398976781047045/6980398976781047045.vrm",
+ "vroid/5/6992974431820297385/6992974431820297385.vrm",
+ "vroid/5/6997022447100807235/6997022447100807235.vrm",
+ "vroid/5/7003114517603992805/7003114517603992805.vrm",
+ "vroid/5/7004392815609379855/7004392815609379855.vrm",
+ "vroid/5/7007861937010902345/7007861937010902345.vrm",
+ "vroid/5/7009851612740324385/7009851612740324385.vrm",
+ "vroid/5/7036730761393037185/7036730761393037185.vrm",
+ "vroid/5/7037427515593716195/7037427515593716195.vrm",
+ "vroid/5/7042015294806037725/7042015294806037725.vrm",
+ "vroid/5/7047393832904767985/7047393832904767985.vrm",
+ "vroid/5/7064826677969378575/7064826677969378575.vrm",
+ "vroid/5/7067609553930623325/7067609553930623325.vrm",
+ "vroid/5/707167041453258345/707167041453258345.vrm",
+ "vroid/5/7073034385530877005/7073034385530877005.vrm",
+ "vroid/5/7075597494069569735/7075597494069569735.vrm",
+ "vroid/5/7089578408855848915/7089578408855848915.vrm",
+ "vroid/5/7105906789738651275/7105906789738651275.vrm",
+ "vroid/5/7113308130871604115/7113308130871604115.vrm",
+ "vroid/5/712304178291830965/712304178291830965.vrm",
+ "vroid/5/7125146805570080505/7125146805570080505.vrm",
+ "vroid/5/7129540942991955085/7129540942991955085.vrm",
+ "vroid/5/7146486942739561315/7146486942739561315.vrm",
+ "vroid/5/7158568933274775485/7158568933274775485.vrm",
+ "vroid/5/7159828165764650755/7159828165764650755.vrm",
+ "vroid/5/7176687355206891435/7176687355206891435.vrm",
+ "vroid/5/7177983679214505805/7177983679214505805.vrm",
+ "vroid/5/7186933074630083385/7186933074630083385.vrm",
+ "vroid/5/7195753311039298905/7195753311039298905.vrm",
+ "vroid/5/7197000743401337515/7197000743401337515.vrm",
+ "vroid/5/7202360085357564825/7202360085357564825.vrm",
+ "vroid/5/7202425598091623635/7202425598091623635.vrm",
+ "vroid/5/720254657332917065/720254657332917065.vrm",
+ "vroid/5/720615120410177175/720615120410177175.vrm",
+ "vroid/5/720741603735492935/720741603735492935.vrm",
+ "vroid/5/7214488984524110685/7214488984524110685.vrm",
+ "vroid/5/7223355807014806175/7223355807014806175.vrm",
+ "vroid/5/7226959904426787425/7226959904426787425.vrm",
+ "vroid/5/7230233708862450595/7230233708862450595.vrm",
+ "vroid/5/7233947125794727195/7233947125794727195.vrm",
+ "vroid/5/7239028683773972565/7239028683773972565.vrm",
+ "vroid/5/724303957059027305/724303957059027305.vrm",
+ "vroid/5/7244249269411601105/7244249269411601105.vrm",
+ "vroid/5/7246366769096163515/7246366769096163515.vrm",
+ "vroid/5/7252885561263514475/7252885561263514475.vrm",
+ "vroid/5/7255124018008749505/7255124018008749505.vrm",
+ "vroid/5/7257356459381763855/7257356459381763855.vrm",
+ "vroid/5/726092182314964565/726092182314964565.vrm",
+ "vroid/5/7262602741470117395/7262602741470117395.vrm",
+ "vroid/5/7277857483551450865/7277857483551450865.vrm",
+ "vroid/5/7287924915556891965/7287924915556891965.vrm",
+ "vroid/5/7296430777833940625/7296430777833940625.vrm",
+ "vroid/5/7306978321405535555/7306978321405535555.vrm",
+ "vroid/5/7308823200043893425/7308823200043893425.vrm",
+ "vroid/5/7308848342781355935/7308848342781355935.vrm",
+ "vroid/5/7321942889647492135/7321942889647492135.vrm",
+ "vroid/5/735315619620346155/735315619620346155.vrm",
+ "vroid/5/7355267507276936085/7355267507276936085.vrm",
+ "vroid/5/7363144399662688365/7363144399662688365.vrm",
+ "vroid/5/7363859368201845595/7363859368201845595.vrm",
+ "vroid/5/7367782928219493225/7367782928219493225.vrm",
+ "vroid/5/7369079138966484435/7369079138966484435.vrm",
+ "vroid/5/7370821296276384695/7370821296276384695.vrm",
+ "vroid/5/7371304787676777235/7371304787676777235.vrm",
+ "vroid/5/7410038460426364005/7410038460426364005.vrm",
+ "vroid/5/7411584371823448995/7411584371823448995.vrm",
+ "vroid/5/7432578623063927705/7432578623063927705.vrm",
+ "vroid/5/7437238158851589875/7437238158851589875.vrm",
+ "vroid/5/7440607042439536205/7440607042439536205.vrm",
+ "vroid/5/7440721942820473465/7440721942820473465.vrm",
+ "vroid/5/7443272339808136585/7443272339808136585.vrm",
+ "vroid/5/7450932014823577715/7450932014823577715.vrm",
+ "vroid/5/7451281098734536935/7451281098734536935.vrm",
+ "vroid/5/7453225762470824505/7453225762470824505.vrm",
+ "vroid/5/7457336369468105965/7457336369468105965.vrm",
+ "vroid/5/745895330069148035/745895330069148035.vrm",
+ "vroid/5/7462328061631854415/7462328061631854415.vrm",
+ "vroid/5/7468754363118423225/7468754363118423225.vrm",
+ "vroid/5/7476873940525632395/7476873940525632395.vrm",
+ "vroid/5/7484480808630857455/7484480808630857455.vrm",
+ "vroid/5/7489591713264107625/7489591713264107625.vrm",
+ "vroid/5/7503964918662995625/7503964918662995625.vrm",
+ "vroid/5/7505937294264768965/7505937294264768965.vrm",
+ "vroid/5/7506377580714468725/7506377580714468725.vrm",
+ "vroid/5/7523531168794599875/7523531168794599875.vrm",
+ "vroid/5/7525437337253419015/7525437337253419015.vrm",
+ "vroid/5/7537380436058238955/7537380436058238955.vrm",
+ "vroid/5/7540657305634941865/7540657305634941865.vrm",
+ "vroid/5/7548009462455177735/7548009462455177735.vrm",
+ "vroid/5/7548352817462089465/7548352817462089465.vrm",
+ "vroid/5/7551739865854879875/7551739865854879875.vrm",
+ "vroid/5/7574037232449735615/7574037232449735615.vrm",
+ "vroid/5/7584894832371194195/7584894832371194195.vrm",
+ "vroid/5/7586987102032621255/7586987102032621255.vrm",
+ "vroid/5/759107404608270405/759107404608270405.vrm",
+ "vroid/5/7592034841669728715/7592034841669728715.vrm",
+ "vroid/5/7595221049861259485/7595221049861259485.vrm",
+ "vroid/5/7604859226963750355/7604859226963750355.vrm",
+ "vroid/5/7606676930613455215/7606676930613455215.vrm",
+ "vroid/5/7613529040682918185/7613529040682918185.vrm",
+ "vroid/5/761665724789005725/761665724789005725.vrm",
+ "vroid/5/7624796546513313845/7624796546513313845.vrm",
+ "vroid/5/7630502291956530405/7630502291956530405.vrm",
+ "vroid/5/7633596137002395325/7633596137002395325.vrm",
+ "vroid/5/7636888025049801295/7636888025049801295.vrm",
+ "vroid/5/7637851648089203725/7637851648089203725.vrm",
+ "vroid/5/7642661720087844415/7642661720087844415.vrm",
+ "vroid/5/7646318650702668225/7646318650702668225.vrm",
+ "vroid/5/7650724896127215245/7650724896127215245.vrm",
+ "vroid/5/7651763313580417185/7651763313580417185.vrm",
+ "vroid/5/765745563266945535/765745563266945535.vrm",
+ "vroid/5/7666916213494412235/7666916213494412235.vrm",
+ "vroid/5/7671666219099446475/7671666219099446475.vrm",
+ "vroid/5/7672123098772265115/7672123098772265115.vrm",
+ "vroid/5/7674953492479852325/7674953492479852325.vrm",
+ "vroid/5/7677212592249433005/7677212592249433005.vrm",
+ "vroid/5/7678103379787062935/7678103379787062935.vrm",
+ "vroid/5/7684475878868651165/7684475878868651165.vrm",
+ "vroid/5/7685782854697470445/7685782854697470445.vrm",
+ "vroid/5/7686752410709379875/7686752410709379875.vrm",
+ "vroid/5/7710474117164408805/7710474117164408805.vrm",
+ "vroid/5/7712841033451209755/7712841033451209755.vrm",
+ "vroid/5/7713590119317868625/7713590119317868625.vrm",
+ "vroid/5/7716384326289125785/7716384326289125785.vrm",
+ "vroid/5/7718379222613271855/7718379222613271855.vrm",
+ "vroid/5/7724785704165898165/7724785704165898165.vrm",
+ "vroid/5/7749809699301067205/7749809699301067205.vrm",
+ "vroid/5/7755615164931500025/7755615164931500025.vrm",
+ "vroid/5/7759723328789813245/7759723328789813245.vrm",
+ "vroid/5/7764182550469221835/7764182550469221835.vrm",
+ "vroid/5/777473749280988935/777473749280988935.vrm",
+ "vroid/5/7776055403378643965/7776055403378643965.vrm",
+ "vroid/5/7778036813709384965/7778036813709384965.vrm",
+ "vroid/5/7780076042514317315/7780076042514317315.vrm",
+ "vroid/5/7804344806487587745/7804344806487587745.vrm",
+ "vroid/5/7805378164355570775/7805378164355570775.vrm",
+ "vroid/5/7815995746288414405/7815995746288414405.vrm",
+ "vroid/5/7818333083648173685/7818333083648173685.vrm",
+ "vroid/5/7818561530426580425/7818561530426580425.vrm",
+ "vroid/5/7824425634044511275/7824425634044511275.vrm",
+ "vroid/5/7827826622044617415/7827826622044617415.vrm",
+ "vroid/5/7833611616462181245/7833611616462181245.vrm",
+ "vroid/5/7840800216345376565/7840800216345376565.vrm",
+ "vroid/5/7848009137664610605/7848009137664610605.vrm",
+ "vroid/5/7854939041815049245/7854939041815049245.vrm",
+ "vroid/5/7863948696578198665/7863948696578198665.vrm",
+ "vroid/5/7866225364419307125/7866225364419307125.vrm",
+ "vroid/5/7868238568101017535/7868238568101017535.vrm",
+ "vroid/5/7871502861500326395/7871502861500326395.vrm",
+ "vroid/5/7872062148948670465/7872062148948670465.vrm",
+ "vroid/5/7880543326193537785/7880543326193537785.vrm",
+ "vroid/5/7881997837081513685/7881997837081513685.vrm",
+ "vroid/5/7892279437320088275/7892279437320088275.vrm",
+ "vroid/5/7897651808910528725/7897651808910528725.vrm",
+ "vroid/5/7900060151297927765/7900060151297927765.vrm",
+ "vroid/5/7905476443108696165/7905476443108696165.vrm",
+ "vroid/5/7915071496332830255/7915071496332830255.vrm",
+ "vroid/5/7917173102784439745/7917173102784439745.vrm",
+ "vroid/5/7923170820369317405/7923170820369317405.vrm",
+ "vroid/5/7935124697668455435/7935124697668455435.vrm",
+ "vroid/5/793948168127292755/793948168127292755.vrm",
+ "vroid/5/7942799111778464165/7942799111778464165.vrm",
+ "vroid/5/7944238415963342645/7944238415963342645.vrm",
+ "vroid/5/7957753600389701325/7957753600389701325.vrm",
+ "vroid/5/7964320709169468365/7964320709169468365.vrm",
+ "vroid/5/7965216394150050475/7965216394150050475.vrm",
+ "vroid/5/7966409527662614815/7966409527662614815.vrm",
+ "vroid/5/7972900813621041355/7972900813621041355.vrm",
+ "vroid/5/7983081621167601915/7983081621167601915.vrm",
+ "vroid/5/7997871360751914065/7997871360751914065.vrm",
+ "vroid/5/7999176163560492455/7999176163560492455.vrm",
+ "vroid/5/8006408968457100375/8006408968457100375.vrm",
+ "vroid/5/8006702757225814675/8006702757225814675.vrm",
+ "vroid/5/8008057091915224605/8008057091915224605.vrm",
+ "vroid/5/8014786438046707525/8014786438046707525.vrm",
+ "vroid/5/8019349040524931445/8019349040524931445.vrm",
+ "vroid/5/8020494623608521015/8020494623608521015.vrm",
+ "vroid/5/8020572961607311415/8020572961607311415.vrm",
+ "vroid/5/8023040633902079045/8023040633902079045.vrm",
+ "vroid/5/8030113276384292515/8030113276384292515.vrm",
+ "vroid/5/8032096353486220645/8032096353486220645.vrm",
+ "vroid/5/8036787228130299285/8036787228130299285.vrm",
+ "vroid/5/8043210327216205115/8043210327216205115.vrm",
+ "vroid/5/8050727405164315235/8050727405164315235.vrm",
+ "vroid/5/805198429016527895/805198429016527895.vrm",
+ "vroid/5/8060055740402494395/8060055740402494395.vrm",
+ "vroid/5/8061760342306701665/8061760342306701665.vrm",
+ "vroid/5/8085687289276693775/8085687289276693775.vrm",
+ "vroid/5/8091097875111713525/8091097875111713525.vrm",
+ "vroid/5/8092930406519672945/8092930406519672945.vrm",
+ "vroid/5/810097974355430175/810097974355430175.vrm",
+ "vroid/5/8113894263525122315/8113894263525122315.vrm",
+ "vroid/5/8114292610951075845/8114292610951075845.vrm",
+ "vroid/5/8116519396857616215/8116519396857616215.vrm",
+ "vroid/5/8116808433283871425/8116808433283871425.vrm",
+ "vroid/5/8128190291963385775/8128190291963385775.vrm",
+ "vroid/5/8131048420096630615/8131048420096630615.vrm",
+ "vroid/5/8141412021126346735/8141412021126346735.vrm",
+ "vroid/5/8144010844195173505/8144010844195173505.vrm",
+ "vroid/5/8145331942239552835/8145331942239552835.vrm",
+ "vroid/5/8153095659665523735/8153095659665523735.vrm",
+ "vroid/5/8156606713071278675/8156606713071278675.vrm",
+ "vroid/5/8161204481950202225/8161204481950202225.vrm",
+ "vroid/5/8163234756188890285/8163234756188890285.vrm",
+ "vroid/5/8170908340955840135/8170908340955840135.vrm",
+ "vroid/5/8173251886585432645/8173251886585432645.vrm",
+ "vroid/5/8175878451867223535/8175878451867223535.vrm",
+ "vroid/5/8194607395753728245/8194607395753728245.vrm",
+ "vroid/5/8226923841749003735/8226923841749003735.vrm",
+ "vroid/5/8231004083945171245/8231004083945171245.vrm",
+ "vroid/5/8237159930966857515/8237159930966857515.vrm",
+ "vroid/5/8238410140511057915/8238410140511057915.vrm",
+ "vroid/5/8249259982063782225/8249259982063782225.vrm",
+ "vroid/5/8286787113173001235/8286787113173001235.vrm",
+ "vroid/5/8287646745144540695/8287646745144540695.vrm",
+ "vroid/5/8289963219760222685/8289963219760222685.vrm",
+ "vroid/5/8297759857321036795/8297759857321036795.vrm",
+ "vroid/5/8299895595917064605/8299895595917064605.vrm",
+ "vroid/5/8300798563953855425/8300798563953855425.vrm",
+ "vroid/5/8315368648658741815/8315368648658741815.vrm",
+ "vroid/5/8321053381386865655/8321053381386865655.vrm",
+ "vroid/5/8332147483870134045/8332147483870134045.vrm",
+ "vroid/5/8335464652153150495/8335464652153150495.vrm",
+ "vroid/5/8365559781461634015/8365559781461634015.vrm",
+ "vroid/5/8366066829471328965/8366066829471328965.vrm",
+ "vroid/5/8379256994416305155/8379256994416305155.vrm",
+ "vroid/5/8380074095465211425/8380074095465211425.vrm",
+ "vroid/5/8381395526261660715/8381395526261660715.vrm",
+ "vroid/5/8382842097767822465/8382842097767822465.vrm",
+ "vroid/5/8387371053259484895/8387371053259484895.vrm",
+ "vroid/5/8394126462202683825/8394126462202683825.vrm",
+ "vroid/5/8398407325939895485/8398407325939895485.vrm",
+ "vroid/5/8399725020486929895/8399725020486929895.vrm",
+ "vroid/5/8402397133732160145/8402397133732160145.vrm",
+ "vroid/5/8404666619472438215/8404666619472438215.vrm",
+ "vroid/5/8405672971921034915/8405672971921034915.vrm",
+ "vroid/5/8406002526563314505/8406002526563314505.vrm",
+ "vroid/5/8407692057009371085/8407692057009371085.vrm",
+ "vroid/5/8422811613549810895/8422811613549810895.vrm",
+ "vroid/5/8423470882970990335/8423470882970990335.vrm",
+ "vroid/5/8424866659979349015/8424866659979349015.vrm",
+ "vroid/5/8426883969575781645/8426883969575781645.vrm",
+ "vroid/5/8428057699323177345/8428057699323177345.vrm",
+ "vroid/5/8435105018700001315/8435105018700001315.vrm",
+ "vroid/5/8450206288645858595/8450206288645858595.vrm",
+ "vroid/5/8456370581644794155/8456370581644794155.vrm",
+ "vroid/5/8458621197567286275/8458621197567286275.vrm",
+ "vroid/5/8483025948096248355/8483025948096248355.vrm",
+ "vroid/5/8484452483174778465/8484452483174778465.vrm",
+ "vroid/5/8486021285573628165/8486021285573628165.vrm",
+ "vroid/5/8486591619467592035/8486591619467592035.vrm",
+ "vroid/5/8491815553709533945/8491815553709533945.vrm",
+ "vroid/5/8493512838128713735/8493512838128713735.vrm",
+ "vroid/5/8494124561606161775/8494124561606161775.vrm",
+ "vroid/5/8494343394699630675/8494343394699630675.vrm",
+ "vroid/5/8494967574395793605/8494967574395793605.vrm",
+ "vroid/5/8505084587973643605/8505084587973643605.vrm",
+ "vroid/5/8512271703730839565/8512271703730839565.vrm",
+ "vroid/5/8516461219449026805/8516461219449026805.vrm",
+ "vroid/5/8519806120600142805/8519806120600142805.vrm",
+ "vroid/5/8523869388662426115/8523869388662426115.vrm",
+ "vroid/5/8534860853144472965/8534860853144472965.vrm",
+ "vroid/5/8537597457640397745/8537597457640397745.vrm",
+ "vroid/5/8551833531961465885/8551833531961465885.vrm",
+ "vroid/5/8552347860415963715/8552347860415963715.vrm",
+ "vroid/5/8565039940911642065/8565039940911642065.vrm",
+ "vroid/5/8567108627715895855/8567108627715895855.vrm",
+ "vroid/5/8572597732677447115/8572597732677447115.vrm",
+ "vroid/5/857503026630032155/857503026630032155.vrm",
+ "vroid/5/8581668240690939275/8581668240690939275.vrm",
+ "vroid/5/8584339143354865725/8584339143354865725.vrm",
+ "vroid/5/859134279329125375/859134279329125375.vrm",
+ "vroid/5/8596713903295385955/8596713903295385955.vrm",
+ "vroid/5/8597646199424299005/8597646199424299005.vrm",
+ "vroid/5/8618164568547959255/8618164568547959255.vrm",
+ "vroid/5/8618880256706554495/8618880256706554495.vrm",
+ "vroid/5/8631084120612983515/8631084120612983515.vrm",
+ "vroid/5/8640135536156743805/8640135536156743805.vrm",
+ "vroid/5/8644394218024581525/8644394218024581525.vrm",
+ "vroid/5/864606835102037555/864606835102037555.vrm",
+ "vroid/5/8653822753179783685/8653822753179783685.vrm",
+ "vroid/5/866086646573716435/866086646573716435.vrm",
+ "vroid/5/8676942336678395665/8676942336678395665.vrm",
+ "vroid/5/867843829217113035/867843829217113035.vrm",
+ "vroid/5/8688782652758038045/8688782652758038045.vrm",
+ "vroid/5/8689712407230470435/8689712407230470435.vrm",
+ "vroid/5/8709823995799399335/8709823995799399335.vrm",
+ "vroid/5/8711514166689472395/8711514166689472395.vrm",
+ "vroid/5/8721175488772388755/8721175488772388755.vrm",
+ "vroid/5/8731480702976740505/8731480702976740505.vrm",
+ "vroid/5/8735922569712229395/8735922569712229395.vrm",
+ "vroid/5/873985744684511315/873985744684511315.vrm",
+ "vroid/5/8745294407886522055/8745294407886522055.vrm",
+ "vroid/5/8746462757086269445/8746462757086269445.vrm",
+ "vroid/5/8750276723719137885/8750276723719137885.vrm",
+ "vroid/5/8756409907706985085/8756409907706985085.vrm",
+ "vroid/5/8765649801817931765/8765649801817931765.vrm",
+ "vroid/5/8766372264643424095/8766372264643424095.vrm",
+ "vroid/5/8767823553759206745/8767823553759206745.vrm",
+ "vroid/5/8768873897543523545/8768873897543523545.vrm",
+ "vroid/5/8770003043983578215/8770003043983578215.vrm",
+ "vroid/5/8783542745945818445/8783542745945818445.vrm",
+ "vroid/5/8810359261817296315/8810359261817296315.vrm",
+ "vroid/5/882143123730287665/882143123730287665.vrm",
+ "vroid/5/8825906134506774525/8825906134506774525.vrm",
+ "vroid/5/8827012754070393165/8827012754070393165.vrm",
+ "vroid/5/8833365149755032315/8833365149755032315.vrm",
+ "vroid/5/883936023426230985/883936023426230985.vrm",
+ "vroid/5/8846227157912943525/8846227157912943525.vrm",
+ "vroid/5/88515463061949435/88515463061949435.vrm",
+ "vroid/5/8864287433439511305/8864287433439511305.vrm",
+ "vroid/5/8872344703372007545/8872344703372007545.vrm",
+ "vroid/5/8885794078974632045/8885794078974632045.vrm",
+ "vroid/5/8887781982140871415/8887781982140871415.vrm",
+ "vroid/5/8893788138323287955/8893788138323287955.vrm",
+ "vroid/5/8900621394037107425/8900621394037107425.vrm",
+ "vroid/5/890436893221275095/890436893221275095.vrm",
+ "vroid/5/8904822319449499935/8904822319449499935.vrm",
+ "vroid/5/890820053711627425/890820053711627425.vrm",
+ "vroid/5/8911186847787229025/8911186847787229025.vrm",
+ "vroid/5/8914592829936229765/8914592829936229765.vrm",
+ "vroid/5/8916315981730557325/8916315981730557325.vrm",
+ "vroid/5/8916914355034872145/8916914355034872145.vrm",
+ "vroid/5/8924332306331340205/8924332306331340205.vrm",
+ "vroid/5/8926865230895540115/8926865230895540115.vrm",
+ "vroid/5/8931082703707033225/8931082703707033225.vrm",
+ "vroid/5/8933323532541420315/8933323532541420315.vrm",
+ "vroid/5/8946411716667957295/8946411716667957295.vrm",
+ "vroid/5/8947047521176922535/8947047521176922535.vrm",
+ "vroid/5/8970644501198825455/8970644501198825455.vrm",
+ "vroid/5/8975107540634217495/8975107540634217495.vrm",
+ "vroid/5/8979101851198088125/8979101851198088125.vrm",
+ "vroid/5/8982342833854980155/8982342833854980155.vrm",
+ "vroid/5/8989174220291042555/8989174220291042555.vrm",
+ "vroid/5/8989885039722904595/8989885039722904595.vrm",
+ "vroid/5/8994911340881224085/8994911340881224085.vrm",
+ "vroid/5/8999640709832005845/8999640709832005845.vrm",
+ "vroid/5/9000730533707063325/9000730533707063325.vrm",
+ "vroid/5/9005026656447410815/9005026656447410815.vrm",
+ "vroid/5/900773634328399835/900773634328399835.vrm",
+ "vroid/5/9008347109693106475/9008347109693106475.vrm",
+ "vroid/5/9009092908810082255/9009092908810082255.vrm",
+ "vroid/5/9010266605024301145/9010266605024301145.vrm",
+ "vroid/5/90120771761696215/90120771761696215.vrm",
+ "vroid/5/901277655612978205/901277655612978205.vrm",
+ "vroid/5/9016392239316538335/9016392239316538335.vrm",
+ "vroid/5/9016641318786687975/9016641318786687975.vrm",
+ "vroid/5/9020037871629957175/9020037871629957175.vrm",
+ "vroid/5/9020240928867493445/9020240928867493445.vrm",
+ "vroid/5/9022978500703362775/9022978500703362775.vrm",
+ "vroid/5/9040783315061757655/9040783315061757655.vrm",
+ "vroid/5/9047317752417487475/9047317752417487475.vrm",
+ "vroid/5/9049725031297712115/9049725031297712115.vrm",
+ "vroid/5/9051368064615794365/9051368064615794365.vrm",
+ "vroid/5/9051793373542728185/9051793373542728185.vrm",
+ "vroid/5/905253681647524045/905253681647524045.vrm",
+ "vroid/5/9062467445989057455/9062467445989057455.vrm",
+ "vroid/5/9066317439085042265/9066317439085042265.vrm",
+ "vroid/5/9071023046507463815/9071023046507463815.vrm",
+ "vroid/5/9085856422245907075/9085856422245907075.vrm",
+ "vroid/5/9089810598214665395/9089810598214665395.vrm",
+ "vroid/5/9092711865339913795/9092711865339913795.vrm",
+ "vroid/5/9105165143136118525/9105165143136118525.vrm",
+ "vroid/5/9106224559710629415/9106224559710629415.vrm",
+ "vroid/5/9112870925224711385/9112870925224711385.vrm",
+ "vroid/5/912965607066753825/912965607066753825.vrm",
+ "vroid/5/9130607561162966885/9130607561162966885.vrm",
+ "vroid/5/9131647213933311395/9131647213933311395.vrm",
+ "vroid/5/9135088780892380605/9135088780892380605.vrm",
+ "vroid/5/914967737898799545/914967737898799545.vrm",
+ "vroid/5/916046882292102565/916046882292102565.vrm",
+ "vroid/5/9166463926375586795/9166463926375586795.vrm",
+ "vroid/5/9172321316118260095/9172321316118260095.vrm",
+ "vroid/5/917923369744320515/917923369744320515.vrm",
+ "vroid/5/9184849915431668565/9184849915431668565.vrm",
+ "vroid/5/9185463859030818645/9185463859030818645.vrm",
+ "vroid/5/9197559596029901955/9197559596029901955.vrm",
+ "vroid/5/9199700797858973905/9199700797858973905.vrm",
+ "vroid/5/920386760581338565/920386760581338565.vrm",
+ "vroid/5/9204207201610950985/9204207201610950985.vrm",
+ "vroid/5/9216127804556933575/9216127804556933575.vrm",
+ "vroid/5/9216894998717544655/9216894998717544655.vrm",
+ "vroid/5/923853920966009005/923853920966009005.vrm",
+ "vroid/5/936557262981337495/936557262981337495.vrm",
+ "vroid/5/93751912015917865/93751912015917865.vrm",
+ "vroid/5/939490792208247725/939490792208247725.vrm",
+ "vroid/5/957934436210881775/957934436210881775.vrm",
+ "vroid/5/970018378754800245/970018378754800245.vrm",
+ "vroid/5/974237423423184015/974237423423184015.vrm",
+ "vroid/5/974847084634639045/974847084634639045.vrm",
+ "vroid/5/978312702479422675/978312702479422675.vrm",
+ "vroid/5/980897004974372695/980897004974372695.vrm",
+ "vroid/5/982927096979398065/982927096979398065.vrm",
+ "vroid/5/98951685351202635/98951685351202635.vrm",
+ "vroid/6/1007874119190303936/1007874119190303936.vrm",
+ "vroid/6/1025709379466859566/1025709379466859566.vrm",
+ "vroid/6/1032742076019156746/1032742076019156746.vrm",
+ "vroid/6/1039427964708263906/1039427964708263906.vrm",
+ "vroid/6/104083846463653296/104083846463653296.vrm",
+ "vroid/6/1047097040802773676/1047097040802773676.vrm",
+ "vroid/6/1047737722019217686/1047737722019217686.vrm",
+ "vroid/6/1052445403178357426/1052445403178357426.vrm",
+ "vroid/6/1057727587374292386/1057727587374292386.vrm",
+ "vroid/6/1071140363648738466/1071140363648738466.vrm",
+ "vroid/6/1071236964245391206/1071236964245391206.vrm",
+ "vroid/6/1071418655935432286/1071418655935432286.vrm",
+ "vroid/6/1074272694087374236/1074272694087374236.vrm",
+ "vroid/6/10744637720326666/10744637720326666.vrm",
+ "vroid/6/1075299479700093996/1075299479700093996.vrm",
+ "vroid/6/1077016798992795486/1077016798992795486.vrm",
+ "vroid/6/1077538521728029216/1077538521728029216.vrm",
+ "vroid/6/1089137642922482436/1089137642922482436.vrm",
+ "vroid/6/1090880512254430236/1090880512254430236.vrm",
+ "vroid/6/1091063389393262396/1091063389393262396.vrm",
+ "vroid/6/109375421639299626/109375421639299626.vrm",
+ "vroid/6/1098612428588811006/1098612428588811006.vrm",
+ "vroid/6/1106825368522633906/1106825368522633906.vrm",
+ "vroid/6/1108553519446521066/1108553519446521066.vrm",
+ "vroid/6/1115463623117643246/1115463623117643246.vrm",
+ "vroid/6/1120461247482241426/1120461247482241426.vrm",
+ "vroid/6/1122990510369203406/1122990510369203406.vrm",
+ "vroid/6/1124968517867730606/1124968517867730606.vrm",
+ "vroid/6/1140262708212714286/1140262708212714286.vrm",
+ "vroid/6/1141614152376315676/1141614152376315676.vrm",
+ "vroid/6/1147311976714696196/1147311976714696196.vrm",
+ "vroid/6/114919545267320626/114919545267320626.vrm",
+ "vroid/6/1152318615369102306/1152318615369102306.vrm",
+ "vroid/6/1152924185221071976/1152924185221071976.vrm",
+ "vroid/6/1155011863173032806/1155011863173032806.vrm",
+ "vroid/6/1155623746019795156/1155623746019795156.vrm",
+ "vroid/6/1160783419817403606/1160783419817403606.vrm",
+ "vroid/6/1170763209544439876/1170763209544439876.vrm",
+ "vroid/6/1173659754092044506/1173659754092044506.vrm",
+ "vroid/6/1178295306591329616/1178295306591329616.vrm",
+ "vroid/6/119141849083286636/119141849083286636.vrm",
+ "vroid/6/1206545724687169806/1206545724687169806.vrm",
+ "vroid/6/1211428940362862906/1211428940362862906.vrm",
+ "vroid/6/1214597748435876356/1214597748435876356.vrm",
+ "vroid/6/1227925104914215646/1227925104914215646.vrm",
+ "vroid/6/1232283260520724446/1232283260520724446.vrm",
+ "vroid/6/1238677996913697246/1238677996913697246.vrm",
+ "vroid/6/1242910270656724866/1242910270656724866.vrm",
+ "vroid/6/1249391125095381106/1249391125095381106.vrm",
+ "vroid/6/1255917915447998426/1255917915447998426.vrm",
+ "vroid/6/1255983284197689846/1255983284197689846.vrm",
+ "vroid/6/1256261155069994096/1256261155069994096.vrm",
+ "vroid/6/1259123034343271726/1259123034343271726.vrm",
+ "vroid/6/1267436427722557796/1267436427722557796.vrm",
+ "vroid/6/1270939283279109116/1270939283279109116.vrm",
+ "vroid/6/1273025275582045636/1273025275582045636.vrm",
+ "vroid/6/1278253081515443036/1278253081515443036.vrm",
+ "vroid/6/1282083184332552466/1282083184332552466.vrm",
+ "vroid/6/1294572656063438846/1294572656063438846.vrm",
+ "vroid/6/1309626083712156016/1309626083712156016.vrm",
+ "vroid/6/1310899728796162586/1310899728796162586.vrm",
+ "vroid/6/1316469771857687736/1316469771857687736.vrm",
+ "vroid/6/1319650605665504536/1319650605665504536.vrm",
+ "vroid/6/132125511756580106/132125511756580106.vrm",
+ "vroid/6/132247343285110666/132247343285110666.vrm",
+ "vroid/6/1324915746917125316/1324915746917125316.vrm",
+ "vroid/6/1328764423148886826/1328764423148886826.vrm",
+ "vroid/6/1331016441610048216/1331016441610048216.vrm",
+ "vroid/6/1332802659194158726/1332802659194158726.vrm",
+ "vroid/6/1334412760342454336/1334412760342454336.vrm",
+ "vroid/6/1341337037707864016/1341337037707864016.vrm",
+ "vroid/6/1352469873513669546/1352469873513669546.vrm",
+ "vroid/6/1361074272944251596/1361074272944251596.vrm",
+ "vroid/6/1361313827230719986/1361313827230719986.vrm",
+ "vroid/6/1371872324752136566/1371872324752136566.vrm",
+ "vroid/6/1374591549707496566/1374591549707496566.vrm",
+ "vroid/6/1374591901512448146/1374591901512448146.vrm",
+ "vroid/6/1379457394879106336/1379457394879106336.vrm",
+ "vroid/6/1394569083778097496/1394569083778097496.vrm",
+ "vroid/6/1403387275242204196/1403387275242204196.vrm",
+ "vroid/6/1406192787693240506/1406192787693240506.vrm",
+ "vroid/6/1406626456356005546/1406626456356005546.vrm",
+ "vroid/6/140887941254692236/140887941254692236.vrm",
+ "vroid/6/1414479946623080426/1414479946623080426.vrm",
+ "vroid/6/1422160839465255066/1422160839465255066.vrm",
+ "vroid/6/1427770711283377446/1427770711283377446.vrm",
+ "vroid/6/1429244327569781186/1429244327569781186.vrm",
+ "vroid/6/1430240832593469446/1430240832593469446.vrm",
+ "vroid/6/1433487141043119496/1433487141043119496.vrm",
+ "vroid/6/1434478351037989816/1434478351037989816.vrm",
+ "vroid/6/143590580611543446/143590580611543446.vrm",
+ "vroid/6/143632378543288186/143632378543288186.vrm",
+ "vroid/6/1436377050953662526/1436377050953662526.vrm",
+ "vroid/6/1442467344757472686/1442467344757472686.vrm",
+ "vroid/6/1448137627399635476/1448137627399635476.vrm",
+ "vroid/6/1454409613918716196/1454409613918716196.vrm",
+ "vroid/6/1456392145706034236/1456392145706034236.vrm",
+ "vroid/6/1457740408426242456/1457740408426242456.vrm",
+ "vroid/6/1459685989178364856/1459685989178364856.vrm",
+ "vroid/6/1467643580427806346/1467643580427806346.vrm",
+ "vroid/6/14689678050475196/14689678050475196.vrm",
+ "vroid/6/1470796716115975746/1470796716115975746.vrm",
+ "vroid/6/1485440925721074446/1485440925721074446.vrm",
+ "vroid/6/1488091001178428916/1488091001178428916.vrm",
+ "vroid/6/1507754803652223686/1507754803652223686.vrm",
+ "vroid/6/1509064826205412696/1509064826205412696.vrm",
+ "vroid/6/1518349900246685756/1518349900246685756.vrm",
+ "vroid/6/1522335350928404686/1522335350928404686.vrm",
+ "vroid/6/1528436150962474626/1528436150962474626.vrm",
+ "vroid/6/1531806457586176246/1531806457586176246.vrm",
+ "vroid/6/1555834798980312156/1555834798980312156.vrm",
+ "vroid/6/1561265850291947906/1561265850291947906.vrm",
+ "vroid/6/1571153729315444716/1571153729315444716.vrm",
+ "vroid/6/157116176389287296/157116176389287296.vrm",
+ "vroid/6/1572167581430474256/1572167581430474256.vrm",
+ "vroid/6/157443985502498626/157443985502498626.vrm",
+ "vroid/6/1579117838854218136/1579117838854218136.vrm",
+ "vroid/6/1583577535824123646/1583577535824123646.vrm",
+ "vroid/6/1587676473706037786/1587676473706037786.vrm",
+ "vroid/6/1601334083053563356/1601334083053563356.vrm",
+ "vroid/6/1601883932862213556/1601883932862213556.vrm",
+ "vroid/6/1603821616363220186/1603821616363220186.vrm",
+ "vroid/6/1606148909371871476/1606148909371871476.vrm",
+ "vroid/6/1609423566635633906/1609423566635633906.vrm",
+ "vroid/6/1613182395139762386/1613182395139762386.vrm",
+ "vroid/6/1619581132441275286/1619581132441275286.vrm",
+ "vroid/6/1619727771132196/1619727771132196.vrm",
+ "vroid/6/1621469686012348696/1621469686012348696.vrm",
+ "vroid/6/1647234603582341626/1647234603582341626.vrm",
+ "vroid/6/164870485667140766/164870485667140766.vrm",
+ "vroid/6/165086742457007156/165086742457007156.vrm",
+ "vroid/6/167512039184582276/167512039184582276.vrm",
+ "vroid/6/16762222989681526/16762222989681526.vrm",
+ "vroid/6/1677199200603046356/1677199200603046356.vrm",
+ "vroid/6/1677764694569818336/1677764694569818336.vrm",
+ "vroid/6/1685048464317247196/1685048464317247196.vrm",
+ "vroid/6/1688400861675344436/1688400861675344436.vrm",
+ "vroid/6/1696211949715260356/1696211949715260356.vrm",
+ "vroid/6/1705329668335242796/1705329668335242796.vrm",
+ "vroid/6/170693047778103976/170693047778103976.vrm",
+ "vroid/6/1710986234242252256/1710986234242252256.vrm",
+ "vroid/6/1714141237582573626/1714141237582573626.vrm",
+ "vroid/6/1734045398297044056/1734045398297044056.vrm",
+ "vroid/6/1734849315512407016/1734849315512407016.vrm",
+ "vroid/6/1744959275088805896/1744959275088805896.vrm",
+ "vroid/6/1766294624634476436/1766294624634476436.vrm",
+ "vroid/6/1769376076004858936/1769376076004858936.vrm",
+ "vroid/6/1770969254178168946/1770969254178168946.vrm",
+ "vroid/6/1772119809576707606/1772119809576707606.vrm",
+ "vroid/6/1776828297949291906/1776828297949291906.vrm",
+ "vroid/6/1789374794600248896/1789374794600248896.vrm",
+ "vroid/6/1796089602764175936/1796089602764175936.vrm",
+ "vroid/6/1796630085369687526/1796630085369687526.vrm",
+ "vroid/6/1797018019315524786/1797018019315524786.vrm",
+ "vroid/6/1797166613779120146/1797166613779120146.vrm",
+ "vroid/6/1797193551406740316/1797193551406740316.vrm",
+ "vroid/6/1798289413809586666/1798289413809586666.vrm",
+ "vroid/6/1816681663879147866/1816681663879147866.vrm",
+ "vroid/6/1838313086045286666/1838313086045286666.vrm",
+ "vroid/6/1846287398346306336/1846287398346306336.vrm",
+ "vroid/6/184628839464190096/184628839464190096.vrm",
+ "vroid/6/1847107523763299766/1847107523763299766.vrm",
+ "vroid/6/1850034211886742736/1850034211886742736.vrm",
+ "vroid/6/1858893671989783996/1858893671989783996.vrm",
+ "vroid/6/185921207412044546/185921207412044546.vrm",
+ "vroid/6/1866340563428877196/1866340563428877196.vrm",
+ "vroid/6/1867690807119275066/1867690807119275066.vrm",
+ "vroid/6/1875216831932238226/1875216831932238226.vrm",
+ "vroid/6/1875820059731844926/1875820059731844926.vrm",
+ "vroid/6/188270481661468686/188270481661468686.vrm",
+ "vroid/6/1894718421104992956/1894718421104992956.vrm",
+ "vroid/6/1894832808248941886/1894832808248941886.vrm",
+ "vroid/6/1895189525758008106/1895189525758008106.vrm",
+ "vroid/6/189749795989114196/189749795989114196.vrm",
+ "vroid/6/1902023197563859616/1902023197563859616.vrm",
+ "vroid/6/1904772474549978156/1904772474549978156.vrm",
+ "vroid/6/1905951965074915616/1905951965074915616.vrm",
+ "vroid/6/1906702211563512826/1906702211563512826.vrm",
+ "vroid/6/1911168464910564416/1911168464910564416.vrm",
+ "vroid/6/1917194022685051986/1917194022685051986.vrm",
+ "vroid/6/1917571456559803126/1917571456559803126.vrm",
+ "vroid/6/1918688046086319576/1918688046086319576.vrm",
+ "vroid/6/1929328829708697756/1929328829708697756.vrm",
+ "vroid/6/1938275358826866296/1938275358826866296.vrm",
+ "vroid/6/1943260313257869996/1943260313257869996.vrm",
+ "vroid/6/1955859102490107556/1955859102490107556.vrm",
+ "vroid/6/1957686632285203576/1957686632285203576.vrm",
+ "vroid/6/1968631680102482306/1968631680102482306.vrm",
+ "vroid/6/1971886571297531826/1971886571297531826.vrm",
+ "vroid/6/1980193658215847166/1980193658215847166.vrm",
+ "vroid/6/198656243734135006/198656243734135006.vrm",
+ "vroid/6/2007857275381057756/2007857275381057756.vrm",
+ "vroid/6/2012584823514838286/2012584823514838286.vrm",
+ "vroid/6/2018401352224058176/2018401352224058176.vrm",
+ "vroid/6/2030800248052642676/2030800248052642676.vrm",
+ "vroid/6/2051467543140615396/2051467543140615396.vrm",
+ "vroid/6/2056434294011058006/2056434294011058006.vrm",
+ "vroid/6/2056531928333177066/2056531928333177066.vrm",
+ "vroid/6/2056599967932504536/2056599967932504536.vrm",
+ "vroid/6/206612489569069686/206612489569069686.vrm",
+ "vroid/6/2066575287576899836/2066575287576899836.vrm",
+ "vroid/6/2069622600969640736/2069622600969640736.vrm",
+ "vroid/6/2071879600195190356/2071879600195190356.vrm",
+ "vroid/6/2080575316788785216/2080575316788785216.vrm",
+ "vroid/6/2089291633934109226/2089291633934109226.vrm",
+ "vroid/6/2092402915128447866/2092402915128447866.vrm",
+ "vroid/6/2096491209016894776/2096491209016894776.vrm",
+ "vroid/6/2110188584910564806/2110188584910564806.vrm",
+ "vroid/6/2115822121303717686/2115822121303717686.vrm",
+ "vroid/6/2118314237699492706/2118314237699492706.vrm",
+ "vroid/6/2119905369042970416/2119905369042970416.vrm",
+ "vroid/6/2126971527351581906/2126971527351581906.vrm",
+ "vroid/6/2130164126221604586/2130164126221604586.vrm",
+ "vroid/6/2140219108748972166/2140219108748972166.vrm",
+ "vroid/6/2143671061859109706/2143671061859109706.vrm",
+ "vroid/6/2146535668540822406/2146535668540822406.vrm",
+ "vroid/6/2151301141010438766/2151301141010438766.vrm",
+ "vroid/6/2162052262801946516/2162052262801946516.vrm",
+ "vroid/6/2162084197664655026/2162084197664655026.vrm",
+ "vroid/6/2164383448977187446/2164383448977187446.vrm",
+ "vroid/6/2167542132971183496/2167542132971183496.vrm",
+ "vroid/6/2174478955555075206/2174478955555075206.vrm",
+ "vroid/6/2174479970970095776/2174479970970095776.vrm",
+ "vroid/6/2177834594616273846/2177834594616273846.vrm",
+ "vroid/6/21826831714383296/21826831714383296.vrm",
+ "vroid/6/2185221695379511526/2185221695379511526.vrm",
+ "vroid/6/2202648087060415116/2202648087060415116.vrm",
+ "vroid/6/2204652674039884456/2204652674039884456.vrm",
+ "vroid/6/2215831843157804386/2215831843157804386.vrm",
+ "vroid/6/2217377353338642716/2217377353338642716.vrm",
+ "vroid/6/2230291357709916786/2230291357709916786.vrm",
+ "vroid/6/2233468989436982896/2233468989436982896.vrm",
+ "vroid/6/2237419164356265506/2237419164356265506.vrm",
+ "vroid/6/2240724805159581876/2240724805159581876.vrm",
+ "vroid/6/2245767620298579616/2245767620298579616.vrm",
+ "vroid/6/2250329674270499476/2250329674270499476.vrm",
+ "vroid/6/2257092931053603636/2257092931053603636.vrm",
+ "vroid/6/2261505926203110716/2261505926203110716.vrm",
+ "vroid/6/2263602286248079036/2263602286248079036.vrm",
+ "vroid/6/2263894017437142966/2263894017437142966.vrm",
+ "vroid/6/2264333571824810906/2264333571824810906.vrm",
+ "vroid/6/2265053280747253236/2265053280747253236.vrm",
+ "vroid/6/2270010410433478366/2270010410433478366.vrm",
+ "vroid/6/2270289459612006996/2270289459612006996.vrm",
+ "vroid/6/2277433387841182246/2277433387841182246.vrm",
+ "vroid/6/2283428619473742266/2283428619473742266.vrm",
+ "vroid/6/2284701144069430956/2284701144069430956.vrm",
+ "vroid/6/2301929386045394116/2301929386045394116.vrm",
+ "vroid/6/2314577722423349546/2314577722423349546.vrm",
+ "vroid/6/2317985355780981436/2317985355780981436.vrm",
+ "vroid/6/2322393006208016096/2322393006208016096.vrm",
+ "vroid/6/2327209970266557066/2327209970266557066.vrm",
+ "vroid/6/2334112060819294286/2334112060819294286.vrm",
+ "vroid/6/233915536622547566/233915536622547566.vrm",
+ "vroid/6/2352158623568928006/2352158623568928006.vrm",
+ "vroid/6/2352608430028143946/2352608430028143946.vrm",
+ "vroid/6/2359248447840976906/2359248447840976906.vrm",
+ "vroid/6/2365656634184303736/2365656634184303736.vrm",
+ "vroid/6/2375572921041392286/2375572921041392286.vrm",
+ "vroid/6/2378018192190825576/2378018192190825576.vrm",
+ "vroid/6/2382588035265562646/2382588035265562646.vrm",
+ "vroid/6/2383772126877023906/2383772126877023906.vrm",
+ "vroid/6/2386810590296817916/2386810590296817916.vrm",
+ "vroid/6/2401961446068185926/2401961446068185926.vrm",
+ "vroid/6/2402509690571183316/2402509690571183316.vrm",
+ "vroid/6/2403931910650553566/2403931910650553566.vrm",
+ "vroid/6/240689912767030046/240689912767030046.vrm",
+ "vroid/6/241455493440226516/241455493440226516.vrm",
+ "vroid/6/24149529213141866/24149529213141866.vrm",
+ "vroid/6/2423122048958302866/2423122048958302866.vrm",
+ "vroid/6/242371603155156416/242371603155156416.vrm",
+ "vroid/6/2425080442981981276/2425080442981981276.vrm",
+ "vroid/6/2428090947414281566/2428090947414281566.vrm",
+ "vroid/6/2440047399494716156/2440047399494716156.vrm",
+ "vroid/6/2452017381919292466/2452017381919292466.vrm",
+ "vroid/6/2459858633554565836/2459858633554565836.vrm",
+ "vroid/6/2460204596706963286/2460204596706963286.vrm",
+ "vroid/6/2465592345156701756/2465592345156701756.vrm",
+ "vroid/6/2469968267997883416/2469968267997883416.vrm",
+ "vroid/6/2474422536847877026/2474422536847877026.vrm",
+ "vroid/6/2485307982678882056/2485307982678882056.vrm",
+ "vroid/6/2499363106865881866/2499363106865881866.vrm",
+ "vroid/6/2507077422150775626/2507077422150775626.vrm",
+ "vroid/6/25268213934488176/25268213934488176.vrm",
+ "vroid/6/2527107308383594196/2527107308383594196.vrm",
+ "vroid/6/2530784329691948636/2530784329691948636.vrm",
+ "vroid/6/2538227379619963996/2538227379619963996.vrm",
+ "vroid/6/2552734213960573306/2552734213960573306.vrm",
+ "vroid/6/2552817628858553206/2552817628858553206.vrm",
+ "vroid/6/2556511087914912656/2556511087914912656.vrm",
+ "vroid/6/2559688824771243036/2559688824771243036.vrm",
+ "vroid/6/2562246756827533656/2562246756827533656.vrm",
+ "vroid/6/2568484313879396136/2568484313879396136.vrm",
+ "vroid/6/2581852152121964046/2581852152121964046.vrm",
+ "vroid/6/2587463152970642556/2587463152970642556.vrm",
+ "vroid/6/2594677209000005796/2594677209000005796.vrm",
+ "vroid/6/2604303000831561086/2604303000831561086.vrm",
+ "vroid/6/2608339869906122356/2608339869906122356.vrm",
+ "vroid/6/26263966506628506/26263966506628506.vrm",
+ "vroid/6/2631889239438017206/2631889239438017206.vrm",
+ "vroid/6/2680722615791179806/2680722615791179806.vrm",
+ "vroid/6/2682023633440717966/2682023633440717966.vrm",
+ "vroid/6/2691726425964381216/2691726425964381216.vrm",
+ "vroid/6/2703069205902810656/2703069205902810656.vrm",
+ "vroid/6/2706848768261250596/2706848768261250596.vrm",
+ "vroid/6/2719907109263980656/2719907109263980656.vrm",
+ "vroid/6/2721726562906295256/2721726562906295256.vrm",
+ "vroid/6/2722512026281185966/2722512026281185966.vrm",
+ "vroid/6/2727493829770006436/2727493829770006436.vrm",
+ "vroid/6/2729080964393409736/2729080964393409736.vrm",
+ "vroid/6/2732773143343578816/2732773143343578816.vrm",
+ "vroid/6/2734357366768942676/2734357366768942676.vrm",
+ "vroid/6/2743878906776899886/2743878906776899886.vrm",
+ "vroid/6/2747713364018190096/2747713364018190096.vrm",
+ "vroid/6/2754637872959534406/2754637872959534406.vrm",
+ "vroid/6/2761492786021351496/2761492786021351496.vrm",
+ "vroid/6/2764401345914015096/2764401345914015096.vrm",
+ "vroid/6/2775153294100565646/2775153294100565646.vrm",
+ "vroid/6/2775703195622881576/2775703195622881576.vrm",
+ "vroid/6/2782525133745044746/2782525133745044746.vrm",
+ "vroid/6/2784629076637749556/2784629076637749556.vrm",
+ "vroid/6/2786957741881613136/2786957741881613136.vrm",
+ "vroid/6/2787298327916993306/2787298327916993306.vrm",
+ "vroid/6/2788883404393511556/2788883404393511556.vrm",
+ "vroid/6/2791598538316852316/2791598538316852316.vrm",
+ "vroid/6/2795582266426113636/2795582266426113636.vrm",
+ "vroid/6/2798265305047434756/2798265305047434756.vrm",
+ "vroid/6/280050584463676846/280050584463676846.vrm",
+ "vroid/6/2801077619709639036/2801077619709639036.vrm",
+ "vroid/6/2803692313695012616/2803692313695012616.vrm",
+ "vroid/6/281241384238361816/281241384238361816.vrm",
+ "vroid/6/2812771624056424486/2812771624056424486.vrm",
+ "vroid/6/2820402645093840636/2820402645093840636.vrm",
+ "vroid/6/2841807355954606646/2841807355954606646.vrm",
+ "vroid/6/2842649076459145016/2842649076459145016.vrm",
+ "vroid/6/2852275500459328246/2852275500459328246.vrm",
+ "vroid/6/2864159675102903636/2864159675102903636.vrm",
+ "vroid/6/2864271951901824406/2864271951901824406.vrm",
+ "vroid/6/2865879392668566336/2865879392668566336.vrm",
+ "vroid/6/2868317683218468156/2868317683218468156.vrm",
+ "vroid/6/2870830472618867246/2870830472618867246.vrm",
+ "vroid/6/2873425457065687886/2873425457065687886.vrm",
+ "vroid/6/2878494605141060026/2878494605141060026.vrm",
+ "vroid/6/2880914847130376496/2880914847130376496.vrm",
+ "vroid/6/2884354689824751726/2884354689824751726.vrm",
+ "vroid/6/2889438391774379426/2889438391774379426.vrm",
+ "vroid/6/2899988609449326616/2899988609449326616.vrm",
+ "vroid/6/2903921736436482156/2903921736436482156.vrm",
+ "vroid/6/2907215433553699166/2907215433553699166.vrm",
+ "vroid/6/2912496408357913056/2912496408357913056.vrm",
+ "vroid/6/2926759784878283666/2926759784878283666.vrm",
+ "vroid/6/2942890196081285976/2942890196081285976.vrm",
+ "vroid/6/2948091384265393276/2948091384265393276.vrm",
+ "vroid/6/2952445062553248366/2952445062553248366.vrm",
+ "vroid/6/2957554937314433856/2957554937314433856.vrm",
+ "vroid/6/2961766860896757826/2961766860896757826.vrm",
+ "vroid/6/2964402604939468116/2964402604939468116.vrm",
+ "vroid/6/2976701572771824566/2976701572771824566.vrm",
+ "vroid/6/298390581661841156/298390581661841156.vrm",
+ "vroid/6/2984932497670790766/2984932497670790766.vrm",
+ "vroid/6/29850514377114056/29850514377114056.vrm",
+ "vroid/6/3007141350068721946/3007141350068721946.vrm",
+ "vroid/6/301260248718612636/301260248718612636.vrm",
+ "vroid/6/3012844598263053936/3012844598263053936.vrm",
+ "vroid/6/3019032206720320136/3019032206720320136.vrm",
+ "vroid/6/3021385391194422876/3021385391194422876.vrm",
+ "vroid/6/3028085606242606936/3028085606242606936.vrm",
+ "vroid/6/303618934151875296/303618934151875296.vrm",
+ "vroid/6/3061989948377825556/3061989948377825556.vrm",
+ "vroid/6/3063237634044846306/3063237634044846306.vrm",
+ "vroid/6/3064238173883354466/3064238173883354466.vrm",
+ "vroid/6/3077392948423452176/3077392948423452176.vrm",
+ "vroid/6/3077679757647692766/3077679757647692766.vrm",
+ "vroid/6/3078659758600513106/3078659758600513106.vrm",
+ "vroid/6/3084734816495313366/3084734816495313366.vrm",
+ "vroid/6/3087576614468563586/3087576614468563586.vrm",
+ "vroid/6/3093605025709205466/3093605025709205466.vrm",
+ "vroid/6/3100105593445208266/3100105593445208266.vrm",
+ "vroid/6/3111910516783930686/3111910516783930686.vrm",
+ "vroid/6/3114013802125185076/3114013802125185076.vrm",
+ "vroid/6/311727813658093946/311727813658093946.vrm",
+ "vroid/6/3141521312554708886/3141521312554708886.vrm",
+ "vroid/6/3143645857460810566/3143645857460810566.vrm",
+ "vroid/6/3146106149707855306/3146106149707855306.vrm",
+ "vroid/6/3159016132753271156/3159016132753271156.vrm",
+ "vroid/6/3181907783806246696/3181907783806246696.vrm",
+ "vroid/6/3183142320410259756/3183142320410259756.vrm",
+ "vroid/6/3183681741837344496/3183681741837344496.vrm",
+ "vroid/6/3184551087108569166/3184551087108569166.vrm",
+ "vroid/6/3207984210119897926/3207984210119897926.vrm",
+ "vroid/6/3208382687804696816/3208382687804696816.vrm",
+ "vroid/6/3215534043074614806/3215534043074614806.vrm",
+ "vroid/6/3220520921464419716/3220520921464419716.vrm",
+ "vroid/6/3225859174039254796/3225859174039254796.vrm",
+ "vroid/6/3232304059021096026/3232304059021096026.vrm",
+ "vroid/6/3245623509351827946/3245623509351827946.vrm",
+ "vroid/6/3246798830071349346/3246798830071349346.vrm",
+ "vroid/6/3255365433484230326/3255365433484230326.vrm",
+ "vroid/6/3266579397748095446/3266579397748095446.vrm",
+ "vroid/6/3268065270227669266/3268065270227669266.vrm",
+ "vroid/6/3276928173637401246/3276928173637401246.vrm",
+ "vroid/6/3307811311674548886/3307811311674548886.vrm",
+ "vroid/6/3320959868934455646/3320959868934455646.vrm",
+ "vroid/6/3329373307008538536/3329373307008538536.vrm",
+ "vroid/6/3338381901115761506/3338381901115761506.vrm",
+ "vroid/6/3350535402021563546/3350535402021563546.vrm",
+ "vroid/6/3351931332832305626/3351931332832305626.vrm",
+ "vroid/6/3357827868785963986/3357827868785963986.vrm",
+ "vroid/6/3363107345103849616/3363107345103849616.vrm",
+ "vroid/6/3365919421896007186/3365919421896007186.vrm",
+ "vroid/6/3366174881694493176/3366174881694493176.vrm",
+ "vroid/6/337097484431827776/337097484431827776.vrm",
+ "vroid/6/337749794093218266/337749794093218266.vrm",
+ "vroid/6/3378233792227722616/3378233792227722616.vrm",
+ "vroid/6/3387189397162304796/3387189397162304796.vrm",
+ "vroid/6/33878087036523256/33878087036523256.vrm",
+ "vroid/6/3394441140945117586/3394441140945117586.vrm",
+ "vroid/6/34007648270848436/34007648270848436.vrm",
+ "vroid/6/3401553006779611336/3401553006779611336.vrm",
+ "vroid/6/3402089656895182196/3402089656895182196.vrm",
+ "vroid/6/3402432534578691936/3402432534578691936.vrm",
+ "vroid/6/3405962078601993086/3405962078601993086.vrm",
+ "vroid/6/342095809070349346/342095809070349346.vrm",
+ "vroid/6/3423354575712853316/3423354575712853316.vrm",
+ "vroid/6/3423359454743746466/3423359454743746466.vrm",
+ "vroid/6/3426416987514552176/3426416987514552176.vrm",
+ "vroid/6/3432617700816226766/3432617700816226766.vrm",
+ "vroid/6/3439971856177076856/3439971856177076856.vrm",
+ "vroid/6/3445354537696726686/3445354537696726686.vrm",
+ "vroid/6/3475371557909560956/3475371557909560956.vrm",
+ "vroid/6/3480439687644690976/3480439687644690976.vrm",
+ "vroid/6/348054402631750846/348054402631750846.vrm",
+ "vroid/6/3485215517924559936/3485215517924559936.vrm",
+ "vroid/6/3493377998857535286/3493377998857535286.vrm",
+ "vroid/6/3503738604309767726/3503738604309767726.vrm",
+ "vroid/6/3505494634124669816/3505494634124669816.vrm",
+ "vroid/6/3511666369798054786/3511666369798054786.vrm",
+ "vroid/6/351355053459572696/351355053459572696.vrm",
+ "vroid/6/3537568739418011506/3537568739418011506.vrm",
+ "vroid/6/3555672592545044546/3555672592545044546.vrm",
+ "vroid/6/3588344949574235666/3588344949574235666.vrm",
+ "vroid/6/3591413415216083676/3591413415216083676.vrm",
+ "vroid/6/359754965149295976/359754965149295976.vrm",
+ "vroid/6/3608261463719004356/3608261463719004356.vrm",
+ "vroid/6/3614567971831984596/3614567971831984596.vrm",
+ "vroid/6/3622285036513910266/3622285036513910266.vrm",
+ "vroid/6/3624003934201126836/3624003934201126836.vrm",
+ "vroid/6/3626921176076598446/3626921176076598446.vrm",
+ "vroid/6/3639274277177286586/3639274277177286586.vrm",
+ "vroid/6/3647870255840024606/3647870255840024606.vrm",
+ "vroid/6/3651133555043553966/3651133555043553966.vrm",
+ "vroid/6/3651232215180350066/3651232215180350066.vrm",
+ "vroid/6/3652538163843340826/3652538163843340826.vrm",
+ "vroid/6/3653916571765917656/3653916571765917656.vrm",
+ "vroid/6/3660955677983133076/3660955677983133076.vrm",
+ "vroid/6/3661763232827178996/3661763232827178996.vrm",
+ "vroid/6/3662617853633260336/3662617853633260336.vrm",
+ "vroid/6/3685086748072790426/3685086748072790426.vrm",
+ "vroid/6/3685293734899128636/3685293734899128636.vrm",
+ "vroid/6/368785483073033246/368785483073033246.vrm",
+ "vroid/6/3694348347874932606/3694348347874932606.vrm",
+ "vroid/6/3696026799347124846/3696026799347124846.vrm",
+ "vroid/6/3696596825729050436/3696596825729050436.vrm",
+ "vroid/6/3697394808599374636/3697394808599374636.vrm",
+ "vroid/6/3697436894026057886/3697436894026057886.vrm",
+ "vroid/6/3699034363763347666/3699034363763347666.vrm",
+ "vroid/6/3700101501392800576/3700101501392800576.vrm",
+ "vroid/6/370379529098331726/370379529098331726.vrm",
+ "vroid/6/3704872366837478956/3704872366837478956.vrm",
+ "vroid/6/3709809206262982446/3709809206262982446.vrm",
+ "vroid/6/3714500124964748866/3714500124964748866.vrm",
+ "vroid/6/3730592115841390116/3730592115841390116.vrm",
+ "vroid/6/3732506013187379666/3732506013187379666.vrm",
+ "vroid/6/3735966752656008036/3735966752656008036.vrm",
+ "vroid/6/3751647365778694216/3751647365778694216.vrm",
+ "vroid/6/3759590635384705026/3759590635384705026.vrm",
+ "vroid/6/3765963516852873916/3765963516852873916.vrm",
+ "vroid/6/3766353507642040246/3766353507642040246.vrm",
+ "vroid/6/3766435235535895166/3766435235535895166.vrm",
+ "vroid/6/3766577164998336116/3766577164998336116.vrm",
+ "vroid/6/3775679874536445976/3775679874536445976.vrm",
+ "vroid/6/3779113023580722296/3779113023580722296.vrm",
+ "vroid/6/3785221552436802106/3785221552436802106.vrm",
+ "vroid/6/379091422413369016/379091422413369016.vrm",
+ "vroid/6/3808940577700965946/3808940577700965946.vrm",
+ "vroid/6/3817929176432636046/3817929176432636046.vrm",
+ "vroid/6/3822234370301563756/3822234370301563756.vrm",
+ "vroid/6/3825244108707256086/3825244108707256086.vrm",
+ "vroid/6/3833568554217287656/3833568554217287656.vrm",
+ "vroid/6/3834769078995452246/3834769078995452246.vrm",
+ "vroid/6/3842150241576777346/3842150241576777346.vrm",
+ "vroid/6/3847273436811209566/3847273436811209566.vrm",
+ "vroid/6/3849347203183060906/3849347203183060906.vrm",
+ "vroid/6/3855176539314479026/3855176539314479026.vrm",
+ "vroid/6/3859766820123022036/3859766820123022036.vrm",
+ "vroid/6/3860432644504912716/3860432644504912716.vrm",
+ "vroid/6/3861832267654628946/3861832267654628946.vrm",
+ "vroid/6/3863248098608064796/3863248098608064796.vrm",
+ "vroid/6/3875557725906455436/3875557725906455436.vrm",
+ "vroid/6/3876093696181078996/3876093696181078996.vrm",
+ "vroid/6/3876442191714923996/3876442191714923996.vrm",
+ "vroid/6/3890389409394450236/3890389409394450236.vrm",
+ "vroid/6/3901071945325889526/3901071945325889526.vrm",
+ "vroid/6/3902640679831971206/3902640679831971206.vrm",
+ "vroid/6/3904266484095917636/3904266484095917636.vrm",
+ "vroid/6/3908554432380034446/3908554432380034446.vrm",
+ "vroid/6/3913952589481824116/3913952589481824116.vrm",
+ "vroid/6/3914189015898663186/3914189015898663186.vrm",
+ "vroid/6/3946167236517891666/3946167236517891666.vrm",
+ "vroid/6/3965644804505691686/3965644804505691686.vrm",
+ "vroid/6/3967559449241678696/3967559449241678696.vrm",
+ "vroid/6/3969608381562128036/3969608381562128036.vrm",
+ "vroid/6/3974821166465991796/3974821166465991796.vrm",
+ "vroid/6/3975423402214596946/3975423402214596946.vrm",
+ "vroid/6/3982234919292026916/3982234919292026916.vrm",
+ "vroid/6/39882451893315076/39882451893315076.vrm",
+ "vroid/6/3994365652095242946/3994365652095242946.vrm",
+ "vroid/6/4007539300648430376/4007539300648430376.vrm",
+ "vroid/6/4010164313337948116/4010164313337948116.vrm",
+ "vroid/6/4014068062496797026/4014068062496797026.vrm",
+ "vroid/6/4022521510507820546/4022521510507820546.vrm",
+ "vroid/6/4023461282002153916/4023461282002153916.vrm",
+ "vroid/6/4026614935045472846/4026614935045472846.vrm",
+ "vroid/6/4031323286109175906/4031323286109175906.vrm",
+ "vroid/6/4041009011778592886/4041009011778592886.vrm",
+ "vroid/6/4050970369528954996/4050970369528954996.vrm",
+ "vroid/6/4052134127002785806/4052134127002785806.vrm",
+ "vroid/6/4066838911086423396/4066838911086423396.vrm",
+ "vroid/6/4110820564476106136/4110820564476106136.vrm",
+ "vroid/6/4116864908259275696/4116864908259275696.vrm",
+ "vroid/6/4121135698521219216/4121135698521219216.vrm",
+ "vroid/6/4130911766934300406/4130911766934300406.vrm",
+ "vroid/6/4131427361739967886/4131427361739967886.vrm",
+ "vroid/6/4135359545282398546/4135359545282398546.vrm",
+ "vroid/6/4138773827054905036/4138773827054905036.vrm",
+ "vroid/6/4141100167873444696/4141100167873444696.vrm",
+ "vroid/6/4152239607101875816/4152239607101875816.vrm",
+ "vroid/6/4153915045854434416/4153915045854434416.vrm",
+ "vroid/6/4163305077242275596/4163305077242275596.vrm",
+ "vroid/6/4168951852016674816/4168951852016674816.vrm",
+ "vroid/6/4172625736474347976/4172625736474347976.vrm",
+ "vroid/6/4173090343132444986/4173090343132444986.vrm",
+ "vroid/6/4181209914436403756/4181209914436403756.vrm",
+ "vroid/6/4183515887346955776/4183515887346955776.vrm",
+ "vroid/6/4184466857926566516/4184466857926566516.vrm",
+ "vroid/6/4186588903831312256/4186588903831312256.vrm",
+ "vroid/6/4193892742227932766/4193892742227932766.vrm",
+ "vroid/6/4201556204095262406/4201556204095262406.vrm",
+ "vroid/6/4201886104088018596/4201886104088018596.vrm",
+ "vroid/6/4202797501294253316/4202797501294253316.vrm",
+ "vroid/6/421186085797790036/421186085797790036.vrm",
+ "vroid/6/4214510895196619916/4214510895196619916.vrm",
+ "vroid/6/4220417701634851946/4220417701634851946.vrm",
+ "vroid/6/422516858365252446/422516858365252446.vrm",
+ "vroid/6/4227090108143291196/4227090108143291196.vrm",
+ "vroid/6/4227327970096798056/4227327970096798056.vrm",
+ "vroid/6/4229482759826764566/4229482759826764566.vrm",
+ "vroid/6/4236207734960122946/4236207734960122946.vrm",
+ "vroid/6/42429505853474466/42429505853474466.vrm",
+ "vroid/6/4248923061897066066/4248923061897066066.vrm",
+ "vroid/6/4249199382464924246/4249199382464924246.vrm",
+ "vroid/6/4264915263998055706/4264915263998055706.vrm",
+ "vroid/6/4265777835770452446/4265777835770452446.vrm",
+ "vroid/6/4271005433842188746/4271005433842188746.vrm",
+ "vroid/6/4271922055407885056/4271922055407885056.vrm",
+ "vroid/6/428598423589358046/428598423589358046.vrm",
+ "vroid/6/4292915581036028926/4292915581036028926.vrm",
+ "vroid/6/4295793528971835626/4295793528971835626.vrm",
+ "vroid/6/4304249824336440066/4304249824336440066.vrm",
+ "vroid/6/43101297816826626/43101297816826626.vrm",
+ "vroid/6/4328644808163675356/4328644808163675356.vrm",
+ "vroid/6/4332399612469804516/4332399612469804516.vrm",
+ "vroid/6/4332409698316964356/4332409698316964356.vrm",
+ "vroid/6/4332453674907917736/4332453674907917736.vrm",
+ "vroid/6/4332823773099052766/4332823773099052766.vrm",
+ "vroid/6/4356019403786899426/4356019403786899426.vrm",
+ "vroid/6/4356460169263534546/4356460169263534546.vrm",
+ "vroid/6/4360968344422589056/4360968344422589056.vrm",
+ "vroid/6/4366720395204570536/4366720395204570536.vrm",
+ "vroid/6/4376695424868811466/4376695424868811466.vrm",
+ "vroid/6/4394588613931231606/4394588613931231606.vrm",
+ "vroid/6/4402692507463800736/4402692507463800736.vrm",
+ "vroid/6/4405333618624831226/4405333618624831226.vrm",
+ "vroid/6/4408975108973295846/4408975108973295846.vrm",
+ "vroid/6/4441009560416586336/4441009560416586336.vrm",
+ "vroid/6/4442502679192873556/4442502679192873556.vrm",
+ "vroid/6/4451042476919442106/4451042476919442106.vrm",
+ "vroid/6/4452327144281692676/4452327144281692676.vrm",
+ "vroid/6/4456233028156184596/4456233028156184596.vrm",
+ "vroid/6/4459020658655642726/4459020658655642726.vrm",
+ "vroid/6/4463336293551436786/4463336293551436786.vrm",
+ "vroid/6/4463774282279540756/4463774282279540756.vrm",
+ "vroid/6/4467181045067221266/4467181045067221266.vrm",
+ "vroid/6/4468064246693787126/4468064246693787126.vrm",
+ "vroid/6/4476097035800555346/4476097035800555346.vrm",
+ "vroid/6/4484608095461131186/4484608095461131186.vrm",
+ "vroid/6/4485411316337033116/4485411316337033116.vrm",
+ "vroid/6/4488905162705238896/4488905162705238896.vrm",
+ "vroid/6/4500184863497198436/4500184863497198436.vrm",
+ "vroid/6/4507412002926188166/4507412002926188166.vrm",
+ "vroid/6/450919967217141216/450919967217141216.vrm",
+ "vroid/6/4509294918138611236/4509294918138611236.vrm",
+ "vroid/6/4513252687101535866/4513252687101535866.vrm",
+ "vroid/6/4524241490148960186/4524241490148960186.vrm",
+ "vroid/6/4538377916758045996/4538377916758045996.vrm",
+ "vroid/6/455118397986831856/455118397986831856.vrm",
+ "vroid/6/4551778916214753376/4551778916214753376.vrm",
+ "vroid/6/455278535750640176/455278535750640176.vrm",
+ "vroid/6/4554557805487450706/4554557805487450706.vrm",
+ "vroid/6/4556123554445103796/4556123554445103796.vrm",
+ "vroid/6/4561658199146546106/4561658199146546106.vrm",
+ "vroid/6/456384370934383216/456384370934383216.vrm",
+ "vroid/6/4570137607951072826/4570137607951072826.vrm",
+ "vroid/6/4573324042483505146/4573324042483505146.vrm",
+ "vroid/6/4577392525198344426/4577392525198344426.vrm",
+ "vroid/6/4588914364849097216/4588914364849097216.vrm",
+ "vroid/6/4592969624485808006/4592969624485808006.vrm",
+ "vroid/6/4593615099879103386/4593615099879103386.vrm",
+ "vroid/6/4619695799468091166/4619695799468091166.vrm",
+ "vroid/6/4620670658630861676/4620670658630861676.vrm",
+ "vroid/6/4621878876867532686/4621878876867532686.vrm",
+ "vroid/6/4625515945788925936/4625515945788925936.vrm",
+ "vroid/6/4635007052442092436/4635007052442092436.vrm",
+ "vroid/6/4639555088396105806/4639555088396105806.vrm",
+ "vroid/6/4640998284684350716/4640998284684350716.vrm",
+ "vroid/6/4643008626091129186/4643008626091129186.vrm",
+ "vroid/6/465275710172167896/465275710172167896.vrm",
+ "vroid/6/4663241177896562586/4663241177896562586.vrm",
+ "vroid/6/4663571635776195086/4663571635776195086.vrm",
+ "vroid/6/4669037997182704696/4669037997182704696.vrm",
+ "vroid/6/467574203891085646/467574203891085646.vrm",
+ "vroid/6/4688368490447428736/4688368490447428736.vrm",
+ "vroid/6/4692790360637246986/4692790360637246986.vrm",
+ "vroid/6/469439607831999496/469439607831999496.vrm",
+ "vroid/6/4695993533900089306/4695993533900089306.vrm",
+ "vroid/6/4701432941733625966/4701432941733625966.vrm",
+ "vroid/6/4719208405381388726/4719208405381388726.vrm",
+ "vroid/6/4720557394574193996/4720557394574193996.vrm",
+ "vroid/6/4727245908976194516/4727245908976194516.vrm",
+ "vroid/6/473345293169779676/473345293169779676.vrm",
+ "vroid/6/474699454290027366/474699454290027366.vrm",
+ "vroid/6/4760699826622104346/4760699826622104346.vrm",
+ "vroid/6/476394033340014696/476394033340014696.vrm",
+ "vroid/6/4776362659339057406/4776362659339057406.vrm",
+ "vroid/6/477894117741598666/477894117741598666.vrm",
+ "vroid/6/4782341151038343676/4782341151038343676.vrm",
+ "vroid/6/4784198454961707736/4784198454961707736.vrm",
+ "vroid/6/4784317285316364816/4784317285316364816.vrm",
+ "vroid/6/4784654365891608026/4784654365891608026.vrm",
+ "vroid/6/4790299035675027536/4790299035675027536.vrm",
+ "vroid/6/4790345485250053216/4790345485250053216.vrm",
+ "vroid/6/4793184027888702486/4793184027888702486.vrm",
+ "vroid/6/4801556999610631656/4801556999610631656.vrm",
+ "vroid/6/4803459777742892176/4803459777742892176.vrm",
+ "vroid/6/4803867649293376176/4803867649293376176.vrm",
+ "vroid/6/4807793875939551346/4807793875939551346.vrm",
+ "vroid/6/4818842569381713676/4818842569381713676.vrm",
+ "vroid/6/4829002735176697986/4829002735176697986.vrm",
+ "vroid/6/4830251744726051586/4830251744726051586.vrm",
+ "vroid/6/4845695357833755236/4845695357833755236.vrm",
+ "vroid/6/4856036912659052576/4856036912659052576.vrm",
+ "vroid/6/4863917385678879866/4863917385678879866.vrm",
+ "vroid/6/4864117269589316416/4864117269589316416.vrm",
+ "vroid/6/4866025066706616566/4866025066706616566.vrm",
+ "vroid/6/4877795253170227246/4877795253170227246.vrm",
+ "vroid/6/4879172236475524756/4879172236475524756.vrm",
+ "vroid/6/4885119104200467236/4885119104200467236.vrm",
+ "vroid/6/4888280137647879066/4888280137647879066.vrm",
+ "vroid/6/4888302577915544986/4888302577915544986.vrm",
+ "vroid/6/4895372387756869296/4895372387756869296.vrm",
+ "vroid/6/4895780798664647326/4895780798664647326.vrm",
+ "vroid/6/4898534335344868156/4898534335344868156.vrm",
+ "vroid/6/4909135823989563726/4909135823989563726.vrm",
+ "vroid/6/4912829381584752076/4912829381584752076.vrm",
+ "vroid/6/4918676849154205486/4918676849154205486.vrm",
+ "vroid/6/4926442228997475166/4926442228997475166.vrm",
+ "vroid/6/4948066213521280116/4948066213521280116.vrm",
+ "vroid/6/4951473314331317186/4951473314331317186.vrm",
+ "vroid/6/4955930409373434926/4955930409373434926.vrm",
+ "vroid/6/4960184383506621536/4960184383506621536.vrm",
+ "vroid/6/4969754185130883266/4969754185130883266.vrm",
+ "vroid/6/4971642171119466256/4971642171119466256.vrm",
+ "vroid/6/497773801380415166/497773801380415166.vrm",
+ "vroid/6/4979034230557868646/4979034230557868646.vrm",
+ "vroid/6/4983199983005692516/4983199983005692516.vrm",
+ "vroid/6/4996040738801171786/4996040738801171786.vrm",
+ "vroid/6/4996593117176448576/4996593117176448576.vrm",
+ "vroid/6/4996734737207472646/4996734737207472646.vrm",
+ "vroid/6/5000389871066469136/5000389871066469136.vrm",
+ "vroid/6/5007312118647235216/5007312118647235216.vrm",
+ "vroid/6/5010279197059293066/5010279197059293066.vrm",
+ "vroid/6/5011535764644896316/5011535764644896316.vrm",
+ "vroid/6/5014217536857243106/5014217536857243106.vrm",
+ "vroid/6/5015762139187637156/5015762139187637156.vrm",
+ "vroid/6/5018467555172224596/5018467555172224596.vrm",
+ "vroid/6/5018563080382109526/5018563080382109526.vrm",
+ "vroid/6/5022456475789425506/5022456475789425506.vrm",
+ "vroid/6/5024230742482752846/5024230742482752846.vrm",
+ "vroid/6/5032054631410393366/5032054631410393366.vrm",
+ "vroid/6/5052716695001173336/5052716695001173336.vrm",
+ "vroid/6/5067661545710517816/5067661545710517816.vrm",
+ "vroid/6/5075984983136235936/5075984983136235936.vrm",
+ "vroid/6/507970591327351736/507970591327351736.vrm",
+ "vroid/6/5093781261806448736/5093781261806448736.vrm",
+ "vroid/6/5094534464514562616/5094534464514562616.vrm",
+ "vroid/6/5105875374616383776/5105875374616383776.vrm",
+ "vroid/6/5107860010518530296/5107860010518530296.vrm",
+ "vroid/6/5129654180087712736/5129654180087712736.vrm",
+ "vroid/6/5129779091165800356/5129779091165800356.vrm",
+ "vroid/6/5136992212789411836/5136992212789411836.vrm",
+ "vroid/6/5140045229454791146/5140045229454791146.vrm",
+ "vroid/6/5150248135140104586/5150248135140104586.vrm",
+ "vroid/6/5155600652534049256/5155600652534049256.vrm",
+ "vroid/6/5156740384594767906/5156740384594767906.vrm",
+ "vroid/6/5156945441288474816/5156945441288474816.vrm",
+ "vroid/6/516494815568466486/516494815568466486.vrm",
+ "vroid/6/5176892008738090746/5176892008738090746.vrm",
+ "vroid/6/5189034410159468546/5189034410159468546.vrm",
+ "vroid/6/5204524307381688636/5204524307381688636.vrm",
+ "vroid/6/5221529061551038606/5221529061551038606.vrm",
+ "vroid/6/5228308979650517926/5228308979650517926.vrm",
+ "vroid/6/5233970940556583636/5233970940556583636.vrm",
+ "vroid/6/5238349381662228876/5238349381662228876.vrm",
+ "vroid/6/5245950681462338846/5245950681462338846.vrm",
+ "vroid/6/5246810828745951816/5246810828745951816.vrm",
+ "vroid/6/5247694181004586396/5247694181004586396.vrm",
+ "vroid/6/5247859869218898046/5247859869218898046.vrm",
+ "vroid/6/5258227976100010836/5258227976100010836.vrm",
+ "vroid/6/5259501045178298366/5259501045178298366.vrm",
+ "vroid/6/5268834393335076066/5268834393335076066.vrm",
+ "vroid/6/5272656872388839726/5272656872388839726.vrm",
+ "vroid/6/5274294446064976956/5274294446064976956.vrm",
+ "vroid/6/5278444475743501096/5278444475743501096.vrm",
+ "vroid/6/5278638334906713646/5278638334906713646.vrm",
+ "vroid/6/5281282772383867966/5281282772383867966.vrm",
+ "vroid/6/5288115967056758426/5288115967056758426.vrm",
+ "vroid/6/5290758374333886546/5290758374333886546.vrm",
+ "vroid/6/5293185631868511046/5293185631868511046.vrm",
+ "vroid/6/5297158809991621826/5297158809991621826.vrm",
+ "vroid/6/5311081761986306446/5311081761986306446.vrm",
+ "vroid/6/5317043721212432586/5317043721212432586.vrm",
+ "vroid/6/5317778978037314026/5317778978037314026.vrm",
+ "vroid/6/5321433572319865946/5321433572319865946.vrm",
+ "vroid/6/5321917342997921586/5321917342997921586.vrm",
+ "vroid/6/532298977788982676/532298977788982676.vrm",
+ "vroid/6/5325288688236858426/5325288688236858426.vrm",
+ "vroid/6/5327550832512007836/5327550832512007836.vrm",
+ "vroid/6/5332404150918946636/5332404150918946636.vrm",
+ "vroid/6/533831789440735106/533831789440735106.vrm",
+ "vroid/6/5343038643759787926/5343038643759787926.vrm",
+ "vroid/6/5348895794631984346/5348895794631984346.vrm",
+ "vroid/6/535644384169592386/535644384169592386.vrm",
+ "vroid/6/5358469191922076256/5358469191922076256.vrm",
+ "vroid/6/5360927264723930046/5360927264723930046.vrm",
+ "vroid/6/5361124813891497756/5361124813891497756.vrm",
+ "vroid/6/5361643323019515436/5361643323019515436.vrm",
+ "vroid/6/536847937283279326/536847937283279326.vrm",
+ "vroid/6/538043004355108206/538043004355108206.vrm",
+ "vroid/6/5381350544825283536/5381350544825283536.vrm",
+ "vroid/6/5390410616597310056/5390410616597310056.vrm",
+ "vroid/6/5393339504617187656/5393339504617187656.vrm",
+ "vroid/6/5393743118638888136/5393743118638888136.vrm",
+ "vroid/6/539587857615219806/539587857615219806.vrm",
+ "vroid/6/539931213031936656/539931213031936656.vrm",
+ "vroid/6/5403757737808693686/5403757737808693686.vrm",
+ "vroid/6/5437280065961120686/5437280065961120686.vrm",
+ "vroid/6/5444296460388049196/5444296460388049196.vrm",
+ "vroid/6/5479694836299545406/5479694836299545406.vrm",
+ "vroid/6/5479847313185586036/5479847313185586036.vrm",
+ "vroid/6/5485007422699501026/5485007422699501026.vrm",
+ "vroid/6/549707344823926496/549707344823926496.vrm",
+ "vroid/6/5505821485896448046/5505821485896448046.vrm",
+ "vroid/6/5510524684577300136/5510524684577300136.vrm",
+ "vroid/6/5512343605639197056/5512343605639197056.vrm",
+ "vroid/6/5512625861451735776/5512625861451735776.vrm",
+ "vroid/6/5517706713273672186/5517706713273672186.vrm",
+ "vroid/6/5528677057420834536/5528677057420834536.vrm",
+ "vroid/6/5540536599977902196/5540536599977902196.vrm",
+ "vroid/6/554149425581897956/554149425581897956.vrm",
+ "vroid/6/5550975342252500916/5550975342252500916.vrm",
+ "vroid/6/5555620994673468266/5555620994673468266.vrm",
+ "vroid/6/556078415712642206/556078415712642206.vrm",
+ "vroid/6/5564647072611498606/5564647072611498606.vrm",
+ "vroid/6/5565250642591544686/5565250642591544686.vrm",
+ "vroid/6/5572958012792537186/5572958012792537186.vrm",
+ "vroid/6/5572992320889837756/5572992320889837756.vrm",
+ "vroid/6/5582905842226300546/5582905842226300546.vrm",
+ "vroid/6/5584478138446659416/5584478138446659416.vrm",
+ "vroid/6/5589512065920903446/5589512065920903446.vrm",
+ "vroid/6/5590760001839663036/5590760001839663036.vrm",
+ "vroid/6/5596407987647358276/5596407987647358276.vrm",
+ "vroid/6/5599747489035718326/5599747489035718326.vrm",
+ "vroid/6/5599893737226959186/5599893737226959186.vrm",
+ "vroid/6/5608412652141101596/5608412652141101596.vrm",
+ "vroid/6/5616816786917253856/5616816786917253856.vrm",
+ "vroid/6/5622943918346255246/5622943918346255246.vrm",
+ "vroid/6/5624673142072398786/5624673142072398786.vrm",
+ "vroid/6/5629118445693765676/5629118445693765676.vrm",
+ "vroid/6/5631278254420108786/5631278254420108786.vrm",
+ "vroid/6/5640639497264422996/5640639497264422996.vrm",
+ "vroid/6/5655960737218108506/5655960737218108506.vrm",
+ "vroid/6/5660387282837081206/5660387282837081206.vrm",
+ "vroid/6/5670436731781298816/5670436731781298816.vrm",
+ "vroid/6/5672747259947695356/5672747259947695356.vrm",
+ "vroid/6/5688537402056141556/5688537402056141556.vrm",
+ "vroid/6/5689615015879056836/5689615015879056836.vrm",
+ "vroid/6/5690130401703627776/5690130401703627776.vrm",
+ "vroid/6/5691499296497596246/5691499296497596246.vrm",
+ "vroid/6/5699753787542344376/5699753787542344376.vrm",
+ "vroid/6/570741583478944376/570741583478944376.vrm",
+ "vroid/6/5713678200505940966/5713678200505940966.vrm",
+ "vroid/6/5718953893216821646/5718953893216821646.vrm",
+ "vroid/6/5732901393231768626/5732901393231768626.vrm",
+ "vroid/6/5753963511824055036/5753963511824055036.vrm",
+ "vroid/6/5756198704870363786/5756198704870363786.vrm",
+ "vroid/6/5758034350162231456/5758034350162231456.vrm",
+ "vroid/6/5761499807583008276/5761499807583008276.vrm",
+ "vroid/6/5768857300739781156/5768857300739781156.vrm",
+ "vroid/6/5776441899930088826/5776441899930088826.vrm",
+ "vroid/6/5786699577394726196/5786699577394726196.vrm",
+ "vroid/6/5806466491812742706/5806466491812742706.vrm",
+ "vroid/6/5815747076983473816/5815747076983473816.vrm",
+ "vroid/6/5826278938722677646/5826278938722677646.vrm",
+ "vroid/6/5826937695826603946/5826937695826603946.vrm",
+ "vroid/6/5828479961209543596/5828479961209543596.vrm",
+ "vroid/6/5831611710690267676/5831611710690267676.vrm",
+ "vroid/6/5838352761580527956/5838352761580527956.vrm",
+ "vroid/6/5848344336231169116/5848344336231169116.vrm",
+ "vroid/6/5850348682071581526/5850348682071581526.vrm",
+ "vroid/6/5853143164428267926/5853143164428267926.vrm",
+ "vroid/6/5854455663340435106/5854455663340435106.vrm",
+ "vroid/6/5863655170687154916/5863655170687154916.vrm",
+ "vroid/6/5887643978173828986/5887643978173828986.vrm",
+ "vroid/6/5887812645412471266/5887812645412471266.vrm",
+ "vroid/6/5888646059452326496/5888646059452326496.vrm",
+ "vroid/6/5897852058985167196/5897852058985167196.vrm",
+ "vroid/6/5898668897972262796/5898668897972262796.vrm",
+ "vroid/6/5901472943696481216/5901472943696481216.vrm",
+ "vroid/6/5908842435843026156/5908842435843026156.vrm",
+ "vroid/6/5912783385472942246/5912783385472942246.vrm",
+ "vroid/6/5921247169041448766/5921247169041448766.vrm",
+ "vroid/6/5921265358387466526/5921265358387466526.vrm",
+ "vroid/6/5931944579596648336/5931944579596648336.vrm",
+ "vroid/6/59362134614544786/59362134614544786.vrm",
+ "vroid/6/5945957436643781056/5945957436643781056.vrm",
+ "vroid/6/5951381068241595436/5951381068241595436.vrm",
+ "vroid/6/5971128111071205806/5971128111071205806.vrm",
+ "vroid/6/5972786736005481436/5972786736005481436.vrm",
+ "vroid/6/5985170799404389236/5985170799404389236.vrm",
+ "vroid/6/59862081692461556/59862081692461556.vrm",
+ "vroid/6/5989289570069493686/5989289570069493686.vrm",
+ "vroid/6/6002586568135554316/6002586568135554316.vrm",
+ "vroid/6/6025623433648724526/6025623433648724526.vrm",
+ "vroid/6/6026710825927474516/6026710825927474516.vrm",
+ "vroid/6/6030508088316275376/6030508088316275376.vrm",
+ "vroid/6/604217236327738596/604217236327738596.vrm",
+ "vroid/6/6044593792542242936/6044593792542242936.vrm",
+ "vroid/6/6046955512712799046/6046955512712799046.vrm",
+ "vroid/6/6053199460550253196/6053199460550253196.vrm",
+ "vroid/6/6061221994007754956/6061221994007754956.vrm",
+ "vroid/6/6066293377887775436/6066293377887775436.vrm",
+ "vroid/6/609228756601328056/609228756601328056.vrm",
+ "vroid/6/6098544033609974466/6098544033609974466.vrm",
+ "vroid/6/6106754271562955926/6106754271562955926.vrm",
+ "vroid/6/610764311825351596/610764311825351596.vrm",
+ "vroid/6/6109100099935199386/6109100099935199386.vrm",
+ "vroid/6/6111514162810893566/6111514162810893566.vrm",
+ "vroid/6/6128548333029262356/6128548333029262356.vrm",
+ "vroid/6/6128732773923689976/6128732773923689976.vrm",
+ "vroid/6/6132821867091448846/6132821867091448846.vrm",
+ "vroid/6/6139285533210592596/6139285533210592596.vrm",
+ "vroid/6/614307240158509966/614307240158509966.vrm",
+ "vroid/6/614839544970968586/614839544970968586.vrm",
+ "vroid/6/6151597244604639476/6151597244604639476.vrm",
+ "vroid/6/6167909702414489736/6167909702414489736.vrm",
+ "vroid/6/6171124743020043946/6171124743020043946.vrm",
+ "vroid/6/619108808472811516/619108808472811516.vrm",
+ "vroid/6/6192727499462125116/6192727499462125116.vrm",
+ "vroid/6/6195756007229839876/6195756007229839876.vrm",
+ "vroid/6/6198244732386977066/6198244732386977066.vrm",
+ "vroid/6/6198977335593520866/6198977335593520866.vrm",
+ "vroid/6/6202608632612144086/6202608632612144086.vrm",
+ "vroid/6/6205717948061698476/6205717948061698476.vrm",
+ "vroid/6/6211095764422870596/6211095764422870596.vrm",
+ "vroid/6/6219424486256037136/6219424486256037136.vrm",
+ "vroid/6/622745317296267306/622745317296267306.vrm",
+ "vroid/6/6239028721065954106/6239028721065954106.vrm",
+ "vroid/6/6240399567662669476/6240399567662669476.vrm",
+ "vroid/6/6240990853318550746/6240990853318550746.vrm",
+ "vroid/6/624145993964327096/624145993964327096.vrm",
+ "vroid/6/6245114840613858736/6245114840613858736.vrm",
+ "vroid/6/6263841791978224166/6263841791978224166.vrm",
+ "vroid/6/6268388916150634286/6268388916150634286.vrm",
+ "vroid/6/6271352936114275716/6271352936114275716.vrm",
+ "vroid/6/6272174539411172036/6272174539411172036.vrm",
+ "vroid/6/627726377753647826/627726377753647826.vrm",
+ "vroid/6/628254286940395136/628254286940395136.vrm",
+ "vroid/6/6286500072838580336/6286500072838580336.vrm",
+ "vroid/6/6288106105833109396/6288106105833109396.vrm",
+ "vroid/6/6288774696144435376/6288774696144435376.vrm",
+ "vroid/6/6303712106818905926/6303712106818905926.vrm",
+ "vroid/6/6310880967107998016/6310880967107998016.vrm",
+ "vroid/6/6314452776546893426/6314452776546893426.vrm",
+ "vroid/6/6319295738627886996/6319295738627886996.vrm",
+ "vroid/6/6322418878055903416/6322418878055903416.vrm",
+ "vroid/6/632377072085299776/632377072085299776.vrm",
+ "vroid/6/6324379653819689036/6324379653819689036.vrm",
+ "vroid/6/6329345465374008296/6329345465374008296.vrm",
+ "vroid/6/6330292556001246036/6330292556001246036.vrm",
+ "vroid/6/6330891695893314096/6330891695893314096.vrm",
+ "vroid/6/6331313562913727336/6331313562913727336.vrm",
+ "vroid/6/6333206539532878256/6333206539532878256.vrm",
+ "vroid/6/6333746907387543546/6333746907387543546.vrm",
+ "vroid/6/6336741150006080846/6336741150006080846.vrm",
+ "vroid/6/6347895228059465696/6347895228059465696.vrm",
+ "vroid/6/6349078218383390206/6349078218383390206.vrm",
+ "vroid/6/6358719894872122596/6358719894872122596.vrm",
+ "vroid/6/6363588157801306286/6363588157801306286.vrm",
+ "vroid/6/6365584633000394696/6365584633000394696.vrm",
+ "vroid/6/637266387463678746/637266387463678746.vrm",
+ "vroid/6/6374790876908166936/6374790876908166936.vrm",
+ "vroid/6/6376492816159404126/6376492816159404126.vrm",
+ "vroid/6/6382855253717949596/6382855253717949596.vrm",
+ "vroid/6/6382874449534114336/6382874449534114336.vrm",
+ "vroid/6/6395326811197984856/6395326811197984856.vrm",
+ "vroid/6/6420009153169536466/6420009153169536466.vrm",
+ "vroid/6/6421315277273808656/6421315277273808656.vrm",
+ "vroid/6/6426496344339447436/6426496344339447436.vrm",
+ "vroid/6/6427562110758643256/6427562110758643256.vrm",
+ "vroid/6/6438986087468871646/6438986087468871646.vrm",
+ "vroid/6/644139548134232826/644139548134232826.vrm",
+ "vroid/6/6441992977738473846/6441992977738473846.vrm",
+ "vroid/6/6442989209196861306/6442989209196861306.vrm",
+ "vroid/6/6445075834808473166/6445075834808473166.vrm",
+ "vroid/6/6450110738314934616/6450110738314934616.vrm",
+ "vroid/6/6451629083478091516/6451629083478091516.vrm",
+ "vroid/6/6455758149727920476/6455758149727920476.vrm",
+ "vroid/6/6457955469141180046/6457955469141180046.vrm",
+ "vroid/6/6460593563660743426/6460593563660743426.vrm",
+ "vroid/6/6464683189335465316/6464683189335465316.vrm",
+ "vroid/6/649232888361586716/649232888361586716.vrm",
+ "vroid/6/649241659199226296/649241659199226296.vrm",
+ "vroid/6/6494565591192946386/6494565591192946386.vrm",
+ "vroid/6/6499038214523925296/6499038214523925296.vrm",
+ "vroid/6/6503847998769967476/6503847998769967476.vrm",
+ "vroid/6/6505004857248787806/6505004857248787806.vrm",
+ "vroid/6/6512228818938554796/6512228818938554796.vrm",
+ "vroid/6/6516230946505614996/6516230946505614996.vrm",
+ "vroid/6/6518337590472467366/6518337590472467366.vrm",
+ "vroid/6/651932552770076566/651932552770076566.vrm",
+ "vroid/6/6525992654126718736/6525992654126718736.vrm",
+ "vroid/6/6539804507755765686/6539804507755765686.vrm",
+ "vroid/6/6544349959974395536/6544349959974395536.vrm",
+ "vroid/6/654625047230655106/654625047230655106.vrm",
+ "vroid/6/6553509963235867926/6553509963235867926.vrm",
+ "vroid/6/6566811460611581326/6566811460611581326.vrm",
+ "vroid/6/6591134403994114256/6591134403994114256.vrm",
+ "vroid/6/6597644478840012206/6597644478840012206.vrm",
+ "vroid/6/6603737677625618656/6603737677625618656.vrm",
+ "vroid/6/6603956693550958876/6603956693550958876.vrm",
+ "vroid/6/6611958008124828496/6611958008124828496.vrm",
+ "vroid/6/6614891890347686806/6614891890347686806.vrm",
+ "vroid/6/661693013398942696/661693013398942696.vrm",
+ "vroid/6/661743518194441226/661743518194441226.vrm",
+ "vroid/6/6621449028015323326/6621449028015323326.vrm",
+ "vroid/6/6631395994048613416/6631395994048613416.vrm",
+ "vroid/6/6632949487434945616/6632949487434945616.vrm",
+ "vroid/6/6633150904522683886/6633150904522683886.vrm",
+ "vroid/6/663371804375479746/663371804375479746.vrm",
+ "vroid/6/6635034257065114726/6635034257065114726.vrm",
+ "vroid/6/6635824768447080716/6635824768447080716.vrm",
+ "vroid/6/6636085990682951016/6636085990682951016.vrm",
+ "vroid/6/6639889064718452826/6639889064718452826.vrm",
+ "vroid/6/6647325587438978766/6647325587438978766.vrm",
+ "vroid/6/6652562766448633306/6652562766448633306.vrm",
+ "vroid/6/6663496309868691656/6663496309868691656.vrm",
+ "vroid/6/6663571388929691616/6663571388929691616.vrm",
+ "vroid/6/666744843545243216/666744843545243216.vrm",
+ "vroid/6/6674575345034067596/6674575345034067596.vrm",
+ "vroid/6/6676949504899118986/6676949504899118986.vrm",
+ "vroid/6/6682922107376439816/6682922107376439816.vrm",
+ "vroid/6/6692570637854314546/6692570637854314546.vrm",
+ "vroid/6/6696268707551060736/6696268707551060736.vrm",
+ "vroid/6/6696353975013327516/6696353975013327516.vrm",
+ "vroid/6/6699937455128503126/6699937455128503126.vrm",
+ "vroid/6/671333961983508276/671333961983508276.vrm",
+ "vroid/6/6721305365660396636/6721305365660396636.vrm",
+ "vroid/6/6722812796216395176/6722812796216395176.vrm",
+ "vroid/6/6725507440506228436/6725507440506228436.vrm",
+ "vroid/6/6729344198314507186/6729344198314507186.vrm",
+ "vroid/6/6733493969989031676/6733493969989031676.vrm",
+ "vroid/6/673360847972020196/673360847972020196.vrm",
+ "vroid/6/6733672951862564496/6733672951862564496.vrm",
+ "vroid/6/6738520011927474586/6738520011927474586.vrm",
+ "vroid/6/6745512609388674576/6745512609388674576.vrm",
+ "vroid/6/6749917091852113736/6749917091852113736.vrm",
+ "vroid/6/6756989005487535896/6756989005487535896.vrm",
+ "vroid/6/6759149644997127186/6759149644997127186.vrm",
+ "vroid/6/6768863934045021446/6768863934045021446.vrm",
+ "vroid/6/6770333854471087216/6770333854471087216.vrm",
+ "vroid/6/678718651518273866/678718651518273866.vrm",
+ "vroid/6/6787665184383868896/6787665184383868896.vrm",
+ "vroid/6/679057094187948306/679057094187948306.vrm",
+ "vroid/6/6791850565924074886/6791850565924074886.vrm",
+ "vroid/6/6796084189987263166/6796084189987263166.vrm",
+ "vroid/6/6798320829604694906/6798320829604694906.vrm",
+ "vroid/6/6801945299381036406/6801945299381036406.vrm",
+ "vroid/6/6805761552133397826/6805761552133397826.vrm",
+ "vroid/6/6811788179207416596/6811788179207416596.vrm",
+ "vroid/6/6816368293177389686/6816368293177389686.vrm",
+ "vroid/6/6821142625341429196/6821142625341429196.vrm",
+ "vroid/6/6822907835643867396/6822907835643867396.vrm",
+ "vroid/6/682407908524800156/682407908524800156.vrm",
+ "vroid/6/6844432738121360946/6844432738121360946.vrm",
+ "vroid/6/6860312402723229906/6860312402723229906.vrm",
+ "vroid/6/6865575105453022086/6865575105453022086.vrm",
+ "vroid/6/6870911478905495196/6870911478905495196.vrm",
+ "vroid/6/6871320498167140866/6871320498167140866.vrm",
+ "vroid/6/6873320368584013366/6873320368584013366.vrm",
+ "vroid/6/6875738992607401876/6875738992607401876.vrm",
+ "vroid/6/6881348944324437566/6881348944324437566.vrm",
+ "vroid/6/6884469538299232386/6884469538299232386.vrm",
+ "vroid/6/6886631484026934796/6886631484026934796.vrm",
+ "vroid/6/6891219621328883506/6891219621328883506.vrm",
+ "vroid/6/6892075520704977436/6892075520704977436.vrm",
+ "vroid/6/6903403209798512066/6903403209798512066.vrm",
+ "vroid/6/6918720416396626396/6918720416396626396.vrm",
+ "vroid/6/6925686124106060156/6925686124106060156.vrm",
+ "vroid/6/693142770932795816/693142770932795816.vrm",
+ "vroid/6/6933791569656185106/6933791569656185106.vrm",
+ "vroid/6/69497132456130016/69497132456130016.vrm",
+ "vroid/6/6954421178887928816/6954421178887928816.vrm",
+ "vroid/6/6964081123275674556/6964081123275674556.vrm",
+ "vroid/6/6970746157478525556/6970746157478525556.vrm",
+ "vroid/6/697795133868752196/697795133868752196.vrm",
+ "vroid/6/6978703540556011326/6978703540556011326.vrm",
+ "vroid/6/6981540919739663476/6981540919739663476.vrm",
+ "vroid/6/6986155357147700086/6986155357147700086.vrm",
+ "vroid/6/6986288847990194356/6986288847990194356.vrm",
+ "vroid/6/6987482240776493026/6987482240776493026.vrm",
+ "vroid/6/6990253947321981176/6990253947321981176.vrm",
+ "vroid/6/6993948603948315386/6993948603948315386.vrm",
+ "vroid/6/6995671106114998266/6995671106114998266.vrm",
+ "vroid/6/7008459181599916096/7008459181599916096.vrm",
+ "vroid/6/7013561344015048956/7013561344015048956.vrm",
+ "vroid/6/7014663778193899616/7014663778193899616.vrm",
+ "vroid/6/7015676332224061786/7015676332224061786.vrm",
+ "vroid/6/7023142637230127796/7023142637230127796.vrm",
+ "vroid/6/702363754714188626/702363754714188626.vrm",
+ "vroid/6/7023985963271289266/7023985963271289266.vrm",
+ "vroid/6/7027973117472935206/7027973117472935206.vrm",
+ "vroid/6/7043178136349026366/7043178136349026366.vrm",
+ "vroid/6/7048972180978616566/7048972180978616566.vrm",
+ "vroid/6/7053893875834995946/7053893875834995946.vrm",
+ "vroid/6/7055280165778781216/7055280165778781216.vrm",
+ "vroid/6/7061492131908594776/7061492131908594776.vrm",
+ "vroid/6/7061730602882483546/7061730602882483546.vrm",
+ "vroid/6/7077457179039648086/7077457179039648086.vrm",
+ "vroid/6/7081278709992789106/7081278709992789106.vrm",
+ "vroid/6/7084673844829237576/7084673844829237576.vrm",
+ "vroid/6/7086017861340054616/7086017861340054616.vrm",
+ "vroid/6/7102327275908413346/7102327275908413346.vrm",
+ "vroid/6/7106014450214944706/7106014450214944706.vrm",
+ "vroid/6/7107538805296791866/7107538805296791866.vrm",
+ "vroid/6/7112118562958864186/7112118562958864186.vrm",
+ "vroid/6/7113270484960147386/7113270484960147386.vrm",
+ "vroid/6/7118164334715066866/7118164334715066866.vrm",
+ "vroid/6/7119342533467533846/7119342533467533846.vrm",
+ "vroid/6/7125978625810335916/7125978625810335916.vrm",
+ "vroid/6/7130295455222040796/7130295455222040796.vrm",
+ "vroid/6/713899761254060826/713899761254060826.vrm",
+ "vroid/6/7143038144394430376/7143038144394430376.vrm",
+ "vroid/6/7146286767270395956/7146286767270395956.vrm",
+ "vroid/6/7147275262387184446/7147275262387184446.vrm",
+ "vroid/6/7150779850487619186/7150779850487619186.vrm",
+ "vroid/6/7173510333740850936/7173510333740850936.vrm",
+ "vroid/6/7184645165516427056/7184645165516427056.vrm",
+ "vroid/6/7184873366677193376/7184873366677193376.vrm",
+ "vroid/6/7187932405572504666/7187932405572504666.vrm",
+ "vroid/6/7189364054834495036/7189364054834495036.vrm",
+ "vroid/6/7201367406879353296/7201367406879353296.vrm",
+ "vroid/6/720259496273935616/720259496273935616.vrm",
+ "vroid/6/7206134468092698096/7206134468092698096.vrm",
+ "vroid/6/7210911981148354836/7210911981148354836.vrm",
+ "vroid/6/7231168882304242366/7231168882304242366.vrm",
+ "vroid/6/7236380593327694156/7236380593327694156.vrm",
+ "vroid/6/7240285367703392376/7240285367703392376.vrm",
+ "vroid/6/7243410926991386466/7243410926991386466.vrm",
+ "vroid/6/7244520757667942876/7244520757667942876.vrm",
+ "vroid/6/7246448030075953336/7246448030075953336.vrm",
+ "vroid/6/7249220595088410876/7249220595088410876.vrm",
+ "vroid/6/7277362401371834466/7277362401371834466.vrm",
+ "vroid/6/727783369030348816/727783369030348816.vrm",
+ "vroid/6/7281199878162501306/7281199878162501306.vrm",
+ "vroid/6/7283769103060777216/7283769103060777216.vrm",
+ "vroid/6/7284474866464103606/7284474866464103606.vrm",
+ "vroid/6/7286177474729595686/7286177474729595686.vrm",
+ "vroid/6/7289241901887757306/7289241901887757306.vrm",
+ "vroid/6/729764543954149466/729764543954149466.vrm",
+ "vroid/6/7298115236073708996/7298115236073708996.vrm",
+ "vroid/6/7302393513743356816/7302393513743356816.vrm",
+ "vroid/6/7307572404265408406/7307572404265408406.vrm",
+ "vroid/6/7310597944819370986/7310597944819370986.vrm",
+ "vroid/6/7312849313598671226/7312849313598671226.vrm",
+ "vroid/6/7318698413542042956/7318698413542042956.vrm",
+ "vroid/6/7325413011672196776/7325413011672196776.vrm",
+ "vroid/6/7325593048419508366/7325593048419508366.vrm",
+ "vroid/6/7333563959008422226/7333563959008422226.vrm",
+ "vroid/6/7335280529669435606/7335280529669435606.vrm",
+ "vroid/6/7342201451517479646/7342201451517479646.vrm",
+ "vroid/6/7342280188379138666/7342280188379138666.vrm",
+ "vroid/6/7347865195131284266/7347865195131284266.vrm",
+ "vroid/6/7348407556282005666/7348407556282005666.vrm",
+ "vroid/6/7351946193851819916/7351946193851819916.vrm",
+ "vroid/6/7353166064128824106/7353166064128824106.vrm",
+ "vroid/6/7358924166989685446/7358924166989685446.vrm",
+ "vroid/6/7359029356520224096/7359029356520224096.vrm",
+ "vroid/6/7360179536742816596/7360179536742816596.vrm",
+ "vroid/6/7364308243576589626/7364308243576589626.vrm",
+ "vroid/6/7370751087484251586/7370751087484251586.vrm",
+ "vroid/6/7371852594857690886/7371852594857690886.vrm",
+ "vroid/6/7373685038346079536/7373685038346079536.vrm",
+ "vroid/6/7373688601698027566/7373688601698027566.vrm",
+ "vroid/6/7373807550966807426/7373807550966807426.vrm",
+ "vroid/6/7382971967014721756/7382971967014721756.vrm",
+ "vroid/6/7384425892114359996/7384425892114359996.vrm",
+ "vroid/6/7386828198745469176/7386828198745469176.vrm",
+ "vroid/6/740238687111500226/740238687111500226.vrm",
+ "vroid/6/7414362022807735886/7414362022807735886.vrm",
+ "vroid/6/7414678896699535166/7414678896699535166.vrm",
+ "vroid/6/7417247902758467486/7417247902758467486.vrm",
+ "vroid/6/7428411536380333896/7428411536380333896.vrm",
+ "vroid/6/7428487963622878416/7428487963622878416.vrm",
+ "vroid/6/7435631846175466446/7435631846175466446.vrm",
+ "vroid/6/7436950845119769726/7436950845119769726.vrm",
+ "vroid/6/7444702488118372806/7444702488118372806.vrm",
+ "vroid/6/7448127469256435826/7448127469256435826.vrm",
+ "vroid/6/7470496452807335856/7470496452807335856.vrm",
+ "vroid/6/7489192264184863366/7489192264184863366.vrm",
+ "vroid/6/7499791024527235226/7499791024527235226.vrm",
+ "vroid/6/750028696459758666/750028696459758666.vrm",
+ "vroid/6/7510591361023434026/7510591361023434026.vrm",
+ "vroid/6/751181100241885956/751181100241885956.vrm",
+ "vroid/6/7517422701640736476/7517422701640736476.vrm",
+ "vroid/6/7529323683851436706/7529323683851436706.vrm",
+ "vroid/6/7538221091944098366/7538221091944098366.vrm",
+ "vroid/6/7539919240321413856/7539919240321413856.vrm",
+ "vroid/6/7555738845823109816/7555738845823109816.vrm",
+ "vroid/6/7581848414837493326/7581848414837493326.vrm",
+ "vroid/6/7583537169113090266/7583537169113090266.vrm",
+ "vroid/6/7591532357962851066/7591532357962851066.vrm",
+ "vroid/6/7595038485894313636/7595038485894313636.vrm",
+ "vroid/6/759981463629515636/759981463629515636.vrm",
+ "vroid/6/7608090862555160206/7608090862555160206.vrm",
+ "vroid/6/7614994893702220216/7614994893702220216.vrm",
+ "vroid/6/7618478798452988416/7618478798452988416.vrm",
+ "vroid/6/7619159429276828526/7619159429276828526.vrm",
+ "vroid/6/7631234123537685676/7631234123537685676.vrm",
+ "vroid/6/7633446389881145946/7633446389881145946.vrm",
+ "vroid/6/763680819594893726/763680819594893726.vrm",
+ "vroid/6/7638391236373974596/7638391236373974596.vrm",
+ "vroid/6/7639648587165833256/7639648587165833256.vrm",
+ "vroid/6/7648274722484611426/7648274722484611426.vrm",
+ "vroid/6/7649002051611903656/7649002051611903656.vrm",
+ "vroid/6/7652500106222717006/7652500106222717006.vrm",
+ "vroid/6/7659213507550028686/7659213507550028686.vrm",
+ "vroid/6/7668591593544518576/7668591593544518576.vrm",
+ "vroid/6/7669653362294896416/7669653362294896416.vrm",
+ "vroid/6/7671592845645528146/7671592845645528146.vrm",
+ "vroid/6/7683632605710551566/7683632605710551566.vrm",
+ "vroid/6/768471707416200296/768471707416200296.vrm",
+ "vroid/6/7693975855780853656/7693975855780853656.vrm",
+ "vroid/6/7695640292889283736/7695640292889283736.vrm",
+ "vroid/6/7696611658779333646/7696611658779333646.vrm",
+ "vroid/6/7699103337787916226/7699103337787916226.vrm",
+ "vroid/6/7712060435364551676/7712060435364551676.vrm",
+ "vroid/6/7724797015074964736/7724797015074964736.vrm",
+ "vroid/6/772568032929246206/772568032929246206.vrm",
+ "vroid/6/7728312126366716666/7728312126366716666.vrm",
+ "vroid/6/7731846190313712246/7731846190313712246.vrm",
+ "vroid/6/7732917911283210426/7732917911283210426.vrm",
+ "vroid/6/7733957241495179716/7733957241495179716.vrm",
+ "vroid/6/773950284657045746/773950284657045746.vrm",
+ "vroid/6/7740791060622184646/7740791060622184646.vrm",
+ "vroid/6/7741537612597725566/7741537612597725566.vrm",
+ "vroid/6/7743348398954426276/7743348398954426276.vrm",
+ "vroid/6/7753521394856882666/7753521394856882666.vrm",
+ "vroid/6/7756128295335027976/7756128295335027976.vrm",
+ "vroid/6/7759832427182316466/7759832427182316466.vrm",
+ "vroid/6/7770071463436458896/7770071463436458896.vrm",
+ "vroid/6/7775601508407199396/7775601508407199396.vrm",
+ "vroid/6/7777541061456816046/7777541061456816046.vrm",
+ "vroid/6/7789300072348545026/7789300072348545026.vrm",
+ "vroid/6/7791047630017922236/7791047630017922236.vrm",
+ "vroid/6/7794372685650658136/7794372685650658136.vrm",
+ "vroid/6/7794596601761437726/7794596601761437726.vrm",
+ "vroid/6/780226061144188606/780226061144188606.vrm",
+ "vroid/6/7809552033643928686/7809552033643928686.vrm",
+ "vroid/6/781749909638886266/781749909638886266.vrm",
+ "vroid/6/7820382021477020366/7820382021477020366.vrm",
+ "vroid/6/7833798746118638876/7833798746118638876.vrm",
+ "vroid/6/7840134929714387786/7840134929714387786.vrm",
+ "vroid/6/7848784032844656596/7848784032844656596.vrm",
+ "vroid/6/7850957500989930816/7850957500989930816.vrm",
+ "vroid/6/7852820789156533406/7852820789156533406.vrm",
+ "vroid/6/7857736531168734996/7857736531168734996.vrm",
+ "vroid/6/7858447821962265456/7858447821962265456.vrm",
+ "vroid/6/7858534422222469266/7858534422222469266.vrm",
+ "vroid/6/7859398311643883886/7859398311643883886.vrm",
+ "vroid/6/7865120882790207406/7865120882790207406.vrm",
+ "vroid/6/787014588224482596/787014588224482596.vrm",
+ "vroid/6/7886251090030066156/7886251090030066156.vrm",
+ "vroid/6/7886716340731303016/7886716340731303016.vrm",
+ "vroid/6/7896543262548259036/7896543262548259036.vrm",
+ "vroid/6/7897416096150095706/7897416096150095706.vrm",
+ "vroid/6/7903663697734943116/7903663697734943116.vrm",
+ "vroid/6/7905626046821248566/7905626046821248566.vrm",
+ "vroid/6/7910871766647202766/7910871766647202766.vrm",
+ "vroid/6/7919569379547134956/7919569379547134956.vrm",
+ "vroid/6/7923272205925076976/7923272205925076976.vrm",
+ "vroid/6/7928043100833956346/7928043100833956346.vrm",
+ "vroid/6/7932252590740480056/7932252590740480056.vrm",
+ "vroid/6/7933157126057351526/7933157126057351526.vrm",
+ "vroid/6/7937801517364807166/7937801517364807166.vrm",
+ "vroid/6/7939032245723250576/7939032245723250576.vrm",
+ "vroid/6/7944368636016665206/7944368636016665206.vrm",
+ "vroid/6/7965665319397032316/7965665319397032316.vrm",
+ "vroid/6/7968633713996319986/7968633713996319986.vrm",
+ "vroid/6/7969080722261711676/7969080722261711676.vrm",
+ "vroid/6/7969126021929741796/7969126021929741796.vrm",
+ "vroid/6/7978829281265411916/7978829281265411916.vrm",
+ "vroid/6/8003080930644762516/8003080930644762516.vrm",
+ "vroid/6/800967081866261956/800967081866261956.vrm",
+ "vroid/6/80125596272577186/80125596272577186.vrm",
+ "vroid/6/8022136601146684056/8022136601146684056.vrm",
+ "vroid/6/8024220135013269896/8024220135013269896.vrm",
+ "vroid/6/8026201358906142526/8026201358906142526.vrm",
+ "vroid/6/8032847578823233766/8032847578823233766.vrm",
+ "vroid/6/8037299250141667316/8037299250141667316.vrm",
+ "vroid/6/8037708479870036/8037708479870036.vrm",
+ "vroid/6/8041699938302911826/8041699938302911826.vrm",
+ "vroid/6/8049960527210430236/8049960527210430236.vrm",
+ "vroid/6/8053167828895725496/8053167828895725496.vrm",
+ "vroid/6/806658017111766736/806658017111766736.vrm",
+ "vroid/6/807776524774435796/807776524774435796.vrm",
+ "vroid/6/8094521371428548146/8094521371428548146.vrm",
+ "vroid/6/8100765448448543796/8100765448448543796.vrm",
+ "vroid/6/8103619027995847286/8103619027995847286.vrm",
+ "vroid/6/8112121852475729956/8112121852475729956.vrm",
+ "vroid/6/8115889037255303046/8115889037255303046.vrm",
+ "vroid/6/8116593095973637996/8116593095973637996.vrm",
+ "vroid/6/8124256916813182006/8124256916813182006.vrm",
+ "vroid/6/8131081732879233856/8131081732879233856.vrm",
+ "vroid/6/8144648613464706416/8144648613464706416.vrm",
+ "vroid/6/8144873643062341246/8144873643062341246.vrm",
+ "vroid/6/8145806657366088316/8145806657366088316.vrm",
+ "vroid/6/8148084615469784546/8148084615469784546.vrm",
+ "vroid/6/8157490861927429696/8157490861927429696.vrm",
+ "vroid/6/8158329566826974756/8158329566826974756.vrm",
+ "vroid/6/8158678668971960116/8158678668971960116.vrm",
+ "vroid/6/816043156630045946/816043156630045946.vrm",
+ "vroid/6/8161586555093018346/8161586555093018346.vrm",
+ "vroid/6/8161679915401412656/8161679915401412656.vrm",
+ "vroid/6/8165276147738709006/8165276147738709006.vrm",
+ "vroid/6/8170444227883610596/8170444227883610596.vrm",
+ "vroid/6/8170493178645279746/8170493178645279746.vrm",
+ "vroid/6/8180243190202277026/8180243190202277026.vrm",
+ "vroid/6/8186981109641174706/8186981109641174706.vrm",
+ "vroid/6/8187381323346721636/8187381323346721636.vrm",
+ "vroid/6/8189420607632738546/8189420607632738546.vrm",
+ "vroid/6/8194117238008154646/8194117238008154646.vrm",
+ "vroid/6/82014185215631776/82014185215631776.vrm",
+ "vroid/6/8205725819767830806/8205725819767830806.vrm",
+ "vroid/6/8209100297571106596/8209100297571106596.vrm",
+ "vroid/6/8209871178661902676/8209871178661902676.vrm",
+ "vroid/6/8211589499107207746/8211589499107207746.vrm",
+ "vroid/6/8214952066391058696/8214952066391058696.vrm",
+ "vroid/6/8229236335289113186/8229236335289113186.vrm",
+ "vroid/6/8233652468898765056/8233652468898765056.vrm",
+ "vroid/6/8234141108907865576/8234141108907865576.vrm",
+ "vroid/6/82397748315020266/82397748315020266.vrm",
+ "vroid/6/8244084094954362486/8244084094954362486.vrm",
+ "vroid/6/8244455282591674956/8244455282591674956.vrm",
+ "vroid/6/8258022817572671866/8258022817572671866.vrm",
+ "vroid/6/8270191711247718006/8270191711247718006.vrm",
+ "vroid/6/8276605251488514916/8276605251488514916.vrm",
+ "vroid/6/8276796295402854666/8276796295402854666.vrm",
+ "vroid/6/8280670328901552566/8280670328901552566.vrm",
+ "vroid/6/8292952771756900376/8292952771756900376.vrm",
+ "vroid/6/8298588078012757486/8298588078012757486.vrm",
+ "vroid/6/8306085745644326776/8306085745644326776.vrm",
+ "vroid/6/8307872442574831406/8307872442574831406.vrm",
+ "vroid/6/8310609348908832476/8310609348908832476.vrm",
+ "vroid/6/8310749209470712726/8310749209470712726.vrm",
+ "vroid/6/8314277176434555216/8314277176434555216.vrm",
+ "vroid/6/8321044860716195656/8321044860716195656.vrm",
+ "vroid/6/8321160453936972866/8321160453936972866.vrm",
+ "vroid/6/8336649847748694896/8336649847748694896.vrm",
+ "vroid/6/8341637841944661746/8341637841944661746.vrm",
+ "vroid/6/8346565820146544016/8346565820146544016.vrm",
+ "vroid/6/8371627752127414526/8371627752127414526.vrm",
+ "vroid/6/8384510362707853216/8384510362707853216.vrm",
+ "vroid/6/8393534949178107126/8393534949178107126.vrm",
+ "vroid/6/8399106235861791296/8399106235861791296.vrm",
+ "vroid/6/8400159001992617256/8400159001992617256.vrm",
+ "vroid/6/8422507682531830986/8422507682531830986.vrm",
+ "vroid/6/842991186332112526/842991186332112526.vrm",
+ "vroid/6/8431179058184038566/8431179058184038566.vrm",
+ "vroid/6/8441233130969242046/8441233130969242046.vrm",
+ "vroid/6/8446888699628142326/8446888699628142326.vrm",
+ "vroid/6/8468278637066688626/8468278637066688626.vrm",
+ "vroid/6/8484247471823743616/8484247471823743616.vrm",
+ "vroid/6/8493613545927541516/8493613545927541516.vrm",
+ "vroid/6/8499007046291055666/8499007046291055666.vrm",
+ "vroid/6/8499549334747125956/8499549334747125956.vrm",
+ "vroid/6/8505366405268256246/8505366405268256246.vrm",
+ "vroid/6/8506979612029406856/8506979612029406856.vrm",
+ "vroid/6/8526458331757187086/8526458331757187086.vrm",
+ "vroid/6/8529419900383228446/8529419900383228446.vrm",
+ "vroid/6/8544085375855246556/8544085375855246556.vrm",
+ "vroid/6/8544705845519015506/8544705845519015506.vrm",
+ "vroid/6/8547562622601267356/8547562622601267356.vrm",
+ "vroid/6/8577539037282857716/8577539037282857716.vrm",
+ "vroid/6/8587883906979589346/8587883906979589346.vrm",
+ "vroid/6/859845793733918596/859845793733918596.vrm",
+ "vroid/6/8602647944325454146/8602647944325454146.vrm",
+ "vroid/6/8604326436601168516/8604326436601168516.vrm",
+ "vroid/6/8606851683125551746/8606851683125551746.vrm",
+ "vroid/6/8615446718291193396/8615446718291193396.vrm",
+ "vroid/6/8619650956882442056/8619650956882442056.vrm",
+ "vroid/6/862093770323452946/862093770323452946.vrm",
+ "vroid/6/862406935925477956/862406935925477956.vrm",
+ "vroid/6/8625466531196041526/8625466531196041526.vrm",
+ "vroid/6/8631934458539396/8631934458539396.vrm",
+ "vroid/6/8640124944368483276/8640124944368483276.vrm",
+ "vroid/6/8647538772428058486/8647538772428058486.vrm",
+ "vroid/6/8691620258087195346/8691620258087195346.vrm",
+ "vroid/6/8699002186614902716/8699002186614902716.vrm",
+ "vroid/6/8701095879618518876/8701095879618518876.vrm",
+ "vroid/6/8702705418400433996/8702705418400433996.vrm",
+ "vroid/6/8703222588194245556/8703222588194245556.vrm",
+ "vroid/6/8706827524684056536/8706827524684056536.vrm",
+ "vroid/6/8708559589888894186/8708559589888894186.vrm",
+ "vroid/6/8710056029858060766/8710056029858060766.vrm",
+ "vroid/6/8719564895155468686/8719564895155468686.vrm",
+ "vroid/6/8730431803937983036/8730431803937983036.vrm",
+ "vroid/6/8746547613605482976/8746547613605482976.vrm",
+ "vroid/6/8761719588449898786/8761719588449898786.vrm",
+ "vroid/6/8764490087302036036/8764490087302036036.vrm",
+ "vroid/6/8772445562084793666/8772445562084793666.vrm",
+ "vroid/6/877359955137239176/877359955137239176.vrm",
+ "vroid/6/87742793581800166/87742793581800166.vrm",
+ "vroid/6/8775266567664003406/8775266567664003406.vrm",
+ "vroid/6/8777924418492762006/8777924418492762006.vrm",
+ "vroid/6/8787068630517775776/8787068630517775776.vrm",
+ "vroid/6/8787565301729020026/8787565301729020026.vrm",
+ "vroid/6/8788039270243795906/8788039270243795906.vrm",
+ "vroid/6/8788904763861909836/8788904763861909836.vrm",
+ "vroid/6/8790910723500286646/8790910723500286646.vrm",
+ "vroid/6/8791653288180724236/8791653288180724236.vrm",
+ "vroid/6/8793863054563311136/8793863054563311136.vrm",
+ "vroid/6/8794605404335385606/8794605404335385606.vrm",
+ "vroid/6/8795658192289288726/8795658192289288726.vrm",
+ "vroid/6/8796913968936060196/8796913968936060196.vrm",
+ "vroid/6/8797642502024766376/8797642502024766376.vrm",
+ "vroid/6/8800143430349582166/8800143430349582166.vrm",
+ "vroid/6/8808206072581761786/8808206072581761786.vrm",
+ "vroid/6/8814540461214173776/8814540461214173776.vrm",
+ "vroid/6/8817376205683152716/8817376205683152716.vrm",
+ "vroid/6/882780958676786236/882780958676786236.vrm",
+ "vroid/6/8830719869335133526/8830719869335133526.vrm",
+ "vroid/6/8833666608028044106/8833666608028044106.vrm",
+ "vroid/6/8851583786762687696/8851583786762687696.vrm",
+ "vroid/6/8859964188978966816/8859964188978966816.vrm",
+ "vroid/6/8873409808654091946/8873409808654091946.vrm",
+ "vroid/6/8895541135524891466/8895541135524891466.vrm",
+ "vroid/6/8896907062433281346/8896907062433281346.vrm",
+ "vroid/6/8900690735178904096/8900690735178904096.vrm",
+ "vroid/6/8908856044584625436/8908856044584625436.vrm",
+ "vroid/6/891374784736587466/891374784736587466.vrm",
+ "vroid/6/8914390666798052006/8914390666798052006.vrm",
+ "vroid/6/8916036895732522496/8916036895732522496.vrm",
+ "vroid/6/89168195241815716/89168195241815716.vrm",
+ "vroid/6/891769111166575206/891769111166575206.vrm",
+ "vroid/6/8919373056477977026/8919373056477977026.vrm",
+ "vroid/6/8924646905625068866/8924646905625068866.vrm",
+ "vroid/6/8926643537682873686/8926643537682873686.vrm",
+ "vroid/6/8929091165405835496/8929091165405835496.vrm",
+ "vroid/6/8930338407333944136/8930338407333944136.vrm",
+ "vroid/6/8932588464752947446/8932588464752947446.vrm",
+ "vroid/6/8939399463108716006/8939399463108716006.vrm",
+ "vroid/6/8940685119464047656/8940685119464047656.vrm",
+ "vroid/6/8948016012905208626/8948016012905208626.vrm",
+ "vroid/6/9007376986550208966/9007376986550208966.vrm",
+ "vroid/6/900750794054427966/900750794054427966.vrm",
+ "vroid/6/9017442908026448056/9017442908026448056.vrm",
+ "vroid/6/9041775430629453286/9041775430629453286.vrm",
+ "vroid/6/9042426227603016526/9042426227603016526.vrm",
+ "vroid/6/9054308763879343536/9054308763879343536.vrm",
+ "vroid/6/9054394352302976686/9054394352302976686.vrm",
+ "vroid/6/9062397779112408136/9062397779112408136.vrm",
+ "vroid/6/9075595152785858396/9075595152785858396.vrm",
+ "vroid/6/9082708495246760646/9082708495246760646.vrm",
+ "vroid/6/909052286420907286/909052286420907286.vrm",
+ "vroid/6/9093995410652265346/9093995410652265346.vrm",
+ "vroid/6/9096015633197067846/9096015633197067846.vrm",
+ "vroid/6/9099801193072789576/9099801193072789576.vrm",
+ "vroid/6/9105071270237228836/9105071270237228836.vrm",
+ "vroid/6/9107480203185842896/9107480203185842896.vrm",
+ "vroid/6/9108190571980993476/9108190571980993476.vrm",
+ "vroid/6/9129384844228822436/9129384844228822436.vrm",
+ "vroid/6/9135158949291689616/9135158949291689616.vrm",
+ "vroid/6/9140597884575101446/9140597884575101446.vrm",
+ "vroid/6/9152191649434698856/9152191649434698856.vrm",
+ "vroid/6/9180109282165231586/9180109282165231586.vrm",
+ "vroid/6/9182882771353803536/9182882771353803536.vrm",
+ "vroid/6/9190192908693009486/9190192908693009486.vrm",
+ "vroid/6/9190283105924502946/9190283105924502946.vrm",
+ "vroid/6/9192720680039779406/9192720680039779406.vrm",
+ "vroid/6/9207223743998733326/9207223743998733326.vrm",
+ "vroid/6/920921882879350946/920921882879350946.vrm",
+ "vroid/6/9216743680104853656/9216743680104853656.vrm",
+ "vroid/6/923553318313427556/923553318313427556.vrm",
+ "vroid/6/92745801467282626/92745801467282626.vrm",
+ "vroid/6/946439597855550536/946439597855550536.vrm",
+ "vroid/6/953596534129843716/953596534129843716.vrm",
+ "vroid/6/954939653284611476/954939653284611476.vrm",
+ "vroid/6/955227003479570346/955227003479570346.vrm",
+ "vroid/6/9726174788738236/9726174788738236.vrm",
+ "vroid/6/982681149074590146/982681149074590146.vrm",
+ "vroid/6/985246214621322536/985246214621322536.vrm",
+ "vroid/6/985984326449194236/985984326449194236.vrm",
+ "vroid/7/1001275948686780577/1001275948686780577.vrm",
+ "vroid/7/1004854449098419487/1004854449098419487.vrm",
+ "vroid/7/1018692019738838457/1018692019738838457.vrm",
+ "vroid/7/1027810996287678217/1027810996287678217.vrm",
+ "vroid/7/103206367548666917/103206367548666917.vrm",
+ "vroid/7/104100576231322597/104100576231322597.vrm",
+ "vroid/7/1054298803054846207/1054298803054846207.vrm",
+ "vroid/7/1065864042260651097/1065864042260651097.vrm",
+ "vroid/7/1071157004019001167/1071157004019001167.vrm",
+ "vroid/7/1078929730561102057/1078929730561102057.vrm",
+ "vroid/7/108532988064169667/108532988064169667.vrm",
+ "vroid/7/1090003227616075297/1090003227616075297.vrm",
+ "vroid/7/1098644675621653787/1098644675621653787.vrm",
+ "vroid/7/1105763048076748007/1105763048076748007.vrm",
+ "vroid/7/1108324869658085127/1108324869658085127.vrm",
+ "vroid/7/1134531217565158567/1134531217565158567.vrm",
+ "vroid/7/116550350665526057/116550350665526057.vrm",
+ "vroid/7/116551390766659957/116551390766659957.vrm",
+ "vroid/7/1171189077857243897/1171189077857243897.vrm",
+ "vroid/7/117131011405792567/117131011405792567.vrm",
+ "vroid/7/1177637310994117087/1177637310994117087.vrm",
+ "vroid/7/1180173737017484147/1180173737017484147.vrm",
+ "vroid/7/1180595135348072447/1180595135348072447.vrm",
+ "vroid/7/1183925625386073177/1183925625386073177.vrm",
+ "vroid/7/1187116067764854077/1187116067764854077.vrm",
+ "vroid/7/119151232827945417/119151232827945417.vrm",
+ "vroid/7/1198508932911996137/1198508932911996137.vrm",
+ "vroid/7/1204667184986944787/1204667184986944787.vrm",
+ "vroid/7/1206033872483429307/1206033872483429307.vrm",
+ "vroid/7/1206918545507786617/1206918545507786617.vrm",
+ "vroid/7/1207616825095120897/1207616825095120897.vrm",
+ "vroid/7/1211598850872718847/1211598850872718847.vrm",
+ "vroid/7/1221489356083788397/1221489356083788397.vrm",
+ "vroid/7/1221928582747353287/1221928582747353287.vrm",
+ "vroid/7/1229605431397241347/1229605431397241347.vrm",
+ "vroid/7/1232447729192267277/1232447729192267277.vrm",
+ "vroid/7/1235290824774309227/1235290824774309227.vrm",
+ "vroid/7/1236767901748326737/1236767901748326737.vrm",
+ "vroid/7/1237283141419043777/1237283141419043777.vrm",
+ "vroid/7/1240215154903398527/1240215154903398527.vrm",
+ "vroid/7/1244822227063302997/1244822227063302997.vrm",
+ "vroid/7/1246803187295569807/1246803187295569807.vrm",
+ "vroid/7/1249591367438663847/1249591367438663847.vrm",
+ "vroid/7/1257621784885787387/1257621784885787387.vrm",
+ "vroid/7/1262587078349618227/1262587078349618227.vrm",
+ "vroid/7/1267920000007019107/1267920000007019107.vrm",
+ "vroid/7/1268345487225644317/1268345487225644317.vrm",
+ "vroid/7/1272925668827597777/1272925668827597777.vrm",
+ "vroid/7/1291635074720847927/1291635074720847927.vrm",
+ "vroid/7/1306517510793250037/1306517510793250037.vrm",
+ "vroid/7/1310868947125996167/1310868947125996167.vrm",
+ "vroid/7/1316465203731685087/1316465203731685087.vrm",
+ "vroid/7/1324277971638096817/1324277971638096817.vrm",
+ "vroid/7/1330422229959245447/1330422229959245447.vrm",
+ "vroid/7/1341307979660293047/1341307979660293047.vrm",
+ "vroid/7/1341820125835939497/1341820125835939497.vrm",
+ "vroid/7/1344117656047718517/1344117656047718517.vrm",
+ "vroid/7/1360625021277357397/1360625021277357397.vrm",
+ "vroid/7/136427201476998957/136427201476998957.vrm",
+ "vroid/7/137063759898671257/137063759898671257.vrm",
+ "vroid/7/1373907050617161787/1373907050617161787.vrm",
+ "vroid/7/1374046475161493157/1374046475161493157.vrm",
+ "vroid/7/1379109529896518287/1379109529896518287.vrm",
+ "vroid/7/1382122020907703197/1382122020907703197.vrm",
+ "vroid/7/1382842979403050097/1382842979403050097.vrm",
+ "vroid/7/1383033157463184277/1383033157463184277.vrm",
+ "vroid/7/1383231684650162397/1383231684650162397.vrm",
+ "vroid/7/1386138814164009857/1386138814164009857.vrm",
+ "vroid/7/1391410003824850567/1391410003824850567.vrm",
+ "vroid/7/1401367010526942397/1401367010526942397.vrm",
+ "vroid/7/1405605546747008137/1405605546747008137.vrm",
+ "vroid/7/1421066311370106217/1421066311370106217.vrm",
+ "vroid/7/1445996615629653457/1445996615629653457.vrm",
+ "vroid/7/1459264414343062517/1459264414343062517.vrm",
+ "vroid/7/1484103586883380477/1484103586883380477.vrm",
+ "vroid/7/1486265896661776827/1486265896661776827.vrm",
+ "vroid/7/1496515729782978877/1496515729782978877.vrm",
+ "vroid/7/1505607978791517667/1505607978791517667.vrm",
+ "vroid/7/1506365063811110387/1506365063811110387.vrm",
+ "vroid/7/1506705964973792467/1506705964973792467.vrm",
+ "vroid/7/1526564023225479287/1526564023225479287.vrm",
+ "vroid/7/1528811595949746327/1528811595949746327.vrm",
+ "vroid/7/153298829330230487/153298829330230487.vrm",
+ "vroid/7/1538062269854027607/1538062269854027607.vrm",
+ "vroid/7/1551202276712815937/1551202276712815937.vrm",
+ "vroid/7/1554139888650241587/1554139888650241587.vrm",
+ "vroid/7/1557653509735398987/1557653509735398987.vrm",
+ "vroid/7/156091862841045137/156091862841045137.vrm",
+ "vroid/7/1562221825099293187/1562221825099293187.vrm",
+ "vroid/7/1562250259670503007/1562250259670503007.vrm",
+ "vroid/7/1562559798288763757/1562559798288763757.vrm",
+ "vroid/7/1562631876697279097/1562631876697279097.vrm",
+ "vroid/7/1576968564832378437/1576968564832378437.vrm",
+ "vroid/7/1578519780990340007/1578519780990340007.vrm",
+ "vroid/7/1583236156591986297/1583236156591986297.vrm",
+ "vroid/7/1619570448470570417/1619570448470570417.vrm",
+ "vroid/7/1622664686779566687/1622664686779566687.vrm",
+ "vroid/7/1633956533102500607/1633956533102500607.vrm",
+ "vroid/7/1635430471129290577/1635430471129290577.vrm",
+ "vroid/7/1636107407574317447/1636107407574317447.vrm",
+ "vroid/7/1645492824602948397/1645492824602948397.vrm",
+ "vroid/7/1645873195689114117/1645873195689114117.vrm",
+ "vroid/7/1655207796087338957/1655207796087338957.vrm",
+ "vroid/7/167618900961630167/167618900961630167.vrm",
+ "vroid/7/1683278045614619487/1683278045614619487.vrm",
+ "vroid/7/1694648712048699567/1694648712048699567.vrm",
+ "vroid/7/1698741256946276147/1698741256946276147.vrm",
+ "vroid/7/1699248471743156587/1699248471743156587.vrm",
+ "vroid/7/1722159858666067147/1722159858666067147.vrm",
+ "vroid/7/1733546621011217277/1733546621011217277.vrm",
+ "vroid/7/1734054250815685737/1734054250815685737.vrm",
+ "vroid/7/173772703949996297/173772703949996297.vrm",
+ "vroid/7/1751817668843199697/1751817668843199697.vrm",
+ "vroid/7/1761703692019200827/1761703692019200827.vrm",
+ "vroid/7/1764981851681763317/1764981851681763317.vrm",
+ "vroid/7/1770348186864103777/1770348186864103777.vrm",
+ "vroid/7/1770589225974505347/1770589225974505347.vrm",
+ "vroid/7/1796254415986388947/1796254415986388947.vrm",
+ "vroid/7/1801286527689757567/1801286527689757567.vrm",
+ "vroid/7/1813762583047261167/1813762583047261167.vrm",
+ "vroid/7/1815201308907991267/1815201308907991267.vrm",
+ "vroid/7/1816604045083729207/1816604045083729207.vrm",
+ "vroid/7/1819783923526497037/1819783923526497037.vrm",
+ "vroid/7/1831510747402349877/1831510747402349877.vrm",
+ "vroid/7/1838176824170147957/1838176824170147957.vrm",
+ "vroid/7/1838205091129417097/1838205091129417097.vrm",
+ "vroid/7/1844139867107463927/1844139867107463927.vrm",
+ "vroid/7/1844383384899486537/1844383384899486537.vrm",
+ "vroid/7/1846000824917760117/1846000824917760117.vrm",
+ "vroid/7/1849820359237822007/1849820359237822007.vrm",
+ "vroid/7/1850189607069988037/1850189607069988037.vrm",
+ "vroid/7/1853614806833290787/1853614806833290787.vrm",
+ "vroid/7/1855619439211468227/1855619439211468227.vrm",
+ "vroid/7/1857670794208191087/1857670794208191087.vrm",
+ "vroid/7/1858640716996955597/1858640716996955597.vrm",
+ "vroid/7/1871916430829609597/1871916430829609597.vrm",
+ "vroid/7/1872911650303099737/1872911650303099737.vrm",
+ "vroid/7/1879560145283243237/1879560145283243237.vrm",
+ "vroid/7/1886479159907376257/1886479159907376257.vrm",
+ "vroid/7/1892220514589385077/1892220514589385077.vrm",
+ "vroid/7/1899422642160338057/1899422642160338057.vrm",
+ "vroid/7/190612930457781367/190612930457781367.vrm",
+ "vroid/7/1916207582264278807/1916207582264278807.vrm",
+ "vroid/7/191636646161831247/191636646161831247.vrm",
+ "vroid/7/1921597549181717867/1921597549181717867.vrm",
+ "vroid/7/1922136820054607577/1922136820054607577.vrm",
+ "vroid/7/1923250641175162777/1923250641175162777.vrm",
+ "vroid/7/1936948070679979177/1936948070679979177.vrm",
+ "vroid/7/1937670498145490257/1937670498145490257.vrm",
+ "vroid/7/1952379192355950287/1952379192355950287.vrm",
+ "vroid/7/1967525747797518947/1967525747797518947.vrm",
+ "vroid/7/1976526660909347777/1976526660909347777.vrm",
+ "vroid/7/1981346349542247237/1981346349542247237.vrm",
+ "vroid/7/1989792230104160337/1989792230104160337.vrm",
+ "vroid/7/1995608879071424327/1995608879071424327.vrm",
+ "vroid/7/199855900740785337/199855900740785337.vrm",
+ "vroid/7/2003845539823451557/2003845539823451557.vrm",
+ "vroid/7/2004278986405498067/2004278986405498067.vrm",
+ "vroid/7/2004793794892196987/2004793794892196987.vrm",
+ "vroid/7/2010498885251420547/2010498885251420547.vrm",
+ "vroid/7/2016511229866901197/2016511229866901197.vrm",
+ "vroid/7/2019298367151599677/2019298367151599677.vrm",
+ "vroid/7/202684425822406657/202684425822406657.vrm",
+ "vroid/7/2040780035700336697/2040780035700336697.vrm",
+ "vroid/7/2059419536428766587/2059419536428766587.vrm",
+ "vroid/7/2065496480275303547/2065496480275303547.vrm",
+ "vroid/7/2078696694486322157/2078696694486322157.vrm",
+ "vroid/7/209133608536209577/209133608536209577.vrm",
+ "vroid/7/2093364225666675987/2093364225666675987.vrm",
+ "vroid/7/2103983204457149487/2103983204457149487.vrm",
+ "vroid/7/2105843759857931137/2105843759857931137.vrm",
+ "vroid/7/2143808767310865827/2143808767310865827.vrm",
+ "vroid/7/2151811050744187037/2151811050744187037.vrm",
+ "vroid/7/2167056133116220977/2167056133116220977.vrm",
+ "vroid/7/2169365389035554637/2169365389035554637.vrm",
+ "vroid/7/2176382610451430317/2176382610451430317.vrm",
+ "vroid/7/2179984061639500387/2179984061639500387.vrm",
+ "vroid/7/2186454895719003567/2186454895719003567.vrm",
+ "vroid/7/2192356550381367147/2192356550381367147.vrm",
+ "vroid/7/219348211883382827/219348211883382827.vrm",
+ "vroid/7/2198882208758788697/2198882208758788697.vrm",
+ "vroid/7/2209387025435056697/2209387025435056697.vrm",
+ "vroid/7/2213854042391524827/2213854042391524827.vrm",
+ "vroid/7/2229542695306025027/2229542695306025027.vrm",
+ "vroid/7/2234249235048399867/2234249235048399867.vrm",
+ "vroid/7/2261308401513898057/2261308401513898057.vrm",
+ "vroid/7/2263032842921924177/2263032842921924177.vrm",
+ "vroid/7/226978087051072877/226978087051072877.vrm",
+ "vroid/7/2271009628842692407/2271009628842692407.vrm",
+ "vroid/7/2282889993046535777/2282889993046535777.vrm",
+ "vroid/7/2293257581644114287/2293257581644114287.vrm",
+ "vroid/7/2299300447267810947/2299300447267810947.vrm",
+ "vroid/7/2305192704446027327/2305192704446027327.vrm",
+ "vroid/7/2306613364742496747/2306613364742496747.vrm",
+ "vroid/7/2307213097839446697/2307213097839446697.vrm",
+ "vroid/7/230777339060264337/230777339060264337.vrm",
+ "vroid/7/2310621882526083657/2310621882526083657.vrm",
+ "vroid/7/2311033727026071177/2311033727026071177.vrm",
+ "vroid/7/2321926116048857057/2321926116048857057.vrm",
+ "vroid/7/2326669202497061297/2326669202497061297.vrm",
+ "vroid/7/2344490880677818587/2344490880677818587.vrm",
+ "vroid/7/2346529205465560577/2346529205465560577.vrm",
+ "vroid/7/2349037199553766707/2349037199553766707.vrm",
+ "vroid/7/2351847574823934007/2351847574823934007.vrm",
+ "vroid/7/2363518494977933507/2363518494977933507.vrm",
+ "vroid/7/2364627772446858507/2364627772446858507.vrm",
+ "vroid/7/2373912662157900177/2373912662157900177.vrm",
+ "vroid/7/2375392543677628457/2375392543677628457.vrm",
+ "vroid/7/2376664136151863577/2376664136151863577.vrm",
+ "vroid/7/2378108028800346467/2378108028800346467.vrm",
+ "vroid/7/2378213207043999317/2378213207043999317.vrm",
+ "vroid/7/2378226935297613947/2378226935297613947.vrm",
+ "vroid/7/2381115272373641287/2381115272373641287.vrm",
+ "vroid/7/2384757039951031007/2384757039951031007.vrm",
+ "vroid/7/2385587358967069857/2385587358967069857.vrm",
+ "vroid/7/2389688847410819527/2389688847410819527.vrm",
+ "vroid/7/2393228363066015727/2393228363066015727.vrm",
+ "vroid/7/2394949431681560057/2394949431681560057.vrm",
+ "vroid/7/2400804745276328937/2400804745276328937.vrm",
+ "vroid/7/2401996016870535627/2401996016870535627.vrm",
+ "vroid/7/2419408216478513407/2419408216478513407.vrm",
+ "vroid/7/2420392349025520437/2420392349025520437.vrm",
+ "vroid/7/2420396570079432557/2420396570079432557.vrm",
+ "vroid/7/2420488947411320757/2420488947411320757.vrm",
+ "vroid/7/2423321845852862277/2423321845852862277.vrm",
+ "vroid/7/2425144324935212807/2425144324935212807.vrm",
+ "vroid/7/2440360783262562887/2440360783262562887.vrm",
+ "vroid/7/2445969680010772277/2445969680010772277.vrm",
+ "vroid/7/2449982284311914347/2449982284311914347.vrm",
+ "vroid/7/2452939211652804017/2452939211652804017.vrm",
+ "vroid/7/2454237346764965137/2454237346764965137.vrm",
+ "vroid/7/2464929169441080717/2464929169441080717.vrm",
+ "vroid/7/2472744627019609537/2472744627019609537.vrm",
+ "vroid/7/2473820833262195257/2473820833262195257.vrm",
+ "vroid/7/2474065617615745797/2474065617615745797.vrm",
+ "vroid/7/2475529140890849617/2475529140890849617.vrm",
+ "vroid/7/2476500663606532567/2476500663606532567.vrm",
+ "vroid/7/2480350416686924777/2480350416686924777.vrm",
+ "vroid/7/2487207711211066597/2487207711211066597.vrm",
+ "vroid/7/2520424014850472537/2520424014850472537.vrm",
+ "vroid/7/2520773292955632657/2520773292955632657.vrm",
+ "vroid/7/2522605662544500287/2522605662544500287.vrm",
+ "vroid/7/2523197298495909397/2523197298495909397.vrm",
+ "vroid/7/2528919749727969817/2528919749727969817.vrm",
+ "vroid/7/2529593770095536447/2529593770095536447.vrm",
+ "vroid/7/2537022276936884207/2537022276936884207.vrm",
+ "vroid/7/2537027757296998177/2537027757296998177.vrm",
+ "vroid/7/2537308324409365657/2537308324409365657.vrm",
+ "vroid/7/2541839886650256977/2541839886650256977.vrm",
+ "vroid/7/254199666039116287/254199666039116287.vrm",
+ "vroid/7/2543876689969202547/2543876689969202547.vrm",
+ "vroid/7/2544122692628433827/2544122692628433827.vrm",
+ "vroid/7/2547339687459757357/2547339687459757357.vrm",
+ "vroid/7/2547664192610087547/2547664192610087547.vrm",
+ "vroid/7/2567608417596005807/2567608417596005807.vrm",
+ "vroid/7/2570611352686308177/2570611352686308177.vrm",
+ "vroid/7/2574314011057272167/2574314011057272167.vrm",
+ "vroid/7/2580260280924010857/2580260280924010857.vrm",
+ "vroid/7/2582194016904293097/2582194016904293097.vrm",
+ "vroid/7/2584281921390981617/2584281921390981617.vrm",
+ "vroid/7/2585378725452501307/2585378725452501307.vrm",
+ "vroid/7/2589133693002318887/2589133693002318887.vrm",
+ "vroid/7/2597192814244133367/2597192814244133367.vrm",
+ "vroid/7/259990774085200377/259990774085200377.vrm",
+ "vroid/7/2622680862854148067/2622680862854148067.vrm",
+ "vroid/7/2626997649323615557/2626997649323615557.vrm",
+ "vroid/7/2632756318618985237/2632756318618985237.vrm",
+ "vroid/7/2633906408252400017/2633906408252400017.vrm",
+ "vroid/7/2636359049616758927/2636359049616758927.vrm",
+ "vroid/7/2642515805771749777/2642515805771749777.vrm",
+ "vroid/7/2647675969224624117/2647675969224624117.vrm",
+ "vroid/7/2651491442797385137/2651491442797385137.vrm",
+ "vroid/7/2663774224675899447/2663774224675899447.vrm",
+ "vroid/7/2666889453747255017/2666889453747255017.vrm",
+ "vroid/7/266935569462671807/266935569462671807.vrm",
+ "vroid/7/2672868711170877577/2672868711170877577.vrm",
+ "vroid/7/2678954200110114447/2678954200110114447.vrm",
+ "vroid/7/2691996046269275567/2691996046269275567.vrm",
+ "vroid/7/2695819361343807207/2695819361343807207.vrm",
+ "vroid/7/2705371733125437607/2705371733125437607.vrm",
+ "vroid/7/2708903577881739497/2708903577881739497.vrm",
+ "vroid/7/2712108697640430467/2712108697640430467.vrm",
+ "vroid/7/2712515312536935847/2712515312536935847.vrm",
+ "vroid/7/272952601946739177/272952601946739177.vrm",
+ "vroid/7/2735192162462051547/2735192162462051547.vrm",
+ "vroid/7/2745635656176229587/2745635656176229587.vrm",
+ "vroid/7/2749002153156228197/2749002153156228197.vrm",
+ "vroid/7/2751465388730196277/2751465388730196277.vrm",
+ "vroid/7/2759709861084243267/2759709861084243267.vrm",
+ "vroid/7/2767149924011007567/2767149924011007567.vrm",
+ "vroid/7/2774899634430421147/2774899634430421147.vrm",
+ "vroid/7/2785158049930152067/2785158049930152067.vrm",
+ "vroid/7/2800066455350765067/2800066455350765067.vrm",
+ "vroid/7/2816000223816454437/2816000223816454437.vrm",
+ "vroid/7/2818168321152672187/2818168321152672187.vrm",
+ "vroid/7/2824689386300465357/2824689386300465357.vrm",
+ "vroid/7/2826671014422644457/2826671014422644457.vrm",
+ "vroid/7/2844645667583617447/2844645667583617447.vrm",
+ "vroid/7/2849031253588506607/2849031253588506607.vrm",
+ "vroid/7/2859644252290454467/2859644252290454467.vrm",
+ "vroid/7/2867185632226493737/2867185632226493737.vrm",
+ "vroid/7/2875574159722699637/2875574159722699637.vrm",
+ "vroid/7/2880905860079566247/2880905860079566247.vrm",
+ "vroid/7/2881722312769561087/2881722312769561087.vrm",
+ "vroid/7/2894701758886328357/2894701758886328357.vrm",
+ "vroid/7/2902859845798083487/2902859845798083487.vrm",
+ "vroid/7/2904921391784086537/2904921391784086537.vrm",
+ "vroid/7/2917840701510878137/2917840701510878137.vrm",
+ "vroid/7/2924717007457235247/2924717007457235247.vrm",
+ "vroid/7/2926259751685155417/2926259751685155417.vrm",
+ "vroid/7/2926517149182447467/2926517149182447467.vrm",
+ "vroid/7/2927712622941703557/2927712622941703557.vrm",
+ "vroid/7/2927854883065529947/2927854883065529947.vrm",
+ "vroid/7/2928482163526520667/2928482163526520667.vrm",
+ "vroid/7/2930853078693643147/2930853078693643147.vrm",
+ "vroid/7/2935339105576984837/2935339105576984837.vrm",
+ "vroid/7/2936011985416284717/2936011985416284717.vrm",
+ "vroid/7/29533081765335847/29533081765335847.vrm",
+ "vroid/7/2958432709450440277/2958432709450440277.vrm",
+ "vroid/7/29852354032784907/29852354032784907.vrm",
+ "vroid/7/2987301109494136257/2987301109494136257.vrm",
+ "vroid/7/2991745418210736387/2991745418210736387.vrm",
+ "vroid/7/299968673084547367/299968673084547367.vrm",
+ "vroid/7/3005640663507216057/3005640663507216057.vrm",
+ "vroid/7/3009037900138814167/3009037900138814167.vrm",
+ "vroid/7/3018228564712132987/3018228564712132987.vrm",
+ "vroid/7/3038525605934250667/3038525605934250667.vrm",
+ "vroid/7/3039199415723852567/3039199415723852567.vrm",
+ "vroid/7/304706673322811217/304706673322811217.vrm",
+ "vroid/7/3061888401568764607/3061888401568764607.vrm",
+ "vroid/7/3069296909705004387/3069296909705004387.vrm",
+ "vroid/7/3090051522617200337/3090051522617200337.vrm",
+ "vroid/7/3090179438311466787/3090179438311466787.vrm",
+ "vroid/7/3090507406273800117/3090507406273800117.vrm",
+ "vroid/7/3092019083358331267/3092019083358331267.vrm",
+ "vroid/7/3093132311502316247/3093132311502316247.vrm",
+ "vroid/7/3093814438233414617/3093814438233414617.vrm",
+ "vroid/7/3096321177420802227/3096321177420802227.vrm",
+ "vroid/7/3104109662674926717/3104109662674926717.vrm",
+ "vroid/7/3105241867156406587/3105241867156406587.vrm",
+ "vroid/7/3106549861331845557/3106549861331845557.vrm",
+ "vroid/7/3118648897025360317/3118648897025360317.vrm",
+ "vroid/7/3126291427755749797/3126291427755749797.vrm",
+ "vroid/7/3151228324753359507/3151228324753359507.vrm",
+ "vroid/7/3173297207799493507/3173297207799493507.vrm",
+ "vroid/7/3174355482581202467/3174355482581202467.vrm",
+ "vroid/7/3178988669591061567/3178988669591061567.vrm",
+ "vroid/7/3187808354585955327/3187808354585955327.vrm",
+ "vroid/7/3188097870371432997/3188097870371432997.vrm",
+ "vroid/7/3191319983262881117/3191319983262881117.vrm",
+ "vroid/7/3195437886143866507/3195437886143866507.vrm",
+ "vroid/7/3199361337142473477/3199361337142473477.vrm",
+ "vroid/7/3199511126967243017/3199511126967243017.vrm",
+ "vroid/7/3211474043337062707/3211474043337062707.vrm",
+ "vroid/7/3215962998547783007/3215962998547783007.vrm",
+ "vroid/7/3218018896918193557/3218018896918193557.vrm",
+ "vroid/7/3219192433804622987/3219192433804622987.vrm",
+ "vroid/7/3222885943297687557/3222885943297687557.vrm",
+ "vroid/7/322678593738310197/322678593738310197.vrm",
+ "vroid/7/3227002958768452717/3227002958768452717.vrm",
+ "vroid/7/3233112343902279177/3233112343902279177.vrm",
+ "vroid/7/3243957917999101577/3243957917999101577.vrm",
+ "vroid/7/3245585313052677267/3245585313052677267.vrm",
+ "vroid/7/3252177732926636337/3252177732926636337.vrm",
+ "vroid/7/3252599679782929947/3252599679782929947.vrm",
+ "vroid/7/326609632064251477/326609632064251477.vrm",
+ "vroid/7/3269514717700892487/3269514717700892487.vrm",
+ "vroid/7/3271961366566910537/3271961366566910537.vrm",
+ "vroid/7/3278200331759101167/3278200331759101167.vrm",
+ "vroid/7/3282281123036432947/3282281123036432947.vrm",
+ "vroid/7/3291539818879534117/3291539818879534117.vrm",
+ "vroid/7/3324993432000333367/3324993432000333367.vrm",
+ "vroid/7/3338521600195596987/3338521600195596987.vrm",
+ "vroid/7/3344375804897637197/3344375804897637197.vrm",
+ "vroid/7/3348183575678402367/3348183575678402367.vrm",
+ "vroid/7/3362562492238624687/3362562492238624687.vrm",
+ "vroid/7/336281830625976847/336281830625976847.vrm",
+ "vroid/7/336326409094997787/336326409094997787.vrm",
+ "vroid/7/3377108819263729397/3377108819263729397.vrm",
+ "vroid/7/3383751442912063017/3383751442912063017.vrm",
+ "vroid/7/3395181679260714177/3395181679260714177.vrm",
+ "vroid/7/3397502466712582407/3397502466712582407.vrm",
+ "vroid/7/3404490400099647277/3404490400099647277.vrm",
+ "vroid/7/3411596159831135987/3411596159831135987.vrm",
+ "vroid/7/342962167228110697/342962167228110697.vrm",
+ "vroid/7/3433371201270370687/3433371201270370687.vrm",
+ "vroid/7/3437676569737709757/3437676569737709757.vrm",
+ "vroid/7/3439809555813808357/3439809555813808357.vrm",
+ "vroid/7/34453838408662767/34453838408662767.vrm",
+ "vroid/7/3447317242581549297/3447317242581549297.vrm",
+ "vroid/7/345328220680777217/345328220680777217.vrm",
+ "vroid/7/3453330000417018147/3453330000417018147.vrm",
+ "vroid/7/3471065606740368577/3471065606740368577.vrm",
+ "vroid/7/3472269854063970697/3472269854063970697.vrm",
+ "vroid/7/3495096849149341707/3495096849149341707.vrm",
+ "vroid/7/3503048188506196397/3503048188506196397.vrm",
+ "vroid/7/3505123583591676127/3505123583591676127.vrm",
+ "vroid/7/3519944634925339307/3519944634925339307.vrm",
+ "vroid/7/3522053891775970657/3522053891775970657.vrm",
+ "vroid/7/3524858046108920487/3524858046108920487.vrm",
+ "vroid/7/3548333452369501977/3548333452369501977.vrm",
+ "vroid/7/3550907445380588827/3550907445380588827.vrm",
+ "vroid/7/3551482608657491937/3551482608657491937.vrm",
+ "vroid/7/3557861744347677047/3557861744347677047.vrm",
+ "vroid/7/3558775747782382207/3558775747782382207.vrm",
+ "vroid/7/3566876752844485807/3566876752844485807.vrm",
+ "vroid/7/3582930515212513617/3582930515212513617.vrm",
+ "vroid/7/358755599425615387/358755599425615387.vrm",
+ "vroid/7/3590655910319396887/3590655910319396887.vrm",
+ "vroid/7/360518965281118547/360518965281118547.vrm",
+ "vroid/7/3605410899890848497/3605410899890848497.vrm",
+ "vroid/7/3607306510433700757/3607306510433700757.vrm",
+ "vroid/7/3609430347953103917/3609430347953103917.vrm",
+ "vroid/7/3612774442973836597/3612774442973836597.vrm",
+ "vroid/7/3621644345067921057/3621644345067921057.vrm",
+ "vroid/7/3623614682534708437/3623614682534708437.vrm",
+ "vroid/7/3631603070348930857/3631603070348930857.vrm",
+ "vroid/7/3632232380688737927/3632232380688737927.vrm",
+ "vroid/7/3633630746826254717/3633630746826254717.vrm",
+ "vroid/7/363838578976305237/363838578976305237.vrm",
+ "vroid/7/3642443620398288367/3642443620398288367.vrm",
+ "vroid/7/3645329034326328807/3645329034326328807.vrm",
+ "vroid/7/364958652151649287/364958652151649287.vrm",
+ "vroid/7/3662220453068700207/3662220453068700207.vrm",
+ "vroid/7/3665913406416693357/3665913406416693357.vrm",
+ "vroid/7/3665996814330302957/3665996814330302957.vrm",
+ "vroid/7/3668161730048930967/3668161730048930967.vrm",
+ "vroid/7/3669222752640322207/3669222752640322207.vrm",
+ "vroid/7/3673815939805333547/3673815939805333547.vrm",
+ "vroid/7/3678260627439792087/3678260627439792087.vrm",
+ "vroid/7/3690734718789692287/3690734718789692287.vrm",
+ "vroid/7/3696960306492083587/3696960306492083587.vrm",
+ "vroid/7/3699350283001042097/3699350283001042097.vrm",
+ "vroid/7/3705159738470177027/3705159738470177027.vrm",
+ "vroid/7/3714113790510676567/3714113790510676567.vrm",
+ "vroid/7/3721967170648584257/3721967170648584257.vrm",
+ "vroid/7/3728049595016557407/3728049595016557407.vrm",
+ "vroid/7/3728412715461840847/3728412715461840847.vrm",
+ "vroid/7/3737027146112734327/3737027146112734327.vrm",
+ "vroid/7/3749944138508065767/3749944138508065767.vrm",
+ "vroid/7/3752548468959819547/3752548468959819547.vrm",
+ "vroid/7/375520030537276037/375520030537276037.vrm",
+ "vroid/7/3759582051582066307/3759582051582066307.vrm",
+ "vroid/7/3763028558459685547/3763028558459685547.vrm",
+ "vroid/7/377071434365134617/377071434365134617.vrm",
+ "vroid/7/3774413198004757757/3774413198004757757.vrm",
+ "vroid/7/3778859009117698247/3778859009117698247.vrm",
+ "vroid/7/3793472776023018657/3793472776023018657.vrm",
+ "vroid/7/3798949804770552977/3798949804770552977.vrm",
+ "vroid/7/3810444915649673717/3810444915649673717.vrm",
+ "vroid/7/3816874439776906317/3816874439776906317.vrm",
+ "vroid/7/3831717135931253277/3831717135931253277.vrm",
+ "vroid/7/383299262453677357/383299262453677357.vrm",
+ "vroid/7/3836869362342795947/3836869362342795947.vrm",
+ "vroid/7/3847672316131023847/3847672316131023847.vrm",
+ "vroid/7/3849906660155441127/3849906660155441127.vrm",
+ "vroid/7/3852761595401473507/3852761595401473507.vrm",
+ "vroid/7/3854371172595276927/3854371172595276927.vrm",
+ "vroid/7/3859301043507246267/3859301043507246267.vrm",
+ "vroid/7/3865313540992093417/3865313540992093417.vrm",
+ "vroid/7/3881308784029097797/3881308784029097797.vrm",
+ "vroid/7/3886869359265091287/3886869359265091287.vrm",
+ "vroid/7/3895348923606022867/3895348923606022867.vrm",
+ "vroid/7/390940492765520137/390940492765520137.vrm",
+ "vroid/7/3913533266029732107/3913533266029732107.vrm",
+ "vroid/7/391487959521697967/391487959521697967.vrm",
+ "vroid/7/3930464084186264507/3930464084186264507.vrm",
+ "vroid/7/3930750181567355187/3930750181567355187.vrm",
+ "vroid/7/3934305875901031207/3934305875901031207.vrm",
+ "vroid/7/3938502866467459727/3938502866467459727.vrm",
+ "vroid/7/3941000891086446027/3941000891086446027.vrm",
+ "vroid/7/3946167737741576627/3946167737741576627.vrm",
+ "vroid/7/3947991631103385387/3947991631103385387.vrm",
+ "vroid/7/3955115531719040997/3955115531719040997.vrm",
+ "vroid/7/3967546654618180777/3967546654618180777.vrm",
+ "vroid/7/3976716911050222917/3976716911050222917.vrm",
+ "vroid/7/3982863996346959057/3982863996346959057.vrm",
+ "vroid/7/3985032368061297307/3985032368061297307.vrm",
+ "vroid/7/4001294447373424977/4001294447373424977.vrm",
+ "vroid/7/4002792859859369767/4002792859859369767.vrm",
+ "vroid/7/4009977922356621037/4009977922356621037.vrm",
+ "vroid/7/4011195138481308587/4011195138481308587.vrm",
+ "vroid/7/401228575530480567/401228575530480567.vrm",
+ "vroid/7/4019596718346047977/4019596718346047977.vrm",
+ "vroid/7/4026683158242139497/4026683158242139497.vrm",
+ "vroid/7/4029725348772069327/4029725348772069327.vrm",
+ "vroid/7/4034168875723545477/4034168875723545477.vrm",
+ "vroid/7/4052027786765257427/4052027786765257427.vrm",
+ "vroid/7/4058544764288868877/4058544764288868877.vrm",
+ "vroid/7/4062943254183654417/4062943254183654417.vrm",
+ "vroid/7/4067293741378730337/4067293741378730337.vrm",
+ "vroid/7/4069527967281881297/4069527967281881297.vrm",
+ "vroid/7/4082304263968528077/4082304263968528077.vrm",
+ "vroid/7/4082413921410384247/4082413921410384247.vrm",
+ "vroid/7/409537938516786897/409537938516786897.vrm",
+ "vroid/7/4095439911000978827/4095439911000978827.vrm",
+ "vroid/7/4104994908429929267/4104994908429929267.vrm",
+ "vroid/7/4122299558086276137/4122299558086276137.vrm",
+ "vroid/7/4122484672565554237/4122484672565554237.vrm",
+ "vroid/7/4123617359075585797/4123617359075585797.vrm",
+ "vroid/7/4124815132035218877/4124815132035218877.vrm",
+ "vroid/7/4132960724069979487/4132960724069979487.vrm",
+ "vroid/7/4133365735688699837/4133365735688699837.vrm",
+ "vroid/7/4135597356288791197/4135597356288791197.vrm",
+ "vroid/7/4136169028127137817/4136169028127137817.vrm",
+ "vroid/7/4140949479117258487/4140949479117258487.vrm",
+ "vroid/7/4141765115029302337/4141765115029302337.vrm",
+ "vroid/7/4144922250519743927/4144922250519743927.vrm",
+ "vroid/7/4159696367168820317/4159696367168820317.vrm",
+ "vroid/7/4170067787791072667/4170067787791072667.vrm",
+ "vroid/7/4175309191379951557/4175309191379951557.vrm",
+ "vroid/7/4178372727600568507/4178372727600568507.vrm",
+ "vroid/7/417850363743382317/417850363743382317.vrm",
+ "vroid/7/4181392241445967147/4181392241445967147.vrm",
+ "vroid/7/4182726708336054127/4182726708336054127.vrm",
+ "vroid/7/4183364297983554747/4183364297983554747.vrm",
+ "vroid/7/4183371216670817507/4183371216670817507.vrm",
+ "vroid/7/4203231080483900877/4203231080483900877.vrm",
+ "vroid/7/420545608616777747/420545608616777747.vrm",
+ "vroid/7/4207171294159849127/4207171294159849127.vrm",
+ "vroid/7/4223942971195872667/4223942971195872667.vrm",
+ "vroid/7/4226235391029714827/4226235391029714827.vrm",
+ "vroid/7/4228656550557881597/4228656550557881597.vrm",
+ "vroid/7/4229677240903762117/4229677240903762117.vrm",
+ "vroid/7/4250096381198481187/4250096381198481187.vrm",
+ "vroid/7/4257544651424114977/4257544651424114977.vrm",
+ "vroid/7/4258119719849017637/4258119719849017637.vrm",
+ "vroid/7/4263096714444181367/4263096714444181367.vrm",
+ "vroid/7/426881917874326307/426881917874326307.vrm",
+ "vroid/7/4291068726621898897/4291068726621898897.vrm",
+ "vroid/7/4293719228625953047/4293719228625953047.vrm",
+ "vroid/7/4295975086255889857/4295975086255889857.vrm",
+ "vroid/7/4296977833341991587/4296977833341991587.vrm",
+ "vroid/7/430441809209082177/430441809209082177.vrm",
+ "vroid/7/4308017737476647967/4308017737476647967.vrm",
+ "vroid/7/4309226225188676907/4309226225188676907.vrm",
+ "vroid/7/4313572111609037147/4313572111609037147.vrm",
+ "vroid/7/4318412647287407147/4318412647287407147.vrm",
+ "vroid/7/4324193076187289747/4324193076187289747.vrm",
+ "vroid/7/4328230255846348527/4328230255846348527.vrm",
+ "vroid/7/4329043051113539287/4329043051113539287.vrm",
+ "vroid/7/4335149419828248437/4335149419828248437.vrm",
+ "vroid/7/4335356440674269817/4335356440674269817.vrm",
+ "vroid/7/4347208334091004997/4347208334091004997.vrm",
+ "vroid/7/4356789560664003867/4356789560664003867.vrm",
+ "vroid/7/4357384925726277837/4357384925726277837.vrm",
+ "vroid/7/4366238731247523767/4366238731247523767.vrm",
+ "vroid/7/4371732289267430857/4371732289267430857.vrm",
+ "vroid/7/438574690260021037/438574690260021037.vrm",
+ "vroid/7/4401491402418227867/4401491402418227867.vrm",
+ "vroid/7/4410052816285592437/4410052816285592437.vrm",
+ "vroid/7/4413128709117248607/4413128709117248607.vrm",
+ "vroid/7/4413508981436256927/4413508981436256927.vrm",
+ "vroid/7/4414437805779898947/4414437805779898947.vrm",
+ "vroid/7/4432551827680920017/4432551827680920017.vrm",
+ "vroid/7/4435979472239638707/4435979472239638707.vrm",
+ "vroid/7/444426881580827837/444426881580827837.vrm",
+ "vroid/7/4444689493617863247/4444689493617863247.vrm",
+ "vroid/7/4466224657171187557/4466224657171187557.vrm",
+ "vroid/7/4471404314156056567/4471404314156056567.vrm",
+ "vroid/7/448008915535927557/448008915535927557.vrm",
+ "vroid/7/448405130221497117/448405130221497117.vrm",
+ "vroid/7/4488911079907073267/4488911079907073267.vrm",
+ "vroid/7/4489768435989353137/4489768435989353137.vrm",
+ "vroid/7/4490111009466934127/4490111009466934127.vrm",
+ "vroid/7/4491014125008720587/4491014125008720587.vrm",
+ "vroid/7/4493977927170549647/4493977927170549647.vrm",
+ "vroid/7/4510147468132558197/4510147468132558197.vrm",
+ "vroid/7/4511948166165907617/4511948166165907617.vrm",
+ "vroid/7/4524888762390440177/4524888762390440177.vrm",
+ "vroid/7/4526534244162930567/4526534244162930567.vrm",
+ "vroid/7/4532580569220639547/4532580569220639547.vrm",
+ "vroid/7/4543024145061153307/4543024145061153307.vrm",
+ "vroid/7/4547737423078076187/4547737423078076187.vrm",
+ "vroid/7/4565541047352487167/4565541047352487167.vrm",
+ "vroid/7/4572977518803093287/4572977518803093287.vrm",
+ "vroid/7/4578265063053476747/4578265063053476747.vrm",
+ "vroid/7/458328927745656987/458328927745656987.vrm",
+ "vroid/7/4589208847087125897/4589208847087125897.vrm",
+ "vroid/7/4589894678301303957/4589894678301303957.vrm",
+ "vroid/7/4594061062940913797/4594061062940913797.vrm",
+ "vroid/7/4604101735828510727/4604101735828510727.vrm",
+ "vroid/7/4612186942107053737/4612186942107053737.vrm",
+ "vroid/7/4621436628439392957/4621436628439392957.vrm",
+ "vroid/7/4623429262443406327/4623429262443406327.vrm",
+ "vroid/7/462725080085689147/462725080085689147.vrm",
+ "vroid/7/4630023830386663317/4630023830386663317.vrm",
+ "vroid/7/4631010091060480987/4631010091060480987.vrm",
+ "vroid/7/464371662989350047/464371662989350047.vrm",
+ "vroid/7/4650072623861625327/4650072623861625327.vrm",
+ "vroid/7/4651232259934869177/4651232259934869177.vrm",
+ "vroid/7/4653720836717610037/4653720836717610037.vrm",
+ "vroid/7/4655049288139881937/4655049288139881937.vrm",
+ "vroid/7/4655710601805040517/4655710601805040517.vrm",
+ "vroid/7/4660798831677333657/4660798831677333657.vrm",
+ "vroid/7/4662636799370396877/4662636799370396877.vrm",
+ "vroid/7/4667577576913965907/4667577576913965907.vrm",
+ "vroid/7/4672676854000528927/4672676854000528927.vrm",
+ "vroid/7/4678771896566913767/4678771896566913767.vrm",
+ "vroid/7/4682340036567578907/4682340036567578907.vrm",
+ "vroid/7/4683457172478674257/4683457172478674257.vrm",
+ "vroid/7/4684255223753092697/4684255223753092697.vrm",
+ "vroid/7/4688455293553688987/4688455293553688987.vrm",
+ "vroid/7/4693812212409630557/4693812212409630557.vrm",
+ "vroid/7/4709928054918724267/4709928054918724267.vrm",
+ "vroid/7/4714031074648211247/4714031074648211247.vrm",
+ "vroid/7/4719673542266804677/4719673542266804677.vrm",
+ "vroid/7/4727478503589516527/4727478503589516527.vrm",
+ "vroid/7/4728063619245621007/4728063619245621007.vrm",
+ "vroid/7/4739412149587899987/4739412149587899987.vrm",
+ "vroid/7/4746634862485321777/4746634862485321777.vrm",
+ "vroid/7/4777056092375273967/4777056092375273967.vrm",
+ "vroid/7/4783025138317778907/4783025138317778907.vrm",
+ "vroid/7/4786192340403033387/4786192340403033387.vrm",
+ "vroid/7/4787686305407462397/4787686305407462397.vrm",
+ "vroid/7/4792342067566126457/4792342067566126457.vrm",
+ "vroid/7/4798016391042827897/4798016391042827897.vrm",
+ "vroid/7/480175159328821397/480175159328821397.vrm",
+ "vroid/7/4811830552924471227/4811830552924471227.vrm",
+ "vroid/7/4815118556051288177/4815118556051288177.vrm",
+ "vroid/7/4827272098599333707/4827272098599333707.vrm",
+ "vroid/7/4840119153257906327/4840119153257906327.vrm",
+ "vroid/7/4852784191315959567/4852784191315959567.vrm",
+ "vroid/7/4853019104901508197/4853019104901508197.vrm",
+ "vroid/7/4855940873251212847/4855940873251212847.vrm",
+ "vroid/7/4856745643822702607/4856745643822702607.vrm",
+ "vroid/7/4864054810985074967/4864054810985074967.vrm",
+ "vroid/7/4873809031226641157/4873809031226641157.vrm",
+ "vroid/7/4880360715505047307/4880360715505047307.vrm",
+ "vroid/7/4881499452777769657/4881499452777769657.vrm",
+ "vroid/7/4882993236068094817/4882993236068094817.vrm",
+ "vroid/7/4884106938016624997/4884106938016624997.vrm",
+ "vroid/7/4886477168100164217/4886477168100164217.vrm",
+ "vroid/7/4886901751625385067/4886901751625385067.vrm",
+ "vroid/7/4890897435894363497/4890897435894363497.vrm",
+ "vroid/7/4896074338113329997/4896074338113329997.vrm",
+ "vroid/7/4896421765475612457/4896421765475612457.vrm",
+ "vroid/7/4896705039780830627/4896705039780830627.vrm",
+ "vroid/7/4898917940292948417/4898917940292948417.vrm",
+ "vroid/7/4899165504429926447/4899165504429926447.vrm",
+ "vroid/7/4936642069086177097/4936642069086177097.vrm",
+ "vroid/7/4937996678296405807/4937996678296405807.vrm",
+ "vroid/7/4942633818553105087/4942633818553105087.vrm",
+ "vroid/7/4957719108449168867/4957719108449168867.vrm",
+ "vroid/7/4964742196736765117/4964742196736765117.vrm",
+ "vroid/7/4965706196020366667/4965706196020366667.vrm",
+ "vroid/7/4966336986572319047/4966336986572319047.vrm",
+ "vroid/7/4968635339374860587/4968635339374860587.vrm",
+ "vroid/7/4974274915383238797/4974274915383238797.vrm",
+ "vroid/7/4985948676210147337/4985948676210147337.vrm",
+ "vroid/7/4988856258829834047/4988856258829834047.vrm",
+ "vroid/7/5014702847040237287/5014702847040237287.vrm",
+ "vroid/7/5016926624686722917/5016926624686722917.vrm",
+ "vroid/7/5017966637185110297/5017966637185110297.vrm",
+ "vroid/7/5027730783509956227/5027730783509956227.vrm",
+ "vroid/7/5044072376324951557/5044072376324951557.vrm",
+ "vroid/7/5046817007938802667/5046817007938802667.vrm",
+ "vroid/7/5051814717269180697/5051814717269180697.vrm",
+ "vroid/7/505244405396275357/505244405396275357.vrm",
+ "vroid/7/5052586878171430347/5052586878171430347.vrm",
+ "vroid/7/5053663483564231077/5053663483564231077.vrm",
+ "vroid/7/5058415052079691377/5058415052079691377.vrm",
+ "vroid/7/5065110062366560957/5065110062366560957.vrm",
+ "vroid/7/5072909369972520047/5072909369972520047.vrm",
+ "vroid/7/5076337331154749717/5076337331154749717.vrm",
+ "vroid/7/5079758101755988507/5079758101755988507.vrm",
+ "vroid/7/5092090866899578807/5092090866899578807.vrm",
+ "vroid/7/5092367308050977167/5092367308050977167.vrm",
+ "vroid/7/5097434243769810997/5097434243769810997.vrm",
+ "vroid/7/5120391731932215207/5120391731932215207.vrm",
+ "vroid/7/5120679132118417367/5120679132118417367.vrm",
+ "vroid/7/5123264782288536667/5123264782288536667.vrm",
+ "vroid/7/5129150007579972317/5129150007579972317.vrm",
+ "vroid/7/5131600468590488677/5131600468590488677.vrm",
+ "vroid/7/5152351496489571067/5152351496489571067.vrm",
+ "vroid/7/5161288922716646227/5161288922716646227.vrm",
+ "vroid/7/5167133522137341067/5167133522137341067.vrm",
+ "vroid/7/518965495849648047/518965495849648047.vrm",
+ "vroid/7/5190302281040366877/5190302281040366877.vrm",
+ "vroid/7/5193466635107142977/5193466635107142977.vrm",
+ "vroid/7/5197183485665071267/5197183485665071267.vrm",
+ "vroid/7/5198359160002068797/5198359160002068797.vrm",
+ "vroid/7/5208394240130356187/5208394240130356187.vrm",
+ "vroid/7/5209430350995621687/5209430350995621687.vrm",
+ "vroid/7/5210903041834772657/5210903041834772657.vrm",
+ "vroid/7/5213391661802159467/5213391661802159467.vrm",
+ "vroid/7/5225739374137694737/5225739374137694737.vrm",
+ "vroid/7/5226529340890436527/5226529340890436527.vrm",
+ "vroid/7/5226754176773440347/5226754176773440347.vrm",
+ "vroid/7/5227141204269916097/5227141204269916097.vrm",
+ "vroid/7/5231482180743306837/5231482180743306837.vrm",
+ "vroid/7/523501242195698347/523501242195698347.vrm",
+ "vroid/7/5248654605167672387/5248654605167672387.vrm",
+ "vroid/7/524980998480594867/524980998480594867.vrm",
+ "vroid/7/5250038153480526687/5250038153480526687.vrm",
+ "vroid/7/5258432391744652647/5258432391744652647.vrm",
+ "vroid/7/5259927902280274437/5259927902280274437.vrm",
+ "vroid/7/5264670331393928587/5264670331393928587.vrm",
+ "vroid/7/5278765065231831707/5278765065231831707.vrm",
+ "vroid/7/5284427820181663887/5284427820181663887.vrm",
+ "vroid/7/529458178589970147/529458178589970147.vrm",
+ "vroid/7/5319411785513282797/5319411785513282797.vrm",
+ "vroid/7/532552848643382777/532552848643382777.vrm",
+ "vroid/7/5346065413299975877/5346065413299975877.vrm",
+ "vroid/7/5351859666144405087/5351859666144405087.vrm",
+ "vroid/7/5358436243058806477/5358436243058806477.vrm",
+ "vroid/7/5360395696046039077/5360395696046039077.vrm",
+ "vroid/7/5363669486736452597/5363669486736452597.vrm",
+ "vroid/7/5363838867224642157/5363838867224642157.vrm",
+ "vroid/7/5365220954499245437/5365220954499245437.vrm",
+ "vroid/7/5381742983103544567/5381742983103544567.vrm",
+ "vroid/7/5385230070911431637/5385230070911431637.vrm",
+ "vroid/7/5386663539470272777/5386663539470272777.vrm",
+ "vroid/7/5391388898778832417/5391388898778832417.vrm",
+ "vroid/7/5393686233687223517/5393686233687223517.vrm",
+ "vroid/7/5399249927705826277/5399249927705826277.vrm",
+ "vroid/7/540474236660219487/540474236660219487.vrm",
+ "vroid/7/5410357495138846267/5410357495138846267.vrm",
+ "vroid/7/5425714201660345387/5425714201660345387.vrm",
+ "vroid/7/5427204764500978847/5427204764500978847.vrm",
+ "vroid/7/5441695703649805627/5441695703649805627.vrm",
+ "vroid/7/5443160678431595837/5443160678431595837.vrm",
+ "vroid/7/5443531488308032057/5443531488308032057.vrm",
+ "vroid/7/5445260594625275647/5445260594625275647.vrm",
+ "vroid/7/5446945317633545107/5446945317633545107.vrm",
+ "vroid/7/5452213415901008767/5452213415901008767.vrm",
+ "vroid/7/5456154778222003457/5456154778222003457.vrm",
+ "vroid/7/5463842245333619667/5463842245333619667.vrm",
+ "vroid/7/5467460287230552457/5467460287230552457.vrm",
+ "vroid/7/5469011199918495207/5469011199918495207.vrm",
+ "vroid/7/5472983361868416817/5472983361868416817.vrm",
+ "vroid/7/5477651714106780337/5477651714106780337.vrm",
+ "vroid/7/5478344968181588917/5478344968181588917.vrm",
+ "vroid/7/5483013374646365307/5483013374646365307.vrm",
+ "vroid/7/5487960612981524797/5487960612981524797.vrm",
+ "vroid/7/5489555863085031107/5489555863085031107.vrm",
+ "vroid/7/5495204374094130667/5495204374094130667.vrm",
+ "vroid/7/5505639780925884087/5505639780925884087.vrm",
+ "vroid/7/5507239128513742447/5507239128513742447.vrm",
+ "vroid/7/5516208387877604867/5516208387877604867.vrm",
+ "vroid/7/5519589229748703627/5519589229748703627.vrm",
+ "vroid/7/5534982556609206697/5534982556609206697.vrm",
+ "vroid/7/5540293268580830997/5540293268580830997.vrm",
+ "vroid/7/5541032730605397977/5541032730605397977.vrm",
+ "vroid/7/5541204715443364337/5541204715443364337.vrm",
+ "vroid/7/5546325830869405807/5546325830869405807.vrm",
+ "vroid/7/5558387515599376387/5558387515599376387.vrm",
+ "vroid/7/5566508548981456917/5566508548981456917.vrm",
+ "vroid/7/5577282093239101827/5577282093239101827.vrm",
+ "vroid/7/5578800341934720877/5578800341934720877.vrm",
+ "vroid/7/5588700957299342557/5588700957299342557.vrm",
+ "vroid/7/5592487491855013507/5592487491855013507.vrm",
+ "vroid/7/5594416508214365127/5594416508214365127.vrm",
+ "vroid/7/5606128215337099917/5606128215337099917.vrm",
+ "vroid/7/5608990758730725877/5608990758730725877.vrm",
+ "vroid/7/5611429494412351807/5611429494412351807.vrm",
+ "vroid/7/5613085298145417417/5613085298145417417.vrm",
+ "vroid/7/5614924935276042367/5614924935276042367.vrm",
+ "vroid/7/5615264629205870367/5615264629205870367.vrm",
+ "vroid/7/5615816835225758427/5615816835225758427.vrm",
+ "vroid/7/562472628488327997/562472628488327997.vrm",
+ "vroid/7/5626918627661825397/5626918627661825397.vrm",
+ "vroid/7/5627504295104483967/5627504295104483967.vrm",
+ "vroid/7/5638300725711077287/5638300725711077287.vrm",
+ "vroid/7/5640020187507474767/5640020187507474767.vrm",
+ "vroid/7/5648193759127886177/5648193759127886177.vrm",
+ "vroid/7/5653035247814133697/5653035247814133697.vrm",
+ "vroid/7/5653438432516478377/5653438432516478377.vrm",
+ "vroid/7/5655297031848751247/5655297031848751247.vrm",
+ "vroid/7/5667323587091692117/5667323587091692117.vrm",
+ "vroid/7/5672696429050008407/5672696429050008407.vrm",
+ "vroid/7/5683542692334963827/5683542692334963827.vrm",
+ "vroid/7/5688349686926070087/5688349686926070087.vrm",
+ "vroid/7/5696141878673885967/5696141878673885967.vrm",
+ "vroid/7/5701147008007600227/5701147008007600227.vrm",
+ "vroid/7/570511947064352877/570511947064352877.vrm",
+ "vroid/7/571524928428964707/571524928428964707.vrm",
+ "vroid/7/5718326538184083497/5718326538184083497.vrm",
+ "vroid/7/5720202509135930407/5720202509135930407.vrm",
+ "vroid/7/5722722301047314527/5722722301047314527.vrm",
+ "vroid/7/57237349332826877/57237349332826877.vrm",
+ "vroid/7/5724962268081929307/5724962268081929307.vrm",
+ "vroid/7/5727714597409724587/5727714597409724587.vrm",
+ "vroid/7/5728567582902274387/5728567582902274387.vrm",
+ "vroid/7/5741581244297817337/5741581244297817337.vrm",
+ "vroid/7/5749929302059417037/5749929302059417037.vrm",
+ "vroid/7/5759500972715424337/5759500972715424337.vrm",
+ "vroid/7/577025374557036127/577025374557036127.vrm",
+ "vroid/7/5771528536771181407/5771528536771181407.vrm",
+ "vroid/7/5780075582139287547/5780075582139287547.vrm",
+ "vroid/7/5780251823512086537/5780251823512086537.vrm",
+ "vroid/7/5783905767538357737/5783905767538357737.vrm",
+ "vroid/7/579275009781005097/579275009781005097.vrm",
+ "vroid/7/5793076872463949297/5793076872463949297.vrm",
+ "vroid/7/5795396259748844387/5795396259748844387.vrm",
+ "vroid/7/5804499536389555217/5804499536389555217.vrm",
+ "vroid/7/5812991355044219907/5812991355044219907.vrm",
+ "vroid/7/5825403178989243297/5825403178989243297.vrm",
+ "vroid/7/5829527216490934567/5829527216490934567.vrm",
+ "vroid/7/5837909122530950457/5837909122530950457.vrm",
+ "vroid/7/5844244267286478237/5844244267286478237.vrm",
+ "vroid/7/5845953777167914027/5845953777167914027.vrm",
+ "vroid/7/5850067906823366797/5850067906823366797.vrm",
+ "vroid/7/585326911250185477/585326911250185477.vrm",
+ "vroid/7/5854108069794625067/5854108069794625067.vrm",
+ "vroid/7/5857894972559405207/5857894972559405207.vrm",
+ "vroid/7/5859612993637691747/5859612993637691747.vrm",
+ "vroid/7/5863057186135195827/5863057186135195827.vrm",
+ "vroid/7/5867602259382507317/5867602259382507317.vrm",
+ "vroid/7/5870384789332664097/5870384789332664097.vrm",
+ "vroid/7/5871901194711550237/5871901194711550237.vrm",
+ "vroid/7/5873811225115650707/5873811225115650707.vrm",
+ "vroid/7/5886598374098774817/5886598374098774817.vrm",
+ "vroid/7/5888811164214051267/5888811164214051267.vrm",
+ "vroid/7/5889719155839068747/5889719155839068747.vrm",
+ "vroid/7/5892712637564781187/5892712637564781187.vrm",
+ "vroid/7/5899059254197308727/5899059254197308727.vrm",
+ "vroid/7/5914793817468412587/5914793817468412587.vrm",
+ "vroid/7/5918178101084869747/5918178101084869747.vrm",
+ "vroid/7/5927492182638690507/5927492182638690507.vrm",
+ "vroid/7/5932324026460831927/5932324026460831927.vrm",
+ "vroid/7/5935340725982169937/5935340725982169937.vrm",
+ "vroid/7/5935563356535619527/5935563356535619527.vrm",
+ "vroid/7/5942415088698701697/5942415088698701697.vrm",
+ "vroid/7/5943736298509996677/5943736298509996677.vrm",
+ "vroid/7/5951201133783656237/5951201133783656237.vrm",
+ "vroid/7/5955130656301359107/5955130656301359107.vrm",
+ "vroid/7/5964498624027956267/5964498624027956267.vrm",
+ "vroid/7/5981754257589428337/5981754257589428337.vrm",
+ "vroid/7/5982059694620103617/5982059694620103617.vrm",
+ "vroid/7/5984202995665930227/5984202995665930227.vrm",
+ "vroid/7/5984385521692897027/5984385521692897027.vrm",
+ "vroid/7/5984889649537038007/5984889649537038007.vrm",
+ "vroid/7/600205285056942397/600205285056942397.vrm",
+ "vroid/7/6017123990187354747/6017123990187354747.vrm",
+ "vroid/7/6020011643258343157/6020011643258343157.vrm",
+ "vroid/7/6025511837132226257/6025511837132226257.vrm",
+ "vroid/7/6026682151909046957/6026682151909046957.vrm",
+ "vroid/7/6032557644304970147/6032557644304970147.vrm",
+ "vroid/7/6042493500856483207/6042493500856483207.vrm",
+ "vroid/7/6052472295591881027/6052472295591881027.vrm",
+ "vroid/7/6057334180700051747/6057334180700051747.vrm",
+ "vroid/7/6057511193619350007/6057511193619350007.vrm",
+ "vroid/7/6059559256291381087/6059559256291381087.vrm",
+ "vroid/7/6064127175473404837/6064127175473404837.vrm",
+ "vroid/7/6072668541334716097/6072668541334716097.vrm",
+ "vroid/7/6074094537782176407/6074094537782176407.vrm",
+ "vroid/7/6078640853229892747/6078640853229892747.vrm",
+ "vroid/7/6085547626131616367/6085547626131616367.vrm",
+ "vroid/7/6091684176146257937/6091684176146257937.vrm",
+ "vroid/7/6095681405769516947/6095681405769516947.vrm",
+ "vroid/7/6096374991071868667/6096374991071868667.vrm",
+ "vroid/7/6098925454234828207/6098925454234828207.vrm",
+ "vroid/7/6112922286473846657/6112922286473846657.vrm",
+ "vroid/7/6123670986258381697/6123670986258381697.vrm",
+ "vroid/7/6123730508022793407/6123730508022793407.vrm",
+ "vroid/7/6125893545289783017/6125893545289783017.vrm",
+ "vroid/7/613172810745104307/613172810745104307.vrm",
+ "vroid/7/6138413638237989397/6138413638237989397.vrm",
+ "vroid/7/6143391051195254107/6143391051195254107.vrm",
+ "vroid/7/6151103974907852977/6151103974907852977.vrm",
+ "vroid/7/6155112029839704977/6155112029839704977.vrm",
+ "vroid/7/6171623746897002507/6171623746897002507.vrm",
+ "vroid/7/6174281199510346917/6174281199510346917.vrm",
+ "vroid/7/617698273435044707/617698273435044707.vrm",
+ "vroid/7/6177649328059237517/6177649328059237517.vrm",
+ "vroid/7/6184442959372966247/6184442959372966247.vrm",
+ "vroid/7/6186867876243081687/6186867876243081687.vrm",
+ "vroid/7/6190181945259996517/6190181945259996517.vrm",
+ "vroid/7/6196951811814121667/6196951811814121667.vrm",
+ "vroid/7/6199356245641388157/6199356245641388157.vrm",
+ "vroid/7/6201572528039224887/6201572528039224887.vrm",
+ "vroid/7/6208415232804548317/6208415232804548317.vrm",
+ "vroid/7/6217966245582821237/6217966245582821237.vrm",
+ "vroid/7/6233863979779266067/6233863979779266067.vrm",
+ "vroid/7/6250676765746406547/6250676765746406547.vrm",
+ "vroid/7/6255385267918343167/6255385267918343167.vrm",
+ "vroid/7/625965360274791607/625965360274791607.vrm",
+ "vroid/7/6267206042347047197/6267206042347047197.vrm",
+ "vroid/7/6275897531437482867/6275897531437482867.vrm",
+ "vroid/7/6282648217258050267/6282648217258050267.vrm",
+ "vroid/7/629436963644692517/629436963644692517.vrm",
+ "vroid/7/6300171317401275707/6300171317401275707.vrm",
+ "vroid/7/6308382789939652567/6308382789939652567.vrm",
+ "vroid/7/6316114403202937187/6316114403202937187.vrm",
+ "vroid/7/6325005767483165357/6325005767483165357.vrm",
+ "vroid/7/6325892710322199957/6325892710322199957.vrm",
+ "vroid/7/6355195077645968207/6355195077645968207.vrm",
+ "vroid/7/6364672505953706157/6364672505953706157.vrm",
+ "vroid/7/637410677352190507/637410677352190507.vrm",
+ "vroid/7/6388307762736807607/6388307762736807607.vrm",
+ "vroid/7/6391559876882706527/6391559876882706527.vrm",
+ "vroid/7/6392697275435171767/6392697275435171767.vrm",
+ "vroid/7/6393395872822259657/6393395872822259657.vrm",
+ "vroid/7/6395710151706636267/6395710151706636267.vrm",
+ "vroid/7/6398403871304022567/6398403871304022567.vrm",
+ "vroid/7/6408635462675232677/6408635462675232677.vrm",
+ "vroid/7/6411624874916198657/6411624874916198657.vrm",
+ "vroid/7/6415970436941813397/6415970436941813397.vrm",
+ "vroid/7/6423717325331524177/6423717325331524177.vrm",
+ "vroid/7/6426227355211360367/6426227355211360367.vrm",
+ "vroid/7/6433016014128390337/6433016014128390337.vrm",
+ "vroid/7/6440503567964109927/6440503567964109927.vrm",
+ "vroid/7/6440798160090520507/6440798160090520507.vrm",
+ "vroid/7/6443212708233366967/6443212708233366967.vrm",
+ "vroid/7/6444930865315835797/6444930865315835797.vrm",
+ "vroid/7/6446483610788156297/6446483610788156297.vrm",
+ "vroid/7/6447528696593323427/6447528696593323427.vrm",
+ "vroid/7/646085087063994097/646085087063994097.vrm",
+ "vroid/7/6469478441842421337/6469478441842421337.vrm",
+ "vroid/7/6470524732227744167/6470524732227744167.vrm",
+ "vroid/7/6473542910326088207/6473542910326088207.vrm",
+ "vroid/7/6473993184267325617/6473993184267325617.vrm",
+ "vroid/7/6481342727643943457/6481342727643943457.vrm",
+ "vroid/7/6485197668564668037/6485197668564668037.vrm",
+ "vroid/7/6485318392400424227/6485318392400424227.vrm",
+ "vroid/7/6490462980473854597/6490462980473854597.vrm",
+ "vroid/7/6500386753186498377/6500386753186498377.vrm",
+ "vroid/7/6510808506330705947/6510808506330705947.vrm",
+ "vroid/7/6511256550885351267/6511256550885351267.vrm",
+ "vroid/7/6514969318740062237/6514969318740062237.vrm",
+ "vroid/7/6521013454736696227/6521013454736696227.vrm",
+ "vroid/7/6538322174767732287/6538322174767732287.vrm",
+ "vroid/7/6538827515097218847/6538827515097218847.vrm",
+ "vroid/7/654116924621177347/654116924621177347.vrm",
+ "vroid/7/6542576065235716417/6542576065235716417.vrm",
+ "vroid/7/6545153194676159177/6545153194676159177.vrm",
+ "vroid/7/6558758684957718217/6558758684957718217.vrm",
+ "vroid/7/6562906353188343827/6562906353188343827.vrm",
+ "vroid/7/6571517467092025987/6571517467092025987.vrm",
+ "vroid/7/6583321529740277447/6583321529740277447.vrm",
+ "vroid/7/6591374275968379347/6591374275968379347.vrm",
+ "vroid/7/660692537718071127/660692537718071127.vrm",
+ "vroid/7/6617846191419192787/6617846191419192787.vrm",
+ "vroid/7/6620267545579320647/6620267545579320647.vrm",
+ "vroid/7/6622026306480328647/6622026306480328647.vrm",
+ "vroid/7/6622590983405748807/6622590983405748807.vrm",
+ "vroid/7/6628337261055718887/6628337261055718887.vrm",
+ "vroid/7/662980568518020437/662980568518020437.vrm",
+ "vroid/7/6633292870299827807/6633292870299827807.vrm",
+ "vroid/7/6637837953641399137/6637837953641399137.vrm",
+ "vroid/7/664070098966932257/664070098966932257.vrm",
+ "vroid/7/6646976596368328907/6646976596368328907.vrm",
+ "vroid/7/6647422868989183237/6647422868989183237.vrm",
+ "vroid/7/6650140790474745777/6650140790474745777.vrm",
+ "vroid/7/6655797521296150897/6655797521296150897.vrm",
+ "vroid/7/6687916697225544427/6687916697225544427.vrm",
+ "vroid/7/6692827166906062907/6692827166906062907.vrm",
+ "vroid/7/6714257684121571207/6714257684121571207.vrm",
+ "vroid/7/6725200158452144087/6725200158452144087.vrm",
+ "vroid/7/6729269915263917227/6729269915263917227.vrm",
+ "vroid/7/6730311843134896427/6730311843134896427.vrm",
+ "vroid/7/6731421795261324027/6731421795261324027.vrm",
+ "vroid/7/6736913133116102987/6736913133116102987.vrm",
+ "vroid/7/6741155493311103507/6741155493311103507.vrm",
+ "vroid/7/674322707158935867/674322707158935867.vrm",
+ "vroid/7/6745045833569203297/6745045833569203297.vrm",
+ "vroid/7/6757090271872729717/6757090271872729717.vrm",
+ "vroid/7/6768811104704627797/6768811104704627797.vrm",
+ "vroid/7/6775347397079431647/6775347397079431647.vrm",
+ "vroid/7/6787222304666830127/6787222304666830127.vrm",
+ "vroid/7/6805791423253394627/6805791423253394627.vrm",
+ "vroid/7/68064937766807447/68064937766807447.vrm",
+ "vroid/7/6824370254803089657/6824370254803089657.vrm",
+ "vroid/7/6827609290061102947/6827609290061102947.vrm",
+ "vroid/7/6833553403426682197/6833553403426682197.vrm",
+ "vroid/7/6834134988588082197/6834134988588082197.vrm",
+ "vroid/7/684311908539665847/684311908539665847.vrm",
+ "vroid/7/6844031239548539497/6844031239548539497.vrm",
+ "vroid/7/684551812439008217/684551812439008217.vrm",
+ "vroid/7/6851267351205378757/6851267351205378757.vrm",
+ "vroid/7/6854624137925682147/6854624137925682147.vrm",
+ "vroid/7/6869978987702320197/6869978987702320197.vrm",
+ "vroid/7/6872552402944758997/6872552402944758997.vrm",
+ "vroid/7/6873445370147866877/6873445370147866877.vrm",
+ "vroid/7/6877813767929165837/6877813767929165837.vrm",
+ "vroid/7/6886959767594724087/6886959767594724087.vrm",
+ "vroid/7/689280736643250547/689280736643250547.vrm",
+ "vroid/7/6904377874227311617/6904377874227311617.vrm",
+ "vroid/7/6906978590312346257/6906978590312346257.vrm",
+ "vroid/7/6911400410302718657/6911400410302718657.vrm",
+ "vroid/7/6914282819228261267/6914282819228261267.vrm",
+ "vroid/7/6915766721035614387/6915766721035614387.vrm",
+ "vroid/7/6915991680210704627/6915991680210704627.vrm",
+ "vroid/7/6923650146167188027/6923650146167188027.vrm",
+ "vroid/7/6943166534941386167/6943166534941386167.vrm",
+ "vroid/7/6944164616272163077/6944164616272163077.vrm",
+ "vroid/7/6949968450864993507/6949968450864993507.vrm",
+ "vroid/7/6973354216126412587/6973354216126412587.vrm",
+ "vroid/7/6974468451517888977/6974468451517888977.vrm",
+ "vroid/7/6979624310961742397/6979624310961742397.vrm",
+ "vroid/7/6980222372196145007/6980222372196145007.vrm",
+ "vroid/7/6982170113221956087/6982170113221956087.vrm",
+ "vroid/7/6990379337909839077/6990379337909839077.vrm",
+ "vroid/7/6996692214182485857/6996692214182485857.vrm",
+ "vroid/7/6997764185034744557/6997764185034744557.vrm",
+ "vroid/7/6998077537331389817/6998077537331389817.vrm",
+ "vroid/7/7002928288512570717/7002928288512570717.vrm",
+ "vroid/7/7005191581754761707/7005191581754761707.vrm",
+ "vroid/7/7007663501711955877/7007663501711955877.vrm",
+ "vroid/7/7008911571585236777/7008911571585236777.vrm",
+ "vroid/7/7011649075079917317/7011649075079917317.vrm",
+ "vroid/7/7014944017912004267/7014944017912004267.vrm",
+ "vroid/7/7019785706168847987/7019785706168847987.vrm",
+ "vroid/7/7020673671586169247/7020673671586169247.vrm",
+ "vroid/7/7035846646752153107/7035846646752153107.vrm",
+ "vroid/7/7037113803195503557/7037113803195503557.vrm",
+ "vroid/7/7041711138086724207/7041711138086724207.vrm",
+ "vroid/7/7047146201995508827/7047146201995508827.vrm",
+ "vroid/7/7047354958978111927/7047354958978111927.vrm",
+ "vroid/7/7062771409315115817/7062771409315115817.vrm",
+ "vroid/7/708213840093053527/708213840093053527.vrm",
+ "vroid/7/7082291171348491037/7082291171348491037.vrm",
+ "vroid/7/7092940486348319607/7092940486348319607.vrm",
+ "vroid/7/7093613152253468347/7093613152253468347.vrm",
+ "vroid/7/7093999111073352637/7093999111073352637.vrm",
+ "vroid/7/7109045322179879187/7109045322179879187.vrm",
+ "vroid/7/7110997111250638537/7110997111250638537.vrm",
+ "vroid/7/711117669338262707/711117669338262707.vrm",
+ "vroid/7/7122584232289718257/7122584232289718257.vrm",
+ "vroid/7/7130334606365861657/7130334606365861657.vrm",
+ "vroid/7/7134112675472447267/7134112675472447267.vrm",
+ "vroid/7/7138281978714887427/7138281978714887427.vrm",
+ "vroid/7/7138744985808827077/7138744985808827077.vrm",
+ "vroid/7/7155303729576810417/7155303729576810417.vrm",
+ "vroid/7/7163128393510521487/7163128393510521487.vrm",
+ "vroid/7/7170045828116774367/7170045828116774367.vrm",
+ "vroid/7/7171519162544743937/7171519162544743937.vrm",
+ "vroid/7/7202755555797499207/7202755555797499207.vrm",
+ "vroid/7/7211182706627192817/7211182706627192817.vrm",
+ "vroid/7/7211962420288030717/7211962420288030717.vrm",
+ "vroid/7/7213514650233710297/7213514650233710297.vrm",
+ "vroid/7/7215540933695213927/7215540933695213927.vrm",
+ "vroid/7/7223238637310723177/7223238637310723177.vrm",
+ "vroid/7/7232421868989453537/7232421868989453537.vrm",
+ "vroid/7/7233407990773010227/7233407990773010227.vrm",
+ "vroid/7/7237337419352876997/7237337419352876997.vrm",
+ "vroid/7/7238208118765380027/7238208118765380027.vrm",
+ "vroid/7/7240520910920567987/7240520910920567987.vrm",
+ "vroid/7/7252072149716820217/7252072149716820217.vrm",
+ "vroid/7/725664129714175127/725664129714175127.vrm",
+ "vroid/7/7264597513901096567/7264597513901096567.vrm",
+ "vroid/7/7278581668679727487/7278581668679727487.vrm",
+ "vroid/7/7278973235510898417/7278973235510898417.vrm",
+ "vroid/7/7281472612656368387/7281472612656368387.vrm",
+ "vroid/7/7287600890245282397/7287600890245282397.vrm",
+ "vroid/7/7290852097851079757/7290852097851079757.vrm",
+ "vroid/7/7302362184513067237/7302362184513067237.vrm",
+ "vroid/7/730625960893750417/730625960893750417.vrm",
+ "vroid/7/7313091232618146467/7313091232618146467.vrm",
+ "vroid/7/7317967697392846437/7317967697392846437.vrm",
+ "vroid/7/7329554934263169727/7329554934263169727.vrm",
+ "vroid/7/73411066158979637/73411066158979637.vrm",
+ "vroid/7/7343448002219482027/7343448002219482027.vrm",
+ "vroid/7/7356188740043311457/7356188740043311457.vrm",
+ "vroid/7/7361324012686509357/7361324012686509357.vrm",
+ "vroid/7/7373975276008538757/7373975276008538757.vrm",
+ "vroid/7/7375949354982654677/7375949354982654677.vrm",
+ "vroid/7/738845188344006357/738845188344006357.vrm",
+ "vroid/7/73892997665943137/73892997665943137.vrm",
+ "vroid/7/7391721758154317047/7391721758154317047.vrm",
+ "vroid/7/7392065691131602127/7392065691131602127.vrm",
+ "vroid/7/7396759061114691907/7396759061114691907.vrm",
+ "vroid/7/7402705026771441967/7402705026771441967.vrm",
+ "vroid/7/7407126950568681857/7407126950568681857.vrm",
+ "vroid/7/7412329934701184207/7412329934701184207.vrm",
+ "vroid/7/7413149749772836407/7413149749772836407.vrm",
+ "vroid/7/7418964594399838757/7418964594399838757.vrm",
+ "vroid/7/7419376081716215917/7419376081716215917.vrm",
+ "vroid/7/7420377494869812317/7420377494869812317.vrm",
+ "vroid/7/7421168312342909937/7421168312342909937.vrm",
+ "vroid/7/743264538540616087/743264538540616087.vrm",
+ "vroid/7/7450366073947885797/7450366073947885797.vrm",
+ "vroid/7/7455617653647067007/7455617653647067007.vrm",
+ "vroid/7/7456443190043764617/7456443190043764617.vrm",
+ "vroid/7/7457564416782577987/7457564416782577987.vrm",
+ "vroid/7/7469765638078918017/7469765638078918017.vrm",
+ "vroid/7/7475411118734137557/7475411118734137557.vrm",
+ "vroid/7/7479825741008560747/7479825741008560747.vrm",
+ "vroid/7/7487356589884163997/7487356589884163997.vrm",
+ "vroid/7/7499382320577456477/7499382320577456477.vrm",
+ "vroid/7/7501510311343495737/7501510311343495737.vrm",
+ "vroid/7/7501748966177538487/7501748966177538487.vrm",
+ "vroid/7/7507897818276356827/7507897818276356827.vrm",
+ "vroid/7/7511816175803131977/7511816175803131977.vrm",
+ "vroid/7/7513903156697115897/7513903156697115897.vrm",
+ "vroid/7/7521451100059948707/7521451100059948707.vrm",
+ "vroid/7/7521538037958820407/7521538037958820407.vrm",
+ "vroid/7/752471597870401477/752471597870401477.vrm",
+ "vroid/7/7531846030051823727/7531846030051823727.vrm",
+ "vroid/7/7533479196955520527/7533479196955520527.vrm",
+ "vroid/7/7542127578488699337/7542127578488699337.vrm",
+ "vroid/7/7545073373552772837/7545073373552772837.vrm",
+ "vroid/7/7545902162444183927/7545902162444183927.vrm",
+ "vroid/7/7549031683730271867/7549031683730271867.vrm",
+ "vroid/7/755246638429344217/755246638429344217.vrm",
+ "vroid/7/7560793021565864917/7560793021565864917.vrm",
+ "vroid/7/756178627639217907/756178627639217907.vrm",
+ "vroid/7/7562728684706525577/7562728684706525577.vrm",
+ "vroid/7/7564876263420695037/7564876263420695037.vrm",
+ "vroid/7/7567581653173030017/7567581653173030017.vrm",
+ "vroid/7/7569795098020597417/7569795098020597417.vrm",
+ "vroid/7/7570429144982444097/7570429144982444097.vrm",
+ "vroid/7/758708411454677827/758708411454677827.vrm",
+ "vroid/7/7588946339824989967/7588946339824989967.vrm",
+ "vroid/7/7589751559138163167/7589751559138163167.vrm",
+ "vroid/7/7593542861359167587/7593542861359167587.vrm",
+ "vroid/7/7607598072893454047/7607598072893454047.vrm",
+ "vroid/7/7610056072559676417/7610056072559676417.vrm",
+ "vroid/7/7611934133767752567/7611934133767752567.vrm",
+ "vroid/7/7611993569620641767/7611993569620641767.vrm",
+ "vroid/7/7620853480649520257/7620853480649520257.vrm",
+ "vroid/7/7623940773528496747/7623940773528496747.vrm",
+ "vroid/7/7629957593116436887/7629957593116436887.vrm",
+ "vroid/7/7634818719792582237/7634818719792582237.vrm",
+ "vroid/7/7640084920286921837/7640084920286921837.vrm",
+ "vroid/7/7653686417061626977/7653686417061626977.vrm",
+ "vroid/7/7667661997931398637/7667661997931398637.vrm",
+ "vroid/7/7669373097034853147/7669373097034853147.vrm",
+ "vroid/7/7673927614256801247/7673927614256801247.vrm",
+ "vroid/7/769321684743052877/769321684743052877.vrm",
+ "vroid/7/7698966529996595537/7698966529996595537.vrm",
+ "vroid/7/7701430418926637387/7701430418926637387.vrm",
+ "vroid/7/7703510059431051957/7703510059431051957.vrm",
+ "vroid/7/7705521291412780697/7705521291412780697.vrm",
+ "vroid/7/7712349786061751627/7712349786061751627.vrm",
+ "vroid/7/7721587347660692907/7721587347660692907.vrm",
+ "vroid/7/7726970318262732057/7726970318262732057.vrm",
+ "vroid/7/772797198975531637/772797198975531637.vrm",
+ "vroid/7/7729246458367699487/7729246458367699487.vrm",
+ "vroid/7/7730475753182935527/7730475753182935527.vrm",
+ "vroid/7/7732393771392533837/7732393771392533837.vrm",
+ "vroid/7/7737001284091166697/7737001284091166697.vrm",
+ "vroid/7/7738349894064766977/7738349894064766977.vrm",
+ "vroid/7/774990163610000247/774990163610000247.vrm",
+ "vroid/7/7760764920550024147/7760764920550024147.vrm",
+ "vroid/7/7762589144038077877/7762589144038077877.vrm",
+ "vroid/7/7764881265361360997/7764881265361360997.vrm",
+ "vroid/7/7769201645637930707/7769201645637930707.vrm",
+ "vroid/7/7774077929183155547/7774077929183155547.vrm",
+ "vroid/7/7786529800596872217/7786529800596872217.vrm",
+ "vroid/7/7786766806287839657/7786766806287839657.vrm",
+ "vroid/7/778852268964031157/778852268964031157.vrm",
+ "vroid/7/7788623510514067337/7788623510514067337.vrm",
+ "vroid/7/7793939828825439157/7793939828825439157.vrm",
+ "vroid/7/7797709686629252997/7797709686629252997.vrm",
+ "vroid/7/7809032954349171007/7809032954349171007.vrm",
+ "vroid/7/7814008583370853817/7814008583370853817.vrm",
+ "vroid/7/7815363695164318347/7815363695164318347.vrm",
+ "vroid/7/7818798016129740317/7818798016129740317.vrm",
+ "vroid/7/782853793933106047/782853793933106047.vrm",
+ "vroid/7/7838222729174751627/7838222729174751627.vrm",
+ "vroid/7/7841648699963740277/7841648699963740277.vrm",
+ "vroid/7/7844008524188649967/7844008524188649967.vrm",
+ "vroid/7/7860658028505071527/7860658028505071527.vrm",
+ "vroid/7/786902004895618247/786902004895618247.vrm",
+ "vroid/7/7874852256638512927/7874852256638512927.vrm",
+ "vroid/7/7898861365768784077/7898861365768784077.vrm",
+ "vroid/7/7901734364760318407/7901734364760318407.vrm",
+ "vroid/7/7912356580016626257/7912356580016626257.vrm",
+ "vroid/7/7912632717515473917/7912632717515473917.vrm",
+ "vroid/7/7921841888885087787/7921841888885087787.vrm",
+ "vroid/7/7922817490067206807/7922817490067206807.vrm",
+ "vroid/7/7923544783788287267/7923544783788287267.vrm",
+ "vroid/7/7924660200369299767/7924660200369299767.vrm",
+ "vroid/7/7924814509898662677/7924814509898662677.vrm",
+ "vroid/7/7938062576953575867/7938062576953575867.vrm",
+ "vroid/7/7938456829168944697/7938456829168944697.vrm",
+ "vroid/7/7954517385398570697/7954517385398570697.vrm",
+ "vroid/7/7959135028997995557/7959135028997995557.vrm",
+ "vroid/7/7959401053940156957/7959401053940156957.vrm",
+ "vroid/7/7962157309484740497/7962157309484740497.vrm",
+ "vroid/7/7970000121854765577/7970000121854765577.vrm",
+ "vroid/7/7970030587617208777/7970030587617208777.vrm",
+ "vroid/7/7986222275949718497/7986222275949718497.vrm",
+ "vroid/7/7990428299078502297/7990428299078502297.vrm",
+ "vroid/7/799043638365509917/799043638365509917.vrm",
+ "vroid/7/7997694249713633277/7997694249713633277.vrm",
+ "vroid/7/8000187634514294757/8000187634514294757.vrm",
+ "vroid/7/8001527795767513917/8001527795767513917.vrm",
+ "vroid/7/8004921362474054737/8004921362474054737.vrm",
+ "vroid/7/8008888208934852597/8008888208934852597.vrm",
+ "vroid/7/8009099339396378717/8009099339396378717.vrm",
+ "vroid/7/8011499053565131157/8011499053565131157.vrm",
+ "vroid/7/8012048608489936077/8012048608489936077.vrm",
+ "vroid/7/8016299975853046267/8016299975853046267.vrm",
+ "vroid/7/8017850661860954947/8017850661860954947.vrm",
+ "vroid/7/8018390819196050947/8018390819196050947.vrm",
+ "vroid/7/8018569148256910147/8018569148256910147.vrm",
+ "vroid/7/8034577580447212417/8034577580447212417.vrm",
+ "vroid/7/8041270930705172347/8041270930705172347.vrm",
+ "vroid/7/8049498916557452797/8049498916557452797.vrm",
+ "vroid/7/805163090580398397/805163090580398397.vrm",
+ "vroid/7/8051891509238723937/8051891509238723937.vrm",
+ "vroid/7/8055313264896896707/8055313264896896707.vrm",
+ "vroid/7/8073306076550697407/8073306076550697407.vrm",
+ "vroid/7/808466696039480507/808466696039480507.vrm",
+ "vroid/7/8094143335809103707/8094143335809103707.vrm",
+ "vroid/7/8109104828854878677/8109104828854878677.vrm",
+ "vroid/7/8115442875205605417/8115442875205605417.vrm",
+ "vroid/7/8116371410427167207/8116371410427167207.vrm",
+ "vroid/7/8134923513882386647/8134923513882386647.vrm",
+ "vroid/7/8140230598170173807/8140230598170173807.vrm",
+ "vroid/7/8142203689164212777/8142203689164212777.vrm",
+ "vroid/7/8153265108221190897/8153265108221190897.vrm",
+ "vroid/7/8157843559309072127/8157843559309072127.vrm",
+ "vroid/7/8159364047384559137/8159364047384559137.vrm",
+ "vroid/7/8161967961075360987/8161967961075360987.vrm",
+ "vroid/7/8168475534019789177/8168475534019789177.vrm",
+ "vroid/7/8170434775370703657/8170434775370703657.vrm",
+ "vroid/7/8170474997448299027/8170474997448299027.vrm",
+ "vroid/7/8182195447162419957/8182195447162419957.vrm",
+ "vroid/7/818752746052238207/818752746052238207.vrm",
+ "vroid/7/8195345640450098047/8195345640450098047.vrm",
+ "vroid/7/8202757797117286827/8202757797117286827.vrm",
+ "vroid/7/8204191153897033937/8204191153897033937.vrm",
+ "vroid/7/8208780947195394397/8208780947195394397.vrm",
+ "vroid/7/8217561518298576047/8217561518298576047.vrm",
+ "vroid/7/821888738907970467/821888738907970467.vrm",
+ "vroid/7/8222755343056242897/8222755343056242897.vrm",
+ "vroid/7/8238648696947468587/8238648696947468587.vrm",
+ "vroid/7/8248643795635847377/8248643795635847377.vrm",
+ "vroid/7/8249927728394016947/8249927728394016947.vrm",
+ "vroid/7/8250570247324111387/8250570247324111387.vrm",
+ "vroid/7/8252201658297697137/8252201658297697137.vrm",
+ "vroid/7/8255397778462805077/8255397778462805077.vrm",
+ "vroid/7/8258425214213383027/8258425214213383027.vrm",
+ "vroid/7/8258530900525317797/8258530900525317797.vrm",
+ "vroid/7/825918502829625037/825918502829625037.vrm",
+ "vroid/7/826193757013505947/826193757013505947.vrm",
+ "vroid/7/8262977720183935517/8262977720183935517.vrm",
+ "vroid/7/8266858466495034367/8266858466495034367.vrm",
+ "vroid/7/8269945708481766867/8269945708481766867.vrm",
+ "vroid/7/8280122398431780557/8280122398431780557.vrm",
+ "vroid/7/8280250341563906327/8280250341563906327.vrm",
+ "vroid/7/8287972773811322727/8287972773811322727.vrm",
+ "vroid/7/8321153069906373897/8321153069906373897.vrm",
+ "vroid/7/8326734325758961337/8326734325758961337.vrm",
+ "vroid/7/8330639398849826207/8330639398849826207.vrm",
+ "vroid/7/8330857133744603857/8330857133744603857.vrm",
+ "vroid/7/8332559347021562037/8332559347021562037.vrm",
+ "vroid/7/8340603456956594057/8340603456956594057.vrm",
+ "vroid/7/8346364426929512957/8346364426929512957.vrm",
+ "vroid/7/834761313348255177/834761313348255177.vrm",
+ "vroid/7/8355304392450051227/8355304392450051227.vrm",
+ "vroid/7/8360075094071756157/8360075094071756157.vrm",
+ "vroid/7/8360970015168650827/8360970015168650827.vrm",
+ "vroid/7/8361149179115464327/8361149179115464327.vrm",
+ "vroid/7/8362878631988874757/8362878631988874757.vrm",
+ "vroid/7/83826697841366767/83826697841366767.vrm",
+ "vroid/7/8386384849472919447/8386384849472919447.vrm",
+ "vroid/7/8390915217827917417/8390915217827917417.vrm",
+ "vroid/7/8407589055031192657/8407589055031192657.vrm",
+ "vroid/7/8412710541997708127/8412710541997708127.vrm",
+ "vroid/7/8414273321161489647/8414273321161489647.vrm",
+ "vroid/7/8421301483141013747/8421301483141013747.vrm",
+ "vroid/7/8425706736124211247/8425706736124211247.vrm",
+ "vroid/7/8440511112304395517/8440511112304395517.vrm",
+ "vroid/7/844465687181520477/844465687181520477.vrm",
+ "vroid/7/844585286049672767/844585286049672767.vrm",
+ "vroid/7/8446184260491346297/8446184260491346297.vrm",
+ "vroid/7/8455576477125151547/8455576477125151547.vrm",
+ "vroid/7/8464970102982327147/8464970102982327147.vrm",
+ "vroid/7/8465586655126213017/8465586655126213017.vrm",
+ "vroid/7/8469365741557595097/8469365741557595097.vrm",
+ "vroid/7/8469587705845160207/8469587705845160207.vrm",
+ "vroid/7/8477253015918263497/8477253015918263497.vrm",
+ "vroid/7/8478946407431234317/8478946407431234317.vrm",
+ "vroid/7/8483211489842407257/8483211489842407257.vrm",
+ "vroid/7/84844536472509067/84844536472509067.vrm",
+ "vroid/7/8492495882014730167/8492495882014730167.vrm",
+ "vroid/7/8493640469981656107/8493640469981656107.vrm",
+ "vroid/7/8499797159161854207/8499797159161854207.vrm",
+ "vroid/7/8510863879176779487/8510863879176779487.vrm",
+ "vroid/7/8511767851524538647/8511767851524538647.vrm",
+ "vroid/7/8527277705306299577/8527277705306299577.vrm",
+ "vroid/7/8528290137174696777/8528290137174696777.vrm",
+ "vroid/7/8531198171169802667/8531198171169802667.vrm",
+ "vroid/7/8531600721206853297/8531600721206853297.vrm",
+ "vroid/7/853171813908360067/853171813908360067.vrm",
+ "vroid/7/8546893690074774727/8546893690074774727.vrm",
+ "vroid/7/8550290297771043677/8550290297771043677.vrm",
+ "vroid/7/8554969899527338987/8554969899527338987.vrm",
+ "vroid/7/8568252636542750617/8568252636542750617.vrm",
+ "vroid/7/8592515091615325387/8592515091615325387.vrm",
+ "vroid/7/8593839521604595737/8593839521604595737.vrm",
+ "vroid/7/8597117293706619517/8597117293706619517.vrm",
+ "vroid/7/8607788841229897727/8607788841229897727.vrm",
+ "vroid/7/8610702594407553377/8610702594407553377.vrm",
+ "vroid/7/8614039080469748817/8614039080469748817.vrm",
+ "vroid/7/8620446890337946547/8620446890337946547.vrm",
+ "vroid/7/8626298746108887537/8626298746108887537.vrm",
+ "vroid/7/862678441999403607/862678441999403607.vrm",
+ "vroid/7/8633187657348595497/8633187657348595497.vrm",
+ "vroid/7/8634702908282577017/8634702908282577017.vrm",
+ "vroid/7/8648278707246779527/8648278707246779527.vrm",
+ "vroid/7/865232863087546257/865232863087546257.vrm",
+ "vroid/7/8653107013847210027/8653107013847210027.vrm",
+ "vroid/7/8653690004453280557/8653690004453280557.vrm",
+ "vroid/7/8667877828931826167/8667877828931826167.vrm",
+ "vroid/7/8670203922453239817/8670203922453239817.vrm",
+ "vroid/7/8672279741106636407/8672279741106636407.vrm",
+ "vroid/7/8672688523242998927/8672688523242998927.vrm",
+ "vroid/7/8680205580721683527/8680205580721683527.vrm",
+ "vroid/7/8680953980364334377/8680953980364334377.vrm",
+ "vroid/7/8682026234508631487/8682026234508631487.vrm",
+ "vroid/7/868626402934766657/868626402934766657.vrm",
+ "vroid/7/8686567935077986837/8686567935077986837.vrm",
+ "vroid/7/8698349421508003207/8698349421508003207.vrm",
+ "vroid/7/8708743380661768717/8708743380661768717.vrm",
+ "vroid/7/8722608355994960777/8722608355994960777.vrm",
+ "vroid/7/8727066224337959627/8727066224337959627.vrm",
+ "vroid/7/8727209824125561717/8727209824125561717.vrm",
+ "vroid/7/8728933585864472337/8728933585864472337.vrm",
+ "vroid/7/8751046373180481487/8751046373180481487.vrm",
+ "vroid/7/8760674251911688127/8760674251911688127.vrm",
+ "vroid/7/8763095921829349497/8763095921829349497.vrm",
+ "vroid/7/8790211834400992287/8790211834400992287.vrm",
+ "vroid/7/879071612373332487/879071612373332487.vrm",
+ "vroid/7/879733534380679497/879733534380679497.vrm",
+ "vroid/7/8825408687760073627/8825408687760073627.vrm",
+ "vroid/7/8836425410264379487/8836425410264379487.vrm",
+ "vroid/7/8839528177884749667/8839528177884749667.vrm",
+ "vroid/7/8848848191012837427/8848848191012837427.vrm",
+ "vroid/7/8856191226742931157/8856191226742931157.vrm",
+ "vroid/7/8858724294500530117/8858724294500530117.vrm",
+ "vroid/7/8860758017089565047/8860758017089565047.vrm",
+ "vroid/7/8863502382155674157/8863502382155674157.vrm",
+ "vroid/7/8864436364234861697/8864436364234861697.vrm",
+ "vroid/7/8865079099627632977/8865079099627632977.vrm",
+ "vroid/7/8865762915706186787/8865762915706186787.vrm",
+ "vroid/7/8868778144249097367/8868778144249097367.vrm",
+ "vroid/7/8870166577141855027/8870166577141855027.vrm",
+ "vroid/7/8871319427327393627/8871319427327393627.vrm",
+ "vroid/7/8874594653116618677/8874594653116618677.vrm",
+ "vroid/7/8878394038280449887/8878394038280449887.vrm",
+ "vroid/7/8881571617069757087/8881571617069757087.vrm",
+ "vroid/7/8883013410742572597/8883013410742572597.vrm",
+ "vroid/7/8897876899518864647/8897876899518864647.vrm",
+ "vroid/7/890472312393861217/890472312393861217.vrm",
+ "vroid/7/8908162137462845137/8908162137462845137.vrm",
+ "vroid/7/893070785770268237/893070785770268237.vrm",
+ "vroid/7/8933779209565067657/8933779209565067657.vrm",
+ "vroid/7/8944149220003508807/8944149220003508807.vrm",
+ "vroid/7/8947762254968974917/8947762254968974917.vrm",
+ "vroid/7/8951858935169278157/8951858935169278157.vrm",
+ "vroid/7/8952137357510751687/8952137357510751687.vrm",
+ "vroid/7/8954478122395879937/8954478122395879937.vrm",
+ "vroid/7/8956536144676649387/8956536144676649387.vrm",
+ "vroid/7/8963160494162676077/8963160494162676077.vrm",
+ "vroid/7/8972729001965084547/8972729001965084547.vrm",
+ "vroid/7/8976266803829290597/8976266803829290597.vrm",
+ "vroid/7/8988208521390700507/8988208521390700507.vrm",
+ "vroid/7/8988340285028889257/8988340285028889257.vrm",
+ "vroid/7/8990886184699497797/8990886184699497797.vrm",
+ "vroid/7/8993387866018998867/8993387866018998867.vrm",
+ "vroid/7/9000670767753286137/9000670767753286137.vrm",
+ "vroid/7/9002963456460650467/9002963456460650467.vrm",
+ "vroid/7/9020115637089556117/9020115637089556117.vrm",
+ "vroid/7/9020990683510160437/9020990683510160437.vrm",
+ "vroid/7/9025343325554081337/9025343325554081337.vrm",
+ "vroid/7/9025618688332300497/9025618688332300497.vrm",
+ "vroid/7/9025978660075183817/9025978660075183817.vrm",
+ "vroid/7/9032110938118602807/9032110938118602807.vrm",
+ "vroid/7/9033714307124454657/9033714307124454657.vrm",
+ "vroid/7/9034142637439526157/9034142637439526157.vrm",
+ "vroid/7/9036670647358942987/9036670647358942987.vrm",
+ "vroid/7/9042128895093871197/9042128895093871197.vrm",
+ "vroid/7/9054532099974058097/9054532099974058097.vrm",
+ "vroid/7/9058693112937681057/9058693112937681057.vrm",
+ "vroid/7/9069514665234246177/9069514665234246177.vrm",
+ "vroid/7/9069717160838494387/9069717160838494387.vrm",
+ "vroid/7/9077396089792686967/9077396089792686967.vrm",
+ "vroid/7/9089866213157755597/9089866213157755597.vrm",
+ "vroid/7/9098042132757264377/9098042132757264377.vrm",
+ "vroid/7/9100912758638009347/9100912758638009347.vrm",
+ "vroid/7/9103180319035267607/9103180319035267607.vrm",
+ "vroid/7/9105993487284200357/9105993487284200357.vrm",
+ "vroid/7/9125711759542224747/9125711759542224747.vrm",
+ "vroid/7/91317494350387377/91317494350387377.vrm",
+ "vroid/7/9131942521470166877/9131942521470166877.vrm",
+ "vroid/7/9135220721814830497/9135220721814830497.vrm",
+ "vroid/7/9149773726643533197/9149773726643533197.vrm",
+ "vroid/7/9162051045522528807/9162051045522528807.vrm",
+ "vroid/7/9164663482494439277/9164663482494439277.vrm",
+ "vroid/7/9167465307568787077/9167465307568787077.vrm",
+ "vroid/7/9167640545484556527/9167640545484556527.vrm",
+ "vroid/7/9179873404131259967/9179873404131259967.vrm",
+ "vroid/7/9181181297541451867/9181181297541451867.vrm",
+ "vroid/7/9184366020572776847/9184366020572776847.vrm",
+ "vroid/7/9198227096064884097/9198227096064884097.vrm",
+ "vroid/7/9214411016370517477/9214411016370517477.vrm",
+ "vroid/7/9220837466571269117/9220837466571269117.vrm",
+ "vroid/7/924720500117988977/924720500117988977.vrm",
+ "vroid/7/936785450805188957/936785450805188957.vrm",
+ "vroid/7/940358036000899977/940358036000899977.vrm",
+ "vroid/7/957786991190086737/957786991190086737.vrm",
+ "vroid/7/967171104010729127/967171104010729127.vrm",
+ "vroid/7/981898385906410617/981898385906410617.vrm",
+ "vroid/7/99135446856012657/99135446856012657.vrm",
+ "vroid/7/992370222103801117/992370222103801117.vrm",
+ "vroid/7/992742288557030377/992742288557030377.vrm",
+ "vroid/7/995207997983654967/995207997983654967.vrm",
+ "vroid/7/999437592862772047/999437592862772047.vrm",
+ "vroid/8/1001354239463345688/1001354239463345688.vrm",
+ "vroid/8/1010164970508114068/1010164970508114068.vrm",
+ "vroid/8/1016754907522903578/1016754907522903578.vrm",
+ "vroid/8/1017183490860990678/1017183490860990678.vrm",
+ "vroid/8/1017258167469455738/1017258167469455738.vrm",
+ "vroid/8/1017716286010890988/1017716286010890988.vrm",
+ "vroid/8/1021175346465024988/1021175346465024988.vrm",
+ "vroid/8/1021451932024750268/1021451932024750268.vrm",
+ "vroid/8/1024422226486982498/1024422226486982498.vrm",
+ "vroid/8/1032942047810625138/1032942047810625138.vrm",
+ "vroid/8/1042071595948307898/1042071595948307898.vrm",
+ "vroid/8/1055179520364421598/1055179520364421598.vrm",
+ "vroid/8/1055664085489968178/1055664085489968178.vrm",
+ "vroid/8/1063343824739223298/1063343824739223298.vrm",
+ "vroid/8/1064505034195631198/1064505034195631198.vrm",
+ "vroid/8/1064908863270244428/1064908863270244428.vrm",
+ "vroid/8/1073492433280015688/1073492433280015688.vrm",
+ "vroid/8/1085129431829249978/1085129431829249978.vrm",
+ "vroid/8/1085678911436141298/1085678911436141298.vrm",
+ "vroid/8/1108652048397778918/1108652048397778918.vrm",
+ "vroid/8/1113822980571357758/1113822980571357758.vrm",
+ "vroid/8/1114131680001999378/1114131680001999378.vrm",
+ "vroid/8/1116943967067500038/1116943967067500038.vrm",
+ "vroid/8/1116960811988302548/1116960811988302548.vrm",
+ "vroid/8/112321430092994178/112321430092994178.vrm",
+ "vroid/8/1124001505858808228/1124001505858808228.vrm",
+ "vroid/8/1127632850218300238/1127632850218300238.vrm",
+ "vroid/8/1133658923931162378/1133658923931162378.vrm",
+ "vroid/8/1139245593692146098/1139245593692146098.vrm",
+ "vroid/8/1140171187759744858/1140171187759744858.vrm",
+ "vroid/8/1149695909665697698/1149695909665697698.vrm",
+ "vroid/8/117450483238350918/117450483238350918.vrm",
+ "vroid/8/1178033198305632418/1178033198305632418.vrm",
+ "vroid/8/1182180800237853308/1182180800237853308.vrm",
+ "vroid/8/118252258353190348/118252258353190348.vrm",
+ "vroid/8/1184181077667647678/1184181077667647678.vrm",
+ "vroid/8/1191455569364500668/1191455569364500668.vrm",
+ "vroid/8/119379071557588638/119379071557588638.vrm",
+ "vroid/8/1199588004763381198/1199588004763381198.vrm",
+ "vroid/8/120012462433532178/120012462433532178.vrm",
+ "vroid/8/120313242285823818/120313242285823818.vrm",
+ "vroid/8/1205479219420325538/1205479219420325538.vrm",
+ "vroid/8/1219578050090037118/1219578050090037118.vrm",
+ "vroid/8/1223753152127232398/1223753152127232398.vrm",
+ "vroid/8/1226144768574047248/1226144768574047248.vrm",
+ "vroid/8/1226551931970166128/1226551931970166128.vrm",
+ "vroid/8/1232065125542726368/1232065125542726368.vrm",
+ "vroid/8/1238201703874517288/1238201703874517288.vrm",
+ "vroid/8/1239104672844137908/1239104672844137908.vrm",
+ "vroid/8/125014244079297128/125014244079297128.vrm",
+ "vroid/8/1251071140446298258/1251071140446298258.vrm",
+ "vroid/8/1257686576865589478/1257686576865589478.vrm",
+ "vroid/8/1279871264770370418/1279871264770370418.vrm",
+ "vroid/8/1283592059629229838/1283592059629229838.vrm",
+ "vroid/8/1289103287426177128/1289103287426177128.vrm",
+ "vroid/8/1289954182482089208/1289954182482089208.vrm",
+ "vroid/8/1293384747902613118/1293384747902613118.vrm",
+ "vroid/8/1294592543541156028/1294592543541156028.vrm",
+ "vroid/8/1306123699587687078/1306123699587687078.vrm",
+ "vroid/8/1309080047874941928/1309080047874941928.vrm",
+ "vroid/8/1326810739716718848/1326810739716718848.vrm",
+ "vroid/8/1328910488253728238/1328910488253728238.vrm",
+ "vroid/8/1346154175809670918/1346154175809670918.vrm",
+ "vroid/8/1350898358994297678/1350898358994297678.vrm",
+ "vroid/8/1357961712977444488/1357961712977444488.vrm",
+ "vroid/8/1360799490699591418/1360799490699591418.vrm",
+ "vroid/8/1364977411651464418/1364977411651464418.vrm",
+ "vroid/8/1365101476049029418/1365101476049029418.vrm",
+ "vroid/8/1366297765560382718/1366297765560382718.vrm",
+ "vroid/8/1376315712184702158/1376315712184702158.vrm",
+ "vroid/8/1390922417227109968/1390922417227109968.vrm",
+ "vroid/8/140061987942389418/140061987942389418.vrm",
+ "vroid/8/1402113543714102418/1402113543714102418.vrm",
+ "vroid/8/1412808436654720078/1412808436654720078.vrm",
+ "vroid/8/141861298663485628/141861298663485628.vrm",
+ "vroid/8/1430745652578634808/1430745652578634808.vrm",
+ "vroid/8/144747400983003588/144747400983003588.vrm",
+ "vroid/8/1451932290455664408/1451932290455664408.vrm",
+ "vroid/8/1452342083116440228/1452342083116440228.vrm",
+ "vroid/8/146117206842948118/146117206842948118.vrm",
+ "vroid/8/1461570105069302178/1461570105069302178.vrm",
+ "vroid/8/1461880307236421898/1461880307236421898.vrm",
+ "vroid/8/1470080093955377338/1470080093955377338.vrm",
+ "vroid/8/1474585050709633798/1474585050709633798.vrm",
+ "vroid/8/1477496831154959358/1477496831154959358.vrm",
+ "vroid/8/1478763690900565848/1478763690900565848.vrm",
+ "vroid/8/148337057545270788/148337057545270788.vrm",
+ "vroid/8/1485570303100786708/1485570303100786708.vrm",
+ "vroid/8/1491902497101246788/1491902497101246788.vrm",
+ "vroid/8/1494822555572441098/1494822555572441098.vrm",
+ "vroid/8/1498089808889317098/1498089808889317098.vrm",
+ "vroid/8/150307196295915278/150307196295915278.vrm",
+ "vroid/8/1505780691064179408/1505780691064179408.vrm",
+ "vroid/8/1505871272620043338/1505871272620043338.vrm",
+ "vroid/8/1511442185528827808/1511442185528827808.vrm",
+ "vroid/8/1522824285689184808/1522824285689184808.vrm",
+ "vroid/8/1531581385397286058/1531581385397286058.vrm",
+ "vroid/8/1535830118149417148/1535830118149417148.vrm",
+ "vroid/8/1544236669243609388/1544236669243609388.vrm",
+ "vroid/8/1549013336660939818/1549013336660939818.vrm",
+ "vroid/8/155908209383963488/155908209383963488.vrm",
+ "vroid/8/1563551224442644008/1563551224442644008.vrm",
+ "vroid/8/1585424170508932788/1585424170508932788.vrm",
+ "vroid/8/1585797274818653628/1585797274818653628.vrm",
+ "vroid/8/1587744841294968578/1587744841294968578.vrm",
+ "vroid/8/1593991052613407408/1593991052613407408.vrm",
+ "vroid/8/1594818620592148958/1594818620592148958.vrm",
+ "vroid/8/1597878064765602618/1597878064765602618.vrm",
+ "vroid/8/1606177666132689598/1606177666132689598.vrm",
+ "vroid/8/1635314435289224118/1635314435289224118.vrm",
+ "vroid/8/1639829206594848098/1639829206594848098.vrm",
+ "vroid/8/1646396092298308428/1646396092298308428.vrm",
+ "vroid/8/1647222673052534058/1647222673052534058.vrm",
+ "vroid/8/1651901952458368368/1651901952458368368.vrm",
+ "vroid/8/1653654050556969098/1653654050556969098.vrm",
+ "vroid/8/1654667005381421538/1654667005381421538.vrm",
+ "vroid/8/1661499371409158538/1661499371409158538.vrm",
+ "vroid/8/1668440246495804558/1668440246495804558.vrm",
+ "vroid/8/1672666972742319118/1672666972742319118.vrm",
+ "vroid/8/1682137337435337278/1682137337435337278.vrm",
+ "vroid/8/1683332706363571058/1683332706363571058.vrm",
+ "vroid/8/1687282573424715048/1687282573424715048.vrm",
+ "vroid/8/1687747567540604008/1687747567540604008.vrm",
+ "vroid/8/1706240133491766838/1706240133491766838.vrm",
+ "vroid/8/1707760147131492118/1707760147131492118.vrm",
+ "vroid/8/1738641036506718258/1738641036506718258.vrm",
+ "vroid/8/1742591896140442448/1742591896140442448.vrm",
+ "vroid/8/1746266356809344468/1746266356809344468.vrm",
+ "vroid/8/1753584995044876578/1753584995044876578.vrm",
+ "vroid/8/1767611141600768778/1767611141600768778.vrm",
+ "vroid/8/177126263812582718/177126263812582718.vrm",
+ "vroid/8/1772448552849714338/1772448552849714338.vrm",
+ "vroid/8/1774450198045898458/1774450198045898458.vrm",
+ "vroid/8/1784576226701284818/1784576226701284818.vrm",
+ "vroid/8/1797243928908475568/1797243928908475568.vrm",
+ "vroid/8/1803973447359942268/1803973447359942268.vrm",
+ "vroid/8/1809877326732037048/1809877326732037048.vrm",
+ "vroid/8/1817799696802302198/1817799696802302198.vrm",
+ "vroid/8/1818024220377444898/1818024220377444898.vrm",
+ "vroid/8/182243890626887468/182243890626887468.vrm",
+ "vroid/8/1828763359933042338/1828763359933042338.vrm",
+ "vroid/8/1829608282526051548/1829608282526051548.vrm",
+ "vroid/8/1842653283934174138/1842653283934174138.vrm",
+ "vroid/8/1842684441126998408/1842684441126998408.vrm",
+ "vroid/8/1852027672509101608/1852027672509101608.vrm",
+ "vroid/8/185367718255539518/185367718255539518.vrm",
+ "vroid/8/1855140611784243238/1855140611784243238.vrm",
+ "vroid/8/1861442983252603028/1861442983252603028.vrm",
+ "vroid/8/1862632316816072858/1862632316816072858.vrm",
+ "vroid/8/1863701953709398218/1863701953709398218.vrm",
+ "vroid/8/186645841561966508/186645841561966508.vrm",
+ "vroid/8/1867328141682075448/1867328141682075448.vrm",
+ "vroid/8/1870356226328135098/1870356226328135098.vrm",
+ "vroid/8/1875907454040571718/1875907454040571718.vrm",
+ "vroid/8/1877631225106076958/1877631225106076958.vrm",
+ "vroid/8/187801645361174438/187801645361174438.vrm",
+ "vroid/8/18809225954186638/18809225954186638.vrm",
+ "vroid/8/1887701044880195128/1887701044880195128.vrm",
+ "vroid/8/1893726947387321248/1893726947387321248.vrm",
+ "vroid/8/1901441349922348188/1901441349922348188.vrm",
+ "vroid/8/1901537329741662688/1901537329741662688.vrm",
+ "vroid/8/1906362233104643008/1906362233104643008.vrm",
+ "vroid/8/190889763016197518/190889763016197518.vrm",
+ "vroid/8/1914643652103556808/1914643652103556808.vrm",
+ "vroid/8/1922441646817376398/1922441646817376398.vrm",
+ "vroid/8/192735332970899168/192735332970899168.vrm",
+ "vroid/8/1929516733012795758/1929516733012795758.vrm",
+ "vroid/8/1930668346914029368/1930668346914029368.vrm",
+ "vroid/8/1944768849201250658/1944768849201250658.vrm",
+ "vroid/8/1945416999507519088/1945416999507519088.vrm",
+ "vroid/8/1952546574100651378/1952546574100651378.vrm",
+ "vroid/8/1959117473101048938/1959117473101048938.vrm",
+ "vroid/8/1966539996989200928/1966539996989200928.vrm",
+ "vroid/8/1969176163993513308/1969176163993513308.vrm",
+ "vroid/8/1969932851437868208/1969932851437868208.vrm",
+ "vroid/8/1977721529042379268/1977721529042379268.vrm",
+ "vroid/8/1977770969343439118/1977770969343439118.vrm",
+ "vroid/8/1991305943873918018/1991305943873918018.vrm",
+ "vroid/8/199536918569402188/199536918569402188.vrm",
+ "vroid/8/1997565256621641808/1997565256621641808.vrm",
+ "vroid/8/1998680687849490988/1998680687849490988.vrm",
+ "vroid/8/200014170971508018/200014170971508018.vrm",
+ "vroid/8/2007959965099676308/2007959965099676308.vrm",
+ "vroid/8/2009395181911026028/2009395181911026028.vrm",
+ "vroid/8/2011793221759338638/2011793221759338638.vrm",
+ "vroid/8/2012993068473991228/2012993068473991228.vrm",
+ "vroid/8/2017288955897337708/2017288955897337708.vrm",
+ "vroid/8/2018829332630501498/2018829332630501498.vrm",
+ "vroid/8/2026838045591346548/2026838045591346548.vrm",
+ "vroid/8/2033110649345289868/2033110649345289868.vrm",
+ "vroid/8/203683475266366318/203683475266366318.vrm",
+ "vroid/8/2038174345194112278/2038174345194112278.vrm",
+ "vroid/8/2042307146559450438/2042307146559450438.vrm",
+ "vroid/8/2042485001818245738/2042485001818245738.vrm",
+ "vroid/8/204685936719347078/204685936719347078.vrm",
+ "vroid/8/2047936785507665598/2047936785507665598.vrm",
+ "vroid/8/2053405120894102598/2053405120894102598.vrm",
+ "vroid/8/2053537984447789378/2053537984447789378.vrm",
+ "vroid/8/2060346647618328178/2060346647618328178.vrm",
+ "vroid/8/2060981116508847948/2060981116508847948.vrm",
+ "vroid/8/2063002158048259338/2063002158048259338.vrm",
+ "vroid/8/2070707084857995078/2070707084857995078.vrm",
+ "vroid/8/2075483669720335088/2075483669720335088.vrm",
+ "vroid/8/2081766541895096378/2081766541895096378.vrm",
+ "vroid/8/2089189264268551388/2089189264268551388.vrm",
+ "vroid/8/2094826258462674698/2094826258462674698.vrm",
+ "vroid/8/2095154563878043878/2095154563878043878.vrm",
+ "vroid/8/2099389318759748048/2099389318759748048.vrm",
+ "vroid/8/2099585839891425608/2099585839891425608.vrm",
+ "vroid/8/2102286902113079038/2102286902113079038.vrm",
+ "vroid/8/2106769507199548018/2106769507199548018.vrm",
+ "vroid/8/2108794643520371228/2108794643520371228.vrm",
+ "vroid/8/2113503304857594208/2113503304857594208.vrm",
+ "vroid/8/2133712895824636198/2133712895824636198.vrm",
+ "vroid/8/2135602213192076618/2135602213192076618.vrm",
+ "vroid/8/2141639507221299308/2141639507221299308.vrm",
+ "vroid/8/2146230486172081578/2146230486172081578.vrm",
+ "vroid/8/2156833534202602078/2156833534202602078.vrm",
+ "vroid/8/2164134848037965498/2164134848037965498.vrm",
+ "vroid/8/2170222870989730858/2170222870989730858.vrm",
+ "vroid/8/2174910421601203878/2174910421601203878.vrm",
+ "vroid/8/217741750323602538/217741750323602538.vrm",
+ "vroid/8/2183785513278266008/2183785513278266008.vrm",
+ "vroid/8/2189235777683758228/2189235777683758228.vrm",
+ "vroid/8/2192819625750253478/2192819625750253478.vrm",
+ "vroid/8/2195134589017711488/2195134589017711488.vrm",
+ "vroid/8/2197912678027047158/2197912678027047158.vrm",
+ "vroid/8/2198604042123848438/2198604042123848438.vrm",
+ "vroid/8/2203183298847543738/2203183298847543738.vrm",
+ "vroid/8/2211113649547618348/2211113649547618348.vrm",
+ "vroid/8/2215251443335487338/2215251443335487338.vrm",
+ "vroid/8/2219169104105100858/2219169104105100858.vrm",
+ "vroid/8/2219618719919349868/2219618719919349868.vrm",
+ "vroid/8/2219761425865885488/2219761425865885488.vrm",
+ "vroid/8/2225193904707759898/2225193904707759898.vrm",
+ "vroid/8/2230197925036842028/2230197925036842028.vrm",
+ "vroid/8/2232103120256537958/2232103120256537958.vrm",
+ "vroid/8/2237066187294878868/2237066187294878868.vrm",
+ "vroid/8/2252077541816984128/2252077541816984128.vrm",
+ "vroid/8/225275728816734828/225275728816734828.vrm",
+ "vroid/8/2254371462248369778/2254371462248369778.vrm",
+ "vroid/8/2265348970376350358/2265348970376350358.vrm",
+ "vroid/8/2270686555369259818/2270686555369259818.vrm",
+ "vroid/8/2275450690631514988/2275450690631514988.vrm",
+ "vroid/8/228499016864332898/228499016864332898.vrm",
+ "vroid/8/2307455255952507028/2307455255952507028.vrm",
+ "vroid/8/2311830250306814708/2311830250306814708.vrm",
+ "vroid/8/231236436831950758/231236436831950758.vrm",
+ "vroid/8/2315460568681060208/2315460568681060208.vrm",
+ "vroid/8/2319063723115019838/2319063723115019838.vrm",
+ "vroid/8/2326559753946225638/2326559753946225638.vrm",
+ "vroid/8/2333379012598892558/2333379012598892558.vrm",
+ "vroid/8/2336590712998739528/2336590712998739528.vrm",
+ "vroid/8/234693904232351858/234693904232351858.vrm",
+ "vroid/8/2353307770438067318/2353307770438067318.vrm",
+ "vroid/8/2362302671698633758/2362302671698633758.vrm",
+ "vroid/8/2363750115077791708/2363750115077791708.vrm",
+ "vroid/8/236525911787854448/236525911787854448.vrm",
+ "vroid/8/2377077670363360768/2377077670363360768.vrm",
+ "vroid/8/2379581107067821228/2379581107067821228.vrm",
+ "vroid/8/2379977264833811068/2379977264833811068.vrm",
+ "vroid/8/2393197126678007048/2393197126678007048.vrm",
+ "vroid/8/2402387514073425588/2402387514073425588.vrm",
+ "vroid/8/241848706740933648/241848706740933648.vrm",
+ "vroid/8/2419016609674066848/2419016609674066848.vrm",
+ "vroid/8/2419116376449848198/2419116376449848198.vrm",
+ "vroid/8/2422302261996255278/2422302261996255278.vrm",
+ "vroid/8/2428792447156783748/2428792447156783748.vrm",
+ "vroid/8/2442655345924671328/2442655345924671328.vrm",
+ "vroid/8/2444157513457650308/2444157513457650308.vrm",
+ "vroid/8/2445715322350650378/2445715322350650378.vrm",
+ "vroid/8/2453066163251380998/2453066163251380998.vrm",
+ "vroid/8/2458825067624946188/2458825067624946188.vrm",
+ "vroid/8/2464552546540696128/2464552546540696128.vrm",
+ "vroid/8/2469689865204046238/2469689865204046238.vrm",
+ "vroid/8/2488891082724828288/2488891082724828288.vrm",
+ "vroid/8/2516192218304772188/2516192218304772188.vrm",
+ "vroid/8/2517838647689136048/2517838647689136048.vrm",
+ "vroid/8/2518516417720717958/2518516417720717958.vrm",
+ "vroid/8/2519274834198242348/2519274834198242348.vrm",
+ "vroid/8/252000845733733818/252000845733733818.vrm",
+ "vroid/8/2521150635056786428/2521150635056786428.vrm",
+ "vroid/8/2522195078604792898/2522195078604792898.vrm",
+ "vroid/8/2522419413316153448/2522419413316153448.vrm",
+ "vroid/8/2534430405998673278/2534430405998673278.vrm",
+ "vroid/8/2537939026270909568/2537939026270909568.vrm",
+ "vroid/8/2542962790475600248/2542962790475600248.vrm",
+ "vroid/8/2545383474863375208/2545383474863375208.vrm",
+ "vroid/8/2549547907674981868/2549547907674981868.vrm",
+ "vroid/8/2556808403741200968/2556808403741200968.vrm",
+ "vroid/8/2561819588886205828/2561819588886205828.vrm",
+ "vroid/8/257353358459112778/257353358459112778.vrm",
+ "vroid/8/2574417938257147578/2574417938257147578.vrm",
+ "vroid/8/258271936293815128/258271936293815128.vrm",
+ "vroid/8/2589506481908485978/2589506481908485978.vrm",
+ "vroid/8/2599602859354916028/2599602859354916028.vrm",
+ "vroid/8/2606616029063974598/2606616029063974598.vrm",
+ "vroid/8/2615637260793096228/2615637260793096228.vrm",
+ "vroid/8/2621314764675879658/2621314764675879658.vrm",
+ "vroid/8/2635720542386001918/2635720542386001918.vrm",
+ "vroid/8/2637144302472469448/2637144302472469448.vrm",
+ "vroid/8/2644494331012803598/2644494331012803598.vrm",
+ "vroid/8/2670539528625697708/2670539528625697708.vrm",
+ "vroid/8/2672746695514051868/2672746695514051868.vrm",
+ "vroid/8/2680868708875179508/2680868708875179508.vrm",
+ "vroid/8/2684570953025110388/2684570953025110388.vrm",
+ "vroid/8/2689453422550882348/2689453422550882348.vrm",
+ "vroid/8/2692437881795474018/2692437881795474018.vrm",
+ "vroid/8/2706473048855380548/2706473048855380548.vrm",
+ "vroid/8/2711504927355878618/2711504927355878618.vrm",
+ "vroid/8/2714317475079379498/2714317475079379498.vrm",
+ "vroid/8/2715715379198657898/2715715379198657898.vrm",
+ "vroid/8/2724884802119992238/2724884802119992238.vrm",
+ "vroid/8/2725259867053063388/2725259867053063388.vrm",
+ "vroid/8/2728990750449832368/2728990750449832368.vrm",
+ "vroid/8/2736464792320675368/2736464792320675368.vrm",
+ "vroid/8/2742321764367843608/2742321764367843608.vrm",
+ "vroid/8/2745352611846923188/2745352611846923188.vrm",
+ "vroid/8/2749361628782121748/2749361628782121748.vrm",
+ "vroid/8/2771118681792168668/2771118681792168668.vrm",
+ "vroid/8/2780430848768364428/2780430848768364428.vrm",
+ "vroid/8/2781930657843593968/2781930657843593968.vrm",
+ "vroid/8/2787146735595468648/2787146735595468648.vrm",
+ "vroid/8/2788695870225939368/2788695870225939368.vrm",
+ "vroid/8/2799017205218875888/2799017205218875888.vrm",
+ "vroid/8/2799342100050198918/2799342100050198918.vrm",
+ "vroid/8/2800468734309482638/2800468734309482638.vrm",
+ "vroid/8/2804996654629422428/2804996654629422428.vrm",
+ "vroid/8/2805384997438054148/2805384997438054148.vrm",
+ "vroid/8/2810887983466890568/2810887983466890568.vrm",
+ "vroid/8/2814993017888526888/2814993017888526888.vrm",
+ "vroid/8/2817890515603394928/2817890515603394928.vrm",
+ "vroid/8/2822337248695097128/2822337248695097128.vrm",
+ "vroid/8/2827726907664471738/2827726907664471738.vrm",
+ "vroid/8/283253501300221208/283253501300221208.vrm",
+ "vroid/8/2836540219977306768/2836540219977306768.vrm",
+ "vroid/8/2848263152158284498/2848263152158284498.vrm",
+ "vroid/8/2851603535592584718/2851603535592584718.vrm",
+ "vroid/8/2862733147454051588/2862733147454051588.vrm",
+ "vroid/8/2869209671257940388/2869209671257940388.vrm",
+ "vroid/8/2878304132989896368/2878304132989896368.vrm",
+ "vroid/8/2888804640729875268/2888804640729875268.vrm",
+ "vroid/8/2889878131525179738/2889878131525179738.vrm",
+ "vroid/8/2894958751695420278/2894958751695420278.vrm",
+ "vroid/8/2902614432844749478/2902614432844749478.vrm",
+ "vroid/8/2918419924257979458/2918419924257979458.vrm",
+ "vroid/8/2920449962139492788/2920449962139492788.vrm",
+ "vroid/8/2929297841296394448/2929297841296394448.vrm",
+ "vroid/8/2933918162371857328/2933918162371857328.vrm",
+ "vroid/8/2939262480766465618/2939262480766465618.vrm",
+ "vroid/8/294147701701902608/294147701701902608.vrm",
+ "vroid/8/2944234745364811118/2944234745364811118.vrm",
+ "vroid/8/2945596131756432728/2945596131756432728.vrm",
+ "vroid/8/2951495124159360418/2951495124159360418.vrm",
+ "vroid/8/2956504678580594418/2956504678580594418.vrm",
+ "vroid/8/2957585095093644238/2957585095093644238.vrm",
+ "vroid/8/2957919728017576238/2957919728017576238.vrm",
+ "vroid/8/2969716953789704688/2969716953789704688.vrm",
+ "vroid/8/2974468069774829968/2974468069774829968.vrm",
+ "vroid/8/2975104187052576538/2975104187052576538.vrm",
+ "vroid/8/2994635260749651418/2994635260749651418.vrm",
+ "vroid/8/3002232654989868638/3002232654989868638.vrm",
+ "vroid/8/3005274529183918728/3005274529183918728.vrm",
+ "vroid/8/3007189063892002338/3007189063892002338.vrm",
+ "vroid/8/3014201390185801088/3014201390185801088.vrm",
+ "vroid/8/3016990698389864538/3016990698389864538.vrm",
+ "vroid/8/3025856300443519648/3025856300443519648.vrm",
+ "vroid/8/302931118282531688/302931118282531688.vrm",
+ "vroid/8/3045734010737351368/3045734010737351368.vrm",
+ "vroid/8/3051369176028632238/3051369176028632238.vrm",
+ "vroid/8/3052158562973043518/3052158562973043518.vrm",
+ "vroid/8/3056109163048768038/3056109163048768038.vrm",
+ "vroid/8/3058109948747732088/3058109948747732088.vrm",
+ "vroid/8/3059156907862941648/3059156907862941648.vrm",
+ "vroid/8/3059513941787256428/3059513941787256428.vrm",
+ "vroid/8/3066970195304840878/3066970195304840878.vrm",
+ "vroid/8/3075410605787710128/3075410605787710128.vrm",
+ "vroid/8/3076857351864715858/3076857351864715858.vrm",
+ "vroid/8/3083882224848837068/3083882224848837068.vrm",
+ "vroid/8/309555111778870628/309555111778870628.vrm",
+ "vroid/8/3103579594120501198/3103579594120501198.vrm",
+ "vroid/8/311238587407543478/311238587407543478.vrm",
+ "vroid/8/3116118276498963218/3116118276498963218.vrm",
+ "vroid/8/3118916394438033988/3118916394438033988.vrm",
+ "vroid/8/3119583419548593948/3119583419548593948.vrm",
+ "vroid/8/312612646710716548/312612646710716548.vrm",
+ "vroid/8/3127037064847280788/3127037064847280788.vrm",
+ "vroid/8/316129863396362338/316129863396362338.vrm",
+ "vroid/8/3177092199202204518/3177092199202204518.vrm",
+ "vroid/8/317726365959478608/317726365959478608.vrm",
+ "vroid/8/3192134343534816628/3192134343534816628.vrm",
+ "vroid/8/319285521906020388/319285521906020388.vrm",
+ "vroid/8/3207400458115992018/3207400458115992018.vrm",
+ "vroid/8/3207585563428019288/3207585563428019288.vrm",
+ "vroid/8/3211162260882904828/3211162260882904828.vrm",
+ "vroid/8/3219113269792995798/3219113269792995798.vrm",
+ "vroid/8/323918320243422518/323918320243422518.vrm",
+ "vroid/8/3264716651784818738/3264716651784818738.vrm",
+ "vroid/8/3272633530514547958/3272633530514547958.vrm",
+ "vroid/8/3274072592698772538/3274072592698772538.vrm",
+ "vroid/8/3275396851918810158/3275396851918810158.vrm",
+ "vroid/8/3277846831306320158/3277846831306320158.vrm",
+ "vroid/8/3279993666292852188/3279993666292852188.vrm",
+ "vroid/8/3287297655757058958/3287297655757058958.vrm",
+ "vroid/8/3307917284630279618/3307917284630279618.vrm",
+ "vroid/8/3329600106422862068/3329600106422862068.vrm",
+ "vroid/8/3345217085589780658/3345217085589780658.vrm",
+ "vroid/8/3358978848726404168/3358978848726404168.vrm",
+ "vroid/8/3364902627332958948/3364902627332958948.vrm",
+ "vroid/8/3372516693732555218/3372516693732555218.vrm",
+ "vroid/8/3373253877128511578/3373253877128511578.vrm",
+ "vroid/8/337398826077908238/337398826077908238.vrm",
+ "vroid/8/3375410804234871198/3375410804234871198.vrm",
+ "vroid/8/3386521784415408858/3386521784415408858.vrm",
+ "vroid/8/3389063967568750908/3389063967568750908.vrm",
+ "vroid/8/3390669323185946128/3390669323185946128.vrm",
+ "vroid/8/3393334139690549558/3393334139690549558.vrm",
+ "vroid/8/3398729607027236238/3398729607027236238.vrm",
+ "vroid/8/3399373620729645468/3399373620729645468.vrm",
+ "vroid/8/3401025573293395578/3401025573293395578.vrm",
+ "vroid/8/3405131253449074758/3405131253449074758.vrm",
+ "vroid/8/3428805080881140908/3428805080881140908.vrm",
+ "vroid/8/342915425161979478/342915425161979478.vrm",
+ "vroid/8/3441635248668867828/3441635248668867828.vrm",
+ "vroid/8/344511030690802058/344511030690802058.vrm",
+ "vroid/8/3455661876626211198/3455661876626211198.vrm",
+ "vroid/8/3466560192773844048/3466560192773844048.vrm",
+ "vroid/8/3470574830177641588/3470574830177641588.vrm",
+ "vroid/8/3477642347314676478/3477642347314676478.vrm",
+ "vroid/8/3493566071169604868/3493566071169604868.vrm",
+ "vroid/8/3498283643506013208/3498283643506013208.vrm",
+ "vroid/8/3505441035091145968/3505441035091145968.vrm",
+ "vroid/8/3506617463527517878/3506617463527517878.vrm",
+ "vroid/8/3508437303919503498/3508437303919503498.vrm",
+ "vroid/8/3509970765786447108/3509970765786447108.vrm",
+ "vroid/8/3512411176576977688/3512411176576977688.vrm",
+ "vroid/8/3512607470937648588/3512607470937648588.vrm",
+ "vroid/8/3515226470860959238/3515226470860959238.vrm",
+ "vroid/8/3528939562118133658/3528939562118133658.vrm",
+ "vroid/8/3542423923341041128/3542423923341041128.vrm",
+ "vroid/8/3543306943738287658/3543306943738287658.vrm",
+ "vroid/8/3549517283033646488/3549517283033646488.vrm",
+ "vroid/8/3562507074179910498/3562507074179910498.vrm",
+ "vroid/8/3563832729428182808/3563832729428182808.vrm",
+ "vroid/8/3570654707925743908/3570654707925743908.vrm",
+ "vroid/8/3572575519072653388/3572575519072653388.vrm",
+ "vroid/8/3590391703867411158/3590391703867411158.vrm",
+ "vroid/8/3592106334595194488/3592106334595194488.vrm",
+ "vroid/8/3592426003429694608/3592426003429694608.vrm",
+ "vroid/8/3593562442988064978/3593562442988064978.vrm",
+ "vroid/8/3599903979792351248/3599903979792351248.vrm",
+ "vroid/8/3601044358235163068/3601044358235163068.vrm",
+ "vroid/8/3608425395086646928/3608425395086646928.vrm",
+ "vroid/8/3611480211868994988/3611480211868994988.vrm",
+ "vroid/8/3624203384967234928/3624203384967234928.vrm",
+ "vroid/8/3625063164808415778/3625063164808415778.vrm",
+ "vroid/8/3629873940838484168/3629873940838484168.vrm",
+ "vroid/8/3630000907668719768/3630000907668719768.vrm",
+ "vroid/8/3637067613274566718/3637067613274566718.vrm",
+ "vroid/8/3638990068285608138/3638990068285608138.vrm",
+ "vroid/8/3641454895223827718/3641454895223827718.vrm",
+ "vroid/8/3653454244432686628/3653454244432686628.vrm",
+ "vroid/8/3657790328610256368/3657790328610256368.vrm",
+ "vroid/8/3665019043619948698/3665019043619948698.vrm",
+ "vroid/8/3665163430507825778/3665163430507825778.vrm",
+ "vroid/8/3674012883267743338/3674012883267743338.vrm",
+ "vroid/8/3674679554976220228/3674679554976220228.vrm",
+ "vroid/8/3686158670036437828/3686158670036437828.vrm",
+ "vroid/8/3696864941379154988/3696864941379154988.vrm",
+ "vroid/8/3706374324829416168/3706374324829416168.vrm",
+ "vroid/8/371303286337396998/371303286337396998.vrm",
+ "vroid/8/371836486999102228/371836486999102228.vrm",
+ "vroid/8/373142787773737638/373142787773737638.vrm",
+ "vroid/8/3742045693708868978/3742045693708868978.vrm",
+ "vroid/8/3757051138516476638/3757051138516476638.vrm",
+ "vroid/8/3759529146535252728/3759529146535252728.vrm",
+ "vroid/8/3760833951013473648/3760833951013473648.vrm",
+ "vroid/8/3773007496128003578/3773007496128003578.vrm",
+ "vroid/8/377486841553210748/377486841553210748.vrm",
+ "vroid/8/3779546080853867618/3779546080853867618.vrm",
+ "vroid/8/3780914503418980538/3780914503418980538.vrm",
+ "vroid/8/3781747569395994178/3781747569395994178.vrm",
+ "vroid/8/3788194291072923678/3788194291072923678.vrm",
+ "vroid/8/3799597283482350638/3799597283482350638.vrm",
+ "vroid/8/380109263013960278/380109263013960278.vrm",
+ "vroid/8/3801591671266351118/3801591671266351118.vrm",
+ "vroid/8/3815051897785964878/3815051897785964878.vrm",
+ "vroid/8/3816101377431065748/3816101377431065748.vrm",
+ "vroid/8/3816565940420187998/3816565940420187998.vrm",
+ "vroid/8/3818469494048301898/3818469494048301898.vrm",
+ "vroid/8/3823016094022735628/3823016094022735628.vrm",
+ "vroid/8/3833911143359817248/3833911143359817248.vrm",
+ "vroid/8/3834063851858217978/3834063851858217978.vrm",
+ "vroid/8/3835485699295998938/3835485699295998938.vrm",
+ "vroid/8/3840787256163660158/3840787256163660158.vrm",
+ "vroid/8/3844464787740593128/3844464787740593128.vrm",
+ "vroid/8/3851741199372734568/3851741199372734568.vrm",
+ "vroid/8/3851812134194645848/3851812134194645848.vrm",
+ "vroid/8/3856374400961904518/3856374400961904518.vrm",
+ "vroid/8/3893101435404719008/3893101435404719008.vrm",
+ "vroid/8/3897756981079538848/3897756981079538848.vrm",
+ "vroid/8/3897996975570063848/3897996975570063848.vrm",
+ "vroid/8/3903183045636402398/3903183045636402398.vrm",
+ "vroid/8/3912874140832856038/3912874140832856038.vrm",
+ "vroid/8/3929361344976729758/3929361344976729758.vrm",
+ "vroid/8/3953399488509747518/3953399488509747518.vrm",
+ "vroid/8/3958315352638945568/3958315352638945568.vrm",
+ "vroid/8/397784472120802768/397784472120802768.vrm",
+ "vroid/8/3987019081806761398/3987019081806761398.vrm",
+ "vroid/8/3989998979640668938/3989998979640668938.vrm",
+ "vroid/8/3990166296205853348/3990166296205853348.vrm",
+ "vroid/8/399252496511512748/399252496511512748.vrm",
+ "vroid/8/3998809761425747718/3998809761425747718.vrm",
+ "vroid/8/4006222587193476548/4006222587193476548.vrm",
+ "vroid/8/4014942582024706658/4014942582024706658.vrm",
+ "vroid/8/4018616569051336518/4018616569051336518.vrm",
+ "vroid/8/4020337989988111318/4020337989988111318.vrm",
+ "vroid/8/402166872625212598/402166872625212598.vrm",
+ "vroid/8/4032332788072319528/4032332788072319528.vrm",
+ "vroid/8/4041105008298983808/4041105008298983808.vrm",
+ "vroid/8/404571753137776598/404571753137776598.vrm",
+ "vroid/8/4046876169699421738/4046876169699421738.vrm",
+ "vroid/8/4049944153970271888/4049944153970271888.vrm",
+ "vroid/8/4054165151539833808/4054165151539833808.vrm",
+ "vroid/8/4061457177374126318/4061457177374126318.vrm",
+ "vroid/8/4061973686341253608/4061973686341253608.vrm",
+ "vroid/8/4065519256609624848/4065519256609624848.vrm",
+ "vroid/8/4076553941470058238/4076553941470058238.vrm",
+ "vroid/8/4077238288334469938/4077238288334469938.vrm",
+ "vroid/8/4086811793227207778/4086811793227207778.vrm",
+ "vroid/8/4101582223093622348/4101582223093622348.vrm",
+ "vroid/8/4115455341945047898/4115455341945047898.vrm",
+ "vroid/8/4118508746538303838/4118508746538303838.vrm",
+ "vroid/8/4128252223539998558/4128252223539998558.vrm",
+ "vroid/8/4132759956172454868/4132759956172454868.vrm",
+ "vroid/8/4133440822913918588/4133440822913918588.vrm",
+ "vroid/8/4140985149034544978/4140985149034544978.vrm",
+ "vroid/8/4142805237857687258/4142805237857687258.vrm",
+ "vroid/8/4144393505329854568/4144393505329854568.vrm",
+ "vroid/8/415638296953994678/415638296953994678.vrm",
+ "vroid/8/4173198896210492408/4173198896210492408.vrm",
+ "vroid/8/4177604099816316338/4177604099816316338.vrm",
+ "vroid/8/4180330058868420438/4180330058868420438.vrm",
+ "vroid/8/418939381948383758/418939381948383758.vrm",
+ "vroid/8/4190592548114932278/4190592548114932278.vrm",
+ "vroid/8/4196966537530031788/4196966537530031788.vrm",
+ "vroid/8/4205797659545733948/4205797659545733948.vrm",
+ "vroid/8/4215198346427232088/4215198346427232088.vrm",
+ "vroid/8/4219360078924715298/4219360078924715298.vrm",
+ "vroid/8/4224078884674983278/4224078884674983278.vrm",
+ "vroid/8/4227483740474449028/4227483740474449028.vrm",
+ "vroid/8/4230311716531167278/4230311716531167278.vrm",
+ "vroid/8/4233387915859760368/4233387915859760368.vrm",
+ "vroid/8/4233739234952607898/4233739234952607898.vrm",
+ "vroid/8/4237135240793970388/4237135240793970388.vrm",
+ "vroid/8/4239866390366356148/4239866390366356148.vrm",
+ "vroid/8/4244031877277870938/4244031877277870938.vrm",
+ "vroid/8/4250497508930075448/4250497508930075448.vrm",
+ "vroid/8/4255391488689353778/4255391488689353778.vrm",
+ "vroid/8/4258945145130421998/4258945145130421998.vrm",
+ "vroid/8/4264949603460030128/4264949603460030128.vrm",
+ "vroid/8/4268842260756458688/4268842260756458688.vrm",
+ "vroid/8/4272697248719297068/4272697248719297068.vrm",
+ "vroid/8/4281018339721199228/4281018339721199228.vrm",
+ "vroid/8/4287371345677682188/4287371345677682188.vrm",
+ "vroid/8/4290756309810844328/4290756309810844328.vrm",
+ "vroid/8/4291797465670253048/4291797465670253048.vrm",
+ "vroid/8/4311805997323140758/4311805997323140758.vrm",
+ "vroid/8/4313409547411066838/4313409547411066838.vrm",
+ "vroid/8/4314445801475221208/4314445801475221208.vrm",
+ "vroid/8/4331594034128865768/4331594034128865768.vrm",
+ "vroid/8/4350470469862007488/4350470469862007488.vrm",
+ "vroid/8/4351589836603527778/4351589836603527778.vrm",
+ "vroid/8/4353660686830267508/4353660686830267508.vrm",
+ "vroid/8/4354684906503592898/4354684906503592898.vrm",
+ "vroid/8/4366545887853130838/4366545887853130838.vrm",
+ "vroid/8/4373018240817664968/4373018240817664968.vrm",
+ "vroid/8/4373906176985557448/4373906176985557448.vrm",
+ "vroid/8/4374856144880351368/4374856144880351368.vrm",
+ "vroid/8/438605442439682998/438605442439682998.vrm",
+ "vroid/8/4389693323260924008/4389693323260924008.vrm",
+ "vroid/8/4390218495622873968/4390218495622873968.vrm",
+ "vroid/8/4395399406360615658/4395399406360615658.vrm",
+ "vroid/8/4398565757783047208/4398565757783047208.vrm",
+ "vroid/8/4399736432093231198/4399736432093231198.vrm",
+ "vroid/8/4407470502515266338/4407470502515266338.vrm",
+ "vroid/8/4409989560310217298/4409989560310217298.vrm",
+ "vroid/8/4410572100565413408/4410572100565413408.vrm",
+ "vroid/8/4412828778005392728/4412828778005392728.vrm",
+ "vroid/8/4413453073745708218/4413453073745708218.vrm",
+ "vroid/8/4413654419671973178/4413654419671973178.vrm",
+ "vroid/8/4414970214198929578/4414970214198929578.vrm",
+ "vroid/8/4420497691628352138/4420497691628352138.vrm",
+ "vroid/8/4439896107358673778/4439896107358673778.vrm",
+ "vroid/8/4448925825425980268/4448925825425980268.vrm",
+ "vroid/8/4452076253095336728/4452076253095336728.vrm",
+ "vroid/8/4455073191428034368/4455073191428034368.vrm",
+ "vroid/8/445771251755684458/445771251755684458.vrm",
+ "vroid/8/4463735526029762038/4463735526029762038.vrm",
+ "vroid/8/4469204748379395308/4469204748379395308.vrm",
+ "vroid/8/4477991031580266048/4477991031580266048.vrm",
+ "vroid/8/4483823026297426048/4483823026297426048.vrm",
+ "vroid/8/4493342383962244538/4493342383962244538.vrm",
+ "vroid/8/4498726644429550508/4498726644429550508.vrm",
+ "vroid/8/4506221522730674378/4506221522730674378.vrm",
+ "vroid/8/4506251590529963688/4506251590529963688.vrm",
+ "vroid/8/4517427550853362458/4517427550853362458.vrm",
+ "vroid/8/4525578636656144418/4525578636656144418.vrm",
+ "vroid/8/4538822654161370008/4538822654161370008.vrm",
+ "vroid/8/4553190892628609908/4553190892628609908.vrm",
+ "vroid/8/4557658350543572938/4557658350543572938.vrm",
+ "vroid/8/4562603830216817498/4562603830216817498.vrm",
+ "vroid/8/4564313267507135358/4564313267507135358.vrm",
+ "vroid/8/4571052975356585878/4571052975356585878.vrm",
+ "vroid/8/4577566970123395598/4577566970123395598.vrm",
+ "vroid/8/4585214452377575848/4585214452377575848.vrm",
+ "vroid/8/459007855788249828/459007855788249828.vrm",
+ "vroid/8/4605108054728635788/4605108054728635788.vrm",
+ "vroid/8/4606818330863612628/4606818330863612628.vrm",
+ "vroid/8/4622736056190054008/4622736056190054008.vrm",
+ "vroid/8/4625165756079676278/4625165756079676278.vrm",
+ "vroid/8/4635390702145092668/4635390702145092668.vrm",
+ "vroid/8/464300759873385148/464300759873385148.vrm",
+ "vroid/8/4644701493295481358/4644701493295481358.vrm",
+ "vroid/8/4647170232164009248/4647170232164009248.vrm",
+ "vroid/8/4651164966286145588/4651164966286145588.vrm",
+ "vroid/8/4651211504449285538/4651211504449285538.vrm",
+ "vroid/8/4651908154524962748/4651908154524962748.vrm",
+ "vroid/8/4653477885447665848/4653477885447665848.vrm",
+ "vroid/8/4654147628845351378/4654147628845351378.vrm",
+ "vroid/8/4654706480040462638/4654706480040462638.vrm",
+ "vroid/8/4656956281634425258/4656956281634425258.vrm",
+ "vroid/8/4662307800951792628/4662307800951792628.vrm",
+ "vroid/8/4668067667426281748/4668067667426281748.vrm",
+ "vroid/8/4674088517276112028/4674088517276112028.vrm",
+ "vroid/8/4678213844371676838/4678213844371676838.vrm",
+ "vroid/8/4685982476860194608/4685982476860194608.vrm",
+ "vroid/8/4702538119255336598/4702538119255336598.vrm",
+ "vroid/8/4710443127385493188/4710443127385493188.vrm",
+ "vroid/8/4715954907112964978/4715954907112964978.vrm",
+ "vroid/8/4719547356652238848/4719547356652238848.vrm",
+ "vroid/8/4719661951161748738/4719661951161748738.vrm",
+ "vroid/8/4724745781869348778/4724745781869348778.vrm",
+ "vroid/8/4727633905296470248/4727633905296470248.vrm",
+ "vroid/8/4733516595254622068/4733516595254622068.vrm",
+ "vroid/8/4747322828625390648/4747322828625390648.vrm",
+ "vroid/8/4756060593283959048/4756060593283959048.vrm",
+ "vroid/8/4762507846556784258/4762507846556784258.vrm",
+ "vroid/8/4764399415918061348/4764399415918061348.vrm",
+ "vroid/8/476456521715919168/476456521715919168.vrm",
+ "vroid/8/4781675281910566268/4781675281910566268.vrm",
+ "vroid/8/4782742690457899218/4782742690457899218.vrm",
+ "vroid/8/4796006493771266878/4796006493771266878.vrm",
+ "vroid/8/4815664970820778338/4815664970820778338.vrm",
+ "vroid/8/4818648362605540898/4818648362605540898.vrm",
+ "vroid/8/4820704315731528918/4820704315731528918.vrm",
+ "vroid/8/4821941168720689408/4821941168720689408.vrm",
+ "vroid/8/4834513592876705708/4834513592876705708.vrm",
+ "vroid/8/4835537774132800358/4835537774132800358.vrm",
+ "vroid/8/4836092755332670118/4836092755332670118.vrm",
+ "vroid/8/4837142820338657738/4837142820338657738.vrm",
+ "vroid/8/4838126842948129358/4838126842948129358.vrm",
+ "vroid/8/4839096533544296748/4839096533544296748.vrm",
+ "vroid/8/484106969115967588/484106969115967588.vrm",
+ "vroid/8/4854761266406726178/4854761266406726178.vrm",
+ "vroid/8/4855408891416546218/4855408891416546218.vrm",
+ "vroid/8/4856957093545468038/4856957093545468038.vrm",
+ "vroid/8/4869045686145996908/4869045686145996908.vrm",
+ "vroid/8/4875679767138295518/4875679767138295518.vrm",
+ "vroid/8/4876548403531686188/4876548403531686188.vrm",
+ "vroid/8/4888917034615883738/4888917034615883738.vrm",
+ "vroid/8/4906660621567681708/4906660621567681708.vrm",
+ "vroid/8/4907494749134882538/4907494749134882538.vrm",
+ "vroid/8/4909018217288976468/4909018217288976468.vrm",
+ "vroid/8/4910318095676496738/4910318095676496738.vrm",
+ "vroid/8/4914917421606398548/4914917421606398548.vrm",
+ "vroid/8/4930921562547126478/4930921562547126478.vrm",
+ "vroid/8/49358140035090998/49358140035090998.vrm",
+ "vroid/8/4938554759069764028/4938554759069764028.vrm",
+ "vroid/8/4938592158349443068/4938592158349443068.vrm",
+ "vroid/8/4940501149097505358/4940501149097505358.vrm",
+ "vroid/8/4942772865999612628/4942772865999612628.vrm",
+ "vroid/8/4946466284164823428/4946466284164823428.vrm",
+ "vroid/8/4952647400923854788/4952647400923854788.vrm",
+ "vroid/8/4954206130004245538/4954206130004245538.vrm",
+ "vroid/8/4958500762392133018/4958500762392133018.vrm",
+ "vroid/8/4958943751127060188/4958943751127060188.vrm",
+ "vroid/8/4962207784002211678/4962207784002211678.vrm",
+ "vroid/8/4962713935038692278/4962713935038692278.vrm",
+ "vroid/8/4976438312213784818/4976438312213784818.vrm",
+ "vroid/8/4983123276733203258/4983123276733203258.vrm",
+ "vroid/8/500133681525558408/500133681525558408.vrm",
+ "vroid/8/500213020530230118/500213020530230118.vrm",
+ "vroid/8/5003304999237064398/5003304999237064398.vrm",
+ "vroid/8/5012447054539944668/5012447054539944668.vrm",
+ "vroid/8/5021483301534543658/5021483301534543658.vrm",
+ "vroid/8/5028944994966102398/5028944994966102398.vrm",
+ "vroid/8/5030476052653147988/5030476052653147988.vrm",
+ "vroid/8/5031233638049905828/5031233638049905828.vrm",
+ "vroid/8/5046189970359364008/5046189970359364008.vrm",
+ "vroid/8/5051585679926727928/5051585679926727928.vrm",
+ "vroid/8/5053154048449744138/5053154048449744138.vrm",
+ "vroid/8/5057537072278330978/5057537072278330978.vrm",
+ "vroid/8/505769648739489258/505769648739489258.vrm",
+ "vroid/8/5063390371627324658/5063390371627324658.vrm",
+ "vroid/8/507072897784708688/507072897784708688.vrm",
+ "vroid/8/508407034689553148/508407034689553148.vrm",
+ "vroid/8/5090319596306983318/5090319596306983318.vrm",
+ "vroid/8/5117552499753534248/5117552499753534248.vrm",
+ "vroid/8/5122961468394650368/5122961468394650368.vrm",
+ "vroid/8/5132714606972472278/5132714606972472278.vrm",
+ "vroid/8/5133112617334712308/5133112617334712308.vrm",
+ "vroid/8/5147663835711455688/5147663835711455688.vrm",
+ "vroid/8/5156295002195182138/5156295002195182138.vrm",
+ "vroid/8/5161866810007250038/5161866810007250038.vrm",
+ "vroid/8/5164307594248855538/5164307594248855538.vrm",
+ "vroid/8/5168307834935275228/5168307834935275228.vrm",
+ "vroid/8/517065777212918018/517065777212918018.vrm",
+ "vroid/8/5172975507488959028/5172975507488959028.vrm",
+ "vroid/8/5178317349502190568/5178317349502190568.vrm",
+ "vroid/8/5178821756743605828/5178821756743605828.vrm",
+ "vroid/8/5180188567359432138/5180188567359432138.vrm",
+ "vroid/8/5182780320528288548/5182780320528288548.vrm",
+ "vroid/8/518544591164718858/518544591164718858.vrm",
+ "vroid/8/5187751485593392268/5187751485593392268.vrm",
+ "vroid/8/5191522830607892298/5191522830607892298.vrm",
+ "vroid/8/5194201577649352808/5194201577649352808.vrm",
+ "vroid/8/5200999960095928828/5200999960095928828.vrm",
+ "vroid/8/5201648749988125618/5201648749988125618.vrm",
+ "vroid/8/5201878381238309928/5201878381238309928.vrm",
+ "vroid/8/5218607942397688248/5218607942397688248.vrm",
+ "vroid/8/5219227697736632078/5219227697736632078.vrm",
+ "vroid/8/5220589817387066288/5220589817387066288.vrm",
+ "vroid/8/5228699877257729388/5228699877257729388.vrm",
+ "vroid/8/5233710717541624158/5233710717541624158.vrm",
+ "vroid/8/5238752242489307788/5238752242489307788.vrm",
+ "vroid/8/5240104633881545468/5240104633881545468.vrm",
+ "vroid/8/5247819082719237038/5247819082719237038.vrm",
+ "vroid/8/5250954374967841748/5250954374967841748.vrm",
+ "vroid/8/5258366722961919058/5258366722961919058.vrm",
+ "vroid/8/5261780403671340928/5261780403671340928.vrm",
+ "vroid/8/5272891210772284628/5272891210772284628.vrm",
+ "vroid/8/5275831286123016058/5275831286123016058.vrm",
+ "vroid/8/5279007531241349118/5279007531241349118.vrm",
+ "vroid/8/5280204418074437448/5280204418074437448.vrm",
+ "vroid/8/5280820442250224448/5280820442250224448.vrm",
+ "vroid/8/5289017820741709168/5289017820741709168.vrm",
+ "vroid/8/5297357507694995128/5297357507694995128.vrm",
+ "vroid/8/5297490946425243588/5297490946425243588.vrm",
+ "vroid/8/5300549529267373848/5300549529267373848.vrm",
+ "vroid/8/53060885704263038/53060885704263038.vrm",
+ "vroid/8/5310203146636038308/5310203146636038308.vrm",
+ "vroid/8/5311609714161599698/5311609714161599698.vrm",
+ "vroid/8/5312431304147866328/5312431304147866328.vrm",
+ "vroid/8/5312889934898269738/5312889934898269738.vrm",
+ "vroid/8/5316492580828141998/5316492580828141998.vrm",
+ "vroid/8/5326639845218384718/5326639845218384718.vrm",
+ "vroid/8/5326815663636169378/5326815663636169378.vrm",
+ "vroid/8/5329919730755775298/5329919730755775298.vrm",
+ "vroid/8/5342702352173758148/5342702352173758148.vrm",
+ "vroid/8/5344554772259361138/5344554772259361138.vrm",
+ "vroid/8/5349708031002390408/5349708031002390408.vrm",
+ "vroid/8/5350083556248108658/5350083556248108658.vrm",
+ "vroid/8/5353232485837163028/5353232485837163028.vrm",
+ "vroid/8/536481659629638098/536481659629638098.vrm",
+ "vroid/8/5374516558041685688/5374516558041685688.vrm",
+ "vroid/8/538147441349797538/538147441349797538.vrm",
+ "vroid/8/5389631229263825068/5389631229263825068.vrm",
+ "vroid/8/5410727513068251748/5410727513068251748.vrm",
+ "vroid/8/5413551715422859468/5413551715422859468.vrm",
+ "vroid/8/5422409625223695338/5422409625223695338.vrm",
+ "vroid/8/542909365421238/542909365421238.vrm",
+ "vroid/8/5430187086900683828/5430187086900683828.vrm",
+ "vroid/8/5432205153406596908/5432205153406596908.vrm",
+ "vroid/8/5432666084543107278/5432666084543107278.vrm",
+ "vroid/8/5433637206417912588/5433637206417912588.vrm",
+ "vroid/8/5457826387835947018/5457826387835947018.vrm",
+ "vroid/8/5458011957658616818/5458011957658616818.vrm",
+ "vroid/8/5461196806436159188/5461196806436159188.vrm",
+ "vroid/8/5465911918320280638/5465911918320280638.vrm",
+ "vroid/8/5468778098400235188/5468778098400235188.vrm",
+ "vroid/8/5481398945485866098/5481398945485866098.vrm",
+ "vroid/8/5491976365207423228/5491976365207423228.vrm",
+ "vroid/8/5505685265083256758/5505685265083256758.vrm",
+ "vroid/8/5506681553962774758/5506681553962774758.vrm",
+ "vroid/8/5518816348824288608/5518816348824288608.vrm",
+ "vroid/8/5536031782276048148/5536031782276048148.vrm",
+ "vroid/8/5552886918755707458/5552886918755707458.vrm",
+ "vroid/8/5555824237077513698/5555824237077513698.vrm",
+ "vroid/8/5562286250762272668/5562286250762272668.vrm",
+ "vroid/8/5573747370610735438/5573747370610735438.vrm",
+ "vroid/8/5588370251061488848/5588370251061488848.vrm",
+ "vroid/8/5589991693873249998/5589991693873249998.vrm",
+ "vroid/8/5592626692698085958/5592626692698085958.vrm",
+ "vroid/8/559825228109963078/559825228109963078.vrm",
+ "vroid/8/5614480241065670608/5614480241065670608.vrm",
+ "vroid/8/5625360725370123538/5625360725370123538.vrm",
+ "vroid/8/562734480447501468/562734480447501468.vrm",
+ "vroid/8/5632625304367476258/5632625304367476258.vrm",
+ "vroid/8/5641872447706021918/5641872447706021918.vrm",
+ "vroid/8/564475400205379208/564475400205379208.vrm",
+ "vroid/8/5653202246438405678/5653202246438405678.vrm",
+ "vroid/8/5655860448952116028/5655860448952116028.vrm",
+ "vroid/8/5657226896149435408/5657226896149435408.vrm",
+ "vroid/8/5666653684500306068/5666653684500306068.vrm",
+ "vroid/8/5669019586590698018/5669019586590698018.vrm",
+ "vroid/8/5673998250630783148/5673998250630783148.vrm",
+ "vroid/8/5676978739956940388/5676978739956940388.vrm",
+ "vroid/8/5688349728733765888/5688349728733765888.vrm",
+ "vroid/8/5690284589639572238/5690284589639572238.vrm",
+ "vroid/8/5697878507269623878/5697878507269623878.vrm",
+ "vroid/8/5700723965633931468/5700723965633931468.vrm",
+ "vroid/8/5701348480887470818/5701348480887470818.vrm",
+ "vroid/8/5716497419993227768/5716497419993227768.vrm",
+ "vroid/8/5718199110449335418/5718199110449335418.vrm",
+ "vroid/8/5723376961365526028/5723376961365526028.vrm",
+ "vroid/8/5735580189128597838/5735580189128597838.vrm",
+ "vroid/8/5738531055154412728/5738531055154412728.vrm",
+ "vroid/8/5752040407502760028/5752040407502760028.vrm",
+ "vroid/8/5753330215010967528/5753330215010967528.vrm",
+ "vroid/8/5755489820080641368/5755489820080641368.vrm",
+ "vroid/8/5765733648178500208/5765733648178500208.vrm",
+ "vroid/8/5768482342780136288/5768482342780136288.vrm",
+ "vroid/8/577843622776904338/577843622776904338.vrm",
+ "vroid/8/5779227897853625198/5779227897853625198.vrm",
+ "vroid/8/5786233353505776048/5786233353505776048.vrm",
+ "vroid/8/5797272304598611408/5797272304598611408.vrm",
+ "vroid/8/5802016892273525438/5802016892273525438.vrm",
+ "vroid/8/5803812432895942538/5803812432895942538.vrm",
+ "vroid/8/5803985753867881018/5803985753867881018.vrm",
+ "vroid/8/5805122949638673178/5805122949638673178.vrm",
+ "vroid/8/5807368689223620618/5807368689223620618.vrm",
+ "vroid/8/580794488903442478/580794488903442478.vrm",
+ "vroid/8/5810589326162133508/5810589326162133508.vrm",
+ "vroid/8/581473255569205888/581473255569205888.vrm",
+ "vroid/8/5816697722727794828/5816697722727794828.vrm",
+ "vroid/8/5824449182938619318/5824449182938619318.vrm",
+ "vroid/8/5826517778843332178/5826517778843332178.vrm",
+ "vroid/8/5832083475937061528/5832083475937061528.vrm",
+ "vroid/8/5836345566678905648/5836345566678905648.vrm",
+ "vroid/8/583734468194150528/583734468194150528.vrm",
+ "vroid/8/584371434514107988/584371434514107988.vrm",
+ "vroid/8/5852162374689351628/5852162374689351628.vrm",
+ "vroid/8/5858516809446292878/5858516809446292878.vrm",
+ "vroid/8/5858928099574775598/5858928099574775598.vrm",
+ "vroid/8/5864810961784525938/5864810961784525938.vrm",
+ "vroid/8/5876232804607189238/5876232804607189238.vrm",
+ "vroid/8/5888873057433772138/5888873057433772138.vrm",
+ "vroid/8/5892168971538546328/5892168971538546328.vrm",
+ "vroid/8/5895515769885202918/5895515769885202918.vrm",
+ "vroid/8/5904482653196179838/5904482653196179838.vrm",
+ "vroid/8/5915933544783746028/5915933544783746028.vrm",
+ "vroid/8/5917979798289022328/5917979798289022328.vrm",
+ "vroid/8/5925920343286976138/5925920343286976138.vrm",
+ "vroid/8/5926448828424741828/5926448828424741828.vrm",
+ "vroid/8/5929193139300028308/5929193139300028308.vrm",
+ "vroid/8/5930913157920640208/5930913157920640208.vrm",
+ "vroid/8/593971159657296268/593971159657296268.vrm",
+ "vroid/8/5946995853109687448/5946995853109687448.vrm",
+ "vroid/8/5949096521376273988/5949096521376273988.vrm",
+ "vroid/8/595877864809871458/595877864809871458.vrm",
+ "vroid/8/5965742016215454008/5965742016215454008.vrm",
+ "vroid/8/596975807886285038/596975807886285038.vrm",
+ "vroid/8/5979261136021236388/5979261136021236388.vrm",
+ "vroid/8/5994142159891478778/5994142159891478778.vrm",
+ "vroid/8/5997942691764525088/5997942691764525088.vrm",
+ "vroid/8/6014444902720608428/6014444902720608428.vrm",
+ "vroid/8/6021468983402439698/6021468983402439698.vrm",
+ "vroid/8/6030148889324680778/6030148889324680778.vrm",
+ "vroid/8/6035914950651843048/6035914950651843048.vrm",
+ "vroid/8/6048511885746898288/6048511885746898288.vrm",
+ "vroid/8/6058492061905130038/6058492061905130038.vrm",
+ "vroid/8/6064164685666355718/6064164685666355718.vrm",
+ "vroid/8/6076015665512190358/6076015665512190358.vrm",
+ "vroid/8/6080893915008578378/6080893915008578378.vrm",
+ "vroid/8/6084849172640607768/6084849172640607768.vrm",
+ "vroid/8/6092078785125223958/6092078785125223958.vrm",
+ "vroid/8/6095211379638063858/6095211379638063858.vrm",
+ "vroid/8/6108574515875846058/6108574515875846058.vrm",
+ "vroid/8/6109553951210853868/6109553951210853868.vrm",
+ "vroid/8/6115059152409314808/6115059152409314808.vrm",
+ "vroid/8/6119708458983880218/6119708458983880218.vrm",
+ "vroid/8/6120717735691646888/6120717735691646888.vrm",
+ "vroid/8/6123289608880774098/6123289608880774098.vrm",
+ "vroid/8/6124555166608505468/6124555166608505468.vrm",
+ "vroid/8/6142870950759373938/6142870950759373938.vrm",
+ "vroid/8/61641783772297628/61641783772297628.vrm",
+ "vroid/8/6168531084928321528/6168531084928321528.vrm",
+ "vroid/8/6172011263870916348/6172011263870916348.vrm",
+ "vroid/8/6195851059638053398/6195851059638053398.vrm",
+ "vroid/8/6199426965220789518/6199426965220789518.vrm",
+ "vroid/8/6199788706619787498/6199788706619787498.vrm",
+ "vroid/8/6208087852374245048/6208087852374245048.vrm",
+ "vroid/8/621225825195762038/621225825195762038.vrm",
+ "vroid/8/6218495914112000498/6218495914112000498.vrm",
+ "vroid/8/6218892100068777008/6218892100068777008.vrm",
+ "vroid/8/6220946925897614328/6220946925897614328.vrm",
+ "vroid/8/6221240640038995108/6221240640038995108.vrm",
+ "vroid/8/6233681473690215658/6233681473690215658.vrm",
+ "vroid/8/6241866922434384818/6241866922434384818.vrm",
+ "vroid/8/6256217486340176368/6256217486340176368.vrm",
+ "vroid/8/6271630054382494538/6271630054382494538.vrm",
+ "vroid/8/627558541987835968/627558541987835968.vrm",
+ "vroid/8/6281510829522220898/6281510829522220898.vrm",
+ "vroid/8/6283393188211308378/6283393188211308378.vrm",
+ "vroid/8/6291436032088728648/6291436032088728648.vrm",
+ "vroid/8/6307444933235002528/6307444933235002528.vrm",
+ "vroid/8/6316663553683421938/6316663553683421938.vrm",
+ "vroid/8/6322194696472093628/6322194696472093628.vrm",
+ "vroid/8/632938901957171468/632938901957171468.vrm",
+ "vroid/8/6344551966740052598/6344551966740052598.vrm",
+ "vroid/8/6348632088218719348/6348632088218719348.vrm",
+ "vroid/8/63514914715401808/63514914715401808.vrm",
+ "vroid/8/6357090356816642138/6357090356816642138.vrm",
+ "vroid/8/6360747645334429298/6360747645334429298.vrm",
+ "vroid/8/637328495549646608/637328495549646608.vrm",
+ "vroid/8/6374394687269706758/6374394687269706758.vrm",
+ "vroid/8/6386738740884188698/6386738740884188698.vrm",
+ "vroid/8/6390415361651213708/6390415361651213708.vrm",
+ "vroid/8/639116532768323528/639116532768323528.vrm",
+ "vroid/8/6405814798260588428/6405814798260588428.vrm",
+ "vroid/8/6407860248699819028/6407860248699819028.vrm",
+ "vroid/8/6411658993168189228/6411658993168189228.vrm",
+ "vroid/8/6411800792575942658/6411800792575942658.vrm",
+ "vroid/8/6414014966671914968/6414014966671914968.vrm",
+ "vroid/8/6417840953297251188/6417840953297251188.vrm",
+ "vroid/8/643033227769530368/643033227769530368.vrm",
+ "vroid/8/6431640038447253158/6431640038447253158.vrm",
+ "vroid/8/6433309720274860798/6433309720274860798.vrm",
+ "vroid/8/6434903048487478458/6434903048487478458.vrm",
+ "vroid/8/6435537942207493138/6435537942207493138.vrm",
+ "vroid/8/6438612027618165878/6438612027618165878.vrm",
+ "vroid/8/6439116528565341658/6439116528565341658.vrm",
+ "vroid/8/6442072963206770978/6442072963206770978.vrm",
+ "vroid/8/6442990490810680878/6442990490810680878.vrm",
+ "vroid/8/6443113275226438528/6443113275226438528.vrm",
+ "vroid/8/6462476098504909628/6462476098504909628.vrm",
+ "vroid/8/6464167506179560098/6464167506179560098.vrm",
+ "vroid/8/6466931670605054408/6466931670605054408.vrm",
+ "vroid/8/6472978587754762808/6472978587754762808.vrm",
+ "vroid/8/6479454931835653298/6479454931835653298.vrm",
+ "vroid/8/6482373162678611098/6482373162678611098.vrm",
+ "vroid/8/648346055155859308/648346055155859308.vrm",
+ "vroid/8/6491993481210136428/6491993481210136428.vrm",
+ "vroid/8/6503190578590535768/6503190578590535768.vrm",
+ "vroid/8/6513073720858922638/6513073720858922638.vrm",
+ "vroid/8/6524583540124634678/6524583540124634678.vrm",
+ "vroid/8/6525953140371062368/6525953140371062368.vrm",
+ "vroid/8/6527513936085774238/6527513936085774238.vrm",
+ "vroid/8/6529788949559467768/6529788949559467768.vrm",
+ "vroid/8/6534394813254565688/6534394813254565688.vrm",
+ "vroid/8/6538357678149136088/6538357678149136088.vrm",
+ "vroid/8/6540077155349764478/6540077155349764478.vrm",
+ "vroid/8/6540529743471888288/6540529743471888288.vrm",
+ "vroid/8/654353385918019058/654353385918019058.vrm",
+ "vroid/8/6549791846581252248/6549791846581252248.vrm",
+ "vroid/8/6552173265712792698/6552173265712792698.vrm",
+ "vroid/8/6553813050496390128/6553813050496390128.vrm",
+ "vroid/8/6561336928818358718/6561336928818358718.vrm",
+ "vroid/8/6580735308048940088/6580735308048940088.vrm",
+ "vroid/8/6581761659983265818/6581761659983265818.vrm",
+ "vroid/8/6583248512804763758/6583248512804763758.vrm",
+ "vroid/8/6585757893434104238/6585757893434104238.vrm",
+ "vroid/8/6601631134026454408/6601631134026454408.vrm",
+ "vroid/8/6607668966067396788/6607668966067396788.vrm",
+ "vroid/8/6617289265525300688/6617289265525300688.vrm",
+ "vroid/8/6621508955180400478/6621508955180400478.vrm",
+ "vroid/8/6624545242265368948/6624545242265368948.vrm",
+ "vroid/8/662679383386430228/662679383386430228.vrm",
+ "vroid/8/6629096182178090708/6629096182178090708.vrm",
+ "vroid/8/6632593566609006548/6632593566609006548.vrm",
+ "vroid/8/6639135350631818768/6639135350631818768.vrm",
+ "vroid/8/6641245595811818908/6641245595811818908.vrm",
+ "vroid/8/6643488731575942988/6643488731575942988.vrm",
+ "vroid/8/6646340902650705398/6646340902650705398.vrm",
+ "vroid/8/6655828653583331278/6655828653583331278.vrm",
+ "vroid/8/6662209333202543618/6662209333202543618.vrm",
+ "vroid/8/6683731031934060298/6683731031934060298.vrm",
+ "vroid/8/6685808611110226138/6685808611110226138.vrm",
+ "vroid/8/6687532758738137188/6687532758738137188.vrm",
+ "vroid/8/668995997559424168/668995997559424168.vrm",
+ "vroid/8/6699010200397583348/6699010200397583348.vrm",
+ "vroid/8/6704306708307554028/6704306708307554028.vrm",
+ "vroid/8/6712298168455058268/6712298168455058268.vrm",
+ "vroid/8/6717070080123000828/6717070080123000828.vrm",
+ "vroid/8/672820136180253948/672820136180253948.vrm",
+ "vroid/8/6730048591377040618/6730048591377040618.vrm",
+ "vroid/8/6733270477505368008/6733270477505368008.vrm",
+ "vroid/8/673905176390842198/673905176390842198.vrm",
+ "vroid/8/6744939857532507408/6744939857532507408.vrm",
+ "vroid/8/6753399157804930078/6753399157804930078.vrm",
+ "vroid/8/675644996326245348/675644996326245348.vrm",
+ "vroid/8/6761880786506740538/6761880786506740538.vrm",
+ "vroid/8/6766782725954763598/6766782725954763598.vrm",
+ "vroid/8/6767841328531552568/6767841328531552568.vrm",
+ "vroid/8/6773580845248632088/6773580845248632088.vrm",
+ "vroid/8/6785682041523404738/6785682041523404738.vrm",
+ "vroid/8/6787163034229240838/6787163034229240838.vrm",
+ "vroid/8/6789000481058348358/6789000481058348358.vrm",
+ "vroid/8/6825255221697002218/6825255221697002218.vrm",
+ "vroid/8/6827508592796473878/6827508592796473878.vrm",
+ "vroid/8/683178160625021548/683178160625021548.vrm",
+ "vroid/8/6840433325510261498/6840433325510261498.vrm",
+ "vroid/8/6840868700651513078/6840868700651513078.vrm",
+ "vroid/8/6841032592420201498/6841032592420201498.vrm",
+ "vroid/8/6845417045203785568/6845417045203785568.vrm",
+ "vroid/8/6848992570875343618/6848992570875343618.vrm",
+ "vroid/8/68510515091547128/68510515091547128.vrm",
+ "vroid/8/6851339827934987568/6851339827934987568.vrm",
+ "vroid/8/6865221811189278988/6865221811189278988.vrm",
+ "vroid/8/6869441511279073668/6869441511279073668.vrm",
+ "vroid/8/6888919049129174358/6888919049129174358.vrm",
+ "vroid/8/6897237049128188028/6897237049128188028.vrm",
+ "vroid/8/6900438556028158278/6900438556028158278.vrm",
+ "vroid/8/690138849779027158/690138849779027158.vrm",
+ "vroid/8/6908553259074133298/6908553259074133298.vrm",
+ "vroid/8/6914490025139613388/6914490025139613388.vrm",
+ "vroid/8/6915149458914697648/6915149458914697648.vrm",
+ "vroid/8/6916530889692768228/6916530889692768228.vrm",
+ "vroid/8/6917673005171458258/6917673005171458258.vrm",
+ "vroid/8/6920566518947971868/6920566518947971868.vrm",
+ "vroid/8/692512012773357808/692512012773357808.vrm",
+ "vroid/8/6925856509068534128/6925856509068534128.vrm",
+ "vroid/8/6934159943485898468/6934159943485898468.vrm",
+ "vroid/8/6937942645537764928/6937942645537764928.vrm",
+ "vroid/8/6939831960333379708/6939831960333379708.vrm",
+ "vroid/8/6955542992265575478/6955542992265575478.vrm",
+ "vroid/8/6960927290840227698/6960927290840227698.vrm",
+ "vroid/8/6963160035399234288/6963160035399234288.vrm",
+ "vroid/8/696443323420237398/696443323420237398.vrm",
+ "vroid/8/6966720435411630748/6966720435411630748.vrm",
+ "vroid/8/6971171647087923138/6971171647087923138.vrm",
+ "vroid/8/6974094515735760368/6974094515735760368.vrm",
+ "vroid/8/6981521880253268528/6981521880253268528.vrm",
+ "vroid/8/6987845027250638828/6987845027250638828.vrm",
+ "vroid/8/69956135420498558/69956135420498558.vrm",
+ "vroid/8/7003115368036222378/7003115368036222378.vrm",
+ "vroid/8/7006139036482061008/7006139036482061008.vrm",
+ "vroid/8/7017230362819558468/7017230362819558468.vrm",
+ "vroid/8/7017370411993451968/7017370411993451968.vrm",
+ "vroid/8/7018975375695760458/7018975375695760458.vrm",
+ "vroid/8/7019969990018061488/7019969990018061488.vrm",
+ "vroid/8/7029230781909160288/7029230781909160288.vrm",
+ "vroid/8/7031160447962781048/7031160447962781048.vrm",
+ "vroid/8/7040020501493999598/7040020501493999598.vrm",
+ "vroid/8/7046898084473047378/7046898084473047378.vrm",
+ "vroid/8/7057591798548590728/7057591798548590728.vrm",
+ "vroid/8/7062359733772252538/7062359733772252538.vrm",
+ "vroid/8/7067298740141786638/7067298740141786638.vrm",
+ "vroid/8/706772989294011648/706772989294011648.vrm",
+ "vroid/8/7076570068834959678/7076570068834959678.vrm",
+ "vroid/8/707834473819858218/707834473819858218.vrm",
+ "vroid/8/7085739014486389188/7085739014486389188.vrm",
+ "vroid/8/7091012077107151268/7091012077107151268.vrm",
+ "vroid/8/7095474761823281308/7095474761823281308.vrm",
+ "vroid/8/7096410625298216788/7096410625298216788.vrm",
+ "vroid/8/7098424984987534238/7098424984987534238.vrm",
+ "vroid/8/7107058454341497148/7107058454341497148.vrm",
+ "vroid/8/7107910462849180038/7107910462849180038.vrm",
+ "vroid/8/7109703511132598/7109703511132598.vrm",
+ "vroid/8/7115401450561970218/7115401450561970218.vrm",
+ "vroid/8/7138810283392218888/7138810283392218888.vrm",
+ "vroid/8/7151208671537107798/7151208671537107798.vrm",
+ "vroid/8/715135686113669208/715135686113669208.vrm",
+ "vroid/8/716607628241062798/716607628241062798.vrm",
+ "vroid/8/7167557392668212858/7167557392668212858.vrm",
+ "vroid/8/7169021062172537508/7169021062172537508.vrm",
+ "vroid/8/7173689163797616078/7173689163797616078.vrm",
+ "vroid/8/7175071267176594918/7175071267176594918.vrm",
+ "vroid/8/7184801964362690268/7184801964362690268.vrm",
+ "vroid/8/718753450060520308/718753450060520308.vrm",
+ "vroid/8/7188944132175738748/7188944132175738748.vrm",
+ "vroid/8/7193550962475965408/7193550962475965408.vrm",
+ "vroid/8/7198784705275123398/7198784705275123398.vrm",
+ "vroid/8/720357837506193188/720357837506193188.vrm",
+ "vroid/8/7211992673395747818/7211992673395747818.vrm",
+ "vroid/8/7213026045466553548/7213026045466553548.vrm",
+ "vroid/8/7224596892225026628/7224596892225026628.vrm",
+ "vroid/8/7229341737737379898/7229341737737379898.vrm",
+ "vroid/8/7235338653500198468/7235338653500198468.vrm",
+ "vroid/8/7238954607124109538/7238954607124109538.vrm",
+ "vroid/8/7239629677590419118/7239629677590419118.vrm",
+ "vroid/8/724203806015675578/724203806015675578.vrm",
+ "vroid/8/7253576525450529008/7253576525450529008.vrm",
+ "vroid/8/7255281500309965768/7255281500309965768.vrm",
+ "vroid/8/7259418402484651628/7259418402484651628.vrm",
+ "vroid/8/7264034190904618548/7264034190904618548.vrm",
+ "vroid/8/7264176805929085018/7264176805929085018.vrm",
+ "vroid/8/7270008942699250618/7270008942699250618.vrm",
+ "vroid/8/7281403657582898198/7281403657582898198.vrm",
+ "vroid/8/7287474234286212158/7287474234286212158.vrm",
+ "vroid/8/7289645613506402988/7289645613506402988.vrm",
+ "vroid/8/7290242184337605778/7290242184337605778.vrm",
+ "vroid/8/7310464330636858538/7310464330636858538.vrm",
+ "vroid/8/7317493949104611028/7317493949104611028.vrm",
+ "vroid/8/7318245119328234478/7318245119328234478.vrm",
+ "vroid/8/7336405458627884298/7336405458627884298.vrm",
+ "vroid/8/7358734157523532858/7358734157523532858.vrm",
+ "vroid/8/7375042070748476938/7375042070748476938.vrm",
+ "vroid/8/7376382623569512898/7376382623569512898.vrm",
+ "vroid/8/7378126239595125268/7378126239595125268.vrm",
+ "vroid/8/7379879667354070878/7379879667354070878.vrm",
+ "vroid/8/7392610169329067258/7392610169329067258.vrm",
+ "vroid/8/7398775244299906378/7398775244299906378.vrm",
+ "vroid/8/7405778583643613918/7405778583643613918.vrm",
+ "vroid/8/7410556474847547858/7410556474847547858.vrm",
+ "vroid/8/7422276524388616068/7422276524388616068.vrm",
+ "vroid/8/7437750021110899298/7437750021110899298.vrm",
+ "vroid/8/7438405456122654338/7438405456122654338.vrm",
+ "vroid/8/7438487591760144548/7438487591760144548.vrm",
+ "vroid/8/7442723081193167808/7442723081193167808.vrm",
+ "vroid/8/7447295008554432268/7447295008554432268.vrm",
+ "vroid/8/7450919783730919038/7450919783730919038.vrm",
+ "vroid/8/7453229097610099678/7453229097610099678.vrm",
+ "vroid/8/7464638944763495978/7464638944763495978.vrm",
+ "vroid/8/7469182527331058718/7469182527331058718.vrm",
+ "vroid/8/7481807269716102838/7481807269716102838.vrm",
+ "vroid/8/7482263378841828178/7482263378841828178.vrm",
+ "vroid/8/7488887640766280288/7488887640766280288.vrm",
+ "vroid/8/7491089695545700028/7491089695545700028.vrm",
+ "vroid/8/749131699767688908/749131699767688908.vrm",
+ "vroid/8/7495877693266370198/7495877693266370198.vrm",
+ "vroid/8/7498716467479393878/7498716467479393878.vrm",
+ "vroid/8/7501775172727470598/7501775172727470598.vrm",
+ "vroid/8/7511556035224181588/7511556035224181588.vrm",
+ "vroid/8/7518193587766901888/7518193587766901888.vrm",
+ "vroid/8/7520118658812416228/7520118658812416228.vrm",
+ "vroid/8/7520628969116844348/7520628969116844348.vrm",
+ "vroid/8/7526502462603893538/7526502462603893538.vrm",
+ "vroid/8/7531619929224961918/7531619929224961918.vrm",
+ "vroid/8/7536460176988889378/7536460176988889378.vrm",
+ "vroid/8/7557821104113531078/7557821104113531078.vrm",
+ "vroid/8/7571486886492760368/7571486886492760368.vrm",
+ "vroid/8/7591501581530915648/7591501581530915648.vrm",
+ "vroid/8/7592574172337058998/7592574172337058998.vrm",
+ "vroid/8/76028455457744368/76028455457744368.vrm",
+ "vroid/8/7605613066630044388/7605613066630044388.vrm",
+ "vroid/8/760676716597887258/760676716597887258.vrm",
+ "vroid/8/7616952520093456778/7616952520093456778.vrm",
+ "vroid/8/7633196846578193288/7633196846578193288.vrm",
+ "vroid/8/7647434750928751408/7647434750928751408.vrm",
+ "vroid/8/7650655183255883758/7650655183255883758.vrm",
+ "vroid/8/7655519722378933038/7655519722378933038.vrm",
+ "vroid/8/7672070532209536338/7672070532209536338.vrm",
+ "vroid/8/7684133274158274388/7684133274158274388.vrm",
+ "vroid/8/7694022789167241338/7694022789167241338.vrm",
+ "vroid/8/7694361735253446828/7694361735253446828.vrm",
+ "vroid/8/7699513731384534368/7699513731384534368.vrm",
+ "vroid/8/7701665632501198618/7701665632501198618.vrm",
+ "vroid/8/7702092315765819818/7702092315765819818.vrm",
+ "vroid/8/7702219984281562748/7702219984281562748.vrm",
+ "vroid/8/7709496597811043308/7709496597811043308.vrm",
+ "vroid/8/7716414031605486778/7716414031605486778.vrm",
+ "vroid/8/7716831136697856018/7716831136697856018.vrm",
+ "vroid/8/772576085689818618/772576085689818618.vrm",
+ "vroid/8/7736714825014851358/7736714825014851358.vrm",
+ "vroid/8/7741315968582457228/7741315968582457228.vrm",
+ "vroid/8/7742586811777572658/7742586811777572658.vrm",
+ "vroid/8/7744424987363994468/7744424987363994468.vrm",
+ "vroid/8/7746900235139530378/7746900235139530378.vrm",
+ "vroid/8/7749181459734728618/7749181459734728618.vrm",
+ "vroid/8/7757470206329761558/7757470206329761558.vrm",
+ "vroid/8/7766938950347988308/7766938950347988308.vrm",
+ "vroid/8/7769608823420662558/7769608823420662558.vrm",
+ "vroid/8/7777918905139524718/7777918905139524718.vrm",
+ "vroid/8/7787443422588158358/7787443422588158358.vrm",
+ "vroid/8/7800727000420766058/7800727000420766058.vrm",
+ "vroid/8/780980038757016298/780980038757016298.vrm",
+ "vroid/8/7817160034496580068/7817160034496580068.vrm",
+ "vroid/8/7820382991539224698/7820382991539224698.vrm",
+ "vroid/8/7823032462254457808/7823032462254457808.vrm",
+ "vroid/8/7830687480118093038/7830687480118093038.vrm",
+ "vroid/8/783253725614581098/783253725614581098.vrm",
+ "vroid/8/7841408059549894608/7841408059549894608.vrm",
+ "vroid/8/7846629321469244218/7846629321469244218.vrm",
+ "vroid/8/7848722976983791098/7848722976983791098.vrm",
+ "vroid/8/7850295366500918788/7850295366500918788.vrm",
+ "vroid/8/7853785132856756518/7853785132856756518.vrm",
+ "vroid/8/7868008590494493548/7868008590494493548.vrm",
+ "vroid/8/7868186766488771198/7868186766488771198.vrm",
+ "vroid/8/7875541657205770278/7875541657205770278.vrm",
+ "vroid/8/7877854018110255028/7877854018110255028.vrm",
+ "vroid/8/7879531260733256388/7879531260733256388.vrm",
+ "vroid/8/7881445523305815648/7881445523305815648.vrm",
+ "vroid/8/7884978284759726758/7884978284759726758.vrm",
+ "vroid/8/7886461815393274538/7886461815393274538.vrm",
+ "vroid/8/7887401897513417468/7887401897513417468.vrm",
+ "vroid/8/7896864909238470418/7896864909238470418.vrm",
+ "vroid/8/7903148181002726908/7903148181002726908.vrm",
+ "vroid/8/791001332265995348/791001332265995348.vrm",
+ "vroid/8/791924862533485628/791924862533485628.vrm",
+ "vroid/8/7926812379467790398/7926812379467790398.vrm",
+ "vroid/8/7930041512627069158/7930041512627069158.vrm",
+ "vroid/8/7933287840639510908/7933287840639510908.vrm",
+ "vroid/8/7934087128032287688/7934087128032287688.vrm",
+ "vroid/8/7934532682444778358/7934532682444778358.vrm",
+ "vroid/8/7940266344429952608/7940266344429952608.vrm",
+ "vroid/8/7944094006503716678/7944094006503716678.vrm",
+ "vroid/8/7947314585180423128/7947314585180423128.vrm",
+ "vroid/8/7949392143680085918/7949392143680085918.vrm",
+ "vroid/8/7950436561678162478/7950436561678162478.vrm",
+ "vroid/8/7950489900897646258/7950489900897646258.vrm",
+ "vroid/8/7959955658434228628/7959955658434228628.vrm",
+ "vroid/8/7973931665432955748/7973931665432955748.vrm",
+ "vroid/8/7975040186425715438/7975040186425715438.vrm",
+ "vroid/8/7976510894427625078/7976510894427625078.vrm",
+ "vroid/8/7979117393478685448/7979117393478685448.vrm",
+ "vroid/8/7981152186026608038/7981152186026608038.vrm",
+ "vroid/8/7982208303781305568/7982208303781305568.vrm",
+ "vroid/8/7994083516040553008/7994083516040553008.vrm",
+ "vroid/8/7995475573242037478/7995475573242037478.vrm",
+ "vroid/8/8000809000998704378/8000809000998704378.vrm",
+ "vroid/8/8012776653689778058/8012776653689778058.vrm",
+ "vroid/8/8015923251209631708/8015923251209631708.vrm",
+ "vroid/8/8018764868387221158/8018764868387221158.vrm",
+ "vroid/8/803046337227527478/803046337227527478.vrm",
+ "vroid/8/8038021587913208998/8038021587913208998.vrm",
+ "vroid/8/8046661348863497658/8046661348863497658.vrm",
+ "vroid/8/8058314862456877568/8058314862456877568.vrm",
+ "vroid/8/8064893311180417658/8064893311180417658.vrm",
+ "vroid/8/8073217755369504348/8073217755369504348.vrm",
+ "vroid/8/8081001157887211408/8081001157887211408.vrm",
+ "vroid/8/8093757860840262918/8093757860840262918.vrm",
+ "vroid/8/8096127840625049968/8096127840625049968.vrm",
+ "vroid/8/8100049906800405208/8100049906800405208.vrm",
+ "vroid/8/8100828169343760548/8100828169343760548.vrm",
+ "vroid/8/8105010259119461438/8105010259119461438.vrm",
+ "vroid/8/8116956029077345068/8116956029077345068.vrm",
+ "vroid/8/8119787702625733228/8119787702625733228.vrm",
+ "vroid/8/8126349752283172928/8126349752283172928.vrm",
+ "vroid/8/8128335963387728208/8128335963387728208.vrm",
+ "vroid/8/8130745412836701068/8130745412836701068.vrm",
+ "vroid/8/8132922944583143898/8132922944583143898.vrm",
+ "vroid/8/813672272750367128/813672272750367128.vrm",
+ "vroid/8/8142361040371535728/8142361040371535728.vrm",
+ "vroid/8/8155498832525298838/8155498832525298838.vrm",
+ "vroid/8/81611400208548898/81611400208548898.vrm",
+ "vroid/8/8166567780875508858/8166567780875508858.vrm",
+ "vroid/8/8166810090241938978/8166810090241938978.vrm",
+ "vroid/8/8173431221810723058/8173431221810723058.vrm",
+ "vroid/8/8181112143572892128/8181112143572892128.vrm",
+ "vroid/8/8193418077112802448/8193418077112802448.vrm",
+ "vroid/8/81943583593596258/81943583593596258.vrm",
+ "vroid/8/8194586416075868928/8194586416075868928.vrm",
+ "vroid/8/8196140762409389148/8196140762409389148.vrm",
+ "vroid/8/8198966742577782558/8198966742577782558.vrm",
+ "vroid/8/8200597916375807168/8200597916375807168.vrm",
+ "vroid/8/8203991097892004088/8203991097892004088.vrm",
+ "vroid/8/8205376759665737728/8205376759665737728.vrm",
+ "vroid/8/820878972398632328/820878972398632328.vrm",
+ "vroid/8/8218011240909808288/8218011240909808288.vrm",
+ "vroid/8/8218483744021547538/8218483744021547538.vrm",
+ "vroid/8/8220327526105965638/8220327526105965638.vrm",
+ "vroid/8/8220851714296974248/8220851714296974248.vrm",
+ "vroid/8/8223456394410798948/8223456394410798948.vrm",
+ "vroid/8/8251260911649340348/8251260911649340348.vrm",
+ "vroid/8/8254821848684902978/8254821848684902978.vrm",
+ "vroid/8/8257873628655846208/8257873628655846208.vrm",
+ "vroid/8/8259921920047715868/8259921920047715868.vrm",
+ "vroid/8/8264940614120674358/8264940614120674358.vrm",
+ "vroid/8/8272840543034416208/8272840543034416208.vrm",
+ "vroid/8/8283486047841066748/8283486047841066748.vrm",
+ "vroid/8/8285215787713840438/8285215787713840438.vrm",
+ "vroid/8/8290854360232801338/8290854360232801338.vrm",
+ "vroid/8/829296702131197498/829296702131197498.vrm",
+ "vroid/8/8302517591012197968/8302517591012197968.vrm",
+ "vroid/8/830487562275099558/830487562275099558.vrm",
+ "vroid/8/8312333486248928608/8312333486248928608.vrm",
+ "vroid/8/8312619684096902398/8312619684096902398.vrm",
+ "vroid/8/8321821886472416138/8321821886472416138.vrm",
+ "vroid/8/832524819209515798/832524819209515798.vrm",
+ "vroid/8/8331306850548080228/8331306850548080228.vrm",
+ "vroid/8/8333140116441031518/8333140116441031518.vrm",
+ "vroid/8/833330658022661728/833330658022661728.vrm",
+ "vroid/8/8338743958694264618/8338743958694264618.vrm",
+ "vroid/8/8339549908360843948/8339549908360843948.vrm",
+ "vroid/8/8359905350987680118/8359905350987680118.vrm",
+ "vroid/8/8377937553915552668/8377937553915552668.vrm",
+ "vroid/8/8378220260825390588/8378220260825390588.vrm",
+ "vroid/8/8387687823422893388/8387687823422893388.vrm",
+ "vroid/8/838856707260697808/838856707260697808.vrm",
+ "vroid/8/8393437902011783908/8393437902011783908.vrm",
+ "vroid/8/8395440585268819108/8395440585268819108.vrm",
+ "vroid/8/8412491714525524738/8412491714525524738.vrm",
+ "vroid/8/8420939130766608068/8420939130766608068.vrm",
+ "vroid/8/8422243826190992758/8422243826190992758.vrm",
+ "vroid/8/842406519319895188/842406519319895188.vrm",
+ "vroid/8/8441846816113502258/8441846816113502258.vrm",
+ "vroid/8/8454276308601909238/8454276308601909238.vrm",
+ "vroid/8/8462508591434067278/8462508591434067278.vrm",
+ "vroid/8/8471344480232775918/8471344480232775918.vrm",
+ "vroid/8/8477433381594629588/8477433381594629588.vrm",
+ "vroid/8/8488407272463654248/8488407272463654248.vrm",
+ "vroid/8/8496772799285951028/8496772799285951028.vrm",
+ "vroid/8/8498073752912462538/8498073752912462538.vrm",
+ "vroid/8/850247708893797718/850247708893797718.vrm",
+ "vroid/8/8508482242321879828/8508482242321879828.vrm",
+ "vroid/8/8522340899849638248/8522340899849638248.vrm",
+ "vroid/8/8534056118625768508/8534056118625768508.vrm",
+ "vroid/8/8539715957044426018/8539715957044426018.vrm",
+ "vroid/8/8541397720879082928/8541397720879082928.vrm",
+ "vroid/8/855003243676561208/855003243676561208.vrm",
+ "vroid/8/8552867373664754168/8552867373664754168.vrm",
+ "vroid/8/8555216507474591858/8555216507474591858.vrm",
+ "vroid/8/8563973439277608978/8563973439277608978.vrm",
+ "vroid/8/8572271450590463728/8572271450590463728.vrm",
+ "vroid/8/8575597864921986288/8575597864921986288.vrm",
+ "vroid/8/858152378224942798/858152378224942798.vrm",
+ "vroid/8/8600979149145611768/8600979149145611768.vrm",
+ "vroid/8/8619505960979958738/8619505960979958738.vrm",
+ "vroid/8/8628516963197630508/8628516963197630508.vrm",
+ "vroid/8/8628843513319695498/8628843513319695498.vrm",
+ "vroid/8/8629614949682894228/8629614949682894228.vrm",
+ "vroid/8/8635714222914570888/8635714222914570888.vrm",
+ "vroid/8/8643969398140227598/8643969398140227598.vrm",
+ "vroid/8/8652709584409208648/8652709584409208648.vrm",
+ "vroid/8/8655155168860585468/8655155168860585468.vrm",
+ "vroid/8/8663278390742407908/8663278390742407908.vrm",
+ "vroid/8/867143241018606118/867143241018606118.vrm",
+ "vroid/8/8676602073024705638/8676602073024705638.vrm",
+ "vroid/8/868061732491369808/868061732491369808.vrm",
+ "vroid/8/868169300562458178/868169300562458178.vrm",
+ "vroid/8/8691237556584156028/8691237556584156028.vrm",
+ "vroid/8/8701408092337716618/8701408092337716618.vrm",
+ "vroid/8/8707631236541420788/8707631236541420788.vrm",
+ "vroid/8/8713495165388906858/8713495165388906858.vrm",
+ "vroid/8/8714181917326480698/8714181917326480698.vrm",
+ "vroid/8/8716025404225961948/8716025404225961948.vrm",
+ "vroid/8/8718814061244833118/8718814061244833118.vrm",
+ "vroid/8/8724778312104858408/8724778312104858408.vrm",
+ "vroid/8/8725911738550826638/8725911738550826638.vrm",
+ "vroid/8/873147801183607178/873147801183607178.vrm",
+ "vroid/8/8734814121313688888/8734814121313688888.vrm",
+ "vroid/8/8742714472296923848/8742714472296923848.vrm",
+ "vroid/8/8746605399480996728/8746605399480996728.vrm",
+ "vroid/8/8748990210559213098/8748990210559213098.vrm",
+ "vroid/8/8752842349033563618/8752842349033563618.vrm",
+ "vroid/8/875312056732710628/875312056732710628.vrm",
+ "vroid/8/875504774182760518/875504774182760518.vrm",
+ "vroid/8/8761205978362775348/8761205978362775348.vrm",
+ "vroid/8/8761983888145401338/8761983888145401338.vrm",
+ "vroid/8/876393375895190448/876393375895190448.vrm",
+ "vroid/8/8767535399183135688/8767535399183135688.vrm",
+ "vroid/8/8768739658949830998/8768739658949830998.vrm",
+ "vroid/8/8769271304048916168/8769271304048916168.vrm",
+ "vroid/8/8779525975821882878/8779525975821882878.vrm",
+ "vroid/8/8802617316804881058/8802617316804881058.vrm",
+ "vroid/8/8804175170445641238/8804175170445641238.vrm",
+ "vroid/8/8809923075487854008/8809923075487854008.vrm",
+ "vroid/8/8817308441574134898/8817308441574134898.vrm",
+ "vroid/8/8817485444288374158/8817485444288374158.vrm",
+ "vroid/8/882169469251214318/882169469251214318.vrm",
+ "vroid/8/8830476409126330768/8830476409126330768.vrm",
+ "vroid/8/8836837925835380548/8836837925835380548.vrm",
+ "vroid/8/8838824438743701428/8838824438743701428.vrm",
+ "vroid/8/8842706903561095378/8842706903561095378.vrm",
+ "vroid/8/8857824844632446688/8857824844632446688.vrm",
+ "vroid/8/8866545235857421588/8866545235857421588.vrm",
+ "vroid/8/8872332432302771598/8872332432302771598.vrm",
+ "vroid/8/8876602718006394258/8876602718006394258.vrm",
+ "vroid/8/8883873274861751868/8883873274861751868.vrm",
+ "vroid/8/8888312734061678368/8888312734061678368.vrm",
+ "vroid/8/8889223484820200278/8889223484820200278.vrm",
+ "vroid/8/8893003742761477098/8893003742761477098.vrm",
+ "vroid/8/8894207403797181608/8894207403797181608.vrm",
+ "vroid/8/889619533062992038/889619533062992038.vrm",
+ "vroid/8/8898107482817022718/8898107482817022718.vrm",
+ "vroid/8/8899531065318593178/8899531065318593178.vrm",
+ "vroid/8/8905306250517450538/8905306250517450538.vrm",
+ "vroid/8/8911826104761921618/8911826104761921618.vrm",
+ "vroid/8/8914322533837160148/8914322533837160148.vrm",
+ "vroid/8/8921944237499609998/8921944237499609998.vrm",
+ "vroid/8/8922451551030230408/8922451551030230408.vrm",
+ "vroid/8/8923767879949861668/8923767879949861668.vrm",
+ "vroid/8/8924403548796070158/8924403548796070158.vrm",
+ "vroid/8/8925049736065411358/8925049736065411358.vrm",
+ "vroid/8/8926619600183612098/8926619600183612098.vrm",
+ "vroid/8/8927622165873276898/8927622165873276898.vrm",
+ "vroid/8/8933346828903678368/8933346828903678368.vrm",
+ "vroid/8/894054761481193788/894054761481193788.vrm",
+ "vroid/8/8947260193228419698/8947260193228419698.vrm",
+ "vroid/8/8965178594768064678/8965178594768064678.vrm",
+ "vroid/8/8972437245679988878/8972437245679988878.vrm",
+ "vroid/8/8974337805841615138/8974337805841615138.vrm",
+ "vroid/8/8977748777623388938/8977748777623388938.vrm",
+ "vroid/8/8984355044722952928/8984355044722952928.vrm",
+ "vroid/8/899930907096553228/899930907096553228.vrm",
+ "vroid/8/9010706568930739688/9010706568930739688.vrm",
+ "vroid/8/9011597989540234268/9011597989540234268.vrm",
+ "vroid/8/9039273112494852838/9039273112494852838.vrm",
+ "vroid/8/9039439966698699218/9039439966698699218.vrm",
+ "vroid/8/9047978792178743228/9047978792178743228.vrm",
+ "vroid/8/9050026826592292878/9050026826592292878.vrm",
+ "vroid/8/905074056810186358/905074056810186358.vrm",
+ "vroid/8/9062934487411623988/9062934487411623988.vrm",
+ "vroid/8/9065258277433766858/9065258277433766858.vrm",
+ "vroid/8/9077337514745237338/9077337514745237338.vrm",
+ "vroid/8/9077876338219475448/9077876338219475448.vrm",
+ "vroid/8/9079213096429984038/9079213096429984038.vrm",
+ "vroid/8/9087940085588149118/9087940085588149118.vrm",
+ "vroid/8/9096376762247732508/9096376762247732508.vrm",
+ "vroid/8/9105334590088382148/9105334590088382148.vrm",
+ "vroid/8/9107069962036617928/9107069962036617928.vrm",
+ "vroid/8/9110987521585387848/9110987521585387848.vrm",
+ "vroid/8/9123280945660842738/9123280945660842738.vrm",
+ "vroid/8/9127951668258745108/9127951668258745108.vrm",
+ "vroid/8/9129304411542992128/9129304411542992128.vrm",
+ "vroid/8/9132632987711146758/9132632987711146758.vrm",
+ "vroid/8/9140608540421637288/9140608540421637288.vrm",
+ "vroid/8/914623853898718908/914623853898718908.vrm",
+ "vroid/8/9147101315687906518/9147101315687906518.vrm",
+ "vroid/8/9148803446193891908/9148803446193891908.vrm",
+ "vroid/8/9154286764749164968/9154286764749164968.vrm",
+ "vroid/8/9155123254092687868/9155123254092687868.vrm",
+ "vroid/8/9157273105197170208/9157273105197170208.vrm",
+ "vroid/8/9164786020475693318/9164786020475693318.vrm",
+ "vroid/8/9170088992667355668/9170088992667355668.vrm",
+ "vroid/8/9170394299338406128/9170394299338406128.vrm",
+ "vroid/8/9170710115984063248/9170710115984063248.vrm",
+ "vroid/8/9181728945980077618/9181728945980077618.vrm",
+ "vroid/8/9185432023852007248/9185432023852007248.vrm",
+ "vroid/8/9186557073287077718/9186557073287077718.vrm",
+ "vroid/8/9186891979705798418/9186891979705798418.vrm",
+ "vroid/8/9189974009068569818/9189974009068569818.vrm",
+ "vroid/8/9193997452982740708/9193997452982740708.vrm",
+ "vroid/8/9194839211595613148/9194839211595613148.vrm",
+ "vroid/8/9197049432249082518/9197049432249082518.vrm",
+ "vroid/8/9200831262969696098/9200831262969696098.vrm",
+ "vroid/8/9201289911705256298/9201289911705256298.vrm",
+ "vroid/8/9215039952634448288/9215039952634448288.vrm",
+ "vroid/8/9222040047249844458/9222040047249844458.vrm",
+ "vroid/8/923601331113087438/923601331113087438.vrm",
+ "vroid/8/926297113813892608/926297113813892608.vrm",
+ "vroid/8/93183094526833768/93183094526833768.vrm",
+ "vroid/8/936738755060014468/936738755060014468.vrm",
+ "vroid/8/937878432222532578/937878432222532578.vrm",
+ "vroid/8/940874055472294958/940874055472294958.vrm",
+ "vroid/8/949333577613857398/949333577613857398.vrm",
+ "vroid/8/949460287964045308/949460287964045308.vrm",
+ "vroid/8/953526717586682068/953526717586682068.vrm",
+ "vroid/8/957331891029133958/957331891029133958.vrm",
+ "vroid/8/959607488962680788/959607488962680788.vrm",
+ "vroid/8/961741130266486098/961741130266486098.vrm",
+ "vroid/8/963474662108511068/963474662108511068.vrm",
+ "vroid/8/97404274596464218/97404274596464218.vrm",
+ "vroid/8/9749011425902348/9749011425902348.vrm",
+ "vroid/8/983370878266690778/983370878266690778.vrm",
+ "vroid/8/986595934883621938/986595934883621938.vrm",
+ "vroid/8/99509871088504618/99509871088504618.vrm",
+ "vroid/9/1006948407630337839/1006948407630337839.vrm",
+ "vroid/9/100772444504484719/100772444504484719.vrm",
+ "vroid/9/1034519962846643389/1034519962846643389.vrm",
+ "vroid/9/1036926518430710049/1036926518430710049.vrm",
+ "vroid/9/1039463445927909889/1039463445927909889.vrm",
+ "vroid/9/1044703742840097239/1044703742840097239.vrm",
+ "vroid/9/1050089539956784789/1050089539956784789.vrm",
+ "vroid/9/1051287062698712719/1051287062698712719.vrm",
+ "vroid/9/1055653793438040129/1055653793438040129.vrm",
+ "vroid/9/106617834206412049/106617834206412049.vrm",
+ "vroid/9/1068862102344712029/1068862102344712029.vrm",
+ "vroid/9/107159197363605129/107159197363605129.vrm",
+ "vroid/9/1076981601852943729/1076981601852943729.vrm",
+ "vroid/9/1076992838481184479/1076992838481184479.vrm",
+ "vroid/9/1082443013441792009/1082443013441792009.vrm",
+ "vroid/9/1091672971553348119/1091672971553348119.vrm",
+ "vroid/9/1093727570667436379/1093727570667436379.vrm",
+ "vroid/9/1099991847171718239/1099991847171718239.vrm",
+ "vroid/9/1100718674890536469/1100718674890536469.vrm",
+ "vroid/9/1110785733977356989/1110785733977356989.vrm",
+ "vroid/9/1115378098487797119/1115378098487797119.vrm",
+ "vroid/9/1119974759452375419/1119974759452375419.vrm",
+ "vroid/9/1122410054536558449/1122410054536558449.vrm",
+ "vroid/9/1137441052038023029/1137441052038023029.vrm",
+ "vroid/9/1142417114822897289/1142417114822897289.vrm",
+ "vroid/9/1154519867240369999/1154519867240369999.vrm",
+ "vroid/9/116017486125927549/116017486125927549.vrm",
+ "vroid/9/1160637768351762379/1160637768351762379.vrm",
+ "vroid/9/1164100818344237579/1164100818344237579.vrm",
+ "vroid/9/1167515979178384879/1167515979178384879.vrm",
+ "vroid/9/1168091974895981149/1168091974895981149.vrm",
+ "vroid/9/1171850630247176929/1171850630247176929.vrm",
+ "vroid/9/117777098499264349/117777098499264349.vrm",
+ "vroid/9/1183803853509952989/1183803853509952989.vrm",
+ "vroid/9/1187201959238218689/1187201959238218689.vrm",
+ "vroid/9/1190977734841671799/1190977734841671799.vrm",
+ "vroid/9/1196127004269500409/1196127004269500409.vrm",
+ "vroid/9/1198271236710734269/1198271236710734269.vrm",
+ "vroid/9/1199186984216641909/1199186984216641909.vrm",
+ "vroid/9/1213905206335087039/1213905206335087039.vrm",
+ "vroid/9/123296214083016529/123296214083016529.vrm",
+ "vroid/9/123702526995621369/123702526995621369.vrm",
+ "vroid/9/1237823116417596569/1237823116417596569.vrm",
+ "vroid/9/1239628206893849719/1239628206893849719.vrm",
+ "vroid/9/1252953835948818399/1252953835948818399.vrm",
+ "vroid/9/125308318973788789/125308318973788789.vrm",
+ "vroid/9/1265592699132249759/1265592699132249759.vrm",
+ "vroid/9/1266112543186503199/1266112543186503199.vrm",
+ "vroid/9/1266416323531831469/1266416323531831469.vrm",
+ "vroid/9/1268341833256029209/1268341833256029209.vrm",
+ "vroid/9/1270302343401053019/1270302343401053019.vrm",
+ "vroid/9/1271065708974602779/1271065708974602779.vrm",
+ "vroid/9/1286265040842412299/1286265040842412299.vrm",
+ "vroid/9/1293067402907106909/1293067402907106909.vrm",
+ "vroid/9/1297020851904805489/1297020851904805489.vrm",
+ "vroid/9/1298508936860908389/1298508936860908389.vrm",
+ "vroid/9/1308656451840691339/1308656451840691339.vrm",
+ "vroid/9/1322609134373595589/1322609134373595589.vrm",
+ "vroid/9/1326296362535049699/1326296362535049699.vrm",
+ "vroid/9/1331817435458198659/1331817435458198659.vrm",
+ "vroid/9/1338243922690731899/1338243922690731899.vrm",
+ "vroid/9/1338668335972595359/1338668335972595359.vrm",
+ "vroid/9/1346846622355491529/1346846622355491529.vrm",
+ "vroid/9/1350532337654329079/1350532337654329079.vrm",
+ "vroid/9/1356951550265777529/1356951550265777529.vrm",
+ "vroid/9/1365961853671794789/1365961853671794789.vrm",
+ "vroid/9/1368585944037385529/1368585944037385529.vrm",
+ "vroid/9/1371534086984075029/1371534086984075029.vrm",
+ "vroid/9/1381462393116737289/1381462393116737289.vrm",
+ "vroid/9/1383332182496830739/1383332182496830739.vrm",
+ "vroid/9/1385009293177630539/1385009293177630539.vrm",
+ "vroid/9/1390940541946183069/1390940541946183069.vrm",
+ "vroid/9/1392602010798970909/1392602010798970909.vrm",
+ "vroid/9/1401738047360271369/1401738047360271369.vrm",
+ "vroid/9/1411284349273289819/1411284349273289819.vrm",
+ "vroid/9/1414176011026699909/1414176011026699909.vrm",
+ "vroid/9/1425114514332279019/1425114514332279019.vrm",
+ "vroid/9/1425997389289558709/1425997389289558709.vrm",
+ "vroid/9/1434270752320019259/1434270752320019259.vrm",
+ "vroid/9/1439744302679883449/1439744302679883449.vrm",
+ "vroid/9/1448814258269354039/1448814258269354039.vrm",
+ "vroid/9/1450911256023233609/1450911256023233609.vrm",
+ "vroid/9/1451571769874623559/1451571769874623559.vrm",
+ "vroid/9/145169368815004339/145169368815004339.vrm",
+ "vroid/9/1474133588369447899/1474133588369447899.vrm",
+ "vroid/9/1475931383931714879/1475931383931714879.vrm",
+ "vroid/9/1484670333578476789/1484670333578476789.vrm",
+ "vroid/9/1486172362302781979/1486172362302781979.vrm",
+ "vroid/9/1488000166673486139/1488000166673486139.vrm",
+ "vroid/9/1491372482247457269/1491372482247457269.vrm",
+ "vroid/9/1496162338094165579/1496162338094165579.vrm",
+ "vroid/9/151238911374650939/151238911374650939.vrm",
+ "vroid/9/1515387038421478619/1515387038421478619.vrm",
+ "vroid/9/1519726793966903159/1519726793966903159.vrm",
+ "vroid/9/1522146151985980749/1522146151985980749.vrm",
+ "vroid/9/1526791646972510119/1526791646972510119.vrm",
+ "vroid/9/1527603262565439879/1527603262565439879.vrm",
+ "vroid/9/1530948816448439309/1530948816448439309.vrm",
+ "vroid/9/153301345427922179/153301345427922179.vrm",
+ "vroid/9/1541631200236727739/1541631200236727739.vrm",
+ "vroid/9/1543742737714089459/1543742737714089459.vrm",
+ "vroid/9/1548348318403230369/1548348318403230369.vrm",
+ "vroid/9/1555872544244633319/1555872544244633319.vrm",
+ "vroid/9/1560393376224809989/1560393376224809989.vrm",
+ "vroid/9/1589086408793540489/1589086408793540489.vrm",
+ "vroid/9/1589294530693123519/1589294530693123519.vrm",
+ "vroid/9/1589703685907990879/1589703685907990879.vrm",
+ "vroid/9/1593076713359023369/1593076713359023369.vrm",
+ "vroid/9/1593980152149072489/1593980152149072489.vrm",
+ "vroid/9/1594042648047613599/1594042648047613599.vrm",
+ "vroid/9/1597693030140069369/1597693030140069369.vrm",
+ "vroid/9/1601638697712573709/1601638697712573709.vrm",
+ "vroid/9/1624413875839220119/1624413875839220119.vrm",
+ "vroid/9/1625952172954771909/1625952172954771909.vrm",
+ "vroid/9/1629486986414725149/1629486986414725149.vrm",
+ "vroid/9/1637634195504399509/1637634195504399509.vrm",
+ "vroid/9/164647158538518679/164647158538518679.vrm",
+ "vroid/9/1648093541244212539/1648093541244212539.vrm",
+ "vroid/9/1662061131176043099/1662061131176043099.vrm",
+ "vroid/9/16629098228437899/16629098228437899.vrm",
+ "vroid/9/1664616306792400159/1664616306792400159.vrm",
+ "vroid/9/1679258910354409459/1679258910354409459.vrm",
+ "vroid/9/1681402517911022299/1681402517911022299.vrm",
+ "vroid/9/1714097464871634189/1714097464871634189.vrm",
+ "vroid/9/1715158652427058909/1715158652427058909.vrm",
+ "vroid/9/1720278419627686979/1720278419627686979.vrm",
+ "vroid/9/172429477586741419/172429477586741419.vrm",
+ "vroid/9/1730758009803655749/1730758009803655749.vrm",
+ "vroid/9/1734481774004856019/1734481774004856019.vrm",
+ "vroid/9/1736188192768195529/1736188192768195529.vrm",
+ "vroid/9/1741640461046874669/1741640461046874669.vrm",
+ "vroid/9/1743535594735837619/1743535594735837619.vrm",
+ "vroid/9/1745676135786163249/1745676135786163249.vrm",
+ "vroid/9/1749413212546343039/1749413212546343039.vrm",
+ "vroid/9/1751813459325218689/1751813459325218689.vrm",
+ "vroid/9/1759574263845061349/1759574263845061349.vrm",
+ "vroid/9/1761384638556245129/1761384638556245129.vrm",
+ "vroid/9/1763609401826319479/1763609401826319479.vrm",
+ "vroid/9/1772305475221176069/1772305475221176069.vrm",
+ "vroid/9/177644183620703429/177644183620703429.vrm",
+ "vroid/9/179010904680559549/179010904680559549.vrm",
+ "vroid/9/1803564586525759769/1803564586525759769.vrm",
+ "vroid/9/1811410429344529219/1811410429344529219.vrm",
+ "vroid/9/1820298696775938079/1820298696775938079.vrm",
+ "vroid/9/1824419316267727569/1824419316267727569.vrm",
+ "vroid/9/1831486786354331899/1831486786354331899.vrm",
+ "vroid/9/1834318473252315719/1834318473252315719.vrm",
+ "vroid/9/1842653219229426539/1842653219229426539.vrm",
+ "vroid/9/1848527092304043309/1848527092304043309.vrm",
+ "vroid/9/1866656240742923089/1866656240742923089.vrm",
+ "vroid/9/1873742662750852079/1873742662750852079.vrm",
+ "vroid/9/1874497077094804239/1874497077094804239.vrm",
+ "vroid/9/1881124879355903529/1881124879355903529.vrm",
+ "vroid/9/1891252978769396609/1891252978769396609.vrm",
+ "vroid/9/1910095295739071479/1910095295739071479.vrm",
+ "vroid/9/1923575756975945449/1923575756975945449.vrm",
+ "vroid/9/192406529517133079/192406529517133079.vrm",
+ "vroid/9/1925728959478350849/1925728959478350849.vrm",
+ "vroid/9/1934090972924831379/1934090972924831379.vrm",
+ "vroid/9/1936084445407814989/1936084445407814989.vrm",
+ "vroid/9/1936855123906873439/1936855123906873439.vrm",
+ "vroid/9/1944454509878091139/1944454509878091139.vrm",
+ "vroid/9/1950103829700533519/1950103829700533519.vrm",
+ "vroid/9/1963557260536905449/1963557260536905449.vrm",
+ "vroid/9/1979612204711881669/1979612204711881669.vrm",
+ "vroid/9/1982997705763137989/1982997705763137989.vrm",
+ "vroid/9/1989705078089752559/1989705078089752559.vrm",
+ "vroid/9/2000518679581906489/2000518679581906489.vrm",
+ "vroid/9/2002908236086948609/2002908236086948609.vrm",
+ "vroid/9/2011178376166726149/2011178376166726149.vrm",
+ "vroid/9/2020902952655673649/2020902952655673649.vrm",
+ "vroid/9/203712009520225899/203712009520225899.vrm",
+ "vroid/9/2045697281859302999/2045697281859302999.vrm",
+ "vroid/9/2048868671807649909/2048868671807649909.vrm",
+ "vroid/9/2051842897924180489/2051842897924180489.vrm",
+ "vroid/9/2055081844386641419/2055081844386641419.vrm",
+ "vroid/9/2055499840426314789/2055499840426314789.vrm",
+ "vroid/9/2061916593163484299/2061916593163484299.vrm",
+ "vroid/9/2063055892288483689/2063055892288483689.vrm",
+ "vroid/9/2067828027432579329/2067828027432579329.vrm",
+ "vroid/9/2093118278506482579/2093118278506482579.vrm",
+ "vroid/9/2100022498073276889/2100022498073276889.vrm",
+ "vroid/9/2101291571762929209/2101291571762929209.vrm",
+ "vroid/9/2107630002290268599/2107630002290268599.vrm",
+ "vroid/9/2109063729527277389/2109063729527277389.vrm",
+ "vroid/9/2111947526911871199/2111947526911871199.vrm",
+ "vroid/9/2115070951038354559/2115070951038354559.vrm",
+ "vroid/9/2125403705508019509/2125403705508019509.vrm",
+ "vroid/9/2144657765176172649/2144657765176172649.vrm",
+ "vroid/9/2157302826934739489/2157302826934739489.vrm",
+ "vroid/9/2159283151663500369/2159283151663500369.vrm",
+ "vroid/9/2165376846605960069/2165376846605960069.vrm",
+ "vroid/9/2168586121674043459/2168586121674043459.vrm",
+ "vroid/9/2175904026559326029/2175904026559326029.vrm",
+ "vroid/9/2186533552525444909/2186533552525444909.vrm",
+ "vroid/9/2191890985424372609/2191890985424372609.vrm",
+ "vroid/9/2214155684794187589/2214155684794187589.vrm",
+ "vroid/9/2216215651547790379/2216215651547790379.vrm",
+ "vroid/9/2219514691229167139/2219514691229167139.vrm",
+ "vroid/9/2224891034670219989/2224891034670219989.vrm",
+ "vroid/9/2227370526584364289/2227370526584364289.vrm",
+ "vroid/9/222910201852016629/222910201852016629.vrm",
+ "vroid/9/2230678488568809219/2230678488568809219.vrm",
+ "vroid/9/2233286245251164749/2233286245251164749.vrm",
+ "vroid/9/2240377770020712629/2240377770020712629.vrm",
+ "vroid/9/2243156373881173259/2243156373881173259.vrm",
+ "vroid/9/2255723357871796419/2255723357871796419.vrm",
+ "vroid/9/225702225512201589/225702225512201589.vrm",
+ "vroid/9/2263411577764979949/2263411577764979949.vrm",
+ "vroid/9/2263923873324958359/2263923873324958359.vrm",
+ "vroid/9/2273076704612497439/2273076704612497439.vrm",
+ "vroid/9/2285523391602512109/2285523391602512109.vrm",
+ "vroid/9/2286214955254649969/2286214955254649969.vrm",
+ "vroid/9/2286748847811050799/2286748847811050799.vrm",
+ "vroid/9/228726765229712049/228726765229712049.vrm",
+ "vroid/9/2287861475341351339/2287861475341351339.vrm",
+ "vroid/9/2292219474373673889/2292219474373673889.vrm",
+ "vroid/9/2297786891365053699/2297786891365053699.vrm",
+ "vroid/9/2301176534478093279/2301176534478093279.vrm",
+ "vroid/9/2302378409318610009/2302378409318610009.vrm",
+ "vroid/9/2302863373756050629/2302863373756050629.vrm",
+ "vroid/9/2303727853616949239/2303727853616949239.vrm",
+ "vroid/9/2316542128997374899/2316542128997374899.vrm",
+ "vroid/9/2322438278279145849/2322438278279145849.vrm",
+ "vroid/9/2325320397705585069/2325320397705585069.vrm",
+ "vroid/9/2327877117095801269/2327877117095801269.vrm",
+ "vroid/9/2348131576434820659/2348131576434820659.vrm",
+ "vroid/9/2348863327928769759/2348863327928769759.vrm",
+ "vroid/9/2350215742738557569/2350215742738557569.vrm",
+ "vroid/9/2352337387517798169/2352337387517798169.vrm",
+ "vroid/9/2356392786899127789/2356392786899127789.vrm",
+ "vroid/9/2357471818959334209/2357471818959334209.vrm",
+ "vroid/9/2358733666866387669/2358733666866387669.vrm",
+ "vroid/9/2360950554895965779/2360950554895965779.vrm",
+ "vroid/9/2367682417854737849/2367682417854737849.vrm",
+ "vroid/9/2368267868887778549/2368267868887778549.vrm",
+ "vroid/9/2369464440056077999/2369464440056077999.vrm",
+ "vroid/9/2372227954075228279/2372227954075228279.vrm",
+ "vroid/9/2374379414263373949/2374379414263373949.vrm",
+ "vroid/9/2376122398241578239/2376122398241578239.vrm",
+ "vroid/9/238086143360985989/238086143360985989.vrm",
+ "vroid/9/2381050717090103119/2381050717090103119.vrm",
+ "vroid/9/238680598699280629/238680598699280629.vrm",
+ "vroid/9/2386896188815406529/2386896188815406529.vrm",
+ "vroid/9/2386916687592918009/2386916687592918009.vrm",
+ "vroid/9/2389426165580759309/2389426165580759309.vrm",
+ "vroid/9/2397236509823550469/2397236509823550469.vrm",
+ "vroid/9/2404479006277926819/2404479006277926819.vrm",
+ "vroid/9/2408451872914130979/2408451872914130979.vrm",
+ "vroid/9/2410879113857711269/2410879113857711269.vrm",
+ "vroid/9/2411832157706392999/2411832157706392999.vrm",
+ "vroid/9/2413192196654279969/2413192196654279969.vrm",
+ "vroid/9/2422564059235525899/2422564059235525899.vrm",
+ "vroid/9/2429567926287357729/2429567926287357729.vrm",
+ "vroid/9/2434995667827788929/2434995667827788929.vrm",
+ "vroid/9/2438178718896170319/2438178718896170319.vrm",
+ "vroid/9/2441878903166151149/2441878903166151149.vrm",
+ "vroid/9/2466830029194403309/2466830029194403309.vrm",
+ "vroid/9/247727672565219489/247727672565219489.vrm",
+ "vroid/9/2486164899253062279/2486164899253062279.vrm",
+ "vroid/9/2486905002130737019/2486905002130737019.vrm",
+ "vroid/9/2492378180389726529/2492378180389726529.vrm",
+ "vroid/9/250115788899874759/250115788899874759.vrm",
+ "vroid/9/2514532985197063329/2514532985197063329.vrm",
+ "vroid/9/2518905194129007909/2518905194129007909.vrm",
+ "vroid/9/2533705966722079589/2533705966722079589.vrm",
+ "vroid/9/2542611477611055899/2542611477611055899.vrm",
+ "vroid/9/2543972424941234689/2543972424941234689.vrm",
+ "vroid/9/2544865033881940889/2544865033881940889.vrm",
+ "vroid/9/2549537235226625569/2549537235226625569.vrm",
+ "vroid/9/255621527381431899/255621527381431899.vrm",
+ "vroid/9/2561565596329420769/2561565596329420769.vrm",
+ "vroid/9/2568998483383328319/2568998483383328319.vrm",
+ "vroid/9/25702208362782739/25702208362782739.vrm",
+ "vroid/9/2598099686130759029/2598099686130759029.vrm",
+ "vroid/9/2614395055537425529/2614395055537425529.vrm",
+ "vroid/9/262140445129918559/262140445129918559.vrm",
+ "vroid/9/2640814396275687599/2640814396275687599.vrm",
+ "vroid/9/2655089088793967809/2655089088793967809.vrm",
+ "vroid/9/2655255625300067799/2655255625300067799.vrm",
+ "vroid/9/2690471104921673109/2690471104921673109.vrm",
+ "vroid/9/2691856628900071569/2691856628900071569.vrm",
+ "vroid/9/2692099439816868159/2692099439816868159.vrm",
+ "vroid/9/2694102959900555799/2694102959900555799.vrm",
+ "vroid/9/2708147152564362209/2708147152564362209.vrm",
+ "vroid/9/2711191801393106699/2711191801393106699.vrm",
+ "vroid/9/2713232632383145559/2713232632383145559.vrm",
+ "vroid/9/2721811457938350499/2721811457938350499.vrm",
+ "vroid/9/2722770622625454669/2722770622625454669.vrm",
+ "vroid/9/2741397729458803659/2741397729458803659.vrm",
+ "vroid/9/2741713943869436089/2741713943869436089.vrm",
+ "vroid/9/2754404714226223199/2754404714226223199.vrm",
+ "vroid/9/2764166327757389989/2764166327757389989.vrm",
+ "vroid/9/2766156668071307659/2766156668071307659.vrm",
+ "vroid/9/2784954933697082559/2784954933697082559.vrm",
+ "vroid/9/2785166872329277319/2785166872329277319.vrm",
+ "vroid/9/2797980149834286599/2797980149834286599.vrm",
+ "vroid/9/2821465857820308169/2821465857820308169.vrm",
+ "vroid/9/2823293794944991369/2823293794944991369.vrm",
+ "vroid/9/2824045810243983269/2824045810243983269.vrm",
+ "vroid/9/2827153591664283859/2827153591664283859.vrm",
+ "vroid/9/2836921880045946469/2836921880045946469.vrm",
+ "vroid/9/284550144611663739/284550144611663739.vrm",
+ "vroid/9/2848716591616520619/2848716591616520619.vrm",
+ "vroid/9/2862071461577662239/2862071461577662239.vrm",
+ "vroid/9/2865514764914900159/2865514764914900159.vrm",
+ "vroid/9/2874068874974428599/2874068874974428599.vrm",
+ "vroid/9/2883541691358018699/2883541691358018699.vrm",
+ "vroid/9/288786441560725939/288786441560725939.vrm",
+ "vroid/9/2906807740865970119/2906807740865970119.vrm",
+ "vroid/9/2919519447465770909/2919519447465770909.vrm",
+ "vroid/9/2925117288345846359/2925117288345846359.vrm",
+ "vroid/9/2930419321195444489/2930419321195444489.vrm",
+ "vroid/9/2938192826234739569/2938192826234739569.vrm",
+ "vroid/9/2938896905282788889/2938896905282788889.vrm",
+ "vroid/9/2941209749783294199/2941209749783294199.vrm",
+ "vroid/9/2942388254591359669/2942388254591359669.vrm",
+ "vroid/9/2946013108117407969/2946013108117407969.vrm",
+ "vroid/9/2946333969719903069/2946333969719903069.vrm",
+ "vroid/9/2946854958386009349/2946854958386009349.vrm",
+ "vroid/9/2947340178811967929/2947340178811967929.vrm",
+ "vroid/9/2979262864462656849/2979262864462656849.vrm",
+ "vroid/9/2984626323630976679/2984626323630976679.vrm",
+ "vroid/9/2989897541428507269/2989897541428507269.vrm",
+ "vroid/9/2990646221785097139/2990646221785097139.vrm",
+ "vroid/9/2993791952638281779/2993791952638281779.vrm",
+ "vroid/9/2996530417954448059/2996530417954448059.vrm",
+ "vroid/9/3001014932070419669/3001014932070419669.vrm",
+ "vroid/9/3002766134832286209/3002766134832286209.vrm",
+ "vroid/9/3011405510493338859/3011405510493338859.vrm",
+ "vroid/9/3013875126032191859/3013875126032191859.vrm",
+ "vroid/9/3030754064190019129/3030754064190019129.vrm",
+ "vroid/9/3054242740417572779/3054242740417572779.vrm",
+ "vroid/9/3063939427631769999/3063939427631769999.vrm",
+ "vroid/9/3073347250223210589/3073347250223210589.vrm",
+ "vroid/9/3079414634069463889/3079414634069463889.vrm",
+ "vroid/9/3090883363111396179/3090883363111396179.vrm",
+ "vroid/9/3091987662288626499/3091987662288626499.vrm",
+ "vroid/9/3093771033463504849/3093771033463504849.vrm",
+ "vroid/9/3108876302327154119/3108876302327154119.vrm",
+ "vroid/9/3115594321255474619/3115594321255474619.vrm",
+ "vroid/9/3118954820765386049/3118954820765386049.vrm",
+ "vroid/9/3122564191063171079/3122564191063171079.vrm",
+ "vroid/9/3129383223150562999/3129383223150562999.vrm",
+ "vroid/9/3148470339961223829/3148470339961223829.vrm",
+ "vroid/9/3152020131287452979/3152020131287452979.vrm",
+ "vroid/9/3154016328351186819/3154016328351186819.vrm",
+ "vroid/9/3166893592725265229/3166893592725265229.vrm",
+ "vroid/9/3168109075276903609/3168109075276903609.vrm",
+ "vroid/9/3185462752780939889/3185462752780939889.vrm",
+ "vroid/9/3201305241326417699/3201305241326417699.vrm",
+ "vroid/9/3212883654502286909/3212883654502286909.vrm",
+ "vroid/9/321517412057371179/321517412057371179.vrm",
+ "vroid/9/324136464958008289/324136464958008289.vrm",
+ "vroid/9/3245768020775560939/3245768020775560939.vrm",
+ "vroid/9/3247658004670116739/3247658004670116739.vrm",
+ "vroid/9/3254852644650450669/3254852644650450669.vrm",
+ "vroid/9/3261062364087577569/3261062364087577569.vrm",
+ "vroid/9/3261193360523687949/3261193360523687949.vrm",
+ "vroid/9/3269296706635639219/3269296706635639219.vrm",
+ "vroid/9/3272290316795967779/3272290316795967779.vrm",
+ "vroid/9/3274964875961114719/3274964875961114719.vrm",
+ "vroid/9/3285851601230784349/3285851601230784349.vrm",
+ "vroid/9/3286561643969338839/3286561643969338839.vrm",
+ "vroid/9/3297887005768468519/3297887005768468519.vrm",
+ "vroid/9/3303261255858677269/3303261255858677269.vrm",
+ "vroid/9/3305475774775943149/3305475774775943149.vrm",
+ "vroid/9/3309007855947635349/3309007855947635349.vrm",
+ "vroid/9/3311460001507841749/3311460001507841749.vrm",
+ "vroid/9/3312824188329020219/3312824188329020219.vrm",
+ "vroid/9/3313418988483555279/3313418988483555279.vrm",
+ "vroid/9/3329250477867917969/3329250477867917969.vrm",
+ "vroid/9/3333927373644809789/3333927373644809789.vrm",
+ "vroid/9/3339018748782142589/3339018748782142589.vrm",
+ "vroid/9/3351610922671104969/3351610922671104969.vrm",
+ "vroid/9/3352289122345949059/3352289122345949059.vrm",
+ "vroid/9/3354007974091990189/3354007974091990189.vrm",
+ "vroid/9/3354171108207276849/3354171108207276849.vrm",
+ "vroid/9/3357852109567617399/3357852109567617399.vrm",
+ "vroid/9/3360228738855139479/3360228738855139479.vrm",
+ "vroid/9/3366346235687155399/3366346235687155399.vrm",
+ "vroid/9/3366437818799848049/3366437818799848049.vrm",
+ "vroid/9/3368182564493592279/3368182564493592279.vrm",
+ "vroid/9/338145597471314909/338145597471314909.vrm",
+ "vroid/9/3381530027960982579/3381530027960982579.vrm",
+ "vroid/9/3387374532591714059/3387374532591714059.vrm",
+ "vroid/9/3387925455116118679/3387925455116118679.vrm",
+ "vroid/9/3394482358697610939/3394482358697610939.vrm",
+ "vroid/9/340166911019515439/340166911019515439.vrm",
+ "vroid/9/3408188254951796499/3408188254951796499.vrm",
+ "vroid/9/341480619401308239/341480619401308239.vrm",
+ "vroid/9/3415520006400072439/3415520006400072439.vrm",
+ "vroid/9/3421710632752758189/3421710632752758189.vrm",
+ "vroid/9/3422027655434034429/3422027655434034429.vrm",
+ "vroid/9/3436280237392378209/3436280237392378209.vrm",
+ "vroid/9/3443694179947150619/3443694179947150619.vrm",
+ "vroid/9/3446775220762039299/3446775220762039299.vrm",
+ "vroid/9/345342250515692719/345342250515692719.vrm",
+ "vroid/9/3462083719087159289/3462083719087159289.vrm",
+ "vroid/9/3465470405032817009/3465470405032817009.vrm",
+ "vroid/9/3466451508114073389/3466451508114073389.vrm",
+ "vroid/9/3482116851746459579/3482116851746459579.vrm",
+ "vroid/9/3482551833410525399/3482551833410525399.vrm",
+ "vroid/9/3493112750320977069/3493112750320977069.vrm",
+ "vroid/9/3498566662579344129/3498566662579344129.vrm",
+ "vroid/9/3511761410235620499/3511761410235620499.vrm",
+ "vroid/9/3515636814879529689/3515636814879529689.vrm",
+ "vroid/9/3523232100496577069/3523232100496577069.vrm",
+ "vroid/9/3527402981283679949/3527402981283679949.vrm",
+ "vroid/9/352786349244459809/352786349244459809.vrm",
+ "vroid/9/3532399680612192929/3532399680612192929.vrm",
+ "vroid/9/3535631793266073839/3535631793266073839.vrm",
+ "vroid/9/353726316612948969/353726316612948969.vrm",
+ "vroid/9/3578281324842690389/3578281324842690389.vrm",
+ "vroid/9/3580438195834899649/3580438195834899649.vrm",
+ "vroid/9/3584707345961013589/3584707345961013589.vrm",
+ "vroid/9/3589559925463233129/3589559925463233129.vrm",
+ "vroid/9/3596135964007665709/3596135964007665709.vrm",
+ "vroid/9/3596421830522992769/3596421830522992769.vrm",
+ "vroid/9/3600249924638679269/3600249924638679269.vrm",
+ "vroid/9/3608141881595180029/3608141881595180029.vrm",
+ "vroid/9/3609545241055126679/3609545241055126679.vrm",
+ "vroid/9/3612022767145458769/3612022767145458769.vrm",
+ "vroid/9/3614337930854405579/3614337930854405579.vrm",
+ "vroid/9/3630542777305053449/3630542777305053449.vrm",
+ "vroid/9/3632758940054047319/3632758940054047319.vrm",
+ "vroid/9/3633834117599565879/3633834117599565879.vrm",
+ "vroid/9/3645469057361149369/3645469057361149369.vrm",
+ "vroid/9/3646199643335531049/3646199643335531049.vrm",
+ "vroid/9/3654010016250364279/3654010016250364279.vrm",
+ "vroid/9/3655499610301020689/3655499610301020689.vrm",
+ "vroid/9/3658165668749416399/3658165668749416399.vrm",
+ "vroid/9/3661281045858685259/3661281045858685259.vrm",
+ "vroid/9/3687543789074113029/3687543789074113029.vrm",
+ "vroid/9/3708028448193293559/3708028448193293559.vrm",
+ "vroid/9/3710592616763486589/3710592616763486589.vrm",
+ "vroid/9/371759257027406039/371759257027406039.vrm",
+ "vroid/9/3717954214079918659/3717954214079918659.vrm",
+ "vroid/9/373989062762737559/373989062762737559.vrm",
+ "vroid/9/3744534672477546769/3744534672477546769.vrm",
+ "vroid/9/3751749055365862439/3751749055365862439.vrm",
+ "vroid/9/3755918142956121209/3755918142956121209.vrm",
+ "vroid/9/3773559868943126059/3773559868943126059.vrm",
+ "vroid/9/3789707065715517059/3789707065715517059.vrm",
+ "vroid/9/3791564208510111869/3791564208510111869.vrm",
+ "vroid/9/3795196997221563219/3795196997221563219.vrm",
+ "vroid/9/3795304667153539469/3795304667153539469.vrm",
+ "vroid/9/3795964765808926999/3795964765808926999.vrm",
+ "vroid/9/3798891759892416339/3798891759892416339.vrm",
+ "vroid/9/3800055909908704419/3800055909908704419.vrm",
+ "vroid/9/3802193144742469159/3802193144742469159.vrm",
+ "vroid/9/3806729425019889999/3806729425019889999.vrm",
+ "vroid/9/3808589531473647979/3808589531473647979.vrm",
+ "vroid/9/3813031094800015879/3813031094800015879.vrm",
+ "vroid/9/3816076484247208299/3816076484247208299.vrm",
+ "vroid/9/382189100386668529/382189100386668529.vrm",
+ "vroid/9/3823429994816654809/3823429994816654809.vrm",
+ "vroid/9/3834829881771501149/3834829881771501149.vrm",
+ "vroid/9/3836257137992775819/3836257137992775819.vrm",
+ "vroid/9/3843279599679733439/3843279599679733439.vrm",
+ "vroid/9/3845270106757521199/3845270106757521199.vrm",
+ "vroid/9/3858319118170442779/3858319118170442779.vrm",
+ "vroid/9/3872292788648926259/3872292788648926259.vrm",
+ "vroid/9/3878137092201727039/3878137092201727039.vrm",
+ "vroid/9/3878631469088534959/3878631469088534959.vrm",
+ "vroid/9/3885106886282085269/3885106886282085269.vrm",
+ "vroid/9/3898379654174067699/3898379654174067699.vrm",
+ "vroid/9/390669678701120779/390669678701120779.vrm",
+ "vroid/9/3907079681918755849/3907079681918755849.vrm",
+ "vroid/9/3908801549964108189/3908801549964108189.vrm",
+ "vroid/9/3915028651383703799/3915028651383703799.vrm",
+ "vroid/9/3918144620361145059/3918144620361145059.vrm",
+ "vroid/9/3921650526017068939/3921650526017068939.vrm",
+ "vroid/9/392482786634856529/392482786634856529.vrm",
+ "vroid/9/3926330630156238389/3926330630156238389.vrm",
+ "vroid/9/3935319934786822729/3935319934786822729.vrm",
+ "vroid/9/3943434221127928489/3943434221127928489.vrm",
+ "vroid/9/3950257696994982109/3950257696994982109.vrm",
+ "vroid/9/3954086578944108849/3954086578944108849.vrm",
+ "vroid/9/3955732223091731529/3955732223091731529.vrm",
+ "vroid/9/3957091627414769649/3957091627414769649.vrm",
+ "vroid/9/3966065225738309379/3966065225738309379.vrm",
+ "vroid/9/3968464300379327069/3968464300379327069.vrm",
+ "vroid/9/3971568617173147729/3971568617173147729.vrm",
+ "vroid/9/3980742647550980279/3980742647550980279.vrm",
+ "vroid/9/3987545073563420399/3987545073563420399.vrm",
+ "vroid/9/3988089278327346239/3988089278327346239.vrm",
+ "vroid/9/3996562499964606869/3996562499964606869.vrm",
+ "vroid/9/3999087338132655069/3999087338132655069.vrm",
+ "vroid/9/4001634799026037069/4001634799026037069.vrm",
+ "vroid/9/4002526854958849279/4002526854958849279.vrm",
+ "vroid/9/4012482164063195449/4012482164063195449.vrm",
+ "vroid/9/4019060573068348039/4019060573068348039.vrm",
+ "vroid/9/4037566544278656929/4037566544278656929.vrm",
+ "vroid/9/4043461251643837689/4043461251643837689.vrm",
+ "vroid/9/4045592899086151659/4045592899086151659.vrm",
+ "vroid/9/4057741767979756299/4057741767979756299.vrm",
+ "vroid/9/4061325096393047679/4061325096393047679.vrm",
+ "vroid/9/4069996210497248869/4069996210497248869.vrm",
+ "vroid/9/4078027029369220839/4078027029369220839.vrm",
+ "vroid/9/4085850685372060089/4085850685372060089.vrm",
+ "vroid/9/4104479662162089449/4104479662162089449.vrm",
+ "vroid/9/4113372237592742599/4113372237592742599.vrm",
+ "vroid/9/412005015840081299/412005015840081299.vrm",
+ "vroid/9/4122879212424600449/4122879212424600449.vrm",
+ "vroid/9/4126173016792083069/4126173016792083069.vrm",
+ "vroid/9/4139640884928297519/4139640884928297519.vrm",
+ "vroid/9/4141944108634185119/4141944108634185119.vrm",
+ "vroid/9/4147941192784392199/4147941192784392199.vrm",
+ "vroid/9/4149752435540640479/4149752435540640479.vrm",
+ "vroid/9/4152015275158923089/4152015275158923089.vrm",
+ "vroid/9/4153634331381069509/4153634331381069509.vrm",
+ "vroid/9/4155349681049851239/4155349681049851239.vrm",
+ "vroid/9/4157508887049101829/4157508887049101829.vrm",
+ "vroid/9/4162047082208818189/4162047082208818189.vrm",
+ "vroid/9/4171952144920702549/4171952144920702549.vrm",
+ "vroid/9/4183316037111150829/4183316037111150829.vrm",
+ "vroid/9/4183891267246019379/4183891267246019379.vrm",
+ "vroid/9/4184381557527457329/4184381557527457329.vrm",
+ "vroid/9/4186733546962262569/4186733546962262569.vrm",
+ "vroid/9/4192013603992279869/4192013603992279869.vrm",
+ "vroid/9/4197028962276926739/4197028962276926739.vrm",
+ "vroid/9/4209521819919056949/4209521819919056949.vrm",
+ "vroid/9/4211679195556384669/4211679195556384669.vrm",
+ "vroid/9/4229435630126647459/4229435630126647459.vrm",
+ "vroid/9/4230175114409822759/4230175114409822759.vrm",
+ "vroid/9/4230693403187455299/4230693403187455299.vrm",
+ "vroid/9/4242104015295642629/4242104015295642629.vrm",
+ "vroid/9/4243457780979651699/4243457780979651699.vrm",
+ "vroid/9/4249531783312877739/4249531783312877739.vrm",
+ "vroid/9/4252282544438245579/4252282544438245579.vrm",
+ "vroid/9/42541341466447439/42541341466447439.vrm",
+ "vroid/9/4255404088271656379/4255404088271656379.vrm",
+ "vroid/9/4262267353775215689/4262267353775215689.vrm",
+ "vroid/9/426275608358835909/426275608358835909.vrm",
+ "vroid/9/4276554065118619079/4276554065118619079.vrm",
+ "vroid/9/4279549350469526569/4279549350469526569.vrm",
+ "vroid/9/4284529817169086779/4284529817169086779.vrm",
+ "vroid/9/4286035335769313929/4286035335769313929.vrm",
+ "vroid/9/4288052343690500049/4288052343690500049.vrm",
+ "vroid/9/4297571712237556269/4297571712237556269.vrm",
+ "vroid/9/4299043226370805949/4299043226370805949.vrm",
+ "vroid/9/4299573952017235339/4299573952017235339.vrm",
+ "vroid/9/4300214929160324169/4300214929160324169.vrm",
+ "vroid/9/4308099257912559459/4308099257912559459.vrm",
+ "vroid/9/4313641375099084489/4313641375099084489.vrm",
+ "vroid/9/4318735932402329499/4318735932402329499.vrm",
+ "vroid/9/4320990183207558599/4320990183207558599.vrm",
+ "vroid/9/4324693153819010799/4324693153819010799.vrm",
+ "vroid/9/4335929141799614189/4335929141799614189.vrm",
+ "vroid/9/4337254698977026109/4337254698977026109.vrm",
+ "vroid/9/4340518083750162199/4340518083750162199.vrm",
+ "vroid/9/4343999714985716909/4343999714985716909.vrm",
+ "vroid/9/4352816043794880979/4352816043794880979.vrm",
+ "vroid/9/4371526449269825979/4371526449269825979.vrm",
+ "vroid/9/4387624895334463699/4387624895334463699.vrm",
+ "vroid/9/4388737975773795599/4388737975773795599.vrm",
+ "vroid/9/4392823384546783929/4392823384546783929.vrm",
+ "vroid/9/4395195417787216059/4395195417787216059.vrm",
+ "vroid/9/4397549862117197469/4397549862117197469.vrm",
+ "vroid/9/4398899961456061959/4398899961456061959.vrm",
+ "vroid/9/4403508869796837809/4403508869796837809.vrm",
+ "vroid/9/4433444549448109739/4433444549448109739.vrm",
+ "vroid/9/4433591926936836399/4433591926936836399.vrm",
+ "vroid/9/4434528753979387929/4434528753979387929.vrm",
+ "vroid/9/4439526881863295879/4439526881863295879.vrm",
+ "vroid/9/4456218515052334319/4456218515052334319.vrm",
+ "vroid/9/4456586612107755609/4456586612107755609.vrm",
+ "vroid/9/4458399137121242909/4458399137121242909.vrm",
+ "vroid/9/4473221108536689549/4473221108536689549.vrm",
+ "vroid/9/4475146077870953529/4475146077870953529.vrm",
+ "vroid/9/4480219771140812809/4480219771140812809.vrm",
+ "vroid/9/4485345209065174849/4485345209065174849.vrm",
+ "vroid/9/4485444783391813619/4485444783391813619.vrm",
+ "vroid/9/4486771648758501069/4486771648758501069.vrm",
+ "vroid/9/4488198156047861059/4488198156047861059.vrm",
+ "vroid/9/4491238733320502279/4491238733320502279.vrm",
+ "vroid/9/4494660782733125969/4494660782733125969.vrm",
+ "vroid/9/4495598922399792229/4495598922399792229.vrm",
+ "vroid/9/449745917094820169/449745917094820169.vrm",
+ "vroid/9/4515335745960789819/4515335745960789819.vrm",
+ "vroid/9/4518803046037756169/4518803046037756169.vrm",
+ "vroid/9/4532709568201554089/4532709568201554089.vrm",
+ "vroid/9/4549977091435895829/4549977091435895829.vrm",
+ "vroid/9/4550749495851961399/4550749495851961399.vrm",
+ "vroid/9/4551126920496463209/4551126920496463209.vrm",
+ "vroid/9/4552966265198168649/4552966265198168649.vrm",
+ "vroid/9/4557502951142586349/4557502951142586349.vrm",
+ "vroid/9/4570797459392749309/4570797459392749309.vrm",
+ "vroid/9/458261014440521709/458261014440521709.vrm",
+ "vroid/9/4589053409498800829/4589053409498800829.vrm",
+ "vroid/9/4589868665188562869/4589868665188562869.vrm",
+ "vroid/9/459379352356272409/459379352356272409.vrm",
+ "vroid/9/4594332056245093819/4594332056245093819.vrm",
+ "vroid/9/4594966003266577669/4594966003266577669.vrm",
+ "vroid/9/4601189726920685759/4601189726920685759.vrm",
+ "vroid/9/4609428067927713779/4609428067927713779.vrm",
+ "vroid/9/4609596256673975979/4609596256673975979.vrm",
+ "vroid/9/4610497070564574009/4610497070564574009.vrm",
+ "vroid/9/4613371291981407259/4613371291981407259.vrm",
+ "vroid/9/4621076116938053729/4621076116938053729.vrm",
+ "vroid/9/4641567174082027669/4641567174082027669.vrm",
+ "vroid/9/4648388493419453979/4648388493419453979.vrm",
+ "vroid/9/4655916693592925139/4655916693592925139.vrm",
+ "vroid/9/4667627859600977769/4667627859600977769.vrm",
+ "vroid/9/467834910859614129/467834910859614129.vrm",
+ "vroid/9/4685946231788106969/4685946231788106969.vrm",
+ "vroid/9/4687017500064150629/4687017500064150629.vrm",
+ "vroid/9/4690499570533686329/4690499570533686329.vrm",
+ "vroid/9/4701942209544288149/4701942209544288149.vrm",
+ "vroid/9/4705782090797071539/4705782090797071539.vrm",
+ "vroid/9/4710460413808456049/4710460413808456049.vrm",
+ "vroid/9/4710538790972533489/4710538790972533489.vrm",
+ "vroid/9/4725795111102348899/4725795111102348899.vrm",
+ "vroid/9/4742451041944598029/4742451041944598029.vrm",
+ "vroid/9/4745384353708234579/4745384353708234579.vrm",
+ "vroid/9/4748341444564259709/4748341444564259709.vrm",
+ "vroid/9/4750242227522406639/4750242227522406639.vrm",
+ "vroid/9/4751316413217386729/4751316413217386729.vrm",
+ "vroid/9/4752625096728704329/4752625096728704329.vrm",
+ "vroid/9/4758057940417596609/4758057940417596609.vrm",
+ "vroid/9/4771685909627393639/4771685909627393639.vrm",
+ "vroid/9/4792169208606208219/4792169208606208219.vrm",
+ "vroid/9/4795470930576797489/4795470930576797489.vrm",
+ "vroid/9/4797260007322931659/4797260007322931659.vrm",
+ "vroid/9/4798243594646912139/4798243594646912139.vrm",
+ "vroid/9/4802565074249784459/4802565074249784459.vrm",
+ "vroid/9/4802832338580632109/4802832338580632109.vrm",
+ "vroid/9/4803351728696397129/4803351728696397129.vrm",
+ "vroid/9/4805374226343572029/4805374226343572029.vrm",
+ "vroid/9/4807021703227997439/4807021703227997439.vrm",
+ "vroid/9/4816434013909602719/4816434013909602719.vrm",
+ "vroid/9/4818728989187517539/4818728989187517539.vrm",
+ "vroid/9/4821683784603591809/4821683784603591809.vrm",
+ "vroid/9/4828104563164735099/4828104563164735099.vrm",
+ "vroid/9/4829944706346175719/4829944706346175719.vrm",
+ "vroid/9/4832393639354101899/4832393639354101899.vrm",
+ "vroid/9/4835021131208254909/4835021131208254909.vrm",
+ "vroid/9/4851762689788142999/4851762689788142999.vrm",
+ "vroid/9/4852777909839866019/4852777909839866019.vrm",
+ "vroid/9/4857160690369466719/4857160690369466719.vrm",
+ "vroid/9/485879984573187579/485879984573187579.vrm",
+ "vroid/9/4863043558312547709/4863043558312547709.vrm",
+ "vroid/9/4865140289762274259/4865140289762274259.vrm",
+ "vroid/9/4873497324529554159/4873497324529554159.vrm",
+ "vroid/9/4877077306214926519/4877077306214926519.vrm",
+ "vroid/9/4878148597711415769/4878148597711415769.vrm",
+ "vroid/9/4885186360077738359/4885186360077738359.vrm",
+ "vroid/9/4886137675330910049/4886137675330910049.vrm",
+ "vroid/9/4891304536286485909/4891304536286485909.vrm",
+ "vroid/9/4897982122583152209/4897982122583152209.vrm",
+ "vroid/9/4905039529788662259/4905039529788662259.vrm",
+ "vroid/9/4914712305265932879/4914712305265932879.vrm",
+ "vroid/9/4927262096730304729/4927262096730304729.vrm",
+ "vroid/9/4943217792670767469/4943217792670767469.vrm",
+ "vroid/9/4960608580173084129/4960608580173084129.vrm",
+ "vroid/9/4963472722251383079/4963472722251383079.vrm",
+ "vroid/9/4972708202658697089/4972708202658697089.vrm",
+ "vroid/9/4975060221384999349/4975060221384999349.vrm",
+ "vroid/9/4978795701414523399/4978795701414523399.vrm",
+ "vroid/9/4981186663954880989/4981186663954880989.vrm",
+ "vroid/9/4981518110952104519/4981518110952104519.vrm",
+ "vroid/9/4985823778547868099/4985823778547868099.vrm",
+ "vroid/9/4993017647699181249/4993017647699181249.vrm",
+ "vroid/9/500346823083616129/500346823083616129.vrm",
+ "vroid/9/5008760186156711419/5008760186156711419.vrm",
+ "vroid/9/5027383371026651329/5027383371026651329.vrm",
+ "vroid/9/5045041497387876799/5045041497387876799.vrm",
+ "vroid/9/5045521068953168749/5045521068953168749.vrm",
+ "vroid/9/5045798674263790889/5045798674263790889.vrm",
+ "vroid/9/5047058369939976859/5047058369939976859.vrm",
+ "vroid/9/5048753971200955799/5048753971200955799.vrm",
+ "vroid/9/5056679099815267779/5056679099815267779.vrm",
+ "vroid/9/5059653736681774369/5059653736681774369.vrm",
+ "vroid/9/5071157361770276439/5071157361770276439.vrm",
+ "vroid/9/5075973546910152779/5075973546910152779.vrm",
+ "vroid/9/5083446443064735049/5083446443064735049.vrm",
+ "vroid/9/5084226529142853139/5084226529142853139.vrm",
+ "vroid/9/5087078650758755439/5087078650758755439.vrm",
+ "vroid/9/5088332235915482559/5088332235915482559.vrm",
+ "vroid/9/5089991752525718639/5089991752525718639.vrm",
+ "vroid/9/5090570323004607659/5090570323004607659.vrm",
+ "vroid/9/510057577132802499/510057577132802499.vrm",
+ "vroid/9/5112151897744948489/5112151897744948489.vrm",
+ "vroid/9/5118463949403770219/5118463949403770219.vrm",
+ "vroid/9/5126903676147802809/5126903676147802809.vrm",
+ "vroid/9/5127162940373768809/5127162940373768809.vrm",
+ "vroid/9/5134886346358421789/5134886346358421789.vrm",
+ "vroid/9/5139951802016375299/5139951802016375299.vrm",
+ "vroid/9/514778725067200419/514778725067200419.vrm",
+ "vroid/9/5150380095657899129/5150380095657899129.vrm",
+ "vroid/9/5151379126907689829/5151379126907689829.vrm",
+ "vroid/9/5154582935462924529/5154582935462924529.vrm",
+ "vroid/9/5157506821084303659/5157506821084303659.vrm",
+ "vroid/9/5160306151571635179/5160306151571635179.vrm",
+ "vroid/9/516327841455560609/516327841455560609.vrm",
+ "vroid/9/517404289755916069/517404289755916069.vrm",
+ "vroid/9/5186927248110160649/5186927248110160649.vrm",
+ "vroid/9/5192204147341076129/5192204147341076129.vrm",
+ "vroid/9/5193653758854258669/5193653758854258669.vrm",
+ "vroid/9/5197231827379079039/5197231827379079039.vrm",
+ "vroid/9/5203882388792445409/5203882388792445409.vrm",
+ "vroid/9/5216798499745187819/5216798499745187819.vrm",
+ "vroid/9/5218246640138201709/5218246640138201709.vrm",
+ "vroid/9/5223859367676344409/5223859367676344409.vrm",
+ "vroid/9/5223936901037377859/5223936901037377859.vrm",
+ "vroid/9/5223957854753771919/5223957854753771919.vrm",
+ "vroid/9/523186979494494299/523186979494494299.vrm",
+ "vroid/9/5237591301199042129/5237591301199042129.vrm",
+ "vroid/9/5242334423202336429/5242334423202336429.vrm",
+ "vroid/9/5244245350824727179/5244245350824727179.vrm",
+ "vroid/9/5247484245686797759/5247484245686797759.vrm",
+ "vroid/9/5263319278874707189/5263319278874707189.vrm",
+ "vroid/9/5269826979999108359/5269826979999108359.vrm",
+ "vroid/9/5277240247747908929/5277240247747908929.vrm",
+ "vroid/9/527866204374499949/527866204374499949.vrm",
+ "vroid/9/5284383697341929739/5284383697341929739.vrm",
+ "vroid/9/5297714910153666449/5297714910153666449.vrm",
+ "vroid/9/5299143154569717629/5299143154569717629.vrm",
+ "vroid/9/5299690364412518529/5299690364412518529.vrm",
+ "vroid/9/5304454844678467249/5304454844678467249.vrm",
+ "vroid/9/5321809387447652109/5321809387447652109.vrm",
+ "vroid/9/5336163105949149129/5336163105949149129.vrm",
+ "vroid/9/5360168191648460129/5360168191648460129.vrm",
+ "vroid/9/5366582138882559889/5366582138882559889.vrm",
+ "vroid/9/5376998981789938229/5376998981789938229.vrm",
+ "vroid/9/5382514373482834099/5382514373482834099.vrm",
+ "vroid/9/5394399568503288069/5394399568503288069.vrm",
+ "vroid/9/5394726370644826809/5394726370644826809.vrm",
+ "vroid/9/5398983379268517949/5398983379268517949.vrm",
+ "vroid/9/5403806078364138889/5403806078364138889.vrm",
+ "vroid/9/5408734040059943929/5408734040059943929.vrm",
+ "vroid/9/5417064827145926679/5417064827145926679.vrm",
+ "vroid/9/5417282268520046179/5417282268520046179.vrm",
+ "vroid/9/542383535991105439/542383535991105439.vrm",
+ "vroid/9/5428435366353072239/5428435366353072239.vrm",
+ "vroid/9/5435875278021542099/5435875278021542099.vrm",
+ "vroid/9/5439721440003627499/5439721440003627499.vrm",
+ "vroid/9/5445592848001343539/5445592848001343539.vrm",
+ "vroid/9/5452757484728394169/5452757484728394169.vrm",
+ "vroid/9/5455502028871975199/5455502028871975199.vrm",
+ "vroid/9/5459070290607007729/5459070290607007729.vrm",
+ "vroid/9/5489585137277426299/5489585137277426299.vrm",
+ "vroid/9/5492737888134396629/5492737888134396629.vrm",
+ "vroid/9/5495869968733141819/5495869968733141819.vrm",
+ "vroid/9/550155573094805859/550155573094805859.vrm",
+ "vroid/9/5508709001248505599/5508709001248505599.vrm",
+ "vroid/9/5510333403968493609/5510333403968493609.vrm",
+ "vroid/9/5511604797723512759/5511604797723512759.vrm",
+ "vroid/9/5512954029973423969/5512954029973423969.vrm",
+ "vroid/9/5519688840474660369/5519688840474660369.vrm",
+ "vroid/9/552554810110800499/552554810110800499.vrm",
+ "vroid/9/5540905924688341829/5540905924688341829.vrm",
+ "vroid/9/5541255155116324959/5541255155116324959.vrm",
+ "vroid/9/5543853391837420189/5543853391837420189.vrm",
+ "vroid/9/5549894793420989169/5549894793420989169.vrm",
+ "vroid/9/5550923110713567459/5550923110713567459.vrm",
+ "vroid/9/5551859184059603499/5551859184059603499.vrm",
+ "vroid/9/555525349023348109/555525349023348109.vrm",
+ "vroid/9/5558850674166313239/5558850674166313239.vrm",
+ "vroid/9/5559519483549292979/5559519483549292979.vrm",
+ "vroid/9/5573474578425335459/5573474578425335459.vrm",
+ "vroid/9/5585249962511991079/5585249962511991079.vrm",
+ "vroid/9/5587156735571981089/5587156735571981089.vrm",
+ "vroid/9/5592756183158830279/5592756183158830279.vrm",
+ "vroid/9/5595245694239118319/5595245694239118319.vrm",
+ "vroid/9/5600409147013705599/5600409147013705599.vrm",
+ "vroid/9/5603272676444218179/5603272676444218179.vrm",
+ "vroid/9/5609803140790616399/5609803140790616399.vrm",
+ "vroid/9/5617706316460163659/5617706316460163659.vrm",
+ "vroid/9/5624699639073578659/5624699639073578659.vrm",
+ "vroid/9/5633200120995877129/5633200120995877129.vrm",
+ "vroid/9/5637587012273736089/5637587012273736089.vrm",
+ "vroid/9/5645345810029395079/5645345810029395079.vrm",
+ "vroid/9/5645690147322738829/5645690147322738829.vrm",
+ "vroid/9/5648520030280493849/5648520030280493849.vrm",
+ "vroid/9/5666044900401864289/5666044900401864289.vrm",
+ "vroid/9/5666818133082771469/5666818133082771469.vrm",
+ "vroid/9/5689120133376901809/5689120133376901809.vrm",
+ "vroid/9/5701516011835654339/5701516011835654339.vrm",
+ "vroid/9/5705939742315993109/5705939742315993109.vrm",
+ "vroid/9/5713171346023885789/5713171346023885789.vrm",
+ "vroid/9/5726378173138241419/5726378173138241419.vrm",
+ "vroid/9/5728938841445081199/5728938841445081199.vrm",
+ "vroid/9/5733466919185387939/5733466919185387939.vrm",
+ "vroid/9/5738830962273183079/5738830962273183079.vrm",
+ "vroid/9/5746624192744528749/5746624192744528749.vrm",
+ "vroid/9/5759453746565143149/5759453746565143149.vrm",
+ "vroid/9/5761479399946854179/5761479399946854179.vrm",
+ "vroid/9/5770005216945444739/5770005216945444739.vrm",
+ "vroid/9/5779503308116064929/5779503308116064929.vrm",
+ "vroid/9/5779968271311815799/5779968271311815799.vrm",
+ "vroid/9/5781735549399363329/5781735549399363329.vrm",
+ "vroid/9/5783935096462758309/5783935096462758309.vrm",
+ "vroid/9/5820455622283630369/5820455622283630369.vrm",
+ "vroid/9/5835259913109691409/5835259913109691409.vrm",
+ "vroid/9/5836403542112948349/5836403542112948349.vrm",
+ "vroid/9/5836803885565940889/5836803885565940889.vrm",
+ "vroid/9/5849381172878904679/5849381172878904679.vrm",
+ "vroid/9/5861354260529182869/5861354260529182869.vrm",
+ "vroid/9/5887103827260084899/5887103827260084899.vrm",
+ "vroid/9/5897381166662672479/5897381166662672479.vrm",
+ "vroid/9/5897740523689751139/5897740523689751139.vrm",
+ "vroid/9/5915442604958635769/5915442604958635769.vrm",
+ "vroid/9/5921227494671593709/5921227494671593709.vrm",
+ "vroid/9/5922778757917244319/5922778757917244319.vrm",
+ "vroid/9/5939983684789729629/5939983684789729629.vrm",
+ "vroid/9/5944012791188098569/5944012791188098569.vrm",
+ "vroid/9/5951168406327139949/5951168406327139949.vrm",
+ "vroid/9/5956698145567316689/5956698145567316689.vrm",
+ "vroid/9/5957621138354041729/5957621138354041729.vrm",
+ "vroid/9/5986289483467422309/5986289483467422309.vrm",
+ "vroid/9/5999151639856838319/5999151639856838319.vrm",
+ "vroid/9/600246067435349769/600246067435349769.vrm",
+ "vroid/9/6009489869481368409/6009489869481368409.vrm",
+ "vroid/9/6015289663680153309/6015289663680153309.vrm",
+ "vroid/9/6015545087251812869/6015545087251812869.vrm",
+ "vroid/9/6019430529702607099/6019430529702607099.vrm",
+ "vroid/9/6024166046800529109/6024166046800529109.vrm",
+ "vroid/9/6026819817247288949/6026819817247288949.vrm",
+ "vroid/9/6036999704847541939/6036999704847541939.vrm",
+ "vroid/9/605093680071474369/605093680071474369.vrm",
+ "vroid/9/6053605382581347949/6053605382581347949.vrm",
+ "vroid/9/6059253661662168759/6059253661662168759.vrm",
+ "vroid/9/6062817587281704069/6062817587281704069.vrm",
+ "vroid/9/6071786493058479989/6071786493058479989.vrm",
+ "vroid/9/6074720817880217359/6074720817880217359.vrm",
+ "vroid/9/6079230505591443749/6079230505591443749.vrm",
+ "vroid/9/6081307268095343199/6081307268095343199.vrm",
+ "vroid/9/6086027198880580229/6086027198880580229.vrm",
+ "vroid/9/6091365634235562569/6091365634235562569.vrm",
+ "vroid/9/6108341795824345229/6108341795824345229.vrm",
+ "vroid/9/6113046913888347299/6113046913888347299.vrm",
+ "vroid/9/6113711806364313389/6113711806364313389.vrm",
+ "vroid/9/6114150605828222289/6114150605828222289.vrm",
+ "vroid/9/6119522983111913549/6119522983111913549.vrm",
+ "vroid/9/6122598442725719139/6122598442725719139.vrm",
+ "vroid/9/6123016460250002279/6123016460250002279.vrm",
+ "vroid/9/612518061007481089/612518061007481089.vrm",
+ "vroid/9/6126532412947181249/6126532412947181249.vrm",
+ "vroid/9/6127366497881686269/6127366497881686269.vrm",
+ "vroid/9/6129375334023466699/6129375334023466699.vrm",
+ "vroid/9/6133936345830358259/6133936345830358259.vrm",
+ "vroid/9/6136396027987524059/6136396027987524059.vrm",
+ "vroid/9/613924589377679399/613924589377679399.vrm",
+ "vroid/9/6143797614477186919/6143797614477186919.vrm",
+ "vroid/9/6147700006904588769/6147700006904588769.vrm",
+ "vroid/9/6148125901806235509/6148125901806235509.vrm",
+ "vroid/9/6149122100239782879/6149122100239782879.vrm",
+ "vroid/9/6158572857280157479/6158572857280157479.vrm",
+ "vroid/9/6170097154467896929/6170097154467896929.vrm",
+ "vroid/9/6173225441054312489/6173225441054312489.vrm",
+ "vroid/9/6185607597654551809/6185607597654551809.vrm",
+ "vroid/9/6194212594144523109/6194212594144523109.vrm",
+ "vroid/9/6197499465136782769/6197499465136782769.vrm",
+ "vroid/9/6201623342959794279/6201623342959794279.vrm",
+ "vroid/9/6202489082071839279/6202489082071839279.vrm",
+ "vroid/9/6206759819801090699/6206759819801090699.vrm",
+ "vroid/9/6230995262742952009/6230995262742952009.vrm",
+ "vroid/9/6232331346303189999/6232331346303189999.vrm",
+ "vroid/9/6235653485270694139/6235653485270694139.vrm",
+ "vroid/9/6239396427763533029/6239396427763533029.vrm",
+ "vroid/9/6242633697025904319/6242633697025904319.vrm",
+ "vroid/9/6258995428325724779/6258995428325724779.vrm",
+ "vroid/9/6260862423013400949/6260862423013400949.vrm",
+ "vroid/9/6262602453978395459/6262602453978395459.vrm",
+ "vroid/9/6264982387288645789/6264982387288645789.vrm",
+ "vroid/9/6267444265924702959/6267444265924702959.vrm",
+ "vroid/9/6268978886177373319/6268978886177373319.vrm",
+ "vroid/9/6279806586835225569/6279806586835225569.vrm",
+ "vroid/9/6284781652955582979/6284781652955582979.vrm",
+ "vroid/9/6286836393172650559/6286836393172650559.vrm",
+ "vroid/9/6325728937715111879/6325728937715111879.vrm",
+ "vroid/9/632609457686638819/632609457686638819.vrm",
+ "vroid/9/6336209142368274809/6336209142368274809.vrm",
+ "vroid/9/6343574281710003719/6343574281710003719.vrm",
+ "vroid/9/6353099797489463619/6353099797489463619.vrm",
+ "vroid/9/6356630319455941779/6356630319455941779.vrm",
+ "vroid/9/6357659329435445879/6357659329435445879.vrm",
+ "vroid/9/6366035337772503659/6366035337772503659.vrm",
+ "vroid/9/6375451357565235809/6375451357565235809.vrm",
+ "vroid/9/6379082814816180199/6379082814816180199.vrm",
+ "vroid/9/637974596696798099/637974596696798099.vrm",
+ "vroid/9/6383288359317283079/6383288359317283079.vrm",
+ "vroid/9/638879870663441649/638879870663441649.vrm",
+ "vroid/9/6395189531924536559/6395189531924536559.vrm",
+ "vroid/9/6396008363000609299/6396008363000609299.vrm",
+ "vroid/9/6403971156614423659/6403971156614423659.vrm",
+ "vroid/9/6405641838146479929/6405641838146479929.vrm",
+ "vroid/9/6407632832136960209/6407632832136960209.vrm",
+ "vroid/9/6412054287486710649/6412054287486710649.vrm",
+ "vroid/9/6412954704429879299/6412954704429879299.vrm",
+ "vroid/9/6413431117402833979/6413431117402833979.vrm",
+ "vroid/9/6417615023039345359/6417615023039345359.vrm",
+ "vroid/9/6429366433395764789/6429366433395764789.vrm",
+ "vroid/9/6430821861136711529/6430821861136711529.vrm",
+ "vroid/9/6439756559392882549/6439756559392882549.vrm",
+ "vroid/9/6440115343928530259/6440115343928530259.vrm",
+ "vroid/9/644178156816579509/644178156816579509.vrm",
+ "vroid/9/6444427245368633619/6444427245368633619.vrm",
+ "vroid/9/6452665947792663609/6452665947792663609.vrm",
+ "vroid/9/6458544352115054239/6458544352115054239.vrm",
+ "vroid/9/6458544578590814249/6458544578590814249.vrm",
+ "vroid/9/6466879417041366269/6466879417041366269.vrm",
+ "vroid/9/6467011916698168439/6467011916698168439.vrm",
+ "vroid/9/6469701384556987269/6469701384556987269.vrm",
+ "vroid/9/6472029846267288039/6472029846267288039.vrm",
+ "vroid/9/6474877503089985229/6474877503089985229.vrm",
+ "vroid/9/6477234439763478179/6477234439763478179.vrm",
+ "vroid/9/6477827643818359699/6477827643818359699.vrm",
+ "vroid/9/6480863713336581509/6480863713336581509.vrm",
+ "vroid/9/6486240360055185349/6486240360055185349.vrm",
+ "vroid/9/6490239087202611019/6490239087202611019.vrm",
+ "vroid/9/6491031335743438319/6491031335743438319.vrm",
+ "vroid/9/6500634228249814159/6500634228249814159.vrm",
+ "vroid/9/6506384108849315199/6506384108849315199.vrm",
+ "vroid/9/6510085219918071789/6510085219918071789.vrm",
+ "vroid/9/6511329651952033839/6511329651952033839.vrm",
+ "vroid/9/6517210964966486329/6517210964966486329.vrm",
+ "vroid/9/6523528233222660789/6523528233222660789.vrm",
+ "vroid/9/6533521489188261699/6533521489188261699.vrm",
+ "vroid/9/6535375213828833109/6535375213828833109.vrm",
+ "vroid/9/6540135878220702809/6540135878220702809.vrm",
+ "vroid/9/654430268613137599/654430268613137599.vrm",
+ "vroid/9/6544541201769025369/6544541201769025369.vrm",
+ "vroid/9/6550531553048250709/6550531553048250709.vrm",
+ "vroid/9/6556137179273500919/6556137179273500919.vrm",
+ "vroid/9/6564852178917408329/6564852178917408329.vrm",
+ "vroid/9/6574013436164343169/6574013436164343169.vrm",
+ "vroid/9/6574259959749855109/6574259959749855109.vrm",
+ "vroid/9/6574573864696547059/6574573864696547059.vrm",
+ "vroid/9/658131997932176709/658131997932176709.vrm",
+ "vroid/9/6581912274137598049/6581912274137598049.vrm",
+ "vroid/9/6587285740443054319/6587285740443054319.vrm",
+ "vroid/9/660115213436551309/660115213436551309.vrm",
+ "vroid/9/6605368174150174879/6605368174150174879.vrm",
+ "vroid/9/6609872357509818399/6609872357509818399.vrm",
+ "vroid/9/6613329355911538849/6613329355911538849.vrm",
+ "vroid/9/6620987462383596669/6620987462383596669.vrm",
+ "vroid/9/6627548726502425839/6627548726502425839.vrm",
+ "vroid/9/6635087989826670439/6635087989826670439.vrm",
+ "vroid/9/66371020032727869/66371020032727869.vrm",
+ "vroid/9/6656051556518883029/6656051556518883029.vrm",
+ "vroid/9/6671614023999686559/6671614023999686559.vrm",
+ "vroid/9/6676670845938877599/6676670845938877599.vrm",
+ "vroid/9/6684992295169353959/6684992295169353959.vrm",
+ "vroid/9/6690322254844992069/6690322254844992069.vrm",
+ "vroid/9/6701039535024763589/6701039535024763589.vrm",
+ "vroid/9/6701978562756703899/6701978562756703899.vrm",
+ "vroid/9/6711953655670008629/6711953655670008629.vrm",
+ "vroid/9/6718623985042872519/6718623985042872519.vrm",
+ "vroid/9/6720734663238538289/6720734663238538289.vrm",
+ "vroid/9/6731564227711139519/6731564227711139519.vrm",
+ "vroid/9/6731850447146666369/6731850447146666369.vrm",
+ "vroid/9/6739125519938198869/6739125519938198869.vrm",
+ "vroid/9/6739445723505190069/6739445723505190069.vrm",
+ "vroid/9/6747312555396107009/6747312555396107009.vrm",
+ "vroid/9/6753601357258496689/6753601357258496689.vrm",
+ "vroid/9/6758153121715480239/6758153121715480239.vrm",
+ "vroid/9/6760880204492282079/6760880204492282079.vrm",
+ "vroid/9/6763549052824421279/6763549052824421279.vrm",
+ "vroid/9/6766671337304169519/6766671337304169519.vrm",
+ "vroid/9/6773462310258393449/6773462310258393449.vrm",
+ "vroid/9/6773931714108134209/6773931714108134209.vrm",
+ "vroid/9/6777209416978605329/6777209416978605329.vrm",
+ "vroid/9/6785985563756689109/6785985563756689109.vrm",
+ "vroid/9/6792576961050207029/6792576961050207029.vrm",
+ "vroid/9/6804315006642362859/6804315006642362859.vrm",
+ "vroid/9/6805284046727519829/6805284046727519829.vrm",
+ "vroid/9/6810466771697797779/6810466771697797779.vrm",
+ "vroid/9/681317204105963079/681317204105963079.vrm",
+ "vroid/9/6820720662810498239/6820720662810498239.vrm",
+ "vroid/9/6822548774399997029/6822548774399997029.vrm",
+ "vroid/9/6832717908482133939/6832717908482133939.vrm",
+ "vroid/9/6837833406876233909/6837833406876233909.vrm",
+ "vroid/9/6843937015358501579/6843937015358501579.vrm",
+ "vroid/9/6850459233364177669/6850459233364177669.vrm",
+ "vroid/9/6852540133483619969/6852540133483619969.vrm",
+ "vroid/9/685705968081464799/685705968081464799.vrm",
+ "vroid/9/6861904002063362829/6861904002063362829.vrm",
+ "vroid/9/6869877930676455669/6869877930676455669.vrm",
+ "vroid/9/6877468915113437039/6877468915113437039.vrm",
+ "vroid/9/6882961254503700689/6882961254503700689.vrm",
+ "vroid/9/6888820850006789089/6888820850006789089.vrm",
+ "vroid/9/6888941773798501129/6888941773798501129.vrm",
+ "vroid/9/6890437430603817499/6890437430603817499.vrm",
+ "vroid/9/6891595248762552519/6891595248762552519.vrm",
+ "vroid/9/689765440544731939/689765440544731939.vrm",
+ "vroid/9/6915330451458278079/6915330451458278079.vrm",
+ "vroid/9/6917103880575256109/6917103880575256109.vrm",
+ "vroid/9/6920936771913448259/6920936771913448259.vrm",
+ "vroid/9/6924593718279977209/6924593718279977209.vrm",
+ "vroid/9/6924641522191114129/6924641522191114129.vrm",
+ "vroid/9/6927060051459516639/6927060051459516639.vrm",
+ "vroid/9/692916104038575439/692916104038575439.vrm",
+ "vroid/9/6949817836906934309/6949817836906934309.vrm",
+ "vroid/9/6950138434143075689/6950138434143075689.vrm",
+ "vroid/9/6953043680503830509/6953043680503830509.vrm",
+ "vroid/9/6956303378739320459/6956303378739320459.vrm",
+ "vroid/9/6958862413958157239/6958862413958157239.vrm",
+ "vroid/9/6959258181023932229/6959258181023932229.vrm",
+ "vroid/9/6961123930615749409/6961123930615749409.vrm",
+ "vroid/9/6970209110421482299/6970209110421482299.vrm",
+ "vroid/9/6977545908709890999/6977545908709890999.vrm",
+ "vroid/9/6987810233258579269/6987810233258579269.vrm",
+ "vroid/9/6991632320475546689/6991632320475546689.vrm",
+ "vroid/9/7000093972140228389/7000093972140228389.vrm",
+ "vroid/9/7000756696369954449/7000756696369954449.vrm",
+ "vroid/9/7001580066701711549/7001580066701711549.vrm",
+ "vroid/9/700361382925430209/700361382925430209.vrm",
+ "vroid/9/7006428610946487399/7006428610946487399.vrm",
+ "vroid/9/7014553304196052439/7014553304196052439.vrm",
+ "vroid/9/7025394767389572589/7025394767389572589.vrm",
+ "vroid/9/7027922861514056549/7027922861514056549.vrm",
+ "vroid/9/7027994832911355839/7027994832911355839.vrm",
+ "vroid/9/7032224605398418099/7032224605398418099.vrm",
+ "vroid/9/7049359462515537049/7049359462515537049.vrm",
+ "vroid/9/7054581559819655459/7054581559819655459.vrm",
+ "vroid/9/7058813318625074339/7058813318625074339.vrm",
+ "vroid/9/7067380158973065589/7067380158973065589.vrm",
+ "vroid/9/7067719180331438579/7067719180331438579.vrm",
+ "vroid/9/7070510690403614039/7070510690403614039.vrm",
+ "vroid/9/70726883241967089/70726883241967089.vrm",
+ "vroid/9/7077975619301782509/7077975619301782509.vrm",
+ "vroid/9/7083283826785949129/7083283826785949129.vrm",
+ "vroid/9/7107774759708629279/7107774759708629279.vrm",
+ "vroid/9/7113889004343057409/7113889004343057409.vrm",
+ "vroid/9/7114095899138811039/7114095899138811039.vrm",
+ "vroid/9/7119727185942058069/7119727185942058069.vrm",
+ "vroid/9/712056934978321029/712056934978321029.vrm",
+ "vroid/9/7121011959676550789/7121011959676550789.vrm",
+ "vroid/9/7126722529732897309/7126722529732897309.vrm",
+ "vroid/9/713256505751234479/713256505751234479.vrm",
+ "vroid/9/7155037646270166979/7155037646270166979.vrm",
+ "vroid/9/7161978722945729059/7161978722945729059.vrm",
+ "vroid/9/7165535102438943059/7165535102438943059.vrm",
+ "vroid/9/7168363981223949899/7168363981223949899.vrm",
+ "vroid/9/717613391000940919/717613391000940919.vrm",
+ "vroid/9/7183483360839127809/7183483360839127809.vrm",
+ "vroid/9/7185288406454968959/7185288406454968959.vrm",
+ "vroid/9/7187708960797736139/7187708960797736139.vrm",
+ "vroid/9/7189414508288950459/7189414508288950459.vrm",
+ "vroid/9/720298160147710409/720298160147710409.vrm",
+ "vroid/9/7211234512052031229/7211234512052031229.vrm",
+ "vroid/9/7213699857127808919/7213699857127808919.vrm",
+ "vroid/9/7214936208898121099/7214936208898121099.vrm",
+ "vroid/9/723310153751614849/723310153751614849.vrm",
+ "vroid/9/7234150681042522839/7234150681042522839.vrm",
+ "vroid/9/7234414294892623369/7234414294892623369.vrm",
+ "vroid/9/724516134504325899/724516134504325899.vrm",
+ "vroid/9/725122919254004089/725122919254004089.vrm",
+ "vroid/9/7255666198296204389/7255666198296204389.vrm",
+ "vroid/9/7259642818549441349/7259642818549441349.vrm",
+ "vroid/9/7261893733400566429/7261893733400566429.vrm",
+ "vroid/9/7264807316116657779/7264807316116657779.vrm",
+ "vroid/9/7265492272999040449/7265492272999040449.vrm",
+ "vroid/9/7288341497288470849/7288341497288470849.vrm",
+ "vroid/9/7305283064232185709/7305283064232185709.vrm",
+ "vroid/9/7318523362320807679/7318523362320807679.vrm",
+ "vroid/9/731891226246911119/731891226246911119.vrm",
+ "vroid/9/7320406662074662319/7320406662074662319.vrm",
+ "vroid/9/732659525097616059/732659525097616059.vrm",
+ "vroid/9/7328703294685979049/7328703294685979049.vrm",
+ "vroid/9/733027955218094879/733027955218094879.vrm",
+ "vroid/9/7333366723041942269/7333366723041942269.vrm",
+ "vroid/9/7339537585234758479/7339537585234758479.vrm",
+ "vroid/9/735291709382166699/735291709382166699.vrm",
+ "vroid/9/7360913035478707339/7360913035478707339.vrm",
+ "vroid/9/7371201956919680089/7371201956919680089.vrm",
+ "vroid/9/7376554840971128149/7376554840971128149.vrm",
+ "vroid/9/7385418807190014879/7385418807190014879.vrm",
+ "vroid/9/7388358548245757009/7388358548245757009.vrm",
+ "vroid/9/7392474239889281979/7392474239889281979.vrm",
+ "vroid/9/7393861748125486259/7393861748125486259.vrm",
+ "vroid/9/7401342401004132179/7401342401004132179.vrm",
+ "vroid/9/7401632543913740109/7401632543913740109.vrm",
+ "vroid/9/740485653502954089/740485653502954089.vrm",
+ "vroid/9/7408681020526997179/7408681020526997179.vrm",
+ "vroid/9/741722608914754729/741722608914754729.vrm",
+ "vroid/9/7421953096773127689/7421953096773127689.vrm",
+ "vroid/9/7451962241857370869/7451962241857370869.vrm",
+ "vroid/9/746448782768563959/746448782768563959.vrm",
+ "vroid/9/7467281040701913009/7467281040701913009.vrm",
+ "vroid/9/7476764964031990299/7476764964031990299.vrm",
+ "vroid/9/7501098532808860839/7501098532808860839.vrm",
+ "vroid/9/7509736811771974999/7509736811771974999.vrm",
+ "vroid/9/7516460402799900619/7516460402799900619.vrm",
+ "vroid/9/7516464277053258909/7516464277053258909.vrm",
+ "vroid/9/7516642613363873649/7516642613363873649.vrm",
+ "vroid/9/7518249255543741119/7518249255543741119.vrm",
+ "vroid/9/7525491576707522269/7525491576707522269.vrm",
+ "vroid/9/7525609065198432769/7525609065198432769.vrm",
+ "vroid/9/7527842073743511519/7527842073743511519.vrm",
+ "vroid/9/7531962644669578319/7531962644669578319.vrm",
+ "vroid/9/7539228625172726299/7539228625172726299.vrm",
+ "vroid/9/7544682252891643159/7544682252891643159.vrm",
+ "vroid/9/7556301115387688859/7556301115387688859.vrm",
+ "vroid/9/7558414764477786509/7558414764477786509.vrm",
+ "vroid/9/7570008436281139069/7570008436281139069.vrm",
+ "vroid/9/7572298785119162909/7572298785119162909.vrm",
+ "vroid/9/7576709744300075429/7576709744300075429.vrm",
+ "vroid/9/7589678485543399349/7589678485543399349.vrm",
+ "vroid/9/7599832689096346269/7599832689096346269.vrm",
+ "vroid/9/7601474812805287169/7601474812805287169.vrm",
+ "vroid/9/7610018928284419599/7610018928284419599.vrm",
+ "vroid/9/7614063518634531379/7614063518634531379.vrm",
+ "vroid/9/7623815043517867279/7623815043517867279.vrm"
+]
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..99e37e696a01a82e9aaa64f584c84b9b5b236fef
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,24 @@
+gradio
+rm_anime_bg
+# for 2D_stage
+torch
+torchvision
+accelerate
+transformers
+diffusers==0.24.0
+ipdb
+einops
+imageio
+xformers
+onnxruntime
+# for 3D_stage
+pytorch_lightning
+jaxtyping
+wandb
+lpips
+git+https://github.com/NVlabs/nvdiffrast
+ninja
+open3d
+trimesh
+pymeshlab
+pygltflib