From efaadec6a10ee4c5d42d50a25c0a232bc1be026e Mon Sep 17 00:00:00 2001 From: carlocagnetta Date: Tue, 17 Oct 2023 13:59:37 +0200 Subject: [PATCH] Removed notebook outputs --- notebooks/L0_overview.ipynb | 157 +- notebooks/L1_Batch.ipynb | 1086 +++++------- notebooks/L2_Buffer.ipynb | 949 +++++------ notebooks/L3_Vectorized__Environment.ipynb | 434 +++-- notebooks/L4_Policy.ipynb | 1740 +++++++++----------- notebooks/L5_Collector.ipynb | 614 +++---- notebooks/L6_Trainer.ipynb | 598 +++---- notebooks/L7_Experiment.ipynb | 663 ++++---- 8 files changed, 2572 insertions(+), 3669 deletions(-) diff --git a/notebooks/L0_overview.ipynb b/notebooks/L0_overview.ipynb index c7d95a6..7a4a72d 100644 --- a/notebooks/L0_overview.ipynb +++ b/notebooks/L0_overview.ipynb @@ -38,134 +38,11 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { - "id": "qvplhjduVDs6", - "ExecuteTime": { - "end_time": "2023-10-12T15:51:01.680688825Z", - "start_time": "2023-10-12T15:48:15.090023052Z" - } + "id": "qvplhjduVDs6" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collecting tianshou==0.4.8\r\n", - " Downloading tianshou-0.4.8-py3-none-any.whl (150 kB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m150.4/150.4 kB\u001B[0m \u001B[31m3.4 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0ma \u001B[36m0:00:01\u001B[0m\r\n", - "\u001B[?25hCollecting gym>=0.15.4 (from tianshou==0.4.8)\r\n", - " Downloading gym-0.26.2.tar.gz (721 kB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m721.7/721.7 kB\u001B[0m \u001B[31m11.2 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0ma \u001B[36m0:00:01\u001B[0m\r\n", - "\u001B[?25h Installing build dependencies ... \u001B[?25ldone\r\n", - "\u001B[?25h Getting requirements to build wheel ... \u001B[?25ldone\r\n", - "\u001B[?25h Preparing metadata (pyproject.toml) ... \u001B[?25ldone\r\n", - "\u001B[?25hRequirement already satisfied: tqdm in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tianshou==0.4.8) (4.66.1)\r\n", - "Requirement already satisfied: numpy>1.16.0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tianshou==0.4.8) (1.24.4)\r\n", - "Requirement already satisfied: tensorboard>=2.5.0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tianshou==0.4.8) (2.14.1)\r\n", - "Requirement already satisfied: torch>=1.4.0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tianshou==0.4.8) (2.1.0)\r\n", - "Requirement already satisfied: numba>=0.51.0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tianshou==0.4.8) (0.57.1)\r\n", - "Requirement already satisfied: h5py>=2.10.0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tianshou==0.4.8) (3.10.0)\r\n", - "Requirement already satisfied: cloudpickle>=1.2.0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from gym>=0.15.4->tianshou==0.4.8) (2.2.1)\r\n", - "Collecting gym-notices>=0.0.4 (from gym>=0.15.4->tianshou==0.4.8)\r\n", - " Downloading gym_notices-0.0.8-py3-none-any.whl (3.0 kB)\r\n", - "Requirement already satisfied: llvmlite<0.41,>=0.40.0dev0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from numba>=0.51.0->tianshou==0.4.8) (0.40.1)\r\n", - "Requirement already satisfied: absl-py>=0.4 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tensorboard>=2.5.0->tianshou==0.4.8) (2.0.0)\r\n", - "Requirement already satisfied: grpcio>=1.48.2 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tensorboard>=2.5.0->tianshou==0.4.8) (1.59.0)\r\n", - "Requirement already satisfied: google-auth<3,>=1.6.3 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tensorboard>=2.5.0->tianshou==0.4.8) (2.23.3)\r\n", - "Requirement already satisfied: google-auth-oauthlib<1.1,>=0.5 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tensorboard>=2.5.0->tianshou==0.4.8) (1.0.0)\r\n", - "Requirement already satisfied: markdown>=2.6.8 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tensorboard>=2.5.0->tianshou==0.4.8) (3.5)\r\n", - "Requirement already satisfied: protobuf>=3.19.6 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tensorboard>=2.5.0->tianshou==0.4.8) (3.20.3)\r\n", - "Requirement already satisfied: requests<3,>=2.21.0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tensorboard>=2.5.0->tianshou==0.4.8) (2.31.0)\r\n", - "Requirement already satisfied: setuptools>=41.0.0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tensorboard>=2.5.0->tianshou==0.4.8) (68.2.2)\r\n", - "Requirement already satisfied: six>1.9 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tensorboard>=2.5.0->tianshou==0.4.8) (1.16.0)\r\n", - "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tensorboard>=2.5.0->tianshou==0.4.8) (0.7.1)\r\n", - "Requirement already satisfied: werkzeug>=1.0.1 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from tensorboard>=2.5.0->tianshou==0.4.8) (3.0.0)\r\n", - "Requirement already satisfied: filelock in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from torch>=1.4.0->tianshou==0.4.8) (3.12.4)\r\n", - "Requirement already satisfied: typing-extensions in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from torch>=1.4.0->tianshou==0.4.8) (4.8.0)\r\n", - "Requirement already satisfied: sympy in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from torch>=1.4.0->tianshou==0.4.8) (1.12)\r\n", - "Requirement already satisfied: networkx in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from torch>=1.4.0->tianshou==0.4.8) (3.1)\r\n", - "Requirement already satisfied: jinja2 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from torch>=1.4.0->tianshou==0.4.8) (3.1.2)\r\n", - "Requirement already satisfied: fsspec in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from torch>=1.4.0->tianshou==0.4.8) (2023.9.2)\r\n", - "Collecting nvidia-cuda-nvrtc-cu12==12.1.105 (from torch>=1.4.0->tianshou==0.4.8)\r\n", - " Downloading nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (23.7 MB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m23.7/23.7 MB\u001B[0m \u001B[31m17.1 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m00:01\u001B[0m00:01\u001B[0m\r\n", - "\u001B[?25hCollecting nvidia-cuda-runtime-cu12==12.1.105 (from torch>=1.4.0->tianshou==0.4.8)\r\n", - " Downloading nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (823 kB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m823.6/823.6 kB\u001B[0m \u001B[31m20.4 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m00:01\u001B[0m\r\n", - "\u001B[?25hCollecting nvidia-cuda-cupti-cu12==12.1.105 (from torch>=1.4.0->tianshou==0.4.8)\r\n", - " Downloading nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (14.1 MB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m14.1/14.1 MB\u001B[0m \u001B[31m14.3 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m00:01\u001B[0m00:01\u001B[0m\r\n", - "\u001B[?25hCollecting nvidia-cudnn-cu12==8.9.2.26 (from torch>=1.4.0->tianshou==0.4.8)\r\n", - " Obtaining dependency information for nvidia-cudnn-cu12==8.9.2.26 from https://files.pythonhosted.org/packages/ff/74/a2e2be7fb83aaedec84f391f082cf765dfb635e7caa9b49065f73e4835d8/nvidia_cudnn_cu12-8.9.2.26-py3-none-manylinux1_x86_64.whl.metadata\r\n", - " Downloading nvidia_cudnn_cu12-8.9.2.26-py3-none-manylinux1_x86_64.whl.metadata (1.6 kB)\r\n", - "Collecting nvidia-cublas-cu12==12.1.3.1 (from torch>=1.4.0->tianshou==0.4.8)\r\n", - " Downloading nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl (410.6 MB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m410.6/410.6 MB\u001B[0m \u001B[31m5.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m00:01\u001B[0m00:01\u001B[0m\r\n", - "\u001B[?25hCollecting nvidia-cufft-cu12==11.0.2.54 (from torch>=1.4.0->tianshou==0.4.8)\r\n", - " Downloading nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl (121.6 MB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m121.6/121.6 MB\u001B[0m \u001B[31m9.4 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m00:01\u001B[0m00:01\u001B[0m\r\n", - "\u001B[?25hCollecting nvidia-curand-cu12==10.3.2.106 (from torch>=1.4.0->tianshou==0.4.8)\r\n", - " Downloading nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl (56.5 MB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m56.5/56.5 MB\u001B[0m \u001B[31m13.8 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m00:01\u001B[0m00:01\u001B[0m\r\n", - "\u001B[?25hCollecting nvidia-cusolver-cu12==11.4.5.107 (from torch>=1.4.0->tianshou==0.4.8)\r\n", - " Downloading nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl (124.2 MB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m124.2/124.2 MB\u001B[0m \u001B[31m10.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m00:01\u001B[0m00:01\u001B[0m\r\n", - "\u001B[?25hCollecting nvidia-cusparse-cu12==12.1.0.106 (from torch>=1.4.0->tianshou==0.4.8)\r\n", - " Downloading nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl (196.0 MB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m196.0/196.0 MB\u001B[0m \u001B[31m8.8 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m00:01\u001B[0m00:01\u001B[0m\r\n", - "\u001B[?25hCollecting nvidia-nccl-cu12==2.18.1 (from torch>=1.4.0->tianshou==0.4.8)\r\n", - " Downloading nvidia_nccl_cu12-2.18.1-py3-none-manylinux1_x86_64.whl (209.8 MB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m209.8/209.8 MB\u001B[0m \u001B[31m8.2 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m00:01\u001B[0m00:01\u001B[0m\r\n", - "\u001B[?25hCollecting nvidia-nvtx-cu12==12.1.105 (from torch>=1.4.0->tianshou==0.4.8)\r\n", - " Downloading nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (99 kB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m99.1/99.1 kB\u001B[0m \u001B[31m28.9 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\r\n", - "\u001B[?25hCollecting triton==2.1.0 (from torch>=1.4.0->tianshou==0.4.8)\r\n", - " Obtaining dependency information for triton==2.1.0 from https://files.pythonhosted.org/packages/5c/c1/54fffb2eb13d293d9a429fead3646752ea190de0229bcf3d591ba2481263/triton-2.1.0-0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata\r\n", - " Downloading triton-2.1.0-0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (1.3 kB)\r\n", - "Collecting nvidia-nvjitlink-cu12 (from nvidia-cusolver-cu12==11.4.5.107->torch>=1.4.0->tianshou==0.4.8)\r\n", - " Obtaining dependency information for nvidia-nvjitlink-cu12 from https://files.pythonhosted.org/packages/0a/f8/5193b57555cbeecfdb6ade643df0d4218cc6385485492b6e2f64ceae53bb/nvidia_nvjitlink_cu12-12.2.140-py3-none-manylinux1_x86_64.whl.metadata\r\n", - " Downloading nvidia_nvjitlink_cu12-12.2.140-py3-none-manylinux1_x86_64.whl.metadata (1.5 kB)\r\n", - "Requirement already satisfied: cachetools<6.0,>=2.0.0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from google-auth<3,>=1.6.3->tensorboard>=2.5.0->tianshou==0.4.8) (5.3.1)\r\n", - "Requirement already satisfied: pyasn1-modules>=0.2.1 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from google-auth<3,>=1.6.3->tensorboard>=2.5.0->tianshou==0.4.8) (0.3.0)\r\n", - "Requirement already satisfied: rsa<5,>=3.1.4 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from google-auth<3,>=1.6.3->tensorboard>=2.5.0->tianshou==0.4.8) (4.9)\r\n", - "Requirement already satisfied: requests-oauthlib>=0.7.0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from google-auth-oauthlib<1.1,>=0.5->tensorboard>=2.5.0->tianshou==0.4.8) (1.3.1)\r\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from requests<3,>=2.21.0->tensorboard>=2.5.0->tianshou==0.4.8) (3.3.0)\r\n", - "Requirement already satisfied: idna<4,>=2.5 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from requests<3,>=2.21.0->tensorboard>=2.5.0->tianshou==0.4.8) (3.4)\r\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from requests<3,>=2.21.0->tensorboard>=2.5.0->tianshou==0.4.8) (2.0.6)\r\n", - "Requirement already satisfied: certifi>=2017.4.17 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from requests<3,>=2.21.0->tensorboard>=2.5.0->tianshou==0.4.8) (2023.7.22)\r\n", - "Requirement already satisfied: MarkupSafe>=2.1.1 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from werkzeug>=1.0.1->tensorboard>=2.5.0->tianshou==0.4.8) (2.1.3)\r\n", - "Requirement already satisfied: mpmath>=0.19 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from sympy->torch>=1.4.0->tianshou==0.4.8) (1.3.0)\r\n", - "Requirement already satisfied: pyasn1<0.6.0,>=0.4.6 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard>=2.5.0->tianshou==0.4.8) (0.5.0)\r\n", - "Requirement already satisfied: oauthlib>=3.0.0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<1.1,>=0.5->tensorboard>=2.5.0->tianshou==0.4.8) (3.2.2)\r\n", - "Downloading nvidia_cudnn_cu12-8.9.2.26-py3-none-manylinux1_x86_64.whl (731.7 MB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m731.7/731.7 MB\u001B[0m \u001B[31m3.4 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m:00:01\u001B[0m00:01\u001B[0m\r\n", - "\u001B[?25hDownloading triton-2.1.0-0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (89.2 MB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m89.2/89.2 MB\u001B[0m \u001B[31m13.3 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m00:01\u001B[0m00:01\u001B[0m\r\n", - "\u001B[?25hDownloading nvidia_nvjitlink_cu12-12.2.140-py3-none-manylinux1_x86_64.whl (20.2 MB)\r\n", - "\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m20.2/20.2 MB\u001B[0m \u001B[31m15.0 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m00:01\u001B[0m00:01\u001B[0m\r\n", - "\u001B[?25hBuilding wheels for collected packages: gym\r\n", - " Building wheel for gym (pyproject.toml) ... \u001B[?25ldone\r\n", - "\u001B[?25h Created wheel for gym: filename=gym-0.26.2-py3-none-any.whl size=827621 sha256=612698033ee83c54db52d872001a111f5f0adf14dd996065edff561305ac2266\r\n", - " Stored in directory: /home/ccagnetta/.cache/pip/wheels/1c/77/9e/9af5470201a0b0543937933ee99ba884cd237d2faefe8f4d37\r\n", - "Successfully built gym\r\n", - "Installing collected packages: gym-notices, triton, nvidia-nvtx-cu12, nvidia-nvjitlink-cu12, nvidia-nccl-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, gym, nvidia-cusparse-cu12, nvidia-cudnn-cu12, nvidia-cusolver-cu12, tianshou\r\n", - " Attempting uninstall: triton\r\n", - " Found existing installation: triton 2.0.0\r\n", - " Uninstalling triton-2.0.0:\r\n", - " Successfully uninstalled triton-2.0.0\r\n", - " Attempting uninstall: tianshou\r\n", - " Found existing installation: tianshou 0.5.1\r\n", - " Uninstalling tianshou-0.5.1:\r\n", - " Successfully uninstalled tianshou-0.5.1\r\n", - "Successfully installed gym-0.26.2 gym-notices-0.0.8 nvidia-cublas-cu12-12.1.3.1 nvidia-cuda-cupti-cu12-12.1.105 nvidia-cuda-nvrtc-cu12-12.1.105 nvidia-cuda-runtime-cu12-12.1.105 nvidia-cudnn-cu12-8.9.2.26 nvidia-cufft-cu12-11.0.2.54 nvidia-curand-cu12-10.3.2.106 nvidia-cusolver-cu12-11.4.5.107 nvidia-cusparse-cu12-12.1.0.106 nvidia-nccl-cu12-2.18.1 nvidia-nvjitlink-cu12-12.2.140 nvidia-nvtx-cu12-12.1.105 tianshou-0.4.8 triton-2.1.0\r\n", - "Requirement already satisfied: gym in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (0.26.2)\r\n", - "Requirement already satisfied: numpy>=1.18.0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from gym) (1.24.4)\r\n", - "Requirement already satisfied: cloudpickle>=1.2.0 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from gym) (2.2.1)\r\n", - "Requirement already satisfied: gym-notices>=0.0.4 in /home/ccagnetta/.cache/pypoetry/virtualenvs/tianshou-spwmGTuX-py3.11/lib/python3.11/site-packages (from gym) (0.0.8)\r\n" - ] - } - ], + "outputs": [], "source": [ "!pip install tianshou==0.4.8\n", "!pip install gym" @@ -248,23 +125,7 @@ "outputId": "b792fc24-f42c-426a-9d83-fe1a4f3f91f1" }, "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stderr", - "text": [ - "Epoch #1: 50001it [00:19, 2529.50it/s, env_step=50000, len=87, loss=80.895, loss/clip=-0.009, loss/ent=0.566, loss/vf=161.818, n/ep=15, n/st=2000, rew=87.27] \n" - ] - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Epoch #1: test_reward: 200.000000 ± 0.000000, best_reward: 200.000000 ± 0.000000 in #1\n", - "{'duration': '20.26s', 'train_time/model': '13.75s', 'test_step': 2159, 'test_episode': 20, 'test_time': '0.48s', 'test_speed': '4496.33 step/s', 'best_reward': 200.0, 'best_result': '200.00 ± 0.00', 'train_step': 50000, 'train_episode': 944, 'train_time/collector': '6.03s', 'train_speed': '2527.97 step/s'}\n" - ] - } - ] + "outputs": [] }, { "cell_type": "code", @@ -282,15 +143,7 @@ "outputId": "2a9b5b22-be50-4bb7-ae93-af7e65e7442a" }, "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Final reward: 200.0, length: 200.0\n" - ] - } - ] + "outputs": [] }, { "cell_type": "markdown", diff --git a/notebooks/L1_Batch.ipynb b/notebooks/L1_Batch.ipynb index dfafa57..b297a67 100644 --- a/notebooks/L1_Batch.ipynb +++ b/notebooks/L1_Batch.ipynb @@ -1,716 +1,390 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] }, - "cells": [ - { - "cell_type": "code", - "source": [ - "# Remember to install tianshou first\n", - "!pip install tianshou==0.4.8\n", - "!pip install gym" - ], - "metadata": { - "id": "sHZTxH6m2FpG" - }, - "execution_count": null, - "outputs": [] + "kernelspec": { + "name": "python3", + "language": "python", + "display_name": "Python 3 (ipykernel)" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "code", + "source": [ + "# Remember to install tianshou first\n", + "!pip install tianshou==0.4.8\n", + "!pip install gym" + ], + "metadata": { + "id": "sHZTxH6m2FpG" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Overview\n", + "In this tutorial, we will introduce the **Batch** to you, which is the most basic data structure in Tianshou. You can simply considered Batch as a numpy version of python dictionary." + ], + "metadata": { + "id": "69y6AHvq1S3f" + } + }, + { + "cell_type": "code", + "source": [ + "import numpy as np\n", + "from tianshou.data import Batch\n", + "data = Batch(a=4, b=[5, 5], c='2312312', d=('a', -2, -3))\n", + "print(data)\n", + "print(data.b)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "# Overview\n", - "In this tutorial, we will introduce the **Batch** to you, which is the most basic data structure in Tianshou. You can simply considered Batch as a numpy version of python dictionary." - ], - "metadata": { - "id": "69y6AHvq1S3f" - } + "id": "NkfiIe_y2FI-", + "outputId": "5008275f-8f77-489a-af64-b35af4448589" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "A batch is simply a dictionary which stores all passed in data as key-value pairs, and automatically turns the value into a numpy array if possible.\n", + "\n", + "## Why we need Batch in Tianshou?\n", + "The motivation behind the implementation of Batch module is simple. In DRL, you need to handle a lot of dictionary-format data. For instance most algorithms would reuqire you to store state, action, and reward data for every step when interacting with the environment. All these data can be organised as a dictionary and a Batch module helps Tianshou unify the interface of a diverse set of algorithms. Plus, Batch supports advanced indexing, concantenation and splitting, formatting print just like any other numpy array, which may be very helpful for developers.\n", + "
\n", + "\n", + "\n", + " Data flow is converted into a Batch in Tianshou \n", + "
\n", + "\n" + ], + "metadata": { + "id": "S6e6OuXe3UT-" + } + }, + { + "cell_type": "markdown", + "source": [ + "# Basic Usages" + ], + "metadata": { + "id": "_Xenx64M9HhV" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Initialisation\n", + "Batch can be converted directly from a python dictionary, and all data structure will be converted to numpy array if possible." + ], + "metadata": { + "id": "4YGX_f1Z9Uil" + } + }, + { + "cell_type": "code", + "source": [ + "# converted from a python library\n", + "print(\"========================================\")\n", + "batch1 = Batch({'a': [4, 4], 'b': (5, 5)})\n", + "print(batch1)\n", + "\n", + "# initialisation of batch2 is equivalent to batch1\n", + "print(\"========================================\")\n", + "batch2 = Batch(a=[4, 4], b=(5, 5))\n", + "print(batch2)\n", + "\n", + "# the dictionary can be nested, and it will be turned into a nested Batch\n", + "print(\"========================================\")\n", + "data = {\n", + " 'action': np.array([1.0, 2.0, 3.0]),\n", + " 'reward': 3.66,\n", + " 'obs': {\n", + " \"rgb_obs\": np.zeros((3, 3)),\n", + " \"flatten_obs\": np.ones(5),\n", + " },\n", + " }\n", + "\n", + "\n", + "batch3 = Batch(data, extra=\"extra_string\")\n", + "print(batch3)\n", + "# batch3.obs is also a Batch\n", + "print(type(batch3.obs))\n", + "print(batch3.obs.rgb_obs)\n", + "\n", + "# a list of dictionary/Batch will automatically be concatenated/stacked, providing convenience if you\n", + "# want to use parallelized environments to collect data.\n", + "print(\"========================================\")\n", + "batch4 = Batch([data] * 3)\n", + "print(batch4)\n", + "print(batch4.obs.rgb_obs.shape)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "code", - "source": [ - "import numpy as np\n", - "from tianshou.data import Batch\n", - "data = Batch(a=4, b=[5, 5], c='2312312', d=('a', -2, -3))\n", - "print(data)\n", - "print(data.b)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "NkfiIe_y2FI-", - "outputId": "5008275f-8f77-489a-af64-b35af4448589" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Batch(\n", - " a: array(4),\n", - " b: array([5, 5]),\n", - " c: '2312312',\n", - " d: array(['a', '-2', '-3'], dtype=object),\n", - ")\n", - "[5 5]\n" - ] - } - ] + "id": "Jl3-4BRbp3MM", + "outputId": "a8b225f6-2893-4716-c694-3c2ff558b7f0" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Getting access to data\n", + "You can conveniently search or change the key-value pair in the Batch just as if it is a python dictionary." + ], + "metadata": { + "id": "JCf6bqY3uf5L" + } + }, + { + "cell_type": "code", + "source": [ + "batch1 = Batch({'a': [4, 4], 'b': (5, 5)})\n", + "print(batch1)\n", + "# add or delete key-value pair in batch1\n", + "print(\"========================================\")\n", + "batch1.c = Batch(c1=np.arange(3), c2=False)\n", + "del batch1.a\n", + "print(batch1)\n", + "\n", + "# access value by key\n", + "print(\"========================================\")\n", + "assert batch1[\"c\"] is batch1.c\n", + "print(\"c\" in batch1)\n", + "\n", + "# traverse the Batch\n", + "print(\"========================================\")\n", + "for key, value in batch1.items():\n", + " print(str(key) + \": \" + str(value))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "A batch is simply a dictionary which stores all passed in data as key-value pairs, and automatically turns the value into a numpy array if possible.\n", - "\n", - "## Why we need Batch in Tianshou?\n", - "The motivation behind the implementation of Batch module is simple. In DRL, you need to handle a lot of dictionary-format data. For instance most algorithms would reuqire you to store state, action, and reward data for every step when interacting with the environment. All these data can be organised as a dictionary and a Batch module helps Tianshou unify the interface of a diverse set of algorithms. Plus, Batch supports advanced indexing, concantenation and splitting, formatting print just like any other numpy array, which may be very helpful for developers.\n", - "
\n", - "\n", - "\n", - " Data flow is converted into a Batch in Tianshou \n", - "
\n", - "\n" - ], - "metadata": { - "id": "S6e6OuXe3UT-" - } + "id": "2TNIY90-vU9b", + "outputId": "de52ffe9-03c2-45f2-d95a-4071132daa4a" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Indexing and Slicing\n", + "If all values in Batch share the same shape in certain dimensions. Batch can support advanced indexing and slicing just like a normal numpy array." + ], + "metadata": { + "id": "bVywStbV9jD2" + } + }, + { + "cell_type": "code", + "source": [ + "# Let us suppose we've got 4 environments, each returns a step of data\n", + "step_datas = [\n", + " {\n", + " \"act\": np.random.randint(10),\n", + " \"rew\": 0.0,\n", + " \"obs\": np.ones((3, 3)),\n", + " \"info\": {\"done\": np.random.choice(2), \"failed\": False},\n", + " } for _ in range(4)\n", + " ]\n", + "batch = Batch(step_datas)\n", + "print(batch)\n", + "print(batch.shape)\n", + "\n", + "# advanced indexing is supported, if we only want to select data in a given set of environments\n", + "print(\"========================================\")\n", + "print(batch[0])\n", + "print(batch[[0,3]])\n", + "\n", + "# slicing is also supported\n", + "print(\"========================================\")\n", + "print(batch[-2:])\n", + "\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "# Basic Usages" - ], - "metadata": { - "id": "_Xenx64M9HhV" - } + "id": "gKza3OJnzc_D", + "outputId": "4f240bfe-4a69-4c1b-b40e-983c5c4d0cbc" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Aggregation and Splitting\n" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "markdown", + "source": [ + "Again, just like a numpy array. Play the example code below." + ], + "metadata": { + "id": "1vUwQ-Hw9jtu" + } + }, + { + "cell_type": "code", + "source": [ + "# concat batches with compatible keys\n", + "# try incompatible keys yourself if you feel curious\n", + "print(\"========================================\")\n", + "b1 = Batch(a=[{'b': np.float64(1.0), 'd': Batch(e=np.array(3.0))}])\n", + "b2 = Batch(a=[{'b': np.float64(4.0), 'd': {'e': np.array(6.0)}}])\n", + "b12_cat_out = Batch.cat([b1, b2])\n", + "print(b1)\n", + "print(b2)\n", + "print(b12_cat_out)\n", + "\n", + "# stack batches with compatible keys\n", + "# try incompatible keys yourself if you feel curious\n", + "print(\"========================================\")\n", + "b3 = Batch(a=np.zeros((3, 2)), b=np.ones((2, 3)), c=Batch(d=[[1], [2]]))\n", + "b4 = Batch(a=np.ones((3, 2)), b=np.ones((2, 3)), c=Batch(d=[[0], [3]]))\n", + "b34_stack = Batch.stack((b3, b4), axis=1)\n", + "print(b3)\n", + "print(b4)\n", + "print(b34_stack)\n", + "\n", + "# split the batch into small batches of size 1, breaking the order of the data\n", + "print(\"========================================\")\n", + "print(type(b34_stack.split(1)))\n", + "print(list(b34_stack.split(1, shuffle=True)))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "## Initialisation\n", - "Batch can be converted directly from a python dictionary, and all data structure will be converted to numpy array if possible." - ], - "metadata": { - "id": "4YGX_f1Z9Uil" - } + "id": "f5UkReyn3_kb", + "outputId": "e7bb3324-7f20-4810-a328-479117efca55" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Data type converting\n", + "Besides numpy array, Batch actually also supports Torch Tensor. The usages are exactly the same. Cool, isn't it?" + ], + "metadata": { + "id": "Smc_W1Cx6zRS" + } + }, + { + "cell_type": "code", + "source": [ + "import torch\n", + "batch1 = Batch(a=np.arange(2), b=torch.zeros((2,2)))\n", + "batch2 = Batch(a=np.arange(2), b=torch.ones((2,2)))\n", + "batch_cat = Batch.cat([batch1, batch2, batch1])\n", + "print(batch_cat)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "code", - "source": [ - "# converted from a python library\n", - "print(\"========================================\")\n", - "batch1 = Batch({'a': [4, 4], 'b': (5, 5)})\n", - "print(batch1)\n", - "\n", - "# initialisation of batch2 is equivalent to batch1\n", - "print(\"========================================\")\n", - "batch2 = Batch(a=[4, 4], b=(5, 5))\n", - "print(batch2)\n", - "\n", - "# the dictionary can be nested, and it will be turned into a nested Batch\n", - "print(\"========================================\")\n", - "data = {\n", - " 'action': np.array([1.0, 2.0, 3.0]),\n", - " 'reward': 3.66,\n", - " 'obs': {\n", - " \"rgb_obs\": np.zeros((3, 3)),\n", - " \"flatten_obs\": np.ones(5),\n", - " },\n", - " }\n", - "\n", - "\n", - "batch3 = Batch(data, extra=\"extra_string\")\n", - "print(batch3)\n", - "# batch3.obs is also a Batch\n", - "print(type(batch3.obs))\n", - "print(batch3.obs.rgb_obs)\n", - "\n", - "# a list of dictionary/Batch will automatically be concatenated/stacked, providing convenience if you\n", - "# want to use parallelized environments to collect data.\n", - "print(\"========================================\")\n", - "batch4 = Batch([data] * 3)\n", - "print(batch4)\n", - "print(batch4.obs.rgb_obs.shape)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "Jl3-4BRbp3MM", - "outputId": "a8b225f6-2893-4716-c694-3c2ff558b7f0" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "========================================\n", - "Batch(\n", - " a: array([4, 4]),\n", - " b: array([5, 5]),\n", - ")\n", - "========================================\n", - "Batch(\n", - " a: array([4, 4]),\n", - " b: array([5, 5]),\n", - ")\n", - "========================================\n", - "Batch(\n", - " action: array([1., 2., 3.]),\n", - " reward: array(3.66),\n", - " obs: Batch(\n", - " rgb_obs: array([[0., 0., 0.],\n", - " [0., 0., 0.],\n", - " [0., 0., 0.]]),\n", - " flatten_obs: array([1., 1., 1., 1., 1.]),\n", - " ),\n", - " extra: 'extra_string',\n", - ")\n", - "\n", - "[[0. 0. 0.]\n", - " [0. 0. 0.]\n", - " [0. 0. 0.]]\n", - "========================================\n", - "Batch(\n", - " obs: Batch(\n", - " rgb_obs: array([[[0., 0., 0.],\n", - " [0., 0., 0.],\n", - " [0., 0., 0.]],\n", - " \n", - " [[0., 0., 0.],\n", - " [0., 0., 0.],\n", - " [0., 0., 0.]],\n", - " \n", - " [[0., 0., 0.],\n", - " [0., 0., 0.],\n", - " [0., 0., 0.]]]),\n", - " flatten_obs: array([[1., 1., 1., 1., 1.],\n", - " [1., 1., 1., 1., 1.],\n", - " [1., 1., 1., 1., 1.]]),\n", - " ),\n", - " reward: array([3.66, 3.66, 3.66]),\n", - " action: array([[1., 2., 3.],\n", - " [1., 2., 3.],\n", - " [1., 2., 3.]]),\n", - ")\n", - "(3, 3, 3)\n" - ] - } - ] + "id": "Y6im_Mtb7Ody", + "outputId": "898e82c4-b940-4c35-a0f9-dedc4a9bc500" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "You can convert the data type easily, if you no longer want to use hybrid data type anymore." + ], + "metadata": { + "id": "1wfTUVKb6xki" + } + }, + { + "cell_type": "code", + "source": [ + "batch_cat.to_numpy()\n", + "print(batch_cat)\n", + "batch_cat.to_torch()\n", + "print(batch_cat)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "## Getting access to data\n", - "You can conveniently search or change the key-value pair in the Batch just as if it is a python dictionary." - ], - "metadata": { - "id": "JCf6bqY3uf5L" - } + "id": "F7WknVs98DHD", + "outputId": "cfd0712a-1df3-4208-e6cc-9149840bdc40" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Batch is even serializable, just in case you may need to save it to disk or restore it." + ], + "metadata": { + "id": "NTFVle1-9Biz" + } + }, + { + "cell_type": "code", + "source": [ + "import pickle\n", + "batch = Batch(obs=Batch(a=0.0, c=torch.Tensor([1.0, 2.0])), np=np.zeros([3, 4]))\n", + "batch_pk = pickle.loads(pickle.dumps(batch))\n", + "print(batch_pk)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "code", - "source": [ - "batch1 = Batch({'a': [4, 4], 'b': (5, 5)})\n", - "print(batch1)\n", - "# add or delete key-value pair in batch1\n", - "print(\"========================================\")\n", - "batch1.c = Batch(c1=np.arange(3), c2=False)\n", - "del batch1.a\n", - "print(batch1)\n", - "\n", - "# access value by key\n", - "print(\"========================================\")\n", - "assert batch1[\"c\"] is batch1.c\n", - "print(\"c\" in batch1)\n", - "\n", - "# traverse the Batch\n", - "print(\"========================================\")\n", - "for key, value in batch1.items():\n", - " print(str(key) + \": \" + str(value))" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "2TNIY90-vU9b", - "outputId": "de52ffe9-03c2-45f2-d95a-4071132daa4a" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Batch(\n", - " a: array([4, 4]),\n", - " b: array([5, 5]),\n", - ")\n", - "========================================\n", - "Batch(\n", - " b: array([5, 5]),\n", - " c: Batch(\n", - " c1: array([0, 1, 2]),\n", - " c2: array(False),\n", - " ),\n", - ")\n", - "========================================\n", - "True\n", - "========================================\n", - "b: [5 5]\n", - "c: Batch(\n", - " c1: array([0, 1, 2]),\n", - " c2: array(False),\n", - ")\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Indexing and Slicing\n", - "If all values in Batch share the same shape in certain dimensions. Batch can support advanced indexing and slicing just like a normal numpy array." - ], - "metadata": { - "id": "bVywStbV9jD2" - } - }, - { - "cell_type": "code", - "source": [ - "# Let us suppose we've got 4 environments, each returns a step of data\n", - "step_datas = [\n", - " {\n", - " \"act\": np.random.randint(10),\n", - " \"rew\": 0.0,\n", - " \"obs\": np.ones((3, 3)),\n", - " \"info\": {\"done\": np.random.choice(2), \"failed\": False},\n", - " } for _ in range(4)\n", - " ]\n", - "batch = Batch(step_datas)\n", - "print(batch)\n", - "print(batch.shape)\n", - "\n", - "# advanced indexing is supported, if we only want to select data in a given set of environments\n", - "print(\"========================================\")\n", - "print(batch[0])\n", - "print(batch[[0,3]])\n", - "\n", - "# slicing is also supported\n", - "print(\"========================================\")\n", - "print(batch[-2:])\n", - "\n" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "gKza3OJnzc_D", - "outputId": "4f240bfe-4a69-4c1b-b40e-983c5c4d0cbc" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Batch(\n", - " obs: array([[[1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.]],\n", - " \n", - " [[1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.]],\n", - " \n", - " [[1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.]],\n", - " \n", - " [[1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.]]]),\n", - " rew: array([0., 0., 0., 0.]),\n", - " info: Batch(\n", - " done: array([0, 1, 1, 0]),\n", - " failed: array([False, False, False, False]),\n", - " ),\n", - " act: array([0, 5, 1, 8]),\n", - ")\n", - "[4]\n", - "========================================\n", - "Batch(\n", - " obs: array([[1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.]]),\n", - " rew: 0.0,\n", - " info: Batch(\n", - " done: 0,\n", - " failed: False,\n", - " ),\n", - " act: 0,\n", - ")\n", - "Batch(\n", - " obs: array([[[1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.]],\n", - " \n", - " [[1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.]]]),\n", - " rew: array([0., 0.]),\n", - " info: Batch(\n", - " done: array([0, 0]),\n", - " failed: array([False, False]),\n", - " ),\n", - " act: array([0, 8]),\n", - ")\n", - "========================================\n", - "Batch(\n", - " obs: array([[[1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.]],\n", - " \n", - " [[1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.]]]),\n", - " rew: array([0., 0.]),\n", - " info: Batch(\n", - " done: array([1, 0]),\n", - " failed: array([False, False]),\n", - " ),\n", - " act: array([1, 8]),\n", - ")\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Aggregation and Splitting\n" - ], - "metadata": { - "id": "C7N9kU_Q9jXm" - } - }, - { - "cell_type": "markdown", - "source": [ - "Again, just like a numpy array. Play the example code below." - ], - "metadata": { - "id": "1vUwQ-Hw9jtu" - } - }, - { - "cell_type": "code", - "source": [ - "# concat batches with compatible keys\n", - "# try incompatible keys yourself if you feel curious\n", - "print(\"========================================\")\n", - "b1 = Batch(a=[{'b': np.float64(1.0), 'd': Batch(e=np.array(3.0))}])\n", - "b2 = Batch(a=[{'b': np.float64(4.0), 'd': {'e': np.array(6.0)}}])\n", - "b12_cat_out = Batch.cat([b1, b2])\n", - "print(b1)\n", - "print(b2)\n", - "print(b12_cat_out)\n", - "\n", - "# stack batches with compatible keys\n", - "# try incompatible keys yourself if you feel curious\n", - "print(\"========================================\")\n", - "b3 = Batch(a=np.zeros((3, 2)), b=np.ones((2, 3)), c=Batch(d=[[1], [2]]))\n", - "b4 = Batch(a=np.ones((3, 2)), b=np.ones((2, 3)), c=Batch(d=[[0], [3]]))\n", - "b34_stack = Batch.stack((b3, b4), axis=1)\n", - "print(b3)\n", - "print(b4)\n", - "print(b34_stack)\n", - "\n", - "# split the batch into small batches of size 1, breaking the order of the data\n", - "print(\"========================================\")\n", - "print(type(b34_stack.split(1)))\n", - "print(list(b34_stack.split(1, shuffle=True)))" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "f5UkReyn3_kb", - "outputId": "e7bb3324-7f20-4810-a328-479117efca55" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "========================================\n", - "Batch(\n", - " a: Batch(\n", - " d: Batch(\n", - " e: array([3.]),\n", - " ),\n", - " b: array([1.]),\n", - " ),\n", - ")\n", - "Batch(\n", - " a: Batch(\n", - " d: Batch(\n", - " e: array([6.]),\n", - " ),\n", - " b: array([4.]),\n", - " ),\n", - ")\n", - "Batch(\n", - " a: Batch(\n", - " d: Batch(\n", - " e: array([3., 6.]),\n", - " ),\n", - " b: array([1., 4.]),\n", - " ),\n", - ")\n", - "========================================\n", - "Batch(\n", - " a: array([[0., 0.],\n", - " [0., 0.],\n", - " [0., 0.]]),\n", - " b: array([[1., 1., 1.],\n", - " [1., 1., 1.]]),\n", - " c: Batch(\n", - " d: array([[1],\n", - " [2]]),\n", - " ),\n", - ")\n", - "Batch(\n", - " a: array([[1., 1.],\n", - " [1., 1.],\n", - " [1., 1.]]),\n", - " b: array([[1., 1., 1.],\n", - " [1., 1., 1.]]),\n", - " c: Batch(\n", - " d: array([[0],\n", - " [3]]),\n", - " ),\n", - ")\n", - "Batch(\n", - " c: Batch(\n", - " d: array([[[1],\n", - " [0]],\n", - " \n", - " [[2],\n", - " [3]]]),\n", - " ),\n", - " a: array([[[0., 0.],\n", - " [1., 1.]],\n", - " \n", - " [[0., 0.],\n", - " [1., 1.]],\n", - " \n", - " [[0., 0.],\n", - " [1., 1.]]]),\n", - " b: array([[[1., 1., 1.],\n", - " [1., 1., 1.]],\n", - " \n", - " [[1., 1., 1.],\n", - " [1., 1., 1.]]]),\n", - ")\n", - "========================================\n", - "\n", - "[Batch(\n", - " c: Batch(\n", - " d: array([[[1],\n", - " [0]]]),\n", - " ),\n", - " a: array([[[0., 0.],\n", - " [1., 1.]]]),\n", - " b: array([[[1., 1., 1.],\n", - " [1., 1., 1.]]]),\n", - "), Batch(\n", - " c: Batch(\n", - " d: array([[[2],\n", - " [3]]]),\n", - " ),\n", - " a: array([[[0., 0.],\n", - " [1., 1.]]]),\n", - " b: array([[[1., 1., 1.],\n", - " [1., 1., 1.]]]),\n", - ")]\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Data type converting\n", - "Besides numpy array, Batch actually also supports Torch Tensor. The usages are exactly the same. Cool, isn't it?" - ], - "metadata": { - "id": "Smc_W1Cx6zRS" - } - }, - { - "cell_type": "code", - "source": [ - "import torch\n", - "batch1 = Batch(a=np.arange(2), b=torch.zeros((2,2)))\n", - "batch2 = Batch(a=np.arange(2), b=torch.ones((2,2)))\n", - "batch_cat = Batch.cat([batch1, batch2, batch1])\n", - "print(batch_cat)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "Y6im_Mtb7Ody", - "outputId": "898e82c4-b940-4c35-a0f9-dedc4a9bc500" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Batch(\n", - " a: array([0, 1, 0, 1, 0, 1]),\n", - " b: tensor([[0., 0.],\n", - " [0., 0.],\n", - " [1., 1.],\n", - " [1., 1.],\n", - " [0., 0.],\n", - " [0., 0.]]),\n", - ")\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "You can convert the data type easily, if you no longer want to use hybrid data type anymore." - ], - "metadata": { - "id": "1wfTUVKb6xki" - } - }, - { - "cell_type": "code", - "source": [ - "batch_cat.to_numpy()\n", - "print(batch_cat)\n", - "batch_cat.to_torch()\n", - "print(batch_cat)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "F7WknVs98DHD", - "outputId": "cfd0712a-1df3-4208-e6cc-9149840bdc40" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Batch(\n", - " a: array([0, 1, 0, 1, 0, 1]),\n", - " b: array([[0., 0.],\n", - " [0., 0.],\n", - " [1., 1.],\n", - " [1., 1.],\n", - " [0., 0.],\n", - " [0., 0.]], dtype=float32),\n", - ")\n", - "Batch(\n", - " a: tensor([0, 1, 0, 1, 0, 1]),\n", - " b: tensor([[0., 0.],\n", - " [0., 0.],\n", - " [1., 1.],\n", - " [1., 1.],\n", - " [0., 0.],\n", - " [0., 0.]]),\n", - ")\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "Batch is even serializable, just in case you may need to save it to disk or restore it." - ], - "metadata": { - "id": "NTFVle1-9Biz" - } - }, - { - "cell_type": "code", - "source": [ - "import pickle\n", - "batch = Batch(obs=Batch(a=0.0, c=torch.Tensor([1.0, 2.0])), np=np.zeros([3, 4]))\n", - "batch_pk = pickle.loads(pickle.dumps(batch))\n", - "print(batch_pk)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "Lnf17OXv9YRb", - "outputId": "753753f2-3f66-4d4b-b4ff-d57f9c40d1da" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Batch(\n", - " obs: Batch(\n", - " a: array(0.),\n", - " c: tensor([1., 2.]),\n", - " ),\n", - " np: array([[0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.]]),\n", - ")\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "# Further Reading" - ], - "metadata": { - "id": "-vPMiPZ-9kJN" - } - }, - { - "cell_type": "markdown", - "source": [ - "Would like to learn more advanced usages of Batch? Feel curious about how data is organised inside the Batch? Check the [documentation](https://tianshou.readthedocs.io/en/master/api/tianshou.data.html) and other [tutorials](https://tianshou.readthedocs.io/en/master/tutorials/batch.html#) for more details." - ], - "metadata": { - "id": "8Oc1p8ud9kcu" - } - } - ] -} \ No newline at end of file + "id": "Lnf17OXv9YRb", + "outputId": "753753f2-3f66-4d4b-b4ff-d57f9c40d1da" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Further Reading" + ], + "metadata": { + "id": "-vPMiPZ-9kJN" + } + }, + { + "cell_type": "markdown", + "source": [ + "Would like to learn more advanced usages of Batch? Feel curious about how data is organised inside the Batch? Check the [documentation](https://tianshou.readthedocs.io/en/master/api/tianshou.data.html) and other [tutorials](https://tianshou.readthedocs.io/en/master/tutorials/batch.html#) for more details." + ], + "metadata": { + "id": "8Oc1p8ud9kcu" + } + } + ] +} diff --git a/notebooks/L2_Buffer.ipynb b/notebooks/L2_Buffer.ipynb index a559444..e5ae2d8 100644 --- a/notebooks/L2_Buffer.ipynb +++ b/notebooks/L2_Buffer.ipynb @@ -1,575 +1,394 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] }, - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "4TCEkXj7LFe2" - }, - "outputs": [], - "source": [ - "# Remember to install tianshou first\n", - "!pip install tianshou==0.4.8\n", - "!pip install gym" - ] + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "4TCEkXj7LFe2" + }, + "outputs": [], + "source": [ + "# Remember to install tianshou first\n", + "!pip install tianshou==0.4.8\n", + "!pip install gym" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Overview\n", + "Replay Buffer is a very common module in DRL implementations. In Tianshou, you can consider Buffer module as as a specialized form of Batch, which helps you track all data trajectories and provide utilities such as sampling method besides the basic storage.\n", + "\n", + "There are many kinds of Buffer modules in Tianshou, two most basic ones are ReplayBuffer and VectorReplayBuffer. The later one is specially designed for parallelized environments (will introduce in tutorial L3)." + ], + "metadata": { + "id": "xoPiGVD8LNma" + } + }, + { + "cell_type": "markdown", + "source": [ + "# Usages" + ], + "metadata": { + "id": "OdesCAxANehZ" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Basic usages as a batch\n", + "Usually a buffer stores all the data in a batch with circular-queue style." + ], + "metadata": { + "id": "fUbLl9T_SrTR" + } + }, + { + "cell_type": "code", + "source": [ + "from tianshou.data import Batch, ReplayBuffer\n", + "# a buffer is initialised with its maxsize set to 10 (older data will be discarded if more data flow in).\n", + "print(\"========================================\")\n", + "buf = ReplayBuffer(size=10)\n", + "print(buf)\n", + "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))\n", + "\n", + "# add 3 steps of data into ReplayBuffer sequentially\n", + "print(\"========================================\")\n", + "for i in range(3):\n", + " buf.add(Batch(obs=i, act=i, rew=i, done=0, obs_next=i + 1, info={}))\n", + "print(buf)\n", + "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))\n", + "\n", + "# add another 10 steps of data into ReplayBuffer sequentially\n", + "print(\"========================================\")\n", + "for i in range(3, 13):\n", + " buf.add(Batch(obs=i, act=i, rew=i, done=0, obs_next=i + 1, info={}))\n", + "print(buf)\n", + "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "# Overview\n", - "Replay Buffer is a very common module in DRL implementations. In Tianshou, you can consider Buffer module as as a specialized form of Batch, which helps you track all data trajectories and provide utilities such as sampling method besides the basic storage.\n", - "\n", - "There are many kinds of Buffer modules in Tianshou, two most basic ones are ReplayBuffer and VectorReplayBuffer. The later one is specially designed for parallelized environments (will introduce in tutorial L3)." - ], - "metadata": { - "id": "xoPiGVD8LNma" - } + "id": "mocZ6IqZTH62", + "outputId": "66cc4181-c51b-4a47-aacf-666b92b7fc52" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Just like Batch, ReplayBuffer supports concatenation, splitting, advanced slicing and indexing, etc." + ], + "metadata": { + "id": "H8B85Y5yUfTy" + } + }, + { + "cell_type": "code", + "source": [ + "print(buf[-1])\n", + "print(buf[-3:])\n", + "# Try more methods you find useful in Batch yourself." + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "# Usages" - ], - "metadata": { - "id": "OdesCAxANehZ" - } + "id": "cOX-ADOPNeEK", + "outputId": "f1a8ec01-b878-419b-f180-bdce3dee73e6" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "ReplayBuffer can also be saved into local disk, still keeping track of the trajectories. This is extremely helpful in offline DRL settings." + ], + "metadata": { + "id": "vqldap-2WQBh" + } + }, + { + "cell_type": "code", + "source": [ + "import pickle\n", + "_buf = pickle.loads(pickle.dumps(buf))" + ], + "metadata": { + "id": "Ppx0L3niNT5K" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Understanding reserved keys for buffer\n", + "As I have explained, ReplayBuffer is specially designed to utilize the implementations of DRL algorithms. So, for convenience, we reserve certain seven reserved keys in Batch.\n", + "\n", + "* `obs`\n", + "* `act`\n", + "* `rew`\n", + "* `done`\n", + "* `obs_next`\n", + "* `info`\n", + "* `policy`\n", + "\n", + "The meaning of these seven reserved keys are consistent with the meaning in [OPENAI Gym](https://gym.openai.com/). We would recommend you simply use these seven keys when adding batched data into ReplayBuffer, because\n", + "some of them are tracked in ReplayBuffer (e.g. \"done\" value is tracked to help us determine a trajectory's start index and end index, together with its total reward and episode length.)\n", + "\n", + "```\n", + "buf.add(Batch(......, extro_info=0)) # This is okay but not recommended.\n", + "buf.add(Batch(......, info={\"extro_info\":0})) # Recommended.\n", + "```\n" + ], + "metadata": { + "id": "Eqezp0OyXn6J" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Data sampling\n", + "We keep a replay buffer in DRL for one purpose:\"sample data from it for training\". `ReplayBuffer.sample()` and `ReplayBuffer.split(..., shuffle=True)` can both fullfill this need." + ], + "metadata": { + "id": "ueAbTspsc6jo" + } + }, + { + "cell_type": "code", + "source": [ + "buf.sample(5)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "## Basic usages as a batch\n", - "Usually a buffer stores all the data in a batch with circular-queue style." - ], - "metadata": { - "id": "fUbLl9T_SrTR" - } + "id": "P5xnYOhrchDl", + "outputId": "bcd2c970-efa6-43bb-8709-720d38f77bbd" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Trajectory tracking\n", + "Compared to Batch, a unique feature of ReplayBuffer is that it can help you track the environment trajectories.\n", + "\n", + "First, let us simulate a situation, where we add three trajectories into the buffer. The last trajectory is still not finished yet." + ], + "metadata": { + "id": "IWyaOSKOcgK4" + } + }, + { + "cell_type": "code", + "source": [ + "from numpy import False_\n", + "buf = ReplayBuffer(size=10)\n", + "# Add the first trajectory (length is 3) into ReplayBuffer\n", + "print(\"========================================\")\n", + "for i in range(3):\n", + " result = buf.add(Batch(obs=i, act=i, rew=i, done=True if i==2 else False, obs_next=i + 1, info={}))\n", + " print(result)\n", + "print(buf)\n", + "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))\n", + "# Add the second trajectory (length is 5) into ReplayBuffer\n", + "print(\"========================================\")\n", + "for i in range(3, 8):\n", + " result = buf.add(Batch(obs=i, act=i, rew=i, done=True if i==7 else False, obs_next=i + 1, info={}))\n", + " print(result)\n", + "print(buf)\n", + "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))\n", + "# Add the third trajectory (length is 5, still not finished) into ReplayBuffer\n", + "print(\"========================================\")\n", + "for i in range(8, 13):\n", + " result = buf.add(Batch(obs=i, act=i, rew=i, done=False, obs_next=i + 1, info={}))\n", + " print(result)\n", + "print(buf)\n", + "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "code", - "source": [ - "from tianshou.data import Batch, ReplayBuffer\n", - "# a buffer is initialised with its maxsize set to 10 (older data will be discarded if more data flow in).\n", - "print(\"========================================\")\n", - "buf = ReplayBuffer(size=10)\n", - "print(buf)\n", - "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))\n", - "\n", - "# add 3 steps of data into ReplayBuffer sequentially\n", - "print(\"========================================\")\n", - "for i in range(3):\n", - " buf.add(Batch(obs=i, act=i, rew=i, done=0, obs_next=i + 1, info={}))\n", - "print(buf)\n", - "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))\n", - "\n", - "# add another 10 steps of data into ReplayBuffer sequentially\n", - "print(\"========================================\")\n", - "for i in range(3, 13):\n", - " buf.add(Batch(obs=i, act=i, rew=i, done=0, obs_next=i + 1, info={}))\n", - "print(buf)\n", - "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "mocZ6IqZTH62", - "outputId": "66cc4181-c51b-4a47-aacf-666b92b7fc52" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "========================================\n", - "ReplayBuffer()\n", - "maxsize: 10, data length: 0\n", - "========================================\n", - "ReplayBuffer(\n", - " info: Batch(),\n", - " act: array([0, 1, 2, 0, 0, 0, 0, 0, 0, 0]),\n", - " obs: array([0, 1, 2, 0, 0, 0, 0, 0, 0, 0]),\n", - " done: array([False, False, False, False, False, False, False, False, False,\n", - " False]),\n", - " rew: array([0., 1., 2., 0., 0., 0., 0., 0., 0., 0.]),\n", - " obs_next: array([1, 2, 3, 0, 0, 0, 0, 0, 0, 0]),\n", - ")\n", - "maxsize: 10, data length: 3\n", - "========================================\n", - "ReplayBuffer(\n", - " info: Batch(),\n", - " act: array([10, 11, 12, 3, 4, 5, 6, 7, 8, 9]),\n", - " obs: array([10, 11, 12, 3, 4, 5, 6, 7, 8, 9]),\n", - " done: array([False, False, False, False, False, False, False, False, False,\n", - " False]),\n", - " rew: array([10., 11., 12., 3., 4., 5., 6., 7., 8., 9.]),\n", - " obs_next: array([11, 12, 13, 4, 5, 6, 7, 8, 9, 10]),\n", - ")\n", - "maxsize: 10, data length: 10\n" - ] - } - ] + "id": "H0qRb6HLfhLB", + "outputId": "9bdb7d4e-b6ec-489f-a221-0bddf706d85b" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### episode length and rewards tracking\n", + "Notice that `ReplayBuffer.add()` returns a tuple of 4 numbers every time it returns, meaning `(current_index, episode_reward, episode_length, episode_start_index)`. `episode_reward` and `episode_length` are valid only when a trajectory is finished. This might save developers some trouble.\n", + "\n" + ], + "metadata": { + "id": "dO7PWdb_hkXA" + } + }, + { + "cell_type": "markdown", + "source": [ + "### Episode index management\n", + "In the ReplayBuffer above, we can get access to any data step by indexing.\n" + ], + "metadata": { + "id": "xbVc90z8itH0" + } + }, + { + "cell_type": "code", + "source": [ + "print(buf)\n", + "data = buf[6]\n", + "print(data)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "Just like Batch, ReplayBuffer supports concatenation, splitting, advanced slicing and indexing, etc." - ], - "metadata": { - "id": "H8B85Y5yUfTy" - } + "id": "4mKwo54MjupY", + "outputId": "9ae14a7e-908b-44eb-afec-89b45bac5961" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Now we know that step \"6\" is not the start of an episode (it should be step 4, 4-7 is the second trajectory we add into the ReplayBuffer), we wonder what is the earliest index of the that episode.\n", + "\n", + "This may seem easy but actually it is not. We cannot simply look at the \"done\" flag now, because we can see that since the third-added trajectory is not finished yet, step \"4\" is surrounded by flag \"False\". There are many things to consider. Things could get more nasty if you are using more advanced ReplayBuffer like VectorReplayBuffer, because now the data is not stored in a simple circular-queue.\n", + "\n", + "Luckily, all ReplayBuffer instances help you identify step indexes through a unified API." + ], + "metadata": { + "id": "p5Co_Fmzj8Sw" + } + }, + { + "cell_type": "code", + "source": [ + "# Search for the previous index of index \"6\"\n", + "now_index = 6\n", + "while True:\n", + " prev_index = buf.prev(now_index)\n", + " print(prev_index)\n", + " if prev_index == now_index:\n", + " break\n", + " else:\n", + " now_index = prev_index" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "code", - "source": [ - "print(buf[-1])\n", - "print(buf[-3:])\n", - "# Try more methods you find useful in Batch yourself." - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "cOX-ADOPNeEK", - "outputId": "f1a8ec01-b878-419b-f180-bdce3dee73e6" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Batch(\n", - " obs: array(9),\n", - " act: array(9),\n", - " rew: array(9.),\n", - " done: array(False),\n", - " obs_next: array(10),\n", - " info: Batch(),\n", - " policy: Batch(),\n", - ")\n", - "Batch(\n", - " obs: array([7, 8, 9]),\n", - " act: array([7, 8, 9]),\n", - " rew: array([7., 8., 9.]),\n", - " done: array([False, False, False]),\n", - " obs_next: array([ 8, 9, 10]),\n", - " info: Batch(),\n", - " policy: Batch(),\n", - ")\n" - ] - } - ] + "id": "DcJ0LEX6mxHg", + "outputId": "7830f5fb-96d9-4298-d09b-24e64b2f633c" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Using `ReplayBuffer.prev()`, we know that the earliest step of that episode is step \"3\". Similarly, `ReplayBuffer.next()` helps us indentify the last index of an episode regardless of which kind of ReplayBuffer we are using." + ], + "metadata": { + "id": "4Wlb57V4lQyQ" + } + }, + { + "cell_type": "code", + "source": [ + "# next step of indexes [4,5,6,7,8,9] are:\n", + "print(buf.next([4,5,6,7,8,9]))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "ReplayBuffer can also be saved into local disk, still keeping track of the trajectories. This is extremely helpful in offline DRL settings." - ], - "metadata": { - "id": "vqldap-2WQBh" - } + "id": "zl5TRMo7oOy5", + "outputId": "4a11612c-3ee0-4e74-b028-c8759e71fbdb" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "We can also search for the indexes which are labeled \"done: False\", but are the last step in a trajectory." + ], + "metadata": { + "id": "YJ9CcWZXoOXw" + } + }, + { + "cell_type": "code", + "source": [ + "print(buf.unfinished_index())" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "code", - "source": [ - "import pickle\n", - "_buf = pickle.loads(pickle.dumps(buf))" - ], - "metadata": { - "id": "Ppx0L3niNT5K" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## Understanding reserved keys for buffer\n", - "As I have explained, ReplayBuffer is specially designed to utilize the implementations of DRL algorithms. So, for convenience, we reserve certain seven reserved keys in Batch.\n", - "\n", - "* `obs`\n", - "* `act`\n", - "* `rew`\n", - "* `done`\n", - "* `obs_next`\n", - "* `info`\n", - "* `policy`\n", - "\n", - "The meaning of these seven reserved keys are consistent with the meaning in [OPENAI Gym](https://gym.openai.com/). We would recommend you simply use these seven keys when adding batched data into ReplayBuffer, because\n", - "some of them are tracked in ReplayBuffer (e.g. \"done\" value is tracked to help us determine a trajectory's start index and end index, together with its total reward and episode length.)\n", - "\n", - "```\n", - "buf.add(Batch(......, extro_info=0)) # This is okay but not recommended.\n", - "buf.add(Batch(......, info={\"extro_info\":0})) # Recommended.\n", - "```\n" - ], - "metadata": { - "id": "Eqezp0OyXn6J" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Data sampling\n", - "We keep a replay buffer in DRL for one purpose:\"sample data from it for training\". `ReplayBuffer.sample()` and `ReplayBuffer.split(..., shuffle=True)` can both fullfill this need." - ], - "metadata": { - "id": "ueAbTspsc6jo" - } - }, - { - "cell_type": "code", - "source": [ - "buf.sample(5)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "P5xnYOhrchDl", - "outputId": "bcd2c970-efa6-43bb-8709-720d38f77bbd" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "(Batch(\n", - " obs: array([10, 11, 4, 3, 8]),\n", - " act: array([10, 11, 4, 3, 8]),\n", - " rew: array([10., 11., 4., 3., 8.]),\n", - " done: array([False, False, False, False, False]),\n", - " obs_next: array([11, 12, 5, 4, 9]),\n", - " info: Batch(),\n", - " policy: Batch(),\n", - " ), array([0, 1, 4, 3, 8]))" - ] - }, - "metadata": {}, - "execution_count": 5 - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Trajectory tracking\n", - "Compared to Batch, a unique feature of ReplayBuffer is that it can help you track the environment trajectories.\n", - "\n", - "First, let us simulate a situation, where we add three trajectories into the buffer. The last trajectory is still not finished yet." - ], - "metadata": { - "id": "IWyaOSKOcgK4" - } - }, - { - "cell_type": "code", - "source": [ - "from numpy import False_\n", - "buf = ReplayBuffer(size=10)\n", - "# Add the first trajectory (length is 3) into ReplayBuffer\n", - "print(\"========================================\")\n", - "for i in range(3):\n", - " result = buf.add(Batch(obs=i, act=i, rew=i, done=True if i==2 else False, obs_next=i + 1, info={}))\n", - " print(result)\n", - "print(buf)\n", - "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))\n", - "# Add the second trajectory (length is 5) into ReplayBuffer\n", - "print(\"========================================\")\n", - "for i in range(3, 8):\n", - " result = buf.add(Batch(obs=i, act=i, rew=i, done=True if i==7 else False, obs_next=i + 1, info={}))\n", - " print(result)\n", - "print(buf)\n", - "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))\n", - "# Add the third trajectory (length is 5, still not finished) into ReplayBuffer\n", - "print(\"========================================\")\n", - "for i in range(8, 13):\n", - " result = buf.add(Batch(obs=i, act=i, rew=i, done=False, obs_next=i + 1, info={}))\n", - " print(result)\n", - "print(buf)\n", - "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "H0qRb6HLfhLB", - "outputId": "9bdb7d4e-b6ec-489f-a221-0bddf706d85b" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "========================================\n", - "(array([0]), array([0.]), array([0]), array([0]))\n", - "(array([1]), array([0.]), array([0]), array([0]))\n", - "(array([2]), array([3.]), array([3]), array([0]))\n", - "ReplayBuffer(\n", - " info: Batch(),\n", - " act: array([0, 1, 2, 0, 0, 0, 0, 0, 0, 0]),\n", - " obs: array([0, 1, 2, 0, 0, 0, 0, 0, 0, 0]),\n", - " done: array([False, False, True, False, False, False, False, False, False,\n", - " False]),\n", - " rew: array([0., 1., 2., 0., 0., 0., 0., 0., 0., 0.]),\n", - " obs_next: array([1, 2, 3, 0, 0, 0, 0, 0, 0, 0]),\n", - ")\n", - "maxsize: 10, data length: 3\n", - "========================================\n", - "(array([3]), array([0.]), array([0]), array([3]))\n", - "(array([4]), array([0.]), array([0]), array([3]))\n", - "(array([5]), array([0.]), array([0]), array([3]))\n", - "(array([6]), array([0.]), array([0]), array([3]))\n", - "(array([7]), array([25.]), array([5]), array([3]))\n", - "ReplayBuffer(\n", - " info: Batch(),\n", - " act: array([0, 1, 2, 3, 4, 5, 6, 7, 0, 0]),\n", - " obs: array([0, 1, 2, 3, 4, 5, 6, 7, 0, 0]),\n", - " done: array([False, False, True, False, False, False, False, True, False,\n", - " False]),\n", - " rew: array([0., 1., 2., 3., 4., 5., 6., 7., 0., 0.]),\n", - " obs_next: array([1, 2, 3, 4, 5, 6, 7, 8, 0, 0]),\n", - ")\n", - "maxsize: 10, data length: 8\n", - "========================================\n", - "(array([8]), array([0.]), array([0]), array([8]))\n", - "(array([9]), array([0.]), array([0]), array([8]))\n", - "(array([0]), array([0.]), array([0]), array([8]))\n", - "(array([1]), array([0.]), array([0]), array([8]))\n", - "(array([2]), array([0.]), array([0]), array([8]))\n", - "ReplayBuffer(\n", - " info: Batch(),\n", - " act: array([10, 11, 12, 3, 4, 5, 6, 7, 8, 9]),\n", - " obs: array([10, 11, 12, 3, 4, 5, 6, 7, 8, 9]),\n", - " done: array([False, False, False, False, False, False, False, True, False,\n", - " False]),\n", - " rew: array([10., 11., 12., 3., 4., 5., 6., 7., 8., 9.]),\n", - " obs_next: array([11, 12, 13, 4, 5, 6, 7, 8, 9, 10]),\n", - ")\n", - "maxsize: 10, data length: 10\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "### episode length and rewards tracking\n", - "Notice that `ReplayBuffer.add()` returns a tuple of 4 numbers every time it returns, meaning `(current_index, episode_reward, episode_length, episode_start_index)`. `episode_reward` and `episode_length` are valid only when a trajectory is finished. This might save developers some trouble.\n", - "\n" - ], - "metadata": { - "id": "dO7PWdb_hkXA" - } - }, - { - "cell_type": "markdown", - "source": [ - "### Episode index management\n", - "In the ReplayBuffer above, we can get access to any data step by indexing.\n" - ], - "metadata": { - "id": "xbVc90z8itH0" - } - }, - { - "cell_type": "code", - "source": [ - "print(buf)\n", - "data = buf[6]\n", - "print(data)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "4mKwo54MjupY", - "outputId": "9ae14a7e-908b-44eb-afec-89b45bac5961" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "ReplayBuffer(\n", - " info: Batch(),\n", - " act: array([10, 11, 12, 3, 4, 5, 6, 7, 8, 9]),\n", - " obs: array([10, 11, 12, 3, 4, 5, 6, 7, 8, 9]),\n", - " done: array([False, False, False, False, False, False, False, True, False,\n", - " False]),\n", - " rew: array([10., 11., 12., 3., 4., 5., 6., 7., 8., 9.]),\n", - " obs_next: array([11, 12, 13, 4, 5, 6, 7, 8, 9, 10]),\n", - ")\n", - "Batch(\n", - " obs: array(6),\n", - " act: array(6),\n", - " rew: array(6.),\n", - " done: array(False),\n", - " obs_next: array(7),\n", - " info: Batch(),\n", - " policy: Batch(),\n", - ")\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "Now we know that step \"6\" is not the start of an episode (it should be step 4, 4-7 is the second trajectory we add into the ReplayBuffer), we wonder what is the earliest index of the that episode.\n", - "\n", - "This may seem easy but actually it is not. We cannot simply look at the \"done\" flag now, because we can see that since the third-added trajectory is not finished yet, step \"4\" is surrounded by flag \"False\". There are many things to consider. Things could get more nasty if you are using more advanced ReplayBuffer like VectorReplayBuffer, because now the data is not stored in a simple circular-queue.\n", - "\n", - "Luckily, all ReplayBuffer instances help you identify step indexes through a unified API." - ], - "metadata": { - "id": "p5Co_Fmzj8Sw" - } - }, - { - "cell_type": "code", - "source": [ - "# Search for the previous index of index \"6\"\n", - "now_index = 6\n", - "while True:\n", - " prev_index = buf.prev(now_index)\n", - " print(prev_index)\n", - " if prev_index == now_index:\n", - " break\n", - " else:\n", - " now_index = prev_index" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "DcJ0LEX6mxHg", - "outputId": "7830f5fb-96d9-4298-d09b-24e64b2f633c" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "5\n", - "4\n", - "3\n", - "3\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "Using `ReplayBuffer.prev()`, we know that the earliest step of that episode is step \"3\". Similarly, `ReplayBuffer.next()` helps us indentify the last index of an episode regardless of which kind of ReplayBuffer we are using." - ], - "metadata": { - "id": "4Wlb57V4lQyQ" - } - }, - { - "cell_type": "code", - "source": [ - "# next step of indexes [4,5,6,7,8,9] are:\n", - "print(buf.next([4,5,6,7,8,9]))" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "zl5TRMo7oOy5", - "outputId": "4a11612c-3ee0-4e74-b028-c8759e71fbdb" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "[5 6 7 7 9 0]\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "We can also search for the indexes which are labeled \"done: False\", but are the last step in a trajectory." - ], - "metadata": { - "id": "YJ9CcWZXoOXw" - } - }, - { - "cell_type": "code", - "source": [ - "print(buf.unfinished_index())" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "Xkawk97NpItg", - "outputId": "df10b359-c2c7-42ca-e50d-9caee6bccadd" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "[2]\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "Aforementioned APIs will be helpful when we calculate quantities like GAE and n-step-returns in DRL algorithms ([Example usage in Tianshou](https://github.com/thu-ml/tianshou/blob/6fc68578127387522424460790cbcb32a2bd43c4/tianshou/policy/base.py#L384)). The unified APIs ensure a modular design and a flexible interface." - ], - "metadata": { - "id": "8_lMr0j3pOmn" - } - }, - { - "cell_type": "markdown", - "source": [ - "# Further Reading\n", - "## Other Buffer Module\n", - "\n", - "* PrioritizedReplayBuffer, which helps you implement [prioritized experience replay](https://arxiv.org/abs/1511.05952)\n", - "* CachedReplayBuffer, one main buffer with several cached buffers (higher sample efficiency in some scenarios)\n", - "* ReplayBufferManager, A base class that can be inherited (may help you manage multiple buffers).\n", - "\n", - "Check the documentation and the source code for more details.\n", - "\n", - "## Support for steps stacking to use RNN in DRL.\n", - "There is an option called `stack_num` (default to 1) when initialising the ReplayBuffer, which may help you use RNN in your algorithm. Check the documentation for details." - ], - "metadata": { - "id": "FEyE0c7tNfwa" - } - } - ] -} \ No newline at end of file + "id": "Xkawk97NpItg", + "outputId": "df10b359-c2c7-42ca-e50d-9caee6bccadd" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Aforementioned APIs will be helpful when we calculate quantities like GAE and n-step-returns in DRL algorithms ([Example usage in Tianshou](https://github.com/thu-ml/tianshou/blob/6fc68578127387522424460790cbcb32a2bd43c4/tianshou/policy/base.py#L384)). The unified APIs ensure a modular design and a flexible interface." + ], + "metadata": { + "id": "8_lMr0j3pOmn" + } + }, + { + "cell_type": "markdown", + "source": [ + "# Further Reading\n", + "## Other Buffer Module\n", + "\n", + "* PrioritizedReplayBuffer, which helps you implement [prioritized experience replay](https://arxiv.org/abs/1511.05952)\n", + "* CachedReplayBuffer, one main buffer with several cached buffers (higher sample efficiency in some scenarios)\n", + "* ReplayBufferManager, A base class that can be inherited (may help you manage multiple buffers).\n", + "\n", + "Check the documentation and the source code for more details.\n", + "\n", + "## Support for steps stacking to use RNN in DRL.\n", + "There is an option called `stack_num` (default to 1) when initialising the ReplayBuffer, which may help you use RNN in your algorithm. Check the documentation for details." + ], + "metadata": { + "id": "FEyE0c7tNfwa" + } + } + ] +} diff --git a/notebooks/L3_Vectorized__Environment.ipynb b/notebooks/L3_Vectorized__Environment.ipynb index ad07bcd..6ecad98 100644 --- a/notebooks/L3_Vectorized__Environment.ipynb +++ b/notebooks/L3_Vectorized__Environment.ipynb @@ -1,225 +1,215 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] }, - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "0T7FYEnlBT6F" - }, - "outputs": [], - "source": [ - "# Remember to install tianshou first\n", - "!pip install tianshou==0.4.8\n", - "!pip install gym" - ] + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0T7FYEnlBT6F" + }, + "outputs": [], + "source": [ + "# Remember to install tianshou first\n", + "!pip install tianshou==0.4.8\n", + "!pip install gym" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Overview\n", + "In reinforcement learning, the agent interacts with environments to improve itself. In this tutorial we will concentrate on the environment part. Although there are many kinds of environments or their libraries in DRL research, Tianshou chooses to keep a consistent API with [OPENAI Gym](https://gym.openai.com/).\n", + "\n", + "
\n", + "\n", + "\n", + " The agents interacting with the environment \n", + "
\n", + "\n", + "In Gym, an environment receives an action and returns next observation and reward. This process is slow and sometimes can be the throughput bottleneck in a DRL experiment.\n" + ], + "metadata": { + "id": "W5V7z3fVX7_b" + } + }, + { + "cell_type": "markdown", + "source": [ + "Tianshou provides vectorized environment wrapper for a Gym environment. This wrapper allows you to make use of multiple cpu cores in your server to accelerate the data sampling." + ], + "metadata": { + "id": "A0NGWZ8adBwt" + } + }, + { + "cell_type": "code", + "source": [ + "from tianshou.env import SubprocVectorEnv\n", + "import numpy as np\n", + "import gym\n", + "import time\n", + "\n", + "num_cpus = [1,2,5]\n", + "for num_cpu in num_cpus:\n", + " env = SubprocVectorEnv([lambda: gym.make('CartPole-v0') for _ in range(num_cpu)])\n", + " env.reset()\n", + " sampled_steps = 0\n", + " time_start = time.time()\n", + " while sampled_steps < 1000:\n", + " act = np.random.choice(2, size=num_cpu)\n", + " obs, rew, done, info = env.step(act)\n", + " if np.sum(done):\n", + " env.reset(np.where(done)[0])\n", + " sampled_steps += num_cpu\n", + " time_used = time.time() - time_start\n", + " print(\"{}s used to sample 1000 steps if using {} cpus.\".format(time_used, num_cpu))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "# Overview\n", - "In reinforcement learning, the agent interacts with environments to improve itself. In this tutorial we will concentrate on the environment part. Although there are many kinds of environments or their libraries in DRL research, Tianshou chooses to keep a consistent API with [OPENAI Gym](https://gym.openai.com/).\n", - "\n", - "
\n", - "\n", - "\n", - " The agents interacting with the environment \n", - "
\n", - "\n", - "In Gym, an environment receives an action and returns next observation and reward. This process is slow and sometimes can be the throughput bottleneck in a DRL experiment.\n" - ], - "metadata": { - "id": "W5V7z3fVX7_b" - } - }, - { - "cell_type": "markdown", - "source": [ - "Tianshou provides vectorized environment wrapper for a Gym environment. This wrapper allows you to make use of multiple cpu cores in your server to accelerate the data sampling." - ], - "metadata": { - "id": "A0NGWZ8adBwt" - } - }, - { - "cell_type": "code", - "source": [ - "from tianshou.env import SubprocVectorEnv\n", - "import numpy as np\n", - "import gym\n", - "import time\n", - "\n", - "num_cpus = [1,2,5]\n", - "for num_cpu in num_cpus:\n", - " env = SubprocVectorEnv([lambda: gym.make('CartPole-v0') for _ in range(num_cpu)])\n", - " env.reset()\n", - " sampled_steps = 0\n", - " time_start = time.time()\n", - " while sampled_steps < 1000:\n", - " act = np.random.choice(2, size=num_cpu)\n", - " obs, rew, done, info = env.step(act)\n", - " if np.sum(done):\n", - " env.reset(np.where(done)[0])\n", - " sampled_steps += num_cpu\n", - " time_used = time.time() - time_start\n", - " print(\"{}s used to sample 1000 steps if using {} cpus.\".format(time_used, num_cpu))" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "67wKtkiNi3lb", - "outputId": "1e04353b-7a91-4c32-e2ae-f3889d58aa5e" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "0.30551695823669434s used to sample 1000 steps if using 1 cpus.\n", - "0.2602052688598633s used to sample 1000 steps if using 2 cpus.\n", - "0.15763545036315918s used to sample 1000 steps if using 5 cpus.\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "You may notice that the speed doesn't increase linearly when we add subprocess numbers. There are multiple reasons behind this. One reason is that synchronize exection causes straggler effect. One way to solve this would be to use asynchronous mode. We leave this for further reading if you feel interested.\n", - "\n", - "Note that SubprocVectorEnv should only be used when the environment exection is slow. In practice, DummyVectorEnv (or raw Gym environment) is actually more efficient for a simple environment like CartPole because now you avoid both straggler effect and the overhead of communication between subprocesses." - ], - "metadata": { - "id": "S1b6vxp9nEUS" - } - }, - { - "cell_type": "markdown", - "source": [ - "# Usages\n", - "## Initialisation\n", - "Just pass in a list of functions which return the initialised environment upon called." - ], - "metadata": { - "id": "Z6yPxdqFp18j" - } - }, - { - "cell_type": "code", - "source": [ - "from tianshou.env import DummyVectorEnv\n", - "# In Gym\n", - "env = gym.make(\"CartPole-v0\")\n", - "\n", - "# In Tianshou\n", - "def helper_function():\n", - " env = gym.make(\"CartPole-v0\")\n", - " # other operations such as env.seed(np.random.choice(10))\n", - " return env\n", - "\n", - "envs = DummyVectorEnv([helper_function for _ in range(5)])\n", - "print(envs)" - ], - "metadata": { - "id": "ssLcrL_pq24-" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## EnvPool supporting\n", - "Besides integrated environment wrappers, Tianshou also fully supports [EnvPool](https://github.com/sail-sg/envpool/). Explore its Github page yourself." - ], - "metadata": { - "id": "X7p8csjdrwIN" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Environment exection and resetting\n", - "The only difference between Vectorized environments and standard Gym environments is that passed in actions and returned rewards/observations are also vectorized." - ], - "metadata": { - "id": "kvIfqh0vqAR5" - } - }, - { - "cell_type": "code", - "source": [ - "# In Gym, env.reset() returns a single observation.\n", - "print(\"In Gym, env.reset() returns a single observation.\")\n", - "print(env.reset())\n", - "\n", - "# In Tianshou, envs.reset() returns stacked observations.\n", - "print(\"========================================\")\n", - "print(\"In Tianshou, envs.reset() returns stacked observations.\")\n", - "print(envs.reset())\n", - "\n", - "obs, rew, done, info = envs.step(np.random.choice(2, size=num_cpu))\n", - "print(info)" - ], - "metadata": { - "id": "BH1ZnPG6tkdD" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "If we only want to execute several environments. The `id` argument can be used." - ], - "metadata": { - "id": "qXroB7KluvP9" - } - }, - { - "cell_type": "code", - "source": [ - "print(envs.step(np.random.choice(2, size=3), id=[0,3,1]))" - ], - "metadata": { - "id": "ufvFViKTu8d_" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "# Further Reading\n", - "## Other environment wrappers in Tianshou\n", - "\n", - "\n", - "* ShmemVectorEnv: use share memory instead of pipe based on SubprocVectorEnv;\n", - "* RayVectorEnv: use Ray for concurrent activities and is currently the only choice for parallel simulation in a cluster with multiple machines.\n", - "\n", - "Check the [documentation](https://tianshou.readthedocs.io/en/master/api/tianshou.env.html) for details.\n", - "\n", - "## Difference between synchronous and asynchronous mode (How to choose?)\n", - "Explanation can be found at the [Parallel Sampling](https://tianshou.readthedocs.io/en/master/tutorials/cheatsheet.html#parallel-sampling) tutorial." - ], - "metadata": { - "id": "fekHR1a6X_HB" - } - } - ] -} \ No newline at end of file + "id": "67wKtkiNi3lb", + "outputId": "1e04353b-7a91-4c32-e2ae-f3889d58aa5e" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "You may notice that the speed doesn't increase linearly when we add subprocess numbers. There are multiple reasons behind this. One reason is that synchronize exection causes straggler effect. One way to solve this would be to use asynchronous mode. We leave this for further reading if you feel interested.\n", + "\n", + "Note that SubprocVectorEnv should only be used when the environment exection is slow. In practice, DummyVectorEnv (or raw Gym environment) is actually more efficient for a simple environment like CartPole because now you avoid both straggler effect and the overhead of communication between subprocesses." + ], + "metadata": { + "id": "S1b6vxp9nEUS" + } + }, + { + "cell_type": "markdown", + "source": [ + "# Usages\n", + "## Initialisation\n", + "Just pass in a list of functions which return the initialised environment upon called." + ], + "metadata": { + "id": "Z6yPxdqFp18j" + } + }, + { + "cell_type": "code", + "source": [ + "from tianshou.env import DummyVectorEnv\n", + "# In Gym\n", + "env = gym.make(\"CartPole-v0\")\n", + "\n", + "# In Tianshou\n", + "def helper_function():\n", + " env = gym.make(\"CartPole-v0\")\n", + " # other operations such as env.seed(np.random.choice(10))\n", + " return env\n", + "\n", + "envs = DummyVectorEnv([helper_function for _ in range(5)])\n", + "print(envs)" + ], + "metadata": { + "id": "ssLcrL_pq24-" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## EnvPool supporting\n", + "Besides integrated environment wrappers, Tianshou also fully supports [EnvPool](https://github.com/sail-sg/envpool/). Explore its Github page yourself." + ], + "metadata": { + "id": "X7p8csjdrwIN" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Environment exection and resetting\n", + "The only difference between Vectorized environments and standard Gym environments is that passed in actions and returned rewards/observations are also vectorized." + ], + "metadata": { + "id": "kvIfqh0vqAR5" + } + }, + { + "cell_type": "code", + "source": [ + "# In Gym, env.reset() returns a single observation.\n", + "print(\"In Gym, env.reset() returns a single observation.\")\n", + "print(env.reset())\n", + "\n", + "# In Tianshou, envs.reset() returns stacked observations.\n", + "print(\"========================================\")\n", + "print(\"In Tianshou, envs.reset() returns stacked observations.\")\n", + "print(envs.reset())\n", + "\n", + "obs, rew, done, info = envs.step(np.random.choice(2, size=num_cpu))\n", + "print(info)" + ], + "metadata": { + "id": "BH1ZnPG6tkdD" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "If we only want to execute several environments. The `id` argument can be used." + ], + "metadata": { + "id": "qXroB7KluvP9" + } + }, + { + "cell_type": "code", + "source": [ + "print(envs.step(np.random.choice(2, size=3), id=[0,3,1]))" + ], + "metadata": { + "id": "ufvFViKTu8d_" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Further Reading\n", + "## Other environment wrappers in Tianshou\n", + "\n", + "\n", + "* ShmemVectorEnv: use share memory instead of pipe based on SubprocVectorEnv;\n", + "* RayVectorEnv: use Ray for concurrent activities and is currently the only choice for parallel simulation in a cluster with multiple machines.\n", + "\n", + "Check the [documentation](https://tianshou.readthedocs.io/en/master/api/tianshou.env.html) for details.\n", + "\n", + "## Difference between synchronous and asynchronous mode (How to choose?)\n", + "Explanation can be found at the [Parallel Sampling](https://tianshou.readthedocs.io/en/master/tutorials/cheatsheet.html#parallel-sampling) tutorial." + ], + "metadata": { + "id": "fekHR1a6X_HB" + } + } + ] +} diff --git a/notebooks/L4_Policy.ipynb b/notebooks/L4_Policy.ipynb index a274386..834b47d 100644 --- a/notebooks/L4_Policy.ipynb +++ b/notebooks/L4_Policy.ipynb @@ -1,954 +1,806 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] }, - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "cesUkq8hA373" - }, - "outputs": [], - "source": [ - "# Remember to install tianshou first\n", - "!pip install tianshou==0.4.8\n", - "!pip install gym" - ] + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "cesUkq8hA373" + }, + "outputs": [], + "source": [ + "# Remember to install tianshou first\n", + "!pip install tianshou==0.4.8\n", + "!pip install gym" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Overview\n", + "In reinforcement learning, the agent interacts with environments to improve itself. In this tutorial we will concentrate on the agent part. In Tianshou, both the agent and the core DRL algorithm are implementated in the Policy module. Tianshou provides more than 20 Policy modules, each representing one DRL algorithm. See supported algorithms [here](https://github.com/thu-ml/tianshou).\n", + "\n", + "
\n", + "\n", + "\n", + " The agents interacting with the environment \n", + "
\n", + "\n", + "All Policy modules inherit from a BasePolicy Class and share the same interface." + ], + "metadata": { + "id": "PNM9wqstBSY_" + } + }, + { + "cell_type": "markdown", + "source": [ + "# Creating you own Policy\n", + "We will use the a simple REINFORCE algorithm Policy to show the implementation of a Policy Module. The Policy we implement here will be a highly scaled-down version of [PGPolicy](https://github.com/thu-ml/tianshou/blob/master/tianshou/policy/modelfree/pg.py) in Tianshou." + ], + "metadata": { + "id": "ZqdHYdoJJS51" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Initialisation\n", + "Firstly we create the `REINFORCEPolicy` by inheriting from `BasePolicy` in Tianshou." + ], + "metadata": { + "id": "PWFBgZ4TJkfz" + } + }, + { + "cell_type": "code", + "source": [ + "\n", + "from typing import Any, Dict, List, Optional, Type, Union\n", + "\n", + "import numpy as np\n", + "import torch\n", + "\n", + "from tianshou.data import Batch, ReplayBuffer, to_torch, to_torch_as\n", + "from tianshou.policy import BasePolicy\n", + "\n", + "class REINFORCEPolicy(BasePolicy):\n", + " \"\"\"Implementation of REINFORCE algorithm.\"\"\"\n", + " def __init__(self):\n", + " super().__init__()" + ], + "metadata": { + "id": "cDlSjASbJmy-" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "As we have mentioned, the Policy Module mainly does two things:\n", + "\n", + "\n", + "1. `policy.forward()` receives observation and other information (stored in a Batch) from the environment and returns a new Batch containing the action.\n", + "2. `policy.update()` receives training data sampled from the replay buffer and updates itself, and then returns logging details.\n", + "\n", + "\n", + "
\n", + "\n", + "\n", + " policy.forward() and policy.update() \n", + "
\n", + "\n", + "We also need to take care of the following things:\n", + "\n", + "\n", + "\n", + "1. Since Tianshou is a **Deep** RL libraries, there should be a policy network in our Policy Module, also a Torch optimizer.\n", + "2. In Tianshou's BasePolicy, `Policy.update()` first calls `Policy.process_fn()` to preprocess training data and computes quantities like episodic returns (gradient free), then it will call `Policy.learn()` to perform the back-propagation.\n", + "\n", + "Then we get the implementation below.\n", + "\n", + "\n", + "\n" + ], + "metadata": { + "id": "qc1RnIBbLCDN" + } + }, + { + "cell_type": "code", + "source": [ + "class REINFORCEPolicy(BasePolicy):\n", + " \"\"\"Implementation of REINFORCE algorithm.\"\"\"\n", + " def __init__(self, model: torch.nn.Module, optim: torch.optim.Optimizer,):\n", + " super().__init__()\n", + " self.actor = model\n", + " self.optim = optim\n", + "\n", + " def forward(self, batch: Batch) -> Batch:\n", + " \"\"\"Compute action over the given batch data.\"\"\"\n", + " act = None\n", + " return Batch(act=act)\n", + "\n", + " def process_fn(self, batch: Batch, buffer: ReplayBuffer, indices: np.ndarray) -> Batch:\n", + " \"\"\"Compute the discounted returns for each transition.\"\"\"\n", + " pass\n", + "\n", + " def learn(self, batch: Batch, batch_size: int, repeat: int) -> Dict[str, List[float]]:\n", + " \"\"\"Perform the back-propagation.\"\"\"\n", + " return" + ], + "metadata": { + "id": "6j32PSKUQ23w" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Policy.forward()\n", + "According to the equation of REINFORCE algorithm in Spinning Up's [documentation](https://spinningup.openai.com/en/latest/algorithms/vpg.html), we need to map the observation to an action distribution in action space using neural network (`self.actor`).\n", + "\n", + "
\n", + "\n", + "\n", + "
\n", + "\n", + "Let's us suppose the action space is discrete, and the distribution is a simple categorical distribution.\n", + "\n" + ], + "metadata": { + "id": "tjtqjt8WRY5e" + } + }, + { + "cell_type": "code", + "source": [ + "def forward(self, batch: Batch) -> Batch:\n", + " \"\"\"Compute action over the given batch data.\"\"\"\n", + " self.dist_fn = torch.distributions.Categorical\n", + " logits = self.actor(batch.obs)\n", + " dist = self.dist_fn(logits)\n", + " act = dist.sample()\n", + " return Batch(act=act, dist=dist)" + ], + "metadata": { + "id": "uE4YDE-_RwgN" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Policy.process_fn()\n", + "Now that we have defined our actor, if given training data we can set up a loss function and optimize our neural network. However, before that, we must first calculate episodic returns for every step in our training data to construct the REINFORCE loss function.\n", + "\n", + "Calculating episodic return is not hard, given `ReplayBuffer.next()` allows us to access every reward to go in an episode. A more convenient way would be to simply use the built-in method `BasePolicy.compute_episodic_return()` inherited from BasePolicy.\n" + ], + "metadata": { + "id": "CultfOeuTx2V" + } + }, + { + "cell_type": "code", + "source": [ + "def process_fn(self, batch: Batch, buffer: ReplayBuffer, indices: np.ndarray) -> Batch:\n", + " \"\"\"Compute the discounted returns for each transition.\"\"\"\n", + " returns, _ = self.compute_episodic_return(batch, buffer, indices, gamma=0.99, gae_lambda=1.0)\n", + " batch.returns = returns\n", + " return batch" + ], + "metadata": { + "id": "wPAmOD7zV7n2" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "`BasePolicy.compute_episodic_return()` could also be used to compute [GAE](https://arxiv.org/abs/1506.02438). Another similar method is `BasePolicy.compute_nstep_return()`. Check the [source code](https://github.com/thu-ml/tianshou/blob/6fc68578127387522424460790cbcb32a2bd43c4/tianshou/policy/base.py#L304) for more details." + ], + "metadata": { + "id": "XA8OF4GnWWr5" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Policy.learn()\n", + "Data batch returned by `Policy.process_fn()` will flow into `Policy.learn()`. Finall we can construct our loss function and perform the back-propagation." + ], + "metadata": { + "id": "7UsdzNaOXPpC" + } + }, + { + "cell_type": "code", + "source": [ + "def learn(self, batch: Batch, batch_size: int, repeat: int) -> Dict[str, List[float]]:\n", + " \"\"\"Perform the back-propagation.\"\"\"\n", + " logging_losses = []\n", + " for _ in range(repeat):\n", + " for minibatch in batch.split(batch_size, merge_last=True):\n", + " self.optim.zero_grad()\n", + " result = self(minibatch)\n", + " dist = result.dist\n", + " act = to_torch_as(minibatch.act, result.act)\n", + " ret = to_torch(minibatch.returns, torch.float, result.act.device)\n", + " log_prob = dist.log_prob(act).reshape(len(ret), -1).transpose(0, 1)\n", + " loss = -(log_prob * ret).mean()\n", + " loss.backward()\n", + " self.optim.step()\n", + " logging_losses.append(loss.item())\n", + " return {\"loss\": logging_losses}" + ], + "metadata": { + "id": "aCO-dLXWXtz9" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Implementation\n", + "Finally we can assemble the implemented methods and form a REINFORCE Policy." + ], + "metadata": { + "id": "1BtuV2W0YJTi" + } + }, + { + "cell_type": "code", + "source": [ + "class REINFORCEPolicy(BasePolicy):\n", + " \"\"\"Implementation of REINFORCE algorithm.\"\"\"\n", + " def __init__(self, model: torch.nn.Module, optim: torch.optim.Optimizer,):\n", + " super().__init__()\n", + " self.actor = model\n", + " self.optim = optim\n", + " # action distribution\n", + " self.dist_fn = torch.distributions.Categorical\n", + "\n", + " def forward(self, batch: Batch) -> Batch:\n", + " \"\"\"Compute action over the given batch data.\"\"\"\n", + " logits, _ = self.actor(batch.obs)\n", + " dist = self.dist_fn(logits)\n", + " act = dist.sample()\n", + " return Batch(act=act, dist=dist)\n", + "\n", + " def process_fn(self, batch: Batch, buffer: ReplayBuffer, indices: np.ndarray) -> Batch:\n", + " \"\"\"Compute the discounted returns for each transition.\"\"\"\n", + " returns, _ = self.compute_episodic_return(batch, buffer, indices, gamma=0.99, gae_lambda=1.0)\n", + " batch.returns = returns\n", + " return batch\n", + "\n", + " def learn(self, batch: Batch, batch_size: int, repeat: int) -> Dict[str, List[float]]:\n", + " \"\"\"Perform the back-propagation.\"\"\"\n", + " logging_losses = []\n", + " for _ in range(repeat):\n", + " for minibatch in batch.split(batch_size, merge_last=True):\n", + " self.optim.zero_grad()\n", + " result = self(minibatch)\n", + " dist = result.dist\n", + " act = to_torch_as(minibatch.act, result.act)\n", + " ret = to_torch(minibatch.returns, torch.float, result.act.device)\n", + " log_prob = dist.log_prob(act).reshape(len(ret), -1).transpose(0, 1)\n", + " loss = -(log_prob * ret).mean()\n", + " loss.backward()\n", + " self.optim.step()\n", + " logging_losses.append(loss.item())\n", + " return {\"loss\": logging_losses}\n" + ], + "metadata": { + "id": "Ab0KNQHTOlGo" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Use the policy\n", + "Note that `BasePolicy` itself inherits from `torch.nn.Module`. As a result, you can consider all Policy modules as a Torch Module. They share similar APIs.\n", + "\n", + "Firstly we will initialise a new REINFORCE policy." + ], + "metadata": { + "id": "xlPAbh0lKti8" + } + }, + { + "cell_type": "code", + "source": [ + "from tianshou.utils.net.common import Net\n", + "from tianshou.utils.net.discrete import Actor\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "state_shape = 4\n", + "action_shape = 2\n", + "net = Net(state_shape, hidden_sizes=[16, 16], device=\"cpu\")\n", + "actor = Actor(net, action_shape, device=\"cpu\").to(\"cpu\")\n", + "optim = torch.optim.Adam(actor.parameters(), lr=0.0003)\n", + "\n", + "policy = REINFORCEPolicy(actor, optim)" + ], + "metadata": { + "id": "JkLFA9Z1KjuX" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "REINFORCE policy shares same APIs with the Torch Module." + ], + "metadata": { + "id": "LAo_0t2fekUD" + } + }, + { + "cell_type": "code", + "source": [ + "print(policy)\n", + "print(\"========================================\")\n", + "for para in policy.parameters():\n", + " print(para.shape)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "# Overview\n", - "In reinforcement learning, the agent interacts with environments to improve itself. In this tutorial we will concentrate on the agent part. In Tianshou, both the agent and the core DRL algorithm are implementated in the Policy module. Tianshou provides more than 20 Policy modules, each representing one DRL algorithm. See supported algorithms [here](https://github.com/thu-ml/tianshou).\n", - "\n", - "
\n", - "\n", - "\n", - " The agents interacting with the environment \n", - "
\n", - "\n", - "All Policy modules inherit from a BasePolicy Class and share the same interface." - ], - "metadata": { - "id": "PNM9wqstBSY_" - } + "id": "UiuTc8RhJiEi", + "outputId": "9b5bc54c-6303-45f3-ba81-2216a44931e8" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Making decision\n", + "Given a batch of observations, the policy can return a batch of actions and other data." + ], + "metadata": { + "id": "-RCrsttYgAG-" + } + }, + { + "cell_type": "code", + "source": [ + "obs_batch = Batch(obs=np.ones(shape=(256, 4)))\n", + "action = policy(obs_batch) # forward() method is called\n", + "print(action)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "# Creating you own Policy\n", - "We will use the a simple REINFORCE algorithm Policy to show the implementation of a Policy Module. The Policy we implement here will be a highly scaled-down version of [PGPolicy](https://github.com/thu-ml/tianshou/blob/master/tianshou/policy/modelfree/pg.py) in Tianshou." - ], - "metadata": { - "id": "ZqdHYdoJJS51" - } + "id": "0jkBb6AAgUla", + "outputId": "37948844-cdd8-4567-9481-89453c80a157" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Save and Load models\n", + "Naturally, Tianshou Policy can be saved and loaded like a normal Torch Network." + ], + "metadata": { + "id": "swikhnuDfKep" + } + }, + { + "cell_type": "code", + "source": [ + "torch.save(policy.state_dict(), 'policy.pth')\n", + "assert policy.load_state_dict(torch.load('policy.pth'))" + ], + "metadata": { + "id": "tYOoWM_OJRnA" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Algorithm Updating\n", + "We have to collect some data and save them in the ReplayBuffer before updating our agent(policy). Typically we use collector to collect data, but we leave this part till later when we have learned the Collector in Tianshou. For now we generate some **fake** data." + ], + "metadata": { + "id": "gp8PzOYsg5z-" + } + }, + { + "cell_type": "markdown", + "source": [ + "### Generating fake data\n", + "Firstly, we need to \"pretend\" that we are using the \"Policy\" to collect data. We plan to collect 10 data so that we can update our algorithm." + ], + "metadata": { + "id": "XrrPxOUAYShR" + } + }, + { + "cell_type": "code", + "source": [ + "import gym\n", + "from tianshou.data import Batch, ReplayBuffer\n", + "# a buffer is initialised with its maxsize set to 20.\n", + "print(\"========================================\")\n", + "buf = ReplayBuffer(size=12)\n", + "print(buf)\n", + "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))\n", + "env = gym.make(\"CartPole-v0\")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "## Initialisation\n", - "Firstly we create the `REINFORCEPolicy` by inheriting from `BasePolicy` in Tianshou." - ], - "metadata": { - "id": "PWFBgZ4TJkfz" - } + "id": "a14CmzSfYh5C", + "outputId": "aaf45a1f-5e21-4bc8-cbe3-8ce798258af0" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Now we are pretending to collect the first episode. The first episode ends at step 3 (perhaps because we are performing too badly)." + ], + "metadata": { + "id": "8S94cV7yZITR" + } + }, + { + "cell_type": "code", + "source": [ + "obs = env.reset()\n", + "for i in range(3):\n", + " act = policy(Batch(obs=obs[np.newaxis, :])).act.item()\n", + " obs_next, rew, done, info = env.step(act)\n", + " # pretend ending at step 3\n", + " done = True if i==2 else False\n", + " info[\"id\"] = i\n", + " buf.add(Batch(obs=obs, act=act, rew=rew, done=done, obs_next=obs_next, info=info))\n", + " obs = obs_next" + ], + "metadata": { + "id": "a_mtvbmBZbfs" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Now we are pretending to collect the second episode. At step 7 the second episode still does't end, but we are unwilling to wait, so we stop collecting to update the algorithm." + ], + "metadata": { + "id": "pkxq4gu9bGkt" + } + }, + { + "cell_type": "code", + "source": [ + "obs = env.reset()\n", + "for i in range(3, 10):\n", + " act = policy(Batch(obs=obs[np.newaxis, :])).act.item()\n", + " obs_next, rew, done, info = env.step(act)\n", + " # pretend this episode never end\n", + " done = False\n", + " info[\"id\"] = i\n", + " buf.add(Batch(obs=obs, act=act, rew=rew, done=done, obs_next=obs_next, info=info))\n", + " obs = obs_next" + ], + "metadata": { + "id": "pAoKe02ybG68" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Our replay buffer looks like this now." + ], + "metadata": { + "id": "MKM6aWMucv-M" + } + }, + { + "cell_type": "code", + "source": [ + "print(buf)\n", + "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "code", - "source": [ - "\n", - "from typing import Any, Dict, List, Optional, Type, Union\n", - "\n", - "import numpy as np\n", - "import torch\n", - "\n", - "from tianshou.data import Batch, ReplayBuffer, to_torch, to_torch_as\n", - "from tianshou.policy import BasePolicy\n", - "\n", - "class REINFORCEPolicy(BasePolicy):\n", - " \"\"\"Implementation of REINFORCE algorithm.\"\"\"\n", - " def __init__(self):\n", - " super().__init__()" - ], - "metadata": { - "id": "cDlSjASbJmy-" - }, - "execution_count": null, - "outputs": [] + "id": "CSJEEWOqXdTU", + "outputId": "2b3bb75c-f219-4e82-ca78-0ea6173a91f9" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Updates\n", + "Now we have got a replay buffer with 10 data steps in it. We can call `Policy.update()` to train." + ], + "metadata": { + "id": "55VWhWpkdfEb" + } + }, + { + "cell_type": "code", + "source": [ + "# 0 means sample all data from the buffer\n", + "# batch_size=10 defines the training batch size\n", + "# repeat=6 means repeat the training for 6 times\n", + "policy.update(0, buf, batch_size=10, repeat=6)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "As we have mentioned, the Policy Module mainly does two things:\n", - "\n", - "\n", - "1. `policy.forward()` receives observation and other information (stored in a Batch) from the environment and returns a new Batch containing the action.\n", - "2. `policy.update()` receives training data sampled from the replay buffer and updates itself, and then returns logging details.\n", - "\n", - "\n", - "
\n", - "\n", - "\n", - " policy.forward() and policy.update() \n", - "
\n", - "\n", - "We also need to take care of the following things:\n", - "\n", - "\n", - "\n", - "1. Since Tianshou is a **Deep** RL libraries, there should be a policy network in our Policy Module, also a Torch optimizer.\n", - "2. In Tianshou's BasePolicy, `Policy.update()` first calls `Policy.process_fn()` to preprocess training data and computes quantities like episodic returns (gradient free), then it will call `Policy.learn()` to perform the back-propagation.\n", - "\n", - "Then we get the implementation below.\n", - "\n", - "\n", - "\n" - ], - "metadata": { - "id": "qc1RnIBbLCDN" - } + "id": "i_O1lJDWdeoc", + "outputId": "b154741a-d6dc-46cb-898f-6e84fa14e5a7" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Not that difficult, right?" + ], + "metadata": { + "id": "enqlFQLSJrQl" + } + }, + { + "cell_type": "markdown", + "source": [ + "# Further Reading\n", + "\n", + "\n" + ], + "metadata": { + "id": "QJ5krjrcbuiA" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Pre-defined Networks\n", + "Tianshou provides numberous pre-defined networks usually used in DRL so that you don't have to bother yourself. Check this [documentation](https://tianshou.readthedocs.io/en/master/api/tianshou.utils.html#pre-defined-networks) for details." + ], + "metadata": { + "id": "pmWi3HuXWcV8" + } + }, + { + "cell_type": "markdown", + "source": [ + "## How to compute GAE on your own?\n", + "(Note that for this reading you need to understand the calculation of [GAE](https://arxiv.org/abs/1506.02438) advantage first)\n", + "\n", + "In terms of code implementation, perhaps the most difficult and annoying part is computing GAE advantage. Just now, we use the `self.compute_episodic_return()` method inherited from `BasePolicy` to save us from all those troubles. However, it is still important that we know the details behind this.\n", + "\n", + "To compute GAE advantage, the usage of `self.compute_episodic_return()` may goes like:" + ], + "metadata": { + "id": "UPVl5LBEWJ0t" + } + }, + { + "cell_type": "code", + "source": [ + "batch, indices = buf.sample(0) # 0 means sampling all the data from the buffer\n", + "returns, advantage = BasePolicy.compute_episodic_return(batch, buf, indices, v_s_=np.zeros(10), v_s=np.zeros(10), gamma=1.0, gae_lambda=1.0)\n", + "print(returns)\n", + "print(advantage)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "code", - "source": [ - "class REINFORCEPolicy(BasePolicy):\n", - " \"\"\"Implementation of REINFORCE algorithm.\"\"\"\n", - " def __init__(self, model: torch.nn.Module, optim: torch.optim.Optimizer,):\n", - " super().__init__()\n", - " self.actor = model\n", - " self.optim = optim\n", - "\n", - " def forward(self, batch: Batch) -> Batch:\n", - " \"\"\"Compute action over the given batch data.\"\"\"\n", - " act = None\n", - " return Batch(act=act)\n", - "\n", - " def process_fn(self, batch: Batch, buffer: ReplayBuffer, indices: np.ndarray) -> Batch:\n", - " \"\"\"Compute the discounted returns for each transition.\"\"\"\n", - " pass\n", - "\n", - " def learn(self, batch: Batch, batch_size: int, repeat: int) -> Dict[str, List[float]]:\n", - " \"\"\"Perform the back-propagation.\"\"\"\n", - " return" - ], - "metadata": { - "id": "6j32PSKUQ23w" - }, - "execution_count": null, - "outputs": [] + "id": "D34GlVvPNz08", + "outputId": "43a4e5df-59b5-4e4a-c61c-e69090810215" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "In the code above, we sample all the 10 data in the buffer and try to compute the GAE advantage. As we know, we need to estimate the value function of every observation to compute GAE advantage. so the passed in `v_s` is the value of bacth.obs, `v_s_` is the value of bacth.obs_next this is usually computed by:\n", + "\n", + "`v_s = critic(bacth.obs)`,\n", + "\n", + "`v_s_ = critic(bacth.obs_next)`,\n", + "\n", + "where uboth `v_s` and `v_s_` are 10 dimensional arrays and `critic` is usually a neural network.\n", + "\n", + "After we've got all those values, GAE can be computed following the equation below." + ], + "metadata": { + "id": "h_5Dt6XwQLXV" + } + }, + { + "cell_type": "markdown", + "source": [ + "\\begin{aligned}\n", + "\\hat{A}_{t}^{\\mathrm{GAE}(\\gamma, \\lambda)}: =& \\sum_{l=0}^{\\infty}(\\gamma \\lambda)^{l} \\delta_{t+l}^{V}\n", + "\\end{aligned}\n", + "\n", + "while\n", + "\n", + "\\begin{equation}\n", + "\\delta_{t}^{V} \\quad=-V\\left(s_{t}\\right)+r_{t}+\\gamma V\\left(s_{t+1}\\right)\n", + "\\end{equation}\n" + ], + "metadata": { + "id": "ooHNIICGUO19" + } + }, + { + "cell_type": "markdown", + "source": [ + "But, if you do follow this equation I refered from the paper. You probably will get a slightly lower performance than you expected. There are at least 3 \"bugs\" in this equation." + ], + "metadata": { + "id": "eV6XZaouU7EV" + } + }, + { + "cell_type": "markdown", + "source": [ + "**First** is that Gym always returns you a `obs_next` even if this is already the last step. The value of this timestep is exactly 0 and you should not let the neural network estimate it." + ], + "metadata": { + "id": "FCxD9gNNVYbd" + } + }, + { + "cell_type": "code", + "source": [ + "import copy\n", + "# Assume v_s_ is got by calling critic(bacth.obs_next)\n", + "v_s_ = np.ones(10)\n", + "v_s_ *= ~batch.done\n", + "print(v_s_)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "## Policy.forward()\n", - "According to the equation of REINFORCE algorithm in Spinning Up's [documentation](https://spinningup.openai.com/en/latest/algorithms/vpg.html), we need to map the observation to an action distribution in action space using neural network (`self.actor`).\n", - "\n", - "
\n", - "\n", - "\n", - "
\n", - "\n", - "Let's us suppose the action space is discrete, and the distribution is a simple categorical distribution.\n", - "\n" - ], - "metadata": { - "id": "tjtqjt8WRY5e" - } + "id": "rNZNUNgQVvRJ", + "outputId": "44354595-c25a-4da8-b4d8-cffa31ac4b7d" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "After the fix above, we will perhaps get a more accurate estimate.\n", + "\n", + "**Secondly**, you must know when to stop bootstrapping. Usually we stop bootstrapping when we meet a `done` flag. However, in the buffer above, the last (10th) step is not marked by done=True, because the collecting has not finished. We must know all those unfinished steps so that we know when to stop bootstraping.\n", + "\n", + "Luckily, this can be done under the assistance of buffer because buffers in Tianshou not only store data, but also help you manage data trajectories." + ], + "metadata": { + "id": "2EtMi18QWXTN" + } + }, + { + "cell_type": "code", + "source": [ + "unfinished_indexes = buf.unfinished_index()\n", + "print(unfinished_indexes)\n", + "done_indexes = np.where(batch.done)[0]\n", + "print(done_indexes)\n", + "stop_bootstrap_ids = np.concatenate([unfinished_indexes, done_indexes])\n", + "print(stop_bootstrap_ids)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "code", - "source": [ - "def forward(self, batch: Batch) -> Batch:\n", - " \"\"\"Compute action over the given batch data.\"\"\"\n", - " self.dist_fn = torch.distributions.Categorical\n", - " logits = self.actor(batch.obs)\n", - " dist = self.dist_fn(logits)\n", - " act = dist.sample()\n", - " return Batch(act=act, dist=dist)" - ], - "metadata": { - "id": "uE4YDE-_RwgN" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## Policy.process_fn()\n", - "Now that we have defined our actor, if given training data we can set up a loss function and optimize our neural network. However, before that, we must first calculate episodic returns for every step in our training data to construct the REINFORCE loss function.\n", - "\n", - "Calculating episodic return is not hard, given `ReplayBuffer.next()` allows us to access every reward to go in an episode. A more convenient way would be to simply use the built-in method `BasePolicy.compute_episodic_return()` inherited from BasePolicy.\n" - ], - "metadata": { - "id": "CultfOeuTx2V" - } - }, - { - "cell_type": "code", - "source": [ - "def process_fn(self, batch: Batch, buffer: ReplayBuffer, indices: np.ndarray) -> Batch:\n", - " \"\"\"Compute the discounted returns for each transition.\"\"\"\n", - " returns, _ = self.compute_episodic_return(batch, buffer, indices, gamma=0.99, gae_lambda=1.0)\n", - " batch.returns = returns\n", - " return batch" - ], - "metadata": { - "id": "wPAmOD7zV7n2" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "`BasePolicy.compute_episodic_return()` could also be used to compute [GAE](https://arxiv.org/abs/1506.02438). Another similar method is `BasePolicy.compute_nstep_return()`. Check the [source code](https://github.com/thu-ml/tianshou/blob/6fc68578127387522424460790cbcb32a2bd43c4/tianshou/policy/base.py#L304) for more details." - ], - "metadata": { - "id": "XA8OF4GnWWr5" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Policy.learn()\n", - "Data batch returned by `Policy.process_fn()` will flow into `Policy.learn()`. Finall we can construct our loss function and perform the back-propagation." - ], - "metadata": { - "id": "7UsdzNaOXPpC" - } - }, - { - "cell_type": "code", - "source": [ - "def learn(self, batch: Batch, batch_size: int, repeat: int) -> Dict[str, List[float]]:\n", - " \"\"\"Perform the back-propagation.\"\"\"\n", - " logging_losses = []\n", - " for _ in range(repeat):\n", - " for minibatch in batch.split(batch_size, merge_last=True):\n", - " self.optim.zero_grad()\n", - " result = self(minibatch)\n", - " dist = result.dist\n", - " act = to_torch_as(minibatch.act, result.act)\n", - " ret = to_torch(minibatch.returns, torch.float, result.act.device)\n", - " log_prob = dist.log_prob(act).reshape(len(ret), -1).transpose(0, 1)\n", - " loss = -(log_prob * ret).mean()\n", - " loss.backward()\n", - " self.optim.step()\n", - " logging_losses.append(loss.item())\n", - " return {\"loss\": logging_losses}" - ], - "metadata": { - "id": "aCO-dLXWXtz9" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## Implementation\n", - "Finally we can assemble the implemented methods and form a REINFORCE Policy." - ], - "metadata": { - "id": "1BtuV2W0YJTi" - } - }, - { - "cell_type": "code", - "source": [ - "class REINFORCEPolicy(BasePolicy):\n", - " \"\"\"Implementation of REINFORCE algorithm.\"\"\"\n", - " def __init__(self, model: torch.nn.Module, optim: torch.optim.Optimizer,):\n", - " super().__init__()\n", - " self.actor = model\n", - " self.optim = optim\n", - " # action distribution\n", - " self.dist_fn = torch.distributions.Categorical\n", - "\n", - " def forward(self, batch: Batch) -> Batch:\n", - " \"\"\"Compute action over the given batch data.\"\"\"\n", - " logits, _ = self.actor(batch.obs)\n", - " dist = self.dist_fn(logits)\n", - " act = dist.sample()\n", - " return Batch(act=act, dist=dist)\n", - "\n", - " def process_fn(self, batch: Batch, buffer: ReplayBuffer, indices: np.ndarray) -> Batch:\n", - " \"\"\"Compute the discounted returns for each transition.\"\"\"\n", - " returns, _ = self.compute_episodic_return(batch, buffer, indices, gamma=0.99, gae_lambda=1.0)\n", - " batch.returns = returns\n", - " return batch\n", - "\n", - " def learn(self, batch: Batch, batch_size: int, repeat: int) -> Dict[str, List[float]]:\n", - " \"\"\"Perform the back-propagation.\"\"\"\n", - " logging_losses = []\n", - " for _ in range(repeat):\n", - " for minibatch in batch.split(batch_size, merge_last=True):\n", - " self.optim.zero_grad()\n", - " result = self(minibatch)\n", - " dist = result.dist\n", - " act = to_torch_as(minibatch.act, result.act)\n", - " ret = to_torch(minibatch.returns, torch.float, result.act.device)\n", - " log_prob = dist.log_prob(act).reshape(len(ret), -1).transpose(0, 1)\n", - " loss = -(log_prob * ret).mean()\n", - " loss.backward()\n", - " self.optim.step()\n", - " logging_losses.append(loss.item())\n", - " return {\"loss\": logging_losses}\n" - ], - "metadata": { - "id": "Ab0KNQHTOlGo" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "# Use the policy\n", - "Note that `BasePolicy` itself inherits from `torch.nn.Module`. As a result, you can consider all Policy modules as a Torch Module. They share similar APIs.\n", - "\n", - "Firstly we will initialise a new REINFORCE policy." - ], - "metadata": { - "id": "xlPAbh0lKti8" - } - }, - { - "cell_type": "code", - "source": [ - "from tianshou.utils.net.common import Net\n", - "from tianshou.utils.net.discrete import Actor\n", - "import warnings\n", - "warnings.filterwarnings('ignore')\n", - "state_shape = 4\n", - "action_shape = 2\n", - "net = Net(state_shape, hidden_sizes=[16, 16], device=\"cpu\")\n", - "actor = Actor(net, action_shape, device=\"cpu\").to(\"cpu\")\n", - "optim = torch.optim.Adam(actor.parameters(), lr=0.0003)\n", - "\n", - "policy = REINFORCEPolicy(actor, optim)" - ], - "metadata": { - "id": "JkLFA9Z1KjuX" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "REINFORCE policy shares same APIs with the Torch Module." - ], - "metadata": { - "id": "LAo_0t2fekUD" - } - }, - { - "cell_type": "code", - "source": [ - "print(policy)\n", - "print(\"========================================\")\n", - "for para in policy.parameters():\n", - " print(para.shape)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "UiuTc8RhJiEi", - "outputId": "9b5bc54c-6303-45f3-ba81-2216a44931e8" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "REINFORCEPolicy(\n", - " (actor): Actor(\n", - " (preprocess): Net(\n", - " (model): MLP(\n", - " (model): Sequential(\n", - " (0): Linear(in_features=4, out_features=16, bias=True)\n", - " (1): ReLU()\n", - " (2): Linear(in_features=16, out_features=16, bias=True)\n", - " (3): ReLU()\n", - " )\n", - " )\n", - " )\n", - " (last): MLP(\n", - " (model): Sequential(\n", - " (0): Linear(in_features=16, out_features=2, bias=True)\n", - " )\n", - " )\n", - " )\n", - ")\n", - "========================================\n", - "torch.Size([16, 4])\n", - "torch.Size([16])\n", - "torch.Size([16, 16])\n", - "torch.Size([16])\n", - "torch.Size([2, 16])\n", - "torch.Size([2])\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Making decision\n", - "Given a batch of observations, the policy can return a batch of actions and other data." - ], - "metadata": { - "id": "-RCrsttYgAG-" - } - }, - { - "cell_type": "code", - "source": [ - "obs_batch = Batch(obs=np.ones(shape=(256, 4)))\n", - "action = policy(obs_batch) # forward() method is called\n", - "print(action)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "0jkBb6AAgUla", - "outputId": "37948844-cdd8-4567-9481-89453c80a157" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Batch(\n", - " act: tensor([1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0,\n", - " 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0,\n", - " 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1,\n", - " 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0,\n", - " 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0,\n", - " 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,\n", - " 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n", - " 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0,\n", - " 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1,\n", - " 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0]),\n", - " dist: Categorical(probs: torch.Size([256, 2])),\n", - ")\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Save and Load models\n", - "Naturally, Tianshou Policy can be saved and loaded like a normal Torch Network." - ], - "metadata": { - "id": "swikhnuDfKep" - } - }, - { - "cell_type": "code", - "source": [ - "torch.save(policy.state_dict(), 'policy.pth')\n", - "assert policy.load_state_dict(torch.load('policy.pth'))" - ], - "metadata": { - "id": "tYOoWM_OJRnA" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## Algorithm Updating\n", - "We have to collect some data and save them in the ReplayBuffer before updating our agent(policy). Typically we use collector to collect data, but we leave this part till later when we have learned the Collector in Tianshou. For now we generate some **fake** data." - ], - "metadata": { - "id": "gp8PzOYsg5z-" - } - }, - { - "cell_type": "markdown", - "source": [ - "### Generating fake data\n", - "Firstly, we need to \"pretend\" that we are using the \"Policy\" to collect data. We plan to collect 10 data so that we can update our algorithm." - ], - "metadata": { - "id": "XrrPxOUAYShR" - } - }, - { - "cell_type": "code", - "source": [ - "import gym\n", - "from tianshou.data import Batch, ReplayBuffer\n", - "# a buffer is initialised with its maxsize set to 20.\n", - "print(\"========================================\")\n", - "buf = ReplayBuffer(size=12)\n", - "print(buf)\n", - "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))\n", - "env = gym.make(\"CartPole-v0\")" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "a14CmzSfYh5C", - "outputId": "aaf45a1f-5e21-4bc8-cbe3-8ce798258af0" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "========================================\n", - "ReplayBuffer()\n", - "maxsize: 12, data length: 0\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "Now we are pretending to collect the first episode. The first episode ends at step 3 (perhaps because we are performing too badly)." - ], - "metadata": { - "id": "8S94cV7yZITR" - } - }, - { - "cell_type": "code", - "source": [ - "obs = env.reset()\n", - "for i in range(3):\n", - " act = policy(Batch(obs=obs[np.newaxis, :])).act.item()\n", - " obs_next, rew, done, info = env.step(act)\n", - " # pretend ending at step 3\n", - " done = True if i==2 else False\n", - " info[\"id\"] = i\n", - " buf.add(Batch(obs=obs, act=act, rew=rew, done=done, obs_next=obs_next, info=info))\n", - " obs = obs_next" - ], - "metadata": { - "id": "a_mtvbmBZbfs" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Now we are pretending to collect the second episode. At step 7 the second episode still does't end, but we are unwilling to wait, so we stop collecting to update the algorithm." - ], - "metadata": { - "id": "pkxq4gu9bGkt" - } - }, - { - "cell_type": "code", - "source": [ - "obs = env.reset()\n", - "for i in range(3, 10):\n", - " act = policy(Batch(obs=obs[np.newaxis, :])).act.item()\n", - " obs_next, rew, done, info = env.step(act)\n", - " # pretend this episode never end\n", - " done = False\n", - " info[\"id\"] = i\n", - " buf.add(Batch(obs=obs, act=act, rew=rew, done=done, obs_next=obs_next, info=info))\n", - " obs = obs_next" - ], - "metadata": { - "id": "pAoKe02ybG68" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Our replay buffer looks like this now." - ], - "metadata": { - "id": "MKM6aWMucv-M" - } - }, - { - "cell_type": "code", - "source": [ - "print(buf)\n", - "print(\"maxsize: {}, data length: {}\".format(buf.maxsize, len(buf)))" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "CSJEEWOqXdTU", - "outputId": "2b3bb75c-f219-4e82-ca78-0ea6173a91f9" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "ReplayBuffer(\n", - " done: array([False, False, True, False, False, False, False, False, False,\n", - " False, False, False]),\n", - " obs: array([[-0.01684963, -0.00896152, 0.00930936, 0.00748042],\n", - " [-0.01684963, -0.00896152, 0.00930936, 0.00748042],\n", - " [-0.01684963, -0.00896152, 0.00930936, 0.00748042],\n", - " [-0.04934945, 0.01028611, -0.01101364, -0.0451668 ],\n", - " [-0.04934945, 0.01028611, -0.01101364, -0.0451668 ],\n", - " [-0.04934945, 0.01028611, -0.01101364, -0.0451668 ],\n", - " [-0.04934945, 0.01028611, -0.01101364, -0.0451668 ],\n", - " [-0.04934945, 0.01028611, -0.01101364, -0.0451668 ],\n", - " [-0.04934945, 0.01028611, -0.01101364, -0.0451668 ],\n", - " [-0.04934945, 0.01028611, -0.01101364, -0.0451668 ],\n", - " [ 0. , 0. , 0. , 0. ],\n", - " [ 0. , 0. , 0. , 0. ]]),\n", - " rew: array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 0.]),\n", - " info: Batch(\n", - " id: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0]),\n", - " ),\n", - " obs_next: array([[-0.01702886, -0.20421573, 0.00945897, 0.30308596],\n", - " [-0.02111317, -0.00922985, 0.01552069, 0.01340113],\n", - " [-0.02129777, -0.20457091, 0.01578871, 0.31094032],\n", - " [-0.04914372, -0.18467619, -0.01191698, 0.24402097],\n", - " [-0.05283725, -0.37962592, -0.00703656, 0.53292129],\n", - " [-0.06042977, -0.5746482 , 0.00362187, 0.82337874],\n", - " [-0.07192273, -0.37957599, 0.02008944, 0.53183716],\n", - " [-0.07951425, -0.18474228, 0.03072618, 0.24555147],\n", - " [-0.0832091 , -0.3802893 , 0.03563721, 0.54776563],\n", - " [-0.09081488, -0.57589331, 0.04659253, 0.85146047],\n", - " [ 0. , 0. , 0. , 0. ],\n", - " [ 0. , 0. , 0. , 0. ]]),\n", - " act: array([0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0]),\n", - ")\n", - "maxsize: 12, data length: 10\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Updates\n", - "Now we have got a replay buffer with 10 data steps in it. We can call `Policy.update()` to train." - ], - "metadata": { - "id": "55VWhWpkdfEb" - } - }, - { - "cell_type": "code", - "source": [ - "# 0 means sample all data from the buffer\n", - "# batch_size=10 defines the training batch size\n", - "# repeat=6 means repeat the training for 6 times\n", - "policy.update(0, buf, batch_size=10, repeat=6)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "i_O1lJDWdeoc", - "outputId": "b154741a-d6dc-46cb-898f-6e84fa14e5a7" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "{'loss': [2.414336681365967,\n", - " 2.412271499633789,\n", - " 2.410210609436035,\n", - " 2.4081532955169678,\n", - " 2.406100273132324,\n", - " 2.404050827026367]}" - ] - }, - "metadata": {}, - "execution_count": 45 - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "Not that difficult, right?" - ], - "metadata": { - "id": "enqlFQLSJrQl" - } - }, - { - "cell_type": "markdown", - "source": [ - "# Further Reading\n", - "\n", - "\n" - ], - "metadata": { - "id": "QJ5krjrcbuiA" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Pre-defined Networks\n", - "Tianshou provides numberous pre-defined networks usually used in DRL so that you don't have to bother yourself. Check this [documentation](https://tianshou.readthedocs.io/en/master/api/tianshou.utils.html#pre-defined-networks) for details." - ], - "metadata": { - "id": "pmWi3HuXWcV8" - } - }, - { - "cell_type": "markdown", - "source": [ - "## How to compute GAE on your own?\n", - "(Note that for this reading you need to understand the calculation of [GAE](https://arxiv.org/abs/1506.02438) advantage first)\n", - "\n", - "In terms of code implementation, perhaps the most difficult and annoying part is computing GAE advantage. Just now, we use the `self.compute_episodic_return()` method inherited from `BasePolicy` to save us from all those troubles. However, it is still important that we know the details behind this.\n", - "\n", - "To compute GAE advantage, the usage of `self.compute_episodic_return()` may goes like:" - ], - "metadata": { - "id": "UPVl5LBEWJ0t" - } - }, - { - "cell_type": "code", - "source": [ - "batch, indices = buf.sample(0) # 0 means sampling all the data from the buffer\n", - "returns, advantage = BasePolicy.compute_episodic_return(batch, buf, indices, v_s_=np.zeros(10), v_s=np.zeros(10), gamma=1.0, gae_lambda=1.0)\n", - "print(returns)\n", - "print(advantage)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "D34GlVvPNz08", - "outputId": "43a4e5df-59b5-4e4a-c61c-e69090810215" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "[3. 2. 1. 7. 6. 5. 4. 3. 2. 1.]\n", - "[3. 2. 1. 7. 6. 5. 4. 3. 2. 1.]\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "In the code above, we sample all the 10 data in the buffer and try to compute the GAE advantage. As we know, we need to estimate the value function of every observation to compute GAE advantage. so the passed in `v_s` is the value of bacth.obs, `v_s_` is the value of bacth.obs_next this is usually computed by:\n", - "\n", - "`v_s = critic(bacth.obs)`,\n", - "\n", - "`v_s_ = critic(bacth.obs_next)`,\n", - "\n", - "where uboth `v_s` and `v_s_` are 10 dimensional arrays and `critic` is usually a neural network.\n", - "\n", - "After we've got all those values, GAE can be computed following the equation below." - ], - "metadata": { - "id": "h_5Dt6XwQLXV" - } - }, - { - "cell_type": "markdown", - "source": [ - "\\begin{aligned}\n", - "\\hat{A}_{t}^{\\mathrm{GAE}(\\gamma, \\lambda)}: =& \\sum_{l=0}^{\\infty}(\\gamma \\lambda)^{l} \\delta_{t+l}^{V}\n", - "\\end{aligned}\n", - "\n", - "while\n", - "\n", - "\\begin{equation}\n", - "\\delta_{t}^{V} \\quad=-V\\left(s_{t}\\right)+r_{t}+\\gamma V\\left(s_{t+1}\\right)\n", - "\\end{equation}\n" - ], - "metadata": { - "id": "ooHNIICGUO19" - } - }, - { - "cell_type": "markdown", - "source": [ - "But, if you do follow this equation I refered from the paper. You probably will get a slightly lower performance than you expected. There are at least 3 \"bugs\" in this equation." - ], - "metadata": { - "id": "eV6XZaouU7EV" - } - }, - { - "cell_type": "markdown", - "source": [ - "**First** is that Gym always returns you a `obs_next` even if this is already the last step. The value of this timestep is exactly 0 and you should not let the neural network estimate it." - ], - "metadata": { - "id": "FCxD9gNNVYbd" - } - }, - { - "cell_type": "code", - "source": [ - "import copy\n", - "# Assume v_s_ is got by calling critic(bacth.obs_next)\n", - "v_s_ = np.ones(10)\n", - "v_s_ *= ~batch.done\n", - "print(v_s_)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "rNZNUNgQVvRJ", - "outputId": "44354595-c25a-4da8-b4d8-cffa31ac4b7d" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "[1. 1. 0. 1. 1. 1. 1. 1. 1. 1.]\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "After the fix above, we will perhaps get a more accurate estimate.\n", - "\n", - "**Secondly**, you must know when to stop bootstrapping. Usually we stop bootstrapping when we meet a `done` flag. However, in the buffer above, the last (10th) step is not marked by done=True, because the collecting has not finished. We must know all those unfinished steps so that we know when to stop bootstraping.\n", - "\n", - "Luckily, this can be done under the assistance of buffer because buffers in Tianshou not only store data, but also help you manage data trajectories." - ], - "metadata": { - "id": "2EtMi18QWXTN" - } - }, - { - "cell_type": "code", - "source": [ - "unfinished_indexes = buf.unfinished_index()\n", - "print(unfinished_indexes)\n", - "done_indexes = np.where(batch.done)[0]\n", - "print(done_indexes)\n", - "stop_bootstrap_ids = np.concatenate([unfinished_indexes, done_indexes])\n", - "print(stop_bootstrap_ids)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "saluvX4JU6bC", - "outputId": "2994d178-2f33-40a0-a6e4-067916b0b5c5" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "[9]\n", - "[2]\n", - "[9 2]\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "**Thirdly**, there are some special indexes which are marked by done flag. However, its value for obs_next should not be zero. This is because these steps are usually those at the last step of an episode, but this episode stops not because the agent can no longer get any rewards (value=0), but because the episode is too long so we have to truncate it. These kind of steps are always marked with `info['TimeLimit.truncated']=True` in Gym." - ], - "metadata": { - "id": "qp6vVE4dYWv1" - } - }, - { - "cell_type": "markdown", - "source": [ - "As a result, we need to rewrite the equation above\n", - "\n", - "`v_s_ *= ~batch.done`" - ], - "metadata": { - "id": "tWkqXRJfZTvV" - } - }, - { - "cell_type": "markdown", - "source": [ - "to\n", - "\n", - "```\n", - "mask = batch.info['TimeLimit.truncated'] | (~batch.done)\n", - "v_s_ *= mask\n", - "\n", - "```\n", - "\n", - "\n", - "\n" - ], - "metadata": { - "id": "kms-QtxKZe-M" - } - }, - { - "cell_type": "markdown", - "source": [ - "### Summary\n", - "If you already felt bored by now, simply remember that Tianshou can help handle all these little details so that you can focus on the algorithm itself. Just call `BasePolicy.compute_episodic_return()`.\n", - "\n", - "If you still feel interested, we would recommend you check Appendix C in this [paper](https://arxiv.org/abs/2107.14171v2) and implementation of `BasePolicy.value_mask()` and `BasePolicy.compute_episodic_return()` for details." - ], - "metadata": { - "id": "u_aPPoKraBu6" - } - }, - { - "cell_type": "markdown", - "source": [ - "\n", - "![timelimit.svg](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI4NDlweCIgaGVpZ2h0PSIyNDlweCIgdmlld0JveD0iLTAuNSAtMC41IDg0OSAyNDkiIGNvbnRlbnQ9IiZsdDtteGZpbGUgaG9zdD0mcXVvdDtFbGVjdHJvbiZxdW90OyBtb2RpZmllZD0mcXVvdDsyMDIyLTA0LTE4VDE2OjQ1OjMwLjgwOVomcXVvdDsgYWdlbnQ9JnF1b3Q7NS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIGRyYXcuaW8vMTQuNS4xIENocm9tZS84OS4wLjQzODkuODIgRWxlY3Ryb24vMTIuMC4xIFNhZmFyaS81MzcuMzYmcXVvdDsgdmVyc2lvbj0mcXVvdDsxNC41LjEmcXVvdDsgZXRhZz0mcXVvdDs1ZGdXM2lGWXExdHo3aWk4Sld2YSZxdW90OyB0eXBlPSZxdW90O2RldmljZSZxdW90OyZndDsmbHQ7ZGlhZ3JhbSBpZD0mcXVvdDtNOHZVdGk2YnZSU0tXRlY2bmNhTiZxdW90OyZndDs3VjNmajZNMkVQNXJJbDBmZG9YNW1UeGVkdmZhaDFZNjNaM1V1NmZLQ1U1Q2orQVVuTjJrZjMxdHNNRWtKcEFOZGtMVTdFcUxqWTN4TjU5blBBTTdHVGxQNjkydktkeXMvc0FoaWtlMkZlNUd6dlBJdGdFWWora2ZWck12YWg0OE1DbHFsbWtVOGxaVnhkZm9YOFFyTFY2N2pVS1UxUm9TakdNU2JlcVZjNXdrYUU1cWRUQk44VnU5MlFMSDlWRTNjTWxIdEtxS3IzTVlvNk5tZjBZaFdSVzFZenVvNm45RDBYSWxSZ1krbjk4YWlzYjhFdGtLaHZoTkdzdDVHVGxQS2Nha09GcnZubERNMEJPNEZEZjBxZUZzZVdNcFNraVhEbmJSNFJYR1d6NDNmbDlrTHlhN1RQRjJ3NXVobEtDZENtSTRpdzhScTI0QmxCT2psRUI0alVpNnAwMzRoVHplZzVNQkJPSVNieEswTHE5YlNiRGFidkRvY2FGeWdTN0xxMWR6cGdkODJtb0lIQk1RMkNjaHNNZmxURGdLdGwzV1NEQ0FTVmxiQThLNkhBVzNIUVVLUWhJaTF0NGFPZE8zVlVUUTF3MmNzN052ZEtIVHVoVlowK3MvQTNxNGlPTDRDY2M0emZzNklVVGp4WnpXWnlURlA1RjB4czgvOUF6TU5zVmFYVVE3TnNxMEVYQVpXRWNOckFTYXJhSk9ENGg1Q3NUOG1MQTVibUJTZzg3L1o4c1c5SFNCRS9LUTVlcnNJMjBBdk0ydU9rbVBsdXp2U3hMU2N6TTBoOXNNMFNPOFlPb3RXclBqT0ZwSFJBeERiN0FZcWVoM0pDOEtHNmtMcFE1K2doTjBJQ2xlQmVOb21kRGluTUtNYVAyVUNTR2krdThqUDdHT3dwQU5vMlJCblNjcEpwQkVPT0hGUzRRcVZvdHlhUVNheE94Zlh6MTRsdjlvZDlFUGpxVk5Qd1NHMkk0U3ZGMnVPT016Z3FoRlp4REdNWVdRY3VydXFlK2ZUMzE3ckluNlk3MDJZYkZBL255dTB2ek5SdUlTREEzWWhNbjFsUVU0MkU4MXFFdGRDSWd0dWlaRmtlQjBEZU40UDJoRndPYjdsZCtqMVVnRldlU1Q4N1hDeE5abENnRFFxeGRDRDQxRFY0TmVhRURSZ0Y0QUhmeXNtMVNsUFcxTXRPSGF3WG03Q0ZlUC9aem50ckRWTFRVc1B2M2diVjhiYnBXWDJJZHlmNFlFc20wZ0pQT1ZPZFVlb3dVeHY4TnJXVkpPTnhHUEhVMGliblpyWjVVb2lnb20ya3NNK2lzejZKSzRpK3ZWeDZEVnMrRlk5NGRKVHpSNHNPdTdPQ0QyK0JJRmZGMnIvQ1pjM3RyMFZTc2dVSG44Ymc4QlFhRHlkUzh5S2cwVzRYeGowNGxaNExRUDZTdW81Q3EyaXIxQXFYSWhXd3pHdkpnM1V4enBjdmJCb3pPa04weUhzbXFIdnh4cmxCR0xZcnF6djBiQmREVUtub3RpVjNQU3kvWkxyK1FDKzNnVmFKT2N5cFV0NFFVU3ZIZXdNZ3pnYWF2ODRqdUFibGVIeUFTU3ZidWZONFhreEp4MkZzQnBkK1QxSW1ZSEJzblh1OE41VStSekZNOWV0VUhaK3lQSDI0TFNOOGhLbGRQV0k1Ulcvcm5hQW5lQlFWWjJjSDRHekVyWE04aksrL2FqUE1zZ0szdC9GSGRiVUpyY1BuWjRSamRrS0EzdUg1M2VmWnFybUJmZk1jYys1NzZkRjJBU3l0NjlsOXVDVWhHbTh6UkZQSjM3OW1wS1JXV0NsUjI4R3NQQmM5OHhHVDEzTlBzaXVybFVDUEFtb3VkTzc3NkluckIxQzJRbXc5YU95dWVRbmdyWVF3MWROMkZzQXRPQk94OHQ5RFRvZXpnRDl6MWFrRFRvZXJpYVhZOE9pRjMwbms4TGtpWkQydTdBWFpJV0tFMkd0TjJCdXlSdFVCb01hYnVhMyt6cjhBOUp2UmdYZzZGcmQrQVBWRnJ0dEVIMjNiY1RZekowN1E3OGdVb2JsQWEzais3QUg2aTBRV2x5LzZqN2Y1dXV1MzgwR2RKMjc5dXBNUm5TOWdiK2tsZ2JsQVpEMnQ1OWV6VW1ROXBlQjYvR2NFZ2IrRWJmQ1BjRy9uekVPdzJ1eVppMnAzSlN5Z0J0c3Vvck9xc24wdDBDcE1sSXQ2ZlpSZEg5emxjVGxDYWdHN2hMMHNKQ2d4NkpOM0NQcEFWSmd3NkpOM0NIcEFWSmt3RnRiK0FPU1F1VUpnUGEvc0Fka2pZb0RRYTAvWUU3SkcxR3gyQ2cyKy9na0F3WlNvT0JidisrUFJ1VGdXNS80STlmMnFBMHVLMzBOZnMyMTRiUzRMN1MxL3dPV1lmbnFFMk9aUjlRbWd4MCsvZnQ3SmdNZFB1YVh5bTdWdkRpQ29GdS83NjlIWk9CN3FDRHQ0T1M4Q1BMSUQwcVU4bUVNRnZsMklJNmpxeitNeVFFcFVsZVkxdE9pWmJJR3Mzd0l6QmRJdklacFJHOVlaUXl3VVRKY2lSbkZFS2h5RWQ5ZGlJWjhCZ0VWRW42WTJmaVdoWmxvWWNld1BGQ1Y3RlQxS2tnNWVOOXhsR2VBa2pzWEIzMzBiT2tEemMrWmRUZU9relluT0Z0T2tmOE1wV2t6cjZ5ZFpRS21zTjZlR1VxUExpWG1tMVlnK3owbE55SjlISHJBNWVwYVNxT0ZVTlVqQ3VGMG8yRUlqTzR4RGtxZnBFdkVLZGtoWmM0Z2ZGTFZUdWRiOVBYa29OVms5OHgzdkRLdnhFaGU1NUpIVzRKcm5NVjdTTHlYVHIrd2VqMzZQSFM4NDZ6TVMvc1JTR2hjL291RjZSZXJGaDF5MHVpWDMwRmdETklUa0hKNlNLVWJGRlhDTHFvSzE3L2Z0ZGlhR1Q1dVl3cGM1VnppamhXblNHdEhieWdwWU56V2Z1eDM5TGVQZDMrY29vcjFPcE5VdnlZcXNmcW45WjhpdGhVejlMWGRTbzdMZjhLOWg3YUhrblZDdzZlb1FKZE92T1EwSzJFTyt4UTNWcHZsSE91UUxtVGx2MllXeGx0VHdTNzVqSE1zbWd1cWpuRitxU2dacnFWbVlDRlRJKy9yYUdCYnNmTVBialNwT3MyNGx6aU9rMERkZFNzb0ZVVkg2RnkyT055cHI4M1IrY0NycU40WHlSZW82ZmdlcE9UeVhHWXY3UkM4U3RpQ1JLUHpxalNzUFdSSGpLT2twOHM5enZNWnhjV0NVSXp0RnlqWElUMDhKOHRQWXdPc2tFMzVKQThtZnBONVJCbEs3aGhSYnBzMkJoZjJPc3J5VEpYQ3lSZi9teXBGUWxFODhNWkpnU3YrUkpOK1NhYW5lQ2Nvd041VS9yTDh0ZUJrZmZNMHRoNVV5Qks5UGQ5ZVNyRnVDd25KYUhhNVNsdldCbTNMSUdiYjdoZ0liODVSUFZhRnIyaUw2aVFRWDZiVEh2eFlxNjZVb1ErNFRnczlKV28rUU8vVmhVSmVwT1U1Zk1va0toUTZkWktya3pXNVhrcU9MTC9ndUk4Y2VhTG9qWEw4aWNLa21KVVh5NEhTOTIzMUpabjkrUmNxM1VFVnEwSk54QzFGdXdGbHBQUnNEamEvTVloRENNcURKNDZGTUdNMU0xSFZ0aUxxV0NXVmRWOUt5eFE1eWhhVzJoMy9DaWV6eDc1TmJXOHdxb1hySndUYm1Kbno3dER3RmUyMTAzOGFUU2l4MFpUaUpmRDJHQ09KYnZiRlArb2dpdEE5b3JLd2crNTBPQVRkZDgyeXQ1TzBQSzZaUzkyZkN3U3BwUjdzM2M3OFdQNzhHdU9nRFB1dUNsNGp5VlVoYjdQU3o1cWpVVENVZW5vRjNiSVpHWmRaamZsaTd6eEJjVXU0aGFENVNkanhBSklENW5ZT3JMenhYY2dsRTFZRXVRSGJpZllhVzRxYXFjanl0Q0VYOTVpMWxZK1NWS1laQXQ2VVhGNXBoSjVnemVjaHZYUjVlNHpPUCs1elBuL2NBQmMvbm9hQit6Z3VJSXZqTEpORERsMFVVSXRmalh3SXNhUXlEZlV0c3NRWHhJbjJvSG1MdEg3ZHlXejdXS0Iwc2VNeWpKR0h4Z1Z5aTFHcE5oMnZHYzN3cE5hdDBScEcvTlY5MkVQL0lNZ0Z4Z3JqQUZReFF6dFBzS3d6ZDgxcENVRk9mZy9CWG1YRk9TSzE0NTBaU0FQbXROR2EyR0EvVDhEdWpCQUdOVCtHVUNMMVhkZUZxYSsrdXBRNStVLyZsdDsvZGlhZ3JhbSZndDsmbHQ7L214ZmlsZSZndDsiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij48ZGVmcz48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj5kaXYuTWF0aEpheF9TVkdfRGlzcGxheSB7IHBvc2l0aW9uOiBzdGF0aWM7IH0mI3hhO3NwYW4uTWF0aEpheF9TVkcgeyBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7IH08L3N0eWxlPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPi5NYXRoSmF4X0hvdmVyX0ZyYW1lIHtib3JkZXItcmFkaXVzOiAuMjVlbTsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAuMjVlbTsgLW1vei1ib3JkZXItcmFkaXVzOiAuMjVlbTsgLWtodG1sLWJvcmRlci1yYWRpdXM6IC4yNWVtOyBib3gtc2hhZG93OiAwcHggMHB4IDE1cHggIzgzQTsgLXdlYmtpdC1ib3gtc2hhZG93OiAwcHggMHB4IDE1cHggIzgzQTsgLW1vei1ib3gtc2hhZG93OiAwcHggMHB4IDE1cHggIzgzQTsgLWtodG1sLWJveC1zaGFkb3c6IDBweCAwcHggMTVweCAjODNBOyBib3JkZXI6IDFweCBzb2xpZCAjQTZEICEgaW1wb3J0YW50OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBvc2l0aW9uOiBhYnNvbHV0ZX0mI3hhOy5NYXRoSmF4X01lbnVfQnV0dG9uIC5NYXRoSmF4X0hvdmVyX0Fycm93IHtwb3NpdGlvbjogYWJzb2x1dGU7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBib3JkZXI6IDJweCBzb2xpZCAjQUFBOyBib3JkZXItcmFkaXVzOiA0cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OyAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6IDRweDsgZm9udC1mYW1pbHk6ICdDb3VyaWVyIE5ldycsQ291cmllcjsgZm9udC1zaXplOiA5cHg7IGNvbG9yOiAjRjBGMEYwfSYjeGE7Lk1hdGhKYXhfTWVudV9CdXR0b24gLk1hdGhKYXhfSG92ZXJfQXJyb3cgc3BhbiB7ZGlzcGxheTogYmxvY2s7IGJhY2tncm91bmQtY29sb3I6ICNBQUE7IGJvcmRlcjogMXB4IHNvbGlkOyBib3JkZXItcmFkaXVzOiAzcHg7IGxpbmUtaGVpZ2h0OiAwOyBwYWRkaW5nOiA0cHh9JiN4YTsuTWF0aEpheF9Ib3Zlcl9BcnJvdzpob3ZlciB7Y29sb3I6IHdoaXRlIWltcG9ydGFudDsgYm9yZGVyOiAycHggc29saWQgI0NDQyFpbXBvcnRhbnR9JiN4YTsuTWF0aEpheF9Ib3Zlcl9BcnJvdzpob3ZlciBzcGFuIHtiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NDIWltcG9ydGFudH0mI3hhOzwvc3R5bGU+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+I01hdGhKYXhfQWJvdXQge3Bvc2l0aW9uOiBmaXhlZDsgbGVmdDogNTAlOyB3aWR0aDogYXV0bzsgdGV4dC1hbGlnbjogY2VudGVyOyBib3JkZXI6IDNweCBvdXRzZXQ7IHBhZGRpbmc6IDFlbSAyZW07IGJhY2tncm91bmQtY29sb3I6ICNEREREREQ7IGNvbG9yOiBibGFjazsgY3Vyc29yOiBkZWZhdWx0OyBmb250LWZhbWlseTogbWVzc2FnZS1ib3g7IGZvbnQtc2l6ZTogMTIwJTsgZm9udC1zdHlsZTogbm9ybWFsOyB0ZXh0LWluZGVudDogMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHdvcmQtc3BhY2luZzogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgZmxvYXQ6IG5vbmU7IHotaW5kZXg6IDIwMTsgYm9yZGVyLXJhZGl1czogMTVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxNXB4OyAtbW96LWJvcmRlci1yYWRpdXM6IDE1cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOiAxNXB4OyBib3gtc2hhZG93OiAwcHggMTBweCAyMHB4ICM4MDgwODA7IC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDEwcHggMjBweCAjODA4MDgwOyAtbW96LWJveC1zaGFkb3c6IDBweCAxMHB4IDIwcHggIzgwODA4MDsgLWtodG1sLWJveC1zaGFkb3c6IDBweCAxMHB4IDIwcHggIzgwODA4MDsgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZHJvcHNoYWRvdyhPZmZYPTIsIE9mZlk9MiwgQ29sb3I9J2dyYXknLCBQb3NpdGl2ZT0ndHJ1ZScpfSYjeGE7I01hdGhKYXhfQWJvdXQuTWF0aEpheF9Nb3VzZVBvc3Qge291dGxpbmU6IG5vbmV9JiN4YTsuTWF0aEpheF9NZW51IHtwb3NpdGlvbjogYWJzb2x1dGU7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBjb2xvcjogYmxhY2s7IHdpZHRoOiBhdXRvOyBwYWRkaW5nOiAycHg7IGJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7IG1hcmdpbjogMDsgY3Vyc29yOiBkZWZhdWx0OyBmb250OiBtZW51OyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHdvcmQtc3BhY2luZzogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgZmxvYXQ6IG5vbmU7IHotaW5kZXg6IDIwMTsgYm94LXNoYWRvdzogMHB4IDEwcHggMjBweCAjODA4MDgwOyAtd2Via2l0LWJveC1zaGFkb3c6IDBweCAxMHB4IDIwcHggIzgwODA4MDsgLW1vei1ib3gtc2hhZG93OiAwcHggMTBweCAyMHB4ICM4MDgwODA7IC1raHRtbC1ib3gtc2hhZG93OiAwcHggMTBweCAyMHB4ICM4MDgwODA7IGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmRyb3BzaGFkb3coT2ZmWD0yLCBPZmZZPTIsIENvbG9yPSdncmF5JywgUG9zaXRpdmU9J3RydWUnKX0mI3hhOy5NYXRoSmF4X01lbnVJdGVtIHtwYWRkaW5nOiAycHggMmVtOyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudH0mI3hhOy5NYXRoSmF4X01lbnVBcnJvdyB7cG9zaXRpb246IGFic29sdXRlOyByaWdodDogLjVlbTsgcGFkZGluZy10b3A6IC4yNWVtOyBjb2xvcjogIzY2NjY2NjsgZm9udC1zaXplOiAuNzVlbX0mI3hhOy5NYXRoSmF4X01lbnVBY3RpdmUgLk1hdGhKYXhfTWVudUFycm93IHtjb2xvcjogd2hpdGV9JiN4YTsuTWF0aEpheF9NZW51QXJyb3cuUlRMIHtsZWZ0OiAuNWVtOyByaWdodDogYXV0b30mI3hhOy5NYXRoSmF4X01lbnVDaGVjayB7cG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAuN2VtfSYjeGE7Lk1hdGhKYXhfTWVudUNoZWNrLlJUTCB7cmlnaHQ6IC43ZW07IGxlZnQ6IGF1dG99JiN4YTsuTWF0aEpheF9NZW51UmFkaW9DaGVjayB7cG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAxZW19JiN4YTsuTWF0aEpheF9NZW51UmFkaW9DaGVjay5SVEwge3JpZ2h0OiAxZW07IGxlZnQ6IGF1dG99JiN4YTsuTWF0aEpheF9NZW51TGFiZWwge3BhZGRpbmc6IDJweCAyZW0gNHB4IDEuMzNlbTsgZm9udC1zdHlsZTogaXRhbGljfSYjeGE7Lk1hdGhKYXhfTWVudVJ1bGUge2JvcmRlci10b3A6IDFweCBzb2xpZCAjQ0NDQ0NDOyBtYXJnaW46IDRweCAxcHggMHB4fSYjeGE7Lk1hdGhKYXhfTWVudURpc2FibGVkIHtjb2xvcjogR3JheVRleHR9JiN4YTsuTWF0aEpheF9NZW51QWN0aXZlIHtiYWNrZ3JvdW5kLWNvbG9yOiBIaWdobGlnaHQ7IGNvbG9yOiBIaWdobGlnaHRUZXh0fSYjeGE7Lk1hdGhKYXhfTWVudURpc2FibGVkOmZvY3VzLCAuTWF0aEpheF9NZW51TGFiZWw6Zm9jdXMge2JhY2tncm91bmQtY29sb3I6ICNFOEU4RTh9JiN4YTsuTWF0aEpheF9Db250ZXh0TWVudTpmb2N1cyB7b3V0bGluZTogbm9uZX0mI3hhOy5NYXRoSmF4X0NvbnRleHRNZW51IC5NYXRoSmF4X01lbnVJdGVtOmZvY3VzIHtvdXRsaW5lOiBub25lfSYjeGE7I01hdGhKYXhfQWJvdXRDbG9zZSB7dG9wOiAuMmVtOyByaWdodDogLjJlbX0mI3hhOy5NYXRoSmF4X01lbnUgLk1hdGhKYXhfTWVudUNsb3NlIHt0b3A6IC0xMHB4OyBsZWZ0OiAtMTBweH0mI3hhOy5NYXRoSmF4X01lbnVDbG9zZSB7cG9zaXRpb246IGFic29sdXRlOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgYm9yZGVyOiAycHggc29saWQgI0FBQTsgYm9yZGVyLXJhZGl1czogMThweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxOHB4OyAtbW96LWJvcmRlci1yYWRpdXM6IDE4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOiAxOHB4OyBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JyxDb3VyaWVyOyBmb250LXNpemU6IDI0cHg7IGNvbG9yOiAjRjBGMEYwfSYjeGE7Lk1hdGhKYXhfTWVudUNsb3NlIHNwYW4ge2Rpc3BsYXk6IGJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiAjQUFBOyBib3JkZXI6IDEuNXB4IHNvbGlkOyBib3JkZXItcmFkaXVzOiAxOHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDE4cHg7IC1tb3otYm9yZGVyLXJhZGl1czogMThweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6IDE4cHg7IGxpbmUtaGVpZ2h0OiAwOyBwYWRkaW5nOiA4cHggMCA2cHh9JiN4YTsuTWF0aEpheF9NZW51Q2xvc2U6aG92ZXIge2NvbG9yOiB3aGl0ZSFpbXBvcnRhbnQ7IGJvcmRlcjogMnB4IHNvbGlkICNDQ0MhaW1wb3J0YW50fSYjeGE7Lk1hdGhKYXhfTWVudUNsb3NlOmhvdmVyIHNwYW4ge2JhY2tncm91bmQtY29sb3I6ICNDQ0MhaW1wb3J0YW50fSYjeGE7Lk1hdGhKYXhfTWVudUNsb3NlOmhvdmVyOmZvY3VzIHtvdXRsaW5lOiBub25lfSYjeGE7PC9zdHlsZT48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4uTWF0aEpheF9QcmV2aWV3IC5NSlhmLW1hdGgge2NvbG9yOiBpbmhlcml0IWltcG9ydGFudH0mI3hhOzwvc3R5bGU+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+I01hdGhKYXhfWm9vbSB7cG9zaXRpb246IGFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwOyBvdmVyZmxvdzogYXV0bzsgZGlzcGxheTogYmxvY2s7IHotaW5kZXg6IDMwMTsgcGFkZGluZzogLjVlbTsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IG1hcmdpbjogMDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC1zdHlsZTogbm9ybWFsOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHdvcmQtc3BhY2luZzogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgZmxvYXQ6IG5vbmU7IC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7IC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7IGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBib3gtc2hhZG93OiA1cHggNXB4IDE1cHggI0FBQUFBQTsgLXdlYmtpdC1ib3gtc2hhZG93OiA1cHggNXB4IDE1cHggI0FBQUFBQTsgLW1vei1ib3gtc2hhZG93OiA1cHggNXB4IDE1cHggI0FBQUFBQTsgLWtodG1sLWJveC1zaGFkb3c6IDVweCA1cHggMTVweCAjQUFBQUFBOyBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5kcm9wc2hhZG93KE9mZlg9MiwgT2ZmWT0yLCBDb2xvcj0nZ3JheScsIFBvc2l0aXZlPSd0cnVlJyl9JiN4YTsjTWF0aEpheF9ab29tT3ZlcmxheSB7cG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwOyB0b3A6IDA7IHotaW5kZXg6IDMwMDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBib3JkZXI6IDA7IHBhZGRpbmc6IDA7IG1hcmdpbjogMDsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IG9wYWNpdHk6IDA7IGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKX0mI3hhOyNNYXRoSmF4X1pvb21GcmFtZSB7cG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGhlaWdodDogMDsgd2lkdGg6IDB9JiN4YTsjTWF0aEpheF9ab29tRXZlbnRUcmFwIHtwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHRvcDogMDsgei1pbmRleDogMzAyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJvcmRlcjogMDsgcGFkZGluZzogMDsgbWFyZ2luOiAwOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgb3BhY2l0eTogMDsgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApfSYjeGE7PC9zdHlsZT48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4uTWF0aEpheF9QcmV2aWV3IHtjb2xvcjogIzg4ODsgZGlzcGxheTogY29udGVudHN9JiN4YTsjTWF0aEpheF9NZXNzYWdlIHtwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6IDFweDsgYm90dG9tOiAycHg7IGJhY2tncm91bmQtY29sb3I6ICNFNkU2RTY7IGJvcmRlcjogMXB4IHNvbGlkICM5NTk1OTU7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAycHggOHB4OyB6LWluZGV4OiAxMDI7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiA4MCU7IHdpZHRoOiBhdXRvOyB3aGl0ZS1zcGFjZTogbm93cmFwfSYjeGE7I01hdGhKYXhfTVNJRV9GcmFtZSB7cG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAwcHg7IHotaW5kZXg6IDEwMTsgYm9yZGVyOiAwcHg7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHh9JiN4YTsuTWF0aEpheF9FcnJvciB7Y29sb3I6ICNDQzAwMDA7IGZvbnQtc3R5bGU6IGl0YWxpY30mI3hhOzwvc3R5bGU+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Lk1KWHAtc2NyaXB0IHtmb250LXNpemU6IC44ZW19JiN4YTsuTUpYcC1yaWdodCB7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodDsgLW1vei10cmFuc2Zvcm0tb3JpZ2luOiByaWdodDsgLW1zLXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0OyAtby10cmFuc2Zvcm0tb3JpZ2luOiByaWdodDsgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHR9JiN4YTsuTUpYcC1ib2xkIHtmb250LXdlaWdodDogYm9sZH0mI3hhOy5NSlhwLWl0YWxpYyB7Zm9udC1zdHlsZTogaXRhbGljfSYjeGE7Lk1KWHAtc2NyIHtmb250LWZhbWlseTogTWF0aEpheF9TY3JpcHQsJ1RpbWVzIE5ldyBSb21hbicsVGltZXMsU1RJWEdlbmVyYWwsc2VyaWZ9JiN4YTsuTUpYcC1mcmFrIHtmb250LWZhbWlseTogTWF0aEpheF9GcmFrdHVyLCdUaW1lcyBOZXcgUm9tYW4nLFRpbWVzLFNUSVhHZW5lcmFsLHNlcmlmfSYjeGE7Lk1KWHAtc2Yge2ZvbnQtZmFtaWx5OiBNYXRoSmF4X1NhbnNTZXJpZiwnVGltZXMgTmV3IFJvbWFuJyxUaW1lcyxTVElYR2VuZXJhbCxzZXJpZn0mI3hhOy5NSlhwLWNhbCB7Zm9udC1mYW1pbHk6IE1hdGhKYXhfQ2FsaWdyYXBoaWMsJ1RpbWVzIE5ldyBSb21hbicsVGltZXMsU1RJWEdlbmVyYWwsc2VyaWZ9JiN4YTsuTUpYcC1tb25vIHtmb250LWZhbWlseTogTWF0aEpheF9UeXBld3JpdGVyLCdUaW1lcyBOZXcgUm9tYW4nLFRpbWVzLFNUSVhHZW5lcmFsLHNlcmlmfSYjeGE7Lk1KWHAtbGFyZ2VvcCB7Zm9udC1zaXplOiAxNTAlfSYjeGE7Lk1KWHAtbGFyZ2VvcC5NSlhwLWludCB7dmVydGljYWwtYWxpZ246IC0uMmVtfSYjeGE7Lk1KWHAtbWF0aCB7ZGlzcGxheTogaW5saW5lLWJsb2NrOyBsaW5lLWhlaWdodDogMS4yOyB0ZXh0LWluZGVudDogMDsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLFRpbWVzLFNUSVhHZW5lcmFsLHNlcmlmOyB3aGl0ZS1zcGFjZTogbm93cmFwOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlfSYjeGE7Lk1KWHAtZGlzcGxheSB7ZGlzcGxheTogYmxvY2s7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luOiAxZW0gMH0mI3hhOy5NSlhwLW1hdGggc3BhbiB7ZGlzcGxheTogaW5saW5lLWJsb2NrfSYjeGE7Lk1KWHAtYm94IHtkaXNwbGF5OiBibG9jayFpbXBvcnRhbnQ7IHRleHQtYWxpZ246IGNlbnRlcn0mI3hhOy5NSlhwLWJveDphZnRlciB7Y29udGVudDogIiAifSYjeGE7Lk1KWHAtcnVsZSB7ZGlzcGxheTogYmxvY2shaW1wb3J0YW50OyBtYXJnaW4tdG9wOiAuMWVtfSYjeGE7Lk1KWHAtY2hhciB7ZGlzcGxheTogYmxvY2shaW1wb3J0YW50fSYjeGE7Lk1KWHAtbW8ge21hcmdpbjogMCAuMTVlbX0mI3hhOy5NSlhwLW1mcmFjIHttYXJnaW46IDAgLjEyNWVtOyB2ZXJ0aWNhbC1hbGlnbjogLjI1ZW19JiN4YTsuTUpYcC1kZW5vbSB7ZGlzcGxheTogaW5saW5lLXRhYmxlIWltcG9ydGFudDsgd2lkdGg6IDEwMCV9JiN4YTsuTUpYcC1kZW5vbSAmZ3Q7ICoge2Rpc3BsYXk6IHRhYmxlLXJvdyFpbXBvcnRhbnR9JiN4YTsuTUpYcC1zdXJkIHt2ZXJ0aWNhbC1hbGlnbjogdG9wfSYjeGE7Lk1KWHAtc3VyZCAmZ3Q7ICoge2Rpc3BsYXk6IGJsb2NrIWltcG9ydGFudH0mI3hhOy5NSlhwLXNjcmlwdC1ib3ggJmd0OyAqICB7ZGlzcGxheTogdGFibGUhaW1wb3J0YW50OyBoZWlnaHQ6IDUwJX0mI3hhOy5NSlhwLXNjcmlwdC1ib3ggJmd0OyAqICZndDsgKiB7ZGlzcGxheTogdGFibGUtY2VsbCFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOiB0b3B9JiN4YTsuTUpYcC1zY3JpcHQtYm94ICZndDsgKjpsYXN0LWNoaWxkICZndDsgKiB7dmVydGljYWwtYWxpZ246IGJvdHRvbX0mI3hhOy5NSlhwLXNjcmlwdC1ib3ggJmd0OyAqICZndDsgKiAmZ3Q7ICoge2Rpc3BsYXk6IGJsb2NrIWltcG9ydGFudH0mI3hhOy5NSlhwLW1waGFudG9tIHt2aXNpYmlsaXR5OiBoaWRkZW59JiN4YTsuTUpYcC1tdW5kZXJvdmVyLCAuTUpYcC1tdW5kZXIge2Rpc3BsYXk6IGlubGluZS10YWJsZSFpbXBvcnRhbnR9JiN4YTsuTUpYcC1vdmVyIHtkaXNwbGF5OiBpbmxpbmUtYmxvY2shaW1wb3J0YW50OyB0ZXh0LWFsaWduOiBjZW50ZXJ9JiN4YTsuTUpYcC1vdmVyICZndDsgKiB7ZGlzcGxheTogYmxvY2shaW1wb3J0YW50fSYjeGE7Lk1KWHAtbXVuZGVyb3ZlciAmZ3Q7ICosIC5NSlhwLW11bmRlciAmZ3Q7ICoge2Rpc3BsYXk6IHRhYmxlLXJvdyFpbXBvcnRhbnR9JiN4YTsuTUpYcC1tdGFibGUge3ZlcnRpY2FsLWFsaWduOiAuMjVlbTsgbWFyZ2luOiAwIC4xMjVlbX0mI3hhOy5NSlhwLW10YWJsZSAmZ3Q7ICoge2Rpc3BsYXk6IGlubGluZS10YWJsZSFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGV9JiN4YTsuTUpYcC1tdHIge2Rpc3BsYXk6IHRhYmxlLXJvdyFpbXBvcnRhbnR9JiN4YTsuTUpYcC1tdGQge2Rpc3BsYXk6IHRhYmxlLWNlbGwhaW1wb3J0YW50OyB0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IC41ZW0gMCAwIC41ZW19JiN4YTsuTUpYcC1tdHIgJmd0OyAuTUpYcC1tdGQ6Zmlyc3QtY2hpbGQge3BhZGRpbmctbGVmdDogMH0mI3hhOy5NSlhwLW10cjpmaXJzdC1jaGlsZCAmZ3Q7IC5NSlhwLW10ZCB7cGFkZGluZy10b3A6IDB9JiN4YTsuTUpYcC1tbGFiZWxlZHRyIHtkaXNwbGF5OiB0YWJsZS1yb3chaW1wb3J0YW50fSYjeGE7Lk1KWHAtbWxhYmVsZWR0ciAmZ3Q7IC5NSlhwLW10ZDpmaXJzdC1jaGlsZCB7cGFkZGluZy1sZWZ0OiAwfSYjeGE7Lk1KWHAtbWxhYmVsZWR0cjpmaXJzdC1jaGlsZCAmZ3Q7IC5NSlhwLW10ZCB7cGFkZGluZy10b3A6IDB9JiN4YTsuTUpYcC1tZXJyb3Ige2JhY2tncm91bmQtY29sb3I6ICNGRkZGODg7IGNvbG9yOiAjQ0MwMDAwOyBib3JkZXI6IDFweCBzb2xpZCAjQ0MwMDAwOyBwYWRkaW5nOiAxcHggM3B4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtc2l6ZTogOTAlfSYjeGE7Lk1KWHAtc2NhbGUwIHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC4wKTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguMCk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguMCk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC4wKTsgdHJhbnNmb3JtOiBzY2FsZVgoLjApfSYjeGE7Lk1KWHAtc2NhbGUxIHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC4xKTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguMSk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguMSk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC4xKTsgdHJhbnNmb3JtOiBzY2FsZVgoLjEpfSYjeGE7Lk1KWHAtc2NhbGUyIHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC4yKTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguMik7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguMik7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC4yKTsgdHJhbnNmb3JtOiBzY2FsZVgoLjIpfSYjeGE7Lk1KWHAtc2NhbGUzIHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC4zKTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguMyk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguMyk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC4zKTsgdHJhbnNmb3JtOiBzY2FsZVgoLjMpfSYjeGE7Lk1KWHAtc2NhbGU0IHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC40KTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguNCk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguNCk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC40KTsgdHJhbnNmb3JtOiBzY2FsZVgoLjQpfSYjeGE7Lk1KWHAtc2NhbGU1IHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC41KTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguNSk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguNSk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC41KTsgdHJhbnNmb3JtOiBzY2FsZVgoLjUpfSYjeGE7Lk1KWHAtc2NhbGU2IHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC42KTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguNik7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguNik7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC42KTsgdHJhbnNmb3JtOiBzY2FsZVgoLjYpfSYjeGE7Lk1KWHAtc2NhbGU3IHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC43KTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguNyk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguNyk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC43KTsgdHJhbnNmb3JtOiBzY2FsZVgoLjcpfSYjeGE7Lk1KWHAtc2NhbGU4IHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC44KTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguOCk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguOCk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC44KTsgdHJhbnNmb3JtOiBzY2FsZVgoLjgpfSYjeGE7Lk1KWHAtc2NhbGU5IHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC45KTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguOSk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguOSk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC45KTsgdHJhbnNmb3JtOiBzY2FsZVgoLjkpfSYjeGE7Lk1hdGhKYXhfUEhUTUwgLm5vRXJyb3Ige3ZlcnRpY2FsLWFsaWduOiA7IGZvbnQtc2l6ZTogOTAlOyB0ZXh0LWFsaWduOiBsZWZ0OyBjb2xvcjogYmxhY2s7IHBhZGRpbmc6IDFweCAzcHg7IGJvcmRlcjogMXB4IHNvbGlkfSYjeGE7PC9zdHlsZT48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4uTWF0aEpheF9TVkdfRGlzcGxheSB7dGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW46IDFlbSAwZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogYmxvY2shaW1wb3J0YW50OyB0ZXh0LWluZGVudDogMDsgbWF4LXdpZHRoOiBub25lOyBtYXgtaGVpZ2h0OiBub25lOyBtaW4td2lkdGg6IDA7IG1pbi1oZWlnaHQ6IDA7IHdpZHRoOiAxMDAlfSYjeGE7Lk1hdGhKYXhfU1ZHIC5NSlgtbW9ub3NwYWNlIHtmb250LWZhbWlseTogbW9ub3NwYWNlfSYjeGE7Lk1hdGhKYXhfU1ZHIC5NSlgtc2Fucy1zZXJpZiB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWZ9JiN4YTsjTWF0aEpheF9TVkdfVG9vbHRpcCB7YmFja2dyb3VuZC1jb2xvcjogSW5mb0JhY2tncm91bmQ7IGNvbG9yOiBJbmZvVGV4dDsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IGJveC1zaGFkb3c6IDJweCAycHggNXB4ICNBQUFBQUE7IC13ZWJraXQtYm94LXNoYWRvdzogMnB4IDJweCA1cHggI0FBQUFBQTsgLW1vei1ib3gtc2hhZG93OiAycHggMnB4IDVweCAjQUFBQUFBOyAta2h0bWwtYm94LXNoYWRvdzogMnB4IDJweCA1cHggI0FBQUFBQTsgcGFkZGluZzogM3B4IDRweDsgei1pbmRleDogNDAxOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHRvcDogMDsgd2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzsgZGlzcGxheTogbm9uZX0mI3hhOy5NYXRoSmF4X1NWRyB7ZGlzcGxheTogaW5saW5lOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IGZvbnQtc2l6ZTogMTAwJTsgZm9udC1zaXplLWFkanVzdDogbm9uZTsgdGV4dC1pbmRlbnQ6IDA7IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtdHJhbnNmb3JtOiBub25lOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7IHdoaXRlLXNwYWNlOiBub3dyYXA7IGZsb2F0OiBub25lOyBkaXJlY3Rpb246IGx0cjsgbWF4LXdpZHRoOiBub25lOyBtYXgtaGVpZ2h0OiBub25lOyBtaW4td2lkdGg6IDA7IG1pbi1oZWlnaHQ6IDA7IGJvcmRlcjogMDsgcGFkZGluZzogMDsgbWFyZ2luOiAwfSYjeGE7Lk1hdGhKYXhfU1ZHICoge3RyYW5zaXRpb246IG5vbmU7IC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsgLW1vei10cmFuc2l0aW9uOiBub25lOyAtbXMtdHJhbnNpdGlvbjogbm9uZTsgLW8tdHJhbnNpdGlvbjogbm9uZX0mI3hhOy5NYXRoSmF4X1NWRyAmZ3Q7IGRpdiB7ZGlzcGxheTogaW5saW5lLWJsb2NrfSYjeGE7Lm1qeC1zdmctaHJlZiB7ZmlsbDogYmx1ZTsgc3Ryb2tlOiBibHVlfSYjeGE7Lk1hdGhKYXhfU1ZHX1Byb2Nlc3Npbmcge3Zpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAwOyBoZWlnaHQ6IDA7IG92ZXJmbG93OiBoaWRkZW47IGRpc3BsYXk6IGJsb2NrIWltcG9ydGFudH0mI3hhOy5NYXRoSmF4X1NWR19Qcm9jZXNzZWQge2Rpc3BsYXk6IG5vbmUhaW1wb3J0YW50fSYjeGE7Lk1hdGhKYXhfU1ZHX3Rlc3Qge2ZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC1zaXplOiAxMDAlOyBmb250LXNpemUtYWRqdXN0OiBub25lOyB0ZXh0LWluZGVudDogMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHdvcmQtc3BhY2luZzogbm9ybWFsOyBvdmVyZmxvdzogaGlkZGVuOyBoZWlnaHQ6IDFweH0mI3hhOy5NYXRoSmF4X1NWR190ZXN0Lm1qeC10ZXN0LWRpc3BsYXkge2Rpc3BsYXk6IHRhYmxlIWltcG9ydGFudH0mI3hhOy5NYXRoSmF4X1NWR190ZXN0Lm1qeC10ZXN0LWlubGluZSB7ZGlzcGxheTogaW5saW5lIWltcG9ydGFudDsgbWFyZ2luLXJpZ2h0OiAtMXB4fSYjeGE7Lk1hdGhKYXhfU1ZHX3Rlc3QubWp4LXRlc3QtZGVmYXVsdCB7ZGlzcGxheTogYmxvY2shaW1wb3J0YW50OyBjbGVhcjogYm90aH0mI3hhOy5NYXRoSmF4X1NWR19leF9ib3gge2Rpc3BsYXk6IGlubGluZS1ibG9jayFpbXBvcnRhbnQ7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgb3ZlcmZsb3c6IGhpZGRlbjsgbWluLWhlaWdodDogMDsgbWF4LWhlaWdodDogbm9uZTsgcGFkZGluZzogMDsgYm9yZGVyOiAwOyBtYXJnaW46IDA7IHdpZHRoOiAxcHg7IGhlaWdodDogNjBleH0mI3hhOy5tangtdGVzdC1pbmxpbmUgLk1hdGhKYXhfU1ZHX2xlZnRfYm94IHtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiAwOyBmbG9hdDogbGVmdH0mI3hhOy5tangtdGVzdC1pbmxpbmUgLk1hdGhKYXhfU1ZHX3JpZ2h0X2JveCB7ZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMDsgZmxvYXQ6IHJpZ2h0fSYjeGE7Lm1qeC10ZXN0LWRpc3BsYXkgLk1hdGhKYXhfU1ZHX3JpZ2h0X2JveCB7ZGlzcGxheTogdGFibGUtY2VsbCFpbXBvcnRhbnQ7IHdpZHRoOiAxMDAwMGVtIWltcG9ydGFudDsgbWluLXdpZHRoOiAwOyBtYXgtd2lkdGg6IG5vbmU7IHBhZGRpbmc6IDA7IGJvcmRlcjogMDsgbWFyZ2luOiAwfSYjeGE7Lk1hdGhKYXhfU1ZHIC5ub0Vycm9yIHt2ZXJ0aWNhbC1hbGlnbjogOyBmb250LXNpemU6IDkwJTsgdGV4dC1hbGlnbjogbGVmdDsgY29sb3I6IGJsYWNrOyBwYWRkaW5nOiAxcHggM3B4OyBib3JkZXI6IDFweCBzb2xpZH0mI3hhOzwvc3R5bGU+PC9kZWZzPjxnPjxyZWN0IHg9IjI4Ny41IiB5PSIyMjcuNSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBmaWxsPSIjZGFlOGZjIiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIzMTUiIHk9IjIyNy41IiB3aWR0aD0iMTcwIiBoZWlnaHQ9IjIwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMTY4cHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjM4cHg7IG1hcmdpbi1sZWZ0OiAzMTZweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTVweCI+RW5kIGJlY2F1c2Ugb2YgdGltZSBsaW1pdDwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNDAwIiB5PSIyNDEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+RW5kIGJlY2F1c2Ugb2YgdGltZSBsaW1pdDwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNTMzLjc1IiB5PSIyMjcuNSIgd2lkdGg9IjI4MCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDI3OHB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDIzOHB4OyBtYXJnaW4tbGVmdDogNTM1cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDE1cHgiPkVuZCBiZWNhdXNlIGVub3VnaCB0aW1lc3RlcHMgY29sbGVjdGVkPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSI2NzQiIHk9IjI0MSIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5FbmQgYmVjYXVzZSBlbm91Z2ggdGltZXN0ZXBzIGNvbGxlY3RlZDwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNTA2LjI1IiB5PSIyMjcuNSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBmaWxsPSIjZmZlNmNjIiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIxNzcuNSIgeT0iMjI3LjUiIHdpZHRoPSI5Mi41IiBoZWlnaHQ9IjIwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogOTFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAyMzhweDsgbWFyZ2luLWxlZnQ6IDE3OXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxNXB4Ij5FbmQgbm9ybWFsbHk8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjIyNCIgeT0iMjQxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPkVuZCBub3JtYWxseTwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMTUwIiB5PSIyMjcuNSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBmaWxsPSIjZDVlOGQ0IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1MDYuMjUiIHk9IjIyNy41IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbGw9IiNmZmU2Y2MiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjI2LjI1IiB5PSIyMjcuNSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1My4yNSIgeT0iMjI3LjUiIHdpZHRoPSI4MyIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGZsZXgtc3RhcnQ7IHdpZHRoOiA4MXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDIzOHB4OyBtYXJnaW4tbGVmdDogNTVweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogbGVmdDsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDE1cHgiPkRhdGEgYmF0Y2g8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjU1IiB5PSIyNDEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTJweCI+RGF0YSBiYXRjaDwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iLTIwIiB5PSIxODAiIHdpZHRoPSI2MCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InJvdGF0ZSgtOTAsMTAsMTkwKSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSlyb3RhdGUoLTkwIDEwIDE5MCkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiA1OHB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDE5MHB4OyBtYXJnaW4tbGVmdDogLTE5cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDE1cHgiPkVudiBuPC9mb250PjwvYj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMTAiIHk9IjE5NCIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5FbnYgbjwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNzMwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNzc1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2ZmZTZjYyIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDQzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzBweDsgbWFyZ2luLWxlZnQ6IDc3NnB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3BhbiBzdHlsZT0iY29sb3I6IHJnYig1MSAsIDUxICwgNTEpIj48c3BhbiBjbGFzcz0iTWF0aEpheF9QcmV2aWV3IiBzdHlsZT0iY29sb3I6IGluaGVyaXQ7Ij48L3NwYW4+PGRpdiBjbGFzcz0iTWF0aEpheF9TVkdfRGlzcGxheSIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPjxzcGFuIGNsYXNzPSJNYXRoSmF4X1NWRyIgaWQ9Ik1hdGhKYXgtRWxlbWVudC02LUZyYW1lIiB0YWJpbmRleD0iMCIgZGF0YS1tYXRobWw9IiZsdDttYXRoIHhtbG5zPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwmcXVvdDsgZGlzcGxheT0mcXVvdDtibG9jayZxdW90OyZndDsmbHQ7bXN1YiZndDsmbHQ7bWkmZ3Q7YiZsdDsvbWkmZ3Q7Jmx0O21yb3cgY2xhc3M9JnF1b3Q7TUpYLVRlWEF0b20tT1JEJnF1b3Q7Jmd0OyZsdDttaSZndDtoJmx0Oy9taSZndDsmbHQ7L21yb3cmZ3Q7Jmx0Oy9tc3ViJmd0OyZsdDsvbWF0aCZndDsiIHJvbGU9InByZXNlbnRhdGlvbiIgc3R5bGU9ImZvbnQtc2l6ZTogMTAwJTsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyLjE3N2V4IiBoZWlnaHQ9IjIuNTc2ZXgiIHZpZXdCb3g9IjAgLTgzMC45IDkzNy4xIDExMDkuMiIgcm9sZT0iaW1nIiBmb2N1c2FibGU9ImZhbHNlIiBzdHlsZT0idmVydGljYWwtYWxpZ246IC0wLjY0NmV4OyIgYXJpYS1oaWRkZW49InRydWUiPjxnIHN0cm9rZT0iY3VycmVudENvbG9yIiBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHBhdGggc3Ryb2tlLXdpZHRoPSIxIiBkPSJNNzMgNjQ3UTczIDY1NyA3NyA2NzBUODkgNjgzUTkwIDY4MyAxNjEgNjg4VDIzNCA2OTRRMjQ2IDY5NCAyNDYgNjg1VDIxMiA1NDJRMjA0IDUwOCAxOTUgNDcyVDE4MCA0MThMMTc2IDM5OVExNzYgMzk2IDE4MiA0MDJRMjMxIDQ0MiAyODMgNDQyUTM0NSA0NDIgMzgzIDM5NlQ0MjIgMjgwUTQyMiAxNjkgMzQzIDc5VDE3MyAtMTFRMTIzIC0xMSA4MiAyN1Q0MCAxNTBWMTU5UTQwIDE4MCA0OCAyMTdUOTcgNDE0UTE0NyA2MTEgMTQ3IDYyM1QxMDkgNjM3UTEwNCA2MzcgMTAxIDYzN0g5NlE4NiA2MzcgODMgNjM3VDc2IDY0MFQ3MyA2NDdaTTMzNiAzMjVWMzMxUTMzNiA0MDUgMjc1IDQwNVEyNTggNDA1IDI0MCAzOTdUMjA3IDM3NlQxODEgMzUyVDE2MyAzMzBMMTU3IDMyMkwxMzYgMjM2UTExNCAxNTAgMTE0IDExNFExMTQgNjYgMTM4IDQyUTE1NCAyNiAxNzggMjZRMjExIDI2IDI0NSA1OFEyNzAgODEgMjg1IDExNFQzMTggMjE5UTMzNiAyOTEgMzM2IDMyNVoiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MjksLTE1MCkiPjxwYXRoIHN0cm9rZS13aWR0aD0iMSIgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNykiIGQ9Ik0xMzcgNjgzUTEzOCA2ODMgMjA5IDY4OFQyODIgNjk0UTI5NCA2OTQgMjk0IDY4NVEyOTQgNjc0IDI1OCA1MzRRMjIwIDM4NiAyMjAgMzgzUTIyMCAzODEgMjI3IDM4OFEyODggNDQyIDM1NyA0NDJRNDExIDQ0MiA0NDQgNDE1VDQ3OCAzMzZRNDc4IDI4NSA0NDAgMTc4VDQwMiA1MFE0MDMgMzYgNDA3IDMxVDQyMiAyNlE0NTAgMjYgNDc0IDU2VDUxMyAxMzhRNTE2IDE0OSA1MTkgMTUxVDUzNSAxNTNRNTU1IDE1MyA1NTUgMTQ1UTU1NSAxNDQgNTUxIDEzMFE1MzUgNzEgNTAwIDMzUTQ2NiAtMTAgNDE5IC0xMEg0MTRRMzY3IC0xMCAzNDYgMTdUMzI1IDc0UTMyNSA5MCAzNjEgMTkyVDM5OCAzNDVRMzk4IDQwNCAzNTQgNDA0SDM0OVEyNjYgNDA0IDIwNSAzMDZMMTk4IDI5M0wxNjQgMTU4UTEzMiAyOCAxMjcgMTZRMTE0IC0xMSA4MyAtMTFRNjkgLTExIDU5IC0yVDQ4IDE2UTQ4IDMwIDEyMSAzMjBMMTk1IDYxNlExOTUgNjI5IDE4OCA2MzJUMTQ5IDYzN0gxMjhRMTIyIDY0MyAxMjIgNjQ1VDEyNCA2NjRRMTI5IDY4MyAxMzcgNjgzWiIvPjwvZz48L2c+PC9zdmc+PHNwYW4gY2xhc3M9Ik1KWF9Bc3Npc3RpdmVfTWF0aE1MIE1KWF9Bc3Npc3RpdmVfTWF0aE1MX0Jsb2NrIiByb2xlPSJwcmVzZW50YXRpb24iPjwvc3Bhbj48L3NwYW4+PC9kaXY+PHNjcmlwdCB0eXBlPSJtYXRoL3RleDsgbW9kZT1kaXNwbGF5IiBpZD0iTWF0aEpheC1FbGVtZW50LTYiPmJfe2h9PC9zY3JpcHQ+PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSI3OTgiIHk9IjM0IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPiYjeGE7Yl97aH08L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjUwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDQzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzBweDsgbWFyZ2luLWxlZnQ6IDUxcHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMzMzMzMzM7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxzcGFuIGNsYXNzPSJNYXRoSmF4X1ByZXZpZXciIHN0eWxlPSJjb2xvcjogaW5oZXJpdDsiPjwvc3Bhbj48ZGl2IGNsYXNzPSJNYXRoSmF4X1NWR19EaXNwbGF5IiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+PHNwYW4gY2xhc3M9Ik1hdGhKYXhfU1ZHIiBpZD0iTWF0aEpheC1FbGVtZW50LTctRnJhbWUiIHRhYmluZGV4PSIwIiBkYXRhLW1hdGhtbD0iJmx0O21hdGggeG1sbnM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCZxdW90OyBkaXNwbGF5PSZxdW90O2Jsb2NrJnF1b3Q7Jmd0OyZsdDttc3ViJmd0OyZsdDttaSZndDtiJmx0Oy9taSZndDsmbHQ7bXJvdyBjbGFzcz0mcXVvdDtNSlgtVGVYQXRvbS1PUkQmcXVvdDsmZ3Q7Jmx0O21uJmd0OzEmbHQ7L21uJmd0OyZsdDsvbXJvdyZndDsmbHQ7L21zdWImZ3Q7Jmx0Oy9tYXRoJmd0OyIgcm9sZT0icHJlc2VudGF0aW9uIiBzdHlsZT0iZm9udC1zaXplOiAxMDAlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjIuMDUyZXgiIGhlaWdodD0iMi41NzZleCIgdmlld0JveD0iMCAtODMwLjkgODgzLjQgMTEwOS4yIiByb2xlPSJpbWciIGZvY3VzYWJsZT0iZmFsc2UiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogLTAuNjQ2ZXg7IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGcgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48cGF0aCBzdHJva2Utd2lkdGg9IjEiIGQ9Ik03MyA2NDdRNzMgNjU3IDc3IDY3MFQ4OSA2ODNROTAgNjgzIDE2MSA2ODhUMjM0IDY5NFEyNDYgNjk0IDI0NiA2ODVUMjEyIDU0MlEyMDQgNTA4IDE5NSA0NzJUMTgwIDQxOEwxNzYgMzk5UTE3NiAzOTYgMTgyIDQwMlEyMzEgNDQyIDI4MyA0NDJRMzQ1IDQ0MiAzODMgMzk2VDQyMiAyODBRNDIyIDE2OSAzNDMgNzlUMTczIC0xMVExMjMgLTExIDgyIDI3VDQwIDE1MFYxNTlRNDAgMTgwIDQ4IDIxN1Q5NyA0MTRRMTQ3IDYxMSAxNDcgNjIzVDEwOSA2MzdRMTA0IDYzNyAxMDEgNjM3SDk2UTg2IDYzNyA4MyA2MzdUNzYgNjQwVDczIDY0N1pNMzM2IDMyNVYzMzFRMzM2IDQwNSAyNzUgNDA1UTI1OCA0MDUgMjQwIDM5N1QyMDcgMzc2VDE4MSAzNTJUMTYzIDMzMEwxNTcgMzIyTDEzNiAyMzZRMTE0IDE1MCAxMTQgMTE0UTExNCA2NiAxMzggNDJRMTU0IDI2IDE3OCAyNlEyMTEgMjYgMjQ1IDU4UTI3MCA4MSAyODUgMTE0VDMxOCAyMTlRMzM2IDI5MSAzMzYgMzI1WiIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQyOSwtMTUwKSI+PHBhdGggc3Ryb2tlLXdpZHRoPSIxIiB0cmFuc2Zvcm09InNjYWxlKDAuNzA3KSIgZD0iTTIxMyA1NzhMMjAwIDU3M1ExODYgNTY4IDE2MCA1NjNUMTAyIDU1Nkg4M1Y2MDJIMTAyUTE0OSA2MDQgMTg5IDYxN1QyNDUgNjQxVDI3MyA2NjNRMjc1IDY2NiAyODUgNjY2UTI5NCA2NjYgMzAyIDY2MFYzNjFMMzAzIDYxUTMxMCA1NCAzMTUgNTJUMzM5IDQ4VDQwMSA0Nkg0MjdWMEg0MTZRMzk1IDMgMjU3IDNRMTIxIDMgMTAwIDBIODhWNDZIMTE0UTEzNiA0NiAxNTIgNDZUMTc3IDQ3VDE5MyA1MFQyMDEgNTJUMjA3IDU3VDIxMyA2MVY1NzhaIi8+PC9nPjwvZz48L3N2Zz48c3BhbiBjbGFzcz0iTUpYX0Fzc2lzdGl2ZV9NYXRoTUwgTUpYX0Fzc2lzdGl2ZV9NYXRoTUxfQmxvY2siIHJvbGU9InByZXNlbnRhdGlvbiI+PC9zcGFuPjwvc3Bhbj48L2Rpdj48c2NyaXB0IHR5cGU9Im1hdGgvdGV4OyBtb2RlPWRpc3BsYXkiIGlkPSJNYXRoSmF4LUVsZW1lbnQtNyI+Yl97MX08L3NjcmlwdD48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNzMiIHk9IjM0IiBmaWxsPSIjMzMzMzMzIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPiYjeGE7Yl97MX08L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9Ijk1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMTQwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMzI1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Q1ZThkNCIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMzcwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNDE1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNDYwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Q1ZThkNCIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNTA1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNTUwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNTk1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNjQwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNjg1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Q1ZThkNCIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMTg1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMjMwIiB5PSI3LjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMjgwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNzMwIiB5PSI2My41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9Ijc3NSIgeT0iNjMuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZmZlNmNjIiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1MCIgeT0iNjMuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogNDNweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiA4NnB4OyBtYXJnaW4tbGVmdDogNTFweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzMzMzMzMzsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+PHNwYW4gY2xhc3M9Ik1hdGhKYXhfUHJldmlldyIgc3R5bGU9ImNvbG9yOiBpbmhlcml0OyI+PC9zcGFuPjxkaXYgY2xhc3M9Ik1hdGhKYXhfU1ZHX0Rpc3BsYXkiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij48c3BhbiBjbGFzcz0iTWF0aEpheF9TVkciIGlkPSJNYXRoSmF4LUVsZW1lbnQtOC1GcmFtZSIgdGFiaW5kZXg9IjAiIGRhdGEtbWF0aG1sPSImbHQ7bWF0aCB4bWxucz0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJnF1b3Q7IGRpc3BsYXk9JnF1b3Q7YmxvY2smcXVvdDsmZ3Q7Jmx0O21zdWImZ3Q7Jmx0O21pJmd0O2ImbHQ7L21pJmd0OyZsdDttcm93IGNsYXNzPSZxdW90O01KWC1UZVhBdG9tLU9SRCZxdW90OyZndDsmbHQ7bWkmZ3Q7aCZsdDsvbWkmZ3Q7Jmx0O21vJmd0OysmbHQ7L21vJmd0OyZsdDttbiZndDsxJmx0Oy9tbiZndDsmbHQ7L21yb3cmZ3Q7Jmx0Oy9tc3ViJmd0OyZsdDsvbWF0aCZndDsiIHJvbGU9InByZXNlbnRhdGlvbiIgc3R5bGU9ImZvbnQtc2l6ZTogMTAwJTsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI0LjI3N2V4IiBoZWlnaHQ9IjIuNzM3ZXgiIHZpZXdCb3g9IjAgLTgzMC45IDE4NDEuNSAxMTc4LjIiIHJvbGU9ImltZyIgZm9jdXNhYmxlPSJmYWxzZSIgc3R5bGU9InZlcnRpY2FsLWFsaWduOiAtMC44MDdleDsiIGFyaWEtaGlkZGVuPSJ0cnVlIj48ZyBzdHJva2U9ImN1cnJlbnRDb2xvciIgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjAiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMCkiPjxwYXRoIHN0cm9rZS13aWR0aD0iMSIgZD0iTTczIDY0N1E3MyA2NTcgNzcgNjcwVDg5IDY4M1E5MCA2ODMgMTYxIDY4OFQyMzQgNjk0UTI0NiA2OTQgMjQ2IDY4NVQyMTIgNTQyUTIwNCA1MDggMTk1IDQ3MlQxODAgNDE4TDE3NiAzOTlRMTc2IDM5NiAxODIgNDAyUTIzMSA0NDIgMjgzIDQ0MlEzNDUgNDQyIDM4MyAzOTZUNDIyIDI4MFE0MjIgMTY5IDM0MyA3OVQxNzMgLTExUTEyMyAtMTEgODIgMjdUNDAgMTUwVjE1OVE0MCAxODAgNDggMjE3VDk3IDQxNFExNDcgNjExIDE0NyA2MjNUMTA5IDYzN1ExMDQgNjM3IDEwMSA2MzdIOTZRODYgNjM3IDgzIDYzN1Q3NiA2NDBUNzMgNjQ3Wk0zMzYgMzI1VjMzMVEzMzYgNDA1IDI3NSA0MDVRMjU4IDQwNSAyNDAgMzk3VDIwNyAzNzZUMTgxIDM1MlQxNjMgMzMwTDE1NyAzMjJMMTM2IDIzNlExMTQgMTUwIDExNCAxMTRRMTE0IDY2IDEzOCA0MlExNTQgMjYgMTc4IDI2UTIxMSAyNiAyNDUgNThRMjcwIDgxIDI4NSAxMTRUMzE4IDIxOVEzMzYgMjkxIDMzNiAzMjVaIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDI5LC0xNTApIj48cGF0aCBzdHJva2Utd2lkdGg9IjEiIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcpIiBkPSJNMTM3IDY4M1ExMzggNjgzIDIwOSA2ODhUMjgyIDY5NFEyOTQgNjk0IDI5NCA2ODVRMjk0IDY3NCAyNTggNTM0UTIyMCAzODYgMjIwIDM4M1EyMjAgMzgxIDIyNyAzODhRMjg4IDQ0MiAzNTcgNDQyUTQxMSA0NDIgNDQ0IDQxNVQ0NzggMzM2UTQ3OCAyODUgNDQwIDE3OFQ0MDIgNTBRNDAzIDM2IDQwNyAzMVQ0MjIgMjZRNDUwIDI2IDQ3NCA1NlQ1MTMgMTM4UTUxNiAxNDkgNTE5IDE1MVQ1MzUgMTUzUTU1NSAxNTMgNTU1IDE0NVE1NTUgMTQ0IDU1MSAxMzBRNTM1IDcxIDUwMCAzM1E0NjYgLTEwIDQxOSAtMTBINDE0UTM2NyAtMTAgMzQ2IDE3VDMyNSA3NFEzMjUgOTAgMzYxIDE5MlQzOTggMzQ1UTM5OCA0MDQgMzU0IDQwNEgzNDlRMjY2IDQwNCAyMDUgMzA2TDE5OCAyOTNMMTY0IDE1OFExMzIgMjggMTI3IDE2UTExNCAtMTEgODMgLTExUTY5IC0xMSA1OSAtMlQ0OCAxNlE0OCAzMCAxMjEgMzIwTDE5NSA2MTZRMTk1IDYyOSAxODggNjMyVDE0OSA2MzdIMTI4UTEyMiA2NDMgMTIyIDY0NVQxMjQgNjY0UTEyOSA2ODMgMTM3IDY4M1oiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MDcsMCkiPjxwYXRoIHN0cm9rZS13aWR0aD0iMSIgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNykiIGQ9Ik01NiAyMzdUNTYgMjUwVDcwIDI3MEgzNjlWNDIwTDM3MCA1NzBRMzgwIDU4MyAzODkgNTgzUTQwMiA1ODMgNDA5IDU2OFYyNzBINzA3UTcyMiAyNjIgNzIyIDI1MFQ3MDcgMjMwSDQwOVYtNjhRNDAxIC04MiAzOTEgLTgySDM4OUgzODdRMzc1IC04MiAzNjkgLTY4VjIzMEg3MFE1NiAyMzcgNTYgMjUwWiIvPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5NTgsMCkiPjxwYXRoIHN0cm9rZS13aWR0aD0iMSIgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNykiIGQ9Ik0yMTMgNTc4TDIwMCA1NzNRMTg2IDU2OCAxNjAgNTYzVDEwMiA1NTZIODNWNjAySDEwMlExNDkgNjA0IDE4OSA2MTdUMjQ1IDY0MVQyNzMgNjYzUTI3NSA2NjYgMjg1IDY2NlEyOTQgNjY2IDMwMiA2NjBWMzYxTDMwMyA2MVEzMTAgNTQgMzE1IDUyVDMzOSA0OFQ0MDEgNDZINDI3VjBINDE2UTM5NSAzIDI1NyAzUTEyMSAzIDEwMCAwSDg4VjQ2SDExNFExMzYgNDYgMTUyIDQ2VDE3NyA0N1QxOTMgNTBUMjAxIDUyVDIwNyA1N1QyMTMgNjFWNTc4WiIvPjwvZz48L2c+PC9nPjwvc3ZnPjxzcGFuIGNsYXNzPSJNSlhfQXNzaXN0aXZlX01hdGhNTCBNSlhfQXNzaXN0aXZlX01hdGhNTF9CbG9jayIgcm9sZT0icHJlc2VudGF0aW9uIj48L3NwYW4+PC9zcGFuPjwvZGl2PjxzY3JpcHQgdHlwZT0ibWF0aC90ZXg7IG1vZGU9ZGlzcGxheSIgaWQ9Ik1hdGhKYXgtRWxlbWVudC04Ij5iX3toKzF9PC9zY3JpcHQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjczIiB5PSI5MCIgZmlsbD0iIzMzMzMzMyIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4mI3hhO2Jfe2grMX08L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9Ijk1IiB5PSI2My41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjE0MCIgeT0iNjMuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIzMjUiIHk9IjYzLjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMzcwIiB5PSI2My41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjQxNSIgeT0iNjMuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI0NjAiIHk9IjYzLjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2RhZThmYyIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNTA1IiB5PSI2My41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjU1MCIgeT0iNjMuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1OTUiIHk9IjYzLjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNjQwIiB5PSI2My41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjY4NSIgeT0iNjMuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIxODUiIHk9IjYzLjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMjMwIiB5PSI2My41IiB3aWR0aD0iNTAiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjI4MCIgeT0iNjMuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI3MzAiIHk9IjE2Ny41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9Ijc3NSIgeT0iMTY3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2ZmZTZjYyIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDQzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMTkwcHg7IG1hcmdpbi1sZWZ0OiA3NzZweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+PHNwYW4gY2xhc3M9Ik1hdGhKYXhfUHJldmlldyIgc3R5bGU9ImNvbG9yOiBpbmhlcml0OyI+PC9zcGFuPjxkaXYgY2xhc3M9Ik1hdGhKYXhfU1ZHX0Rpc3BsYXkiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij48c3BhbiBjbGFzcz0iTWF0aEpheF9TVkciIGlkPSJNYXRoSmF4LUVsZW1lbnQtOS1GcmFtZSIgdGFiaW5kZXg9IjAiIGRhdGEtbWF0aG1sPSImbHQ7bWF0aCB4bWxucz0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJnF1b3Q7IGRpc3BsYXk9JnF1b3Q7YmxvY2smcXVvdDsmZ3Q7Jmx0O21zdWImZ3Q7Jmx0O21pJmd0O2ImbHQ7L21pJmd0OyZsdDttcm93IGNsYXNzPSZxdW90O01KWC1UZVhBdG9tLU9SRCZxdW90OyZndDsmbHQ7bWkmZ3Q7biZsdDsvbWkmZ3Q7Jmx0O21pJmd0O2gmbHQ7L21pJmd0OyZsdDsvbXJvdyZndDsmbHQ7L21zdWImZ3Q7Jmx0Oy9tYXRoJmd0OyIgcm9sZT0icHJlc2VudGF0aW9uIiBzdHlsZT0iZm9udC1zaXplOiAxMDAlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjMuMTYzZXgiIGhlaWdodD0iMi41NzZleCIgdmlld0JveD0iMCAtODMwLjkgMTM2MS44IDExMDkuMiIgcm9sZT0iaW1nIiBmb2N1c2FibGU9ImZhbHNlIiBzdHlsZT0idmVydGljYWwtYWxpZ246IC0wLjY0NmV4OyIgYXJpYS1oaWRkZW49InRydWUiPjxnIHN0cm9rZT0iY3VycmVudENvbG9yIiBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHBhdGggc3Ryb2tlLXdpZHRoPSIxIiBkPSJNNzMgNjQ3UTczIDY1NyA3NyA2NzBUODkgNjgzUTkwIDY4MyAxNjEgNjg4VDIzNCA2OTRRMjQ2IDY5NCAyNDYgNjg1VDIxMiA1NDJRMjA0IDUwOCAxOTUgNDcyVDE4MCA0MThMMTc2IDM5OVExNzYgMzk2IDE4MiA0MDJRMjMxIDQ0MiAyODMgNDQyUTM0NSA0NDIgMzgzIDM5NlQ0MjIgMjgwUTQyMiAxNjkgMzQzIDc5VDE3MyAtMTFRMTIzIC0xMSA4MiAyN1Q0MCAxNTBWMTU5UTQwIDE4MCA0OCAyMTdUOTcgNDE0UTE0NyA2MTEgMTQ3IDYyM1QxMDkgNjM3UTEwNCA2MzcgMTAxIDYzN0g5NlE4NiA2MzcgODMgNjM3VDc2IDY0MFQ3MyA2NDdaTTMzNiAzMjVWMzMxUTMzNiA0MDUgMjc1IDQwNVEyNTggNDA1IDI0MCAzOTdUMjA3IDM3NlQxODEgMzUyVDE2MyAzMzBMMTU3IDMyMkwxMzYgMjM2UTExNCAxNTAgMTE0IDExNFExMTQgNjYgMTM4IDQyUTE1NCAyNiAxNzggMjZRMjExIDI2IDI0NSA1OFEyNzAgODEgMjg1IDExNFQzMTggMjE5UTMzNiAyOTEgMzM2IDMyNVoiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MjksLTE1MCkiPjxwYXRoIHN0cm9rZS13aWR0aD0iMSIgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNykiIGQ9Ik0yMSAyODdRMjIgMjkzIDI0IDMwM1QzNiAzNDFUNTYgMzg4VDg5IDQyNVQxMzUgNDQyUTE3MSA0NDIgMTk1IDQyNFQyMjUgMzkwVDIzMSAzNjlRMjMxIDM2NyAyMzIgMzY3TDI0MyAzNzhRMzA0IDQ0MiAzODIgNDQyUTQzNiA0NDIgNDY5IDQxNVQ1MDMgMzM2VDQ2NSAxNzlUNDI3IDUyUTQyNyAyNiA0NDQgMjZRNDUwIDI2IDQ1MyAyN1E0ODIgMzIgNTA1IDY1VDU0MCAxNDVRNTQyIDE1MyA1NjAgMTUzUTU4MCAxNTMgNTgwIDE0NVE1ODAgMTQ0IDU3NiAxMzBRNTY4IDEwMSA1NTQgNzNUNTA4IDE3VDQzOSAtMTBRMzkyIC0xMCAzNzEgMTdUMzUwIDczUTM1MCA5MiAzODYgMTkzVDQyMyAzNDVRNDIzIDQwNCAzNzkgNDA0SDM3NFEyODggNDA0IDIyOSAzMDNMMjIyIDI5MUwxODkgMTU3UTE1NiAyNiAxNTEgMTZRMTM4IC0xMSAxMDggLTExUTk1IC0xMSA4NyAtNVQ3NiA3VDc0IDE3UTc0IDMwIDExMiAxODBUMTUyIDM0M1ExNTMgMzQ4IDE1MyAzNjZRMTUzIDQwNSAxMjkgNDA1UTkxIDQwNSA2NiAzMDVRNjAgMjg1IDYwIDI4NFE1OCAyNzggNDEgMjc4SDI3UTIxIDI4NCAyMSAyODdaIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDI0LDApIj48cGF0aCBzdHJva2Utd2lkdGg9IjEiIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcpIiBkPSJNMTM3IDY4M1ExMzggNjgzIDIwOSA2ODhUMjgyIDY5NFEyOTQgNjk0IDI5NCA2ODVRMjk0IDY3NCAyNTggNTM0UTIyMCAzODYgMjIwIDM4M1EyMjAgMzgxIDIyNyAzODhRMjg4IDQ0MiAzNTcgNDQyUTQxMSA0NDIgNDQ0IDQxNVQ0NzggMzM2UTQ3OCAyODUgNDQwIDE3OFQ0MDIgNTBRNDAzIDM2IDQwNyAzMVQ0MjIgMjZRNDUwIDI2IDQ3NCA1NlQ1MTMgMTM4UTUxNiAxNDkgNTE5IDE1MVQ1MzUgMTUzUTU1NSAxNTMgNTU1IDE0NVE1NTUgMTQ0IDU1MSAxMzBRNTM1IDcxIDUwMCAzM1E0NjYgLTEwIDQxOSAtMTBINDE0UTM2NyAtMTAgMzQ2IDE3VDMyNSA3NFEzMjUgOTAgMzYxIDE5MlQzOTggMzQ1UTM5OCA0MDQgMzU0IDQwNEgzNDlRMjY2IDQwNCAyMDUgMzA2TDE5OCAyOTNMMTY0IDE1OFExMzIgMjggMTI3IDE2UTExNCAtMTEgODMgLTExUTY5IC0xMSA1OSAtMlQ0OCAxNlE0OCAzMCAxMjEgMzIwTDE5NSA2MTZRMTk1IDYyOSAxODggNjMyVDE0OSA2MzdIMTI4UTEyMiA2NDMgMTIyIDY0NVQxMjQgNjY0UTEyOSA2ODMgMTM3IDY4M1oiLz48L2c+PC9nPjwvZz48L3N2Zz48c3BhbiBjbGFzcz0iTUpYX0Fzc2lzdGl2ZV9NYXRoTUwgTUpYX0Fzc2lzdGl2ZV9NYXRoTUxfQmxvY2siIHJvbGU9InByZXNlbnRhdGlvbiI+PC9zcGFuPjwvc3Bhbj48L2Rpdj48c2NyaXB0IHR5cGU9Im1hdGgvdGV4OyBtb2RlPWRpc3BsYXkiIGlkPSJNYXRoSmF4LUVsZW1lbnQtOSI+Yl97bmh9PC9zY3JpcHQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9Ijc5OCIgeT0iMTk0IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPiYjeGE7Yl97bmh9PC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSI1MCIgeT0iMTY3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Q1ZThkNCIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iOTUiIHk9IjE2Ny41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjE0MCIgeT0iMTY3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMzI1IiB5PSIxNjcuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIzNzAiIHk9IjE2Ny41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjQxNSIgeT0iMTY3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNDYwIiB5PSIxNjcuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1MDUiIHk9IjE2Ny41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjU1MCIgeT0iMTY3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNTk1IiB5PSIxNjcuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI2NDAiIHk9IjE2Ny41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjY4NSIgeT0iMTY3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2RhZThmYyIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMTg1IiB5PSIxNjcuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIyMzAiIHk9IjE2Ny41IiB3aWR0aD0iNTAiIGhlaWdodD0iNDUiIGZpbGw9IiNkNWU4ZDQiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjI4MCIgeT0iMTY3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSA0MzQuNSAxNjAuNSBMIDQzNC41IDEzNy41IFEgNDM0LjUgMTI3LjUgNDM0LjUgMTE3LjUgTCA0MzQuNSAxMDcuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjUiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iNSAxNSIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gODIwIDMwIFEgODQwIDMwLjA2IDg0MCA0My43NiBRIDg0MCA1Ny40NyA0MzUgNTcuNDcgUSAzMCA1Ny40NyAzMCA3MiBRIDMwIDg2LjUzIDM1IDg2LjUzIFEgNDAgODYuNTMgNDMuNjQgODYuMzQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSA0OC44OCA4Ni4wNiBMIDQyLjA4IDg5LjkyIEwgNDMuNjQgODYuMzQgTCA0MS43MSA4Mi45MyBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gODIwIDg2IFEgODQwIDg2LjA2IDg0MCAxMDEuNzYgUSA4NDAgMTE3LjQ3IDU3MCAxMTcuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDQzLjYzIDE5MC41MSBRIDMwIDE5MC41MyAzMCAxNzQgUSAzMCAxNTcuNDcgMTIwIDE1Ny40NyBRIDIxMCAxNTcuNDcgMjEwIDE0Ny41IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gNDguODggMTkwLjUgTCA0MS44OSAxOTQuMDEgTCA0My42MyAxOTAuNTEgTCA0MS44OCAxODcuMDEgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1NDguNzUiIHk9IjEyNy41IiB3aWR0aD0iMjcwIiBoZWlnaHQ9IjMwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY4My43NSwwKXNjYWxlKC0xLDEpdHJhbnNsYXRlKC02ODMuNzUsMCkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDU0OC43NSAxMjcuNSBNIDgxOC43NSAxMjcuNSBNIDgxOC43NSAxNTcuNSBMIDU0OC43NSAxNTcuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjY2NjY2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY4My43NSwwKXNjYWxlKC0xLDEpdHJhbnNsYXRlKC02ODMuNzUsMCkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGZsZXgtZW5kOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAyNjhweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAxNTVweDsgbWFyZ2luLWxlZnQ6IDU1MHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O2hlbHZldGljYSZxdW90OyI+PGZvbnQgc3R5bGU9ImZvbnQtc2l6ZTogMTVweCI+bGlua3MgYWxsIGRhdGEgc2VnbWVudHMgc2VxdWVudGlhbGx5PC9mb250Pjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNjg0IiB5PSIxNTUiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+bGlua3MgYWxsIGRhdGEgc2VnbWVudHMgc2VxdWVudGlhbGx5PC90ZXh0Pjwvc3dpdGNoPjwvZz48cGF0aCBkPSJNIDgzNS4zNyAxMTAuNSBMIDgzNy4xOCAxMTAuNSBRIDgzOSAxMTAuNSA4MzkgMTIwLjUgTCA4MzkgMTQ3LjUgUSA4MzkgMTU3LjUgODI5IDE1Ny41IEwgODE4Ljc1IDE1Ny41IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gODMwLjEyIDExMC41IEwgODM3LjEyIDEwNyBMIDgzNS4zNyAxMTAuNSBMIDgzNy4xMiAxMTQgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1NjQiIHk9IjExOC41IiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjI1IiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgZmxleC1zdGFydDsgd2lkdGg6IDE0OHB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDEzMXB4OyBtYXJnaW4tbGVmdDogNTY2cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGxlZnQ7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwICwgMCAsIDApIDsgZm9udC1mYW1pbHk6ICZxdW90O2hlbHZldGljYSZxdW90OyA7IGZvbnQtd2VpZ2h0OiA0MDAgOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsIDsgdGV4dC1hbGlnbjogY2VudGVyIDsgdGV4dC1pbmRlbnQ6IDBweCA7IHRleHQtdHJhbnNmb3JtOiBub25lIDsgd29yZC1zcGFjaW5nOiAwcHggOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1ICwgMjU1ICwgMjU1KSA7IGRpc3BsYXk6IGlubGluZSA7IGZsb2F0OiBub25lIj48Zm9udCBzaXplPSIxIj48aSBzdHlsZT0iZm9udC1zaXplOiAxNXB4Ij5idWZmZXIuc2FtcGxlKDApPC9pPjwvZm9udD48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjU2NiIgeT0iMTM1IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiPmJ1ZmZlci5zYW1wbGUoMCk8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9Ii0yMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InJvdGF0ZSgtOTAsMTAsMzApIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KXJvdGF0ZSgtOTAgMTAgMzApIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogNThweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAzMHB4OyBtYXJnaW4tbGVmdDogLTE5cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDE1cHgiPkVudiAxPC9mb250PjwvYj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMTAiIHk9IjM0IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPkVudiAxPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSItMjAiIHk9Ijc2IiB3aWR0aD0iNjAiIGhlaWdodD0iMjAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwLDEwLDg2KSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSlyb3RhdGUoLTkwIDEwIDg2KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDU4cHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogODZweDsgbWFyZ2luLWxlZnQ6IC0xOXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48Yj48Zm9udCBzdHlsZT0iZm9udC1zaXplOiAxNXB4Ij5FbnYgMjwvZm9udD48L2I+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjEwIiB5PSI5MCIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5FbnYgMjwvdGV4dD48L3N3aXRjaD48L2c+PC9nPjxzd2l0Y2g+PGcgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ii8+PGEgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtNSkiIHhsaW5rOmhyZWY9Imh0dHBzOi8vd3d3LmRpYWdyYW1zLm5ldC9kb2MvZmFxL3N2Zy1leHBvcnQtdGV4dC1wcm9ibGVtcyIgdGFyZ2V0PSJfYmxhbmsiPjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTBweCIgeD0iNTAlIiB5PSIxMDAlIj5WaWV3ZXIgZG9lcyBub3Qgc3VwcG9ydCBmdWxsIFNWRyAxLjE8L3RleHQ+PC9hPjwvc3dpdGNoPjwvc3ZnPg==)\n", - "\n", - "![22.PNG](data:image/png;base64,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)" - ], - "metadata": { - "id": "2cPnUXRBWKD9" - } - } - ] -} \ No newline at end of file + "id": "saluvX4JU6bC", + "outputId": "2994d178-2f33-40a0-a6e4-067916b0b5c5" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "**Thirdly**, there are some special indexes which are marked by done flag. However, its value for obs_next should not be zero. This is because these steps are usually those at the last step of an episode, but this episode stops not because the agent can no longer get any rewards (value=0), but because the episode is too long so we have to truncate it. These kind of steps are always marked with `info['TimeLimit.truncated']=True` in Gym." + ], + "metadata": { + "id": "qp6vVE4dYWv1" + } + }, + { + "cell_type": "markdown", + "source": [ + "As a result, we need to rewrite the equation above\n", + "\n", + "`v_s_ *= ~batch.done`" + ], + "metadata": { + "id": "tWkqXRJfZTvV" + } + }, + { + "cell_type": "markdown", + "source": [ + "to\n", + "\n", + "```\n", + "mask = batch.info['TimeLimit.truncated'] | (~batch.done)\n", + "v_s_ *= mask\n", + "\n", + "```\n", + "\n", + "\n", + "\n" + ], + "metadata": { + "id": "kms-QtxKZe-M" + } + }, + { + "cell_type": "markdown", + "source": [ + "### Summary\n", + "If you already felt bored by now, simply remember that Tianshou can help handle all these little details so that you can focus on the algorithm itself. Just call `BasePolicy.compute_episodic_return()`.\n", + "\n", + "If you still feel interested, we would recommend you check Appendix C in this [paper](https://arxiv.org/abs/2107.14171v2) and implementation of `BasePolicy.value_mask()` and `BasePolicy.compute_episodic_return()` for details." + ], + "metadata": { + "id": "u_aPPoKraBu6" + } + }, + { + "cell_type": "markdown", + "source": [ + "\n", + "![timelimit.svg](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI4NDlweCIgaGVpZ2h0PSIyNDlweCIgdmlld0JveD0iLTAuNSAtMC41IDg0OSAyNDkiIGNvbnRlbnQ9IiZsdDtteGZpbGUgaG9zdD0mcXVvdDtFbGVjdHJvbiZxdW90OyBtb2RpZmllZD0mcXVvdDsyMDIyLTA0LTE4VDE2OjQ1OjMwLjgwOVomcXVvdDsgYWdlbnQ9JnF1b3Q7NS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIGRyYXcuaW8vMTQuNS4xIENocm9tZS84OS4wLjQzODkuODIgRWxlY3Ryb24vMTIuMC4xIFNhZmFyaS81MzcuMzYmcXVvdDsgdmVyc2lvbj0mcXVvdDsxNC41LjEmcXVvdDsgZXRhZz0mcXVvdDs1ZGdXM2lGWXExdHo3aWk4Sld2YSZxdW90OyB0eXBlPSZxdW90O2RldmljZSZxdW90OyZndDsmbHQ7ZGlhZ3JhbSBpZD0mcXVvdDtNOHZVdGk2YnZSU0tXRlY2bmNhTiZxdW90OyZndDs3VjNmajZNMkVQNXJJbDBmZG9YNW1UeGVkdmZhaDFZNjNaM1V1NmZLQ1U1Q2orQVVuTjJrZjMxdHNNRWtKcEFOZGtMVTdFcUxqWTN4TjU5blBBTTdHVGxQNjkydktkeXMvc0FoaWtlMkZlNUd6dlBJdGdFWWora2ZWck12YWg0OE1DbHFsbWtVOGxaVnhkZm9YOFFyTFY2N2pVS1UxUm9TakdNU2JlcVZjNXdrYUU1cWRUQk44VnU5MlFMSDlWRTNjTWxIdEtxS3IzTVlvNk5tZjBZaFdSVzFZenVvNm45RDBYSWxSZ1krbjk4YWlzYjhFdGtLaHZoTkdzdDVHVGxQS2Nha09GcnZubERNMEJPNEZEZjBxZUZzZVdNcFNraVhEbmJSNFJYR1d6NDNmbDlrTHlhN1RQRjJ3NXVobEtDZENtSTRpdzhScTI0QmxCT2psRUI0alVpNnAwMzRoVHplZzVNQkJPSVNieEswTHE5YlNiRGFidkRvY2FGeWdTN0xxMWR6cGdkODJtb0lIQk1RMkNjaHNNZmxURGdLdGwzV1NEQ0FTVmxiQThLNkhBVzNIUVVLUWhJaTF0NGFPZE8zVlVUUTF3MmNzN052ZEtIVHVoVlowK3MvQTNxNGlPTDRDY2M0emZzNklVVGp4WnpXWnlURlA1RjB4czgvOUF6TU5zVmFYVVE3TnNxMEVYQVpXRWNOckFTYXJhSk9ENGg1Q3NUOG1MQTVibUJTZzg3L1o4c1c5SFNCRS9LUTVlcnNJMjBBdk0ydU9rbVBsdXp2U3hMU2N6TTBoOXNNMFNPOFlPb3RXclBqT0ZwSFJBeERiN0FZcWVoM0pDOEtHNmtMcFE1K2doTjBJQ2xlQmVOb21kRGluTUtNYVAyVUNTR2krdThqUDdHT3dwQU5vMlJCblNjcEpwQkVPT0hGUzRRcVZvdHlhUVNheE94Zlh6MTRsdjlvZDlFUGpxVk5Qd1NHMkk0U3ZGMnVPT016Z3FoRlp4REdNWVdRY3VydXFlK2ZUMzE3ckluNlk3MDJZYkZBL255dTB2ek5SdUlTREEzWWhNbjFsUVU0MkU4MXFFdGRDSWd0dWlaRmtlQjBEZU40UDJoRndPYjdsZCtqMVVnRldlU1Q4N1hDeE5abENnRFFxeGRDRDQxRFY0TmVhRURSZ0Y0QUhmeXNtMVNsUFcxTXRPSGF3WG03Q0ZlUC9aem50ckRWTFRVc1B2M2diVjhiYnBXWDJJZHlmNFlFc20wZ0pQT1ZPZFVlb3dVeHY4TnJXVkpPTnhHUEhVMGliblpyWjVVb2lnb20ya3NNK2lzejZKSzRpK3ZWeDZEVnMrRlk5NGRKVHpSNHNPdTdPQ0QyK0JJRmZGMnIvQ1pjM3RyMFZTc2dVSG44Ymc4QlFhRHlkUzh5S2cwVzRYeGowNGxaNExRUDZTdW81Q3EyaXIxQXFYSWhXd3pHdkpnM1V4enBjdmJCb3pPa04weUhzbXFIdnh4cmxCR0xZcnF6djBiQmREVUtub3RpVjNQU3kvWkxyK1FDKzNnVmFKT2N5cFV0NFFVU3ZIZXdNZ3pnYWF2ODRqdUFibGVIeUFTU3ZidWZONFhreEp4MkZzQnBkK1QxSW1ZSEJzblh1OE41VStSekZNOWV0VUhaK3lQSDI0TFNOOGhLbGRQV0k1Ulcvcm5hQW5lQlFWWjJjSDRHekVyWE04aksrL2FqUE1zZ0szdC9GSGRiVUpyY1BuWjRSamRrS0EzdUg1M2VmWnFybUJmZk1jYys1NzZkRjJBU3l0NjlsOXVDVWhHbTh6UkZQSjM3OW1wS1JXV0NsUjI4R3NQQmM5OHhHVDEzTlBzaXVybFVDUEFtb3VkTzc3NkluckIxQzJRbXc5YU95dWVRbmdyWVF3MWROMkZzQXRPQk94OHQ5RFRvZXpnRDl6MWFrRFRvZXJpYVhZOE9pRjMwbms4TGtpWkQydTdBWFpJV0tFMkd0TjJCdXlSdFVCb01hYnVhMyt6cjhBOUp2UmdYZzZGcmQrQVBWRnJ0dEVIMjNiY1RZekowN1E3OGdVb2JsQWEzais3QUg2aTBRV2x5LzZqN2Y1dXV1MzgwR2RKMjc5dXBNUm5TOWdiK2tsZ2JsQVpEMnQ1OWV6VW1ROXBlQjYvR2NFZ2IrRWJmQ1BjRy9uekVPdzJ1eVppMnAzSlN5Z0J0c3Vvck9xc24wdDBDcE1sSXQ2ZlpSZEg5emxjVGxDYWdHN2hMMHNKQ2d4NkpOM0NQcEFWSmd3NkpOM0NIcEFWSmt3RnRiK0FPU1F1VUpnUGEvc0Fka2pZb0RRYTAvWUU3SkcxR3gyQ2cyKy9na0F3WlNvT0JidisrUFJ1VGdXNS80STlmMnFBMHVLMzBOZnMyMTRiUzRMN1MxL3dPV1lmbnFFMk9aUjlRbWd4MCsvZnQ3SmdNZFB1YVh5bTdWdkRpQ29GdS83NjlIWk9CN3FDRHQ0T1M4Q1BMSUQwcVU4bUVNRnZsMklJNmpxeitNeVFFcFVsZVkxdE9pWmJJR3Mzd0l6QmRJdklacFJHOVlaUXl3VVRKY2lSbkZFS2h5RWQ5ZGlJWjhCZ0VWRW42WTJmaVdoWmxvWWNld1BGQ1Y3RlQxS2tnNWVOOXhsR2VBa2pzWEIzMzBiT2tEemMrWmRUZU9relluT0Z0T2tmOE1wV2t6cjZ5ZFpRS21zTjZlR1VxUExpWG1tMVlnK3owbE55SjlISHJBNWVwYVNxT0ZVTlVqQ3VGMG8yRUlqTzR4RGtxZnBFdkVLZGtoWmM0Z2ZGTFZUdWRiOVBYa29OVms5OHgzdkRLdnhFaGU1NUpIVzRKcm5NVjdTTHlYVHIrd2VqMzZQSFM4NDZ6TVMvc1JTR2hjL291RjZSZXJGaDF5MHVpWDMwRmdETklUa0hKNlNLVWJGRlhDTHFvSzE3L2Z0ZGlhR1Q1dVl3cGM1VnppamhXblNHdEhieWdwWU56V2Z1eDM5TGVQZDMrY29vcjFPcE5VdnlZcXNmcW45WjhpdGhVejlMWGRTbzdMZjhLOWg3YUhrblZDdzZlb1FKZE92T1EwSzJFTyt4UTNWcHZsSE91UUxtVGx2MllXeGx0VHdTNzVqSE1zbWd1cWpuRitxU2dacnFWbVlDRlRJKy9yYUdCYnNmTVBialNwT3MyNGx6aU9rMERkZFNzb0ZVVkg2RnkyT055cHI4M1IrY0NycU40WHlSZW82ZmdlcE9UeVhHWXY3UkM4U3RpQ1JLUHpxalNzUFdSSGpLT2twOHM5enZNWnhjV0NVSXp0RnlqWElUMDhKOHRQWXdPc2tFMzVKQThtZnBONVJCbEs3aGhSYnBzMkJoZjJPc3J5VEpYQ3lSZi9teXBGUWxFODhNWkpnU3YrUkpOK1NhYW5lQ2Nvd041VS9yTDh0ZUJrZmZNMHRoNVV5Qks5UGQ5ZVNyRnVDd25KYUhhNVNsdldCbTNMSUdiYjdoZ0liODVSUFZhRnIyaUw2aVFRWDZiVEh2eFlxNjZVb1ErNFRnczlKV28rUU8vVmhVSmVwT1U1Zk1va0toUTZkWktya3pXNVhrcU9MTC9ndUk4Y2VhTG9qWEw4aWNLa21KVVh5NEhTOTIzMUpabjkrUmNxM1VFVnEwSk54QzFGdXdGbHBQUnNEamEvTVloRENNcURKNDZGTUdNMU0xSFZ0aUxxV0NXVmRWOUt5eFE1eWhhVzJoMy9DaWV6eDc1TmJXOHdxb1hySndUYm1Kbno3dER3RmUyMTAzOGFUU2l4MFpUaUpmRDJHQ09KYnZiRlArb2dpdEE5b3JLd2crNTBPQVRkZDgyeXQ1TzBQSzZaUzkyZkN3U3BwUjdzM2M3OFdQNzhHdU9nRFB1dUNsNGp5VlVoYjdQU3o1cWpVVENVZW5vRjNiSVpHWmRaamZsaTd6eEJjVXU0aGFENVNkanhBSklENW5ZT3JMenhYY2dsRTFZRXVRSGJpZllhVzRxYXFjanl0Q0VYOTVpMWxZK1NWS1laQXQ2VVhGNXBoSjVnemVjaHZYUjVlNHpPUCs1elBuL2NBQmMvbm9hQit6Z3VJSXZqTEpORERsMFVVSXRmalh3SXNhUXlEZlV0c3NRWHhJbjJvSG1MdEg3ZHlXejdXS0Iwc2VNeWpKR0h4Z1Z5aTFHcE5oMnZHYzN3cE5hdDBScEcvTlY5MkVQL0lNZ0Z4Z3JqQUZReFF6dFBzS3d6ZDgxcENVRk9mZy9CWG1YRk9TSzE0NTBaU0FQbXROR2EyR0EvVDhEdWpCQUdOVCtHVUNMMVhkZUZxYSsrdXBRNStVLyZsdDsvZGlhZ3JhbSZndDsmbHQ7L214ZmlsZSZndDsiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij48ZGVmcz48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj5kaXYuTWF0aEpheF9TVkdfRGlzcGxheSB7IHBvc2l0aW9uOiBzdGF0aWM7IH0mI3hhO3NwYW4uTWF0aEpheF9TVkcgeyBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7IH08L3N0eWxlPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPi5NYXRoSmF4X0hvdmVyX0ZyYW1lIHtib3JkZXItcmFkaXVzOiAuMjVlbTsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAuMjVlbTsgLW1vei1ib3JkZXItcmFkaXVzOiAuMjVlbTsgLWtodG1sLWJvcmRlci1yYWRpdXM6IC4yNWVtOyBib3gtc2hhZG93OiAwcHggMHB4IDE1cHggIzgzQTsgLXdlYmtpdC1ib3gtc2hhZG93OiAwcHggMHB4IDE1cHggIzgzQTsgLW1vei1ib3gtc2hhZG93OiAwcHggMHB4IDE1cHggIzgzQTsgLWtodG1sLWJveC1zaGFkb3c6IDBweCAwcHggMTVweCAjODNBOyBib3JkZXI6IDFweCBzb2xpZCAjQTZEICEgaW1wb3J0YW50OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBvc2l0aW9uOiBhYnNvbHV0ZX0mI3hhOy5NYXRoSmF4X01lbnVfQnV0dG9uIC5NYXRoSmF4X0hvdmVyX0Fycm93IHtwb3NpdGlvbjogYWJzb2x1dGU7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBib3JkZXI6IDJweCBzb2xpZCAjQUFBOyBib3JkZXItcmFkaXVzOiA0cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OyAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6IDRweDsgZm9udC1mYW1pbHk6ICdDb3VyaWVyIE5ldycsQ291cmllcjsgZm9udC1zaXplOiA5cHg7IGNvbG9yOiAjRjBGMEYwfSYjeGE7Lk1hdGhKYXhfTWVudV9CdXR0b24gLk1hdGhKYXhfSG92ZXJfQXJyb3cgc3BhbiB7ZGlzcGxheTogYmxvY2s7IGJhY2tncm91bmQtY29sb3I6ICNBQUE7IGJvcmRlcjogMXB4IHNvbGlkOyBib3JkZXItcmFkaXVzOiAzcHg7IGxpbmUtaGVpZ2h0OiAwOyBwYWRkaW5nOiA0cHh9JiN4YTsuTWF0aEpheF9Ib3Zlcl9BcnJvdzpob3ZlciB7Y29sb3I6IHdoaXRlIWltcG9ydGFudDsgYm9yZGVyOiAycHggc29saWQgI0NDQyFpbXBvcnRhbnR9JiN4YTsuTWF0aEpheF9Ib3Zlcl9BcnJvdzpob3ZlciBzcGFuIHtiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NDIWltcG9ydGFudH0mI3hhOzwvc3R5bGU+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+I01hdGhKYXhfQWJvdXQge3Bvc2l0aW9uOiBmaXhlZDsgbGVmdDogNTAlOyB3aWR0aDogYXV0bzsgdGV4dC1hbGlnbjogY2VudGVyOyBib3JkZXI6IDNweCBvdXRzZXQ7IHBhZGRpbmc6IDFlbSAyZW07IGJhY2tncm91bmQtY29sb3I6ICNEREREREQ7IGNvbG9yOiBibGFjazsgY3Vyc29yOiBkZWZhdWx0OyBmb250LWZhbWlseTogbWVzc2FnZS1ib3g7IGZvbnQtc2l6ZTogMTIwJTsgZm9udC1zdHlsZTogbm9ybWFsOyB0ZXh0LWluZGVudDogMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHdvcmQtc3BhY2luZzogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgZmxvYXQ6IG5vbmU7IHotaW5kZXg6IDIwMTsgYm9yZGVyLXJhZGl1czogMTVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxNXB4OyAtbW96LWJvcmRlci1yYWRpdXM6IDE1cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOiAxNXB4OyBib3gtc2hhZG93OiAwcHggMTBweCAyMHB4ICM4MDgwODA7IC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDEwcHggMjBweCAjODA4MDgwOyAtbW96LWJveC1zaGFkb3c6IDBweCAxMHB4IDIwcHggIzgwODA4MDsgLWtodG1sLWJveC1zaGFkb3c6IDBweCAxMHB4IDIwcHggIzgwODA4MDsgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZHJvcHNoYWRvdyhPZmZYPTIsIE9mZlk9MiwgQ29sb3I9J2dyYXknLCBQb3NpdGl2ZT0ndHJ1ZScpfSYjeGE7I01hdGhKYXhfQWJvdXQuTWF0aEpheF9Nb3VzZVBvc3Qge291dGxpbmU6IG5vbmV9JiN4YTsuTWF0aEpheF9NZW51IHtwb3NpdGlvbjogYWJzb2x1dGU7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBjb2xvcjogYmxhY2s7IHdpZHRoOiBhdXRvOyBwYWRkaW5nOiAycHg7IGJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7IG1hcmdpbjogMDsgY3Vyc29yOiBkZWZhdWx0OyBmb250OiBtZW51OyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHdvcmQtc3BhY2luZzogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgZmxvYXQ6IG5vbmU7IHotaW5kZXg6IDIwMTsgYm94LXNoYWRvdzogMHB4IDEwcHggMjBweCAjODA4MDgwOyAtd2Via2l0LWJveC1zaGFkb3c6IDBweCAxMHB4IDIwcHggIzgwODA4MDsgLW1vei1ib3gtc2hhZG93OiAwcHggMTBweCAyMHB4ICM4MDgwODA7IC1raHRtbC1ib3gtc2hhZG93OiAwcHggMTBweCAyMHB4ICM4MDgwODA7IGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmRyb3BzaGFkb3coT2ZmWD0yLCBPZmZZPTIsIENvbG9yPSdncmF5JywgUG9zaXRpdmU9J3RydWUnKX0mI3hhOy5NYXRoSmF4X01lbnVJdGVtIHtwYWRkaW5nOiAycHggMmVtOyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudH0mI3hhOy5NYXRoSmF4X01lbnVBcnJvdyB7cG9zaXRpb246IGFic29sdXRlOyByaWdodDogLjVlbTsgcGFkZGluZy10b3A6IC4yNWVtOyBjb2xvcjogIzY2NjY2NjsgZm9udC1zaXplOiAuNzVlbX0mI3hhOy5NYXRoSmF4X01lbnVBY3RpdmUgLk1hdGhKYXhfTWVudUFycm93IHtjb2xvcjogd2hpdGV9JiN4YTsuTWF0aEpheF9NZW51QXJyb3cuUlRMIHtsZWZ0OiAuNWVtOyByaWdodDogYXV0b30mI3hhOy5NYXRoSmF4X01lbnVDaGVjayB7cG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAuN2VtfSYjeGE7Lk1hdGhKYXhfTWVudUNoZWNrLlJUTCB7cmlnaHQ6IC43ZW07IGxlZnQ6IGF1dG99JiN4YTsuTWF0aEpheF9NZW51UmFkaW9DaGVjayB7cG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAxZW19JiN4YTsuTWF0aEpheF9NZW51UmFkaW9DaGVjay5SVEwge3JpZ2h0OiAxZW07IGxlZnQ6IGF1dG99JiN4YTsuTWF0aEpheF9NZW51TGFiZWwge3BhZGRpbmc6IDJweCAyZW0gNHB4IDEuMzNlbTsgZm9udC1zdHlsZTogaXRhbGljfSYjeGE7Lk1hdGhKYXhfTWVudVJ1bGUge2JvcmRlci10b3A6IDFweCBzb2xpZCAjQ0NDQ0NDOyBtYXJnaW46IDRweCAxcHggMHB4fSYjeGE7Lk1hdGhKYXhfTWVudURpc2FibGVkIHtjb2xvcjogR3JheVRleHR9JiN4YTsuTWF0aEpheF9NZW51QWN0aXZlIHtiYWNrZ3JvdW5kLWNvbG9yOiBIaWdobGlnaHQ7IGNvbG9yOiBIaWdobGlnaHRUZXh0fSYjeGE7Lk1hdGhKYXhfTWVudURpc2FibGVkOmZvY3VzLCAuTWF0aEpheF9NZW51TGFiZWw6Zm9jdXMge2JhY2tncm91bmQtY29sb3I6ICNFOEU4RTh9JiN4YTsuTWF0aEpheF9Db250ZXh0TWVudTpmb2N1cyB7b3V0bGluZTogbm9uZX0mI3hhOy5NYXRoSmF4X0NvbnRleHRNZW51IC5NYXRoSmF4X01lbnVJdGVtOmZvY3VzIHtvdXRsaW5lOiBub25lfSYjeGE7I01hdGhKYXhfQWJvdXRDbG9zZSB7dG9wOiAuMmVtOyByaWdodDogLjJlbX0mI3hhOy5NYXRoSmF4X01lbnUgLk1hdGhKYXhfTWVudUNsb3NlIHt0b3A6IC0xMHB4OyBsZWZ0OiAtMTBweH0mI3hhOy5NYXRoSmF4X01lbnVDbG9zZSB7cG9zaXRpb246IGFic29sdXRlOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgYm9yZGVyOiAycHggc29saWQgI0FBQTsgYm9yZGVyLXJhZGl1czogMThweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxOHB4OyAtbW96LWJvcmRlci1yYWRpdXM6IDE4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOiAxOHB4OyBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JyxDb3VyaWVyOyBmb250LXNpemU6IDI0cHg7IGNvbG9yOiAjRjBGMEYwfSYjeGE7Lk1hdGhKYXhfTWVudUNsb3NlIHNwYW4ge2Rpc3BsYXk6IGJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiAjQUFBOyBib3JkZXI6IDEuNXB4IHNvbGlkOyBib3JkZXItcmFkaXVzOiAxOHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDE4cHg7IC1tb3otYm9yZGVyLXJhZGl1czogMThweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6IDE4cHg7IGxpbmUtaGVpZ2h0OiAwOyBwYWRkaW5nOiA4cHggMCA2cHh9JiN4YTsuTWF0aEpheF9NZW51Q2xvc2U6aG92ZXIge2NvbG9yOiB3aGl0ZSFpbXBvcnRhbnQ7IGJvcmRlcjogMnB4IHNvbGlkICNDQ0MhaW1wb3J0YW50fSYjeGE7Lk1hdGhKYXhfTWVudUNsb3NlOmhvdmVyIHNwYW4ge2JhY2tncm91bmQtY29sb3I6ICNDQ0MhaW1wb3J0YW50fSYjeGE7Lk1hdGhKYXhfTWVudUNsb3NlOmhvdmVyOmZvY3VzIHtvdXRsaW5lOiBub25lfSYjeGE7PC9zdHlsZT48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4uTWF0aEpheF9QcmV2aWV3IC5NSlhmLW1hdGgge2NvbG9yOiBpbmhlcml0IWltcG9ydGFudH0mI3hhOzwvc3R5bGU+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+I01hdGhKYXhfWm9vbSB7cG9zaXRpb246IGFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwOyBvdmVyZmxvdzogYXV0bzsgZGlzcGxheTogYmxvY2s7IHotaW5kZXg6IDMwMTsgcGFkZGluZzogLjVlbTsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IG1hcmdpbjogMDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC1zdHlsZTogbm9ybWFsOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHdvcmQtc3BhY2luZzogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgZmxvYXQ6IG5vbmU7IC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7IC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7IGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBib3gtc2hhZG93OiA1cHggNXB4IDE1cHggI0FBQUFBQTsgLXdlYmtpdC1ib3gtc2hhZG93OiA1cHggNXB4IDE1cHggI0FBQUFBQTsgLW1vei1ib3gtc2hhZG93OiA1cHggNXB4IDE1cHggI0FBQUFBQTsgLWtodG1sLWJveC1zaGFkb3c6IDVweCA1cHggMTVweCAjQUFBQUFBOyBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5kcm9wc2hhZG93KE9mZlg9MiwgT2ZmWT0yLCBDb2xvcj0nZ3JheScsIFBvc2l0aXZlPSd0cnVlJyl9JiN4YTsjTWF0aEpheF9ab29tT3ZlcmxheSB7cG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwOyB0b3A6IDA7IHotaW5kZXg6IDMwMDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBib3JkZXI6IDA7IHBhZGRpbmc6IDA7IG1hcmdpbjogMDsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IG9wYWNpdHk6IDA7IGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKX0mI3hhOyNNYXRoSmF4X1pvb21GcmFtZSB7cG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGhlaWdodDogMDsgd2lkdGg6IDB9JiN4YTsjTWF0aEpheF9ab29tRXZlbnRUcmFwIHtwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHRvcDogMDsgei1pbmRleDogMzAyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJvcmRlcjogMDsgcGFkZGluZzogMDsgbWFyZ2luOiAwOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgb3BhY2l0eTogMDsgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApfSYjeGE7PC9zdHlsZT48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4uTWF0aEpheF9QcmV2aWV3IHtjb2xvcjogIzg4ODsgZGlzcGxheTogY29udGVudHN9JiN4YTsjTWF0aEpheF9NZXNzYWdlIHtwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6IDFweDsgYm90dG9tOiAycHg7IGJhY2tncm91bmQtY29sb3I6ICNFNkU2RTY7IGJvcmRlcjogMXB4IHNvbGlkICM5NTk1OTU7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAycHggOHB4OyB6LWluZGV4OiAxMDI7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiA4MCU7IHdpZHRoOiBhdXRvOyB3aGl0ZS1zcGFjZTogbm93cmFwfSYjeGE7I01hdGhKYXhfTVNJRV9GcmFtZSB7cG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAwcHg7IHotaW5kZXg6IDEwMTsgYm9yZGVyOiAwcHg7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHh9JiN4YTsuTWF0aEpheF9FcnJvciB7Y29sb3I6ICNDQzAwMDA7IGZvbnQtc3R5bGU6IGl0YWxpY30mI3hhOzwvc3R5bGU+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Lk1KWHAtc2NyaXB0IHtmb250LXNpemU6IC44ZW19JiN4YTsuTUpYcC1yaWdodCB7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodDsgLW1vei10cmFuc2Zvcm0tb3JpZ2luOiByaWdodDsgLW1zLXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0OyAtby10cmFuc2Zvcm0tb3JpZ2luOiByaWdodDsgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHR9JiN4YTsuTUpYcC1ib2xkIHtmb250LXdlaWdodDogYm9sZH0mI3hhOy5NSlhwLWl0YWxpYyB7Zm9udC1zdHlsZTogaXRhbGljfSYjeGE7Lk1KWHAtc2NyIHtmb250LWZhbWlseTogTWF0aEpheF9TY3JpcHQsJ1RpbWVzIE5ldyBSb21hbicsVGltZXMsU1RJWEdlbmVyYWwsc2VyaWZ9JiN4YTsuTUpYcC1mcmFrIHtmb250LWZhbWlseTogTWF0aEpheF9GcmFrdHVyLCdUaW1lcyBOZXcgUm9tYW4nLFRpbWVzLFNUSVhHZW5lcmFsLHNlcmlmfSYjeGE7Lk1KWHAtc2Yge2ZvbnQtZmFtaWx5OiBNYXRoSmF4X1NhbnNTZXJpZiwnVGltZXMgTmV3IFJvbWFuJyxUaW1lcyxTVElYR2VuZXJhbCxzZXJpZn0mI3hhOy5NSlhwLWNhbCB7Zm9udC1mYW1pbHk6IE1hdGhKYXhfQ2FsaWdyYXBoaWMsJ1RpbWVzIE5ldyBSb21hbicsVGltZXMsU1RJWEdlbmVyYWwsc2VyaWZ9JiN4YTsuTUpYcC1tb25vIHtmb250LWZhbWlseTogTWF0aEpheF9UeXBld3JpdGVyLCdUaW1lcyBOZXcgUm9tYW4nLFRpbWVzLFNUSVhHZW5lcmFsLHNlcmlmfSYjeGE7Lk1KWHAtbGFyZ2VvcCB7Zm9udC1zaXplOiAxNTAlfSYjeGE7Lk1KWHAtbGFyZ2VvcC5NSlhwLWludCB7dmVydGljYWwtYWxpZ246IC0uMmVtfSYjeGE7Lk1KWHAtbWF0aCB7ZGlzcGxheTogaW5saW5lLWJsb2NrOyBsaW5lLWhlaWdodDogMS4yOyB0ZXh0LWluZGVudDogMDsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLFRpbWVzLFNUSVhHZW5lcmFsLHNlcmlmOyB3aGl0ZS1zcGFjZTogbm93cmFwOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlfSYjeGE7Lk1KWHAtZGlzcGxheSB7ZGlzcGxheTogYmxvY2s7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luOiAxZW0gMH0mI3hhOy5NSlhwLW1hdGggc3BhbiB7ZGlzcGxheTogaW5saW5lLWJsb2NrfSYjeGE7Lk1KWHAtYm94IHtkaXNwbGF5OiBibG9jayFpbXBvcnRhbnQ7IHRleHQtYWxpZ246IGNlbnRlcn0mI3hhOy5NSlhwLWJveDphZnRlciB7Y29udGVudDogIiAifSYjeGE7Lk1KWHAtcnVsZSB7ZGlzcGxheTogYmxvY2shaW1wb3J0YW50OyBtYXJnaW4tdG9wOiAuMWVtfSYjeGE7Lk1KWHAtY2hhciB7ZGlzcGxheTogYmxvY2shaW1wb3J0YW50fSYjeGE7Lk1KWHAtbW8ge21hcmdpbjogMCAuMTVlbX0mI3hhOy5NSlhwLW1mcmFjIHttYXJnaW46IDAgLjEyNWVtOyB2ZXJ0aWNhbC1hbGlnbjogLjI1ZW19JiN4YTsuTUpYcC1kZW5vbSB7ZGlzcGxheTogaW5saW5lLXRhYmxlIWltcG9ydGFudDsgd2lkdGg6IDEwMCV9JiN4YTsuTUpYcC1kZW5vbSAmZ3Q7ICoge2Rpc3BsYXk6IHRhYmxlLXJvdyFpbXBvcnRhbnR9JiN4YTsuTUpYcC1zdXJkIHt2ZXJ0aWNhbC1hbGlnbjogdG9wfSYjeGE7Lk1KWHAtc3VyZCAmZ3Q7ICoge2Rpc3BsYXk6IGJsb2NrIWltcG9ydGFudH0mI3hhOy5NSlhwLXNjcmlwdC1ib3ggJmd0OyAqICB7ZGlzcGxheTogdGFibGUhaW1wb3J0YW50OyBoZWlnaHQ6IDUwJX0mI3hhOy5NSlhwLXNjcmlwdC1ib3ggJmd0OyAqICZndDsgKiB7ZGlzcGxheTogdGFibGUtY2VsbCFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOiB0b3B9JiN4YTsuTUpYcC1zY3JpcHQtYm94ICZndDsgKjpsYXN0LWNoaWxkICZndDsgKiB7dmVydGljYWwtYWxpZ246IGJvdHRvbX0mI3hhOy5NSlhwLXNjcmlwdC1ib3ggJmd0OyAqICZndDsgKiAmZ3Q7ICoge2Rpc3BsYXk6IGJsb2NrIWltcG9ydGFudH0mI3hhOy5NSlhwLW1waGFudG9tIHt2aXNpYmlsaXR5OiBoaWRkZW59JiN4YTsuTUpYcC1tdW5kZXJvdmVyLCAuTUpYcC1tdW5kZXIge2Rpc3BsYXk6IGlubGluZS10YWJsZSFpbXBvcnRhbnR9JiN4YTsuTUpYcC1vdmVyIHtkaXNwbGF5OiBpbmxpbmUtYmxvY2shaW1wb3J0YW50OyB0ZXh0LWFsaWduOiBjZW50ZXJ9JiN4YTsuTUpYcC1vdmVyICZndDsgKiB7ZGlzcGxheTogYmxvY2shaW1wb3J0YW50fSYjeGE7Lk1KWHAtbXVuZGVyb3ZlciAmZ3Q7ICosIC5NSlhwLW11bmRlciAmZ3Q7ICoge2Rpc3BsYXk6IHRhYmxlLXJvdyFpbXBvcnRhbnR9JiN4YTsuTUpYcC1tdGFibGUge3ZlcnRpY2FsLWFsaWduOiAuMjVlbTsgbWFyZ2luOiAwIC4xMjVlbX0mI3hhOy5NSlhwLW10YWJsZSAmZ3Q7ICoge2Rpc3BsYXk6IGlubGluZS10YWJsZSFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGV9JiN4YTsuTUpYcC1tdHIge2Rpc3BsYXk6IHRhYmxlLXJvdyFpbXBvcnRhbnR9JiN4YTsuTUpYcC1tdGQge2Rpc3BsYXk6IHRhYmxlLWNlbGwhaW1wb3J0YW50OyB0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IC41ZW0gMCAwIC41ZW19JiN4YTsuTUpYcC1tdHIgJmd0OyAuTUpYcC1tdGQ6Zmlyc3QtY2hpbGQge3BhZGRpbmctbGVmdDogMH0mI3hhOy5NSlhwLW10cjpmaXJzdC1jaGlsZCAmZ3Q7IC5NSlhwLW10ZCB7cGFkZGluZy10b3A6IDB9JiN4YTsuTUpYcC1tbGFiZWxlZHRyIHtkaXNwbGF5OiB0YWJsZS1yb3chaW1wb3J0YW50fSYjeGE7Lk1KWHAtbWxhYmVsZWR0ciAmZ3Q7IC5NSlhwLW10ZDpmaXJzdC1jaGlsZCB7cGFkZGluZy1sZWZ0OiAwfSYjeGE7Lk1KWHAtbWxhYmVsZWR0cjpmaXJzdC1jaGlsZCAmZ3Q7IC5NSlhwLW10ZCB7cGFkZGluZy10b3A6IDB9JiN4YTsuTUpYcC1tZXJyb3Ige2JhY2tncm91bmQtY29sb3I6ICNGRkZGODg7IGNvbG9yOiAjQ0MwMDAwOyBib3JkZXI6IDFweCBzb2xpZCAjQ0MwMDAwOyBwYWRkaW5nOiAxcHggM3B4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtc2l6ZTogOTAlfSYjeGE7Lk1KWHAtc2NhbGUwIHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC4wKTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguMCk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguMCk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC4wKTsgdHJhbnNmb3JtOiBzY2FsZVgoLjApfSYjeGE7Lk1KWHAtc2NhbGUxIHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC4xKTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguMSk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguMSk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC4xKTsgdHJhbnNmb3JtOiBzY2FsZVgoLjEpfSYjeGE7Lk1KWHAtc2NhbGUyIHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC4yKTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguMik7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguMik7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC4yKTsgdHJhbnNmb3JtOiBzY2FsZVgoLjIpfSYjeGE7Lk1KWHAtc2NhbGUzIHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC4zKTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguMyk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguMyk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC4zKTsgdHJhbnNmb3JtOiBzY2FsZVgoLjMpfSYjeGE7Lk1KWHAtc2NhbGU0IHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC40KTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguNCk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguNCk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC40KTsgdHJhbnNmb3JtOiBzY2FsZVgoLjQpfSYjeGE7Lk1KWHAtc2NhbGU1IHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC41KTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguNSk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguNSk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC41KTsgdHJhbnNmb3JtOiBzY2FsZVgoLjUpfSYjeGE7Lk1KWHAtc2NhbGU2IHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC42KTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguNik7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguNik7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC42KTsgdHJhbnNmb3JtOiBzY2FsZVgoLjYpfSYjeGE7Lk1KWHAtc2NhbGU3IHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC43KTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguNyk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguNyk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC43KTsgdHJhbnNmb3JtOiBzY2FsZVgoLjcpfSYjeGE7Lk1KWHAtc2NhbGU4IHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC44KTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguOCk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguOCk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC44KTsgdHJhbnNmb3JtOiBzY2FsZVgoLjgpfSYjeGE7Lk1KWHAtc2NhbGU5IHstd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC45KTsgLW1vei10cmFuc2Zvcm06IHNjYWxlWCguOSk7IC1tcy10cmFuc2Zvcm06IHNjYWxlWCguOSk7IC1vLXRyYW5zZm9ybTogc2NhbGVYKC45KTsgdHJhbnNmb3JtOiBzY2FsZVgoLjkpfSYjeGE7Lk1hdGhKYXhfUEhUTUwgLm5vRXJyb3Ige3ZlcnRpY2FsLWFsaWduOiA7IGZvbnQtc2l6ZTogOTAlOyB0ZXh0LWFsaWduOiBsZWZ0OyBjb2xvcjogYmxhY2s7IHBhZGRpbmc6IDFweCAzcHg7IGJvcmRlcjogMXB4IHNvbGlkfSYjeGE7PC9zdHlsZT48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4uTWF0aEpheF9TVkdfRGlzcGxheSB7dGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW46IDFlbSAwZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogYmxvY2shaW1wb3J0YW50OyB0ZXh0LWluZGVudDogMDsgbWF4LXdpZHRoOiBub25lOyBtYXgtaGVpZ2h0OiBub25lOyBtaW4td2lkdGg6IDA7IG1pbi1oZWlnaHQ6IDA7IHdpZHRoOiAxMDAlfSYjeGE7Lk1hdGhKYXhfU1ZHIC5NSlgtbW9ub3NwYWNlIHtmb250LWZhbWlseTogbW9ub3NwYWNlfSYjeGE7Lk1hdGhKYXhfU1ZHIC5NSlgtc2Fucy1zZXJpZiB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWZ9JiN4YTsjTWF0aEpheF9TVkdfVG9vbHRpcCB7YmFja2dyb3VuZC1jb2xvcjogSW5mb0JhY2tncm91bmQ7IGNvbG9yOiBJbmZvVGV4dDsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IGJveC1zaGFkb3c6IDJweCAycHggNXB4ICNBQUFBQUE7IC13ZWJraXQtYm94LXNoYWRvdzogMnB4IDJweCA1cHggI0FBQUFBQTsgLW1vei1ib3gtc2hhZG93OiAycHggMnB4IDVweCAjQUFBQUFBOyAta2h0bWwtYm94LXNoYWRvdzogMnB4IDJweCA1cHggI0FBQUFBQTsgcGFkZGluZzogM3B4IDRweDsgei1pbmRleDogNDAxOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHRvcDogMDsgd2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzsgZGlzcGxheTogbm9uZX0mI3hhOy5NYXRoSmF4X1NWRyB7ZGlzcGxheTogaW5saW5lOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IGZvbnQtc2l6ZTogMTAwJTsgZm9udC1zaXplLWFkanVzdDogbm9uZTsgdGV4dC1pbmRlbnQ6IDA7IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtdHJhbnNmb3JtOiBub25lOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7IHdoaXRlLXNwYWNlOiBub3dyYXA7IGZsb2F0OiBub25lOyBkaXJlY3Rpb246IGx0cjsgbWF4LXdpZHRoOiBub25lOyBtYXgtaGVpZ2h0OiBub25lOyBtaW4td2lkdGg6IDA7IG1pbi1oZWlnaHQ6IDA7IGJvcmRlcjogMDsgcGFkZGluZzogMDsgbWFyZ2luOiAwfSYjeGE7Lk1hdGhKYXhfU1ZHICoge3RyYW5zaXRpb246IG5vbmU7IC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsgLW1vei10cmFuc2l0aW9uOiBub25lOyAtbXMtdHJhbnNpdGlvbjogbm9uZTsgLW8tdHJhbnNpdGlvbjogbm9uZX0mI3hhOy5NYXRoSmF4X1NWRyAmZ3Q7IGRpdiB7ZGlzcGxheTogaW5saW5lLWJsb2NrfSYjeGE7Lm1qeC1zdmctaHJlZiB7ZmlsbDogYmx1ZTsgc3Ryb2tlOiBibHVlfSYjeGE7Lk1hdGhKYXhfU1ZHX1Byb2Nlc3Npbmcge3Zpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAwOyBoZWlnaHQ6IDA7IG92ZXJmbG93OiBoaWRkZW47IGRpc3BsYXk6IGJsb2NrIWltcG9ydGFudH0mI3hhOy5NYXRoSmF4X1NWR19Qcm9jZXNzZWQge2Rpc3BsYXk6IG5vbmUhaW1wb3J0YW50fSYjeGE7Lk1hdGhKYXhfU1ZHX3Rlc3Qge2ZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC1zaXplOiAxMDAlOyBmb250LXNpemUtYWRqdXN0OiBub25lOyB0ZXh0LWluZGVudDogMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHdvcmQtc3BhY2luZzogbm9ybWFsOyBvdmVyZmxvdzogaGlkZGVuOyBoZWlnaHQ6IDFweH0mI3hhOy5NYXRoSmF4X1NWR190ZXN0Lm1qeC10ZXN0LWRpc3BsYXkge2Rpc3BsYXk6IHRhYmxlIWltcG9ydGFudH0mI3hhOy5NYXRoSmF4X1NWR190ZXN0Lm1qeC10ZXN0LWlubGluZSB7ZGlzcGxheTogaW5saW5lIWltcG9ydGFudDsgbWFyZ2luLXJpZ2h0OiAtMXB4fSYjeGE7Lk1hdGhKYXhfU1ZHX3Rlc3QubWp4LXRlc3QtZGVmYXVsdCB7ZGlzcGxheTogYmxvY2shaW1wb3J0YW50OyBjbGVhcjogYm90aH0mI3hhOy5NYXRoSmF4X1NWR19leF9ib3gge2Rpc3BsYXk6IGlubGluZS1ibG9jayFpbXBvcnRhbnQ7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgb3ZlcmZsb3c6IGhpZGRlbjsgbWluLWhlaWdodDogMDsgbWF4LWhlaWdodDogbm9uZTsgcGFkZGluZzogMDsgYm9yZGVyOiAwOyBtYXJnaW46IDA7IHdpZHRoOiAxcHg7IGhlaWdodDogNjBleH0mI3hhOy5tangtdGVzdC1pbmxpbmUgLk1hdGhKYXhfU1ZHX2xlZnRfYm94IHtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiAwOyBmbG9hdDogbGVmdH0mI3hhOy5tangtdGVzdC1pbmxpbmUgLk1hdGhKYXhfU1ZHX3JpZ2h0X2JveCB7ZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMDsgZmxvYXQ6IHJpZ2h0fSYjeGE7Lm1qeC10ZXN0LWRpc3BsYXkgLk1hdGhKYXhfU1ZHX3JpZ2h0X2JveCB7ZGlzcGxheTogdGFibGUtY2VsbCFpbXBvcnRhbnQ7IHdpZHRoOiAxMDAwMGVtIWltcG9ydGFudDsgbWluLXdpZHRoOiAwOyBtYXgtd2lkdGg6IG5vbmU7IHBhZGRpbmc6IDA7IGJvcmRlcjogMDsgbWFyZ2luOiAwfSYjeGE7Lk1hdGhKYXhfU1ZHIC5ub0Vycm9yIHt2ZXJ0aWNhbC1hbGlnbjogOyBmb250LXNpemU6IDkwJTsgdGV4dC1hbGlnbjogbGVmdDsgY29sb3I6IGJsYWNrOyBwYWRkaW5nOiAxcHggM3B4OyBib3JkZXI6IDFweCBzb2xpZH0mI3hhOzwvc3R5bGU+PC9kZWZzPjxnPjxyZWN0IHg9IjI4Ny41IiB5PSIyMjcuNSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBmaWxsPSIjZGFlOGZjIiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIzMTUiIHk9IjIyNy41IiB3aWR0aD0iMTcwIiBoZWlnaHQ9IjIwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMTY4cHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjM4cHg7IG1hcmdpbi1sZWZ0OiAzMTZweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTVweCI+RW5kIGJlY2F1c2Ugb2YgdGltZSBsaW1pdDwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNDAwIiB5PSIyNDEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+RW5kIGJlY2F1c2Ugb2YgdGltZSBsaW1pdDwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNTMzLjc1IiB5PSIyMjcuNSIgd2lkdGg9IjI4MCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDI3OHB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDIzOHB4OyBtYXJnaW4tbGVmdDogNTM1cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDE1cHgiPkVuZCBiZWNhdXNlIGVub3VnaCB0aW1lc3RlcHMgY29sbGVjdGVkPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSI2NzQiIHk9IjI0MSIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5FbmQgYmVjYXVzZSBlbm91Z2ggdGltZXN0ZXBzIGNvbGxlY3RlZDwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNTA2LjI1IiB5PSIyMjcuNSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBmaWxsPSIjZmZlNmNjIiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIxNzcuNSIgeT0iMjI3LjUiIHdpZHRoPSI5Mi41IiBoZWlnaHQ9IjIwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogOTFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAyMzhweDsgbWFyZ2luLWxlZnQ6IDE3OXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxNXB4Ij5FbmQgbm9ybWFsbHk8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjIyNCIgeT0iMjQxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPkVuZCBub3JtYWxseTwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMTUwIiB5PSIyMjcuNSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBmaWxsPSIjZDVlOGQ0IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1MDYuMjUiIHk9IjIyNy41IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbGw9IiNmZmU2Y2MiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjI2LjI1IiB5PSIyMjcuNSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1My4yNSIgeT0iMjI3LjUiIHdpZHRoPSI4MyIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGZsZXgtc3RhcnQ7IHdpZHRoOiA4MXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDIzOHB4OyBtYXJnaW4tbGVmdDogNTVweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogbGVmdDsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDE1cHgiPkRhdGEgYmF0Y2g8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjU1IiB5PSIyNDEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTJweCI+RGF0YSBiYXRjaDwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iLTIwIiB5PSIxODAiIHdpZHRoPSI2MCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InJvdGF0ZSgtOTAsMTAsMTkwKSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSlyb3RhdGUoLTkwIDEwIDE5MCkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiA1OHB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDE5MHB4OyBtYXJnaW4tbGVmdDogLTE5cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDE1cHgiPkVudiBuPC9mb250PjwvYj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMTAiIHk9IjE5NCIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5FbnYgbjwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNzMwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNzc1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2ZmZTZjYyIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDQzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzBweDsgbWFyZ2luLWxlZnQ6IDc3NnB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3BhbiBzdHlsZT0iY29sb3I6IHJnYig1MSAsIDUxICwgNTEpIj48c3BhbiBjbGFzcz0iTWF0aEpheF9QcmV2aWV3IiBzdHlsZT0iY29sb3I6IGluaGVyaXQ7Ij48L3NwYW4+PGRpdiBjbGFzcz0iTWF0aEpheF9TVkdfRGlzcGxheSIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPjxzcGFuIGNsYXNzPSJNYXRoSmF4X1NWRyIgaWQ9Ik1hdGhKYXgtRWxlbWVudC02LUZyYW1lIiB0YWJpbmRleD0iMCIgZGF0YS1tYXRobWw9IiZsdDttYXRoIHhtbG5zPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwmcXVvdDsgZGlzcGxheT0mcXVvdDtibG9jayZxdW90OyZndDsmbHQ7bXN1YiZndDsmbHQ7bWkmZ3Q7YiZsdDsvbWkmZ3Q7Jmx0O21yb3cgY2xhc3M9JnF1b3Q7TUpYLVRlWEF0b20tT1JEJnF1b3Q7Jmd0OyZsdDttaSZndDtoJmx0Oy9taSZndDsmbHQ7L21yb3cmZ3Q7Jmx0Oy9tc3ViJmd0OyZsdDsvbWF0aCZndDsiIHJvbGU9InByZXNlbnRhdGlvbiIgc3R5bGU9ImZvbnQtc2l6ZTogMTAwJTsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyLjE3N2V4IiBoZWlnaHQ9IjIuNTc2ZXgiIHZpZXdCb3g9IjAgLTgzMC45IDkzNy4xIDExMDkuMiIgcm9sZT0iaW1nIiBmb2N1c2FibGU9ImZhbHNlIiBzdHlsZT0idmVydGljYWwtYWxpZ246IC0wLjY0NmV4OyIgYXJpYS1oaWRkZW49InRydWUiPjxnIHN0cm9rZT0iY3VycmVudENvbG9yIiBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHBhdGggc3Ryb2tlLXdpZHRoPSIxIiBkPSJNNzMgNjQ3UTczIDY1NyA3NyA2NzBUODkgNjgzUTkwIDY4MyAxNjEgNjg4VDIzNCA2OTRRMjQ2IDY5NCAyNDYgNjg1VDIxMiA1NDJRMjA0IDUwOCAxOTUgNDcyVDE4MCA0MThMMTc2IDM5OVExNzYgMzk2IDE4MiA0MDJRMjMxIDQ0MiAyODMgNDQyUTM0NSA0NDIgMzgzIDM5NlQ0MjIgMjgwUTQyMiAxNjkgMzQzIDc5VDE3MyAtMTFRMTIzIC0xMSA4MiAyN1Q0MCAxNTBWMTU5UTQwIDE4MCA0OCAyMTdUOTcgNDE0UTE0NyA2MTEgMTQ3IDYyM1QxMDkgNjM3UTEwNCA2MzcgMTAxIDYzN0g5NlE4NiA2MzcgODMgNjM3VDc2IDY0MFQ3MyA2NDdaTTMzNiAzMjVWMzMxUTMzNiA0MDUgMjc1IDQwNVEyNTggNDA1IDI0MCAzOTdUMjA3IDM3NlQxODEgMzUyVDE2MyAzMzBMMTU3IDMyMkwxMzYgMjM2UTExNCAxNTAgMTE0IDExNFExMTQgNjYgMTM4IDQyUTE1NCAyNiAxNzggMjZRMjExIDI2IDI0NSA1OFEyNzAgODEgMjg1IDExNFQzMTggMjE5UTMzNiAyOTEgMzM2IDMyNVoiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MjksLTE1MCkiPjxwYXRoIHN0cm9rZS13aWR0aD0iMSIgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNykiIGQ9Ik0xMzcgNjgzUTEzOCA2ODMgMjA5IDY4OFQyODIgNjk0UTI5NCA2OTQgMjk0IDY4NVEyOTQgNjc0IDI1OCA1MzRRMjIwIDM4NiAyMjAgMzgzUTIyMCAzODEgMjI3IDM4OFEyODggNDQyIDM1NyA0NDJRNDExIDQ0MiA0NDQgNDE1VDQ3OCAzMzZRNDc4IDI4NSA0NDAgMTc4VDQwMiA1MFE0MDMgMzYgNDA3IDMxVDQyMiAyNlE0NTAgMjYgNDc0IDU2VDUxMyAxMzhRNTE2IDE0OSA1MTkgMTUxVDUzNSAxNTNRNTU1IDE1MyA1NTUgMTQ1UTU1NSAxNDQgNTUxIDEzMFE1MzUgNzEgNTAwIDMzUTQ2NiAtMTAgNDE5IC0xMEg0MTRRMzY3IC0xMCAzNDYgMTdUMzI1IDc0UTMyNSA5MCAzNjEgMTkyVDM5OCAzNDVRMzk4IDQwNCAzNTQgNDA0SDM0OVEyNjYgNDA0IDIwNSAzMDZMMTk4IDI5M0wxNjQgMTU4UTEzMiAyOCAxMjcgMTZRMTE0IC0xMSA4MyAtMTFRNjkgLTExIDU5IC0yVDQ4IDE2UTQ4IDMwIDEyMSAzMjBMMTk1IDYxNlExOTUgNjI5IDE4OCA2MzJUMTQ5IDYzN0gxMjhRMTIyIDY0MyAxMjIgNjQ1VDEyNCA2NjRRMTI5IDY4MyAxMzcgNjgzWiIvPjwvZz48L2c+PC9zdmc+PHNwYW4gY2xhc3M9Ik1KWF9Bc3Npc3RpdmVfTWF0aE1MIE1KWF9Bc3Npc3RpdmVfTWF0aE1MX0Jsb2NrIiByb2xlPSJwcmVzZW50YXRpb24iPjwvc3Bhbj48L3NwYW4+PC9kaXY+PHNjcmlwdCB0eXBlPSJtYXRoL3RleDsgbW9kZT1kaXNwbGF5IiBpZD0iTWF0aEpheC1FbGVtZW50LTYiPmJfe2h9PC9zY3JpcHQ+PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSI3OTgiIHk9IjM0IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPiYjeGE7Yl97aH08L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjUwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDQzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzBweDsgbWFyZ2luLWxlZnQ6IDUxcHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMzMzMzMzM7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxzcGFuIGNsYXNzPSJNYXRoSmF4X1ByZXZpZXciIHN0eWxlPSJjb2xvcjogaW5oZXJpdDsiPjwvc3Bhbj48ZGl2IGNsYXNzPSJNYXRoSmF4X1NWR19EaXNwbGF5IiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+PHNwYW4gY2xhc3M9Ik1hdGhKYXhfU1ZHIiBpZD0iTWF0aEpheC1FbGVtZW50LTctRnJhbWUiIHRhYmluZGV4PSIwIiBkYXRhLW1hdGhtbD0iJmx0O21hdGggeG1sbnM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCZxdW90OyBkaXNwbGF5PSZxdW90O2Jsb2NrJnF1b3Q7Jmd0OyZsdDttc3ViJmd0OyZsdDttaSZndDtiJmx0Oy9taSZndDsmbHQ7bXJvdyBjbGFzcz0mcXVvdDtNSlgtVGVYQXRvbS1PUkQmcXVvdDsmZ3Q7Jmx0O21uJmd0OzEmbHQ7L21uJmd0OyZsdDsvbXJvdyZndDsmbHQ7L21zdWImZ3Q7Jmx0Oy9tYXRoJmd0OyIgcm9sZT0icHJlc2VudGF0aW9uIiBzdHlsZT0iZm9udC1zaXplOiAxMDAlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjIuMDUyZXgiIGhlaWdodD0iMi41NzZleCIgdmlld0JveD0iMCAtODMwLjkgODgzLjQgMTEwOS4yIiByb2xlPSJpbWciIGZvY3VzYWJsZT0iZmFsc2UiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogLTAuNjQ2ZXg7IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGcgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48cGF0aCBzdHJva2Utd2lkdGg9IjEiIGQ9Ik03MyA2NDdRNzMgNjU3IDc3IDY3MFQ4OSA2ODNROTAgNjgzIDE2MSA2ODhUMjM0IDY5NFEyNDYgNjk0IDI0NiA2ODVUMjEyIDU0MlEyMDQgNTA4IDE5NSA0NzJUMTgwIDQxOEwxNzYgMzk5UTE3NiAzOTYgMTgyIDQwMlEyMzEgNDQyIDI4MyA0NDJRMzQ1IDQ0MiAzODMgMzk2VDQyMiAyODBRNDIyIDE2OSAzNDMgNzlUMTczIC0xMVExMjMgLTExIDgyIDI3VDQwIDE1MFYxNTlRNDAgMTgwIDQ4IDIxN1Q5NyA0MTRRMTQ3IDYxMSAxNDcgNjIzVDEwOSA2MzdRMTA0IDYzNyAxMDEgNjM3SDk2UTg2IDYzNyA4MyA2MzdUNzYgNjQwVDczIDY0N1pNMzM2IDMyNVYzMzFRMzM2IDQwNSAyNzUgNDA1UTI1OCA0MDUgMjQwIDM5N1QyMDcgMzc2VDE4MSAzNTJUMTYzIDMzMEwxNTcgMzIyTDEzNiAyMzZRMTE0IDE1MCAxMTQgMTE0UTExNCA2NiAxMzggNDJRMTU0IDI2IDE3OCAyNlEyMTEgMjYgMjQ1IDU4UTI3MCA4MSAyODUgMTE0VDMxOCAyMTlRMzM2IDI5MSAzMzYgMzI1WiIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQyOSwtMTUwKSI+PHBhdGggc3Ryb2tlLXdpZHRoPSIxIiB0cmFuc2Zvcm09InNjYWxlKDAuNzA3KSIgZD0iTTIxMyA1NzhMMjAwIDU3M1ExODYgNTY4IDE2MCA1NjNUMTAyIDU1Nkg4M1Y2MDJIMTAyUTE0OSA2MDQgMTg5IDYxN1QyNDUgNjQxVDI3MyA2NjNRMjc1IDY2NiAyODUgNjY2UTI5NCA2NjYgMzAyIDY2MFYzNjFMMzAzIDYxUTMxMCA1NCAzMTUgNTJUMzM5IDQ4VDQwMSA0Nkg0MjdWMEg0MTZRMzk1IDMgMjU3IDNRMTIxIDMgMTAwIDBIODhWNDZIMTE0UTEzNiA0NiAxNTIgNDZUMTc3IDQ3VDE5MyA1MFQyMDEgNTJUMjA3IDU3VDIxMyA2MVY1NzhaIi8+PC9nPjwvZz48L3N2Zz48c3BhbiBjbGFzcz0iTUpYX0Fzc2lzdGl2ZV9NYXRoTUwgTUpYX0Fzc2lzdGl2ZV9NYXRoTUxfQmxvY2siIHJvbGU9InByZXNlbnRhdGlvbiI+PC9zcGFuPjwvc3Bhbj48L2Rpdj48c2NyaXB0IHR5cGU9Im1hdGgvdGV4OyBtb2RlPWRpc3BsYXkiIGlkPSJNYXRoSmF4LUVsZW1lbnQtNyI+Yl97MX08L3NjcmlwdD48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNzMiIHk9IjM0IiBmaWxsPSIjMzMzMzMzIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPiYjeGE7Yl97MX08L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9Ijk1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMTQwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMzI1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Q1ZThkNCIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMzcwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNDE1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNDYwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Q1ZThkNCIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNTA1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNTUwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNTk1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNjQwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNjg1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Q1ZThkNCIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMTg1IiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMjMwIiB5PSI3LjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMjgwIiB5PSI3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNzMwIiB5PSI2My41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9Ijc3NSIgeT0iNjMuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZmZlNmNjIiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1MCIgeT0iNjMuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogNDNweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiA4NnB4OyBtYXJnaW4tbGVmdDogNTFweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzMzMzMzMzsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+PHNwYW4gY2xhc3M9Ik1hdGhKYXhfUHJldmlldyIgc3R5bGU9ImNvbG9yOiBpbmhlcml0OyI+PC9zcGFuPjxkaXYgY2xhc3M9Ik1hdGhKYXhfU1ZHX0Rpc3BsYXkiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij48c3BhbiBjbGFzcz0iTWF0aEpheF9TVkciIGlkPSJNYXRoSmF4LUVsZW1lbnQtOC1GcmFtZSIgdGFiaW5kZXg9IjAiIGRhdGEtbWF0aG1sPSImbHQ7bWF0aCB4bWxucz0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJnF1b3Q7IGRpc3BsYXk9JnF1b3Q7YmxvY2smcXVvdDsmZ3Q7Jmx0O21zdWImZ3Q7Jmx0O21pJmd0O2ImbHQ7L21pJmd0OyZsdDttcm93IGNsYXNzPSZxdW90O01KWC1UZVhBdG9tLU9SRCZxdW90OyZndDsmbHQ7bWkmZ3Q7aCZsdDsvbWkmZ3Q7Jmx0O21vJmd0OysmbHQ7L21vJmd0OyZsdDttbiZndDsxJmx0Oy9tbiZndDsmbHQ7L21yb3cmZ3Q7Jmx0Oy9tc3ViJmd0OyZsdDsvbWF0aCZndDsiIHJvbGU9InByZXNlbnRhdGlvbiIgc3R5bGU9ImZvbnQtc2l6ZTogMTAwJTsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI0LjI3N2V4IiBoZWlnaHQ9IjIuNzM3ZXgiIHZpZXdCb3g9IjAgLTgzMC45IDE4NDEuNSAxMTc4LjIiIHJvbGU9ImltZyIgZm9jdXNhYmxlPSJmYWxzZSIgc3R5bGU9InZlcnRpY2FsLWFsaWduOiAtMC44MDdleDsiIGFyaWEtaGlkZGVuPSJ0cnVlIj48ZyBzdHJva2U9ImN1cnJlbnRDb2xvciIgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjAiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMCkiPjxwYXRoIHN0cm9rZS13aWR0aD0iMSIgZD0iTTczIDY0N1E3MyA2NTcgNzcgNjcwVDg5IDY4M1E5MCA2ODMgMTYxIDY4OFQyMzQgNjk0UTI0NiA2OTQgMjQ2IDY4NVQyMTIgNTQyUTIwNCA1MDggMTk1IDQ3MlQxODAgNDE4TDE3NiAzOTlRMTc2IDM5NiAxODIgNDAyUTIzMSA0NDIgMjgzIDQ0MlEzNDUgNDQyIDM4MyAzOTZUNDIyIDI4MFE0MjIgMTY5IDM0MyA3OVQxNzMgLTExUTEyMyAtMTEgODIgMjdUNDAgMTUwVjE1OVE0MCAxODAgNDggMjE3VDk3IDQxNFExNDcgNjExIDE0NyA2MjNUMTA5IDYzN1ExMDQgNjM3IDEwMSA2MzdIOTZRODYgNjM3IDgzIDYzN1Q3NiA2NDBUNzMgNjQ3Wk0zMzYgMzI1VjMzMVEzMzYgNDA1IDI3NSA0MDVRMjU4IDQwNSAyNDAgMzk3VDIwNyAzNzZUMTgxIDM1MlQxNjMgMzMwTDE1NyAzMjJMMTM2IDIzNlExMTQgMTUwIDExNCAxMTRRMTE0IDY2IDEzOCA0MlExNTQgMjYgMTc4IDI2UTIxMSAyNiAyNDUgNThRMjcwIDgxIDI4NSAxMTRUMzE4IDIxOVEzMzYgMjkxIDMzNiAzMjVaIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDI5LC0xNTApIj48cGF0aCBzdHJva2Utd2lkdGg9IjEiIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcpIiBkPSJNMTM3IDY4M1ExMzggNjgzIDIwOSA2ODhUMjgyIDY5NFEyOTQgNjk0IDI5NCA2ODVRMjk0IDY3NCAyNTggNTM0UTIyMCAzODYgMjIwIDM4M1EyMjAgMzgxIDIyNyAzODhRMjg4IDQ0MiAzNTcgNDQyUTQxMSA0NDIgNDQ0IDQxNVQ0NzggMzM2UTQ3OCAyODUgNDQwIDE3OFQ0MDIgNTBRNDAzIDM2IDQwNyAzMVQ0MjIgMjZRNDUwIDI2IDQ3NCA1NlQ1MTMgMTM4UTUxNiAxNDkgNTE5IDE1MVQ1MzUgMTUzUTU1NSAxNTMgNTU1IDE0NVE1NTUgMTQ0IDU1MSAxMzBRNTM1IDcxIDUwMCAzM1E0NjYgLTEwIDQxOSAtMTBINDE0UTM2NyAtMTAgMzQ2IDE3VDMyNSA3NFEzMjUgOTAgMzYxIDE5MlQzOTggMzQ1UTM5OCA0MDQgMzU0IDQwNEgzNDlRMjY2IDQwNCAyMDUgMzA2TDE5OCAyOTNMMTY0IDE1OFExMzIgMjggMTI3IDE2UTExNCAtMTEgODMgLTExUTY5IC0xMSA1OSAtMlQ0OCAxNlE0OCAzMCAxMjEgMzIwTDE5NSA2MTZRMTk1IDYyOSAxODggNjMyVDE0OSA2MzdIMTI4UTEyMiA2NDMgMTIyIDY0NVQxMjQgNjY0UTEyOSA2ODMgMTM3IDY4M1oiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MDcsMCkiPjxwYXRoIHN0cm9rZS13aWR0aD0iMSIgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNykiIGQ9Ik01NiAyMzdUNTYgMjUwVDcwIDI3MEgzNjlWNDIwTDM3MCA1NzBRMzgwIDU4MyAzODkgNTgzUTQwMiA1ODMgNDA5IDU2OFYyNzBINzA3UTcyMiAyNjIgNzIyIDI1MFQ3MDcgMjMwSDQwOVYtNjhRNDAxIC04MiAzOTEgLTgySDM4OUgzODdRMzc1IC04MiAzNjkgLTY4VjIzMEg3MFE1NiAyMzcgNTYgMjUwWiIvPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5NTgsMCkiPjxwYXRoIHN0cm9rZS13aWR0aD0iMSIgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNykiIGQ9Ik0yMTMgNTc4TDIwMCA1NzNRMTg2IDU2OCAxNjAgNTYzVDEwMiA1NTZIODNWNjAySDEwMlExNDkgNjA0IDE4OSA2MTdUMjQ1IDY0MVQyNzMgNjYzUTI3NSA2NjYgMjg1IDY2NlEyOTQgNjY2IDMwMiA2NjBWMzYxTDMwMyA2MVEzMTAgNTQgMzE1IDUyVDMzOSA0OFQ0MDEgNDZINDI3VjBINDE2UTM5NSAzIDI1NyAzUTEyMSAzIDEwMCAwSDg4VjQ2SDExNFExMzYgNDYgMTUyIDQ2VDE3NyA0N1QxOTMgNTBUMjAxIDUyVDIwNyA1N1QyMTMgNjFWNTc4WiIvPjwvZz48L2c+PC9nPjwvc3ZnPjxzcGFuIGNsYXNzPSJNSlhfQXNzaXN0aXZlX01hdGhNTCBNSlhfQXNzaXN0aXZlX01hdGhNTF9CbG9jayIgcm9sZT0icHJlc2VudGF0aW9uIj48L3NwYW4+PC9zcGFuPjwvZGl2PjxzY3JpcHQgdHlwZT0ibWF0aC90ZXg7IG1vZGU9ZGlzcGxheSIgaWQ9Ik1hdGhKYXgtRWxlbWVudC04Ij5iX3toKzF9PC9zY3JpcHQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjczIiB5PSI5MCIgZmlsbD0iIzMzMzMzMyIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4mI3hhO2Jfe2grMX08L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9Ijk1IiB5PSI2My41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjE0MCIgeT0iNjMuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIzMjUiIHk9IjYzLjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMzcwIiB5PSI2My41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjQxNSIgeT0iNjMuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI0NjAiIHk9IjYzLjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2RhZThmYyIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNTA1IiB5PSI2My41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjU1MCIgeT0iNjMuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1OTUiIHk9IjYzLjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNjQwIiB5PSI2My41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjY4NSIgeT0iNjMuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIxODUiIHk9IjYzLjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMjMwIiB5PSI2My41IiB3aWR0aD0iNTAiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjI4MCIgeT0iNjMuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI3MzAiIHk9IjE2Ny41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9Ijc3NSIgeT0iMTY3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2ZmZTZjYyIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDQzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMTkwcHg7IG1hcmdpbi1sZWZ0OiA3NzZweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+PHNwYW4gY2xhc3M9Ik1hdGhKYXhfUHJldmlldyIgc3R5bGU9ImNvbG9yOiBpbmhlcml0OyI+PC9zcGFuPjxkaXYgY2xhc3M9Ik1hdGhKYXhfU1ZHX0Rpc3BsYXkiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij48c3BhbiBjbGFzcz0iTWF0aEpheF9TVkciIGlkPSJNYXRoSmF4LUVsZW1lbnQtOS1GcmFtZSIgdGFiaW5kZXg9IjAiIGRhdGEtbWF0aG1sPSImbHQ7bWF0aCB4bWxucz0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJnF1b3Q7IGRpc3BsYXk9JnF1b3Q7YmxvY2smcXVvdDsmZ3Q7Jmx0O21zdWImZ3Q7Jmx0O21pJmd0O2ImbHQ7L21pJmd0OyZsdDttcm93IGNsYXNzPSZxdW90O01KWC1UZVhBdG9tLU9SRCZxdW90OyZndDsmbHQ7bWkmZ3Q7biZsdDsvbWkmZ3Q7Jmx0O21pJmd0O2gmbHQ7L21pJmd0OyZsdDsvbXJvdyZndDsmbHQ7L21zdWImZ3Q7Jmx0Oy9tYXRoJmd0OyIgcm9sZT0icHJlc2VudGF0aW9uIiBzdHlsZT0iZm9udC1zaXplOiAxMDAlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjMuMTYzZXgiIGhlaWdodD0iMi41NzZleCIgdmlld0JveD0iMCAtODMwLjkgMTM2MS44IDExMDkuMiIgcm9sZT0iaW1nIiBmb2N1c2FibGU9ImZhbHNlIiBzdHlsZT0idmVydGljYWwtYWxpZ246IC0wLjY0NmV4OyIgYXJpYS1oaWRkZW49InRydWUiPjxnIHN0cm9rZT0iY3VycmVudENvbG9yIiBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHBhdGggc3Ryb2tlLXdpZHRoPSIxIiBkPSJNNzMgNjQ3UTczIDY1NyA3NyA2NzBUODkgNjgzUTkwIDY4MyAxNjEgNjg4VDIzNCA2OTRRMjQ2IDY5NCAyNDYgNjg1VDIxMiA1NDJRMjA0IDUwOCAxOTUgNDcyVDE4MCA0MThMMTc2IDM5OVExNzYgMzk2IDE4MiA0MDJRMjMxIDQ0MiAyODMgNDQyUTM0NSA0NDIgMzgzIDM5NlQ0MjIgMjgwUTQyMiAxNjkgMzQzIDc5VDE3MyAtMTFRMTIzIC0xMSA4MiAyN1Q0MCAxNTBWMTU5UTQwIDE4MCA0OCAyMTdUOTcgNDE0UTE0NyA2MTEgMTQ3IDYyM1QxMDkgNjM3UTEwNCA2MzcgMTAxIDYzN0g5NlE4NiA2MzcgODMgNjM3VDc2IDY0MFQ3MyA2NDdaTTMzNiAzMjVWMzMxUTMzNiA0MDUgMjc1IDQwNVEyNTggNDA1IDI0MCAzOTdUMjA3IDM3NlQxODEgMzUyVDE2MyAzMzBMMTU3IDMyMkwxMzYgMjM2UTExNCAxNTAgMTE0IDExNFExMTQgNjYgMTM4IDQyUTE1NCAyNiAxNzggMjZRMjExIDI2IDI0NSA1OFEyNzAgODEgMjg1IDExNFQzMTggMjE5UTMzNiAyOTEgMzM2IDMyNVoiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MjksLTE1MCkiPjxwYXRoIHN0cm9rZS13aWR0aD0iMSIgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNykiIGQ9Ik0yMSAyODdRMjIgMjkzIDI0IDMwM1QzNiAzNDFUNTYgMzg4VDg5IDQyNVQxMzUgNDQyUTE3MSA0NDIgMTk1IDQyNFQyMjUgMzkwVDIzMSAzNjlRMjMxIDM2NyAyMzIgMzY3TDI0MyAzNzhRMzA0IDQ0MiAzODIgNDQyUTQzNiA0NDIgNDY5IDQxNVQ1MDMgMzM2VDQ2NSAxNzlUNDI3IDUyUTQyNyAyNiA0NDQgMjZRNDUwIDI2IDQ1MyAyN1E0ODIgMzIgNTA1IDY1VDU0MCAxNDVRNTQyIDE1MyA1NjAgMTUzUTU4MCAxNTMgNTgwIDE0NVE1ODAgMTQ0IDU3NiAxMzBRNTY4IDEwMSA1NTQgNzNUNTA4IDE3VDQzOSAtMTBRMzkyIC0xMCAzNzEgMTdUMzUwIDczUTM1MCA5MiAzODYgMTkzVDQyMyAzNDVRNDIzIDQwNCAzNzkgNDA0SDM3NFEyODggNDA0IDIyOSAzMDNMMjIyIDI5MUwxODkgMTU3UTE1NiAyNiAxNTEgMTZRMTM4IC0xMSAxMDggLTExUTk1IC0xMSA4NyAtNVQ3NiA3VDc0IDE3UTc0IDMwIDExMiAxODBUMTUyIDM0M1ExNTMgMzQ4IDE1MyAzNjZRMTUzIDQwNSAxMjkgNDA1UTkxIDQwNSA2NiAzMDVRNjAgMjg1IDYwIDI4NFE1OCAyNzggNDEgMjc4SDI3UTIxIDI4NCAyMSAyODdaIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDI0LDApIj48cGF0aCBzdHJva2Utd2lkdGg9IjEiIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcpIiBkPSJNMTM3IDY4M1ExMzggNjgzIDIwOSA2ODhUMjgyIDY5NFEyOTQgNjk0IDI5NCA2ODVRMjk0IDY3NCAyNTggNTM0UTIyMCAzODYgMjIwIDM4M1EyMjAgMzgxIDIyNyAzODhRMjg4IDQ0MiAzNTcgNDQyUTQxMSA0NDIgNDQ0IDQxNVQ0NzggMzM2UTQ3OCAyODUgNDQwIDE3OFQ0MDIgNTBRNDAzIDM2IDQwNyAzMVQ0MjIgMjZRNDUwIDI2IDQ3NCA1NlQ1MTMgMTM4UTUxNiAxNDkgNTE5IDE1MVQ1MzUgMTUzUTU1NSAxNTMgNTU1IDE0NVE1NTUgMTQ0IDU1MSAxMzBRNTM1IDcxIDUwMCAzM1E0NjYgLTEwIDQxOSAtMTBINDE0UTM2NyAtMTAgMzQ2IDE3VDMyNSA3NFEzMjUgOTAgMzYxIDE5MlQzOTggMzQ1UTM5OCA0MDQgMzU0IDQwNEgzNDlRMjY2IDQwNCAyMDUgMzA2TDE5OCAyOTNMMTY0IDE1OFExMzIgMjggMTI3IDE2UTExNCAtMTEgODMgLTExUTY5IC0xMSA1OSAtMlQ0OCAxNlE0OCAzMCAxMjEgMzIwTDE5NSA2MTZRMTk1IDYyOSAxODggNjMyVDE0OSA2MzdIMTI4UTEyMiA2NDMgMTIyIDY0NVQxMjQgNjY0UTEyOSA2ODMgMTM3IDY4M1oiLz48L2c+PC9nPjwvZz48L3N2Zz48c3BhbiBjbGFzcz0iTUpYX0Fzc2lzdGl2ZV9NYXRoTUwgTUpYX0Fzc2lzdGl2ZV9NYXRoTUxfQmxvY2siIHJvbGU9InByZXNlbnRhdGlvbiI+PC9zcGFuPjwvc3Bhbj48L2Rpdj48c2NyaXB0IHR5cGU9Im1hdGgvdGV4OyBtb2RlPWRpc3BsYXkiIGlkPSJNYXRoSmF4LUVsZW1lbnQtOSI+Yl97bmh9PC9zY3JpcHQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9Ijc5OCIgeT0iMTk0IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPiYjeGE7Yl97bmh9PC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSI1MCIgeT0iMTY3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Q1ZThkNCIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iOTUiIHk9IjE2Ny41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjE0MCIgeT0iMTY3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMzI1IiB5PSIxNjcuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIzNzAiIHk9IjE2Ny41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjQxNSIgeT0iMTY3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNDYwIiB5PSIxNjcuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1MDUiIHk9IjE2Ny41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjU1MCIgeT0iMTY3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNTk1IiB5PSIxNjcuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI2NDAiIHk9IjE2Ny41IiB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9IiNmNWY1ZjUiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjY4NSIgeT0iMTY3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2RhZThmYyIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMTg1IiB5PSIxNjcuNSIgd2lkdGg9IjQ1IiBoZWlnaHQ9IjQ1IiBmaWxsPSIjZjVmNWY1IiBzdHJva2U9IiM2NjY2NjYiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIyMzAiIHk9IjE2Ny41IiB3aWR0aD0iNTAiIGhlaWdodD0iNDUiIGZpbGw9IiNkNWU4ZDQiIHN0cm9rZT0iIzY2NjY2NiIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjI4MCIgeT0iMTY3LjUiIHdpZHRoPSI0NSIgaGVpZ2h0PSI0NSIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSA0MzQuNSAxNjAuNSBMIDQzNC41IDEzNy41IFEgNDM0LjUgMTI3LjUgNDM0LjUgMTE3LjUgTCA0MzQuNSAxMDcuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjUiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iNSAxNSIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gODIwIDMwIFEgODQwIDMwLjA2IDg0MCA0My43NiBRIDg0MCA1Ny40NyA0MzUgNTcuNDcgUSAzMCA1Ny40NyAzMCA3MiBRIDMwIDg2LjUzIDM1IDg2LjUzIFEgNDAgODYuNTMgNDMuNjQgODYuMzQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSA0OC44OCA4Ni4wNiBMIDQyLjA4IDg5LjkyIEwgNDMuNjQgODYuMzQgTCA0MS43MSA4Mi45MyBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gODIwIDg2IFEgODQwIDg2LjA2IDg0MCAxMDEuNzYgUSA4NDAgMTE3LjQ3IDU3MCAxMTcuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDQzLjYzIDE5MC41MSBRIDMwIDE5MC41MyAzMCAxNzQgUSAzMCAxNTcuNDcgMTIwIDE1Ny40NyBRIDIxMCAxNTcuNDcgMjEwIDE0Ny41IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gNDguODggMTkwLjUgTCA0MS44OSAxOTQuMDEgTCA0My42MyAxOTAuNTEgTCA0MS44OCAxODcuMDEgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1NDguNzUiIHk9IjEyNy41IiB3aWR0aD0iMjcwIiBoZWlnaHQ9IjMwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY4My43NSwwKXNjYWxlKC0xLDEpdHJhbnNsYXRlKC02ODMuNzUsMCkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDU0OC43NSAxMjcuNSBNIDgxOC43NSAxMjcuNSBNIDgxOC43NSAxNTcuNSBMIDU0OC43NSAxNTcuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjY2NjY2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY4My43NSwwKXNjYWxlKC0xLDEpdHJhbnNsYXRlKC02ODMuNzUsMCkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGZsZXgtZW5kOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAyNjhweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAxNTVweDsgbWFyZ2luLWxlZnQ6IDU1MHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O2hlbHZldGljYSZxdW90OyI+PGZvbnQgc3R5bGU9ImZvbnQtc2l6ZTogMTVweCI+bGlua3MgYWxsIGRhdGEgc2VnbWVudHMgc2VxdWVudGlhbGx5PC9mb250Pjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNjg0IiB5PSIxNTUiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+bGlua3MgYWxsIGRhdGEgc2VnbWVudHMgc2VxdWVudGlhbGx5PC90ZXh0Pjwvc3dpdGNoPjwvZz48cGF0aCBkPSJNIDgzNS4zNyAxMTAuNSBMIDgzNy4xOCAxMTAuNSBRIDgzOSAxMTAuNSA4MzkgMTIwLjUgTCA4MzkgMTQ3LjUgUSA4MzkgMTU3LjUgODI5IDE1Ny41IEwgODE4Ljc1IDE1Ny41IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gODMwLjEyIDExMC41IEwgODM3LjEyIDEwNyBMIDgzNS4zNyAxMTAuNSBMIDgzNy4xMiAxMTQgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1NjQiIHk9IjExOC41IiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjI1IiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgZmxleC1zdGFydDsgd2lkdGg6IDE0OHB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDEzMXB4OyBtYXJnaW4tbGVmdDogNTY2cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGxlZnQ7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwICwgMCAsIDApIDsgZm9udC1mYW1pbHk6ICZxdW90O2hlbHZldGljYSZxdW90OyA7IGZvbnQtd2VpZ2h0OiA0MDAgOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsIDsgdGV4dC1hbGlnbjogY2VudGVyIDsgdGV4dC1pbmRlbnQ6IDBweCA7IHRleHQtdHJhbnNmb3JtOiBub25lIDsgd29yZC1zcGFjaW5nOiAwcHggOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1ICwgMjU1ICwgMjU1KSA7IGRpc3BsYXk6IGlubGluZSA7IGZsb2F0OiBub25lIj48Zm9udCBzaXplPSIxIj48aSBzdHlsZT0iZm9udC1zaXplOiAxNXB4Ij5idWZmZXIuc2FtcGxlKDApPC9pPjwvZm9udD48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjU2NiIgeT0iMTM1IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiPmJ1ZmZlci5zYW1wbGUoMCk8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9Ii0yMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InJvdGF0ZSgtOTAsMTAsMzApIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KXJvdGF0ZSgtOTAgMTAgMzApIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogNThweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAzMHB4OyBtYXJnaW4tbGVmdDogLTE5cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDE1cHgiPkVudiAxPC9mb250PjwvYj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMTAiIHk9IjM0IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPkVudiAxPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSItMjAiIHk9Ijc2IiB3aWR0aD0iNjAiIGhlaWdodD0iMjAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwLDEwLDg2KSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSlyb3RhdGUoLTkwIDEwIDg2KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDU4cHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogODZweDsgbWFyZ2luLWxlZnQ6IC0xOXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48Yj48Zm9udCBzdHlsZT0iZm9udC1zaXplOiAxNXB4Ij5FbnYgMjwvZm9udD48L2I+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjEwIiB5PSI5MCIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5FbnYgMjwvdGV4dD48L3N3aXRjaD48L2c+PC9nPjxzd2l0Y2g+PGcgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ii8+PGEgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtNSkiIHhsaW5rOmhyZWY9Imh0dHBzOi8vd3d3LmRpYWdyYW1zLm5ldC9kb2MvZmFxL3N2Zy1leHBvcnQtdGV4dC1wcm9ibGVtcyIgdGFyZ2V0PSJfYmxhbmsiPjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTBweCIgeD0iNTAlIiB5PSIxMDAlIj5WaWV3ZXIgZG9lcyBub3Qgc3VwcG9ydCBmdWxsIFNWRyAxLjE8L3RleHQ+PC9hPjwvc3dpdGNoPjwvc3ZnPg==)\n", + "\n", + "![22.PNG](data:image/png;base64,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)" + ], + "metadata": { + "id": "2cPnUXRBWKD9" + } + } + ] +} diff --git a/notebooks/L5_Collector.ipynb b/notebooks/L5_Collector.ipynb index 17ea547..e6e6818 100644 --- a/notebooks/L5_Collector.ipynb +++ b/notebooks/L5_Collector.ipynb @@ -1,365 +1,263 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] }, - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "AKoInktmr-3t" - }, - "outputs": [], - "source": [ - "# Remember to install tianshou first\n", - "!pip install tianshou==0.4.8\n", - "!pip install gym" - ] + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "AKoInktmr-3t" + }, + "outputs": [], + "source": [ + "# Remember to install tianshou first\n", + "!pip install tianshou==0.4.8\n", + "!pip install gym" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Overview\n", + "From its literal meaning, we can easily know that the Collector in Tianshou is used to collect training data. More specificly, the Collector controls the interaction between Policy (agent) and the environment. It also helps save the interaction data into the ReplayBuffer and returns episode statistics.\n", + "\n", + "
\n", + "\n", + "
\n", + "\n" + ], + "metadata": { + "id": "M98bqxdMsTXK" + } + }, + { + "cell_type": "markdown", + "source": [ + "# Usages\n", + "Collector can be used both for training (data collecting) and evaluation in Tianshou." + ], + "metadata": { + "id": "OX5cayLv4Ziu" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Policy evaluation\n", + "We need to evaluate our trained policy from time to time in DRL experiments. Collector can help us with this.\n", + "\n", + "First we have to initialise a Collector with an (vectorized) environment and a given policy (agent)." + ], + "metadata": { + "id": "Z6XKbj28u8Ze" + } + }, + { + "cell_type": "code", + "source": [ + "import gym\n", + "import numpy as np\n", + "import torch\n", + "\n", + "from tianshou.data import Collector\n", + "from tianshou.env import DummyVectorEnv\n", + "from tianshou.policy import PGPolicy\n", + "from tianshou.utils.net.common import Net\n", + "from tianshou.utils.net.discrete import Actor\n", + "\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "env = gym.make(\"CartPole-v0\")\n", + "test_envs = DummyVectorEnv([lambda: gym.make(\"CartPole-v0\") for _ in range(2)])\n", + "\n", + "# model\n", + "net = Net(env.observation_space.shape, hidden_sizes=[16,])\n", + "actor = Actor(net, env.action_space.shape)\n", + "optim = torch.optim.Adam(actor.parameters(), lr=0.0003)\n", + "\n", + "policy = PGPolicy(actor, optim, dist_fn=torch.distributions.Categorical)\n", + "test_collector = Collector(policy, test_envs)" + ], + "metadata": { + "id": "w8t9ubO7u69J" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Now we would like to collect 9 episodes of data to test how our initialised Policy performs." + ], + "metadata": { + "id": "wmt8vuwpzQdR" + } + }, + { + "cell_type": "code", + "source": [ + "collect_result = test_collector.collect(n_episode=9)\n", + "print(collect_result)\n", + "print(\"Rewards of 9 episodes are {}\".format(collect_result[\"rews\"]))\n", + "print(\"Average episode reward is {}.\".format(collect_result[\"rew\"]))\n", + "print(\"Average episode length is {}.\".format(collect_result[\"len\"]))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "# Overview\n", - "From its literal meaning, we can easily know that the Collector in Tianshou is used to collect training data. More specificly, the Collector controls the interaction between Policy (agent) and the environment. It also helps save the interaction data into the ReplayBuffer and returns episode statistics.\n", - "\n", - "
\n", - "\n", - "
\n", - "\n" - ], - "metadata": { - "id": "M98bqxdMsTXK" - } + "id": "9SuT6MClyjyH", + "outputId": "1e48f13b-c1fe-4fc2-ca1b-669485efdcae" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Now we wonder what is the performance of a random policy." + ], + "metadata": { + "id": "zX9AQY0M0R3C" + } + }, + { + "cell_type": "code", + "source": [ + "# Reset the collector\n", + "test_collector.reset()\n", + "collect_result = test_collector.collect(n_episode=9, random=True)\n", + "print(collect_result)\n", + "print(\"Rewards of 9 episodes are {}\".format(collect_result[\"rews\"]))\n", + "print(\"Average episode reward is {}.\".format(collect_result[\"rew\"]))\n", + "print(\"Average episode length is {}.\".format(collect_result[\"len\"]))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "# Usages\n", - "Collector can be used both for training (data collecting) and evaluation in Tianshou." - ], - "metadata": { - "id": "OX5cayLv4Ziu" - } + "id": "UEcs8P8P0RLt", + "outputId": "85f02f9d-b79b-48b2-99c6-36a1602f0884" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Seems that an initialised policy performs even worse than a random policy without any training." + ], + "metadata": { + "id": "sKQRTiG10ljU" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Data Collecting\n", + "Data collecting is mostly used during training, when we need to store the collected data in a ReplayBuffer." + ], + "metadata": { + "id": "8RKmHIoG1A1k" + } + }, + { + "cell_type": "code", + "source": [ + "from tianshou.data import VectorReplayBuffer\n", + "train_env_num = 4\n", + "buffer_size = 100\n", + "train_envs = DummyVectorEnv([lambda: gym.make(\"CartPole-v0\") for _ in range(train_env_num)])\n", + "replaybuffer = VectorReplayBuffer(buffer_size, train_env_num)\n", + "\n", + "train_collector = Collector(policy, train_envs, replaybuffer)" + ], + "metadata": { + "id": "CB9XB9bF1YPC" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Now we can collect 50 steps of data, which will be automatically saved in the replay buffer. You can still choose to collect a certain number of episodes rather than steps. Try it yourself." + ], + "metadata": { + "id": "rWKDazA42IUQ" + } + }, + { + "cell_type": "code", + "source": [ + "print(len(replaybuffer))\n", + "collect_result = train_collector.collect(n_step=50)\n", + "print(len(replaybuffer))\n", + "print(collect_result)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "## Policy evaluation\n", - "We need to evaluate our trained policy from time to time in DRL experiments. Collector can help us with this.\n", - "\n", - "First we have to initialise a Collector with an (vectorized) environment and a given policy (agent)." - ], - "metadata": { - "id": "Z6XKbj28u8Ze" - } + "id": "-fUtQOnM2Yi1", + "outputId": "dceee987-433e-4b75-ed9e-823c20a9e1c2" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "for i in range(13):\n", + " print(i, replaybuffer.next(i))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "code", - "source": [ - "import gym\n", - "import numpy as np\n", - "import torch\n", - "\n", - "from tianshou.data import Collector\n", - "from tianshou.env import DummyVectorEnv\n", - "from tianshou.policy import PGPolicy\n", - "from tianshou.utils.net.common import Net\n", - "from tianshou.utils.net.discrete import Actor\n", - "\n", - "import warnings\n", - "warnings.filterwarnings('ignore')\n", - "\n", - "env = gym.make(\"CartPole-v0\")\n", - "test_envs = DummyVectorEnv([lambda: gym.make(\"CartPole-v0\") for _ in range(2)])\n", - "\n", - "# model\n", - "net = Net(env.observation_space.shape, hidden_sizes=[16,])\n", - "actor = Actor(net, env.action_space.shape)\n", - "optim = torch.optim.Adam(actor.parameters(), lr=0.0003)\n", - "\n", - "policy = PGPolicy(actor, optim, dist_fn=torch.distributions.Categorical)\n", - "test_collector = Collector(policy, test_envs)" - ], - "metadata": { - "id": "w8t9ubO7u69J" - }, - "execution_count": null, - "outputs": [] + "id": "EWO4A7plefwM", + "outputId": "9a6f36d1-2b84-49b0-a03d-a8ebe8acadbf" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "replaybuffer.sample(10)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "Now we would like to collect 9 episodes of data to test how our initialised Policy performs." - ], - "metadata": { - "id": "wmt8vuwpzQdR" - } - }, - { - "cell_type": "code", - "source": [ - "collect_result = test_collector.collect(n_episode=9)\n", - "print(collect_result)\n", - "print(\"Rewards of 9 episodes are {}\".format(collect_result[\"rews\"]))\n", - "print(\"Average episode reward is {}.\".format(collect_result[\"rew\"]))\n", - "print(\"Average episode length is {}.\".format(collect_result[\"len\"]))" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "9SuT6MClyjyH", - "outputId": "1e48f13b-c1fe-4fc2-ca1b-669485efdcae" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "{'n/ep': 9, 'n/st': 85, 'rews': array([ 9., 9., 10., 10., 9., 9., 10., 10., 9.]), 'lens': array([ 9, 9, 10, 10, 9, 9, 10, 10, 9]), 'idxs': array([0, 1, 0, 1, 0, 1, 0, 1, 1]), 'rew': 9.444444444444445, 'len': 9.444444444444445, 'rew_std': 0.49690399499995325, 'len_std': 0.49690399499995325}\n", - "Rewards of 9 episodes are [ 9. 9. 10. 10. 9. 9. 10. 10. 9.]\n", - "Average episode reward is 9.444444444444445.\n", - "Average episode length is 9.444444444444445.\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "Now we wonder what is the performance of a random policy." - ], - "metadata": { - "id": "zX9AQY0M0R3C" - } - }, - { - "cell_type": "code", - "source": [ - "# Reset the collector\n", - "test_collector.reset()\n", - "collect_result = test_collector.collect(n_episode=9, random=True)\n", - "print(collect_result)\n", - "print(\"Rewards of 9 episodes are {}\".format(collect_result[\"rews\"]))\n", - "print(\"Average episode reward is {}.\".format(collect_result[\"rew\"]))\n", - "print(\"Average episode length is {}.\".format(collect_result[\"len\"]))" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "UEcs8P8P0RLt", - "outputId": "85f02f9d-b79b-48b2-99c6-36a1602f0884" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "{'n/ep': 9, 'n/st': 187, 'rews': array([13., 14., 11., 44., 35., 14., 19., 17., 20.]), 'lens': array([13, 14, 11, 44, 35, 14, 19, 17, 20]), 'idxs': array([1, 0, 0, 1, 0, 0, 1, 0, 1]), 'rew': 20.77777777777778, 'len': 20.77777777777778, 'rew_std': 10.580671872993257, 'len_std': 10.580671872993257}\n", - "Rewards of 9 episodes are [13. 14. 11. 44. 35. 14. 19. 17. 20.]\n", - "Average episode reward is 20.77777777777778.\n", - "Average episode length is 20.77777777777778.\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "Seems that an initialised policy performs even worse than a random policy without any training." - ], - "metadata": { - "id": "sKQRTiG10ljU" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Data Collecting\n", - "Data collecting is mostly used during training, when we need to store the collected data in a ReplayBuffer." - ], - "metadata": { - "id": "8RKmHIoG1A1k" - } - }, - { - "cell_type": "code", - "source": [ - "from tianshou.data import VectorReplayBuffer\n", - "train_env_num = 4\n", - "buffer_size = 100\n", - "train_envs = DummyVectorEnv([lambda: gym.make(\"CartPole-v0\") for _ in range(train_env_num)])\n", - "replaybuffer = VectorReplayBuffer(buffer_size, train_env_num)\n", - "\n", - "train_collector = Collector(policy, train_envs, replaybuffer)" - ], - "metadata": { - "id": "CB9XB9bF1YPC" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Now we can collect 50 steps of data, which will be automatically saved in the replay buffer. You can still choose to collect a certain number of episodes rather than steps. Try it yourself." - ], - "metadata": { - "id": "rWKDazA42IUQ" - } - }, - { - "cell_type": "code", - "source": [ - "print(len(replaybuffer))\n", - "collect_result = train_collector.collect(n_step=50)\n", - "print(len(replaybuffer))\n", - "print(collect_result)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "-fUtQOnM2Yi1", - "outputId": "dceee987-433e-4b75-ed9e-823c20a9e1c2" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "0\n", - "52\n", - "{'n/ep': 4, 'n/st': 52, 'rews': array([ 8., 10., 10., 10.]), 'lens': array([ 8, 10, 10, 10]), 'idxs': array([25, 0, 50, 75]), 'rew': 9.5, 'len': 9.5, 'rew_std': 0.8660254037844386, 'len_std': 0.8660254037844386}\n" - ] - } - ] - }, - { - "cell_type": "code", - "source": [ - "for i in range(13):\n", - " print(i, replaybuffer.next(i))" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "EWO4A7plefwM", - "outputId": "9a6f36d1-2b84-49b0-a03d-a8ebe8acadbf" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "0 1\n", - "1 2\n", - "2 3\n", - "3 4\n", - "4 5\n", - "5 6\n", - "6 7\n", - "7 8\n", - "8 9\n", - "9 9\n", - "10 11\n", - "11 12\n", - "12 12\n" - ] - } - ] - }, - { - "cell_type": "code", - "source": [ - "replaybuffer.sample(10)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "HW8PpWH9fLCo", - "outputId": "7ca70c50-23b9-4405-9e42-2e5771cd9c78" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "(Batch(\n", - " obs: array([[-6.36541036e-02, -1.15297838e+00, 7.85138179e-02,\n", - " 1.77225357e+00],\n", - " [-1.05090645e-02, -3.71521519e-01, -2.96323181e-03,\n", - " 5.76793524e-01],\n", - " [-2.45282997e-02, 4.77850180e-02, 2.21142716e-02,\n", - " 4.96743371e-02],\n", - " [ 1.68433453e-03, 4.47272356e-02, -1.72360346e-02,\n", - " -7.74977680e-03],\n", - " [ 4.29854159e-02, -3.95380051e-01, 3.91005958e-02,\n", - " 6.41183774e-01],\n", - " [ 3.50778149e-02, -5.91024637e-01, 5.19242712e-02,\n", - " 9.45918993e-01],\n", - " [-1.19358173e-01, -1.38179912e+00, 1.04318690e-01,\n", - " 2.10185768e+00],\n", - " [-3.48454722e-02, 1.61145106e-03, -2.49944951e-02,\n", - " -3.82213155e-02],\n", - " [-3.48454722e-02, 1.61145106e-03, -2.49944951e-02,\n", - " -3.82213155e-02],\n", - " [-4.64338716e-02, -5.82710950e-01, -1.02110827e-02,\n", - " 8.16967413e-01]]),\n", - " act: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),\n", - " rew: array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]),\n", - " done: array([False, False, False, False, False, False, False, False, False,\n", - " False]),\n", - " obs_next: array([[-0.08671367, -1.34889318, 0.11395889, 2.08827982],\n", - " [-0.01793949, -0.56660181, 0.00857264, 0.86854149],\n", - " [-0.0235726 , -0.14764694, 0.02310776, 0.34925166],\n", - " [ 0.00257888, -0.15014334, -0.01739103, 0.27944553],\n", - " [ 0.03507781, -0.59102464, 0.05192427, 0.94591899],\n", - " [ 0.02325732, -0.78680603, 0.07084265, 1.25445415],\n", - " [-0.14699416, -1.57780202, 0.14635584, 2.42487783],\n", - " [-0.03481324, -0.19314333, -0.02575892, 0.24647199],\n", - " [-0.03481324, -0.19314333, -0.02575892, 0.24647199],\n", - " [-0.05808809, -0.77769163, 0.00612827, 1.10642118]]),\n", - " info: Batch(\n", - " env_id: array([0, 0, 0, 1, 1, 1, 2, 3, 3, 3]),\n", - " ),\n", - " policy: Batch(),\n", - " ), array([ 6, 2, 10, 33, 27, 28, 57, 75, 75, 78]))" - ] - }, - "metadata": {}, - "execution_count": 10 - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "# Further Reading\n", - "The above collector actually collects 52 data at a time because 52 % 4 = 0. There is one asynchronous collector which allows you collect exactly 50 steps. Check the [documentation](https://tianshou.readthedocs.io/en/master/api/tianshou.data.html#asynccollector) for details." - ], - "metadata": { - "id": "8NP7lOBU3-VS" - } - } - ] -} \ No newline at end of file + "id": "HW8PpWH9fLCo", + "outputId": "7ca70c50-23b9-4405-9e42-2e5771cd9c78" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Further Reading\n", + "The above collector actually collects 52 data at a time because 52 % 4 = 0. There is one asynchronous collector which allows you collect exactly 50 steps. Check the [documentation](https://tianshou.readthedocs.io/en/master/api/tianshou.data.html#asynccollector) for details." + ], + "metadata": { + "id": "8NP7lOBU3-VS" + } + } + ] +} diff --git a/notebooks/L6_Trainer.ipynb b/notebooks/L6_Trainer.ipynb index c75ad85..c803460 100644 --- a/notebooks/L6_Trainer.ipynb +++ b/notebooks/L6_Trainer.ipynb @@ -1,379 +1,227 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [], - "collapsed_sections": [ - "S3-tJZy35Ck_", - "XfsuU2AAE52C", - "p-7U_cwgF5Ej", - "_j3aUJZQ7nml" - ] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "collapsed_sections": [ + "S3-tJZy35Ck_", + "XfsuU2AAE52C", + "p-7U_cwgF5Ej", + "_j3aUJZQ7nml" + ] }, - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "wDZlC0v348Ym" - }, - "outputs": [], - "source": [ - "# Remember to install tianshou first\n", - "!pip install tianshou==0.4.8\n", - "!pip install gym" - ] + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "wDZlC0v348Ym" + }, + "outputs": [], + "source": [ + "# Remember to install tianshou first\n", + "!pip install tianshou==0.4.8\n", + "!pip install gym" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Overview\n", + "Trainer is the highest-level encapsulation in Tianshou. It controls the training loop and the evaluation method. It also controls the interaction between the Collector and the Policy, with the ReplayBuffer serving as the media.\n", + "\n", + "![framework.svg](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2MTFweCIgaGVpZ2h0PSI0NDJweCIgdmlld0JveD0iLTAuNSAtMC41IDYxMSA0NDIiIGNvbnRlbnQ9IiZsdDtteGZpbGUgaG9zdD0mcXVvdDtFbGVjdHJvbiZxdW90OyBtb2RpZmllZD0mcXVvdDsyMDIyLTA0LTE3VDEzOjMzOjA5LjA3N1omcXVvdDsgYWdlbnQ9JnF1b3Q7NS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIGRyYXcuaW8vMTQuNS4xIENocm9tZS84OS4wLjQzODkuODIgRWxlY3Ryb24vMTIuMC4xIFNhZmFyaS81MzcuMzYmcXVvdDsgdmVyc2lvbj0mcXVvdDsxNC41LjEmcXVvdDsgZXRhZz0mcXVvdDtJb3BxY0U2Q2U5NkNiVnNkZ1cteiZxdW90OyB0eXBlPSZxdW90O2RldmljZSZxdW90OyZndDsmbHQ7ZGlhZ3JhbSBpZD0mcXVvdDtFUzR4czlIalFlV1pKWGNuT0VQaSZxdW90OyZndDs3VjFiczVzNEV2NDFydHA5aUl2NzVUSG5KSmw5U0xaT2JhWjJkcDZtT0JqYnpHRGtCWHd1Kyt0WE1wS05RTnlNRUhDc1ZDVXhRbURUL1hXcjFXcDlyUFRIdzlzdmlYZmMvd0NiSUZwcHl1WnRwWDlaYWZDUG9jUC9VTXQ3M3VKb2R0NndTOEpOM3FSZUczNkcvd3R3bzRKYlQrRW1TUE0yM0pRQkVHWGhNYVd1OWtFY0IzNUd0WGxKQWw3cGE3Y2dvci8xNk8wQ3FnZHErT2w3VVZEcDlsdTR5ZmFscDBEdC93akMzWjU4czJxNStabURSenJqRzZkN2J3TmVDMDM2MTVYK21BQ1E1WjhPYjQ5QmhJUkg1SkpmOTYzbTdPV0hKVUdjZGJsQXl5OTQ4YUlUZmpiOHU3SjM4ckM3Qkp5T0svMEI5d3lTTEhoalNkbDdqc3BDdS80SzlmSnNFQlFCT0FSWjhnNjc0QnQ5Y2hSOERRYUVadUxqMTZ0NExhTDlmVUcwQnJuUXd5cmRYVzUrZldyNEFUODRXd2g2dXhDZ0RPSk5nUHFyVUJTdit6QUxmaDQ5SDUxOWhSaUhiZnZzRU9IVGFaYUF2eTdJUUMxYkVHZmZ2RU1Zb2VkN0JLY2tEQkw0QmY4TVh2RkpqSEg0aVBxREY0VzdHQjc0VUhxd0cyeElmSHplYk5KRFVkNGFXOTVDeEdsTUs4NksrUHdJeEFGR3A4SlZuUGdDdlFSZXBRcGV3MkZJVzNVNFNOdThjMmtiWFlXdGNSQzJWUkgyNXgzNjJiT1NPQWNabTdTTVZiMHE1SXZnaTBMbUlXTzdIZERvMlVJNEhILzNub1BvQ2FSaEZnSWtrbWVRWmVBQVJVQTZmTWF5eWtCWjVudnZpRzUyZU51aEVHVzlqY0Nydi9lU2JKMmVEb2N3M3YyeFBjVitmdHVlNnZEU1l4NXpiTU0zQklHSFRaZ0UrRlpmVW5CQ0FueElRT2JocGsrdU1vNFNOWnZXb3E1cUZTMnlCZ0dWZ3hLZGlzNkNEUXloOENGSXNqM1lnZGlMdmw1Ykg2NUdnd1NRL2hWay9oNGYvSGs2SE1uRk1SUVViTHJlNHp0QTJqMnI5YzhneTk2eHUvRk9HYUNWSHJ5RjJYL1FIZGNtUHZxOWNPYkxHLzZ5ODhFN09ZamhreGN1UW9lL0Y4OWRMenNmVWRjOUJVa0lSWWRna1Q5VEJoSDJHUVdnMStjNHQzMExrU1N2ZlVnNGNMN1JobHpoUjE2YWhuN2VpQy9CWFFvWHdPdDNRWGI1YXVSM0lKN3gzUnVoek1ZZ1Vsd3pBcUdlNFozOGdQS1IrYzhvbUhRVnAwa1FRU040b2UvT1F0MzVVaWdGNzczUTRRakNPRXNMZDM1Q0RWZjRPeVVmWnBZaTRlYnVaSmlwNjY3WlpsTi8rQ0gvdlZkcnVUeDRKd055MjcwZ0Njekxhb1BlNXBTa1VLNy9DdEljRmozRzRTN0JmTXY0ckpVa3lSaWhpVEpvdjZOemNEekVlZDBpdUVGQ2NkbENhWDlvZzhORHErMFBMVFFrWVE1NVRGakNRZktMbHhJL3YwbkE4VmZpT0c0ZUZsWGxWbDN3QUNCclNtMUZHWlloU2pkNDJGVmEvejJoZWY0RExjNUxNL3kwdy8rZkwwK1BYa3pwbEhSRTkvMlV5L1F6N0tEYXg3ZjZ1enlUaG44SC9zTnB1MFhmbTUrQlQvWmM3ZzNiOHErdE5PY1BRNXBMWUd1SXRJSms3Y1grSGlRMUtDUllpb0p0eGhzQWJ5dktSN3pUaHdWNE9NYmFkU3pIVlhUWHNFek5jS3RnZ1Qwc0I0NTJEanl2R0tyZE1IeDFoazZIUkFTZmJFd3YrVENDLzR1bDBIRWpEMWZXSVhzZ3cvOGlYdXJWV0JxSURYSGh2OW9oS3pIS0tOd2lFdDJwaU1DeXgwSnlOVmxBZTNMYXBlTEJvZDI3cXl6dkRqMDVPbGZybjJ1OGVXMk1vTFRIQ0JYa2w2M3VFRzQyNTRuZERaT09OdVNiclNPOGFUTDB5a090clB4RXp3RzZRWVdhR0YySlU4a2xLVnF4dk5FMDVOeW9vUzBXQ05JUlBPVWQ4b0ZXaHlFNkZNcEZTUEU1U0tQUG9pdk8vekpWamM5QjhXV2ZzQ3JRU2F5TkdpVG9IeFFKak9uZ2FFaGd6S0lmdGRXRFRmMWJsaWRTRTJzNjlBZ2lGTFdTeE0wMmpLSlNVM2VYeU5JU3JjZGkyUEFhcEJrZE5Rd0lHbXEwUS9JYUtNOUZSUTJNNk0rb3FvdW9jSWk2Tk5iY2ZYbUdHMzlRdzNYRUdhN0dTR2hJdzUydjRUSnlIbEpkODFXWFh0SEZuRlpuVnRlMW1ldEtUY3ZxakxvcXJzMWNsMnB1WHAyNXJyVVVGMmpVVmVNQ0RYNzQ2K3BNL2wxa2RRWWRDVjJkSVFtbDR2Sk1QaTJ0NHJKMjNhV3k5RkZLRHhrMmpVajhoUGsxVjFEMlhiNHBKUy9zNHIzYU9odDJ5UnlHcmNXUWloWnBML2RvTDg0MDluSUxUazJKMDd2RnFWYVQwNSs1WDNjbWRleldyQTJHS2xOUnBNRndOaGh0a1Faak9WTWFUSFVXTnllRGtTUE1xSkVRVm42eHNrdXZXVytidVJFTm1VNTBmQUp1SmpmclVrcjFGcE5UZUp2Y0dLV1U4ekE1UmpGbG5oWHFZWEo5YlVWVisweTl5NzE1dzkrVjhMOWYrRE5HSE9Id254Yi9wTkJLNHY4ZThlOE13My9uRFpEcW5FRjIyM1lOQ2JKZTgrQ0puV3pMckhac0o2dk5HZi9TeVFwSW5FNk0vNVkwNk5qNDcxQjRQbXJSTmJRT3lxSjQ3RUdwRkdKenJiRVdYMU5OTmdwMXFhbSt2YjU4K1A0dnphQUxHMVNyV3RsQWRrdFFlNGN0RGpMcVVYYytwWXhJWlFlWllvZ1VVWDFaZW5oelRickNLbWdPNHBkMW1nWEh2LzI5dlN3OXJDMlN3MVZDWFV1REN2Nm15S3VoTWh6VXBVaW80am9xMEdqbjc4QS9XTDNWeitqTjVVS2ZISHE0NkFRWExsNW4xaG4vWHFFUlBCZ2E0VmhpSTV3eU0wd1pXVnlqdlE3aEUzR21oZWlweDVwQXYrM2VsUmhJTDNFRVZiaHErQlZTNkt3ZEJETWNSalJMbzBTaUs2YTRjWVMxUTUzSHNQSHNJVy9SY2FQcHZZd09OVVZJaEx0Z29zR0IxS3lPSDBzOG4zY3FyNzNOUmtZVHcvRXlXVFJoZENBcW1JTmpOY3dTdXdlRGoyNHN4MHFtbE5LeENqQVVvNW1ZY0RJN1lTVmt4blNzcVhjNFJvSDByY01oTTUxdm5XZVYrcFUveTFHYzRqUkZYU3VLM2pKUldmcjhqTk0wbGVOOGpXU2VpaE0yb3liM01IRENacGJLcVBReXZVNyt1eW9UdHNxTkRLV1VVVFM3emZ6Nkp1VU50MHlZMTV5VkwvZFgzV2JPTUVPeG12b1BUdU1iMWV6bjAzc0dFalRxS3ovQTVnU0JXWFlSSDR5cDBxN0dhY1pZUkpYR3g2c2VWOWFhZmZISjJFa2JGNjh0dGlSV3RQUEczcWg2Si9WbVo4dW8zaHZzYXp1ajgwTW5idTlwbmJzdHlyZ05teVlqRUJqSzA5a1ptL1VNTFp5bk4wY1FoZjc3K3BnQVAwalRQN2J4b3FjNFlpWTR6UU91YnRNNVoxWHZsblBtTXNXcHp6bVBnNXNvOEJJSm1lR1FLY1hKRE1iRnNTQmpzbExVZFJuSGFZbHpMVnBLWW5selRVa2hXOVNVT1NXRnJObWFBWjRQaGV6WCtPWGo4Y2ZXYVorOTRZdkZIK3V1VGRVMVliUnZ1SXF1dXd5T3lSSDRZMDFSL0xIOTVDT1VQOWJzVUNVbitXT0xlS2xYNDNUOHNlWlUvTEV0SWhISkgydUs1STg5dS9INzRZODFwK09QTmNmaWo4MVZxSW5SbFRpVmtHaFlIUG1ndVhUKzJCd0ppK1dQYlVHQ1FQNVlVL0xIZHRiT0RIZ05MZFpjZjNtR3UxaisyQmJERmNnZmEwbisyRVVaTGlQaElkVTFYM1ZKL3RqN1lJRXlHZHRsVGNrZjI3Y3V4NXBuWlo2MEZ5SDJzaHorV0V2eXg5NHZUaTNKSDl2ZllENWVCYUEwbU00R295M1NZQ2JsajdWbVhaUW9SNWh4SXlIR1huRmI4c2VPekI5clNmN1lCZGI4Y3AyczB5Wm4zaFYvckNYNVkrOFkvb3dSUnpqOHA4VS9LYjJWK0w5SC9EUDRZL3Zndit1Q0FDbGVuQ2ZJSkgrc2dIbnd4RTUyV3Y1WXNpVm1udmlYVGxaQTRuUmkvRS9MSDJ0TC90aG14TlFYczJGQkNhaXB0a2RjaGZRU1g2Q1BhdHdQdkhaTWFnZTdzbll0K3dONnIvS3U0QTdlaXhobHl5N2dtZ1grZm13Z3ZSTnNKY2F0RXZmR2NCYzE3N1hOdGFycHhTQjFyWnlyQytWQXpScW9XUTdnTnZnejBtTjFHZWx4NFcrN2RNNUFiMmFTS2JHZTlPek8zYlpZTzFWS3hzWmc5VlA2aktrY09MZDFXc1prVTU0QVNqK2J3NTZQVHBSK2plWENkN0VUM2E0WnZjaGVUYXVUMHJuRVc2SkpMcllnZWZXU1pST2tUZ3NTRWFoZ1VWaTArMHJ4Ynlod2RYck1JRnNhaXpKeXgzR1haS01BZHdaVThKd0d5Y3RacHFra1FxVk53bTJFdzFTa2xnNkxsa0srcldMbWFKbU1BOVhSUk1IRkIxRUVQU3hJMXZqVG9uRWpCalhOSXc0Y1l5alVxTFpBM1BSZ3pwaHVCbE9heHFrTXNzdXhaakFPaTFhRHh3ekc4OHVqc1p6RE9NMDVZNEZ6R0lmRnd5SDk2Y3h4SWdJWTllUWtuWEhBNUpoNkpEaFlTSHcraDVHem5BMFVTSy9uMUdlMmh1SGc2WnpUa0NEby9zb1NHZ1FkWDFqQ0JRTTkzcFkxWm5SVU1nUEdobWdXRTdodThCQkJoNnpPbU95SjVjWEE2bUoyTnhKTGFuU3AyYmdvUXA0dWh3d1EwNjE4Qjd0ZHNKU3hSZFJzdms3VFpEYXZsbC9vS283eDF4MnhzbEJzMFVMTmVxMnRDMXV4YlNTNDc3V2NpNDZtcmx4Z0ZDNDROVmtwN3Z6bGJuMmFhWmg3K2pYeHduZ3gvbWtPWVU4N0YrdG9ybWxFRnBSWnVDYlZ0cVJydXNVMW1WTzZwb1c4SmI3ODdpUVdPOWhZeVV5M1BxczFMSm1aSW5tbTBKRXVKWjhwS3NKMGErcWhKMTVkZEc4clhKcmNXRnlCdGpKVzZaSzBsVHBicVNsT21kcFdibnNudW1oTFVVdXYyTE83elZXNW1Jcm90OU9jamhzdlcvWkxXd1daVkhzcWF5eXpVWlVlTDZBWlpCZ3RyNlcxYkRxTFkxblZRVVMzV0FrOUxsTG84ZUx2WVZKUW10OU53Wm9oTXQva3d1ZXhxNG1DOUJpRnlQU2g2WHAxMXNpZzdjV3ZNNmsxc2dTOUVhZGdGN2pnSE43VmZGaVpYOUNkNEdReHZVNlNPaGtPMWx2blJZZUthRm1BNHZIdVRWV1JXODU2SzYxbzZhTWh2c2Y4Y3h4REYyUFlIVjVRSWw4elEyRmlJanhXcDNnUVhUNk1tMkw0ZHpsK3VIa0MzZXFIVmRhdTBoc2NNVHhNQUlwRkwrZCtRY2o4QVRZQjZ2Ri8mbHQ7L2RpYWdyYW0mZ3Q7Jmx0Oy9teGZpbGUmZ3Q7IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyI+PGRlZnMvPjxnPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2MTAiIGhlaWdodD0iNDAwIiByeD0iMjAiIHJ5PSIyMCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMzAiIHk9IjIwMCIgd2lkdGg9IjQ4MCIgaGVpZ2h0PSIxODAiIHJ4PSI5IiByeT0iOSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMzAiIHk9IjQwIiB3aWR0aD0iNDgwIiBoZWlnaHQ9IjEyMCIgcng9IjYiIHJ5PSI2IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMwMDAwMDAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1MCIgeT0iMTMwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjIwIiByeD0iMyIgcnk9IjMiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAyMzhweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAxNDBweDsgbWFyZ2luLWxlZnQ6IDUxcHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+QWdlbnQ8L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMTcwIiB5PSIxNDQiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5BZ2VudDwvdGV4dD48L3N3aXRjaD48L2c+PGVsbGlwc2UgY3g9IjI3NSIgY3k9IjMxNyIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMwMDAwMDAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDI3MCAzMTcgTCAyODAgMzE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMjc1IDMxMiBMIDI3NSAzMjIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAxNzAgMTUwIEwgODAgMTUwIEwgODAgMjMwIEwgMjc1IDIzMCBMIDI3NSAzMDkuMzgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSAyNzUgMzEwLjg4IEwgMjc0IDMwOC44OCBMIDI3NSAzMDkuMzggTCAyNzYgMzA4Ljg4IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMzMwIiB5PSIyMzAiIHdpZHRoPSIxMzAiIGhlaWdodD0iMTUwIiByeD0iMTkuNSIgcnk9IjE5LjUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgdHJhbnNmb3JtPSJyb3RhdGUoOTAsMzk1LDMwNSkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgZmxleC1zdGFydDsgd2lkdGg6IDgzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjUycHg7IG1hcmdpbi1sZWZ0OiAzMzJweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogbGVmdDsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxN3B4Ij48Yj5WZWNCdWZmZXI8L2I+PC9zcGFuPjwvZm9udD48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMzMyIiB5PSIyNTYiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTJweCI+VmVjQnVmZmVyPC90ZXh0Pjwvc3dpdGNoPjwvZz48ZWxsaXBzZSBjeD0iNDU1IiBjeT0iMzE3IiByeD0iNSIgcnk9IjUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gNDUwIDMxNyBMIDQ2MCAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSA0NTUgMzEyIEwgNDU1IDMyMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIzNjgiIHk9IjI3MCIgd2lkdGg9IjU1IiBoZWlnaHQ9IjE0IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMwMDAwMDAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogNTNweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAyNzdweDsgbWFyZ2luLWxlZnQ6IDM2OXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxzcGFuPjxmb250IHN0eWxlPSJmb250LXNpemU6IDExcHgiPkJ1ZiAxPC9mb250Pjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMzk1IiB5PSIyODEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5CdWYgMTwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzY4IiB5PSIyOTAiIHdpZHRoPSI1NSIgaGVpZ2h0PSIxNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDUzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjk3cHg7IG1hcmdpbi1sZWZ0OiAzNjlweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB4Ij5CdWYgMjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMzk1IiB5PSIzMDEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5CdWYgMjwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzY4IiB5PSIzMTAiIHdpZHRoPSI1NSIgaGVpZ2h0PSIxNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDUzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzE3cHg7IG1hcmdpbi1sZWZ0OiAzNjlweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O2NvdXJpZXIgbmV3JnF1b3Q7IDsgZm9udC1zaXplOiAxMXB4IDsgdGV4dC1hbGlnbjogY2VudGVyIj5CdWYgMzwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMzk1IiB5PSIzMjEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5CdWYgMzwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzg4LjUiIHk9IjMxMCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjU1IiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKDI3MCwzOTUuNSwzMzcuNSkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKDkwIDM5NS41MDAwMDAwMDAwMDAyIDMzNy41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDEycHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzM4cHg7IG1hcmdpbi1sZWZ0OiAzOTBweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+wrfCt8K3PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjM5NiIgeT0iMzQxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPsK3wrfCtzwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzY4IiB5PSIzNTAiIHdpZHRoPSI1NSIgaGVpZ2h0PSIxNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDUzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzU3cHg7IG1hcmdpbi1sZWZ0OiAzNjlweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O2NvdXJpZXIgbmV3JnF1b3Q7IDsgZm9udC1zaXplOiAxMXB4IDsgdGV4dC1hbGlnbjogY2VudGVyIj5CdWYgbjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMzk1IiB5PSIzNjEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5CdWYgbjwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzg4LjUiIHk9IjMxMCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjU1IiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKDI3MCwzOTUuNSwzMzcuNSkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKDkwIDM5NS41MDAwMDAwMDAwMDAyIDMzNy41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDEycHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzM4cHg7IG1hcmdpbi1sZWZ0OiAzOTBweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+wrfCt8K3PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjM5NiIgeT0iMzQxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPsK3wrfCtzwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzg4LjUiIHk9IjMxMCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjU1IiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKDI3MCwzOTUuNSwzMzcuNSkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKDkwIDM5NS41MDAwMDAwMDAwMDAyIDMzNy41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDEycHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzM4cHg7IG1hcmdpbi1sZWZ0OiAzOTBweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+wrfCt8K3PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjM5NiIgeT0iMzQxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPsK3wrfCtzwvdGV4dD48L3N3aXRjaD48L2c+PHBhdGggZD0iTSAzNjUuMzggMjc3IEwgMzUwIDI3NyBMIDM1MCAzMTcgTCAzNDAgMzE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gMzY2Ljg4IDI3NyBMIDM2NC44OCAyNzggTCAzNjUuMzggMjc3IEwgMzY0Ljg4IDI3NiBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMzY1LjM4IDMxNyBMIDM0MCAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSAzNjYuODggMzE3IEwgMzY0Ljg4IDMxOCBMIDM2NS4zOCAzMTcgTCAzNjQuODggMzE2IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAzNjUuMzggMzU3IEwgMzUwIDM1NyBMIDM1MCAzMTcgTCAzNDAgMzE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gMzY2Ljg4IDM1NyBMIDM2NC44OCAzNTggTCAzNjUuMzggMzU3IEwgMzY0Ljg4IDM1NiBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMzY1LjM4IDMzNy41MSBMIDM1MCAzMzcuNTcgTCAzNTAgMzE3IEwgMzQwIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDM2Ni44OCAzMzcuNSBMIDM2NC44OSAzMzguNTEgTCAzNjUuMzggMzM3LjUxIEwgMzY0Ljg4IDMzNi41MSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMzY1LjM4IDI5NyBMIDM1MCAyOTcgTCAzNTAgMzE3IEwgMzQwIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDM2Ni44OCAyOTcgTCAzNjQuODggMjk4IEwgMzY1LjM4IDI5NyBMIDM2NC44OCAyOTYgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDQyMyAyNzcgTCA0NDAgMjc3IEwgNDQwIDMxNyBMIDQ0OC4xMyAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSA0NDguODggMzE3IEwgNDQ3Ljg4IDMxNy41IEwgNDQ4LjEzIDMxNyBMIDQ0Ny44OCAzMTYuNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gNDIzIDI5NyBMIDQ0MCAyOTcgTCA0NDAgMzE3IEwgNDQ4LjEzIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDQ0OC44OCAzMTcgTCA0NDcuODggMzE3LjUgTCA0NDguMTMgMzE3IEwgNDQ3Ljg4IDMxNi41IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSA0MjMgMzE3IEwgNDQ4LjEzIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDQ0OC44OCAzMTcgTCA0NDcuODggMzE3LjUgTCA0NDguMTMgMzE3IEwgNDQ3Ljg4IDMxNi41IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSA0MjMgMzM3LjUgTCA0NDAgMzM3LjU3IEwgNDQwIDMxNyBMIDQ0OC4xMyAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSA0NDguODggMzE3IEwgNDQ3Ljg4IDMxNy41IEwgNDQ4LjEzIDMxNyBMIDQ0Ny44OCAzMTYuNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gNDIzIDM1NyBMIDQ0MCAzNTcgTCA0NDAgMzE3IEwgNDQ4LjEzIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDQ0OC44OCAzMTcgTCA0NDcuODggMzE3LjUgTCA0NDguMTMgMzE3IEwgNDQ3Ljg4IDMxNi41IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAzMzUuMiAzMTIuMSBMIDMzOS45IDMxNi44IEMgMzM5Ljk2IDMxNi44NCAzNDAgMzE2LjkyIDM0MCAzMTcgQyAzNDAgMzE3LjA4IDMzOS45NiAzMTcuMTYgMzM5LjkgMzE3LjIgTCAzMzUuMiAzMjEuOSBDIDMzNS4xNiAzMjEuOTYgMzM1LjA4IDMyMiAzMzUgMzIyIEMgMzM0LjkyIDMyMiAzMzQuODQgMzIxLjk2IDMzNC44IDMyMS45IEwgMzMwLjEgMzE3LjIgQyAzMzAuMDQgMzE3LjE2IDMzMCAzMTcuMDggMzMwIDMxNyBDIDMzMCAzMTYuOTIgMzMwLjA0IDMxNi44NCAzMzAuMSAzMTYuOCBMIDMzNC44IDMxMi4xIEMgMzM0Ljg0IDMxMi4wNCAzMzQuOTIgMzEyIDMzNSAzMTIgQyAzMzUuMDggMzEyIDMzNS4xNiAzMTIuMDQgMzM1LjIgMzEyLjEgWiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDMzMCAzMTcgTCAzNDAgMzE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjYiIHk9IjI2OCIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKC05MCw0MS41LDI3MykiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKC05MCA0MS41IDI3MykiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjczcHg7IG1hcmdpbi1sZWZ0OiA0MnB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxpPjxmb250IHN0eWxlPSJmb250LXNpemU6IDEwcHgiPmVudi5zdGVwKCk8L2ZvbnQ+PC9pPjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSI0MiIgeT0iMjc2IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTFweCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9ImJvbGQiPmVudi5zdGVwKCk8L3RleHQ+PC9zd2l0Y2g+PC9nPjxwYXRoIGQ9Ik0gMjgwIDMxNyBMIDMyOC4xMyAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSAzMjguODggMzE3IEwgMzI3Ljg4IDMxNy41IEwgMzI4LjEzIDMxNyBMIDMyNy44OCAzMTYuNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjI3MCIgeT0iMzEzIiB3aWR0aD0iNzEiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwLDMwNS41LDMxOCkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKC05MCAzMDUuNDk5OTk5OTk5OTk5OCAzMTgpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDMxOHB4OyBtYXJnaW4tbGVmdDogMzA1cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHdoaXRlLXNwYWNlOiBub3dyYXA7ICI+PGZvbnQgc3R5bGU9ImZvbnQtc2l6ZTogMTBweCI+YmF0Y2g8L2ZvbnQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjMwNSIgeT0iMzIxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTFweCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9ImJvbGQiPmJhdGNoPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSIyNTQiIHk9IjMxMyIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKC05MCwyODkuNSwzMTgpIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KXJvdGF0ZSgtOTAgMjg5LjQ5OTk5OTk5OTk5OTggMzE4KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAzMThweDsgbWFyZ2luLWxlZnQ6IDI4OXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxpPjxmb250IHN0eWxlPSJmb250LXNpemU6IDEwcHgiPmJ1ZmZlci5hZGQoKTwvZm9udD48L2k+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjI4OSIgeT0iMzIxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTFweCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9ImJvbGQiPmJ1ZmZlci5hZGQoKTwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNDYzIiB5PSIyNTgiIHdpZHRoPSI3MSIgaGVpZ2h0PSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InJvdGF0ZSgtOTAsNDk4LjUsMjYzKSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSlyb3RhdGUoLTkwIDQ5OC40OTk5OTk5OTk5OTk4IDI2MykiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjYzcHg7IG1hcmdpbi1sZWZ0OiA0OThweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyBmb250LXdlaWdodDogYm9sZDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj48Zm9udCBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij5iYXRjaDwvZm9udD48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNDk4IiB5PSIyNjYiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+YmF0Y2g8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjQ0NyIgeT0iMjU4IiB3aWR0aD0iNzEiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwLDQ4Mi41LDI2MykiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKC05MCA0ODIuNSAyNjMpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDI2M3B4OyBtYXJnaW4tbGVmdDogNDgzcHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHdoaXRlLXNwYWNlOiBub3dyYXA7ICI+PGk+PGZvbnQgc3R5bGU9ImZvbnQtc2l6ZTogMTBweCI+YnVmZmVyLnNhbXBsZSgpPC9mb250PjwvaT48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNDgzIiB5PSIyNjYiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+YnVmZmVyLnNhbXBsZS4uLjwvdGV4dD48L3N3aXRjaD48L2c+PHBhdGggZD0iTSA0NjAgMzE3IEwgNDkwIDMxNyBMIDQ5MCAxOTAgTCA0MDUuNDMgMTkwIEwgNDA1LjUyIDkxLjkzIiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gNDA1LjUyIDkxLjE4IEwgNDA2LjAyIDkyLjE4IEwgNDA1LjUyIDkxLjkzIEwgNDA1LjAyIDkyLjE4IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNTAiIHk9IjcwIiB3aWR0aD0iNDQwIiBoZWlnaHQ9IjIwIiByeD0iMyIgcnk9IjMiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiA0MzhweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiA4MHB4OyBtYXJnaW4tbGVmdDogNTFweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj5QeXRvcmNoIE1vZHVsZTwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIyNzAiIHk9Ijg0IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+UHl0b3JjaCBNb2R1bGU8L3RleHQ+PC9zd2l0Y2g+PC9nPjxwYXRoIGQ9Ik0gMTcwLjAxIDEyNy4zOCBMIDE3MC4xMSA5Mi44MyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDE3MCAxMjguODggTCAxNjkuMDEgMTI2Ljg4IEwgMTcwLjAxIDEyNy4zOCBMIDE3MS4wMSAxMjYuODkgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDE3MC4xMiA5Mi4wOCBMIDE3MC42MSA5My4wOCBMIDE3MC4xMSA5Mi44MyBMIDE2OS42MSA5My4wOCBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMjAwIDMxNyBMIDI2OC4xMyAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSAyNjguODggMzE3IEwgMjY3Ljg4IDMxNy41IEwgMjY4LjEzIDMxNyBMIDI2Ny44OCAzMTYuNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjM3MiIgeT0iMTM1IiB3aWR0aD0iNzEiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMTQwcHg7IG1hcmdpbi1sZWZ0OiA0MDhweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyBmb250LXdlaWdodDogYm9sZDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj48aT48Zm9udCBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij5wb2xpY3kucHJvY2Vzc19mbigpPC9mb250PjwvaT48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNDA4IiB5PSIxNDMiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+cG9saWN5LnByb2Nlcy4uLjwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzcwIiB5PSIxMTAiIHdpZHRoPSI3MSIgaGVpZ2h0PSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAxMTVweDsgbWFyZ2luLWxlZnQ6IDQwNXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxpPjxmb250IHN0eWxlPSJmb250LXNpemU6IDEwcHgiPnBvbGljeS5sZWFybigpPC9mb250PjwvaT48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNDA1IiB5PSIxMTgiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+cG9saWN5LmxlYXJuKCk8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjcwIiB5PSIyMzAiIHdpZHRoPSIxMzAiIGhlaWdodD0iMTUwIiByeD0iMTkuNSIgcnk9IjE5LjUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgdHJhbnNmb3JtPSJyb3RhdGUoOTAsMTM1LDMwNSkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgZmxleC1zdGFydDsgd2lkdGg6IDg4cHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjUycHg7IG1hcmdpbi1sZWZ0OiA3MnB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBsZWZ0OyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDE3cHgiPjxiPlZlY0VudjwvYj48L3NwYW4+PC9mb250PjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSI3MiIgeT0iMjU2IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiPlZlY0VudjwvdGV4dD48L3N3aXRjaD48L2c+PGVsbGlwc2UgY3g9IjE5NSIgY3k9IjMxNyIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMwMDAwMDAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDE5MCAzMTcgTCAyMDAgMzE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMTk1IDMxMiBMIDE5NSAzMjIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMTA4IiB5PSIyNzAiIHdpZHRoPSI1NSIgaGVpZ2h0PSIxNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDUzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjc3cHg7IG1hcmdpbi1sZWZ0OiAxMDlweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3Bhbj48Zm9udCBzdHlsZT0iZm9udC1zaXplOiAxMXB4Ij5FbnYgMTwvZm9udD48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjEzNSIgeT0iMjgxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+RW52IDE8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjEwOCIgeT0iMjkwIiB3aWR0aD0iNTUiIGhlaWdodD0iMTQiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiA1M3B4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDI5N3B4OyBtYXJnaW4tbGVmdDogMTA5cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFweCI+RW52IDI8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjEzNSIgeT0iMzAxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+RW52IDI8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjEwOCIgeT0iMzEwIiB3aWR0aD0iNTUiIGhlaWdodD0iMTQiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiA1M3B4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDMxN3B4OyBtYXJnaW4tbGVmdDogMTA5cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtjb3VyaWVyIG5ldyZxdW90OyA7IGZvbnQtc2l6ZTogMTFweCA7IHRleHQtYWxpZ246IGNlbnRlciI+RW52IDM8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjEzNSIgeT0iMzIxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+RW52IDM8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjEyOC41IiB5PSIzMTAiIHdpZHRoPSIxNCIgaGVpZ2h0PSI1NSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InJvdGF0ZSgyNzAsMTM1LjUsMzM3LjUpIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KXJvdGF0ZSg5MCAxMzUuNTAwMDAwMDAwMDAwMjMgMzM3LjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMTJweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAzMzhweDsgbWFyZ2luLWxlZnQ6IDEzMHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj7Ct8K3wrc8L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMTM2IiB5PSIzNDEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+wrfCt8K3PC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSIxMDgiIHk9IjM1MCIgd2lkdGg9IjU1IiBoZWlnaHQ9IjE0IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMwMDAwMDAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogNTNweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAzNTdweDsgbWFyZ2luLWxlZnQ6IDEwOXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7Y291cmllciBuZXcmcXVvdDsgOyBmb250LXNpemU6IDExcHggOyB0ZXh0LWFsaWduOiBjZW50ZXIiPkVudiBuPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIxMzUiIHk9IjM2MSIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPkVudiBuPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSIxMjguNSIgeT0iMzEwIiB3aWR0aD0iMTQiIGhlaWdodD0iNTUiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJyb3RhdGUoMjcwLDEzNS41LDMzNy41KSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSlyb3RhdGUoOTAgMTM1LjUwMDAwMDAwMDAwMDIzIDMzNy41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDEycHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzM4cHg7IG1hcmdpbi1sZWZ0OiAxMzBweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+wrfCt8K3PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjEzNiIgeT0iMzQxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPsK3wrfCtzwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMTI4LjUiIHk9IjMxMCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjU1IiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKDI3MCwxMzUuNSwzMzcuNSkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKDkwIDEzNS41MDAwMDAwMDAwMDAyMyAzMzcuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxMnB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDMzOHB4OyBtYXJnaW4tbGVmdDogMTMwcHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPsK3wrfCtzwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIxMzYiIHk9IjM0MSIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7Ct8K3wrc8L3RleHQ+PC9zd2l0Y2g+PC9nPjxwYXRoIGQ9Ik0gMTA1LjM4IDI3NyBMIDkwIDI3NyBMIDkwIDMxNyBMIDgwIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDEwNi44OCAyNzcgTCAxMDQuODggMjc4IEwgMTA1LjM4IDI3NyBMIDEwNC44OCAyNzYgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDEwNS4zOCAzMTcgTCA4MCAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSAxMDYuODggMzE3IEwgMTA0Ljg4IDMxOCBMIDEwNS4zOCAzMTcgTCAxMDQuODggMzE2IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAxMDUuMzggMzU3IEwgOTAgMzU3IEwgOTAgMzE3IEwgODAgMzE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gMTA2Ljg4IDM1NyBMIDEwNC44OCAzNTggTCAxMDUuMzggMzU3IEwgMTA0Ljg4IDM1NiBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMTA1LjM4IDMzNy41MSBMIDkwIDMzNy41NyBMIDkwIDMxNyBMIDgwIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDEwNi44OCAzMzcuNSBMIDEwNC44OSAzMzguNTEgTCAxMDUuMzggMzM3LjUxIEwgMTA0Ljg4IDMzNi41MSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMTA1LjM4IDI5NyBMIDkwIDI5NyBMIDkwIDMxNyBMIDgwIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDEwNi44OCAyOTcgTCAxMDQuODggMjk4IEwgMTA1LjM4IDI5NyBMIDEwNC44OCAyOTYgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDE2MyAyNzcgTCAxODAgMjc3IEwgMTgwIDMxNyBMIDE4OC4xMyAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSAxODguODggMzE3IEwgMTg3Ljg4IDMxNy41IEwgMTg4LjEzIDMxNyBMIDE4Ny44OCAzMTYuNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMTYzIDI5NyBMIDE4MCAyOTcgTCAxODAgMzE3IEwgMTg4LjEzIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDE4OC44OCAzMTcgTCAxODcuODggMzE3LjUgTCAxODguMTMgMzE3IEwgMTg3Ljg4IDMxNi41IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAxNjMgMzE3IEwgMTg4LjEzIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDE4OC44OCAzMTcgTCAxODcuODggMzE3LjUgTCAxODguMTMgMzE3IEwgMTg3Ljg4IDMxNi41IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAxNjMgMzM3LjUgTCAxODAgMzM3LjU3IEwgMTgwIDMxNyBMIDE4OC4xMyAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSAxODguODggMzE3IEwgMTg3Ljg4IDMxNy41IEwgMTg4LjEzIDMxNyBMIDE4Ny44OCAzMTYuNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMTYzIDM1NyBMIDE4MCAzNTcgTCAxODAgMzE3IEwgMTg4LjEzIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDE4OC44OCAzMTcgTCAxODcuODggMzE3LjUgTCAxODguMTMgMzE3IEwgMTg3Ljg4IDMxNi41IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSA3NS4yIDMxMi4xIEwgNzkuOSAzMTYuOCBDIDc5Ljk2IDMxNi44NCA4MCAzMTYuOTIgODAgMzE3IEMgODAgMzE3LjA4IDc5Ljk2IDMxNy4xNiA3OS45IDMxNy4yIEwgNzUuMiAzMjEuOSBDIDc1LjE2IDMyMS45NiA3NS4wOCAzMjIgNzUgMzIyIEMgNzQuOTIgMzIyIDc0Ljg0IDMyMS45NiA3NC44IDMyMS45IEwgNzAuMSAzMTcuMiBDIDcwLjA0IDMxNy4xNiA3MCAzMTcuMDggNzAgMzE3IEMgNzAgMzE2LjkyIDcwLjA0IDMxNi44NCA3MC4xIDMxNi44IEwgNzQuOCAzMTIuMSBDIDc0Ljg0IDMxMi4wNCA3NC45MiAzMTIgNzUgMzEyIEMgNzUuMDggMzEyIDc1LjE2IDMxMi4wNCA3NS4yIDMxMi4xIFoiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSA3MCAzMTcgTCA4MCAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAyMDAgMzE3IEwgMjU0LjcxIDMxNyBMIDI1NC43MiAyMzMgQyAyNTguNjIgMjMzIDI1OC42MiAyMjcgMjU0LjcyIDIyNyBMIDI1NC43MiAyMjcgTCAyNTQuNzIgMTUxLjIxIiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gMjU0LjcyIDE1MC40NiBMIDI1NS4yMiAxNTEuNDYgTCAyNTQuNzIgMTUxLjIxIEwgMjU0LjIyIDE1MS40NiBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gNzkuNTIgMTUwLjY4IEwgNzkuNTcgMjMwIEwgNTAgMjMwIEwgNTAgMzE3IEwgNjguMTMgMzE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gNjguODggMzE3IEwgNjcuODggMzE3LjUgTCA2OC4xMyAzMTcgTCA2Ny44OCAzMTYuNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjEzOSIgeT0iMTEzIiB3aWR0aD0iNzEiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMTE4cHg7IG1hcmdpbi1sZWZ0OiAxNzRweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyBmb250LXdlaWdodDogYm9sZDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij5iYXRjaDwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMTc0IiB5PSIxMjEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+YmF0Y2g8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjEzOSIgeT0iOTciIHdpZHRoPSI3MSIgaGVpZ2h0PSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAxMDJweDsgbWFyZ2luLWxlZnQ6IDE3NHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxpPjxmb250IHN0eWxlPSJmb250LXNpemU6IDEwcHgiPnBvbGljeS5mb3J3YXJkKCk8L2ZvbnQ+PC9pPjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIxNzQiIHk9IjEwNSIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSJib2xkIj5wb2xpY3kuZm9yd2FyLi4uPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSIyMDEiIHk9IjMxMiIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKC05MCwyMzYuNSwzMTcpIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KXJvdGF0ZSgtOTAgMjM2LjUgMzE3KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAzMTdweDsgbWFyZ2luLWxlZnQ6IDIzN3B4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDEwcHgiPm9ic2VydmF0aW9uczwvZm9udD48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMjM3IiB5PSIzMjAiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+b2JzZXJ2YXRpb25zPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSIxODUiIHk9IjMxMiIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKC05MCwyMjAuNSwzMTcpIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KXJvdGF0ZSgtOTAgMjIwLjQ5OTk5OTk5OTk5OTc3IDMxNykiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzE3cHg7IG1hcmdpbi1sZWZ0OiAyMjBweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyBmb250LXdlaWdodDogYm9sZDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj48aT48Zm9udCBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij5lbnYuc3RlcCgpPC9mb250PjwvaT48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMjIwIiB5PSIzMjAiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+ZW52LnN0ZXAoKTwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMjIzIiB5PSIxNzgiIHdpZHRoPSI3MSIgaGVpZ2h0PSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAxODNweDsgbWFyZ2luLWxlZnQ6IDI1OHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxpPjxmb250IHN0eWxlPSJmb250LXNpemU6IDEwcHgiPmNvbGxlY3Rvci5jb2xsZWN0KCk8L2ZvbnQ+PC9pPjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIyNTgiIHk9IjE4NiIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSJib2xkIj5jb2xsZWN0b3IuY29sLi4uPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSI1MCIgeT0iMTg2IiB3aWR0aD0iNzEiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMTkxcHg7IG1hcmdpbi1sZWZ0OiA4NXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHgiPmFjdGlvbnM8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9Ijg1IiB5PSIxOTQiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+YWN0aW9uczwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNTAiIHk9IjE3MCIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDE3NXB4OyBtYXJnaW4tbGVmdDogODVweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyBmb250LXdlaWdodDogYm9sZDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj48aT48Zm9udCBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij5jb2xsZWN0b3IuY29sbGVjdCgpPC9mb250PjwvaT48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iODUiIHk9IjE3OCIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSJib2xkIj5jb2xsZWN0b3IuY29sLi4uPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSI1MCIgeT0iMjEwIiB3aWR0aD0iNzEiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjE1cHg7IG1hcmdpbi1sZWZ0OiA4NXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDE3cHgiPkNvbGxlY3RvcjwvZm9udD48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iODUiIHk9IjIxOCIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSJib2xkIj5Db2xsZWN0b3I8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjQwIiB5PSI1MCIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDU1cHg7IG1hcmdpbi1sZWZ0OiA3NXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDE3cHgiPlBvbGljeTwvZm9udD48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNzUiIHk9IjU4IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTFweCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9ImJvbGQiPlBvbGljeTwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNTUwIiB5PSI0MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjM0MCIgcng9IjIiIHJ5PSIyIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMwMDAwMDAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1MzUiIHk9IjIwNSIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKC05MCw1NzAuNSwyMTApIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KXJvdGF0ZSgtOTAgNTcwLjQ5OTk5OTk5OTk5OTggMjEwKSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAyMTBweDsgbWFyZ2luLWxlZnQ6IDU3MHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDE3cHgiPkxvZ2dlcjwvZm9udD48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNTcwIiB5PSIyMTMiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+TG9nZ2VyPC90ZXh0Pjwvc3dpdGNoPjwvZz48cGF0aCBkPSJNIDUxMCAyOTAgTCA1NDcuMzggMjg5LjkxIiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gNTQ4Ljg4IDI4OS45MSBMIDU0Ni44OSAyOTAuOTIgTCA1NDcuMzggMjg5LjkxIEwgNTQ2Ljg4IDI4OC45MiBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDE1cHg7IG1hcmdpbi1sZWZ0OiA0NXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDE3cHgiPlRyYWluZXI8L2ZvbnQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjQ1IiB5PSIxOCIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSJib2xkIj5UcmFpbmVyPC90ZXh0Pjwvc3dpdGNoPjwvZz48cGF0aCBkPSJNIDUxMCAxMDAgTCA1NDcuMzggOTkuODYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSA1NDguODggOTkuODUgTCA1NDYuODkgMTAwLjg2IEwgNTQ3LjM4IDk5Ljg2IEwgNTQ2Ljg3IDk4Ljg2IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNDk4IiB5PSIyODgiIHdpZHRoPSI3MSIgaGVpZ2h0PSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InJvdGF0ZSgtOTAsNTMzLjUsMjkzKSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSlyb3RhdGUoLTkwIDUzMy40OTk5OTk5OTk5OTk4IDI5MykiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjkzcHg7IG1hcmdpbi1sZWZ0OiA1MzNweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyBmb250LXdlaWdodDogYm9sZDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij5zdGF0aXN0aWNzPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSI1MzMiIHk9IjI5NiIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSJib2xkIj5zdGF0aXN0aWNzPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSI0OTgiIHk9Ijk4IiB3aWR0aD0iNzEiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwLDUzMy41LDEwMykiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKC05MCA1MzMuNDk5OTk5OTk5OTk5OCAxMDMpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDEwM3B4OyBtYXJnaW4tbGVmdDogNTMzcHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHdoaXRlLXNwYWNlOiBub3dyYXA7ICI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBweCI+c3RhdGlzdGljczwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNTMzIiB5PSIxMDYiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+c3RhdGlzdGljczwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNDE2IiB5PSIxNzUiIHdpZHRoPSI3MSIgaGVpZ2h0PSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAxODBweDsgbWFyZ2luLWxlZnQ6IDQ1MnB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxpPjxmb250IHN0eWxlPSJmb250LXNpemU6IDEwcHgiPnBvbGljeS51cGRhdGUoKTwvZm9udD48L2k+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjQ1MiIgeT0iMTgzIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTFweCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9ImJvbGQiPnBvbGljeS51cGRhdGUuLi48L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjM3NSIgeT0iNDE1IiB3aWR0aD0iNjAiIGhlaWdodD0iMjAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBmbGV4LXN0YXJ0OyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDQyNXB4OyBtYXJnaW4tbGVmdDogMzc3cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGxlZnQ7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPnNwbGl0IGRhdGE8L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMzc3IiB5PSI0MjkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTJweCI+c3BsaXQgZGF0YTwvdGV4dD48L3N3aXRjaD48L2c+PHBhdGggZD0iTSAzNTAuNjEgNDEwLjMxIEwgMzY0LjY5IDQyNC4zOSBDIDM2NC44OSA0MjQuNTMgMzY1IDQyNC43NiAzNjUgNDI1IEMgMzY1IDQyNS4yNCAzNjQuODkgNDI1LjQ3IDM2NC42OSA0MjUuNjEgTCAzNTAuNjEgNDM5LjY5IEMgMzUwLjQ3IDQzOS44OSAzNTAuMjQgNDQwIDM1MCA0NDAgQyAzNDkuNzYgNDQwIDM0OS41MyA0MzkuODkgMzQ5LjM5IDQzOS42OSBMIDMzNS4zMSA0MjUuNjEgQyAzMzUuMTEgNDI1LjQ3IDMzNSA0MjUuMjQgMzM1IDQyNSBDIDMzNSA0MjQuNzYgMzM1LjExIDQyNC41MyAzMzUuMzEgNDI0LjM5IEwgMzQ5LjM5IDQxMC4zMSBDIDM0OS41MyA0MTAuMTEgMzQ5Ljc2IDQxMCAzNTAgNDEwIEMgMzUwLjI0IDQxMCAzNTAuNDcgNDEwLjExIDM1MC42MSA0MTAuMzEgWiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDMzNSA0MjUgTCAzNjUgNDI1IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxlbGxpcHNlIGN4PSIxNDAiIGN5PSI0MjUiIHJ4PSIxNS4wMDAwMDAwMDAwMDAwMDIiIHJ5PSIxNS4wMDAwMDAwMDAwMDAwMDIiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMTI1IDQyNSBMIDE1NSA0MjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAxNDAgNDEwIEwgMTQwIDQ0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIxNjUiIHk9IjQxNSIgd2lkdGg9IjExMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGZsZXgtc3RhcnQ7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogNDI1cHg7IG1hcmdpbi1sZWZ0OiAxNjdweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogbGVmdDsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3dyYXA7ICI+Y29uY2F0ZW5hdGUgZGF0YTwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIxNjciIHk9IjQyOSIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4Ij5jb25jYXRlbmF0ZSBkYXRhPC90ZXh0Pjwvc3dpdGNoPjwvZz48L2c+PHN3aXRjaD48ZyByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiLz48YSB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLC01KSIgeGxpbms6aHJlZj0iaHR0cHM6Ly93d3cuZGlhZ3JhbXMubmV0L2RvYy9mYXEvc3ZnLWV4cG9ydC10ZXh0LXByb2JsZW1zIiB0YXJnZXQ9Il9ibGFuayI+PHRleHQgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMHB4IiB4PSI1MCUiIHk9IjEwMCUiPlZpZXdlciBkb2VzIG5vdCBzdXBwb3J0IGZ1bGwgU1ZHIDEuMTwvdGV4dD48L2E+PC9zd2l0Y2g+PC9zdmc+)\n", + "\n" + ], + "metadata": { + "id": "S3-tJZy35Ck_" + } + }, + { + "cell_type": "markdown", + "source": [ + "# Usages\n", + "In Tianshou v0.4.7, there are three types of Trainer. They are designed to be used in on-policy training, off-policy training and offline training respectively. We will use on-policy trainer as an example and leave the other two for further reading." + ], + "metadata": { + "id": "ifsEQMzZ6mmz" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Pseudocode\n", + "![1.PNG](data:image/png;base64,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)\n", + "\n", + "For the on-policy trainer, the main difference is that we clear the buffer after Line 10." + ], + "metadata": { + "id": "XfsuU2AAE52C" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Training without trainer\n", + "As we have learned the usages of the Collector and the Policy, it's possible that we write our own training logic.\n", + "\n", + "First, let us create the instances of Environment, ReplayBuffer, Policy and Collector." + ], + "metadata": { + "id": "Hcp_o0CCFz12" + } + }, + { + "cell_type": "code", + "source": [ + "import gym\n", + "import numpy as np\n", + "import torch\n", + "\n", + "from tianshou.data import Collector, VectorReplayBuffer\n", + "from tianshou.env import DummyVectorEnv\n", + "from tianshou.policy import PGPolicy\n", + "from tianshou.utils.net.common import Net\n", + "from tianshou.utils.net.discrete import Actor\n", + "\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "train_env_num = 4\n", + "buffer_size = 2000 # Since REINFORCE is an on-policy algorithm, we don't need a very large buffer size\n", + "\n", + "# Create the environments, used for training and evaluation\n", + "env = gym.make(\"CartPole-v0\")\n", + "test_envs = DummyVectorEnv([lambda: gym.make(\"CartPole-v0\") for _ in range(2)])\n", + "train_envs = DummyVectorEnv([lambda: gym.make(\"CartPole-v0\") for _ in range(train_env_num)])\n", + "\n", + "# Create the Policy instance\n", + "net = Net(env.observation_space.shape, hidden_sizes=[16,])\n", + "actor = Actor(net, env.action_space.shape)\n", + "optim = torch.optim.Adam(actor.parameters(), lr=0.001)\n", + "policy = PGPolicy(actor, optim, dist_fn=torch.distributions.Categorical)\n", + "\n", + "# Create the replay buffer and the collector\n", + "replaybuffer = VectorReplayBuffer(buffer_size, train_env_num)\n", + "test_collector = Collector(policy, test_envs)\n", + "train_collector = Collector(policy, train_envs, replaybuffer)" + ], + "metadata": { + "id": "do-xZ-8B7nVH" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Now, we can try training our policy network. The logic is simple. We collect some data into the buffer and then we use the data to train our policy." + ], + "metadata": { + "id": "wiEGiBgQIiFM" + } + }, + { + "cell_type": "code", + "source": [ + "train_collector.reset()\n", + "train_envs.reset()\n", + "test_collector.reset()\n", + "test_envs.reset()\n", + "replaybuffer.reset()\n", + "for i in range(10):\n", + " evaluation_result = test_collector.collect(n_episode=10)\n", + " print(\"Evaluation reward is {}\".format(evaluation_result[\"rew\"]))\n", + " train_collector.collect(n_step=2000)\n", + " # 0 means taking all data stored in train_collector.buffer\n", + " policy.update(0, train_collector.buffer, batch_size=512, repeat=1)\n", + " train_collector.reset_buffer(keep_statistics=True)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "# Overview\n", - "Trainer is the highest-level encapsulation in Tianshou. It controls the training loop and the evaluation method. It also controls the interaction between the Collector and the Policy, with the ReplayBuffer serving as the media.\n", - "\n", - "![framework.svg](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2MTFweCIgaGVpZ2h0PSI0NDJweCIgdmlld0JveD0iLTAuNSAtMC41IDYxMSA0NDIiIGNvbnRlbnQ9IiZsdDtteGZpbGUgaG9zdD0mcXVvdDtFbGVjdHJvbiZxdW90OyBtb2RpZmllZD0mcXVvdDsyMDIyLTA0LTE3VDEzOjMzOjA5LjA3N1omcXVvdDsgYWdlbnQ9JnF1b3Q7NS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIGRyYXcuaW8vMTQuNS4xIENocm9tZS84OS4wLjQzODkuODIgRWxlY3Ryb24vMTIuMC4xIFNhZmFyaS81MzcuMzYmcXVvdDsgdmVyc2lvbj0mcXVvdDsxNC41LjEmcXVvdDsgZXRhZz0mcXVvdDtJb3BxY0U2Q2U5NkNiVnNkZ1cteiZxdW90OyB0eXBlPSZxdW90O2RldmljZSZxdW90OyZndDsmbHQ7ZGlhZ3JhbSBpZD0mcXVvdDtFUzR4czlIalFlV1pKWGNuT0VQaSZxdW90OyZndDs3VjFiczVzNEV2NDFydHA5aUl2NzVUSG5KSmw5U0xaT2JhWjJkcDZtT0JqYnpHRGtCWHd1Kyt0WE1wS05RTnlNRUhDc1ZDVXhRbURUL1hXcjFXcDlyUFRIdzlzdmlYZmMvd0NiSUZwcHl1WnRwWDlaYWZDUG9jUC9VTXQ3M3VKb2R0NndTOEpOM3FSZUczNkcvd3R3bzRKYlQrRW1TUE0yM0pRQkVHWGhNYVd1OWtFY0IzNUd0WGxKQWw3cGE3Y2dvci8xNk8wQ3FnZHErT2w3VVZEcDlsdTR5ZmFscDBEdC93akMzWjU4czJxNStabURSenJqRzZkN2J3TmVDMDM2MTVYK21BQ1E1WjhPYjQ5QmhJUkg1SkpmOTYzbTdPV0hKVUdjZGJsQXl5OTQ4YUlUZmpiOHU3SjM4ckM3Qkp5T0svMEI5d3lTTEhoalNkbDdqc3BDdS80SzlmSnNFQlFCT0FSWjhnNjc0QnQ5Y2hSOERRYUVadUxqMTZ0NExhTDlmVUcwQnJuUXd5cmRYVzUrZldyNEFUODRXd2g2dXhDZ0RPSk5nUHFyVUJTdit6QUxmaDQ5SDUxOWhSaUhiZnZzRU9IVGFaYUF2eTdJUUMxYkVHZmZ2RU1Zb2VkN0JLY2tEQkw0QmY4TVh2RkpqSEg0aVBxREY0VzdHQjc0VUhxd0cyeElmSHplYk5KRFVkNGFXOTVDeEdsTUs4NksrUHdJeEFGR3A4SlZuUGdDdlFSZXBRcGV3MkZJVzNVNFNOdThjMmtiWFlXdGNSQzJWUkgyNXgzNjJiT1NPQWNabTdTTVZiMHE1SXZnaTBMbUlXTzdIZERvMlVJNEhILzNub1BvQ2FSaEZnSWtrbWVRWmVBQVJVQTZmTWF5eWtCWjVudnZpRzUyZU51aEVHVzlqY0Nydi9lU2JKMmVEb2N3M3YyeFBjVitmdHVlNnZEU1l4NXpiTU0zQklHSFRaZ0UrRlpmVW5CQ0FueElRT2JocGsrdU1vNFNOWnZXb3E1cUZTMnlCZ0dWZ3hLZGlzNkNEUXloOENGSXNqM1lnZGlMdmw1Ykg2NUdnd1NRL2hWay9oNGYvSGs2SE1uRk1SUVViTHJlNHp0QTJqMnI5YzhneTk2eHUvRk9HYUNWSHJ5RjJYL1FIZGNtUHZxOWNPYkxHLzZ5ODhFN09ZamhreGN1UW9lL0Y4OWRMenNmVWRjOUJVa0lSWWRna1Q5VEJoSDJHUVdnMStjNHQzMExrU1N2ZlVnNGNMN1JobHpoUjE2YWhuN2VpQy9CWFFvWHdPdDNRWGI1YXVSM0lKN3gzUnVoek1ZZ1Vsd3pBcUdlNFozOGdQS1IrYzhvbUhRVnAwa1FRU040b2UvT1F0MzVVaWdGNzczUTRRakNPRXNMZDM1Q0RWZjRPeVVmWnBZaTRlYnVaSmlwNjY3WlpsTi8rQ0gvdlZkcnVUeDRKd055MjcwZ0Njekxhb1BlNXBTa1VLNy9DdEljRmozRzRTN0JmTXY0ckpVa3lSaWhpVEpvdjZOemNEekVlZDBpdUVGQ2NkbENhWDlvZzhORHErMFBMVFFrWVE1NVRGakNRZktMbHhJL3YwbkE4VmZpT0c0ZUZsWGxWbDN3QUNCclNtMUZHWlloU2pkNDJGVmEvejJoZWY0RExjNUxNL3kwdy8rZkwwK1BYa3pwbEhSRTkvMlV5L1F6N0tEYXg3ZjZ1enlUaG44SC9zTnB1MFhmbTUrQlQvWmM3ZzNiOHErdE5PY1BRNXBMWUd1SXRJSms3Y1grSGlRMUtDUllpb0p0eGhzQWJ5dktSN3pUaHdWNE9NYmFkU3pIVlhUWHNFek5jS3RnZ1Qwc0I0NTJEanl2R0tyZE1IeDFoazZIUkFTZmJFd3YrVENDLzR1bDBIRWpEMWZXSVhzZ3cvOGlYdXJWV0JxSURYSGh2OW9oS3pIS0tOd2lFdDJwaU1DeXgwSnlOVmxBZTNMYXBlTEJvZDI3cXl6dkRqMDVPbGZybjJ1OGVXMk1vTFRIQ0JYa2w2M3VFRzQyNTRuZERaT09OdVNiclNPOGFUTDB5a090clB4RXp3RzZRWVdhR0YySlU4a2xLVnF4dk5FMDVOeW9vUzBXQ05JUlBPVWQ4b0ZXaHlFNkZNcEZTUEU1U0tQUG9pdk8vekpWamM5QjhXV2ZzQ3JRU2F5TkdpVG9IeFFKak9uZ2FFaGd6S0lmdGRXRFRmMWJsaWRTRTJzNjlBZ2lGTFdTeE0wMmpLSlNVM2VYeU5JU3JjZGkyUEFhcEJrZE5Rd0lHbXEwUS9JYUtNOUZSUTJNNk0rb3FvdW9jSWk2Tk5iY2ZYbUdHMzlRdzNYRUdhN0dTR2hJdzUydjRUSnlIbEpkODFXWFh0SEZuRlpuVnRlMW1ldEtUY3ZxakxvcXJzMWNsMnB1WHAyNXJyVVVGMmpVVmVNQ0RYNzQ2K3BNL2wxa2RRWWRDVjJkSVFtbDR2Sk1QaTJ0NHJKMjNhV3k5RkZLRHhrMmpVajhoUGsxVjFEMlhiNHBKUy9zNHIzYU9odDJ5UnlHcmNXUWloWnBML2RvTDg0MDluSUxUazJKMDd2RnFWYVQwNSs1WDNjbWRleldyQTJHS2xOUnBNRndOaGh0a1Faak9WTWFUSFVXTnllRGtTUE1xSkVRVm42eHNrdXZXVytidVJFTm1VNTBmQUp1SmpmclVrcjFGcE5UZUp2Y0dLV1U4ekE1UmpGbG5oWHFZWEo5YlVWVisweTl5NzE1dzkrVjhMOWYrRE5HSE9Id254Yi9wTkJLNHY4ZThlOE13My9uRFpEcW5FRjIyM1lOQ2JKZTgrQ0puV3pMckhac0o2dk5HZi9TeVFwSW5FNk0vNVkwNk5qNDcxQjRQbXJSTmJRT3lxSjQ3RUdwRkdKenJiRVdYMU5OTmdwMXFhbSt2YjU4K1A0dnphQUxHMVNyV3RsQWRrdFFlNGN0RGpMcVVYYytwWXhJWlFlWllvZ1VVWDFaZW5oelRickNLbWdPNHBkMW1nWEh2LzI5dlN3OXJDMlN3MVZDWFV1REN2Nm15S3VoTWh6VXBVaW80am9xMEdqbjc4QS9XTDNWeitqTjVVS2ZISHE0NkFRWExsNW4xaG4vWHFFUlBCZ2E0VmhpSTV3eU0wd1pXVnlqdlE3aEUzR21oZWlweDVwQXYrM2VsUmhJTDNFRVZiaHErQlZTNkt3ZEJETWNSalJMbzBTaUs2YTRjWVMxUTUzSHNQSHNJVy9SY2FQcHZZd09OVVZJaEx0Z29zR0IxS3lPSDBzOG4zY3FyNzNOUmtZVHcvRXlXVFJoZENBcW1JTmpOY3dTdXdlRGoyNHN4MHFtbE5LeENqQVVvNW1ZY0RJN1lTVmt4blNzcVhjNFJvSDByY01oTTUxdm5XZVYrcFUveTFHYzRqUkZYU3VLM2pKUldmcjhqTk0wbGVOOGpXU2VpaE0yb3liM01IRENacGJLcVBReXZVNyt1eW9UdHNxTkRLV1VVVFM3emZ6Nkp1VU50MHlZMTV5VkwvZFgzV2JPTUVPeG12b1BUdU1iMWV6bjAzc0dFalRxS3ovQTVnU0JXWFlSSDR5cDBxN0dhY1pZUkpYR3g2c2VWOWFhZmZISjJFa2JGNjh0dGlSV3RQUEczcWg2Si9WbVo4dW8zaHZzYXp1ajgwTW5idTlwbmJzdHlyZ05teVlqRUJqSzA5a1ptL1VNTFp5bk4wY1FoZjc3K3BnQVAwalRQN2J4b3FjNFlpWTR6UU91YnRNNVoxWHZsblBtTXNXcHp6bVBnNXNvOEJJSm1lR1FLY1hKRE1iRnNTQmpzbExVZFJuSGFZbHpMVnBLWW5selRVa2hXOVNVT1NXRnJObWFBWjRQaGV6WCtPWGo4Y2ZXYVorOTRZdkZIK3V1VGRVMVliUnZ1SXF1dXd5T3lSSDRZMDFSL0xIOTVDT1VQOWJzVUNVbitXT0xlS2xYNDNUOHNlWlUvTEV0SWhISkgydUs1STg5dS9INzRZODFwK09QTmNmaWo4MVZxSW5SbFRpVmtHaFlIUG1ndVhUKzJCd0ppK1dQYlVHQ1FQNVlVL0xIZHRiT0RIZ05MZFpjZjNtR3UxaisyQmJERmNnZmEwbisyRVVaTGlQaElkVTFYM1ZKL3RqN1lJRXlHZHRsVGNrZjI3Y3V4NXBuWlo2MEZ5SDJzaHorV0V2eXg5NHZUaTNKSDl2ZllENWVCYUEwbU00R295M1NZQ2JsajdWbVhaUW9SNWh4SXlIR1huRmI4c2VPekI5clNmN1lCZGI4Y3AyczB5Wm4zaFYvckNYNVkrOFkvb3dSUnpqOHA4VS9LYjJWK0w5SC9EUDRZL3Zndit1Q0FDbGVuQ2ZJSkgrc2dIbnd4RTUyV3Y1WXNpVm1udmlYVGxaQTRuUmkvRS9MSDJ0TC90aG14TlFYczJGQkNhaXB0a2RjaGZRU1g2Q1BhdHdQdkhaTWFnZTdzbll0K3dONnIvS3U0QTdlaXhobHl5N2dtZ1grZm13Z3ZSTnNKY2F0RXZmR2NCYzE3N1hOdGFycHhTQjFyWnlyQytWQXpScW9XUTdnTnZnejBtTjFHZWx4NFcrN2RNNUFiMmFTS2JHZTlPek8zYlpZTzFWS3hzWmc5VlA2aktrY09MZDFXc1prVTU0QVNqK2J3NTZQVHBSK2plWENkN0VUM2E0WnZjaGVUYXVUMHJuRVc2SkpMcllnZWZXU1pST2tUZ3NTRWFoZ1VWaTArMHJ4Ynlod2RYck1JRnNhaXpKeXgzR1haS01BZHdaVThKd0d5Y3RacHFra1FxVk53bTJFdzFTa2xnNkxsa0srcldMbWFKbU1BOVhSUk1IRkIxRUVQU3hJMXZqVG9uRWpCalhOSXc0Y1l5alVxTFpBM1BSZ3pwaHVCbE9heHFrTXNzdXhaakFPaTFhRHh3ekc4OHVqc1p6RE9NMDVZNEZ6R0lmRnd5SDk2Y3h4SWdJWTllUWtuWEhBNUpoNkpEaFlTSHcraDVHem5BMFVTSy9uMUdlMmh1SGc2WnpUa0NEby9zb1NHZ1FkWDFqQ0JRTTkzcFkxWm5SVU1nUEdobWdXRTdodThCQkJoNnpPbU95SjVjWEE2bUoyTnhKTGFuU3AyYmdvUXA0dWh3d1EwNjE4Qjd0ZHNKU3hSZFJzdms3VFpEYXZsbC9vS283eDF4MnhzbEJzMFVMTmVxMnRDMXV4YlNTNDc3V2NpNDZtcmx4Z0ZDNDROVmtwN3Z6bGJuMmFhWmg3K2pYeHduZ3gvbWtPWVU4N0YrdG9ybWxFRnBSWnVDYlZ0cVJydXNVMW1WTzZwb1c4SmI3ODdpUVdPOWhZeVV5M1BxczFMSm1aSW5tbTBKRXVKWjhwS3NKMGErcWhKMTVkZEc4clhKcmNXRnlCdGpKVzZaSzBsVHBicVNsT21kcFdibnNudW1oTFVVdXYyTE83elZXNW1Jcm90OU9jamhzdlcvWkxXd1daVkhzcWF5eXpVWlVlTDZBWlpCZ3RyNlcxYkRxTFkxblZRVVMzV0FrOUxsTG84ZUx2WVZKUW10OU53Wm9oTXQva3d1ZXhxNG1DOUJpRnlQU2g2WHAxMXNpZzdjV3ZNNmsxc2dTOUVhZGdGN2pnSE43VmZGaVpYOUNkNEdReHZVNlNPaGtPMWx2blJZZUthRm1BNHZIdVRWV1JXODU2SzYxbzZhTWh2c2Y4Y3h4REYyUFlIVjVRSWw4elEyRmlJanhXcDNnUVhUNk1tMkw0ZHpsK3VIa0MzZXFIVmRhdTBoc2NNVHhNQUlwRkwrZCtRY2o4QVRZQjZ2Ri8mbHQ7L2RpYWdyYW0mZ3Q7Jmx0Oy9teGZpbGUmZ3Q7IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyI+PGRlZnMvPjxnPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2MTAiIGhlaWdodD0iNDAwIiByeD0iMjAiIHJ5PSIyMCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMzAiIHk9IjIwMCIgd2lkdGg9IjQ4MCIgaGVpZ2h0PSIxODAiIHJ4PSI5IiByeT0iOSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMzAiIHk9IjQwIiB3aWR0aD0iNDgwIiBoZWlnaHQ9IjEyMCIgcng9IjYiIHJ5PSI2IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMwMDAwMDAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1MCIgeT0iMTMwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjIwIiByeD0iMyIgcnk9IjMiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAyMzhweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAxNDBweDsgbWFyZ2luLWxlZnQ6IDUxcHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+QWdlbnQ8L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMTcwIiB5PSIxNDQiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5BZ2VudDwvdGV4dD48L3N3aXRjaD48L2c+PGVsbGlwc2UgY3g9IjI3NSIgY3k9IjMxNyIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMwMDAwMDAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDI3MCAzMTcgTCAyODAgMzE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMjc1IDMxMiBMIDI3NSAzMjIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAxNzAgMTUwIEwgODAgMTUwIEwgODAgMjMwIEwgMjc1IDIzMCBMIDI3NSAzMDkuMzgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSAyNzUgMzEwLjg4IEwgMjc0IDMwOC44OCBMIDI3NSAzMDkuMzggTCAyNzYgMzA4Ljg4IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMzMwIiB5PSIyMzAiIHdpZHRoPSIxMzAiIGhlaWdodD0iMTUwIiByeD0iMTkuNSIgcnk9IjE5LjUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgdHJhbnNmb3JtPSJyb3RhdGUoOTAsMzk1LDMwNSkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgZmxleC1zdGFydDsgd2lkdGg6IDgzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjUycHg7IG1hcmdpbi1sZWZ0OiAzMzJweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogbGVmdDsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxN3B4Ij48Yj5WZWNCdWZmZXI8L2I+PC9zcGFuPjwvZm9udD48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMzMyIiB5PSIyNTYiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTJweCI+VmVjQnVmZmVyPC90ZXh0Pjwvc3dpdGNoPjwvZz48ZWxsaXBzZSBjeD0iNDU1IiBjeT0iMzE3IiByeD0iNSIgcnk9IjUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gNDUwIDMxNyBMIDQ2MCAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSA0NTUgMzEyIEwgNDU1IDMyMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIzNjgiIHk9IjI3MCIgd2lkdGg9IjU1IiBoZWlnaHQ9IjE0IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMwMDAwMDAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogNTNweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAyNzdweDsgbWFyZ2luLWxlZnQ6IDM2OXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxzcGFuPjxmb250IHN0eWxlPSJmb250LXNpemU6IDExcHgiPkJ1ZiAxPC9mb250Pjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMzk1IiB5PSIyODEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5CdWYgMTwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzY4IiB5PSIyOTAiIHdpZHRoPSI1NSIgaGVpZ2h0PSIxNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDUzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjk3cHg7IG1hcmdpbi1sZWZ0OiAzNjlweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB4Ij5CdWYgMjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMzk1IiB5PSIzMDEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5CdWYgMjwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzY4IiB5PSIzMTAiIHdpZHRoPSI1NSIgaGVpZ2h0PSIxNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDUzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzE3cHg7IG1hcmdpbi1sZWZ0OiAzNjlweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O2NvdXJpZXIgbmV3JnF1b3Q7IDsgZm9udC1zaXplOiAxMXB4IDsgdGV4dC1hbGlnbjogY2VudGVyIj5CdWYgMzwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMzk1IiB5PSIzMjEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5CdWYgMzwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzg4LjUiIHk9IjMxMCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjU1IiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKDI3MCwzOTUuNSwzMzcuNSkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKDkwIDM5NS41MDAwMDAwMDAwMDAyIDMzNy41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDEycHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzM4cHg7IG1hcmdpbi1sZWZ0OiAzOTBweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+wrfCt8K3PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjM5NiIgeT0iMzQxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPsK3wrfCtzwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzY4IiB5PSIzNTAiIHdpZHRoPSI1NSIgaGVpZ2h0PSIxNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDUzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzU3cHg7IG1hcmdpbi1sZWZ0OiAzNjlweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O2NvdXJpZXIgbmV3JnF1b3Q7IDsgZm9udC1zaXplOiAxMXB4IDsgdGV4dC1hbGlnbjogY2VudGVyIj5CdWYgbjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMzk1IiB5PSIzNjEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5CdWYgbjwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzg4LjUiIHk9IjMxMCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjU1IiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKDI3MCwzOTUuNSwzMzcuNSkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKDkwIDM5NS41MDAwMDAwMDAwMDAyIDMzNy41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDEycHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzM4cHg7IG1hcmdpbi1sZWZ0OiAzOTBweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+wrfCt8K3PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjM5NiIgeT0iMzQxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPsK3wrfCtzwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzg4LjUiIHk9IjMxMCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjU1IiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKDI3MCwzOTUuNSwzMzcuNSkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKDkwIDM5NS41MDAwMDAwMDAwMDAyIDMzNy41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDEycHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzM4cHg7IG1hcmdpbi1sZWZ0OiAzOTBweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+wrfCt8K3PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjM5NiIgeT0iMzQxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPsK3wrfCtzwvdGV4dD48L3N3aXRjaD48L2c+PHBhdGggZD0iTSAzNjUuMzggMjc3IEwgMzUwIDI3NyBMIDM1MCAzMTcgTCAzNDAgMzE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gMzY2Ljg4IDI3NyBMIDM2NC44OCAyNzggTCAzNjUuMzggMjc3IEwgMzY0Ljg4IDI3NiBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMzY1LjM4IDMxNyBMIDM0MCAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSAzNjYuODggMzE3IEwgMzY0Ljg4IDMxOCBMIDM2NS4zOCAzMTcgTCAzNjQuODggMzE2IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAzNjUuMzggMzU3IEwgMzUwIDM1NyBMIDM1MCAzMTcgTCAzNDAgMzE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gMzY2Ljg4IDM1NyBMIDM2NC44OCAzNTggTCAzNjUuMzggMzU3IEwgMzY0Ljg4IDM1NiBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMzY1LjM4IDMzNy41MSBMIDM1MCAzMzcuNTcgTCAzNTAgMzE3IEwgMzQwIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDM2Ni44OCAzMzcuNSBMIDM2NC44OSAzMzguNTEgTCAzNjUuMzggMzM3LjUxIEwgMzY0Ljg4IDMzNi41MSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMzY1LjM4IDI5NyBMIDM1MCAyOTcgTCAzNTAgMzE3IEwgMzQwIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDM2Ni44OCAyOTcgTCAzNjQuODggMjk4IEwgMzY1LjM4IDI5NyBMIDM2NC44OCAyOTYgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDQyMyAyNzcgTCA0NDAgMjc3IEwgNDQwIDMxNyBMIDQ0OC4xMyAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSA0NDguODggMzE3IEwgNDQ3Ljg4IDMxNy41IEwgNDQ4LjEzIDMxNyBMIDQ0Ny44OCAzMTYuNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gNDIzIDI5NyBMIDQ0MCAyOTcgTCA0NDAgMzE3IEwgNDQ4LjEzIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDQ0OC44OCAzMTcgTCA0NDcuODggMzE3LjUgTCA0NDguMTMgMzE3IEwgNDQ3Ljg4IDMxNi41IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSA0MjMgMzE3IEwgNDQ4LjEzIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDQ0OC44OCAzMTcgTCA0NDcuODggMzE3LjUgTCA0NDguMTMgMzE3IEwgNDQ3Ljg4IDMxNi41IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSA0MjMgMzM3LjUgTCA0NDAgMzM3LjU3IEwgNDQwIDMxNyBMIDQ0OC4xMyAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSA0NDguODggMzE3IEwgNDQ3Ljg4IDMxNy41IEwgNDQ4LjEzIDMxNyBMIDQ0Ny44OCAzMTYuNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gNDIzIDM1NyBMIDQ0MCAzNTcgTCA0NDAgMzE3IEwgNDQ4LjEzIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDQ0OC44OCAzMTcgTCA0NDcuODggMzE3LjUgTCA0NDguMTMgMzE3IEwgNDQ3Ljg4IDMxNi41IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAzMzUuMiAzMTIuMSBMIDMzOS45IDMxNi44IEMgMzM5Ljk2IDMxNi44NCAzNDAgMzE2LjkyIDM0MCAzMTcgQyAzNDAgMzE3LjA4IDMzOS45NiAzMTcuMTYgMzM5LjkgMzE3LjIgTCAzMzUuMiAzMjEuOSBDIDMzNS4xNiAzMjEuOTYgMzM1LjA4IDMyMiAzMzUgMzIyIEMgMzM0LjkyIDMyMiAzMzQuODQgMzIxLjk2IDMzNC44IDMyMS45IEwgMzMwLjEgMzE3LjIgQyAzMzAuMDQgMzE3LjE2IDMzMCAzMTcuMDggMzMwIDMxNyBDIDMzMCAzMTYuOTIgMzMwLjA0IDMxNi44NCAzMzAuMSAzMTYuOCBMIDMzNC44IDMxMi4xIEMgMzM0Ljg0IDMxMi4wNCAzMzQuOTIgMzEyIDMzNSAzMTIgQyAzMzUuMDggMzEyIDMzNS4xNiAzMTIuMDQgMzM1LjIgMzEyLjEgWiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDMzMCAzMTcgTCAzNDAgMzE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjYiIHk9IjI2OCIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKC05MCw0MS41LDI3MykiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKC05MCA0MS41IDI3MykiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjczcHg7IG1hcmdpbi1sZWZ0OiA0MnB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxpPjxmb250IHN0eWxlPSJmb250LXNpemU6IDEwcHgiPmVudi5zdGVwKCk8L2ZvbnQ+PC9pPjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSI0MiIgeT0iMjc2IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTFweCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9ImJvbGQiPmVudi5zdGVwKCk8L3RleHQ+PC9zd2l0Y2g+PC9nPjxwYXRoIGQ9Ik0gMjgwIDMxNyBMIDMyOC4xMyAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSAzMjguODggMzE3IEwgMzI3Ljg4IDMxNy41IEwgMzI4LjEzIDMxNyBMIDMyNy44OCAzMTYuNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjI3MCIgeT0iMzEzIiB3aWR0aD0iNzEiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwLDMwNS41LDMxOCkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKC05MCAzMDUuNDk5OTk5OTk5OTk5OCAzMTgpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDMxOHB4OyBtYXJnaW4tbGVmdDogMzA1cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHdoaXRlLXNwYWNlOiBub3dyYXA7ICI+PGZvbnQgc3R5bGU9ImZvbnQtc2l6ZTogMTBweCI+YmF0Y2g8L2ZvbnQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjMwNSIgeT0iMzIxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTFweCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9ImJvbGQiPmJhdGNoPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSIyNTQiIHk9IjMxMyIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKC05MCwyODkuNSwzMTgpIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KXJvdGF0ZSgtOTAgMjg5LjQ5OTk5OTk5OTk5OTggMzE4KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAzMThweDsgbWFyZ2luLWxlZnQ6IDI4OXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxpPjxmb250IHN0eWxlPSJmb250LXNpemU6IDEwcHgiPmJ1ZmZlci5hZGQoKTwvZm9udD48L2k+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjI4OSIgeT0iMzIxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTFweCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9ImJvbGQiPmJ1ZmZlci5hZGQoKTwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNDYzIiB5PSIyNTgiIHdpZHRoPSI3MSIgaGVpZ2h0PSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InJvdGF0ZSgtOTAsNDk4LjUsMjYzKSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSlyb3RhdGUoLTkwIDQ5OC40OTk5OTk5OTk5OTk4IDI2MykiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjYzcHg7IG1hcmdpbi1sZWZ0OiA0OThweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyBmb250LXdlaWdodDogYm9sZDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj48Zm9udCBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij5iYXRjaDwvZm9udD48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNDk4IiB5PSIyNjYiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+YmF0Y2g8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjQ0NyIgeT0iMjU4IiB3aWR0aD0iNzEiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwLDQ4Mi41LDI2MykiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKC05MCA0ODIuNSAyNjMpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDI2M3B4OyBtYXJnaW4tbGVmdDogNDgzcHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHdoaXRlLXNwYWNlOiBub3dyYXA7ICI+PGk+PGZvbnQgc3R5bGU9ImZvbnQtc2l6ZTogMTBweCI+YnVmZmVyLnNhbXBsZSgpPC9mb250PjwvaT48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNDgzIiB5PSIyNjYiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+YnVmZmVyLnNhbXBsZS4uLjwvdGV4dD48L3N3aXRjaD48L2c+PHBhdGggZD0iTSA0NjAgMzE3IEwgNDkwIDMxNyBMIDQ5MCAxOTAgTCA0MDUuNDMgMTkwIEwgNDA1LjUyIDkxLjkzIiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gNDA1LjUyIDkxLjE4IEwgNDA2LjAyIDkyLjE4IEwgNDA1LjUyIDkxLjkzIEwgNDA1LjAyIDkyLjE4IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNTAiIHk9IjcwIiB3aWR0aD0iNDQwIiBoZWlnaHQ9IjIwIiByeD0iMyIgcnk9IjMiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiA0MzhweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiA4MHB4OyBtYXJnaW4tbGVmdDogNTFweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj5QeXRvcmNoIE1vZHVsZTwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIyNzAiIHk9Ijg0IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+UHl0b3JjaCBNb2R1bGU8L3RleHQ+PC9zd2l0Y2g+PC9nPjxwYXRoIGQ9Ik0gMTcwLjAxIDEyNy4zOCBMIDE3MC4xMSA5Mi44MyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDE3MCAxMjguODggTCAxNjkuMDEgMTI2Ljg4IEwgMTcwLjAxIDEyNy4zOCBMIDE3MS4wMSAxMjYuODkgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDE3MC4xMiA5Mi4wOCBMIDE3MC42MSA5My4wOCBMIDE3MC4xMSA5Mi44MyBMIDE2OS42MSA5My4wOCBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMjAwIDMxNyBMIDI2OC4xMyAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSAyNjguODggMzE3IEwgMjY3Ljg4IDMxNy41IEwgMjY4LjEzIDMxNyBMIDI2Ny44OCAzMTYuNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjM3MiIgeT0iMTM1IiB3aWR0aD0iNzEiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMTQwcHg7IG1hcmdpbi1sZWZ0OiA0MDhweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyBmb250LXdlaWdodDogYm9sZDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj48aT48Zm9udCBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij5wb2xpY3kucHJvY2Vzc19mbigpPC9mb250PjwvaT48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNDA4IiB5PSIxNDMiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+cG9saWN5LnByb2Nlcy4uLjwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMzcwIiB5PSIxMTAiIHdpZHRoPSI3MSIgaGVpZ2h0PSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAxMTVweDsgbWFyZ2luLWxlZnQ6IDQwNXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxpPjxmb250IHN0eWxlPSJmb250LXNpemU6IDEwcHgiPnBvbGljeS5sZWFybigpPC9mb250PjwvaT48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNDA1IiB5PSIxMTgiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+cG9saWN5LmxlYXJuKCk8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjcwIiB5PSIyMzAiIHdpZHRoPSIxMzAiIGhlaWdodD0iMTUwIiByeD0iMTkuNSIgcnk9IjE5LjUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgdHJhbnNmb3JtPSJyb3RhdGUoOTAsMTM1LDMwNSkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgZmxleC1zdGFydDsgd2lkdGg6IDg4cHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjUycHg7IG1hcmdpbi1sZWZ0OiA3MnB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBsZWZ0OyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDE3cHgiPjxiPlZlY0VudjwvYj48L3NwYW4+PC9mb250PjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSI3MiIgeT0iMjU2IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiPlZlY0VudjwvdGV4dD48L3N3aXRjaD48L2c+PGVsbGlwc2UgY3g9IjE5NSIgY3k9IjMxNyIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMwMDAwMDAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDE5MCAzMTcgTCAyMDAgMzE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMTk1IDMxMiBMIDE5NSAzMjIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iMTA4IiB5PSIyNzAiIHdpZHRoPSI1NSIgaGVpZ2h0PSIxNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDUzcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjc3cHg7IG1hcmdpbi1sZWZ0OiAxMDlweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj48c3Bhbj48Zm9udCBzdHlsZT0iZm9udC1zaXplOiAxMXB4Ij5FbnYgMTwvZm9udD48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjEzNSIgeT0iMjgxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+RW52IDE8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjEwOCIgeT0iMjkwIiB3aWR0aD0iNTUiIGhlaWdodD0iMTQiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiA1M3B4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDI5N3B4OyBtYXJnaW4tbGVmdDogMTA5cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFweCI+RW52IDI8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjEzNSIgeT0iMzAxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+RW52IDI8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjEwOCIgeT0iMzEwIiB3aWR0aD0iNTUiIGhlaWdodD0iMTQiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiA1M3B4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDMxN3B4OyBtYXJnaW4tbGVmdDogMTA5cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtjb3VyaWVyIG5ldyZxdW90OyA7IGZvbnQtc2l6ZTogMTFweCA7IHRleHQtYWxpZ246IGNlbnRlciI+RW52IDM8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjEzNSIgeT0iMzIxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+RW52IDM8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjEyOC41IiB5PSIzMTAiIHdpZHRoPSIxNCIgaGVpZ2h0PSI1NSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InJvdGF0ZSgyNzAsMTM1LjUsMzM3LjUpIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KXJvdGF0ZSg5MCAxMzUuNTAwMDAwMDAwMDAwMjMgMzM3LjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMTJweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAzMzhweDsgbWFyZ2luLWxlZnQ6IDEzMHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXdyYXA6IG5vcm1hbDsgIj7Ct8K3wrc8L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMTM2IiB5PSIzNDEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+wrfCt8K3PC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSIxMDgiIHk9IjM1MCIgd2lkdGg9IjU1IiBoZWlnaHQ9IjE0IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMwMDAwMDAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogNTNweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAzNTdweDsgbWFyZ2luLWxlZnQ6IDEwOXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7Y291cmllciBuZXcmcXVvdDsgOyBmb250LXNpemU6IDExcHggOyB0ZXh0LWFsaWduOiBjZW50ZXIiPkVudiBuPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIxMzUiIHk9IjM2MSIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPkVudiBuPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSIxMjguNSIgeT0iMzEwIiB3aWR0aD0iMTQiIGhlaWdodD0iNTUiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJyb3RhdGUoMjcwLDEzNS41LDMzNy41KSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSlyb3RhdGUoOTAgMTM1LjUwMDAwMDAwMDAwMDIzIDMzNy41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDEycHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzM4cHg7IG1hcmdpbi1sZWZ0OiAxMzBweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC13cmFwOiBub3JtYWw7ICI+wrfCt8K3PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjEzNiIgeT0iMzQxIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPsK3wrfCtzwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMTI4LjUiIHk9IjMxMCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjU1IiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKDI3MCwxMzUuNSwzMzcuNSkiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKDkwIDEzNS41MDAwMDAwMDAwMDAyMyAzMzcuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxMnB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDMzOHB4OyBtYXJnaW4tbGVmdDogMTMwcHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtd3JhcDogbm9ybWFsOyAiPsK3wrfCtzwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIxMzYiIHk9IjM0MSIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7Ct8K3wrc8L3RleHQ+PC9zd2l0Y2g+PC9nPjxwYXRoIGQ9Ik0gMTA1LjM4IDI3NyBMIDkwIDI3NyBMIDkwIDMxNyBMIDgwIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDEwNi44OCAyNzcgTCAxMDQuODggMjc4IEwgMTA1LjM4IDI3NyBMIDEwNC44OCAyNzYgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDEwNS4zOCAzMTcgTCA4MCAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSAxMDYuODggMzE3IEwgMTA0Ljg4IDMxOCBMIDEwNS4zOCAzMTcgTCAxMDQuODggMzE2IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAxMDUuMzggMzU3IEwgOTAgMzU3IEwgOTAgMzE3IEwgODAgMzE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gMTA2Ljg4IDM1NyBMIDEwNC44OCAzNTggTCAxMDUuMzggMzU3IEwgMTA0Ljg4IDM1NiBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMTA1LjM4IDMzNy41MSBMIDkwIDMzNy41NyBMIDkwIDMxNyBMIDgwIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDEwNi44OCAzMzcuNSBMIDEwNC44OSAzMzguNTEgTCAxMDUuMzggMzM3LjUxIEwgMTA0Ljg4IDMzNi41MSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMTA1LjM4IDI5NyBMIDkwIDI5NyBMIDkwIDMxNyBMIDgwIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDEwNi44OCAyOTcgTCAxMDQuODggMjk4IEwgMTA1LjM4IDI5NyBMIDEwNC44OCAyOTYgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDE2MyAyNzcgTCAxODAgMjc3IEwgMTgwIDMxNyBMIDE4OC4xMyAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSAxODguODggMzE3IEwgMTg3Ljg4IDMxNy41IEwgMTg4LjEzIDMxNyBMIDE4Ny44OCAzMTYuNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMTYzIDI5NyBMIDE4MCAyOTcgTCAxODAgMzE3IEwgMTg4LjEzIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDE4OC44OCAzMTcgTCAxODcuODggMzE3LjUgTCAxODguMTMgMzE3IEwgMTg3Ljg4IDMxNi41IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAxNjMgMzE3IEwgMTg4LjEzIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDE4OC44OCAzMTcgTCAxODcuODggMzE3LjUgTCAxODguMTMgMzE3IEwgMTg3Ljg4IDMxNi41IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAxNjMgMzM3LjUgTCAxODAgMzM3LjU3IEwgMTgwIDMxNyBMIDE4OC4xMyAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSAxODguODggMzE3IEwgMTg3Ljg4IDMxNy41IEwgMTg4LjEzIDMxNyBMIDE4Ny44OCAzMTYuNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMTYzIDM1NyBMIDE4MCAzNTcgTCAxODAgMzE3IEwgMTg4LjEzIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJzdHJva2UiLz48cGF0aCBkPSJNIDE4OC44OCAzMTcgTCAxODcuODggMzE3LjUgTCAxODguMTMgMzE3IEwgMTg3Ljg4IDMxNi41IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSA3NS4yIDMxMi4xIEwgNzkuOSAzMTYuOCBDIDc5Ljk2IDMxNi44NCA4MCAzMTYuOTIgODAgMzE3IEMgODAgMzE3LjA4IDc5Ljk2IDMxNy4xNiA3OS45IDMxNy4yIEwgNzUuMiAzMjEuOSBDIDc1LjE2IDMyMS45NiA3NS4wOCAzMjIgNzUgMzIyIEMgNzQuOTIgMzIyIDc0Ljg0IDMyMS45NiA3NC44IDMyMS45IEwgNzAuMSAzMTcuMiBDIDcwLjA0IDMxNy4xNiA3MCAzMTcuMDggNzAgMzE3IEMgNzAgMzE2LjkyIDcwLjA0IDMxNi44NCA3MC4xIDMxNi44IEwgNzQuOCAzMTIuMSBDIDc0Ljg0IDMxMi4wNCA3NC45MiAzMTIgNzUgMzEyIEMgNzUuMDggMzEyIDc1LjE2IDMxMi4wNCA3NS4yIDMxMi4xIFoiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSA3MCAzMTcgTCA4MCAzMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAyMDAgMzE3IEwgMjU0LjcxIDMxNyBMIDI1NC43MiAyMzMgQyAyNTguNjIgMjMzIDI1OC42MiAyMjcgMjU0LjcyIDIyNyBMIDI1NC43MiAyMjcgTCAyNTQuNzIgMTUxLjIxIiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gMjU0LjcyIDE1MC40NiBMIDI1NS4yMiAxNTEuNDYgTCAyNTQuNzIgMTUxLjIxIEwgMjU0LjIyIDE1MS40NiBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gNzkuNTIgMTUwLjY4IEwgNzkuNTcgMjMwIEwgNTAgMjMwIEwgNTAgMzE3IEwgNjguMTMgMzE3IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gNjguODggMzE3IEwgNjcuODggMzE3LjUgTCA2OC4xMyAzMTcgTCA2Ny44OCAzMTYuNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjEzOSIgeT0iMTEzIiB3aWR0aD0iNzEiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMTE4cHg7IG1hcmdpbi1sZWZ0OiAxNzRweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyBmb250LXdlaWdodDogYm9sZDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij5iYXRjaDwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMTc0IiB5PSIxMjEiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+YmF0Y2g8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjEzOSIgeT0iOTciIHdpZHRoPSI3MSIgaGVpZ2h0PSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAxMDJweDsgbWFyZ2luLWxlZnQ6IDE3NHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxpPjxmb250IHN0eWxlPSJmb250LXNpemU6IDEwcHgiPnBvbGljeS5mb3J3YXJkKCk8L2ZvbnQ+PC9pPjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIxNzQiIHk9IjEwNSIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSJib2xkIj5wb2xpY3kuZm9yd2FyLi4uPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSIyMDEiIHk9IjMxMiIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKC05MCwyMzYuNSwzMTcpIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KXJvdGF0ZSgtOTAgMjM2LjUgMzE3KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAzMTdweDsgbWFyZ2luLWxlZnQ6IDIzN3B4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDEwcHgiPm9ic2VydmF0aW9uczwvZm9udD48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMjM3IiB5PSIzMjAiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+b2JzZXJ2YXRpb25zPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSIxODUiIHk9IjMxMiIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKC05MCwyMjAuNSwzMTcpIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KXJvdGF0ZSgtOTAgMjIwLjQ5OTk5OTk5OTk5OTc3IDMxNykiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzE3cHg7IG1hcmdpbi1sZWZ0OiAyMjBweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyBmb250LXdlaWdodDogYm9sZDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj48aT48Zm9udCBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij5lbnYuc3RlcCgpPC9mb250PjwvaT48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMjIwIiB5PSIzMjAiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+ZW52LnN0ZXAoKTwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iMjIzIiB5PSIxNzgiIHdpZHRoPSI3MSIgaGVpZ2h0PSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAxODNweDsgbWFyZ2luLWxlZnQ6IDI1OHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxpPjxmb250IHN0eWxlPSJmb250LXNpemU6IDEwcHgiPmNvbGxlY3Rvci5jb2xsZWN0KCk8L2ZvbnQ+PC9pPjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIyNTgiIHk9IjE4NiIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSJib2xkIj5jb2xsZWN0b3IuY29sLi4uPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSI1MCIgeT0iMTg2IiB3aWR0aD0iNzEiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMTkxcHg7IG1hcmdpbi1sZWZ0OiA4NXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHgiPmFjdGlvbnM8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9Ijg1IiB5PSIxOTQiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+YWN0aW9uczwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNTAiIHk9IjE3MCIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDE3NXB4OyBtYXJnaW4tbGVmdDogODVweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyBmb250LXdlaWdodDogYm9sZDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj48aT48Zm9udCBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij5jb2xsZWN0b3IuY29sbGVjdCgpPC9mb250PjwvaT48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iODUiIHk9IjE3OCIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSJib2xkIj5jb2xsZWN0b3IuY29sLi4uPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSI1MCIgeT0iMjEwIiB3aWR0aD0iNzEiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjE1cHg7IG1hcmdpbi1sZWZ0OiA4NXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDE3cHgiPkNvbGxlY3RvcjwvZm9udD48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iODUiIHk9IjIxOCIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSJib2xkIj5Db2xsZWN0b3I8L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjQwIiB5PSI1MCIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDU1cHg7IG1hcmdpbi1sZWZ0OiA3NXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDE3cHgiPlBvbGljeTwvZm9udD48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNzUiIHk9IjU4IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTFweCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9ImJvbGQiPlBvbGljeTwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNTUwIiB5PSI0MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjM0MCIgcng9IjIiIHJ5PSIyIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMwMDAwMDAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSI1MzUiIHk9IjIwNSIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKC05MCw1NzAuNSwyMTApIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KXJvdGF0ZSgtOTAgNTcwLjQ5OTk5OTk5OTk5OTggMjEwKSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAyMTBweDsgbWFyZ2luLWxlZnQ6IDU3MHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDE3cHgiPkxvZ2dlcjwvZm9udD48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNTcwIiB5PSIyMTMiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+TG9nZ2VyPC90ZXh0Pjwvc3dpdGNoPjwvZz48cGF0aCBkPSJNIDUxMCAyOTAgTCA1NDcuMzggMjg5LjkxIiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9InN0cm9rZSIvPjxwYXRoIGQ9Ik0gNTQ4Ljg4IDI4OS45MSBMIDU0Ni44OSAyOTAuOTIgTCA1NDcuMzggMjg5LjkxIEwgNTQ2Ljg4IDI4OC45MiBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjcxIiBoZWlnaHQ9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDE1cHg7IG1hcmdpbi1sZWZ0OiA0NXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDE3cHgiPlRyYWluZXI8L2ZvbnQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjQ1IiB5PSIxOCIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSJib2xkIj5UcmFpbmVyPC90ZXh0Pjwvc3dpdGNoPjwvZz48cGF0aCBkPSJNIDUxMCAxMDAgTCA1NDcuMzggOTkuODYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ic3Ryb2tlIi8+PHBhdGggZD0iTSA1NDguODggOTkuODUgTCA1NDYuODkgMTAwLjg2IEwgNTQ3LjM4IDk5Ljg2IEwgNTQ2Ljg3IDk4Ljg2IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHJlY3QgeD0iNDk4IiB5PSIyODgiIHdpZHRoPSI3MSIgaGVpZ2h0PSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InJvdGF0ZSgtOTAsNTMzLjUsMjkzKSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSlyb3RhdGUoLTkwIDUzMy40OTk5OTk5OTk5OTk4IDI5MykiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjkzcHg7IG1hcmdpbi1sZWZ0OiA1MzNweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogQ291cmllciBOZXc7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyBmb250LXdlaWdodDogYm9sZDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij5zdGF0aXN0aWNzPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSI1MzMiIHk9IjI5NiIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSJib2xkIj5zdGF0aXN0aWNzPC90ZXh0Pjwvc3dpdGNoPjwvZz48cmVjdCB4PSI0OTgiIHk9Ijk4IiB3aWR0aD0iNzEiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwLDUzMy41LDEwMykiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpcm90YXRlKC05MCA1MzMuNDk5OTk5OTk5OTk5OCAxMDMpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDEwM3B4OyBtYXJnaW4tbGVmdDogNTMzcHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IGFsbDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHdoaXRlLXNwYWNlOiBub3dyYXA7ICI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBweCI+c3RhdGlzdGljczwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNTMzIiB5PSIxMDYiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iYm9sZCI+c3RhdGlzdGljczwvdGV4dD48L3N3aXRjaD48L2c+PHJlY3QgeD0iNDE2IiB5PSIxNzUiIHdpZHRoPSI3MSIgaGVpZ2h0PSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAxODBweDsgbWFyZ2luLWxlZnQ6IDQ1MnB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldzsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjxpPjxmb250IHN0eWxlPSJmb250LXNpemU6IDEwcHgiPnBvbGljeS51cGRhdGUoKTwvZm9udD48L2k+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjQ1MiIgeT0iMTgzIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTFweCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9ImJvbGQiPnBvbGljeS51cGRhdGUuLi48L3RleHQ+PC9zd2l0Y2g+PC9nPjxyZWN0IHg9IjM3NSIgeT0iNDE1IiB3aWR0aD0iNjAiIGhlaWdodD0iMjAiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBmbGV4LXN0YXJ0OyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDQyNXB4OyBtYXJnaW4tbGVmdDogMzc3cHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGxlZnQ7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogYWxsOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPnNwbGl0IGRhdGE8L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMzc3IiB5PSI0MjkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTJweCI+c3BsaXQgZGF0YTwvdGV4dD48L3N3aXRjaD48L2c+PHBhdGggZD0iTSAzNTAuNjEgNDEwLjMxIEwgMzY0LjY5IDQyNC4zOSBDIDM2NC44OSA0MjQuNTMgMzY1IDQyNC43NiAzNjUgNDI1IEMgMzY1IDQyNS4yNCAzNjQuODkgNDI1LjQ3IDM2NC42OSA0MjUuNjEgTCAzNTAuNjEgNDM5LjY5IEMgMzUwLjQ3IDQzOS44OSAzNTAuMjQgNDQwIDM1MCA0NDAgQyAzNDkuNzYgNDQwIDM0OS41MyA0MzkuODkgMzQ5LjM5IDQzOS42OSBMIDMzNS4zMSA0MjUuNjEgQyAzMzUuMTEgNDI1LjQ3IDMzNSA0MjUuMjQgMzM1IDQyNSBDIDMzNSA0MjQuNzYgMzM1LjExIDQyNC41MyAzMzUuMzEgNDI0LjM5IEwgMzQ5LjM5IDQxMC4zMSBDIDM0OS41MyA0MTAuMTEgMzQ5Ljc2IDQxMCAzNTAgNDEwIEMgMzUwLjI0IDQxMCAzNTAuNDcgNDEwLjExIDM1MC42MSA0MTAuMzEgWiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDMzNSA0MjUgTCAzNjUgNDI1IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxlbGxpcHNlIGN4PSIxNDAiIGN5PSI0MjUiIHJ4PSIxNS4wMDAwMDAwMDAwMDAwMDIiIHJ5PSIxNS4wMDAwMDAwMDAwMDAwMDIiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzAwMDAwMCIgcG9pbnRlci1ldmVudHM9ImFsbCIvPjxwYXRoIGQ9Ik0gMTI1IDQyNSBMIDE1NSA0MjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PHBhdGggZD0iTSAxNDAgNDEwIEwgMTQwIDQ0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cmVjdCB4PSIxNjUiIHk9IjQxNSIgd2lkdGg9IjExMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGZsZXgtc3RhcnQ7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogNDI1cHg7IG1hcmdpbi1sZWZ0OiAxNjdweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogbGVmdDsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHdoaXRlLXNwYWNlOiBub3dyYXA7ICI+Y29uY2F0ZW5hdGUgZGF0YTwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIxNjciIHk9IjQyOSIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4Ij5jb25jYXRlbmF0ZSBkYXRhPC90ZXh0Pjwvc3dpdGNoPjwvZz48L2c+PHN3aXRjaD48ZyByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiLz48YSB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLC01KSIgeGxpbms6aHJlZj0iaHR0cHM6Ly93d3cuZGlhZ3JhbXMubmV0L2RvYy9mYXEvc3ZnLWV4cG9ydC10ZXh0LXByb2JsZW1zIiB0YXJnZXQ9Il9ibGFuayI+PHRleHQgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMHB4IiB4PSI1MCUiIHk9IjEwMCUiPlZpZXdlciBkb2VzIG5vdCBzdXBwb3J0IGZ1bGwgU1ZHIDEuMTwvdGV4dD48L2E+PC9zd2l0Y2g+PC9zdmc+)\n", - "\n" - ], - "metadata": { - "id": "S3-tJZy35Ck_" - } + "id": "JMUNPN5SI_kd", + "outputId": "7d68323c-0322-4b82-dafb-7c7f63e7a26d" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "The evaluation reward doesn't seem to improve. That is simply because we haven't trained it for enough time. Plus, the network size is too small and REINFORCE algorithm is actually not very stable. Don't worry, we will solve this problem in the end. Still we get some idea on how to start a training loop." + ], + "metadata": { + "id": "QXBHIBckMs_2" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Training with trainer\n", + "The trainer does almost the same thing. The only difference is that it has considered many details and is more modular." + ], + "metadata": { + "id": "p-7U_cwgF5Ej" + } + }, + { + "cell_type": "code", + "source": [ + "from tianshou.trainer import onpolicy_trainer\n", + "\n", + "train_collector.reset()\n", + "train_envs.reset()\n", + "test_collector.reset()\n", + "test_envs.reset()\n", + "replaybuffer.reset()\n", + "\n", + "result = onpolicy_trainer(\n", + " policy,\n", + " train_collector,\n", + " test_collector,\n", + " max_epoch=10,\n", + " step_per_epoch=1,\n", + " repeat_per_collect=1,\n", + " episode_per_test=10,\n", + " step_per_collect=2000,\n", + " batch_size=512,\n", + ")\n", + "print(result)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "# Usages\n", - "In Tianshou v0.4.7, there are three types of Trainer. They are designed to be used in on-policy training, off-policy training and offline training respectively. We will use on-policy trainer as an example and leave the other two for further reading." - ], - "metadata": { - "id": "ifsEQMzZ6mmz" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Pseudocode\n", - "![1.PNG](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGoAAAJuCAYAAADo9uQqAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAP+lSURBVHhe7L29axtL+Pct7r9iW0OKY0gRdxb8GgtSRJAiAhcRuDDiFEYEniBcBOHGiBS+RYogUgRhbg7IxQG5CCgPHJCbgFwElCKgwBNQihQqcsMWKVSkuJ7r2p3ZN82uVq+W7e8H5pxYWu3O+8z13ZlrMgQAAAAAAAAAAAAANgIINQAAAAAAAAAAAAAbAoQaAAAAAAAAAAAAgA0BQg0AAAAAAAAAAADAhgChBgAAAAAAAAAAAGBDgFADAAAAAAAAAAAAsCFAqAEAAAAAAAAAAADYECDUAAAAAAAAAAAAAGwIEGoAAAAAAAAAAAAANoSFhZoXL17Q48ePERAQEBAQEBAQEBAQEBAQEO5N+L//9/8qZWS5LEWoyWQyCAgICAgICAgICAgICAgICPcmbKxQ8//+v/8vAgICAgICAgICAgICAgICwr0KGyvUAAAAAAAAAAAAAIDlAKEGAAAAAAAAAAAAYEOAUAMAAAAAAAAAAACwIUCoAQAAAAAAAAAAANgQINQAAAAAAAAAAAAAbAi3X6j52aailaGtFx2y1UfpGFFrP3q8Vo166tvbjU29syJtWxZtP29Qf7aMmeRniwqhfMpQ4WKkvrw72N871DwuUe5xlrY4jVu7OSodN6h1fUNp/WPT4GOTqkdFKuyXqXJWpfJBgQqHFWpc9Gg0Vtel5deAOucVKu2XqHJSp/pZhcp839rlgOyfPWqdlij/d4Xqr/j/y6g3K6T/Nke53S2/Pv4zVN/cTnqnwfa1RdnHnD4nuHXR++5BVn0eTr+E6id1MwAAAAAAAMCt5tYLNf2zHWWo5Kn5XX2YkrFt0+hLIyBC3A2hZnxVJctLU4asV12Kt+l7VONratfqTyNjsu0R9d8VvHveLaHGpu5JjvNsiwqnLep+G9HoW4fq+74hvLXfoP5vdfkaGF3VqfDAotxJh4bR5/4ZUe9tiQ34LJUvBqkEyuGHMmX5+urHUaguDM4LnhBQOB/yd2PqvrLcdB8n1ZvNYPAu58bdJNT8aFPpAadjl9v1GstudkbUPuB4WkVqfrEn8nz4j253BWr+UB9q/tjUf1902vva2uStyVcAAAAAAABuJ7dbqBl3qWqJAeOGnbO++mIWXKHCvcfdEGpsNsp1njjhKGG10ahNRb4mWahRXNe8e94loab/Jstp2qHqVTSXbOocK9FCAhum/ZUrF2PqvRbRyKLiPyKcxGN/qlGW42UdtChpPcn4s3td/t1AfaLh9B2ptFlV6v1xPx1dlmj7wTaV/t38VSqjC1fEMAk1/TNfaCv+u8n11V3dV4qJo06jCDWtqFDjYFP7MEasWgG3J18BAAAAAAC4ndxqocZmg1IbDE5gY7M7syF994QaGvepoVeDPChR63t8pug8vLdCjd2hspOmLcoft2moxAqPX20qqTRLyL6ZRwxMz/DCXR1hHafbyjd8n3fitXPSixF1xtQ9lrgbVmMIP9S2tmfJYs+mkiTU6JUf1h636w3exsWlSM3HJWr/Un9GmC7UcDWWFVMTQtyKuDX5CgAAAAAAwO3kFgs1bNw88Q1oHUqXs1oOd1CoUcjWrnFUeAjRp/qum/Z7K9R8roW2iWXfRo1dLXSo8KjOubYivtSdlS8zbeMLrCoz133tiynGyNf+h05uZ81PFGpuDdwHPW5QnMySRqih703K3dIyBAAAAAAAAIS5vUING7U7GYsqp1X+v2uoOuFJc8aVAXdXqEnEHlDz0N/CcG+FGqce6fLP0I5hxYzvI0RCkdorSbq7fcV5xv5sq1t6p2p71l81g4gEoWbz4T6IyzyuWqUSamQLI4QaAAAAAAAA7gS3VKhRDk+d1Q3RlTU7VP+iLktFOqHG/tqm+lGBsuJEU661til/1KBu0Loa22THOdccj6grJ+48ztG29qsjJ7jsl6nxcUC2aeXLrwH1rtrUlNN+9nOUPXSNOftzk8pPXJFla7dE9U+BlRR/xjT80qXORYPqcoLR3jYVg6KK3WWjMBCHmGAUbgxCjZyU1DjKe/ezHuaodNqZ3EIk/B5SP5ieBzq/bRpc1qjEcXVXt1i0vcfp+hjw0fKH8+9tmfIPlSjB+Z87rFH728x73SKMqXeWpy15ppx0ZCg/31CWYBBqfvepcZilLS7P0tu+H+dZCJyslZtxC8v4v4oXv8mTfyDUbDxSBgn5n0qokX7slm5fAwAAAAAAAIS5nUKN8huSP3fNkqivmuRTjqJME2rG1H+TdwWE3Sp1tJH+q0/NA4syVoXa122qvapS7UhOoLEo/7oX8i9i/1elnAgZVo4qF31flPk9pO6ZOnXnQYmaEdEhfGQvB1lp4TiGFVGhQpX9bfVdYKtMQEzRIbz6RU5wsjkMqPnMv6b6UT7zg3HLVEioGdLw3xJtP61R55tK7Y+Wc1S6fG8dtCdWCEykx8nvIbWcfNym4rEcGV2l0p4SYzidRX4O/epSdVdEoCJVzviak5Kbn3KNVaT2T/WAlTBt61PglCQV5+rV7FJN0AH0zNv3AquCtj2H2n1qqGOcXRFNxC995HMgaHFMhC/v8/Tbu6LHZItQ5Ih3x2WqnNap8py/d8TI4XSfO/bQOT68/EyOIq87x5IXX9QTj0c3CzVu2n0xsmpo1woRAM/dY8/LUv9elal0VAnFd/Sh4uTT9q6fX3J0e/2zuoAZfZBTuFQ+cn5s7ZaXVi/TCTUj6rzk+Gkhk4Mj2v1oU/WA8/PvHFl7FepEfj+6alL1RZmqXFb1kzIVHnM+vO3Q0FhYU/L1c4PrTuA4cSUcja4aVHnB/aMItE+ylD2sUy/GH48D903tszIVn5acelD5O0/FqCiu4uIJ5ypvbI5D+UCOnd9e+0ltAAAAAAAALItbKdQMz8WBasD5ZuT0p9B3U0kWavyjrg0G+Dc2TJzvslT7zN+JgfG2Qe3P/hG742v3xB35feU/swGvHcKK6DBpiA3YIJHfc9ivUW3fPQ1IDDPnSF/n3hkqfwhbVvrYYgnmbUp6pYUbZt76dFSm3MRpQ4FThGJXNgXSk6lQ7XWWrIMmDYIGlfjbUM/JPCqz4bVF+Tf9kKE/fO+nz7RdaWmEnAlbE/kcTrMbJq+ZTv+NPmbetCpmCoHVOJnDdkQQSbmiZsHVGN4x2QclKp8HxEhm/K3pCnhP6rGG8/hLnfLW5PHhzha9A4t2jtrG+CWuqPmtHUWbhRqJlzjFzb7q0CgkTHLbOtomK3JamqxccvqCZ+btleNPsg2T+4KJ08MWI51QoxlT54Vcy/XonxaVnbQF6uipnxPiuDr3kvM1lOFDTrvUxYRnTclXr1/kfOpecBsP5YdaAfmI+1pDd+iK2pMnnrlOtne4bUR/pPuTAjUualR+J8fV96n+SD6L6/sAAAAAAADYbG6hUKMm4REjqn/mG7oS9Gqb6SQJNUEjnA2XiTfkParq304YyIJvMCS+1dcn7xjvExZUgj543GOl5fPshCjiG3erEWoymRw1vqnPAwRXzaR5rvnI62CZZCYMZodgXBL8eyzGmPqvdR6zQc9GrsG2pPHnurfCx9qrz3WEdzDfFhJqJgSX9Qg1ur7lJpwxu8iKIUfkMPnfUSuxJo8PV/zqUJm/N51slSjUePXI0Pb06q8nDRpEVo+N/i26eTnR5nV7jvFTJGLT6+WLhrMJNYG6ZFWooxrO6LJMucclanzROdinmqqzQfHGQdcJY58mJOSrEKiPBUM/rEXW6pX6QPO9SXn13Mns1T6cytQJiX2B/sQrS1kFWaDc/uQKIgAAAAAAAG4Dt06ocVe4GFa36Em+DqlP50kSagLGTIxQE/9b5jpwolCiIRwQfCaeExY2wuKHTcPrLvW+T5pTKxdqYvJ3VqHGLKgF8zVmK9EahJrgaqhcZDvbBOKfyJ5DoVGEVtREDdhppBL61iPUxPuK8UXL8NYu7WMq5vhwB3/7WXRV2nxCjQiw7hah0r+GmqOOn97ivIze1V3Nl6Hc++g3sgWO05D2tK4ZmFeosRL9DnEevJAta1nO02geTBFipn3vCTVRUcXFXGa+M+3yR3M70r8L1x+/P4mvewAAAAAAANwubplQoybzRpEgLADEGvgTJIktwXuahRpPYDHEKbg9J1lMCMYhaowG45DeUbJv3KUTTGYWamLSM6tQY35uMD9M+c6sWqjx/O1kqXy5egMw6KNmZoMzkBc7no8ajc7vmxZquFRP3DiGysvb5hYnCrh49flFJ7SqJvm5MYKCrbfumFeFJaK3wkVP2JLPjStBFsdvy7MJNTP7OmLkSH+b88ft1xYUamLqlLHM5NQq554Jgp2u5yEBStfvWZ3IAwAAAAAAsLncLqFGrZrJvumFHN/qMDjXWxZUiF26HyRJqGHDRfulyFiTokLAl4ppZUhQtJhFqAkLHEFhI0a0MOAbd9H7aSDUxPKDDfldvq/BwfPKCK4Ie9VVH6bDPz7c5AdpTqHG7lFTHDfHhE5k5UiyYOLi18kqddV2I1+gSinU/BUWRJOfGyMofNYr3dIJH2F859HBvB6eFwx5vxz8fJtNqEm1he7PiHoXNSo9LVH1vE39Hzck1HjteYeKr8x1TofGf8G7TqnfAAAAAAAA3EJulVAT9UMzPQROQ4olWaiRVTzdY3W6kpz69FMZY/rUJ/7ctEVCCG5nmUWoCTujXb9QM/7Zp+7niFNX4T4INfqEqad16kdVPmeLUdnz+7Fc/K0fE6s1Egn87hH/LuJvZaohG2dU689jQlQESBZMXLw6GYinX09TCjWR65KfuwqhhtGnbHknm/Wp/sSU98vBT3u6+KYVauxPNcpbyplyqLFPEWKmfT+PUDN3mUCoAQAAAAAAd4/bI9Sok50mt3aE0T4kdJh2fVgUMAg14sj0QY26P7vUPC75x9/KMbyHFWomHDssq3G8uDw2nxTj4G3FkJCLiEvrF2qc35rEj7su1Pzm5+5alDvpGsvUKU8rRkT5I8eeL7ii4ktd+cSZ9MUSi7cSx6LyZVJ+xxiyU4zqtCQLJi7e1qfg9iXPQPdX2ZjwVg1Fyjr5uTGCgtfetufcLqP96rhtVfxmFSZ81iwPvy2nEyNSCTW6rhmcKfv+hNYo1MxdJhBqAAAAAADA3ePWCDX2ZYkn4ylWyKgTYlzDhoPFBmCizZss1LhbMypT7hFD6NjwhJUY+g29hMCpTi4QatYi1DgiTYa2/25S96o7GT62qPrUMj5rGac+uQROmUrlDNt3imtNHJWu2RShRhv/0e1Z+vNsgr8Y35lw1Plv8nPjBAU/3yadAvuMv7SoJcfuG3D7I64vrzvUPiyZT4FaEn5bXpZQ42/fyhlP2tJO1HW+cT6G6kdcvirmEWoCcYqvQ8zPNlXPg3GGUAMAAAAAAO4et0Socd9gG49pNhDdIpXsVDMoCsQJNRna2he/HGmeHkaO+nVXDMQZIGPqnej4Zqk2YRiuSqgRg841jCQEjWf53DIdM3xXhRoRafb8vEgM0aOMHaM/fE1469qs2JyHrlizc5xU38c0eO/Wra1DNohjxaH1CjVRZ78a3Q7kiPNomvTpWttxR1urODpiVGT1x3xCDaOdRf9Vpa7hZCIn3w7K8QJMYBWcddw1pnlZLF+oGVH7wL3GeOqaJxyvU6hhfrbdMnnE/bAxQ6WvzEdW3ECoAQAAAAAAd4+NFmrcE0iG1P+n4hgOhbOOcnYZYxb9Vo6Fr/0tJE540qC+djocMMrCJ5xIqFLH+Sxw/+gKnYlg0fZeztkG1bgcGA3r4WVZxWfLScNgpOLyo0fNlzlXyLHYAPkc+bWTngE1n+lnFaj5Vf3WaFwyzhYcm434gFDznuPFn03kmneyEYd9ziOO1+hLkz+Lrlxy72l/rHr3zDxr0iAYD+d4aps6r9T3wedq43oiPWxMfnR/p+M2WSY6zd4VzvWJcZmF332qy0oZ73nJYVIQ8FcCuCHtaWPJDC8rziod66lsu4vc71efWk694fr0tkd2om+UIbWc/I5ZsaIdYv9Pg0xrK9Kije+d3SwV3w1CdU18oUhasi/aE0KLxv6vytfsUPnfSP7abvlsHUoZq88C6JPVjILDuEsVp0zM26rG35rOMdxS98P3lvZToUriaV+63Heo9ll9tCIG7/TpcVyGX9WHsfirj5IEQ+/o+UdV6gXbjd2j2ssWdd7JFlJ1KhbXkWJQRJuSr9PqVGKZ/Wg7jrytAy7vUHuWMilRaaL9Dan5OG3eAAAAAAAAcDvYYKFGvbV9kKXc41wgZGkrdjWHEk1C1wfC3jZZ3ooI9SZWfM0ErtkW4SJy/4FjtIgxMD3IigGjmW4PqXNeoZLEwbt+i7L7Zapf9GhkMHjcN+OGNIXSEUGtNNnaDVzv+NWJWZky6lLjKO+m2/ldiRpRwUi/IQ+WhU6Hioc21Cef66+aMaUnK4ayFzf9dpzzRd+Dgxs3tdopRVxmIrgyJ0Uw+o753afGIddLjlPpbd9c/vPgnMhTp/I+55POVyfvSlQ579Dgl7rOCMdJrt/dcvNK/q/ytSHCwueGl7demalyqXyYfX1ScJWE/blJ5eclqp7VqXLI9zysUeva4Jw6im4jzwpUflWn6ssiFY/qxt/230p8pdwlTZz3ul5x/tOoQxVOh9Qt6yF/JvXQqS+Nye1knMfd8yrncYGKx1Wqn1T42Q3qfIsXOTxk5cnEVsXFGX2ouOXxtECFZ/x/+Xcg5Dl/8s6/K9TximpEnZf8mZRzsE9zytSQboHbvuN3azdPpRPOb/53+U1XORbmsjjO05bFzzsSoVuun5KvkTrltO3A906ZOWWly0zVPSmzIH9s6l9KvQ+WSZ3aX4Jlouq3Fwe5NwdJ78uOcXwAAAAAAADgtnB7nAnfCENqH4qBK4ZJkSqRY2KdcFKmgmMEa2M+zUlTANwtYrez3GHET03UZw4AAAAAAAAALAqEmgS0f5o0jl1le4febrWYjxIAbh/3T6gZUvNZJca/DQAAAAAAAADMD4SaBPpvlJPfVM5qtYPNDBXxlh3cM+60UPOj7fiyCW1r/FKnfJzzYwAAAAAAAABYAAg1SbAx5q6SmX6iyPhT1T0pxSpTJ9F3CAB3j+E/rlBjdBB7y5ETqxzB1ltZZ1P7KOFEKAAAAAAAAABYAAg1UxiKY09xZvugQLWLHg0jJ06NRwPqnBVdh7d8TePLVJepANwZfAexImhKCDj1vSvI8e27ciw0t+0/NvXelKj2CdsbAQAAAAAAAKsBQk0axnL6TsM9wSbkONg1SgtHVWp+HEw5JhkAcGtxTqSqU/1ti3rR49IBAAAAAAAAYIlAqAEAAAAAAAAAAADYECDUAAAAAAAAAAAAAGwIEGoAAAAAAAAAAAAANgQINQAAAAAAAAAAAAAbwsJCzf/z//w/CAgICAgICAgICAgICAgICPcq/N//+3+VMrJcFhZqXrx4ETgFCQEBAQEBAQEBAQEBAQEBAeHuh40Vav73//7fCAgICAgICAgICAgICAgICPcqbKxQAwAAAAAAAAAAAACWA4QaAAAAAAAAAAAAgA0BQg0AAAAAAAAAAADAhgChBgAAAAAAAAAAAGBDgFADAAAAAAAAAAAAsCHcO6Gmd5qhrd0c5R4nhIcWFS5G6hcAbBIj6rx066g+Eq76SX21IYz+LbvtaHfLP7put0599f0EXxqUf5ylLX2tE7Yo+7hErR/qGgDuEf234fZT+Geovlkd4+s6t8NIu5VgbXtjY/1aXQzAxjBlTPzc4LobGF+etWj1rWkNjPtU33fbZfaBpC1Pze/quzvOTfSPAABwE9y/FTW/bbJtNwzeF7yOXkL1o/+dPVbX33Wua5z2GvXUn+C2YFP7UNXbDRNqPMZdqnjty6Lq1ZRGNWpTia8rvu+T/Ud9BsA9pn+247Sf9RoiA2r8j9tureMu3ZehENx2xtR5kTAmfmtQTsaiuyLUMGOZq4oQJel6lPAy5I5yM/0jAACsj3u99Wl0ERZqavfwbeHo3yKnHULNbURWh8VOSjeBzzXaOm17glLmsE22+spMj6qbNtm8rm1u/oI7jx6j1mqIjNpUVGNi5b8Nl2nQPkGAxDHxZ4sKUq9vVKgZUetkyc//UqcdSdc9FFVX1z+uoJzAUhhdVLHSGtwrINTIAKfC/RNq9KoMCDW3kU0Xaobvc1T+YNP4qkqW08amLM2WCefJZtVEETJhCIKb4iaEmvF/FeeZmUyR2hu+AxjtEwTZfKGmT7X95T5/+I/bR8hYe99YXf+4/HICy6H/ugChBtwrINQ4E1I33Duhhg3jrJN2CDW3kc0WamzqHPGA+lP+3af6IzeuO2fx62WkPW7WZHNM3eMNXrEE7jw3IdT037jbCTKPmxtuqKB9gjAbL9R8b1Juqc+XcVbSfD+N15X1j0svJ7AchtR8DKEG3C8g1MjArcJ9Emrsr00qOQ7oJECouY1stFAj/mkC25iG53m3rllV6hrXZythZ5MGYDWxhyEIbor1CzUyEXb7Fev1hnu8QPsEETZbqBlz/HaW+3ztB+4e+qcRVtM/rqCcwFIYX9do556KkuD+AqFGBjkVjELNH5sG111qn9epyoakeJrX142um1TZ908T2NotUPltz+CHY0z2tx51L5tUPylTQU4gOO2xbTqg9hn/HfBev7Vbosp5l0YmY3bUoYo6fcP18s9hv0XB1emjDxV1Qocfr+AJVvZVjQp722orSlwwCzdDvnf+4RZtP61QBx3ljbPRQo2s1pI6rvkljoLd+JYuTatmelRLOhlq3dh9qj91TxGBIQhuirULNXaHyqqdbrR/GrRPYGCThZrhZdldwbzM5yv/NFZwrL1HrKJ/XEk5gcX50abyrrRvCDXgfgGhRjpkFYxCjXMqkn+Ne92Yeq9zZGW2KH9UpfpZnaqHWe/77Os+haa4eoIQDHJEuKX+/SDriCvb+m8JVp7qXyITZbtHTX5WRU1QnRARauzrJsenQvnAvUJHjY/VqVZfm4E4VamjT7tygmGC/r1Jee96Dk8WWxZvPF7xz4i6bytUflVzBK38bpZKZybha0aUIFZ8WqKK5N/feSoeNagb8r8QPeLTHQxG1y2qvShT9XWVyk/5+8Mata5DPzQiv6u/KFLxhdSPCpXk2ecdGk5LjOTBOT/roEDl4zrVX5WpdFShxsfhRD6EJqVOGitUOeHfHBdo+2GeKheDcD30sGlwWaPyYZVqnB9O/T0qU/1jm2q7nG5nu9JiaP80PmPqvlJ5a6o7a/FPkybdNnVfF6kQEEOjx/nXPzs3iyD3rlP5eZ5KUm7HJco/L1PjKlxXovVeys7+3qHGcZkqp1w3n/P3+/w7Q3m7LLHsosfWSv7bQ+pIGzzmNnhcpNyeiM8p6m2qNtanRiBfdRuTU0vKB/zM/W3a2m9Q/7e6fCbWlf8+8rsm/67A7bN+xm32eZHKZy3qTe0eJK4NzqOC2z+ccNoPy1S76NEoctpZyBCRvuFdlSpO/1jivmpJ/WMA3z/NcvqB2UD7DHGn2iff52ub87FEhQMeT7m9VI5KVD6Nby/ztK9FhZrRVVPljbRLN79ql4OYsmbSjNdfW1Taz3NZqRdkgePunXDUDs3hZkHGWUnvKrYMJx+Bba4rHsusu5yTw49cLoc5rgsyn+L8PqpR+yt/PkWokfKsyvyN2677kjThmfOW06jL9dTtT6ReO33MaZsGhmeMrrgtcV9f1X0D1+/qBdfzA2u2Ff3qpa1nM0id5rrYu+C+h8eUmsyf93Icj7Tj0bS+MeYI/B9tqnJ7rvzN9tDeHC9wpV865TYjY5qTJ1K2depwH5r1bJsBtQ4LlPfSa9E2p80vmzK1Tf3qDcz7kxh/a1H1b77nEdexly0amPrRX66N14rafuBeA6FGdToSkjrKwTt3QJRQ4omXtcudQ7BTCh1FXKaOoZMefyx795BgPa1R92ewQfIk9JUv+GSsYnjw0wTFo4hQo9ETFgkhoUYTEo9SbH1Sb2685y5pqa3O18J5l1ovOT9+qS8EJQ7tnPbYzJ8P+78q5SyLijyQB+8xvCjyYLzDg030zvqIzywVDnmS9nEU+p3cT9627PCgbZ4a8GTkRZasgyb1g2lhRh/ltwYBTjH+5m5Hy77qRAy2EbWPePJw1AlNGL1J6T8dqvHEYBi4rRhcMtmYLHtZ1stpOw/nhzD8R/IkMuGai5htTF4d2uE8UJ8ppC2u1j/N7OlOnPQH+dWl6p7FZc6TpeDNf7SoyBMLEaCiz/Tq/QEbK+fh48ilHsjvMk+4jYUG8xWVnXdsbZH7tki9/T1wJpHiCDqu3s7exgY8yZe8LVBDJpbvxBDy/RgZ+6sk1pb/mjH13+R5DKhSJ9R/c158ld/uUPkyxhT04tqMTOTde2Yiq8o8oeadGLkN6i25f4xyc/5p0D5jue3tU+Y1J2zI8XymycZ1kDGPCXkea8Pjwfzta26hRvLxcIvbX2QO8ltWevJvDI5lZx2vl7+iJ+CfZoWiavIR2H5dMdbtBeuuXjlnPa2H+z5O++B9kbKP4uMm9Tv3Mjwv4k+5bOQ3CW0xdTmNaXBeoi2uv7WrYEm7/UD0GRKf7Ek31JcI9qeaM6ec2o+Z+K1WQP5PgUqHtUh70fZEmvEobd8YOAL/nxaVnbqv6yGHWVZ2OW2rQM3vkbL/M6SW1IuJ/B9Ra1+eM70fXf+8fwqcn6VDlR5Vv/I8TkTR4+/Gn7YI1gqEGulcVEgSasLXRicWgu5EEu4VFFhihY4hNZ/49zEeaXwTQo1MPmQi41y/RaXLWSdrZvx85Q57ovPV/hKq1I0MbqnQq4A4Dydjq0+8KlMnYozpvIsTDvpvXDHNNIg5A7RVMQp1gvtbw0CjBsbMkwYNIml1j1CXOPHvAhMyr4wf1agfzR8tHD6NGFxOuccNdDIZnz4ITifumG2/bluvgkeJilPQZTw3gTnSnc4Q1GkqGU/IsS9Lzj3KH8M1Rdf73NuB+iSM/aHMEwq+b9BAWFXZ6b7g8WTdc/jFk0Gpm6Znz9XGAn2lV9/FOCtQbn/Wt3JrzH+FO9nLU+Ob+iCC+1vDZFAbfab+4XPNfR6H4Njh94+m9C3YP07AE+RnbhzWvpUC7TOeW90+tdFqUeVjtNL3qebEm0Ogvs3dvpjEOqHzccIAlPFHBIMdqplWY6kXDLl3gbowx3gd//w5WZN/Gt0WzELNFON5kbo75vrh9JflmNPndP01xc1ctxx0nExzayFlOemXYTtGX17S3vkekm7nb+77OT7mvspNx1xCjdxX4hrzctiJh7NdyNRe5usbvXlnYBwbXZYp97hEjRlWgjj1Ki6Ppc3NK9Ssfd4/DRGyin5foMb6SR9wejzf/NMWwXqBUCMNWoXUQo1x28+MQk2MwCLoDtINhkZ7I0KNy1i2Rs3WSyXi5euLjqHzS9kxG/EH8ehAo9HPjvpMmWoAeP5WwitDvGOoX3XVJwZ4EHHeMIXeWEtHLhNFjsu/hrL6wc97kKEtHniC9U7HMzSB9NADeDVctqrumAejJQkmMsjyYGbCr9s8OfDekIkBu9rJ5jzpnloPGC89xvrLxEwKdd2LW7LtTfT4Gq9+rqrsUkxM9VvVcDrmbWN+Xxmf/nSsNf8FPQl8lrDixFtdWQk5zvYmeqaJvYg48mZzj/viwARydf2jgZv0T4P2Gc8tbp8yFjj+PkwvEzhPnC3kVo7nSyp+C7QvIbFOxOWjEmJ8ozqKa2Rn/tJj1HzjdZpynAkV71WLqsltYUofNHfdZbNVHUBgxcwlBF3ek3HjMnohLxaz3JdFyyhmbqRJVU66/ediBcXeqdSRbXeOqO4ZJ/zKFrbFhJqYtDBeHxgR9ObtG3WeJ5VLGtz7xAhM0sYn8j/NeLf+ef9UJB+P/ReTbn033EPn98aftgjWDYQap+G5IbVQYxwY/clN7L3URM4JCUKNN3GIu1eK++hOR8IyhZpls9AkIIlRm4pO2kwrdRQ6HyMDztQOm7tR/ebZrwsyEXc/S57c6oE16w/wnoEUP+ibSI5nzAAuz3LeNFmUf9mk9pch2cE3C2Pz4DYLw38StjHxAFxVb7q8pZ8iXi046E9ljnRPrwcjah+418h2BzPmckiu9y69E/feXhtfVdnpviBpYvqp6sZF2qJ+MzR3G9PtesYJzwRrzn9G+4SI9hlh/LHAnyz6hn3cBNLEyvpHE6YyTmD8e/G+wgPtM55b2z651uutdHHGYIT525dLYp2Iycf+a1d0iX/BEmlnUs5y/YzjdapynAGdV6sWVRfqg+atuyYh1IAu76R2GsR50cjlV3WeFyNupImztwIyfjVjON8G1HBWtmQoe1in1tWARsE3nn/GqdrHJDHzvCA/VHo4+LbE/H2jzvOkckmD/VGtSrTyVDlvU/+HTeNAXk52lynGu7XP+1Pwe0jD4EtJGSMMq+BkpaDce+fNSl9ZglsIhBqnUbthY4QaPVDE3SvFfXSnI+FuCTU29c5dR2zG8EHdx8ujHSq+MlwXCI3/ws+e3mEH8tfbWuRPLJInDXrwCwx03qCfMAAZSI5n/ABuX8n+Xfe3XniQp/Lb7oQz09mRt405an5Xfxrw3qCpwUrqQKyws0RmTff0euCX5c6B61Q8NvAzgrUiud67+H2OPxlMl4aUbUSTZmIa6C+qV+qzudvY9AnX8IP5Pk441w50153/Urfd56U1JLfP1KTLm0Am9ytRkuOZYuI6A55RnWYrhbxdjPrgWBC0TxXuTPv0jcHk9qJZoH0pEuuEMR/9e2WelM3p8ULL9Uk053idqhxTo/OK45BCVF2Ehfqgeetuyv5yajtVDnblMIeqEgOWIdT4bZ/btrGu+EE7hh1/bzkrrdzfqWBtUzHieDhd29LEz/N8/H7Q94syf984td/93jHfxwlN6nkJUL6rVDx02OJ2GHXy7pJivFv7vH829Kp7kxjjrsBKfj64n0CocRq1GzZTqDG81UpxH69D4TCbUDOm0ecu9SNO/FbF7JOAcD5PBD3Bm3cyxczUYR/qfbD+wJc0uTdet2ahxuHXgDrnFSoFT2aQsBveejE7/Nxp25j08vaMxRMzHqyPk4WdpTJDuqfXA38ffHKZTzJ1gsl4fU5028DUNKRsI5qZJtMBPw5zt7HpE65g/zURvHiuO/8D+ZrSkPSu23ihxo9zmq0Usmx+JeIq2ucdap+zCjWGdmMk/rrEOmHMx1njyGyCUKO3f61hm8RCfdC8dXcJQo046ZXTTx1nz6Hp7JS5UYo4+36IkgQSA2MRjupU3o+e8uofHJKubWmmpMXBn3P6W/Xm7xun9rtB+2QiTNYT+5uc7lYKnTAmIcvjUNgKmd4vrX/ePwtjdfKpaaWiftEb52sI3Gcg1KhOQcLGCDXeUlAJhoa7UqHGTYfxN8yqfNTMNQlIwluerPYIz8D0DttfAun7h/EnfCZv7j499TYncBzjnHFNjmfMAP61SZUYR9D2F/c0k9z72QbuELJtL7Af14y/jzhzWKbyqv3TCHOk25y/nK/eZMl/Axx9szuN5Hrv4m2t0NsGVlV2aSbTXp8UcMI3dxtboF2HWHP+M9O3SQh+/+D3o+mW8kdZWf8YxSvLTAoBhtOyO+kfZCHQPuO5te2Ta4pepRXxcxHH/O3LJXFMjMnHWeM4d77GPF/qWvxcIwbtn8bzd2XTIHKi1rJYqA+at+4G+sukvImNG+eP4xvJ4OzZv/dsQk2onDz3BEFfewlwnanGbGkZ/+TvZFvU1HmTiRRCjbf1KbhVb/6+cfr8OB2D9xXzsdp/bOq/F4fi0Rd4MXVNykuLrHP3eWnSZZr3z4IWxwxjpy4jz54b0+jr5OmB4H4CocZp1G7YFKHG2xrCIXw6jmLqfcJxWY5QM2LjenWnPi3fENHqddy9FT/bVD0Pd7pTO2zPqVg+NJBMdc4maGfCobewMmi6cU2ayI+/tKj12b9zcjxjBnCpOwfxbwOcY2k9p4mzI+WZ5k2753hZwlwTlBmZI93m/A0agoF0JE1Epe28aoYcVSbXe0FPJi3fB8Gqyi7FZFr3SVaorOZtY4u06zBrzX9BT9D/J87xKOM5Ow2fpqGdCSfW959danz047S6/jEC1y3vTeSUrRTig8o4Li0C2mc8t7h9egazyTjxGFH3XcdN2wLtS0gcE+Py0VvhmbQqQU69qlPXERLmG6/jni91LXauEcOEfxpOQ2FFvi2S24JuBzF1Ze666/eXSS++zHHz673ZoNYGsy7vcJ+Rrpz0iUkJ80Rm/LlOdSkjuedfPOdTn0cZfxT/JClFnxDThRpvXho5BGXevnHq/Dglcp+iyRm3g3vse1hEiumXJG+91XDrn/enRq8SM9hsE/5ppI9b8tZicHuBUOM0PDesVagJLHUMoY99VNcYFWc9kEgwCTXexMMN5tUx3MHr54QmUfK5NXlMpfcGQYUlHQmZPAlYcMLInbGTl49q1AvOADzG1DvJTyjvusM2D/I8YXvtHjdanIjzkFoHMkjEHa8nR5XKpCRLtU+RLliX+19VNRmMwnlxED6mMnlgiRnAnToY7wRRjDCpUwlDXAKyUibtNiY9wUvzBt9l/KVBBdNpGmmYI93OZxK/oMNKeWMTetvLExmnzHe4zRsrGY0/VSkfeWvl9Scxop4srZZJlCz/9XJnVWXn9SfBN5oBdDuSrRvRopqrjS3REFxn/jvo44a3zUf5Mu69Df2DPp6b0212dCj3DufVSvvHAJ4T1yn9umwnyHLaTOMb2ifa5yS6vXAdjjG4x5xvfv4v0L6YxDFR5+OEYarH9Li5EiPj81FAhJtjvJYx2VlNGxGh+m9K8Y5PY3DTyeWj5ofD9/nlt0mNWvFi7IO8eWFMXVmk7ur+Mlb8lLriijzhuEmbl2fGiDxenGOEmpTlNP4sfSFfx23aHD+ZD6o6oPIh1pG85LHF8ZlY/TMNPc+L6Xe8I85N9sZ8feNUQSMlzn1iT1pzV69E65y7ijFwEIfA5VkKlvNcfZ6frtnn/SnRAvNEfdH9rZ+nIqIV4/oicO+4f0LNb3Em5obBezUZU6H60f/O297zZzx57atO+BrnngNqqmVxwXuF+glnIudfk3lQosb1SF3Dz/nSorLyDG/tVagdO3j7kx9n0v9dP0Xu0aTSkxq13vnxtZ7WqH3VpUFErR9euJNNuabwrk8je+QuOTQdPx4Rf8xHlM+ONhCyxs5xSM3H8rz8zBMZjx9tJ0+tgyYNQhMFKdMSlRIme9ndPFW4HIMML0q0xZ11/k0/YsApfnM9kJVHT9jgiVwwvCxT1spx3YiZdnzjshNnc/s8eIV+K3GtUOUyGNexd8qUcfD33jr6ji4ddB00xI9smRhlYwftaYw+VnniEthnPgX3+M20wo6fXgkznzgwT7r1gB8w1ob/FCdP2fgzpPYLbo88GWp+C39nf+UyPeRJYGQCpg3BHX5uket+8FdiDItD0uwLnlyvo+z0ZPpRlrIHXPeC7UTuu8eTuV2ecMa1wZnbmG7XPOH6qj5ahHXlv4dygvhoMk/sz3XKW1s8cRyY+4dfXapKfj6qUCfSDUj7KUX6lZX3jw7+2+E4Px1j8btyVnB9rhjFHLRPtM84tNPQHap8iFb6DlX/jubXvO3Lr4OeU9ogejWr0RGozYZ4nuOYpep/kTtLHPcnhYTZxmtBG3sBo/p3j6pcLpPxScYdO5VQI/d4uoI2qRlzHZOXKtE3/Haf6q9qVHXmvTF1ZeG623HqboHbYDj2bh6XDlT/GDn2WsQ/91j4ati3lTzzZYs679y5h1MOXC+K3hYyIX05ufWRn/+qG47fnxF1XhX8F3JePhjSyv1T62CLDfNZa4HA6ZH7cv5nn/KYEpzjy31lLmrlqf45puxn7hsD884FfZTpebYIQdE7OS8EDH7JtDjmiykiunDco3PIdc/7UyF5x/Xd4nSpTyQ+IgBWXrq2mCu2ugJfqCzBvebeCTXSGLd2c5R7nBAeWv6bFTX5sh4GvldOr/Q1bgO3aHvPvyYrA3jgjYeDnshJ2G/R4HuHGkcFda37jMJRlZpXWrxJwqbhx4bjlCz4+5LyIK8nmsG0NgwG9OiK7/F0Wwk2W5Q9bExOMhXDDxXKP9yibRkQFjIMiPpvOU578lx+pnK66MT1rQyYfWrofH6QVfkt15nTMBXZ83opDtwKVDyuUv2kQuVXdWp/MSdUd9jVT2PO4xqVnpepelZ18rpw1KDOt+ld9ei6RfWjIhUOK1Q9ld9yZ3zemRDLJuABvnsu1wfjGnwmTwBeqryztlUeunXPmQTzpLKi6p9TZ7kuy8kCucfKMOSBLscGxuBHl+te0X3GWZ2qxzx4veDnfJ+ethB/elTn54Uc43nxmXKvXzIJM00wzegTVbYecpqNq9oSmDfdoy7VDzkf5dSIV1wPLmIMcMb+0uYyL1DhgMuc60vlBT/jkgd2g7Gv26e8MbI/N6n8nO/P8anIsw5r1PIE3ADLLjuNnkTKW0WefDf53iU5MUEc/D0uUe2iF3HGaCBVG1PtWuqktGv5twTpN192Yt5Kpmfl+R/B5v5bnCAW9t3+oXJQpPJZi3pTHbHzZPGywc/KO/19XfqHl/XQM53+0ekXE/pHnY9z9Y88GfxbnuGPH04IlosK4bbNE9mYLRZon2ifSdhf29TgOOefSXthA/9FheoJcU/fvtSYKO3AGxPd9uCMiZ8bXj2WNuSNjY95rqPuoBn/7DrPDMaxet6Nz9+p43UUbvsXFSpwnsr15Rd16s6VsUPqHOcp/zc/j+cYcfOxhdpkkF89rtMFztsiVbhO10/KVH4j+cL9iFoNoMf9UB+0lLqrT27i8j/h30p/edygLteDoWqnEpwydfpHBfcNrpPaPJX4d9IO3TjLl27+bVk5yvOcbnLOO0M5jaUOVDh+BadN1bgfqpw0nfh5jNr8fZ16P/rUPuU6Lf2+5CNfWzhy+5P50EJNlXpcFh2+d1H6NS6fwmOOz9sUc05met8YaWPBvsHQjtLQf52j8uWAhmKDcNuuSNnKsw+5nDjew5gmZH9tUYXn4rnnHNcXZaobT4hibmDeP5U/bhk545Xc+6BKLce31JjH/CJl9zlNR2VqqJPCABDu9dantRMRaubtmsFq8Tts9QHYLGQ/fmQ57m0jaAjeOMHJtProrrNR+X/XQPtcLvewfYIlc1NtEnV3xQSEGvUJmA/M+8GmAqFmnUCouRWgw95sxPHa3Mu4NwQYgjcLhJrVgfa5ZGDsggW5sTaJurtiINQsC8z7waYCoWadQKi5FaDD3mRsah+VY5w13x5gCN4sEGpWBdrn0oGxCxbiBtsk6u6KgVCzLDDvB5sKhJp1AqHmVuB6lucO2+SQENwocgqBOPe87egTa5KOHl0bP9Rk2uhk826yUfl/h0D7XAH3sH2C5XGjbRJ1d8WoE6qih0aAmcG8H2wqEGrWgX6rYAqLOHgDSyTgpNcrn4BDQnDzjNpUeRl3Es/twHcSq+uYckIedIK4LpSTzaAz2Tgnm3eFjcr/uwba53K5h+0TLJmbapOou6tFHRrhOP5W+es6AJ88TRAkgXk/2Hwg1KwF94hvY4gcPwcAAAAAAAAAAID7C4QaAAAAAAAAAAAAgA0BQg0AAAAAAAAAAADAhgChBgAAAAAAAAAAAGBDgFADAAAAAAAAAAAAsCFAqAEAAAAAAAAAAADYECDUAAAAAAAAAAAAAGwIEGoAAAAAAAAAAAAANgQINQAAAAAAAAAAAAAbAoQaAAAAAAAAAAAAgA3h3gk1o4sCZTKZGYJF23s5yh1WqHHRpaGtbgQ2iv5bLqPdLa/cCv8M1TdgNkbUecl5+dDy8rL6SX0ljDpUeZyjbUu3jyr11FcAbDrJ/cSUug9mBv0yAAAAAMB83L8VNWObbNsNg/dB0aZAza/+d24Y0eC6S+3zChW9yfsWFc66NPqj7rdKrmv8vBoM4RkYvMs55WQ2CIbUPhSjIUu167H6DJgZU+dFgrH6u0Nlpz1AqAG3j+R+YkrdBzOTnN8AAAAAACDKvd76FF5dU6DWT/WFEZsG5yXaUtdbezXqrXh1zejfIj8LQs0s6DI1GgSf6175ZQ7aNFIfAzO9UzevzMZqj2pOXt6kUDOi1kmL7pLpN7qoUuuH+uPGuHv5GiWxn2CS6/562Iy6sBym5TcAAAAAAAgDocYxNiVME2pchhdFsvRvduvUV58vH5vah/IcCDWzkGwQqBU1Vo5qn7CHbRqbL9T0qbZ/twSF/mvuh27cOL97+RrlNgg1m1EXlgOEGgAAAACA2YBQ4xibEtIJNWLE1Hf1bzKUfbMiqeZLnbLOMyDUzAIMguWx8ULN9yblnt0lQWFIzccbYJzfuXydZPOFmg2pC0sC/TIAAAAAwGxAqHGMTQlphRqeQr9399s7wapSd8nuTuyvTSo90PGCUDMLMAiWx2YLNWOO3w5l7pCgML6u0Y70QzdqnN+9fDWx6ULNZtSF5YF+GQAAAABgNiDUOMamhPRCDX2qBn6Xocp/k0rN+EeHGkeF0IkXGWubcvtlalz2jc6I7asaFfa2/a1VxmAWbuzPLaodhk8syTzIUu6wRq2rISVu9OG4Vp5u09bDPFU+3O6JNAyC5bHJQs3wsuyuOLsrgsKPNpWdlXo3a5zfuXyNYaOFmg2pC8vkJvrl8c8+tc/rVD/v0PC3+jAF9rcutd7WqXHRTx43AQAAAABWCIQaMUqcMINQI1sDvN9lyHod2f7kbVvKUPEf32Xt+GeXak+VkLJbpk50Eq5PpPrapIL6vRjCndBJVJOikP2hrMSdbTYs/O/tLy014ec4Pq1T3zhZHVLziX6WhDw1v6uv5uFzg3KPs77T3hM24+0hdd5WqHxco/pxkXJ7BSq/5cnztFmw/O6cf/esTJWzOlWPilR8UafWdbwb4DiDwDkmNtWxuzYNLhtU+bvAz6pS/YSff1im2kXPF9f0EdUPs5xWdVS1iGLBbXB8jbsqSo535/zg78uXy3NfbH9tU+O4RIWDMlXPqlQ5KlH5tEW9mEfY3zvUPC5T4ahCdb6+/LxI5bP464VFhZrRVZPzMU/FI8nHMhWflqh2OYg3fv6MqHvOcTvg+nHMBtarMpU4vo2PAaHxa4tK+3muQ0rQFPGTy8ALRzFOolPXpZgjmtl4rnJeV/7OkbVXmWy7czOg1mGB8roeOfUlkJ7HZWqb+iV7QO0zN08lPW4+N6hrSvyoS40XXD9OOE/5WqdOn7So875I1qkqvXnzdRVwfJtSX3RZSdyPG9T5HlNzlthPaKYKNRJHbn/55277Kz/PU+m0TYPYyp2iX5m3LnC76V3Uud1wm5Yylnj9XaFmsN0oRh8qfhlLkP75z5Dar/i3/LuclVuJWD9VqJkhDSGkbnN5y7X1E/6NjC1nTWq8zFP2eZ3a/1adsTp/Hn6u9J+1Q24zUhbOmMTt6LxJ9f0s5Y+b1HlXcsv/Sv1AkaZPu6k8BgAAAMDdAkKNnkzNItT8bAWEFA5HnfBELXjf6OlC35uU19/tt8zGT+j+07c+aaNCQlQ0Gl9VvQnjDhtlkzJPn+qP/N9nMjtU/6K+WoRvDVfMelZkY7tJ/V/qc+H3gJoHYgjn+VnmfWPjL3XKW1mqfhyF48wGqvx2hw1H01Q32SCYcuzury5V9yyyDpoRg2tM/Tf5SefRv7tUcQyqAjVNhvvvHlU5b7OnXbKXdpy7Td2THFlW0TlOPoiTZ5lspPzcuFu7Ver8DOe1CIJFa4fKl2ajYW6hRspXnDbv1qgbKnf+jQiHBke142/udr/sq05ktdmI2kds9ETamNdGUqz8mK8uBerKPy0qO/GyqXPkfpbRAsfSGFFrX+49fRWF/R8bn5ZFRa7jwfS4js53uLwCn/5oUZHLPlQOgq3KQozIIDPk6/IZq5P13LIKMWpT+S+Lyh8MdX7p/URS3ffjWLsKxkW2jGXN5TdrvzJDXZDVkOVdrgvv++E+5s+IOq84Pk/MAv34Y9lJX+akRa0X3Ddwdovg73y2gu22ifk9bxqua5SV+v5fIFN/cT2RPvlpgwbOvWzqnTdDAqbbTrjP/u7XGLfvzND2S9XPcB/WPg8Ib/P0aWvOYwAAAADcLSDUOJMmCQsINRHBJSiOZN8O1KcacRKpfxszEZ9RqBme82TfuZYNmY8hS4Aj06WKdy/z6ofRpX/s+Nbhkt6c6zQ81hPmCL94cq5Ejok8EOOSv8u/i+adQv12h43MkHHGzG2A6Qm3VaFOJAvpc80rz9q1+kzRP9txPi/+a8q1PtWf1KhvSv9caGPQokq0nPlZNSc/OQREBNcoyVPjm/oggrsaK2LcK+YTasbUPRYRbodqn9VHQdgg2uHf5YJlq8o782SyrrhH1MtzIu0zraCwQF3yBNBAnRhdlin3uESNGIFxflIa51roNbZTfVJcmTrKsO2dcllExRiFze1+k4QafaLeZFmNqH0g6eIQ7GtvoJ8Y/1dx4rgTXUXpoERv6fPUJ/P1Kynrgrq3dRwRMT2U43uDiEDXNTc/g33JzzaVH+eo9LY/kV+LEpvf86aBx7Wq9BmPoiKXqvP8LGOfHGg/4efpPN829Ftz9GnCmvMYAAAAAHcLCDXOREpCxBBMYopQI9jfe9S9Ni3b1hNCN0QNf4cZhRph9KVL3S8msUAb1BIS0vjbvK1qblIYfFrkCE+a9VasmFUqDjJxdtMU9Q80rwHWfyMCSIwBJsaEvBHf47KIvtnVE//HzYl0imBXeB+X+jlgg8DZUvfIJP6MqfdaVtrkuE6pPNFxezYZNw9PyKtMOMWeS6hRRkvIWA3BvxMD6y9tYMkqFdewKpkMqx9tZ6WNCIihNKQSFBarSzr9VozQsVzSGOdaiMlQ+aO5rer6X7qUFqXuGSeWcv3IbYpQ4wm3JWobqsHwXxGTt7iO6FjdRD+hVx/mYoVPVyTY9la1zdevpKkLnLZXbruJbs8Joh3f56L9kBYRLG6/SxOS4zHn9wJp0PE31FNvXJ8QYwLfGdq0LvPts0hZzdynKdacxwAAAAC4W0CokYmUExYQaqZsgxjbIxpcd6l72XT8gxQDW42WJdT4jMm2h9S/6lLnosHPK7vGuhNmSOOipDH4PKfMgXiJ8eh8Zl79o/HK7kWHU+xjNgh8kg2weAM4Hm08R9/Eyudmo3Ne+m+UsBVJcxze6WSJQoMvHEbTPo9Q03/tGl6ZV131SZSIEWqzge7cJ974NZKmfi1Yl3T6XdFj1aQwzkdtKjrpSRAntHGoynzw1hUKMrslql90aTCyQ2kcRyvSDQk13paQWGM4wk30E94KmCp1Ywzv8H3n7VdS1AVPYE24RtD14X8i+ao/N4gZq8CY34ukQZdFNF1MXJkL3go9w3e6zKMrY2bu0zRrzmMAAAAA3C0g1MhEygk8yUorYugJmArGJdajHrVOi8oppA5blPUcRbphWUKNOIttHOV9J74SHIegAce+s6RxUdIYfIF06jeq/h7+lAZY5C2m0SAIYDTAPAM4TpRIxtvqdtz1J/9sSBaCfy9MYPtHqhUeAX8qKYWa6Jvk2YUa/16ZJ2XXcW1saLl+Jzzjd4qxFiVF/Vq0LiWnf9mkMM69fmeHiq9MeeqHxn8qV8ZDaolvDed3Oli0/bxG7YiPI4cbEmo8Yzjlc2+in/DulclT2ZDnwdCSrXFz9ysp6oJe5TGt3Xh1pkTtoG8V/XmqvmRxjPm9UBrUlqhMMSKG61VUlvE0Rm/l1l+1UH1wVmg5W5KjzvTn6NM0a85jAAAAANwtINQ4E0AJPFlMKWKEfxeZADPuMn31/YM8Vc67NPilJ42BiR+H2YSaMY0+d6kfcgqrtryo662HRapf9gPHkWqDWkL6NC7MTEKNv/ffz9uUBljkOqNBEGAVQo3/5tw3GvpnebM/g7mZVagJ1LOUQk30unmEmtniyKxQqFm0Lm2cUDNvXkm/cd2i+lEhfHw/G7PFi0ju3RKh5ib6Cd9fUvIzPVYp1HjixZS6EHfdJgg1C6bBdSYsPoi63ooV+5N8ZlH+TfzR2qML90SnQuAkqOE/4h9JTuaL1oc5+jTNmvMYAAAAAHcLCDXOBFBNAlOJGNo3ghsmTlLSfkQkPKpSd2K2uIhQ4/62cOG/QnSdwapr95s0nFiSn1KocY4GN7yBnJc0Bp+39cl3fppme4Ew/EeVXcQ/0DwGmC+0zL/NRTt0dvwoiKPLJL8wc+JtfUq5lH76kn1hSK1nbtqD9UqYXaiZPY7+1iffr0cqYuqXlL8X3wXr0kYINZJObejNnFc2dV5F/GZoxupEnahvojT5ugK8FTJRPx9x3EQ/4a0AmRTnzczbr6SoC54IlE/w0cPoPtaKrMzcBKFmwTQM3hap8XnoHetdOixQSY7W/paU19wmXlSo/WPgHOle2i9RSY4EP2tRL3IqnmbmPk0DoQYAAAAACwChxpkoSkgn1OiTSZzf7PLEMeQEMjCp4zDhwNFhmUJNYHsLB+NSb8+glmBO40pPfUoQarQzYSu0RUgbN9kEnyW+k9CoA9q5DDBGO/0MbV+K8rNLjY8xqfnVppL8/q8adf7lyb/xFKgF8UTASce/PiPqvuu4ea4NS4MfBw/PT8SkP515hBrZ8uX6REpadSDHEtep67Qd35mwub24jL+0qPU5kOhUgsJidWnjhBqJq3K+Gle/HX62qXouJS73NJ1io/jtCj8hESFVvq4Az5lwLrL1JAjXmwu9veQm+glfpE/Ki/HnOtVVXzxfv5KmLkx3LC1oP1UTzow3QahZKA0iMAcE/tT0qJrUH5qYuU9TQKgBAAAAwAJAqHEmYBKmCzXDy7K/WuYBG7aGt4AhocZ0bCwb9GXL335gFGrECPb82ASNcvncChheYaHGONkV4957nimN/ltfN+zMtrIhDm3wBVfLBGFj0jmSWcSuyGtKvaR923gELqPubR2wMRl5mz6fAcboY3Q5j8xvd+Vo7HxC3gTKwuIyMxoQPJl/W4icXjML+nhuTl9g2X4Qybu852tGXx9vrLv5ZVHRkF9zCTWSxtcqjpEVOh5yrPJRQBDUx3P/VY3JNzZcD8oRIYkNLnl+xOjqvymFym+RupReqFm0XF16J/K8iPDA7bcULGvdbh5xuzHatlzmJ7qeKoM/1vm05KEVSV+6fF0FWgTffhUjanBZBevNTfQT48/uM00n/bkMw3V1zn4lVV3Q7eYgRlwf87Olbzf0selFhOXU7dj8njsN7krA2Zw0C1K/Z3RcLnkwa58mzJTHRdp+kKPKh/nzGAAAAAB3i/sn1DhbfNwweB8Wappf/e/c4J7W1D6vUNHz7WBR7mWLBnFroNVxws61Vp5qVyNldIzJ/tKiytMStS/1EvoM5U87zkks0V1HwZU7hXd9GnFc+u/5syfhLTVirORkoivX7pap9UVF7M+Yhld1Kj6tUecf7Xhzh8rvezTktI09wyW8lWvSmeKcaKHmUZayB2z0BQ1wmyffe5yfHF+T2CXY/1U5XRzfqHFg96n+1KKtw6axDPTb17xRyPDfsBuPg/3VparE61GFOpH5+OhjlUoJfg8E7VTYeBSv4K1ekZB2+0QUm7on4pNohyf10Uh2qPp3nfqhSKrrH03mtf25TnmLDbDzgSFdU/LKS4tp64nNhn2e45il6n+RO0sc9w3i3Lem2272ua5E4j94X6HKhO8IbTwFjC42iqsHk1vO5qtLfvrLHyZzJ8RSypVvo0QAX+AV0aU42R65jymz8W9xWkPtysmrEpU8Y1ivzDCknRG/HFsiYqi/XdLn6/IZ0+DcXd1X4DwIV4MBNV/KlhX1t+Im+gm33WQo+8r3jeLwR7aTFaj2KfLAOfqVtHVBtxsRZ8NxGVL7RZasverEM4XxfxUnfZmjzsSzQyypbifl97xpcFcrZal0EnXq26T2VS/gFy6IWsHHY3Ml9BsOb1vUuQr6dwsyR5+WNo8DvoxmP+URAAAAAHeVeyfUhFfRpAtbuznKHVaoIcfbppmojkfUlf3vgROerIc5Kp22ldHAxtB5mQq7/mksW5ETd4TRVYPKT7eVYLNF2cNGxAhX/OpT+4zvFzjhaWu3QOW3XRo5RvSQuqelgCNRi0qXgZnvjw5V+DlbD3nyuqw3elqokS0UbDQ1j4pUkpNqjjkej0tUu+jRaNrLUHvo+hF4xmnh31ZfFql4VKfWtRa/fPpvuYz2JK/kZC3JB4u29/izt5KvbEC95H9LfstJWN51bIxOrDRhY/eyQZXDPBWOqlQ/rVL5pfmZk8jqpCShy6buKxFZtmiby8K8miod9tc2NTgv88/KVD2rUfVFheoJeSqngjX5+sK+XF+lSqxfhvi8coQhNkoq/O8sG1ZSp5069SDLZTpphI5/dp1nBuNYPec6GZeRbOh2zzm/9wtUPOa8P6lwuTcSfE5wWV1UqMDlLNeXX9SpazDoHFLXpUj6Oa1OkLr0mNufuirMMsu1RZV9ftZzzqsXZapfxSToDxuOl/VIXtWprYVahxG1uR7Xr4d8bY3TLuUgRqnkcdltgxMimzBDvq6CEdebE+7PnhWpwkZ49SXH+10nvu9dQz8xIYrqPv6p+8zaqzLHtUndGD8nTp7O2K+krwsj10/Lc/HRUnXiUvi7Qs2PA7KjK4k+VLgeB9Lt1W1TXygsVreT8zvADGnwsLtU/csd7+LCpJjJRfe9GRBGzGFChFOk6dMWyeOCs2URAAAAAOCeb30CKyQo1KiP7jzipyalj5/h+8JytpiBjQLlCu4qm1S3nZVUD0SEtA1C15js0YA6Z7Jli8cgzwmwWrElKzm/GeSxP/y7Hz1qvhTRJEM7hpcnAAAAAADrAkINWA33UKgZnhdiHDpHkeX3828jAJsKyhXcVTaobsvpZ1aG8gnOxzWDd7LlSsX7a4Pk6O7pffSYOi947Ep7AhkAAAAAwAqAUANWw50WaobUPtxyHVx6y+r7VH9So37cMv0g4lA66ngS3H5QruCuskl1W53ClMaRsHvsuzo960qO+U46JczHPRQg6ZQnAAAAAIDVAqEGrIYfSqh5ug4npGvGc/7on5BlX5apHPT7E4vrFHS2U0fA5nNPylX5KHL8biwrvMG6hc1m0+r2iNoHFmWe8diSJIyrE7csLTCN+87fcqpYnNcrB3USVRZbnwAAAABwg0CoAcvlc8MxvsTZrHbM6DidjXXEehthw+U0S3k2MOWdrn1dp9LrXvLkXzG6NJ1gBG47KFdwV9nIui2Ox8+KtL1XosbHAY0CDoPHtjjPrlPh4TYVz7phh9n2gFrHedp+WqXW9TB02uJ4NHAcROfEqf6F6SQ8AAAAAID1AaEGgLmwafixSfWzRsoToQAAACyVP2MafulS56LhHbPdvOxS79soJMJMMLZpcN2l9rk6mlv68Y9d6v+waZxm+yoAAAAAwIqBUAMAAAAAAAAAAACwIUCoAQAAAAAAAAAAANgQINQAAAAAAAAAAAAAbAgQagAAAAAAAAAAAAA2BAg1AAAAAAAAAAAAABsChBoAAAAAAAAAAACADQFCDQAAAAAAAAAAAMCGAKEGAAAAAAAAAAAAYEOAUAMAAAAAAAAAAACwIUCoARtCnxpPc5R7nKNtK0OZjIQs1b+or0PY1DnOUfaBXGPR9u42WXz91m6OiucDdc1qGH9rUeXJFmUe5KlyOVSfAgAAAAAAAAAAywFCDZiBHtUyGapdqz9XRO/UUkJNhqxXXRqrzycZUvMJX2cVqfVDfTQXI2rtZ6hwMVJ/x6Gep+KWyeSp+V19BQAAAAAAAAAALAEINSA9ozYVVy7UDKn5OOOsrHHEEKtK3VilxqbOUYby54uubOlTzUoj1PSp/igo1OzErPgBAAAAAAAAAADmA0INSI19WXIEipUKNY4YVKT2pybllSBS+S9OqelRNZNbfFXLlzrt8HOmCzUcvY8VyjlbsyzKnXTJVp8DAAAAAAAAAADLAEINSEmf6ruucLJKoWb8X4Uyj5s0DG4zOuqYBRERWKwa9dSf8yGrctytVmmEGoexTbYdvyELAAAAAAAAAACYlxsXauxPNcruNmi1LmDBQtgDah5uuaLJioWa/muLrFNXehldFNQzy9QxKDXDf/j7OBEnDX9G1DnJOY6IZxJqAAAAAAAAAACAFXFjQs34R49ar/LKSF50VcQM/BpQ76pNzbMqlfdzlD1skZjn9ucmleU0H47P1m6J6p9izP8Rx/usTIU996Qh9/oClc/a1P+lrvEYk/2tR93LJtVP+DePs7QlIoQ9oLbcY9cXP+SZlfMujdIs1JgpDorfQ+q8VXFQv3FOTNrj373l35k0CrtLNc4j/xQmc1iecOP6p/G2Ov1qU0k9o3QZLQ/XP8184sqQWof61Kj4EL33OFp3HkTrrVvenYsG1Y9LlOPyKep7jLrUOCr4z3yQpcJxM1Re9tc21Q798nHK9G1vqhA1um5Rne+de6idMG9Rdr9M9cs+2X/URRH0b/JP844/oNweB/nN2xoVH5aoPU+2AgAAAAAAAABYmLULNb1TZUg+LlDx6Y4yLNcn1LjPD4T9Fg0/1ygrosXzClX2t9V30RN9xjQ4L7lGtJWj6seROo1oTKOrGuVFzODPa9cBpeVniwrBZ0nYZYNYCx9srIePo+Zg5an+JU6tmSMODv62pcxzV5hyGI+o+1qLZVkqf4g65R2Tbcs2nwE1n6nfc6h+lM/8MI4RA2bG8U9ToNZP9TfZ1D5Uzz1sRwQL8U8zvzPfsYp755WfrsL7QShd4d1N7slQ+lo3ROqtobxF7BlfS/3K0NaTMlXP6lQ/Lvhi2S7f4/eYhudFLoctyh9Vqc7XVPZ9ES/7uq/KOcJvf6WTtVelzk91VaBcrT25v/uxy5jbQJafy9dHxZhRh6pOPQmWAQAAAAAAAACAdXKjW5/8rS3rE2pcBtR4rAzl/RrV9i0q/iMixYjaB+pzDuUPvjQwvBBDWj63jM5txbeK871Vpk5kVcv4Y9m7pwTraY262qh2sKn7io1nfU3McdNzxyEkIBQjqyWCR07HGehhkWJVW598/zQ+9gedd5G4OQ6AqwvXm6Bwl2p1zu8OldX1cfU2WN6F0xoVrSxV/wvKTGPqHgee+6JM2d0ytYNlPu5SRX1v3vo1pNaBWkFjVagbEmMEeYb7vRXcHjbNcbLzPYQaAAAAAAAAALgp7qlQE1kd8cQXB/pvtGCS9Vdr/GLjXK96iXVe23OOeJZrJo6Lvq6pe3J4VKe++jhMUDDhEF1Bskgc2Oiv6t8a/AEN36ujsDkUHMEqynqEmv6bHc8/jUdAsAimyak7i/inUcws1Egeq+tj622wvDMWFf+dvK9f9yUE6ppHcp6LgOWKdpnJPNNwPNxr/NVh+rnWQYuGppVQdoeqj6tGn0AAAAAAAAAAAFbP5gs1PzpU2bNoa79B/YlVA/MSNoLDBrpNw+su9b77lmrIqI4VB1yfKc41B21+QoCg4b4f2HoUQR9/7YbwypeF42APqXfVo6Hhh6F7G43+dQg1rn+a4ComlzF1X6mVI56gpvzTGEWl2Vi5UGNVqWvYtxTK84BQ6JOU5+HvJvNMYfurfzyxyBNvOFjbzlarxkWHul+Gka1eAAAAAAAAAABugo0XauQUIG2QmlYmzEfQ0J3u56R3oq/lELd6gfGMfqsWXjWTUqjR21L0tUHjfOE4BPlt00icHDuOcetUPdC+guLuvQahxhEVzFtuxldVJS7k1MoQWTk0v3+aICsXamLKezFxTPzzxH0XxI+r9VrXhsCWqYkgfprq1ItzSA0AAAAAAAAAYOVsvFAzdhz98jVWkdpL85sRNIKn+eMIG8ypQnR7UVqhJuKM1jfAlxCHPyPqXciJPmEjfUucGwc/uymh5lM1YVuYCDPus3fe8BWOoFUxrlSZlVsp1JicVE8J2beB2vB7QK3jfOD0r0h4UFpiWwMAAAAAAAAAMAu3w0fN7+gJPIsym1ATdDCctJollrmEmuCKkQXj8KNNJe8o6i3KHzep+832ThJaRDQY/+xT97M+fWp+jP5pAvTP1KqfR3Vq/8PxXYJ/GiFWqPk1oO7VwPCMDRBqnNOxYr6bhbFNg+sOtd7WqXIYPn3MetVduEwBAAAAAAAAAMwOnAmnOOFGRARtwM4lEKQVamRVib4uctLP/HEIHM2d2aHq1eQvFxENnN8mpSkVQ2o9S/C1InjbwnZo51GGcu8X908jxAo1TpmZ6uUmbH3iMuU80N8l5luE8ZcmVd/1zPXnz4g6+vSxpK1zAAAAAAAAAABWBlbUpDmK+HuT8soojj9xSfGlQYX95lxbn7xVIxwmVjTMG4eg35vI0deaGxdqtH8aw5HkPkFxwqLaZ/XxgtxOoYZoeJ73vktaiST03xWo8N6tke5zS9SO9UOj/N9AqAEAAAAAAACAGwE+atIINUz/bc47LSf2tKE/rqPW7Ot+WGQJGu6cDqMg8aNFRe/4bXNa54pDSKiZPJpbTlBqH1n+SUAxRn/v1PdjU/nPT5187juqnQ/HWXCsfxof/xjx5finEYKCSXCVjvN59OQsh80QakS4auzpMkkQuZx6laXaZzfD9HOz/ExjFv52T4rC1icAAAAAAAAAuBk2XqhZ+qlPsjrHHlDzmTaCC9T8Kp9xSDz+e0z9twXlgHWLCmcdGozU7+wh9S/rVHiQoa3D9uSqlaDhLuFBiRrX2q/LmOwvLSqr7UnWXoXasStL5onDkNqHW+rZFuVfd2mkLPDxrz61Xuap9G/bX63ypEadbyO+X8RMDwpJclQ6P3f0pcmf5dVJTHNi96gmaX9Upd6049f1qiKjgDInv9Xz5b6PKtT5wXn5o0PVXSskSAljJ5/5OycvJVSpE6o3XJby98fAFrZnTRoEr/njXjN4HxBqXnXc3+nHTdTRDFU/yme+XyGH331q7KuyfVCg+scBjeQ+En70qX0mdWWLyzciQDn3lLrA9eeXf0epD02pK+JMOHF1EwAAAAAAAACAVbF2oSa0ksAYIqING82VPYu2RByYZsinwN3qYtH2Xo5yjwNhb3vqFhKHXwPqnFeoJNfrOFvblDusUes6Rj6IrLAYfO9Q46hAWeXg13qYo8JRlZpXKZ3yzhyHMY2umo7DWO+EJ3V9+6vrrUR8l5T3s/5JQA8MK1xGXY533nM6u7Vbosbn9P5Rgoz/q1Ju1xUZtnbVcyVOT7mc1TWTDKn5JEP585jVRPNiD6h9WgqUR54ql9FnqBUuEkev3qh463qjnUE/yIbrVfAaVRekzL1rVD7orVemOurGzbz6y/7WoeZxKXR6l9y/dNqiXqQ6jP4tcluqU/cb16G3ZSro+DnpKlHlvEujP+piAAAAAAAAAABr50ZX1NwbUmyFAQAAAAAAAAAAAIBQsw4g1AAAAAAAAAAAACAFEGrWAYQaAAAAAAAAAAAApABCzTqAUAMAAAAAAAAAAIAUQKhZJdq5rCmkcVwMAAAAAAAAAACAewWEmpWijms2hSWcYAUAAAAAAAAAAIC7BYQaAAAAAAAAAAAAgA0BQg0AAAAAAAAAAADAhgChBgAAAAAAAAAAAGBDgFADAAAAAAAAAAAAsCFAqEnB4eEh/fnzR/0FAAAAAAAAAAAAsBog1KTgf/2v/wWhBgAAAAAAAAAAACsHQk0KINQAAAAAAAAAAABgHUCoSQGEGgAAAAAAAAAAAKwDCDUpgFADAAAAAAAAAACAdQChJgU3I9T0qJbJUEaHB1nKPc65YXfL/5zD1q76nEP2QeA3mSrf5fYx/tGhxlGRisdVqp+Uqfi0RLXLAdnqewAAAAAAAAAA4K4CoSYFNyLUjNpUzGTIOmhS/9dYfagZUuuZEmOeNfmvCL/61Dyw+PsCtX6qz24Jww9lylpFan4NyjI2dV9lKfOkTv3f6iMAAAAAAAAAAOAOAqEmBTci1PxsUSFTovZI/R1iRK19LdS0JoUa4VebSiLU/FB/3wa+NynPacq/N6Ro3KWqxel90aGobAUAAAAAAAAAANwVINSk4EaEmu9Nyh22Y7b7pBBq+Jedoyw1vqk/N54xdV+pVUAx4lLvVL7PUfO7+gAAAAAAAAAAALhjQKhJwY0INdc1yr0bqD+ipBFqiIbvc1T9pP7YdMZdqkh6EvzqjC4KTpqzsfkCAAAAAAAAAADcbm5QqBnT6LpFtcMsbWUs2t4rUPlth4Yb6DH2poSawoVx3xOTTqgZ/Vu8PULN5xpZTnoMPnc0n6pumvdbnAMAAAAAAAAAAMDd42aEml9dqj4tU/u78jbye0gdcRYrRriVp/qXzfJCchNCjaweiRdZ0gk1jtjzT+y3G4VeLTMtPc41t/Q0KwAAAAAAAAAAYBo3INT0qb7rigzhFSNDaj5R4sNuna/aHG5kRU0iKYWaW4Rs00ov1JSpEzz96VuTCnIs+W6Fur/UZwAAAAAAAAAAwC1k/UKN3uLCwXodlmM8Yz2zQ/Uv6sMN4F4JNX/GZNv24mHGRVG90xTp8YSasMPh/mtxMuz+Pn67GAAAAAAAAAAAsPmsX6j53aP6ky2y9irUiZzu421/4VC7Vh9uAPdJqBm802LZYsF60Yk5scrMIkIN/ehQ5ck2bT9vUH8DfRwBAAAAAAAAAABpuUFnwlHG1D3Whn6ZOkGDWwzxPYu29tkQD255WRPY+rR6FhJqAAAAAAAAAACAO8LmCDW/2lRyjPAM5d+HTfXg1pbiv+vf2gKhZvUs5KMGAAAAAAAAAAC4I2yIUDOk1oGIMRblXvco6t5k/LlGWTHQrSK1f6oP1wiEmtWDU58AAAAAAAAAAICNEGrG1DuVo7mzVL5MkBx+z+6gdllAqFkDWoT5K/7Er9G/xbuVZgAAAAAAAAAAIMINCzVj6r3OkbVbprbnc2REnZd5auDUpwQ235lw5kVnYmVUInaHys5vq9SNyerhP+6qm52zTTq8HQAAAAAAAAAAWB43KNS4Is3W03rEQXCfalaBWtEtTlhRE2CFK2qWdTz3zD5kxtR9JdvfstT4pj4KoZ1N56n5XX0EAAAAAAAAAADcMW5IqFEraTI5Kp3WqX7mh+rf8nkt5IMEPmqi3MGtT8L3JuU5Tbl3A/VBgN/uihvr2HDs9482lR6qU8FuSMwDAAAAAAAAAACWwQ0INdonjRIaTCEiPuDUpygDajxWefU/Df7r7jD8t0RbmRzVPgcVlyG1j3bI2qtRb0Kl4fpxtuXVj9Kl4QIAAAAAAAAAAOCWsH6h5nONLGVUx4bjLoUWRvzoUGVPrZi4gWOZb16oEb89Oco9zlF+v0AF/r/82w95KjzLu/9+2eGrbzf29w41jgqUO6xQ/aRMxaclql30aBSzWmb8pUF5K0PWgy0q/AM3wwAAAAAAAAAAbi837Ez4drB5K2qAkS91KkGoAQAAAAAAAABwi4FQkwIINbcD+0OZqlfqDwAAAAAAAAAA4BYCoSYFEGpuAza1jyrUvYGtcQAAAAAAAAAAwLKAUJMCCDWbz/i6RiXTaVEAAAAAAAAAAMAtAkJNCiDUbDh2hyqHLRqiiAAAAAAAAAAA3HIg1KQAQg0AAAAAAAAAAADWAYSaFECoAQAAAAAAAAAAwDqAUJMCCDUAAAAAAAAAAABYBxBqUgChBgAAAAAAAAAAAOsAQk0KINQAAAAAAAAAAABgHUCoSQGEGgAAAAAAAAAAAKwDCDUpgFADAAAAAAAAAACAdQChJgUQagAAAAAAAAAAALAOINSkAEINAAAAAAAAAAAA1gGEmhRAqAEAAAAAAAAAAMA6gFCTAgg1AAAAAAAAAAAAWAcQalJw54Sany0qZDKUCYTCxUh9OSO/elR/vk2WtU3Ft32y1cea3mn4OZlMgVo/1Zdro0+N/RzlHi8SGnyX28H4uk55ifPuVjjvuYx0eurX6uJVYKhfmdOe+hIAAAAAAAAAQBIQalJw91bUjMm2R9R/V/AM6fmEmjF1X1kBg9yi6tVYfaf4bZP9o0OVR/qaGxBqvtRph+OWe9mk3g+bxqGi7FP9LzduO6+jUgznE8e9usvfP6rfGqHGZ0CN/3HTZh13OTXrYrJ+QagBAAAAAAAAgHRAqEnBnd36dF3zDOn5hBqbOkfKEFeh/CG6pkYYUWtfX7N+oaZ/tkPZ055ZqPBWf1hUi1llYn8oU+aoM7FaaOMZtamoyqXy3/pkGo9A/YJQAwAAAAAAAADpgFCTAgg18Yy/NKjwwL3H1mGLhkY94CaFmj7Vd6vUjdEpxv9VVLzK1IlTYjifrInVNpuPn7Yitefc2bYQEGoAAAAAAAAAYGYg1KQAQs0U/shWl6QVGzco1HypU/4sXmTpnaqtW/stjqUZWVFT/Hc9Sof9pU21wxK1vqsPFqD/ZsdN2+MmDdVnawVCDQAAAAAAAADMzM0JNaMuNY4KrnPT3W3a3itQ+axNgw3cXwKhZlFuTqjpnxWoGSt6DKn52I3Xzpt4MWf4Phe7LWo5jGl01aDyky3KPChQ7XKwhG1WftpubDUQhBoAAAAAAAAAmJkbEWrGn+uUe5Cn+mffHLUvy2SJQWcVqfVDfbghrF+oUcLGg6x3So8+wccVVHpUC5zgI2Hb4uuDq0KU75WtXX1NlraixrJBqLG/d6hxlHfvx59bD3NUOu3Q0JT830PqX3Wo9bZOlUN+xkMuO6MIk1aosWn4sencK6u2UzknFR1WqHk1msMZ7phGnxNEjxT+aYTxjwGNVuHi5Y9Ng491Kj60yNorUePjcHl+cOwOlZ20rdY/zfhnl5onZSrsbbvtN7NF2f2ym5ZPaYUaEarccs9xXri/4fs8LlD5bYcGv9RlAAAAAAAAAHAPuAGhRhvtW1Q4H6jPhB5VlVFnvVrnCTXTuYkVNWPbJnvUoYoSTMTPSPMbf6YyxvmeDeEdlWflf0eR7Udj/v2AOq+yjvjVuGbD+bf6ShMSaoY0/LdE209r1OHnOPxoUVELNgdtXwRSpD96O4VQ86tL1T3XSN86bFJfG+e/+tR6wWlwPm8vdQtPKv80q+DPiHrnFco/4DQ9qVDzevmrmfy0rWoFk03dk5wrzjwoOfVLn6Y1/tmjJpeZZQVOBIsTarxyl1O5Wn65/xnT8Kqu/B9tUYn7ik3qEwAAAAAAAABgVdyAUNOjmjbeQn5BAp8bRIGb5Ca3PsmJRdrYzZ9HZQp/e0vmsG1YjcHfP+Hv4k4sCgo1R2XKHbQiQkjwVKcdqn9RH4cYUEPHYV6h5jeXvRyBLd8/MflTUeng77MJW5Rmpf9aCQnPouleEfaQOmdF2rYs2n5e9wWxFbBa/zRj6p264lkmk4/ZWsbXnPh11yjUBMo99vjw703KO/ewqHixllICAAAAAAAAgBvlRrY+Dc4LtGVtU+nfgOHFBllOGXWTgsTNcqM+ar7UvVUzmUd1CskUv9pU0t+ZDGb129JljCAQ9CGSyVHjm/o8QHDVjNmPTZptTcnX9N9ooz/uGXyHi4J7jRV/gtNspPNPsxRGPWqdcp3PbFH+qEHdn6teGzKk1jM3bdYKfMOMud54dTLh2HKvzCQY4hEUIauf1IcT+GnJZErUxjYoAAAAAAAAwB3n5pwJB7EH1DxQ2x9OupOG348OVfYs2tpvUD+6fWcN3KwzYX81ieRP9co38ofnefW5G3ZCpxuNqfuK8zRJ2AgKNVERSLF6oUb87ejv4lbtMJ5gZVHts/psEUZtKjr3SxIJFkP8tzT+lu1BW1Q4bfvbelbNSv3TcL061uWVodz7eFE1WagJljvXiQS/VL0TfV28kAcAAAAAAAAAd4UbFWr6b7Y9A0xC/rRLI4Me4m1R4bCuY5KD3KxQEzF4vS1Ofao/ki0jNary/53vgqKMWm0TFm8iBIWamOOpVy7U/NAOfZN+z3iOf5dTB1bpn2b8rU21/S0ujxyV3nKdXvUCmiifqtPzM8D49ywRdOude/9k4SRRqAmsoJsWz5AvpLgtUgAAAAAAAABwR9iMFTVk0+B90XVMusuGc+Tt+vhzjbLynVWkdgrDc9nctFBj3OLkrDBxV6AEV9bobU7uZ3H+QxSbINSEtl+lCRaVPy6urKzSP83o42odBU/D808Ts0oqhNSthO1LkwR8SXGYW6gJlfsMQk1MPQUAAAAAAACAu8KGCDVC4E29yaHsb//Eo3Vz40KN3sakjNX8+cD9W+dTUMhxPlN5aXQwHGAThJrPNXWsc9Lvl80a/NP8sal/WVvN0duJ+Hmdxj+NfVmi8odZYrakFTVB30uzCDUziUoAAAAAAAAAcPtYv1Dzq0ftjwOj6OL7oliSH5IlcfNCDXMdEDQe7UScBAeFnB2qnlaca6f6J9kEoSbgTyXRR80yWakPlyhjGl01qCRHUD8oUO2yT/Yqq1IgbdMFmD7VdyszOmdeko+acZcq+rtMLmHlV/DkseTnAQAAAAAAAMBdYO1CjbflxLCNKSQK/BMxyO71ihohvJIhk4kY2F/q7vYwHdKcjrQJQk1ktVDSCg3HaD/OUXXBrU+r9E+ThP1F+a55kKfyqnzXeIJe8ioVYfhPgaxXs/t8GV9VfdFw7lOfwuUeLyoF6/2UrXwAAAAAAAAAcAdYu1AT9KcSNcr9FTXhY3jvvY8aRTDvJg1sm9qHOv+mOBHWbIRQw/zqUPmB+v5RlXoxJ3vZn7geLKEOeD5cHhu22K0B+3vHPQ3K2qbiWYcGSzwNavg+p/Ix2T+Nk5eycu1afTATI2o7p7TFlKfwZ0jtI//47UmhhvnZpqI++Ynrn6ksxp+q3hap7Ov+zKISAAAAAAAAANw21r/16XePartseMmWi4CBan9tKqNti0r/hk22+37qk8f3JuWdfDBvEfJXOkxbeTAm27bJ/qhPB+LwrEkD+UyLJGP+N//deaW+51B4P3A+G+uskFVOcrT6M31NgZpf5bOAOZ3mGkEdwS7XWHvihHfoPEvC6FuXmi9F2MhR7XpBU/1Pn2p6hcbJdB8uK2XUo+Zxnra4zuePm9RbuGoHjnKPSdv414A6ZwV+Jl+TxtlwHH+G1DrcUuVVpc4PXS5ct760uCy3aOuB324zcrT+iMszWnw/2lSW/oCv2dqvU+fbSJX7kHrnFco5fYJF+Td9+KYBAAAAAAAA3AtuxpnwnxF12Qgr7W17WyishzkqsbHaNRmryojfEmMvZrXFKtkYoUa2/rzYIiv2pKI+NSSfXkxxuKqPun6QpdzjnBt0WaiVD3rbytau+l7CQ9fw1qsw3NU2W5TV33PYFsM6sDrHdE3WWT1To0kpYUyj6xbVjwrqGjds7Rao/LZDw3ks9d9dqupnB+qbDlLv3HjlqbEO/zgm7CF1zoqcdxZtP69T5/ssCR1S6+9gvqoQLFsVnLIJpD27BEfKsp0rVF783MJRw0nDMLj1SQXzqiy+9mOTKofhODrlftZagoAFAAAAAAAAALeHmxFqbhmbI9SAO8145KwiyT/YovoGOdMGAAAAAAAAALA+INSkAEINAAAAAAAAAAAA1gGEmhRAqAEAAAAAAAAAAMA6gFCTAgg1AAAAAAAAAAAAWAcQalIAoQYAAAAAAAAAAADrAEJNCiDUAAAAAAAAAAAAYB1AqEkBhBoAAAAAAAAAAACsAwg1KYBQAwAAAAAAAAAAgHUAoSYFEGoAAAAAAAAAAACwDiDUpOC2CDX/3//3/zkBAAAAAAAAAAAAtxMINSm4LULNwcEB/Z//83/UXwAAAAAAAAAAALhtQKhJAYQaAAAAAAAAAAAArAMINSmAUAMAAAAAAAAAAIB1AKEmBRBqAAAAAADArcfuU2M/T/XP6m+wNoaXFcr/3aaR+husEps6L/NUux6rv+8D9zHNdxsINSmAUAMAAAAAAG41PzpU3svBkFs7Y+q/ydP2YZuG6hOwBr43Kf+oRr37VN3vY5rvMBBqUgChZj7GP3vUeluh0uMsbT3IUu5xjkOBymdt6v9SFzHDiyIVLxZ8v/C5wffm52QylJHwrBUYDEfUecnPfmi533GoflJf3UruWno2hT41nDrKYXeL87VArR/qKwDuC3aP6ofBdmBRDW/e58Cm3puSGvfcscl63Vff+Qz/LVNB9TvbFvfnB3jbfnPc8TL70aYSz8Ug0qybMfVe52jrIDgvBS5j6r8Lt7nMaU99twxsah9mKH9+C3N+3Kf6vtvPZB/IXD9Pze/qu0RucZrBBBBqUgChZkZ+8UR/nyf4Vo5Kbzs0+BWeFIx/dJ3Op/zvkMai/HLHXPhnSR3KtwblpKMPCTWaMXVeSGd3V4SNu5aem2ds2zT60qSiTL4h1NwA7oTWylhUvMAk46aQdmCL+C19aaZCXdh18/Gb81G2mTx2++nKf4aMHMs1I2qrvjz3HvX+RrmrZfa7R7Vd9Ks3gbyMtHZr1PutPrhJfsu2N3d+Xr2y1Yc3TKTNlT8sN172hzJlHtVpUnLdfEJj8QxpuM1pBmEg1KQAQk167E81yomRu1um9vek2b1NvdOs0ylLWJpQ87NFBbmnUaghfqb7vBsVNq5rS3v++tMzotbJXX8rxGncl3yFULN2frWppPqEjFXDJOMm4X7KknI46nBvPcnoXzY+MlvwczEVNpAd4bdMnVj7Q/c5O1T/oj5aJ+M+G/EZsg6xmsflrpXZkFoHFll3eUXHz7bzgmXrbLNGjTH3o9nM5qxi6r/ZccdXDqbVYjdHn+qPJF487/qpPloW35uUy+RSrkbZQL7UaUfK7LhLqWvRbU8z8IBQkwIINelwByTuTKxiSgOXJw/OROd+CTVi4NxeoYYnh/sQasCq0CtqtqiEN783ip7Qm1cLDKnpvP3ERHAqepL9uBnfb9odKss1N7R6afxfxSnrmQyBu8wdKzNnRccqDOANYvg+5+THRq1uclYxZWjntLcx7Wr8ue68TN16UqNuwAXBjfNDzd1XsQpk3KUK33vZK3XWxfCfglO3Z4r/LU8z8IFQkwIINSngAanqqOEZyr8bqA9ToCZE90eoGVP3eHnPX3t6RKWPydu7A4QacN+ZslpA97NYWj2V0YU7yd55k5BTU1YvrZreqevvDJN6lztVZmqlSTYpLbeeG17dZGRM/ddZylhl6mySILKhOFt1uD5bS/VPo+lRje+9NDtjrdjUOZK6Pet89DanGQTZMKGGjdhXWxvnmA1CzXT6b/Q2phK1Zyo8983svRFqVPxup1Az5uftxObt3QFCDbjneKsFqjzdm2S1k+q7hJ5kJ/fRevXSzUyqV7jl4FZyl8pM5tQWZawKdTfBP8qq0P2VVTP2VzeC8r+Yh8+pVPRO3DZn9Am1MK5osVwnxWtCrYyZ/aXILU4zCLFRQo27PJMr1n4LQs0c3JxQwx2Cs5/bLbtZh6X+a+t+CDU2T66eum/BbqNQM7wsu1vbINSAu8gfmwZXLWqcNaj1+Z6vLJiyWgArMNKix8YN9nWC1VER7lCZKbFgZ8P8tiydG17dNIkSyOTFJVbTpGDVYvEtFi3UroPZX4pAqLkrbI5Qw5XRMQIlQKiZixsTavR+7rk6Ex7Sfvap98OgottD6pxXqPysTJWzOlWPilR8UafWdULtWFSosQfUPitT8WnJeWbl7zwVjxrUTXik/bVNjeMSFQ7KVD2rUuWoROXTFvW839jUfV10jvN0j9jL0Naue+SeDvM65FxYqBl1qfGC43tSpzqnt37C+X3Sos77ol+WX1tU2s9Tbm/bnQxZ26G4545iVsDxvZucL/nnbr6Un+epdNqmQXAmNepQhe/hHHGqy+3PiHoXNSq/qFLtpEz5vRz/LpifEdKkYSaCQs2Yhh8bVDmUNEgdLFDusDZRB0cfKk7+bEu5qnySMg6W6+hDyT16UvJvd4u/L1M75aRE39/JfwknnK4/Q2q/KlKZ8zhn5ajywa3x/bccB+dYZffasAjqHkGu6+GEGBVzzP3oivNAykPK8UmWsod16kUnoNGyVKsxpH3UXrj5V3nOv31aoda3yfbupDEu3gve28emwWWNSk8537i+VJ5zXh1WqHlep8JunirnHWr87d6/O3OXP+a8L1L+b67zD/leTnnY1HtbpsK+iuMh1+WzXsSYkDjVnfZRPKo6daxw3KJBzBtwJ82HfC2XR13Kft+Q5l9dqu0XqPx3gbLPG9SfuBfHi9Nc/6fPsZ7EWy1woev5iNpHqr179WOLss7fEji/busbe+5vujzOlB5zfkmd4D5/sow0ttMf6LJy6089fnzQY2PSnCblaoDRVZPrT57rV8Utd1Mb1KhxrPBYxjHpe4tUuRh4ZT2+rlNel91DV3SzHuqyzFHxPGb78qhHrVOu3zI+On0z13O+72Re8dh9zHnEbSH3sEiNL/zk3xwn/q20t7rEietnME4zMSV9Ye5vmfXPpB0nHekrfRbPXXjOUtgtUv2TW5JOH8P9UPmY28O+9Pc16q75pcW0fm70b9lLu2leVTWuzEjT1wbzJE+1/yRPxu64If34cZFy08YZ5RTfepXW59Nq4zX+1uJy5DkS923m8UATGR95vEoaixxS9wkK6W95TMzvcf3m6wvSJj6reXuSTyhmpvYUZNSmopTHRjlPTof2vTTzS5FbnGYQZjOEGsfhVpaKB26FhFAzHzcl1Ohl8BKWtTJmzJOlvJWl6sdReKDjyUzzwKKdo7a5Q19AqLH/q7LBa1GR0xB8prvSa4d/Ex0Abeqe5MiyitT8Gu5EnfhnshNv25a9Amah+/1oUXGXDazoQGdLe+T7ihgQZEre+vDk4VxEiSzVQsc/ytYp2SJnWKnyW018/6dAJZ4Udn4G85rz+ZX8bofKl5Enz5qGVGihZpsnH0WnDoaQZ1oZYx0UB4+OmPLMPOEYf6qyERDNl/SMP6q2dtKiFk9gOxw1v/2FjQZ3kh7XJgfqKMyYVUPeMfdN6l5UIvEdUvMJf/eInzc5J/TLMsPx+1SjSqg9iY8mMTLi35wN3rnjgDHeC93bPfkks89l4/2IJ79v8vybbap8dNM4/tam5mXCRDOG8VWVLDV2ue0yS7m9Lcq/UWLIL467IzRZVNMC3o82VfYssp7WqR94oJSdSWR0HLZHnbXLW/NgWch4ypNg5xrVZiccbCYao5xPzySeMasFnNMk+Pspk+pUOMeyLhL80p+H8bcmldjIy77gtuwN8dxPnWxP+vRQKyKtPc5rr6xUnxbjQF87gUz0dcJ9gtN+41YDyLG1cpyuCLuBZ9iXJWP56XFM6p1/P+7TnluGyb60GSnr6VsO3BWVESffqi/Mcl0N/np4nlcOVFVfarHxzHO8shKT/RdzxRm3Ss+YvvtcZuMuVaW/OWyb48j4fdaYOnLUOOdJ7TUb/KH2oFY77DZ41FgPqfo5j5SOzVP2taF+XLbjWHmek+So+N4fE5yxleMX96JF6n/q1VarjpeMOw/U1re48cDBbRfOyWABc2f4XrflSWbpExx+cFzkpLLAM9w5kZRfgqgwY3uaQI1Z/ouHeRgbxp/ZwnhmMzLgnyblSz2PpaQZbAIbINSMqH2wRUVu6EPlwA1CzXzclFCjHe9JWIpQozr6WKfEyuDZYSN8YiCYV6iRSYD8znjUpU3tQ/ldmTremwUtOliegefT97eCBQZaYZOEGmf7QoyQ4QyAcwo1WqzYMQ66atL3ODrpU8s0Y5eb8+9EeIkIZjOnIRVaqMlQ6V9zT6QnF5N1UKUvzgARAW+RNxw8gXXqVbDe/WxT+XGOSm/DqyN0uzS3SZ3GGKFGl7X8/nzy9/otT/VKfRBCl6XkT3fCSNCnleQN9xWS4z3/vd3JM5fpZeRXOq1/LXIcuDuhcg0n38eFFTyR5Ts/h/uFrSc8IZcPVT+XeVSlXuSNpWMsTvhqc+tWeBsDj5+HsgrJn8iJvzDvGmVQRo3ORGN0ymoBObUu9rczMaDGnptPcwdx1GnsL6YjxqCcfhI9stjztxbMf3V6i9HXhxauJgxiXQ8sql2rjwxMrl4KoJ9raqdStpEj7If/uqv2wkaSxEMETJMhpMeq5HzU29In/W1o0SBolEo91Uaz7g/Dv5X+c4vzZfvv2fwRzpS+e15mjmHPv5/o7zzceY3bZ/ljnsy/w6UcGCtmNRbnIl0/56FWDiRuA0vd14bzpH3g5smE6KDGYXMfqF9kJMRHs/J4cft8ZXnjoR4fjYKII95HxCWeW4iQbbLJZusTmF9dqhjbo99HGIXHGduTCZ1u4/1TMv6oXsItELJvZ5Q65/ZPs5w0g83gxoUaaexb6q2EZ/CbhJofHUd13tpPWra3GiDUJLPcFTVqkONOuWkyIB0S3ijNJdRoISZD5Y/mTk3XTW/So98IPuJBYqJqjN0jhq0cT/bC99scoUZNvkQwMVVtmcjOJdToQTdHjW/qowiuf4vtyNsmHozl3mpLiwlHeHHyXA9ac6QhFf6kNT5fdTon35ppQWDyrZVMmrheL3KcsRZqLM6nKV3ScoSaoDjpk05MiakDOg0xZbOaeyeVqb5ntE7OgDOh0oYT388xpJK2HOh+zmBI/RlQ44lFxahIqFbBhOvVkFrO8vQOp1CQZ/tvlt22FjU6k41RPcEzH/ub0PfeJrzVTdEy4r77hA1CzsOqt4pMDCPXaDYavV5bYQMkmCV6kp14fHPSagDJa/e5kz5GuAz5uywbXN6t9Zg0YQjJCim+zwPue6JtRgsWCaujxp9raqwzGwt6DPLqpdxTX6vzhvurhY+wnil997vMBLftJ4grjiCr0uml29RnpROGlkaqfs4nub8SZuhrnTxR6fTyxDAGKgHcePCJqlvTt12vIV7OtdpPjp7nWty3TeaUKz5G6vT3lrMltBJZVTxznxBoj5MvUfRcylS/ZmxPMbgvlkztdcNRbWGeLfy3Ns1gghsVapzGvlvzlOQkoUYczjrfcZiYwK4YCDVTUJ2JUz5zdCgh9CQkwWAXvLryohPupPUEbBahRr+RSRKHIgagfqM28fwpbI5QQzR4q94c75aoftGlwcgOpWUcTdiUvHXgNu2+dYj38WE2xLWxnFDuP/TkOuMZmDOnIRVphBrfYN2OTiDU/vSJFRryuXHF1gzoepiwnF2TLHikFGpiyjqdmBJTlksRama9t/8WclKM1feMFxenI8ui1X11f5iwMlS/7Q5OTsf2kPqXDSrtbVMhsjrKQd/XktVTbep9GxmWUts0uFbbwXiS7mx9iE6mvYm+2RhNXC2wbqNtJchqSNV/p3A+6pVVnNjgjX8RozhFPUhcvcRjobPKMyAGj+2R4/C6tr9NuZedQNv0+6xZVjpNXx3lG5PmFXBa9OOgx/4/fltY3ulgs6XvfpeZoNppkpjze0i9z2prOfebTn6ZxpWUwtDSSNXP+WjbIM6Hx0x97XhEfd1/6rmMQYzRKxJN9USXzzQhey3xCv5Oj+kx4oru9629EjUuezyXiov/7H2CrF5025vBuXJS/ZqpPcWhx/5km2IT0SuXZ38pcnvTDCa5OaHGWc4WNhI849vQ+XkKbsK+0FUBoWYaXJbO5J1D4mqLGD5VPaPMX52T3MF4deWvyKAzj1CjjTseDIqvlEPamND4T+7qG31xxmYcmyTU0FjeUslyYpUWJ1i0/bxG7YjPHYcUQo1XLpk8lQ35FwwtcTDpMcUAd9DXBCYIs6YhFWmEGj/vJ/ursTrxITzADs8Li69CmCJyBEkWPO6bUOP2LTLB3Y4u+9YTxSfLMUT05GpyRZXGF/kyT8pee2hcdKj7ZUjxbld4gixv2eV3OrAxo51IR/GWuUeN5ISJvvOMJH8P6zbaVoE2tDlMd9AYMDpi3thrwyxaJ6fXA7+MTPfWv888KjqOqJ16ct6m7vWARtE36Z7wMLnCLx6/Hsb2S959497MauHO1F5T3D8tM6XvnpeZoF5qpBWAdLxNfa7+bhYxaTFm6eem9FeB/Jqtr/XTPVkXAvc0jDPuMdPThOz1x0uv9J1cmaLgvl225jq/V8Haq1AnOj+YuU8IxMskbKnx3lS/ZmpPcegXExtzIlhadD8WEZPTcGvTDEzckFDDxpXySxPEM/IMjdlBHA8mdGCrAkLNdLx9/XM4B5S3ANrXhVcHEg32hOvmEWq8VSAxRusEd0SocRjT6LpFdTnNSJ0k4QZron2mEmpiJsDTmU2oCfuOmSENqVhUqGH0ZMYzhvtUf2LaJjcjEGoWuDen2Vn6HVg590fGIq4zESeF86MnV0k+Lvw9+UkGoRHnRDQ5hSx4ApZpu4KeHE/GI36iz+jVhTH7/tO9zd9w9PaAVGNVj6rOtXGiTsAICU2K9RjB+Z9wop9eDTC5Sni62BDEe5Oewl+Dz/TVUd59Y97Ce8KdUWzQ9XwOQyPCbOm732UmaDEpnUCmx4KkMpxFTFoCafu5qf5p5u1rdV0wpFuvVOR7TtYvJRxNFbLXHS/9vKTtuIyc4PS24qzocefEHCIvMGbvE3zhJklcmqyrs7WnWHhOIGm5dU51tdgyz0uR25pmYORGhBrxS5M7jTjBYjzjO06ouSEg1KTgN0+O9MAT5wTYiLw9CezP9kST+K0zgjdYROvKPEKN94Y1vY8Kb+tTii0oQczCChufCeJHEvMLNTwIvooZaMcj/k6Et8jWiJi8lXbrPd9722JY4ppICqHG2/qkt6jMkYZUpBFq/AmG+Q0V12tnebD71kmWORdmNcpNQKiZ/97Szo/bNPzWcY6NLxyWqHhQpvpFj2JXec+Knlwl1judhnnabQAtMvF9Jo1GPTGPGnRRo2xMw+u+l/7oaoHxzz51v+kbmCfV4WtSok8VWyBYL2fbdqrx5hmxxl0A3Q7iDFWvvCN+H6L1QLYgXEVPEouuBrBpcKXLwu+DzO0gjCcaz/IG1bg6KhiH6ff13nibVqMtcfXVTOm752UmuOUSt+IhQtJWLj2ee20lsLVyXST0c8bVTaFym7OvTerHlRFs3FanfzdVWFhzvHQ56vlqcNtbHNrRcUTQnrlP8NqjKa2cD84z9DgVrF+ztac4nJOwpglUiYyp89Ktf/OHObZVqzLzHT9z3qRcJb54msEmcQNCjd9BTQ+RgQMrahK5UaGGcY5UdMot7coU7no+lKkQEna0gZFN6Nh8g2HiVJ4pBqYeZMIDBt9PbVVJHBB+tql6ruLKnaib1iSDbETdd+E9tObnc5tYu1Ajg+B2/JtDdQxyyMldTN6GhBr+Ru9fTorT+HOd6qE3KLpfiBdqPGfCnlEwRxpS4U8Q4tMw/Q2Vju/26w61D0szrzQzMkXkCJIseOj43yOh5lOVsjOJyHOQuK1Iw4aHc/y172tpksCE9VeXqnvcPz2oTL5FV6tDJt5G6jfNUSPZE6VV/jl/+31Y2N+D28/6xpHpbb7roHL2NsZ3NxxfOlOI7XeT8Yy7pBdCYsjIpNgzjMyrQnQbt6LlreuBMmacZ0avia4GECM8sLrC3ULB7SD2raiIbK5B6hlHSb5gfg2o98PPNOPqKDEOAgJW8n39sbr2ebIw9P2NJ8zMyEzpu+dlJrjzgqS5SQC9wmzC8PbnRd5WY3nWkraITjBHP2fyT+OUr/cCbca+VqNFj4Q8MY5PatycvkpmvfFyHUv7/bTjYkCJSfaVHA2foa2X0Xvq+hyuRzP3Cd6YY2iPSozw5hnyd2DMmqU9mVHxWbTOjg3jz0whVIqp0Pns1XnuawqpVrIuKc1gY7hRZ8JhfOPINIGCj5rp3LRQI9if3CNPM4+mbyWw2VgvHHIHHclaLfhM+JLQqMHQOVY1WixzCTXMT56AOfGuUc/Yp8ppIPnAGzp9PDcPIkaHam468pHVFnolUMihqQxkr7rqj9lYTKjh38Y6Q5bl41bkvmpJ+f+Ej9buvymFnDB7bTXWEJI3ZFw/Ql9qAzzmzcOYjUTnaMdiQFiYJw1p8Psi89J5jg5P4mXCNHE8ZhBvgsJ1dZGlu0GShIgoanJrnFDqCdI9E2omj4VfLnpyNW2irv0FTC73FobUeZH1TrPwthPuskEYudy5j+kNqjYoI21w/FH5AFMGqGPUeJN+Xe/1m3jOaysgROo6ERR/uB5ld8NG4sajnX3HrfSwOd27W2zUODmkTkoxrE7QJ0cFDkTQ6Dqs64EYShOON3VdVX2D/MbicUAXpXY2aq5LY+5387SlhQTdnuP6GXk7/iBH9YCgoscOvw7KVoOtcJ+XcF93u3Pc9lJX5AvfPwE51fPJFlkPS+Z5w0zpu+dlxnd3tsek3FIV7zxcC7N6dawrBswjyqZh9n4u2l8JbKTuZkMrqWbpazWeGBEVRNhYFue20SP9PZTYN7nCcZL1xUuXoxZcpH3o1WR6KxXPZSLPkjjIS7dg/XaYuU/QL++iQo2/UkoLj7ISJChCztSeDOjfr6rOrhK3rft5NnyfTxD1fBLTrE5PtvYm+z+wudwaoUYr5xLSdILLBELNjIy6VN8XB69ZKr3t0CC6BebXgDpnRcq/bE8KLQr7P1H5d6j8b6SDtnkgfmrR1mGTBqa+V95wST15apqE+5NH7RMnxI82lXdlsON7hzoxmwbvS1SaMBxt6p7kuFPcocqHSJ0cdaj6Nxsw0ThqQSggLgz/KaabzE4wJT2J6PZmyGNG4rQ1MejzwPhaBuKAmCJb3ji/JnLmc53ynM4sD/KhLPgjW5IKVPsUzRhtgPPk5GmFOsE6I0ufxWEwG431z8HfzZOGNLj3tY7q1HhZo24kqvbXJpchT+Jfd2mU2C3ot1w78at+ZsRbDTDxRs3AmPNU3qxEr5U29KpGVeeNXpYaX9XnQXQ7iohyGj1hNJ764L3RLhuP9vbSECNOruzeykizuH5p541RJ45Jp4tMx6+Pxi0XQRxn+lLHwpPM8c8u1Z5uU+l84PUP9LVB2b8ibYJx6iEbcrVrU9+hjNXgdgYx/Pa4fUn+OEIWt6v98PYPd8m0Ozl0xMjQ1k71pk6PzyJo7AWF09uDOPa2uO5Hy2l0VafCwxxV/wu0GLUFIBsU3eXtv5TfU0MfLyhjxjF+f3OdtQxbQbVg5LyZFmMmWm+UISNCWLBe/upT60WOcifBvlX6GukjowI4j10XFco9LFHzW7ie6JUlevIv/eXklnT1QiJ03zGPh0Un/8qXcb0r1w3HOIxuvTMR8EXBwSyOz5i+e11mqh+KfVEShNMQ64xXfafu47xAW6UoO0c/F+yvJN96p7lJ4XCWvtZB9+MSAi8yHAGX7zMxPwyghLw0BvX64hUpx09VygbEDTk5c3tiNY3MeXn+ZDToZ+8T9Ist7wUlz+na3B6KL8pum5O5teM+IbpCeZb2FEWPgYYXGbcAV8hTdVvyRvot96sEktOsxUEJE6eVgo3l5oUa/ZbOGIKTTFcJ3NpvUD+uk1wREGrmY/yzR62zMhUeZ2nL2qbc4zzln+aodNoKLeeNxR5S57xCpWcFKr+qU/VlkYpsPLeuDXtrPzf4/q7jua3dHGUf8MDFE+7cY64vPCR1XvK/d2VSxPFwHKVtUZavnxBY/tjUv6xTeb9AxeMq1U8qzrPbXxKGg69tahyXKP+sTNUzNoBfsCGY5PdChKxDjs/TElVf8W8ukpZumpghPbGMuEPPU/1ajoOscR5L3MVorXLay1ST+BurvDuJLOzxIMv5U35Rp27cI8cj6kr5PXXLr8ZprZw0qfvTlDE82XDafJV6Yy730xIP4pL/Un/49ybBb+40TIMnfOcN6joTIU7vZYPqbzjIfQ+4Xhw1qJPWJ4dM/pewBHX0gSfu0o4yFm1z3ktdz6n/N5JEoF89aoiTZTaoK5I3nJ/lN12um2Kk637WvadzH0M7yjzIqnbEE+O38kyJh9Q3+b97Xe4tfzviPpp/67U9cezstHuefHMdcdMg93afJ89wruNJolQh595eXfbT6tTpBe/tMuaJinprGxuyYSN9JgbUkAnznptXU7EH1DrOU+65CEdSZ4tUPmtTf6Keu31MjcuxJG1C1UOnH/UTN8nvPjWP8pTd5/u/4vZ01HQM1CHnVX6Xf/93norRY8D5N43nnK8cl7wIphERZvylQUXO19JxmYp/1yZPBLk1cF34WKcS15XiMbcL7psKCf6Kxjz/cPpsLquqtCfuXxofhwn99pjrc5HrIvcXT/MxJ9aosnjI5fCc42E6kv0P96FnJXes4HKvHHK5Hcf1oTx2cX+b38tT+YTHS/HD9HeFmh95fDH2g9zPcv3b5nKu/M1177wfk57gfbk/53Y2te7JakLpQ16kEJQZafuWtPe/2wl95Wzpu79lNotQ06c696lbh+ZVCU5738077b1wyP1amsJcgJn7Od1fHfI87XmJaly+Rmboa72VsBb3b1+bVH5c4nkLz+/2+P6XU+Zqswg1wpri5ZZjgSpSv45bky8ief5U3i85dVDmCMVnfM/E+dPsfYL9qe7WpZMqlZ5zW3Re1kmbK1H2SYk/i2lzM7WnAGqVkfGFz63Abet57g/KXL9TjbXT0vytSQVnDrXNtnSa/gFsAhu0omZzgVADwKoJCDXqk7uAvAGd8KME1s/vATUPtyj7om1+6/jbpuF103kZkGpFDAAAbCiObw8YYvNxrfzAxG1JS+KH++I5tVAzC4vE694hq/RkJc7kNrq7ywxplpXJMx6EAm4OCDUpgFADwKq5i0LNMHyiGbgxZHl3xkpRFsoBNZYFAwBuK47fmTgfTCCReJ89KVCrXubbyp7MQvG6Z8j2rp1M1rhd7q4yU5q/1Cf8Z4LNBUJNCiDUALBqbrlQ86NNpQcR58IyGMY5xAZrpfuK61aMv50wyg9LGmfNAACwgbi+ulKe+gQCDNVpTCafPWlw/cGYnd8uwqLxukco3z+JBz3cNWZMc/8seDAK2HQg1KQAQg0Aq0adKJWpUnfzm9oE3okV3jGpNrWPok4iwU3hnkS2PdX/zPDCdYiISQwA4NbirOxY7hbO8XWd8o9zji+w5YVqCmfTa0Q7i17ghZGz8iWNs/9ZWEK87geuo+PYU7nuJDOmWRytHy+5foKVAqEmBRBqAFgRykms4xzWmYhwcJzXuk5ibw3OGw15SzF2HFL33pQMJ1uBm8T+2qLKk23KvxJn5rb/5unPmEbfutR8maPtJxVqfUW5AQBuM+6JgzvY3pCO312q8jzEcZ7vzENcp/S5pykdwwdxHLoaTgybh2XG6x4gL1rMJ1XdXWZK858+1U2n0YKNBkJNCiDUAACm4pxSVqf62xb1pp1IAG6M8a8B9a7a1FRHc0t5da76NLRRZgCAO4KcqJrGLxdYMrLCYYfyS9/+BJIY/luibTnC+j6JNPcwzfcRCDUpgFADAAAAAABuC2LI5d9O98wFloyssH1S2axtXXeY0SXX85dtGt7CbfPzch/TfF+BUJMCCDUAAAAAAAAAAABYBxBqUgChBgAAAAAAAAAAAOsAQk0KINQAAAAAAAAAAABgHUCoSQGEGgAAAAAAAAAAAKwDCDUpgFADAAAAAAAAAACAdQChJgUQagAAAAAAAAAAALAOINSkAEINAAAAAAAAAAAA1gGEmhRAqAEAAAAAAAAAAMA6gFCTAgg1AITpv81RbneLMpmMEwr/DNU3ANwi7B7VD7kuP9b12aLaZ/WdJs01gBlT/13JzafHWdqSvuFVV323DsY0/Nig8kGBysd1qp/Vqfp3kcrnfbLl698Dap9y/J5XqP6qRPnDOvV+OT8EHiPqvOTye2h5fXv1k/oKALA8vrepvK/GFae9Fak9Ut8BAIACQk0KINTcE360qfSAJ6e7Ner9Vp8ti1Xe+wbpn+04k3kINeC2MrZtsj83KOcYphXqjtUXAdJcA5jfnE92nxqPXSO//MGRSNbAmHqnWco8qvr96882FS2Jh0W16z7Vd/nfVpXLbkTtA1eIsF731cUgjE3tQ7cM759Qw3XpdY4srjfFi/WNa+PrGuW4vloHLcJoeh8Yc19p0+iy7LSzzOMmyh0AMAGEmhRAqFk1Paqd9NS/b47+mb9CpPjvcl9trPLeN8noouCkaflCzYhaJ5iw3ghsMNw744zTbEn7POq4qy9MpLlmlSjhYets08WFPtUfSV+Xo+Z39dGKESN3h8tm500gb3R+7Tdp8MktO+tUxhkl1DwoUPObeymYpHfqjlfr7AtGF1Vq/VB/rIQUc41fbSpJO5dg1bg2L0qascwXxjZ6xd59HBtWjJ5DhfoujzH1X2e5Hpaw2gaAewqEmhRAqFkxI55Qb4BQo1e9WHs16i3bElvlvW+Q1Qk1fartQ6i5CUb/Fu/dZLz/xl0ZlnsfX+PSXLNKhu9zN/r81HxvuiuPHtWXYOSmo3fqrpCp/Gde6qTLbn0rfG4/NyHU9F8XVivUpJpr6BU1W1RayoqadGOZXlGzdcjXbuh08z6ODavFps6R286Mfde4SxXpS7GKE4B7C4SaFECoWS3j/yqU2QShBszMyoQaMfaeQahZP2PqHt+37Q4jau3LZHiH6l/URxOkuWaV3PTz02N/UEv5j7tcm9aBXsET5+NhSK1n8v36VvjcBdYv1Ayp+Xi1Qs2NzDXuzFh2H8eGVdOjmrM9s0wdk4Z806s4AQA3DoSaFECoWSXKAIFQcytZjVAj/iZ2KAOhZv38bFFhrcbZBmB3qCyT4UyVp80xpLlmlejnW7WbeX5qXGNO+oS1rV6RVRIqb4wrePBWei7WLdS429dWKdTcxFzjDo1l93FsWDVf6s6Wzbj6oVcCFi6w7wmA+wqEmhRAqFkVNg9EefeNAYSalTH+2af2eZ3q5x0aLtmR8SqEmuFlmbIJk5dNwf7WpdbbOjUu1Kkytx27T/Wn7haSezUZT/PW8qbfbN6aN6t6dcuKt7AE+Twlb6YYQ8DMWoWaH20qi7PnldWbm5lr3JaxbCr3dWxYMcn+aW7PKkoAwOqAUJMCCDXLx/6vRsVn+rhbHoweZNWxrip4A1fMcaE8saselKnyd46svQp1IpO70VWTqi/KVD2tU/2kTIXHBSq/7dDQOJOXU0pytO0sQZUQeWsup73o42YlqEnX6KpBlRdVqp1VqfwkS1njca+rvHeAUZcaR0XK/13h9JYov8fpPWtS42Wess/r1P636viNyJ/PM120afixSZXDHBWOqlSXOB3VqP2VP58i1MxUDl9bVNrPU25v251QW9vhOnHU5toQwR5Q+6xC5ZcSr7oTx9xhjVrXy3kDZX9tU+0wT0Uui/pxkeNWosp5k+r7WcofN6nzruSkv3qlfqCwv3eoeczpPeLykPx6XuTyaFFvWrSc9JSp+JSfI+n5m5991KCu6XdS5i9KVD5xjyKun3A+nLSo876onKamxabu6yKXTY6ycjIZp2drN5DvHOom55Z/RtS7qFP5gNMmcTjmesf1r/lxuHQxQcqhflTgspX6zfnzvEKtbzHLI+whdd5KHkq8KlTcy1HprEujmC48zVvLdG82bRpccn48lzKrUpXjWzhu0SBGHJ2WptG/ZS//TeVSNfpjkbba8OJQec7Xct9hrD8/OlThPCpxm9l+3qA+x3P8Teo755ccby3tdT8hn014/mlq1LmqU0nqsdMflaj+yVQruO6dcj4dlaiwW6TGl8ln2dfc3rjtSPx8uF99Gs4b66GfN6Ggxo7g90bfI17bk3rDbXa/QJWLAYVitIo8E2bsx/pv+Xs9dnJw+l9uj923fI9XNSce+d0s1/teclvUbXhfx59/f+z2NwsLNan6pwG1DguU5zJxx0iLtrm9+uVXpvZPdalG0nkuY5CMj3WnneX2y9SI6XfSzzU4yh8qk/kaQcbm8iGPaZImeT7389UL7u8P5HQxddEsY9mI65RhDmBC+owG97MFnvtUeVypcLspnxrGFalPp2UqSV1w4in5VafOZY2y+63JcTSWOccGZnTdovqLojt2ct12+gJ5WbTw4MD9+zH3b3+XuG2rPkMfvS99qaTV1HbTtO8A4bGf721q17+6VOP7lP8u8DzL7Q/C2NSTl2T/9A3P0f5pAvVm3KO66teMded5k1uMwOXyyj2ZLH/ufgIAuJtAqEkBhJoVcl1zJydT33KNqfPCnShU/2nxZLTDhpfviC0TMEyHF2xQv2zTMDQyDql9JMZWwhu731O2N3xTx/M+a1L3okK1q+CMY0jNJ/wdGyg908i/wnvLkvFsZocNt8BvfrWpLBPfpw0aOFVXJgx87/QzNBf1Js16GhWK2CjlCXf2kTJgDRPauctBLbGe+hbyd49qT3iidh2e+Y2/1CnPv9/hOmUqirRI/C2OZ/O7fxd97+2X6u29TBDP2zTwojB239zuVqnzM/x0+2uTitYOlS/NqbL/q1LOsqjIeRn8pRsPLt9PgU9/tKjIz+hGxTub80TeTM/51ji1ccYGa3mX4/q+T3awa2QjqvMqS5kndcOkdR54QnrCE1IrzwZBoJy5jhStMnUi6bc/c/lwHuZeBwxUqSecJ+Zjb7X/kqS3limu+dGmyp7bTvqBaMrx9ZOi2Wxpkuc3neOup/hY0W015LBcHVttFSPtTfqUHTYQuE6p9maxgZzd5eer6/pv+HfSDg8MAmkMnn8aNiCCZWBfiqCZpdrnYM2WuOXUEcjq7fHEEbWBFTpRg93B32oVV2d1nU7aijW8ZAOd602ejXb/Knl2wIhaUZ4t0o8N3rkOpgvnXWq9rIX7g+9N9/dc/4y/V6tYsi8ifbTThvO04+T7nELNzP2TXj0wbUUNt8WDHFW4Dw2lSdIi8U1y2pt6rhHI18i4Jn1x9qQb7vMY+5OMwYa8SjuWCd4cwHSt7jOK1PxqqidZv29y+rvwuOXwR/LOShcXA+mFuyHP1bLc3zapHyn/0ccq5xP3ewZBNi3Dc66bTp1WdcbKUW43y+1bpYrzw1nFFPBZla59+zhzqmifKe0pOAeTfN5T16hynnD0znFxVvMZxbEeVZ14mv3TOP6U5HuTry+93VPCxm+HBQAsAoSaFECoWSEzTJ70RCFjVbyBbXQpb51LgTexfeWcjUPUQNKTpsN2YLAOwgOvfB8npujfcygYVqboU1miqytcVnTvcZeqkl7DCSv6JJS5jwMfc17KpJqNR7OTTv9I0UmhZoFy0N9PmVDKCRTO/Q1GnJv27fmXDCsjZzKO2qDYZqNTfRTAFVXy1Ig59lcM2QnRRQg8bzKrdT7zhE6JH076YtqMYxSnaE8mUk3GtfBxHLcNhyfAUm8WPrVryOmWt9ts4ItxrPnVcUXIyDG2rmAp8Zqc2Or2U7qMxDiN75dp14hR6rRBbtsRcWr4TyFitM+WJgc9KU86RUmVifSN3ahAple5BOuyGBBaFNHGBNdbXwgaU++E42ltc56l7T980SQbFQd0mw5uTxKDykuTMlqiaeS8dX4Xm/ZpQs50kc1tsyZBxP2t13+uJM8W68f01gn5bXNC4NACX5W60emLOro8s8v5apza6HxNY5hPMnv/lFKo0dvcOEQNbJ0XE21cM8Ncw7yll9sY55k5P9w+eiGhJvZaJbZy31D5GE3b5DjrxD3ueVJvVyrUaGHYn6NFccXMaYJcHFIvtWDt19F8QCAZf6rSFufV9t9uv5u6fXu49905C/Y4I9Vv+21U0uFdw8+UeES3MDn9v+FzB92HxKxw6r92529mgXlM/bdF2n6Yd0RLAMDdBUJNCiDUrJA5hBor8VqbOi9cQ6jyX3T4myKWTPteT6QCBnMQ8+ROs6J76/wzTL70b+KFqWTkzdW0/NZlMpnmBcoh7eT2S8M5ztR62lSrhnySy2I6Xt4Z0q7TvB2ayDFabHkWXRUQwOjY1Be8yh/DU0mNjo9rhOjVB3q1VAQxzFO0JxPTJ+NsjL9yJ5BmQdJlGUdJ69UJE8LLd64fXO5b+3oZOKMNz0yJ2hMrUgLlGblX4ltLRfI1arUbfz9hIP4ZUOOJFTIEZkqTYnoc2YiQN+WmOAhe3+LXOSkfbTzovLFexedBOrThZCgDLbgEHP6KMe/VD+7HxJiKrj7SK3Rit/It6khYt1lTnL81KG8Vva03q8kzZoF+zKvXLzqGeMSJH34bju8f9W+nGeYm5umfUgo1ImjKFpxdLs/osDJtLrGoUKPaUe6teauJ1I+VCDUiaMrnj7iOT+Tn2D1K3Mp5wq/bh5tXaTjtYYVCzfiq6gpp3C5i0cLxxOq5FMhvtWir88uqxjsJn6F9eygBJTx2Dal1mKPCcYdrqiCinb/C0RVUo6tzDFubAiSPkSlXUQIA7jwQalIAoWaFzCHUxL4xS2Bs22TbHbXUdEGhJmaikzypXtG99RvG/+FJsfpIkzyJn4b/tiopv3WZxE/4w6Qqh1kmt1HGcn/ZlpVUFtPx3nIb8k6nOfcunON64pVcl30DyBNlvGXMprfiikg7Gbx1Df7MbonqF10ajOxQPMezF7jD1Mm4Z/hOMah0fA31MhW6DiRuSdL4hmec4ax9zETfXi7qn8YzTAKG0dgeUv+yQaW9bSq8DfgmmClNPslvVgNxiDNYvNUf/ttg+s3txLk22ZiYCW2AmdqteuOcyfirkuyvPeXcXJdfNF/8FToVoz8eRtezuRwJ+/XG+/2fMdk/+tR+K/4vCmGfOavIszhS9mPJY06M+KFXiCXWw0WEmnn6p5RCjQkpMxlXPqo6tiqhhnuyhqxa48/FZ1zrakAjt0K4cDwmkjXLWBZzrdd3pRzH7Y+yapOvt/JUOW9T/wfnfWD6urKxIdBek8ddPRfKxq48jcUpazcBU0XcWdu3RvcZVo5Kb9vU+zYK5Z8Lt81rtf0ublVzokg8pQ9Js4oSAHAvgFCTAgg1K2QOoSbVxNFxklhzHNhV1WTlTgo1Iqg4k0d/P7aLnjRZ8UZOEoE90En5nZxmZp5ymGVyy4jjXnGkXHyhJ8+LCzXeVpS/om/q9Zuu4JYHQU+8OKQUarwVOboNsOFUfKUcb8aExn8qPWN5wycrltQznWDR9nPXyfO8TG1jQaM/jVATs8JlGp5xkmai6hmecQa9rDhxvw+XTZq3lknX+IZJ5knZL6OLDnW/DJVR7zNTmjymxTFQ72JW3PhbawztbdqKkxnQhpNpmb+XdlOb1nGY2Fqmt3VE+zafxK0FjGfMvTZ876U9Q/kj3cYa1PrYdY1bddkES8yzIPP0Y3MJNd72oeQ2PNN4G2Xm/mlGoWbUo9apOC+vUvOyT8O1CDWcrO8tKimnul6wtql4GvRTFmBhoSau70pC+bPR8VNhi/uoxlW8ID2N6fXBf7mTPO7qudB8L91c/L43dn4zb/uWPveZEnh0sHJU0T5wIugVjxOCkW5nJn9VU/qQNCs9AQD3Awg1KYBQs0JWINSIY788T/Cz4nA4NMpNEUumfb+RQg0P6pyHsjR6R5wcqs9c54ZR53kzsAShZu5ySDu5/T2g1ossT6KK1PwSTmVyWaRjdOGe6BT0GTT8R/a7Zw0OgX0BJrkuG65LaThNMnZP1pBTTwKnoolB5DponZ2pbcwTYNIKNbOmSXB9B8jvjQZ2FG+1RsJyf+f7yKqUadtmhMRrfMNk+havGdOkmfpmVTukjPdl4IlJplUnWniL8ZMwC27dMb0h1mKTWVCJNXSmbpGYbqzp1UhGP12e6Djj9oIl5pnDAv1Y8vc3KNQ4zNI/pRVqbOq9lmO2s1T9OAobsdPmEjPMNRLzdeyflOWf5sgh6nxWuBGhxsX+JicPlkKnWEmY8B+Vkun1wRdgksfdtNclofteri/RrUuaedu34Lxgajinr/llHH05I/gvxKL9XuLWpiQRh5m2ihIAcH+AUJMCCDUrJGby1DudnLClmjjy4Ozs535i2h+vB/e7JdQM3hap8XnoTh4P5OjYApXk6OhviwzyvhE6l1CzSDnE5IU8y4+LrCSQyYzJwSJ/q96kzz8R5Pu/qFD7x4A65xUq7ZeoJMdQyxHbkdOcNHpylbg/n1OkDXZvK423IiSt82OO26sYw52NCOfUpTnf9pvbGNddXRaegMeT1iSDSosnE6sk0uBP5NNMVHUdjBMzvLeTka1B0beW45996kbaTPI1fjwT+ySH2dKkMb5Z5TLuXw1c0UW3lbhtLJ5IZVH1arJCJPtJmAVtaBtWv3hxNBk63G7Uaptovuhy1eLO+EeP+qG2FzDWjHVRt7WYvPHExLjxwMzy8kxYrB9LGhf8Monkj9ffJIsi8ws18/RPMXGVuhOYG2gfT/nItlMHbZjPKNSY5hrGfJWVoDErt8Y/+TtZ2RpdAZFqLFPEXOutRkvpa27wnsctk3jxx6a+HI0+j3DBTB0bAqJS3nAggo8WlxfYOpjGz82c7XsCfVoW3yvO8fDkSwJdn3XfM6bhdd97YRXtQ+xv3UDfZl5FGb4GAHBfgFCTAgg1K2SpQs3Y25Mc9R/iopfS64E7OMkQtDG1fDFldfcWY8TsgHhRvElxwqTLHK8FyyHN5NZzEmhOu97uoeNlnBgnwpPJWf2raEMh6Xee4VwKGLR+fpnrjuJnm6rncmeZBJpPnXJQR8HPs6x8+mR8uuNjQU9Ed2ZZPeLhr8BImshrHyeemGFc4aDjG3bqK4TfWrpvRme7xhfd4uOpfRnMliaN6c2qc2qONtq8+sT9pcE4c4/FzpBlfHOrDSs2mOLqUmr0vSaFOe2U3PwmX/8uajyKgOHml1sX3b9DK2c80TDOENMGYYxoqR0cG+Ls8WtAvR/BHy8zz5gF+7H4cUGIET+cvHTrVZJD8PmFmnn6pxRCDdd1xxcI1xWjbxO9SkFfz3OLUL4sKtRIXCa2wvqMP4qoFtnqmWYs08TNAfRLj0TxfUTddx3nd1JuxhVkDgNqcD804Qg/BdPHBr+/SfSno0UWo3PkdOh2kbg6cdb2/Yvr1x63iweGE6vUi4eJlXu6D4oKRp4Yqvom529dfroP0SKOjA2B/sS4ilIEoSSfUgCAuwqEmhT8Lwg1q0MPpqGBXSaSk0eKTp846gEwRlzQhnScQCB/h76PEDeRUiRPmld1b9dYTDKa50Yf+RuzPFcM196p+7YvHK/Fy8ExsCKCR/9NyV/F4S3fNxw9y/VHiwk6XsaJcSIShxiDIBZ9jGq8keKWo0XFaDnqU4t48tozFiXf+ySvJmrKqImdDEvcrTkMLK5NyudHqD7JJDO4SojbrBPXuHox5vKUt4y7nJbohDcl/TO3XsVtaZEtaFt7PJGVr3+1qSR1wfB2VVYkSD2ZFAm0YagFAo6zFV3xMf0aLUKY4zmkzossZdmYkG9nSpND9PkCT9h3s4EJu67rUaGD0X6WpBxMQq4n8qRZfaWOg7W2KH9m3jrhvvmP9G/T4sBpdPuKiNCkjHlvhY5TxpG31lO2D3gGYUyfKuXjntgVJ+RwHDiva58DX86UZylYsB9LHnNixA9BteHtWENX/3ZeoYZ/O2P/1DuR50UczPJYUdJjyJTVfLp9xQo1M8w1jPmqxujYsVaMeYvrf+heKcYyTewcQI8rHJ+Ylyay/TmvxBdnniQnbjl/RXHnC+b6kkyqsUHu76w+ifMrpecM3K4+zTk48D2mbXl0ma19e768uK/y+2AXp583OWvXdTLyksAV7fhz1Tc5Apa39ZTHEflOx0vKPXhvLSgGVmfJOLYV2rrK+XiWpy3xnfPRmNEAgDsChJoUQKhZJTJRl4E98EZRJpHRJcSBwTlp64D215J5xBOmoGFg8+D4skWdd2JYKQOcJ/LF4ETVm4SbJs2MnvjHrJjQqwiM4sQK7+2ufMlS6UQ7zNOhSe2rHg1+RWcXM+BMZnhi905ttfAQR5cVKh248cpGjixdqBy4rPuvJU0BoeQ3T3gPgoa4nhBOTjqH/1So9rFNFTEQnUm5rFgpxzokNaPeOsvJGaE85fCW43/VD6188FGOHB/x8yITcftznfJs6JbOo3mp+NF28tridA5C95a8LlHJS6c2onao/O9kfXAM/oM443QKWjAKGDNyv+iEePyt6TjVFOMglJY/Q2q/yJK1V6XOIvPH312q8v2to4gRbg+o9TJH24fhPBpeuL6Dgm8c7f+qXAfj/TS5hp0rEMiqHMuwtWDqNUrMjMZz/LNLtafbTll7OTdjmoTg86Ue9E5zk/49lNGdDb4ll7fDEq+ndeobKxvDbdQRCUy+a6J44iqHOH853I7zXCf1McH0u0/1pxbXhWTBzn0LH9gG4Ww1yFFWRGIl/IiRGD3RayFHwgq3n7KofBkqPRpdseH7kI3pb+F6P1OepWKxfkyPC1njykW9isssbIy5TPPWDlU+hGqj45+jc1KhohJqksZbM/P1T+PP7pjhr8IUcboYECB9wWLnJCwWij+0yj8daohhrkSK4XkxIpinnWv4+Roab7WQYujb3Tq7ZfC9k2YsU+g5wFPTdh7tINhQXqMOVf/227l+oTXRNzOO77pY0XQKKccG8bnUFEfSTyb7nuFlmbJWzvEvND8imEsaI8KtgZna99cGZf+qUCfi/N7+yvOTB/7x52GUmBrc4it1ai/rzn8c0ZDrxn5w66kWYN3fDN/naSfUd6sXD9pnl3O/SJnpayT8FdMfAwDuBBBqUgChZsXwxLB7VqLcXp5Kr6pUPmkFTlDgSSMbMY5DPGubco/53xL25P8N8wA16ioneny/kzpV+d/lN121P3hInWP3TUT+iH8vz+GJToXvmRUj6iHfVxwfPsj69//ccJ4pTuW2dt3rgt/330pcsrSV2aKs83/3utxb/naV99bYbJT9pQbtmDBp/M+Ad3JTkcumTvVTLqPjBnV/jtlAdo0l5xmSvmC8Zi2HEDYNLipU4HIuHvPzXtSpOzG342suxakjT4r2K1Q/4+sOq9RSDjnHXxpU5Pzeflyk6oTz3+mMRUAK5KEpZNl4NM0V5QQXSXthv0xVjldlin8bD/Ej4KSp4KS7zgZT+VWd2iEno2xwHOapfi3HQHO5PJNniIjE6efn1S56NFqku+Jyqx9yWcpJXWwYVi9ihCWnXnBcn4tPpCrV+NrC3xVqfuTrl9Fd/upzHuY5HioPE30vcV38WKeSri/7OSpwvep8N8bc5XefGs+5T9kvUv4pT9ANxmyqa0RokXg+V3WQry2ftalvOu1qpjQx+vmHXA+el9hwN9fj8Y+OW2Ych6o4b+V60OBrE1KvjvHdorLBN8oEsjLG6Zuk3sXXYftTnYrS3o+5LjwuUOU8TV1kY/a8TPldvp7zpPS8TM3PHCdOU+VplutUifLPuY8I9V/T36qndchpf23xc6TecBuSOnxQpvolG7mGeM+UZ6mZvR9zxoW9bScuk+MC1xkZI2XMlLHEcSYr1+WoEV3pZ3M//LZMRW7rjiB9UqbyqVt3tcEvQe49IRDEMn//5JQFt12nHr/gcjCcUjS6ajpOXrNPuH9y2pB7nVMLpM482SKL5xJlzouJUkqca5jylfOd+xQn7SM2jp/WqSfHO59y337E/bOkS+rMUY1a13H5M2UsM8wBnLH0ZYdzMoz9tU0NHlfyTp7WOI+4vkh+BppA/3WOypcDGl41HJ91FecFjuQTj79vOzRcpOqmHRsY15F0kQrcd1VlzrDPdey8Q4M5TgEMIat4JK9epBNLZ2rfnL817j9LL6RsOc4H/O9THrfjilbgPrp5lHfb7qsSFY+aznxm+KHi9Gmlv/NU5LoY6qWcerrN/VqR63q0b1O/fZinCpd18YV7vzA8LxYH5FxPtx5EVjECAO4UEGpSAKEGbCqyaiDnGE+m4ybHZI8G1DkrOBP5tM4IwZgG5yWeNJepHX2jLvzhfP3Ro+ZL9wjU0NswAMAaiHPiqRkq/0GRLVUAAHBncLfuQagB4O4CoSYFEGrARqLeLOVTnD4yeCdLuSOODoEZWQKdsabsfxfG1HnBxiCWHgOwXvQ2lDjx2XHeCXEaAHCX6VP90LRVDgBwV4BQkwIINWAjcXxCJDg3DOD6azA4lQSTXMkJDxGnljEYHagCAJaMuwVW/BCJ80/tf0ZODpKtQQXZLhJwKuz6vQn4ywEAgLvGlzoVU7yoAwDcXiDUpABCDdhMlHPEZ00aJlXPGIenIIZx38mv7Rj/Mx4mJ64AgOWjV9A4DqPFqS73e7vuSjbtS8XyHPzKyVjcLo3HgQMAwF1gSK3D6lSHygCA2w2EmhRAqAEbi+McsUjbeyVqfBzQKOCUbmyLM8c6FR5uU/Gsu5iD2fuGchC7/bRKresh2QGLbzwaUPe8Qjlx9pfgTBEAsCxc8SX/bkDjH00qyMoatVpGTnbZ+atMbfFFM3ZPHcu+6GA7AADgzjJ4W1jgiHMAwG0BQk0KINSAjefPmIZfutS5aLgnUXBoXnap920UEhnAjIxtGlx3qX3u5mn9rEGtj13q/7BpDOELgPUhJxQ57bA5cQKc/b1Lrbfud7EnaAEAAAAA3CIg1KQAQg0AAAAAAAAAAADWAYSaFECoAQAAAAAAAAAAwDqAUJMCCDUAAAAAAAAAAABYBxBqUgChBgAAAAAAAAAAAOsAQk0KINQAAAAAAAAAAABgHUCoSQGEGgAAAAAAAAAAAKwDCDUpgFADAAAAAAAAAACAdQChJgUQagDYAL7UaSeToYwK2bcD9QW4vdjUeWF5ZZrJlKnzW30FAAAAAADAPQVCTQog1ABw8wz/KVDmUY16tk02h/HmN0mQht9ueXZPtynzuElD9TEAAAAAAAD3FQg1KYBQMwdfGlR4nKPcnKHwHqslbjc29d6UVHlmaSuTIet1X303DzZ1jjKUOempv00MqfOySJWPI/U32AjGfWrsb1Ems0Wly7iyGVFrP0M7b9LVkdGHitdXbFvT6gUAt5jPDa8PdVadPWtBzATzcS/q0ojnATw2PPRXalY/qa+Eu5YHow5V9DjopKlKGA0BuDtAqEkBhJrZ6Z/t8IBhUf51hwajsfpUGFLrmRpQDttsfvuMbTa0X2Wd7woXMLZvPc5KCTbSH7vlXfkvWA9mpUdVvkf5Q7DGBBlT77RAtU9x34Obwv5Qdtu7hIM2T6MN2B0qz1JHxlK3/P4CQg3YHIbUPhRhMku160X6vAh66yeEGrAo3xqUu/N1aUydF+64ExJqNHctD367YyiEGgDuFhBqUgChZlb6VH+UoeyZ4e24Mshk8DSKMT9aVODvatfqb3DL6VHNedNTpo5JQ/nZpiJ/v2WqK0EcI6VArR/q7wjDixKVLu7olHPcp9puhqzDGJFj0/nWpOLDLdrmkDnqhMRZj+saWXF1JAn+HYQasFF8rvtv6+OEyXn46Y6N8xqWo4tqbP95W7gLaVgtI2qdpKgfC9al20Lv1G2HRqFmI/IgZXmlgudakp51CjU8/hrzFgCwNCDUpABCzYyIUW1VqWt6megYZDKY5Kj5XX0WxBk82SD/qf4Gtxv9FjjG98jwfc6ZSOXeJ09VXP80dTLKOb+7VHl2d32bjP+ruEbfcZeW+H5+7diXpdiVcv03O/P5p4FQAzYOtaLGyi13hd+ChmX/dbzQfVu4C2lYLX2q7UOo0Wy+UJOyvFKxfqFm9G8RQg0AKwZCTQog1MyGbHvaiVkh4RhkMphYNfNg8r1JuUzMdwshPk4syr2D75t1MrooOOVt9j3i+iXJZHao/kV9ZET5p4kRKuQZpcu7u+Wpd+rutY/f9nUbGFLzWYW6xhOd3Howlw8jCDXgvrCQYcnt7/FtFznuQhpWjMyf0tQPCDWbkQdpyysV6xZqxtQ9jslbAMDSuDmh5kuDKud9sqP6xx+b+hdlqvy7OYv8IdTMgmx7ijO8tWHOIcbodlYP7Lf4yiUz7lKFn7uYnxQwG0pgiZso6W1wcaKdh7t9yixUuAKcs63GylEjUfC5jbjbCDO3fJVZ4ta0RdomhBpwX1jAsBxzO0naOnobuAtpWC3ip20nXf2AULMBeTBDeaVizUKNyj8INQCslhsTavSb9oy1TfmjKtXP6lQ9yivP5Vmqfd4cgxpCzSzYNLga8H8NTPNPI/waUPfbClYO8CTPyhSpvTn63z3AFVhi/dM4ZcLfx/kt0Tjbp2K2ytGI2gdunZJwu1edGNCTybhtX7cA+1ONCqc9ozDrsEjb5N86ZQ+hBtwRxj/71D6vU/28Q8PgCrR5DcsfbSrvSv94i0WOu5CGFTO8LFM2bf2AUHPjeTBTeaVijUKN3af6U3elL4QaAFbLzQs1EyHLxtZmDR0QapaENsynbnVZPo4vlHl8YNwA4y8NKj4tUenpNuWPebLOn9mfGlTeL1D5hCfwxyXKHdap98u9XjO6alLlME/5vyux13iMutQ4KrrXnpSp8LhE9Ql/CmManJf5PmUqPclTxdAux9871DhrUNc0edb+aQIrpEb/8v3UscrZB26b39p1/5ZQNayqcPqKBKFidFmirYxF23/zhCfwc8nH0j7HfT9LxbOeKwbZA2qfcnqPJI8KlN0tUe2/NdeKPyPqvi07ZVw5q3K55qik48eMr+uUV/mhjxi1Hvp5VDyP2b7HZdrkcs87961QyVSmPzpU2S9RmetJ9qhJAzEEf/W4LhSodFzlOheOyyQ2DS5rfF3RqYuVwxwVjlvufQyMPlao+NKtw3Es1DaDQs2vPrW4bCUddSf93F7e8rPjE+MideJMlwen6e88FY+4TicIR/bXNjU4rwsHZapyGVaOOE9PW9Qz/EaurR+XqSJt14kX53HMtZxjyUfLpjmKVdXx0qua8wKkLnXsqE4dLrescbWilGmdys/znHdu/5J/XqbGVUIGxNB/q+L+IKvSsEXZx9J25fQ3N95bu+q4fq7TZX1c++e6SpNcz9/z7+uf3a8c5igjM9H8VYY/Gx5NXUbcL2w/LFLtcuCJi/bXFlW5z6jKs/e3aftphVrfJvsqL/2msgsS6n85v/e4rp41qfGS2+XzOrX/rTon0uTPA60iYliOrhpUfVmlGpdvaW+bshP9/YBahwWnL3HzlvvIPbcPcUOZ2jOt0oupm6q+uWNTkftUHisu/LwzYfO4Ifnt9MNSP59zf3JmahPLTkOQNPXerbc5rrPyPK/dBYTh/ms3P5xxjMthi+t1qO5Kf38ubVDKSl5IFijH41Lj4zChn1Xo3x5w/ZA4vuJ2zXkW+i3XzdJ+3nm2M7+ytgP5w+HI4NDaKFK4ac0+dH/vjM9yr9Dv2UBX5S/p3X7A3xu3NU9nlj5USF9nfBYVapw5ldPX8JjC8yTpf6RfiC23VZVXKhYVatyxvXzo1lP35XmZ6h/bVNvlftJpZzZ1Xxd5vmiev0kI1X2PdGOM03/uyol5frlJuTekbz7lvvc5fz+l7Ui/WOY5q/TVThr4t9ULrjsH1sQhJfYV97Pcpq2nPBdSnwGwadysUGNZynB3J23xk9ebBULNctCOY6dvdVk2c/rA+DMm25ZjgOcPSZNVI+MuVS01KCojNMsT062nbOw4xrC71cdpMzo9cgT2Pg9uuzxpDQgm4rzVuI3sR4uKVjbs6FIc8urnKoYXRcqplRDuhKcScRCttzZNDoCC4wCY42n2TyP+BuS3cStlNMn+aWIJ5OP4oxwPbVHxdY2Ke+E8co+Rz1Ljq/pg5QypxROGLOern/uy19syrDJz94BLHiZvC7J5glNg4zfLhm9gyvmrTSUxRL0y5Tx/suMeGaxOV8seipFYpY5+tPMb/pzr1uQTZal2lqwDntgGusPh+zztJK2YSWQB/zSCFmr28lT4mydbodmb7cQ3k8lT/Ys5dvZ/MlHjuvHPMBR/qftWZocnitHf8UT1JEeWVaTm1/BUcfylTnkug6AILds18geNiAE95nqX53iZ7q+xqX3olr3RyIg7ivU3T9Z5Ut38HrnvH7feTRglv7id7PE4LGUa/InTR3DbZYM0LobxuPVZ4l4ICg3CL463GLs8MZ4wjjjuVTkt8LQb2hI9exmlQR/dy3l11aLKy3ZY5P2v4sxNChdDfk6FKtyu/K91+sL9pU/yscBSJ7IS7/8C9YfbnZsvDRo4aee6e94MC1GeYdmg9js2/q6D9U/aNn/3iMfWiezQW445vktZjRJI3weuby/DdcfPO9Nkjuv+mzxZu9zn/AxH1P7a5Dq3E+7DPJachpnrvdv3OX3N4wb1Q1+621OtpzXq/gj/SsqldZCL1B9GVgjJltYER7Ljb00qsTGcfdWhUWj6OaL2ERv50ZWos6wQSbxW1SUp3yv1UQhOk/TZ0bxLzWx96Px1ZgGh5veAmuIQfJfLNNh3O/0r/8ZQbistr1QsItS49Vv664ka/I/0s5PtLjFvg8wxxgzeubZC4aBE5YiLDMln+V3miZ4T+8iYkD0Jjx+CrOqV1UvhuAZXY5vnsABsAjcr1Bjf7m0eEGqWgZ5ocZi21WXZzOkDQw8W8weLyh9nS6n9oeyJEs6/5T5W0AkrT5KesZHwgI1P2R6oJw6mCeynqiOKhU1gZQAetgNlIIYjT5z4Wd5g5RhUJWo7kxR5pjwjuoWJDSsnnaatTckiDo3aVJTfTt3Sw+njQbk4o88qR6RS+eiv3pvMI/1d7Fa8JePEK6Pz1WX8ue681cmcRqdX/eStYw6+AVFgQzaMlA/nv37DJSuc9MqVz2p1G0+Ww3mi26nhmc4KqchquJ9tZ3I6d1++qO8oLdSwgdo3dtGuUWFsH9+bbBTwd8Zjz7VQwvngtT2d1xZVJtq1LisOXjkGJoIT+ePW68xf8fU/eSJsnpQ79Tlu4i/lF/pOG2RcHw2F59bVDPdhc5QNl4tTv0L9jKDFR5NAK/GJOJyeuYzS4+bvNm3LhD9ad1S9zPy1TTmDiKhPYguteAkQW3aOgMzfGfo97TQ8tq/Thh2HkuEa/SJk0rhetlDjpy/zqErdaFPQeWcQ41xxLU+Nb+qDCDLmmcW3ZaZh3novoouUUSR+XC7FONFC97McouOgHnuMjvCVEZt5ooU7Hzlpx8l7yYugUDiL4T/lWp0H20YBXdqdOe+mM2sfukidSWiHQmweaCF2xx87gzjjYCZ8MMWqyysVCwg1Tlzi2pYIkZPfJY9Pmvnamm4bubfmdS5umfN9Q4KZO6aa4+OOFdHvnNXrD2Xlejv08gmATeL2CDWyZH/Poq39xoSKumog1CwBPXnjMGlQrhjHaEgydjcF14jRflb0xD3OGPAnFBnDKVs2dfi7iZUR2k9QaIWKTd3TAuUO/TeFTvvU1+gJRbS9qgmLsR175R1dheOS+shp5xSwaatuorgikWv8a8OQ89FwBLhetr4e3zZavArniX1Vc7aeNaKrPpy08/UJ24L022uT4Wd/5O92a16ZyolrenWTdyz6xCloWpQLCDwK98S2SFl8bzlbjCof55q1K0MmMoGdBS3UJEx2PcEzJBpoIz9eiJgwpLi+Oz4FjKIQGyCv5S1xzl2xpJCl3BbnZf59NJ+nG57JE2HzpNz9TUxfJ20ykE96kpx50TG3Qd3uJ8SWNGgn2FHfQ/pzw5H8nL/5kGE4RxnNgM5f83ik8zdnNhB1vQtsgQkSW3YJ9VWnJTa/dXnECFP695PpWZ1QYz5FMcZg1KLbs4RtjrHjxvLSsFC9V6u+/DLg/vJFbVKs0sgLDxGydzk90S4ytg7JOOGOSyZBTlbjiDi+xfEL5aOOdxrDf9q1XA6OoGgav7kcC9PG7Thm7UMXqjMJ7VCIywM9r3nciNkO4woCvsi+hvJKRUy7S4Oqi+Z5kMyh5hNq5m1r8X2Zxh9HvL5f3StO3JE5T1JcAdhUblaoeVyh+mnJ29uY3c1S4ahBne+TnYU2qCTM+nZ9USDULAEeCNw3SyvwTzNli5IYS5n/qVPP8J0Oc006VsBY4uJUNT0QJRixehITyNOxPaLBVYtq+9uUM/kG8Rw6b1HhtEWdL0OyDYkf/+jRQK36GJ7LNo1JY8gz9g0CSKKIw6QVSJx+YmJV0DTGNLzu08hJl5pURVaxuAxTbr9aFlqo4Unbfo1aH/s0NGW+Qr+JM28dE/TbqsA1Y5tG37rUOi3Q9l6FOoHJlc2fu2WqV3pMijGSX+4qqck3wPpofWuvRI1Lrh9uBi+EU4cW8R2VYPh6aMErWAf0ii5uX804wy9iSOn0x046UyJt3LYH1HQEseUKNfZH9abRylPlvE39H7o/cRl7EfdX+0xsT/JYYOLPuNsKI+O1I8Y0qCZ92/+EDSHZDhaqj3OU0SzMk78eU54be2+9wiKSdsETaqYZNTF1/SaEmlnyTo8XyWWl4xoV55aVhsXrvbt1jb/fbzj9bG3Ct9sU9HzlY9WcH94YHSMSxjGL4Z/iWmP7ZSba6QzM2ocuVmem1NOYPPBsjVdd9UmUSF1cR3mlYoH+WtLgzJMsyr9sUlvmhUEx2B84PJL7AGH+tjZdqOFfnrj39ueYA2o4q8tlS3edWlcDGgXnV9zu0tQ5ADaNmxNq2Ahx9vQGxwBvG8cWlf4NN9AxT3CcwdEqLuA8bj4g1CyON+DOM4hMYRlblCoxb2xvDG1cJhixXp4+KnqO0+psnHWveYCKXXU2pu4r31mbG7ao8Nbkk0TQYkZUMEoy9v24GUUc757TBBK1Gmbet3eCzkfTZEh/t8YTlcZXVceRajD/zasE/ZVAsduCPAFih4qvVPmf8STraoqIkrTaybunwSDi7wrOZM4PVkQMmg23DlkTW75mII1QoyfEHDzxSf8ulHfm0HCcTfuTztlFAZuGHxue88vut9HKhBp5luP/wfnOD1tPoo4b9e8ztHPgnroYG9524/M2CS3WBspGjDwRlV0jcDsg2vepLluQ1F8OM5fRbMyXv4p5hRpJpzPHia400u2dx6K49j7FsNtsocYXqdMa3duhVaLLSsNy6r32v5b5O+Vqs1GPWqclyv9dpealCPQJQo23XWrGtM5i+Ke5lvt750VQcA4iK22SVrckMmsfumidmVJPjXng3yvDfaaxXnih5Y7b6yivVEzps6agHes6adfhQZ7K3A7CPndckvsAYf62lkao8YRtTm9XxW8sK3xlBZt6rhOsbSqetiP+6wC4PdyYUBOHb9Ab3oD/5sFtbottfiDULEpggL4l/mluGr1dI96IDUxiZhYyxHBsOqdPaM/9YiBUrwx30YZ7dGVMkrHvlbdZxFm1f5ogejA3rUrRb/cmt42tFuf0CjlpK3C6gfUqWobT/dN4W3qMZZCAnlga2qJePRVbNmJwvK04p8x4YsCTOSfuy2ibMwk1XB+1UDPz5Ho+oWb8reUcK2wdNKkfGs+mG56LCAn2NzkhpRQ6QUOCOLF2c9v3B5E0GV6MqCDLcRYfDvJPJeJ4hhWXYz66jWZeAygli+Tv/EIN1wn+rbx02hGnl+oz19mlRXnup2LHxymG3WYLNQEDOKXRHb5uWWlYTr0ff6q6IiSH5G13NvVe57keZ6n6cRTu4+Pq0KYINRx3d+vhtjeOy1YW4/aeVMzahy5aZ6bUU2MezNHP3xGhxuHXgDrncjKhezKfkw8SdmvUi7xMSu4DhPnb2kxCTXQb3XhEvYu6c5qmd0qbhAl/fADcDm5GqPndpyYbiQV19HAQXyWdvi1iXUCoWRDPqF+lURCDM4hG315OY0CNvUAHP0+wKnM5uHRJsZoiMDlZLE/1yThsTBocB2oxYELo4EmmMznRxj4P8N1vqr1GRRweOPtX/pGWRv80kWscHJFokW1JWswKGOgeemuZv23M/tqj4dxlNh/6NIKJ7V1aIAutqLJpcKW3dAX6yhknevGrnfw6Fe8XKYB2oDhz+1I4bZMnt4uskNTGTlIe6LwMiv/ecvXgqo5kvGX7cT5EougTjqQvmPiBrpvxk/t5hITB+4p5xekfm/rvxSmnbk++0Bt9C71MtPAndU1WkxW8Oqe27f0l9V5W+clJVeorzRxlNAvz5K/HAkLN4G2RGp+HrjFxUKTSoRyN36SO7j/jWLZQI/dLa4xGmCfvpm8pEbSPLE5HyMH7stKwhHov7Xq/Tv2fnM44R/6K/ht3bJ0QIQW94iwa/3nrfUz9kHoxUU4pRQJps84474zV3Gaf8Zi+wBg5ax+6WJ2ZUk9j8mDmfn4d5ZWKBYSar02qXJoHcfuLe8pSdL5gzluOg5ee+dtafF/m42190tvouByqMdvExz/5O2mri6zOBuCGuBGhxveCHu8JX8KEkYoVNYlsrFDjvXFYgX+aKThG6Tw+MKSuOb4k5g2LVFT9JiLZANYDVfyJReKrRYsfA2rKEd5WbvIoaja4ZcJg2qakJ0rRtqgnM3oglb+93+vyViKOI8wc+Ke2mPzTOE7nog7lpJ9Y6Cj3+FOpvAmotxpEhJv8AqJQMoNzOT7binfeG6mjRv80MrEPrnSRU70kDTF+gISgryEXbfAY2qJe6v6IJ3qBybheEr31cnIFjlsHZ1zRo3Da5qLbzlIINdqhoRWapIk44NbDRKHzZ5uq56rMOP8dUS0xvSPqvnNfQHirk4z+GPSbW23kSbmEJ9iJRoZnHEz+Jn4F2oAaj/1Js9cGEo01juerprsKZh50nfqfOtUjYoybP9tUu4rbTjFHGc3APGKDx9xCjbR3szPgqUwxrjddqPGECYN/Hg9P5I+eErO8NCxW77n8Dkt+HNTYGe0zHTgtrkPeGN8lepzU8ec65ZadGLhuvTeNyZrxlxa15ORHzSyG/5S65KNfaBSp9SHq7HsOZuxDF6szU+ppXB7oPitR8JAjw+tKtFpDeaViAaFG+rPAHC2K414gckKhOW+DQg2nec62Nl2o0fUysFVU8tMR/s2MP8pLR8NODQA2nJtZUcOdgjRea8+0nM7t8GQ5Wy/Qp8FHzXQ2Vajxt7PNZ9DNj2sMLeQD4yYwrqaYRA+C5smBTCTytKUHXz0pNLQf9z5mkUKLKmFB1TX4/K1NMmj6hr8eZHW8pE37KzT0hDu4UoZ/v5uNCAdqVdEib0D0JM8gZOh06WXrTh6kfYM2M1p4syaNaDWZj65g0ZMgXyCTyeBWeJWhNgRi6smY059/EClvb1IbFWokvyVPslzWwRzXgkJm8gQxfqqsipjctpUG923bwm1TG8yxE3m1csO07JkNfGdFUGSs8RlT78T1qeKij5blCWTMiiPZ1pJXQkji2+BfbSo55RAv1Gg/GKZJu3eahkGoiT+txBUF/cmvlK3EcSdS5j6yxUOnZz50e+fA7TCUa9pQ4RA7IZ+5jNIzl9ig0fVuLqFm0ulpKqYY10nGjSuoZsOCAfcPpTQr5wzMl3e6/fhbaaK4aeB+cqVpmLfeS/xzE8dKu8dHy1Y2va1Q4TnD5rE12vcw2lnvpFDD6NWKf1VjVrBwuzooR4QJ9WIi6qT7TWny+VPqUhBvhUnMHGE2ZutDF64zSfU0Ng947vRaxTHuJZiUz1FA2Fh1eaViQaEmTlBknLEo0n/r8SnUl8kLhNB4N19b031ZnNNpx8cpfy9beb3WqMoztm+VF1sW503AlBtfyxzJcg7eiClpAG6cG/JRY7NRkKXsq05oq4EtjUY6O0smXuHG5k16OSzis2IeINQswB826tXJNGkmBUtFGaWbsoUuLXqQij/tR8OTfhkEd+vhPbq/+tR6kaNcwAeCM4Byu5oYiEeyJHTSebeHEjv8CYtslZIT2mTy5hqZzn79oJ+S4G9+cxlY4bcY7gSVf+sICO79ihfR57viRvxqoenEb/HR36k4OE7Mo0LRMrGp88KaXP7+Z0SdV9nJYzsZbYhrgWz4T5Fynn8RH9dIiMRdtrlclCm3x5PG6NsjnpA5gh2HoGEh93f8KPw32VYGb7O0PbGaxqbB+yJtGcT2VCyrbToTzOz/397fu7axhH//uP6Eu9xW4OIYUiTwKyz4NBakiMDFEbiIIIURKYxwEYSL3CJNECmMSGHEKYJwcUAuAnJxQOHzDchNQC4CShFQioBcpFCRG7ZwoSLF9btmdmYfZ1crWU+23y/Yc2I9rGbn+XrPNddQ/bRO1fBEXeVvZqdC7e8xv3PdcWPIDAPPIZ6vTOXI5F8H631C1f9CdVO0pZfcFvVP6cl72AvgD7fbV3XqfnSOVpcTSyG6+Sf+AjXxzIWPG+U0197XlUdN0FtMGyZi4ht+YrnNLhxrgNPSOeI8skrU+hGsXfb3FpUPuM++5dCn63I0toWOgRFdCQ8wcxmlQQnBOv/DuIKm2fvF3b5p3JLh3bt2qV7y4WyHyVH5TSig5okKBP7bkB6BFvBjREnd35m2LeqFLs+jTwhcXOZzGd5p884L8umh2s9jNlpDxqj9Vcz/eCw6C22BVSz0GWat9/aQ26xo97moR+qN9m7j8eofbnfu9zxRIiziiLZY/bfrzI2UsDo6KwXEiMkPToeIIbfP7wcyRNT7KlUvwuWsBQafwS2OE+d2E6kRui7tJS8GSbSHCY9T84/GfmboQyXz1pnkdpicBzyGvlexhcJjokjjPvejoZeXWl5pSGx3U5DjKH9XBHQPZ6TtzI8iQosW0X1iiphHRHZCzDHGuHNg/t0St/dw2xEevrkjnjf5v6eFN0M9kWPui2xonqnHH3EtZ3stAItgjcGEufO6qPuCUlq0vVukymmXRtEelydrXaruWjEnpCwXCDWzwIMjD6rOketOQDLrEf9blbP8t3yvSt1luyBKLxItCNwdhGEstyilGTjYGO2dlCm/V6baSY2qKt5B71dosBSMe9Q8KlPxsCoNg+phkUoxx+H7GX2uU2mnwIZFjSrPy1T/xIPdzYCaBzkqHJSptBc++YcnIKcl2Z5LewWejIWmHeK7z7cpf1D17hdGTqJuE59GCEJZymyxEWgqf5kGTv9LTsN+mZpfk/Pg1ohyOq1Qeb9CVWGUHVeo+KJCTX528y+PqHtcoG3O2+rLElXO4oOMji8b3I+K8mlQ7ZjLl5+pdRkKXKnwtqwNqPe2yHWB68zzPBW4HgRO4Avg9NUinyrCuHxTodLfXG7nfeNpEKmQYt4C2ubPLjX4WeSzivrNedt8r/JXp9GUEX6EsHUhgg9yfT2u8fNxnXjdoM63+Dphf+9Qk/O68HeF212dakfcpky/xQZe50QEjs5R8ZjT9ZrrwJu2Ciys2onFbeFFLTq5ZCY/OlQ/4P5yT/xOg+r8/dq5MAb16qm4spQT/SmX3+BdnioXQxpdNmX8k6oUA0S/wGUXN7Yy9rcONUTcuBdVpx854ny48Budt0DE9NgKryY7iBhY2bBAZWKOMjIzpi4b3DLIssh3OS6JuUfeMRrZCKvy+CSCrMux6pHlfE7l7/i/qhrXnO+IYJXyc3JF1nRvUTbcl/u9Aewe1f7SZWe+AqLU16YcM0WasjvO/zNbOX6N50L89uCUf9P9LWfMFZ/LnwaFfvt7m6r7/PpzLuOjCjUCp4ClIV3eiTwz5Z0fGVBd9FXcH8r6xnVVnIjWN41bPm7/DEGm1nvxTPyc2yI/dWDugIem3oKhy8SpE9mX3gr9+LLF7Y/L7Zkeo510yycV89pnWbJ2xek6hj5ejBtnPO4G6j2P2bHxjLivPq9SkctEfL5y1Aj266ouyTSquuTMyZy6ZEYYtAmnkc1J6j5Ukb7OxLdDWU9nyIPJr578TX8aa2e9+DFl0eWVBlOfJetitN3FwnPl/FGHhtc8hh6WnLTzeCPmE+WjhDkij7kNOT5x3ZZjk1lkFcwyxmihRniY2V9bcp4oxj/RjvIHdWpfGeY34w6V9xrUvx5Q562Y5zrPIMbc4qHznTDjTxUp/ma3sjHegQCsnzUKNXcHCDV3k4XEwABr4fbxaUAUvQ3ldgLYIkDbBA8R+3ON8lsFalzZBiF1QvZ4SN0TEc+K2+nStmICMAsDajwLnawDwBLxCzWrQCwYQKgBmwqEmhRAqLmLTGQgytzU7UNg81Auy6s+yv2+owPQrl0Ac+LTxMX3AOBeIrefZqiQEHBUI4N3IvAl2ABE/DbvtDYAls+qhZr54wIBsHwg1KQAQg0Aq8RxJ79NfBpgQATTE0LN2o+odIIo3rXYUQDcChXrIzbYpQ+xwhuJbQTAUplQ/12erEDgdbHtaUoMKQAWzGqFGp5vzhsXCIAVAKEmBRBqAFghMj7NKo9yH1PnUOxRX+xV/GAK+bk+9Ckjq1qlikXHp4ERCh4U6gQUcRR50nRCBjfPkJUmdg8AC0OfTuidhij66tud+gbA7OgTpUyB0RfN6LxMtdBJbgBsEhBqUgChBoDVIVeTEZ9mYQzPSiqgojMJ10Evq2vyaJGTMMSnAQ8RGfxdBFovU/PTkMa+gxEm9kgGTC4+2qbSSW/+QN0AzIk4RfCJCIzNdW/ys0PVV7c/9Q2AtMjA6CogupyrqGDl4cDoC+N7k4r+I74B2EAg1KQAQg0Aq0LFp3nBE0TbJtte7yYdsCgmXJaiPEfUFkdiIj4NeMj8mdDoW4+6503nZBK+Whc96v8YE7o8sE7GV215el7r03Axp74BAACYGwg1KYBQA8CqGFJzR6+m8LXT5FfAXWfyScTc8MoV8WkAAAAAAACIB0JNCiDUAAAAAAAAAAAAYBVAqEkBhBoAAAAAAAAAAACsAgg1KYBQAwAAAAAAAAAAgFUAoSYFEGoAAAAAAAAAAACwCiDUpABCDQAAAAAAAAAAAFYBhJoUQKgBAAAAAAAAAADAKoBQkwIINQAAAAAAAAAAAFgFEGpSAKEGAACWgD2g5n6BGl/V38DD7lL1WZ36N+pvAAAAAADwYIBQkwIINQAAsGCuu1TZzVP9aqJeAGFGHwr05G2fkEMAAAAAAA8LCDUpgFCTntHHChWf5inP17aVocyLDo3VeyAOm/rvyzLP8k9zlM1kyHo3UO8BoPjVpeq+07byjyzKZIrU/qXeu2tcd6i8lbt/Is3PDlUCZVSizm06wN+cT5kCtX6qv8H6+Np0++eMuP5u00i9Be4hY+5v9TxGlnmN+uotAAAAYBVAqEkBhJoZmNhk22PqHDmTm/wHTGVTcSPybUDNp06+VT9jDX3hXPPEe5eN560itX6o1+4UE64jNo0vKo7h8LhBd1LOu+lTfcei0vl97BtCZfS0dUtj3qbuYYaevIdwuzH8aFJelO1GCzUj6hxkuQ7eQzF01dx0qSLKG0INAACAFQOhJgUQamZlTO19MbF5Qo1v6iWQAjZg5epdhbq2euk+8KtDJX6u7Mk6jU3H4HVWRjNU+nh3/bzs/xwRwHq7YLNhJeU0ovYLi6wX99sbYXxelGVkFlgmNHiXo4xVTuVtM/qQX4DgMyvcF72BWWrkV5uKoh/ZZKHma8Pz/FmGV+tVnWpf1L/vPdwWZF5CqAEAALBaINSkAELNjNh6BapKPSzmpedbg56IfFu5UbZcpKHJz7Vu76rxRZmNF4u2X7KBdYfrZf+NY4BV/lusmreKchqdl8i6y1u2UuGJgkbPuEmPqqKdp+wfJ5+r/NkVi7fjDpUg1Ji5C0INp0x61Fh5qn9ZfMUZfyxBqAEAAACWDISaFEComZGrOhtjPLE57LLJAtKSvAp/V4F31WIZUOOxyM9Fix0rKCflsZO799t4pnjGzdo/8udleV+rv1eAFIcg1Ji5E0LNMplQ7zgDoQYAAABYMusXav7YNLhoOAEYd0UQxiJVz4cbdcoFhJrZGLx/wpOaDBX/fZjT2PnwVuHv1QRYe1dZdUxyF8G1MhIX7XW19HJi4+61xfevUu++HzetPeNiDHm3fzxPuSFFCjUZql+pv5eOEu0g1Jh56EKNen4INQAAAMByWa9Qo4N7WgVqfFVrizrQ5AbFkIBQMwvwoJiPKavwdxV4Vy2UpcWnWXY5/WxRge//ZK1xilZDsmfcHP3jSoUamwbvC05duAdCjf2jR+3TBjXPB4ur1w9ZqLEH1NgTp5lBqAEAAACWzfqEGinIiMEveCrB5GuD8sJg3aA4HRBqZiDlyvz4qk31gwIVXlapdlig/F6V2t8TptI3I+qeiqO/y1R9w/8/aNLAtml42aPhb/WZEPZX8Rt5Kh7WqHpQpOp/I7Kv+9S7GsV6bI0vW/xZJ12N4zLlDxrUD91/8q1Jpb0ylfe2qXDclfXU/tKkyn6RKm8asd9LRK/C77fZlIvDptEn/p3nBSqJZ3qel7/TS9A0J9ddah4W+XMin4tUPmWD5feQepfDpQkn448V53hivnJboo1nKLvj/C2umorbMVc+2kPqvOXX+Xs1fr943KHR7xH1Y+qB/aVB5f0K3zPn/oYfkQbxfpnfL530nTyRv8F17FDUgSLldspU/7z63sj+3pH1t/BS1d/zIXXfOkZS4qlg4x6XObep574yH4sy79PI582StpwCzJj/msGJ8CJJOmaa2/cx1+uXfO9HJWp+49++Ub/FdbdxUpP1IuJtKdJzUuF6VOI6E/MZH06e8u8c1Zz6tc/9zo/Qp3/3qC7q4Esu++fcz0Q8gGzqn3H9/Hdg+B3tGWd5wsqkz8atytfdbUcEsbbdfM4/b9FQfdSEiAci7/dVvZCWP2PqnXGecF9RP2nIupDnut78xP2g+ogf+3OdSn9zenbEaUGcxq2cl0Zxzbhlbfxf1XtecQnh58+IOq+5rETeW3nZJ4eRffBLp49rcF8v+oj6RXx/FSzTEv8mjxFnLWrINt+i7j9l+fu1S66Hp77n4yvo9SlO3fPaQux2sylCjUhP47jC4xTXkZMqlfme5bdt6hv7afNv2l+5H3xR5fq8Tdl9Ux2MRz6jPBreuWdAUIk5clrm4VGFalxPqs9zlBPjcaBd2NR7V+Lx19xXiKthrJ88RguPaR6zysdOn154znXw0p8ZY+q+MqT5ukO1F5yPL/Nk7VapK8pCp/+RUzflc4h66q+b/JmyTKNF27s5ynJbK184vyfqVk0851tOi5hHPOV2fsrjQuJgmCzU2Jc1OWe19pLbMQAAADAraxJqJtR/67h/h1dYtVu4MPQ3Ze0VQs0MfKk55Re3Mi8m6kc5nlyVA5NgJ8hozFGiPGETEy//STEihkLWciZ20ZVrrl/veHIXuN+IWs8ssuK8VsTR2Ps8gd+pUMeXLvuCJ/l+8WTSo5ql4oOole7cbp6yew01mRaGmpMu6136Gjz6d0p8GrWSae3Wqe+mXbQjcXpMyWhQjD46wXO9Y5BFbIGsyoNVeDxxnsvjxvNRA32OfJx8a1CB0557qwQVRuebuCJeePz53DMl+KrfCAgcvjRMPglPFc6rd2ys7gbrgCMy5Kj5Xb2wdCbKq4HrrxsIdKQ8McRVij0taPRfhXLiOVwDlOvIG9Wnxhr7CeXkY+b818h85s8cdMx9AjM6K9ATvu9Ee5ywEZ/fyVFFG/KiLEPPPrqosoFkUYHbjHdfEcPHJ5L4mHAdyIXbivD0ecxtSlcLsYCwqz6jDPJIcOVEUbVPNZlOs2ecExiY3z/u8bOmwwnyrNpKasTpWnmqXoREae5LKyLGEac99FQeqq0syqPGaVvifm1qH9Woy5mmPcMyGZ+gfzOklgiAu1Onnl/004s6hjTr4NStn95TynrK995+pcYgIfiddWjoKw+nTcdtzx1SU7YHRzSJkCDUiDpWeNEMifTcnk8KfL8nVPsSV+rebzbP61T5RwhTOh7VDNvkXCbUPXK+a/R88R053f1Spyrngy8HeZwQfa+5zvXfJtzXz29u97vqhDf/Y1+3ZayqJ1y/grnhS/O/baq87tL4j7clOOP3IvzNcwKZfi57UxmpvMu97ZGtpm6iruRfdUKB5Hk+cijqQkxZS5KEmjF1Xqj0if51ZdsTAQAAPATWI9S4pwIZDAcxqTptUie8yrlGINSkJzn+gnM0r3FlXZ+E8pgNdfWSRAUgzTzmSVJgVVEbRGHvAnX0rUhDaBLuGpVhby3Xu8swWRPCk080lAaGMrJcYyMQd4Of8W9+xi2xnS9tHTaswvvR6TPF92BDMy/SEDKCxSq8WMmOTIa1kLaKE7nEyTHit8Jlysycjz/YoBb1QAsvGrcvCYsMjjBXu3QeUp9o5BcTpAin0qC3q5jqgH5vdmNpPoZnztaTQkggcPMpxtvQvqxKMcMKiwBaWIgr84Rycpk5/z0mlzX5POULg3IhEUaV/r5nnPqff8L11jmxyzlq2DHQTcaeqDcm0ci5b3BhgI0sIQz4DNLB+5z3GdVWwuJpoqiaKOLw/d854mP6E7ucwK0zt9evaisbX+E+Rdfn2PJYsFDj3o/Lr/pJ/Sb365Wneent5TyWFgeemMVEla/5f3w+C2o7XVQA1NvLtmOESV+bNgo1+vsxxnusUOMz2iPlz324aD9/xbUx/Zt8PWvSUE43hGArvKCUN8mMJAsqWnwQbagXyj/+ZSUoFs6i+ZNOqBH9r/ic+Qh62ffyPSqfgpVa31uMBVroHF8Iz7+y42XnomJe8WfNAjG39x3/eDJQW4v5Cm8b1eUZKyQnCTWcEuEZ+kh4hXZotPnTRAAAAHeItQg17qqinCBPaHhRl+7Bwi27EbeXXMWzmdUNeBFAqElL0sq8J6CY41ToyZD/u2Li60zGokaFmviGVq4nbKDIlXeD0WmOHaENBFO6bOrye7l3fmPCM7L6ahuKaTI7E1qkMhpjSXnA6Emm/7ta3BKT5PB2FDaapAG3gpgx8d4DM+bjhCfZUkjzhBeXuK12QsBy64A2/v0CoSOOOSKfkx6ZBsPR1LMb1/Pj1l+rFqkLWqgxCgRumRtE0CniwVQvj3ny34dTvp4YEsFfVro+G57fRRvopvr9o0kFq0Sd8G9pQz9QviNqi62Rx12VL6JP8fofJ91h8TRZVE0+4jyd51IQ9Z1ZtwL/5nIR2z+EsRou9GlCzLKEGi7Tftwwquvo02bM9hHV3/uEDldcNaRTG/zbxrHG++5ihRruK06FJ6fF/Uj4Kabc030/Lk2zk06oyVPzh3rJT0IdSCPUaCEmc9Q19ykx4oi+t5Wm7rl1Jto2hDgsxm0PbrdHQpTNcZ8fbhA6L8xCzPT3AQAAgOWwFqFGT2bFpKX+rirdsyUiNgAbBP4tLhptLIkr1sV+SUCoSUmS0eYaVzFxKtyVeW8FWK/EG7cRCONOvBeYpOlVPJMx6xnjAQ8cN13eVqCJPabhZZvq+9uUfxWMazKxbZrIqqCN/wQDNC0JhrSbB3GGq/6umw5+TrXSaBJjkg3JxZIkcMySj65BZhDfYkUGEYdHxzzS4lTAKJjQ6GpAY/klZQSaDH9Rp2Y2rufFM9aiomFM/ZV4W0lNq8LTynyaEDVX/ruolewkoeHPhGzb+bYWo+KDJRvqt/j+9YA6pyK+TTG08q7Q7cQSXhwd6v8Yq/rnx6ahjl+lt2uFnzlRVJ3iGZfGcymM/s4iRBOZzzbZn5RXXdw9lyXUxHoseHUw87qnXgkTFTqc2D38mkEM0AZ/wAPHx7KEGhOir7PtIbX+Trin+5uL25KaTqiJER9uJdR4nkXF2EUM8+/re8d73/nR433Yc0r0EWI7nPozAadsuso7F0INAACAzWItQo0ejMUVdtPXE3URB8H/urfSbFgtXTIQatKRZLS5sYfiDDbXVV9PZLXRw5dBcNAT7YAg44oWpsmuNsaDoo8rGj4uyUCKDXGddah3NaRxkueWUSiaj3hD2pcHMYawa6zoSaRP8Ioa3os3BuJJKXBMzUd9H7PxPt3bxTPsYyf/Og0mw0u/N4txPS/6t4yGvrn+SlzxgA2jyPYsbTTFlfm0crpl/qvjxI1eQBGSxCiF71kLh6q9njSp/alHg2vb2EYc+DnEVjr1XXnFBLMV6L4s8sy6n3rhbMEKkCjiePeMF7Wi6O/E1+8pjPvUfluWAalbFwMarVOoib2fJ1BmnlVUmcZdbc+jVngNiTbxVziena6z8cGrlyvU6KDvJapwens/xjMINXHvz876hBp9b273L2qGMvRdp71AHk6/dxDXc8ffpkT8mgND+xT8GVP/vE5lEQydx3nRZ0CoAQAAsKmsXaiJDMiusW0wVm54UE07w10gEGrSoY22qMeTEzdCvBdnsHmCiTaIvclekoDhrz/uyr/JUNL1KjC5ni6ExDF95T8t2pDm+h6Jp+DF4TEbap5h64pZeoJtMrxdEWcFE86U3gNT81Hfh6+o8T5NZGB00MmErTRG0U+hBUbzdr3F4oluhvqbJGi5IqchH6aIB1PL6Zb5r4WGWOElQAovNXd8SCjzOKSR1qTqgf/UG5Mxr9tVdAxK9E5KEnGY6aJilKnbxmKxqf/OCUhd+zQO9m3ThJM1CDVubJcZf3N87hjqfs+N0b9OYPqK9tQ1sCyhZvKjTRXpFdyiQcA7b5oQc5+EGi8ezKzbuGYVakT/Jj3f/EHGz4rG/sb+UneCoYsgxYG3pwkxEGoAAACsh/VsfXJPCjFMQPUkiK9VbM9IA4SaNISNNnF0tm9riSpTs5Giv+uLU+KrB9FJG99PTs6C3gWuAGiYQJuNcT05nnVCmWLlPy1hQ3oypoE+OtvNgxhvCPe7XuwQT6wyTCp58i0NyXXFp/E/myRFPmqDwWTA6PzRIsPNiPqhI971iqsrtIgtUT/8n0narqKFAy//7e/BI64XySz1d3Ldd4/DnqnM+fn7115eTy2nW+a/I2ykFFWmelcxbnpuaTT9GanA5vGBh6PeS7q/0PXBv31OP6s3btk/ejT4pXPVLGoFPxNGpSMcwDkFIiiySEvBtPVHi10zCjX9t3OKCDH38+N6XCZsj4rCbfeoSp3rIXXPqlTeL1P5hePF0o/NU4elCDXaw8cXCNdD9zNxeXjXhRq+n5sf3gJIXIygOGYWahh9gpfT7rjNPKvTIDxd4zovPbLdQM1+dHuP61Mg1AAAAFgPaxFqxCTAWQHmSUmCUBOZRMGjJpG1CjXhlXlhdLmnJXlCjDF2gzYcdvjzunxd7w9DHTF6x/gm+xHvDJs6B87vhyeA/TfO6/En+ghjzC8uCPSKYfwxyanRq/DKkJaGs16Rd4UYQx4wWoSwfCv42kPFFO8m+UjaxWLyHpDpDRhiKfLR9aCIxj1yn1+Vt/w74BkVNqydOhIUgOOPU3bjA7mGspjQx2+nuC3p66/ztxa3UpW5qt/ib//zTy2nW+W/NrxivHlCaI+ixGPt1VYqU3pc/GKUOiI4s2UwntWpThGRUPdlYcEo7JEm/9bPFt5iJvo8n5ec0XNJ1KcYEVag8n7mYOWul0FMoFjd52gjnMfjQJ+wBqFGjBdOrLAkY1icgtTwneTDbfd/4oIPJ5Ms1GjDPeZ5Y4QaccS8fE5jAF1dP/Q9Rd/kf9b7JNT4+s6wmBWA8+R1K1B+8wg1bt35q069zzUqRhb4Ju72V3PMIj0O6bwIPsvUvAIAAACWxHqEGjERkqeIGAZk140/F5jAIkbNdNYq1OiJnTLUxETYeu0ZbdpgjHpOqLrA5RqcoLKhIwMFhkUKbyU8vFXFnRyGDN0Jp03WnQRj3Oy9JQyDAmXDWxnSrPy7jKh7zPewtqn8MfppbTDo3xdbHTzDTBvoBo8EvXq7wwar38NDT1rDRjsbuM6pQAmG4cLQRoc/3aKcg206VT66RmfIMHePVNcig5NXAY+tiMEtDLCQ0KKFCJPIoUQMHdtG1pWZVvxnI3X9ldu5fHU5dZmL5/eXf4pyuk3+8/2lceo73j6etF5qul+IEX+uuV1w+uvqaHx3O5lfBFZIw9q0JU7Xm1B+Tj4pQUz1B1KYcr3TtDGn0iWMef+9Q/2jQAhs2VjvNm1cmgJcT0GnX2zrMhj9ui+OFWq0GBYQHISXBD/PPMOgfvYkoUb0tepUwFjRXNTnQ39fLETWGDFqGkqkMwo1rjg5m1Cj+wtjQGS9BfMeCDXaIzpwtLYQLQPPLdq+yI8nVL/yfc6HOHK/EPK4mUuoUX2PTK/xOHAtksWInm55zyfUTK4aVNiy5MEDMTUXAAAAmIs1CTVicKtTXhmaPT0RnfCAeigGdx703gWDCbuTIL5w6pOZtQo1eiIqjUxhTIUEAWXYWf6J9s2QWmIyt1OhjmFyKrxLhOHqBoH9M6bua2cyL67oZE4Zcb5Va/t7SxmrfBlX95Tws8Pf8Rfx7wG1j/KUf9OLGFJaXImLt+PH9XYQl8koU5NEaZzc9KhqhQwzZWzn/BNa4SUg8nKP0xy5oTB4RVvx3WfclZ930rGaVUHHGNQim80T8DyVzoO5nzYfRx/ESrXPILMH1NjLU+XI+b6sB8K4DBvd2iNJCR/CwPCOWndIijnivKeeQdbfkNC0cFT99R1RbH9lI2C3QhVpxDllJ57DL4J6ZV6hrhbtrjtU2S1R5VCVA7cvYRg9CW2jSVNOc+e/Nj4NIlgUzl/ZTqNiahhHuLKocuG/64TGl3UqPCpT64cvEd+blPurSt2Q2CH7ha18jBGpDD//6XWiHe7mHMFMGq/cb+z7jyvXxqLzHZFngbhGgf6RkfcLiax+1OeD5ZwWcQqY008+4bT6vy/idFT/7VLTV89GZyXP80eijWx/feL0hryl0uJur4sVpTS2FMZlXJ3PoU+KPmyf8yvwshCPOJ1WgaqRILVt6l4O4rcpTri+Ca+ZcJpE3X5dp5qMqZaj5nf1uh8tMO+FBGaRR7IOh8QWsc3uVZ26H53xTAocQgANiE7c9qXXacxvzownfNYu1Ut+dN/oL2MfbpmZRKdfHec5fUKeiAsUEVj5uTtHXA+tUrBNMqL9lQ94PA5Mq7w0BwXf6WiRO3w4hcYVux9zH+p/XpvrwSuuK//4+jgu35Lfq8/NK5NQ6ReJtpc8PgAAAHhorE2okYx71Dxk42lLDXTWNuUP6tT+ahikr7tU3bUou9/0Tn1YERBq0jH6r8qGUoFKz9nYOw0axJLfA2odFyi/V6HacZnyT8tUP+/TOCFr7S8NKu0UqPxGxCCoUPNz25tgmuZyN0Nq82/k9qs8ES5S+W2HOjz5F/UrVhD4M6beCadHnARxUqPqAX/vuEW9mDgHw1Mx+eRJXZpJ2bemFCQtNiBNYpSYnA5OS7S9W6TSHhschlNoJlz3Gwd5yj93nikv8uHTKMHoYYP7pES5Z/w8nM/Fwyb1/k1rLC2ImwE1n4v2XKXKcy5nTm+Y9Pk4oeE5162dIlXfVKj0sk4dOfF3vJVyIjbFXsl4LLOsk5wPVVEXTvqRZx+cZCmzxWVj8tKTz5Cjwkt+Bv6NpqlfWjT++ntUkvV3KPo70f/t5aj4skyF56Y+0Ffmr8tU4jLvC3FCPMMBP8MBv7ZXpW64DqYop/nzfwahRqzIczvJsvGXJpft79wP7HE/c8xG+esKFV9UqHExINvQl9jfO1QX5X8kTqCpUeWF6Bfa1E9KFOdL69Aph4bMz5YURWV94nwov+R+LtzHiTJ6ts3lU+K2Gi0j3T9WuU2Wjpz7xeGIY7fbZje+bMnAybJOyH6N8+hSBRaWac2StVugCj9HJCm6T+T3y685z960aThj9R/z8+af5iibsbh/4/7rKV/q/81I4HSPya8ejxNcz//mceKkzu2A28JZLxQA1mEijGo5HsRfuddRsV3yuy/nH/ndkiP0cN2uvBe/I0Q4/X0n7TK9X7kv57SLQNTZHc5XnrdYj8TzcFk7d+TKNqTOCdfHHW6rqm6WOe+cwMKqrxfznBc1NR5w+xP58sjifijn5JHOp7k8NMbUfcXf3eF+TfzO7jZZmSzldJ6Pudz5327axe+Kzz3lvoF/zCkz8YzOc4tnlZ8Lp4XnbnJMEmMmP2PtPLw92MP+1qEG53PxBZejqIeiHQbaaijN/jzw520iIU9AE5xmUa/ycj7RkGOjU97iTe35mqcC952ybZrySpaRk1ea8aeKFIGyW9kZPYEAAACAZNYr1NwRINRsEAlbVczowIamYLEPBx3/JD4WDwCLR8aASt1WgURtawx7fwE/ExqelSkrvDFD3hqSPxOyr/vUepWXnharOLUNPGyE9yyEGgAAAIsEQk0KINRsDnp/fJptRw7xwWIfDiN1PPoq4tMA4CEFwlSxnIDDhPpvOM/CsadAELGlLWNNiWckmFD3iPu+v/xBnAFYPIP3ZWNMKAAAAGBeINSkAELNqrFpdNWj/s+wsqIDiRr28Y8H1BPHgYeKyd27nnJLxZ3GHlH/sk+j8IPqYLM7852QAsC8OLEu0p36BDi/ZCyNXGwAVqDgfl2OAykCCTvehKuJzQUeKgNqvIAgDQAAYLFAqEkBhJrVImOXCGFhK7gKOjovSdEl9zYYIFPHtxDfcQMPC/TJNJETpe4jQ2qqgMHZgJu/CpbsGn8iYLeKAbDAq/jhvktAyLe5kEdYw5MrFbK/siLBnIGByUD27dtx8Wc0KsBvIBg7AAtmdF6m2qd7vxQEAABgxUCoSQGEmtXiCDU5qv6nIlv8sWlwLgL25ahyPozGbVBCzbYI4KnmSiIgZX3PImuv7gRVvfcooWanSl0dGFeeXMV5uVOhtimOAwBLxzlmGjFCpiEE1WzktEOQgO0E3t7eq1H7akS2L+Mm4yH1zqqUF8GbEwLdAnBrvjep+DYaqB4AAAC4LRBqUgChZtVMaPytS+1TddTqSZPanwbGUz9cfg+pf9Hyjmc961D/xwObOk3GNPjUpqbOA3FE7Td1ygsA6+KXOLq7Sj3EXIlhRJ2DbSq8R/DguZjYNLzqUedM9XtyvOjR4NqmyeYP2wAAAAAARiDUpABCDQAAzM/oY5kKp4iQFGVMnZcFql5guxMAAAAAAPCAUJMCCDUAAAAAAAAAAABYBRBqUgChBgAAAAAAAAAAAKsAQk0KINQAAAAAAAAAAABgFUCoSQGEGgAAAAAAAAAAAKwCCDUpgFADAAAAAAAAAACAVQChJgUQagAAAAAAAAAAALAKINSkAEINAPcdmwanRSqcDNTfYDMYUONxhjIZde00CYd8332GpzmvTDM5an5Xb/ixu1R9Vqf+jfobAAAAAOABAaEmBRBqALjPjKh7lKf8uz5N1CtgQ7huUzHzhOpfbLJtvmC03w8mTnmO/i1RJlOlXkzDG30o0JO3aJcAAAAAeHhAqEkBhBoANp0JDf4pU/5pnq8cZcVKPRt40xlR5yBLORiDC2H0sUJFWQZ52ra4DF50aKzemwf7vwob8jVKKsnJtyaVnjdpuPld9ANiTN1XebIyFuVPBrFtq//Wosxhl2z1d4TfHSpnCtT6qf5eKjb1T0pcby3a5vo0iE0UAAAAAMDygVCTAgg1YGlc1dkQrScaoiAlN2KVfkDNp86Wisp/0yytCRuKObJetGmkXgG3RHpKjKlz5JRB/sPtcrb/hu+TZMhft6l8wOUHkWaz+NagJ3prk1Un84ZCZ1tbch2xqXuYoSfvb7ElMWUfO7mskaXTzJf1ugfxFgAAAABrA0JNCiDUgGUx/ihc/yHULA4d06RI7V/qpRhG5yWyrBK1r9ULYEGMqb0vyuAJNb6pl/xMBlTfYUP4YJq3jVOWxX9jDPmbPtX3728ME9E3WJksNb6qF+4Sv3tUf5al7KNtsh43zELNL2dbm7GO+Bh9yFPmaWtuMTVtH+t4b3lCTaJACAAAAACwZCDUpABCDVgONnUOhFEAoWZhyJgmnKdxxqGGP1eyMlQ8v83GHGDE7lJFGrvm2COTz1XHED6e4rGg4tPEGfKjD0Wqfr6vPg8jaknPsPyKtv0siW8Nua3QhCOMxMen0Tj1pULduVSTGfrYyYCa+1mnbm6Vqf0T/jQAAAAAWB8QalIAoQYsBWHESIMWQs2i0KviVmJ8mjF1XliU2Zki5oD5uKo7W0hiPBJkXBJ+f9rWtGRDvk/1+1x+0tuE83Ca4LjRTKh3XIwVmmQ9SBPDSG5dKs7n+TZHHzuxbZpgKx0AAAAA1szahJrRv0XK7LdoeAdO8oBQAxaN/b1F5S1hQECoWSQypgnnaZKnhROLwrrH3hjrZfD+iSwD85al9FvTEgPNihgoW9syYHH26P5tUUknOG42k6s6FWODdDseQ6liGEmhJkP1K/V3StDHAgAAAOAuszahpv9WT6CSLovqG7A/H0JNMvaPPvUuWtR4I058yVFZbiexaXBWoYKcKGcpd9Cg/m/n82HGV21qHBYp/8hZaZef369Q42JAdjjbJzYNr3rUOWtQTXxnJysn8Pb3jrxHzp2Yi9+sUutynCog5ExpUEyuu9RUaXDrrLVNef5ek783NnzPvmTjZXc7ELQyesGomI80IgAbiM/4M6vwVPjBhuLTKnVj6v39ZEp8mtSeIlMCzX5VXjup7nX3SOt1tLHoIM/qzwiyHqQc32cUaubqY/9MaPStR93zJjWOy5Tn75fC2yJvRjS47FDrpEaV/TyPNfoePCZd1Kns/qZF27tlanwaeWPPnzH1Tnk81OOLGCcO6tT5MWV0skfUPatyP6JOsuPLepSn8nGLer9ivut+p0CFPecEtvwuf+ctP9thgbbf3Vs/NAAAAOBesSahRk/mky6LCu/jj/VcJRBqkuhTPVR2xXOe0L7Lyclo6bhKxb/Ue89CASFvhtQ6cEQOa7dGXT3xnPCk9l1BTnqtXZ4M+zyuxufFwG+JK8eTUD0pz+6ISWlwkm7tsSEX57U1Rxokrkt9hkr/ehP6ya8e1ffUZHynQt2wu748FYev7y3HYJUX/654zb1uU+snNDgtUeFlmY2CAlX/EzluU5+NhOJ+hWonDaoe8KT9pB/yQrBp9KlJlecFKh3WqPqc8/GgQT3jvgSbem+LVDwsU3GnRM1v0fTaVy1qnLRD+S7Sxt9R32t8cVIgRLb6YZEqx5y2/Rzl2IDpTdvmoA2f3RJVhUAohMCvSgRICjwqPDH4M4Uz0ycmNDyvUfmIDTE2cKrnQ2P/Y39RzzatmKSBmTLGyHWXqnslNm7zztHAnG+TH5wvoqw4X6QIul+ldtiwG/eoxYZlYa9M1RNhnLGBqPI1ijIo+Xcqb5x6UDxu0zBUtyc/WlTh+1QO2NA77kbzcsKG4GmDmp8Neajj01ieITy5alBBHdmthVBhbDpHqeepdDZUn/QxLdDsZECNXb7XVoHql/7n5bQdF6nMdazwzMuv8SXX7Rfiubl8n+WocNiK7xOWwrS8H1PnUOeJNsqzlNP59rRGPVN67SF1TipUkvcVAkLRUG99ecJ9UkvmieoTDqpUe1mQbT1OSBfINsr1ocRtQwoZprqo+e4cl56Uv07cmenxaQROMOAZFm3m6WOVGOS/wvGrootLoo6PqC22UcqxjtvpCdcvUS/l+xaVeCwUgZVrInj2I+6ruP9tvOH8E0fXi89YJerEiMr255r6XJbKZ96Cgf2tTRW+n3z9Y6gNythb/LsfhlzCfrj+fRDBqfl7d9hLCwAAAHhIrEmoGVCdJyC5A570iYmL/+IJ5TZPJkQAwhRzuJUAoSYFP5qUl5NTnuC+rVNRn6Yz7lBJvR4MCKkmuOJ1iyfskUm9iG+gjLrI9ocJddXxv85lUeFdj8b+CqMmx/oz5iOY509DQDAKx1n42aKCfm+/bY7BoD0L5OUZtbdFbutRv+kYFjnK72Y90fM3G9Jy8u8zfGw2evcsR5ByH9I5uloYEsHYEOJ1Nq6FAaIF14gwYvZs8dKmyo/vXX9XovxRx3e8svruTpMM5rvDNT+DMHxEmarvTb7U3OOArdgVYy7P16I8y9QxGKWj8zKV5XPp8i0YRBb9bAYj888kuI1TGn+hPGAjMdqvCS+fJ1S/4ndUvbB285TzCX2D91wW4vncumbT4LTIBn2OKhe+3P/dobLRo8h3FLmvKxt9KNATf18rDD0tTCrjNbxFLHFbDpeDTKdxy5JoT04ZTdt2ljbQbJjRmX6eITX/h39rh8eY13lZ/930yDzi9K9sy1TKvNdw/yH70iknHY0uqmzIOwsa3nOI+slt2+d94uUJ93d/izzher6Xp9on3TOpgLs7daP4KLYw5cL9gOjjHnM9mbF8NKnj0zDy1KcUW+UizNHHDv8Rv+V8xxxonOuVOv5f1M/6O1GuraDYqctPXI8rVHnh9L/+uuY8k/MZ09HjMs/V+wWTV5k7xuR8YqZzlHn8s6pyNrVbAAAAAGwc6xFqpPFuMnQcwzn3uheY1KwbCDUpCEyK/R4LbDhowcQX/FMYYtrrJTYOA09Wnc9EDWb/6uaTkxjD3C+Y8FW+CNaq26TBiXPifDd3GpYU9Ikt4mIDw+QdshShxpmoO0awnrTzs/lP1/nJvyviejzjshAviiOORfmYhCptcBx0vPYoPIncrSZ9qon3w1tP5Gk94dcdI8FJm8+jbj8soOn3Ygyz3z2qGtOrBZQEEWDSo5oQqfzPoxECFhvS2jQbvBOCjmEVX+dJxMjU4mGOKtqjQeaD7ue0sMJ5H66vwstHG+XK4ydY39jQf5PlZ97mOix+VYlo/LloHBhRJoZ0y/uGPFR+dZwYHq6YKOqM5bYTGUeMfyO8/UbHATJty3Hj0xiNXEegT3OCzyyGvIeoA9qDyfP0e/ImLIbo9xbV7qaQKu89HA8SswGvkUfLG5/NEWNKH/Vd/Xmi8195evjQwnO0TJ12Fexjx9yWhRfiHOKJZIb4NPx0jrg3u2g3Tx/rF+DNdTjkDWwUt4JeptGFBkaJoPKK1AHfmBmbx146LJ4vOUnQv5ujeoxX3fBDkYofYiVwAAAAAGwQ6xFqJmMaXPn2b0sckcbs+cCIrQG7FmX3k12qlwGEmhQEJsWhyaU9ov5ln0bu3DE42Y2Nw+Ae8+s3PBz8Qk38Ecv6aFZ1BQy/26fB/tmnHtfj6DeD9zbGVliGUDPpUdU1gnnSLo0yk1eIRp1+xGkIi1gSN42ekSQMaNfAUiJWWOQyelzIfFT3kemMS1uSMe+lN7p1SQs1CSKASq+pvggDzRN41L0MsU+0IWc0MkVsiJOSE+D2oEXD7yL/uGx/c1mI7XBbBaqe9SOxi8TqujbK9f094yuK2DYiRUJD+uxP/J7BeHQElNA2rJ9tKj/l59aeFbK8dVnrOhw2FHU+mwxILVDGbPfSItcUT5HZDHkffsFL/5ZJgNRefob8Wwap8t4lhdeRK0AbPMN+NKng304j8kQ/p5v/UW81LcpFvNGUcBgsCx6r5datLteSOZD5H/T6iUfVqal1xsAKhBrzFkq/UGNR7dJQjklCjbs4wFdCHdWiqNhm6HwmmLbsjtgO2aIOj73DgLspAAAAAO4CawsmHEZOFI3bTxycFW5nAhI2mJcNhJoU+CfFUw0g5YmhrvgJuzfhDRsQ6YQa32RWXv7J+u3T4Gdij2WQYxlU+aRGJWnMJtx7GUING3lu7AVlYJlW7DWuV5BVM69W63v4jHL7e59Gso3qbUThOCIxhubNiPpfVWBnbYiYPFsSjHmxHcBJj8FATSECOH2IWUSYXPsEN5W+qKeW9lJKiJ0iEPGNRPycnSxl2VCzHhWpnhCUmm5scopN3z/JiGXDVQRDFunTHhcTm8Y/etR+W6Tt3Wo0LhKj24G1W6bmRYzhJsrou8oFLQaEyygpnw3xafyk8RSRyLZh8Aqaxu8h9X44qdUGt8nbzomPwun0e5otkVR57zLN60i3O/6M9tQQW+6uB9Q5LVOe61ogZpTIE1WmOv9N/Zj2kopsi9F9gJWn8mmH+j+4Dd9yKJwlPo0rqr2Zo4dcgVBjbqd+oSbGIyZBqNGimek9P15aS9RRH/JvmYpcQiiOibsFAAAAgM1jM4QaNaGK3X7CTL6qCYh/tXBFQKhJgX9SnDC5lAQm0Omu8PaitEKNf+IdmKwvIA007rNx7HhQeJ9zAoD6X1udUOOhYyDEeyV4W6PiDFZt2IlAnJH0aa+YiFGuDU3PeAij02Y6vlm/FzXmPQHIVL9cwzxWBFDxOaaKiHEClIANMPlshvwIMb5qUfWZ2B5iUf5lk7o/jVZ3ENfTKMGI1UIJp6/0Wsf2SrFqzt8TW96c8nQuK0bUEbhlFGpbScZ+sgASI+AZmMmQN+L9Vu2LesnFey/Wi27RzJL3SUKYwK0jGSoc6vJvUvtTjwbXpvhHmqT8155QpjbJ7/3tLZLIy8qrIOXzIQXTaWOEQtepucpqjj52E4Qa/9iW6rKCop79pUEl9/TC8MX90clmHNIAAAAAgGQ2QqgZnDgrjtMm8N7K82qBUJOCWYSaQIDhJG+WeOYSavxG+i3TMPpYdo9Ldba09Gj4W1fOFJP5WCNiQuOvbHTFHb2aijSeGZ5HkdkI8gw7U2BYbUBFxNVphqabNyYhRG+rMb/niCQm8SmFCKAN3GleFPw5GcfGJOho7wJjoFwHcbqQPPVlp0Ltzy2uYzXqfKlTge+Z3a9T51uCwZnCC0pvK5tLyBDC4mnVd4wwX+GT2CTacA8bmcn5rL0ezR6P0zxFPOaLT+NHC2qG33K3MpoDSi+NlHk/1evI9XKL2V4WS0L+c5t1tlLFeIr9GVP/vClPqvIE6KQtlUk4dSvttjbnmPIYsWMac/SxmyDU+L2H0wpaJibXA8fDU5wYt+OcbOhc85YdAAAAAFbJBgg1elI9ZTvBGoFQk4JZhBrXIHeueVZL0wo1rku/uAIG9i3SwMaS617+uEa9yFdvI9Q43016pqmk8cxwfz+m3bn3MMdY0Ns5wvkW9myZXPeDBlHS9hhthLoiiU1DHcvKl19RL4mwYe77nkYJSFMNxK9qW5ZB0NFbEtyymYxpeK0/NaHuK2FgWZR/pU6xkmlW3jf2gJr7jrEUDT7tMN0LymdI/h0Tyyst8hhfkWcGzyddRhGxypDPl/oYYC3uaAFBvDfwTmIzCnihz0hmM+SNJAhe9kXZyT/dF/i3e62K2Lw3C2GTX2xwqy1dnoE/3asrQIKA6tYpo2gXQgX8F5+fawvyTPFpVB+dJl0m5uhjN0Go8cRYvqZ6APoZU++kRp0YEUYcV+7Uu9VvHwcAAADA7KxfqHFXCFOsmsGjJpG7I9SwOXZWcCejSVveBIN/oidVpBNq/GJMVHCYNw3+uDdmg3LNQo0WG5K8ElwhxtzutEFrGe8hgvqK74ZX9b3tVI6Y4vwd8L6IPb6ZjVQVe8MN0Cn6Bm2kuZ4QhvTqPkSLF+LvsEGqDKNpXnvaoyGa//rZPGFLeBUFhKoxG9TffN+Tv+lPr02jK+F5pf4MoPN0SmwWnX8JbUyIY/o37Msa5dk4y76KegE5IqZBzIsTq5LyWXuoacNSCANukFMvXwOeIuL7YUN0JkPejBbUol4pIxXfx+sLRD1PCtx8G2bPe5PXixMQ3Q32rU9UC/QZIX4Pqe8KiA5hAdVD58kTbrO+7/zuUU14hm1Vox44qg5Oa0smHE88g1ePCVXfzAF7U3BHhRrXqy/p+5rfXao+ran8dH439hRERrcNCDUAAADA5rN2ocZbPUqekCBGzXTuklAjjJKmMAR02cfEynBWn3NsvAaNAr9QE3dSmD7C1vmMSXCYLw0BoeYfg3fE7w5VLH3fhMm8Oxn3G2zi9TkCqfpI45mhDUDjFgpxVLVI2w4bN8bg3lpUCLXZGy2mKE8BzodyyCjTeRc1grSRqrekOMKNdxqVNijD/YS3wq+NULGVMmyQOkLB9HzVW7oi6XPrt/ZkEOkrJRtRWqiJq1d+0nhBCbQRF7O1bMLGbWFL95G6nDKUexeOS+Hkp1Gk0EJNSLwc/uPUKx2fJpDP2vBU4o4weP331u3VM+6F8JWNeGQ5+T8lDxJJ2PYXFpNkHizLk3OOvNd1zF+2XJ65Hb+YpdtBTB5dcxvcCfeXnqdOuF2I/BZlneOy9n9DC2um46elwB0XgHwKsv2nGh+0cHubLWqz97EbIdQw9qeKu7U2egS7xuZ2lfONbep3eY4U1+c4bRhbnwAAAIC7wNqFGm9iFDOhUeDUp+msS6iZ2LZ0q3aFmr9bNBSv8ZV4QsiNtx0ks1WkxqchjdX35CkmJ0WerO1FHVUAAHxcSURBVGap/DFqkvqFGnFlD5rU11tsJjYNzitqe5JvK4qJedJw3aHylvptq0D1S3WaEf/X/tam6h4bFxfK+4CvwtsuDcd8v9Bs2y8kFf8Z8O+OafCBX5vX1V+iDYkUBqjagpHzr8CKlfQdNiL32DhMWPV2PG58xrDcEpFno1L8tiNmiNXboDHKRmZge4wf9Z4yWuTpJQEDlV9TRmXlk7oj/2bnKE+lo4rMaxkI9aZPtcdRQ8TpZ5L7GMlNj6qcJ8GjxQfUeFmlqhSE1Mq8yLuEWDWCyZcaZS3+zTRGET+vrAtT7ilw6k0uWL5/nDqf32UD2mfYDk9ztB3x6LBpyPUsuxsnxClPNJ8BaX+pU34nF5/PUpTj78h8iwog2kNL15fRvyXKh8QBwSyBZo0kCV76PVW2Ih+zKfJ7XmbP+1C+22x470aNbudkH4sqF/5cmtD4sk6FR2Vq/Qg/uE+weMxtU/+ubv/cRiN58L1Jub+q1A2JJHL7zFaeyzH8G2lw2njUq8eAqk+39XZK3ceKk7O4zx9+8Ak1H4bOGKY+Ij167SG1RFBy9ZnaJ2es0J+RY6Hd9Z0oWKTWd/Ga+wn5efuT8owTlx4vQ/Vh9F9VemQ5Y1iL+tfOb9nihMHLFlV3LbIC9cgnEO1UqCW2f+pxj59vxL+Zt/he7+KEHwAAAABsEuvf+vTLMXqzB1OCR1535cQku9+kgdG4WB4QapLQq3jblH+aD16PDKvaBuwfXWodi6NlPTHOepSn8ts29WMqRWDr079DnoQ2qbKfU6uQFm3vFqnypkW9lEF5Z06DOIL5rEpl3wlPzuc7POmWH6DBWTCIY9bgki6Cz1b2dIDRLOUOuH7fynIcUlMILbt8H/VKEhNuV40DLqvnVaodFim/X6HmJ99R1bE4z1fYKVL1pEbl52wYfOVviXa6l6PiyzIVnofbKhuiCW198q1JpZ0ClY8532LyQZ5oIj7zxvnN5hfxIU7LaZlyz8r8WsF4Ik1qoUbAz1DnPCm8rFHjdYVKr9tOmQpR7zk/26saVQ4X2w+JFXSLy7/Chl8axpcNKu+KfGhQjett8WWVWq5g6IeNz4s6t40yt4eGDCxa+rtM9fM+jZO6tOse1flZRR7Ujkpcr7s0YmMvKZ+FYVl4VKDS8zyVTqNeJN3jAm3vVan6skSVs4GhjjmG/K3i04x5PBHGaMzJNjKNos6KPDtOEHAXwux5L9uA6Ee4DZRe1mNP5bK/C0GY8/mY78t1tPiiQo24I+DVFiIhAA0+16nIbbx2XKL8HrcfrjNx2N87VOc+oXzE7YDbeOUF/zuhT56K3L6YbkwYfRDbUhfj+ZGqj1UeLtmd4Pjl7zOcMUeMLd5nclKw15/RIrlz8p/+jDM+KIFXe01t5dz38zrAtF8c1vA40z9v+MY2dX9jPz2g+laequcDGl61ZR/mpM95ruJhgzqrjscEAAAAgLnZgGDCmw+Ems0jINQYXdQB8CHjaqQUasB6WEB8GhBFe63eSgBbAKnj06itl9EtYwAAAAAADwcINSmAULN5QKgBMyG9CmY90hisktSGPJiBhJg9K0bGp5l6WtmE+m/4c7HxsQAAAAAAHgYQalIAoWbzgFADZkLFJ5nnpBqwGtIHmgXp6at4KbcJ0LwIRtT+e3p8Gif+Tm7OGDgAAAAAAPcHCDUpgFCzeUCoAbPheBakCmQK1sAMgWYXwoT67wtenJBFXa+XF5x4LnR8mqmeLEtGHa/vHNsfw02f6jsWlc7Xu0ULAAAAAGATgFCTAgg1m4P/+NTwhdgWIInJZY0s92hmsFHMEGgWpOBHi0pPvUDnboDb4zUJSTJGVNK2NnFqXBYnEgEAAAAAKCDUpABCzQYx0UeURq/Eo8ABkKeyWNj+tIE48WlK1P6p2rJ6HdxtnOOqbeq/S4pPM6LOwTYV3iN4MAAAAACABkJNCiDUAHBPuO5Q+VmThupPsBkMT3PK80NcOWp+V2+Au8v3JuXcMo3b1jamzssCVS+w3QkAAAAAwA+EmhRAqAEAAAAAAAAAAMAqgFCTAgg1AAAAAAAAAAAAWAUQalIAoQYAAAAAAAAAAACrAEJNCiDULJb//d//padPn6q/AAAAAAAAAAAAoIFQkwIINYsFQg0AAAAAAAAAAGAGQk0KINQsFgg1AAAAAAAAAACAGQg1KYBQs1gg1AAAAAB3CHtAzf0CNb6qvwG4RwxPC1T+OFJ/AQDAZgChJgUQahYLhBoAAADgjnDdpcpunupXE/UCAPeMmx5VrSK1f6m/AQBgA4BQkwIINYtlPULNmLqv8pR/yhdPOOX/1VXYK8j/Vy7G6rMO4/+qlH9kUSaTIetRnnJbGf63Rdu7FeqsYDAfnHL6drLy98VV/BerPfOjyl+Vp7hqX9RbD4mfHarsq7ov86JEnWC1Bw8Vu0+NA1U3ZL9jUR3eE7dgQoN/ymqcyVFW9Dtv++q9O8R1h8pbuTWINDb13wfzz3o3UO95jD5WqCg/k6dti/P4RYd7exBm8q1JZZVPzlymRr0VTmsn111qHpaoeFilxkmDGq/LVDps0cCW79Lwok7l3RJVT2pU3itT44t8Y6UMTp6Q9brHqQEAgM0AQk0KINQslrV71Nx0qaKM9cxRl6eDyUx+tqnEE0DrRZtGaxjBxeQBQs2imFD3yCl7k1AzuapTXpe1eu1+MSHbtml8UXHq/9PWPX1OMA8Trhv21yblZf9YpZ6pv7sRW2CylLHyVLtcvTF1p7jh/BRbhp46fU7lvzuWXzd9qu9YVDpfUy8Ryr/qZ0OFnIjPjKmj+vX8B/RoRv44fb9YAJJ9/+H0uc+iEONqLvOEx1xdflxeL9Qi2Ls+Dd7n+N8W9ycTGn8skSXSZ9UpKsstmW8NepKpUBfdGgBgQ4BQkwIINYtl/VufePIpJgLiepNuhbP/hg37S/XHihmfF2ValyHUjM9r1L5WfzwQ+m+dso8KNTZ1DlS9uOfeBLpOPXm/8qkw2HTYqJKGUowhN3jvCMfiMnk4gDADajwW+bXobRUTGrxjA9cqL8krbkRtNqbXL1rzeC08ZRIN6DG198VnnlDjm3pplUwGVN/h9nCw+d48uv2uTNCacPmJ+v+44RNelFCzVaTWd1W+Vp1Lmt+RQk2WimdD56OrZNKjKueNURAEAIA1AKEmBRBqFsudFGrYuF/XVpllCjWDd2w8QKhx0R412QM2Tja/yc+JTd1DJw8wIQVhphlyk68Np408q1Pvt3oRxHPdpqIYawKG6gJQRmWs59MtGZ0Lg3kDYnZILwd+ziTvP1t7yS4nL6Yx+VyVbSZzvOnbZkbUkt5JKxS0tPAblze6fFfo4ROPkz9YwAAAbAoQalIAoWaxQKiZjeUJNWJSAqHm4ZFmhRo8TNbsmXAPsf9zthlai45PM8Xz6Vb86sjtvrkNMFhTef8tMy9S0H/rbOPZ+K1taxC0tPBb+mj2NRr965TvZmxZU/1fynkhAAAsm/ULNeM+td+W3YCuMtDrQZ3aV5vjQAqhZrFAqJmNZQk1wnvkiVgxhVDzsNArmH/f1zg8YG5cQ64mtyGA2yO2zYr+ZtHea9oALp4veq40od5rizIWG/M36qW14Xn/JfXXbl6sJY7bsra2LR7X82dlgpbY4iTyJm4rMde14+W0j/lQQs1+m/8FAADrZ71CzY8WFXaq1A31iONPNcpxx762AHYhINQsFgg1s7EUoea6Q5UdkQcQah4aqVaowcNkzZ4J949lGfFL9Hz6yfMy0T+cbEL/kMb7b81eYL+WtLVtCaxe0BpMKT9f+9iIeQiEGgDAZrFGoUYF7jQaykpl35CBD0LNYrk3Qs24S1V9JKi4l/BQ+DOm/nmdKkc1qr+pUGE3T+W3bepPHfVtGn1qUfUgT8XDGjVOalQ5rFPnO78+RagZX7aodlSh2tsGNfg3i0+LVDnt0sg4MRpS+6BIBTfd4rhx58hO54o5etweUuekQqW9MlVPGlR9WaDSYZN6M89mwsdkOxO08VWb6uIZ3vFz76X3qrN/dql1zM8sj/zk7z4vUeUkOb+NQo0sS3WEri5L9VaEcY9anM+lvysyL2pHZaocN6n708tw52j1bSdv1VHH4WPdB++3HaN4K8f5keX3/f3dkFriZJ1MjqoLPVlHr1BbVL9SL5lwPR25vGU9LlD1fJhovNvfO1Q/4HrBdb9xXKb8fpXaP2JWSbmd9E51feJy2+d2ctJPvL+o51W+f+Ell7W4/0GD+nExUriMxFGw8rOyTaznuNfbIo/U3a/wlaPC257Mn8kPkc/cxt9UqaTKJXYt2h5RV+Yztwv5eZHPPRrHDGdxXhqTH22q7nM953afe96kwRRPC1EXGodFLiMn/0vPTXXBpt7bIrfdMhV3StT8Fn0K+6rF7bo99fcC/O5RfZ/z52UxJq029c+4r/x3EMq3CbdbTotMT4Hqn2VuO8cGcxnUjkuU35tepwviiGFR50T9/KqM+MTT1Wx1NHGBylxGZW43nWvu96961OP+32XSp4boG6Xnseo7rG2v737e4l7DgNt3izog2loxsc44pwwWqPVTvTAN8dxnnG4x7rxxxob4tizGuSb302L8qFH1Oaeb8yl2HNHef0mGs/YCU8Fo45ip/1B5JvoN2T/xuOLPs8lVQ46hMt/VWGY9Un/zVYoJhCvHOZWG2mHBqU/+MnbhdnvMefSS0/lItY0bThP3ybJNyT4zuRyjePFp6v/1qCHK6VgchR3X93LdP6vw73H/84z7mf+iNXjC42/zhOcBIZFl8I/ykJdjX6ie+i9TPX5pGntFG2m49abGfUvxuE3DQNteRJ4pYSlwxPuyxmIAAJjOGoUaZSyLIz4/RYdg6S68juP5DECoWSz3zqNGH/f9P0UqH9Sp+8s/DWBj5LU4evIJVS5ipur2gCfgFll74YkjT04+lCj3OH4VTAR8zL/qhI4NH1HnUHwnaZVKr0JOX8myP9cob1lU4t/3/4wTbNJ/5OYs6GOyc2zQlKnOfUAg1/g3c/zMTw752dRrQdioel8ga6cWym/+7vcWlaz4/E70qPmhjiY2CjVi4lqmLKc50meNO1T5y4rEKBh9KMjfyrzuqVeCyP35VonaP0N5+FV5Nohroat7farJ+8avUI8uKpz3WSr7PRqvnSPqc2/7gXLSyONXxXP465JYmX/MxlPkC85pMuJeXhKEOG+Zt3GI43nFRHmnwgaseo2xL8rmvJFpzVHdL8zc9Khq3cKrQR1te5vLlG+JTHpU02n+UuMys9jAY6PjBRvk+tGkIctt0xD/wf7KxiS32/w7Xz7L45bZqDSe5MPl8reoGyHPhN/cv22pbTDKeyA+ngT3d2/yZFkFanz15T9/r2RxnXP7twm3QzZoZR1TfVFEzJjDG0U8366qh3FpjTH+J5c1stRrzvyDDdkDTuMHT6CUIgbX84iYfc15pPNVTRUmXGbyd/iKPR3rxun7MzvcTvSP6ODD4goYjB5pg9eOLqqy7y68H/jamsjXGKFW1jm+70HH9/l4Jj9aVN7ifuGI+2l3isRl+2Y7Gt9Gj3O7vmeV9UCcXBXqOxQ6fkmi959sG5zmOC+wGfsPPd4F84zr6PNo/y7Sn2rrzh8ek4/4ObfKged0xlDuq66C3x2dFeiJ7GtV2+B5cn4nx7+v6jLXYTE+ZjJcF00VxIS7rZHro78MfneozK/luI76UyHnFqq/d8bMcFyb6aK/W0/j5lk8biSWneC6Q9VdZ3408H1ItEV/3KeF5JkO0O277/LGYgAAmM4ahRqt7juXtVul9jfVC2ujYENc8yHULJb7t/VJ3y/BvVduMzKIGupYzwwbMebJg3dkdFSo0W7FfPknFgLtjh074U4p1Cg3eHGfaPJ02vi5Z1nxVmjBJC4A4+C9ELh4ks5lFMo1NcEtUPOHeiGECOAZJyIlCjU63wxCjfObGSr8E14t1fvw+QpP5NQkOPOXWXQWxkLZGGTRWR3cFiuDfoP3tkxZoXafMWKIa4PEtL3AMaiDWyU4Tw7EKmTUyJYGUqZMHZ8oqU8SitRjJSwY66kw0CJivqqTgXo/4Ul9Xj5XohdRAsN/8k75zn2xkfdptnKU+aQMcXFkrbyPMOgDbU31PSHvUymc8euWwZAffXCepXwRSo/RM4HL/TUbrWdOfdCGl1l4YGNUlnnI8BRCj+ynfHEqhNHkplmJh2EP2jlOSxJ9hlsPlQEfNvLNxr9Tbxxj22vPEWFSGZaB7/5m40724eGYLk67EJ83G/FDagmRJuK94sVliRPEBu8cL46k4LW6LUf7T0eQM4l7Uqzi70TqhgF9Ql5Y9NP9dkBk0u3YFPeGxxgpjkfGqnTef4mxembsP0YfhRAfLneRDuU1E6n307b2CBxh2uilpIWBQB0X9SavPuvVIX+fLETALOfL9sv0x4G7okmkD9FzAd8zyDar+2gt4IafcbroPy2O0lQhTtkCmce1UJrVd906tqA8U3Ux2O6WNBYDAEAK1hqjxjGmnA5VX9n9MhW3slQ89a9mKK67UlnP7k93vV4kEGoWy/0VauIDcDrGKX8mZHSIVSDxupWQDi0sRIUankAeKZfcz+Gpx7Q0pRFqPJGo8slkaPBd1LasNBP7MImCiUCLHGFxQItHfydsJ0g4unYuocY1NnnyapjlORP8LJU/hlPkGLri96LG2ohafxsMlyWijXSTATj56hj3cYaxzrc4D4Xw5LYttvEdd0OTYm18BcvFvqzLbQbB7S+Ol434zWi8DL4PvxdeBXbFhoBA4WyxyR/wuBEugo3FySfHEPdW7aPtUBtLvlVidWJPWAzT6DYb9sYwemnIdqTvo/sDi2qX0YzUBnpEHPrJbYrTk933tuaIU3Lc+sIGv5gHhE9Fmv20JO7zLG2sOb8RNfJ1/Qu9LuuNMjjdvoP/DrdNJf54BqIQdZw6qsUsD20wmgzZCQ3eqfx6HRbTYtLoohe5vGeNoPtIUx340aSCySuIcfIsKq5GcPvDsPggvGl4TBKe0u42ES+PjOOE7nPDfXVCH+6RlBcz9h/a4yIiJgmhgu+zVaRWeGFAi0yxW9u8cjbH/NHjtC/94p66D9Z5Y9US8iAdWjSJloEWYjwhVfYRuh3rNITF/Smiv1PuwfsG8fo1s5DJZfvMeT+S5j9Daj7zeRIuKM90H5joHQUAACtkvcGEuaMe/ltx3YO9iydxYjtHSBvRq0jiijvqbxlAqFksD1Go8buze5Nvb+UnSeiIF2rMTORWi64y4G4h1IzZ4JP34Alq3Ge063LKfPQzVahxJ5B8+Yw1LTYk/6Z+vqhxO49Qo43GzNOmOQ5EEnpCG97GwK8XjJ4JyyLJAPQmxVGDU6C/y1fYcNbPx8ZZ+bRD/R9jmsR2l959svt1an8a0MiOmRS7xqYn1E3sMQ0v21Tf3+YxohsoI4nr3p+l4ts2db+NKO72m82Exl/7NJIGo161N7jsu/2KNq49YTAqADhogy1sYBlXvydjGlypLY+6bZiEPP2e0eMqiv1dP5tOb/h704w4EzYNdVrZyJdbeMJpjTP+/c+ptzoYth1pDwCdd87JeeJ+BkEkyYhPyq9pAoXul2MEVb6BWwfcLSVi6971gDqnIn5H0RgPyK1nifF0BGK7kqpDKYJOay+dWMNZ9x9hgWiqEMAYvcAUM/Uf3niRuM0qhPZ0i/2Om4aYmD9uf+WbF8htlk5GLe5ody1omcZ7LfZ6aZhc92mo6rNeTArPUZJEfwc9L4rzuNHzH/McxK03vu9P7BENLppU3t2Wi7ludVpQnjk2RsKcCAAAVsxahRq9v9naq1HjleOaLjpYfYVdat0V35jVoGUBoWaxPEihxvebriHsCiFJ9+aPTQkmTCqAcXmvTLWzDg2uFyTUaBGGJ7ql1w1qnMRfzc9xk7V4pgs13mcye9p48AkGKYWa7dBK5jxCjSsSG2PXTEOLIP5VX2FMFc2T92WRZAC6xlLcKr23zS5aD/n5xIqz/L66rLwx+KRATMDdoM3qMnlJuoLc4xLVdF3j+t27GtI47OngIvJVeJn57+94aJpsxDtBgsHvesHodu4z/MwCh7etJ9h+tCEX76WhDTaTZ4Ar/sSKBzHoOhkxtBPEqRS4W7TCxlqCCKOJN0A98cjJO9/fBjEh6XQ1t26bBAadxhgRxOj55Mdt5zzWHOo+ukntTz05NsS2AyX6TRUqfHUsaeuVg6+/jkmvu60vNFZNFwKS82Km/sPt/9IJjQ5e+ceJiW67iBO/dFkbx+Hp90+NLjNT+/QLZZE0+ASewJx7mrcMM23rok5TaPuZg69tPauoOszzjPMu9RLF99vkmXrWWfswAABYIusTarR7Nk9w3AFMnNTxMijYRCYCN2yE3nLMmhUINYtl/UKNz1MjJshrEDHZzMfGQ5lVqHFjkixAqLG/1KnA7Sj3ukvjQLuYlqYUQk3iJPL2zCTUuDFyPAEmrVAT/tzqhRouJ7X1bVt70IhtXca4P0skwUh1PQXiJqlaLIgzZKRY2JSnlrmnoMWtIjPytC5xMo4+FYSvoAfIdAMvHucENXEySG5Lp8W8XecuEL9qz0ZJ2HNCb82JW8X2GfGBsVX3RUajSaBXv01l6vWnsUFzY4gVVJK8UaaijbWo59h0418boGZPF+mlw9938s4TL5NEnajB6BPLEgSGuDROjU8zVXQ1o8tiqoHr1rE0IprnrWFOr88gDwhTKYQARudF1MN6tv7D7f9i678JXf5xHiNeu4gTvzwxydTv+jxObrswqRZdTF4miWnQ7TAsRCaJ/oqpgmKiaOp5GycJdVFukWdq7L+99xIAACyOtQk1enAwTQrs7215goLs5Deg04RQs1jWL9TwcK5Xuv4nxVYWMUHfqlE/tgqkEGrcLQp+wcebjMwl1PCEXHqYPeNniKRN33tGoUZMVrSw4a6cbs+wypie6UKNN9HN+wL4uqJJosjmfTccyHAeocbd+vTXnKttrpHnTGxHZ8Xbr5LOSNgAtH/0aKBOzHIFsZhVfHcy/yyF4fyH817FpEizRVWIjY6npN9I8oS2tFv+zNj8bCoWyFzbzIbU3FV5M+9lVecKtu2QZPBzvyPrlCdC6b4iTnBzjafQNpSwUTX5NaDeD19N0Ma/Dvh6M6L+V31SmydCx4oHMeh+OPy9JG+U6ei+L2xA6zqlRZgJja4GQYE7yQBVsXTcvNN9BV/RvkSXjU6Db1uWL7+idduURv+x+GbPJ39b9jwhkxYOojhtfLq4M62OBXDzKEbgdfM7JKSGy0FsTbv054MgnBecx5e6PGfrP6b1f0aMYqI/DdPahU5/zHbTW4mVQXSZRftjL59MadDjXqQd6rag8+v3MNhfMO5Wypj8Tw4k7OVd0twowi3yzFlMubuCPgDgfrI2ocYZGBMmBWogiEyu4VETC4SaGXCDIaabmOaMgQA1elIRPzF2gwmHDF0dgNMcF8RBT7KCEx5vNd0vYnjo1T6dJk5jQHzQE7QEocb3G4mT3V8dqp3NHLklWTARuMGEQ6v42mhMEtnciX40+O88Qk26+jKhwXk7NtC5PNqX710671LjWZ0GK+1Swp4CwkjwVqtdIcYojGvDN8ef93W+v3tU2+X6sVWNriirVXe/uDA8K8pTN6L1VYlqocm1PCKZ7xF3YojIb8+IHVJLHMFr5an5Xb7goUTS2VZmfYgxJ3TU9mzXbQYsbrcBg9/DjeHg80p1BRdjXA8vGHDYYAt6aTjikP8zTpBZL06FNODclXLP4IzGPvLw4tJodJ0Mt6kkcSoF2jsobKy5wrPqE+XfIUEmbIC6GPpC936G1XvdR+l+RPztpscT6CP5pfs8vSVK/u1LozE+jbifTwhxFwUM26o0bFj3r4N56/SLBoEqRHIdUwgh7zvnoNsPmz0c9Lhohb0qQtu/5G+GPxPOC2Gk+8TeWfqP5P5PEcozo6ebKGe3bKa0C11HdjjNhjzX959PYA6i7xVJB+eZjKETOQnKQfcL4XYYFmHE38H+1fMaixvfdfmY27i30BLfp/jFT4f580z1jQsI2gwAAItkbUKNHqBjg6jKCVNwFQYxapKBUDMb408Vpz75t9+F4Ulvadc8ifHQQk3M9ij3CO5SdAuRPj40NmaCF7gxKJZ4EyGjyKMngbFCjZ4o5YJp5u+V/ffTWxQfcx4YJzDilI+CebV0ClowMQtN+rQMNiojIpHIE/Hetis0hHHELdN3vd+dSahh9HG32zFBWsV3S4dx5ci4ZcJlNlU0cI4EzW7FBf6cFV1HlSEmntM/KdVpM7ipO2Ii5+V5MM16UmwyNGQ8k8CkVwuHUZFAGHPC2yhcj7UQYRZYuH685/zR7UYbdoaxwblP/DasjUavEEeEGjYCRdyjcJ+iDX3DirIQV0QeRY6c5hx0RFstmAhxyJ9fuuy0ES+MmuDKsxYh44SV0b8lyu6yARt4W/dhISP+ho37GHHKbRfWtuGENYU24ENCwoT7e1lfVZ2Rc5CQIOMa7GGhRhm0wbh5qgwiIoTnUaaNeJE/nkHviT5BI1T3a97vR9KovWV87VSUazaQXp2uGNHlukuVnZDoqssizdafhDomscWYluW5ncxlJQ4aBG4tfhtEAr04odu+EAoj41woL8R3/NsnZ+o/Evo/iZgHbOWp4cszPY54dV5st8oGvGfi28WAGnFzAslsYuXkW5NKjyzKPmuY5yrq+YJjnkivqIeh4/R9aKEmWE+H1JQClBb6Q0KhRPcZcdvjtIgVWijyoWNixQk53aNc6NS/Wwi8qn2bT+YaUeflNlkLG4sBACA964tRw8ZrQ6zG8oSwfjkKnBIy4YlEbcei/LvghNLd8sBXGpf6RQGhZrFsilAj0DFenhy2aeA/teOPTYPzKhWe1ag7tappI5gnDntV6gbuw5P2A7HSX+BJXmDq7yEnzhkq/hN27bZp+KFK5ReO8ZA7DQoa4sQRKTQ9rgUnZ2Ki/KpN3X/EREeJRzwRKYVWmbTw6QklQnQpRSfU1x2ZPutFi4aBSaBIX5nKBjEkDXqim9spUPVT8MlH5+K4a56cs3FjzjWbem/yZD2uUCc00bO/NrhM2VA4C+enwJvM1S7VS360YewGL/YzoeGZSJehrOwhtV5VI2kJog2oqJdPBC08iCtp5To12mByVtlHHwqhSakyEi3OT/fH+Hk/CHEqR5ULQxl/b1Lur1B9Z+zvXNfYqAlO/tkoOOLyDItyf8bUfZ2j7EHHkN/K4N1hA9/f/f4eUPsoT/k3Pa8MhHcDt7GIUDoWY4np2PS7gTZYxeUJtWo7Fxt5rR9Rw8ERFHMBw8n+XOO2Ht+eHIPSERyE94KltzhJlFGl6uHkC98rLCzfiO2h3EeEhUpuF+1Xedo+CPcdDs6CjS+WjG/bnKneu1sQxRUWU1z06rhT1yVScOf+WXxPegzy7+yHtzl420ACBqQUHkz9n8or/rx7shynv8N1s3TknGYpy+ymT7XHIaFQGYZe38vjzfsC5fl7UiiOS6MWSbTnR8xCgjM2WNxu/Tk4ofElj3ePyoZ6o549ZV8jtm6G65hgfNmg4qM81T77SkakkcfYgFeq8MYTebrHbdtUiEpYkN4wUrgznKoVyAvRt4bFghn6DzEuiCDkgf5PwGMczwPyhjzTi4267goxMh8WQdVCTKBd3PBYIdMVHbs8+HuxYmUYz0MrdouZzB+e57jpc4Qqy+J++kvCD/jLQSL6njyP2aq/4PSL/uBJeEssl7msx3Hb47Q3WpIwaMo7ZvKrR/W9bTm+B0tkljwL4vR/MWI+zyfc4PeBfhEAAJbP+oQagQxA2aDKPk/UdUdobVP+oE7tq8Bo6cAGbXXXMp4Qskwg1CyWTRJqJPrUpKc52uZJZv4pX/sValywUZOq2HmCIOtvjfqTEXXflnmiXqOGCJb6tEiV06571GUs7slNJaq8aVDjbY0qx03q/Zqw4eUZa5ZI36lvajPuUeu4TPmdApX5ezX+d+V9T+2R16vPeSoccpsxzDBEPKjqPt/zeZVqbCQ0Lg3tTiCEqwvRVotUOhbPVqXK6wZ1vs0/bfE8W/gZP/GzP69Q7YSfm9NT5PR2Q3veTcigtPzMRS4v8d3qC86/kzb1dbwGlzF12WDMi+C1oo/Z3WZDI0s5Luvqf/zMX5uy3EUg3OwOT0SF0Sny+lU3ariIPBdl+3eJqiLPX/Fv/5OijBkxubfiVm0DeFt5ap9jymRWRP/5bJsKz9mgeG7qQ7mMz6pU2C1wHaxye8hT+S3nZcLP2987VD8sUlnUd1F2L/jfcd/hOt47rVCZy6oqTvE45jx8UaHmp1H85Fd854TrtzjRTJTvAd//uCXbRQQRjP6I68JhVZ4QUuV0lUQ9+nlXp9Y6IKpF9U9cHw65PLjtlfdEuXRoGPtYoj01qLybl23VbU9J+XAzoOZzbhf7JSoIsTlkQMoV+50iVUVbO24bRRdhALe4v8nvqbaoyiq5HbPBeFahgrg3t6mS6Idebst+wRi7gtOR5zZqseGcKIry87QOC5Tb57rwmvvjw5bs/0b/cf3m3yq/LFApfBKYz3jsfm9R5WmZ01Tm9lCm+oVJ9HWwvzQ4b0T/y2XDfVhTGr78XKdlyj0r82sF4wlokx/c9z7LcX5yGT13fkOkJzGNjHz/Ed+Ty6J05DyXCdm3c10pHXNbe+20tfgxbTahJljHfPc/74eC2juIxbfGgRpnuF2K8TWx3cv8K9H2LrfhPXP+CXRelJ5zOkwnu83SfwT6P2csLb6sUovbnjnPnPF1m9tL9SWPO2cxiwr+dsH3zHO9qot8SppbSOGZx6KjODHSjxDBeazg8axwEvaW8/G7T43nOSrwM8k+gfMhqW/XjD7X3fot6ymXm+wvDvheB1wHTf2F3h4XN9aFtrbFIoRekXdcb+T4wv1T5aQTXFTTzJRnPpQHXzCYvY8JP+uexf1Clm2PBO9rAABYAusVau4IEGoWy8YJNbfGJ9SoV8B0Ercg3VMGJwXlLg7ANPQK8fS4IfcHz6slPrbIkpDbrfm3Uwmp9w+5FTa1UANAPHFBwjU6kPDK27gBubXXsGU2yoAaBxBqAACrBUJNCiDULBYINUDw4IQaEYvl75i4DgCE0XEz7qnxbH9pUeO0SyO/KqK2BIktKOEtdcvGDZC6AcbjOpDPHxd3BoDUaLHVsF1Noj0F495fIXKLVjT+mhHhsZN40iQAACweCDUpgFCzWCDUAMF9FmpEjIi8FZwAim1P5RXG1gJ3G73qPPdpVZuMFmRCMTV08NVg4PRVMFKnzEw/BfC+4mxXeUjeW2BRjD9V5ZZEGdxXbyEU8VzEtiG5hdfnsaJiC3nxctaFE8MoGCA8HvuiMnuQYgAAuCUQalIAoWax3EehpiaNjhr1Nr+abAz6eE5jUN87jhv43A0+OKCGCJyJ+gFSoYM/31OPMxmjokBVFZdFoIOj5177g7yuCB2Y9iGL7dLAjgtGC0Ac3nbF3PuBOm1LBZrmNi3HQZ+HnNxqFHMc+CqRQdfTpkMENj5o0hDjNwBgxUCoSQGEmsVyb4SacZeqIvDwI2WUi2srR/mn1RQnRT1UVFBfGcxX5Zk/qO99QZx08v9T9WAyos6rauwxpAB4TORpZjLotWofMqj10wI175MBPRlQXRwRfSkkGXUakZWl4mncKW9LQpxWxX2PCB7u5LdF27uc33vN+NNo7i3i5CMr5ohiAOKR4gu3meHNiFr7Gcppb5lJn+qPt6kiPUknNLqoUG6nEgk+vGqkKLw1JSC5i81zljLGbwDAWoBQkwIINYvl/nnUAGBg3Kf2aYMaZ+lOhALgQSFPumvKE7qa5z20kU3gV5uKVpV6a/Z2AHcNm0afWrItt8InR9oj6ql2Hn+C1uqQ25J31y8WAQBAGiDUpABCzWKBUAMAAABsHqOPZSqcDtVfANwjvjaosN+MPdIeAAA2DQg1KYBQs1gg1AAAAAAAAAAAAGYg1KQAQs1igVADAAAAAAAAAACYgVCTAgg1iwVCDQAAAAAAAAAAYAZCTQog1CwWCDUAAAAAAAAAAIAZCDUpgFCzWCDUAAAAAAAAAAAAZiDUpABCzWKBUAMAAAAAAAAAAJiBUJMCCDWLBUINAOChM7qoUuFlh8bqb2DA7lL1WZ36N+pvAAAAAIAHAoSaFECoWSwQagAAD5cJDd4XaPugQyP1Cohn9KFAT972OdcAAAAAAB4OEGpSAKFmsWyEUPOzQ5X9POWf8vXIokymRB0sbU8H+bY8fnWpGsjbIrV/qfceNBMa/FN28uVpjrKZDGXYcL+bTKj/Lk/ZF22fSGNT/33w+ax3A/UeoN8dKmcK1Pqp/gbr42vTa4Pi+ttfj8G9Y8xjEvdL25Yq70yN7mrPCwAAdxEINSmAULNYNsOjZkK2bdP4ouJMQJ62MOFMBfJteYTy9nGDYK4rbmzOmwE1nzoGQ+U/W71xtxidl8jaMWzlCT1f9TP8Rzxs6h5m6Ml7tIaN4UeT8qKP2mSh5rpD5S1Oo6m9gdm46VJFlDeEGgAAWCkQalIAoWaxbNLWp/F5URpGMAJmA/m2POz/HKHGWrTXyK8OlawMZU/uapkNqPFYGAuL9jSa0OBdjjJWeaneYZOrOuUyOapfxYkwfarLlesKde+mDrU0Rh/yqxeFubxqX9S/QZBfbSpuuFAzOMnKflRcpY+Lb9jj8xq1r9Uf9x7um2ReQqgBAIBVAqEmBRBqFsvmCDXOSq2YyGEFexaQb8uk/8bJ20V7jUhjl++b/3BHfaCulXG4aE+jSY+q4r6ZKvWWVZ1v2NDZySTHWvnWoCciHfBSizD5XOXyWa2ANf5YglATxx0QarRHjbVbp/4S6s3gXRFCDQAAgKUCoSYFEGoWy+YINVjBng/k2/JYltfImNr74r5PqPFNvXTHWJqn0VWdLGGEHHZpOdVZe+xwe/mtXjIAL7UEuIxkm1iZYTyh3nEGQk0cd0GoWSojaj2FUAMAAGC5rF2osX92qXlYdAMp5nbyVH7boeEGGYAQahbLxgg1egUbARFnA/m2PLTXyKK9KmwVY8Cq39mJtvY0WrQX1+D9E3nf4vmS9j39bFGB719I9GTyvNQgDhiQQk2G6lfq72WjhAiURQwPXKgR2xifrFQ4XDcQagAAYB2sUaiZ0OisJFcyn7zpeSuZdo9qYkV5q0ydDRkEIdQslk0RarCCPR/It+Vxd71Gls1d9TSaUO+1OMGLx7MEbxp4qU1hlUKNzXVtT5TZPRBq/tg0vGxT86RJ7a8LrFgPWai57lBlR/VFEGoAAAAskfUJNd+blJMdf3SCrGMpWBtiVECoWSybIdToFWwrefI/7lP7bZkKe2WqvqlQYbdA1fNhQr20aXBep/LTIlXeVKm8X6XutU2jqx71r2M8AW5G1D2tUPGp8xvFgyYNbDHB7tEwzrizh9Q5qVBpr8S/U6PKflGmK/AL112q8vvlgzxtP+d73rDZ+KNDdf67fNyghvgtTl/7xyweChuUbwthQsOzCuUPKlR+xmn8L2p2TITXHxs6vfCkXOTvfpkqBwXKHbZoKE4W+d2XHoLl4xqV9zifT/qxz2x/d8qi8LJG1QOn/LpvHQMx0Wtk3OPfKFD+eZVq4rdOB2SPh9S77NPId7rJ+CM/l/RUzFNOnH7C983uOH+LqxbzG+PLFqenwOmqUuO4zHnToH6iyLBg/oypx+2hsFtS7YF//2saTyNuMxdch7iulVUd6qg61PvuK4VJnw1xlQ+7246AZW27+ZJ/zmWpPuqR8t5h5NHSPJa97gXbZhjtpbbfpni/Hv69T02qPC9Q6ZDrzHNOK+dNL9ERSKVb9hMNLtc8FY/bTl014NRJvv9RzSn7af1Dmn7IZba0+BHxYmSf81W9kBaZvipVXvHznDi/mT+oU/vKlGk29d6VuB82txdxNWb6/TF1X/H35FH7zv2k8MOGfu1Fhaov82Ttin7O+bSHyKeGLGfZT3M5FJ5XqHkZV9ChfJX1okqtswYVd7hPO+P+66X4/Rr1uG0Z06RJexzzFKFG9CG1owrV3qpxRvTrp10aGZuKOO3My3MtgNhfua6/4LLb36bsvjN+pcO5X+wzxBwxPr5sUpXrff2E6/GzHOUi/d6Q2txPF9x7W7S969WN/NMKdUwisttGeCwUdfClaL88ngSKc4Y80GX0KCd/V6Zli//tXzjhz8gTr2Qa+Vm5fytfOD84W9lokoQabjevuS7zbxXOoj0nAACA+VmbUKPFGOMK6Zda/HtrAELNYtkMoaZPNVnH4lewRxcVymWyVD73TUWv2/LknJwpKKgIGLrLE2D/caBi24NlxXsz6ICHL7wJrwicmeXviDZg8loZXVQpz+8X+D3vfsLjwC+ejKj17An/zalUk2qLJ5W5HX5eZRgM3uecdvaik2AchtmQfFsQ4rjkvEpT/614rnBA2Thhype/artS7oANqt0adXVmKiM9924QeuYJ532Bny1H9S/6yUbKs0NcpdjTh0b/iby1qPSvW1uo/8bZuhNvyIp4CuL9PLV+qpdMiOOh97NcDmxw+IxH+6I8RUBYINdduVot24Pqcic8HkgRgy+L89LIjfKCEHVIZ6neRiaumDruBKnl948ThJQ57y0YnRX4M9O9dUb/TvFSU14ewcCoXPZvReybUszKvvO+Py8Fow8FY1BjeSpV+F6iHT7m3zRkTrp+SDNbWsI484UZ5wOiX3lWouaVlzrB5FtDbkV78ib+d52+YFEeNRPqHqn7/dumyusujf94W90y/Pwuv3tU475Q5pM/car/jKaZ+40XXDf3W77PO/1LJrNN1U/OswuBvnXhF8pt6hwkPOO045gThBrZp77qBNPPn+ocin7KESDMDNXx9EVqntep8o9Ir6hPTjpn3po47RncI8Zb1DuvUv3SX09E/87vGeu+9sJLehYH+3NNthHRX/tvI4/p536h9iV88xnyQI0v4rMtYzqc7+Xe9shWbW7+skkQasYdKsn3+LrDW2sBAGATWZtQoydCcnAIT76+Kjd9vjbB9RhCzWLZCKFmygq2M5EyxZVwgkxGjK/JQJ7qEp3s8ET6b6cuR07bUcclZx7z5CewWqjFkKhnhU6XccLOv+MeQyqeT3sf6GfNFHyGujDw2Sj3rbSlYhPybVH85om8OJJZrprq3wsLUDHClD9/dX8VMZj1hD743SEb76Y80tue4rxG7Muq9EK0wqKCW74xpxbpiXTSaUnqVCLjZF0I5zwBj/3uomAjtSrSYPFzBNqDZ6iYPY2G1JJbVfz1W+AZw3F1aPBOfC/phK357y3qlGPsTTulaoqXmi6bSL4wP1uOsXnQ4buEkPUi1N64z5Er7ZH26+Txk8DR7WM25sURx9ExOnU/pJkpLWF03zHbqVyOF474XjT9fem5th0roC1WqPHNd7gMdV8wvhAeb2VqftMPpeqL2CZnyBApmPI9Kp+8THCEwAz34aHS10LKX/HtNvkZEwxzQaxQw/25GNPEe34BSqC/Y6qrEt1f8vWsSUM55RKiU1F6dkU9j6aR8hn4Kp5F27BeTKxdqhdcUgo1KjaVeN5ocWqhjMeGQJueJQ/0tsq448e5Te/4+4zblE1SXnL6Tku0/ahA1Yu4vhAAAMA8rE2oSZpEuZNPvgIrCGKrwa41oxvs7YFQs1g2QahJOqp4woa33JYXY2DpCa73XZ6oiFNd+LWgoSPQE6/wqjobQWIllL8TmWSLSZGcUIXEAT3xM8W7+NGkglVyXa/F8+nVeR1TZur2ixSsP98Wh8wXLXroiWrYaIwRpkQAWp2/bp78E3b71uKP5+ni5pFVixidWqgxelVoUS8iGDAxadRM9xoRhrBTF6PlYFOX34t6BS0arz0UIkaTFmrCIprAq0PR+j1FABGGcaKn0W3uzag6NTXeUOLx4En9BOMam9HvOkGSQ8/2sy23F1Y/hWqKqkPBds31V25P6gbr1Qz9kGamtERQ5TRrgO1vTcpzm7H2Wsrg9dB9YtH1TAuyLKHGehNfF7QQkznqmttaxJj2jPpoOrVhPa8YNa9Qw+3iSIh7Oap+DpfrlHv6nieuXGYj5TNExBKH+Dqi05kk1HgeS35hzY++f7Bdz5gHuu83tI3JZU322x63KZtp7wMAAFgG64tR4072PCNG4xoWfPkHK736KS7zCsJygFCzWNYv1CQZWXpV02QwCvR3+dIGmFuXDaJCjBEmJlHSC8NkfGqhMjD58lbP3K1AfyZkXw+oc1qm/KOib2WWubHJln+mMChTs/58WyST674bAyhuZTpOmLJ/6PhBwpAW6Yz2Y2Jyqz2jnPzyJuFRQUR7DZi8RsS2EbW9ybDimSSeCaZ6jRjKYWKPZRDS+v425V91I0bAonFOURFpMBj/xvagcI2tOerQNE+j29yb0YsRU0+pShDa3H7CIOxJ9HcNCx76NCtrt0zNC67r44R06PtYeSqfdqj/Y0wT45A3Yz+kmCktYXQ5JYgcqZlwvyjif31Yj1BjFNskuh/hNBn7T0HYWPa+ExUD9Gfz1PyhXgqxHKHGzITz3La7qj+MM/Z1/2hob3Nxu2e4lVDjbgeK25bEqADZwXo9ax7ocXc7NP6Idsq/bRSgg6QrGwg1AACwDtYn1Ajj450IQMaTt8BKr02dQxWbQly+1UhvNTq6YrdMINQslrULNUlGlmv4xK2ye+7DegKnjRCjwWc8bccnWhjir+gJYsCzwk1zhgqHDRkYsyFO8vjUo8G17Ws/IRYpeKw935aF9qwIG7tJIowiKU+0wKAn9O7fJqGLJ8ImLyqBr+yjcRp0GuMm9vrZ4srFE3oyj0tUk/WKr7MO9a6GNF6J56InUpnECmN7ULhpN8VG0FvSYurQNE+j29xb4BwnbvICChIvtPn6iZg0ep6pBgOK61tRtTl9mYPXCrie/O0thMjLykeDa8/bD82UliC6nOK3pyVji2DghyUqHTWofcl1eo1CTfz9tCHM9fyFE/g49jrtucKC8MIT9XA7HLtJ9zXP4r2QlirU/BlTXwSH3ytTjfsSUTfSCzVJniqzsEahRosw3C+XXhvK0Hc1P/vvP3seuJ5Y/j5CxK8xbrli5iobCDUAALAO1ijUCISRISaHFpU+DMn+M6HRvzx4fGiqlUzDIOl6CqwOCDWLZe1CjTayDEFAdVDP2FV219jWhrGeWPFlMKa0GBGsx96kPMk4C0ygpwohMejvxWyLmYm159uS0GkL51EakSvBYNdeOjpPPKM6QdQxeY3o3zCV/bQ0To1PM10MWD6eiBdtD0meRp5HgSntt/M0ut29+RMpt+skiYGeR5Y5jT6BK04wEqevnVaprE+3Elec8S4NuKY8Gck7MSe01W7efkgwS1p8OPFkwiJqCm6G1D5ygi23vgVzJ94Id1i9UBMVstPB/ajcYuPz3PgzcgIMh4KCh1mWUGN/qVOBnyUngiYHGs40Y392kSKZNQo1bp8967PMkQc8BtRk3fGC0I/OikZPvvnLZtr7AAAAlsGahRqBOJa3QZX9POX31RGUegDla1ETpdsAoWaxrFuoCRtZYhvL4Jcza9GT1zjDx11ldw0MPYFJmtCFvB0S6zffT066Qivx7grdbBOl6QZletaeb0siNjZM2Kvn95B6P4JPF5+/+hm8rWBuHhkMg7DXiH9bln7PWPaGNPqPMzd6jUzGNLjUJ8B46ZzNQFwgM7UHm4ZX+gSVWerQhEZX/lNvzJ5GXp2+zb0ZLaBNE7/CQpu/bNx8iWkH7nctql0m/oqDOjko6VQxF23s8/0D24zn7IcipE6Lik+UQtAJIgRIZxFIn3zkR7f5uDpvFjG4TsR5kEwhWRQReILpdmRbZAJ2lyrHHRr96FLruEzFgzKVXlSocd4PGeJRktOk639MOceJHN8ajtezGwjXj441FVd3dLu6o0KNuJ/exiTKRf52fIwgM/PlweDEWdhwxiHO52d1GoTz/1ZlMyUvAQAALIW1CjXiyMjmaYeGYfd6PRk07cuHR00sEGrSEN4qIgw2bzXbFRSMAUD1ZCbHn9eVUL+m45D4cI/PDE1u3EkcT8bCq8R6xTo8eXSPA044/jJkpHvPmrB1JzUbkG9LQntWhFcgw1494u+gIBM22H38VHFffCd6uVu9InkUPirX+Vunxz0NyuAVpSfoekuU+NufRpPXiHSV98W6cbboePeIYhAiFsks7UH87XqppKhDetuS/NvndWT0NBL302V5i3sLlBEYFfBChDyypLCmPdZcIcaQL4ze8mCFPNzsS3EkcIayr6KiqVPWvrSq46AzW95pRC7itC++f6BdzNgPzZQWE6r8zXGvEtDtTwh8pkCxyrtNt21hlPsFi9ULNVzcOh5R4m9wP/y6RW7Yci6jXCSIeToS0+S2yZg+2ChyePGLooHVBdprSN8znJ/3SKjx5UWcGCj51aHamT+v5swDXd//qlPvc42KkX7ntmUDoQYAANbBGoUabyJshfZXO8aHRaXz4GCDGDXJQKhJg55wKANBTK78gqA2DA0r4YP34gSYcL30JkBBg04EgHVOjIl6mYxUAMCwAeatYkfjcejvxBg21zyx3vELIUx4tX4Kk29NKj2yKPusETouXLAJ+bYctJgRTMeQmtLjQotRfiNe4eZvWKjhZ5OnKHF5XHm54RpiIaFGBNKV/Zr2GpGGv8+jSk/Cw0KN65XgFxf8adGTfr/XCH+G64k/vTpdZlFhwuVXoKxhu9viSN8exNjgtY30dUiKGv76pBcDfPVVCGJZ9zO3uLdACTDTgt5rY1Dnvdjm44kSWsAzbDOSR8vzezv1UFvVgmrGcFKXk8/+E6zc7Xh8n0Go4cqte5HFkln6odnSEkWXgSHA9DTcrSec/sjQ7QmjcUKN3soZCNIrxAtO7zykEWqc/BLP+yTQb/iZfKlRwe9xI8S0p01PuJkB/YymNLlxT2YSObzyNgpreoyIFQPuilDDd5YiYy4YqJmfr+x/bn1S32Nuo8bi5L7kTSE0dsybB16dNh/vftuyScpLfo4THiNETKupJ7gBAACYhTUKNdo1edtz256MqX9apiwbR/l3/cgEThtU4sKpT1Eg1KRBT2icFeHRh0LoBB5liFkV32RnQsMPJZ7456hyYZjkKEPau48IVik+79RV00RPrJyL991TQP6MqftaGYB8mSbPjkFvcRr8dX9C48s6FR6VqfUj1GL48zINYSPSiCecGj1ENiTfloKapHoeJTY/S55yO0IwdibMwkB6Et5+ofNXPMMbr78a/es8c+1zONeVkeszrOyvDSrsVqgiJ+fOJFgYUEEDVgs/Pu+A6w5VdktUOUxOoyN6awHEea6wAC7S5cS0aATd5X8PqH2Up/ybXor6czt0e3AN4z8j6vBvl44qTtmIunDTp9rjUMwUVYe8VWJbCkt5/p40wuQKNz/ffmh7kPaK0aKZEL12Q6LHvPcWKCEoKPIY8Ne9mx5VrZAoocS4nL+tCS+YnQxZe1xehoIZnuZoO+LB4rStbPgZvzcp91eVuiEhxP7eotJW3igYzNIPzZSWMKqMksWcODyRL9yPjP6tUv1Th/Oay1AehS0EIX+/xWgj23dUtmjXprgf0xHtl+/FaZkaEFnWe9GPliL9uSiT8gEbz4E26gh21l41GqT2vEu9b6OY07sYJVTkTkMyD/cttfd15VHjE4z9cNuQMbX2gv2NKzr7PAklNhv6r9rU/UfE7VInUfE9SoFFOu4fpTieo+Z39dJtcIV0k1jH6Gf4H7PQpb1ETcKGXjT0+gYhunCZhQVV0U+LtvqiFfIcF22gTOXIGDd/HmjBPXg4h8etyiYpL3VfKq6/4mKhAQAAmIf1xqjhSUn3rTjSUwkwWzkqHjap+zNmMnPdpequRdn9Jg2SJngLBkLNYll7MGFRj55tU+F5ifLPTXWJDbKzKhvQBaq8qVL5aZ7Kb9vU90/kQ0x+tPmeXH+Pa2x0l6l+0aHGnpi8mEQPB/tLg0o7BSqL3xDxmT7zPeSEJ2ZyzNjf+TN7bMAe82ScjYuiiEdwMSDbUD3tT+JEkCwbv1OMA4lN3aMs/3aWCidRkVSyIfm2DEaf66osOB3POR2fhDAwoOZBjgoi7gMbQuETarytUQPqvS1y31Wj6vM8FbgP68U9swhwelyg3H6Vakclzh+19VPk7R7nw8sy5685b/snJco9K1PtNaeHf6MvjOspaZTvP9+m/EHVey4Tf8bUO+G+WJwEcsLPcVCk8nGLeioG0Srw2kONys+5PXwR9XZCg9OyfO7y80L0FCImUIfEM14MZf0d/cd1cYef42WBSqdhjw71/iO+5zHn3VHLKHrMe+/UQo18vhJt7xa5/GKej+tG4yDPbY7rzGHRieXG5RjfqtkIvGBDm9tT5Q33E28qVPqb0y7ilpj6ie8dqvN9y0fitCF+zhf87yntNn0/NFta/AgxOBLMeCbEb4v4dznZ3uSzHdSorQILaw/C7aclqpmE5HHPyXfRJvgZa+ezbv8bU/cVf3+H+1WL2yD3h/LaFf/nNq4+ZcL+xv0gl0nxBZe5aI+ibIz5O6HRmQ5SHneZRGMHsf28Lp+Rn++kQXX5nOJ3tAeFuLKUe8p9i6gPX5vyGUSw6exOnnJbGbIehZ6H803Ey8nLttygGv+78r6nYubwnI/7P+F9IfpJp81xHyXyRcwDeQ4YyKdXXc7FGRlzX8rfd9Pm3lel0fAM/vcHp+L3c5SVzy3+73wuz+3cj2wDIraiaJdHXP9FfEUTf3hclPWQ2zj3Iw0eGyuvG9QJBLheRB5EvSUjzFo2sXmp6oOE67kQFzm/slsmjxsAAADzsgHBhDcfCDWLZe1CzSrQe/xNR/vGod2PF3FC011lnnxbC6ZtRQAoVCyX6UINMKI8RaJbpoDLzZBaB1nKHRni/AlubBpdteTi1qqFb/AQEV7yEGoAAGCRQKhJAYSaxfIghBoRO0AIDqm2HTnomAHR+DQPiDnybS3cGUEJrAVVP+bbKvPQEdtInhji7wA/YltZxqpSb1oe3Th1cabTpACYmQE1DmY9nQ0AAEASEGpSAKFmsdwnoWb8rUe9b2H/Fx0E0zJsOxKrnD3qR7b36SCdC9qfv+HMnm8bhhaUph2/DB4oTqyJqac+gQhOLI1gIG4Qpfea+5+Y+CpBVPwx90QiAJbAtwaV0N8BAMBCgVCTAgg1i+W+CDVODBghrgQDgOqgfdaL6GkSchVUfGcrGHRvdO4E0c29jYkPc49Il28T6ovArXqv/qKu14vx1HGPxV5VwOO1sdnlsMnIGEab7hm2adz0qb4TPfERRHEC2m7Hxp/ROGPLlNglANyKEbUParGx9QAAAMwHhJoUQKhZLPdLqNmWwUSd+Yk6+cSyqPCubzTQHKEmR9X/lDeJCDR4XpEryJVzJ1DpfWeefNsUhmclyu9uK6FJCG5O4MfqtNNcwMNDnho1x9HSDxZxUlPWeOIjMCMD2ooA76/b1L+2vXz7w33qjx61XuVp+1mV2t/RP4HlMTwtUl0GfwcAALBIINSkAELNYrlPW5/sH33qnDnHoYqrddGnYaJhxhPob11qn+rvNKn9aaBOXXg4zJ5vANw1xJH1T6iA7QApGFHnYJsK7xE8eB4mv4fUv+xQS/WnjdM2dS8HNLKRmwAAAMBdBUJNCiDULJYHEUwYAADEVp5nVWwJSGRMnZcFqpqOyAYAAAAAeKBAqEkBhJrFAqEGAAAAAAAAAAAwA6EmBRBqFguEGgAAAAAAAAAAwAyEmhRAqFksEGoAAAAAAAAAAAAzEGpSAKFmsQih5v/+3/+r/gIAAAAAAAAAAIAGQk0KINQAAAAAAAAAAABgFUCoSQGEGgAAAAAAAAAAAKwCCDUpgFADAAAAAAAAAACAVQChJgUQagAAAAAAAAAAALAKINSkAEINAAAAAAAAAAAAVgGEmhRAqAEAAAAAAAAAAMAqgFCTAgg1AAAAAAAAAAAAWAUQalIAoeaO86tNxUyGMv7rbV+9CQAAAAAAAAAAbA4QalIAoeauMyHbHtPgnyKEGgAAAAAAAAAAGw2EmhRAqLknXNUh1AAAAAAAAAAA2Ggg1KQAQs09AUINAAAAAAAAAIANB0JNCiDU3BMg1AAAAAAAAAAA2HCWJNTY1H+bo9zpUP0dgz2kztsy5XdylH+ap9xOnspvOzS01fsbAoSaewKEGgAAAAAAAAAAG85ihZo/Expdtam2Z003hq/bVLIyZL1o00hrIH9G1H7B37VK1L5Wr20AEGrSM+bybxwWKf9I1YFMlnL7FWpcDMiOZOGExt961D1vUuO4TPndbSqdj+U79s8uNQ7ytM11RNzHeqREvBv5diyTXz1qvalQke9l+X6/+WlE9hcINQAAAAAAAAAANpsFCTV9qgvjdytH+f0SFR5PM4ZH1HomPvOEGt/US5pvDXoivvusxZ/aDCDUpOBmSK2DrCx3a7dG3V8T5/XJmHrvClI0sXbr1PcLLYZjs4vnIxp9LFM2Y9H28yo1ThrUeOV8X977RYccKSeMTb03eedzW2VqXo1ooops8qtPraMcWZYWj/iCUAMAAAAAAAAAYANZwtanMbX3pxjDWozJVKgb3uZkd6ki3zOIOGsCQs00lCeUKDerSr2I18uEesfO+9Zhl8JFPvlUcb7LV/GwQjmrQI2v/k+NqPXUed9cLyZyq53zfoFaP9XLAfgzb56oz/AFoQYAAAAAAAAAwAayFqFm/LGkDOY6RT+hvHP4Kn00+06sGgg1ydj/VTyPlzgB5KquPmMQUvyxYzIWVf6LBinqv9XvC6+bYL2Y8Pcd4Y8vgxCkGZ8X3XtAqAEAAAAAAAAAsImsRagZvNeeDclCzZP3A/Uac92l6q5F2f0mDabEKVk0EGqS8JU3XyaRReJ6ShkEOL9QY9Wop3ZN+YkXaoS3jvde/kP8hjkINQAAAAAAAAAANp21CDWe0Z0s1Pi/P3jnxRdZtacNhJok+lTT5cVX/Uq9HMErV+udT4AT+IWa/TbXoCjxQs2AGjomUuS9IBBqAAAAAAAAAABsOndGqJl8rVNOvGaVqPNLvbgiINQkYAgIPO2KHNt+K6HGV18i7wWBUAMAAAAAAAAAYNNZz9Yn1zsmWaiJeF7c2GQbtsUsGwg1CYw7VFLlJa54j5oE4FEDAAAAAAAAAABI1hNM2DWYk4WaJKN7lUCoSSIolMTGqEniVkINYtQAAAAAAAAAALg/rEWo8Y7nLlEnbJW7HhqGY5jhUZPIeoQaotFZwRVAYk99Ugz+KVLxwyK3PhFNLmvuqVM49QkAAAAAAAAAwF1mPUINjaj1THzGIMZoEedZiz/lgRg101mXUCO8apq7ejtbkdrX6uUw120qWTmqfw2pbbcUakSd67zw/b6pfvwZUedQnzbGF4QaAAAAAAAAAAAbyJqEGkYa7RmyXrRppDUQNqbbwuC2ShFjH6c+TWd9Qg1zM6DmftYpo60iNT4NaWzbZIvrekCdkyJlM1kqfwzIb877n2pu2Wb+btFQvKaPYJ849+i+Vu/zJTxyxGsTf5GIunPg/L61W6PutRaD+De+tam6m6XslleHMuKY9zHfew0eWgAAAAAAAAAAQBwLEmp84kzcZRJtfg+o/bZM+Z0c5Z/mKbeTp/LbNg1+q/f9XHfZ2LYoKwxsbcSvCAg16bF/dKl1zGX6yBNFrEdOufbD+po+MWrLKX957W4725hUfdHblbJcN9zPqHubAhfb3zrUOCxSbkvVO7538bBJ3Z82jfxbn9S1KXGQAAAAAAAAAAAAwRI8au4fEGoAAAAAAAAAAACwCiDUpABCDQAAAAAAAAAAAFYBhJoUQKgBAAAAAAAAAADAKoBQkwIINQAAAAAAAAAAAFgFEGpSAKEGAAAAAAAAAAAAqwBCTQog1AAAAAAAAAAAAGAVQKhJAYQaAAAAAAAAAAAArAIINSmAUAMAAAAAAAAAAIBVAKEmBRBqAAAAAAAAAAAAsAog1KQAQg0AAAAAAAAAAABWAYSaFNwVoeZ///d/5QUAAAAAAAAAAIC7CYSaFNwVoQYAAAAAAAAAAAB3Gwg1KYBQAwAAAAAAAAAAgFUAoSYFEGoAAAAAAAAAAACwCiDUpABCDQAAAAAAAAAAAFYBhJoUQKgBAAAAAAAAAADAKoBQkwIINQAAAAAAAAAAAFgFEGpSAKEGAAAAAAAAAAAAqwBCTQog1MRwVadMJhO4iudj9SYAAAAAAAAAAABmBUJNCiDUxPBnQrY9ou7xEwg1AAAAAAAAAADAAoBQkwIINcmMz4sQagAAAAAAAAAAgAUAoSYFEGqSgVADAAAAAAAAAAAsBgg1KYBQkwyEGgAAAAAAAAAAYDEsQaixqf82R7nTofp7OvaXOuV2mpT+G6sFQk0yEGoAAAAAAAAAAIDFsDih5s+ERldtqu1ZjtH+tq/eiGdy3af26wJZ0siv0/RvrIe1CzUiYO9ZlcpPc5RVgoj1KE/l4xb1fk3Uh3z8HlL/skOtkxpV9vOU21J5+2dMfb5PcSerhJUs5fYr1Pxiy68lYX/rUPO4THn9XWub8gd1al+NaQShBgAAAAAAAAAAWAgLEGr6VBdG+laO8vslKjx2DPYkoab/VnwmS7mnRSrt6RODINSYsD/XKG85+VU+G5CtkmF/a1NlR73+ceS8qHDy139x3t5wOe1aXE4FqrxpUOOkRmX5fXHlqP7VIPgIbobUOnDEGWu3Rp0fNulP2j+6VN+zyLKUOMcXhBoAAAAAAAAAAGB+Frz1aUztfWX8p/CoEXjbZiDUhJlc1SmnBJDCh6AYI/nZooJ8P0eNb+o1lyE1n6qyyJSpcmhR7qhDI99jTD5X1ft8HXYp6lczovYLJcJYVerdqJcD8Gd0mfMFoQYAAAAAAAAAAJgfCDUpWI9QM6CG6/FSpPYv9XIAL7+t1z3X08XBVxbi2mnwHUP8alNRv2/If3/smSfvI9928XvwQKgBAAAAAAAAAADm524INdddqu5alN1v0sDo1bFc1iLUXNVV7B6+HhtEFsXgvdo6ZtVDnwkKNYUzg0dOolAzopbrkZOh6ueYrVEMhBoAAAAAAAAAAGAx3AmhZvDOi4FS+rh6IWAdQs3oX8+bJbPf5pw14+VfiTqBDwWFmvqVetlPklBjd6nivhfzfQWEGgAAAAAAAAAAYDHcCaFm8lXFarFK1DFuAVou6xBqogGBp1xWhbqBIDO3FGoC70GoAQAAAAAAAAAAVsHdiVFzY5Mdv/tmqaxDqPF7ESV51MQDjxoAAAAAAAAAAOCugWDCKViHUGP/V3HFj6QYNfHcUqhBjBoAAAAAAAAAAGDlwKMmBWsJJjzpUc3SAkjcqU+K312qPq0tdusTMzoruN/HqU8AAAAAAAAAAMDyQYyaFKxFqGHsTxXKKgHkyZt+6PhtjU39tzmyXnQ49/3cXqihyYDq+ojwx/y+KQH2gBrP9D0g1AAAAAAAAAAAALfhTgg1D/HUJ83ovyrlpWeNRflXLepf22Tb4hrT8LIljy23djnv/MeWC+8je0itv1VZ8FX75HxPay0TcY/vLZ9QIzxyxGdCaozdpzr/hvhM9qBFg9/q/T8TGl02qLiVpeyW9ztPjrs0Er+znuwCAAAAAAAAAADuNAsQaoKeG8YrJNp44kzcFRJtrrtSkMjuN2ngFyRWxDqFGslkTP3zBlX2c66HTSaTpdx+hZqfRhTY8cQ4W5Es2t7NU/6pc+WkmKK3UPWpLu5hbbvv55+qexsDF09oLEShgzxtq+1Y1qM8ld+2qc8f9m990ldS8GEAAAAAAAAAAACYWbBHzf1k7UINAAAAAAAAAAAAHgQQalIAoQYAAAAAAAAAAACrAEJNCiDUAAAAAAAAAAAAYBVAqEkBhBoAAAAAAAAAAACsAgg1KYBQAwAAAAAAAAAAgFUAoSYFEGoAAAAAAAAAAACwCiDUpABCDQAAAAAAAAAAAFYBhJoUQKgBAAAAAAAAAADAKoBQkwIINQAAAAAAAAAAAFgFEGpSAKEGAAAAAAAAAAAAqwBCTQog1AAAAAAAAAAAAGAVQKhJAYQaAAAAAAAAAAAArAIINSmAUAMAAAAAAAAAAIBVAKEmBRBqAAAALBebBqdFKpwM1N8AgAeHPaDmfoEaX9XfAACw6dhdqj6rU/9G/Z2ITd1XBapfTdTfIAkINSmAUAMAAGB5jKh7lKf8uz5h6gLAA+W6S5XdPAwYAMCdY/ShQE/eppzD/GxR4XGd+ujqpgKhJgXrEGoGpzxpfzrvVaXuWN1opYyp+4p//5FFmUxGXrUv6i0wGz87VNlX5Snzs0SdtZTpHQP59kDgvua46JTz7jZZ3NcUz+9qQY+oc5ClXNoJDlgANvXfl9V4maMs1x/rXdiTKc1nwMqw+9Q4UH37Tpb7dovqEa+TO1xm1x0qb+Ug0twBJt+aVJZ1LE+5LTHXZYNTvXc/mdDgXY6sV93QGDWi1rMMlT5iknWXWFr9/c19WKZArZ/q70RsnvdkqHA2Un+DOCDUpGCtHjW/e1R77IgemadNGsYkY2KPafipQUXZ6HLU/KHeWAsT6h45aYZQMy8Tsm2bxhcVVfYtHhLBdJBvD4UJl7M97lBFlHPmCTW+qTfuFBPqv+UJ8Is26umqueH6I7aZPHXGqupng4Gc5jNgZcg2/7VJednmq9QzFcddLLObPtV3LCqdoxcwMfqvSnkrQ9n9Fg3Va2vljzPPEAuqcp5x2GWz8x7zq03FjBVpS5PPVbJSG+ZgY1ha/bWpe5ihJ+/TieP2fzxPf9wgLH8kA6EmBevd+jSm9r4z4cj8nWIyfy061PULJP23Tpo3S6jhvHxztwyi8XlR5mPajg843Mt8mwx4Mp8h66DDNXldOCtrGau8GZ5KdtcRaqwFr2iuKK9H5yWyrBK1r9ULBsYf+TOZ7HpjVvzqUEkYSvcufg4byPxcmUyFurEz1TSfWSL3Nu/n5KouPeiSjYu7VGYjar+wINbGoft4eW2Wh+zg/ROZrrvrzZkGsZjAz/ksvOjleNNYr3v8iXgwfm0uy6i/ow/59AukP1uUz+Qh9E0BQk0K7pRQw/TfWmsfODZTqGHja/8uTYYcdVrkI1ZyZ+F+5ptYvZL9wHHyxGipTHpUFWmIW81eNV9qTp4seEVzJXl93ZaTx+S+mifD0jNgvZMZOfni/Mh/uGem5LcGPRHlnDSxTPOZJXJv835OtHGRmB93qMykWJspUvuXegGEGMutoRlrm8r/jtY39kUYUftv0TffVW/OlIhYIrHeNNPqLcavzWU59deZO6UUyNV8svLfOtT0uwOEmhTcNaFGGC+5f9brILqRQo1Qb9Pm4Uaw5lXBO8v9zDchwIo2tdZBLdVq9upY1orm8vOajY8X/Bs7U9x+pcs55/da3YP1GHT/DJI0nnfr9c67v3k/H+ny486UmVrpz8Fj9u6xLG/OjWJCvdc8TsV400wNHIvxa3NZVv3lOWJGCHgJXsIePFfnNBT/hYCWxBKEGpsnuTnKnU4TCiY0vmpT/UAEfLNoe7dIldMujTbQsLpzQo3oHN+sd+jYPKFGuW/eJaFGrwreKXFpA7iX+TaghoxVtd6V181y9dYrQoterVt+Xk8ua2QZVinDyD3cnN8WT4jXxr01SDzPu/hxKs1nlsiDMAZnwN0GU0vIj7tSZsoItqrUS3WkLdgotDfnOj1cl43ypqldzuNNw00B49fmsqz6K4WaDNWv1N+JOEJNZp314w6wOKHmz4RGV22q7TkrkYkZLwLk7lWo81NVj5sRdV/nnO9ZBWp826xub7OFGvF+eNIyoOarLr+zPjZNqBldVCgXm4ebCeLTzMe9zDesTEVZ1gRs6XntrEamuT+8qJZJGs+7NXvn3du8n5NU+XFHykwawTxOIW7GneT+x6eJ86YZUGMnhTcNg/Frc1la/eX8FveFULM4FiDUqIzeylF+v0QFfUJRbMY7jTxaQdTkVXx3mjv4itlsoUas/iasLo27VH2ap+1HXD7i/2ICI8rKb8TyZ8rytCjh2ZSjrNgLfOGUzfiyRbWjCtXeNqjxpkLFp+k8n4xCjTitQR2ZaXoeeSS5PHbTeT/OHW6mNH1vU3m/4B7hK/Y5O0d3quswJljouEet4zIVnvPvnNSo8rxA5bcdGpp+40fLOW1rp0q93+q1W6NXBa3kDm/cp/ZbTudemaqcF4XdAlXPhwkDkk2D8zqVRZ69qXLeVKl7bdPoqkf965hhVwippyKfnd8oHjRpYNs0vOzRMO557SF1TipU2ivx73D+7RdlugK/cM11k98vH3C9fM73vOGpwY8O1fnv8rEqW05f+8cswu0G5dstmVw1qKDrqTry3nrk1d3SWYzXoq674tlOOK1cbo0vcU/G5XjBzyXLqUFVzvvicZuGeoV30qfGnvpNUxt6vqJTOER94vLK8zPV+NlkGj+pCVjSilDkex0a/R5RP1R358trlXdcd8qqTnRUneh9j69J2uPLfCzlmDqH+nd1X5mlnE7b01rM6rtIS0P2U6XDGtUOi8FyDMN1pHnI4/XLqupDg3Vk/LGifk8f35mh7I5OQ55qq4r9pPoR2ffIfrgU7Uc0ttNPOX1OlUq73I+c9GgcN3Rrz7v9dvyiRprPzJr3U55p3rx3PJQLskxrhzzm7XHfaaqHS+l3fSyxzFIZF0soM/t7hxr8mfyB015Kz4P5M0+ZDU7EsySdmMN5c1yk8iH35c+83xtfNqnywhlXy89yVDhsyTJcOSnGGXkM8H6FL07n2x7nuq5rzjhaUuNuNHds6p9wf33I9WiHP/OfeS4oEGUj6n3pqEYNTk9+at3lPvoT56Eq++pzLqODBvUSqpTMcx4HS8diLiOec6Dm5VO8OVVbSJwHbSox3jTCS8bKlKljnPth/NLMXC9nrCvCDqqq/l7en+twP2Y+Pk/9nb1dOYjg0XL+nSZ49LhDJS4b653PHl2KPXW3WfDWJ5+oECfUfFWT63DhMDrg06btJdxYoWbCxuMHEYguyQ1YIc+3F/cpUsu4d9Bx98+JwVQ9qghyl3/Fhk2gbY64IxYTjOQ9iIkeNVO2pgz/ceqBSaiZO016lXyqR82EhmdlHmByVL/0TzqcY3RNvzF45xh2Ms0LU6f7VJP3jF8VdLyEslT2H+mpApTmTKsd4gjQXU7rTp36egAUg7FlOW3StOJwzfWGO03/iRTC7TXL3xHPa/JaGV2IozQtKvB73v1E/fKLJ0KYfcJ/cypV2Vg8Sc/t8POq/B28V152L2Y5eWdD8m2hTKh3LJ5pWnBkcdxiUdbdyoXv2WTbN7kp+46G9nVvow8F42rZSgLsGphwf1FQZaPzefSv4zUlrtJHc+2Y73sp8/qG67PwHhV1Qt9cnbgn7x9bZ9UqZexE1wfXMXkM8bSAqNxGq1w/rb0GDXwVURiCRpdzWde5f/MbVTc9qlqmOrK+YJD255qhH+Hx8LkVWaG1v4qytij/zitr58jjYN/lR9eFJM+7qZ+ZMe9neabUef+Hx78j7iu3yoGxyQlSy+Us+liXZfW7Dssts3TBLxdbZjb13uTJEp7eX30f5rwrWZxnkTacsswmPaqJRbODji+fgozOdD88pOb/8Gd32GB6nQ/mrZrXWUer9BZIOc7IZ1R/y20WXC9essH3ouUteMm5oBXpi0UdLKjAr85c0hy8fnJVp1z41DwxNj/mftnUfdtOv23t+vptzmE5tzOevjeirmhb/ve4jtb0grRVj11UTjcP0jjHJd/mmsxlosT97pi6xzxO/Q8b/4HX+3KhffsN2wmB1w2Z/YDHr1nr5Ux1hetwcz/L/UGFOr772xdlgzg9X/2duV35cOx4U1kYUHXEbzctx56626xeqOFK0niW5Y5SrEir1xR6y4K4ElfDV8zGCDVhbxC18pu8X1ujDYQ4A4U7BaFgugr2QLkP8xUuSy16JEwyEoWaKaKJrgdRoeYWaZrymxpn7y1P8kIiooPoOPkeT5tBLwKxQvls21mdjMuQWZmyKuhMwjPuZMZDG5qhyaw6bjgqNOnJryEivgp0mBEeW4GVDS2GRI1Zna4nb8KGvvM7bt0Tz6cHcP2sgdVFnjy9USc9KO+uVGxCvi0cXe/jxSeZX1JINLUbUV6GFQ6ZV6Hn5TKX3nWG/NMD6ErdmH8IQYzTE3a/dmNVxEzA5v1eqrweUktu8Q2vhnuxMWLrRAoDTeOsTCULCVpgjLZRrqHCYI0Y2zZ1DsK/P+FJMRuj/FuRcVeteK16y93ooxDLw8KpyF+nDvoXeeSkUrxmEBD14k/5IpzbaTzvpnxmxryf5ZkkqfKe+yERlNrkmcF1TZ7Q5v/+svpdZulllmqr4yLLbOScNhQWu35zOmQfYehTU7YXJ0aVqV5qxFxD91HKa52v6Liq30vKk0WSfpyRhqMqX92XBRY7JCr9/vwSBqFVU8KMNrRNx3I787Hg1jF1QpTJUFQioDEmkBYVAv2izXMC8azRWGLasytu0SL1PEgx+eTMO+U957ymxwWNsojflRfnaTeUpw93/JqtXs5UV3QdjsxHGSGGBoSXeevvjO0qgJ5Hm4XVMHrxL5C+ZdhTd5zVCzWx6AIWV2iSLApu16LsvuOmu2o21qOGsXnAf5JKqGH0xMygcIuJQy4wUeQJz5EzSal+Do+QenIQ/7vLEWpukaZUQo0SYtiIa/5QL4Vw9txuL93jK+k4wclXZ5IbN/jovPe+ywPZO2dyFd0Pr+tXeJWSO2ZpAJgmk5zXcqIaaqdigiXSZfIW+NHkyRdPtlQnL55PD+C6vK3X5knPLKw/35aAnkQmrExpgdH0bLaYjPEEeRDKXGewDgkWP9tye1f1U7h9rWFlyhXJou7XrtFmKss034sz9qbmtVcnovV1ipEoYANVlNP0lSJvPIz37BHeEc5nIm30z5Caz6Ir1e7zByZoPKF7K7Z18Pga+qm1eFHxOCXbacSgEhNX7pO2itTS/bMWk2M8lNzFn3D6tYiRNKFM/MyMeT/LMymm531S/yTQY6LXZpfV766izFLVxQWWmfYsiohJ3EcWOf3Z/ei2z7TtxZlHJBg9Yq6m+yDdJ5kEhhUbounHGacvdER9ry+rfArnil708YQYWUd1fdZz1kicFEa9Fxzrub7J7bvhGI1J8xlGzw999UYIDfJZDb+tDV3josUM86DNRJQX51VksYbnxzyupjuh7GGPX6nr5Ux1RZULfz7a33N74/eEDaefc+76O1O7CqPmiQlzVT/OfH2Fc8o7yuYINe7WnOhqt98VKtJwV8AmCzVOw0gp1IjPyo5xO7QSxB3Aa55IpWgsE+nm2FWD66qFGjOp0pRGqHG35dWoF1Pcs6ZtPpIMPm9wM8e40N/lS7dBdzAwiAoxE1u94mf0LDAas6IOqXaqtwL9mZB9PaDOaZnyj4rU9AcJv+Eyk3+mMG5Ts/58WwbTV6a8Z3M/M7Fp/KNHbZ7AbBu8FwV6sLZ2y9S86NNwnPAga1iZcg02w28mTcDm/Z5gal67E/r56oQzlqWZmEz37DG10Yk9osFFk8q721Q89SZtLnqim8lS8W2but9Gqh2aWb0XlTfexdd3jdfnxIkN7sph2OjQBmCM550k4TOz5f0sz+QxNe/d/ikmzolb1r6V5qX0u6spM/36vPFpZiqzpHaeQLr2otp2kjHze0i9H849dH9mEuNWa4jOMs5MaPy1TyMpLOm+zOAVc63z2ROtbL6fjh+mg9EaxRVd1laeyqcd6v8YU9z2H7fsXU+dEPpeOh2TPtXlop3ptzkfYhctZpwHbSKcFzmu98Etk1wuwkPKuN3PxEMdv5jU9XLGumKYj07sMQ0v21Tf36b8q67Xn8xdf5kZ2lUEPU9MdeqwEE9FOtLarw+XDRFqRsp919mvHG537kr4mpTozRZqxPuGis6NrfhP1BVSdrbiXv6BXYhkBzH70f+MqS+CqIpgnGcdGlxvgFAzT5pSCDWugccT38pJgxoJV3uZg22SwedOKOKMPT1AevnnTnxNRrZa4Q/GWfGJFob4K+7E0T8pd9OcocKhzqcmtT/1ZPnE5tYiBY+159sy4MF82sqUFs54AC+91nnfos7lFPGFvydWhuUzqsu0JVWw+pUpPZngNBnGkvjTJJK/lzxxm57X2mPL6JGjhd7YOiG8C/j9NGKXLtMEzx6d1syziirzBjXPu9RLnLyKyaHwSlTflRdPek2TYjcv0whLC8JtpykMZJ8QYS4vPRHkKzRxTPK808R/Zsa8n+WZXKbnvds/xdURd+HB4Ca/yH53JWWWri4uqswS+/5YUrYXJU6kE+28dEfnUt57KzFEbzHOxPVl7rhimrdxHZXbRGM8r2R+C28t+X11sXEZDTzsm89MEeh1Orx0Gbye9FzSVDfmnQdtDCKvOE/DW3OV4Z/Om4Z5qOOXJGW9nLGuuHOPxyWqqfxqsP3TuxrSOORpN3f9laRtV1H076bqj/TzL30OfffZAKFG73kNBSYL464ErZ7NFmrMiMjsUTdTxh38fK6mZ0XjpMn+UpdxHnKvuxQch7VL9eqFmrnTlEaoCQ3Wa0NPsA3BHHWgxNhO1jeZcibNvvpjmKS4q5SBvNZ5aZrwepOeQNlOFUJi0N9LWtlOy9rzbRlMX5kSbV2mcx6jS5x+dVqVK1iOUceXyVV21StTemWGr2jflDABm/d7kml57TMiDXViqvGvJyYpxK7pXlR6m2ay2GBGnHrSkidr6BMxxCJJZJvYGryo3HYaE+QwgAxQKtIeU16+iXCw3upytEKepX6SPjNb3s/0TJqpea9EP/5MXB3xJvaGeyyw311Jmen8SPyNRZWZl7eRuEFJpGwv2pgxC1VheCyO65Nc0StOyFgs844z8X2ZMLqVQWgw1vSiYuLWPLlo15SnFcoTTWX6wh5mXkw98/jlEw1UOvR4lygumfrxeedBmwKnP8e2WFhwlXNy09a7GB7q+OWSpl7OVFemi41+5q6/mlTtKsrULZ1+Um8DB2sWaibUf5cnKxC9ekzdVwVqpl55Wj53T6gRA098nBXnWEjdQXKH+YwnP+HHkx02/+azJg0jj6472RULNbdJU8xvit9y0+h2nKuZ+MQRNviEK/Dgl9Ol6nyNU6HdyblrbHuiS1RU0HUrtBKq84qvaPnFTBy505W/O6PINdW4nYG159syMK5M2TS8HLhCpW4v6fuHGHRgv4iLulng8OfvwnHrk8EbQNdPPQG7GVFfH0M87/cEU/N6ljoxodFV6Lh3df/pdd0zHPzG3OTXwN0O4U+LsY9Njc1tQ8XiCBmlxgndZEyDy6Rj7G/HtHbqx633MRNxN/3h7Q6uGKAMTtMzJX5mtryf5Zk00/PeS4PZ+NRt1rzVc5H97irKLJwfwbagWFiZTctbM2nbi5P3KQ15PScxCGqud7TO93B/tmDmG2fMfZkD57McbwxGNj+RDBrrG2Pt796WKCN/tGd+KESCO5+JGa/deqPT4ZtzG7ZwhL057e96ixcz8zxowvaOMqrnvuLn+vEs4nedy3rV9eq75OGOX0bi6uVMdcWrk9MXB29Rf03EpT+CssEMC30mHDt0uvgD1irUOCJNVhzJFqgkYlXToMjBoyb9AMkDT03sJY1rfGwwyL2Of9Wp97lGxchkjTtatdKRN2yfcspIpEl3MNzphtKmJ2/GTjhGNNGYvRVumaaY3wwINfyO3oOdNHhMvjaokWo1bB70qqCeVIgJt7dC6AoKxvalxaocf16nT79miIjvxoUKDRTuSp2hHeqJY7js3L3mCadP/B5S/9qfb2lWttOyAfm2BIwrU6IM/IaOXqVOWB2fXPfdSa4IQJ7ntpLlCVZ4wtJ/I54rtGJqXJkS+RMz8V0ErmgarU+ugaImIfJvPRlL8T29JSrwPWZ6XqeoE3pLlPw7lI9qYjZ9Jd3k2eMYLt5+c2/VPz7GiE3Dq5F6viG1xJGeFk/qv8sXPFTbDRvtJi8qmWdht/gFktxOFaofcSfixnqvDT1DQMrQFjV5n7AXXuJnZsv7WZ5JMz3vPSHGmAbdDgxBxBfb766mzIL54RiCs5XrLGU2JW8VYQMnbXtx5kahviEG7a0U9UzQcxVP5BC/tZDA0HHMOM44aDEm6hHkxijh+wV7HiYsqsu+V4lbv3l+u8t5vVWNehmpNAb6WFeIMa/0yzLi9y23rnjeC9HVfj0G6IUAX7oE88yDJmLr/m2uOUs8/LtsC2wLb5qr4Ot9EVTb4rweB193r8jPP9Dxa9Z6OWNdceZmpjqp0YtDc9bfWdMfRo055hiQYVQ6Uoo6D501CTXKkyaTp/JbvTfPuWovxevBiosYNSpPY4SNIGor2d9JDUBPiMRVNhx7qCdyMY3ONYbmFGr489IV1fg8uiMJCzW3TZP6zf8JHq09eF+mlm/l3a1rsZMRoS5Xgnkmj5PLLuhUMk63fA41kRMTFv/qon5O/yqBwjmlgie55/788QSu4ICotxzyvSIroXoSGJ7YiGd37hU/cYyZgHIeVXb8QggTXgGdwuRbk0qPLMo+a0SOctyMfFs8uh15A6QYhLOByYcjzPLnYvaDT/jZC1u67/Takf+EAAenDCOTfb3y48s74QafXebz62cKT2Lc4yn1BMzpy9z8mPd7zPS8Tl8n5IQwlD+OEJTCONZGir88uQxzO36hjEvrrBBKr58RdY9yXhlrI9YwhjoGU3hlS487/pV/7pu5DS9NnBMktFMJT25LW3lqiH5Ei2OGei/qp3je4FHRDtozQE/sxQpjeEyZ9pmZ8n6WZ5Kky3vtGRtNg/gsf5/LOuJVJlhov8ssvczC+cFt2YquxC6yzOLz1mH0b4myu9we3bfTthfV/6baBqcNLu4zwsZsRDwXffcShXPBTOOMwt1SHBZq1Hwhpo5q0dw1vkUdU0adfs8kQsoyjgQM1vNdf9ko9FHroWPDdV0JG7r6KGU330W6AgsYc8yDNgInj6zwmK7K3DjnjuOBjl+z18vZ6ooWNsOClMOE57EFyiqxcZ76O3v6/ei5UbrdCPpZjEHCr3mMEOONsKdif+9hsQahxjepjbtCBrxWRsWV7Hq1HNYr1AypqVZ3MnvmAVIz+T2kzhshdPFn2dhKQjeUyNGTigkbZ1KweFwLTs5sniS9alP3H9ERKJdLHoxL3KF6OCteIs21S/VSAFEHxEQoPHjb3NnUqP7GmXDlToOeM7dNk3OUqc9NlI232gvDhPErTzh4cMpxHgaS92dM3ddFqn8Jdi7++hmvdqdFTyocQ3P0oRA67UG1H8svFk1o+EF0wDFxnpQHlXcfW31epdngSilWIwMdqXx2r92aBDinfCxOgz8PJjS+rFPhUZlaP0I1jT8v05DK4OdBVgl4Zhfmzci3RaNX+/REXRgIeYPx6QzAoUnIH25P5xXK7/IA6xs8h6c52o540zjPlt0NTlgl2rjSfbowvEyfWzCiDAPt1eY6sJenypHTP8g6KFalQhOIeb+XKq9VnfC8+kSfVaD8UcWZnEovnxGPg1F3fseQNK/qBlF1XYvFon/bNRg0SnyyDoPeIJNfParvbVP5bOilXXjJsXHr5olm3KXaTpbKH6N12TFWdXqFi3k+JGYuAzHhEyunITFc1M/zKuVD/Yip3ouVYdEPFd4PQnVcISanXFayr77pUdUyTC6nfWaWvJ/xmQSp8t6UhpshtYSYHthOHmKh/a5g+WXmzw85NplWxRdZZvz92lb0s2QPqf0qT9sHLRqG+r907UXNkRO8UlySBDX9nuqTRZ4uVThXzDLOCLR4Ji5vvFTbVdjojswJFNrzyumLRX/qEze+Nyn3VzVy+pD9ned8W3n+juGeYswSczr/nEB4EIj6ILz6wxkn6w+n+8jb1jO64Gd8UaGKaA/SRuE5xZsnERFj5nnQBiDS/CRcrsx0A93EAx2/5qiXs9UVtVAqBC+/Ofp7QO2jPOXf+OyVeervPO1Ko+aI6Tz61Fw9pl4NTngsUX2GUch5gCxAqPGJM3GXX7TRymjSFRYPhMfCrlLYlmwcmFiHUDM45Yb3NO8LluVc2R3n9fDlBXxyruJUBZw702nq8rhHreMy5XcKVH7ToBr/u/K+p+I1jKh7XKCslafCIZeLbE8ivhCnhzvOjLXNA7cIUJqlHKev+l94WsId5ykbN7vceR4Lb6oaG1IN6v2a8GTAG9ytR3y/U9/gOnOa/DgTR+c31e+Fk6WZjKl3VqXyXpEqrxtUf12h6puWTF+EHy0qikmdmKjE3W8WRH1/tk2F52woPjfVeZ4YcdoKuwWqvOE0cv6W37apn/Dbkx9tvmeOiuK598tUv+iw8SryOH4Vzv7SoJLMZ/6N/Qo1P/M9ZLlE3Zg19nf+DBvFskw5z4o8MDQuePJtaD72J7GCmqXKpzSdsU3dI9GBZ6lwEhUqJBuSb4vFqdPbe1WqvixR5SzG+GTGlw0q87PpdlF8WaXW5diQV9wOLuryeSr82cabCpX+5mc779M4ppsb/cf59qhAVb5v6ahlaFvLYCLba2GnyG2P0/iyTh05cXHyJMfpL++VDMedzvu9dHkdqBPPRZ1wJpQyj/g3yy8LVDKcQpFeqOHfkF4MXD+PnfSbTuKSCMOR05x/XnX60H1O90mHBqHJloT7zuYR14tD8dkGVQ+LVOJ+svszpjBvBtR8zv34QdV5zk9LnOQG8LdTX13+NDT0IzxefBL1XvXp+3l+voRnkkx4fC3R9i4//x7XaeNpFik+M0vez/RMTNq850l6S6RhryLvmX+a3I4FC+93JUsuM50fnMcFbp/m9rDgMvPnLX+2esBt+7hF3XBsHE2qMptBqBmz8WNZlD+J9iUC3d+IPrl43KFRQpkvklnGGdcjiOtB61D0ZzXue8W426FhYvVz+uKCyEvurxuhxTH7e4fq3H+Vj2pOOb7gf08by3l+0Djg+SSXvQhEmxdzGi6j2GT87lPjeY4KL2tUE+PBaV9+VvTNZTEv4tcKx74jkX3MMg9aP06djCzazuNNo3io49c89XKmuvKH7ZIT7ufFibe+Pslol8xRf+dJv8BZHEsZb0YtdsXVK5E+sVBubWVXshh6F1iwR839ZL0eNQAsAR2HRsfUSINasUw1ybyvzJNvAAjkPu90Qg0A4H4iY008iDG0r2KVpNtiB9aD400TNbKl8T2zNw14cKjtg9Gt9CaEeCu8gkyx00KwvVGGUCOBUJMCCDXg3qEDA87gLh0f2PABMUe+ASCRQqchTgIA4MEgD0uIifNyr8DCzh0gxptGbZ2Zx5sGPCSc7VPhGE9xTHj+LLbYJW6jUoiYZebQGQ8PCDUpgFAD7irjbz3qfQtPk3TgL8vg/m7T6KpH/Yg7qQ58lotG3b+HzJ5vAExBxZWIC1AKALj/OPFX7r+XiV7YMQc/BZtAojfNYza+MVSBBJwYO+mEFx2TyBTgP4pNnUPuI9cQ6mQTgVCTAgg14C7ixCIQ4kowqKLTuWbIehE9dUsEmpUeI1uhCP0yiGDaTvZukzbfJlcNKqgYUYu7arHxfzaHMQ+iprTf7ip+MB27f59wYjbcVY+0h1vfAVggcvvsYmOcbV7b1MH9407+BOvHWXyL86a5/cEYmwXGrwUjhZfwaalxOId5mGwOE2KuXXYPbAAQalIAoQbcRRzBYVsGNnXGEhVN3rKo8M4JLBbGEWpyXvBndaKDUM0r5/6TTO4v8+QbAGmQp+0FjnMFADwsHM/M4KmE9wV+tjdswIoDJeRiR8Y5EOJpgZorCb4PUiOPeI9600w+VclKE0MEPGDECVRZyvN8OE01kafSpT0p1O5S9aC9suDodwEINSmAUAPuKvaPPnXOxKlaztW66NPQeCqJZkLjb11qn+rvNKn9aaBO1Xo4zJ5vAKRBxASwsP0JgIfMrzYVLbj2AwDuGiPqHGxT4X2a4MH86Y9l2hZH4KOvmxsINSmAUAMAAGAhXHeo/KxJcOwF4OEiDJjCKXoBAMBdYUydlwWqXqSLOzW+4D7uVQfeMbcEQk0KINQAAAAAAAAAAABgFUCoSQGEGgAAAAAAAAAAAKwCCDUpgFADAAAAAAAAAACAVQChJgX/3//3/0GoAQAAAAAAAAAAwNKBUAMAAAAAAAAAAACwIUCoAQAAAAAAAAAAANgQINQAAAAAAAAAAAAAbAgQagAAAAAAAAAAAAA2BAg1AAAAAAAAAAAAABsChBoAAAAAAAAAAACADQFCDQAAAAAAAAAAAMCGAKFm4xhTez9DmYz/qlNfvQsAAAAAAAAAAID7C4SaDWRi2zT+1qQihBoAAAAAAAAAAOBBAaFmY+lTHUINAAAAAAAAAADwoIBQs7FAqAEAAAAAAAAAAB4aEGo2Fgg1AAAAAAAAAADAQ2PBQo1N/bc5yp0O1d8xjHvUPCxS/mme8jvbtL1bpMpJh4a2eh8wEGoAAAAAAAAAAICHxmKEmj8TGl21qbZnOcLC23hZYfK1QfmtAjW+eqqMfVEhS3zPKlH7Wr24CsZ9ap9UqLi77fw+X9kdRzQa/Faf8TH5NaDepzY1T6pUfpqn7RdtGos37BF1T8qUf6Se39qm/EGdOj8m8nuxTMbUO6tRZZ/vZfl+/7RLIxtCDQAAAAAAAAAA8NC4pVCjxIStHOX3S1R4rISFWKFGHz2dpeKZ3+umTzUlSlivezRF3lgAExqelSkrftPKU+3TWP3mhMaXdSoI0YRfr1/5U2I4Nnu/TaPrDpW3ON2PSlQ9aVDjpOp8X967RJ1f6ush7M81ysvPZal82qfRjXpjMqb+WYVyluWKRxBqAAAAAAAAAACAh8ECtz75hIxYocbnJbKvvFEkvtdfdHyvL4fReUmJIBZVP0dlocnnqvLwqVA37Flz06WKTuvfFarsWFR4PyD/rq3Rh7zzPl9P+L0wk6s65dT7hQ8j9WqQyZcaPVGfgVADAAAAAAAAAAA8DFYs1BANz4qUtbap/NEnUPxsUV4LF2dm4WJh/O5SxfV4iRNA+lRXn4mmx78lKUPWYTcg0kiu6u77QUGKmfD3tedRpkLduLg8v9pU1PeAUAMAAAAAAAAAADwIVi7URLCH1HohYrtYlH/Ti4oe112q7lqU3W/SQG8PugXj86ISP/gyiSwSm7qH6jMRDx+/UGNR7dKwUStBqBHeOu57T1sUK0tBqAEAAAAAAAAAAB4caxNqBu+3PcGCr8LbHo3/qDd9DN6pAL18lT7eflNU/433m0np7L9Vn7HqFNy85BdqitQ2xaBJEGoG75/EvhcAQg0AAAAAAAAAAPDgWL9HDdk0/KBixuxUqBs69WnyVcVzSQjMmx5fGtNeO00KHjZ+O6HGFYAM7wWAUAMAAAAAAAAAADw4NkCoEQyooeO2PDNsB7qxyV7IUVBj6rxQvzNXOgXwqAEAAAAAAAAAAMByWK1Q87tPnU9Do+jibUmyqP5VvbgEAkJJbIyaJG4n1CBGDQAAAAAAAAAAAOJYqVDjxpsxbGPybwkq/huSLxbmUcP8bFFB/U78qU+Kb00q7rcWuvWJJj2q6VOncOoTAAAAAAAAAAAAfKxUqBmdFZTwkKHieXDTj+dRU6bOb/Uis9gYNQ6D07wTE0ekIywKaf6MqP3Coty7AQU1olsKNcz4o4rJw1c4HzSjjxV6ou8BoQYAAAAAAAAAAHgQrHbr002f6jv8/k6Vej4xxv7eopL0MslS+WNQOFn0qU8OExqcFikr75ul4kmXhmObbFtcIxpcNKi4laHsQSewNWki3+9STaVHCDWt7+I1LeVMnHt8qrlpzvzdoqF4LXS0+Oi87Py+lafapxFN1IlXk98Dar/KU3Yr64o54nea38a+3wEAAAAAAAAAAMB95JZCjU+cibvCos2fMfXOqlTe3XaFCOtRnsrHLeqZdJjrLlV3LcruN2kQEjtuze8hdUNpyVjblD+oU/sq4gejnjVLuad5yqtrWwpMyuNFb1fayrnv5/W9TeLV7wF1TipU3Mk6vy3uvV+h5qcR2df+rU/qSgo+DAAAAAAAAAAAgDvPAj1qAAAAAAAAAAAAAMBtgFADAAAAAAAAAAAAsCFAqAEAAAAAAAAAAADYECDUAAAAAAAAAAAAAGwIEGoAAAAAAAAAAAAANgQINQAAAAAAAAAAAAAbAoQaAAAAAAAAAAAAgA0BQg0AAAAAAAAAAADAhgChBgAAAAAAAAAAAGBDgFADAAAAAAAAAAAAsCFAqAEAAAAAAAAAAADYECDUAAAAAAAAAAAAAGwIEGoAAAAAAAAAAAAANgQINQAAAAAAAAAAAAAbAoQaAAAAAAAAAAAAgA3h1kLN0dER/Z//839w4cKFCxcuXLhw4cKFCxcuXLgezPX//t//U8rIYlmIUJPJZHDhwoULFy5cuHDhwoULFy5cuB7MtbFCze/fv3HhwoULFy5cuHDhwoULFy5cuB7UtbFCDQAAAAAAAAAAAABYDBBqAAAAAAAAAAAAADYECDUAAAAAAAAAAAAAGwKEGgAAAAAAAAAAAIANAUINAAAAAAAAAAAAwIYAoQYAAAAAAAAAAABgQ4BQAwAAAAAAAAAAALAhQKgBAAAAAAAAAAAA2BAg1AAAAAAAAAAAAABsCBBqAAAAAAAAAAAAADYCov8/zpaS/a7H5XYAAAAASUVORK5CYII=)\n", - "\n", - "For the on-policy trainer, the main difference is that we clear the buffer after Line 10." - ], - "metadata": { - "id": "XfsuU2AAE52C" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Training without trainer\n", - "As we have learned the usages of the Collector and the Policy, it's possible that we write our own training logic.\n", - "\n", - "First, let us create the instances of Environment, ReplayBuffer, Policy and Collector." - ], - "metadata": { - "id": "Hcp_o0CCFz12" - } - }, - { - "cell_type": "code", - "source": [ - "import gym\n", - "import numpy as np\n", - "import torch\n", - "\n", - "from tianshou.data import Collector, VectorReplayBuffer\n", - "from tianshou.env import DummyVectorEnv\n", - "from tianshou.policy import PGPolicy\n", - "from tianshou.utils.net.common import Net\n", - "from tianshou.utils.net.discrete import Actor\n", - "\n", - "import warnings\n", - "warnings.filterwarnings('ignore')\n", - "\n", - "train_env_num = 4\n", - "buffer_size = 2000 # Since REINFORCE is an on-policy algorithm, we don't need a very large buffer size\n", - "\n", - "# Create the environments, used for training and evaluation\n", - "env = gym.make(\"CartPole-v0\")\n", - "test_envs = DummyVectorEnv([lambda: gym.make(\"CartPole-v0\") for _ in range(2)])\n", - "train_envs = DummyVectorEnv([lambda: gym.make(\"CartPole-v0\") for _ in range(train_env_num)])\n", - "\n", - "# Create the Policy instance\n", - "net = Net(env.observation_space.shape, hidden_sizes=[16,])\n", - "actor = Actor(net, env.action_space.shape)\n", - "optim = torch.optim.Adam(actor.parameters(), lr=0.001)\n", - "policy = PGPolicy(actor, optim, dist_fn=torch.distributions.Categorical)\n", - "\n", - "# Create the replay buffer and the collector\n", - "replaybuffer = VectorReplayBuffer(buffer_size, train_env_num)\n", - "test_collector = Collector(policy, test_envs)\n", - "train_collector = Collector(policy, train_envs, replaybuffer)" - ], - "metadata": { - "id": "do-xZ-8B7nVH" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Now, we can try training our policy network. The logic is simple. We collect some data into the buffer and then we use the data to train our policy." - ], - "metadata": { - "id": "wiEGiBgQIiFM" - } - }, - { - "cell_type": "code", - "source": [ - "train_collector.reset()\n", - "train_envs.reset()\n", - "test_collector.reset()\n", - "test_envs.reset()\n", - "replaybuffer.reset()\n", - "for i in range(10):\n", - " evaluation_result = test_collector.collect(n_episode=10)\n", - " print(\"Evaluation reward is {}\".format(evaluation_result[\"rew\"]))\n", - " train_collector.collect(n_step=2000)\n", - " # 0 means taking all data stored in train_collector.buffer\n", - " policy.update(0, train_collector.buffer, batch_size=512, repeat=1)\n", - " train_collector.reset_buffer(keep_statistics=True)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "JMUNPN5SI_kd", - "outputId": "7d68323c-0322-4b82-dafb-7c7f63e7a26d" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Evaluation reward is 9.6\n", - "Evaluation reward is 9.6\n", - "Evaluation reward is 9.2\n", - "Evaluation reward is 9.1\n", - "Evaluation reward is 9.5\n", - "Evaluation reward is 9.7\n", - "Evaluation reward is 9.6\n", - "Evaluation reward is 9.4\n", - "Evaluation reward is 9.3\n", - "Evaluation reward is 9.1\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "The evaluation reward doesn't seem to improve. That is simply because we haven't trained it for enough time. Plus, the network size is too small and REINFORCE algorithm is actually not very stable. Don't worry, we will solve this problem in the end. Still we get some idea on how to start a training loop." - ], - "metadata": { - "id": "QXBHIBckMs_2" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Training with trainer\n", - "The trainer does almost the same thing. The only difference is that it has considered many details and is more modular." - ], - "metadata": { - "id": "p-7U_cwgF5Ej" - } - }, - { - "cell_type": "code", - "source": [ - "from tianshou.trainer import onpolicy_trainer\n", - "\n", - "train_collector.reset()\n", - "train_envs.reset()\n", - "test_collector.reset()\n", - "test_envs.reset()\n", - "replaybuffer.reset()\n", - "\n", - "result = onpolicy_trainer(\n", - " policy,\n", - " train_collector,\n", - " test_collector,\n", - " max_epoch=10,\n", - " step_per_epoch=1,\n", - " repeat_per_collect=1,\n", - " episode_per_test=10,\n", - " step_per_collect=2000,\n", - " batch_size=512,\n", - ")\n", - "print(result)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "vcvw9J8RNtFE", - "outputId": "b483fa8b-2a57-4051-a3d0-6d8162d948c5" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stderr", - "text": [ - "Epoch #1: 2000it [00:00, 4144.84it/s, env_step=2000, len=9, loss=0.000, n/ep=213, n/st=2000, rew=9.34]\n" - ] - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Epoch #1: test_reward: 9.500000 ± 0.500000, best_reward: 9.900000 ± 0.700000 in #0\n" - ] - }, - { - "output_type": "stream", - "name": "stderr", - "text": [ - "Epoch #2: 2000it [00:00, 4208.58it/s, env_step=4000, len=9, loss=0.000, n/ep=213, n/st=2000, rew=9.41]\n" - ] - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Epoch #2: test_reward: 9.400000 ± 0.489898, best_reward: 9.900000 ± 0.700000 in #0\n" - ] - }, - { - "output_type": "stream", - "name": "stderr", - "text": [ - "Epoch #3: 2000it [00:00, 4472.80it/s, env_step=6000, len=9, loss=0.000, n/ep=212, n/st=2000, rew=9.39]\n" - ] - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Epoch #3: test_reward: 9.100000 ± 0.700000, best_reward: 9.900000 ± 0.700000 in #0\n" - ] - }, - { - "output_type": "stream", - "name": "stderr", - "text": [ - "Epoch #4: 2000it [00:00, 4340.62it/s, env_step=8000, len=9, loss=0.000, n/ep=213, n/st=2000, rew=9.38]\n" - ] - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Epoch #4: test_reward: 9.400000 ± 0.800000, best_reward: 9.900000 ± 0.700000 in #0\n" - ] - }, - { - "output_type": "stream", - "name": "stderr", - "text": [ - "Epoch #5: 2000it [00:00, 4483.35it/s, env_step=10000, len=9, loss=0.000, n/ep=213, n/st=2000, rew=9.42]\n" - ] - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Epoch #5: test_reward: 9.400000 ± 1.019804, best_reward: 9.900000 ± 0.700000 in #0\n" - ] - }, - { - "output_type": "stream", - "name": "stderr", - "text": [ - "Epoch #6: 2000it [00:00, 4068.51it/s, env_step=12000, len=9, loss=0.000, n/ep=212, n/st=2000, rew=9.42]\n" - ] - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Epoch #6: test_reward: 9.400000 ± 0.663325, best_reward: 9.900000 ± 0.700000 in #0\n" - ] - }, - { - "output_type": "stream", - "name": "stderr", - "text": [ - "Epoch #7: 2000it [00:00, 4091.46it/s, env_step=14000, len=9, loss=0.000, n/ep=214, n/st=2000, rew=9.32]\n" - ] - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Epoch #7: test_reward: 9.300000 ± 0.640312, best_reward: 9.900000 ± 0.700000 in #0\n" - ] - }, - { - "output_type": "stream", - "name": "stderr", - "text": [ - "Epoch #8: 2000it [00:00, 4042.49it/s, env_step=16000, len=9, loss=0.000, n/ep=215, n/st=2000, rew=9.34]\n" - ] - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Epoch #8: test_reward: 9.600000 ± 0.800000, best_reward: 9.900000 ± 0.700000 in #0\n" - ] - }, - { - "output_type": "stream", - "name": "stderr", - "text": [ - "Epoch #9: 2000it [00:00, 4400.16it/s, env_step=18000, len=9, loss=0.000, n/ep=213, n/st=2000, rew=9.38]" - ] - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Epoch #9: test_reward: 9.000000 ± 0.632456, best_reward: 9.900000 ± 0.700000 in #0\n", - "{'duration': '4.79s', 'train_time/model': '0.22s', 'test_step': 940, 'test_episode': 100, 'test_time': '0.46s', 'test_speed': '2026.40 step/s', 'best_reward': 9.9, 'best_result': '9.90 ± 0.70', 'train_step': 18000, 'train_episode': 1918, 'train_time/collector': '4.11s', 'train_speed': '4156.80 step/s'}\n" - ] - }, - { - "output_type": "stream", - "name": "stderr", - "text": [ - "\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "# Further Reading\n", - "## Logger usages\n", - "Tianshou provides experiment loggers that are both tensorboard- and wandb-compatible. It also has a BaseLogger Class which allows you to self-define your own logger. Check the [documentation](https://tianshou.readthedocs.io/en/master/api/tianshou.utils.html#tianshou.utils.BaseLogger) for details.\n", - "\n", - "## Learn more about the APIs of Trainers\n", - "[documentation](https://tianshou.readthedocs.io/en/master/api/tianshou.trainer.html)" - ], - "metadata": { - "id": "_j3aUJZQ7nml" - } - } - ] -} \ No newline at end of file + "id": "vcvw9J8RNtFE", + "outputId": "b483fa8b-2a57-4051-a3d0-6d8162d948c5" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Further Reading\n", + "## Logger usages\n", + "Tianshou provides experiment loggers that are both tensorboard- and wandb-compatible. It also has a BaseLogger Class which allows you to self-define your own logger. Check the [documentation](https://tianshou.readthedocs.io/en/master/api/tianshou.utils.html#tianshou.utils.BaseLogger) for details.\n", + "\n", + "## Learn more about the APIs of Trainers\n", + "[documentation](https://tianshou.readthedocs.io/en/master/api/tianshou.trainer.html)" + ], + "metadata": { + "id": "_j3aUJZQ7nml" + } + } + ] +} diff --git a/notebooks/L7_Experiment.ipynb b/notebooks/L7_Experiment.ipynb index 0242ef0..c23b4a1 100644 --- a/notebooks/L7_Experiment.ipynb +++ b/notebooks/L7_Experiment.ipynb @@ -1,352 +1,321 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [], - "toc_visible": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "toc_visible": true }, - "cells": [ - { - "cell_type": "markdown", - "source": [ - "# Overview\n", - "Finally, we can assemble building blocks that we have came across in previous tutorials to conduct our first DRL experiment. In this experiment, we will use [PPO](https://arxiv.org/abs/1707.06347) algorithm to solve the classic CartPole task in Gym." - ], - "metadata": { - "id": "_UaXOSRjDUF9" - } + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# Overview\n", + "Finally, we can assemble building blocks that we have came across in previous tutorials to conduct our first DRL experiment. In this experiment, we will use [PPO](https://arxiv.org/abs/1707.06347) algorithm to solve the classic CartPole task in Gym." + ], + "metadata": { + "id": "_UaXOSRjDUF9" + } + }, + { + "cell_type": "markdown", + "source": [ + "# Experiment\n", + "To conduct this experiment, we need the following building blocks.\n", + "\n", + "\n", + "* Two vectorized environments, one for training and one for evaluation\n", + "* A PPO agent\n", + "* A replay buffer to store transition data\n", + "* Two collectors to manage the data collecting process, one for training and one for evaluation\n", + "* A trainer to manage the training loop\n", + "\n", + "
\n", + "\n", + "\n", + "
\n", + "\n", + "Let us do this step by step." + ], + "metadata": { + "id": "2QRbCJvDHNAd" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Preparation\n", + "Firstly, install Tianshou if you haven't installed it before." + ], + "metadata": { + "id": "-Hh4E6i0Hj0I" + } + }, + { + "cell_type": "code", + "source": [ + "!pip install tianshou==0.4.8\n", + "!pip install gym" + ], + "metadata": { + "id": "w50BVwaRHg3N" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Import libraries we might need later." + ], + "metadata": { + "id": "7E4EhiBeHxD5" + } + }, + { + "cell_type": "code", + "source": [ + "import gym\n", + "import numpy as np\n", + "import torch\n", + "\n", + "from tianshou.data import Collector, VectorReplayBuffer\n", + "from tianshou.env import DummyVectorEnv\n", + "from tianshou.policy import PPOPolicy\n", + "from tianshou.trainer import onpolicy_trainer\n", + "from tianshou.utils.net.common import ActorCritic, Net\n", + "from tianshou.utils.net.discrete import Actor, Critic\n", + "\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "device = 'cuda' if torch.cuda.is_available() else 'cpu'" + ], + "metadata": { + "id": "ao9gWJDiHgG-" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Environment" + ], + "metadata": { + "id": "QnRg5y7THRYw" + } + }, + { + "cell_type": "markdown", + "source": [ + "We create two vectorized environments both for training and testing. Since the execution time of CartPole is extremely short, there is no need to use multi-process wrappers and we simply use DummyVectorEnv." + ], + "metadata": { + "id": "YZERKCGtH8W1" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Mpuj5PFnDKVS" + }, + "outputs": [], + "source": [ + "env = gym.make('CartPole-v0')\n", + "train_envs = DummyVectorEnv([lambda: gym.make('CartPole-v0') for _ in range(20)])\n", + "test_envs = DummyVectorEnv([lambda: gym.make('CartPole-v0') for _ in range(10)])" + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Policy\n", + "Next we need to initialise our PPO policy. PPO is an actor-critic-style on-policy algorithm, so we have to define the actor and the critic in PPO first.\n", + "\n", + "The actor is a neural network that shares the same network head with the critic. Both networks' input is the environment observation. The output of the actor is the action and the output of the critic is a single value, representing the value of the current policy.\n", + "\n", + "Luckily, Tianshou already provides basic network modules that we can use in this experiment." + ], + "metadata": { + "id": "BJtt_Ya8DTAh" + } + }, + { + "cell_type": "code", + "source": [ + "# net is the shared head of the actor and the critic\n", + "net = Net(env.observation_space.shape, hidden_sizes=[64, 64], device=device)\n", + "actor = Actor(net, env.action_space.n, device=device).to(device)\n", + "critic = Critic(net, device=device).to(device)\n", + "actor_critic = ActorCritic(actor, critic)\n", + "\n", + "# optimizer of the actor and the critic\n", + "optim = torch.optim.Adam(actor_critic.parameters(), lr=0.0003)" + ], + "metadata": { + "id": "_Vy8uPWXP4m_" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Once we have defined the actor, the critic and the optimizer. We can use them to construct our PPO agent. CartPole is a discrete action space problem, so the distribution of our action space can be a categorical distribution." + ], + "metadata": { + "id": "Lh2-hwE5Dn9I" + } + }, + { + "cell_type": "code", + "source": [ + "dist = torch.distributions.Categorical\n", + "policy = PPOPolicy(actor, critic, optim, dist, action_space=env.action_space, deterministic_eval=True)" + ], + "metadata": { + "id": "OiJ2GkT0Qnbr" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "`deterministic_eval=True` means that we want to sample actions during training but we would like to always use the best action in evaluation. No randomness included." + ], + "metadata": { + "id": "okxfj6IEQ-r8" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Collector\n", + "We can set up the collectors now. Train collector is used to collect and store training data, so an additional replay buffer has to be passed in." + ], + "metadata": { + "id": "n5XAAbuBZarO" + } + }, + { + "cell_type": "code", + "source": [ + "train_collector = Collector(policy, train_envs, VectorReplayBuffer(20000, len(train_envs)))\n", + "test_collector = Collector(policy, test_envs)" + ], + "metadata": { + "id": "ezwz0qerZhQM" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "We use `VectorReplayBuffer` here because it's more efficient to collaborate with vectorized environments, you can simply consider `VectorReplayBuffer` as a a list of ordinary replay buffers." + ], + "metadata": { + "id": "ZaoPxOd2hm0b" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Trainer\n", + "Finally, we can use the trainer to help us set up the training loop." + ], + "metadata": { + "id": "qBoE9pLUiC-8" + } + }, + { + "cell_type": "code", + "source": [ + "result = onpolicy_trainer(\n", + " policy,\n", + " train_collector,\n", + " test_collector,\n", + " max_epoch=10,\n", + " step_per_epoch=50000,\n", + " repeat_per_collect=10,\n", + " episode_per_test=10,\n", + " batch_size=256,\n", + " step_per_collect=2000,\n", + " stop_fn=lambda mean_reward: mean_reward >= 195,\n", + ")" + ], + "metadata": { + "id": "i45EDnpxQ8gu", + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "# Experiment\n", - "To conduct this experiment, we need the following building blocks.\n", - "\n", - "\n", - "* Two vectorized environments, one for training and one for evaluation\n", - "* A PPO agent\n", - "* A replay buffer to store transition data\n", - "* Two collectors to manage the data collecting process, one for training and one for evaluation\n", - "* A trainer to manage the training loop\n", - "\n", - "
\n", - "\n", - "\n", - "
\n", - "\n", - "Let us do this step by step." - ], - "metadata": { - "id": "2QRbCJvDHNAd" - } + "outputId": "b1666b88-0bfa-4340-868e-58611872d988" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Results\n", + "Print the training result." + ], + "metadata": { + "id": "ckgINHE2iTFR" + } + }, + { + "cell_type": "code", + "source": [ + "print(result)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "source": [ - "## Preparation\n", - "Firstly, install Tianshou if you haven't installed it before." - ], - "metadata": { - "id": "-Hh4E6i0Hj0I" - } + "id": "tJCPgmiyiaaX", + "outputId": "40123ae3-3365-4782-9563-46c43812f10f" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "We can also test our trained agent." + ], + "metadata": { + "id": "A-MJ9avMibxN" + } + }, + { + "cell_type": "code", + "source": [ + "# Let's watch its performance!\n", + "policy.eval()\n", + "result = test_collector.collect(n_episode=1, render=False)\n", + "print(\"Final reward: {}, length: {}\".format(result[\"rews\"].mean(), result[\"lens\"].mean()))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "code", - "source": [ - "!pip install tianshou==0.4.8\n", - "!pip install gym" - ], - "metadata": { - "id": "w50BVwaRHg3N" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Import libraries we might need later." - ], - "metadata": { - "id": "7E4EhiBeHxD5" - } - }, - { - "cell_type": "code", - "source": [ - "import gym\n", - "import numpy as np\n", - "import torch\n", - "\n", - "from tianshou.data import Collector, VectorReplayBuffer\n", - "from tianshou.env import DummyVectorEnv\n", - "from tianshou.policy import PPOPolicy\n", - "from tianshou.trainer import onpolicy_trainer\n", - "from tianshou.utils.net.common import ActorCritic, Net\n", - "from tianshou.utils.net.discrete import Actor, Critic\n", - "\n", - "import warnings\n", - "warnings.filterwarnings('ignore')\n", - "\n", - "device = 'cuda' if torch.cuda.is_available() else 'cpu'" - ], - "metadata": { - "id": "ao9gWJDiHgG-" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## Environment" - ], - "metadata": { - "id": "QnRg5y7THRYw" - } - }, - { - "cell_type": "markdown", - "source": [ - "We create two vectorized environments both for training and testing. Since the execution time of CartPole is extremely short, there is no need to use multi-process wrappers and we simply use DummyVectorEnv." - ], - "metadata": { - "id": "YZERKCGtH8W1" - } - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "Mpuj5PFnDKVS" - }, - "outputs": [], - "source": [ - "env = gym.make('CartPole-v0')\n", - "train_envs = DummyVectorEnv([lambda: gym.make('CartPole-v0') for _ in range(20)])\n", - "test_envs = DummyVectorEnv([lambda: gym.make('CartPole-v0') for _ in range(10)])" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Policy\n", - "Next we need to initialise our PPO policy. PPO is an actor-critic-style on-policy algorithm, so we have to define the actor and the critic in PPO first.\n", - "\n", - "The actor is a neural network that shares the same network head with the critic. Both networks' input is the environment observation. The output of the actor is the action and the output of the critic is a single value, representing the value of the current policy.\n", - "\n", - "Luckily, Tianshou already provides basic network modules that we can use in this experiment." - ], - "metadata": { - "id": "BJtt_Ya8DTAh" - } - }, - { - "cell_type": "code", - "source": [ - "# net is the shared head of the actor and the critic\n", - "net = Net(env.observation_space.shape, hidden_sizes=[64, 64], device=device)\n", - "actor = Actor(net, env.action_space.n, device=device).to(device)\n", - "critic = Critic(net, device=device).to(device)\n", - "actor_critic = ActorCritic(actor, critic)\n", - "\n", - "# optimizer of the actor and the critic\n", - "optim = torch.optim.Adam(actor_critic.parameters(), lr=0.0003)" - ], - "metadata": { - "id": "_Vy8uPWXP4m_" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Once we have defined the actor, the critic and the optimizer. We can use them to construct our PPO agent. CartPole is a discrete action space problem, so the distribution of our action space can be a categorical distribution." - ], - "metadata": { - "id": "Lh2-hwE5Dn9I" - } - }, - { - "cell_type": "code", - "source": [ - "dist = torch.distributions.Categorical\n", - "policy = PPOPolicy(actor, critic, optim, dist, action_space=env.action_space, deterministic_eval=True)" - ], - "metadata": { - "id": "OiJ2GkT0Qnbr" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "`deterministic_eval=True` means that we want to sample actions during training but we would like to always use the best action in evaluation. No randomness included." - ], - "metadata": { - "id": "okxfj6IEQ-r8" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Collector\n", - "We can set up the collectors now. Train collector is used to collect and store training data, so an additional replay buffer has to be passed in." - ], - "metadata": { - "id": "n5XAAbuBZarO" - } - }, - { - "cell_type": "code", - "source": [ - "train_collector = Collector(policy, train_envs, VectorReplayBuffer(20000, len(train_envs)))\n", - "test_collector = Collector(policy, test_envs)" - ], - "metadata": { - "id": "ezwz0qerZhQM" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "We use `VectorReplayBuffer` here because it's more efficient to collaborate with vectorized environments, you can simply consider `VectorReplayBuffer` as a a list of ordinary replay buffers." - ], - "metadata": { - "id": "ZaoPxOd2hm0b" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Trainer\n", - "Finally, we can use the trainer to help us set up the training loop." - ], - "metadata": { - "id": "qBoE9pLUiC-8" - } - }, - { - "cell_type": "code", - "source": [ - "result = onpolicy_trainer(\n", - " policy,\n", - " train_collector,\n", - " test_collector,\n", - " max_epoch=10,\n", - " step_per_epoch=50000,\n", - " repeat_per_collect=10,\n", - " episode_per_test=10,\n", - " batch_size=256,\n", - " step_per_collect=2000,\n", - " stop_fn=lambda mean_reward: mean_reward >= 195,\n", - ")" - ], - "metadata": { - "id": "i45EDnpxQ8gu", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "b1666b88-0bfa-4340-868e-58611872d988" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stderr", - "text": [ - "Epoch #1: 50001it [00:13, 3601.81it/s, env_step=50000, len=143, loss=41.162, loss/clip=0.001, loss/ent=0.583, loss/vf=82.332, n/ep=12, n/st=2000, rew=143.08] \n" - ] - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Epoch #1: test_reward: 200.000000 ± 0.000000, best_reward: 200.000000 ± 0.000000 in #1\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Results\n", - "Print the training result." - ], - "metadata": { - "id": "ckgINHE2iTFR" - } - }, - { - "cell_type": "code", - "source": [ - "print(result)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "tJCPgmiyiaaX", - "outputId": "40123ae3-3365-4782-9563-46c43812f10f" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "{'duration': '14.17s', 'train_time/model': '8.80s', 'test_step': 2094, 'test_episode': 20, 'test_time': '0.27s', 'test_speed': '7770.16 step/s', 'best_reward': 200.0, 'best_result': '200.00 ± 0.00', 'train_step': 50000, 'train_episode': 942, 'train_time/collector': '5.10s', 'train_speed': '3597.32 step/s'}\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "We can also test our trained agent." - ], - "metadata": { - "id": "A-MJ9avMibxN" - } - }, - { - "cell_type": "code", - "source": [ - "# Let's watch its performance!\n", - "policy.eval()\n", - "result = test_collector.collect(n_episode=1, render=False)\n", - "print(\"Final reward: {}, length: {}\".format(result[\"rews\"].mean(), result[\"lens\"].mean()))" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "mnMANFcciiAQ", - "outputId": "6febcc1e-7265-4a75-c9dd-34e29a3e5d21" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Final reward: 200.0, length: 200.0\n" - ] - } - ] - } - ] -} \ No newline at end of file + "id": "mnMANFcciiAQ", + "outputId": "6febcc1e-7265-4a75-c9dd-34e29a3e5d21" + }, + "execution_count": null, + "outputs": [] + } + ] +}