{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "klGNgWREsvQv" }, "source": [ "**Copyright 2023 The TF-Agents Authors.**" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2023-12-22T12:28:24.528139Z", "iopub.status.busy": "2023-12-22T12:28:24.527555Z", "iopub.status.idle": "2023-12-22T12:28:24.531489Z", "shell.execute_reply": "2023-12-22T12:28:24.530856Z" }, "id": "nQnmcm0oI1Q-" }, "outputs": [], "source": [ "#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n", "# you may not use this file except in compliance with the License.\n", "# You may obtain a copy of the License at\n", "#\n", "# https://www.apache.org/licenses/LICENSE-2.0\n", "#\n", "# Unless required by applicable law or agreed to in writing, software\n", "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "# See the License for the specific language governing permissions and\n", "# limitations under the License." ] }, { "cell_type": "markdown", "metadata": { "id": "lsaQlK8fFQqH" }, "source": [ "# SAC minitaur with the Actor-Learner API\n", "\n", "\n", " \n", " \n", " \n", " \n", "
\n", " \n", " \n", " View on TensorFlow.org\n", " \n", " \n", " \n", " Run in Google Colab\n", " \n", " \n", " \n", " View source on GitHub\n", " \n", " Download notebook\n", "
\n" ] }, { "cell_type": "markdown", "metadata": { "id": "ZOUOQOrFs3zn" }, "source": [ "## Introduction" ] }, { "cell_type": "markdown", "metadata": { "id": "cKOCZlhUgXVK" }, "source": [ "This example shows how to train a [Soft Actor Critic](https://arxiv.org/abs/1812.05905) agent on the [Minitaur](https://github.com/bulletphysics/bullet3/blob/master/examples/pybullet/gym/pybullet_envs/bullet/minitaur.py) environment.\n", "\n", "If you've worked through the [DQN Colab](https://github.com/tensorflow/agents/blob/master/docs/tutorials/1_dqn_tutorial.ipynb) this should feel very familiar. Notable changes include:\n", "\n", " * Changing the agent from DQN to SAC.\n", " * Training on Minitaur which is a much more complex environment than CartPole. The Minitaur environment aims to train a quadruped robot to move forward.\n", " * Using the TF-Agents Actor-Learner API for distributed Reinforcement Learning.\n", "\n", "The API supports both distributed data collection using an experience replay buffer and variable container (parameter server) and distributed training across multiple devices. The API is designed to be very simple and modular. We utilize [Reverb](https://deepmind.com/research/open-source/Reverb) for both replay buffer and variable container and [TF DistributionStrategy API](https://www.tensorflow.org/guide/distributed_training) for distributed training on GPUs and TPUs." ] }, { "cell_type": "markdown", "metadata": { "id": "9vUQms4DAY5A" }, "source": [ "If you haven't installed the following dependencies, run:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:24.535576Z", "iopub.status.busy": "2023-12-22T12:28:24.535015Z", "iopub.status.idle": "2023-12-22T12:28:37.687013Z", "shell.execute_reply": "2023-12-22T12:28:37.686082Z" }, "id": "fskoLlB-AZ9j" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\r", "0% [Working]\r", " \r", "Hit:1 http://us-central1.gce.archive.ubuntu.com/ubuntu focal InRelease\r\n", "\r", "0% [Connecting to security.ubuntu.com] [Connecting to developer.download.nvidia\r", " \r", "Hit:2 http://us-central1.gce.archive.ubuntu.com/ubuntu focal-updates InRelease\r\n", "\r", " \r", "Hit:3 http://us-central1.gce.archive.ubuntu.com/ubuntu focal-backports InRelease\r\n", "\r", "0% [Connecting to security.ubuntu.com] [Connected to developer.download.nvidia." ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " \r", "Get:4 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64 InRelease [1484 B]\r\n", "\r", "0% [Connecting to security.ubuntu.com] [Waiting for headers] [Connecting to ppa\r", "0% [Connecting to security.ubuntu.com] [Waiting for headers] [Connecting to ppa\r", " \r", "Hit:5 https://download.docker.com/linux/ubuntu focal InRelease\r\n", "\r", "0% [Connecting to security.ubuntu.com] [Waiting for headers] [Connecting to ppa\r", " \r", "Hit:6 https://nvidia.github.io/nvidia-container-runtime/stable/ubuntu18.04/amd64 InRelease\r\n", "\r", "0% [Connecting to security.ubuntu.com] [Waiting for headers] [Connecting to ppa\r", " \r", "Hit:7 https://nvidia.github.io/nvidia-docker/ubuntu18.04/amd64 InRelease\r\n", "\r", "0% [Connecting to security.ubuntu.com] [Waiting for headers] [Connecting to ppa" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " \r", "Hit:8 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64 InRelease\r\n", "\r", "0% [Connecting to security.ubuntu.com] [Connecting to ppa.launchpad.net (185.12" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " \r", "0% [Connecting to security.ubuntu.com (185.125.190.39)] [Waiting for headers]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "0% [Connecting to security.ubuntu.com (185.125.190.39)] [Waiting for headers]\r", " \r", "Hit:10 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal InRelease\r\n", "\r", "0% [Connecting to apt.llvm.org (199.232.198.49)] [Connected to security.ubuntu." ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "0% [Connected to apt.llvm.org (199.232.198.49)] [Waiting for headers] [Waiting \r", " \r", "Hit:9 https://apt.llvm.org/focal llvm-toolchain-focal-17 InRelease\r\n", "\r", " \r", "0% [Waiting for headers] [Waiting for headers]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " \r", "Hit:11 http://security.ubuntu.com/ubuntu focal-security InRelease\r\n", "\r", " \r", "0% [Waiting for headers]\r", " \r", "Hit:12 http://ppa.launchpad.net/longsleep/golang-backports/ubuntu focal InRelease\r\n", "\r", " \r", "0% [Working]\r", "0% [Waiting for headers]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " \r", "Hit:13 http://ppa.launchpad.net/openjdk-r/ppa/ubuntu focal InRelease\r\n", "\r", " \r", "0% [Working]\r", "0% [Working]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "0% [Working]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "0% [Working]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "0% [Working]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "0% [Working]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "0% [Working]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "0% [Working]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "0% [Working]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "0% [Working]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "100% [Working]\r", " \r", "Fetched 1484 B in 1s (1065 B/s)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... 0%\r", "\r", "Reading package lists... 0%\r", "\r", "Reading package lists... 0%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... 2%\r", "\r", "Reading package lists... 2%\r", "\r", "Reading package lists... 4%\r", "\r", "Reading package lists... 4%\r", "\r", "Reading package lists... 4%\r", "\r", "Reading package lists... 4%\r", "\r", "Reading package lists... 4%\r", "\r", "Reading package lists... 4%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... 28%\r", "\r", "Reading package lists... 28%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... 41%\r", "\r", "Reading package lists... 41%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... 41%\r", "\r", "Reading package lists... 41%\r", "\r", "Reading package lists... 41%\r", "\r", "Reading package lists... 41%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... 49%\r", "\r", "Reading package lists... 49%\r", "\r", "Reading package lists... 55%\r", "\r", "Reading package lists... 55%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... 58%\r", "\r", "Reading package lists... 62%\r", "\r", "Reading package lists... 62%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... 65%\r", "\r", "Reading package lists... 65%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... 68%\r", "\r", "Reading package lists... 68%\r", "\r", "Reading package lists... 69%\r", "\r", "Reading package lists... 69%\r", "\r", "Reading package lists... 69%\r", "\r", "Reading package lists... 69%\r", "\r", "Reading package lists... 69%\r", "\r", "Reading package lists... 69%\r", "\r", "Reading package lists... 70%\r", "\r", "Reading package lists... 70%\r", "\r", "Reading package lists... 70%\r", "\r", "Reading package lists... 70%\r", "\r", "Reading package lists... 70%\r", "\r", "Reading package lists... 70%\r", "\r", "Reading package lists... 70%\r", "\r", "Reading package lists... 70%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... 77%\r", "\r", "Reading package lists... 77%\r", "\r", "Reading package lists... 82%\r", "\r", "Reading package lists... 82%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... 89%\r", "\r", "Reading package lists... 89%\r", "\r", "Reading package lists... 92%\r", "\r", "Reading package lists... 92%\r", "\r", "Reading package lists... 94%\r", "\r", "Reading package lists... 94%\r", "\r", "Reading package lists... 95%\r", "\r", "Reading package lists... 95%\r", "\r", "Reading package lists... 95%\r", "\r", "Reading package lists... 95%\r", "\r", "Reading package lists... 95%\r", "\r", "Reading package lists... 95%\r", "\r", "Reading package lists... 95%\r", "\r", "Reading package lists... 95%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... 98%\r", "\r", "Reading package lists... 98%\r", "\r", "Reading package lists... 98%\r", "\r", "Reading package lists... 98%\r", "\r", "Reading package lists... 98%\r", "\r", "Reading package lists... 98%\r", "\r", "Reading package lists... 99%\r", "\r", "Reading package lists... 99%\r", "\r", "Reading package lists... 99%\r", "\r", "Reading package lists... 99%\r", "\r", "Reading package lists... 99%\r", "\r", "Reading package lists... 99%\r", "\r", "Reading package lists... 99%\r", "\r", "Reading package lists... 99%\r", "\r", "Reading package lists... 99%\r", "\r", "Reading package lists... 99%\r", "\r", "Reading package lists... 99%\r", "\r", "Reading package lists... 99%\r", "\r", "Reading package lists... 99%\r", "\r", "Reading package lists... 99%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... 99%\r", "\r", "Reading package lists... 99%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... Done\r", "\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Reading package lists... 0%\r", "\r", "Reading package lists... 100%\r", "\r", "Reading package lists... Done\r", "\r\n", "\r", "Building dependency tree... 0%\r", "\r", "Building dependency tree... 0%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Building dependency tree... 50%\r", "\r", "Building dependency tree... 50%\r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "Building dependency tree \r", "\r\n", "\r", "Reading state information... 0%\r", "\r", "Reading state information... 0%\r", "\r", "Reading state information... Done\r", "\r\n", "ffmpeg is already the newest version (7:4.2.7-0ubuntu0.1).\r\n", "xvfb is already the newest version (2:1.20.13-1ubuntu1~20.04.12).\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "The following packages were automatically installed and are no longer required:\r\n", " libatasmart4 libblockdev-fs2 libblockdev-loop2 libblockdev-part-err2\r\n", " libblockdev-part2 libblockdev-swap2 libblockdev-utils2 libblockdev2\r\n", " libparted-fs-resize0 libxmlb2\r\n", "Use 'sudo apt autoremove' to remove them.\r\n", "0 upgraded, 0 newly installed, 0 to remove and 115 not upgraded.\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: imageio==2.4.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (2.4.0)\r\n", "Requirement already satisfied: numpy in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from imageio==2.4.0) (1.26.2)\r\n", "Requirement already satisfied: pillow in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from imageio==2.4.0) (10.1.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: matplotlib in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (3.8.2)\r\n", "Requirement already satisfied: contourpy>=1.0.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib) (1.2.0)\r\n", "Requirement already satisfied: cycler>=0.10 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib) (0.12.1)\r\n", "Requirement already satisfied: fonttools>=4.22.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib) (4.47.0)\r\n", "Requirement already satisfied: kiwisolver>=1.3.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib) (1.4.5)\r\n", "Requirement already satisfied: numpy<2,>=1.21 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib) (1.26.2)\r\n", "Requirement already satisfied: packaging>=20.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib) (23.2)\r\n", "Requirement already satisfied: pillow>=8 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib) (10.1.0)\r\n", "Requirement already satisfied: pyparsing>=2.3.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib) (3.1.1)\r\n", "Requirement already satisfied: python-dateutil>=2.7 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib) (2.8.2)\r\n", "Requirement already satisfied: importlib-resources>=3.2.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib) (6.1.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: zipp>=3.1.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from importlib-resources>=3.2.0->matplotlib) (3.17.0)\r\n", "Requirement already satisfied: six>=1.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: tf-agents[reverb] in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (0.19.0)\r\n", "Requirement already satisfied: absl-py>=0.6.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (1.4.0)\r\n", "Requirement already satisfied: cloudpickle>=1.3 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (3.0.0)\r\n", "Requirement already satisfied: gin-config>=0.4.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (0.5.0)\r\n", "Requirement already satisfied: gym<=0.23.0,>=0.17.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (0.23.0)\r\n", "Requirement already satisfied: numpy>=1.19.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (1.26.2)\r\n", "Requirement already satisfied: pillow in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (10.1.0)\r\n", "Requirement already satisfied: six>=1.10.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (1.16.0)\r\n", "Requirement already satisfied: protobuf>=3.11.3 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (3.20.3)\r\n", "Requirement already satisfied: wrapt>=1.11.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (1.14.1)\r\n", "Requirement already satisfied: typing-extensions==4.5.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (4.5.0)\r\n", "Requirement already satisfied: pygame==2.1.3 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (2.1.3)\r\n", "Requirement already satisfied: tensorflow-probability~=0.23.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (0.23.0)\r\n", "Requirement already satisfied: rlds in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (0.1.8)\r\n", "Requirement already satisfied: dm-reverb~=0.14.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (0.14.0)\r\n", "Requirement already satisfied: tensorflow~=2.15.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tf-agents[reverb]) (2.15.0.post1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: dm-tree in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from dm-reverb~=0.14.0->tf-agents[reverb]) (0.1.8)\r\n", "Requirement already satisfied: portpicker in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from dm-reverb~=0.14.0->tf-agents[reverb]) (1.6.0)\r\n", "Requirement already satisfied: gym-notices>=0.0.4 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from gym<=0.23.0,>=0.17.0->tf-agents[reverb]) (0.0.8)\r\n", "Requirement already satisfied: importlib-metadata>=4.10.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from gym<=0.23.0,>=0.17.0->tf-agents[reverb]) (7.0.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: astunparse>=1.6.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (1.6.3)\r\n", "Requirement already satisfied: flatbuffers>=23.5.26 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (23.5.26)\r\n", "Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (0.5.4)\r\n", "Requirement already satisfied: google-pasta>=0.1.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (0.2.0)\r\n", "Requirement already satisfied: h5py>=2.9.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (3.10.0)\r\n", "Requirement already satisfied: libclang>=13.0.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (16.0.6)\r\n", "Requirement already satisfied: ml-dtypes~=0.2.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (0.2.0)\r\n", "Requirement already satisfied: opt-einsum>=2.3.2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (3.3.0)\r\n", "Requirement already satisfied: packaging in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (23.2)\r\n", "Requirement already satisfied: setuptools in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (69.0.2)\r\n", "Requirement already satisfied: termcolor>=1.1.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (2.4.0)\r\n", "Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (0.35.0)\r\n", "Requirement already satisfied: grpcio<2.0,>=1.24.3 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (1.60.0)\r\n", "Requirement already satisfied: tensorboard<2.16,>=2.15 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (2.15.1)\r\n", "Requirement already satisfied: tensorflow-estimator<2.16,>=2.15.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (2.15.0)\r\n", "Requirement already satisfied: keras<2.16,>=2.15.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow~=2.15.0->tf-agents[reverb]) (2.15.0)\r\n", "Requirement already satisfied: decorator in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow-probability~=0.23.0->tf-agents[reverb]) (5.1.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: wheel<1.0,>=0.23.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from astunparse>=1.6.0->tensorflow~=2.15.0->tf-agents[reverb]) (0.41.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: zipp>=0.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from importlib-metadata>=4.10.0->gym<=0.23.0,>=0.17.0->tf-agents[reverb]) (3.17.0)\r\n", "Requirement already satisfied: google-auth<3,>=1.6.3 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (2.25.2)\r\n", "Requirement already satisfied: google-auth-oauthlib<2,>=0.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (1.2.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: markdown>=2.6.8 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (3.5.1)\r\n", "Requirement already satisfied: requests<3,>=2.21.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (2.31.0)\r\n", "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (0.7.2)\r\n", "Requirement already satisfied: werkzeug>=1.0.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (3.0.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: psutil in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from portpicker->dm-reverb~=0.14.0->tf-agents[reverb]) (5.9.7)\r\n", "Requirement already satisfied: cachetools<6.0,>=2.0.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (5.3.2)\r\n", "Requirement already satisfied: pyasn1-modules>=0.2.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (0.3.0)\r\n", "Requirement already satisfied: rsa<5,>=3.1.4 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (4.9)\r\n", "Requirement already satisfied: requests-oauthlib>=0.7.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (1.3.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: charset-normalizer<4,>=2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (3.3.2)\r\n", "Requirement already satisfied: idna<4,>=2.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (3.6)\r\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (2.1.0)\r\n", "Requirement already satisfied: certifi>=2017.4.17 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (2023.11.17)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: MarkupSafe>=2.1.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from werkzeug>=1.0.1->tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (2.1.3)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pyasn1<0.6.0,>=0.4.6 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (0.5.1)\r\n", "Requirement already satisfied: oauthlib>=3.0.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow~=2.15.0->tf-agents[reverb]) (3.2.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pybullet in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (3.2.6)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: tf-keras in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (2.15.0)\r\n" ] } ], "source": [ "!sudo apt-get update\n", "!sudo apt-get install -y xvfb ffmpeg\n", "!pip install 'imageio==2.4.0'\n", "!pip install matplotlib\n", "!pip install tf-agents[reverb]\n", "!pip install pybullet\n", "!pip install tf-keras" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:37.691361Z", "iopub.status.busy": "2023-12-22T12:28:37.691063Z", "iopub.status.idle": "2023-12-22T12:28:37.695220Z", "shell.execute_reply": "2023-12-22T12:28:37.694410Z" }, "id": "WPuD0bMEY9Iz" }, "outputs": [], "source": [ "import os\n", "# Keep using keras-2 (tf-keras) rather than keras-3 (keras).\n", "os.environ['TF_USE_LEGACY_KERAS'] = '1'" ] }, { "cell_type": "markdown", "metadata": { "id": "1u9QVVsShC9X" }, "source": [ "## Setup" ] }, { "cell_type": "markdown", "metadata": { "id": "nNV5wyH3dyMl" }, "source": [ "First we will import the different tools that we need." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:37.698536Z", "iopub.status.busy": "2023-12-22T12:28:37.698284Z", "iopub.status.idle": "2023-12-22T12:28:40.957491Z", "shell.execute_reply": "2023-12-22T12:28:40.956807Z" }, "id": "sMitx5qSgJk1" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2023-12-22 12:28:38.504926: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n", "2023-12-22 12:28:38.504976: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n", "2023-12-22 12:28:38.506679: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n" ] } ], "source": [ "import base64\n", "import imageio\n", "import IPython\n", "import matplotlib.pyplot as plt\n", "import os\n", "import reverb\n", "import tempfile\n", "import PIL.Image\n", "\n", "import tensorflow as tf\n", "\n", "from tf_agents.agents.ddpg import critic_network\n", "from tf_agents.agents.sac import sac_agent\n", "from tf_agents.agents.sac import tanh_normal_projection_network\n", "from tf_agents.environments import suite_pybullet\n", "from tf_agents.metrics import py_metrics\n", "from tf_agents.networks import actor_distribution_network\n", "from tf_agents.policies import greedy_policy\n", "from tf_agents.policies import py_tf_eager_policy\n", "from tf_agents.policies import random_py_policy\n", "from tf_agents.replay_buffers import reverb_replay_buffer\n", "from tf_agents.replay_buffers import reverb_utils\n", "from tf_agents.train import actor\n", "from tf_agents.train import learner\n", "from tf_agents.train import triggers\n", "from tf_agents.train.utils import spec_utils\n", "from tf_agents.train.utils import strategy_utils\n", "from tf_agents.train.utils import train_utils\n", "\n", "tempdir = tempfile.gettempdir()" ] }, { "cell_type": "markdown", "metadata": { "id": "LmC0NDhdLIKY" }, "source": [ "## Hyperparameters" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:40.961808Z", "iopub.status.busy": "2023-12-22T12:28:40.961106Z", "iopub.status.idle": "2023-12-22T12:28:40.966305Z", "shell.execute_reply": "2023-12-22T12:28:40.965629Z" }, "id": "HC1kNrOsLSIZ" }, "outputs": [], "source": [ "env_name = \"MinitaurBulletEnv-v0\" # @param {type:\"string\"}\n", "\n", "# Use \"num_iterations = 1e6\" for better results (2 hrs)\n", "# 1e5 is just so this doesn't take too long (1 hr)\n", "num_iterations = 100000 # @param {type:\"integer\"}\n", "\n", "initial_collect_steps = 10000 # @param {type:\"integer\"}\n", "collect_steps_per_iteration = 1 # @param {type:\"integer\"}\n", "replay_buffer_capacity = 10000 # @param {type:\"integer\"}\n", "\n", "batch_size = 256 # @param {type:\"integer\"}\n", "\n", "critic_learning_rate = 3e-4 # @param {type:\"number\"}\n", "actor_learning_rate = 3e-4 # @param {type:\"number\"}\n", "alpha_learning_rate = 3e-4 # @param {type:\"number\"}\n", "target_update_tau = 0.005 # @param {type:\"number\"}\n", "target_update_period = 1 # @param {type:\"number\"}\n", "gamma = 0.99 # @param {type:\"number\"}\n", "reward_scale_factor = 1.0 # @param {type:\"number\"}\n", "\n", "actor_fc_layer_params = (256, 256)\n", "critic_joint_fc_layer_params = (256, 256)\n", "\n", "log_interval = 5000 # @param {type:\"integer\"}\n", "\n", "num_eval_episodes = 20 # @param {type:\"integer\"}\n", "eval_interval = 10000 # @param {type:\"integer\"}\n", "\n", "policy_save_interval = 5000 # @param {type:\"integer\"}" ] }, { "cell_type": "markdown", "metadata": { "id": "VMsJC3DEgI0x" }, "source": [ "## Environment\n", "\n", "Environments in RL represent the task or problem that we are trying to solve. Standard environments can be easily created in TF-Agents using `suites`. We have different `suites` for loading environments from sources such as the OpenAI Gym, Atari, DM Control, etc., given a string environment name.\n", "\n", "Now let's load the Minitaur environment from the Pybullet suite." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:40.969638Z", "iopub.status.busy": "2023-12-22T12:28:40.969069Z", "iopub.status.idle": "2023-12-22T12:28:41.558351Z", "shell.execute_reply": "2023-12-22T12:28:41.557717Z" }, "id": "RlO7WIQHu_7D" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "pybullet build time: Nov 28 2023 23:52:03\n", "/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/gym/spaces/box.py:84: UserWarning: \u001b[33mWARN: Box bound precision lowered by casting to float32\u001b[0m\n", " logger.warn(f\"Box bound precision lowered by casting to {self.dtype}\")\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "current_dir=/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/pybullet_envs/bullet\n", "urdf_root=/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/pybullet_data\n" ] }, { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCALQA8ADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3FdWtZFHlOJWIyEVl3H8CRTf7XQS+W9pdr6t5e4fmCawbm5MqMLm63QnG5IBHz9DuJ689Pyqn/wASr/p8/wDHa6I0kzJzZ1R1qy2MRJllOChIRs/RiKE1eJwGEExTOCyBXAP/AAEk1kW9w8VrstLd1Tgo0wds9OcAEfkalYalcwEFbPaw6MjfyI/mKlwSHzM031a3RCxSbj+9GVH5tgfrUY120z82VXGSS6H9AxNYZ0Xy0aa6mXAPKxYHX3OAOafDNa2O11luWRP+WfnRsOf9kH3p8kLaai5pddDdfVoVQkQ3TkfwrA2T+dIdXhSQJNG8JIzmR0H/ALNmsO612KSLZFb789fOAx+Xeqslu17h4hbqF4Jgikwfr8tONL+bQHPsdI+uWgcpEJZ3HVYU3cevpUtvqS3GT9muIwO8igfpnNYVjplyFHmXUqQ4O1Y3ZSDn0I+taEiYXy5IZLpc7ssE4/l/LvUSjFaIpOT1ZPca9Y26qd5kJPSPDf1p1nrMF6xEcM4UD7zKMfTOevNYV7PYGD5LWINnjGw54P8AdbNZ8d1OzbRdtCgHA3vgewxmtFRTiQ6jTOxu9Ths4fNkVyucYXGf1NVI/Etg7YYTRjHVl/wJrFgllmHlPcrcqoyFCFiPfJQ+tbS2doyhhaxYIzzGB/SocYw0kUpOWxfkvAi5WKSQ56Lj+pFUj4hs0maKZJoWXrvQf0JqlLbyGER28V3CRgA+bnA9AN9ZFy15buVml3gHAWVlc+x2knFOnTjLS4pTaOrTV7aZAbfdMT/ChAYD1wSKRtWjjYiW3uY1C7ixQMPzUmuZtLmNTvuPsjgjGxotpB9chDWil7YSbQZXVzgBInkx6AAAD+VEqXK9gU79TR/t+wbiN2c+nC/qxAqePU4pIjL5UoQdCMPn6bSaybzT/PjjeJ7g4IOxjvH1Icj/AD2qlJY34b93BGy46tDEv+NChBrR2G5SXQ3Z9dtYGRWjny5wMx7f/QsU+HWLWZtu4I2QAC6HP0wxrCkvLu3Ea6hEfmJ2uspT6529e3al+0aZP/x8tnH3f3sr/XqBij2att92oufXc3JNYiTG22u5M/3YTx+eKI9ZtHzvPlEdpHQH8s8fjXPH+zlRVhvVUDOfMtg5P47asyDVCuYpWmUnrtRQw9QQ2f5UOnH/AIfQOdmvJrVsrbYkmuDjJ8hQ+36806LVYZEd3imgVMZMyhRz+NYX2a6l/wCPnTvOx93/AEkjHr1Y0v2dIlPmWAt1zln3ebwOv8LAfpRyRtZD5mbFxr1lbqrbjKCcfuypx+tPttWiuSMQXKAjKl48A/j0rHkv4jjytVdfXdAG/wDZRVOV7VgzzXpumzkK0T8euPmAH/1qapJrVfn/AJCc9Tp7jU4bbbvVjuzj5lX+ZFV4PEFjOdq+cHJ4Qxkk/lmsO0hJcsNOt5iv9ycED6gk1eeTUmckW0qA/wAKzR4H5rSdOK0/VD5m9TYa/AwUt5nBGcjaP0JBqsdfsUdklLxupwVK5/8AQcism8083Ekck08wfyxkeSXx7ZUAVXWPT4WANxGJEPUwyggj/gXWiNOLX+QnKR0UerQzrut4ppkBwWUKMH0+YinPqkMMfmTxzRLnuu7/ANBzjrWEda8s+Sm2YEYWRWKY+u7PPuaikMl62xohK5GBi4h3evBC5o9l30Qc/Y2T4jsfMCJ5j5HUAKPzYiry3qmMu8MqY7EAn9Ca5m30h/PRzHJFg/xMHH1ypBrR/fW3yednPP8AqJJP13GlOMNoji5bssXHiG0t5Ajx3BJGf9Xj+eKs2+qW9xkIcMP4dyk49eCaw7y4hLJ5zx+Zjq0JTjt95W9/SslHtvMXZFMrZGD54GD9dvFWqSlEl1GmdfNq8cUhQWt3JjqUi4/Wm2+u2VxGX3+Xg4xIVB/nWHb3c0MhPmLtx1kuVlOfpuUVofZ5rj55o7cMOB5kAJx+DmocIx3KUm9i9Jq8SYKW9xMh6PCoYH8jSpq1syBpFlgz/wA9k2fqeP1rFl0+KKRpA84nB/5YxsiD6YU44+tV7h5LeMO8l4QTj/XOP5oKapxewnJrc3ZtetIdxwzqO6Ohz+G7P6VNFqkMgXMNyjE4w8J4+p6VzD6mbi4JFnaZbvKAT07scVOxikwFe3gbPEkQRSv4iSm6SS10BTfQ3ptYt4JWjZWyP9tB/NgabFrlnMSq+aXGcqELEf8AfORVCHT98St/aNzJn+JJeD/OoTB5MzB4PtGON0qlyffIj/qalRg9B3lubLamoUuLacoBncQq/oxBFRHX7BQN8hViM4HzY/FcisOa4uIZHaHTYkQD76wsCBjnnAI7+lV1u2nZR9rnhYjlVY7fzZ6pUk9xOozp49XinyYLe4kQdHCgA/TJFPk1S3giElxuhz/C2CfyBOawLeC0bc093mQ4y0rRNn6Z3Yq7CkSsDaR2szIOZNwDDOf7q1MoRTGpNk6+JLN5hGkU7MW2rhRz+ZrRW6UqCUdSR0OOP1rnJjeiSQhc8khVM/5DGB/Ss2O0naQvNFchs5yIN+T75IqvZRa00FztHRv4mso5GQxXGVJB+QD+Zq9BqVvcxh4m3cAkAglc+vPFc7bXdtFNhfNSRRh8xxR59R2/LNX57m3ljQrPFu/um52Y/wC+c5qZwS0SHGT6st3GtxWzOJLW62qeXCDb+eadDrlhMuRMFOBkP8uPz/pXPSWH2qQiKSyDsxI2zMzH8+v5UJHfWcgVM4AKlobbJGPcqM/nV+zg15k88rnRSaqsa7ha3LoTw0YVs+/B6UDWrMOqSM8TsM7ZUK4/PistLxvLKSw6hISBk+UFx9NuCKr7dNeYpJaSxyEFs3DlAfqSc9frUKC6r7iuZ9Da/tq3LlUjeQjONjoSceg3ZqRdVgKgmK5UkdDA3H6VzqRyQSO1teWEKseAJAxA9MkZ7VJ51/8A9BWz/wC+l/wpumuglNmy2uWysRsfg45eMfoWyPxqUatasTsMkgBwTHGWH5jisHy7RvmlsLmaQ8vJGpKue5HPQ1JC9vbkmCwv42I6qp/kTg/jQ4R6DUma41hPLMjWlyiA4JkCp/NhSya3p8WN04Of7vzfyrEWTU3V3+1CKNSObiIR/wBCP1qr9k3Sb5LjTn4xjftH/juKapx6i530Okj1cSttWxvAcZ+ZAv8AM1NNqVrBnzZAhAzgkZx9Kw4xY28ZK7FYnBWC76j1OSKf/ai3KhoY70KDgmONTn881Dhd6LQal3LkfiO1lbbHbXTtjOFQH+taX2lPRq4y4guHVVS3lYZyf9FCfyq3aWN0iERCIH+JmMqE/wAs1c6UbXTFGcr2ZqN4nslYqYp8g44Cn+taMN/BcRLLEWZG6HGKy4LyJRsea2VQOCLnef1FU5RYiRtpUrnjZ5GPwzzUuCeiVh8zRrTa3DbMontrmNWIG4qpA/EE06PXLGZtschZ8cLjbn2Gcc1ysLMoK2k107A7vLVCAfXOGq7bz33mESWrBCMMJBKwI9O/8qt0kkSps6A6ltGWtLkLnkgK2PwDE1G+u2MblGdw4/hZCp/XGPxqglus6cWVvGM4LbcMPoGTmopbW2g8xV1CSKTGdiyKnOOPlGB6elZqMev9fmU2+hrQ6tHO2I4ZGAIyQ8Zx9cNSvq1vHGzmO4woJP7lh/MVzySGJWMl20y4zh3Vv0EnP05qumo7pFH2C0bJA2rFyfYVfsb7C9pY6OLX7SUKQrqpPV3QY+o3Zqw+qW6puVZZQRkeUhYH8RxWEfMlRSkE1qOf3cW9efU4jqaPTzcW7bru8ViCpDOcfkQMipcIrfQakzRXW4NwEkE8IJ6zBU/m3P4U+TWbKNciUOxOAsZDEn0wKyJbdLOONHW0bjALQqCceuXGaha/lgUrFHa+TjLBGVCfXGHPOO9Pki9g5mtzdh1dJpVj+yXaZ/iePAH45p0urWkQb94rMpwUDqD+pFcn9qjn/dyyXOw9d9xkf+gmrtraQIpcIx3AFd0LSqf/ABwfoacqSWrEpt7GvB4gtrh8JBdEDqwjyB9cE1ckv4ooDMVfbgHnC9fqRj8az4UnES+U8KJ2X7Oy4/DdWffQXDI3mBzHu+c+ZsUj8XIHOO1QoxcrIq7SNP8A4SSyEvlusq+rYVh+YJq4moxSw+bFHK47DbtJ+m7Fchshg/eeVnHb7TG/6bTmr1pq0aQ+XuSIA8bxux+CqB+tXOkrXiiI1O5tS63b27qtxHLFn+9tP6Ak9vShNdspXCQs8sh6Iq4J/PArKd0vkJM/mp0ISCXb69A2KhbRVZTMjMy44iVChPbqxOPxpKEPtaMfNLodCNQ5+a1nVcZJO0/oGJqq/iPTlQkO7kfwqhyfzrOQajGgRLaVVHQLLEB/6DUV5qbS2ro9tCVOM/6QG7+gOaI003/kxuehvQanHcH5IZNucFwyED8mNMudatrVcvHOfm28RkfqcCucaPTCpAuIlJHUQycf+PVaspET91HqU0qgcKkBJHT1B4odNb/5iU3sa1vr9ncZOWjA7yMo/TOasXGox26qfJnkJPSNN1ZMgui2GtjdxEZUSOgx+BUEH/GqUlhIV/d6Sqtnq1xu/qKShFsfM7G5Hrlq03lyRzQNt3fvgFz+tSPq9sEJi3TkdVhIZseuM1gB57baJ7j7GQMBR+8BHbgscdD2/GnfareTi51PzU6hfswHPryDTdNboXO+ptx6xE7Ya1vIxjq0J/pmlk1mzRcrIshz0WRP6kVgSNpPBUJI38RYun6KuP0FTgXojjNvYOmMEB7liMem3IodNBzM1otaglJxb3QXn5/L3KfoVzUsupwxQrKVfaTgBsIf/HiPSsFotVuGIuEHl5yAEjfB+hND2MMUaS38oWPd91YFU59yueMZo5I33/UfNI1l8QWZmEbCRWI4xh8+3yk81Y/tJG/1dvcP6/Jtx/30R+lYhvNNSPEU8mQMKpllUVUvdSV4kjiSF8Z+ZsyFfxcf40Kld6IXPbdnRtrNrHv8/dCVxlWKk8+wJNMXXbWRgsEc85zg+XH9365xiudS0v50BEMJjbgsiRHjvjFaNrazoxE5vJQxGCZNu38nocIJbgpSZtJfKVZpIpIlUZy5X+hNUpPEunpjaZZM/wB1On54qOaK0hXdPG0i4Jy4aXb69c4rGuLiCRlMDWcIA5Hlbs/mlKnBS6DlJo6mDUEnjDiGVFIBUtt5B+hNQ3mtW1iyLKkxLDI2qP6muRe9ujIx+1ynk8q5AP0Fa1tGlwqmeJrp4wOkobB75y5649BVOko6y2EqjeiNe01y0vHKIHVh0D4BP059qmuNRW3VW8ieUE4/dqDj9aox21u+d1gkeP7yJz+WapahBe70Ed1KF5wRuyenUIvH41CjFy0Ku0tTSh8QWUshjbzIWBxiUAf14/Gp21SAqWhV7gKMt5JU4/WuQmLBsz3K3DISPLcyfj1Ax+fardlqNsrATWcQYECMxoOPqSfpzWkqKtdEKp0Z0I1q3EZkliuYVB58yE/0pG1y0GCh3gjOQ6D9CwNUJLxLtfJjMqsT/wAspY9x/wDHqrXWiyT7ZI7h2bABE7ZI/EVCjD7WhTcuhtpq0LDJhuF9P3ZYEeoK5FNk1q3jbBSTpn5tqfoxBrChtLmwwvlW0jZ3BzE7kfiB7VMdZktpBHdQg5Gd0YZcD6MBT9mr+7qHP30NdNbtGIXL72Jwi4cnH+6TSnVo/MCJa3T5HUR7R+bEVzUsum3UwZjeZOAMupA/Fj/WlW1gSdXt7kRMoyDK0bAH8G/oar2UepPOzpF1qzMZd5AmOxdSf0JqP+3bZuYYLqde7RxZAPpzVX/ia/8ATn/49VW5geZv9Mt45JduA8Rk4H4KRnrUKMblNsng3SSbH1OOdWH3EAVvXgqc0TaZG8rN9lSTP8T3D5P6GqPk2csx4t41Yk5ZhgflJ/IU/wCw2H/PzZ/m3/xdXZJ6P8P8id+grWADEDSAwB6i561C8QicgaPKrj+JXLj9QQas/wBkzrGWtL3YrYKom4KffOTUTadqiqWN6cAZ4kc/0pqS7/mJp9vyIftmoxcv50MC8Z8gHaOw6AelOTVHZwDqEqA/xNbLgfkakg/tGI4a4kZM5IMbk/mUNTPcXioSPtDkfwqvJ/OKm7dl/XyBepA92kiFJNX3IfvL9nIyPTjmpo7PSgv7yW2Zs9VkK/8AsxqE3NxI6mbT7iYLnCyIpH/oFL9vs42K3OliJsZA8sHP5gUmpdPwsF11Jfsdg8uyCK2kz0/0psn8ADUkdvJZTbrfTVLFcFluP0+Ye1VX1DSZEKmyYA/3Y1B/MGmyRWJb93FGq46NIrf+1BRZ7Sv/AF8x3XT+vwLEz6sIyY45VI5OXjbj6BRVeO61Ut+8+0quOq2wb/CnW8dushKSwwHH3t+M+3EtPaAFiRrgUE9BJ0/8eo91aWX3f8OLX+mVbx5JY1+1yXO0HgtaqvP1zSrHpgUA3ETEDqYZOf8Ax6pRaXkshW31VZQBniY5/IZq15Gs/wDP3D+Q/wDiabkkrJ/p+gW8v6+8jjj0OVtqlQcZ+ZmX+dTRSwWxIge2CDIAN4cY+mCBTJWuGDRyGR1zggqWB/8AIXNQ48n5vsHn542+VjHv/qxU2b3/ADHexZe4uZXJt5EkP/POGdDgevKf5zUDnWy5KKyr2DGMn88Cm/aP+oF/45/9jQ4sWBkl0q5Q4y21CFH6ihK3T9f1Bu/X+vuKs1rePIVuoXGfm3QwKxJ9yMfzojtERcNa3Mhz1a3b+jila40sYMNvKjg5DHJ/k4qdLkSIGEzAH+9IQfyMtaNyt2JshYo9OgCvco0TE5QGORCMfifbpVyPUtOiztuHOf729v51RjjZ87tXePH96Qc/k5qZFeJW8vW42Yjo5B/mTis5JPd/19xSbWy/r7yY35nRWS4t4xz0nAJ+oZKhnkaWFg11bSEDKhpo25+hSmedf/8AQVs/++l/wqVNPkaNTst2yAdy7MH3H7ui0YhdszPsd5d/cjhfb18oxjGfXFTW+k3CsxntyRjgZB/k4q95At2KyWcUpIyPkzj/AL5jpkzoF2jSFkDAg7EYY/NB+lV7ST0X9fiLlW7IY1MOfKtblM9dsMgz/wCRK0LW5RVO6G8VsDJkR2z9OTis6OO3LfvNHuVXHVSzf4VYMqCPbFaaghAwuQ5A/DcKmavoxx0Lk+oW8aYeWWEt0YxMD+GRWZ58FxL800LO38T7R+piokuzDjzftKZ6blkGf/IlQRyPKu5dRuQM4+ZlX+b04wSQnJti3Fks0gZLqzQAYx5q/wBFFVfsjpJ963cA/wDPZcN+ua14ZJTGAdXRMcAOsZP5hjUE8TvJuGoWEhI5aRUB/kauM2tP8/8AITityS2W5kh+VDtU7QIpSwH/AJFFWUnuLUgSQTuhJOFjLn895xVKOFQv7yewZs9VaNf/AGQ1ZgSEny1jsJnJ4zIuf0Ss5eZSLIv1lOx7O6VWGCXhJH44zVZra22naJS2OAbQD/2nRcWcW5WksIskYHlu/wD7KtQ7jb/JDp1wVPJ8uWUDP4gUkl9n9BtvqVriG2Eg87922OBynH0EQqK3tmGXh1C3jPQnzGQ/qBWotwm0brPUg2OQGc/+zVA0k5UgJeqSOojk4/8AIlaKTtYhxI2muY8KJreXjlhdsP5uKnt7+eOMh3hBz/z0D/qZKhja8ibcsuoE4x81vu/m1R/azdMFe6LlRkeZbxDH5tRa4XsayuLmJGls/PxnDARkfh8xqpKsHmNixul5xhLaMj8Dg1ElvEyAm/tEJ/haGLI/I02OHDfvLnT2XHRSi/8AshqFFLr+ZTZJNp1o+51+0lz28ooP0Tj8qjNtOkYS3luYwD0JkI/IIKsobZUAMenOR/E0q5P5JTY47SJt0YtUbGMresP6U1J9Qsiqk08T+VJeIXz/AMtXmUj+VWje3cEYCTWEnPQTEn82NWNrGLzVXenql3K2fyFQeeyy7Wsrwp/fSWU/ocUrp9AtbqRpPG5Dzw2ZYnLBVjOfxL/0qSSSxfG2FI8f3TBz+ZNRzSSvuEUeoRg9Dsckf+P4/SmbrsxeUzXjp6PaBs/madr6iuONjAw+0rFeEZyGhMf6Bf6VL5QaLcs+ph/7j7x+oU1U8qT/AJ5Tf+C9P8aY58tlWTdGWOBvso1z+Zp2b6ivboTrHfJIT50rqeiv53H5AVO0t5JGEkit3UdA8ErfzFQGBfkK3liwPLKyRqR7cA1OVtDsJSxDJ0ZbnYc+vyqKTsNEAlzvAj0sMnVWjKHPp82KkSW2aMiWG2DEDmIRDHr1Y5/KpvNj/wCesP8A4MH/AMKPNj/56w/+DB/8KV/IdvMqolpGzNHPcxljk7LiJc/kafuh/wCfy8/8Co//AIqrKFZHCI8TMegW/cn+VQSTTfKYor6J1JyQrSA/99EfqKLthawjRyFcxS3+4EEeYzMjDr1QHP5jrQftDHL21q7Yxue3lYn6kjmq/lSf88pv/Ben+NHlSf8APKb/AMF6f41VvMVyfbN/z52f/gLJ/wDE0bZv+fOz/wDAWT/4moPKk/55Tf8AgvT/ABo8qT/nlN/4L0/xp2XcVyfMQ4a5uUbusdwiqp9ACcgexo3Q/wDP5ef+BUf/AMVUqOixqGkiBAAIa8aMj6qOF+nanebH/wA9Yf8AwYP/AIVF/IqxXbyGUq11eFSMEG6j5/8AHqHkhAAijstqqSzThCT9Nh/p2qx5sf8Az1h/8GD/AOFHmx/89Yf/AAYP/hRfyCxBtm/587P/AMBZP/iafG91E26O3tUbGMrbSj+lMkihfHlSWMRLZd2lEpOev3h/WqygyZ8tXcA4JSyjYZ+oNUldCvYn8u7aTLyzKuMbYzMOfXlTUwhLSFEk1VsDO4ttB/76xVTypP8AnlN/4L0/xo8qT/nlN/4L0/xot5hfyJJIrSbHmz3L46briI4/Wp45LFM7oUkz/eMHH5EVXJu/LEaveogOQI7UJ/IipzcMsYxZ38kmectIg/8AQjSfYEQtL+8Ajg04qerOEGPyY1Ib6aICBJbABhgLCHPX0296skFYxI4Eak4BkvJF/mKZ5sf/AD1h/wDBg/8AhSun0Ha3UqyJfOuFkaM56r5/9QadFDPhRLPeE5+ZkaQfkNn9alZbWSQPILR2HQves38xTZlhkyYzp8ZxgASIRn15SnfoKxE9hZxMrJHfyHOeIun1yKsxwRBRK1nKUAJIkihX8+hFVlt18smS+sQw6KkUZz+eKgZ0WQJ5iszdAlrE2fyNOzelwvboXnuLUMrQQWyMDnJER+mMOMU2bUro5WM2zKRyTIqn9HNRRtdQ58oXKZ67bFRn9aQm7aTe0moHnkCAqD+AYUlFBdjt07x/8flohI/5+nyv/j2KpENOypJfiVdw+TMhz9Pl61pxzEZ8231BvTaJF/8AZzTftMhkwLC8C5wGaaTp6nGaadugNEUOnwpKrNHMAO+1n/Qx4NWHgtlQkJcOR/CtouT+aU/7P9qUq1sWVTnEk8o/mtRpFaQMy+TYbs4Ie43Yx9V4qXK47WLEFzGr7YdOuIy3XEQUH6nNJcTXWxy6GOPPUgLjnjkSCqzpAzkhrFAf4VlTA/OOq7QPuO2600LngEIf/ZaSir3DmFe5uA5CNEy9i10Qfy8w1WNpJcO0sl1bIxPR58n8+f51e8pYP3kWo228dNkMQP8AMVHPeTCPD38m0nH7tI8/+OtmtE39n9SWu5ClrBbAPLcW7tnjZLuH5bDU8LWssqpuQ5/uRBj+XlVFBJK53pPfzKDggRkj9Hq0ksgcF4b5l7hUkB/PeaJeYI0UuUVACbhyP4mgbJ/JarzX7SRMi2l4pPfyj/Qg/rUEsyGNgtjqDkjG12cA/Xk1WSKJnAOjyoD/ABM8mB+QrOMFv/kW5PYsrHcTxn91cFTwQ4YZ/Ay1nXOnXCNuMEcMecDMgGfzY8/jWsipI4Uadbgn+8jAfmY6jms/Ly8i20Sk8ZZAPpzHVRm0xOKaMq3tZFkJ860TjrJIjD8ua049sTbo7i1RsYys0Y/9p1BJDlv3dzp6rjoxRv8A2QVYjkujnzdYtl9Nu1v8KqTvqxRVh8GqwxyOs9yrD1BLc/ggqf7fZ3XyJLKxHOI1cH9Ko3AdsP8A2xvPTEZVf/ZgKhErQAu97LIuOhkB/RZM1HJF6r+vwHzNE10iSS4+z3MqL90tFI316uP5VWazWXCJa3EZJ6i3P9XxTv7Sj/56zfk//wAcqw0dkzFm0y9LE5JKtz+tXdx7k6MqLpd/FITHArDoN+w8fQk1ZibU7YKJtsUOcDDRoAfyPv2po8qKQmLRZWXGAZAx/Qg1NHKrthtGWMY6tGf6IaUpN7r+vvGkls/6+4mS6dXBN3buB/C1wuD+SU97y3dC1xPEoXp5NwxJ/AYqr5G+TC26ruPA8rAH4mKpzbaiiKlvNFEozwSCPwwgrNxj6FJsqt/Ye07SA2OCRIagaG0kUiBDMccmGBzt/N/84qzKdRUtHJqVqjYwQWCkfpxSfZ/+o7/4/wD/AGVaJ26/r+hLV+n9feVYbd4G3Rpdbsg5NmGxj0yeKnjl1uXO0OMf3kVf5in48j/mJfaM/wDTXG3/AMiCo5BBK26Qxu2MZaQH/wBq0733/IVrbFpW1TaN0MpbHJEsY/8AZalu/wB9HGLyK3QdQr3JXn8BzWYs+j7RutZS2OSCR/7NVqO7sJIyINMeQqO0IP0yeahx1vb9P1KT6X/r7h0drpZz5otl9NtyW/wqGePSFfakkSkdch3B+hBp32j/AKgX/jn/ANjRbvOm7ZbzQZxn5AN35RU7S3u/v/4cWn9IrxywWYka21EjcRlEt8/luPv61Il/dyq3kXFzIwHQWy/hnB4qy816UISSVW7Fo2I/LyhTXtNXnVWN4oGMjBKfngD9ad1vK39fILPp/X4ldLzVw4Lx3DL3CxAH89pqdoJbjEk2lNI5H32nCk/UDH8qQaffIC1xqRjjA+8JGP8APFL9ngaPZNqcM4zkeY5OPyek3HdfhcLPqOj0xHXLabHGc9GuW/oDT/sGnR8XMcMT9Qvnk8evOKqSW1mjYVraQY6q3+Mop8C6fEdzwRuwPGJEx+RkNDv3f9fMfyJ2copKavEigZIA3/8AoTE/hUP27/qM/wDkrTn1DS43KmyUkf3Y0I/MGon1a0jfNvYqpxw+FVgfbg0KLfT8gbXf8yF9UkaNh9slbII2tbpg+x5qO3ImVnk09rg5wDGNgH4KOvNXft1//wA+15+S/wDxFSR3N465ZbmM56Mv+ERqrtLRfj/kTu9ys9teQW5CJcQqvQtdrtHPpxVbdf8A/P5/5NL/APFVvJaIXAextFXuV5P5bRUv2K1/59of+/YqPbJbr+vvK9nc5sX9zASjuZGz1MzH9VbFPTUpWcAlUB/iaWXA/Jq22sBuO2OzC54Bt8/1qKTS3dsrJbRjHRbVf6k0/aQYuSSKi6vMqhRPZ4Axysp/pUv9pxyxbZ7q2Oeq/Z3YfqaJtJIibzbuFE7t9nRcfjVNtLtFUsdTiwBngA/1oSpv+v8AgB76LSXOnBwXe0Ze4W0IP581ZjfTJV3R26uucZW2J/pWbvj/AOg3N/3w/wDjUH2r/qIXn/fP/wBnT9nfq/6+Qc1v6/4Js/ZbWaXCI6Z6D7MAB+JT+tEmj28q7WdgM5+VEX+S1gveXAchLu4ZexZiD+WTTo7+QL+8lumbPVZ9v9DR7Ka2YuePVGj/AGPD/wA8Lz/vuP8AxpzWl0mFhS+KAYGblVx7YGapx6mqZ3LcyZ/vXR4/ICpo9bSJty20hOMfNcM386HGp2v/AF6jTgLJbamV/drdK2erXQb/AAqP7JrP96b/AL/D/GrA1o3QMY08yjGSobd+mKdHI0rbV0NQcZ+YBf5rRea3S/r5haL2f9fcVftN16w/+BZ/+LpBrd1EPLCRHacZJZv1zzWlHC7thtItoxjqzr/QGp47SMt+8srVVx1X5v8A2UVLnHqhqL6Myjqr3EY842WM52SRucfzFLHc2hX941grZ6Las3+FasljAV/dwWytnq0Ib/CoJNNZ1wptYznqtqP6k0lOHoPlkV47nTA37xrVlx0W1K/4057nR2QgGJCf4lg5H5rSSaI8q7WuYwM5+W3Vf5UR6JLDnyr90z12qRn9ad6f839fcL3+wiR6fcKyxySOMYOy2HGfonFLHotlLna9yMf3l2/zWiSxlhx5usOmem5iM/8Aj1V5AkTbW1yQnGflDN/I01r8L/r7g9UX5LBkxtuNQkz/AHZhx+eKgktboY8oag3ruuVX/Gs97kK5A1K7cD+JVOD+bVXW9udw3XM5XPIEhFVGnIlyRoyWuqHHlC5X13XIb/CiODV0zuR5M/3pzx+TCq8epKjZYXUgx0a6P9AKsR64sWdts5z/AHpy38xQ1PZL+vvBOPcnjbV4s7bVDn+9KW/m1QTXl3I22e3sGZSRh3U49erU19Yt5HLvp0TMepYgn+VN/tW1/wCgXD+n/wATSUZbuP8AX3j5l3Ik1AM4BtLFAf4mhOB+VWI7q3LfvP7PVcdVtmb/AApY76KbPlaOj467VBx/47VuKN5CudHgRSM5dl4+oxmiTS3VvmgXqRx3WlBf3n2Zmz1W2K/4015dJZyRMqA/wrAuB+aVoR2cBX95Z2ytnoqhv6CopdO3hggtYwTwRbAkfmcfpWalG+7LtKxm+XpHmbxeTK2cgquMH2wvFTo1nI4RNSvmY9ApYn/0Glk0FpW3NcqDjHywhf5GpP7Kuv8AoKTfr/8AFVblD+b+vuJSl2/r7ySOxWVdy3l+BnHzOV/mKhe1nCEodRZuwa4QD88mnf2Vdf8AQUm/X/4qj+yrr/oKTfr/APFVCkv5h2fYqSWuqlv3f2lVx0a5Df4VPH/a8TbltVJxj5pS383pJrR4M+brLoQM4JOcfTdVGa48vIj1O5kOMghSBn05atF721vuZL0/pF+QanK26TTrV2xjLAH/ANmpnk3/AP0CrP8A75X/ABrPhv3XBlkuZCDnAnKgj06VcGtR+WY2sy6E5IklL/zBpuE1sv6+8SlF7sZNPNb7vNsdPUr1XCk/lnNEN5C+0ypp8YPUfZ2JH9P1o/tW1/6BcP6f/E0f2ra/9AuH9P8A4mnyu3whddy39p0lotrNCH/vpb4/Qg1BjSRL5q3syP6ou3H5LUf9q2v/AEC4f0/+Jo/tW1/6BcP6f/E0lCS6P70HMvL8SfzrD/oK3n/fTf4UedYf9BW8/wC+m/wp1tMt0R5ejxbT/GcBfz21eexR4cLBbRSHqfKDgfTpUNqLs/0KSb2KCyWTMFXU70sTgAM3P6VO9m3lh4ptQkJBwPNC4+u7BFMGjTK7Ml80ZbGfLj2g/gDTv7Kuv+gpN+v/AMVSco9Jf19w0n1RXSLVY5CyxSOuQQJbjdj8iM/lT3XUZHLvptozHqWAJ/8AQql/sq6/6Ck36/8AxVH9lXX/AEFJv1/+Kp88e6/EXK/6sQeTf/8AQKs/++V/xo8m/wD+gVZ/98r/AI1P/ZV1/wBBSb9f/iqP7Kuv+gpN+v8A8VRzx7r8Q5X2/Ig8m/8A+gVZ/wDfK/41HK89uV+0WNhErHALJn9ASaivGezkVBqU0zZ+ZVYjA+uTzUjaxBJjzNPRyBgF23HH1Iq0pPVK6/ruTddyVpdMLh1vHhbGD5Eewe/Rc9u5NHnWH/QVvP8Avpv8Kg/tW1/6BcP6f/E0f2ra/wDQLh/T/wCJo5Jdn+A+Zd/zJ/OsP+gref8AfTf4UedYf9BW8/76b/CoP7Vtf+gXD+n/AMTR/atr/wBAuH9P/iaOSXZ/gLmXf8yfzrD/AKCt5/303+FHnWH/AEFbz/vpv8Kg/tW1/wCgXD+n/wATR/atr/0C4f0/+Jo5Jdn+Acy7/mT+Xdt80VhbTRnlJJFBZx2J56mjyb//AKBVn/3yv+NSpp9xPGs0d/LEkgDLGucIDzgc9qd/ZV1/0FJv1/8AiqjnXdfiVyv+rEHk3/8A0CrP/vlf8aPJv/8AoFWf/fK/41P/AGVdf9BSb9f/AIqj+yrr/oKTfr/8VRzx7r8Q5X2/Ig8m/wD+gVZ/98r/AI0GPU/LZI7GGHPeJth/Rvep/wCyrr/oKTfr/wDFUf2Vdf8AQUm/X/4qjnj3X4hyv+rDHiSCFXuru/gJOMGTdz9QDUfnWH/QVvP++m/wqZtIuWUq2pSlSMEEHn9alnt1tbZGFjDcsOGKxhT9cYNLmj3/AK+Y7PsVPOsP+gref99N/hR51h/0Fbz/AL6b/CoP7Vtf+gXD+n/xNH9q2v8A0C4f0/8Aia05Jdn+BHMu/wCZM0mnspVtTvCpGCCzc/pSxPpMKFRMr8EDzYd2D6/dBP51B/atr/0C4f0/+Jo/tW1/6BcP6f8AxNHJLs/wDmX9XCW8iVwIYtPlBIA/cFT+OeB+dSot5IgdNNsWU9CoUj/0Kov7Vtf+gXD+n/xNOXWII8+Xp6ISMEo204+oFDjK2kQuurJfJv8A/oFWf/fK/wCNHk3/AP0CrP8A75X/ABqhNqDySAxyXMK5+YecXx9On86t2y/agNusSqxONj5B/wDQufwoaaV3+oJpvQsKdVjjKR2NuinqEIX+TVA1vqzyA7JUUdVS46/mxq1/ZV1/0FJv1/8AiqP7Kuv+gpN+v/xVQpxXVfcyuV+f4DYbS4bAlOoRknGRcKwA9akmtY4M+Ze6gABkkMxAH1Apv9lXX/QUm/X/AOKo/sq6/wCgpN+v/wAVS5lf4h2fYg86w/6Ct5/303+FNdtOkQo+pXbKeoYkj/0GpjosrSCR70yMBgGSPd/M1ah05U2iVbaQDqfs4BP64/Sm5QWz/r7hKMn0/r7zOjXSIs7bpzn+9EG/mtTm50ny9qGDfj7z2+fzAAq1NbKm4xadbSAdBkAn/wAdx+tUZrhbfd5uiooXq2AR+e3FC97v96D4f6ZHJdW4b93/AGey46tbMv8AjUAvy0mxbSwPPBMe0H8SRUn9q2v/AEC4f0/+Jo/tW1/6BcP6f/E1ootfZ/Im67kkYu5V3R6dYOucZUKf/ZqsJJq8aBEsrdVHQLgD/wBCqn/atr/0C4f0/wDiakOuqY/L+yFVxgBJSuPpgVLjN/Z/r7xpx7/19w5otVKkC3KkjqLhuP8Ax+o0tdXDgubhl7hbgA/nk1DJqSu2VF1GMdFuj/UGq6XlwXAe7uFXuVYk/lkVajO2y/r5ktxNeO1ujnzRqC+m25Vv8Knj09nXLXN/Gc9GmH9M1lRzI65bV7mM56Mjf0Jq7HZSSttj1lnbGcK2f/Zqzkmt3b5MtPyHTWNvJlJbjUHAPQqzDP8A3zVaNNHibct1ITjHzRhv5rVv+yrr/oKTfr/8VSNpFyylW1KUqRggg8/rSUo7OX9fcDT7DI5tIRstKsgx0aAf0UUsl1pRX939mVs9Wti3+FJHoLRNuW5UnGPmhDfzNWI9MZM7mtpM/wB61HH5EUm6e6f9fcNKXYoyXNoF/dtYM2ejWrL/AI1BJfIi5WHT5DnosLf1ArdSxtwgD29uzdysQA/LmontQu4pp9owGcDIBP8A47QqkQcWZkOtXbYSOO2UKOAflAH4mnCe/uZDsjidsZIjuD/IPVh98aFjokRA/ulSfyAqvJexxLuk0ZUXOMsuP/ZatWfwr+vvJ9WJJb6w7ZVZIxjos5/qxpY7XVBnzRct6bbkL/jSR61BE26PT40bGMqwH9KWTXFlxutnGP7s5X+Qp2qbcv8AX3i9zuSpbXhcB0vlXuVu1J/LinPponZRKL9gDwXkQ4/WqMmpq+Nq3MeP7t0efzBqCS+lOPKmuV9d0xb+goUJ+n9eoc0TZXQbVWDCSXIOeSp/pSfZrX0m/wDAQf8AxFY8d5Kc+be3K+m0lv8A2YVPHOr53arcx4/vKefyY0nCXVjUo9EaP2jSI/kdYty8HdBg59/lpkl1pZx5Rtl9d1sW/wAKgjVZc7dccY/vZX+Zp39kC7Yt/aQmZRgnG7H60rRW7f8AXyHeT2X9feI9zZhCUexZuwa0YD8+ad/bE3/Pez/74k/wqSPQ2iztuUOf70Ab+ZqaPS3RstJbSDHRrVf6EUm6fe/9egJTMubWbiRsERkKTgozrn8iP1pEvrmZWCFVOOpuGXH0y9baWCBwXitGXuFt8H88mpGsrbadtrAWxwCgH9KPawWiQcknuzn0GoyOES5ZmPQLcgn/ANCqzHbamF/eLdM2eq3QX/GtH7L/ANQ+z/76/wDsKhaOQMQNGgYA9Q6c/pT9pfZL+vmHJYqNp080gM1tct2LG5RiB+Ip/wDY8P8AzwvP++4/8asHUbqE+X/ZcgCjACHIH0wMVVuNWIkHnWc0bY4HnsnH0AFCdR7f1+ImoLcux6bE65ZWjOejRxf0U1INOt4zvYB1AyVMSc/kuax31VGQgRXCE/xLdNkfnUX9of7d5/4E/wD2NHs5sfPFG5tsP+fP/wAlW/8AiarzTWUEy7RBCwAID2jZ+o6Vifbbr/n5m/7+GpI7uQr+8vbpWz0X5v8A2YVXsWt2T7RPoOX+y9o3G8LY5ICipkm0dUANvcOR/Ex5P5GqLtblCEilVuxaQEfltFMRgrglFcD+Fs4P5Vry36sjmsa8d9pES7Vs2Izn5kDfzNTR6vp0Tbo7VkbGMrGo/rWSl0kbhhZ25I/vbiPyLVOmrPG4dLS0Vh0Kx4P86zdK/R/eUpmqmuW8jhEhuGY9Aqgn+dTpqBkcKLK7BP8AejAH5k1kf2/df884f++T/jR/b91/zzh/75P+NZui+i/EtVF3N5JnZwDbyoD/ABMVwPyNPcuEJRVZuwY4H54Nc9/b91/zzh/75P8AjUker6jKu6O1V1zjKxsf61LoSKVSJrO16UISK3VuxaRiPy2iq8iau64WS1jOeq5/qDUKXWsSIGFnEAf73B/ItVpf7U3DcbMLnkgMaVuXsF79ypJaaxKu1ryMDOflJX+QqCTSNRlXbJdK65zhpGP9K241nDfvJI2XHRUK/wBTSyRs+Nszx4/ugc/mDQqrW1g5Ezn/AOwLr/npD/30f8KP7Auv+ekP/fR/wrXfTzI5Y3t2Cf7sgA/ICq7aDbMxZpZyxOSSw5/SrVZ9X+BPs12Md9PEaFje2hA/uyEn8gKryRIi5WeOQ56KG/qBW/8A2Ba/89Jv++h/hR/YFr/z0m/76H+FaKvHqyXTfYwI1gK/vJJFbPRUDf1FWEGmhAHa7Zu5UKB+WTWv/YFr/wA9Jv8Avof4UjaDZqpZpZQoGSSw4/Sh1oPqwVOSKSXGjptP2WZiuOW5z9RnFWU1bTY3DpaMrDoVjUH+dRSWOkRLua8YjOPlcN/IVVlXSkLBGupCBwRtAP5jP6UrRl3C7XY1P7ftf+ec3/fI/wAaP7ftf+ec3/fI/wAawJDEceUjr67nDf0FOinSMLm2idgc5fdz9RnFP2EOwvayN3+37X/nnN/3yP8AGp01MSbdlndkNjB8sY/PNY8esyw58q2tkz12oRn9af8A2/df884f++T/AI1Do9l+Jaqd2dBHIz53QvHj+8Rz+RNRu118wjih77S0h/Ubf61h/wBv3X/POH/vk/40f2/df884f++T/jUewn2H7SJpSR6u+Ns1tHj+6Dz+YNU5dL1OYMJLtWVjkqXbH5YqH+37r/nnD/3yf8aP7fuv+ecP/fJ/xrRQqLZIlyg92H9gXX/PSH/vo/4Uf2Bdf89If++j/hUkes6hNnyrZHx12oxx+tX4W1WTBkS2jGcEHJOPXg0SnUju0CjB7GZ/YF1/z0h/76P+FH9gXX/PSH/vo/4V0CrJ5ZEkilj0ZFxj8yarTaf5+fMu7kgjBAYAEfQCoVeXVlOmuxhzaS8GfNurZCBnBc5x9MVTZESQDzVdT1ZAePzxW/8A2Ba/89Jv++h/hR/YFr/z0m/76H+FaKvHqyHTfRGRD/Zq4MpuZCDnAVVBHp1q9DqGlQY8u0cEHIJUEg/UmrP9gWv/AD0m/wC+h/hR/YFr/wA9Jv8Avof4UnUpy3bGoSWyD+37X/nnN/3yP8aP7ftf+ec3/fI/xo/sC1/56Tf99D/Cj+wLX/npN/30P8Kj9yV+8D+37X/nnN/3yP8AGj+37X/nnN/3yP8AGj+wLX/npN/30P8ACqNxbaTb4H2iaQntGyn9cYpqNKW1xNzW5e/t+1/55zf98j/Gnx61BK22OC5dsZwqA/1rnQ8ayFlhDJjhZGJx+IxV9NcuI0CJDbqo6BVIH86uVFdESqj6s6EvKYwyRAMTysjYx+IzWZc2mq3IKtcQqh/hQkD+Wap/2/df884f++T/AI0f2/df884f++T/AI1EaU47JFOcWH9gXX/PSH/vo/4Uf2Bdf89If++j/hR/b91/zzh/75P+NH9v3X/POH/vk/41p++J/dh/YF1/z0h/76P+FH9gXX/PSH/vo/4Uf2/df884f++T/jR/b91/zzh/75P+NH74P3Yf2Bdf89If++j/AIUf2Bdf89If++j/AIUf2/df884f++T/AI1NbarqF3IEigiPPJ2nC/U5pN1lq7AvZsgbQblVLNLAFAySWPH6VXs3soZGa5V5iD8oUfL9eSM/SuhurBb1UE0smFHRMAE+uOaq/wBgWv8Az0m/76H+FSqya95jdNp6IP7ftf8AnnN/3yP8aP7ftf8AnnN/3yP8aP7Atf8AnpN/30P8KP7Atf8AnpN/30P8Kn9yV+8D+37X/nnN/wB8j/Gj+37X/nnN/wB8j/Gj+wLX/npN/wB9D/Cj+wLX/npN/wB9D/Cj9yH7wP7ftf8AnnN/3yP8aP7ftf8AnnN/3yP8aP7Atf8AnpN/30P8KP7Atf8AnpN/30P8KP3IfvA/t+1/55zf98j/ABo/t+1/55zf98j/ABo/sC1/56Tf99D/AAo/sC1/56Tf99D/AAo/ch+8Kb6RcXcjXMbxBJiZFDE5APPPFN/sC6/56Q/99H/CnPq9xaSNbRpEUhJjUsDkgcc803+37r/nnD/3yf8AGtF7XoR7nUP7Auv+ekP/AH0f8KP7Auv+ekP/AH0f8KP7fuv+ecP/AHyf8aP7fuv+ecP/AHyf8af74P3Yf2Bdf89If++j/hR/YF1/z0h/76P+FH9v3X/POH/vk/40f2/df884f++T/jR++D92H9gXX/PSH/vo/wCFH9gXX/PSH/vo/wCFH9v3X/POH/vk/wCNH9v3X/POH/vk/wCNH74P3Zp6fb31tiOaSKSEDAwTlf05psutwQyNHJDOrqcEFR/jWd/b91/zzh/75P8AjVe71OW9jCSxRcHIYA5H61CpNyvJDdRJe6zW/t+1/wCec3/fI/xo/t+1/wCec3/fI/xqrZafp16nySzCQDLIWGR+nNWv7Atf+ek3/fQ/wpNUk7O405vVB/b9r/zzm/75H+NH9v2v/POb/vkf40f2Ba/89Jv++h/hR/YFr/z0m/76H+FL9yP94H9v2v8Azzm/75H+NH9v2v8Azzm/75H+NH9gWv8Az0m/76H+FH9gWv8Az0m/76H+FH7kP3hVub/S7olpbeXfj76gA/z5/GsyZbcyAQPIEJ581R8v5dfyrd/sC1/56Tf99D/Cj+wLX/npN/30P8KuNSnHZslwk9zNh0iW4XdFcWzjAJw54z68cVJ/YF1/z0h/76P+FX10G2Vgyyzhgcghhx+lX44nijKid3OMKZADj8sZqZV39ljVNdUYP9gXX/PSH/vo/wCFH9gXX/PSH/vo/wCFaNzNqsALLFBKuf4FbP5Z/lms9tevFYq0UQYHBBU8frVRlVltYTUFuJ/YF1/z0h/76P8AhR/YF1/z0h/76P8AhR/b91/zzh/75P8AjR/b91/zzh/75P8AjVfvhfuyeHTNTt9vlXSKF6LvJH5YxV6Eamm0Sm2kA6nJBP6Y/Ssr+37r/nnD/wB8n/Gj+37r/nnD/wB8n/GolCpLdIalBbM6DdIsW5o8v/cRs/qcVUm1Nbfd5trcqF6tsBH55xWV/b91/wA84f8Avk/40f2/df8APOH/AL5P+NSqEuqKdRdGXv7ftf8AnnN/3yP8aP7ftf8AnnN/3yP8ayptTa43eba2zFurbCD+ec1V3RtLuaPCf3EbH6nNaKhHqiHUfRm//b9r/wA85v8Avkf40f2/a/8APOb/AL5H+NZUI0x9olNzGT1OQQP0z+laEOk6bPjyrp3JGcB1zj6YqZQpx3TGpTewsmr6dK26S1Z2xjLRqf61Skl0d1wsFzGc9VI/qTWj/YFr/wA9Jv8Avof4Uf2Ba/8APSb/AL6H+FCnTWzY3Gb3MaRbEt+7kuVXHRkVv6ioI0V2w0ixjHVs/wBAa6D+wLX/AJ6Tf99D/Cj+wLX/AJ6Tf99D/CrVeHcn2cjITTxIgYXtoAf70hB/IirP9gXX/PSH/vo/4Ve/sC1/56Tf99D/AAp8eiwRNujnuUbGMq4H9Kl1l0f4DVPujO/sC6/56Q/99H/Cj+wLr/npD/30f8K24rZ4goF1Oyg9H2nP1OM1LIJCv7tlVs9WXd/UVn7efcr2cTDj0jUYl2x3Souc4WRh/SrCWusRoFF5EQP73J/MrVqX+01LGP7K6gcZDAn9f61UkvdXixus0Of7qlv5GnzSl2CyXctr/am4bhZlc8gFhVhGuC4DxRKvcrISfy2isN9cvY3KPDErDqGVgf503+37r/nnD/3yf8aHRm+iD2kV1OgkkZMbYXkz/dI4/Miq8l80TbWs7onGflQN/I1j/wBv3X/POH/vk/40f2/df884f++T/jQqEuqB1F3L7a9bKxVopwwOCCo4/Wk/t+1/55zf98j/ABqj/b91/wA84f8Avk/41XbUQylTZWeCMcR4/rVqiuq/El1PM05NZ0+bHm2zvjpuRTj9agkvdIlxus3GP7qhf5GsqSVHXCwRxnPVS39SaIzEM+ajt6bXC/0NaKkltchzbL0kmkPjbDcx4/ukc/mTUEg0848p7lfXcit/UUqHTSgLrdq3cKVI/PAqylvo77R9qmUtjhuMfU4xRfl7hv2M2QRhv3bMy46su3+ppY4kdctPHGc9GDf0BraTSdNkcIl2zMegWRSf5VL/AGBa/wDPSb/vof4UnWih+zZjx2KyruW8tQM4+Zyv8xU8eizyrujntnXOMq5P9K0f7Atf+ek3/fQ/wo/sC1/56Tf99D/CodZdH+BSpvsVY9G1CHPlXKJnrtdhn9KlTT9WjcML1SR/ekYj8iKsx6RHEu2O6ukXOcLJj+lTx2jxLtW8uSM5+Yq38xUOrfr+BSgVVh1kMCbqBgD0I6/+O1N/xNf+nP8A8eq3GjIuGkaQ56tj+gFJIs5b93JGq46Mhb+orPnv0RfKU30rTo0LvEqqOpaQgfzqvJBokS7mMZGcfLIzfyNP/sC1/wCek3/fQ/wo/sC1/wCek3/fQ/wq1KPWTIafZFSSXREbCwSSDHVS39SKrvc6cHITT2ZexaUg/lzWn/YFr/z0m/76H+FH9gWv/PSb/vof4VaqU11ZLjLsjDeeJtwS0iUHODuYkfrUSOY3DAKSP7ygj8jXQ/2Ba/8APSb/AL6H+FH9gWv/AD0m/wC+h/hV+3gT7ORjx6jdQ58p0TPXbEoz+lP/ALYv/wDnv/44v+Fav9gWv/PSb/vof4VHJpGnRNtkumRsZw0ij+lL2lJ9PwHyTXUzv7Yv/wDnv/44v+FH9sX/APz3/wDHF/wqV4dHVCRcXDkfwqOT+YqtI1iG/dx3LLjqzqv9DVpQf2fwJbkupJ/bF/8A89//ABxf8KP7Yv8A/nv/AOOL/hVSN1RstGsgx0bP9CKsR3yxLtWztSM5+ZC38zVOEekRKT7k0ep6nK22ORnbGcLGD/SrKPrkiBgGAP8AeVAfyNRf2/df884f++T/AI0f2/df884f++T/AI1m4y6RRaa6tmjHb6qW/eXsarjqqBv6CrUUEyhTJdyOwPOEUA/p/WsT+37r/nnD/wB8n/Gj+37r/nnD/wB8n/Gs3SqPoilOKOgkjWVdrFgM5+Viv8qrPpVnI5d4mZj1LSMT/Osj+37r/nnD/wB8n/Gj+37r/nnD/wB8n/GkqNRbDdSD3NX+x7D/AJ4f+Pt/jR/Y9h/zw/8AH2/xrK/t+6/55w/98n/Gj+37r/nnD/3yf8afs63f8Rc9Psav9j2H/PD/AMfb/Gj+x7D/AJ4f+Pt/jWdHrOoTZ8q2R8ddqMcfrV6OTV3zuhto8f3iefyJqWqkd5fiNOD2Q/8Asew/54f+Pt/jR/Y9h/zw/wDH2/xq3GJRnzXRvTahX+pqCSyaXG68uRj+6wX+QqFOX8xXKuxBJp2lw481ETPTdKRn9aoySaImNsLyZ/uluPzIq1/YFr/z0m/76H+FH9gWv/PSb/vof4Vopx6yZLi+iRjyXNqceVYovrukZv6ioI5WiztCHP8AeQN/MVv/ANgWv/PSb/vof4Uf2Ba/89Jv++h/hWqrU9iPZyMr+2L/AP57/wDji/4Uf2xf/wDPf/xxf8K1f7Atf+ek3/fQ/wAKP7Atf+ek3/fQ/wAKXtKPb8A5Kncyv7Yv/wDnv/44v+FH9sX/APz3/wDHF/wrV/sC1/56Tf8AfQ/wo/sC1/56Tf8AfQ/wo9pR7fgHJU7mV/bF/wD89/8Axxf8KP7Yv/8Anv8A+OL/AIVq/wBgWv8Az0m/76H+FNfQ7KNC7zSqo6lmUD+VHtKXb8A5anczP7Yv/wDnv/44v+FH9sX/APz3/wDHF/wpZ10uMYie5lbHGCFH6j+lVoJ1gOfIikbPWQE/pnFaKMWr8pN2upft7zV7rPkszAdTsUD8yK1be3v+Tc3v0EaL/Mj+lZX9v3X/ADzh/wC+T/jR/b91/wA84f8Avk/41lKE3ski1KK3bNy4s4LrHnKzAdBvIH5A1B/Y9h/zw/8AH2/xrK/t+6/55w/98n/Gj+37r/nnD/3yf8ahUqq2ZTnBmr/Y9h/zw/8AH2/xo/sew/54f+Pt/jWV/b91/wA84f8Avk/40f2/df8APOH/AL5P+NP2dbv+Iuen2NX+x7D/AJ4f+Pt/jR/Y9h/zw/8AH2/xrK/t+6/55w/98n/Gj+37r/nnD/3yf8aPZ1u/4hz0+xq/2PYf88P/AB9v8aP7HsP+eH/j7f41lf2/df8APOH/AL5P+NH9v3X/ADzh/wC+T/jR7Ot3/EOen2NX+x7D/nh/4+3+NH9j2H/PD/x9v8ay1168ZgqxRFicABTz+tbEC3c9s4uisLtwPK6qPrzUyVSO7/EpOMtkZeoJplnmNbffNjgb2wPrzWfBqF1bR+XDIEXOcBB/hWz/AGBa/wDPSb/vof4Uf2Ba/wDPSb/vof4VpGpTSs9SHCV7rQyv7Yv/APnv/wCOL/hR/bF//wA9/wDxxf8ACtX+wLX/AJ6Tf99D/Cj+wLX/AJ6Tf99D/Cn7Sj2/AXJU7mV/bF//AM9//HF/wo/ti/8A+e//AI4v+Fav9gWv/PSb/vof4Uf2Ba/89Jv++h/hR7Sj2/AOSp3Mr+2L/wD57/8Aji/4Uf2xf/8APf8A8cX/AArV/sC1/wCek3/fQ/wo/sC1/wCek3/fQ/wo9pR7fgHJU7mV/bF//wA9/wDxxf8ACj+2L/8A57/+OL/hWr/YFr/z0m/76H+FH9gWv/PSb/vof4Ue0o9vwDkqdzK/ti//AOe//ji/4Uf2xf8A/Pf/AMcX/CtX+wLX/npN/wB9D/Cj+wLX/npN/wB9D/Cj2lHt+AclTuSQ6baXEEc8sW6SRQ7tuIySMnvT/wCx7D/nh/4+3+NZj6vcWkjW0aRFISY1LA5IHHPNN/t+6/55w/8AfJ/xqPZ1Xs/xK5odUav9j2H/ADw/8fb/ABo/sew/54f+Pt/jWV/b91/zzh/75P8AjR/b91/zzh/75P8AjR7Ot3/EOen2NX+x7D/nh/4+3+NH9j2H/PD/AMfb/Gsr+37r/nnD/wB8n/Gj+37r/nnD/wB8n/Gj2dbv+Ic9Psav9j2H/PD/AMfb/Gj+x7D/AJ4f+Pt/jWV/b91/zzh/75P+NH9v3X/POH/vk/40ezrd/wAQ56fY1f7HsP8Anh/4+3+NH9j2H/PD/wAfb/Gsr+37r/nnD/3yf8aP7fuv+ecP/fJ/xo9nW7/iHPT7GxFplnDIskcRV1OQQ7f41V1H+0bffNBPuhHJXaMr+nI/z71R/t+6/wCecP8A3yf8aP7fuv8AnnD/AN8n/GhU6l7vUHOFrLQg/ti//wCe/wD44v8AhR/bF/8A89//ABxf8KZ58N1e+ZdJ5av94w8c+uDmtWLRLGaNZI5pWRhkEMP8K1k4R+JELmlszN/ti/8A+e//AI4v+FH9sX//AD3/APHF/wAK1f7Atf8AnpN/30P8KP7Atf8AnpN/30P8Kn2lHt+A+Sp3Mr+2L/8A57/+OL/hR/bF/wD89/8Axxf8K1f7Atf+ek3/AH0P8KP7Atf+ek3/AH0P8KPaUe34ByVO5lf2xf8A/Pf/AMcX/Cj+2L//AJ7/APji/wCFav8AYFr/AM9Jv++h/hR/YFr/AM9Jv++h/hR7Sj2/AOSp3Mr+2L//AJ7/APji/wCFRT39xcptmdXHbKLkfQ4ra/sC1/56Tf8AfQ/wo/sC1/56Tf8AfQ/woVWktl+AckzHtp7NSFubQMuPvI7A/ln/AArVtrfR7ohYkG/H3GZgf58/hT/7Atf+ek3/AH0P8KP7Atf+ek3/AH0P8KmVSD2bQ1GS3SJ/7HsP+eH/AI+3+NH9j2H/ADw/8fb/ABqW2tPswCrcTMg/hcgj+WaZcnUUJNuLeReykEN/PFY80m7KRpZW2G/2PYf88P8Ax9v8aP7HsP8Anh/4+3+NZ02s38EhSWCJGHYqf8aj/t+6/wCecP8A3yf8a19nV7/iRzQ7Gr/Y9h/zw/8AH2/xo/sew/54f+Pt/jWV/b91/wA84f8Avk/40f2/df8APOH/AL5P+NHs63f8Q56fY1f7HsP+eH/j7f40f2PYf88P/H2/xrK/t+6/55w/98n/ABo/t+6/55w/98n/ABo9nW7/AIhz0+xvQ28cGPL3gAYAMjEAfQmo5oLhsmK8eMk5wUVgB6dKxf7fuv8AnnD/AN8n/Gj+37r/AJ5w/wDfJ/xpexqXuP2kS5NFrUeTHcJIM4AAUHHryKozX2rQZ81nQA4yYxjP1xTv7fuv+ecP/fJ/xo/t+6/55w/98n/GtFCS3iiHKPRsg/ti/wD+e/8A44v+FH9sX/8Az3/8cX/Cmzah5+fMtLYknJIUgk/UGq6tH5hMkbFT0VGxj8wa0UI9YkOT7lr+2L//AJ7/APji/wCFH9sX/wDz3/8AHF/wp0K6VJgSPcxnGSTgjPpwKvQ6Tps+PKunckZwHXOPpipbpx3j+BSUnszP/ti//wCe/wD44v8AhR/bF/8A89//ABxf8K1f7Atf+ek3/fQ/wo/sC1/56Tf99D/Cp9pR7fgPkqdzJbVr1lKtMCpGCCi8/pVaSVpcbggx/dQL/IVv/wBgWv8Az0m/76H+FH9gWv8Az0m/76H+FNVaS2B05vcwopokCh7aOQA8kswJ/I4/SrkdzpZz5ti6+m2Qt/UVo/2Ba/8APSb/AL6H+FH9gWv/AD0m/wC+h/hSdWm+rBQkiBP7DfaMbS2OGLjH1PSrcenaXNnykR8ddspOP1qP+wLX/npN/wB9D/Cj+wLX/npN/wB9D/Cs3KPSTLUX1SJ/7HsP+eH/AI+3+NH9j2H/ADw/8fb/ABpYtO8krsvLoBRgAuCB+BGKtRxsmd0zyZ/vAcfkBWbnLpIpRXYqf2PYf88P/H2/xo/sew/54f8Aj7f41NKt5hjFJATn5VdCPzOf6VWkk1dMbYbaTP8AdJ4/MimnJ/a/EGoroP8A7HsP+eH/AI+3+NPj0y0ibdHGyNjGVkYf1rNl1TU4QxktFVVOCxRsfnmof7fuv+ecP/fJ/wAav2dV9fxJ5oLodBHGsS7VLEZz8zFv5014XZyRcSoD/CoXA/MVg/2/df8APOH/AL5P+NH9v3X/ADzh/wC+T/jS9hMPaRNRrXUNp26iC2OAYVFV3h1pUJFxE5H8KgZP5iqf9v3X/POH/vk/40f2/df884f++T/jVqnU7ITnHuySSXW4sbg5z/dRW/kKryanqcTbZJGRsZw0YH9Kk/t+6/55w/8AfJ/xo/t+6/55w/8AfJ/xq1GXWKJbXRs3Pttr/wA/MP8A38FH221/5+Yf+/gqGLSbKIqRCGYDq5Jz9R0q1HDFDnyokTPXaoGa5XydDZc3UDIoj8zJZcZBQFs/TFV5NQVGwttdSDHVYT/XFW6KlNdRu5ky6peYYRadKDn5WdSfzGP61VkvtYdsrDJGMdFhP9Qa6CitFUivskuLfU5N01KRCjrdsp6hgxFRfYrr/n2m/wC/ZrsaKtYhroR7JdzjvsV1/wA+03/fs0fYrr/n2m/79muxop/WX2D2K7nHfYrr/n2m/wC/Zo+xXX/PtN/37NdjRR9ZfYPYrucd9iuv+fab/v2aPsV1/wA+03/fs110kscS7pJFRc4yxxVKbWbKLIDtIQcEIv8AU8VSrzeyE6cVuznvsV1/z7Tf9+zR9iuv+fab/v2a05vELnIhgUc8FznI+g/xqjNqt7NkGdlGcgJ8uPxHNap1HuiGoLqV5LeeJd0kMiLnGWUipYbNpcEzW8YIyC8o/kOarsxZizElicknvSVetidDXh0uyGDNqER45CMowfqf8Kvww6RCuA1sxwMl3DZ/P+lczRWcqblvIpTS6HY/bbX/AJ+Yf+/go+22v/PzD/38FcdRUfVl3K9s+x2P221/5+Yf+/go+22v/PzD/wB/BXHUUfVl3D2z7HY/bbX/AJ+Yf+/go+22v/PzD/38FcdRR9WXcPbPsdj9ttf+fmH/AL+Cj7ba/wDPzD/38FcdRR9WXcPbPsdj9ttf+fmH/v4KPttr/wA/MP8A38FcnBbTXL7YY2c98dB9TWpbaA7ENcyBVx91OT+f/wCuolShHdlKcnsjY+22v/PzD/38FEt0kSBgksuQCPKQtkfXp+tNtrC2tQPLiXcP4zy351ZrB8t9DVX6mLc6jqLki3s5Y17MYyW/wrLkt76Vt0kNy7YxllY111FaxrKOyIdO+7OO+xXX/PtN/wB+zR9iuv8An2m/79muxoqvrL7E+xXc477Fdf8APtN/37NH2K6/59pv+/ZrsaKPrL7B7FdzjvsV1/z7Tf8Afs0fYrr/AJ9pv+/ZrsaKPrL7B7FdzjvsV1/z7Tf9+zR9iuv+fab/AL9muxoo+svsHsV3OO+xXX/PtN/37NH2K6/59pv+/ZrsaKPrL7B7FdzjvsV1/wA+03/fs0CznDqJI2iDHG6UbVH4muiv9Uis1ZFIefHCenua5u5uZLqYyytlj27AegranOc9WrGcoxibthBYWaq7XMDz45fzBx7Cr/221/5+Yf8Av4K46iplQ5ndspVbKyR2P221/wCfmH/v4KPttr/z8w/9/BXHUUvqy7h7Z9jsfttr/wA/MP8A38FH221/5+Yf+/grjqKPqy7h7Z9jsfttr/z8w/8AfwUfbbX/AJ+Yf+/grjqKPqy7h7Z9jsfttr/z8w/9/BR9ttf+fmH/AL+CuOoo+rLuHtn2Ox+22v8Az8w/9/BR9ttf+fmH/v4K46ij6su4e2fY7H7ba/8APzD/AN/BR9ttf+fmH/v4K46ij6su4e2fYuXVrcS3c0kcEro0jFWVCQQT1BqL7Fdf8+03/fs11Vl/x4W//XJf5Cp6j6w1pYr2Sepx32K6/wCfab/v2aPsV1/z7Tf9+zXY0UfWX2D2K7nHfYrr/n2m/wC/Zo+xXX/PtN/37NdjRR9ZfYPYrucd9iuv+fab/v2aPsV1/wA+03/fs12NFH1l9g9iu5x32K6/59pv+/Zo+xXX/PtN/wB+zXY0UfWX2D2K7nHfYrr/AJ9pv+/Zo+xXX/PtN/37NdjRR9ZfYPYrucd9iuv+fab/AL9mrVmdQspAyW85TPzIUOD/APX966eik8Q2rNDVK2zK6XkJjDyEwZJAWb5D+tL9ttf+fmH/AL+CpJYkmjaORQyMMEGud1DR5LbMkO6SEDJz1X/GohGEnZuxUnKJvfbbX/n5h/7+Cj7ba/8APzD/AN/BXHUVv9WXcy9s+x2P221/5+Yf+/go+22v/PzD/wB/BXHUUfVl3D2z7HY/bbX/AJ+Yf+/go+22v/PzD/38FcdRR9WXcPbPsdj9ttf+fmH/AL+Cj7ba/wDPzD/38FcdRR9WXcPbPsdj9ttf+fmH/v4KPttr/wA/MP8A38FcdRR9WXcPbPsde91ZSIUee3ZT1DOpFZ1zYaZMS0d1FEx9HBX8qwaKcaPLsxOpfdFie0aAZ86CRcdY5Af060n2K6/59pv+/ZqCpoLu4tj+5lZBnOAePy6Vt71tCNBfsV1/z7Tf9+zR9iuv+fab/v2a1IPEBzi4hGM/ejPT8D/jWtb3lvdZ8mVWI6jofyNYSqzjujRQi9mcr9iuv+fab/v2aPsV1/z7Tf8Afs12NFR9ZfYr2K7nHfYrr/n2m/79mj7Fdf8APtN/37NdjRR9ZfYPYrucd9iuv+fab/v2aPsV1/z7Tf8Afs12NFH1l9g9iu5x32K6/wCfab/v2aPsV1/z7Tf9+zXY0UfWX2D2K7nLwvqsGPLW5AAwAUJAH0Iq/DqeoKuJbCSQ4GCEK/nwa2aKiVVS3iUoNbMqx36vndb3MeP70J5/LNTyTRQ482VEz03MBmn0Vk2i9SD7ba/8/MP/AH8FH221/wCfmH/v4KZJptlLjdboMf3fl/lVGTw9EceVO6+u4Bv8KtKm92S3PsaP221/5+Yf+/go+22v/PzD/wB/BWBJod6mNqpJn+63T88VRkhlhx5sTpnpuUjNbKjCW0iHUkt0db9ttf8An5h/7+Cj7ba/8/MP/fwVx1FV9WXcn2z7HY/bbX/n5h/7+Cj7ba/8/MP/AH8FcdRR9WXcPbPsdj9ttf8An5h/7+Co5JdOlbdJJau2MZYqa5Kij6ul1D2r7HRS2mjyBsSxIxOcpKOPoM4qrJpdiW/d6jGq46Myt/UVj0VapyX2iXNPoXH08qhIu7RyP4VmGT+dVpI2ibaxUnGflYN/KmUVok+rJdif7Fdf8+03/fs0fYrr/n2m/wC/ZqOOWSJt0cjI2MZU4qxHql7Eu1bhiM5+bDfzpPn6AuXqdbRXD0Vz/VvM19t5HcUVw9FH1bzD23kdxRXEojyOERWZj0CjJq5DpF7NtPlbFPdzjH4df0pOglvIaqt7I6qisOHw990zz/VUH9T/AIVeh0iyh2nyt7Du5zn8On6VlKMFs/wLTk+hcd0jQu7KqjqWOBVGbWbKLIDtIQcEIv8AU8VeREjQIiqqjoFGBTqlOK3Kd+hgzeIXORDAo54LnOR9B/jVGbVb2bIM7KM5AT5cfiOa6yitVVgtokOEn1OIZizFmJLE5JPekruKKv6z5Eex8zh6K7iij6z5B7HzOHoruKKPrPkHsfM4eiu4oo+s+Qex8zh6K7iij6z5B7HzOHoruKqz6laW2Q8ylhn5V5OR29vxprEN7RB0kt2cjSqpZgqglicADvWxPr8jZEESoORubk+x9v1rKmuJrht0sjOckjJ6Z9PSt4uT3VjJpLZl620S5mIMuIUxnLcn8v8AHFatto1rAQzAytj+Pp+X+Oa5iiolCcvtFKUV0O3VQqhVACgYAHalrh6Ky+reZftvI7iiuHoo+reYe28juKK4eij6t5h7byO4orh6KPq3mHtvI7iiuHoo+reYe28juKK4eij6t5h7byO4orh6kgt5bmTy4ULtjOBQ8NbqP23kdpWHqOs/fgtT7GUH88f4/wD66uafpUdniRjvmxyew+laFYpxjLuW02uxxDMWYsxJYnJJ70ldxRW31nyM/Y+Zw9FdxRR9Z8g9j5nD0V3FFH1nyD2PmcPRXcUUfWfIPY+Zw9FdxRR9Z8g9j5nD0V3FFH1nyD2PmcPRXcUUfWfIPY+Zw9FdxRR9Z8g9j5kFl/x4W/8A1yX+QqeuOvf+P+4/66t/M1BR9XvrcPa20sdxRXD0UfVvMPbeR3FFcPRR9W8w9t5HcUVw9FH1bzD23kdxRXD0UfVvMPbeR3FFcPRR9W8w9t5HcUVw9FH1bzD23kdxRXD0UfVvMPbeR0OoaMk2ZbYKjgf6sDAb/CsB0eNyjqysOoYYNNq3Y6jNYsdmGjY/Mh/p6GtoxlFb3M21J9ipRXY2t5DeRl4WzjqDwRU9ZPENaNGipX6nD0V3FFL6z5B7HzOHoruKKPrPkHsfM4eiu4oo+s+Qex8zh6K7iij6z5B7HzOHoruKKPrPkHsfM4eiu4oo+s+Qex8zlbfV7y3yPM8wHtJz+vWtW3123kyJlaE9j94fpWrRWcqkJfZLUZLqMjljlXdHIrrnGVOafTJIo5V2yRq65zhhmsyfQbdzmF2iOeh+Yf4/rWcVF7uxTbWxrUVyk+k3kB/1Rdc4zH82fw61SrdYdPaRm6rW6O4orh6Kf1bzF7byO4orh6KPq3mHtvI7iiuHoo+reYe28juKK4eij6t5h7byO4orh6KPq3mHtvI66TTbKXG63QY/u/L/ACqjJ4eiOPKndfXcA3+Fc/RVqlNbSJc4voaUmh3qY2qkmf7rdPzxVGSGWHHmxOmem5SM1HSqxVgykhgcgjtWqUluyHboJRVyHVb2HAE7MM5If5s/ieavQ+IXGBNAp55KHGB9D/jScprZfiNKL6mLRXUQ6zZS4BdoyTgB1/qOKuxyxyrujkV1zjKnNZOvJbxLVJPZnFUV3FFT9Z8h+x8zh6K7iij6z5B7HzOJRHkcIiszHoFGTVyHSL2bafK2Ke7nGPw6/pXUIiRoERVVR0CjAp1KWJfRDVFdTDh8PfdM8/1VB/U/4Veh0iyh2nyt7Du5zn8On6VeorKVWb3ZahFdBqIkaBEVVUdAowKdRRWZYUUUUAFFFFABRRRQAUUUUAFFFFABRRSMwVSzEBQMkntQAtFZ9zrFpACFfzXHZOn59KybnW7mYkRYhTGMLyfz/wAMVrGjOREqkUdFNcQ267pZFQYJGT1x6etZdzr0SErboZDj7zcD8up/SsF3eRy7szMepY5NNrojh4rfUydVvYt3Op3V0TukKqRjYnA/+v8AjVSiitkktEZNt7hRRRTAKKKKACiiigAooooAKKKKACiiigAooooAKKK2dO0UufMvEIXHyx5wT7n0qZzUVdjjFydkU7HTJr1s8xxY++R1+nrXS21rDaRhIkA45PdvqalVQqhVACgYAHalriqVXP0OmMFEKKKKyLCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA469/wCP+4/66t/M1BU97/x/3H/XVv5moK9OOyOJ7hRRRTAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAJIZpIJA8TsjDuDXR2Grx3fyS7YpeMAnhvp/hXMUVE6anuVGbidxRWBYa20f7u7LOvGHA5H19f51vKwZQykFSMgjvXDODg7M6YyUthaKKKgoKKKKACiiigAooooAKKKKACiiigAooooAKrz2NtcnMsKs2clhwT+IqxRTTa2Bq5g3OgMoLW8u70R+D+dZc9pcWx/fRMgzjJHH59K7KkZQylWAKkYIPeto4iS31MnST2OIorqLnR7ScEqnlOe6dPy6Vk3OiXMJJixMmM5Xg/l/hmuiNaEjKVOSM2inOjxuUdWVh1DDBptakBRRRQAUUUUAFFFFABRRRQAUUUUAFKrFWDKSGByCO1JRQBch1W9hwBOzDOSH+bP4nmr0PiFxgTQKeeShxgfQ/41i0VDpQe6KU5LqdRDrNlLgF2jJOAHX+o4q7HLHKu6ORXXOMqc1xVKrFWDKSGByCO1ZPDLoy1WfUSiiiugyCiiigAooooAKKKKACiiigAooooAKKfHFJK22ONnbGcKM1pwaDcOMzOsQx0HzH/D9amU4x3Y1FvYyas21hc3RHlxNtP8Z4X866KDSbOAf6oO2MZk+bP4dKu1hLE/yo1VHuYttoCqQ1xLu9UTgfnWpBaW9sP3MSocYyBz+fWpqK55VJS3ZqopbBRRRUFBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFMmmjgjLyuqKO5NV77UYbFRvy0jD5UH9fQVzN1eTXkgeZs46AcAVtTouer2M51FEt3+ryXfyRbooucgHlvr/AIVm0UV2xioqyOdtvVhRRRTEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAdjZf8eFv/wBcl/kKnqCy/wCPC3/65L/IVPXmS3Z2LYKKKKQwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqV9pkN6ueI5c/fA6/X1q7RTUnF3Qmk9Gcbc2s1pIUlQjng9m+hqGu0nt4rmPy5kDrnODXN6hpUlnmRTvhzwe4+tdtOspaPc5502tUZ9FFFbGYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAEkNxNbtuikZDkE4PXHr61qW2vSoAtwgkGfvLwfy6H9Kx6KmUIy3Q1JrY6221O1ugNsgVicbH4P/wBf8Kt1w9W4NSu7bASZiox8rcjA7e34Vzyw38rNY1u51tFY8GvxtgTxMh4G5eR7n2/WtSG4huF3RSK4wCcHpn19KwlCUd0aqSexJRRRUFBRRRQAUUUUAFFFFABRRRQAUUUUAcPRRRXqHEFFFFABRRRQAUUVNBaXFyf3MTOM4yBx+fShtLcLXIaK24PD5zm4mGM/djHX8T/hWtb2dva58mJVJ6nqfzNYyxEVtqaKk3uc5b6ReXGT5flgd5OP061q2+hW8eTMzTHsPuj9K1aK55V5y8jVU4oZHFHEu2ONUXOcKMU+iisTQKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKZLKkMbSSMFRRkk0APrI1DWUhzFbFXcj/AFgOQv8AjVHUNYkucxw7o4SMHPVv8KzK66dDrIwnV6RHO7yOXdmZj1LHJptFFdJiFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB2Nl/x4W//AFyX+QqeoLL/AI8Lf/rkv8hU9eZLdnYtgooopDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDD1HRvvz2o9zEB+eP8P8A9VYjKVYqwIYHBB7V29UL/S4rxWdQEnxw/r7GumnXtpIxnSvqjlqKlubaS1mMUq4Yd+xHqKirrTvqjAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKVWKsGUkMDkEdqSigDSttbuYSBLiZMYw3B/P8AxzWrbazazkKxMTY/j6fn/jiuYorKVGEi1Ukjt1YMoZSCpGQR3pa4yC5mtn3QyMh746H6itS2191IW5jDLj7ycH8v/wBVYSw8ltqaqqnub9FVra/troDy5V3H+A8N+VWawaa0ZonfYKKKKQwooooAKKKKAOHoruKK6vrPkYex8zh6K6y51S0tiVaTc4/hQZP+FZVzr0zki3RY17MeW/wrSNSctokuEV1MpEeRwiKzMegUZNaNtodzMA0hWJT68t+VUJppJ5C8rs7HuTUdaNSa0diFZbnUwaPZwHPlmRs9ZDn9OlX64eisXQct5GiqpbI7iiuHoqfq3mP23kdxRXD0UfVvMPbeR3FFcPRR9W8w9t5HcUVw9FH1bzD23kdxRXD0UfVvMPbeR3FFcPRR9W8w9t5HcUVw9FH1bzD23kdxRXD0UfVvMPbeR3FFcPRR9W8w9t5HcUVw9FH1bzD23kdxRXD0UfVvMPbeR3FFcPWrp2jvcbJp/lhPIXu3+A/z71MqCirtlKo27JGzeX0NlGWdgXx8qA8n/wCt71zV7eyXs29+FH3UHRRXWRRJDGscahUUYAFPqKdSMOg5Qcupw9FdxRWv1nyI9j5nD0V3FFH1nyD2PmcPRXcUUfWfIPY+Zw9FdxRR9Z8g9j5nD0V3FFH1nyD2PmcPRXcUUfWfIPY+Zw9FdxRR9Z8g9j5nD0V3FFH1nyD2PmcPRXcUUfWfIPY+Zw9FdxRR9Z8g9j5nD0V3FFH1nyD2PmcPRXcUUfWfIPY+Zw9FdxRR9Z8g9j5kFl/x4W//AFyX+QqeuOvf+P8AuP8Arq38zUFH1e+tw9rbSx3FFcPRR9W8w9t5HcUVw9FH1bzD23kdxRXD0UfVvMPbeR3FFcPRR9W8w9t5HcUVw9FH1bzD23kdxRXD0UfVvMPbeR3FFcPRR9W8w9t5HcUVw9FH1bzD23kdxRXD0UfVvMPbeR3FFcPRR9W8w9t5HcUVw9FH1bzD23kdxRXD0UfVvMPbeR2dzbR3UJilXKnv3B9RXN3+ly2bM6gvBnh/T2NUKVWKsGUkMDkEdq0p0pQ2ZMpqXQSit7T9bDYiuz8xPEmAB+PpW1SnWcHZocaakrpnD0V3FFR9Z8h+x8zh6K7iij6z5B7HzOHoruKKPrPkHsfM4eiu4oo+s+Qex8zh6K7iij6z5B7HzOHoruKKPrPkHsfM4eiu4oo+s+Qex8zh6K7iij6z5B7HzOHoruKKPrPkHsfM4eiu4oo+s+Qex8zh6K7iij6z5B7HzOHq5bapd2wCrJuQfwuMj/GusopPEJ6OI1Sa2ZkW2vQuALhGjbuw5X/GtSGaOeMPE6up7g0+muiSIUdVZT1DDIrGTi9lY0Sa3Y6isufQraQZiLRNjjB3D9f8ayp9HvIBnyxIuOsZz+nWrjThL7RLlJdDqaK4eitPq3mR7byN+519FBW2jLNn7z8D8v8A9VZVzqFzdArLKdmfuLwP/r/jVWit40ox2Rm5ye4UUUVZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU+KJ5pFjjUs7HAAqW0s5r2QpEBwMlj0FdNZafDZJ8gzIRhnPU/4VlUqqHqXCDkVNO0dLfZNP80w5C9l/wAT/n3rVoorilJyd2dKikrIKKKKkYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAcde/8f9x/11b+ZqCp73/j/uP+urfzNQV6cdkcT3CiiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVoafqslniNhvhzyO4+lZ9FKUVJWY02ndHaQXEVzH5kLh1zjIqSuNtrqa0kDxORzyOzfUV01hqMd8hwNki9UJzx6j1riqUXDVbHRCopaFyiiisTQKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAhntLe5H76JXOMZI5/PrWTceH+htpfqJP8R/hW5RVxqSjsyXBPc4eiiivROQKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopVUswVQSxOAB3oAStPT9HkucSTbo4SMjHVv8ACrunaMIj5t0FdscJ1A+vqa2K5qlfpE2hS6yGRRJDGscahUUYAFPoorkNwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDjr3/j/uP+urfzNQVPe/8f8Acf8AXVv5moK9OOyOJ7hRRRTAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAClVirBlJDA5BHakooA6Cw1tZP3d2VRuMOBwfr6fyrYrh60rDV5LT5Jd0sXGATyv0/wrmqUOsTaFXpI6aimQzRzxh4nV1PcGn1yG4UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBw9FFFeocQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFaVhpEl388u6KLjBI5b6f40pSUVdjSb0RUtbOa8kKQrnHUngCumsdOhsVOzLSMPmc/09BViGGOCMJEioo7AU+uKpWc9FsdEKaiFFFFYmgUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAcde/8f9x/11b+ZqCp73/j/uP+urfzNQV6cdkcT3CiiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBPa3k1nIXhbGeoPINdPZahDep8hxIBlkPUf41yNOR3jcOjMrDoVODWdSkp+pcJuJ21FZGn6yk2Irkqjgf6wnAb/Ct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FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB2Nl/x4W//AFyX+QqeoLL/AI8Lf/rkv8hU9eZLdnYtgooopDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCre6fDep84xIBhXHUf41zN3ZzWUgSUDkZDDoa7CmSxJNG0cihkYYINbU6zhp0M501I4qitPUNHktsyQ7pIQMnPVf8azK7YyUldHO007MKKKKYgooooAKKKKACiiigAooooAKKKKACiiigDuKKKK8s7QooooAKKKKACiiigAooooAKKKKACimTTRwRl5XVFHcmua1DVZLzMajZDngdz9a0p03N6ESmol7UNbC5itD8wPMmAR+HrWEzFmLMSWJySe9JRXdCCgrI5pSctwoooqhBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHY2X/AB4W/wD1yX+QqeoLL/jwt/8Arkv8hU9eZLdnYtgooopDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKx9R0YSnzbUKjY5ToD9PQ1sUVUZuLuhSipKzOIZSrFWBDA4IPakrrb7Tob5Rvysij5XH9fUVzN1ZzWcgSZcZ6Ecg13U6qn6nNODiQUUUVoQFFFFABRRRQAUUUUAFFFFABRRRQB3FFFFeWdoUUUUAFFFFABRRRQAUUUUAFVL7UYbFRvy0jD5UH9fQVSv8AW1j/AHdoVducuRwPp6/yrAZizFmJLE5JPeuinQb1kZTq20RNdXk15IHmbOOgHAFQUUV2JJaI527hRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFTW9rPdvsgiZyOuOg+p7UN23AhorYXw9OD+9mjVexXLc/pUM+jyRsdkqMoHJIx/jWftodyvZy7GbRT5InixvUjNMrRNPYlqwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB2Nl/x4W//XJf5Cp6gsv+PC3/AOuS/wAhU9eZLdnYtgooopDCiiigAooooAKKKKACiiigAoooAJ6UAFFKVIBJqNpVQgEHnvQA+imRypKMowNPoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApk0Mc8ZSVFdT2Ip9FAHM3+kSWnzxbpYuckDlfr/AI1m13FYuoaIGzLaD5ieY8gD8PSuunXvpIwnS6xMGilZSrFWBDA4IPakrpMQooooAKKKKACiiigAooooA7iiiivLO0KKKKACiiigAooqre6hDZJ85zIRlUHU/wCFNJt2Qm0tWTyypDG0kjBUUZJNc5qOrPdHy4S0cOOexb6+3tVW7vJr2QPKRwMBR0FV67KdFR1e5zzqX0QUUUVuZhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQSACScAdTUfnw/wDPVP8AvoUXCxJRSKwYZUgj1BpaACiiigB6eUoaS4cpCgyxA5Poo9z/AIntUN74kuZFNvYk2tqvChOHI9z6/T171Qvrhncwhv3anOB3Pr/n39ap1w1puUrdEdNONlcfLLJPIZJZHkc9Wc5J/GljnmhDCKV4w3XaxGajorE0NGPV58/vwJR64ANWEuI2IAYHPQ1jUoJAIHerhNwd0TKKktTTa+iViMMcHGRij+0Iv7r/AJD/ABrz27g+zXckOchTwfbqKhro9syPZRPSP7Qi/uv+Q/xo/tCL+6/5D/GvN6KftmHsonpH9oRf3X/If40f2hF/df8AIf415vTXbZGz4ztBOKXtmHsok954w1Y31wbW+xb+Y3lDyU+7njqM9Kg/4TDXv+f7/wAgp/8AE1h0Vz+0n3L5Y9jc/wCEw17/AJ/v/IKf/E0f8Jhr3/P9/wCQU/8Aiaw6KPaT7hyx7G5/wmGvf8/3/kFP/iaP+Ew17/n+/wDIKf8AxNYdFHtJ9w5Y9jqE+IviuONUTVcKoAA+zxdP++ad/wALI8Wf9Bb/AMl4v/ia5WioKOq/4WR4s/6C3/kvF/8AE0f8LI8Wf9Bb/wAl4v8A4muVooA6r/hZHiz/AKC3/kvF/wDE0f8ACyPFn/QW/wDJeL/4muVooA+jrXxXpF1aQ3C3DIJY1cK8bZXIzg4BGfoal/4STSf+fv8A8hv/AIV4JatvtozjHGPy4qatFFCPdf8AhJNJ/wCfv/yG/wDhR/wkmk/8/f8A5Df/AArwqijlQHuv/CSaT/z9/wDkN/8ACj/hJNJ/5+//ACG/+FeHR3E0S7Y5pEGc4ViKsW0t5dXUNul1KHldUUtIcZJxzT5Yge8m4iEfmCRdm3fvz8u31z6Vzt/4wEThNPjSQDGZZAcH1AHB9Ofrx3rF1S+cRppkUjm3tlWMsxy0hUY+Y+2P6+lZVZDL0us6nNIXe+nBPUI5UfkOKjOpXx63tyfrK3+NVaKANGDWruJgXcyY6HOGHHqP612Oi6smpW+C485Oo6Ej1x/n9RXntaWhXxsNWhfIEbny5MkAbT3z7HB/CgD0SiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigClfaZDerniOXP3wOv19a5q5tZrSQpKhHPB7N9DXZVHPbxXMflzIHXOcGtqdZx0exnOmpao4uir9/pctmzOoLwZ4f09jVCu2MlJXRztNOzCiiimIKKKKACiiigDuKKKK8s7QooooAKKZLKkMbSSMFRRkk1z+o6w9xvhg+WE8Fu7f4D/PtVwpub0JlNR3Luo6wLdmggAaQDBfsp/qa593eRy7szMepY5NNoruhTUFoc0pOW4UUUVZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZmt3kdtYuhlEcjAFemTgjgZ/L2zmuSjvdTmfbAzynGcJEGOPwFdZrGixapGXB2XKrhHJOMDPBHpz16/wAq4tWudNvcHdDPE34g/wBR/Ouerfmu9jem1ayLkmq6hbFY54FR8Z/eRlSR69aI9enV8vEhA6bSVIP611WkavHqcODhJ1Hzp6+49v5VpU1TvqmJ1LaNHFf8JNN/zzf/AL/H/CrVt4keQpEqTtK7YCKA5JPAA7muh/syw/58bb/v0v8AhXMeMdf07wpbwfY7ezXV5JF8k+UCbdTkGYjhTg4ChiBuOedpFKalBczY4yUnax0d/eeHPC7QHxPfN9vuYjLHp8Sku3XgleBk8AkquQeSASMSf442Vq6x6T4YJtZj+7aS4WBi3QhlCMAc/wC0eME46DxfzJluZLi+895ncmWbJ37zzuDHgk9c5ye/HXSudFuv+EX/ALYkktkSR1dE3FmJI2n2ByAcDtnONuK4HNyeh1ciive3PT5/jmZVszbeGnladHbabwKVK9R9znp/Krtn4/8ACPiFC7GWwldmK/a4vKyO7FxlMZyOT1GO4z5BqlpZ6Np1tqFprUF/K5C+QFCPGrAsWIV8g5AB+tV/nksIbuWzEMEkXl28si5iQAnOCAfmyp4POB75pc0luhqMJbOx7td2Rt3Owl1+nIrLvNStNP2fapfL352/KTnHXoPeuD8JeMb+zumtbgT3OmysiRrjdJDxgFVH8OF+4Og5XODm14jvI73V2eCSOWFUVY3jbIYYz1HB5Jq07mbTRf1bVbK5uleGbcoQDO1hzk+oqh9tt/8Anp/46ayaKtSaEa3223/56f8Ajpo+22//AD0/8dNZNFHOwNb7bb/89P8Ax01HPeRNA6o+WIxjBrNoo5mAUUUVIBRRRQAUUUUAFFFFABRRRQAUUUUAaWnXccGzzJNpV8gkHgfgK25fE4R9qSQyDA+YRuBnv1rkqKtTaA6k+JY5CBPHDIgOduw/1zS/8JBp3/PjD+X/ANjXK0Ue0YrHUjV9FkJaW2ZWJ6JnH9KntNe0exuUubZJklTO1sE4yMdz71x9FHOx2O/h1/TZ+EuDuxkgo3H6VvaFYPr7M1q4ECMFeVlIGfQccnHOPpnGRXmGji3fWbNLt9lu8ypI+4LsUnBbJ4GM5/Cuh8Y/EuWBToPg1mt9PtkKyXtuoYyE5XEZ6hc5zIMktyDxlk5JLVAk27I9Hub3wT4WkEWrapateI4V45G8x0LLnLRrnauDnLDAyOeRXLXvxx0u2jig0jw7dsAruyXLpbBQBngKHzn5vT8c14pplvJJfRWttCTeMGKBQuHBXOCSce49PQ5rXHh+VNfj0W71W3tXa3EaGMGX6RnOMMev4gDqKy5m9kacsUtWemr8X9LvHn/tXQpVEcAnja3YXGUJ2k/Oqbex75GemKt6fquheIt39i3hM6RLJJbOpDKCBwCeDjPOCwBI55FeM6tItnr91pMUaXzELCGg3As2Ado+Zj3KkfXpTZbxbW4WYeZ56z7yhZldGUjCAAgpggAnjkZGeMLmknqiuSDV4s+vlYMoZSCpGQQeCKWvIPhd8QZDp0mj62Zpb2AeZEyjcWi4GSxOCQcc985yTurubnxnbw/MlsxjA5aWQJg/rWqi3qjF6HTUVxzePrYoQkcAbHBNwCAfpiqUnxBaJtrPaE4z8qM38jVcjC531FecXHxBkkUGO4jjKg8Rwn5v++s/0rLh8ZmC/N4r3RlZtz5+6/sRnBHp6dsUcjFc9bopsbF4kdkaNmAJRsZX2OCRn6GnVAwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooARlDKVYAqRgg96xNR0b789qPcxAfnj/D/APVW5RVwm4O6JlFSWpxDKVYqwIYHBB7UldTf6XFeKzqAk+OH9fY1zdzbSWsxilXDDv2I9RXbTqqfqc0oOJFRRRWhIUUUUAdxRRRXlnaFVby+hsoyzsC+PlQHk/8A1vequo6ulurRQMGnzgnsn+JrnpZXmkaSRizsckmuilRctZbGU6ltET3l9NeyFnYhM/KgPA/+v71VoorsSSVkc7d9wooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArM1jR4tUhyMJcIPkk/ofb+X89OihpNWYJtO6PN1a5029wd0M8TfiD/UfzrttI1ePU4cHCTqPnT19x7fypNY0eLVIcjCXCD5JP6H2/l/Pila5029wd0M8TfiD/UfzrDWm/I30qLzPSK8R8e3U0vxBvw+5jaRRJBtjDFFKAkY7jMjH1r1zSNXj1OHBwk6j509fce38q8r+J+lyWvi2K6j4i1ONSzSOu3zEG0jnphSvXuTg+k4n3qWgUPdqamTYaTb+IJ2tS72yIqeX5YAVWfktt9M44z+NYSAs6wiaNYpOd77TsUHqRyQeOg5PvnmxGZw7I0/kRTqI3kCYUkDofrjn6+hrPuoY4nUxSec4yHwvyggnG0554AOcDrXDHY6al+Z3JCyKgRLhw0ilXVkCr24zuOc47gYIH1DrO8FpJFBdRST2Ky75bUsyqeMEgAj58dDTI1ilZY5J440UE5CDOAMkY6k8YA6fTrT7axnv7s29hb+bI3EcbSDJ7Z5xnHX8CTwDVEFpXtJL5oLW4JhICQSXEOXVWBO3GcZBJUkcHr0roFUKoUZwBgZOabqGj2ujeIYbS0bd5NggnYEndKWOSQSduRg4p9JKxUpNpBRRRVEhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFZUdikM6W8SoJGlxEwiIZAeT82cMAM8fga1azNRaWG8tZonSM5IEjLwpPGSf89KmUblwly3GaxpZ0S9SW1vZpJDtkcgcwFslQXB+8QCcYBx61QkhRmd7u9/fNJ+8BBdzkAlicY6k5Gc5qDUUb78l0012srJIDk4C4CkMeueR7bfpSRKHiKmSBUcp88jDcuT2H3vrgH/FkDZlkt54XSdj5WDBIsh+UZJG3oRznsOc1oz3VpcWdpdvPP/abO8V35xZy65+Rw544GB1B4GB3qnFaC4mWK38ydhHu2xJ87tjooJyeTg46AFscGtzVtFttFs9NtpoY21Uj7VcmRz5caZwsZHQgscE5J4POCKT21KjfmViPR3W61/SbKExfajdJawkEsiq7bTkg88uTuA69jnj2q1+GGoPKRd39rFHjhog0hz6YIXjr3ryzwDoI1D4i6PFDbND5Uy3bOMyhEjIcNkYGGK7MnoWGO2fqOnTdo6Dq/Ezzr/hVn/UZ/wDJX/7Oq2q+DNG0WwAub66mvWBICFUXH94ggkAfXnH5dxrmuQ6PbEkq1wwyiE8Af3m9v5/mR5Ne3t94i1QW9uJJ5ZnwAOsh9fYD8gB7caxu9WZmdPBE10sFkJZmJ2j+Isx6BQBz/WvSNA+HljDYB9ah8+6kwTGJGCxD0ypGT6np6ep1vDHhK00C2R5Fjn1A8vOVzsOMYTPQckZ6nv2A6KlKXYYUUUVABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFRXNtHdQmKVcqe/cH1FS0UJ21QHKX2mTWTZ5kix98Dp9fSqVduyhlKsAVIwQe9YWoaIVzLaD5QOY8kn8PWuynXvpI550raoxaKKK6DI7Z3SNC7sqqOpY4FYGoay82YrYsiA/6wHBb/Cqd7qE16/znEYOVQdB/jVSuenQUdZbms6l9EFFFFdBkFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVmaxo8WqQ5GEuEHySf0Pt/L+enQGiT55n2xry2Op9h6n/AD0pStbUcb30OO0Pw3rd3eSPbRi2W1YiS4mbYkZxnk9+PQHgjPBrs9S0rwnc6atlrk51Z4mV8Q7owXHRlKEYIB5+b1+lZl/qU18wUkx26/6uBT8q/wCJ5PPvVKvPc3stjrt1ZqLZ+BE0xtPXw2jQFGjzLCryYP8A00Zi+fQ5yMDGMCsmX4dfD68kiS1tZIpA+SFuZQHGCNp3k9yDxg5A7ZBdRUWG3c4fxx8NLmxuDf6PHPfRPzcQqS0isT1Gcs2c5PUjk9OnKyxJpviGC58OyvJEEWRHnjKlT0IO7GQeORjhsV7Vb3stuCoO5CMbT0H09K5TxP4Kj1e7jvNH+z29xK7NOsmVVyRjOQGwc4JGPm65B5KafQceX7R59FfzsZZrpjPczPvkkJxk4Ax06DHA7VL/AGh/0y/8e/8ArVqeJvCSeFYLFBeNcvNvBOzaqhQgGASTk5JPOPQCueqnFx0YuZS1Rd/tD/pl/wCPf/Wo/tD/AKZf+Pf/AFqpUUgLv9of9Mv/AB7/AOtR/aH/AEy/8e/+tVKigC7/AGh/0y/8e/8ArUf2h/0y/wDHv/rVSAJOAMk1r+TF/wA80/75FAFX+0P+mX/j3/1qP7Q/6Zf+Pf8A1qteTF/zzT/vkUjW8LDBjX8BigCt/aH/AEy/8e/+tR/aH/TL/wAe/wDrVN9kg/ufqaPskH9z9TQBD/aH/TL/AMe/+tR/aH/TL/x7/wCtU32SD+5+po+yQf3P1NAEP9of9Mv/AB7/AOtR/aH/AEy/8e/+tU32SD+5+po+yQf3P1NAEP8AaH/TL/x7/wCtR/aH/TL/AMe/+tU32SD+5+po+yQf3P1NAEP9of8ATL/x7/61H9of9Mv/AB7/AOtU32SD+5+po+yQf3P1NAEP9of9Mv8Ax7/61H9of9Mv/Hv/AK1TfZIP7n6ms+VdkrrjABOB7UAWv7Q/6Zf+Pf8A1qP7Q/6Zf+Pf/WqlRQBd/tD/AKZf+Pf/AFqP7Q/6Zf8Aj3/1qpUUAXf7Q/6Zf+Pf/WqrqV351hKggBJxjJzjn6Uyuh8I+Ef+EzvL/TUufs9xHZtPA5+6XDoAG77SGPI5HB5xggHK6A+nx6kJNWUvbbThCWUh88crz613ui/Cu98Va0lxZ3Eo0SUCSW/ncMXO4h1Qj77ZBOcAdjz13/CXwfOjavLf+K5beSys2UxQROXjnbaPmbIB2gnG3GWOQfl+93F/4ldrdbLTI/sdnGqqgQbGAA6DHCjpwPT8KQ9DL0r4SeE/CV/b6jfavdT3UBdhG7qisrblHyKN/AbqDyRngcVfm8O/DqS6kuWtA80rFnkd7gsSRjqTwMAYHQdsVi0UNJ7gm1qjd8N6X4S8NXt3caMkaSzjBaVmyicfIhboC3zEckk+gUDf1TxFb2FgZo/nkYfICPlHuT0x+PP8uDp28mF4HAeFwQ0bcqff68Dn2pqyEYl7e33iLVBb24knlmfAA6yH19gPyAHtx6f4W8LW/h203NtlvpR+9mA6f7K/7P8APqewFTwPpWm2NjJNbHzLxyRKz/eRc8KPbABz3P0wOrqpSuAUUUVIBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZ+oaVHeZkU7JscHsfrXNz28ttJ5cyFGxnBrtKgurOG8jCTLnHQjgit6dZx0exnOmnqjjqKKK7TmCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACijPOO9FABRRRQAUUUUAFUrhLm7uDb28c0u0BmSNS344H1/Wrcs1vaWk97e3CW1lbrvnnk6IP5kk8ADkngVwesfGCb7O9p4Ps104McNeXSK07Hg8qcqvO4HO7g8ba5sRNJcptRi27nfw+DtVkjLSeRCQcbZJMk+/ygirU3g0xxkrfhnx8oMWAT9c14IniTxdc3dtc3vifVU+1SP5sRvZIArdgqhhxk8AADsOBWJp+tappNpiz1W7tc/K/kXDR52kgZ2nn/AOvXEpJ7HTKEoq7PoG68P31sAcJLwSfLbJH54/Ss10eNykiMjDqGGCK8y0v4p+J9KCrJeJfRBSAt4u88kHO4EMT16kjH4V6HoPjzSfFgNpNCbTUCu4RSMCG5/gbjJxg4wOvcA1RJYpssxggkkxnapOM9cVPeJFZAtLMqx9i38vc1nS6jpksTxtcth1KnCN3/AAqlFvUDOutZt77Z9s02K42Z2+cQ+3PXGV46Cq/2nSv+gDZf98L/APE1OU0SEh/NuJ+fuAY/oP50v2jRP+fOf8z/APFVsIr/AGnSv+gDZf8AfC//ABNH2nSv+gDZf98L/wDE1P8A2hpsDHyNNDqRyZW5z+OaX+17T/oFQfp/8TSAr/adK/6ANl/3wv8A8TR9p0r/AKANl/3wv/xNTrr88Y2w29ukYJ2qFPA/A1PFq99PCzD7PHnKqcHJOOwz2pgZd9caalpOo0O1ik2lQwjUMjdM/d6g1zFa+pBoYCjrgsQP6/0rIrKe4woooqACiiigAooooAKKKKACiiigAooooAK6HS7jTl0+NZtJtbiVSQ0jopJ5z3X0Irnq0dObMbpjoc5+v/6qqG4G59p0r/oA2X/fC/8AxNH2nSv+gDZf98L/APE1QorW4i/9p0r/AKANl/3wv/xNH2nSv+gDZf8AfC//ABNUKKLgX/tOlf8AQBsv++F/+JqzY61b6ZMZrDTorSVl2F4CI2K5BxkDpwPyrHoouB3h1yfVtKtVkyAMs+7klgSAc9+P5nrVeqmmxmPToFOMld3Huc/1rVsNOudSmMdtHuxjcxOAo9Sf8msXuMq1q2vhvVrrBWzeNd20tL8mPfB5x9BWjqGteF/h7bJLf3Am1B9pSBNrXDA5BKpkbV4fkkDjGScCvNfEXxr8R6kYYtDhi0hGdF8zaLh2c7uCzDaFIxxsJyOvOKluw0m9EejnwXqKnBmtf++2/wDiap3XhzULVC21JQM7vLbJH4HGfwrxfVfFnjG51OS4l8S6mG89I/Kt7kqpAABbEe1VHHI2g8888mO28feK7C4aWHXr2RmXaRcSeeuPo+QDx160KSewSi47nt3h+7l07WUhkV1WYiN0IIOT904+v6E13tfPOl/F2aZootcskmChdlzZ4SVSBncQTjJIXoVA547V6Y/xAT7NBdQzWktrcAtFIqOcgdc4PBGeQeRVJXEd1RXnsnxD3xlVmhjJ/iWF8j88iqH/AAsO5/57T/8AfmOq5GFz1GivKLnx5czICJbksvQDEYP1K1U/4Te+/vXP/gS3+FHJ5iuexUV4w3iO/wBSuEWOPfJjBaZy+B9eMCvQfBOoXN9pE0d4yedbzGMKvZNoI98Z3Y+ntQ42VxnTUUUVABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHD0UUV6hxBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFVr+8WwspLl1LBMcD3IH9as1Fc28d3bSW8oykilT7e496HtoC31OY/tmyuJ0uZZJEmjPyZzx+A4q7/wk9t/z1T/AL4asvV/Db2UTXFq7Swr95WHzKPXjqP5VgqMnGcVyuUoux0pRkjuU12AgMZrfaRnG/B/U1Iut2zMFV4iScACUc1ythoVxqMJkgnt/lOGVmIZfrxU83hXUokDJ5Mpzjaj4P15AqlKpa5LULnVrqCHO5GH0Oad9vi/uv8AkP8AGuL/AOEc1b/n0/8AIif41keJLLU9L0S7ZoHjDxiN3zlArsFOWBwOveh1JpXaDkgyhr3iyXxTfSwxqrWUDH7Nb7ivmdR5hyPmcg8ZxtDYHzEmuektbiST7PFHPJc3Dj7NAwIkHBJ3f7IzwT2z0AphvLZgvlNa/ZwQY4ncmSEsecMoHAJ7EfjXSeHrq28P+GrrxTeIJJrpvKt4lIHygkBRwMZIJPXhQcZrzm5Tm2zu92nTSW7ObjadNWtdO1N3igEgikCuF8rnaSGIIwpzz04ODjmrOqaTpUHiGHT01J5bMr80zyh/Lc7sDOMAZxn6nkds7Vru41jVFuXhY3s6r5scYyobsFwTj5QuQTkHdmqcsRSTyswblQnckhO7qec8A47cdhjOauyMLs2Nb8NXOk4lleNoEPzYiCHnvgdRn3NYke1JcCTnqozyP/r8VoXuuX8+mf2LM8iwxbV2SgGRCvVc4B257HoABnjnNghCtE0ocxBtvmbcgev44oC9z1Twj4qOuWsmj6o++6EeI5WPMqj1z1Ydc98Z7EnW/wCEeP8Az8H/AL9//Xry62jNlrWnyW6rvE8ZwztuXknOOAccZyByBwRnPon9s3//AD3/APHF/wAK0ptSVwlFxdmQfYrv/n1m/wC/Zo+xXf8Az6zf9+zU/wDbN/8A89//ABxf8KP7Zv8A/nv/AOOL/hWuhJB9iu/+fWb/AL9mj7Fd/wDPrN/37NT/ANs3/wDz3/8AHF/wo/tm/wD+e/8A44v+FGgEcWnXMkoVoZUXuxjPAp88F3KwVbacRINqL5ZGB/ie9L/bN/8A89//ABxf8KP7Zv8A/nv/AOOL/hRoBk6yLlBCJ0kXOcb1xnH/AOusmruuagZr1GuZcuIwB8vbJ9BWX9rg/v8A6GspbjJ6Kg+1wf3/ANDR9rg/v/oakCeioPtcH9/9DR9rg/v/AKGgCeioPtcH9/8AQ0fa4P7/AOhoAnoqD7XB/f8A0NH2uD+/+hoAnoqD7XB/f/Q0fa4P7/6GgCeioPtcH9/9DR9rg/v/AKGgCetLRIXub3yEBw+NxC52jOM/Tmsb7XB/f/Q1f0jUTDqUbW0xWQgjgdRjvTjuB276bZCMwmO4G1iRIsbFm+pxj/Pvyw6DBLGGhlmQk/8ALRf6YBrP/tm//wCe/wD44v8AhR/bN/8A89//ABxf8K3uhF7/AIR0/wDP1/5D/wDr1HJ4fnDfu5kYY6sCv+NVf7Zv/wDnv/44v+FH9s3/APz3/wDHF/wo0An/ALAu/wC/D+Z/wqFtGvwxAhyAeoYc/rSf2zf/APPf/wAcX/Cj+2b/AP57/wDji/4UtAOjtIZFt4ImADhFU5IABx69Kt+L/E6eCfD6W2jSRSaveAHeRvMcZ483b0POFUEgEnPOGrkf7Zv/APnv/wCOL/hXFazNNNrV9PJ5EyyMiSpI4T+BcNk4HTjqDyfU5xq2irounHmdirezXl1M8l1NO12JRIZbolzMoULln+YnCj1wMkADiqbXNzZr50cJ+z3G9IpHT5ZQuN2Ae2cH0B47Yrd0CytruSe71F/L0fTTul81iwkk/u9wQOBjJJ+XrkYpeJ/E0fiUQNDBLAsLOkSMoO9CR8xOeDlVG3GOvzHoMYRe8jSpNL3Y9B02lzSeErfXptRXcz7YoHhBOQ5XAb6AnpxikXwxcT6Xa6jazxzK437Xh2/MM5Xd1POR2FYn2Of7OZXMUWF3qk0oR3XGcqp5PbFXtI8R3eiQSwQlZFmJ8y3nQlB0wwwQc9QenQdeMXZGV31MqVVUFuUcN84C5A9f1/pzW94d1o6dOltczP8A2dMwE2Bu2dP3ij1H6jIyM5HOGOSQySSO0m9ss23+I9/51pCwk+ygxQSSMyfJg7RydowDgn1z9O1F+Uai5ao+hrb4YwSiKYa151u+GzFAPnU8/K24jkdDg1o/8Ky0X/n6v/8Av4n/AMRUXwg1dtX+G2mmR2ea13Wrlv8AYPygfRCoruavmZJyVr8OdBt5S8gurlSMbJZcAe/ygHP496mn8F+FrWB5prEJGgyzGeTj/wAero554rWB5pnCRoMsx7V5p4p8UtcvtXIjH+qhJ/8AHm/z7DuaqKbAx9SuLXT/ADPsNuluZTlYwxbaPXJyT/jn6Vf+H1lqlxrYvrdylpESJ5HyRJkfdHPJ6H24J7A0PDXhq78UX7Sys6WaN++n7k/3V9/0A/AH2G0tLewtI7W1iWKCIbURe3/1/fvTlLoImooorMYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBw9FFFeocQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVxGu6E2nubi3Ba1Y/Uxn0Pt6H/J7ekZVdGR1DKwwQRkEVM4KSKjJxZ5zY301lcLLE2HHHPRh6Gu707UYdSt/Mj4YcOhPKn/D3rlNd0JtOc3FuC1qx+pjPofb0P8Ak09N1B7G7SdBkjhlzgMPSsIycHZm0oqauj0Ouc8eWb33gfVYY2VSsQmJbptRg5/HCnHvW5aXcN9brPA2VPUHqp9D71JLFHPC8M0ayRSKVdHGQwPBBB6iuhrmVjBaM+cngkiYhbswTuCgtnQDyyeGjG5iwABI9T0NVUhvv7MhuZpHSwSb7PFIz7kickM2FBJTpnIGTXRa7p8fh/ULzSrmaeMCRWjmbD+ZBgBeoHODgsMjIYAcVlwX8q2N1ZZZdMvZYvPndGdYyrAl1HfPy57ngY6V5OsZNM9GVpRTiZK+bE8iAFJOY2Urz7j19qI/K8tw6uWwNpUjGcjr3/8A1VZvtPFlr50s3UDoXQLc78RlXAKsT2GGBPXv1p9tqEkcKjyreUHq0sKs2MAYyeRjHFUZFKKea2vYLqJtksTBlfrgrgjr6VpR/b7jT7lvIU27P5rNsChW77cYHbGB09qpI8qOZAWV2BUn1BGCOOxBOfXNdVfa3Z6noltbaZCIfkEPkd4wOWJPQ9TzxnOeuaHoNK7sjEt5pIbm2abySvmRyyN8rSEbg2T/ABZ/z3rva8+vmRIjiRG24GyeHDpgZC+mOPTFeg06LumXWVpWCiiitjIKKKKACiiigDnNf/4/0/65D+ZrKrY8QRkXMUnG1k2j8D/9esespbjCiiikAUUUUAFFFFABRRRQAUUUUAFFFFABV7R/+QrD/wAC/wDQTVGtLQow+o7jnKIWGPy/rTW4HTUUUVqIKKKKACiiigArjdYI/tO4niuLNiHGYnhVpMqFB5Izjj16fWuyrjNXkje8uXaaBfnxlov3jbWxg+3GBjOQBnHbKte2hrStfUzok1EW1vbr50dpqEheBC7GOVlONu3JBO4AfMPTJxzVFAxGVXcADgH2H9Bz+FdNojXus6fb6Jby2cMttI89rLdAq+05yI8KRkHccnJzgjG3I5yzdwTcxOqGBlJzKqNyeNoJyfwBx3qTMAwZJWd3MhIIPXce+SaikR98ZwACpIx1Az3q21w4uTceTBuB/wBWIht6Yxt6VNZXUVvelr5pWtZSBdBAGaRd4fb1GMlRyCP6UAS+ddyWl7MtrFHazyb22rtVCSeE56dsc4xTPtEkMTubeRcRiFnDEAL3HTuf1rode1S2v2AtzGlnDtZ2VMoq4AVAB17ZHSsmLTJte1O00uxW3lvr+cIrxI20A9WY4bgDLN6DB57Zt3lY2imoOR7v8DdPlsvhyk0jIVvLuWePaTkKMR8++UP4Yr0aWVIIXlkO1EUsxxnAHJrP0LSrfw54csdMjaMQ2VusbSBBGGIHzOR2JOWPuTXH+KvFSzIYoiRbA/KvQzEdz6D/AD1wBvGNzEp+KfFLXL7VyIx/qoSf/Hm/z7DuawPDmiT+JtaEchl8gHdcTKB8o7DnjJxgfnjANN0fR7/xVqpjjO1BgyzEfLEv+PXA7/ma9j0rSrTRrBLOzj2RrySeWdu7Me5P+eKuUraIRPaWlvYWkdraxLFBENqIvb/6/v3qaiishhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBw9FFFeocQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIyq6MjqGVhggjIIridd0JtOc3FuC1qx+pjPofb0P+T29MljSaJ4pBlHUqwz1B61M4KSKjJxZwOl6pNp9x5kZyDw6E8OP8feu6tLuG+t1ngbKnqD1U+h964fWNHl0qfIy9u5+ST09j7/AM/5N0vU5tPn8yM5B4dD0Yf4+9Ywm4OzNpRU1dHSeK/DVr4m0eS2ljX7VGrNayk4Mb445wflPAIwePcAjxzUtMutJ1Sa0vbcR3RcRIC42GM5wyAYLAgHsBnOcHivfYZo7iFZYnDxsMhhUF/p1nqlqba+to54jn5XHQkEZB6g4J5HPNFagqqv1Jo1nTZ88/YbVLlLm3COkE6oPOG6OZgRx6kHnPrg46gVr+JfEcuu2dtHNpghmgchphKTj5RuGzAIydvXPT3ruNS+Fto0cX9lXr24imedYZhvUscbVDDlVHPOGPOecVz2p/DnxIvmSQra3CyTF/LjuMuMgdSyouBtHvzXH7CrF23Ol1aUldaMzvEPiGbWNMSySyt7KGGRV279+G6ADaPl4yOeuRiudikW1jaOSJSjHEicqzDqCp9uv4g813lz8M9fl+0BbrTSs8abgZHGHAHzDCe1dFpHwz0yyuPtOpTNqMoI2qybIxjHJXJLHIOcnac/dpxw9WeklYHWpw1huch4K8J3XiW9i1LUSx0q2lynnKrG4KscKOMFf7x6Hp1BI9Kl8K2Esryb503MW2oVAGewGOlblFd0KMYRsckqspO5gf8ACI2H/Pa5/wC+l/8Aiajm8MaZbxNJJcXCqo5Jdf8ACujrjPEmrfapvssLZhQ5bHc+lE1GK2HByk9zEZVkn2QK5DHCKeWP5V1cHhG1EKfaJ5jLj5vLIC59sim+F9KMSfb5lIdhiJWA+7/e/Hp9PrXS0qdNWuwnN3sjA/4RGw/57XP/AH0v/wATR/wiNh/z2uf++l/+JrforT2cexHPLueV/EHSLfSv7O8h5W8zzc7yD02+gHrXE17hr/hiy8R/Z/tktwnkbtvksBndjOcg+grF/wCFZaL/AM/V/wD9/E/+IrmqUJOV47GsaitqeU0V6t/wrLRf+fq//wC/if8AxFH/AArLRf8An6v/APv4n/xFR9XmV7WJ5TRXq3/CstF/5+r/AP7+J/8AEUf8Ky0X/n6v/wDv4n/xFH1eYe1ieU0V6t/wrLRf+fq//wC/if8AxFH/AArLRf8An6v/APv4n/xFH1eYe1ieU0V7rb/Bfw5LbRSNe6qGdAxxLH3H+5WX/wAKK/6mP/yR/wDtlYvQ0PHqK9h/4UV/1Mf/AJI//bKP+FFf9TH/AOSP/wBsoA8eor2H/hRX/Ux/+SP/ANso/wCFFf8AUx/+SP8A9soA8ertfhhoVr4g8S3NpdyTJGlm0gMRAOQ6DuDxya6z/hRX/Ux/+SP/ANsrp/BHw3i8HancX51N7yWWHyVAhEaqpYE55OT8q46Y5654AJv+FZaL/wA/V/8A9/E/+Io/4Vlov/P1f/8AfxP/AIiu0op8zA8v8U+A4tJ0v7bpj3U4jP79JNrYTH3hgDgd+vXPGDXI6WlhJqUKak80doxxI8ONy8cHkHvjPHTNe/V454z8Mf2BfiW1SQ6fPyjHkRtzlM/qM9vXBNVF30YHWx/DbQpY1kjvL50cBlZZUIYHoQdtO/4Vlov/AD9X/wD38T/4iqHgHxVuA0fUJ+RhbRn/APQCfyx+Wegr0Ok20Bxf/CstF/5+r/8A7+J/8RXm3xT8B/2P4gl8SWML/YLxg0zg7/IuWfliD91WzwfmwxI4yor32o54IrmCSCeJJYZVKSRyKGV1IwQQeCCO1S9dxp2dz5DnhhnhAYs0JISNy+6R36Fhk8A88dCBnj5aueG5ofC+qXM8lj9tYOsSypIN0YOc7V7sRg4zkY5xk17XrvwY0PUL6G80meTSJElLvFFGJIm3ElsKfuk8Dg7QBgLXnd98IvGFjBaWtvaw37IXlklt50VNxzjJkZWJHU/LjBAz1rJRlHY2c4T+LRnO2mq6enim81ePTppYWJeCOYqpSdiDliTgch8dcccZrN1y6Gq6m9/PFHFFLIFaOJwzArw3OME8Z/EV1C/Crxq24TaE3Mqy5S5t+oDcY3jjJ7YrptN+BWrT3UrazrVrb27TLI0dgjOZBn5hlguw4AwcN1yRxzXvXI9xLzPNtOhudRnhs9Hhd9QacQxwxHck24E7sEjGAMk/w/xYHNe7fDH4ef8ACG2T6tq8oOsTwlJFD/u7WLO4oOxORlj0zwOMlun8N+DNB8KQhdKsESYpte5f5ppBxnLHkAlQdowueQBWN4r8TQmB7WFwbcH95IOfMI5AX2yOvf6dahT10FObluVPFXipZkMURItgflXoZiO59B/nrgDktH0e/wDFWqmOM7UGDLMR8sS/49cDv+ZqvZ2V94j1cW9sheVznk/LGnqT2A/zya9p0bSbfRdLhsrdVwgG9wMeY+OWPXk/pwO1bSdlZGY7StKtNGsEs7OPZGvJJ5Z27sx7k/54q7RRWQwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOV/se//AOeH/j6/40f2Pf8A/PD/AMfX/Guqoro+szMvYxOV/se//wCeH/j6/wCNH9j3/wDzw/8AH1/xrqqKPrMw9jE5X+x7/wD54f8Aj6/40f2Pf/8APD/x9f8AGuqoo+szD2MTlf7Hv/8Anh/4+v8AjR/Y9/8A88P/AB9f8a6qij6zMPYxOV/se/8A+eH/AI+v+NH9j3//ADw/8fX/ABrqqKPrMw9jE5X+x7//AJ4f+Pr/AI0f2Pf/APPD/wAfX/Guqoo+szD2MTlf7Hv/APnh/wCPr/jR/Y9//wA8P/H1/wAa6qij6zMPYxOV/se//wCeH/j6/wCNH9j3/wDzw/8AH1/xrqqKPrMw9jE5X+x7/wD54f8Aj6/40f2Pf/8APD/x9f8AGuqoo+szD2MTlf7Hv/8Anh/4+v8AjR/Y9/8A88P/AB9f8a6qij6zMPYxOV/se/8A+eH/AI+v+NH9j3//ADw/8fX/ABrqqKPrMw9jE5X+x7//AJ4f+Pr/AI0f2Pf/APPD/wAfX/Guqoo+szD2MTlf7Hv/APnh/wCPr/jR/Y9//wA8P/H1/wAa6qij6zMPYxOV/se//wCeH/j6/wCNH9j3/wDzw/8AH1/xrqqKPrMw9jE5X+x7/wD54f8Aj6/40f2Pf/8APD/x9f8AGuqoo+szD2MTlf7Hv/8Anh/4+v8AjR/Y9/8A88P/AB9f8a6qij6zMPYxOV/se/8A+eH/AI+v+NH9j3//ADw/8fX/ABrqqKPrMw9jE5X+x7//AJ4f+Pr/AI0f2Pf/APPD/wAfX/Guqoo+szD2MTkZ9AurmF4ZrUPG4wyl15/WvPvEHhq+8Pyq8sbfZpGxHLkHn+6cdD/P88e31Dd2lvf2klrdRLLBKNro3f8A+v79qiVZy3RUYKOx4lo+sSafLg5aBj88f9R7/wA69DtLKe+tY7q1VZYZBlXV15/X9K4bxR4XuPDl4GUtLYyN+5mxyP8AZb3/AJ9fUCTwt4pn0G62tuks5D+9hB6f7S+/8+h7EaRqyS0FKmm7nd/2Pf8A/PD/AMfX/Gj+x7//AJ4f+Pr/AI10lpdwX1rHdWsqywyDKuvf/PpU1L6xPsL2MTlf7Hv/APnh/wCPr/jR/Y9//wA8P/H1/wAa6qij6zMPYxOV/se//wCeH/j6/wCNH9j3/wDzw/8AH1/xrqqxvE2uR6FpEk5I85wUhXIyWx1/D6elCxE2HsYnDeKNRk0sNZLhbo43DOdoIz/h/nNY3hnw1c67O0ogdrSI/OwIAZv7uSfxOP0yKqafZXvibXViG55Z33SyAZ2Lnljz2+vPTqa9r0zTrfSdOhsbUMIYRgbjknJySfckk0p1He7KUUlZGB/Y9/8A88P/AB9f8aP7Hv8A/nh/4+v+NdVRT+szJ9jE5X+x7/8A54f+Pr/jR/Y9/wD88P8Ax9f8a6qij6zMPYxOV/se/wD+eH/j6/40f2Pf/wDPD/x9f8a6qij6zMPYxOV/se//AOeH/j6/40f2Pf8A/PD/AMfX/Guqoo+szD2MTlf7Hv8A/nh/4+v+NH9j3/8Azw/8fX/Guqoo+szD2MTlf7Hv/wDnh/4+v+NH9j3/APzw/wDH1/xrqqKPrMw9jEzodStLeCOCWXbJGoR12k4IGD2p/wDbFh/z3/8AHG/wrnL3/j/uP+urfzNQVoqEXqR7VrQ6r+2LD/nv/wCON/hR/bFh/wA9/wDxxv8ACuVop/VoB7aR1X9sWH/Pf/xxv8KP7YsP+e//AI43+FcrRR9WgHtpHVf2xYf89/8Axxv8KP7YsP8Anv8A+ON/hXK0UfVoB7aR1X9sWH/Pf/xxv8KP7YsP+e//AI43+FcrRR9WgHtpHVf2xYf89/8Axxv8KqanPpGradNY3UzGGYYO0MCMHII46ggGsCij6vHuHtpHnV7bTaPqrxpI4aF8xTAbSwB+Vx6evt+Feq+GPFtvqmkqbybbexfLNiMgN6MMccj6c54AxXOa3pS6nZ/Lnz4gTFg9T6H64FcXY3c2mX6yAMrI2JEPGRnlTWc6aTs9jSM+ZabnuP8AbFh/z3/8cb/Cj+2LD/nv/wCON/hXH2tzHeWsdxCSUcZGRg1NWn1eHcz9rI6r+2LD/nv/AOON/hR/bFh/z3/8cb/CuVoo+rQD20jqv7YsP+e//jjf4Uf2xYf89/8Axxv8K5WszVL9IIHAbhRlyD+lKVCCV7jjUk3Y1PE/iqLyHgtpCLfGJJBwZP8AZHt/P6dfPEW61zUUijAGTxnO2Ne5P+f6CkAu9bv1jjXJPRf4UX1P+P8A9YV22maZBplt5UXLnl5COWP+HtUwp30Wxc58p0OgQaL4esBb282+RsGaYxkNI35cAdh2+uSdb+2LD/nv/wCON/hXK0Vf1ePcz9tI6r+2LD/nv/443+FH9sWH/Pf/AMcb/CuVoo+rQD20jqv7YsP+e/8A443+FH9sWH/Pf/xxv8K5Wij6tAPbSOq/tiw/57/+ON/hR/bFh/z3/wDHG/wrlaKPq0A9tI6r+2LD/nv/AOON/hR/bFh/z3/8cb/CuVoo+rQD20jqv7YsP+e//jjf4Uf2xYf89/8Axxv8K5Wij6tAPbSOq/tiw/57/wDjjf4Uf2xYf89//HG/wrlaKPq0A9tI6r+2LD/nv/443+FH9sWH/Pf/AMcb/CuVoo+rQD20jqv7YsP+e/8A443+FH9sWH/Pf/xxv8K5Wij6tAPbSOq/tiw/57/+ON/hR/bFh/z3/wDHG/wrlaKPq0A9tI6r+2LD/nv/AOON/hR/bFh/z3/8cb/CuVoo+rQD20jqv7YsP+e//jjf4Uf2xYf89/8Axxv8K5Wij6tAPbSOq/tiw/57/wDjjf4Uf2xYf89//HG/wrlaKPq0A9tI6r+2LD/nv/443+FH9sWH/Pf/AMcb/CuVoo+rQD20jqv7YsP+e/8A443+FH9sWH/Pf/xxv8K5Wij6tAPbSOq/tiw/57/+ON/hR/bFh/z3/wDHG/wrlaKPq0A9tI6r+2LD/nv/AOON/hR/bFh/z3/8cb/CuVoo+rQD20jqv7YsP+e//jjf4Uf2xYf89/8Axxv8K5Wij6tAPbSOq/tiw/57/wDjjf4Uf2xYf89//HG/wrlaKPq0A9tI7iiiiuI6AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigClqulWms2D2d5HvjbkEcMjdmU9iP88V4xr2g3fh3UPIuBujbJhmA+WRf6H1Hb6YJ90qlqulWms2D2d5HvjbkEcMjdmU9iP8APFUnYDzPwh4vbR3WzvGZ9Pc/Uwk9x6j1H4jnIPq8ciSxrJG6ujgMrKchgehBrw3XtBvPDuofZ7gbo2yYZgPlkX+h9R2+mCdvwh4vbR3WzvGZ9Pc/Uwk9x6j1H4jnINNX1QHrNFNjkSWNZI3V0cBlZTkMD0INOrMCG7uorG0lup2CxRKWYkgdPrXiviDWbnxHrJdFdkZgkMKZPsAB3P8Aj05rd8feJPt15/Z1pIDbw/fZScOSB+nX/Hmr3gDwr01nUbf0a0V//QyPy2/icdDWi91XEdL4R8OJ4f0v59xvLgK1wSfukDhRg4wMnnvz7AdBRRWYwooooAKKKKACiiigAooooAKKKKACiiigDjr3/j/uP+urfzNQVPe/8f8Acf8AXVv5moK9OOyOJ7hRRRTAKKKKACiiigAooooAKKKKACuW8S6N1v7WL1M4X/0LH8/z9TXU0jKroyOoZWGCCMgilKKkrDjLldziPD2qmxuxDKx+zynBGQArf3v8/wBK7iuD13SW027LxIfsrn922c7T/dP9Pb8a2vDOrefGLCb/AFiKTGxP3h6fUfyHtWVOTi+Vmk43XMjoqKKo6lfJawt+8CkDLH+6P8a1bsrmaTbshuoaglvG4Dhdo+d/T2HvXG3FxPqt0kECMQTiOMd/c/54ouLifVbpIIEYgnEcY7+5/wA8V1+j6PFpcOTh7hx88n9B7fz/AJYa1H5G7apoXRtJTSrYru3zSYMjDpx0A9hk1pUUV0JJKyOdu7uwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA7iiiivLO0KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKWq6VaazYPZ3ke+NuQRwyN2ZT2I/zxXjGvaDeeHdQ+z3A3RtkwzAfLIv9D6jt9ME+6Vk6/oFp4hsDb3A2SLkwzAZaNv6g9x3+uCKi7AcL4G8VJpznT7+VltZD+6dj8sLdwfQH8gee5NdD458SjSrI2Nuym5uFZW77Fx+XOf8AOc15lqemXmiag9neR7ZF5BH3XXsynuP/ANXXIp9nZXeu6jb2kLmSeTEamV+FVR69gAOntxV2V7iNTwh4ak8QamJrmN20+JszuWI3tjIUHuemfQdwSK9jjjSGJI40VI0AVVUYCgdAB6VU0rSrTRrBLOzj2RrySeWdu7Me5P8AnirtZt3GFFFFIAooooAKKKKACiiigAooooAKKKKACiiigDjr3/j/ALj/AK6t/M1BU97/AMf9x/11b+ZqCvTjsjie4UUUUwCiiigAooooAKKKKACiiigAooooAr3lnBf2zQTrlD0I6qfUe9ef3Ntc6Ze+XICkqHKsp6jsQa9IrJ13SF1K1LxoPtUY+Q5xkf3T/T3/ABrOpC6utzSnOzsyO115LrT/ADAAkw4fJ4X3+n/165m/u31O6jghBYF8Lk43seM81nqxAK5IDcHFdn4e0aO0t47yTDzyKGU9kUjt7+p/D65LmqOxo7QWha0fR4tLhycPcOPnk/oPb+f8tOiiulJJWRzttu7CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA7iiiivLO0KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDJ1/QLTxDYG3uBskXJhmAy0bf1B7jv9cEVfDfhKz8OqZEdp7xwVec5UFSQcBc4HQep689q6CincAooopAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHHXv/AB/3H/XVv5moKnvf+P8AuP8Arq38zUFenHZHE9wooopgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAYl94at73UPtJkMSMP3iIvLNzznt27fzrXghjt4UhiBCIMKCxOB9TUlFJRS1Q3JvRhRRRTEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB3FFFFeWdoUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHHXv/H/cf9dW/magqe9/4/7j/rq38zUFenHZHE9wooopgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHcUUUV5Z2hRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAcde/8AH/cf9dW/magq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", "image/png": "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AAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiKAgDaSt7AVAhCAAAQgAAEIQEBzAghozV2AARCAAAQgAAEIQAACRiLw/wFwJdEsL3dIBQAAAABJRU5ErkJggg==", "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "env = suite_pybullet.load(env_name)\n", "env.reset()\n", "PIL.Image.fromarray(env.render())" ] }, { "cell_type": "markdown", "metadata": { "id": "gY179d1xlmoM" }, "source": [ "In this environment the goal is for the agent to train a policy that will control the Minitaur robot and have it move forward as fast as possible. Episodes last 1000 steps and the return will be the sum of rewards throughout the episode.\n", "\n", "Let's look at the information the environment provides as an `observation` which the policy will use to generate `actions`." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:41.562775Z", "iopub.status.busy": "2023-12-22T12:28:41.562513Z", "iopub.status.idle": "2023-12-22T12:28:41.569128Z", "shell.execute_reply": "2023-12-22T12:28:41.568510Z" }, "id": "exDv57iHfwQV" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Observation Spec:\n", "BoundedArraySpec(shape=(28,), dtype=dtype('float32'), name='observation', minimum=[ -3.1515927 -3.1515927 -3.1515927 -3.1515927 -3.1515927\n", " -3.1515927 -3.1515927 -3.1515927 -167.72488 -167.72488\n", " -167.72488 -167.72488 -167.72488 -167.72488 -167.72488\n", " -167.72488 -5.71 -5.71 -5.71 -5.71\n", " -5.71 -5.71 -5.71 -5.71 -1.01\n", " -1.01 -1.01 -1.01 ], maximum=[ 3.1515927 3.1515927 3.1515927 3.1515927 3.1515927 3.1515927\n", " 3.1515927 3.1515927 167.72488 167.72488 167.72488 167.72488\n", " 167.72488 167.72488 167.72488 167.72488 5.71 5.71\n", " 5.71 5.71 5.71 5.71 5.71 5.71\n", " 1.01 1.01 1.01 1.01 ])\n", "Action Spec:\n", "BoundedArraySpec(shape=(8,), dtype=dtype('float32'), name='action', minimum=-1.0, maximum=1.0)\n" ] } ], "source": [ "print('Observation Spec:')\n", "print(env.time_step_spec().observation)\n", "print('Action Spec:')\n", "print(env.action_spec())" ] }, { "cell_type": "markdown", "metadata": { "id": "Wg5ysVTnctIm" }, "source": [ "The observation is fairly complex. We receive 28 values representing the angles, velocities, and torques for all the motors. In return the environment expects 8 values for the actions between `[-1, 1]`. These are the desired motor angles.\n", "\n", "Usually we create two environments: one for collecting data during training and one for evaluation. The environments are written in pure python and use numpy arrays, which the Actor Learner API directly consumes." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:41.572146Z", "iopub.status.busy": "2023-12-22T12:28:41.571916Z", "iopub.status.idle": "2023-12-22T12:28:41.850893Z", "shell.execute_reply": "2023-12-22T12:28:41.850197Z" }, "id": "Xp-Y4mD6eDhF" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "urdf_root=/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/pybullet_data\n", "urdf_root=/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/pybullet_data\n" ] } ], "source": [ "collect_env = suite_pybullet.load(env_name)\n", "eval_env = suite_pybullet.load(env_name)" ] }, { "cell_type": "markdown", "metadata": { "id": "Da-z2yF66FR9" }, "source": [ "## Distribution Strategy\n", "We use the DistributionStrategy API to enable running the train step computation across multiple devices such as multiple GPUs or TPUs using data parallelism. The train step:\n", "* Receives a batch of training data\n", "* Splits it across the devices\n", "* Computes the forward step\n", "* Aggregates and computes the MEAN of the loss\n", "* Computes the backward step and performs a gradient variable update\n", "\n", "With TF-Agents Learner API and DistributionStrategy API it is quite easy to switch between running the train step on GPUs (using MirroredStrategy) to TPUs (using TPUStrategy) without changing any of the training logic below." ] }, { "cell_type": "markdown", "metadata": { "id": "wGREYZCaDB1h" }, "source": [ "### Enabling the GPU\n", "If you want to try running on a GPU, you'll first need to enable GPUs for the notebook:\n", "\n", "* Navigate to Edit→Notebook Settings\n", "* Select GPU from the Hardware Accelerator drop-down" ] }, { "cell_type": "markdown", "metadata": { "id": "5ZuvwDV66Mn1" }, "source": [ "### Picking a strategy\n", "Use `strategy_utils` to generate a strategy. Under the hood, passing the parameter:\n", "* `use_gpu = False` returns `tf.distribute.get_strategy()`, which uses CPU\n", "* `use_gpu = True` returns `tf.distribute.MirroredStrategy()`, which uses all GPUs that are visible to TensorFlow on one machine" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:41.854910Z", "iopub.status.busy": "2023-12-22T12:28:41.854639Z", "iopub.status.idle": "2023-12-22T12:28:45.066934Z", "shell.execute_reply": "2023-12-22T12:28:45.066124Z" }, "id": "ff5ZZRZI15ds" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Using MirroredStrategy with devices ('/job:localhost/replica:0/task:0/device:GPU:0', '/job:localhost/replica:0/task:0/device:GPU:1', '/job:localhost/replica:0/task:0/device:GPU:2', '/job:localhost/replica:0/task:0/device:GPU:3')\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Using MirroredStrategy with devices ('/job:localhost/replica:0/task:0/device:GPU:0', '/job:localhost/replica:0/task:0/device:GPU:1', '/job:localhost/replica:0/task:0/device:GPU:2', '/job:localhost/replica:0/task:0/device:GPU:3')\n" ] } ], "source": [ "use_gpu = True #@param {type:\"boolean\"}\n", "\n", "strategy = strategy_utils.get_strategy(tpu=False, use_gpu=use_gpu)" ] }, { "cell_type": "markdown", "metadata": { "id": "fMn5FTs5kHvt" }, "source": [ "All variables and Agents need to be created under `strategy.scope()`, as you'll see below." ] }, { "cell_type": "markdown", "metadata": { "id": "E9lW_OZYFR8A" }, "source": [ "## Agent\n", "\n", "To create an SAC Agent, we first need to create the networks that it will train. SAC is an actor-critic agent, so we will need two networks.\n", "\n", "The critic will give us value estimates for `Q(s,a)`. That is, it will recieve as input an observation and an action, and it will give us an estimate of how good that action was for the given state.\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:45.071652Z", "iopub.status.busy": "2023-12-22T12:28:45.070977Z", "iopub.status.idle": "2023-12-22T12:28:45.092816Z", "shell.execute_reply": "2023-12-22T12:28:45.092180Z" }, "id": "TgkdEPg_muzV" }, "outputs": [], "source": [ "observation_spec, action_spec, time_step_spec = (\n", " spec_utils.get_tensor_specs(collect_env))\n", "\n", "with strategy.scope():\n", " critic_net = critic_network.CriticNetwork(\n", " (observation_spec, action_spec),\n", " observation_fc_layer_params=None,\n", " action_fc_layer_params=None,\n", " joint_fc_layer_params=critic_joint_fc_layer_params,\n", " kernel_initializer='glorot_uniform',\n", " last_kernel_initializer='glorot_uniform')" ] }, { "cell_type": "markdown", "metadata": { "id": "pYy4AH4V7Ph4" }, "source": [ "We will use this critic to train an `actor` network which will allow us to generate actions given an observation.\n", "\n", "The `ActorNetwork` will predict parameters for a tanh-squashed [MultivariateNormalDiag](https://www.tensorflow.org/probability/api_docs/python/tfp/distributions/MultivariateNormalDiag) distribution. This distribution will then be sampled, conditioned on the current observation, whenever we need to generate actions." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:45.096469Z", "iopub.status.busy": "2023-12-22T12:28:45.096024Z", "iopub.status.idle": "2023-12-22T12:28:45.122944Z", "shell.execute_reply": "2023-12-22T12:28:45.122301Z" }, "id": "TB5Y3Oub4u7f" }, "outputs": [], "source": [ "with strategy.scope():\n", " actor_net = actor_distribution_network.ActorDistributionNetwork(\n", " observation_spec,\n", " action_spec,\n", " fc_layer_params=actor_fc_layer_params,\n", " continuous_projection_net=(\n", " tanh_normal_projection_network.TanhNormalProjectionNetwork))" ] }, { "cell_type": "markdown", "metadata": { "id": "z62u55hSmviJ" }, "source": [ "With these networks at hand we can now instantiate the agent.\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:45.126696Z", "iopub.status.busy": "2023-12-22T12:28:45.126167Z", "iopub.status.idle": "2023-12-22T12:28:45.881456Z", "shell.execute_reply": "2023-12-22T12:28:45.880707Z" }, "id": "jbY4yrjTEyc9" }, "outputs": [], "source": [ "with strategy.scope():\n", " train_step = train_utils.create_train_step()\n", "\n", " tf_agent = sac_agent.SacAgent(\n", " time_step_spec,\n", " action_spec,\n", " actor_network=actor_net,\n", " critic_network=critic_net,\n", " actor_optimizer=tf.keras.optimizers.Adam(\n", " learning_rate=actor_learning_rate),\n", " critic_optimizer=tf.keras.optimizers.Adam(\n", " learning_rate=critic_learning_rate),\n", " alpha_optimizer=tf.keras.optimizers.Adam(\n", " learning_rate=alpha_learning_rate),\n", " target_update_tau=target_update_tau,\n", " target_update_period=target_update_period,\n", " td_errors_loss_fn=tf.math.squared_difference,\n", " gamma=gamma,\n", " reward_scale_factor=reward_scale_factor,\n", " train_step_counter=train_step)\n", "\n", " tf_agent.initialize()" ] }, { "cell_type": "markdown", "metadata": { "id": "NLva6g2jdWgr" }, "source": [ "## Replay Buffer\n", "\n", "In order to keep track of the data collected from the environment, we will use [Reverb](https://deepmind.com/research/open-source/Reverb), an efficient, extensible, and easy-to-use replay system by Deepmind. It stores experience data collected by the Actors and consumed by the Learner during training.\n", "\n", "In this tutorial, this is less important than `max_size` -- but in a distributed setting with async collection and training, you will probably want to experiment with `rate_limiters.SampleToInsertRatio`, using a samples_per_insert somewhere between 2 and 1000. For example:\n", "```\n", "rate_limiter=reverb.rate_limiters.SampleToInsertRatio(samples_per_insert=3.0, min_size_to_sample=3, error_buffer=3.0)\n", "```\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:45.885416Z", "iopub.status.busy": "2023-12-22T12:28:45.884996Z", "iopub.status.idle": "2023-12-22T12:28:45.894434Z", "shell.execute_reply": "2023-12-22T12:28:45.893761Z" }, "id": "vX2zGUWJGWAl" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[reverb/cc/platform/tfrecord_checkpointer.cc:162] Initializing TFRecordCheckpointer in /tmpfs/tmp/tmp277hgu8l.\n", "[reverb/cc/platform/tfrecord_checkpointer.cc:565] Loading latest checkpoint from /tmpfs/tmp/tmp277hgu8l\n", "[reverb/cc/platform/default/server.cc:71] Started replay server on port 43327\n" ] } ], "source": [ "table_name = 'uniform_table'\n", "table = reverb.Table(\n", " table_name,\n", " max_size=replay_buffer_capacity,\n", " sampler=reverb.selectors.Uniform(),\n", " remover=reverb.selectors.Fifo(),\n", " rate_limiter=reverb.rate_limiters.MinSize(1))\n", "\n", "reverb_server = reverb.Server([table])" ] }, { "cell_type": "markdown", "metadata": { "id": "LRNvAnkO7JK2" }, "source": [ "The replay buffer is constructed using specs describing the tensors that are to be stored, which can be obtained from the agent using `tf_agent.collect_data_spec`.\n", "\n", "Since the SAC Agent needs both the current and next observation to compute the loss, we set `sequence_length=2`." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:45.898099Z", "iopub.status.busy": "2023-12-22T12:28:45.897682Z", "iopub.status.idle": "2023-12-22T12:28:45.904043Z", "shell.execute_reply": "2023-12-22T12:28:45.903322Z" }, "id": "xVLUxyUo7HQR" }, "outputs": [], "source": [ "reverb_replay = reverb_replay_buffer.ReverbReplayBuffer(\n", " tf_agent.collect_data_spec,\n", " sequence_length=2,\n", " table_name=table_name,\n", " local_server=reverb_server)" ] }, { "cell_type": "markdown", "metadata": { "id": "rVD5nQ9ZGo8_" }, "source": [ "Now we generate a TensorFlow dataset from the Reverb replay buffer. We will pass this to the Learner to sample experiences for training." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:45.907387Z", "iopub.status.busy": "2023-12-22T12:28:45.906834Z", "iopub.status.idle": "2023-12-22T12:28:46.224611Z", "shell.execute_reply": "2023-12-22T12:28:46.223903Z" }, "id": "ba7bilizt_qW" }, "outputs": [], "source": [ "dataset = reverb_replay.as_dataset(\n", " sample_batch_size=batch_size, num_steps=2).prefetch(50)\n", "experience_dataset_fn = lambda: dataset" ] }, { "cell_type": "markdown", "metadata": { "id": "I0KLrEPwkn5x" }, "source": [ "## Policies\n", "\n", "In TF-Agents, policies represent the standard notion of policies in RL: given a `time_step` produce an action or a distribution over actions. The main method is `policy_step = policy.step(time_step)` where `policy_step` is a named tuple `PolicyStep(action, state, info)`. The `policy_step.action` is the `action` to be applied to the environment, `state` represents the state for stateful (RNN) policies and `info` may contain auxiliary information such as log probabilities of the actions.\n", "\n", "Agents contain two policies:\n", "\n", "- `agent.policy` — The main policy that is used for evaluation and deployment.\n", "- `agent.collect_policy` — A second policy that is used for data collection." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:46.229095Z", "iopub.status.busy": "2023-12-22T12:28:46.228467Z", "iopub.status.idle": "2023-12-22T12:28:46.233062Z", "shell.execute_reply": "2023-12-22T12:28:46.232447Z" }, "id": "yq7JE8IwFe0E" }, "outputs": [], "source": [ "tf_eval_policy = tf_agent.policy\n", "eval_policy = py_tf_eager_policy.PyTFEagerPolicy(\n", " tf_eval_policy, use_tf_function=True)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:46.236523Z", "iopub.status.busy": "2023-12-22T12:28:46.236021Z", "iopub.status.idle": "2023-12-22T12:28:46.240835Z", "shell.execute_reply": "2023-12-22T12:28:46.240159Z" }, "id": "f_A4rZveEQzW" }, "outputs": [], "source": [ "tf_collect_policy = tf_agent.collect_policy\n", "collect_policy = py_tf_eager_policy.PyTFEagerPolicy(\n", " tf_collect_policy, use_tf_function=True)" ] }, { "cell_type": "markdown", "metadata": { "id": "azkJZ8oaF8uc" }, "source": [ "Policies can be created independently of agents. For example, use `tf_agents.policies.random_py_policy` to create a policy which will randomly select an action for each time_step." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:46.244645Z", "iopub.status.busy": "2023-12-22T12:28:46.244079Z", "iopub.status.idle": "2023-12-22T12:28:46.248220Z", "shell.execute_reply": "2023-12-22T12:28:46.247561Z" }, "id": "BwY7StuMkuV4" }, "outputs": [], "source": [ "random_policy = random_py_policy.RandomPyPolicy(\n", " collect_env.time_step_spec(), collect_env.action_spec())" ] }, { "cell_type": "markdown", "metadata": { "id": "l1LMqw60Kuso" }, "source": [ "## Actors\n", "The actor manages interactions between a policy and an environment.\n", " * The Actor components contain an instance of the environment (as `py_environment`) and a copy of the policy variables.\n", " * Each Actor worker runs a sequence of data collection steps given the local values of the policy variables.\n", " * Variable updates are done explicitly using the variable container client instance in the training script before calling `actor.run()`.\n", " * The observed experience is written into the replay buffer in each data collection step." ] }, { "cell_type": "markdown", "metadata": { "id": "XjE59ct9fU7W" }, "source": [ "As the Actors run data collection steps, they pass trajectories of (state, action, reward) to the observer, which caches and writes them to the Reverb replay system. \n", "\n", "We're storing trajectories for frames [(t0,t1) (t1,t2) (t2,t3), ...] because `stride_length=1`." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:46.251607Z", "iopub.status.busy": "2023-12-22T12:28:46.251120Z", "iopub.status.idle": "2023-12-22T12:28:46.254713Z", "shell.execute_reply": "2023-12-22T12:28:46.254115Z" }, "id": "HbyGmdiNfNDc" }, "outputs": [], "source": [ "rb_observer = reverb_utils.ReverbAddTrajectoryObserver(\n", " reverb_replay.py_client,\n", " table_name,\n", " sequence_length=2,\n", " stride_length=1)" ] }, { "cell_type": "markdown", "metadata": { "id": "6yaVVC22fOcF" }, "source": [ "We create an Actor with the random policy and collect experiences to seed the replay buffer with." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:28:46.258252Z", "iopub.status.busy": "2023-12-22T12:28:46.257703Z", "iopub.status.idle": "2023-12-22T12:29:43.249174Z", "shell.execute_reply": "2023-12-22T12:29:43.248363Z" }, "id": "ZGq3SY0kKwsa" }, "outputs": [], "source": [ "initial_collect_actor = actor.Actor(\n", " collect_env,\n", " random_policy,\n", " train_step,\n", " steps_per_run=initial_collect_steps,\n", " observers=[rb_observer])\n", "initial_collect_actor.run()" ] }, { "cell_type": "markdown", "metadata": { "id": "6Pkg-0vZP_Ya" }, "source": [ "Instantiate an Actor with the collect policy to gather more experiences during training." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:29:43.254086Z", "iopub.status.busy": "2023-12-22T12:29:43.253385Z", "iopub.status.idle": "2023-12-22T12:29:43.371269Z", "shell.execute_reply": "2023-12-22T12:29:43.370477Z" }, "id": "A6ooXyk0FZ5j" }, "outputs": [], "source": [ "env_step_metric = py_metrics.EnvironmentSteps()\n", "collect_actor = actor.Actor(\n", " collect_env,\n", " collect_policy,\n", " train_step,\n", " steps_per_run=1,\n", " metrics=actor.collect_metrics(10),\n", " summary_dir=os.path.join(tempdir, learner.TRAIN_DIR),\n", " observers=[rb_observer, env_step_metric])" ] }, { "cell_type": "markdown", "metadata": { "id": "FR9CZ-jfPN2T" }, "source": [ "Create an Actor which will be used to evaluate the policy during training. We pass in `actor.eval_metrics(num_eval_episodes)` to log metrics later." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:29:43.375495Z", "iopub.status.busy": "2023-12-22T12:29:43.374856Z", "iopub.status.idle": "2023-12-22T12:29:43.491056Z", "shell.execute_reply": "2023-12-22T12:29:43.490176Z" }, "id": "vHY2BT5lFhgL" }, "outputs": [], "source": [ "eval_actor = actor.Actor(\n", " eval_env,\n", " eval_policy,\n", " train_step,\n", " episodes_per_run=num_eval_episodes,\n", " metrics=actor.eval_metrics(num_eval_episodes),\n", " summary_dir=os.path.join(tempdir, 'eval'),\n", ")" ] }, { "cell_type": "markdown", "metadata": { "id": "y6eBGSYiOf83" }, "source": [ "## Learners\n", "The Learner component contains the agent and performs gradient step updates to the policy variables using experience data from the replay buffer. After one or more training steps, the Learner can push a new set of variable values to the variable container." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:29:43.494932Z", "iopub.status.busy": "2023-12-22T12:29:43.494353Z", "iopub.status.idle": "2023-12-22T12:29:59.762337Z", "shell.execute_reply": "2023-12-22T12:29:59.761348Z" }, "id": "gi37YicSFTfF" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:`0/step_type` is not a valid tf.function parameter name. Sanitizing to `arg_0_step_type`.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:`0/reward` is not a valid tf.function parameter name. Sanitizing to `arg_0_reward`.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:`0/discount` is not a valid tf.function parameter name. Sanitizing to `arg_0_discount`.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:`0/observation` is not a valid tf.function parameter name. Sanitizing to `arg_0_observation`.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:`0/step_type` is not a valid tf.function parameter name. Sanitizing to `arg_0_step_type`.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "argv[0]=\n", "argv[0]=\n", "argv[0]=\n", "argv[0]=\n", "argv[0]=\n", "argv[0]=\n", "INFO:tensorflow:Assets written to: /tmpfs/tmp/policies/policy/assets\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/tensorflow/python/saved_model/nested_structure_coder.py:458: UserWarning: Encoding a StructuredValue with type tf_agents.distributions.utils.SquashToSpecNormal_ACTTypeSpec; loading this StructuredValue will require that this type be imported and registered.\n", " warnings.warn(\"Encoding a StructuredValue with type %s; loading this \"\n", "/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/tensorflow/python/saved_model/nested_structure_coder.py:458: UserWarning: Encoding a StructuredValue with type tfp.distributions.MultivariateNormalDiag_ACTTypeSpec; loading this StructuredValue will require that this type be imported and registered.\n", " warnings.warn(\"Encoding a StructuredValue with type %s; loading this \"\n", "INFO:tensorflow:Assets written to: /tmpfs/tmp/policies/policy/assets\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Assets written to: /tmpfs/tmp/policies/collect_policy/assets\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/tensorflow/python/saved_model/nested_structure_coder.py:458: UserWarning: Encoding a StructuredValue with type tf_agents.distributions.utils.SquashToSpecNormal_ACTTypeSpec; loading this StructuredValue will require that this type be imported and registered.\n", " warnings.warn(\"Encoding a StructuredValue with type %s; loading this \"\n", "/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/tensorflow/python/saved_model/nested_structure_coder.py:458: UserWarning: Encoding a StructuredValue with type tfp.distributions.MultivariateNormalDiag_ACTTypeSpec; loading this StructuredValue will require that this type be imported and registered.\n", " warnings.warn(\"Encoding a StructuredValue with type %s; loading this \"\n", "INFO:tensorflow:Assets written to: /tmpfs/tmp/policies/collect_policy/assets\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Assets written to: /tmpfs/tmp/policies/greedy_policy/assets\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/tensorflow/python/saved_model/nested_structure_coder.py:458: UserWarning: Encoding a StructuredValue with type tfp.distributions.Deterministic_ACTTypeSpec; loading this StructuredValue will require that this type be imported and registered.\n", " warnings.warn(\"Encoding a StructuredValue with type %s; loading this \"\n", "INFO:tensorflow:Assets written to: /tmpfs/tmp/policies/greedy_policy/assets\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 12 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 12 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 6 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 6 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 1 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 1 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 12 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 12 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 6 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 6 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 1 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 1 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] } ], "source": [ "saved_model_dir = os.path.join(tempdir, learner.POLICY_SAVED_MODEL_DIR)\n", "\n", "# Triggers to save the agent's policy checkpoints.\n", "learning_triggers = [\n", " triggers.PolicySavedModelTrigger(\n", " saved_model_dir,\n", " tf_agent,\n", " train_step,\n", " interval=policy_save_interval),\n", " triggers.StepPerSecondLogTrigger(train_step, interval=1000),\n", "]\n", "\n", "agent_learner = learner.Learner(\n", " tempdir,\n", " train_step,\n", " tf_agent,\n", " experience_dataset_fn,\n", " triggers=learning_triggers,\n", " strategy=strategy)" ] }, { "cell_type": "markdown", "metadata": { "id": "94rCXQtbUbXv" }, "source": [ "## Metrics and Evaluation\n", "\n", "We instantiated the eval Actor with `actor.eval_metrics` above, which creates most commonly used metrics during policy evaluation:\n", "* Average return. The return is the sum of rewards obtained while running a policy in an environment for an episode, and we usually average this over a few episodes.\n", "* Average episode length.\n", "\n", "We run the Actor to generate these metrics." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:29:59.771144Z", "iopub.status.busy": "2023-12-22T12:29:59.770696Z", "iopub.status.idle": "2023-12-22T12:30:21.866816Z", "shell.execute_reply": "2023-12-22T12:30:21.865972Z" }, "id": "83iMSHUC71RG" }, "outputs": [], "source": [ "def get_eval_metrics():\n", " eval_actor.run()\n", " results = {}\n", " for metric in eval_actor.metrics:\n", " results[metric.name] = metric.result()\n", " return results\n", "\n", "metrics = get_eval_metrics()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:30:21.870885Z", "iopub.status.busy": "2023-12-22T12:30:21.870612Z", "iopub.status.idle": "2023-12-22T12:30:21.875196Z", "shell.execute_reply": "2023-12-22T12:30:21.874522Z" }, "id": "jnOMvX_eZvOW" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "step = 0: AverageReturn = -0.796275, AverageEpisodeLength = 131.550003\n" ] } ], "source": [ "def log_eval_metrics(step, metrics):\n", " eval_results = (', ').join(\n", " '{} = {:.6f}'.format(name, result) for name, result in metrics.items())\n", " print('step = {0}: {1}'.format(step, eval_results))\n", "\n", "log_eval_metrics(0, metrics)" ] }, { "cell_type": "markdown", "metadata": { "id": "hWWURm_rXG-f" }, "source": [ "Check out the [metrics module](https://github.com/tensorflow/agents/blob/master/tf_agents/metrics/tf_metrics.py) for other standard implementations of different metrics." ] }, { "cell_type": "markdown", "metadata": { "id": "hBc9lj9VWWtZ" }, "source": [ "## Training the agent\n", "\n", "The training loop involves both collecting data from the environment and optimizing the agent's networks. Along the way, we will occasionally evaluate the agent's policy to see how we are doing." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T12:30:21.879022Z", "iopub.status.busy": "2023-12-22T12:30:21.878340Z", "iopub.status.idle": "2023-12-22T13:34:47.659379Z", "shell.execute_reply": "2023-12-22T13:34:47.658498Z" }, "id": "0pTbJ3PeyF-u" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 12 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 12 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 6 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 6 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 1 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 1 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 12 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 12 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 6 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 6 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 1 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Collective all_reduce tensors: 1 all_reduces, num_devices = 4, group_size = 4, implementation = CommunicationImplementation.NCCL, num_packs = 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2023-12-22 12:31:02.824292: W tensorflow/core/grappler/optimizers/loop_optimizer.cc:933] Skipping loop optimization for Merge node with control input: while/body/_121/while/replica_1/Losses/alpha_loss/write_summary/summary_cond/branch_executed/_1946\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[reverb/cc/client.cc:165] Sampler and server are owned by the same process (26631) so Table uniform_table is accessed directly without gRPC.\n", "[reverb/cc/client.cc:165] Sampler and server are owned by the same process (26631) so Table uniform_table is accessed directly without gRPC.\n", "[reverb/cc/client.cc:165] Sampler and server are owned by the same process (26631) so Table uniform_table is accessed directly without gRPC.\n", "[reverb/cc/client.cc:165] Sampler and server are owned by the same process (26631) so Table uniform_table is accessed directly without gRPC.\n", "[reverb/cc/client.cc:165] Sampler and server are owned by the same process (26631) so Table uniform_table is accessed directly without gRPC.\n", "[reverb/cc/client.cc:165] Sampler and server are owned by the same process (26631) so Table uniform_table is accessed directly without gRPC.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 5000: loss = -54.42484664916992\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 10000: AverageReturn = -0.739843, AverageEpisodeLength = 292.600006\n", "step = 10000: loss = -54.64984130859375\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 15000: loss = -35.02790451049805\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 20000: AverageReturn = -1.259167, AverageEpisodeLength = 441.850006\n", "step = 20000: loss = -26.131771087646484\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 25000: loss = -19.544872283935547\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 30000: AverageReturn = -0.818176, AverageEpisodeLength = 466.200012\n", "step = 30000: loss = -13.54043197631836\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 35000: loss = -10.158345222473145\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 40000: AverageReturn = -1.347950, AverageEpisodeLength = 601.700012\n", "step = 40000: loss = -6.913794040679932\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 45000: loss = -5.61244010925293\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 50000: AverageReturn = -1.182192, AverageEpisodeLength = 483.950012\n", "step = 50000: loss = -4.762404441833496\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 55000: loss = -3.82161545753479\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 60000: AverageReturn = -1.674075, AverageEpisodeLength = 623.400024\n", "step = 60000: loss = -4.256121635437012\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 65000: loss = -3.6529903411865234\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 70000: AverageReturn = -1.215892, AverageEpisodeLength = 728.500000\n", "step = 70000: loss = -4.215447902679443\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 75000: loss = -4.645144462585449\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 80000: AverageReturn = -1.224958, AverageEpisodeLength = 615.099976\n", "step = 80000: loss = -4.062835693359375\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 85000: loss = -2.9989473819732666\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 90000: AverageReturn = -0.896713, AverageEpisodeLength = 508.149994\n", "step = 90000: loss = -3.086637020111084\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 95000: loss = -3.242603302001953\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "step = 100000: AverageReturn = -0.280301, AverageEpisodeLength = 354.649994\n", "step = 100000: loss = -3.288505792617798\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[reverb/cc/platform/default/server.cc:84] Shutting down replay server\n" ] } ], "source": [ "#@test {\"skip\": true}\n", "try:\n", " %%time\n", "except:\n", " pass\n", "\n", "# Reset the train step\n", "tf_agent.train_step_counter.assign(0)\n", "\n", "# Evaluate the agent's policy once before training.\n", "avg_return = get_eval_metrics()[\"AverageReturn\"]\n", "returns = [avg_return]\n", "\n", "for _ in range(num_iterations):\n", " # Training.\n", " collect_actor.run()\n", " loss_info = agent_learner.run(iterations=1)\n", "\n", " # Evaluating.\n", " step = agent_learner.train_step_numpy\n", "\n", " if eval_interval and step % eval_interval == 0:\n", " metrics = get_eval_metrics()\n", " log_eval_metrics(step, metrics)\n", " returns.append(metrics[\"AverageReturn\"])\n", "\n", " if log_interval and step % log_interval == 0:\n", " print('step = {0}: loss = {1}'.format(step, loss_info.loss.numpy()))\n", "\n", "rb_observer.close()\n", "reverb_server.stop()" ] }, { "cell_type": "markdown", "metadata": { "id": "68jNcA_TiJDq" }, "source": [ "## Visualization\n" ] }, { "cell_type": "markdown", "metadata": { "id": "aO-LWCdbbOIC" }, "source": [ "### Plots\n", "\n", "We can plot average return vs global steps to see the performance of our agent. In `Minitaur`, the reward function is based on how far the minitaur walks in 1000 steps and penalizes the energy expenditure." ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T13:34:47.664505Z", "iopub.status.busy": "2023-12-22T13:34:47.663828Z", "iopub.status.idle": "2023-12-22T13:34:47.882935Z", "shell.execute_reply": "2023-12-22T13:34:47.882323Z" }, "id": "rXKzyGt72HS8" }, "outputs": [ { "data": { "text/plain": [ "(-1.743763194978237, -0.210612578690052)" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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qsdjYmJw6dIl489dunTBxYsXAQDr1q3D66+/jlOnTiE8PByzZs3Cyy+/DLlc971RIpHgk08+wfr167F9+3aEhYVh6dKluPvuu63y3ojIujiVRkR2z9PTE56enli7di2am5uvevzAgQMAgC+//BKFhYXGn3ft2oUHHngAzzzzDE6dOoV///vfWL58ORYvXtzq/EWLFmHq1Kk4evQoZs6ciRkzZiAzM9Pyb4yIrI4jRkTkEFavXo1HH30UjY2N6N+/P0aMGIEZM2agT58+AHQjP2vWrMHkyZON54wePRqjRo3CwoULjfd98803ePHFF1FQUGA874knnsCnn35qPGbw4MHo378/PvnkE+u8OSKyGo4YEZFDmDp1KgoKCrB+/XqMHTsW27dvR//+/bF8+fLrnnP06FG88cYbxhEnT09PPProoygsLERDQ4PxuCFDhrQ6b8iQIRwxInJQXHxNRA7D1dUVt912G2677TYsWrQIjzzyCF577TXMnj37msfX1dXh9ddfx1133XXN5yIi58MRIyJyWElJSaivrwcAuLi4QKPRtHq8f//+yM7ORlxc3FU3qfTyn8d9+/a1Om/fvn1ITEy0/BsgIqvjiBER2b3y8nJMmzYNDz30EPr06QMvLy8cPHgQS5cuxaRJkwDoKtO2bNmCm266CUqlEn5+fnj11VcxYcIEREdH4+6774ZUKsXRo0dx4sQJvPnmm8bnX7VqFVJSUjBs2DCsWLEC+/fvxxdffCHW2yUiC+LiayKye83Nzfi///s//P777zh37hzUajWioqIwbdo0/L//9//g5uaGn3/+Gc899xwuXryIiIgIY7n+b7/9hjfeeANHjhyBi4sLEhIS8Mgjj+DRRx8FoFt8/fHHH2Pt2rXYuXMnwsLC8Pbbb2P69OkivmMishQmRkREbbhWNRsROS6uMSIiIiLSY2JEREREpMfF10REbeBqAyLnwhEjIiIiIj0mRkRERER6TIyIiIiI9JgYEREREekxMSIiIiLSY2JEREREpMfEiIiIiEiPiRERERGR3v8HNDlHU7vQwEcAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#@test {\"skip\": true}\n", "\n", "steps = range(0, num_iterations + 1, eval_interval)\n", "plt.plot(steps, returns)\n", "plt.ylabel('Average Return')\n", "plt.xlabel('Step')\n", "plt.ylim()" ] }, { "cell_type": "markdown", "metadata": { "id": "M7-XpPP99Cy7" }, "source": [ "### Videos" ] }, { "cell_type": "markdown", "metadata": { "id": "9pGfGxSH32gn" }, "source": [ "It is helpful to visualize the performance of an agent by rendering the environment at each step. Before we do that, let us first create a function to embed videos in this colab." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T13:34:47.886532Z", "iopub.status.busy": "2023-12-22T13:34:47.886066Z", "iopub.status.idle": "2023-12-22T13:34:47.890568Z", "shell.execute_reply": "2023-12-22T13:34:47.889978Z" }, "id": "ULaGr8pvOKbl" }, "outputs": [], "source": [ "def embed_mp4(filename):\n", " \"\"\"Embeds an mp4 file in the notebook.\"\"\"\n", " video = open(filename,'rb').read()\n", " b64 = base64.b64encode(video)\n", " tag = '''\n", " '''.format(b64.decode())\n", "\n", " return IPython.display.HTML(tag)" ] }, { "cell_type": "markdown", "metadata": { "id": "9c_PH-pX4Pr5" }, "source": [ "The following code visualizes the agent's policy for a few episodes:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "execution": { "iopub.execute_input": "2023-12-22T13:34:47.893864Z", "iopub.status.busy": "2023-12-22T13:34:47.893646Z", "iopub.status.idle": "2023-12-22T13:37:19.683131Z", "shell.execute_reply": "2023-12-22T13:37:19.682043Z" }, "id": "PSgaQN1nXT-h" }, "outputs": [ { "data": { "text/html": [ "\n", " " ], "text/plain": [ "" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "num_episodes = 3\n", "video_filename = 'sac_minitaur.mp4'\n", "with imageio.get_writer(video_filename, fps=60) as video:\n", " for _ in range(num_episodes):\n", " time_step = eval_env.reset()\n", " video.append_data(eval_env.render())\n", " while not time_step.is_last():\n", " action_step = eval_actor.policy.action(time_step)\n", " time_step = eval_env.step(action_step.action)\n", " video.append_data(eval_env.render())\n", "\n", "embed_mp4(video_filename)" ] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "7_SAC_minitaur_tutorial.ipynb", "private_outputs": true, "provenance": [], "toc_visible": true }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.18" } }, "nbformat": 4, "nbformat_minor": 0 }