{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "Bp8t2AI8i7uP" }, "source": [ "##### Copyright 2022 The TensorFlow Authors." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2023-12-14T12:09:17.840503Z", "iopub.status.busy": "2023-12-14T12:09:17.839835Z", "iopub.status.idle": "2023-12-14T12:09:17.843684Z", "shell.execute_reply": "2023-12-14T12:09:17.843133Z" }, "id": "rxPj2Lsni9O4" }, "outputs": [], "source": [ "#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n", "# you may not use this file except in compliance with the License.\n", "# You may obtain a copy of the License at\n", "#\n", "# https://www.apache.org/licenses/LICENSE-2.0\n", "#\n", "# Unless required by applicable law or agreed to in writing, software\n", "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "# See the License for the specific language governing permissions and\n", "# limitations under the License." ] }, { "cell_type": "markdown", "metadata": { "id": "6xS-9i5DrRvO" }, "source": [ "# Customizing a Transformer Encoder" ] }, { "cell_type": "markdown", "metadata": { "id": "Mwb9uw1cDXsa" }, "source": [ "\n", " \n", " \n", " \n", " \n", "
\n", " View on TensorFlow.org\n", " \n", " Run in Google Colab\n", " \n", " View source on GitHub\n", " \n", " Download notebook\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "iLrcV4IyrcGX" }, "source": [ "## Learning objectives\n", "\n", "The [TensorFlow Models NLP library](https://github.com/tensorflow/models/tree/master/official/nlp/modeling) is a collection of tools for building and training modern high performance natural language models.\n", "\n", "The `tfm.nlp.networks.EncoderScaffold` is the core of this library, and lots of new network architectures are proposed to improve the encoder. In this Colab notebook, we will learn how to customize the encoder to employ new network architectures." ] }, { "cell_type": "markdown", "metadata": { "id": "YYxdyoWgsl8t" }, "source": [ "## Install and import" ] }, { "cell_type": "markdown", "metadata": { "id": "fEJSFutUsn_h" }, "source": [ "### Install the TensorFlow Model Garden pip package\n", "\n", "* `tf-models-official` is the stable Model Garden package. Note that it may not include the latest changes in the `tensorflow_models` github repo. To include latest changes, you may install `tf-models-nightly`,\n", "which is the nightly Model Garden package created daily automatically.\n", "* `pip` will install all models and dependencies automatically." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:17.847626Z", "iopub.status.busy": "2023-12-14T12:09:17.847188Z", "iopub.status.idle": "2023-12-14T12:09:22.397594Z", "shell.execute_reply": "2023-12-14T12:09:22.396446Z" }, "id": "mfHI5JyuJ1y9" }, "outputs": [], "source": [ "!pip install -q opencv-python" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:22.402397Z", "iopub.status.busy": "2023-12-14T12:09:22.401542Z", "iopub.status.idle": "2023-12-14T12:09:32.488117Z", "shell.execute_reply": "2023-12-14T12:09:32.486964Z" }, "id": "thsKZDjhswhR" }, "outputs": [], "source": [ "!pip install -q tf-models-official" ] }, { "cell_type": "markdown", "metadata": { "id": "hpf7JPCVsqtv" }, "source": [ "### Import Tensorflow and other libraries" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:32.492064Z", "iopub.status.busy": "2023-12-14T12:09:32.491769Z", "iopub.status.idle": "2023-12-14T12:09:37.185821Z", "shell.execute_reply": "2023-12-14T12:09:37.184726Z" }, "id": "my4dp-RMssQe" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2023-12-14 12:09:32.926415: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n", "2023-12-14 12:09:32.926462: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n", "2023-12-14 12:09:32.927992: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n" ] } ], "source": [ "import numpy as np\n", "import tensorflow as tf\n", "\n", "import tensorflow_models as tfm\n", "nlp = tfm.nlp" ] }, { "cell_type": "markdown", "metadata": { "id": "vjDmVsFfs85n" }, "source": [ "## Canonical BERT encoder\n", "\n", "Before learning how to customize the encoder, let's firstly create a canonical BERT enoder and use it to instantiate a `bert_classifier.BertClassifier` for classification task." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:37.190371Z", "iopub.status.busy": "2023-12-14T12:09:37.189615Z", "iopub.status.idle": "2023-12-14T12:09:40.961070Z", "shell.execute_reply": "2023-12-14T12:09:40.960348Z" }, "id": "Oav8sbgstWc-" }, "outputs": [], "source": [ "cfg = {\n", " \"vocab_size\": 100,\n", " \"hidden_size\": 32,\n", " \"num_layers\": 3,\n", " \"num_attention_heads\": 4,\n", " \"intermediate_size\": 64,\n", " \"activation\": tfm.utils.activations.gelu,\n", " \"dropout_rate\": 0.1,\n", " \"attention_dropout_rate\": 0.1,\n", " \"max_sequence_length\": 16,\n", " \"type_vocab_size\": 2,\n", " \"initializer\": tf.keras.initializers.TruncatedNormal(stddev=0.02),\n", "}\n", "bert_encoder = nlp.networks.BertEncoder(**cfg)\n", "\n", "def build_classifier(bert_encoder):\n", " return nlp.models.BertClassifier(bert_encoder, num_classes=2)\n", "\n", "canonical_classifier_model = build_classifier(bert_encoder)" ] }, { "cell_type": "markdown", "metadata": { "id": "Qe2UWI6_tsHo" }, "source": [ "`canonical_classifier_model` can be trained using the training data. For details about how to train the model, please see the [Fine tuning bert](https://www.tensorflow.org/text/tutorials/fine_tune_bert) notebook. We skip the code that trains the model here.\n", "\n", "After training, we can apply the model to do prediction.\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:40.965393Z", "iopub.status.busy": "2023-12-14T12:09:40.964878Z", "iopub.status.idle": "2023-12-14T12:09:42.062738Z", "shell.execute_reply": "2023-12-14T12:09:42.062071Z" }, "id": "csED2d-Yt5h6" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tf.Tensor(\n", "[[ 0.03545166 0.30729884]\n", " [ 0.00677404 0.17251147]\n", " [-0.07276718 0.17345032]], shape=(3, 2), dtype=float32)\n" ] } ], "source": [ "def predict(model):\n", " batch_size = 3\n", " np.random.seed(0)\n", " word_ids = np.random.randint(\n", " cfg[\"vocab_size\"], size=(batch_size, cfg[\"max_sequence_length\"]))\n", " mask = np.random.randint(2, size=(batch_size, cfg[\"max_sequence_length\"]))\n", " type_ids = np.random.randint(\n", " cfg[\"type_vocab_size\"], size=(batch_size, cfg[\"max_sequence_length\"]))\n", " print(model([word_ids, mask, type_ids], training=False))\n", "\n", "predict(canonical_classifier_model)" ] }, { "cell_type": "markdown", "metadata": { "id": "PzKStEK9t_Pb" }, "source": [ "## Customize BERT encoder\n", "\n", "One BERT encoder consists of an embedding network and multiple transformer blocks, and each transformer block contains an attention layer and a feedforward layer." ] }, { "cell_type": "markdown", "metadata": { "id": "rmwQfhj6fmKz" }, "source": [ "We provide easy ways to customize each of those components via (1)\n", "[EncoderScaffold](https://github.com/tensorflow/models/blob/master/official/nlp/modeling/networks/encoder_scaffold.py) and (2) [TransformerScaffold](https://github.com/tensorflow/models/blob/master/official/nlp/modeling/layers/transformer_scaffold.py)." ] }, { "cell_type": "markdown", "metadata": { "id": "xsMgEVHAui11" }, "source": [ "### Use EncoderScaffold\n", "\n", "`networks.EncoderScaffold` allows users to provide a custom embedding subnetwork\n", " (which will replace the standard embedding logic) and/or a custom hidden layer class (which will replace the `Transformer` instantiation in the encoder)." ] }, { "cell_type": "markdown", "metadata": { "id": "-JBabpa2AOz8" }, "source": [ "#### Without Customization\n", "\n", "Without any customization, `networks.EncoderScaffold` behaves the same the canonical `networks.BertEncoder`.\n", "\n", "As shown in the following example, `networks.EncoderScaffold` can load `networks.BertEncoder`'s weights and output the same values:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:42.066614Z", "iopub.status.busy": "2023-12-14T12:09:42.066361Z", "iopub.status.idle": "2023-12-14T12:09:42.784432Z", "shell.execute_reply": "2023-12-14T12:09:42.783667Z" }, "id": "ktNzKuVByZQf" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:The `Transformer` layer is deprecated. Please directly use `TransformerEncoderBlock`.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:The `Transformer` layer is deprecated. Please directly use `TransformerEncoderBlock`.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:The `Transformer` layer is deprecated. Please directly use `TransformerEncoderBlock`.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "tf.Tensor(\n", "[[ 0.03545166 0.30729884]\n", " [ 0.00677404 0.17251147]\n", " [-0.07276718 0.17345032]], shape=(3, 2), dtype=float32)\n" ] } ], "source": [ "default_hidden_cfg = dict(\n", " num_attention_heads=cfg[\"num_attention_heads\"],\n", " intermediate_size=cfg[\"intermediate_size\"],\n", " intermediate_activation=cfg[\"activation\"],\n", " dropout_rate=cfg[\"dropout_rate\"],\n", " attention_dropout_rate=cfg[\"attention_dropout_rate\"],\n", " kernel_initializer=cfg[\"initializer\"],\n", ")\n", "default_embedding_cfg = dict(\n", " vocab_size=cfg[\"vocab_size\"],\n", " type_vocab_size=cfg[\"type_vocab_size\"],\n", " hidden_size=cfg[\"hidden_size\"],\n", " initializer=cfg[\"initializer\"],\n", " dropout_rate=cfg[\"dropout_rate\"],\n", " max_seq_length=cfg[\"max_sequence_length\"]\n", ")\n", "default_kwargs = dict(\n", " hidden_cfg=default_hidden_cfg,\n", " embedding_cfg=default_embedding_cfg,\n", " num_hidden_instances=cfg[\"num_layers\"],\n", " pooled_output_dim=cfg[\"hidden_size\"],\n", " return_all_layer_outputs=True,\n", " pooler_layer_initializer=cfg[\"initializer\"],\n", ")\n", "\n", "encoder_scaffold = nlp.networks.EncoderScaffold(**default_kwargs)\n", "classifier_model_from_encoder_scaffold = build_classifier(encoder_scaffold)\n", "classifier_model_from_encoder_scaffold.set_weights(\n", " canonical_classifier_model.get_weights())\n", "predict(classifier_model_from_encoder_scaffold)" ] }, { "cell_type": "markdown", "metadata": { "id": "sMaUmLyIuwcs" }, "source": [ "#### Customize Embedding\n", "\n", "Next, we show how to use a customized embedding network.\n", "\n", "We first build an embedding network that would replace the default network. This one will have 2 inputs (`mask` and `word_ids`) instead of 3, and won't use positional embeddings." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:42.788065Z", "iopub.status.busy": "2023-12-14T12:09:42.787462Z", "iopub.status.idle": "2023-12-14T12:09:42.817176Z", "shell.execute_reply": "2023-12-14T12:09:42.816557Z" }, "id": "LTinnaG6vcsw" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/keras/src/initializers/initializers.py:120: UserWarning: The initializer TruncatedNormal is unseeded and being called multiple times, which will return identical values each time (even if the initializer is unseeded). Please update your code to provide a seed to the initializer, or avoid using the same initializer instance more than once.\n", " warnings.warn(\n" ] } ], "source": [ "word_ids = tf.keras.layers.Input(\n", " shape=(cfg['max_sequence_length'],), dtype=tf.int32, name=\"input_word_ids\")\n", "mask = tf.keras.layers.Input(\n", " shape=(cfg['max_sequence_length'],), dtype=tf.int32, name=\"input_mask\")\n", "embedding_layer = nlp.layers.OnDeviceEmbedding(\n", " vocab_size=cfg['vocab_size'],\n", " embedding_width=cfg['hidden_size'],\n", " initializer=cfg[\"initializer\"],\n", " name=\"word_embeddings\")\n", "word_embeddings = embedding_layer(word_ids)\n", "attention_mask = nlp.layers.SelfAttentionMask()([word_embeddings, mask])\n", "new_embedding_network = tf.keras.Model([word_ids, mask],\n", " [word_embeddings, attention_mask])" ] }, { "cell_type": "markdown", "metadata": { "id": "HN7_yu-6O3qI" }, "source": [ "Inspecting `new_embedding_network`, we can see it takes two inputs:\n", "`input_word_ids` and `input_mask`." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:42.820481Z", "iopub.status.busy": "2023-12-14T12:09:42.819979Z", "iopub.status.idle": "2023-12-14T12:09:42.937604Z", "shell.execute_reply": "2023-12-14T12:09:42.936850Z" }, "id": "fO9zKFE4OpHp" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tf.keras.utils.plot_model(new_embedding_network, show_shapes=True, dpi=48)" ] }, { "cell_type": "markdown", "metadata": { "id": "9cOaGQHLv12W" }, "source": [ "We can then build a new encoder using the above `new_embedding_network`." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:42.940943Z", "iopub.status.busy": "2023-12-14T12:09:42.940693Z", "iopub.status.idle": "2023-12-14T12:09:43.501467Z", "shell.execute_reply": "2023-12-14T12:09:43.500740Z" }, "id": "mtFDMNf2vIl9" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:The `Transformer` layer is deprecated. Please directly use `TransformerEncoderBlock`.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:The `Transformer` layer is deprecated. Please directly use `TransformerEncoderBlock`.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:The `Transformer` layer is deprecated. Please directly use `TransformerEncoderBlock`.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/keras/src/initializers/initializers.py:120: UserWarning: The initializer TruncatedNormal is unseeded and being called multiple times, which will return identical values each time (even if the initializer is unseeded). Please update your code to provide a seed to the initializer, or avoid using the same initializer instance more than once.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[, ]\n" ] } ], "source": [ "kwargs = dict(default_kwargs)\n", "\n", "# Use new embedding network.\n", "kwargs['embedding_cls'] = new_embedding_network\n", "kwargs['embedding_data'] = embedding_layer.embeddings\n", "\n", "encoder_with_customized_embedding = nlp.networks.EncoderScaffold(**kwargs)\n", "classifier_model = build_classifier(encoder_with_customized_embedding)\n", "# ... Train the model ...\n", "print(classifier_model.inputs)\n", "\n", "# Assert that there are only two inputs.\n", "assert len(classifier_model.inputs) == 2" ] }, { "cell_type": "markdown", "metadata": { "id": "Z73ZQDtmwg9K" }, "source": [ "#### Customized Transformer\n", "\n", "Users can also override the `hidden_cls` argument in `networks.EncoderScaffold`'s constructor employ a customized Transformer layer.\n", "\n", "See [the source of `nlp.layers.ReZeroTransformer`](https://github.com/tensorflow/models/blob/master/official/nlp/modeling/layers/rezero_transformer.py) for how to implement a customized Transformer layer.\n", "\n", "The following is an example of using `nlp.layers.ReZeroTransformer`:\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:43.505084Z", "iopub.status.busy": "2023-12-14T12:09:43.504552Z", "iopub.status.idle": "2023-12-14T12:09:44.240060Z", "shell.execute_reply": "2023-12-14T12:09:44.239337Z" }, "id": "uAIarLZgw6pA" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tf.Tensor(\n", "[[-0.08663296 0.09281035]\n", " [-0.07291833 0.36477187]\n", " [-0.08730186 0.1503254 ]], shape=(3, 2), dtype=float32)\n" ] } ], "source": [ "kwargs = dict(default_kwargs)\n", "\n", "# Use ReZeroTransformer.\n", "kwargs['hidden_cls'] = nlp.layers.ReZeroTransformer\n", "\n", "encoder_with_rezero_transformer = nlp.networks.EncoderScaffold(**kwargs)\n", "classifier_model = build_classifier(encoder_with_rezero_transformer)\n", "# ... Train the model ...\n", "predict(classifier_model)\n", "\n", "# Assert that the variable `rezero_alpha` from ReZeroTransformer exists.\n", "assert 'rezero_alpha' in ''.join([x.name for x in classifier_model.trainable_weights])" ] }, { "cell_type": "markdown", "metadata": { "id": "6PMHFdvnxvR0" }, "source": [ "### Use `nlp.layers.TransformerScaffold`\n", "\n", "The above method of customizing the model requires rewriting the whole `nlp.layers.Transformer` layer, while sometimes you may only want to customize either attention layer or feedforward block. In this case, `nlp.layers.TransformerScaffold` can be used.\n" ] }, { "cell_type": "markdown", "metadata": { "id": "D6FejlgwyAy_" }, "source": [ "#### Customize Attention Layer\n", "\n", "User can also override the `attention_cls` argument in `layers.TransformerScaffold`'s constructor to employ a customized Attention layer.\n", "\n", "See [the source of `nlp.layers.TalkingHeadsAttention`](https://github.com/tensorflow/models/blob/master/official/nlp/modeling/layers/talking_heads_attention.py) for how to implement a customized `Attention` layer.\n", "\n", "Following is an example of using `nlp.layers.TalkingHeadsAttention`:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:44.243540Z", "iopub.status.busy": "2023-12-14T12:09:44.243284Z", "iopub.status.idle": "2023-12-14T12:09:45.344434Z", "shell.execute_reply": "2023-12-14T12:09:45.343602Z" }, "id": "nFrSMrZuyNeQ" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tf.Tensor(\n", "[[-0.20591784 0.09203205]\n", " [-0.0056177 -0.10278902]\n", " [-0.21681327 -0.12282 ]], shape=(3, 2), dtype=float32)\n" ] } ], "source": [ "# Use TalkingHeadsAttention\n", "hidden_cfg = dict(default_hidden_cfg)\n", "hidden_cfg['attention_cls'] = nlp.layers.TalkingHeadsAttention\n", "\n", "kwargs = dict(default_kwargs)\n", "kwargs['hidden_cls'] = nlp.layers.TransformerScaffold\n", "kwargs['hidden_cfg'] = hidden_cfg\n", "\n", "encoder = nlp.networks.EncoderScaffold(**kwargs)\n", "classifier_model = build_classifier(encoder)\n", "# ... Train the model ...\n", "predict(classifier_model)\n", "\n", "# Assert that the variable `pre_softmax_weight` from TalkingHeadsAttention exists.\n", "assert 'pre_softmax_weight' in ''.join([x.name for x in classifier_model.trainable_weights])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:45.347489Z", "iopub.status.busy": "2023-12-14T12:09:45.347221Z", "iopub.status.idle": "2023-12-14T12:09:45.497660Z", "shell.execute_reply": "2023-12-14T12:09:45.496874Z" }, "id": "tKkZ8spzYmpc" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAKFCAIAAACr3cFmAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdeVQUV9ow8Fsoi9LQCgqCC4qyBDEQ5RyVkGgiKo447BCQ4NIM6mhGo77RoBPxfV3ikuA3ThZPXILiQjdG3KKDzDhnNAKjZthVZIIZEGyRtRVEaO73x52p6XQ1TS/VXVXw/P7qLqruffrWvdyu6qp6KIwxAgAAAITGgusAAAAAAEMM5rDugoKCmpoaDgMAA1NMTAzXIQAAWMDlEdjnn3/OYe0cys/Pz8/P5zoKhBBKT0/nOgRzG4AfGYD+issjMDSwvwvz4bPLZDI+hGFOMpmM6xAAAOyA38B04u3tHRISwtZqfFZQUEBRlL+/P0KooaHhs88+4zoiPZSXl2dmZiKEcnJyKIoKDg7mOiIAgAnxawJrb2+PjY3lOgoNbt68yVzIjFbjanrhQwtIJJKioiKE0Lp165YtW0ZeUBSVlpZGVvD19aUoaseOHaxUx2LhkydPrqqqKiwsDA8Pr6+vZyU8AABv8WsCGzp0qFQqNXjzly9fzpgxg8V4tDMyWlOUyWILyOXyZ8+eOTg4IIQOHDiQlJS0e/fua9euIYTKyso2bdq0detWVipit/CQkJBjx46xEhgAgOf4NYFFR0ePGjWKfrFy5Up7e/uMjAyEUHBwsLe3d0xMjFgs3r59O0IoKCiI/LP29/cPDQ1FCIWGhhYWFlIUlZOTo1bypEmTKIrKy8s7dOjQvn37amtrKYpas2aNUqlMTk4Wi8X+/v6lpaXR0dHOzs4JCQnW1taXLl169epVZGSknZ3dwYMHtUTLXO3hw4c+Pj4WFhZkBT60gL6qqqqcnJzoty4uLrt27Vq8eHFdXR29kNl6ajErlUqJRGJvbx8YGFhbW9tbXSwW7uLi8uDBAyM/OwBAGDB3YmJimAv9/PzICzc3t7t371ZUVMycOZMscXBwKCkpqa2tdXNzq6qq6ujomD59Osa4pqZm4cKFGGN6CdO9e/eio6MxxrGxsW+99RbGePv27T09PadOnQoNDW1ra5PJZEFBQRjj8ePH379/n2yVkZERFhamUCiOHj06f/783qJlrpaenp6SktLc3KwxGKlUKpVKe2sWtlpAqVROmzats7Ozt4qwpl2Qn58vkUgwxjdu3Hj//ffp5Zs2bSLrBwUFdXV1kbfM1lOL+fTp0xEREU1NTdnZ2cnJyb2FwWLh1dXV77zzDsa4vr5+zpw5unxkAIBA8esITJVYLJ46deprr73W3t5Olri6uk6ZMmX06NEBAQFVVVX0mvg/DxOhKKq30ry9vWtqap4+feru7t7Q0PDkyRMrKyuKou7duxcSEmJnZxceHl5RUUHq9fLyIls9fPhw7ty5IpFowYIFWkJlrpaQkPDs2bNx48Z9/PHHXLWAhYXFnTt3rKysDKvdw8NDLperLTx69GhjY2Nqaip5q7H1VGOuqKg4d+6cg4NDdHT07du3tdfISuFyudzDw8OwjwwAEBb+TmDM2ai+vr64uLiuru7OnTseHh7W1tZPnz5tbW29fv06WcHKykqhUBQWFmq8BCAsLOx3v/tdWFhYVFTUunXryOWCPj4+V69eVSgUOTk5Pj4+apt4enpeu3bt+fPnubm5WkJlrubk5HT27Nni4uLs7OzHjx/zpAX04uzs7Ojo2NTUpLpQJBKdPXv20KFDCoUCaWo9tZh9fHySk5Pb29sxxuTCEC1YKfzKlStLly418rMDAISBw6M/5smcqKgohFBUVNSSJUsQQhKJJCwsDCG0YcMGjLGfn198fLy9vX1aWhpZf82aNba2tlu2bEEI7d69G2McHx/v6OhYXFzMrO6nn36aMGECxri0tNTLy4ss7O7ulkgkdnZ2fn5+JSUlpF76r52dnREREba2tuRAatu2bRqjZa62bds2hJCNjU1SUlJPT49aJFpOIbLYAkqlMiAgwIBTiAghchpTLpfv378fY7x27VqE0KxZs8g6Mpls5cqVvbWeasxkBZFINGrUqCNHjmCMlUqlr6+vao0sFl5WVnb8+HGM8blz5xBCcAoRgP6Nwtw9zDc2NlavK+78/f37/BYvCOReWgPuIGa9BfTdBcbLzMwUiUTh4eHmrFSV+T8yAMBE+HsKUU1wcHBxcXFycrKO61Mq6HuMjGeiYnWhbwvwU2JiIoezFwCgP+H4UVK6y8vL02t9Ex1ZcnjAqm8LAABA/yaYIzAAAABAFUxgAAAABInLizjmzJnj6OjIVe0cIo+NGDNmDNeBoKKiIvLc3oGjsrKyf1wKBADg8jcwR0fHgXk9mMFXIbJuAF6Sx/mzkgEAbIFTiOAXIJ0KAEAohDSBpaWlkevXW1pa+FZafwLpVAAAgiCwCSwqKio/P3/YsGGGlaCabcT40sxM31QpRqZWgXQqAACeE9IEpspE2UZ27txpZ2cXExOjUCjI8dmjR4/Cw8PJgZpa/g613CvGfBy11CF9Bm+G1CqQTgUAwHNCncCys7NtbGxSUlIKCwsPHTqEEMrLy2toaPjkk08qKiqOHTv2z3/+k77zl55dLl26RLKN9PYwiC1btigUilmzZl2/fv3y5curVq0aP358amrquXPnhg0bJpPJmpubf/755w0bNmzfvj07O3vo0KHbtm3r7Owkc4bBpFKpXC6vra3dunXrb3/7W6Ry27LG4PX9sD09PQEBAa9evdI9JIyx2sNzN2zYMHv27Li4uO7ubo1hM3eKWotpqY6twplhAwD6K6FOYIjtfCsIoYqKiilTpgwePPiDDz5oaGhYsGDBrVu3Wltbz58/v2jRIqQpf4dq7hVjMFOH9Bm8qVOrQDoVAADPCXgCYzfbyMaNG6VS6dy5c1taWj766CPyRT4pKWnnzp1OTk6DBg1CeiYH0QszdUifwZs6tQqkUwEA8J35H4BP0zexBclRghBqbm42PtsIXRrx5ptvFhcXu7u7jx07NiEhASFUU1PT3Nw8cuTIxsZGUppa/g613Cu6Y6ZTUUsd0mfw+n7Y3lKrQDoVAIBwCSmdSp9Yzzby8uXLPXv2qE11xmPlRmZWPiykUwEACJeATyGqYT3bSGhoqLu7e3x8PFsFski4qVUgnQoAgC2CSafSJ9azjRh5ZbxJQWoVAADoP0dgAAAABhSYwAAAAAgSxxdxcFU1txobGxFCxqSSaW1tFYvFxkdSWVnp6elpfDkCkp+fX1NTw3UUAAAWcDmBAYPFxcVlZWVxHQUAAHAJTiECAAAQJJjAAAAACBJMYAAAAAQJJjAAAACCBBMYAAAAQYIJDAAAgCDBBAYAAECQYAIDAAAgSDCBAQAAECSYwAAAAAgSTGAAAAAECSYwAAAAggQTGAAAAEGCCQwAAIAgwQQGAABAkGACAwAAIEiQ0FJIOjs733333c7OzqamJgcHB6VSmZ6ePnv2bK7jAgAADgzmOgCgB2tra6VSeffuXYRQdXX12LFjX3/9da6DAgAAbsApRIFZsWKFjY0Nee3m5ubg4MBtPAAAwBWYwAQmNjbWyckJIWRjY7NixQquwwEAAM7ABCYwtra2EydORAg5OztHRkZyHQ4AAHAGJjDh+eCDD4YOHerl5TV06FCuYwEAAM7ABCY8CxcupChqzZo1XAcCAABcYuEy+rFjx86cOZOVaEBlZaWnp2efq5WWlk6ePNnCwlTfPxobGxFCjo6OJipfiGpraz/88MOYmBhTVzTQBpSOfX6AhGFOZuvSpsPCZfQzZ86USqXGlwMQQrGxsbo0Zmdnp7W1tenCkMlkCCFB92zWkTYxg4E2oHTs8wMkDHMyW5c2HcGcQvT29g4JCTGmhODgYG9vb8PqMr52dpl09jJAQ0PDZ599xnUUeigvL8/MzOQ6in6Ob6NGXwUFBRRF+fv7k7fC6uSqPTwnJ4eiqODgYG5DMgXBTGA3b940soS8vDz6Dip966KXtLe3x8bGGhmJYTisuk/r1q1btmwZeUFRVFpaGlnu6+tLUdSOHTvYqoWtwidPnlxVVVVYWMhKYKbG511PYwZp/Jjl/INLJJKioiLymnRyIfbw8PDw+vp6ViLkG8FMYDwxdOhQrs4zGFn1y5cvZ8yYwWI8NLlc/uzZM3JL9YEDB5KSknbv3n3t2jWEUFlZ2aZNm7Zu3cpKRewWHhIScuzYMVYCMzUT7Xp2u4QphgZ/+jzdyaGH84r5JrBJkyZRFJWXl3fo0KF9+/bV1taSS+mUSmVycrJYLPb39y8tLY2OjnZ2dk5ISLC2tr506dKrV68iIyPt7OwOHjzILFOpVEokEnt7+8DAwNraWoRQdHT0qFGjVq5c6eDg8P333wcFBbm6upaVldGbJCQkiMXi7du3Mzdn1sVcQspXrcje3j4jI4NeWSQSpaamkq9RDx8+9PHxsbCwIJsYSUvV5OxoTEwM/dGCgoLI0PX39w8NDUUIhYaGFhYWUhSVk5NjfDCqqqqqyL3VhIuLy65duxYvXlxXV0cvZO5ltY/A3JUasVi4i4vLgwcP2G0KEzHRrqeXnzlzhqIoiqIePXoUHh5OUVRLSwuzZO37iA6SOWoMHgj86fOqnVyXTqgxZl06OYuFC6iHGw4bLSYmRpfV7t27Fx0djTGOjY196623MMbbt2/v6ek5depUaGhoW1ubTCYLCgrCGI8fP/7+/ftkq4yMjLCwMIVCcfTo0fnz56uVefr06YiIiKampuzs7OTkZLLQzc2tqKjoxo0bkyZNqqur++KLL37/+9+TPzk6Ov7444+1tbVubm5VVVVqmzPr0li7n58fXdHdu3crKipmzpypunJGRgZZOT09PSUlpbm5ma3G7K1qjLGDg0NJSQn90To6OqZPn44xrqmpWbhwIcaYXoIxViqV06ZN6+zs7K0iqVQqlUp1jPnGjRvvv/8+/XbTpk3kgwQFBXV1dZG3zL2s9hE07komFguvrq5+5513dPyM+raJMTT2AbZ2vSrV5ZcvX161ahXGuLCw8Ny5cxpL7nMfkSCZo0b7QOBJn2eGkZ+fL5FIyGvVTq5jJ2TGrEsnZ7Fw1R5eX18/Z84ctbrM1qVNx3xHYN7e3jU1NU+fPnV3d29oaHjy5ImVlRVFUffu3QsJCbGzswsPD6+oqEAIicViLy8vstXDhw/nzp0rEokWLFjALLOiouLcuXMODg7R0dG3b98mC8VisZ+fn7e397hx41xcXHx8fNra2sifXFxc3njjjdGjRwcEBFRVValtzqxLe+1isXjq1KmvvfZae3u76srz588nKyQkJDx79mzcuHEff/wxm03JqBoh5OrqOmXKFPqj0Wvi/9wmQVEUvdDCwuLOnTtWVlasBOPh4SGXy9UWHj16tLGxMTU1lbzVuJdVP4LGXdkbVgqXy+UeHh6stIA5GbnrVakuX7Bgwa1bt1pbW8+fP79o0SKNJeu4j5ijhpWBwG2fZ3byPjshM2bdOzkrhQu0h+vFrL+BhYWF/e53vwsLC4uKilq3bh25QsnHx+fq1asKhSInJ8fHx0dtE09Pz2vXrj1//jw3N5dZoI+PT3Jycnt7O8aY/q2V7rXMcVtXV1daWlpXV3fnzh0PDw+1zZl1aa9drXx65atXr5IlTk5OZ8+eLS4uzs7Ofvz4sV5tpR3zo9XX1xcXF9Mfzdra+unTp62trdevXycrWFlZKRSKwsJCtn5wpjk7Ozs6OjY1NakuFIlEZ8+ePXTokEKhQJr2stpH0Lgre8NK4VeuXFm6dKmRn938WNz1qsspikpKStq5c6eTk9OgQYM0lqzjPmKOGlYGArd9ntnJ++yEzJh17+SsFC7QHq4f4w/idDyFiDH+6aefJkyYgDEuLS318vIiC7u7uyUSiZ2dnZ+fX0lJyZIlSxBC9F87OzsjIiJsbW3Jd7dt27apFki2FYlEo0aNOnLkCMaYbC6RSKZPn44QSk9Pt7W1RQhduXJlzpw5Xl5e0dHRdnZ2aWlpzM2ZdTGXREVFIYSioqLoisLCwhBCGzZsoFdOTU0lZzC2bduGELKxsUlKSurp6TGyMbVUjTH28/OLj4+3t7cnHw1jvGbNGltb2y1btiCEdu/ejTGOj493dHQsLi5WKpUBAQFsnULEGMvl8v3792OM165dixCaNWsWWS6TyVauXIl72cuqH4G5K5VKpa+vr2otLBZeVlZ2/Phx3T+gAW1iMGYfYHHXq5Wsury5uXnkyJGNjY30X9VKZjajxiCZo0b7QOBJn9d4ChEhRJ/DJJ1cx06IVf4X9dYPDe7huhSu2sPPnTuHEOqXpxDNOoENBN3d3V9//fX69esN29zgxqSHGSv40LNPnDhB/xjDB9z+BqYFW7u+o6ODngnYLVk7nvR58/8f47yH82GYG0l4l9FTKugbJvgAY5yamjpixIgTJ05s3LjRnFUHBwcXFxcnJyebs1JTS0xMDA8P5zoKvtN31/c2fEJDQ93d3ePj43UvmduR2A/6PPRw4wkvIzM2+uGNJkJR1K5du3bt2mX+qvPy8sxfKeADfXd9b8Pn0qVL+pbM7UiEPg8Q3MgMAABAoGACAwAAIEgspFPx9/cfaGkITKeoqIh+eCiHyJ38Y8aM4ToQHjFb7omBNqB40ud5EoY5QToVhBDy9PQcaGkITIcnOR0gnQqT2XJPDLQBxZM+z5MwzAnSqQAAAADcgAnsv3RPGIaEkDOMdcLKh2QwSBUGCMgHxn+mmsAePHgwf/58sVjs7e397bffalwnLS2N3EQybNiwWbNm/fDDDzoWrmOWILp8os/ECronDEN8zRlmUoJL+sWEMd67d+/w4cMnTpxIHjj04sWLJUuWDB06dOrUqSUlJUhQqcLoHt7S0sK30voHyAfGd8bfC828g/358+eTJk06efKkQqEoLS19/fXXL1y4oHHbqKio/Pz85ubmzMxMBwcH+iH0bCHlk9fk8TPa6X5vf0NDg9rT8ZlLDGDY4wB6e9y4weszb9F/8uTJvHnz6LdJSUlWVla5ubnkLXlmNltMV3h1dfXy5cvb29ulUum7776LMT59+vSBAwc6Ojr27NkTGRlJVsvPz1+xYoXatvx8EodqDzeAWk8wsjTDGNDnWe/wGsNQfRq9av8XSudX7cbwNHo9XL58+fXXX09ISBCJRL6+vjt27Pjyyy+ZCWxow4YNW7x48apVq44cOYJ+mdimqqqKmamIzhJE0uQMGzZs3rx5crlce7qd/fv3I+MShiFNuY6MzBnWZ2MyUwFpz3tkojxJAk36pWb8+PFHjhyxtLRUKBTkdPF77723du1aGxubwMBA+qpLISZSMlHGrJ07d9rZ2cXExCgUCuZIVGtztWR+Bn8WtX3NSYdXA/nAeMr4OZD5zWXPnj2qhzulpaU+Pj5YU0Yf1W98J0+ejI2NxYzENhozFZFDJZImp6Wl5bvvvtu9ezczIw55GChCyNnZmY7H4IRhWFOuIyNzhvXZmMxUQH0mfDI+TxLzq5lAk35pNHHixAkTJlRWVtJLurq6Vq9e/ezZM/JWY6ow/h+BGZ8qrLcjsIMHD54/f545EpltrprMz+DPq7avzdDhNYYB+cD4zyRHYG5ubo8ePaLfVldXT5gwAWnK6KOqvLzczc0NMRLbLFiwoKCgoLW19cKFC7/+9a9VNyFpcsRicURExObNmzWm2yED8smTJ/RWBicMQ5pyHRmZM6xPGlMBEbiXhE+myJMk0KRfGlVWVmZlZZHv5qRZNm/evH79ekdHR7JEoImUWEwVRlRUVEyZMmXw4MEffPBBQ0MDM2cYs81Vk/kZrLc+b84OrwbygfGTSSawhQsXFhUVZWVlPX/+vLy8/JNPPlm9ejXqfbS0tLScOnXq66+/lkgkiJHYhqKopUuX7ty509nZ2cLiFwGTNDkvXryg32pJt7N582bywuCEYUhTriMjc4b1iZkKqM+8R6bIkyTQpF9qcnJy9u3b19XVZWlpKZfLu7u7EUJ79+5NTk52d3ffunUrWU2giZTYzZi1ceNGqVQ6d+7clpaWjz76CGPMzBmm1w7Vndq+5qTDq4F8YDxl/EGcxjMe9+7dmzNnjkgk8vDwOHbsGNaUwIZkCUIIicXit99+++bNm2RbZtqhtrY2FxeXpqYmsgKdJYhec8yYMbm5uWob0uUTJMeYMQnDsKb8ZEbmDOuzMZmpgHBfCZ+Mz5Ok8dyC4JJ+MQtvb29PSUkRi8Vjxoz55ptvMMYXL15U6yG9pQrj4SlEuoc3NzcbnzFLbby8+eabxcXF7u7uY8eOTUhIQAjV1NSo5QxTa3O1ZH4Gf15mnzd1h9cYBuQD4z/IB8YBLTnDWGlM4/Mkma1nmzQlEruF83AC6xPrCb2YOcOMZ/znZeVjQj4wIYIbmc0Kmz5nmLDyJJk0JdIAz7fEek9g5gzjA2F1eFUDvH+yQnj5wATNDDnDIE8SIFjvCcZcGW860OEHMjgCAwAAIEgsHIHV1tb2g6ca8wRPGpP8fG1+bW1t9vb2nFTdp4KCgj6fRsYKnvQBs+HJ5+VJGOZkti5tOizkAxtoe93MMMYHDx783e9+x3Ug5nDq1KmnT5/OmzePvlaYV2bOnGmGHGkwoAzw1VdfrVq1iusohMc8Xdp0WJjAgEn96U9/unfv3rp167gOxEza2tqOHTuWl5cXExOTkJAweDD8TAv6FhcXl5WVxXUUwNzgNzC++/bbb5OSkriOwnzs7e3Xrl0rk8k6OzsXLVp0+vTpnp4eroMCAPARTGC8Vl9fLxKJHBwcuA7E3GxsbH7zm99cuHChq6srLCzs+PHjMI0BANTABMZrhw4dEuINLmyxtLRMSkrKzs5ua2tbtGjRtWvXuI4IAMAjMIHxV3d39+3bt8kjrwYya2vrNWvWZGdn//jjj5GRkeXl5VxHBADgBfiFnL8uXryo9vT9gWzIkCGbNm2qq6vbtWuXUqn8v//7vxEjRnAdFACAS3AExl8nT57k22N7OOfq6vrHP/5x6dKlS5cuPXPmDNfhAAC4BBMYT/3000+jRo3i7V293Jo+ffqFCxfa2tri4uJqamq4DgcAwA2YwHjq0KFDJDsa0MjCwiIlJeXTTz/98MMP/9//+39wjSIAAxBMYHz06tWrysrKN954g+tA+G7ChAkymUwkEsXFxTETRgMA+jeYwPhIJpNFRkZyHYUwUBQlkUj27duXkpLy/fffcx0OAMB8YALjo6ysLJLWGeho/PjxZ8+evXPnzvr161+9esV1OAAAc4AJjHfu3bvn6ek5dOhQrgMRmMGDB3/yySfz5s2Ljo6G04kADAQwgfHOV199lZKSwnUUQhUSEnLgwIGkpKQ7d+5wHQsAwLRgAuOX9vb2+vp6T09PrgMRMHd397Nnz37++effffcd17EAAEwIJjB+OXXqVFxcHNdRCJ5IJDpx4kR+fv6nn37KdSwAAFOBCYwXrl27FhISUlBQcP78+bCwMK7D6Q8GDRq0b98+e3v7zZs3Q9K7/qqzs/PgwYMHDhyor68/cODAgQMH7t27x3VQwHwgoSUvHD9+fMmSJY6OjnZ2du+///6HH344fPhwroPqJzIzMwsKCv7whz9YWMDXtX5o/PjxP//8M3ktFosLCgq8vb25DQmYDQxpXnj27BlCqLGx8dGjR/v27fvoo4+4jqj/SExMfOutt5YvX97d3c11LIB9cXFxFEWR12PGjIHZa0CBCYwXGhsbyQsLC4upU6d+9dVX3MbTz8TFxUVERKxYsQLON/Q/q1evHjVqFEKIoqiIiAiuwwFmBRMYLzQ1NZEXr7322p/+9KfBgyHNDcvCwsKCg4PXrVvHdSCAZePGjRs5ciRCyMXFZcWKFVyHA8wKJjBeaGlpQQhNnDgxLy9PJBJxHU7/FB8f7+npuX//fq4DASyLj48fNGjQqFGjxowZw3UswKxgAuOF1tZWZ2fnixcvkpMhwERWr1797NmzY8eOcR0IYNPy5cutra0TEhK4DgSY27+vQjxw4MCtW7e4DkbAGhsbHR0dDd48Pz9/0qRJ5EwIh2H0V1KplH6NMZZIJMuWLXvrrbdMVF1sbKyJSh6AdOzSf/vb32bMmGFlZWWiMDo6OhBCQ4YMMVH5ArV+/foZM2ZwGMC/f2u5deuW6iAH+oqNjTWmAWtqasaOHct5GP2S2nRCUdSXX34ZFRU1ceJEV1dXE1UKe4EtOnbpR48ejR8/3nRhyGQyhFBMTIzpqhAcmUxWU1PD7QQGpxB5gZXZC+jIxsbm4MGDv/3tb5VKJdexAHaYdPYCvNUfJrDg4GDdb/7w9vYOCQnRvqSfaWho+Oyzz7iOwuTKy8szMzN1XNnd3T0hIWHAXtABQ8bUBDfo9Bo+/MHmBNbe3s48+69xIbvy8vJsbGx0XPnmzZu9LTFRqGZoAe3WrVu3bNky8oKiqLS0NLLc19eXoqgdO3awVYvpCscY7927d/jw4RMnTrx+/TpC6MWLF0uWLBk6dOjUqVNLSkoQQpMnT66qqiosLNSxzNjY2LKysvLyclYiFBaeDxkdcT6ytBDcoNN3+PAFxhhjHBMTg9nT0dExffp0Fgvsk5+fn45rNjQ0zJ8/X/sSA7DbgKr0akxmGE+ePJk3bx79NikpycrKKjc3l7zdtGkTK0GauvDq6urly5e3t7dLpdJ3330XY3z69OkDBw50dHTs2bMnMjKSrJafn0/uVlalZdfI5fLQ0FClUslWnH3WqMb8I4XG+ZDREU9GllQqlUqlOq4s0EGncfhooVebmEivR2DkJENMTIxYLN6+fTtCSKlUJicni8Vif3//0tJShNDDhw99fHwsLCzIxd/R0dHkRWhoaGFhIUVROTk59EK1zcnylStX2tvbZ2RkMANQKpUSicTe3j4wMLC2tpZe38HB4fvvvw8KCnJ1dS0rK6PXT0hIUA1VdVuE0KtXryIjI+3s7A4ePEjWZy6hQ2XGRlYWiUSpqamqX3l0oaVYZiMHBQWRH0X9/f1DQ0PVGlP3SmlVVVVOTk70WxcXl127di1evLiurk61qbXvGmZ7amS6wsePH3/kyBFLSyzYc8cAACAASURBVEuFQkHOfb333ntr1661sbEJDAyk7/5xcXF58OCB7o3j5OS0aNGiEydO6L4Ju+ide+bMGYqiKIp69OhReHg4RVEtLS0ax6CWtuL5kFH7d2E8bkeWFgIddPoOH14g85jGrzkODg4lJSW1tbVubm5VVVWnTp0KDQ1ta2uTyWRBQUEY4/T09JSUlObmZnoT8rVO7asNWcjc3M3N7e7duxUVFTNnzmTWfvr06YiIiKampuzs7OTkZLJ+UVHRjRs3Jk2aVFdX98UXX/z+978nKzs6Ov744490qMxtMzIywsLCFArF0aNHyZdH5hKs8rVULTZ65YyMDI3fPbV/T+ytWGYj001XU1OzcOFCtcZUKpXTpk3r7OzsrSJmGDdu3Hj//ffpt+QLWkxMTFBQUFdXF3nb565htqdGJi0cYzxx4sQJEyZUVlbSS7q6usitXeRtdXX1O++802ebqFIqlQsXLmxtbdWyjr4MOwK7fPnyqlWrMMaFhYXnzp0jC9W6h/a24vmQYf67ML4xzTay9DraEOig0zh8tOD1ERhCyNXVdcqUKaNHjw4ICKiqqrp3715ISIidnV14eHhFRQVCKCEh4dmzZ+PGjfv4449VN6SframKublYLJ46deprr73W3t7OXL+iouLcuXMODg7R0dG3b98m6/v5+Xl7e48bN87FxcXHx6etrY2s7OLi8sYbb9ChMrd9+PDh3LlzRSLRggULyCbMJarUYqNXnj9/ft9fCnrH/MhqjUyvif/z1D7VxrSwsLhz545eN7t4eHjI5XK1hUePHm1sbExNTSVv+9w1zPbUwnSFV1ZWZmVlka/PCCGM8ebNm9evX0/fJySXyz08PHRvHISQhYXFxo0bP//8c722Yovqzl2wYMGtW7daW1vPnz+/aNEislCte2hvK54Pmd7+XbDC/CNLC4EOOgOGD+e0TWD19fXFxcV1dXV37tzx8PDw8fG5evWqQqHIycnx8fFBCDk5OZ09e7a4uDg7O/vx48f0hlZWVgqForCwUPXnRObmGuc51fWTk5Pb29sxxkVFRarrMzesq6srLS1VDVVtW09Pz2vXrj1//jw3N5dswlyiSq0KeuWrV69qiblPzMjVGtna2vrp06etra3kUgXUS2PqztnZ2dHRkX7WIiESic6ePXvo0CGFQoF02DXM9tTCFIXn5OTs27evq6vL0tJSLpeT58rv3bs3OTnZ3d1969atZLUrV64sXbpUj9ZBCCE0e/bs4uLi5uZmfTc0nurOpSgqKSlp586dTk5OgwYNIiswx6CWtuL5kOnt3wUrzD+ytBDooDNs+HCMHIhpPE738/OLj4+3t7dPS0vDGHd3d0skEjs7Oz8/v5KSEozxtm3bEEI2NjZJSUk9PT1RUVEIoaioKIxxfHy8o6NjcXExvVBt8yVLliCEJBIJyd+4YcMGtdrJ+iKRaNSoUUeOHKHXnz59OkIoPT3d1tYWIXTlypU5c+Z4eXlFR0fb2dmphkpvizHu7OyMiIiwtbUl3/62bdvGXEKHyoyNXjk1NZWcf1Cj5USHlmKZjYwxXrNmja2t7ZYtWxBCu3fvVm1MpVIZEBCg1ylEjLFcLt+/fz/GeO3atQihWbNmkeUymWzlypXMPcuMk9meSqXS19dXtRaTFt7e3p6SkiIWi8eMGfPNN99gjC9evEj3YS8vL4xxWVnZ8ePH9do1tJs3b9Ltbzy9rjugdy7GuLm5eeTIkY2NjfRfNY5B1bZSxfMho/bvwvjGNOfI0vd0meAGXW/DRws+nELsYwIzbzB8193d/fXXX69fv575J4OvlWK3kU13yZaaEydO0L/T8LxwHdskLCzs+fPn5qyRqaOjQ20eFfoY1DJkdMSTkcWHf9YmHXQG4EObaLsKsbi4ODk52YijO/1QKvS6zM8MMMapqakjRow4ceLExo0b2SrW/I3MlsTExPDwcCEW3pslS5ZweDkiQig0NNTd3T0+Pp5e0mf3GIBDRkfCHVlacDIueK7XvFN5eXnmjAOp/LjKQxRF7dq1a9euXewWa/5GBr359a9/HRYWtmLFCu0/zZrOpUuX1Jb02T0G4JDREYysAaI/PEoKAOMNGjQoKCjoxo0bXAcCANDVv4/AOjo6yOOWgWHq6ur40IA8CYNXGhsbdVwzKSlp+/btb7/9tvE1wl5gC0+6dH5+Ptch8E5+fv7MmTO5jQGOwAD4N1dX18bGRo13JQIAeOjfR2BDhgyBVDfGkMlkfGhAnoTBK3p9fw8LC7t48WJcXJwxNTo6OsJeYAuvujR/IgGE4I/AdE8MMWCzQggus4NhWMkHERoaeuXKFVbi6Qcg64p2MLI418cElpaWRi7SHTx4cEBAwMOHD7Wvb3xGFbpGos90n7onhuBtVghTE1xmByZsgnQqGg0fPry1tdUUiS4fPHgwf/58sVjs7e397bffalyH7vzDhg2bNWvWDz/8oGPhOnZg0w0uNCDHF4ws7pHbwbTf7p6fn//q1avU1NTExEQd7y8zJk8EqZG8Zj6hg0nHOxZNmhXCgNst9W0iXdaHdCp6pVPRaNeuXXT3MwyzxufPn0+aNOnkyZMKhaK0tPT111+/cOGCxm1J529ubs7MzHRwcLh//74xkfRWPnnN4uDCPEtUxPrgYt60CyOL1zcyM5H7Y9Qe1G9MRhWkKQ+CGpIz15jEEFwlUlH7sNqzOZgu+4NAMzuoMVE6FY1+9atfsX4W8fLly6+//npCQoJIJPL19d2xY8eXX36ppfMPGzZs8eLFq1atOnLkCPplE1VVVTETr6gNsWHDhs2bN08ul2tvW+MHF+IiURHz3wgngwtGFi+QeazPB44NGjTojTfeuH//vtqD+o3MqII15UEgNSKEnJ2d6RIMTgxh6kQqvTWg2ofVns0Bs5T9AdKp6JtORSP6i6dhmDXu2bNH9XCntLTUx8cH99L56SOkkydPxsbGYkYTaUy8ojrEWlpavvvuu927dzPblt3BhblIVMTsUWYYXMyjDRhZgjkCy8/P7+7u/vHHH728vNQe1G9kRhXUS1IVMoafPHlCLzE4MQRXiVQ0fljUSzYHZLLsDwLN7KCRKdKpaDRixAjVr7rGc3Nze/ToEf22urp6woQJqK+MQuXl5W5ubojRRAsWLCgoKGhtbb1w4cKvf/1r1U1Ia4vF4oiIiM2bN2tsWxYHF+IiUVFvIwuZd3DByOIDva9CVHtQv5EZVVBfSVU2b96stpq+iSG4SqSi9mH7zOZgouwPAs3soMak6VSYZs+erfsFFLpYuHBhUVFRVlbW8+fPy8vLP/nkk9WrV6PeO39LS8upU6e+/vpriUSCGE1EUdTSpUt37tzp7OxsYfGLIUxa+8WLF/RbLW1r/OBCXCQqYvYoTgYXjCxeIAdivZ1mIRkQEEI3btwgS9Qe1G9MRhWMMfM5/3SNBMmUYUxiCFMnUumtAZkfVks2B8xS9gdIp6LLrulTZWWlMb+Ta6zx3r17c+bMEYlEHh4ex44dw1o7v1gsfvvtt2/evEm2ZTZRW1ubi4tLU1MTWUFtiIlEojFjxuTm5qptyPrgwlwkKmKOLGz6waXxdNkAH1l8OIXY929gAOuQFcL4BmQl+wOkU2EyoE16enqio6PNWeMAZ4pERaqMH1xm+2ctoJHFhwms16fRAwJjvGXLlq+++mry5MmmeyYbnf3h8OHDJqqCXYmJiQItXBcURfX09PT09KidoAOsM8P4Etbg6t8ji3UwgfXBPFkhIPsD33h6elZVVXl6enIdSD9nhvEFg6sfgy+YAGgwbdq0O3fucB0FAEAbmMAA0GDatGn/+Mc/uI4CAKDNv08hBgYG9suHlZlNY2MjHxqwtzC6urr+/ve/u7i4jB071tLS0vyBCY6bm1tNTY3Bm/OhM5hfa2vro0ePLC0t6ZtkjMeTkdXR0YH0zGwwEKxfv57bACjM46zkgEVKpfL69evHjx9XKpXLli2bM2eO9jvwQExMDPzD0kVLS4tUKs3Ly3N1dV22bJmfnx/XEYGBAiawAae+vl4qlebm5k6ZMmXlypXjx4/nOiKeio6OlslkMM33pqen5y9/+UtWVlZbW1t0dHRERMTgwXBRGDArmMAGrrt37x4+fPjJkycRERExMTFDhgzhOiJ+WbNmzdatW8lTaIGq+/fvnzlz5u9///usWbOWL18+cuRIriMCAxRMYANdR0fHpUuXpFKpo6PjihUr3njjDa4j4ov09PTp06cHBgZyHQhftLa2ZmVlXbp0ycXFZdWqVf7+/lxHBAY6mMDAvz148OD06dOFhYWzZ89OTk6mn+M5YF24cKGlpSUpKYnrQDhGnypUKBRRUVHh4eFwHRDgCZjAwC+Qaz0yMjJ6enoG+LUed+/ezc3NVUuzMKCQ7zS3b99+++23ly1bppr+CgA+gAkMaPbkyZOsrCxyrceKFStI+o8B5V//+tcf/vAHkvVxQGlra8vJybl06ZKDg0NKSsrUqVO5jggAzWACA30g13rI5fLw8PDo6OihQ4dyHZGZdHR0rFq16ttvv+U6EDPp6em5devWqVOn6urqFi9eHBYWpkvCOQA4BJe9gj5MmzZt2rRpL1++vHjx4pIlSxwdHQfIt/IhQ4ZozDPZ//zrX/86ffr0jRs33nrrrW3btjk7O3MdEQA6gSMwoJ/KyspTp06RS6glEsmIESO4jsiEYmNjpVIp11GYiuoFqImJiUFBQVxHBIB+YAIDhiBXpmVkZGCM4+LifvWrXw0aNIjroNjXXycwuAUQ9A9wChEYwsLCIjg4ODg4uLm5WSaThYWF+fr6pqSkuLu7cx0a6FVtbe3Jkydv3LgREBDw8ccfjxs3juuIADAKHIEBdty9ezczM/Onn35auHBhYmJi/7jWIy4uLisri+sojEV+v8zKyhKJRImJicHBwVxHBAA74AgMsEP1Wo+kpKQRI0b0g59VhP71TvUK0uPHj/ePbxUA0OAIDJhETU3NqVOn/va3v7399tvCfVxeYmLisWPHBPfgicePH2dmZpJThUuXLoXnNYP+CiYwYEL0U4haW1tjYmIE98Dy5OTk9PR0Ozs7rgPRCTn8PX/+vJWVVUJCwkB+igoYIIT03wQIjtq1HuHh4b6+vr/5zW8mTpzIdWh9aG5utrKysrGxefnyJf8nMNUfIA8dOmRra8t1RACYAxyBAbMqLy8/ceLEP/7xj6ioqMWLF/P2X62bm1tPT09PT4+FhcWLFy927dq1cuVKroNSV1dXJ5PJrl27BpeAgoEJJjDAgc7OzgsXLpw5c2bkyJEar/Xo7u7m9mTj6tWrv/zyS/J67NixJSUlw4YNM38YZAZVW9jZ2Zmbm5udnd3V1bV8+XI4VQgGLJjAAJfInUnkWg/V553Pnz8/Li5u+fLlXAVWWlo6Z86choYGhNDs2bOvX79u/hiePn06b968y5cvjx49miy5e/fu8ePHHzx4EBkZmZCQIBKJzB8VAPwBExjgnlpy+sDAwOnTp3d0dERFRR06dIirwwsvL6/KykpbW9sTJ05ERESYufbS0tLw8PDq6ur/+Z//WbdunVQqzcvLmzx5siB+QQTAPGACAzzS2Nh48uTJCxcuXL9+vaenx9bWNjAw8Pz585w864icRZwwYcKDBw/MfCV9Tk7OmjVrHj9+jBAaPXr0/PnzExMTZ8+eDacKAVAFExjgHXLoQ15bWlr6+vpeuXLF/I9ILy0tDQoKWrBgwZkzZ8xZ7//+7//+8Y9/JGcvEULDhw+/dOlSYGCgOWMAQBDgMnokk8m4DgH814MHDx4/fjxs2LDu7m6EkFKpLCsrmzRp0vbt28eOHWvmYAYPHvzGG2+YrYd0d3d//vnnJSUlFEXZ2NiQy1hevXq1cePGDz/80DwxgD6NHTt2xowZXEcBEIIjMIRQYGCg+f87pKen8+FfUn5+PkJo5syZXAfyX69evWpubkYItbe3Y4w7Ozu7u7u7uroGDRrk5+dn5mB++OGHN99802zV1dfXP3r0iFyaYWFhQU6cWlpaDh061NHR0WxhAO1kMlm/zFEgRHAEhsaMGRMTE2PmSmUymfkr7Q1/IuEbaBnABOds+EP9FhOghbe3d0hIiPYlQldQUEBRlL+/P3nb0NDw2WefcRuSqZWXl2dmZmpZARoBDbxGyMnJoSgKntzPczCB6eHmzZt9LiFevHixZMmSoUOHTp06taSkRK9a2tvbY2NjDQyRDRKJpKioiLxet27dsmXL1q1bR1FUWloaWejr60tR1I4dO1ipzqSFY4z37t07fPjwiRMnknu5mLtm8uTJVVVVhYWFWiKERhhojRAeHl5fX89K1cCE8IAXExOj45oNDQ3z58/XvoQ4ffr0gQMHOjo69uzZExkZaUyl+uro6Jg+fbqOK0ulUqlUqrokPz9fIpGQ10+ePJk3bx55nZSUZGVllZubS95u2rSJpXhNW3h1dfXy5cvb29ulUum7776Le9k1+fn5K1as0FgCNAIeqI1QX18/Z84cZlGmG7xAX3AEptnOnTvt7OxiYmK6urpevXoVGRlpZ2d38OBB8lfmEjXvvffe2rVrbWxsAgMDx4wZo1fV0dHRo0aNol+sXLnS3t4+IyMDIRQcHOzt7R0TEyMWi7dv344QCgoKIhdE+fv7h4aGIoRCQ0MLCwspisrJyTGiARBCqKqqin40houLy65duxYvXlxXV0evoFQqk5OTxWKxv79/aWmpxpiVSqVEIrG3tw8MDKytrdVYkekKHz9+/JEjRywtLRUKhbe3N+pl17i4uDx48AAaARpBSyMAHoIJTLMtW7YoFIpZs2ZduXLlzJkzPT099fX1dF4l5hKNuru7z5w588knn+hVdXZ2NpnAsrOzbWxsUlJSCgsLDx06hBDKy8traGj45JNPKioqjh079s9//jMvL49sdenSJfoFOQILDw/v6ekJCAh49eqVfh/+PzDGqnfObtiwYfbs2XFxceQCd4SQVCqVy+W1tbVbt2797W9/qzFmmUzW3Nz8888/b9iwgUy6Gpm0cG9v7x07dqxbt45eorZr1D4pNAI0AhAEmMA0qKiomDJlyuDBgz/44IOGhoaHDx/OnTtXJBItWLCArMBcwoQx3rx58/r16425AFosFk+dOvW1115rb28nS1xdXadMmTJ69OiAgICqqirV6sgL1eFnYWFx584dKysrw2r38PCQy+WqS44ePdrY2Jiamkre3rt3LyQkxM7OLjw8vKKiQmPMFRUV586dc3BwiI6Ovn37tpbqTFd4ZWVlVlYWOUJFmnaNXC738PCARoBG0NIIgIdgAtNAKpXOnTu3paXlo48+whh7enpeu3bt+fPnubm5ZAXmEqa9e/cmJye7u7tv3brV4EiYXwbr6+uLi4vr6uru3Lnj4eFhbW399OnT1tZW+mmzVlZWCoWisLDQ+F+/nZ2dHR0dm5qa6CUikejs2bOHDh1SKBQIIR8fn6tXryoUipycHB8fH40x+/j4JCcnk5u66GtDNDJF4Tk5Ofv27evq6rK0tJTL5eRLPXPXXLlyZenSpdAI0AhaGgHwkZl/c+Mh5k+yxcXF7u7uY8eOTUhIQAj985//jIiIsLW1/fjjjxFC27Zt6+zsVFuiVsLFixfpFvby8tKlUlpUVBRCKCoqasmSJQghiUQSFhaGENqwYQPG2M/PLz4+3t7ePi0tjay/Zs0aW1vbLVu2IIR2796NMY6Pj3d0dCwuLlYqlQEBAZ2dnb3VpfEiDoSQn58feSuXy/fv37927VqE0KxZs8hCmUy2cuVKjHF3d7dEIrGzs/Pz8yspKcEYM2Mm64hEolGjRh05ckSpVPr6+qrWaNLC29vbU1JSxGLxmDFjvvnmG427pqys7Pjx42R9ZgnQCAOzEc6dO4cQgos4eA6exIFiY2PNf1+9wZX6+/tr//aqF3JLpjlv183MzBSJROHh4fws3KThmacWaARTF87JfwygEUxg7HRH1RMa27Zto+9lYbfS4ODgP//5zxKJ5PDhw/puq5H5JzAAhA4mMP6AR0mxwzzfA+hrDgEAAMBFHAAAAAQJJjAAAACCBL+BIX9/f09PTzNXWlRURD8wl0PkmQX6PisEgIGssbHxz3/+M9dRAITgNzCEkKenp4CuQmQXXMQBgL64fdY2UAWnEI0yEBKsgIGQSQTpkFEFAL6BCUxXWVlZ06dPV1uoe4IVIFwkkwgycb4PXiUTAUAQYALT1cWLFx89ekQehs2Vly9fkmfPm2h9wCSXy589e+bg4IAQOnDgQFJS0u7du69du4YQKisr27RpkzGPClNl0sJ//vnnBw8e1NXVffrpp2RSvHjx4tSpU5uamt577z366bchISHHjh1jpUYAzAAmMJ08evTIzs4uLCyM3EFsQIKVPjFzRmhPlWLm1CoDlmomEaRbvg/DMomYtHBIJgL6JZjAdHLkyJHw8PDIyMjMzMzOzk6DE6xowcwZoT1ViplTqwxYmJFfo898HwYn+zB14ZBMBPQzMIH1raenJycn5913350zZ05PT893331nWIIV7TTmjCCwplQpyLypVQYsZiYRpEO+D4MziZi0cEgmAvoZmMD6dvXq1bKyMisrKysrq5aWlsOHDxuWYEU7Zs6IPlOlmDO1yoDFzCSCdMj3YXAmERMVDslEQP/ExSPw+UV7cgTyT2TatGnk7bRp0xBCy5Yt0zfBSp+VMnNGYK2pUjAbqVWY6VQAE8kkgnXO99Fnsg+sKWWJSQvXN5kI0ALSqfAHPIlDYOlUVBmfWgVuZOaKcJOJAJ48hQAgeBKHcAUHBxcXFycnJ7OVWgWYU2JiokALB4A/YAITKkitAgAY4OAiDgAAAIIEExgAAABBgos40NixY2fOnGnmSisrK82fw4WpsbERIUTfBgRUtba2isVirqMAfAQXcfAETGAAaBYXF5eVlcV1FACAXsEpRAAAAIIEExgAAABBggkMAACAIMEEBgAAQJBgAgMAACBIMIEBAAAQJJjAAAAACBJMYAAAAAQJJjAAAACCBBMYAAAAQYIJDAAAgCDBBAYAAECQYAIDAAAgSDCBAQAAECSYwAAAAAgSTGAAAAAECRJaAvALf/3rXz/88MNBgwY1NTU5ODhYW1v/5S9/sba25jouAIC6wVwHAAC/+Pv7NzY21tTUIISqq6tnzpwJsxcA/ASnEAH4hWHDho0dO5a8tra2Tk5O5jYeAEBvYAIDQN2qVauGDBmCEHJ2do6NjeU6HACAZjCBAaAuOjra2dkZIeTh4SESibgOBwCgGUxgAKizsbHx8PAYMmTI6tWruY4FANArmMAA0OCDDz6wsLBYuHAh14EAAHoFl9Hzi0wmS09PHzNmDNeBDDiVlZWenp70256envLy8ilTpnAbBkAI5efnk4tCAVADl9HzzocffhgTE8N1FANObGysVCpVXdLZ2Wn+C+iZYQC4jgb0Bk4h9ivBwcHe3t66rOnt7R0SEqJ9iXki4S3+3P7V0NDw2WefcR2FyZWXl2dmZnIdBRASmMD6lby8PBsbG13WvHnzZm9L2tvbjfzOu2jRIt0j4T/jG8RI69atW7ZsGXlBUVRaWhpZ7uvrS1HUjh072KrFdIVjjPfu3Tt8+PCJEydev34dIfTixYslS5YMHTp06tSpJSUlCKHJkydXVVUVFhayUiMYCGACA+qGDh1qzFmssrIyX19fFuPhnJEN8vLlyxkzZhi8uVwuf/bsmYODA0LowIEDSUlJu3fvvnbtGkKorKxs06ZNW7duNbhwVSYt/Oeff37w4EFdXd2nn35KJsWLFy9OnTq1qanpvffe2759O1ktJCTk2LFjrNQIBgKYwPhOqVRKJBJ7e/vAwMDa2lqEUHR09KhRo1auXOng4PD9998HBQW5urqWlZXRmyQkJIjFYvJPQW3zV69eRUZG2tnZHTx4kKzMXELKV63I3t4+IyODXlkkEqWmppJv6w8fPvTx8bGwsCCbIIRkMpnab3g7d+60s7OLiYnp6up6+fIlRVEURT169Cg8PJyiqMbGRuYHdHZ2TkhIsLa2vnTpkmpRzJCUSmVycrJYLPb39y8tLVXbts+20oWWBiFnSmNiYugGDwoKItOVv79/aGgoQig0NLSwsJCiqJycHL3qJaqqqpycnOi3Li4uu3btWrx4cV1dHb2Q2QjMVlJrZI1MV/j48eOPHDliaWmpUCjIueX33ntv7dq1NjY2gYGB9FVLLi4uDx48MKCVwACFAZ9IpVKpVKq65PTp0xEREU1NTdnZ2cnJyWShm5tbUVHRjRs3Jk2aVFdX98UXX/z+978nf3J0dPzxxx9ra2vd3NyqqqrUNs/IyAgLC1MoFEePHp0/fz7GmLkEY+zn50dXdPfu3YqKipkzZ6qunJGRQVZOT09PSUlpbm6mAw4NDVUrhDh48OD58+cxxpcvX161ahXGuLCw8Ny5cxo/4Pjx4+/fv6+xidRCOnXqVGhoaFtbm0wmCwoKYm6rpa1UxcTEaNkvvTUIxtjBwaGkpIRu8I6OjunTp2OMa2pqFi5ciDGml2CMlUrltGnTOjs7e6uIGcaNGzfef/99+u2mTZvIakFBQV1dXeQtsxHU4tTYyEwmLRxjPHHixAkTJlRWVtJLurq6Vq9e/ezZM/K2urr6nXfe6bNNACDgCIzvKioqzp075+DgEB0dffv2bbJQLBb7+fl5e3uPGzfOxcXFx8enra2N/MnFxeWNN94YPXp0QEBAVVWV2uYPHz6cO3euSCRasGABWZ+5RJVYLJ46deprr73W3t6uuvL8+fPJCgkJCc+ePRs3btzHH3+MECovL588ebJa/FOmTBk8ePAHH3zQ0NCAEFqwYMGtW7daW1vPnz+/aNGi3j6gl5eXxgZRC+nevXshISF2dnbh4eEVFRXMbbW0lQHUakcIubq6TpkyhW5wek38nxtUKIqiF1pYWNy5c8fKykr3Gj08PORyudrCo0ePNjY2pqamhSMCeAAAIABJREFUkrcaG0E1To2N3BvTFV5ZWZmVlUUOTBFCGOPNmzevX7/e0dGRLJHL5R4eHro3DhjgYALjOx8fn+Tk5Pb2doxxUVERWUj/T1T950jU1dWVlpbW1dXduXPHw8NDbXNPT89r1649f/48NzeXrM9cokqtfHrlq1evkiVOTk5nz54tLi7Ozs5+/Pgx8/yhVCqdO3duS0vLRx99RP6nUxSVlJS0c+dOJyenQYMGafyAWqiF5OPjc/XqVYVCkZOT4+Pjo2V9ZlsZgFlIfX19cXEx3eDW1tZPnz5tbW0llyoghKysrBQKRWFhoWEXRDg7Ozs6OjY1NakuFIlEZ8+ePXTokEKhQJoagdlKujeyKQrPycnZt29fV1eXpaWlXC7v7u5GCO3duzc5Odnd3Z3+pe3KlStLly7Vo3XAAMfdwR/QgHkKsbu7WyKRiESiUaNGHTlyBGO8ZMkShJBEIpk+fTpCKD093dbWFiF05cqVOXPmeHl5RUdH29nZpaWlMTfv7OyMiIiwtbUlB0zbtm1jLomKikIIRUVF0RWFhYUhhDZs2ECvnJqaSs6Pbdu2DSFkY2OTlJTU09NDnz+cM2cO2ba4uNjd3X3s2LEJCQkIoZqaGoxxc3PzyJEjGxsbtXxALy8vZvswQyKb29nZ+fn5lZSUqG2rpa3UStZynkpLg2CM/fz84uPj7e3tSYNjjNesWWNra7tlyxaE0O7duzHG8fHxjo6OxcXFSqUyICBAr1OIGGO5XL5//36M8dq1axFCs2bNIstlMtnKlSvpNlRrBGYrqTayUqn09fVVrcWkhbe3t6ekpIjF4jFjxnzzzTcY44sXL9L/hcj+KisrO378uI5tAgDGGJ7EwS8ymQwhxPMbmZVK5eHDhysrKw2+Oenly5d79uwhkx9PGHwHsb+/vy4HjqYOQ1+ZmZkikSg8PJz/hcPN3aA3cAoR6AFjnJqaOmLEiBMnTmzcuNGwQkJDQ93d3ePj43VZmVJB36LEH8HBwcXFxULMGZaYmGii2cvUhQNAg0dJAT1QFLVr165du3YZU4jalfHa8fwMQV5eHtchADBwwREYAAAAQYIJDAAAgCDBKUTeSU9PJ5dyAHMqKiriw1PPeRIGr1RWVnIdAuApmMB4B9KpcIInl7rxJAxegRkd9AZOIQIAABAkmMCAufWDVGFmBvnAANAIJjBhS0tLI/dItbS0sFKgSZNCEXSqMAPybHGemosTkA8MAM24fRAIUMN8lFSfoqKi8vPzWYwhKSnJysoqNzeXvCWPJGeX2oPqtVN9mrvpGPC8In0D02V9ZhhPnjyZN28e/dake8d0hVdXVy9fvry9vV0qlb777rsY49OnTx84cKCjo2PPnj2RkZFktfz8/BUrVqhtC4+SAr2BI7B+yMj8W7okhVLbysbGRkvaLdV4VOOk82zRx5FWVlbFxcVqm6jm06I30RiPWp4qI6lVoT3Rl+kSg0E+MAB6xfUMCn6BxSMwg/Nv6ZgUSm2rPtNu0fFglSMw8oI88basrOzEiRPMTdQOXMgmGuNhJuvSHfNrvloV2hN9YZYSg0E+MMgHBnQHR2D9DVv5t/pMCqW2VW9pt5jxMG3evLmlpeXSpUuJiYnMTTSmQektHrVkXcbQWAXqJdEXMlliMMgHBkBvYALrVzZu3MhW/q0+k0Kp6S3tFjMepp6enj/84Q8ffvhhS0vL119/rbaJxnxaGuNhJeNXb1X0mejLRInBIB8YAL3i7NgPaKLvKUS1jCRvvvmmkfm3dEwKpbaVlrRbzHjoVGF0nq2dO3fSH+Grr75ibkLn06I36S0etWRdumOep2JWoSXRF2YpMRjkA9Nl1wBAQD4wfjFRPjAe5t/iG+MfgcFKYjDIB8YETycBvYFHSfV/oaGhP/7441//+leuA+nP6MRghw8f5joWnZCfG4VYOAA0mMD6P73ybwHDQGIwAMwPLuIAAAAgSHAExjsFBQVchzAQ1dbW8iGLDU/C4BUtd16DAQ4u4uCX2tra/Px8rqMACCH01VdfrVq1iusoAEImuKwJ9A8wgQGgWVxcXFZWFtdRAAB6Bb+BAQAAECSYwAAAAAgSTGAAAAAECSYwAAAAggQTGAAAAEGCCQwAAIAgwQQGAABAkGACAwAAIEgwgQEAABAkmMAAAAAIEkxgAAAABAkmMAAAAIIEExgAAABBggkMAACAIMEEBgAAQJAgIzMAv3Dv3r0//elPCKH6+voDBw4MGjQoJSXF2tqa67gAAOogoSUAv3D//v0ZM2a0traSt25ubo8ePeI0IgCAZnAKEYBf8Pb2dnV1Ja8pioqLi+M2HgBAb2ACA0BdVFSUhYUFQmjUqFGrVq3iOhwAgGYwgQGgbtWqVaNGjUIIOTs7jx8/nutwAACawQQGgDpXV9eRI0cOGjQIzh8CwGcwgQGgQVJSko2NzfLly7kOBADQK7gKccApKCj4/PPPuY5CP42NjY6Ojuas8dWrVwUFBW+//Ta3YQiCVCrVvoIQuxwTT/Y+T8Iws/Xr18+YMYO5HO4DG3BqampiYmJiYmK4DkQPsbGxff6XZN2jR4/UfgDjJAyei42N7XMdIXY5Jp7sfZ6EYU4ymaympkbjBAanEAHQDC7fAIDnYAID/+Xt7R0SEsJ1FALT0NDw2WefcR2FyZWXl2dmZnIdhQkFBwd7e3tzHYUhCgoKKIry9/cnb4XVIel+lZOTQ1FUcHCwXpvDBAb+6+bNm5zUm5qaKhaLx44de/HiRX23bW9v1+UslumsW7du2bJl5AVFUWlpaWS5r68vRVE7duxgqxbTFY4x3rt37/DhwydOnHj9+nWE0IsXL5YsWTJ06NCpU6eWlJQghCZPnlxVVVVYWMhKjZzvNaa8vDwbGxvDtuX840gkkqKiIvKadEih9Ea6X4WHh9fX1+u9PQYDjFQqlUqlGv/U0NAwf/58E9Xb0dExffp05vKff/550qRJDQ0N+fn5Pj4+GreNiYkxc1Q6hvHkyZN58+bRb5OSkqysrHJzc8nbTZs2sRKkqQuvrq5evnx5e3u7VCp99913McanT58+cOBAR0fHnj17IiMjyWr5+fkrVqxQ21aXXaOlyxlGr72mOz8/Py1/5W0nzM/Pl0gk5LVqhxRKb6T7VX19/Zw5c5graOk/cAQG0KtXryIjI+3s7A4ePEiWREdHOzs7JyQkWFtbX7p0SalUJicni8Vif3//0tJScrIlJiZGLBZv374dIaS2AkIoKCiI/Ojq7+8fGhqKEAoNDS0sLKQoKicnR7V2W1vbIUOGkNcjR47UN/jo6Ghy0zF5sXLlSnt7+4yMDPSfk0KqceoelY6qqqqcnJzoty4uLrt27Vq8eHFdXR29UK1xmHEqlUqJRGJvbx8YGFhbW9tbXaYrfPz48UeOHLG0tFQoFOQ02nvvvbd27VobG5vAwMAxY8bQATx48MCAVmIy3V6jC3RwcPj++++DgoJcXV3LysrIX3fu3GlnZxcTE9PV1fXw4UMfHx8LCwsSCW3SpEkURf31r3/lw8fRl2qH1KXDMGM2f280ql8ZPG0CgWJ+ncnIyAgLC1MoFEePHqWPwMaPH3///n3y+tSpU6GhoW1tbTKZLCgoCGPs4OBQUlJSW1vr5uZWVVXFXIH+UllTU7Nw4UKs9Wvmp59+amFhMXz48Bs3bmhcQfuXX/qLs5ub2927dysqKmbOnEmWqMWpPSqlUjlt2rTOzs7eKmKGcePGjffff59+S76HxsTEBAUFdXV1kbfMxlGL8/Tp0xEREU1NTdnZ2cnJyb3VbtLCMcYTJ06cMGFCZWUlvaSrq2v16tXPnj0jb6urq995550+24RJ4zdotvYak5ubW1FR0Y0bNyZNmlRXV/fFF1/8/ve/V13h4MGD58+fT09PT0lJaW5uVg2ptrZ279699EfW/ZNy2AlVj8BUO6SOHUYtZvP3RrpfwREYMMTDhw/nzp0rEokWLFhALxSLxV5eXuT1vXv3QkJC7OzswsPDKyoqEEKurq5TpkwZPXp0QEBAVVUVcwUa/s+NhhRFaaw9Pz//2rVrTU1NBQUFy5cv7+zsNPiDiMXiqVOnvvbaa+3t7WSJWpzao7KwsLhz546VlZXuNXp4eMjlcrWFR48ebWxsTE1NJW+ZjaMWZ0VFxblz5xwcHKKjo2/fvq29RtMVXllZmZWVRY4JEEIY482bN69fv56+60gul3t4eOjeODoycq9pLNDPz8/b23vcuHEuLi4+Pj5tbW0IoYqKiilTpgwePPiDDz5oaGhISEh49uzZuHHjPv74Y7JhY2Pjtm3bOjs7jbnRyvydUBWzQ/bZYdRiNn9vNKZfwQQGkKen57Vr154/f56bm6txBR8fn6tXryoUipycHB8fH4RQfX19cXFxXV3dnTt3PDw8mCtYW1s/ffq0tbWVXBSAELKyslIoFIWFhWo/9j558oR+/ezZM2MmMOb/NbU4dY9KR87Ozo6Ojk1NTaoLRSLR2bNnDx06pFAokKbWU4vTx8cnOTm5vb0dY0z/FN8bUxSek5Ozb9++rq4uS0tLuVze3d2NENq7d29ycrK7u/vWrVvJaleuXFm6dKkeraMb1vcaXaBayVKpdO7cuS0tLR999BHG2MnJ6ezZs8XFxdnZ2Y8fP0YIOTo6Hj58+OnTp4cPH+bPx9ELs0P22WHUYjZ/bzSqX/V2hAj6K+bxeGdnZ0REhK2tLfkqum3btiVLliCEvLy8yArd3d0SicTOzs7Pz6+kpARj7OfnFx8fb29vn5aWpnEFjPGaNWtsbW23bNmCENq9ezfGOD4+3tHRsbi4WK32uLg4W1vbkSNHfvbZZxpj1nL2JioqCiEUFRVFYpZIJGFhYQihDRs2MOPUHpVSqQwICNDr7A3GWC6X79+/H2O8du1ahNCsWbPIcplMtnLlSmbjMOMkK4hEolGjRh05cgRjrFQqfX19VWsxaeHt7e0pKSlisXjMmDHffPMNxlj1clDSDcrKyo4fP67XrqExuxyLe02tLrrA6dOnI4TS09NtbW3Jf8ni4mJ3d/exY8cmJCSQdRBCNjY2SUlJPT09JIDVq1eTDbds2aL7J+W2E+bn5yOE6HOYpEPq2GFUW4zEvG7dOnP2RrpfnTt3DiGk7ylEmMAGHFYuCdN+vRbrDL4AjN04TXcdmpoTJ06cO3dOEIWb4ipEM/cuHQ20TkgzaW/UBfwGBtgUHBxcXFycnJxscAmUCvpuEtYZHydXEhMTw8PDhVi48fTda+bpSwYTbiek8bnDwLMQgd7y8vKMLAGb5RHSxscJzE/fvWaevmQw6IQmBUdgAAAABAmOwAYi8quvgNTV1clkMq6j4EsYvNLY2KjLaoLrckw82fs8CcOc8vPzZ86cqfFPcAQGAABAkOAIbCCaOXOmsJIzyWQyPgTMkzB4RcejAcF1OSae7H2ehMETcAQGgFGElb3CYP0+nYpwQToVAP4rLS2NXJQ8bNiwWbNm/fDDD1xHxGuQTsUwdDdraWnhW2mCA+lUwEChy12lUVFR+fn5zc3NmZmZDg4O9FN92aV7FgkDbt7UN+OGLutDOhV206mQbmZw2Gq7zMjS+sTbTgjpVADQYNiwYYsXL161atWRI0fQL3OsnD9/Xi0pQ585VtjNIqFX4aZLaQHpVFhhoiwkdPIUhUJBjs8ePXoUHh5ODtTUWkYthZAuYfOkE6qCdCqgn9P9CIy8PnnyZGxsLHlN51jRmJRBe44VfZNiqGJ+69S3cFZSWkA6FRbTqeBfdjPjk6r0dgRGkqdcvnx51apVGOPCwkLyYCRmy6imEGLibSeEdCoA9Kq8vNzNzY28pnOsaEzKoGOOFaxbUgzt9C3cRCktIJ0KW1hPqqKWPGXBggW3bt1qbW09f/78okWLkKaWUU0hpAuedEJVkE4FgH9raWk5derU119/TZ7brUpjUgbtOVbYzSKhb+EmSmkB6VTYwm4Wko0bN6olT6EoKikpaefOnU5OToMGDUJ6NrtGPOmEqiCdCujn+jyFuG3bNtI3xGLx22+/ffPmTbJcNceKxvwpfeZY0T0phhrmaRN9C2clpQWkU9Fl1zBp7HJ0N2tubjY+CwldGvHmm2+qJU+pqalpbm4eOXJkY2MjKU2tZdRSCOnySXnSCSGdChhAWEmnopHpsmAYn0KCldggnQqTKdKpEKx3p46ODnrmMMBA64Q0SKcC+j8+p43gc2waDeR0KgTruyw0NNTd3T0+Pp6tAvUluE5I43OHgUdJAXbwOW0En2MDGrG+y3S8Mt50oBOaAhyBAQAAECSYwAAAAAgShfmdzxSwrqCg4PPPP+c6Cv00NjbSdyOZzU8//eTu7s55GER7e/s//vEPBwcHV1dXsVjMSQy9kUql2lcQYpdjMnLvt7S0vHr1SvW5LZyEIVDr168nTy1RAxMYAJrFxcVlZWVxHcUvlJeXy2SysrIyR0fH0NDQkJAQS0tLroMCfcMYR0ZGfvPNNyNGjOA6ln4FLuIAQDAmT548efJkhFB1dfWFCxcSExMHDx48f/788PBwe3t7rqMDvcrMzJw3bx7MXqyDIzAANOPhERhTY2Pj5cuX8/Lynj9/PmvWrJiYGFdXV66DAr+gUCji4+PPnz9PngACWAQTGACaCWICo3V0dPzwww+XL1+uqqqaNm3aokWLpk2bxnVQACGE/ud//mfRokVvv/3/2bv3uCau9GHgJyiXQiASWrkKKFIxRWGRemHTn1Wp0gUVCqGKFlRSZKtWvKyg1Yr9oChYYddbrbdaXa0EBYsVqlR3i13gVVsCCIK0qGAwCIhGgghh3j+mO5vOhBAgyeTyfP9KhpnnPHMm5jiTmfP8H92JGCC4hAiAIXjllVcCAwMDAwN7e3t/+eWXvLy8rVu3enh4zJ079+233x4+HP6l06O6uvrJkycwemkIfKwBMCgmJiaTJk3CT79+++23vLy8ffv2jRgxIjg4+N1332UymXQnaFy2bt2amZlJdxYGCy4hAqCYfl1CVK6lpeXSpUs//PDDy5cvZ8yYMW/ePAcHB7qTMnznzp27f//+2rVr6U7EYMEABoBihjSAEaRS6Q8//HDp0qUHDx68+eabCxYswEswA7Xr7OwMDw+/cOECPOqgOXAJEQAjYmlpOXfu3Llz58pksuLi4q+++qq8vNzT05PH4/35z38eSolRQJKamrp69WoYvTQKBjAAjNGwYcO4XC6Xy0UI3b59++LFi3v27LGxsQkPD589e7a5uTndCeq33377rb6+/rPPPqM7EQMHAxgAxo54Prq5ubmgoCAmJqanp2f27NmhoaFDn/rIOG3cuHHXrl10Z2H4YAADAPxu5MiR0dHR0dHRHR0dV69eTUpKam5ufuutt8LCwl5//XW6s9Mbly9fnjhxoru7O92JGD64iQMAxQzyJo6Bwn8qEwgENTU1vr6+ISEh8FOZci9fvgwNDT1//ryFhQXduRg+OAMDAPSJ+lPZwYMHra2tg4OD58yZY2ZmRneCOmf37t0fffQRjF7aAQMYAEAlxE9l9+/f//777/l8vkwmmzNnzvz583WtwgtdGhsbb926tWnTJroTMRZwCREAxeASYr+ePHlSWFiYn58vFotnz54dHh7u4uJCd1J0io6O3rx5M/xeqDVwBgYAGCRbW1sej8fj8V68eHH9+vX09PTq6uqAgACjmkq4paXl0aNH3t7eRUVFrq6uMHppE5yBAaAYnIENDlF108XFJSQkZPr06Yb9MO/58+eXLl367rvvtrW15eTkWFlZ0Z2REYEzMACAOpGqbh4+fHjYsGFBQUFhYWHW1tZ0Z6d+BQUFz549EwgEI0eOzMzM3Lhxo4mJCd1JGQs4AwNAMTgDU5d+q24KBAIvL68JEybQleFQvPnmmzdv3sRfW1tb79+//4MPPqA3JeMBAxgAisEApnZ41c1Lly7dvXt30qRJkZGRHA4HITRp0qSHDx+uX79+/fr1dOc4YGPHjv31118RQvb29lu2bFmxYgXdGRkRuIQIANASouqmTCb7z3/+c/z48Tt37owdO7a5uVksFn/22Wfffffd+fPnbW1t6c5UVffv35dKpQghFxeXEydOzJw5k+6MjAtcqwUAaNuwYcPeeuut9PT0vLy811577fHjxwghiUTy73//28fHp6ioiO4EVVVaWtra2url5VVUVASjl/bBGRgAOqekpKShoYHuLLTk5MmTXV1d+GsMwxoaGgIDA+fPnx8REaH7c1YdO3Zs1KhRGzduvHHjxo0bN+hOx1iMGjVq6tSpCAYwAHTQnj17eDwe3Vloiaurq729vbm5uYWFhZWVlZmZGYvFGj58+PPnzzVx12JGRsaaNWvUFc3X13fp0qWDuO2wuLgYITRt2jR1ZWJU9uzZk5WVhWAAA0A3Gc8ApuU9FQgEamxxiKGM5yirl0AgwF/Ab2AAGILAwEAvLy/89YEDB6ysrAy1nIf8nhqDx48ff/7553RnoVm3b98+derUIDaEAQwAQ1BYWEjMgH748OHGxsZ79+5poV2pVBoZGamFhgjye0qFYVhaWpqtra2Hh8e1a9cGFFn7+6KKhISEpUuX4i8YDEZycjK+3Nvbm8FgpKSkqKsVDQWnHpGOjo6YmBhLS0s/P7/y8nKE0BtvvFFXV1daWjrQ4DCAAWBoMAzr9070Fy9e4D+Dk16rQn59S0tL/NcIHXH//v2amhqRSLRz586Bfv8OcV8G2o2qEIvFLS0tbDYbIZSZmRkdHZ2amnrlyhWEUGVlZWJi4ubNm9XSkOaCU49IXl6en59fW1vbggULtm3bhq8WFBR0/PjxgQaHAQwAPXD37l0Oh2NiYuLg4IAQkslksbGxNjY2AQEBjY2N8mtGREQIhUIGg1FSUkIKsn37dmtrax6P193dHRISUlpaymAwcnNz5V9TI0dERDg4OMTHx9vY2Jw4cQIhJL8+/lc8JT6fz2KxfH19KyoqqFuRECuw2exLly5xuVwnJ6fKykpqqqR9J4wdO5bBYPzrX/+SX+ju7n706FFTU1OJRDLQK43EvlCTx69b8ng8FouFf+dyuVx8uMLrfJK6ZUDtKlFXVzdy5EjiraOj444dOxYtWiQSiYiF/fa8kk+LPGpwUmSFPdNvcOoRWbBgwerVqy0sLAICAojyBY6OjjU1NQPuIAwAoEhkZCRdTfN4PNKSjIyMuLi4J0+e4G/PnDkTFhbW1taWnZ3N5/PxhT4+PqQXCu3du/fChQudnZ1TpkzBl8i/VhjZzc3t1q1bVVVV06ZNI61PNHf69OmQkBB8VkAul0vdisrNza2srKyoqGjs2LEikWj//v1btmyhpkrad7zFxsbGtLS0lpYWhZE9PDxGjx5dW1tL/RO1b+URXUdNns1ml5eXNzY2urm51dXVEZ3Q0NAQHBxM6haZTDZp0qSurq6+GsrKysrKylKSCa6oqOiDDz4g3iYmJuK7wOVyu7u78bf99rzCY0pFDU6NPOjg1CPS3d29YsUK4gjW19fPmDGj3w7BEQcRzsAA0ANRUVEtLS2urq4bN25ECFVVVeXk5LDZ7IiICBUfP6qqqpowYcLw4cNXrVr1+PFj+Ues5F8rjMxisfz8/MaPH4/POqHw8azq6uqgoCBra+vQ0NCqqirqVlQsFsvHx8fLy8vV1dXR0ZHD4Tx79oyaKmnfEUKtra1bt27t6uqys7NTGLm2tvbs2bP4idHgUJN3cnKaMGGCs7Ozv79/XV0dsSb239n45LvFxMTk5s2bQ69Y7enpKRaLSQuPHTvW2tpKlM3st+cH9GmRD06NPOjgpCOCYVhSUtLatWuJIygWiz09PQfYPXAJEQB9MHLkyHPnzgmFwuzs7IcPH3I4HD6fL5VKMQwrKytTJUJWVtY777zT3t6+YcMGDMPMzMwkEklpaWlKSor8a4WRSSOW/PrEQg6HU1BQIJFIcnNz8RkO+30MmViBtCYpVdK+I4Ts7OyOHDnS3Nx85MgRUszc3Nz09PTu7m5TU1OxWNzT06NK5yjJjdDU1CQUCkUi0c2bNz09Pc3NzZubm58+fUrcKqKwW4bI3t7ezs6ura1NfiGTyTx37tyhQ4ckEglSoecH9GmRD06NPIjgCo9IWloan88fM2YM8TNbfn7+kiVLBtI3CCG4hAhAH3TqEuLWrVsRQhYWFtHR0b29vT09PbGxsUwm08HB4ejRoxiGzZo1CyEUGxsbHh6OEGKxWKQIQqFwzJgxo0aNioqKQgg1NDQsXLjQzs5OKBRiGEa8pkaOiYnBI8+fPx8htG7dOvn18ebCw8PxDa2trX18fMrLyxVuJY9YYcqUKQihjIwMvJJWfn4+KdXY2Fj5fccDrlixAt/wk08+kQ8rlUrj4uJYLJaLi8vhw4dV6VsCsS8Kk/fx8Vm4cKGNjU1ycjK+/sqVK62srD755BOEUGpqqny3yGQyf3//oV9CxDBMLBbv3r0bw7DVq1cjhKZPn44vFwgE8fHxGIb12/PUYyqTyby9veVbURicFBlT9GEgBadGph6RvLw8YgAaN24chmGVlZVff/21Kr2BIw4izEYPgGI0zkYfGRmpU7f2GZJB962vr6+KJ7uqwB/FpetB5lOnTjGZzNDQUD2KLI84iHAJEQDDxJBDPN9jkPloYU8DAwOFQiGfz9dEcO1bvHixhsYYzUVWCKaSAsAw6drFFc3lo4U9LSws1HQTYBDgDAwAAIBeggEMAACAXoJLiADonNbWVh2clM8wlJWV6ULf4pNWELOqgwFpbW3FX8AABoDOsbOzg7sQNURH7vCk9y5EfUf8FwQuIQJg4Ayy0opBFlUxhsopqlOlxgoMYADot/Xr17PZbCcnp3379vX29lJXUFJp5ezZs/jjwGqkelGS9evXMxiM5cuXE0u+//57BoPB5XL73VZ5URU9pe+VU9QbXKUaK6o//AyAUdGpmTj6IhQK33zzzebmZolEEhcXV1FRoXC1vub5XbRo0cjbBP/6AAAgAElEQVSRI/FJFvqa3lcVA12fsGTJEiaT2dDQgL+dN2+es7Ozitsqn7O4L6r3rTy1dwh1Jo5Hjx7Nnj2beBsdHW1mZnb58mX8LT7TrrroS/Di4uLly5dTl8NkvgAYAhsbm66urqdPnzKZzEOHDnl7e6O+K1yQKq3cu3fP2tp6/vz5+IyCtBRYsbOzW7ZsWVpaGkLo2rVrM2bMkN+7QRdVGRBq0RDlpVI0VFqF3sopuhm8/xorgx4bATBsenEGhmFYdna2v78/h8PZvXt3T08PpqjChcIzsM2bNxcUFOTn57PZ7BcvXtBSYGXdunUtLS2Ojo6PHj1avnx5Z2cn9Qxs0EVVFKL2LTVP5aVSMHWUVqGegdFbOUU3g/dVYwXOwAAwEOHh4Tdu3CgoKPjxxx/xH71VqXDR29ubm5s7c+bMWbNm9fb2nj9/nq4CK3Z2dgkJCYsWLZozZ87w4f+7L3roRVVUpLBoCA5TVCoFaaa0Cr2VU3QzeL81VmAAA0CPVVZWxsfHSyQSFotla2v7/PlzpFr5jIKCgsrKSjMzMzMzs/b29iNHjtBYYOXjjz9+++23w8LC5BcOpajKgFDz7LdUiiZKq9BbOUU3g/dfY6Wv00AAjJxeXEKUyWR79uxxd3dnMpnz5s179uwZ9t/6GkSFC2qlFfw7ZdKkSXiQSZMmIYSWL1+u5QIreI0Y/Jobbty4cQihOXPmYJT6LwMqqjKgvqUWDcGUlkrB1FFaRWE5FRorp+hgcCU1VqCcCgD9gHIqBkktfTv00ipae5BZo/VNtFM8hYo4iDATBwAADABRWmWIly61Y/HixXoaXBUwgAEAwABAaRXdATdxAAAA0EswgAEAANBLcAkRAF2kCyU/aPHy5ctHjx6Zmpo6OjpqIn5tba2G+ra3t7enp6ff571weEEQKKcyRDCAAaBzjPAWxAcPHhQUFFy9enXYsGEfffTRvHnzRowYQXdSA/PgwYO1a9eePXu2r8fdgNrBAAYAoM3t27cvXrxYWlpqbW0dERHx9ddfq3gGo4NcXV3nzJlz6NCh+Ph4unMxFjCAAQC0SiaTFRcXX7x4saamZty4cSEhIRs2bDCMs5YPP/yQx+MFBgaOHTuW7lyMAgxgAABtkEqlP/zww/nz51taWrhc7tKlS/F5NwxMZmbmihUrzp8/b2ICt8hpHAxgAAANevz4cX5+/nfffSeTyWbPnr1z5057e3u6k9IgZ2fnuXPnHj9+HJ/7CmgUDGAAAPX77bff8vLy/vWvf7FYrODg4GPHjllZWdGdlJYsXbp07ty5oaGhQ5wmH/QLBjAAgHoQP25VVFSMHTuWx+OtWrXKCK+kmZiYfPbZZykpKRkZGXTnYuBgAAMADElnZ2dhYeGlS5caGhr8/f1jYmLGjx9Pd1I0mzRp0pdffikUCn18fOjOxZDBAAYAGIyWlpZLly4VFhZKJJK33377008/1dCjx3oqJSUlPj7+3LlzdCdiyGAAAwAMAP7jVnFxsaWl5bvvvrt//35ra2u6k9JFr7322sSJE//9739Pnz6d7lwMFgxgAIB+9Pb2/vLLL3l5ebdv33Zycpo7d+5HH31kampKd166LiEhYdmyZTCAaQ4MYAAAxV68eHH9+vW8vLzq6uqAgIC5c+cmJyfTnZQ+YbFYEyZMgJMwzYEBDADwB21tbT/88MOVK1daW1v/7//+b8OGDc7OznQnpa/WrFkTGxsLA5iGwAAGAEAIoXv37l2+fPmnn37q6emZM2fO7t27bWxs6E5K77FYLC8vrxs3brz55pt052KAYAADwKjdvn1bIBBUVFS89tprwcHBhw8f1t/pdHXT8uXLU1NTYQDTBBjAADA6+BPHAoGgpqbG19c3JCRk69athjGdrg4aNWqUWCx+/vw5k8mkOxdDAwMYAMaio6Pj6tWrOTk5zc3Nb7311sqVKz09PelOyii8//77AoFg6dKldCdiaBgYhtGdAwA65Pr160lJSb29vW1tbWw229ra+ttvvzU3N6c7r8EjakX29PTMmzdPH2tF6ruXL1++//77OTk5dCdiaOAMDIA/4HA49+/fb2xsxN9OnjxZT0cvolakjY1NeHj4iRMn9HRHDICZmZmbm9uvv/7q4eFBdy4GBQYwAP6AzWY7OzvjA5ipqanOXvbBq0GSFhLT6QqFwtdff53H4xlMrUh9N2/evLy8vISEBLoTMShwCREAsuPHj3/00UcvXrwYNWpURUUFi8WiO6M/ePny5Ycffnjp0qWHDx/idwzitSLz8/PFYvHkyZNDQ0MNslakXuvu7l64cGF2djbdiRgUOAMDgCwyMjI5OfnBgwejR4/WtdHr/v37YWFhVVVVw4cPz8nJ6erq+u6773p7e995551PP/3UwcGB7gSBYqampsOGDevq6oILuWpkdKV6AOiXlZWVh4eHubn5ihUr6M7lD06dOsXlcn/55Zeurq6Ojo709HQ2m33ixAmBQBAXFwejl47z9/f/+eef6c7CoMAABoACq1atGj58+Lx58+hO5HcvXrxYvHjx6tWribtLEELt7e3BwcEWFhY0JgZUN23atOLiYrqzMChwCfF3AoEgIyPDxcWF7kT0WGtrK0JIF8qo19bWvv7660OJ0Nvb6+TkFB0dra6Uhqi6uvrRo0cIIVtb297eXoRQb2+vSCQKCgrStYuchqq4uLihoWEoEby9vb/66is1pQMQggFM3po1a3g8Ht1Z6DGBQIAQ0oU+jIyMzMrKGmKQzs7OV155RS35AAMQGRk5xAgjRoxob29XSzIAB5cQDdyBAwesrKzc3d3pToRmJSUlDAbD19cXIfT48ePPP/+83030ffS6ffv2qVOn+vqrip1gJIi+ys3NZTAYgYGBGmoIHmlQLxjADNzhw4cbGxvv3btHbxpSqXTo/4EdotjY2LKyMoRQQkIC/nRXQkICg8Egalx5e3szGIyUlBS1NKfR4BiGpaWl2draenh4XLt2DSHU0dERExNjaWnp5+dXXl6OEHrjjTfq6upKS0v7Sk/fO0GNwYm+Cg0NbWpqUkt6CjEYDPwKMFAPDGAYhmFZWVlZWVl0Z4FhGNbZ2TllyhR1RfPx8VFXqH5prg8H2ic8Ho+0pLi4ODY2FsOwR48ezZ49m1geHR1tZmZ2+fJl/G1iYuKQk/0fzQWvr69ftmyZVCrNysqaOXMmhmFnzpzJzMzs7OzctWvXe++9h69WXFy8fPly6uaG0QnqDU70VVNT06xZs6grUD9Ug7B8+fLW1tahxwE4OAPrU0REhL29fVRUlLm5+cWLF2UyWWxsrI2NTUBAgPydYLjk5GQGg8FgMMzMzIRCIWllaig+n89isXx9fSsqKkihQkJCSktLGQxGbm4uacPt27dbW1vzeLzu7m48QwcHh/j4eBsbmxMnTiCE7t69y+FwTExM8DuqIyIihEIhg8H46aefSC3KR7awsMDjsNnsS5cucblcJyenyspKhBB1r0kpqd6ZREqknAMDA728vHg8HovF2rZtG0KIy+VOnToVIYRPlE7qk8Eez9/V1dWNHDmSeOvo6Lhjx45FixaJRCJiIekAUXNW/mHQQnB3d/ejR4+amppKJBIvLy+E0IIFC1avXm1hYREQEEDci+To6FhTU2OonaDe4H31lXqZmZnh/3iBetA9guoKhWcP7u7ud+7cwV+fOXMmLCysra0tOzubz+eT1kxNTcUwrLKy8uTJkwpXlg91+vTpkJCQZ8+eCQQCLpdLCkU625DfELd3794LFy7gr93c3G7dulVVVTVt2jQMwzIyMuLi4p48eUKsjJ+BKWxRPrKbm1tZWVlRUdHYsWNFItH+/fu3bNnS115TU1LSh6RMqDljGMZms8vLyxsbG93c3Orq6ogeaGhoCA4OJvWJTCabNGlSV1dXXw1hSs/AioqKPvjgA2I5/n92Ho/H5XK7u7vxt9TuIuWs/MOgneAYhnl4eIwePbq2tpZY0t3dvWLFipaWFvxtfX39jBkzqBsaTCeoMTjRVxo9A/v444+bmpqGHgfg4AxMGRaLRUzJU1VVlZOTw2azIyIibty4QVozKSmpvb394sWLixcvVriyfKjq6uqgoCBra+vQ0NCqqipSKNLPvMSGVVVVEyZMGD58+KpVqx4/fkz81c/Pb/z48VKpFCEUFRXV0tLi6uq6ceNG+SAKW5RPicVi+fj4eHl5ubq6Ojo6cjicZ8+e9bXX8hsOAilnhJCTk9OECROcnZ39/f3r6uqINbH/znMm3ycmJiY3b94cdNFFT09PsVhMWnjs2LHW1tZNmzbhb6ndRcpZ+YdBa8Fra2vPnj2Ln6QihDAMS0pKWrt2LfEkg1gsVlgwxZA6QV3B++or9eru7h4+HO79VhsYwFTF4XD4fL5UKsUwDL8XQF5vb+8//vGPNWvWtLe3f/HFF8pX5nA4BQUFEokkNzeXw+GQ/mpmZiaRSEpLS0k/R2dlZb3zzjvt7e0bNmxQ+M2OEBo5cuS5c+eEQmF2dvbDhw9VbFE+Dimg8h0ZHOqNWE1NTUKhUCQS3bx509PT09zcvLm5+enTp/jtCajvPhkEe3t7Ozu7trY2+YVMJvPcuXOHDh2SSCRIUXcNpVs0ETw3Nzc9Pb27u9vU1FQsFvf09CCE0tLS+Hz+mDFjNm/ejK+Wn5+/ZMkSQ+0E9Qbvq6/Uq7W1lc1ma7oVI0LTmZ/OoV7+iomJQQiNGzcOf9vT0xMbG8tkMh0cHI4ePUrafPv27USXHjx4kLSywlDW1tY+Pj7l5eXUZBYuXGhnZycUCuU3FAqFY8aMGTVqVFRUFEKooaEB/2tsbOz8+fMRQuvWrdu6dStCyMLCIjo6ure3Nzw8HCHEYrGoLcpHJuJMmTIFIZSRkWFlZYUQys/Pp+41aV+U9yEBzyQ8PJyaM4ZhPj4+CxcutLGxSU5OxtdfuXKllZXVJ598ghDCL88SfSKTyfz9/QdxCREhhF/GFIvFu3fvxjBs9erVCKHp06fj6wgEgvj4eOoBouZM7RaZTObt7S3fokaDS6XSuLg4Fovl4uJy+PBhDMPy8vKITyB+dCorK7/++muFmxtGJ6gxONFXeMkuzV1CjIiIGHoQQIDZ6H+nOw/h6q9B96Gvr6+6Tu9wanmQeUBOnTrFZDJDQ0N1MLhGc9NaQ1rbi76o5UMVEREBE9KrEVyNHST5ixJbt24lHkahN5Q+CgwMFAqFfD7/yJEjdOcyePhvn7oZXKO5aa0hre2F5jQ1NTk6OtKdhUGBAWyQ1HjmauQnwYWFhXSnAIA23Lx5809/+hPdWRgUuIkDAAC0oaCgQHOTVBknGMAAAEAbxGKxq6sr3VkYFLiJ43dQTmXo8EkNdKEPy8rK8Hl7AVCX2traId5qhD/2oK58AILfwORBOZUh0p07ObV/FyIweEOcjbq8vPzvf//70aNH1ZUPQHAJEQAAtGDr1q1jx46lOwtDAwOYwYJKYPrFSAp0Ka9SZqgkEsmNGzdWrlxJdyKGBgawfhDTzDMYDHd396tXr1LXyczMZMgZxMfUwcFBPsKrr7469Mx1pBIYUJEBFOjChlylzFDt3LnTw8PD2tqa7kQMDQxg/UhOTg4PDy8uLu7p6dmwYUNfTxnjM0xLpdL58+fv2rVroK0sWbIEw7CMjIz09HQMw9QyJxuGYba2tkOPo2kvXrzAi6doaH29IBaLW1pa8FnyMjMzo6OjU1NTr1y5ghCqrKxMTEwkpjccIo0Gv3//fk1NjUgk2rlzJz4o5uXl+fn5tbW1LViwAK+VgxAKCgo6fvy4WlrUC0Kh8Oeff6a9oKtBggFMVfi5ET4kkOoJJSQk4MWukpKStmzZgk8kOKCSYDt37pRva/fu3dSyW/LFwFSvBFZSUkItjyQfmQjVbzGwQVQCo1Y+U17rS8u1wXSHYRToGmKVMoPU09OzefNmV1fX4OBgunMxRLTNwqhj+p2IFiE0efJksViM9VFPKDc3F58dFTeIkmDEGRhOYdktohiYipXAFLZFiqx6MbC+KoH11YfUppXX+sLUVBtMLfOuapPBFOjChlClTMcN7kO1cePGb7/9NiwsTO35AAzqgamouLi4tbXV3Nwc/58jtZ6QSCT65ptv1q5dS2wylJJgOFI1MlIxMBUrgSlsi1TQS/ViYAOtBKZkN7E+KsJoszaY7jCkAl2DrlJmeI4cOWJpaRkYGGhpaUl3LoYJBjBVsdnslJSUuLi4rq4uUj0hDMPWrVu3Z88e/Lt1/fr1qL+CRv0W6CKhFgNTsRKYKm1prhgYtel+a31pszaY7jCMAl1DrFJmYL777rtbt25t3rz5l19+gcfqNYWuUz9d09clRLzCFkKouroaw7DJkycPGzaMVE9o79698l1qb2+PUeqH9VsSLD8/H988Pz8fo5TdIhUDmzVrFlKtEhi1LVJk1YuBKakE1lcfKqx8pqTWF6am2mB6dwkRM4gCXQOqUqZ3BvShunr16oIFC7q7uzEMy8jI+Pe//62xvIwaTCX1O92ZRUJ/qaUP1VIbDGbiwBl2gS4tU/1DlZOTk52dffToUQsLC4RQTEzM/v37mUymhhM0RjCVFNAhhlEbTHdAgS7t27dvX11d3cmTJ01Mfv+BprOzE0YvDYEBDOgQqA0G9FdXV9eGDRucnZ0zMzPpzsVYwE0cAAAwVPfu3ePxeH/5y182bNggv/zp06cjRoygKyuDB2dg/1NSUkJ3CvqtuLiY7hR+19jYiP8gB4C6KHk2/MyZM+fOnTt8+LC9vT3pT7/99hvMR6o5cBPH7xobG3Xn+xfQ7osvvoiPj6c7C6BbqDcoiUSiDRs2TJw4cf369cSPXvLOnz/f1dW1cOFCrSRodOAM7HcuLi5wCyIgCAQC+DwAJTAMO3nyZE5OTmpqKj5vlkItLS1jxozRZmJGBX4DAwCAgbl58+a8efMwDDt//ryS0Qsh9OzZMxsbG60lZmzgDAwAAFRVX1+/bds2Npv91VdfEZNjKSGRSGAA0xwYwABQgDSREgBtbW3p6ekPHz7cunWrh4eHilvBGZhGwQAGABmGYTCAAUJzc3NmZmZtbW1SUpK/v/+Atn3+/Dk8xaw5MIABQNbR0QHThwOEkFgszsjIqK6u3rhx4+DKqMJ/hjQKBjAAyJ4/fw7V341cZWXlvn37Ojs7161bN3HixEHHYTDgUSUNggEMADKJRAIDmHGSyWQXLlw4derUmDFj/va3v6n+WxegBQxgAJBJJBL43cLYiMXi48ePFxUVzZs37+TJk3hRoaFjMBi9vb1qCQWoYAADgAwuIRqPnp6e/Pz806dPW1hYxMTEJCUlqTe+ubn5y5cv1RsTEGAAA4AMzsCMwZ07d44fP37nzp1333334MGDGppy18rK6vnz5yNHjtREcAADGABk8BuYAXvw4MHZs2eLioo8PT2XLl3q7e2t0easrKw6Ojo02oQxgwEMALLnz5+7ubnRnQVQJ7FYLBAICgsLnZ2d33///XXr1imce1ftmEzm8+fPtdCQcYIBDAAyuIRoMOrr63Nzc3/88Uc7O7uIiIj4+Pjhw7X6pWdjYyORSLTZolGBAQwAMriEqO/Ky8tzcnJu3brl7u4eGhr68ccfDxs2jJZMRowY8eTJE1qaNgYwgAFABnch6qOOjo4ffvghPz9fJBJ5e3uHhYV9+umntM+CMWLEiLq6OnpzMGAwgAHwOwzDEhMTGQxGeXn5d9995+Tk5OPjM3r0aLrzAsrcuXMnPz//p59+Mjc3nzFjxubNm52dnelO6n9sbW3hDExzYAAD4HcMBuPSpUu3b99GCH3//fdMJjM/Px8GMB306NGjwsLCa9eutba2enl5BQUFrVy50tTUlO68FLC1tW1vb6c7C4MFAxgA/xMWFlZVVYVPXufs7MzlcunOCPyutbX1p59+unbtWn19vYODQ2BgYFpamioVuegFv4FpFAxgAPxPVFTUl19+2dzcPHz48KVLl9KdjuHr6uoqKioKDAxU+Nd79+5dv379+vXrzc3Ntra2b7311scff6xf58QsFuvZs2d0Z2GwYAAD4H/Gjx9va2vb3Nzs5OT017/+le50DFx+fv66deu6urp+/fVXYuFvv/1WWFhYUlLS3Nzs7Oz85z//edOmTa6urjTmORQmJiYymYzuLAwWDGAA/MHEiRNramr+9Kc/QSFdzWlqauLz+SUlJW1tbc7Ozt99911FRcUvv/zS09MzYcIELpcbFRUFj+KBfsEABsAfLFu2LC8vb/PmzXQnYph6enp27Nhx5MiRhoYGfMmTJ0++/fbb2NjY9evXa/kpY6DvjO7jUlJSsmfPHrqzMHCtra268Ot6Z2cnQuiVV14Z0Fa9vb1WVlZpaWmaScqoPX/+/KeffpJKpfKPZ0ml0mvXrunRnQ4BAQEJCQl0ZwEQMsIBrKGhgcfj8Xg8uhMxZJGRkVlZWXRngQQCAUJoEMf63r177u7u6k8IINTb2ysSierr62tra3/55Zc7d+60tLSMGzfu7NmzdKemqsjIyAENYLQ/TG3AjG4AA6BfMHppjomJiYuLi4uLy1tvvUV3LkDvaWM+ZqAFBw4csLKygm9e5UpKShgMhq+vL/728ePHn3/+Ob0padrt27dPnTqlZAVj6AQVyfdVbm4ug8Ho6/5+oCNgADMQhw8fbmxsvHfvnnaau3bt2uTJk3Nzcwe6oVQqjYyM1ERKKoqNjS0rK8NfJyQkLF26NCEhgcFgJCcn4wu9vb0ZDEZKSopamtNocAzD0tLSbG1tPTw8rl27hhDq6OiIiYmxtLT08/MrLy9HCL3xxht1dXWlpaVKMtTrTlBjcPm+Cg0NbWpqUkuGQIMwI5OVlZWVlUV3FhiGYZ2dnVOmTFFXNB8fH3WFUsW1a9dWrFiRk5Oj8K88Hk9D7Q6o06jHuri4ODY2Fn/96NGj2bNn46+jo6PNzMwuX76Mv01MTFRTvpoNXl9fv2zZMqlUmpWVNXPmTAzDzpw5k5mZ2dnZuWvXrvfeew9frbi4ePny5QojGEAnqDe4fF81NTXNmjWLus5AP96RkZGDzgcoB2dgKCIiwt7ePioqytzc/OLFizKZLDY21sbGJiAgoLGxkbRycnIyg8FgMBhmZmZCoZC0MjUUn89nsVi+vr4VFRWkUCEhIaWlpQwGIzc3l7Th9u3bra2teTxed3c3nqGDg0N8fLyNjc2JEycQQnfv3uVwOCYmJg4ODvgKQqGQwWD89NNPpBblI1tYWOBx2Gz2pUuXuFyuk5NTZWUlQoi616SUSMm//fbbg+5tImfSTgUGBnp5efF4PBaLtW3bNoQQl8udOnUqQsjX1zckJITUaYNLgFBXV0cUend0dNyxY8eiRYtEIhGxAvXwUXNW/mnRdHB3d/ejR4+amppKJBIvLy+E0IIFC1avXm1hYREQEODi4kIkUFNTY6idoN7gSvpq0DAMU29A8D90j6DapvAMzN3d/c6dO/jrM2fOhIWFtbW1ZWdn8/l80pqpqakYhlVWVp48eVLhyvKhTp8+HRIS8uzZM4FAwOVySaFIJxPyG+L27t174cIF/LWbm9utW7eqqqqmTZuGYVhGRkZcXNyTJ0+IlfEzMIUtykd2c3MrKysrKioaO3asSCTav3//li1b+tprakryBn0GRpwsknYKwzA2m11eXt7Y2Ojm5lZXV0d0UUNDQ3BwMKnTZDLZpEmTurq6+mpI+RlYUVHRBx98gL/G/8/O4/G4XG53dzf+VmFnknJW/mnRQnAMwzw8PEaPHl1bW0ss6e7uXrFiRUtLC/62vr5+xowZCrc1jE5QY3D5vlLXGZjmLkgAOANDCCEWizVu3Dj8dVVVVU5ODpvNjoiIuHHjBmnNpKSk9vb2ixcvLl68WOHK8qGqq6uDgoKsra1DQ0OrqqpIoUg31xIbVlVVTZgwYfjw4atWrXr8+DHxVz8/v/Hjx0ulUoRQVFRUS0uLq6vrxo0b5YMobFE+JRaL5ePj4+Xl5erq6ujoyOFw8InaFO61/IaaQNophJCTk9OECROcnZ39/f3lqyhh//0/rHynmZiY3Lx508zMbHCte3p6isVi+SXHjh1rbW3dtGkT/ravzpTPWfmnRTvBa2trz549i5+hIoQwDEtKSlq7di3xKJ5YLPb09DTsTlBXcCV9NTgYhsFt9JoDAxgZh8Ph8/lSqRTDMOLXfkJvb+8//vGPNWvWtLe3f/HFF8pX5nA4BQUFEokkNzeXw+GQ/mpmZiaRSEpLS0k/OGdlZb3zzjvt7e0bNmxQ+MWNEBo5cuS5c+eEQmF2dvbDhw9VbFE+Dimg8h3REOo/7KamJqFQKBKJbt686enpaW5u3tzc/PTpU/wOBdR3pw2Cvb29nZ1dW1sbsYTJZJ47d+7QoUN4DXiFnTnoftNE8Nzc3PT09O7ublNTU7FY3NPTgxBKS0vj8/ljxowhJhPJz89fsmSJoXaCeoMr6avBefLkyYgRI9QYEPwBPSd+9KFeVoqJiUEIjRs3Dn/b09MTGxvLZDIdHByOHj1K2nz79u1E1x08eJC0ssJQ1tbWPj4+5eXl1GQWLlxoZ2cnFArlNxQKhWPGjBk1alRUVBRCqKGhAf9rbGzs/PnzEULr1q3bunUrQsjCwiI6Orq3tzc8PBwhxGKxqC3KRybiTJkyBSGUkZFhZWWFEMrPz6fuNWlfSObMmYN3Qnp6OvWvSq6Z4KmGh4dTdwrDMB8fn4ULF9rY2CQnJ+Prr1y50srK6pNPPkEI4ddviU6TyWT+/v4DvYSIECKuYYrF4t27d69evRohNH36dHyhQCCIj49XePioOZP6TSaTeXt7y7eo0eBSqTQuLo7FYrm4uBw+fBjDsLy8POLziR+7ysrKr7/+Gl+fGsEAOkGNweX7KicnByE09EuIQqGQ+DADtWNgRvYD46BnZwCqG/RMHL6+vmo8/9P+sT516hSTyQwNDdXN4BpNTzutaGcXlBvQx/vkyc4R1pQAACAASURBVJP4ZUyNpmS04BJiPxhyiGdNaA+lZdrJPDAwUCgU8vl8DcXXgsWLF2vuq2rowTWannZa0c4uqFF5ebmPjw/dWRgsmEqqH2o8Q9Xfk13tZF5YWKiFVgDQpvr6epgfR3PgDAwAADRCJpNhcBeiJhnjGRj+Sz7QHJFIhP/+RC840EAT8DI9qvjPf/4zbdo0jSZj5OAMDAAANOLixYtz586lOwtDZoxnYNOmTYO7EDVKIBDoTg/rTibAMKh+daG6ulqjUwEAOAMzNFBXRd8ZSX2Tfuu86Lvq6urXX3+d7iwMHAxgihGT9jIYDHd396tXrypcLTMzU/4W85UrVw60IQcHB/kIr7766hAz13JdFaB2eH0TpD9VSKgwddR50Xf79+//8MMP6c7CwMEAplhycnJ4eHhxcXFPT8+GDRuUPPzU1NSEYZhUKp0/f/6uXbsG2tCSJUswDMvIyMCntBj6NDYYhtna2g4xCC1evHiBzz2vofX1glgsbmlpYbPZCKHMzMzo6OjU1NQrV64ghCorKxMTE4kJooZIo8Hv379fU1MjEol27tyJD4p5eXl+fn5tbW0LFizASw0ghIKCgo4fP66WFnWNRCJpbW2F64eaBgNYP/ATI3xIoBZfSEhIwIuDJCUlbdmyxcrKSnldkgsXLpBKPOzcuVO+uXv37pGKmMiXVlG9rkpJSQmpnASpPAoRqt/SKsrrqqiIWttCeakULZdW0R3y9U2QaoVCBleCRKPBh17nRd8RE8sBzaJrDiu6qF7QEp+1DyE0efJksViM9V3ZITc3d/fu3fhr5XVJ+iqwQpyBYX0UMSFKq6hYV0VhW6TIqpdWUV5XhYo6WRw1GeWlUjB1lFbRneKlqpOvb4KpXChkcHVYNBocG1qdF13W71yI3d3df/nLX/CHwIBGwRmYMsXFxa2trebm5vj/ExVWdhCJRN98883atWvxt8rrkigvsEJaGSkqraJiXRWFbZHKo6heWmXodVWU7DjWx4z72iytojuo9U2QCoVCBl2CRKPBh1LnRa8dPHgwJibGxAS+XTUOurgfbDY7JSUlLi6uq6uLWnwBw7B169bt2bMH/zJdv379UAqsUFFLq6hYV0WVtrRZWoWaTL+lUrRZWkV3UOubIBUKhQzlCGoi+NDrvOivJ0+eXL58GR7e0BK6Tv3oouJlJbxeCUKouroaw7DJkycPGzaMWnNk79698p1pb2+vvC6JwgIr+fn5+Ob5+fmkIiak0iqzZs1CqtVVobZFiqx6aRXldVUUol5jUbjjSkqlYOooraKPlxCx/9Y3wVQuFNJvlRBMUSEVjQYfaJ0X/aL8EuKaNWtKS0u1loyRg3IqQP0GXU5F3tBLq8CxJhh8iRNtUvLxrq2t3blz57Fjx7ScktEyxpk4gO4jSqscOXKE7lwMweLFi/U0uB6RyWR/+9vfDhw4QHciRgQGMKCLoLQK0Dvbt2+PiopydnamOxEjAjdxAADAUN28eVMkEr3//vt0J2Jc4AwMAACGpKOjY8uWLUP/3RcMlNHdxFFSUrJnzx66szBwra2txLM+NMLrNr3yyiv0piGTyX7++WcvLy9ra2t6MwFqERAQkJCQIL9k2bJly5cvx2/oBdpkdAMYANr38OHDlJSUp0+fpqamurm50Z0OUKfU1NQRI0b89a9/pTsRYwQDGABacufOnZ07dzo6OiYmJo4YMYLudIAanD9/vri4OD09ne5EjBQMYABoVUlJya5du6ZOnYpPbkt3OmDwbty4sWfPnn/+858waxRdYAADgAaFhYWZmZnz5s2LjY0dNmwY3emAAauoqPjkk09Onz7NZDLpzsV4wX8cAKBBYGDgt99+a2trO2/ePNVL1AMdcffu3Q0bNpw4cQJGL3rBAAYAPUxMTHg8nkAg+O2334KDg69fv053RkAlv/7668cff3zq1Ck9rRxrSOASIgD0a2trS0tL++2337Zv326QFUYMRkVFRWJi4vHjx+3t7enOBcAABoDOaGho2LVrV29v75YtWxwdHelOB5CVlpbu2rXr+PHjLBaL7lwAQjCAAaBrqqqq0tPT7e3tN27cCF+UuiMvL+/06dPHjh2j/dF4QIABDABd9J///CctLW3atGkJCQnm5uZ0p2Ps0tPTGxsbP//88+HDYfo9HQI3cQCgiwICAvCayCEhIV9++WVvby/dGRmprq6uDz/80MLC4u9//zuMXroGBjAAdNfcuXMvXbqEEAoKCrp48SLd6RidBw8eRERELF68eNWqVXTnAhSAS4gA6IGOjo59+/bduHFj06ZNfn5+dKdjFC5cuHDo0KH9+/ePHj2a7lyAYjCAAaA3Wltbd+/e3djYmJyc7OHhQXc6BuvFixeJiYksFuvTTz+Fy4a6DAYwAPTMgwcP0tLSZDJZcnIyPI2kdjdu3Pj000//9re/zZw5k+5cQD9gAANAL1VWVqakpLi7u2/atMnGxobudAxBd3f3nj17ysvL9+3bB7Ns6AW4iQMAveTt7f3NN98EBgZGRkbu2rXr5cuXdGek365fvz5v3jwfH59//vOfMHrpCzgDA0C/YRiWnZ391VdfLVmyJCIigsFg0J2Rnmlra9uxY4dMJtu2bRucy+oXOAMDQL8xGAwej5ebm/vkyZP58+dfu3aN+NOWLVuePn1KY246qKCg4NmzZ/jr7u7uffv2LVu2bMmSJRkZGTB66R0YwAAwBKampnFxcadPn/5//+//hYeHl5WV3bp1a9++fTNnznzx4gXd2emKb7/9Nioq6rPPPsNfz5s379VXX83JyfH29qY7NTAYcAkRAEPT1NSUkpLy/fff//rrr8OHD//zn/9cWFgIt4Pn5+fz+XyRSOTq6jpx4sTp06evWrUKpunSa3AGBoChcXR0DA4OfvLkCUKop6enpKQkLCzMyP+reu3atdjYWJFIhBASiUQeHh7r16+H0UvfwRkYAIamt7fX09PzwYMHPT09+BJra+tFixYdPHiQ3sTocvXq1cWLFzc1NRFLHBwc6urqrKysaMwKDB0MYKBPjY2NxcXFdGcBBgzDsIcPHzY0NNTW1tbX1z9//ryzs/Pp06cRERGhoaF0Z6dtNTU1n332GZPJHD58uLm5ubm5OZvNdnFxmT17tp2dHd3ZGbhRo0ZNnTpVc/FhAAN9EggEJSUlGv38gYyMjDVr1mi6FQzDWlpaRCLR+PHjzczMqCvg/1OZNm2apjPRvoqKCiaT+eqrr1pbW9Odi9ERCARZWVmai2/sv+sC5aZOncrj8ejOwpAJBALd6WHdyUSNDHKn9IVAINBofLiJAxidAwcOWFlZubu7052ITispKWEwGL6+vvjbx48ff/755/SmpGm3b98+deqUkhWMoRNUJN9Xubm5DAYjMDBQ+2nAAAaMzuHDhxsbG+/du6eFtjo6OmJiYiwtLf38/MrLywe0rVQqjYyM1FBiqoiNjS0rK8NfJyQkLF26NCEhgcFgJCcn4wu9vb0ZDEZKSopamtNocAzD0tLSbG1tPTw88Ge9qYfmjTfeqKurKy0tVZKhXneCGoPL91VoaKj8DTJahQHQh6ysrKysLLqzwDAM6+zsnDJlirqi+fj4qCtUv86cOZOZmdnZ2blr16733nuPugKPx9NQ0wPqNOqxLi4ujo2NxV8/evRo9uzZ+Ovo6GgzM7PLly/jbxMTE9WUr2aD19fXL1u2TCqVZmVlzZw5E+vj0BQXFy9fvlxhBAPoBPUGl++rpqamWbNmUdfR3McbB2dgYAAiIiLs7e2joqLMzc0vXrwok8liY2NtbGwCAgIaGxtJKycnJzMYDAaDYWZmJhQKSStTQ/H5fBaL5evrW1FRQQoVEhJSWlrKYDByc3NJG27fvt3a2prH43V3d+MZOjg4xMfH29jYnDhxAiF09+5dDodjYmLi4OCAryAUChkMxk8//URqUT6yhYUFHofNZl+6dInL5To5OVVWViKEqHtNSkk+8wULFqxevdrCwiIgIMDFxWWgvU3kTNqpwMBALy8vHo/HYrG2bduGEOJyufjtNr6+viEhIaROG1C7VHV1dSNHjsRfOzo67tixY9GiRfgzVTjq4aPmrPzToung7u7uR48eNTU1lUgkXl5eqI9D4+joWFNTY6idoN7gSvpKezQ6PAK9pvAMzN3d/c6dO/jrM2fOhIWFtbW1ZWdn8/l80pqpqakYhlVWVp48eVLhyvKhTp8+HRIS8uzZM4FAwOVySaFIJxPyG+L27t174cIF/LWbm9utW7eqqqqmTZuGYVhGRkZcXNyTJ0+IlfEzMIUtykd2c3MrKysrKioaO3asSCTav3//li1b+tprakryuru7V6xY0dLSQv2T8v+iEieLpJ3CMIzNZpeXlzc2Nrq5udXV1RFd1NDQEBwcTOo0mUw2adKkrq6uvhpSfgZWVFT0wQcf4K/x/7PzeDwul9vd3Y2/VdiZpJyVf1q0EBzDMA8Pj9GjR9fW1hJLSIemvr5+xowZCrc1jE5QY3D5voIzMKAfWCzWuHHj8NdVVVU5OTlsNjsiIuLGjRukNZOSktrb2y9evLh48WKFK8uHqq6uDgoKsra2Dg0NraqqIoUizbBObFhVVTVhwoThw4evWrXq8ePHxF/9/PzGjx8vlUoRQlFRUS0tLa6urhs3bpQPorBF+ZRYLJaPj4+Xl5erq6ujoyOHw8EngVW41/IbkmAYlpSUtHbt2qE8dUTaKYSQk5PThAkTnJ2d/f396+rq5JujdpqJicnNmzcV3kCvCk9PT7FYLL/k2LFjra2tmzZtwt/21ZnyOSv/tGgneG1t7dmzZ/EzVKTo0IjFYk9PT8PuBHUFV9JXWgMDGBg8DofD5/OlUimGYcSv/YTe3t5//OMfa9asaW9v/+KLL5SvzOFwCgoKJBJJbm4uh8Mh/dXMzEwikZSWlpJ+cM7KynrnnXfa29s3bNig8IsbITRy5Mhz584JhcLs7OyHDx+q2KJ8HFJA5TtClZaWxufzx4wZs3nz5n5X7gu1SEpTU5NQKBSJRDdv3vT09DQ3N29ubn769CkxG31fnTYI9vb2dnZ2bW1txBImk3nu3LlDhw5JJBLUR2cOut80ETw3Nzc9Pb27u9vU1FQsFuNzlFAPTX5+/pIlSwy1E9QbXElfaY9Gz++AXqNeVoqJiUEIjRs3Dn/b09MTGxvLZDIdHByOHj1K2nz79u3Ex+zgwYOklRWGsra29vHxKS8vpyazcOFCOzs7oVAov6FQKBwzZsyoUaOioqIQQg0NDfhfY2Nj58+fjxBat27d1q1bEUIWFhbR0dG9vb3h4eEIIRaLRW1RPjIRZ8qUKQihjIwMfNqh/Px86l6T9kVeXl4e0QkKV1ByjQVPNTw8nLpTGIb5+PgsXLjQxsYmOTkZX3/lypVWVlaffPIJQgi/fkt0mkwm8/f3H+glRIQQcQ1TLBbv3r179erVCKHp06fjCwUCQXx8vMLDR82Z1G8ymczb21u+RY0Gl0qlcXFxLBbLxcXl8OHDCg9NZWXl119/ja9PjWAAnaDG4PJ9lZOTgxCi5RIizMQB+oQ/hAjPgWpUZGTk4KYq8PX1VeX8T0XaP9anTp1iMpkamtpq6ME1mp52WtHOLig36I+3iuASIlAbhhziWRPaQ2mZdjIPDAwUCoV8Pl9D8bVg8eLFmvtuHXpwjaannVa0swv0gqmkgNqo8Wxefy8MaCfzwsJCLbQCgI6DMzAAAAB6CQYwAAAAegkuIQJlMjIyND2ftJErKyujd8JDHD63AhxroF6tra0ajQ8DGFBmzZo1cBeiRmn6Ni0VwR2nQBM0/Z8zuIQIjBqUVtFrRlLfpN86L0YLBjAwVMSkvQwGw93d/erVqwpXy8zMlL/FfOXKlQNtyMHBQT7Cq6++OuTctVpaBagdXt8E6U8VEipMHXVejBYMYGCokpOTw8PDi4uLe3p6NmzYoOThp6amJgzDpFLp/Pnzd+3aNdCGlixZgmFYRkZGeno6hmFqmcYGwzBbW9uhx9GyFy9e4HPPa2h9vSAWi1taWthsNkIoMzMzOjo6NTX1ypUrCKHKysrExMShzN0lT6PB79+/X1NTIxKJdu7ciQ+KeXl5fn5+bW1tCxYswEsNIISCgoKOHz+ulhYNCQxgQG3wEyN8PKAWX0hISMCLgyQlJW3ZssXKykp5XZILFy6QSjzs3LlTvrndu3frV2kVFVFrWygvlaLl0iq6Q76+CVKtUMjgSpBoNPjQ67wYNY1OVAX0muoFLfFZ+xBCkydPFovFWN+VHXJzc3fv3o2/Vl6XpK8CK8QZGGl9go6XViGhThZHTUZ5qRRMHaVVdKd4qerk65tgKhcKGVwdFo0Gx4ZW50WXQTkVoB+Ki4tbW1vNzc3x/ycqrOwgEom++eabtWvX4m+V1yVRXmCFoF+lVVShZMexPmbc12ZpFd1BrW+CVCgUMugSJBoNPpQ6L8YMBjCgNmw2OyUlJS4urquri1p8AcOwdevW7dmzB/8yXb9+/VAKrFDpRWkVVVCT6bdUijZLq+gOan0TpEKhkKEcQU0EH3qdF6Om0fM7oNdUvKyE1ytBCFVXV2MYNnny5GHDhlFrjuzdu1f+g2dvb6+8LonCAiv5+fn45vn5+aT1db+0ikLUaywKd1xJqRRMHaVV9PESIvbf+iaYyoVC+q0SgikqpKLR4AOt86JfoJwKoA083KoFanmQeeilVeBYEwy+xIk2afo5fZiJAwD9RpRWOXLkCN25GILFixfraXAjBAMYAPoNSqsAowU3cQAAANBLMIABAADQS3AJESgD5VQ0rba2VhfKqeBlLwZ6rJ8+fcpisTSTEQD9g7sQAQCD9P777589e5buLIDxgkuIAAAA9BIMYAAAAPQSDGAAAAD0EgxgAAAA9BIMYAAAAPQSDGAAAAD0EgxgAAAA9BIMYAAAAPQSDGAAAAD0EgxgAAAA9BIMYAAAAPQSDGAAAAD0EgxgAAAA9BIMYAAAAPQSDGAAAAD0EgxgAAAA9BIUtAQADExXV9fMmTO7urra2trYbLZMJsvIyHj77bfpzgsYneF0JwAA0DPm5uYymezWrVsIofr6+lGjRk2cOJHupIAxgkuIAIABW758uYWFBf7azc2NzWbTmw8wTjCAAQAGLDIycuTIkQghCwuL5cuX050OMFIwgAEABszKysrDwwMhZG9v/95779GdDjBSMIABAAZj1apVlpaW48aNs7S0pDsXYKRgAAMADEZwcDCDwVi5ciXdiQDjBbfRAz0watSoadOm0Z0F+IPa2tqurq433njDxITO/we3trYihOzs7GjMQdc0NjauWbOGx+PRnYjGwW30QA9MmzYtKyuL7izAH0RGRp48edLc3JzeNAQCAULIGL6sVYf3iTGAS4jAEBw4cMDKysrd3Z3uRIwL7aNXXx4/fvz555/TnYXG3b59+9SpU3RnQScYwIAhOHz4cGNj47179+hOhE5SqTQyMlJd0TAMS0tLs7W19fDwuHbtGo2ZDEJCQsLSpUvxFwwGIzk5GV/u7e3NYDBSUlLU1YrmglP7v6OjIyYmxtLS0s/Pr7y8HCH0xhtv1NXVlZaWqqVFfQQDGNBLL168mDp1KvEWwzBbW1tdyITG1i0tLfELrWpJ6f79+zU1NSKRaOfOnQP9UiYyGZwh5i8Wi1taWvBnqzMzM6Ojo1NTU69cuYIQqqysTExM3Lx586CDy9NocGr/5+Xl+fn5tbW1LViwYNu2bfhqQUFBx48fV0uL+ggGMKCXQkJCSktLGQxGbm5uRESEUChkMBglJSX9biiTyfh8PovF8vX1raioCAwM9PLy4vF4LBYL/1KQyWSxsbE2NjYBAQGNjY0IoYiICHt7+6ioKHNz84sXL27fvt3a2prH43V3d5MyIQUnbXj37l0Oh2NiYuLg4KDibr58+fK9995jMpmbNm3C/7NPSo/UD3hkUkrU3XFwcIiPj2ez2ZcuXeJyuU5OTpWVlaSm3d3djx49ampqKpFIvLy8BnJwEJEJ0ZaNjc2JEycQQtQO53K5+HDl6+sbEhJCyn9A7eLq6urwh6xxjo6OO3bsWLRokUgkIhZSjxQpT2q/KaS54NT+X7BgwerVqy0sLAICAlxcXIgEampqBtFLBgIDQOfxeDzSks7OzilTphBvfXx8VAx1+vTpkJCQZ8+eCQQCLpeLYRibzS4vL29sbHRzc6urqztz5kxYWFhbW1t2djafz8e3cnd3v3PnjnycvXv3XrhwgZQJNbj8hhkZGXFxcU+ePFF9x0+cODF//nyJRHLixIk5c+ZgGEZKT2E/yC9UuDtubm5lZWVFRUVjx44ViUT79+/fsmWLwgQ8PDxGjx5dW1tL/RP1oMgjjoibm9utW7eqqqqmTZuGLyF1OJFtQ0NDcHAwKX+ZTDZp0qSurq6+GsrKysrKypJfUlRU9MEHHxBvExMT8Wy5XG53dzf+lnqkSHkq7DcqjQbHFPV/d3f3ihUrWlpa8Lf19fUzZszot08MFZyBAb3EYDAGt2F1dXVQUJC1tXVoaGhVVRVCyMnJacKECc7Ozv7+/nV1dVVVVTk5OWw2OyIi4saNG/hWLBZr3LhxCKGqqqoJEyYMHz581apVjx8/JmVCDU5siBCKiopqaWlxdXXduHGjitnevXv3nXfeYTKZc+bMwZeQ0lPYD/IL+9odHx8fLy8vV1dXR0dHDofz7NkzhQnU1taePXsWPzEaHBaL5efnN378eKlUii8hdTixJvbfR3rk8zcxMbl586aZmZnqLXp6eorFYtLCY8eOtba2btq0CX+r8EjJ56mw3/qiueCk/scwLCkpae3atcRjA2Kx2NPTU/XOMTAwgAG9ZGZmJpFISktLB/rzDIfDKSgokEgkubm5HA4HIdTU1CQUCkUi0c2bNz09PTkcDp/Pl0qlGIaVlZWRNs/KynrnnXfa29s3bNiAf+HKZ0INLm/kyJHnzp0TCoXZ2dkPHz5UJdvXX3/9ypUrz58/LygoIPKXT09hP5BSou4OMUIo+X9Abm5uenp6d3e3qampWCzu6elRJWEqahOkDjc3N29ubn769Clxq8igDy7O3t7ezs6ura1NfiGTyTx37tyhQ4ckEglS9DEg5an8Y0CiieAK+z8tLY3P548ZM4b4pS0/P3/JkiUD6B0DQ9/JHwCqUni1auHChXZ2dkKhMDw8HCHEYrEePHhgbm6uPFRPT09sbKy1tbWPj095eTmGYT4+PgsXLrSxsUlOTiZWYDKZDg4OR48exTAsJiYGITRu3DgMw4RC4ZgxY0aNGhUVFYUQamhokM+EFFx+QwzDtm7dihCysLCIjo7u7e1VkiSxI11dXWFhYVZWVps2bcIvr1HTI/VDeHg4NSXq7sTGxk6ZMgUhlJGRYWVlhRDKz8+Xz0EqlcbFxbFYLBcXl8OHD6t4UHBEJkRb8+fPRwitW7eO2uEYhq1cudLKyuqTTz5BCKWmpsrnL5PJ/P39B3QJEcMwsVi8e/duDMNWr16NEJo+fTq+XCAQxMfHY5SPATVPar/JZDJvb2/5VjQanNr/eXl5xPc2/qGqrKz8+uuvVewTgwQzcQA9EBkZqbkHmX19ffv9Lza9ZDLZkSNHamtrderZpkEfFPV2uNYeZD516hSTyQwNDdX94MbzcDdcQgQGiNEH4pEdQmBgoFAo5PP5upkkhmGbNm169dVXT548uX79em2mRO0rtaCxw4do8eLFGhq9NB3cgMFUUsAAqX5dobCwUKOZKKFKkgwGY8eOHTt27NBCPmgg/TZoNHY4MDxwBgYAAEAvwQAGAABAL8FNHEAP+Pr6vv7663RnAf6grKzM19eX7iwQPpMFMTMFQFBOBQCd8vrrr0M5FV2j0VtDVWc8d9ypDsqpAAAAADoNBjAAfp9hlu4sBkZJzl5eXkFBQVrOR6/pSP0wqO81UDCAAWO0fv16Npvt5OS0b9++3t7ewsJCCwsL1Hchq4EWuKqpqZkzZw6LxfLy8vrqq6/6Wi05ORl/6Kq9vX2gu0DkTHX9+vWBRjNyeP0wqO+ld2AAA0anvLz8xx9/rKmpqa2traiowKdbxfVVyGpABa46OjpCQkJiYmIePnyYnZ2dkZEhPwmQvOTk5PDw8OLi4hEjRgxiR/TRQGt9aaHcGlE/DOp76R0YwIDRsbGx6erqevr0KZPJPHTokLe3N/EnopAVXtJpxIgRs2fPFovFSgpcUUt2fffddxMnToyKimIymd7e3ikpKQcOHECKSmEpJF9vrN/aXVFRUUQ0PBNra+u9e/cqjKb+rvwjUh0s1F+tLy3UBlOFfP0wVep7IUUfg35LfEF9L42gcR5GAFSkvPTUIGRnZ/v7+3M4nN27d/f09GBy9avwF3hJp/b29vPnz+PTy/ZV4IpasmvXrl34rLW4iooKDoeDvyaVwsIwDD8Do2ZI1BtTUrvLzs7u559/JqIRmRw7dgzPhBpNjagHhVoHS3mtL0wdtcGGPnGtfP0wFet7YYMt8TW4+l4DZTyT+cIZGDBG4eHhN27cKCgo+PHHHxX+bI6XdGKxWGFhYUlJSfJ/ItV2opbscnNzu3fvHrF+fX396NGj8dd9lcIiUOuNKand5ejo+Kc//YmIRmTy7rvv9hVNo6h1sAiYolpfSPO1wVRBrR/Wb30vNNgSX1DfS71gAANGp7KyMj4+XiKRsFgsW1vb58+fU9fBSzp1dHRQ/0T6CqaW7AoODi4rKzt79uzz589v37796aefrlixAv8TqRQWKfL69eup9caU1O4SiUQVFRVENCKTy5cv4ytQo2kUtQ5Wv7W+NF0bTBXU+mH91vdCAy/xBfW9NILO0z8AVKPeS4gymWzPnj3u7u5MJnPevHnPnj2bNWsWQig2NpYoZEVUbHJxcbl8+bKSAlfUkl0YhlVXV8+aNYvJZHp6eh4/fpxomlQKC68QRvjzn/9MqjdGJEat3TVr1qxx48ZFRERYW1vj0YhMTv6bqwAACwxJREFU8IrPW7duVVi9TF2oB4Vaaw1TWuuL2iHK11dYG0wtl8vw+mEq1vfC5Gqq9VXiS731vQbKeC4hwlRSQA/oyKQPSqhYskv3a4+pTi0HZegdopszcWi0eFi/dLNPNAEuIQIwJJjKJbv0txSWhhhwh0B9L+2AuRABGBLVS3ZBKSwS6BAwRHAGBgAAQC/BGRjQA42NjcYzwba+0JGDUlxcTHcKOqekpETT05foCLiJA+gBXfiiBFQHDx7861//SncWQIFp06YZQ400GMAAAIP0/vvvnz17lu4sgPGC38AAAADoJRjAAAAA6CUYwAAAAOglGMAAAADoJRjAAAAA6CUYwAAAAOglGMAAAADoJRjAAAAA6CUYwAAAAOglGMAAAADoJRjAAAAA6CUYwAAAAOglGMAAAADoJRjAAAAA6CUYwAAAAOglqMgMABiYrq6uL7/8UiaTNTU1ZWZmIoTmzJkzfvx4uvMCRgcKWgIABszd3f3+/fv4axaLVVJS4uXlRW9KwAjBJUQAwIC9//77DAYDf+3i4gKjF6AFDGAAgAFbsWKFg4MDQojBYISFhdGdDjBSMIABAAbM1dX1tddeQwg5OjouX76c7nSAkYIBDAAwGAsXLhw2bJiDg4OLiwvduQAjBQMYAGAwli1bZm5uHhUVRXciwHjBXYgAqCoyMpLuFDSutbXVzs5OxZV//PHHqVOnmpmZ0ZuGTlm7du3UqVPpzsJYwHNgAAxAVlYW3SloVmRkpOr7eO/ePXd3d9rT0B0CgaChoQEGMK2BS4gAgEHS0OgFgIpgAANAbQIDA7X8RNSBAwesrKyMZCB5/Pjx559/TncWCCF0+/btU6dO0Z0FgAEMAPUpLCy0sLDQZouHDx9ubGy8d++eFtqSSqX0/gqYkJCwdOlS/AWDwUhOTsaXe3t7MxiMlJQUtbSCYVhaWpqtra2Hh8e1a9cQQh0dHTExMZaWln5+fuXl5QihN954o66urrS0VC0tgkGDAQwArXrx4oUafyPBMMzW1lZd0ZSztLQcyu9SQ9xxsVjc0tLCZrMRQpmZmdHR0ampqVeuXEEIVVZWJiYmbt68edDB5d2/f7+mpkYkEu3cuRMfFPPy8vz8/Nra2hYsWLBt2zZ8taCgoOPHj6ulRTBoMIABMHgymYzP548YMWL27NlisZhYfvfuXQ6HY2Jigk9XIS8kJKS0tJTBYOTm5kZERNjb20dFRZmbm1+8eBEhtH37dmtrax6P193dHRER4eDgEB8fb2Njc+LECWrYiIgIoVDIYDBKSkrwTFgslq+vb0VFBSkyEYrNZl+6dInL5To5OVVWVg5oZ/EgxAv5xPBrpzwej8Vi4V/xXC4XH658fX1DQkJIOz6Irq6rqxs5ciTx1tHRcceOHYsWLRKJRMRCaieQ8pTJZLGxsTY2NgEBAY2NjQobcnd3P3r0qKmpqUQiwS8IL1iwYPXq1RYWFgEBAcRDb46OjjU1NYPYEaBOGABANTwej7Tk9OnTISEh7e3t58+fT01NxTDMx8cHw7CMjIy4uLgnT55Qg3R2dk6ZMoV46+7ufufOHdI6e/fuvXDhAoZhbm5ut27dqqqqmjZtmsKweHNEJs+ePRMIBFwulxrZzc2trKysqKho7NixIpFo//79W7ZsUWUf5RHNkRLDMIzNZpeXlzc2Nrq5udXV1RG72dDQEBwcTNpxmUw2adKkrq6uvhqiplFUVPTBBx8QbxMTE/HVuFxud3c3/pbaCaQ8z5w5ExYW1tbWlp2dzefzleyph4fH6NGja2triSXd3d0rVqxoaWnB39bX18+YMYO0VVZWVlZWlpKwQL3gDAyAwauurg4KCmKxWGFhYUlJScTyqKiolpYWV1fXjRs3/v/27iWkjS2MA/h3Sx+C0UgD9uUDhKAdlEgJlC5aC7VbDcRWpKJCQqiiKAaKtMVG6KotdFsptiBF1CgKUpTi0iJSF45oFtJCBbVGidoGs9DouYvDHcJMjJPcPBz7/62SyXjmOyPkcCYz5y/7E2kNXE6v1xcWFvLXHo+npKTk7NmzLS0tm5ub/NMbN25cv349EAhEbpZXkpGRYbFYPB6PrGX+1mQyFRUV5eXlXblyRRCEP3/+xNxxWWFEdPXq1ZKSkmvXrpnN5u/fv0t7sv+eNA3t+JkzZ2ZnZ6N6gMxoNIbOcbkPHz74fL6nT5/yt2FPQmidHo9nZGTk4sWLVVVV3759i3C4paWlgYEBPnfkvejo6Ghvb5eeTvN6vUajUX39kAgYwABiJwjCxMTE7u6ubHt2dvbw8LAoikNDQ6urq6EfnT9/3u/3z8zMKG86GBwcvH///s7OzpMnT/j3vmy0i9Asr8Tv94+OjgqCoCxVakrWZmyUjfz69UsUxbW1tdnZWaPReOHChY2Njd+/f/P7IChix9W4dOmSwWDY2toK3ajT6YaHh7u7u/1+P4U7CbI6BUGw2+2BQIAxNjc3F/ZAo6Ojr1+/3t/fP3funNfrDQaDRPTq1Su73V5QUCD90jY+Pt7Q0BBDRyCeUjsBBNAQ5XWtYDBos9l0Ol1OTs6XL1/u3btHRDab7cWLF0SUlpZWV1d3eHgo+6uamhqDwSCKYn19PREVFhby7aIoFhQU5Obm8vWZpNYqKyuJyOl0ypq1Wq1EpNfrpUoyMjJMJtP8/LysZf7WZrPdvHmTiN6+fZuenk5E4+Pjx/ZRwg9ntVql1qTCGGMmk6mmpiYzM9PlcvH9m5ub09PTnz17RkT8+qrU8YODA7PZHNUlRMaY1+t98+YNY6y1tZWIysrK+Ha32/348eOjTkJondL/6/Llyz09PYyxg4OD4uLi0KMEAgGHw6HX63Nyct6/f88YGxsbk74w+SldWFjo7e1VVohLiEmGpaQA1NLo8hBRibmPpaWlR81pkllGtD59+qTT6SwWS1xac7vdRPTgwYO4tAbHwiVEgIT7J4T09NJpUl5eLoqi3W5PdSFRq62tjdfoBcmHtRABEu7UX+eYnJxMdQnwN8IMDAAANAkzMAC1fD4f/5HjFFtbWzsJfTwhZURrenr61q1bqa7iL4IZGAAAaBJmYABqGQyGU3+DmdvtPgl9PCFlwAmHGRgAaAPiVEAGAxhAUrlcLn4/fVZWVllZ2devX1NdkWYgTgVkMIABJJXL5bJardPT0z9//nQ4HBUVFVpf1DzanJTYclUQpwJKGMAAUiMrK+vRo0eNjY09PT2kSPo4NktFTTJIXMgySiLnpCQuVwVxKqCEAQwglQRBWF5eJiK32729vb28vOx0Oru6uoaGhtLS0hwOx8zMTHd3NxF9/vz59u3bW1tb6+vryv0TV+Hg4KDX611ZWXn+/HlTU5P0zDIPMOMveE6KxWKZnJzc3Nzs7Oz0eDwfP3788eNH5P0PDw/NZvPe3t6xZTDGZCvzOp3Ou3fvVldX8/V2laUqz6H6k1ZUVPTy5cu2tjZpSzAY7O/v7+zsPKoeSD4MYACptLi4mJ+fT+GSPiJnqahPBvmflBklHAuXk0IJy1VBnAooYQADSI2dnZ2+vr53797ZbDYKl/QROUtFTTJIXMgySo7NSUlQrgriVCCMlKyBD6BFkdOKVeKRKESk1+vv3LkzNTXFt8uSPpRRILIsFWUySFwcFRkjZZSwiDkpLE65KohTATUQpwKgFuJU1IhLrgriVEANXEIEgLjRXK4K4lQ0DUtJAUDcIFcFkgkzMAAA0CQMYAAAoEm4iQNArYcPH6a6hITz+XzSo04oIwbt7e0xLJQFscEABgAAmoRLiAAAoEn/AkVzzL8nn4ufAAAAAElFTkSuQmCC", "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tf.keras.utils.plot_model(encoder_with_rezero_transformer, show_shapes=True, dpi=48)" ] }, { "cell_type": "markdown", "metadata": { "id": "kuEJcTyByVvI" }, "source": [ "#### Customize Feedforward Layer\n", "\n", "Similiarly, one could also customize the feedforward layer.\n", "\n", "See [the source of `nlp.layers.GatedFeedforward`](https://github.com/tensorflow/models/blob/master/official/nlp/modeling/layers/gated_feedforward.py) for how to implement a customized feedforward layer.\n", "\n", "Following is an example of using `nlp.layers.GatedFeedforward`:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:45.501208Z", "iopub.status.busy": "2023-12-14T12:09:45.500920Z", "iopub.status.idle": "2023-12-14T12:09:46.364316Z", "shell.execute_reply": "2023-12-14T12:09:46.363561Z" }, "id": "XAbKy_l4y_-i" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/keras/src/initializers/initializers.py:120: UserWarning: The initializer TruncatedNormal is unseeded and being called multiple times, which will return identical values each time (even if the initializer is unseeded). Please update your code to provide a seed to the initializer, or avoid using the same initializer instance more than once.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "tf.Tensor(\n", "[[-0.10270456 -0.10999684]\n", " [-0.03512481 0.15430304]\n", " [-0.23601504 -0.18162844]], shape=(3, 2), dtype=float32)\n" ] } ], "source": [ "# Use GatedFeedforward\n", "hidden_cfg = dict(default_hidden_cfg)\n", "hidden_cfg['feedforward_cls'] = nlp.layers.GatedFeedforward\n", "\n", "kwargs = dict(default_kwargs)\n", "kwargs['hidden_cls'] = nlp.layers.TransformerScaffold\n", "kwargs['hidden_cfg'] = hidden_cfg\n", "\n", "encoder_with_gated_feedforward = nlp.networks.EncoderScaffold(**kwargs)\n", "classifier_model = build_classifier(encoder_with_gated_feedforward)\n", "# ... Train the model ...\n", "predict(classifier_model)\n", "\n", "# Assert that the variable `gate` from GatedFeedforward exists.\n", "assert 'gate' in ''.join([x.name for x in classifier_model.trainable_weights])" ] }, { "cell_type": "markdown", "metadata": { "id": "a_8NWUhkzeAq" }, "source": [ "### Build a new Encoder\n", "\n", "Finally, you could also build a new encoder using building blocks in the modeling library.\n", "\n", "See [the source for `nlp.networks.AlbertEncoder`](https://github.com/tensorflow/models/blob/master/official/nlp/modeling/networks/albert_encoder.py) as an example of how to do this. \n", "\n", "Here is an example using `nlp.networks.AlbertEncoder`:\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:46.367627Z", "iopub.status.busy": "2023-12-14T12:09:46.367375Z", "iopub.status.idle": "2023-12-14T12:09:46.924698Z", "shell.execute_reply": "2023-12-14T12:09:46.923962Z" }, "id": "xsiA3RzUzmUM" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tf.Tensor(\n", "[[-0.00369881 -0.2540995 ]\n", " [ 0.1235221 -0.2959229 ]\n", " [-0.08698564 -0.17653546]], shape=(3, 2), dtype=float32)\n" ] } ], "source": [ "albert_encoder = nlp.networks.AlbertEncoder(**cfg)\n", "classifier_model = build_classifier(albert_encoder)\n", "# ... Train the model ...\n", "predict(classifier_model)" ] }, { "cell_type": "markdown", "metadata": { "id": "MeidDfhlHKSO" }, "source": [ "Inspecting the `albert_encoder`, we see it stacks the same `Transformer` layer multiple times (note the loop-back on the \"Transformer\" block below.." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2023-12-14T12:09:46.927962Z", "iopub.status.busy": "2023-12-14T12:09:46.927677Z", "iopub.status.idle": "2023-12-14T12:09:47.076921Z", "shell.execute_reply": "2023-12-14T12:09:47.076078Z" }, "id": "Uv_juT22HERW" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tf.keras.utils.plot_model(albert_encoder, show_shapes=True, dpi=48)" ] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "customize_encoder.ipynb", "provenance": [], "toc_visible": true }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.18" } }, "nbformat": 4, "nbformat_minor": 0 }