{ "cells": [ { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "xLOXFOT5Q40E" }, "source": [ "##### Copyright 2020 The TensorFlow Authors." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "cellView": "form", "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:21:45.909105Z", "iopub.status.busy": "2025-01-10T12:21:45.908894Z", "iopub.status.idle": "2025-01-10T12:21:45.912640Z", "shell.execute_reply": "2025-01-10T12:21:45.912052Z" }, "id": "iiQkM5ZgQ8r2" }, "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": { "colab_type": "text", "id": "j6331ZSsQGY3" }, "source": [ "# Calculate gradients" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "i9Jcnb8bQQyd" }, "source": [ "\n", " \n", " \n", " \n", " \n", "
\n", " View on TensorFlow.org\n", " \n", " Run in Google Colab\n", " \n", " View source on GitHub\n", " \n", " Download notebook\n", "
" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "FxkQA6oblNqI" }, "source": [ "This tutorial explores gradient calculation algorithms for the expectation values of quantum circuits.\n", "\n", "Calculating the gradient of the expectation value of a certain observable in a quantum circuit is an involved process. Expectation values of observables do not have the luxury of having analytic gradient formulas that are always easy to write down—unlike traditional machine learning transformations such as matrix multiplication or vector addition that have analytic gradient formulas which are easy to write down. As a result, there are different quantum gradient calculation methods that come in handy for different scenarios. This tutorial compares and contrasts two different differentiation schemes." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "pvG0gAJqGYJo" }, "source": [ "## Setup" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:21:45.915567Z", "iopub.status.busy": "2025-01-10T12:21:45.915306Z", "iopub.status.idle": "2025-01-10T12:22:08.790883Z", "shell.execute_reply": "2025-01-10T12:22:08.790052Z" }, "id": "TorxE5tnkvb2" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting tensorflow==2.15.0\r\n", " Using cached tensorflow-2.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.4 kB)\r\n", "Requirement already satisfied: absl-py>=1.0.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (2.1.0)\r\n", "Requirement already satisfied: astunparse>=1.6.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (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) (24.12.23)\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) (0.6.0)\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) (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) (3.12.1)\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) (18.1.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting ml-dtypes~=0.2.0 (from tensorflow==2.15.0)\r\n", " Using cached ml_dtypes-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (20 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting numpy<2.0.0,>=1.23.5 (from tensorflow==2.15.0)\r\n", " Using cached numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (61 kB)\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) (3.4.0)\r\n", "Requirement already satisfied: packaging in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (24.2)\r\n", "Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (3.20.3)\r\n", "Requirement already satisfied: setuptools in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (75.8.0)\r\n", "Requirement already satisfied: six>=1.12.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (1.17.0)\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) (2.5.0)\r\n", "Requirement already satisfied: typing-extensions>=3.6.6 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (4.12.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting wrapt<1.15,>=1.11.0 (from tensorflow==2.15.0)\r\n", " Using cached wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.7 kB)\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) (0.37.1)\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) (1.69.0)\r\n", "Collecting tensorboard<2.16,>=2.15 (from tensorflow==2.15.0)\r\n", " Using cached tensorboard-2.15.2-py3-none-any.whl.metadata (1.7 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting tensorflow-estimator<2.16,>=2.15.0 (from tensorflow==2.15.0)\r\n", " Using cached tensorflow_estimator-2.15.0-py2.py3-none-any.whl.metadata (1.3 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting keras<2.16,>=2.15.0 (from tensorflow==2.15.0)\r\n", " Using cached keras-2.15.0-py3-none-any.whl.metadata (2.4 kB)\r\n", "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) (0.43.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting google-auth<3,>=1.6.3 (from tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached google_auth-2.37.0-py2.py3-none-any.whl.metadata (4.8 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting google-auth-oauthlib<2,>=0.5 (from tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached google_auth_oauthlib-1.2.1-py2.py3-none-any.whl.metadata (2.7 kB)\r\n", "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) (3.7)\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) (2.32.3)\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) (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) (3.1.3)\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) (5.5.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting pyasn1-modules>=0.2.1 (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached pyasn1_modules-0.4.1-py3-none-any.whl.metadata (3.5 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting rsa<5,>=3.1.4 (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached rsa-4.9-py3-none-any.whl.metadata (4.2 kB)\r\n", "Collecting requests-oauthlib>=0.7.0 (from google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Using cached requests_oauthlib-2.0.0-py2.py3-none-any.whl.metadata (11 kB)\r\n", "Requirement already satisfied: importlib-metadata>=4.4 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from markdown>=2.6.8->tensorboard<2.16,>=2.15->tensorflow==2.15.0) (8.5.0)\r\n", "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) (3.4.1)\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) (3.10)\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) (2.3.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) (2024.12.14)\r\n", "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) (3.0.2)\r\n", "Requirement already satisfied: zipp>=3.20 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from importlib-metadata>=4.4->markdown>=2.6.8->tensorboard<2.16,>=2.15->tensorflow==2.15.0) (3.21.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting pyasn1<0.7.0,>=0.4.6 (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached pyasn1-0.6.1-py3-none-any.whl.metadata (8.4 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting oauthlib>=3.0.0 (from requests-oauthlib>=0.7.0->google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached oauthlib-3.2.2-py3-none-any.whl.metadata (7.5 kB)\r\n", "Using cached tensorflow-2.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (475.2 MB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Using cached keras-2.15.0-py3-none-any.whl (1.7 MB)\r\n", "Using cached ml_dtypes-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB)\r\n", "Using cached numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.2 MB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Using cached tensorboard-2.15.2-py3-none-any.whl (5.5 MB)\r\n", "Using cached tensorflow_estimator-2.15.0-py2.py3-none-any.whl (441 kB)\r\n", "Using cached wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (77 kB)\r\n", "Using cached google_auth-2.37.0-py2.py3-none-any.whl (209 kB)\r\n", "Using cached google_auth_oauthlib-1.2.1-py2.py3-none-any.whl (24 kB)\r\n", "Using cached pyasn1_modules-0.4.1-py3-none-any.whl (181 kB)\r\n", "Using cached requests_oauthlib-2.0.0-py2.py3-none-any.whl (24 kB)\r\n", "Using cached rsa-4.9-py3-none-any.whl (34 kB)\r\n", "Using cached oauthlib-3.2.2-py3-none-any.whl (151 kB)\r\n", "Using cached pyasn1-0.6.1-py3-none-any.whl (83 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Installing collected packages: wrapt, tensorflow-estimator, pyasn1, oauthlib, numpy, keras, rsa, requests-oauthlib, pyasn1-modules, ml-dtypes, google-auth, google-auth-oauthlib, tensorboard, tensorflow\r\n", " Attempting uninstall: wrapt\r\n", " Found existing installation: wrapt 1.17.0\r\n", " Uninstalling wrapt-1.17.0:\r\n", " Successfully uninstalled wrapt-1.17.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: numpy\r\n", " Found existing installation: numpy 2.0.2\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Uninstalling numpy-2.0.2:\r\n", " Successfully uninstalled numpy-2.0.2\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: keras\r\n", " Found existing installation: keras 3.8.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Uninstalling keras-3.8.0:\r\n", " Successfully uninstalled keras-3.8.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: ml-dtypes\r\n", " Found existing installation: ml-dtypes 0.4.1\r\n", " Uninstalling ml-dtypes-0.4.1:\r\n", " Successfully uninstalled ml-dtypes-0.4.1\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: tensorboard\r\n", " Found existing installation: tensorboard 2.18.0\r\n", " Uninstalling tensorboard-2.18.0:\r\n", " Successfully uninstalled tensorboard-2.18.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: tensorflow\r\n", " Found existing installation: tensorflow 2.18.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Uninstalling tensorflow-2.18.0:\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Successfully uninstalled tensorflow-2.18.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\r\n", "tf-keras 2.18.0 requires tensorflow<2.19,>=2.18, but you have tensorflow 2.15.0 which is incompatible.\u001b[0m\u001b[31m\r\n", "\u001b[0mSuccessfully installed google-auth-2.37.0 google-auth-oauthlib-1.2.1 keras-2.15.0 ml-dtypes-0.2.0 numpy-1.26.4 oauthlib-3.2.2 pyasn1-0.6.1 pyasn1-modules-0.4.1 requests-oauthlib-2.0.0 rsa-4.9 tensorboard-2.15.2 tensorflow-2.15.0 tensorflow-estimator-2.15.0 wrapt-1.14.1\r\n" ] } ], "source": [ "!pip install tensorflow==2.15.0" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "OIbP5hklC338" }, "source": [ "Install TensorFlow Quantum:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:08.794468Z", "iopub.status.busy": "2025-01-10T12:22:08.794213Z", "iopub.status.idle": "2025-01-10T12:22:18.463336Z", "shell.execute_reply": "2025-01-10T12:22:18.462541Z" }, "id": "saFHsRDpkvkH" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting tensorflow-quantum==0.7.3\r\n", " Using cached tensorflow_quantum-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.7 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting cirq-core==1.3.0 (from tensorflow-quantum==0.7.3)\r\n", " Using cached cirq_core-1.3.0-py3-none-any.whl.metadata (1.9 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting cirq-google==1.3.0 (from tensorflow-quantum==0.7.3)\r\n", " Using cached cirq_google-1.3.0-py3-none-any.whl.metadata (2.0 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting sympy==1.12 (from tensorflow-quantum==0.7.3)\r\n", " Using cached sympy-1.12-py3-none-any.whl.metadata (12 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting duet~=0.2.8 (from cirq-core==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached duet-0.2.9-py3-none-any.whl.metadata (2.3 kB)\r\n", "Requirement already satisfied: matplotlib~=3.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (3.9.4)\r\n", "Requirement already satisfied: networkx>=2.4 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (3.2.1)\r\n", "Requirement already satisfied: numpy~=1.16 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.26.4)\r\n", "Requirement already satisfied: pandas in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (2.2.3)\r\n", "Collecting sortedcontainers~=2.0 (from cirq-core==1.3.0->tensorflow-quantum==0.7.3)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Using cached sortedcontainers-2.4.0-py2.py3-none-any.whl.metadata (10 kB)\r\n", "Requirement already satisfied: scipy in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.13.1)\r\n", "Requirement already satisfied: typing-extensions>=4.2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (4.12.2)\r\n", "Requirement already satisfied: tqdm in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (4.67.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting google-api-core>=1.14.0 (from google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached google_api_core-2.24.0-py3-none-any.whl.metadata (3.0 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting proto-plus>=1.20.0 (from cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached proto_plus-1.25.0-py3-none-any.whl.metadata (2.2 kB)\r\n", "Requirement already satisfied: protobuf>=3.15.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-google==1.3.0->tensorflow-quantum==0.7.3) (3.20.3)\r\n", "Collecting mpmath>=0.19 (from sympy==1.12->tensorflow-quantum==0.7.3)\r\n", " Using cached mpmath-1.3.0-py3-none-any.whl.metadata (8.6 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting googleapis-common-protos<2.0.dev0,>=1.56.2 (from google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached googleapis_common_protos-1.66.0-py2.py3-none-any.whl.metadata (1.5 kB)\r\n", "Requirement already satisfied: google-auth<3.0.dev0,>=2.14.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (2.37.0)\r\n", "Requirement already satisfied: requests<3.0.0.dev0,>=2.18.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (2.32.3)\r\n", "Requirement already satisfied: grpcio<2.0dev,>=1.33.2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (1.69.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting grpcio-status<2.0.dev0,>=1.33.2 (from google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached grpcio_status-1.69.0-py3-none-any.whl.metadata (1.1 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: contourpy>=1.0.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.3.0)\r\n", "Requirement already satisfied: cycler>=0.10 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (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~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (4.55.3)\r\n", "Requirement already satisfied: kiwisolver>=1.3.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.4.7)\r\n", "Requirement already satisfied: packaging>=20.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (24.2)\r\n", "Requirement already satisfied: pillow>=8 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (11.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.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (3.2.1)\r\n", "Requirement already satisfied: python-dateutil>=2.7 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (2.9.0.post0)\r\n", "Requirement already satisfied: importlib-resources>=3.2.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (6.5.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pytz>=2020.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from pandas->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (2024.2)\r\n", "Requirement already satisfied: tzdata>=2022.7 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from pandas->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (2024.2)\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.0.dev0,>=2.14.1->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (5.5.0)\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.0.dev0,>=2.14.1->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (0.4.1)\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.0.dev0,>=2.14.1->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (4.9)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting protobuf>=3.15.0 (from cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached protobuf-5.29.3-cp38-abi3-manylinux2014_x86_64.whl.metadata (592 bytes)\r\n", "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.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (3.21.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~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.17.0)\r\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3.0.0.dev0,>=2.18.0->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (3.4.1)\r\n", "Requirement already satisfied: idna<4,>=2.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3.0.0.dev0,>=2.18.0->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (3.10)\r\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3.0.0.dev0,>=2.18.0->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (2.3.0)\r\n", "Requirement already satisfied: certifi>=2017.4.17 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3.0.0.dev0,>=2.18.0->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (2024.12.14)\r\n", "Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth<3.0.dev0,>=2.14.1->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (0.6.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Using cached tensorflow_quantum-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.8 MB)\r\n", "Using cached cirq_core-1.3.0-py3-none-any.whl (1.8 MB)\r\n", "Using cached cirq_google-1.3.0-py3-none-any.whl (598 kB)\r\n", "Using cached sympy-1.12-py3-none-any.whl (5.7 MB)\r\n", "Using cached duet-0.2.9-py3-none-any.whl (29 kB)\r\n", "Using cached google_api_core-2.24.0-py3-none-any.whl (158 kB)\r\n", "Using cached mpmath-1.3.0-py3-none-any.whl (536 kB)\r\n", "Using cached proto_plus-1.25.0-py3-none-any.whl (50 kB)\r\n", "Using cached sortedcontainers-2.4.0-py2.py3-none-any.whl (29 kB)\r\n", "Using cached googleapis_common_protos-1.66.0-py2.py3-none-any.whl (221 kB)\r\n", "Using cached grpcio_status-1.69.0-py3-none-any.whl (14 kB)\r\n", "Using cached protobuf-5.29.3-cp38-abi3-manylinux2014_x86_64.whl (319 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Installing collected packages: sortedcontainers, mpmath, sympy, protobuf, duet, proto-plus, googleapis-common-protos, grpcio-status, google-api-core, cirq-core, cirq-google, tensorflow-quantum\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: protobuf\r\n", " Found existing installation: protobuf 3.20.3\r\n", " Uninstalling protobuf-3.20.3:\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Successfully uninstalled protobuf-3.20.3\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\r\n", "tensorflow 2.15.0 requires protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3, but you have protobuf 5.29.3 which is incompatible.\r\n", "tensorflow-metadata 1.16.1 requires protobuf<4.21,>=3.20.3; python_version < \"3.11\", but you have protobuf 5.29.3 which is incompatible.\r\n", "tf-keras 2.18.0 requires tensorflow<2.19,>=2.18, but you have tensorflow 2.15.0 which is incompatible.\u001b[0m\u001b[31m\r\n", "\u001b[0mSuccessfully installed cirq-core-1.3.0 cirq-google-1.3.0 duet-0.2.9 google-api-core-2.24.0 googleapis-common-protos-1.66.0 grpcio-status-1.69.0 mpmath-1.3.0 proto-plus-1.25.0 protobuf-5.29.3 sortedcontainers-2.4.0 sympy-1.12 tensorflow-quantum-0.7.3\r\n" ] } ], "source": [ "!pip install tensorflow-quantum==0.7.3" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:18.466781Z", "iopub.status.busy": "2025-01-10T12:22:18.466521Z", "iopub.status.idle": "2025-01-10T12:22:18.559149Z", "shell.execute_reply": "2025-01-10T12:22:18.558519Z" }, "id": "4Ql5PW-ACO0J" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmpfs/tmp/ipykernel_17696/2730622109.py:2: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html\n", " import importlib, pkg_resources\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Update package resources to account for version changes.\n", "import importlib, pkg_resources\n", "\n", "importlib.reload(pkg_resources)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "MkTqyoSxGUfB" }, "source": [ "Now import TensorFlow and the module dependencies:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:18.561937Z", "iopub.status.busy": "2025-01-10T12:22:18.561699Z", "iopub.status.idle": "2025-01-10T12:22:22.139510Z", "shell.execute_reply": "2025-01-10T12:22:22.138739Z" }, "id": "enZ300Bflq80" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-01-10 12:22:19.016012: 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", "2025-01-10 12:22:19.016065: 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", "2025-01-10 12:22:19.017800: 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" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-01-10 12:22:22.050748: E external/local_xla/xla/stream_executor/cuda/cuda_driver.cc:274] failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected\n" ] } ], "source": [ "import tensorflow as tf\n", "import tensorflow_quantum as tfq\n", "\n", "import cirq\n", "import sympy\n", "import numpy as np\n", "\n", "# visualization tools\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "from cirq.contrib.svg import SVGCircuit" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "b08Mmbs8lr81" }, "source": [ "## 1. Preliminary\n", "\n", "Let's make the notion of gradient calculation for quantum circuits a little more concrete. Suppose you have a parameterized circuit like this one:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:22.143301Z", "iopub.status.busy": "2025-01-10T12:22:22.142445Z", "iopub.status.idle": "2025-01-10T12:22:22.187557Z", "shell.execute_reply": "2025-01-10T12:22:22.186971Z" }, "id": "YkPYJ_Ak-GKu" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "data": { "image/svg+xml": [ "(0, 0): Y^alpha" ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qubit = cirq.GridQubit(0, 0)\n", "my_circuit = cirq.Circuit(cirq.Y(qubit)**sympy.Symbol('alpha'))\n", "SVGCircuit(my_circuit)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "wgQIlCWy-MVr" }, "source": [ "Along with an observable:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:22.190309Z", "iopub.status.busy": "2025-01-10T12:22:22.190086Z", "iopub.status.idle": "2025-01-10T12:22:22.194496Z", "shell.execute_reply": "2025-01-10T12:22:22.193982Z" }, "id": "xurmJdFy-Jae" }, "outputs": [ { "data": { "text/plain": [ "cirq.X(cirq.GridQubit(0, 0))" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pauli_x = cirq.X(qubit)\n", "pauli_x" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "j3OzKYe5NT_W" }, "source": [ "Looking at this operator you know that $⟨Y(\\alpha)| X | Y(\\alpha)⟩ = \\sin(\\pi \\alpha)$" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:22.196981Z", "iopub.status.busy": "2025-01-10T12:22:22.196765Z", "iopub.status.idle": "2025-01-10T12:22:22.204436Z", "shell.execute_reply": "2025-01-10T12:22:22.203829Z" }, "id": "Ps-pd2mndXs7" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Expectation= 0.80901700258255\n", "Sin Formula= 0.8090169943749475\n" ] } ], "source": [ "def my_expectation(op, alpha):\n", " \"\"\"Compute ⟨Y(alpha)| `op` | Y(alpha)⟩\"\"\"\n", " params = {'alpha': alpha}\n", " sim = cirq.Simulator()\n", " final_state_vector = sim.simulate(my_circuit, params).final_state_vector\n", " return op.expectation_from_state_vector(final_state_vector, {qubit: 0}).real\n", "\n", "\n", "my_alpha = 0.3\n", "print(\"Expectation=\", my_expectation(pauli_x, my_alpha))\n", "print(\"Sin Formula=\", np.sin(np.pi * my_alpha))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "zcCX109cJUaz" }, "source": [ " and if you define $f_{1}(\\alpha) = ⟨Y(\\alpha)| X | Y(\\alpha)⟩$ then $f_{1}^{'}(\\alpha) = \\pi \\cos(\\pi \\alpha)$. Let's check this:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:22.207043Z", "iopub.status.busy": "2025-01-10T12:22:22.206642Z", "iopub.status.idle": "2025-01-10T12:22:22.213301Z", "shell.execute_reply": "2025-01-10T12:22:22.212747Z" }, "id": "VMq7EayNRyQb" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Finite difference: 1.8063604831695557\n", "Cosine formula: 1.8465818304904567\n" ] } ], "source": [ "def my_grad(obs, alpha, eps=0.01):\n", " grad = 0\n", " f_x = my_expectation(obs, alpha)\n", " f_x_prime = my_expectation(obs, alpha + eps)\n", " return ((f_x_prime - f_x) / eps).real\n", "\n", "\n", "print('Finite difference:', my_grad(pauli_x, my_alpha))\n", "print('Cosine formula: ', np.pi * np.cos(np.pi * my_alpha))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "-SUlLpXBeicF" }, "source": [ "## 2. The need for a differentiator\n", "\n", "With larger circuits, you won't always be so lucky to have a formula that precisely calculates the gradients of a given quantum circuit. In the event that a simple formula isn't enough to calculate the gradient, the `tfq.differentiators.Differentiator` class allows you to define algorithms for computing the gradients of your circuits. For instance you can recreate the above example in TensorFlow Quantum (TFQ) with:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:22.215715Z", "iopub.status.busy": "2025-01-10T12:22:22.215486Z", "iopub.status.idle": "2025-01-10T12:22:22.258530Z", "shell.execute_reply": "2025-01-10T12:22:22.257695Z" }, "id": "Om76ZLu8NT_i" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expectation_calculation = tfq.layers.Expectation(\n", " differentiator=tfq.differentiators.ForwardDifference(grid_spacing=0.01))\n", "\n", "expectation_calculation(my_circuit,\n", " operators=pauli_x,\n", " symbol_names=['alpha'],\n", " symbol_values=[[my_alpha]])" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "lx3y2DX9NT_k" }, "source": [ "However, if you switch to estimating expectation based on sampling (what would happen on a true device) the values can change a little bit. This means you now have an imperfect estimate:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:22.261279Z", "iopub.status.busy": "2025-01-10T12:22:22.261044Z", "iopub.status.idle": "2025-01-10T12:22:22.278533Z", "shell.execute_reply": "2025-01-10T12:22:22.277743Z" }, "id": "v27rRyAHNT_l" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sampled_expectation_calculation = tfq.layers.SampledExpectation(\n", " differentiator=tfq.differentiators.ForwardDifference(grid_spacing=0.01))\n", "\n", "sampled_expectation_calculation(my_circuit,\n", " operators=pauli_x,\n", " repetitions=500,\n", " symbol_names=['alpha'],\n", " symbol_values=[[my_alpha]])" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Igwa3EnzNT_p" }, "source": [ "This can quickly compound into a serious accuracy problem when it comes to gradients:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:22.281164Z", "iopub.status.busy": "2025-01-10T12:22:22.280927Z", "iopub.status.idle": "2025-01-10T12:22:22.638303Z", "shell.execute_reply": "2025-01-10T12:22:22.637709Z" }, "id": "StljXH38NT_q" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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3rjRb/rbqPXaKIQSKyvnfMn01Ai+dhWD91T4STF4bxE4YeQlhWM0SBG4GJjXJU0NDQ1ceeWVWCwWIiMjue6662htbT3uY84880wURel3++EPf9jvnNLSUpYvX05ISAjx8fHceeed9PT0jOW3InzEtNRIftp9A62EQPlm2PQPvUMac6qqEtZWDECErJzzKYkWM8WBWiLcUbZT52jGiStpalZDpT+TOC6vS5quvPJK9uzZw9q1a3nnnXfYsGEDN9xwwwkft2rVKqqqqty33/3ud+6vORwOli9fTldXF1988QXPPvsszzzzDHffffdYfivCR0xNtlBJLL/vdu29tvs1fQMaB9bmTlLVKgCSJk7TORoxmhRFISguCwBnk59s3OvqBq61G5B6JjE4r0qaCgoKWLNmDU888QT5+fksWrSIhx9+mJdeeonKysrjPjYkJITExET3zWI58h/jgw8+YO/evTz//PPMmjWL8847j/vuu49HHnmErq6usf62hJeLDTORaDHzlVNrdElTib4BjYOC4ioSFe3TuSlhks7RiNEWm5wJQHBHtV+00lD7tBuQlXPieLwqadq4cSORkZHMmzfPfWzJkiUYDAY2bdp03Me+8MILxMbGMm3aNFavXk17e3u/606fPp2EhAT3saVLl9Lc3MyePXsGvabdbqe5ubnfTfinaSlHdoinrRbsx58y9nYVrpVzrcYICI7SORox2jImaNNzQWqnu0jal9kaawFoVsKYnBCuczTCk3lV0mS1WomPj+93LCAggOjoaKxW66CPu+KKK3j++ef5+OOPWb16Nf/85z+56qqr+l23b8IEuO8f77oPPPAAERER7ltaWtrJfFvCB0xJjqCFENqMrhFMHx9taq3sXTmXqW8gYkzkpSXQoGoryLoafX+KrrFOa9JqCIkiKMCr3hbFOPOI346f/exnxxRqH33bt+/kGwfecMMNLF26lOnTp3PllVfy3HPP8frrr3Pw4Mh6kKxevRqbzea+lZWVjeh6wntNc9VBVOBK6huL9QtmHCiuPeeMsnLOJ6VGBVOrxABQUXJI52jGXltTHQChEbE6RyI8nUd0pLvjjju45pprjnvOxIkTSUxMpKampt/xnp4eGhoaSExMHPLz5efnA1BUVERWVhaJiYls3ry53znV1donj+Nd12QyYTKZhvy8wndNda24OdAVy2RjETT6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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Make input_points = [batch_size, 1] array.\n", "input_points = np.linspace(0, 5, 200)[:, np.newaxis].astype(np.float32)\n", "exact_outputs = expectation_calculation(my_circuit,\n", " operators=pauli_x,\n", " symbol_names=['alpha'],\n", " symbol_values=input_points)\n", "imperfect_outputs = sampled_expectation_calculation(my_circuit,\n", " operators=pauli_x,\n", " repetitions=500,\n", " symbol_names=['alpha'],\n", " symbol_values=input_points)\n", "plt.title('Forward Pass Values')\n", "plt.xlabel('$x$')\n", "plt.ylabel('$f(x)$')\n", "plt.plot(input_points, exact_outputs, label='Analytic')\n", "plt.plot(input_points, imperfect_outputs, label='Sampled')\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:22.641284Z", "iopub.status.busy": "2025-01-10T12:22:22.641044Z", "iopub.status.idle": "2025-01-10T12:22:23.934290Z", "shell.execute_reply": "2025-01-10T12:22:23.933655Z" }, "id": "dfXObk7KNT_t" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHHCAYAAABTMjf2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAADEU0lEQVR4nOydd5gb1dXG31FZbd/12mt73XsvuOCGDQYMBkwzvQVMC52A6UkIJfBBILQQWgixgdA7GEIzmGIMxg0wxsY27r1s75Lm+2Pmzty5uiON2kraPb/n2Ue72tFoNJqZe+Y97zlXUVVVBUEQBEEQRBvEleoNIAiCIAiCSBUUCBEEQRAE0WahQIggCIIgiDYLBUIEQRAEQbRZKBAiCIIgCKLNQoEQQRAEQRBtFgqECIIgCIJos1AgRBAEQRBEm4UCIYIgCIIg2iwUCBEEkTbMmjULvXr1sjynKApuv/32lGxPSyH73ARBtAwUCBEEgQ0bNuDKK6/EgAEDkJubi9zcXAwZMgRXXHEFfvzxx1RvXtJ58cUX8fDDD0dcbtmyZVAUBX/+859tl1m7di0URcHs2bMTuIUEQSQLT6o3gCCI1DJv3jycfvrp8Hg8OPvsszFy5Ei4XC6sXr0ab775Jp544gls2LABPXv2TMn21dfXw+NJ7qXqxRdfxMqVK3HNNdeEXW706NEYNGgQXnrpJdx111226wKAc845J9GbSRBEEqBAiCDaMOvXr8cZZ5yBnj17Yv78+SgrK7P8/29/+xsef/xxuFzhxePa2lrk5eUlZRuzs7OTst5YOfvss3Hrrbfi22+/xYQJE0L+/9JLL2HQoEEYPXp0CraOIIhoodQYQbRh7rvvPtTW1mLOnDkhQRAAeDweXH311ejevbvx3KxZs5Cfn4/169fjmGOOQUFBAc4++2wAwFdffYVTTz0VPXr0gM/nQ/fu3XHttdeivr4+ZN1vv/02hg0bhuzsbAwbNgxvvfWWdBtlHqFt27bhggsuQKdOneDz+TB06FD85z//sSyzYMECKIqCV199FXfffTe6deuG7OxsHH744Vi3bp2x3NSpU/H+++9j06ZNUBQFiqKE9euwz8qUH56lS5dizZo1xjLvvPMOZsyYgS5dusDn86Fv377461//ikAgYLt+ftsXLFhgeX7jxo1QFAVz5861PL969WqccsopKCkpQXZ2NsaOHYt3333XskxzczPuuOMO9O/fH9nZ2Wjfvj0mT56MTz75JOy2EERrhxQhgmjDzJs3D/369cP48eOjep3f78f06dMxefJk/P3vf0dubi4A4LXXXkNdXR0uu+wytG/fHosXL8ajjz6KrVu34rXXXjNe//HHH+Pkk0/GkCFDcM8992Dfvn04//zz0a1bt4jvvWvXLkyYMAGKouDKK69EaWkp/ve//+HCCy9EVVVVSHrr3nvvhcvlwvXXX4/Kykrcd999OPvss/Hdd98BAP70pz+hsrISW7duxUMPPQQAyM/Pt33/3r17Y9KkSXj11Vfx0EMPwe12G/9jwdFZZ50FAJg7dy7y8/Mxe/Zs5Ofn47PPPsNf/vIXVFVV4f7773ewpyPz888/46CDDkLXrl1x8803Iy8vD6+++ipOPPFEvPHGG5g5cyYA4Pbbb8c999yDiy66COPGjUNVVRWWLFmCZcuW4YgjjkjIthBERqISBNEmqaysVAGoJ554Ysj/ysvL1T179hg/dXV1xv/OO+88FYB68803h7yOX45xzz33qIqiqJs2bTKeO+CAA9SysjK1oqLCeO7jjz9WAag9e/a0vB6Aettttxl/X3jhhWpZWZm6d+9ey3JnnHGGWlRUZGzD559/rgJQBw8erDY2NhrLPfLIIyoA9aeffjKemzFjRsj7huOxxx5TAagfffSR8VwgEFC7du2qTpw40XhOtj8uueQSNTc3V21oaDCeO++88yzvz7b9888/t7x2w4YNKgB1zpw5xnOHH364Onz4cMv6gsGgOmnSJLV///7GcyNHjlRnzJjh+DMSRFuBUmME0UapqqoCIFc/pk6ditLSUuPnscceC1nmsssuC3kuJyfH+L22thZ79+7FpEmToKoqli9fDgDYsWMHVqxYgfPOOw9FRUXG8kcccQSGDBkSdptVVcUbb7yB4447DqqqYu/evcbP9OnTUVlZiWXLlllec/755yMrK8v4e8qUKQCA3377Lex7heP000+H1+u1pMe++OILbNu2zUiLAdb9UV1djb1792LKlCmoq6vD6tWrY35/xv79+/HZZ5/htNNOM9a/d+9e7Nu3D9OnT8fatWuxbds2AEBxcTF+/vlnrF27Nu73JYjWBAVCBNFGKSgoAADU1NSE/O+pp57CJ598gv/+97/S13o8Hmkaa/PmzZg1axZKSkqQn5+P0tJSHHLIIQCAyspKAMCmTZsAAP379w95/cCBA8Nu8549e1BRUYF//etflkCttLQU559/PgBg9+7dltf06NHD8ne7du0AAOXl5WHfKxzt27fH9OnT8dZbb6GhoQGAlhbzeDw47bTTjOV+/vlnzJw5E0VFRSgsLERpaalRTcb2RzysW7cOqqri1ltvDdkft912GwBzf9x5552oqKjAgAEDMHz4cNxwww1tojUCQUSCPEIE0UYpKipCWVkZVq5cGfI/5hnauHGj9LU+ny+kkiwQCOCII47A/v37cdNNN2HQoEHIy8vDtm3bMGvWLASDwbi3ma3jnHPOwXnnnSddZsSIEZa/eQ8Pj6qqcW3LOeecg3nz5mHevHk4/vjj8cYbb+DII49EaWkpAKCiogKHHHIICgsLceedd6Jv377Izs7GsmXLcNNNN4XdH4qiSJ8XTdZsHddffz2mT58ufU2/fv0AAAcffDDWr1+Pd955Bx9//DH+/e9/46GHHsKTTz6Jiy66KOrPTxCtBQqECKINM2PGDPz73//G4sWLMW7cuLjW9dNPP+HXX3/Fs88+i3PPPdd4XqxKYv2IZCmaNWvWhH2P0tJSFBQUIBAIYNq0aXFtL49d4BGO448/HgUFBXjxxRfh9XpRXl5uSYstWLAA+/btw5tvvomDDz7YeH7Dhg0R181Uq4qKCsvzTE1j9OnTBwDg9Xod7Y+SkhKcf/75OP/881FTU4ODDz4Yt99+OwVCRJuGUmME0Ya58cYbkZubiwsuuAC7du0K+X80qglTXvjXqKqKRx55xLJcWVkZDjjgADz77LOW9NAnn3yCVatWRXyPk08+GW+88YZUydqzZ4/j7eXJy8uLOlWVk5ODmTNn4oMPPsATTzyBvLw8nHDCCZZtBaz7o6mpCY8//njEdffs2RNutxtffvml5XnxtR07dsTUqVPx1FNPYceOHSHr4ffHvn37LP/Lz89Hv3790NjYGHF7CKI1Q4oQQbRh+vfvjxdffBFnnnkmBg4caHSWVlUVGzZswIsvvgiXy+WorH3QoEHo27cvrr/+emzbtg2FhYV44403pF6ce+65BzNmzMDkyZNxwQUXYP/+/Xj00UcxdOhQqWeJ595778Xnn3+O8ePH4+KLL8aQIUOwf/9+LFu2DJ9++in2798f9X4YM2YMXnnlFcyePRsHHngg8vPzcdxxx0V83TnnnIPnnnsOH330Ec4++2xLU8lJkyahXbt2OO+883D11VdDURQ8//zzjoLLoqIinHrqqXj00UehKAr69u2LefPmhfifAOCxxx7D5MmTMXz4cFx88cXo06cPdu3ahUWLFmHr1q344YcfAABDhgzB1KlTMWbMGJSUlGDJkiV4/fXXceWVV0axpwiiFZKiajWCINKIdevWqZdddpnar18/NTs7W83JyVEHDRqkXnrppeqKFSssy5533nlqXl6edD2rVq1Sp02bpubn56sdOnRQL774YvWHH34IKflWVVV944031MGDB6s+n08dMmSI+uabb4aUkatqaPm8qqrqrl271CuuuELt3r276vV61c6dO6uHH364+q9//ctYhpWgv/baa5bXykrQa2pq1LPOOkstLi6WlvDb4ff71bKyMhWA+sEHH4T8f+HCheqECRPUnJwctUuXLuqNN96ofvTRRyGl8bLPvWfPHvXkk09Wc3Nz1Xbt2qmXXHKJunLlSum+XL9+vXruueeqnTt3Vr1er9q1a1f12GOPVV9//XVjmbvuuksdN26cWlxcbHy/d999t9rU1OTosxJEa0VR1TgdgwRBEARBEBkKeYQIgiAIgmizUCBEEARBEESbhQIhgiAIgiDaLBQIEQRBEATRZqFAiCAIgiCINgsFQgRBEARBtFmooWIEgsEgtm/fjoKCgpja8BMEQRAE0fKoqorq6mp06dIlZG5EHgqEIrB9+3Z079491ZtBEARBEEQMbNmyJWx3fAqEIlBQUABA25GFhYUp3hqCIAiCIJxQVVWF7t27G+O4HRQIRYClwwoLCykQIgiCIIgMI5KthczSBEEQBEG0WSgQIgiCIAiizUKBEEEQBEEQbRYKhAiCIAiCaLNQIEQQBEEQRJuFAiGCIAiCINosFAgRBEEQBNFmoUCIIAiCIIg2CwVCBEEQBEG0WSgQIgiCIAiizUKBEEEQBEEQbRYKhAiCIAiCaLNQIEQQROJorgdUNdVbQRAE4RgKhAiCSAxV24H7+wHvXJnqLSEIgnAMBUIEQSSGPauBphpg6/ep3hKCIAjHUCBEEERiCAb0R39qt4MgCCIKKBAiCCIxsAAo2Jza7SAIgogCCoQIgkgMLBAKkCJEEETmQIEQQRCJgVJjBEFkIBQIEQSRGCg1RhBEBkKBEEEQicFQhAKp3Q6CIIgooECIIIjEYHiESBEiCCJzoECIIIjEQKkxoq3x46vA1qWp3goiTigQIggiMRiBkJ+m2SBaP/vWA29eDLx1Saq3hIgTCoQIgkgMvDeIfEJEa6ehQnus3Z3SzSDihwIhgiASA182T+kxorUTDGqPTXWp3Q4ibigQIggiMVgCIeolRLRyVFYl2UwFAhkOBULpxHdPAV/cl+qtINoy8/8KLPlPbK/lgx8aGIjWjho0f2+qTd12EHHjSfUGEDrBIPDRH7XB5MCLgNySVG8R0dao2AJ89XfAkwOMOR9QlOher/IeIVKEiFYO74NrrgNyilO2KUR8kCKULgQauT4sTandFqJt0lilPfrrAX9D9K8PUiBEtCH4wJ98QhkNBULpgr/R/J0qbohUwMv7DVXRv55SY0RbwqIIUWosk6FAKF3gAyGVAiEiBTRWc7/HGQiRIkS0diweIVKEMhkKhNIFPhVBihCRChKpCFEgRLR2SBFqNVAglC7wviD+ToMgWgo+EGqsjP71/MBAqTGitUMeoVYDBULpAilCRKppqjF/j1sRokCIaOWIVWNExkKBULrg5xUhCoSIFGBRhOINhOgYJlo51Eeo1UCBULpAihCRaiweoVhSY1Q1RrQhVFKEWgsUCKULAaoaI1JM3GZp6iNEtCGCVDXWWqBAKF2gPkJEquE9QjGlxvhAiBQhopWjUtVYa4ECoXTB0keIqsaIFJDQhoqkCBGtnCBVjbUWKBBKF0gRIlJNQs3SFAgRrRzyCLUaKBBKF8gjRKQaS/l8nGZpSo0RrR2LIkSpsUyGAqF0gRQhItUk0iNEVWNEa4cUoVYDBULpAl8+T4oQkQoSOsUGHcNEK0dVzd/JI5TRUCCULpAiRKSahHqESBEiWjk011irgQKhdIGqxohUI3qE+DteJ1BDRaItQXONtRooEEoXAqQIESlEVa2KUNAPNNdHtw5qqEhkAgE/sGQOsOfX+NZDc421GigQShf8VDVGpJBAU2jwEm16jMrniUxg45fAvGuAD2+Kbz0qVY21FjI6EPryyy9x3HHHoUuXLlAUBW+//bbl/6qq4i9/+QvKysqQk5ODadOmYe3atanZ2EhQaoxIJfyFPKtAe4zWMK1S1RiRAdRXaI/Vu+JbDylCrYaMDoRqa2sxcuRIPPbYY9L/33ffffjHP/6BJ598Et999x3y8vIwffp0NDQ0SJdPKWSWJlIJ8wd5soGcdtrvpAgRrRF2fW2qjm89/A2rv4Gu2xmMJ9UbEA9HH300jj76aOn/VFXFww8/jD//+c844YQTAADPPfccOnXqhLfffhtnnHFGS25qZKihIpFKmCKUlQdkFwKViL6pInmEiEyAHZuNNeGXi7ge4TrdXAf4CuJbJ5ESMloRCseGDRuwc+dOTJs2zXiuqKgI48ePx6JFi2xf19jYiKqqKstPi2BRhCg1RrQwbFDIygN8hfpzcShClBoj0hUjEIpXERICIaocy1habSC0c+dOAECnTp0sz3fq1Mn4n4x77rkHRUVFxk/37t2Tup0G1FCRSCUsNZaVD2QXab9H6xGi1BiRCbBjM9hsvQGNFtHLSb2EMpZWGwjFyi233ILKykrjZ8uWLS3zxuQRIlKJmBoDYkiNUUNFIgPgj9N4VCHxOk2KUMbSagOhzp07AwB27bJWBuzatcv4nwyfz4fCwkLLT4tA5fNEKuEDoZhTY3zVGClCRJrCH6fxBELidZoqxzKWVhsI9e7dG507d8b8+fON56qqqvDdd99h4sSJKdwyG6ihIpFKLKkxpghRaoxohSRMERJSY9RLKGPJ6KqxmpoarFu3zvh7w4YNWLFiBUpKStCjRw9cc801uOuuu9C/f3/07t0bt956K7p06YITTzwxdRttBylCRCoxFKH8xJilKTVGpCv8cdoUR+UYKUKthowOhJYsWYJDDz3U+Hv27NkAgPPOOw9z587FjTfeiNraWvz+979HRUUFJk+ejA8//BDZ2dmp2mR7qGqMSCVSjxApQkQrxKIIxREIkUeo1ZDRgdDUqVOhhpkYUlEU3HnnnbjzzjtbcKtihBQhIpU0JaJ8ngvgySNEpCsWj1Ac7VFCFCFKjWUqrdYjlHGQR4hIJXxqzCifp6oxohWSqNQYKUKtBgqE0gVShIhUkpCqMUqN2RLwA/6mVG8FASTOLE19hFoNFAilC3xDRVKEiJaGT40lQhGi1JiJqgJPTwWemEjndjqQKI+QGAiRIpSxZLRHqNUQDFhPTlKEiJbGrnxeVQFFifx6VbUet5QaM/E3Ajt/0n5vqARyS1K7PW2dRPURYutxebXjnarGMhZShNIBsc07VY0RLY0sNaYGnF/cRaWDUmMmfFBIc7ClHotHKAENFdlEq9RHKGOhQCgdCAiBEClCREvDB0JZeYDi1v52WkIvBj404Jvw+4ICxNST6PJ5FgiRIpSxUCCUDoQoQhQIEXHSVAtsXaqlrJwuD2ipMUUxL+5ODdPiAE8DvglV06UXCTNLs0BIV1Cb6rTzaMv3zs87Ii2gQCgdEAMhUoSIePngRuDfhwG/fe5sed4sDUTfVJECIXssihCd2ymH/w4SUT5vKEK1wMd/Bp6ZBqx6J/b1Ei0OBULpQEggRB4hIk7KN2qP+9Y7W55PjQGAR+++HnBY8i0O8JQaMyGPUHqR6PJ5wyNUB6z9VPu9anvs6yVaHKoaSwdEjxDdNRLxwvwKTkrg/U1mwOPL1x5d+qXBaSpHVDFJETIJUH+ltCJZgdD+9UB9eeh7EGkPKULpAClCRKJprtcenXh8+EZwXl0RMgIhhxd0So3ZwweT5BFKPQmbfV5IjbEgSHwPIu2hQCgd4JspAqQIEfFjKEIOAiFWOePOAjxZ2u8sEHLaGJGqxuwhj1B6kejZ55mKankP+p4zCQqE0gEySxOJJhpFSPQHAQlQhCgQMiCPUHrBBymBptDrb7TrYVVjlv+RIpRJUCCUDlD5PJFoWCDkRBHiS+cZbq/26DSgCWmoSMewAXmE0gvxO4i1l5DoEQr3HkRaQ4FQOkANFYlEoqpmasyRIiSUzgOAS2+o6DSgodSYPeQRSi/EYzXW7tKiRyjcexBpDQVC6QBNsUEkkkCzGUxHpQjxgZDXXJcTyCxtD3mE0osQRSjGQIidY1kyjxAd/5kEBULpAHmEiETCt/pPmUeIBgIDfl+QUpZ6xGA01tQYW4/ba/bdyu8kfw8iraFAKB0gjxCRSJg/CHCmCLHAyZtrPhevR4gGfBOaayy9EI/pmBUhXblX3EBRN+3moc+h+nvQ95xJUEPFdIA8QkQi4RWhpmotSGGeHxlsYHBxl4NYPUKeHMBfTwMBD9+dmzxCqSdRHiF2nXa5gXPeBOr2AWs/kb8HkdaQIpQOUB8hIpGIs2BHSo+xqiamAgExeIT0Y9bj0/9upoknGZZJV+ncTjns+3DrPbNiTo0xRcgFtOsJdB3N3UBQIJRJUCCUDrDUmKJ/HaQIEfHAp8aAyOkxdtG2KEIxeoS8OdxzdBwDsAaTlDJMPey4zC7WHuM1SyvcMGqcN3TsZxIUCKUDLBBi0xtQ1RgRD9EqQkZqjFOE3FHONWakxrJDn2vrBMkjlFaw7yCnWHuMtbt0kEuNMaK9gSDSAgqE0gEWCGXpZlVShIh4iFkRkl3QnXqEWGqMD4RI/QAgmKVpn6QcIxBqpz3GrQhRIJTpUCCUDjCzNEsrkKxKxEPUihBXBsyItY8Q8whF89rWDnmE0gv2fcSbGpMqQuQRykQoEEoHxNQYKUJEPESrCAVkVWMxeoT4QIgGfQ3yCKUX7LhMqiJEx34mQYFQOuAPowg11YUuT5gEA7FPmthaEQOhiIoQS43JPEJRBkIuLzcY0KAPgDxC6YZTj1BzffjKR+bldMnM0m38e86w6zIFQulAiEdIP8HWzQfu7Q4sfjo125UJPHsc8I9RQHND5GXbCmJqrKEy/PJhPUJOAyEuTRBtWq21Q5OuphchqTFJIFS1A7i/H/DWpfbr4RsqMigQ0njuBOCRkaE3ZWkKBULpgOEREgKh7cu1E2rr96nZrkxg6/dA1TagekeqtyR9iFURknmEolaEPDQYiJAilF44MUvvWa0pRRu/sl+PSlVjtmxdol2Tq7anekscQYFQOuAXAiF2d80eMySqTglMdVCp5YBBiCIUh0coWrO0yxN9Wq21Q1NspBeGR6hYe5R1lmbL1Oy2b2cSlPURirIje2uFBYl8V/U0hgKhdIB1lhbL59lFM4NyrS1KMABA5X4nAJiBc1aB9ug4NRaHR8i4O/ZQakwkSGbptMKJIsSWCTYDDRXy9VD5vD3sepwhxzsFQumArSKkH0R+UoSk8CcZVdqZMEWoQJ8J27FZOh6PELcOGgyskEcovXDiEeKD15pdNuthZmkKhEJQKRAiokWsGhMVITICy7F4LygQMmCKUH5n7dFpQ8W4PEKcIkSpMSvkEUofVDW0aizQCPiFFA7/PVXvtFlXuCk22vD3zKcSM6RylAKhdEA0S7MDiQ0u4qSshAYpQnJYIORUEUq0RyjaIKq1Qx6h9IH3EjJFCAgtoedvrGp2y9cVtqFiG74e8ddi8ggRjhFTYyEeIQqEpFDHXjlNtdpjQZn2GNOkq1F2yJWlxjJEFk86/D6kfZJa+O/Cm2POQM/OGdlydqkx8gjJ4a/FGXK8UyCUDtg1VKTUWHgsihBVjRkYqbFoPUJcIOSOtXzezb02My6CSSdAKdy0gT+eXR4gS+/mH1MgJPEIRXvetEZUCoSIWDAaKgpTbJAiFB7yXsgxUmO6R6ipJvwALFWEYm2oyPcRokEfgHCcZsbAkDJUFVj2PLDjh+SsPyQQytd+DxsIRUiNkSJkxaLUZ8bxToFQOhDiEWKOewqEwhKg1JgUVjXGFCEgvCrE7toSMekqHwhlyN1g0iGPkHO2LQXevRJ496rkrJ+/TlgCIcEjxH9nNRKztKrCaN1BHiErQfIIEdES8JsXR/IIRUeQzNJSmCKUXQR4srXfw/mEwnqEHO5XS0NFSo1ZII+Qc/au1R7tKrXixfguFG2OMNvUWASzNP9/qhqzwtsUApmxHygQSjUBrllillg1ph9Egaa2fYdhB3kv5DBFyJurBUNAeEWIT2sxog1maIoNe+g4dU7lVu0xksE/VsSgP1aPkEqBkC2kCBFRw3eNtusjBJAqJIMUITlMEfLmAL5C7fewilCY8vmYJl1lqbE2PBjwkEfIOZVbtEd/fXLUs5BAyCY1xh/39eWh3f0tKTbyCFngr8UZcrxTIJRq2AmmuAC3T/tdnGuMX44wsdxp6ypazW7gnSs0r0FbJBiwes6y9UAorCIUpqGiY48Q31CRUmMWqLO0c5giBCRHFYpFEQKA2j3Wvy2KkCwQasM3ZlQ+T0QNG7Q82eadhUwRoolXQ5E1VPzlXWD5f4Fvn0jNNqUa/jixKEJh5htjA3U8pk9KjdlDc405hylCANAYYY68WBCbIDrxCAFA9S77/0vPmzZ87FP5PBE1TOlxZ5l3FuJcYwClxmTIpthgPZfEC1tbgQ+EPNmmIuTILM1PupoAj1CGXASTDnmEnKGqKVSExNSYcOyKPiHeEEzl81bII0REjV+mCAlmaYACIRl8yoHdhbDHtppKZEZpT45WFcMUoXB31wnxCOnLKS5qKieSgX1VUkJ9uXn8ApEbgcaCrUcoQmosXCBEHiEr/L7JkP1AgVCqMQIhn1l9IPMIUXfpUGSKEF9p1xbhjdKAWTXmRBFK1KSrNBhYoT5CzuDTYkCKFSExEBJK6I1rswIoivk8W68a0HsNtUFIESKiJsAFQqQIRYcs5cBM021dEWI9qXwOzNLhPEJOK79kk65SakzD4hGiQMgWPi0GJEcREo91px6hEEVIMvM8v16gdQS9GxcCj08CNi1y/poM7JtFgVCqadTvRLy5Zq5ZWj5PZukQgmFSY4G2GggJilBuifZYs0e+PBDBIxRDIOQmRcgCKULOqBAVoWSYpaMsn89h54+NWZoPfPj18uvIZNZ8AOz+GVjzvvPXkFmaiJq6fdpjXofQSh1L1RgpQiFIFSHWjTszJNmEYyhCeiBU1F17rNoqXx6I4BGK1iztptSYiOU4zYyBISWkIjXmi+ARKuqqPdoqQq08EGKfIRjFpNa8mpYhxzsFQqmmbq/2mNs+VBEKUGosLLKGisG2rgjpgRCT/Iu6aY9i2oFH6hGKsh+KxSNEqTELNDmwM9gxyqaFaRGztE1qjB27hTaBUFtRhIKC0u4EyxQbmXFD2uoDodtvvx2Kolh+Bg0alOrNMmGKUG57Ib8cJI9QJGSKkFE1lhknYMIRU2PFuiJUt8++pYDUIxRlCbzKBUJtJTXm1IfG39CQR8geFgiV6tfnpKTGxD5CdqkxfbnCLtpjzW6r+ZkN9qIixP/t5CaiqS69TdXiDaYTLGbpzDjeW30gBABDhw7Fjh07jJ+vv/461ZtkwgdCfPWBGqCGipGQeYRIEdIemVk6u8g0TFduk78m0R6htpAa27IY+FtvYP6dkZclRcgZLBDqNEx7TKUixJZjgZC/wRqYGQGVaJZ2cdW/Eb7r3b8Af+sJfPRH59vf0hipsSiOW4tHKDNuSD2RF8l8PB4POnfunOrNkFO3X3vkU2OAdqJZFKE2OrCHQzbFBrtAtdX9JSpCgJYe271K82CUDgh9TSSPkKpag3QZba1q7LO7gOZaYPO3kZcls3Rk/I1AjT7jfKch2mM6TLGRVaD15PLXa4FZTrH2vJ0ixNYdaIr8Xf+2QFtucxQVWS0Nu65Gkxojj1B6snbtWnTp0gV9+vTB2Wefjc2bN9su29jYiKqqKstPUrFLjakB6wFFVWOhyDxC1FBRexQDIUDuEwoGzYu6zCMEWHP+dvAph9beUHHbUmDDF9rvke54VRU06aoDqnS10pMDtOut/d6SDRX9DfI54VxuebCkCik2HqeK6J412mN9haNNTwmxmKWpaiz9GD9+PObOnYsPP/wQTzzxBDZs2IApU6agurpauvw999yDoqIi46d79+7J3UBLakxUhPgpNtrowB4Oy4VLbKjYmN6592RhKEK55nNGILQldHn+Yi3zCAHOLmYWRYhVP2bGRTBqvn7I/D1SICR6K2iKDTksSC/q5mxamFjhAxzADHIATeEzltO/J7fXXKaxJvT/dooQv4wde9dqj/Xlkbc7VYg3mE6gSVfTj6OPPhqnnnoqRowYgenTp+ODDz5ARUUFXn31Venyt9xyCyorK42fLVskg0ciCasIJdEjVF8O7PghsetsacJVjQEZcxImFGlqTA/mpYoQHwjZKELine3+34DyTfL1uNxcaqwVKkJ7fgV+mWf+HcmULwaDbfGYdAIfCDlpAhorfHUjoM3xyH7nFR8+XSwzVNs1VATsJ16t3acdP4y9+u8NlabiUl8BbF/h9NMkH0MRoqqxVkVxcTEGDBiAdevWSf/v8/lQWFho+UkaAb8pi4YoQkmuGnvz98BTBwO7fk7selsSmffCIsu2QRVNNEsDUQRCXPDDp8ksymQT8NRU4OlDrUGApaFiK06NLXsWgAoUlGl/R7rQi4FPa9wniYAZ+Yu6copQCzRUVBR56otfTvp/fbAXzdL8usXv+tVzgScmacFQfTlQy6btUM2g761LgH8dAuz4MeqPlhRiKZ8PSlKMaU6bC4Rqamqwfv16lJWVpXpTdElUT9/ktLOeVCEeoQQHQkyWFe/sM4lgGLM00DZL6O3M0oCD1JjELA1Y92lTjTaBa90+TRkS12NpqNgK1Y9ave9X93HaYySFRxwI2vIcVOFgkwLntDMVIX9D4s9hMRAC5IpPpEDIrqEiv25LVasKbFuinRPr55vXXwZLj+1ZrT2Wb3D2eZKNbN5Lp68BSBFKF66//np88cUX2LhxI7755hvMnDkTbrcbZ555Zqo3zUyL5bQze6+wE0usGkt0Z2l2B8LP9pxpyGafD5IiBMAmENoWanq08wgpinksyvo1Aaa0zz/Pl8+3xtQYC+68+uAY6RiTBUoZcpfcojSx4zbPDISAxKfHRI8QEN4DZDFL2/xfRBYI1e0zb2Y3L7KeOwDQUKEvp1cR2/X8amli8QhloFm61ZfPb926FWeeeSb27duH0tJSTJ48Gd9++y1KS0tTvWlWfxDD5QYCgVCPUCIVIVU1jYiZ3Kgx3OzzQNs0mMvM0gVlWlATbNY65BZyamiA80KIJfIuj3YsWqRubp9bAqE20kfIKKvW929Es7RkIAg0W1OPBNcRPVe7KczK1wKPhkpt+qFEIXqEAAepMck0HGEVIWGqJMCqxm5aBBT3tL6mvkJTv1jgly6BUBuZYqPVB0Ivv/xyqjfBHlkgZKcIJTJg8TeYB2gmN2rk7zZkdy4ZIssmFFlqzO3RGsNVbtF8QnwgJGumaLzOqykedg0BeXmfH2AMj1BmXASjgqlcLNCMdMfL/q+45ZMph6OpDljxAjDgKLNDeGuFDfxsv/oK9TRsAhShHT8AO1cCB5wVQ2rMa5MaYx4hh4oQ78+r3Q38+pH1NQ0VQP1+82+x03WqiHuKDcn5sfJN7XrUY0J825ZAWn1qLK2xU4SA0EE8kakxviw1kwMhi1IhSY1lstoVKzKzNMClx4QeWrKBgSG7s7UEQmvk64l2eo5MggV3Rv+ZCKpjUAic+Oci8fNbwAfXA1/cG902ZiLiHHmJLKF/50rgncuBnT9FCIS4QIdXSsOlxpx6hCoEfx47d1gasL7c9J+J25JKYqkaC1e5W7kNeP184PUL49+2BEKBUCoxAqES8zl2YokX2EQO6vxdViYHCzJFiMzS2qNtICRUjhkTrsoCIUmH6ICgCDHjL++ZiHbC1kyC7QuWGmOdtyMt7/GZzzkNhJhCULMnum3MRJqEAD6RJfS1+v6r22cTCMlSY7xHSJYai7JqjJ13Yrl9t7HaY32FOR6I75VK2OeMeYoNIRBin5FXv9IACoRSCT+9BoOdWKIJM5EBS6tRhCRVY229fF4cUBh2gRB/5ysiu6DzvzfVANU7rM+39tSYTOEJp3yxfeD2Rj/1CFOFM7mgwSmsmWEyFCF2Tvgb5SbnmMrnnfQRkniE+hzKvW8BUDpY+72hQgiEMjg1Fs4jxG7w08y2QIFQKjEUIc4MKKvUARIbsDRy/TkyORCKqAi1wUBIVjUG2PcSiuQRAuw9QoBpmG4rc40ZihDXkThcwB3g9m+0JnKmaKaLOpBMkqkIsSDL35C68nl23g07GYBelFA6wJy7rL48PRWhuKfYEAIedkMf9Ee3ziRDgVAqqdNzwjKPUEhqLIGDOn+XlclzmEk9QtxzaXbX0SLIzNKAGQiJXoWoPUJCcLNHCIQUt/x1rYWYFaEYGk22KUWIqxoDYm+qWLcfeOcKrTIL0IJJtr/9jVGkxmRVY3GUz7NAqPMwoKM+qWyHAUB2sfZ7fYWZIRC3JZXEPcWGcKzz41gaXZ8pEEol4arGQiLpRCpCfGoskz1C3D4yTljuLqOtKUKqaq8Ite+rPe75BajgDNNOPEKygJNhKEKySVdboSLEPpMn20yLhLugG6lHr/3UC7avZYpQGwiEjKoxlhor0h6jTY2t+QBY/l9g4SPa3/z8YbaKUJjUl9sD+KItnxcCoeYGs4t0UXdgwJHa793HaT3kAElqLE0CoURPscFbPNLIukCBUCoJVzUmeoISWjXG3WVlsiIkm2IjA7uaJozmehidytldLKN9X6D3wdp+WvSY+bwTj5BsPzPCpcZaYx+hABc4urO038MF3AnxCKXJoJhMREXISI1FqQixwMnox8MFkRZFSOYR4hUfh1VjUkVIUESr9OlDvLla4DP1FuC894DR53GpsYo09QhJvJcRX2PTdwwQAqH0uVGiQCiVGGZpvmpM/0qSWTXWaszS/AknqW5oa4oQfxcpmqUBYPJs7XHps2apbliPkETiFy9e0kCoDZTPu7yAW68EC/c5A5L9QoqQlYDf/KzsuI1VEWLnAAsk+LSiv8GmoaJE8YnoEdJvOKRmaeF7Zkbpou5a01KPT7spcbmF1FgrLJ8P+q1VlZQaIyw0N5gnqyU1ZiO3q4HEDSyNrSQQithQsa0FQtXaozdPXtbbZypQdoCmAn73pPac7A6ZEa5qrLiH9li9QxusLFVjrbizdIBTeFgKMNxxxitC0e4XZpb216eVsTTh8IoXCzpiNUuzc4BNl8EHFLwixHf2jsUjpEbhEWL+IFa5ycMUITE11pgmilC8U2wA1us0f0OfRjeqFAilCtZHweUx736AULM0f2efqKDFYpbOYI9QS0+xsfhp4KmDgZrdkZdNBexCzlc08SgKMEVXhRb/S1MaZAMDI5xHKLc9kN9J+33vrzBScq09NcYraKw3kGOPUIyKENC6DdNM8VLcZrox1vJ5QxHSH0MUoXAeoUhzjcnK5+MNhHSPUGOV9bqSdopQjFNsANbj2KIIpY9iTIFQquD9QfwcT6JZmg+EEjWwtxpFiBtQjPL5JJqll8zR2vVv/Dqx600UkQIhABh0nBZ4N1RqM1yHrRqTeYQ47wSbL6liE/cat/x1rQVeQXM78PzwZvRYPUJA6w6E+K7S7FoYsyIkBEJNdoEQF8D4CvRlI5TPB5pMlS6sIiSY4vnUmAh/E1yzi/scNeEbdbYUsXiExGWDNooQpcYIqVEaCFWE3F6tQgVInLG5oZX0EZIpQsmca4zd2aXroMQu5KzKRYbLZQ4y/karYiEiS+Xwigi7m63lJH1LQ8VWqAhZUmMOzNKJUoTSRSFIBuI8Y0AcilCN+aiqQtUY31DRafm816xkA8z1hW2oKHRWZy0rZPPFub2hhQ2Adh1Lh9SRoQhFcS6L6pElNcYrQmnw+XQoEEoVzKwqBkLiFBsuPhBKgiKUyakxaUPFJKXGGirNCpZ0Na8ailCYQAiwDuDR9kPh76iZv4E3ebb62edlZukwAXc8HqE2pwhxgVC8ihBU7SbPVhEKEwipqnU5T5Z5zhjLOAmEHKTGANMwDVhvSNIh+JU1qnX6GoadRyiNFGMKhFKFrGIMCJ1iw+U2A6FI6k0wjKGavyBYqsYy7ALLfw5p1ViSFKHKbebv6VrO7CQ1BnCBdYN1oBaRBTR8FRS7gLO5nNjzqUyNJfsu2lI+7yDVxbcniFoR4tabrsF3IhB7CAFmysjfEN13ygcPTbUSRShMZ+nmOu36wV9D2A2CGCyx6430BoJTRFU1ciDElFUAyCsFPHoPsHQooY93ig0gjEeIUmNtnu07tJNjQ102vvx1DzbsrUUgqEoUIQ/g5QYuO5pqgYeHA3NnhB6Iu38B/tYL+OhP2t+Z2lBxzYfAPd2ApXO1vyNVjSVyUGR5fiB9ByXHgZB+dxtokg8MDJmnhVu+waPdte/cYQaJry7bji/WV+jLRpiQNNGsfAO4qxOw7LnkvYdFEWL70UFqLJY+Qvzxm67BdyKQKkIF5u/RpMcsgVCNRBFi35+kjxCA33bswYLV242/31yxC/N+3I5GlxacqKyaK2xDRc4jVLtXPz4UoKCLfJuZsgoAee3lqbpUEe8UG/w6AKFqLH0CIcnVj2gJNu2uRHvVi/fWNeLB1YsBANleF97NrsMAAHsrq9EBsN5JhguEdv+iNe6q2gb88i4wdKb5v50/aSfj+s+1gUmcYkNVrYbtdGXbUu0k2/o9MGaWTdVYksrn+UAoXVU0dgcZKTXGK0JhGypaTZ+Vdc34bdNejALw1YYKfPbLTtzmBTZt2YTOLiCgKrjxjZ9QjGqs0N/iqIc+x6heHXDYoE6Y0r8Dsr2SgSNRrPkQgAp8dhcw/DTzBiKR8FV2RkDpYIqNuD1CaXrMJQLZRMEut5Yea6zS0tL5pQ7XxakoTbVC1VijeUy7PAgEVXy3YR++XLMHN8AFN4I4/dFPUYscrNIPnT+++wsa4MPHWQoGuIDfP/MFlN4qLvLswTi2nSK8R4j5MX2F5vEiwhumc9tr1+e6vekRCKmxNFTMPEWIAqEUsfPAG3BNzu9QWdeIgXUBbNxXi4bmICqVIOACPvphM872AHvrAijOz9G+qHDqDT9Qf/0QMOREM7hhB1zlVutdEcPfmJxBI9GwQJDth4DEu2KZdDWRqTFustJ0uEDJcKwI6d4Wf5PcPMrQUz+/7a7AAy8uw8c/78Rp2IhRXqCmCahUtffp4q0FAkBQ8WDqwFLUVXmBcm0VG3ZXYvXuery0eAtys9w4dkQZzp3YC8O6FoW+X7zsXaM91uwCfngRGHtBYtcfDJoDg4vrLO2kfN7iEXI4qPABVroG34lAnHmekV2sB0IVztclpsYsfYQajGN/3s97cNdHn2FnlXYtudznQ6FSjw5ZzejVrj2gxy9TBpahsgnw78oFgkCwsQbzV+1CT/cOjPMCX67bj73LtuLYEV2Q5dETLHzAy27G2Dkng1eEctsDNXqqOS1SY3E2VATCeIQoEGrzzBzVDTNHmTnjQFDFhr21KHipACgHclzaAbit2o+NNQ0YqwDlVVVoZ7dCfqDe8QOw/jOg3+H6yvUDrrEydPZxQLvIZkIgxD6HMYNxCzZU5Pdbug5KTgMhZvK1pAqsl4JgUMWOqmZ0BfDiog14P7ADAFBW7AEagLG9S3Hw2MnAm0+ie1YtUA94vV7MPX+c5mW7W1vPE2eOwJebGvDxzzuxvbIBry7ZileXbMX43iWYfcQAjO8jFAvESjAI7F1r/r3wEWDUufI51GJ+D+54c3m4/RiuoaKss7TT8nluvekafCcCQxES5sfLKdICkvryKNYlpMa4c7W+vg4bq+swGMD81fuwM9iAwmwPpg3pBO9vBUBDPT64dBSUom7A/dprnj5vvObbfLYM2LAWtx7RA2OUgSha8ilQA+yqbsYNr/6A+z5cg4um9MY5E3oimw+E2LUqbCDEXdVz0y01luiGiqQIEWFwuxT065gPFOUC5cBxQ9sDvwC+rCxUNXoAN3D3u8vRtXwELjmkD3KzhK+ODdSebO3k+/ohMxDilZFdP2uP2UVa91I1kDmVY2w72aPFuxLFFBuqCmxZbPbt6DJKXtrKw8/ang4XKBlGasyhIhSQd9pdumk/bnv3Z5y7qxKneYA8dxDnjuuJMw7sgSGbNgIfAaVF+UCxnq5gAxUbALig6rABJThsZDvcdtwQLNlUjucXbcL/Vu7Adxv24/R/fYsp/TvgtuOGasd+PFRv1wY9l0dLQ5RvBFa9DQw/Jb718vDHm6WztAOztJsaKtrSLEmNAWaAUF/hbD3BgHU/NdVaUorrtu9FlZoLuIG+nYvw5GGjceigjvB53MCjhUDDbijNXJNRxWUWr+jp5l6FwOVj+gGursBnwJCu7VC634edVQ246/1fMGfhRsztWo/+gB4I6d9huECIrxpLu0AoAYoQ9REiokbPOXtV7SAZ2KUdhvToCABwBxrxyPy1OPyBL/D5GqG7MRuoJ1ym+RE2fmXeIQckgZCvyLzwZEovIRbYNDfoJa6y8nkHZukNXwD/ORJ49Xfaz7+nRTYDWhShNN1fzMgZ0SPEKRmGR8iNyrpmXPfqDzj5iUVYua0KLl1NufTgnrjzhGEY0qXQqnAYF3DVWIfxP+hpWb3HkKIoOLBXCf5x5ih8eeOhOHt8D3hcCr5auxdHP/Il/vbhajQ0R3GxFdmjp8VK+mrnAKA1wEwkFkXI6yw1JvMIOTZLt7E+QrLUGOA8NSYEi2pTDbbsNls7ZKEZHfK0Y/TKwwfhqGFlWhDEv3djTfjKMsMsrV0vhnYtxtc3HYp7TxqOzoXZ2FZRj0/XaMd8ZW2DOfC7o0iNyTpdpwJV5ZT2OMzSdh6hdOiTpEOBULohdJZWXB60L9b8FOeO7YRu7XKwo7IB58/5Hte/9gOqG/SLKvMIdZ9gzgPFehXxB+LuVdpjdqGZDkvXgV2EnTj85ImMoOSEtRugKjZrj9nF2v6u2Wn1WIkE/JriwEjXu/OoPULmftxW7ceRD3+BN5ZpAd/pY7tjxijtOMpxc5VfXOBkuYAD5sChKEDvKdrv3z8d8vZlRTm4e+ZwzL/uEBw2qCOaAyqeWLAexz36NVZui3K2cQYL+jv0B3oepP3Od+pNBLwnzWKWdlI15rGaaB29X1tXhIq1R6eKkDA/13MLfsa6reYx0LPIjYGlevpN9MSxAgJeJQ3Xa4jrv+XzuHHGuB74/PqpuP7IAcbr3lm2CR//pF9rolKEJHObpQL+WhqXR8imaoz6CBG2iJ2luT5CQztm4ZNrD8EFB/WGogCvL91qDh58rwqxrFeqCBWa/SoyJjXGB0LCSRRNQ0X2fO8p2sAJWP0lItU7rBeFdL07j9oj1ISArjp8unofdlU1ok+HPLxx2ST87ZQRyPHpy8nmGnN7rRdwwDpwTL5We+Rnuhfo2T4Pz5w3Fk/9bgxKC3xYu7sGMx9fiKe//A1qtGX3e3/VHjsMML0miQ7wjZSJWwv2jPPMwRQbLi6V5tgj1Fb6CEnK5wEuNebQIySclzv27EWey7z2ZaPZvl2EtMlomPnIJOXzOVluXHlYf5w1oY/2RDCANxf/BgBoViR9uowXpqlHSJxF3ilhFSFKjRFOMBQhzsRqNFRsQE6WG385bghevWQiuhbnYOO+Opz9+GfmJK7F3c07VSat8wdc+UbtMbsweQNGsghwgZA4+ERTPs/2h9vHBUK/2r+vqBal6915lOXzNbU1eGeZdsfqhwezJvXC+1dPwZie+oVZOtcYN5B4s81gml8eAPocGjrTvQRFUTB9aGd8dM3BmD60E5oDKu7+4Bdc+eJy1DRGcfG1BEIs5Zvg70k0lkdbNRa1R6it9BGSNFQEok6NBRurLX/3LFAxoiMXgNh1lgasE+iGS41JFCGRojztnJjQqxB5bm1dy7fX46etNmqnmBrzCe+VKvjjNKryeSGNZusRotQYYQc7sYzO0l5r3xedA3uV4P2rJ2Pa4I7oENTKLRtcefB7C0Jb/1uCBv1O25fBqbHmhtDBRKoI2QxQRiCUBXQYqP0eNhDS1TbW9j9d786dTrGhB8rvLduIvVXaaw4bUobbjx+KnCzuwi5L5YjBAH8R5wcFcab7CE3xSvKy8OQ5Y3DnCUPhdSt4/6cdOOnxhdha7nBfs++vNImKEB/UAM7mGovVI6SqmdVHyN8IfP9vYP9v0b/WVhEq1h4dpMZqG/14YN5yy3OnjmiHbJVv4BdmShk+qJX11gqZhiNyQ8UBpTm47jBtYuJqvxunPPkN3lmxLXT5tE2N8ed9MqrGKDVG2MHmruFTYzadpYtzs/D0uWNx9Rjt/xv9JbjouSUIuITUmOxCnc2nxjIsEPLXSxQhSeMvuzsOo5IjS1MQAGeKEFs2Xe/OHabG1u3XgsVAUz065GrHW++OxaELylI54t0yfxEXB4VBxwElfbSmcuvnR9x8RVFw7sReePn3E9GxwIdfd9XgxMe+wY9bK8K/sL7C9AO1728qQv766DriRkL87E5SY/yUHNF4hMRAP11VSMaa/wHvXwd8fGv0r7XzCDlUhHZXN+C0pxbh503bLc97/HXO5hoDuKDWThESU2Osn1T4SVe75GlFA4UF+Wj0B/GHl1fgsc/XWVO/eaXaueP2aVMupWNqDKrzLvEZ2EeIAqF0I8Qj5DEDFskdrqIoOKG3dlLuVDpgwZo9+HGHfvLLUmOM7CLuzjlTPEKsfL5R7hESBz1bRUjft45TY7oiVKqrR+l6d+5AEXrl+81480dNQexe5MGxw7SKRHlnadmkq4J/wqIICetwuYDSQdrvDc5N0GN6tsM7Vx6EQZ0LsLemEac/9S2++HWP/Qv2rdMeC8qsKV8gsf43O0UonMRvzOWWFZ1HSLx5SfWgGAkWiFZsiv61dgG8A4/Qb3tqcPIT3+Dn7VXo7BMGYHGuMb5ViG1qzM4jJKbG9GuNVBHiGypq16AxfTrj9wdr3qH7P1qDv7zzszalEqAdsyf/Gzh1jrYdaRkISf62w3HVGAVChB2KmBrzWMudZegD9dDBQ1Gc68Ve/VyvqtVPJFkg5OMGjExRhNjnaJYpQv7Qu+hIHiFPlhkI1e4xJ8IVqRAUoWBzWsm6ALS7tQh9hJ76Yj1ueuMnNKjagDylVz6yFM78LCKddFVMjbULXZ4nxjRVWVEOXr9sEg4eUIr65gAuevZ7/O+nHfKFDX9Qf+t7xvC+YeHTXICzKTYCktSYE4+QeM6muyLE/DnVMVTqGZOuRpcaW7urGqc9tQhb9tejZ/tcXH9o19D1ijct7L1CFCH9O7VMzCqZj0xMjYWdYsNsqOjy+vDHYwbj9uOGQFGA57/dhNmvrjCDoWEnAYNm6O+Vhqkx2d92iMc39REiosZIjekHicsTOWDRA6HSrn3x+qUT4fZqgdOcL9dgd3WDjSJU6HxW+3SBnUSyJpDBQOiJals1xnmEfAVAoX4BZcqCiKgIAam/WxPxN5qfXxIIPb5gHe7532oAwLj+2uSProDNRZ9heFokU5mwgYNPjcnWYQRC0Q/k+T4P/n3uWMwYXobmgIorXlyGt5dLPBashxDze7ncpk8ukQGEUTEXhVk6KEmNOQmixWXSVYVksECobm90fhKAm3TVuVl67a5qnPn0t9hb04QhZYV447JJ6JDFVfUBmgop3gwZgZDoEWKKkE1lmV35vCJLjXFz9BlpeO1aO+ug3nj0zFHwuBS8s2I7ruODIbv3ShUhAY3TQEhQ5tmxHAxazxUKhAhbQszSzhUhFHVHv44FGN+/MwCgqqYWZz39HRobJekBXwZWjfGfX6gQ0VJjDgMhPjUGmEoCG1At61VNj1BJH/Mim2536PxFUxhQ/v3Vb7jvQ+2z3TB9II4aqfeZCjSZQY5LoggZqRxJIMSO03CpMSDupp1ZHhf+ceYonD62O4IqcN1rP4QqQ0YPoQHc+ybh2BbVMCdmaaki5GBAEQfwdPWlMXjvjE27BPvXRlCEmuss+5gPgoZ2KcSLF49Hh3yfuQ35erq3Rmg6y9YFREiNhXZbD1FpwpqluRsISUPFY0d0MYKht2XBULIDoZ9eB/53U+TjUPy/U0XIziwtHtMUCBG2KIJHyB3eIwTAbBBYpM1dlpejnUgdsoF1u2uwYoMuV/N3L7xHKNP6CAHaZIw8waA8NSYz+PFmaSC8Ybq53rz4FZRxF6l0C4T0bfTkWO52n1u0EXe9/wsA4Jpp/XHFof2sVYh25lH+Oadm6QSmxnjcLgX3nDQcp4zphkBQxdUvL8fnq/VBrqFS66IOAJ2Gcu+bhBJ6MTXmqI8QP+lqFB6hjFOEuDROtI0sDUVICIR8RTA6lOvpMS0I+s5Qgl64aDyKc/XvgQUOLBCqZb4yBcgqsK47rFmaaxrKCNNQMQRLakw+6erRw8sswdD1r/1gBkPJDoQ+vUNrabHzx/DLxawICUGiOEckgwIhwhaXWDXmsa0aA6AddFV6tYQeCLEB/owxndGp0IfGRm1dgUJuPi0fnxpL84ssI5IiJGsDLxuk+PJ5gAuEJE0V+QHcm8sNsGl2hy7xB720eDP+8o7WQPPyqX3xh8N15Ut20XfqERIDoYgeocQEJC6Xgr+dPALHjtDSZJf8dykWrturlWw3VgGlg4EeE7n3jT0lZ4utWdpBHyHLpKsOPEKiypTu5yh/PsqUGDuCXJpb7CPkcmk3bADQUIH1e2r0IKgxNAgCuECok75N+s1SVl7opNJ2gVCgKUJDRbF8PlzVWPjZ5/lg6K3l23DDaz8gGFST7xGq0xW7SIGWeD11Os0G2zfsHGTHu3hMUyBE2MKiaJU7GSV9hAxqdmuDmeLWFAvAkGHbZal48eIJyPNoB/APddxM35aGihmiCPHSqtBOH0FJakx8jfhcSCAkSY3xVSZuj3nXmm536ELlzVvLt+KPb/0EALhocm/cMH0gFEW/u7YoQg7ubGUeIaaK2PURYiQwReV2KXjo9ANwxJBOaPIHccWz36B54WPaPydfay1lzkqGIiQEgR4HgRCfZpHtTzvYOtn1oKnWeflyKmjiA6EoFCH++xEVIcA4vvbv241zn1lsCYLa5WVZlxUVIYY31zzmGSGpMa4CMFxDRX+9fq1h5fP2fYTCKUIMPhh6c/k23Pvh6uQqQv5Gc59HmusrXkWIb1IJhI5fVDVG2CKeWEJn6RCYP6iwC2fiZLNiN6FvaT6GdtQOyJX1fCBUlFlVY8GA9cSUeoTY/xXzednJJs4IzQKh8o2hFwd28rL0JLtrTVtFKB9fr92LG177EaoKnDexJ/40Y7AZBAHWATwgpHt4ZB6hgJA2iJgaS2xA4nW78M+zRmFK/w44Ljgf3oZ9aM7vplXdSN83CR6hmBShaKvG9NcxRQRqeqewG2MMhPgbCr5LOUM/vh6Z9z22VdSjd4c8PH/huNAgCDCDMaYIMbJyQwMRO7N0pD5CgHauqU7K5wOcxcF+rrGjh5fh/lNHAAD+9eVveH6ZNmkrAk2JDxb4CrxIikxI+bzDjuhs37Dvkx3LpAgRjhFPLJc7vMzPjLwsLQaEROLZLu2A3qp0NhZRfQWRvUfRsOdX4PFJwMo341+XDPEkYhdedoHhq8Ysd98yRajJ+tqCzlqqUA0C+9Zbl2X7hknriVSEyjcCT0wGlr8Q/7r0u8c6JRuX/ncp/EEVx4/sgtuOG2oNgoA4PUJiH6HklM+Hw+dx41/njMZV2f8DAPyj4WjsrhUu2skwS4tqWDSzz0ftEdKPW15xSzcVkidWj5AxvUautDlhMFs7vqr270aH/Cw8e/44tM+3CSrE1BjDmxdZEXJHUIQ8PvPvptqoy+fDTroKYOaobrjpKK3n1p0fbeQ+U4LTY3wFXrSKkOPyeVERYoEQeYQIp8gUoaJuWi66YpM5aSqDVWjwcrBxd8MmXdUOxKMOmYLtagnWBbvgn1/t4KbYSMCd5up5wO6fgZVvxL8uGeJJxO7+2AVODVovYOI+4DECIX1gUhSzhL5W8DcY0rb+PolUONZ9Cuz6CVj+fPzr0geBn3b7UdPox/jeJbj/1BFwuZTQZS0TTIbzCDGJXzL5orvlU2M8OY170DGwCwG48K+ag3DBs9+jlp+bLClmaaFijvda2RHgjslY+gh5c7lWAGmmQvLEqwiJFWMAgkEVP+iXt1JPPebMGoce7SXpM2Nd+v7JK7U+L1WE7FJjzXKPkKJYU1aiIVi2bq6hYqRACAAuPaQPZk3qhWZ40KRyQVciiUYREgOfaBsqGh4hUoSIaBHNdy6vlvYacoL299cPWf9vpES4qgguNQbAOABH9++Bz4/4ADOa/g8PfLoWi7eyXHECBimWoktWKb6dIuThFCH+4hTOvyHL2xv7TBik2L5hgVAi8/esgSPbd3HQUKt1bt7vz0K/jvn41+/GwueRXKQBThEKM/cSYCoflklXhRJyp6mxRF/Q6/T0QW575OflY+W2Klz10nL4A7osn8zy+WhSY3ygGZVHiHtduvrSeHjlIhqztF3FGID7PlqDVeXa9fDMEYUY3q0oZBnpNvDTBwG6R0hIu4UoQtyNk2yuMcBqYo5aEcoOXU5AURTceuwQHD2sM2qgLb9hexT70gl8l+6IipBolk6wR4gCIcIWmSIEaGZQQFNc9m8w/y9rTy/2HTIuqlk4e/JgnH/IYADAc9/r5aWJUITYYJ4sH4OY4mJSPLvABP3W+X+MC5tke8TUGGA/qIkXskQqDWwwr9rubHC0oTkQxFvfaaX/AU8e5p5/IIpyJQoPw+Pgos8/J51iQ9ZHSKYIJcGrAxj7zp3XAU+fNxY+jwufrd6NO95bpc3jlIyqsZDO0sKFXkasHiHDW5KVvr40RjAoBELRKELymedfW7IFT36xHpXQnu+d52DQ5KeY4a+HWXmRPUKyPkIhgZBMEZIorrySyjdvdQArCPC7tfPm/975HvtqIgQs0cCnxiLN/h5ilnZYNcZeZ3iEbKrGyCxN2CLzCAFA2Uig7+HaYP/NP8z/ywIhcVA3Sji152+cPhDHj+yCWn2qhcaGBOShDUUoSXetkRQh3izt8piKkOxkE1Nj/O+if4MFibF4hCItwwIhNQDU7Iy8vmAw9GIUDOCueauwe5+mLk0c1APd2oVJHwA2F/1wZmlZHyGvuQy7U24Bs7QBpwiN7tEOD59+gDF1wZyFG0MDMFWNX5UKUYQE5VWGrLO0I48QN4CmuyIk+ljiVISWbtqPP721EgAwrK82e7uTGegt10L+euikaszNqZ923db5QMiRWTo6RYiR7XWjfUkJAKCmugqXvbAMTX6bICSSqiPC78dIgUisU2yopAgR8WKnCAHAlNna4/IXzANaNr+UeAAKfXNcLgX3nTICXTtoRsSde8tR0xi7IgGAC4SSpAjZBUIsQBFTY25usLdblzQ1JgxSIYqQw7vzDV8C93YHFj5ivwwbzIHI6bFAM/DkQcCTk807rNXvA3eWoPK7F5ALbTvbl7QLsxId9lksVWMyRUjiEZItz9JjLWSWBmCmFXO1AePo4WX449Ga0nn3B79gKxub2ft+/Gfg3h7AjghN5MIhekeirRqTVeFFep07K3nBZKIQA6HGKudBm+AR2l5Rj0ueX4amQBDTh3bC5OF676sIM9Br6+IUIR9nFXDiEeJTYzKPEFsvoF174myoGAm3T3uv9t5mLN6wH7e9+7N1xnoAWPUucHdn4LunnK+YT41FrQhFOcWGnUeI7cc0mq+RAqF0I0QR4k7GngcBuR20A5gNnFzZtIHY+p+/qOpke9249piR2lv6GzD7lRVaM69YaKgEGvXZxZNVih8yG7dgloZqvZMLNy2J2FARkPthgNBAyOnd+bal2vb8tsB+GT4QYhO72rHjR2D3Ks2QrneELf/mWQDAke4lmNhN/7xhZp434D83C+jcskBI5hGSpA1YeqxFAyFTEWJcNKU3Th6tdZ9+75cK/X3172nzt9q2//Je7O8pGsuj7SxtTJ/jJBDiBtB0mXvKDnZTkl1spkPEogM7mk0Vp67Jj4ufW4K9NY0Y1LkAD552AFy5xdr/IylCwaB9asxJ1RjvKbRLjfGd+J1MsRGhoWJY9O2/bGInKIrWHPX5bzeZ/w8GgPl3aMrUT685X6+laizK8vmoFSF2wyVUjfkK9ecTmPKLEwqE0o2Q/hZcykJRNCMgYF582MnvkwRCYv8GIU/dvlgzH+YoTfh41S48PF/SWdkJvJqRLLN0iEdIDIRgVSvC+TdklRx2d/di+bzTu3P2unBKTy2vCEUIhDYv4n7/FtvL66Dqzx2QsxtDS/WLr83M8xb4fWY3Gzf/nMwj5JYpQuE8QnWJbQjIqiW5QEhRFNw9cxhGditCeZO2Lc0N+udjXYb5/RgtMc01xqUSXbEoQt70V4SYX89XaFavOp2FXr+hUL25uOG1H/Hz9iq0z8vCv88bizyfxzy2eCVDhr8eADdFhcUjJFGExADGUkkpmWsMMNfRXM/5EcM1VAzErAixG5qhHdxGWf0d763SuqkDWpUumyR6+3LnCpwlNRZBvQ/pIxSlWdprEwixMYxSY4QtIVVjYp5aaL8ezizN5toKhipC2nLaHU6xVztw/zF/LT4QJ7R0giUQSlZqTFiv6BECuG68LoQtn5cZGNnALvo3xIaKTu/O2aBVudU+AIgmNcYN4IGNC3Hns++iBNrgXubfBoVd4JwEQvwF3giEovUIRakIqYHESuFs3+V1sDyd7XXjyd+Ngdun7YefNu7QUgoNeiC0dUnsJk2xYo4Pnu2+Y0N9jLF8PhM8QizI9OWbPXycGqZ1ReiXfQG8/9MOeN0KnjhnjOlzY32qIqXGjPNR0Y65cB4hxRXas8jN3TjJ5hoDzGsAnz6L6BGK3FBRCnedueTgPpg5qisCQRWXv7AMW/bVAl89aC4b9GsKtBMsZulke4S4FDxg7gtDEaLUGGFHOI8QYB5E7OITNjXWZD3YPEIgpA9S3mAjLprcG4OUzbjjtW+wbrfQtTkSvJqRiNTYrp9D7wDFwUusGgNM1cgVoXxenGKD/902NaZfyKJVhJrr5HezTXXWfRUuEFJVSyBUt24hivYsMf5Wgs1a2gxwlhpTFHO/sePHqUdIDAaACIEQZ9xOpKIhSY0xyopycPokrVt4RWUVHvt8nXm++OuBHT/E9p4BQSkwzifVPrjhK83sgm0Z/AAaa9VYoBnYsth5ReKOHzXfyap35fPu2cGOIV8BN/N7dIrQ4q3aeXbH8cMwrneJ+X92bEVKjfHXQUWxngdi1ZjsOLWkxmw8Qsacj/XWClWRBHiEjEBo+zIov7yHvw3ZiEtKV2JC40J88syfgR0rtHOr9yHack6VTln5vKpqgZTYrT/uKTa4il6AS40VWN8/DZAcEURKCecRAswUWGMYRYjvksqnlERFiDOz3XxAAzxLbsaKYB9c8lwJ3rlqCvJ9Dg8PfhBnFxKZZOyEdZ8C/z0FGHgMcOaL5vMhFQeSCwyfunDSUNFycbTxCBlVY0wRcnh3zqcIK7cYpl4DXg0CwgdCe9dqy3uyEQgGURAox+nuBdZlqrbp2+dAEQK0/cPv06g9QpyCxIIRWYmw26sd02pA2yd8uX08CGZpkV6dNaUoB0145JNVuNLHfV+bFwHdD4z+Pe1mnwe0Y0pMpaiqNc3CT70QCT41xs6laBWhbx8HPvkLcPT9wPjfh19233rgqSnm354c4PpfzTRGOBq5IMRQhJx5hGpqqpAPoA4+nDa2G84a38O6AEuNBRq144edhyLidTCcIiRVP3mztI1HiJ/qyHFDxRgDIbbfV74BrHwDWQBuAYAsAOwwGH0eUNIH2PBFFIFQhfk727bNi4A5RwPDTwNOftr8f6ypMWOKDTtFSA+Egs3aOSJrQdDCkCKUbkRUhPSDyFFqTFCEQlJj5sXBs/FLAMABrt/Qff9C3PTGj6FVCnaIRt9YfUKqCnxxHwAV2L7M+j+7uweLIsRNVMlPosgT4PoNWRQhm1LoWKvGePVDZoQOCYTCeIT0i1xNhwOw3N8bADDapd+x51pTQ44DoUhVNPxz4foIAcAB5wBDTgQOOCt0HYqSHI9LGEUIgPGe3fJV5KnC8bj529jeU/SOiIGQ3fKA3lnaJtiWwauWse6/8o3644awiwEA9v+mPXrztPPHXw/U7nH2PkxJiDI11ugPYNEvmwEA+QWFuPOEYaEL+QrMYCOcT8gIxiSBkBNFSFo+bxMIWczSMkWImeKbuZsu5+XzAICRZwH9pgHdJ1h+KkvH4PvgAHwcGIN3Cs4Aek7Ulneq/MnM0uw4qdhkXTbeKTZEjxAbF/jgOk18QqQIpRtOPUKiWdouNcYCCMUtyXlzJ+dOs6z4cs97OO3HURjdox0unNw78jaLaoa/wWredsqmb4At32m/V+/Utt8uoGHwFzg/lxqzU4TsFDK70uZYq8YsipBE7WEDebve2kDVWKVV3xmTbHLogdDre7qjNtgRY11r9H8owMgzgEX/NJeNORAK5xGKUD5fOgA47Vn79/LmaFV+iTLSq6rjQKhrvooxPjdQwf1v8yKtykiW1ghHQBggXR5oE/yqNv2q+JuQaCddZQNolvmdRhsIsWPfSbVZg1712WUUsGc1ULfXeeqCVXD6CoAC54rQX+etwri6asANHDe2H7K9EnVFUTQVsW6fpmYUdrHZBlER4q4/IYqQ5H2cNFTkq8aclM/z35fDhooGHQcB54ROV1QE4LvP1uLvH/+KrA93oO8l4zHMV6hdP3atBLocYL9OVZUrQuwaJx5famjPMkfYVo0JHiFAO86jVcuSAClC6UZIakwYoJgi1FitN4mT9BGypMbCdDZ1ucyDlfNNjHOtxhhlDe754Bd8v3F/5G0WB/pYBzzL9CEqUL3d/NPuosybENlnDVc+z9+BOKoaExoqeh0OSvz/ZWoPS+0Udwdy9PSOTXqMVYd9Vt8Hm/NGmP/oPAzoOsa6sBOPEBC50y7/nMwsLZubzI5El9A31ZoX8QiBkKu5HncfpaVb9qkFaFZ8QP1+YF8MFZKiP0pRwvcS4vebxSMUYx+haFNjvE8tEsxDlV1oVT6cwG7KsgocK0JvLtuK/367GbnQvsd2RcX2C7P0WDjDtOiVDFc1JlWEeBXdThHiutU7KZ8Hp6hHqwiF4fKp/TBtcEc0+YO49MUVaO6qp3kjKZ3N9dYbQRa8s2ucWOgS96SrzCMkls9zPZ7SxDBNgVC6Id6l2qXGGqv1E1KP2qWpsWZpDyEL7GBls653Gg4AuKPkI/iDKq54YRn2VEcoDzYCFj3XG82At3Ml8NldwId/BNZ9oilirFKEDwxsAyGveTHi1S+78nnjzl2x7ltjHiinfYQipcYcKkK5HbRJde2Wq9oBpXwjAqqCla6BOP+MM2Ds5x4TgQ4DrMs7DoSEC7N00lWJShZutno7Ep0aq9NLiD3Z0sk6tfc0g6/OPu07L1cLsMTfV3t+0zehr6naAXz/b/uqMrGzNBChTQO336JVhHizNDvmojVLs2PXSQDFqup8hZwp2KEiZJTPRzBLB4PA0mexftVS/PGtnwAAA0r06104JVNmmP7xNWDL9+bfYT1CQh+hcKkxwDxOQwIhdkw5VITs1h8nLpeCB047AD1KcrG1vB7v7Nd9VZslxzSPGEgaipB+rRID3xCPULRTbNh4hLy5odfsFEOBULoR0SzNeYT4wZgfEPieGML0GiEY5kP97uW4RwAoGFb7LcZ3aMLu6kZc9dIyczJLkeodWjDmzjIvgtFUjr13NfDl/cC3j2l/D52pTScCWL014izwDEujOgdmad57wZv0IlaNxdhHCLAJhLg+OEXd9eVClaNfFn+kPao9ccuJ4zCod3egTFeFek0G2veDERgBUZilheMhnEdIapaOwgyfaEWIDyLtjJb8e+pqR25hOyxWBwIAan9827q8qgKvngu8f519gzpZxVy4aTYMRUjR9ldUHiG+jxArpY42Ncbu9B0EUIlQhESPkDhwLp0DvHc1sl87E83NzTi0fwm6Q59aRpYSZrAbI+YR2rceePMi4M2LzWXEfmqWqjEHihD/f9tAiFeE9Oul1CMk8RYl2BBclOPFE+eMhs/jwiu79OvH+gWhlV88YuUduzayx5DUWKzl80JnaWOuMe5a6qQrewvSJgKhxx57DL169UJ2djbGjx+PxYsXp3qT7AkxS4fxCDE52JtrXY7Pd9s0UzTgqzDySoFuY7SUC4CHJzUgL8uNb3/bj/s/XiN/PRu8C7tyQUIUvYSYUW/kmdrEstPvkSskLIDhZzsHtMGFBY+W1JjdJKqSijEgzFxjrKGi0EeI9wnIiJga4zwu7PMKpurtFfVYsfBDbRWlY3DqWP2Cd+ITwIwHgEHHaXfv7XqaL3LsERI77YbxCEE1B7W4FKEEdUaOUDFmfc86Q+3o3KkzfutyPAKqgrzNC1C/ebm5/Mavga36dWHvr/J1iuXzQPgLuqggxdtHKFpFrTkGRSi7KHxXdhmW8vnO2vkY9Fu7Swf8UPXpZrqqu3BOwXI8OmIjlMqtWmq412T79YupsSpdgeYLDkSLQLQeIT7FbtdkVNZZOlxKmZEkD8zQLkW4e+ZwLFUH4Ldgmdbdf8kc+xeEKEIsNcZSqBFSY7GWz4uKkMfnrCt7CxJ3INTc3IwtW7ZgzZo12L/fgZ+khXnllVcwe/Zs3HbbbVi2bBlGjhyJ6dOnY/fuKCYGbEmiKZ+XVYwBgsxbH/ocj4cLhFiapYdWiVBWsRz3naKpM0998Rs+XCmZGJQFK0Xdop/xO9BsXsyOvAuYdrtmtpQpJEZXUuHO0e3hFCEuNWarCNl4pmyrxoTyV6d9cXj1o2ZX6HbwgVAx+7xm4NfkD+KKF5dhREDrD3TgITPM13YaChx4kZlGZd+b2+dcghcVwkgXdBYghpuk1Y6kKUI2/iD+PdWAob65sgvx59/NwKeuSQCAVa/dYVZGfs01qLNrZSD77OEu6CHl9tEEQtxxZyhC0abGYvAI+eL0CLk9pqGZD+x/fhMKV5V0c8H/kP/9o9ofEy6LLjXGBnT+c4lFI2LVmDdCaszlCjU52xWXOC2fZ0TbTDEKThnTDWeM74UnAscBAALf/NM+gA3pzdYgPNZbG4PGO8WGMQ+k4BHyZEcugmlhYgqEqqur8cQTT+CQQw5BYWEhevXqhcGDB6O0tBQ9e/bExRdfjO+//z7yilqABx98EBdffDHOP/98DBkyBE8++SRyc3Pxn//8J9WbJsdp+XxjtbxiDBDubmpCn+PhLxAd9AkOe0zQHjcvwowRZUbl2A2v/YANe4WLMQtWirpb75icwMpzFbdpGGbrAgSPkB6giIGQRRHiOsLals/bKGRG2kKsGtMHExYwenNgpKLC3WmL/2N9fhi8qiFRwP7vg1+wbvN2DHJp5cVZvSbZvxcLhJyqQUB0HiFAG7z5vjjRKEKGotGSgRAXsFbrAbyvEKUFPnQ97o8AgAOqFuCd+V9pUxSs/8xc3jYQkniEwk2zISpIUSlC3HvFqghFVTXGp8aiVISM1Jh+bTKOZ/3aoKqo++x+AMC//DPQ7M5Fzv5ftHnzsvKBcRcjLKIixAKioN/cT1H1EbI5dtl3aXfzaASI9REUIZuy+yRx23FDsL7zMdiulsBduwvNy16QL8j2G19VDJjXazVovRGMd4oNu6oxiyKUoamxBx98EL169cKcOXMwbdo0vP3221ixYgV+/fVXLFq0CLfddhv8fj+OPPJIHHXUUVi7Nsb5qxJAU1MTli5dimnTphnPuVwuTJs2DYsWyRtQNTY2oqqqyvLTooTMgSOcjFnMI1TN3YkJgRAvxbJlbFNj3IDRQfNPMEUIu1YCDVW4eUI2Xi56DP8M3oV9Tx6LwHMzgedP0n6WzNWWLerGmQmFAW/Hj8Dbl4cOMMxQmd/RahIXL6SAebKKDfncXvO1fGrMUITsUmOiImSXSmMGP/2ktvTFCTPAsEGL3c2Ln92SGtMDv50/As+fhE1zLsRL3/yK0a61cEMF2vUCCsvs38sIhKJoWRCNRwjQ+6twF8KoPEKJNks7CIR4Ez0LhPT+JcNGT8bm9pPhVlQM/+oSNL50nvZ/dvxzAzg+uQ1YOlf726gm4j67k6oxIxCKxiPEKZctWTVmUYQcBq5Gakw//oTAvuKH95Bb8Suq1RxsGno5POMuNF879nzTA2SH6BHilQ322aJKjUUIhGxTY5yJPJwiFBJARVk6HyU+jxuPnD0e/1WOBwBUffp3c/vqK4D3/qB1jmaBJPNxsZtCPiXGX7vjnmKDeYQkipA7inOhBYi6j9D333+PL7/8EkOHDpX+f9y4cbjgggvw5JNPYs6cOfjqq6/Qv3//uDc0Fvbu3YtAIIBOnTpZnu/UqRNWr14tfc0999yDO+64oyU2T05I1ZhwohmKUJjUmMutmfjUIDcnV4SqMcAcUAu7AMU9tQZbWxfDu3QuJjQuBNwA/AB+k6yn0xCzCaKoCH37BPDDi9r6J19jPs96jeRbvx/LhZR1HmUBSThFSFo1Zpcai9IjxO+nrFwtCLIbmALN5no69NNaE4QNhLpp29NcB6yfj54AznLn4IheHmAbgB5h1CAA6Dpae2QpNic48QjxA0EwYFUyUlk+7yQQYgFrU7UZcPvMY6f7CbcC/5mOvsp2oBpQFReUo+8Fnp+pFQAEmoE9a4CFD2uKxJhZoakugFMeJRf0gLA8259qIHJHXd7bF2sgGVXVmN5HKB5FKCs0EPIHglj20fM4DMCnviPw55MnQmnsByx5RltmwhWR12+XGgO0Yyq7yLwWshuP/I7aOZVXqrcJ4c3SNkG8MalqpKoxThGSmaXF55KsCAFA95JcjDvlGlS+9iraN23Dlws+wsGHHQN8/7QWyO9bbyr9+R21YN9QhLjzkr92x+IRUlWus7RQUWlRhKI8xpJM1IHQSy+9ZPxeXV2NgoIC6XI+nw+XXnpp7FuWIm655RbMnj3b+Luqqgrdu0cxwMSLY49QtX0gBOhTKNRzqTE7RUiSGgOAnpO0QGjZc8Av8wAAvx14O/75zS6oKnD6gd0xoY8+EOWUAP0O19rBA6EXbGaaFCV6QxESAqHCruZ66su19FHAJhCyeIS4qh7bPkI2VXR2dyhi1RgQeWDiB/wOA7VAiPdL8A0B8zpon++iT9C4bSXmffw/nNz0Hq70/Q8lit7Mkl3A7Og8HLjgI605o1MceYRcZkAdbLYGiSktn2eBUBizNGA2chQUIQBQekxA7dnv4eHXPsXemiYUdx+MW3sdApc7S7twV+/QGgsC5jkkK5/ne3aJGD2XPNZH9r9wwSTf9iLcvHnh4KvGIgVeRvl8UQweIc4sDVg8fvd/tAZH1m4AXMCkqUchJ8sNZHUGfv+Ftkw4pZNhlxoDzGOKPbI0Yk4xcNGn5vUyKkXIziMkuabImnIqemsO4/tPriLEmDqsN9bOH4ui8i/x3YL3UTZ0Cvqz3kJbv9em4wBCFSH+8/DXrlhSY3wTRr4iORgwjydvTuanxnimTJmCnTslBto0oUOHDnC73di1y9rTYteuXejcubP0NT6fD4WFhZafFsWpRyjQaErEskCIXTzZRSqSWdqTY17AAHPwXfUOABUYeAz6zLgWfaddhLeCU3Du0j5Y2eForbPxgCN1Xw7XZ4OHDVyi1F7NpcZ4vNlAnv4cS1M4UYSkqTFhgJLNPM/WA9gHQnx1XaQZ6I2LiaKXt8Oa5musMi+SujdK7TwC168dgj9WnYy9KEb74F4oW3WfHUtVhqPHBLOrrxPEgcFukOR9LeKUEU5JtCJUywWRTt7XUISs53Je/4Nx0vnX43/uQzBnUwc8+vlvZhBeudWceJR5UWT+KCdVY6IixNYZDt7LFuvdMzsP1WDk1zbGqAgFg9bO0oBxHanatQFPfbleU90AdOoz0nxd6QDtxwmGIiRLjenHlKEIcan+shHm4B+pfB7gPEKRqsZ4RchGXeJf2wKKEKPvmCMAACPVX3DFf7+Hyjr1+xu0OckAMxAyGipy52W4QMhJaox/jWUeyCZBEUqv1FhcgdCoUaMwfvz4kDTTihUrcMwxx8S1YYkgKysLY8aMwfz5843ngsEg5s+fj4kTHQwuqSCSIpTFKXA1ehAq84awi2dEs7R+cnfoZ727EdMxkzWV7LJD+uKwQVpX08tfWIbKeu5A5mdn5mGBkBgg2SlCQGhJuV0gZOkjxOYac9nfRdumxiJ0luZP6oiKUJ25nKQiDLV6D6GsfGOfPbdoE977YTsCLh/qx3JKam57q1KXKNwOBgbAGiBaPEKxBEIt6BECzO+J75EjMLisEHefqDURfXj+ryj36sdi5VZrGX1zvbyrtpOqMdEsbbc8D/u/J8t8DzUQxTQHqlXRCbfvVZUzPEdZNcb75ASzdLBiC9qjCsVKLbSbgr7Otl3E8AhVaI98aqxJVIRsCgacKELsHDcUIRvTc6SGiuJrk+wRsrytPvfYOPev8O5dBYXvK8RalYQoQtz3zF+7xcDHkSLEB0LczWOgWagas7EupIi4AqE5c+Zg1qxZmDx5Mr7++mv8+uuvOO200zBmzBi43VGYKZPI7Nmz8fTTT+PZZ5/FL7/8gssuuwy1tbU4//zzU71pciIpQm6PeYAxRUWaGmOKUCSzNAuEhLuzDv3NgabXFGO2bpdLwYOnjUS3djnYvL8O17/2g1mCbGeWZhVS4oU1XCAkBhC2ihCXGjPmGgvXUNHOLC2p6FHV0KoxIPJ8Y3zvIVlPJKEPztJN5bjrfa1M/pZjBqP7EVean7PHxOTMzuzkDpn/XzBgDs6KO7ptMgLHCIrQvvXAE5OBn14Pv5zjQCjH+rdPru6ePEab9VxVga926/ulYrM1EPI3hCo8QISqsSbr8vzrti4GHpsArP1Evu28WZo/Vp2mEgJNsEzxEK5yrKnGTGlEqwgxxVlxG4FCQ56W7ipGDU7qrKfFi3vYzxwfCT41Js6XZZiluZsPGU48Quy7lHnBAGHSVX1/2SpCfF+3llOEUDYS8OSgGNU4w7NAvgxTjv2NkoA5jEfIkSLEvcaiCDW3XkUIAO644w7Mnj0bRxxxBIYNG4bq6mosWrQI7733XiK2L25OP/10/P3vf8df/vIXHHDAAVixYgU+/PDDEAN12hBJEQLMvHf1Du0xXGrMUIRsUmOsi3OfqcJ2KFqXZ3cWcOgfLf8qzs3C42ePRpbbhU9W7cJTX7KZqyWpseYGcxtCAiH9IilL6Yi9hGw9QnxqjAVCYczSdg0mZYpQ0B9q/AMiz0BvBEK5ZoqPdZIGLAP5vppGXPHCMjQHVMwYXoYLDuql3VkffIO2zNCZ8veIFyd3yAAXIIaZlTsSTlNj6z8Ddv0E/PCS/TLBoDZXGOBcEWJIFCHGX44dghHdirDBrwWn/v0bgX3rzAWa6+WdpcP5d37VuoIbwTA/OK54Cdjzi556lsBPscGrd07TY+K+DqcIMX+Q4rZWWDlRhPjSeT04vu3DLahStX1/TS/9/BVvtKKBpcaCfi2gE83SgHkuxqMIhaTLhWsxU7zVgDUNL0OWPm0JPFlAt7EAgDO9XwIA5gdHW5cxbjz1dhh2VWOxeIT4Zdxe0zgeFBShcDcQKSCuQGjXrl34wx/+gLvuugtDhgyB1+vFrFmzMG7cuERtX0K48sorsWnTJjQ2NuK7777D+PHjU71J9kSaawwwU2FMUQmXGmN3bHbdTQ84C7hxAzD63ND/HX0fcMM6zTgtMKJbMW47fggA4L4PV+Pb3/ZZc+gMvvtrNIqQqKSw12YVwDKlhEsyxYbiDu2VwYjYR4i7Q+EvCt5oFCF2d5ojn7dJ3ydqTntc/fJy7KxqQJ/SPPztlBFQmNIy6Srtexl+ivw94oVXGRwpQn55asgJTs3SLIUlTgXA01BhBqc5EczSWUIgZKMIAUC2143Hzx6NCj01tv+XL4U75XquL5ADj1DNHq3QAAAm6KlOZqIFgN2/yF/H4I3Z/P52qgiJA0w4RchIHRZp28hPJREJwR/06pIteGXJFmxXtSA1b6s2GKN0oLPtluHNNc/P+nKb8vkIipDbwfEeMhFxmH5ATZwSJiNFHiEAhr/TE9SOgf/4p6MB3OfP5/yx/kbrsRIuNSbORi+DX8bl4a7DDeaNhCcblklu04C4AqHevXvjyy+/xGuvvYalS5fijTfewO9//3vcf//9idq+tocjRUjPxbNqGGlqTL9wGKmxMIOXXfWNyx12DqCzxvXASaO6IqgCV764HDUB1pnVJhDi7zxU1dpHSCQkEOI77XJBiUURYndpHntFyPBe2JTP84EQf4GQVo1FUoRyhJJbPVWh75NVlV4sXLcPuVluPHXOGOT7hO86UlVUPPCfJ9yxYfEIxTDPGOBcEWJBe7hZxlla0VcY2XshpmLCzWcFoFu7XJx4iHaT1LFxk/Wf/np5ysQuEPruCe3i32U00PsQ83l2PrO0m12wwafGIs1yL0P06TlRhJhi5pEE73ZwpfOrtlfh1rdXAgB8HXppz7PPGY/PTVGsvYRYqT8Q2itJDH75dbDP5VgRChMIsQFfVjUmvjZJU2zYwhVXqC4v9hQfgGWBfub/80vN3/2N1mPFkhqLUxFSXOa5ws5toPWlxv7zn/9g+fLlmDFDa/9/1FFH4fPPP8dDDz2EK65w0B+CCCWSRwgwAyE2YEhTY6JZOvHyrKIouGvmMAzsVIC9NY145QdminagCDXVmBevvHCBkGCW9mSHytyGR4gFQi57RYhPOfDI+gixC4TbZ/XEsP1dvUszc/Nt6QGrWdpoT6Cag5i+Txbpcew9Jw1H/07yNhRJw8kdMmDuW76PUMypsUiKkD6o8oqQqsqPJydBoqgOhFGEGCOHDZf/o7nBuVm6oQpY/G/t9ymzrceOSzjObGe6F+bEi7ZyTCxMCNdLiG+myL+no9SYdn3xZ+Xj8heWotEfxNSBpejVR1CA4kmNAWZ6rHKrVXVortPSpWIDUxnsc0XyCDHE45wPpozn7AIh3iPUwoFQtwON7VK6jMLD50zCcmWQ+f/c9lY7AX+s8EFRLFVjfH8lRQm9IQf0dG+YthMpIK5A6Iwzzgh5bvTo0fjmm2/w2WefSV5BRCREEZKctD5h0PSFSY1FqhqLk9wsDx4/ZzTyfR6s2Sd0EAXsAyHmD8rKl29/UQ99uV1W+dbjC1Uz2MXIogjZ+ByMO21BBZHdcbMLhFe4+LEB9vungYeHAW9caP2/RRHiXqtvS0259tnL1QKcN7EnTjigK1ocxx4hbuCOZZ4xwLlZmh2r9eVmcPnaecDfB5qVdk6N0oBVEfLmWVNadhTafBfNdVxn6Qhm6RUvaOXoHQYCA7k54oDQ8zmiIqS/V7S9hMT1huuCbjRT1BWzGBSh1fuC2LivDl2Lc/DQaQdAKe5mXa7DQMmLo4AZpss3WJ9vrrcO3naKEBBZEXLSW0sMatIxNZZdCHTSJs5GjwkY0qUQwyYeBQBoUt34fH2N1RAvpoAZsTRUFDtus+OXndsuj17w04r6CNnRq1cvfPPNN8lYdetHvMMI5xGy+xvg+gg5SI3FSd/SfNx3ygg0qNp77imvMP/JUhmA9c4jXFoM0O742Wev3StMQskP4rLyeS6l11BpzpzOL2PnB+DnGjPMfUKKpf+RmorFBsFNwrHOe4TcWTA8Tc0NqGvyY9laLe1S1K49/jRjiPzzJ5uoq8a4eZ1iVYQidThmx6oaMC+cG7/WgordWlWd4Q+JNC0DYFWEwhilLWTlSoOsIG+W5gMq2QV9x4/a4/BTQ1Mn4nloF2yIkwNHnRqLQhFigZBPTI058Qhp39OmWjeyPC48fvZotMvLsvYkyykB8hwEruFgitB+SSDEfzbxXOUxFCG71JiNSmxZh7D+dDNLMyZeAbTvD4z6HQDgkGknYFPuMLwVmIKrX1mBgIv1TKq3quDhpthwMkeeOAebUb2sq47s2Mr02ec3b97saLl27bQL1bZt2yIsSVgQTyzZySgqQuHK55lJMskn4zHDyzB1mKbibNm9Dyu36RdXiyLEnWRGICRvbAlFMQekun2CIsR7hDzyhop5eh482Gz1nERTNWYEQsIFsudE4Ia1wFXLzO3j02N81ZiiGIGA2qy1G2hq0C7cp03ojyxPUu5FIsN/JsceoQi9U+xwbJbm5PP6Cu39WODDfCxiGifs+3LHiZPlGUWmmlGpaufWB8s3yANB2QWdpXPb9QxdtzgIy1IDAa5aUQyE7FJpIiGKkIPUWLaYGousCP26WWuWWKvm4J6ZwzGye7H2D24fxp0WA8zAl/XCYTTXmWqXN9feswPEoAhJlhPV4XRUhACt0e1VS8ymld5slM3+Cq91vQnVDX5UNOk3Z+y7Z4SbYsOJWVpUhNh+EIt2Mr1q7MADD8Qll1wSdnb5yspKPP300xg2bBjeeOONuDawzeFEERJTSeECIXYBbIE89QljNUOeT23C759bgr01jUIgxB30dl2leWSBkNsnqBkSRcilS6+sqogFXfwyIYGQxCPEp7jCbV+gyVQwZK/Tt/fFb9big592IkfR3qO4KLx5N6lYGiqGCWwS6hGKZJbmAqGGCk2pYBdfdsEWjb1O3tfp8gxOzWjsoCl2X/y8GU3NQl8gQO51YAb/IiE9JL4WCN9/iF9/tA3oQjxC4VJjokeIVX+GV4R+3VWNBT9prTN6dOmEk8dwn5dXhBLRENRIjW20Ps8rQnYVYwwjEIrRI8Svw1jGSR+hFChCErI8Ljx+zmh0KvShTi9sCdZVWBfiA+agEPhEM8VGiCLE5rwUFaH0SI1FeUUDVq1ahbvvvhtHHHEEsrOzMWbMGHTp0gXZ2dkoLy/HqlWr8PPPP2P06NG477770qLDdEYhnlgyM16WqAjJUmMOZN4E487SLqAFbj+2Vzbg8heW4eV2e81ou1mmCIXp58QCjZrd3IzGYarG2N0y22f5nbSeM9U7gY6DtefsUmPhqsbs7uiycrWLb3OdFqwxpY6/QwX0gaUcLy78FUBvDChxAxVh1tsSiMGkHUaAGE/5vB6oBxq1i6nd4MEHk/Xl1v0TkyLEDYxRKULdjceOnboA+4BsNKG5qRFZCsKXzweDQNU263p4QjxCskCIey5EEXIYCEVTNRZJEQoGgU0LLWXrtU0BPP+/X3BocCPgBg4c0MO6zoLO2nmpBuIrnWew1FiFUM3XXBe5YowRsWpMTJfLPEJOzdIpVoRs6FiQjad+NxbN/9bO4Y+XrcVR/AJxN1QUJqMVPUJpmhqLOhBq3749HnzwQdx99914//338fXXX2PTpk2or69Hhw4dcPbZZ2P69OkYNmxYMra39cNLrXZzQEWTGjP+boHKBV02LstTkR/0YPGG/dhQvRlGY33+Im7MPO9AEari0quiWdqiCHENFQGtUeOeX8z3AqKba8zoKh3mQpbbHqis0+a/atdLe44FfPqFuUnxIgvaYHruxJ4o3aHfNYkye0sStUeIm3Q1VkUI0PaNzBwPWEts6yusAZqhCHFzYkXzvtEoQqyreYcBhjoypDQLnnLte9vfoMKoWRMv6LW7taBIcQEFZaHrduIR4o9Btny0A0c0fYRCFCHBI7TqbeB1ayf+PAB/BQB2459bbF2nyw0UddU6dCcyNRYyBU5d6MzzdkTyCDlKjWWIRygMB3QvRkVhPlANfP3zehzFH5LxTrEhttgQq8ZCAqH0SI1FHQgxcnJycMopp+CUU5LU8K2t4hICIRnRpMaMv5OvCLE7cG+wEQ+ffgAufn4Jmqr2mAlYqUfIgSJUtd18zi1WjXHl83xqjF+3JTUWjUdIXzZcwJJbonlCLP2STLN0eW0TyqtV9AFwQFk2bj52CPC4jQm7JXHsEeIbKsboEeK/r7CBkJAa4++2WQBkKEIO0oqxKkLDTtZm6x57IbBSS+3PHNoOnoXa57/prV/w2CW9NX+XqNSwtFhBF3mVmiOPkNBDCIghNRaLIsSqxvT3YurAfr1zfF5HqCV9sHl/LXZXN8KlKBjUuQB5RaXAkBND13von7Vu4WLX+lhgqTGGN09TXpvrE6gIOUmNZUDVmAOKC7RAqBBCgCyrGnN5tZugaMrn2ec3+ggxs7S+/zzppQg58gjNmzcPN9xwAzZs2BB5YSI+LIqQzQAlKkKyO6GQ1E8L3JVwkxJOG9IJN0wfiHYKN7gF/WZVFgtOCmzM0kBoIKS4tcFFrBozzNJcZ2nAVJv4QIg3XfMYwYBqDvjNDhUhQAiEtNc1u7Jx8XNLUKXn4/9wSHd43a7I3qOWwKKqhfMIcdV0sZbPu1xcY0mbATkYFFJjFdZ92pIeoYLOwKlzgd5TjHVkowFuaIrQki3VuPnNH7U59sQLOjNKy/xBgLk/w/lwZL2u4jVLh60as2uoqK+DKS7DTsIzA57AIftuwWnNt2PPqe8i77L5wFkvmyoaz8jTgZOeSow/kaXGGIW62mZRhCIFQpH6CImpsQRVjbV0HyEn6Ns0VGzHJZtig21/TOXzETxCmWSWPvbYY3HBBRfggw8+QMeOHdHQ4KCskogNiyJkc5LxHiFPtvzOUwx8WuJk5BvnqSouO7gPOrhqrMuwi2s0qbFqPRBiJ5HYRyhk0lUWCDFFiEuNGVMXhFHM2B05PzdOpG2UBEKv/7gPSzaVI+DS9n2hR79I+NMgELI0VHToEYq1fB6IbJhuroVlktCGCus+jbtqLEZjOvvuObVKdXnw5rJtePCTX0OVxAo9EJIFBoC57zrpbRNkgQ0/vQYj3vL5cH2EbBsq6ueTHmisrwTu/uAXAMCfjhmMo4aFuYlJNKIixNKOFkUoUmosGX2E0rChohP04+mIPtZt8zfxqTFWuei1/h2OkPL5CFVjaWKWdlw1NnjwYFxxxRUoLy9HZaUmU8+aNQt1dRFKYono4E8s29QYFwjZnfypSI0ZAYPWRVlproVHtUqf2/fu1+4aalkgFEVqjF2oxGaA7O7D8LCIgZAkNRbSR4gPhITGkOECFmkgpJ0Ti7c2wOtW0Lesg3V9zQ4CrGTjtKGixSMUY9UYELmEvlEImOvLhUCo0voYYboMy3sC0SlCsnVwgdCfjtW6Tz/62Tos3KAHEQEhNWanCLHzsLPewdrfENqZXFbZGGvVGNt+R4qQ2FBR3zY9EHp7VSVUFThnQg9cOLm3s+1IFGLfqMIu2mNzXQxVY07N0g48Qk5SYy3hz4wW/XjK8lvPu7Xb9qA5oAc8RnGEfhwytWf9Z8CaD+XrZZVmhllafy2bWy9NzdJRl8937doVK1asAAA8//zzqKmpCf8CIjqi9QjZzracgtQYfyFqrjcnF/XkoEm3o13/0mJUle827y5yO9ivj02jwBQddhKJVWMhlXbhUmN2naUlgZARsIS5kEkCoV37tOqaevjw91NHoriQVZPVawOLoQhFuHAnk3g8Qk46NItEUoR4fxCgp8a4Zpzxpsai8QhZ1hGqCJ06rg+uPlwrCf/vkh3ak0ZqLEIgxLajC5sRXA0dDIzKRu6cjTU1xlpIhPUIiQ0V2bGhbVtdjfb/ykAWpg4sxe3HDTUnB24pQlJjLBCq52aej3A+sXXYHTvieRBX+Xyap8bY8cTP2wagsb4Gt769Ukv7Gue7vv1qQHvu5bOBV84JPWfZMoC5X1hwXaWfFyygzXSz9HXXXYfjjjvOmMH9hRdewEEHHYThw4cjJyeFUn9rQawak2FRhGzmqEpF1Rib7kINahdiPThQctvD01gFNFZhx74K/PHlRfgnEHnagzwWJOl3zIbRTij9Dum9FE4RYoGQpFSWbbsxDxTzCDlXhD76eSe67C9HJxcwY3QfHHdAV2AtN2VBoMkMAtOmasypRyiJqbEm4aLaUGFV6WJKjXE3CbEqQpLUGNxeXDutP7ZX1GP/cq2pZl1dHXIBziNkkxo74g6g98GaIfu9q7XnAo3WoEemCEU7cLBAKLdEG4TsqsaCQXuPEIDd5ZX47bdtmACgqLAY/zxrNDzuFDQBDUmNcYGQoQhFSI1NvEJrtKp3Ww4h0uzzgBAIKfKqXvG1aWiWNrbJCIQUACqy0YyXv9+Colwvbg76tZ74Hk4RCjSZQXVDZahfVfQITb1FS2MGmrX1jJmlv3+GK0JXXXUVlixZgqOOOgqqquKxxx7DpEmTUFhYiMGDB+OMM87Avffei//973/J2N7WjyOPUCyKUAukxhTFaoqtNSfIdOkDYUlWAOu2aoGJGimnL051wIIXTwRFSKwaqy83/Q52qTEgNG/tqGrMDIQWrNmNq15cjhxorz92TB/99cwYW28NBFJZNeYWgkk7LIpQS6bGKoC6vdz/qzQ1hA3wUZulY/QIsXWwAExxA4oCRVFwz0nDMbCr9v1v2VuJX3dVRzZLdxoKHHS1VQ0UDaPS1FiUngp2nLHj026/N9XAuNEIUYSAK579Bopfe+0Fhw1Hvi/mQuP48AqTLfNmaadVY4VdgMnX2E/Y6yg15rTIIP0aKlpg37GQFu2qDy1PffEbtu4T5qkM+q3HnyzdKipC7fsCR/4VOPpe4Ig7gRL9mpipHiGeESNG4E9/+hP69u2Lb7/9FtXV1fj6669xzTXXoF27dnjnnXdw2mmnJXpb2wa8ImQXvDjyCNlMKppsjDv/BusEmfqJd/ex/VDi1Q7+3Y1eNPnDGPByhAsWO3nZxUhx6UqOTWosp505yNfu0R7tUmNAaC+hKKrG6ip24/fPL0VTIIh2WVrAoLALM1+OzAZyxd0ywakdbi+MOdCinnQ1iakxpu6FeISqrNMBJLOhomUdLBDSt4/7zrxuF646cigAwBVsxoX/+txsOminCDFcktJ7hqzXlTH7vNPUmL5ONujbeYTYPnV5zM+qKFD199u2twLFbm1d7YodzO+WTHifEJ8ac9pHKBIh10yZIsQF13b+ICD9FSExNabv2wJXM/48Q2s+u71cOObVoFXBkRnwRUUo0vunSdVYXOH92rVrjd/Hjx9vpMsAaDlGInqceITcXu3k8jeECYSEu5uWylPz6gcfCOmG50EdsvCnaT2Az4C9TR7c+coKPHLGAXK5ne/cDHCpMWZ61E/QEEVI/1tRNFWoaquWHivqZp8aA0K7S0fqLM0+G4CGyt1o8gcxbXAnlOwKAH4InaWhfV/8hKwt7bPgURRtf/obwqcnjSk2uNYHcSlCNikaVjpf0EX7vhoqrOW6/PGUle+sl1Gs5fM87Ltr4AIGjtxs7f/5ngCy6nYCPiCQVQi3k/dz+7TjUazwSoRZ2i8qQjb7nW+mqB+PdU1+qEEP8tCITrlA7wIAlYhclZVssouBat2TxVJj/gbz2ImkCEXCUWosypQykHYNFQFwihAXCJVvAPz1uGhKH9Q2BuD6UrtJ3dMAlAJmaowRVhGKoLFkulnaKS1upmstOKkaA8z0mGx6DSA1qTGA6yXEDVx5HUwVx9+AoR20C0gdsvH+Tztw4+s/IhC0CZz59JhYPs8+k7if+AuUYZjWDdcyIypDnG/MQZn7D/u19ypCDQ4dUILHzh4FRewTxH32tKgYY0TqtAtYTbotoQixlFJ9ReiEkMyI7FTd8WRrZnxvnjkJb7SIZmnxs+v7p1OeCxNKtIHht6ZibNgbplzd2D4W3Agqj2waGHZsOlWE2HFmmKXt9rvVH1TX5MdFzy5BXVD7nH+fOQhZAdYpPcWBEDM7e/OsgS27zsRbfOCkoaK3lSlCLLBm+1Y/bq4+vB+6FGjH3Lp9+jGnBgRFSBIIGVVjDhWhTE6NEUnEiUcIMNNjjlNjLaUImU0VrakxLhjQpexeXTrC7VLw5vJtuPaVFWbZJg+fz2cnD7sYsYuNaJbmT0LmE6reqb+/pFmduH52ckaoGlu8YT9mvbxOe6mi4omT+8HndnGqD1OEuOAwHXoIMdwOAiHe2xPrXGOAtceUDBZoGP139MBYcZnbwAIhp+qOywVc8BFw0aexD+LsvVlwbJNydgWbccsk7T02B9rjzH99i42RgiGjX4+dIsT3EbIJmuwwzNLtzdcxRY+H84hUNTTj3GcW45v1+9AE7XP1becxU0+pDoSYYTqn2JqiqtW9ZPFuX7SKkF0PISD9+wiJ22RMYdIIBINQFAVdirRjoEnV9sPGvdXWQEhmwHd6s5RmVWMUCKUbTqrGALOE3mlqrKUUITZwWFJjJZau00zKLi0pwT/OGAWPS8G7P2zHpc8vRUOz0L1Uqgixplx2qTFuv4UoQjZTbPCvYwOG0VAxNGj5bPUu/O6Z71DeCNQq2neQ3VRuHdSM2ee5qrF06CrNEFOMMtjx1VwX2qcpGoyAKoIilNvBur9zSkyjMzMiR+P36dDPbF4YCyHl0jbeO38T8hu0YLs2uzN2VjXglCe/wcpt1vJk67ptfD9hzdIxVI0xZOkxXRFq8hTgrKe/xZJN5SjI9qB9sX6j5a/nUk826nNLwQbrnHZ6t3L9u2GBUKIVIVmgwx+b4dI/aV8+LwZC3HGi36wpelDTqZ12LPy8dT9e+W69uZzspkY0S9uR6VVjRJJx4hECzMHANjVmM5dWsrGkxvQ+MBZFyHphnTGiDE+fOxY+jwvzV+/G2f/+DvtquIs932fIaKjIFCF9UBJlWH4fsik8WAk9O/GkqTFWJio0VBQuZK8t2YLfP7cUjf4gDh/UETnFuupUt8860IuKkL8+TVNjYS5afEM+Y66xGFJjWRECIXZM+PKtPWNy25vHOuvaHGsFWCyIAavop+KruXTF6rAJYzCkrBB7a5pwxr++xcJ1eyHFbaMI+SXBerR9hNh+zi4yB3SZp0P3iHy7vRkrt1WhJC8LL108AdnZegBcXwFDnUu1ImT0AdIf2XdjeMcSGAjZTXjNV405TY2lZUNF4frHn3PsGqWnuQZ2067Bbqh47mvTFyxXhKI0S1NqjJBi8QiFu1OPUhFqabM07xHKbc/5ZBpDpPZDB3XE8xeOR2G2B0s3leOkJ77B+j015msZRkNF5hFiE/uJVWPcPhSbKoZNjTGzNEuNWdWbYFDF3z5cjRte/xH+oIqZo7riyd+NgSuP6yXEPpvbZ24X/9nTKTUmKmsyjACmtmXK57PyrT1jcttzilCUqbFEEDLbuJ0iVG9M0JrfsTdevmQCJvQpQU2jH+f9ZzFe+G5T6LptPUKSaWCiTo1xRn8vp+oJbNmhnRe7m3zoXpKD1y6diGFdi8xt4yv3UtkAFLCmxgDzc7Ebl3irxsT+ZNJlopyjD0pqq0PtEK9/3lzrsQwY6o6iPz+4Uy6yYKZXG+slzZSdKkLRBvZJhgKhdENx6BHqOhqAApSNkP8/FVNsANZAyJiJu4zrL1Qv9RyM612CNy+fhO4lOdi0rw4n/nMhPl21yxoIsc/Uvr+2vs76Zw9RhPjUGGuquFu7W2EnqkwhMwIhlhozB5PK+mZc8t+leGKBJg1fdVg/PHDqSG0SVb6poiz1xX92Y+qDNAqEwnqE9O+oqY6bayyGY4kF7g1V8v8bjRILrGXSuSVm4BNLaixeQibZFPZVbnugsKv2e7BZO666jkFhthdzzx+H40d2gT+o4k9vrcRt76y0tosQJzdlJKKPEB9ws2CWu4NXVRXPL9qI975fAwDIzivEm5cdhL6l+ebrAM6InBe5EijZdB1jfRTPoUQrQjI8ThUh/X8eX2qrQ+0Qb4y9OdbrFBAyxUbPdtm44Yg+xkteWbg6tChAnGLDjjRThFLUHYuwhb/YhBugDrkJGH9J6Bw8jJSlxvSTaf96TUVweYB2vazGUCM1Zr2D69exAG9dfhAufX4plmwqx0XPLcG/BjfjSGPd+kWooBNw/RpzcLUrnwe4QGin9aSTpcZcgiKkDybrK/w4//WvsXl/HbLcLtx78nCcNJprmGcJhCTzHvGf3WgFkAaBkGGWDhPY8CZnQxGKwSMkm5ONx0iNFYSmxph/iM0516KKkJDClE3NcuX3Ztouv6Phy8n2uvHIGQdgQKd8/P3jX/Hsok34YWsl/nnWKHRrl2seg3YNFaVTbDj1CPGKkFWNq2n04y/vrMSby7bhNo92jE8f3Q/eAm5wFBUhX4r9QQDQfxpw4wbzmicGQon0CNkd4/x7OlGE0tEfBIRul8enHeuNlVwgJNw0qgFM6lUIfKn9WV9XjeP/+TX+dvIIHDO8zFgGgHNFKNCoTTuU4mCRFKF0hN1phAuEFMU+CAIkZukWrhrb8YP2WNJHGyyM/kINnCIUenHtkO/DixdPwKxJvQAAb63h7pb5kze7iOsXFK5qjDNL84NIuKoxXWpX9eVnv7EGm/fXoWtxDl6/bKI1CAJMQ6qdIsR/dmMi1wzxCLFgtak2Po+QEQjtl/+fBTu+AklqTA98WAoknRQhQNtHHQdpP0LXYkVRcOVh/fH0uWNRmO3Bii0VOOaRr/D28m1QeRM9T9gpNqIsn/dkW77DZZvLccwjX+HNZdvgUoCJ3bVt8OYI+5Rtm+G/SbE/iJFbYg6aYuCTyKoxW0XIadUYC4TS4DyXId4Ye3Ks1ynAPN/ZZw76LebmngVAdYMfl7+wDDe9/iNqG/1ReIS4G4qgpJqxhaFAKB1xOQiEImE50JXY7uJjgQ0cO1dqjx0G6M/zVWPhy3GzPC7cfvxQ/POsUWjMKjaeX7KtTt6JOmzVmK4I+RvM6hJAnipknqNAM1Ztr0JNjTY41wQ9mDa4E96/ejJGdCsOfV1ERYj77EaglGK/BeDMI2Qpn7cpIXcCHyzK4D1CvCKU1yE08GlJs7TbY1XMYkwxHzGkE96/egoO6F6MqgY/rnllBZZv04+VqBoqRpsaMxWhl79Zg1Oe+MYI6l+5ZCIGlehDgHhTwt4vUaXpySCpipBdIBSlIpSORmlAkhrLtk6PBITaCISGikf2L8DlU/tCUYB3lqzDkQ99iVXb9c7qEavGuPdPg/QYBULpiKEIxRG8iLJ6S0mPRipFD3bEQMhfH1YR4jl2RBf87XeHGn9/vq4Kx/zjK3y2epe1c3mIR4g7rL05gI+ZbTdrj3b7Qz/h31yyAcc++hW8QV0ROnoEnj53DIpzbdKLrLLN1iPEV405mLajpXDiETL8JXXxmaX5YFHWdd5QhPIFj1D70FRYSypCgJAOid1r170kF69dOhHXHzkAXreCLdVaUL9g1VbUN/FdtMNNseEgNRYMGoNLwOXDzgbtfPh29RYEVWDmqK744A9TcGCvEvubkhBFKA1SYyKJVoScBEKWqjEHfYTSNTUWUkyTbe0BB4R4hMQpNlzNdbjxqEH44Kg6rMy+EIdUz8Pz3/wGAKhpijCzBL+v02CaDQqE0hF2EsVjcHZL8v0tgZjyYYGQpWrMeV+S0k5dzVVn+bBudw0umLsEJz/xDT5fvRvBoBp60RIDIzZB4/4N2qPkLm13dQN+3aNdAL5fvwtBVUW2op30M0b3Cd8pPZJZOl2rxgYfD7TrDfQ+xH4Zo+KoNj6PUJ4eLAYa5WW3hkeoMDQ15hMUoJb0CAHWoDXcdCQO8LpduPKw/ph31RQU5mv79ttft2PKfZ/h8QXrUNXQbJMaE/xr4eAUphP/tRQ/7tKO4275Kp6/cBweOv0AFOXo67MNhASPULorQnyVZqxYOnnHa5ZOd4+QmBrjvGTsGhWSGpN3lh7cvAoeBHFG2U54FC0A+nr9fsx+ZQVWbbcpjuCv2WnQS4jM0umIE49QJDySi2hLIHoqDEUofNWYLZw6cMnhQ1FX1QfPLdqIZZsrcP7c79GjJBf3d6zAeP414n4r6gbsWQ3s/03fFm3fNDQH8M36vXhtyVZ8smoXHnY3YoAb6FHsxUvHjwJeYp8pgnoTVWosjfoIDT9F+wkHrwgZc43F0lk6F8b8eHX7rOZbVTUVITE1llsSmk5LqSKUmEvmwM4FGDCkO7AUKM0F9lY34b4P1+Cxz9bhPyU7MR5A0J1l3qk6SI2pqopVO6rw6dLV+IP+3Ko9TfDr86H94eAu8PYXphqxuykxFCHd05XugVC8FWMAjAmc1YCzqrFMNkuHlM/nWK9TQGgnedVmrjG94nNEJx/KBvUCvgb8cOPN5dvw5vJtmNCnBCeN7obpQzqjKJf1flP0ufYa0yI1RoFQOsJSO4nyCLXkpH+i0tGhv/bo4aT9aAIht1fzhDRUIicnB3+cPBgXTe6Np778Da8u2YLN++vwReV+jOfG5s9/3YcCZT/KinNQkO1BTn5XeAFUb1+NAgA1fheunvs9Fq3fh3quk3VhYQ7QAFx6UHcoPSSBjB28EThiaqwu9P/pDD/FBLtTjOW4VBR98t1tWmDTrqf5v6ZaGE37Qsrn2wO+XdZ1taRHCEhYakxE0c+JWePK0K79SDy+YD3W7a7Btn2VgBt48LMN+G3LUhzQvRhjPXUYDSDQ3IjGJj+a/EFUN/ixpbwOG/bWYtmmCizeuA9b9tejE/bjD9naYDR7+hBMq+gN/PA1vIGG0I2IpAg1cQFqusHfbMTbQ4jhztKO87jL59PdIyQqQr7QaXBU3Y/p5hUhLmhh9gfWEsPfiNI87fw4qH9HzPCU4cOVO/Htb/vx7W/78Sf3T9qx3KsEw7oU4SiXF+5AI2rqapGVH4TXraRsjlIKhNKRRHiE+BMwVYFQQZmZxuBnpY+2ZX9ue60Drn4R6liYjVuPHYLrjhyA937YDvWr+QCnwD66YAOWfW4OWFe463GDF9i1YRUKXMD+BuCz1dqUG2VF2Zg+tDPOGNcdg759H1iht5ZneWvFFVlRY0bgxipzNmfLRVr/7IGmzAuE+AHSZgZ2x+SWmIEQDzseFJe2X+waKjJSmhpLoLqqBxvuYDNOGt0NM0d1xZJN5ch682mgCqhuduGDn3big592YoiyER/4gH2V1Rj3l49sV+nzuHBknyJgM+DOysUVh/YDPtSny5CmJCN4hBhtQRECtAAhXCDk9mrHqRp0NsVGuipC4vfr4RQhfxhFiK/wEhQh+OsNg3W7/Bw8dtJobKuox5tLt+L9n3Zg9c5qfL+xHN9v1AzVy3xAiQLMfPQLrFXX4/ojB+DKw/on+pM6ggKhdCQhVWMe84RtyUCIP8E6cAc1uyA4qBoLIa9US2sJwUNulgenH9gDaOoFfGI+P7hrO+ypy8HOygY0B1RsVzXFpodLC3582Tn48xGDMbFvewwpKzTvQoy5xpqtpuZIdynZxaakvvtn7TmLIsRdDFmglA6pMSe4s8zPxi54sfpk7HoJ8aXzimIGlp5svdN0qs3S3CCboNQYAGt/KWil9gf2KgHKcoEq4IKDB6DUOwC/7KhG/fZyoBbIgumnyHK70K1dDrqX5GJ41yKM7dUOY3uVIL/iV+AJQGHetHBdvRvtUmPCAJ6WgVCu/Pd4MHpr2dyEKooWNDTXhleE2P5Lh+pQGbKZB/hmuIDEIxQUFCH9eGI3SM0NIeXzXYtzcNXh/XHV4f2xcW8tFm/cjyUb92Pd7hr4d2vjEjums70tVNksgQKhdCQRHiFAl3kbWtgszQUAHQaavzOPUGOVeVfh9OI6eTaw8nWgz1T5/4WL1t0njQS6jEIwqMIfVKFuLAD++4TRHr5TuyJcNKVP6Hr4PkL+KLw8LhfQ91Bg3afAL+9pz/F3qLxvql4vL03XC6SIomjfU2NVAhShCIFQlq5clPQBxl0ClPTW3l8MfHwFsb1/rHiTqwiFVM3o6aieZZ1w5Qj9ZmJ/O+AfQFEW8PMfp8PnccHjtlEk/FwQD1h9XjyqatvcNPMUoQRtn1FJGeZ79vj0ZrFhBu4BRwFDTwLGnp+Y7Uo0YmrMmxMaCInl8yEeIf2G1lCEGriGiqHHZq8OeejVIQ+nje2uPfFQPlC5H29deiAaOo2GN4WdyykQSkcMRSjOi67bpx2cLWmWtgRCA7jnhZmiAecXr4FHaT922Eyx4XIpyHIpQPue1v/b7Q++MsdofOgwhTX5Wi0QYnl1PtBxe7RtCvq5QChDFCFA+yx82i/mQIhrM8DDT7gKaMHPMfeZ/+cVoayCluuJxfAkxyNkpiKEQIgFnPzn1gdoJdCIPF+E/S8a8vnKP8ty9bCdUDVEEUpHjxBfmZkoRUj/fsNOO5MD1CO8IpTfETh1TmK2KRnIyudtU2N8H6HQqjHTI9TATbHh4BzVleUsBJGVndr52Kh8Ph1h/SniLgfVD+AWTY3xgRCfGhP6knhyEjeghUy6KpbPdwHApbfsFDIjEGrmBhOHalrPg4Bu48y/xQCKfX4WCKXDFBtOYYoCu/OLNRhwkhqTwStCLe0PAqxBayKDMGPaDMHEzAJO/nMbg5HfHGzsENVMO0WI9wyJgURGKELcNifKI2SkxsIEQmzftHRAnkjClc8311uPMXYNFBWhQJNWSdpYab7O6RQbgLmPqbM0ISURHiHAPKlb1CzNXUBL+dSY/jzrTpzIC6vY2Ew8Cd1ezbht/G2zP1xcIGQMJg4DFkUBpsw2/7YbWOor9P9nUCAkzl4e6wBg113azqfCcLnN/7W0PwgQ+tUkQRESy4cbJYoQf8xGKjcWp3Gx8wgxJc6bG/qdZpwilKjUmL6fwx3j7HuLNLFoOmNRhBRzrjFAD4S44IQPwsWeP0015o2Mv9H5FBuAeb0NNodfrgXI4G+yFZMwj5B+oLVkIJSjD3bZxdbgI2Sm6AQGQuGm2GAUcfOD2e0P3iNklMFHkcLqPx3oOFT7nakfDOMOW09FZFIgJN5tx+0REuYb42eet4MFQKlQhJKWGrOapQFovh0jNVYUuiyg9V4Jh9i9nJ8vjidch/cQRSgdA6FkKEIsEAqXGmsFgRB/PLGCEHacc9VfALjrYjA0EKrda9oB/FEqQsaURqlXhMgjlI4kShHypEARKu4OHP9P7VEJk45KpOE1pLO05AJV1A3Yuli+LQzjxGyKvsQf0AyCZ7wArJ4HDDrW+j8xoMqUqjEgVN2KVRVhgRDvEwOsM8/bkV0IVG9PkSKUbLM0p/D4G+STy/IBmD+SIsTNPM+/j6gkhavezIiqsWR4hNpIaoxvHmlUuDGzdINcERJTYwBQvcP8XVI1Fn4b0kcRokAoHWEHUZzt/I0DWMwHJ5vRvwt9TkwxJTQ1JipCkpOwuLv5eyRFKOCP7Fuxo6Q3MOmq0OfFz59RipDwXSWrasyRItTCzRSB5JXPuyWKEFODoFiDcJdLGziCzZEVIb+gZoomWEa4YD/jPEIJTo2FC3iN1FgGB0KAXv1WZ16L+F5vQU4R8vBmaTEQ2mn+7ucCKEeKEGdFSDEZrO21YgyzdIICoZZUhOxI5h2mo9QYFwjZKUIurmrMiUoRDSGzPWdQICTebcd6J8zmG6vfbzVjRvIIAWYAlJLUWJIVIX5wMdKEhaElyE5noBerxtwS5QmIoAiJNy7pmBpLpiIU5hhn75vJihBgHk/GI+8RkqTGxIaKgFURgmoG22SWJuImEVNsAKlJjdmRTI+QmAqT3alZPEIRyueDzda5rxJBSBVZBgVCifIIMf+YGgQaKsznxfJ5GSwASrVZOokNFQHIS+cZRpWZQ7O0mBoLUYQyPDWWlQyPkIPyebZvMl0RYkGfR1CEmgWPkJHCiqAIAeYx5Sg1RoEQEY5ENlTkH1OJOwuWEvZE3mGGKEKRAiEH5fONDgbnaBBTDRnVR0hMjcWoiniyzECGN0w7CTrb9dYfe8X23vGQ9ECIV4QkpfMMI3UbKTUm9MCy61dk10yRfw0jHQOhZMw15nHiEWKKUIYPnyzlZVQXstQYl+JS3Ob1NJJHCDADoQxLjZFHKB0xzNLx9hFKI0VIUbSLK/MvtLRHiA+EbM3SbKBpjt0jZIf4nm1REQK0EvrGKt0n1E97jl08w+3rKdcBvSZrPy0N/10lMjUWziMkU4Q83PEZDkMRYnf8NgFU2KqxDFCEkjHXmBOztLeVeITcQkrMwylCLDXm8piKu6xqzC4QyjCzdIaHtK2UhJfPp7ZrpwGvgiTTIyQ7CbOLzSkc7PaHMddYEzfrdoICIUsvGl9m3U2GeITiCYQkhulwygQjK1ebxiQVx7KloWKSO0vzHiERI3CKVD4v9MDizdKqai7nVBFKZPPTRJKU2edZaqyV9xECQr1Bsj5CLrd5vqsB54GQk+tbGpXPZ/g32UpJ5BQbQMvONRYO/s46kakxmyk2rMsopipkmxrjGoclUxHKpLQYEDpQxlPNaARCXAl9tJPwtjTJUoQM8zMX2DjxCEVbNWZpxsgNZE49Qun6vbi95rmesNnnncw11grK5wHzuAipGmswewO5PObn5D1CLAgUPULNpAgRiSJRVWPplBoDkndxdeIRAsxAyK6dAD/XWMI9Qjny3zOBhCpCkvnGYunZ1JK0hFmaKTXhFCEPZ5Ze/QHw+CRg50+hy4X0EeICbz4N57R8Pl0DIcA8NhNWNRZNQ8UMD4RCqsb41BjzCLnMz8l3lmbHp50BP8M8QhQIpSOdR2gHHz9FRazrAYDOw+PfpkSQjNmiAWdVYwDQc5L22Mlmf/AnZqLL53kVKJNK54HEe4QAIRBKc0Uo2YEQYA4GbJ4xqSLElc+vfB3Y/TOw9pPQ5cTO0nbTc4Tb724vjOKGdA1QAaBsJOArSpyJvmyk9thpqP0ynfVlOg9LzHumCqPPnH58s/NcDXDT6XCKEG+WzimWrzNDq8bILJ2OTL8bOOQGIKddfOuZcCkw8vT415MoLIpQIqvGhMPY7m5k8rXAmFnmYByyHkkglCiPkCeDA6GQqrFEpMa4qrF0D4SS1UeIT9H6GzTFRza9hrEdLDXWZE7ey/d74dcFcCkclzboBZoERSjMfueLGxKliiaD372lBX6J6i81/BSg3+Hhr5kDjgRu2pg+19VYEdsr8Oc5Ow5ZB2oGS8vaNTaNRhFKo0CIFKF0RFESd5Kl08maLI8Qf9IpLuvUHjyKYh8EAda5xgyPUBLK5zNpeg0gwYqQYJYOcnefiQo6E02LKEL6nXZYszRLjTWak/fK/BUsNWaZGkRitDaq9WyOcbZ96RqgAlpgmugmm06umel0XY0Vj+ARcnvMaxNTJl0eq/GZGfGzi+XrNAIhB+cJpcZahl69ekFRFMvPvffem+rNarskq2qMv2OJJ29v8Qgl2izNK0IJ8jO0FElRhPRAiJ8RPV0H3GTNPq8oXHCjDzBGakxyx82nxlhDStkgYqTGeF+aLBCK4M0SJ20lWhdi+TxgftcsIFcERYgdp2JqzFhG97o5qahLI7N0q0+N3Xnnnbj44ouNvwsK0vSusy2QLAMmrwjFM0izQa6x2uysmrDO0tny3zMBURGKJxgQJ17lPQXpUt0owh+3iSyfZ+sONJkBihOztCU1JkkrGGZpYYZxwHlqjH99OnuEiNgRy+cB7Vio28cpQm7r9ZUF2aIilNcBqNll/k2zz6cXBQUF6Ny5c6o3gwCEEy5J5fPxlLSyQY6lHYDEbafl7jzDAqFEVo2xlAJTNPimfnYpzVTDf/5E9zHi012Awyk2GsyBShoICR4hwBpEMSIGQqQItWoGHgNsWgj0m2Y+x653dh4hdpyKilB+R2sgROXz6cW9996L9u3bY9SoUbj//vvh94ePPhsbG1FVVWX5IRJEsqrG+Bx2XKkxVl2jy7tZ+YlrfGjpI5RhqbGQ2efj2MdsgG+o0krGjek10niw9fhgVFAluncMCzYCDhQhdnzW7jX7vMhSYwGnilCk1FgGeISI2Bl8LPCHH4BuY8zn2HfNAm1FUIRYjyoxdZvfyfp3NOXzaWCWbtWK0NVXX43Ro0ejpKQE33zzDW655Rbs2LEDDz74oO1r7rnnHtxxxx0tuJVtiGT1EUqUIiQ2CkyUPwgQZsrOdEUoDlWEDfCsRDfdK8YAawVVwlNjnCKkqhGm2NDPn5rd5nNSRUhXffiyeXHCVlWNQhGi1FibQfQIuTzW6ys73sTUmBgIOVKE9GXILB09N998c4gBWvxZvXo1AGD27NmYOnUqRowYgUsvvRQPPPAAHn30UTQ22ndmveWWW1BZWWn8bNmypaU+WuvHkyxFKMGpMUYiBwBxyoJMwpsDy4S58aTGsvLMi2RDVWYEQgDXpTkJHiFAU2r8DWaaINwUG7V8ICSrGhPmGhPfB9BSZGxQi+gRSvPvhkgcRmqMeYRcuioupK351JjLGxoYOSqfJ0UoZq677jrMmjUr7DJ9+vSRPj9+/Hj4/X5s3LgRAwfKmxX6fD74fGlq2sx0jMHEl+Dqm0RVjQkdpxPZP8WTwWZpRdFUoeYoSmPDrctXoHmEGqvSv6s0I6tAMygn2tDNz0DP1CAo8v3BzhmLIiTpIxSQKEKiR4gFoID9PF0sAEqkMkqkN2JqjJ3rLrc1YOEDn+zC0Guak6qxNCqfz7hAqLS0FKWlpTG9dsWKFXC5XOjYsWOCt4pwRLLMlwmrGktmaiyDy+cBrXKsuRaAEr9vKrtQC4QySRGaehOw+VuzW3ui4Geg5/1Bsn1spMY4U6psEHFSNca8WZ5s+7njJlymHasDj4n8OYjWgax83ni0CYR8haEFIFEpQhQIJY1Fixbhu+++w6GHHoqCggIsWrQI1157Lc455xy0a9cKmmFlIsnyHPB3H/EM0qIilMgGf5ncUBEwg7dEKHk+3WjZWJk5gdCoc7SfROPhewOF6SoNWM3SDHEQCQbM1g+WjthCdZqT/d5nqvZDtB3CKUK8+MinxrIlgZATZZ7K55OPz+fDyy+/jNtvvx2NjY3o3bs3rr32WsyePTvVm9Z2SZoi5JH/HvV6hEE+kYpQJk+xAZjfWSI6K/OVY0ZqLM0DoWTBT7zKWgrYdUoWqxqB0NQY3zDRkhrLtv4/UwJQomWRlc8DoYGNqAiJ1zQn1wnyCCWf0aNH49tvv031ZhA8LD2U6LmLXInyCImBUAK301I1loGBEFOEEhIIMUWoytpHqC3Cd3wOVzrPL8sjpsYCXCAkS42x/2eKN4toWULM0vr1VFTa+WA9uyj02IxqrrHUp8YyrmqMyGBy9Hm+cjskdr2JKp9XFOtAT1VjJlkJDIR8vCIUYb6r1g4/B1i40nkgNHULhA4irDwewrHssUuNtdH9TshhCiFLryoyRUg/ttjNka8w9JpGZmmCsKH/EcCRdwH9jkjsehNllga0wYZJtUlLjWWiRygZqbFKSo3xSk2jPvhEowiJaQW+mSLfqVs0S1NqjJAhBsa8R4jhzuIqSet0j1A8ihClxoi2hMcHTLoq8eu1lM/HKXLyPiHyCJkkQxHKpPL5ZMErNUF9AtpoFCHRaGo0UxQGJrGhYlsPQAk5dl3kFSEQArRrQh201Jh4TXNklk4fRYhSY0Tmw+ev450CwZ2kQMjlMi8gmZgaM6rGEm2WbuPKBK/URPIIOUqNsWaKwrK2ilAbDUAJOeJ5yAIa/gaIXQOYStwKyucpECIyHyWRqTEuEEr0IMECoExMjSWyasyiCLXxQIhXaiJ5hKJJjYmKkNFQkarGiDCEpMYkZmleEQLiL5+XNQVtYSgQIjKfRFWNAclThACgqJuWuivoktj1tgQJrRqj8nmDqBQhSQ8nu9SYrSIkVo210f1OyIkmNVbUXXts1zv05i4aj1AapMbII0RkPomqGgOS5xECgLNf1boCF5Yldr0tgeERSlZDxTaaouGVGlaybNtQUaYI2ZTPi3fotg0V2+h+J+SEBEIys7R+DTj2IWDcxUDPg4B9662vc+LVTKPUGAVCROaTqElXAasPI9GDRFE37ScTMarG4ty/gFURYp6VtqpM8EpNY4TO0k5SY7KZ58X3ASg1Rsix8whZbjb1ACa3BOg1Wfs9lqoxwyxNVWMEET+JmnQVsJqBabJJk0RWjfENFZks3lYHZI+kj1A0Zmm7horiwGTbULGN7ndCjtPyeZGYOkunT0NFCoSIzMflAqAAUBOrCLXVJn8ymCKUkLnGOEVIDWq/t9UUjaWhYoX2e1QNFW2m2AhRhMTUWBtvW0DI8WRpig8LTphJWpGkxiyvEwJvKp8niBTgkpR5xrSeJFaNZTKdh2kXt07D4l8XG+jVAIx5s9qqMsGUmq2LgfpyLTAqtDHTWwzQerPEEI8QM0vbKELG7POkCBE28MeEoQhJqsZ4xJYgUZXPU2qMIBKD4gbgT1zVmDcvMX6Y1kLHwcCN662TLcaKN1f7nlgbfyhmVVpbgwU39eXa46iznZmlc9sDdXtD76b9NuXzdg0VKf1LiPgKTHVS5hGSKUJujxY0saDG0RQb6dNZmhQhonVgKEIJCoRogAglp5112oZYURRr+icrPzHrzUT46i7FBUy62n5Z/k48r1R7tEuNRWqoyBQhSv8SIlJFKEIgBFiP5Qwrn6dAiGgdKIkKhPQBhAaI5MIbgttyeoYPboadDJT0tl+WD27y9ImL7crnbRsq6opQY7X2aGfMJtoulkBI1llakhoDhKCeOksTRMsjM/XFtB79hCd/UHLJpkAIgHXwOOia8MvywQ1ThEJSY5EaKjYAwSCZpQl7+PNRcWiWBqyVY9GUz6tB7ZhMIeQRIloHsjlxYsFQhCg1llR8nA+mLQdCZSOBrmOAHhM1Q3o4pKkxu9nnxYaKrDqtCWiuhWFSp+OcEOGDY5lZ2q6pKm/Qd6QIcdfqYDPgkvTJaiEoECJaB+QRyixEj1BbJSsXuPgzZ8u6XKYhlQVCUDWfEDvubcvnWSDUYPqDFFdo/xeCkKXGZFNsiHhiVIQAPaBPXSBEqTGidWBUN8R5SFMg1DJkkyIUE0zZyWtvPsenx2zL5/W/A42cP6ig7ZrUCXtiNkvzilAUU2wAKTdMUyBEtA6MEzZBfYTaskrREpBZOjaY98dQhGBNj9mVz/ODVP1+7TGLgn1CAn/tk5bP2yhCFo9QFJ2lgZSX0FMgRLQOWA473tQYO5nterkQiYFSY7HB+i3ldzafC8oUIRuzNADU7tUeqTKSkCGtGnOSGou2fN5lKkcpVoTII0S0DmR3LrFwwNlA1XbggLPi3ybCHlKEYmPqzcDWJUDX0eZzAQeKED941e7RHin9S8iQeoT4ztI2YUO0ZmlAU+ADjSkvoadAiGgdJGqKjc7DgNOejX97iPBQ+XxsjD5X+wHM7tyW1JjeMFFUhBRFC44CjVpHaoCUOEJORI+Qk9SYw0DIrQdC5BEiiARglM/TIZ0RkCIUP25JQzqWGhMVIcC8Y6/dpz2SIkTIiNUjFG1DRYCbgT4QfrkkQ6MG0TqQlXkS6QuvCNGAHBuySSuNKTbCBEJ1FAgRYbD0EZJ1lnYyxYbD0EIWzKcACoSI1kGiGioSLQM1VIwfNkjxHiFDEZLctTOViKXGKBAiZEQyS9s1VPTqgVA0N6NpMt8YBUJE6yBRVWNEy0AeofiR3U37bTpLA1xqjDxCRBhiTo3pHqForsEyVTMFUCBEtA5IEcosLA0VaUCOCdkgYlc+D0hSY7TfCQlSszRfNRahoWI0ipCbFCGCSByyMk8ifSGzdPwYaQUH5fMApwhR+TwRhlin2PDGowhRIEQQ8SMr8yTSF2+O+Z1RIBQb7G7aUjUWziytp8uYakSdpQkZ0klXo5hiI5prsJtSYwSROCg1llkoCtCut/Z9FXRJ9dZkJtKqsXBmaeE5UoQIGfyNCVPYFSeBUE7ospGQqZopgEYNonXgkpywRHpzzhvavFf5pZGXJUKRVdwYDRXDKEIM8ggRMjw+s1lnVA0Vs0OXjUSalM9TIES0DhRJmSeR3rTrqf0QsWGkxhyWz4sGalKECBmKoqXHGittptiI0FCRyucJIkXI+l0QRGvGJQmEwjZUFBQh8ggRdrD0mEwRsrMfeGJQhGTHcAqgQIhoHSRq0lWCyBSYR4jdTQcDWjoDkFeNic9RaoywgwVCMu9lpKqxqMrnhWM4RVAgRLQOOg/X5NuOQ1K9JQTRMoj+CqYGAeGn2GBQaoywo8soLeDp0E/720n5fPv+gDdXm7jaKWnSUJE8QkTr4LA/A5OuBHLapXpLCKJlYCkINmFlIIpASHFpgxZByJj5FHDM/UBOsfa3k/L5/FLgutXRNUglszRBJBBFoSCIaFuIqTFWOg9F7uPgA6GsAu2cIQgZLpcZBAHOyucBa8d4R++THuXzlBojCILIRMRmdHwzRVmQw5ulyR9ERIPLQdVYTOuVNAVNARQIEQRBZCJGakxQhGRGacA6gNH8bkQ0OFWEooXM0gRBEETMGKkxXREymilG6PMCkFGaiA4nDRVjWi8pQgRBEESs2KXG7BQhPkCi1BgRDbwi5EqCIsQM/ymCAiGCIIhMRLybZqkxUoSIROOkaiym9VJqjCAIgogVseImkiLkFqrGCMIpTqbYiIU0KZ+nQIggCCITEVNjERUhLhAiRYiIBiedpWNar640Ufk8QRAEETViaswon8+WL28JhMgjRERBslNjpAgRBEEQUSPO3M2m2LCdHZxPjVEgREQBP+dYIhtxUvk8QRAEETNixU2ApcbsqsbILE3ECFOEEpkWA2j2eYIgCCIOQqrGIpml+fJ5CoSIKGCKUCLTYvz6KBAiCIIgokacuTtA5fNEkmBTbCSyhxC/PkqNxcbdd9+NSZMmITc3F8XFxdJlNm/ejBkzZiA3NxcdO3bEDTfcAL8/tZEnQRBEQnCLHiG9s7RtQ0XyCBExoiQpNZYm5fMZO/t8U1MTTj31VEycOBHPPPNMyP8DgQBmzJiBzp0745tvvsGOHTtw7rnnwuv14v/+7/9SsMUEQRAJRPRXUPk8kSxcSUqNUfl8fNxxxx249tprMXz4cOn/P/74Y6xatQr//e9/ccABB+Doo4/GX//6Vzz22GNoampq4a0lCIJIMCGpsSgaKlIgRERDshQhKp9PLosWLcLw4cPRqVMn47np06ejqqoKP//8s+3rGhsbUVVVZfkhCIJIO+zK522rxig1RsRIsqrGyCydXHbu3GkJggAYf+/cudP2dffccw+KioqMn+7duyd1OwmCIGLCLaTGIpXPe3OBnHaArxDILUn+9hGth4Iy7bGwS2LXKwbzKSKtAqGbb74ZiqKE/Vm9enVSt+GWW25BZWWl8bNly5akvh9BEERMiKmxiOXzHuCCj4ELP7EPlghCRtkI4PwPgROfSOx600QRSiuz9HXXXYdZs2aFXaZPnz6O1tW5c2csXrzY8tyuXbuM/9nh8/ng89FFgiCINEe8m45UPg8ApQOSu01E66XnxMSvM03K59MqECotLUVpaWlC1jVx4kTcfffd2L17Nzp27AgA+OSTT1BYWIghQ4Yk5D0IgiBShlh6HEkRIoh0Q2wKmiLSKhCKhs2bN2P//v3YvHkzAoEAVqxYAQDo168f8vPzceSRR2LIkCH43e9+h/vuuw87d+7En//8Z1xxxRWk+BAEkfkYgwibYoOZpRNsaCWIZGH0wqLUWEz85S9/wbPPPmv8PWrUKADA559/jqlTp8LtdmPevHm47LLLMHHiROTl5eG8887DnXfemapNJgiCSBy2k67SjR6RIYg+txSRsYHQ3LlzMXfu3LDL9OzZEx988EHLbBBBEERLYpcaIyM0kSmkSWfptKoaIwiCIBwidpZmZulE93ohiGRhmKWpjxBBEAQRLS7BX0GKEJFpuNPDLE2BEEEQRCYi9mCJ1FCRININaqhIEARBxIw4TxOZpYlMg+YaIwiCIGJGnLk7QKkxIsNwCy0gUgQFQgRBEJmImBrzk1mayDDSpLM0BUIEQRCZiJhWIEWIyDSofJ4gCIKIGbuqMVKEiEyBBfNqEAgGU7cZKXtngiAIInbcQh8hKp8nMg0319M5haoQBUIEQRCZCJ8aCwYAVTecUtUYkSm4uEAohT4hCoQIgiAyEb4HC1ODAJp0lcgcWDAPpHS+MQqECIIgMhFmNIUK+Bu450kRIjIENwVCBEEQRKywPkIA0FSj/6JYBxeCSGcUBVBYPyxKjREEQRDRwKcV6vZpj75CbXAhiEwhDUroPZEXIZwQCATQ3JzaXgiEM7xeL9xud+QFCSKdcUsCoezC1GwLQcSKywugIaWKEAVCcaKqKnbu3ImKiopUbwoRBcXFxejcuTMUunsmMhW+4qauXHv0USBEZBgsxZtCjxAFQnHCgqCOHTsiNzeXBtY0R1VV1NXVYffu3QCAsrKyFG8RQcQI81eoAU4RKkrtNhFEtIhTxaQACoTiIBAIGEFQ+/btU705hENycnIAALt370bHjh0pTUZkLm4v4A8A9fu1vyk1RmQaaTDfGJml44B5gnJzc1O8JUS0sO+MfF1ERsPSY7xZmiAyCbFDegqgQCgBUDos86DvjGgViIEQKUJEpkGKENGa6dWrFx5++OG41rFgwQIoikJmdIKQwfwVpAgRmUoalM9TINSGWbRoEdxuN2bMmJHqTQEATJ06Fddcc43luUmTJmHHjh0oKiITKEGEYChC5BEiMhR+qphUbULK3plIOc888wyuuuoqfPnll9i+fXuqN0dKVlYWlbkThB0uUoSIDIcFQsFA6jYhZe9MpJSamhq88soruOyyyzBjxgzMnTvX+B9LR82fPx9jx45Fbm4uJk2ahDVr1hjLrF+/HieccAI6deqE/Px8HHjggfj0009t3++CCy7Asccea3muubkZHTt2xDPPPINZs2bhiy++wCOPPAJFUaAoCjZu3ChNjS1cuBBTp05Fbm4u2rVrh+nTp6O8vDxh+4YgMga3qAiRckpkGJQaa12oqoq6Jn9KflRVjWpbX331VQwaNAgDBw7EOeecg//85z8h6/jTn/6EBx54AEuWLIHH48EFF1xg/K+mpgbHHHMM5s+fj+XLl+Ooo47Ccccdh82bN0vf76KLLsKHH36IHTt2GM/NmzcPdXV1OP300/HII49g4sSJuPjii7Fjxw7s2LED3bt3D1nPihUrcPjhh2PIkCFYtGgRvv76axx33HEIBFJ3N0EQKcNIK+izz1MgRGQaaWCWpj5CCaS+OYAhf/koJe+96s7pyM1y/nU+88wzOOeccwAARx11FCorK/HFF19g6tSpxjJ33303DjnkEADAzTffjBkzZqChoQHZ2dkYOXIkRo4caSz717/+FW+99RbeffddXHnllSHvN2nSJAwcOBDPP/88brzxRgDAnDlzcOqppyI/Px+AlgbLzc1F586dbbf7vvvuw9ixY/H4448bzw0dOtTx5yaIVoVLmGCVUmNEpkHl80QqWLNmDRYvXowzzzwTAODxeHD66afjmWeesSw3YsQI43fWgZl1ZK6pqcH111+PwYMHo7i4GPn5+fjll19sFSFAU4XmzJkDANi1axf+97//WVQmJzBFiCAImIMIg8zSRKZBilDrIsfrxqo7p6fsvZ3yzDPPwO/3o0uXLsZzqqrC5/Phn//8p/Gc12vebTKzcjAYBABcf/31+OSTT/D3v/8d/fr1Q05ODk455RQ0NTXZvu+5556Lm2++GYsWLcI333yD3r17Y8qUKY63GzC7QhMEAet8YwApQkTmYZilKRBqFSiKElV6KhX4/X4899xzeOCBB3DkkUda/nfiiSfipZdewqBBgyKuZ+HChZg1axZmzpwJQFOINm7cGPY17du3x4knnog5c+Zg0aJFOP/88y3/z8rKiuj1GTFiBObPn4877rgj4jYSRKtHTI2RIkRkGjTXGNHSzJs3D+Xl5bjwwgtDevOcfPLJeOaZZ3D//fdHXE///v3x5ptv4rjjjoOiKLj11lsNtSgcF110EY499lgEAgGcd955lv/16tUL3333HTZu3Ij8/HyUlJSEvP6WW27B8OHDcfnll+PSSy9FVlYWPv/8c5x66qno0KFDxPcniFYFrwgpLiArP3XbQhCxYBj+ySNEtBDPPPMMpk2bJm1QePLJJ2PJkiX48ccfI67nwQcfRLt27TBp0iQcd9xxmD59OkaPHh3xddOmTUNZWRmmT59uSc0BWrrN7XZjyJAhKC0tlfqNBgwYgI8//hg//PADxo0bh4kTJ+Kdd96Bx0MxPdEG4T1CvgJtRnqCyCTSoHxeUaOtu25jVFVVoaioCJWVlSgstMrODQ0N2LBhA3r37o3s7OwUbWFmUVNTg65du2LOnDk46aSTUrYd9N0RrYL/ngKs+0T7vagHcO1Pqd0egoiWty4DfngRmHYHMPmahK463PjNQ7fRRIsQDAaxd+9ePPDAAyguLsbxxx+f6k0iiMyHT41RDyEiE+nQD+gxESgoS9kmUCBEtAibN29G79690a1bN8ydO5dSWQSRCPjUGBmliUxkynXaTwqh0YhoEXr16hV192uCICLAV41R6TxBxASZpQmCIDIVFylCBBEvFAgRBEFkKm5ShAgiXigQIgiCyFRIESKIuKFAiCAIIlPhAyFShAgiJigQIgiCyFT41BgpQgQRExQIEQRBZCrUR4gg4oYCISLtUBQFb7/9dlzrmDVrFk488cSEbA9BpC2W1BgFQgQRCxQItVH27NmDyy67DD169IDP50Pnzp0xffp0LFy4MNWbRhCEUyg1RhBxQw0V2ygnn3wympqa8Oyzz6JPnz7YtWsX5s+fj3379qV60wiCcAo1VCSIuCFFqA1SUVGBr776Cn/7299w6KGHomfPnhg3bhxuueUWYw6wBx98EMOHD0deXh66d++Oyy+/HDU1NcY65s6di+LiYsybNw8DBw5Ebm4uTjnlFNTV1eHZZ59Fr1690K5dO1x99dUIBALG63r16oW//vWvOPPMM5GXl4euXbviscceC7u9W7ZswWmnnYbi4mKUlJTghBNOwMaNG43/BwIBzJ49G8XFxWjfvj1uvPFG6mJNtA1cbvN3UoQIIiYoEEokqgo01abmJ4qBPz8/H/n5+Xj77bfR2NgoXcblcuEf//gHfv75Zzz77LP47LPPcOONN1qWqaurwz/+8Q+8/PLL+PDDD7FgwQLMnDkTH3zwAT744AM8//zzeOqpp/D6669bXnf//fdj5MiRWL58OW6++Wb84Q9/wCeffCLdjubmZkyfPh0FBQX46quvsHDhQuTn5+Ooo45CU1MTAOCBBx7A3Llz8Z///Adff/019u/fj7feesvx/iCIjIUaKhJE3FBqLJE01wH/1yU17/3H7UBWnqNFPR4P5s6di4svvhhPPvkkRo8ejUMOOQRnnHEGRowYAQC45pprjOV79eqFu+66C5deeikef/xx4/nm5mY88cQT6Nu3LwDglFNOwfPPP49du3YhPz8fQ4YMwaGHHorPP/8cp59+uvG6gw46CDfffDMAYMCAAVi4cCEeeughHHHEESHb+sorryAYDOLf//43FEUBAMyZMwfFxcVYsGABjjzySDz88MO45ZZbcNJJJwEAnnzySXz00UdR7DyCyFBYakxxOz7/CYKwQopQG+Xkk0/G9u3b8e677+Koo47CggULMHr0aMydOxcA8Omnn+Lwww9H165dUVBQgN/97nfYt28f6urqjHXk5uYaQRAAdOrUCb169UJ+fr7lud27d1vee+LEiSF///LLL9Lt/OGHH7Bu3ToUFBQYSlZJSQkaGhqwfv16VFZWYseOHRg/frzxGo/Hg7Fjx8a8bwgiY2BVY74CQL9RIAgiOkgRSiTeXE2ZSdV7R0l2djaOOOIIHHHEEbj11ltx0UUX4bbbbsPUqVNx7LHH4rLLLsPdd9+NkpISfP3117jwwgvR1NSE3Fztvbxer2V9iqJInwsGgzF/rJqaGowZMwYvvPBCyP9KS0tjXi9BtArc+iWc/EEEETMZqwjdfffdmDRpEnJzc1FcXCxdRlGUkJ+XX345eRulKJo8nYqfBNwNDhkyBLW1tVi6dCmCwSAeeOABTJgwAQMGDMD27YkL8L799tuQvwcPHixddvTo0Vi7di06duyIfv36WX6KiopQVFSEsrIyfPfdd8Zr/H4/li5dmrDtJYi0hSlC1EyRIGImYwOhpqYmnHrqqbjsssvCLjdnzhzs2LHD+KEme8C+fftw2GGH4b///S9+/PFHbNiwAa+99hruu+8+nHDCCejXrx+am5vx6KOP4rfffsPzzz+PJ598MmHvv3DhQtx333349ddf8dhjj+G1117DH/7wB+myZ599Njp06IATTjgBX331FTZs2IAFCxbg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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Gradients are a much different story.\n", "values_tensor = tf.convert_to_tensor(input_points)\n", "\n", "with tf.GradientTape() as g:\n", " g.watch(values_tensor)\n", " exact_outputs = expectation_calculation(my_circuit,\n", " operators=pauli_x,\n", " symbol_names=['alpha'],\n", " symbol_values=values_tensor)\n", "analytic_finite_diff_gradients = g.gradient(exact_outputs, values_tensor)\n", "\n", "with tf.GradientTape() as g:\n", " g.watch(values_tensor)\n", " imperfect_outputs = sampled_expectation_calculation(\n", " my_circuit,\n", " operators=pauli_x,\n", " repetitions=500,\n", " symbol_names=['alpha'],\n", " symbol_values=values_tensor)\n", "sampled_finite_diff_gradients = g.gradient(imperfect_outputs, values_tensor)\n", "\n", "plt.title('Gradient Values')\n", "plt.xlabel('$x$')\n", "plt.ylabel('$f^{\\'}(x)$')\n", "plt.plot(input_points, analytic_finite_diff_gradients, label='Analytic')\n", "plt.plot(input_points, sampled_finite_diff_gradients, label='Sampled')\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Ld34TJvTNT_w" }, "source": [ "Here you can see that although the finite difference formula is fast to compute the gradients themselves in the analytical case, when it came to the sampling based methods it was far too noisy. More careful techniques must be used to ensure a good gradient can be calculated. Next you will look at a much slower technique that wouldn't be as well suited for analytical expectation gradient calculations, but does perform much better in the real-world sample based case:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:23.937803Z", "iopub.status.busy": "2025-01-10T12:22:23.937269Z", "iopub.status.idle": "2025-01-10T12:22:24.556571Z", "shell.execute_reply": "2025-01-10T12:22:24.555830Z" }, "id": "JsBxH_RaNT_x" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAHHCAYAAAC2rPKaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAACP2ElEQVR4nOzdd3xb5fn//9fRsOQh7z1ix068shOSkLDCDC27QGkLLauUUmihlLbw6+dTOuBLJ3RR6GJ8aKEtZbWUvUkIIcsZTuwk3ntb3rIsnd8fxzYJWXZs6Zbk6/l46AE6lnXecRTr0n2u+741Xdd1hBBCCCFCkEl1ACGEEEIIX5FCRwghhBAhSwodIYQQQoQsKXSEEEIIEbKk0BFCCCFEyJJCRwghhBAhSwodIYQQQoQsKXSEEEIIEbKk0BFCCCFEyJJCRwjhF9dccw05OTkHHdM0jR/84AdK8vjL4f7cQgj/kUJHiBBXVVXFLbfcQn5+PhEREURERFBcXMzNN9/Mjh07VMfzuSeffJJf/epXx3zc1q1b0TSN//mf/zniY/bt24emadx+++3TmFAI4UsW1QGEEL7z4osvcsUVV2CxWLjyyitZtGgRJpOJsrIynn32WR566CGqqqrIzs5Wkm9wcBCLxbe/hp588kl27drFbbfddtTHLV26lMLCQp566inuueeeIz4XwFVXXTXdMYUQPiKFjhAhqqKigs997nNkZ2fz5ptvkpaWdtDXf/rTn/L73/8ek+noA7v9/f1ERkb6JKPdbvfJ8x6vK6+8kv/93//lww8/5MQTTzzk60899RSFhYUsXbpUQTohxPGQS1dChKif/exn9Pf38+ijjx5S5ABYLBa+8Y1vkJWVNX7smmuuISoqioqKCj796U/jcDi48sorAXj//fe5/PLLmTVrFjabjaysLL75zW8yODh4yHM///zzzJ8/H7vdzvz583nuuecOm/FwPToNDQ1cd911pKSkYLPZmDdvHo888shBj3nnnXfQNI1//vOf3HvvvWRmZmK32znzzDPZv3//+OPWrFnDf//7X2pqatA0DU3TjtovM/ZnHRu5OdCWLVsoLy8ff8wLL7zAeeedR3p6Ojabjby8PH784x/j8XiO+PwHZn/nnXcOOl5dXY2maTz22GMHHS8rK+Oyyy4jPj4eu93OCSecwL///e+DHuN2u/nhD3/I3LlzsdvtJCQkcPLJJ/P6668fNYsQM4GM6AgRol588UXmzJnDypUrJ/V9IyMjrF27lpNPPplf/OIXREREAPD0008zMDDATTfdREJCAh999BG//e1vqa+v5+mnnx7//tdee41LL72U4uJi7rvvPjo6Orj22mvJzMw85rlbWlo48cQT0TSNW265haSkJF5++WWuv/56enp6Drn89JOf/ASTycQdd9yB0+nkZz/7GVdeeSUbN24E4Hvf+x5Op5P6+noeeOABAKKioo54/tmzZ7N69Wr++c9/8sADD2A2m8e/Nlb8fOELXwDgscceIyoqittvv52oqCjeeustvv/979PT08PPf/7zCfykj620tJSTTjqJjIwM7rzzTiIjI/nnP//JxRdfzDPPPMMll1wCwA9+8APuu+8+vvzlL7NixQp6enrYvHkzW7du5eyzz56WLEIELV0IEXKcTqcO6BdffPEhX+vq6tLb2trGbwMDA+Nfu/rqq3VAv/POOw/5vgMfN+a+++7TNU3Ta2pqxo8tXrxYT0tL07u7u8ePvfbaazqgZ2dnH/T9gH733XeP37/++uv1tLQ0vb29/aDHfe5zn9NjYmLGM7z99ts6oBcVFekul2v8cb/+9a91QN+5c+f4sfPOO++Q8x7Ngw8+qAP6q6++On7M4/HoGRkZ+qpVq8aPHe7nceONN+oRERH60NDQ+LGrr776oPOPZX/77bcP+t6qqiod0B999NHxY2eeeaa+YMGCg57P6/Xqq1ev1ufOnTt+bNGiRfp555034T+jEDOJXLoSIgT19PQAhx+9WLNmDUlJSeO3Bx988JDH3HTTTYccCw8PH////v5+2tvbWb16Nbqus23bNgCampooKSnh6quvJiYmZvzxZ599NsXFxUfNrOs6zzzzDBdccAG6rtPe3j5+W7t2LU6nk61btx70Pddeey1hYWHj90855RQAKisrj3quo7niiiuwWq0HXb569913aWhoGL9sBQf/PHp7e2lvb+eUU05hYGCAsrKy4z7/mM7OTt566y0++9nPjj9/e3s7HR0drF27ln379tHQ0ABAbGwspaWl7Nu3b8rnFSLUSKEjRAhyOBwA9PX1HfK1P/zhD7z++uv89a9/Pez3WiyWw15mqq2t5ZprriE+Pp6oqCiSkpI47bTTAHA6nQDU1NQAMHfu3EO+v6Cg4KiZ29ra6O7u5o9//ONBhVhSUhLXXnstAK2trQd9z6xZsw66HxcXB0BXV9dRz3U0CQkJrF27lueee46hoSHAuGxlsVj47Gc/O/640tJSLrnkEmJiYoiOjiYpKWl8NtbYz2Mq9u/fj67r/O///u8hP4+7774b+Pjn8aMf/Yju7m7y8/NZsGAB3/72t2fE0gFCTIT06AgRgmJiYkhLS2PXrl2HfG2sZ6e6uvqw32uz2Q6ZieXxeDj77LPp7Ozku9/9LoWFhURGRtLQ0MA111yD1+udcuax57jqqqu4+uqrD/uYhQsXHnT/wB6aA+m6PqUsV111FS+++CIvvvgiF154Ic888wznnHMOSUlJAHR3d3PaaacRHR3Nj370I/Ly8rDb7WzdupXvfve7R/15aJp22OOfbGIee4477riDtWvXHvZ75syZA8Cpp55KRUUFL7zwAq+99hp//vOfeeCBB3j44Yf58pe/POk/vxChRAodIULUeeedx5///Gc++ugjVqxYMaXn2rlzJ3v37uXxxx/nS1/60vjxT87qGVuP53CXUMrLy496jqSkJBwOBx6Ph7POOmtKeQ90pMLiaC688EIcDgdPPvkkVquVrq6ugy5bvfPOO3R0dPDss89y6qmnjh+vqqo65nOPjTp1d3cfdHxsNGxMbm4uAFardUI/j/j4eK699lquvfZa+vr6OPXUU/nBD34ghY6Y8eTSlRAh6jvf+Q4RERFcd911tLS0HPL1yYx6jI2cHPg9uq7z61//+qDHpaWlsXjxYh5//PGDLt+8/vrr7N69+5jnuPTSS3nmmWcOOxLV1tY24bwHioyMnPSlpPDwcC655BJeeuklHnroISIjI7nooosOygoH/zyGh4f5/e9/f8znzs7Oxmw289577x10/JPfm5yczJo1a/jDH/5AU1PTIc9z4M+jo6PjoK9FRUUxZ84cXC7XMfMIEepkREeIEDV37lyefPJJPv/5z1NQUDC+MrKu61RVVfHkk09iMpkmNO27sLCQvLw87rjjDhoaGoiOjuaZZ545bC/Mfffdx3nnncfJJ5/MddddR2dnJ7/97W+ZN2/eYXuGDvSTn/yEt99+m5UrV3LDDTdQXFxMZ2cnW7du5Y033qCzs3PSP4dly5bxj3/8g9tvv53ly5cTFRXFBRdccMzvu+qqq/i///s/Xn31Va688sqDFk1cvXo1cXFxXH311XzjG99A0zSeeOKJCRWPMTExXH755fz2t79F0zTy8vJ48cUXD+k/AnjwwQc5+eSTWbBgATfccAO5ubm0tLSwYcMG6uvr2b59OwDFxcWsWbOGZcuWER8fz+bNm/nXv/7FLbfcMomflBAhStFsLyGEn+zfv1+/6aab9Dlz5uh2u10PDw/XCwsL9a9+9at6SUnJQY+9+uqr9cjIyMM+z+7du/WzzjpLj4qK0hMTE/UbbrhB3759+yFTonVd15955hm9qKhIt9lsenFxsf7ss88eMs1a1w+dXq7rut7S0qLffPPNelZWlm61WvXU1FT9zDPP1P/4xz+OP2ZsivbTTz990Pcebop2X1+f/oUvfEGPjY097BT3IxkZGdHT0tJ0QH/ppZcO+fr69ev1E088UQ8PD9fT09P173znO/qrr756yNTxw/2529ra9EsvvVSPiIjQ4+Li9BtvvFHftWvXYX+WFRUV+pe+9CU9NTVVt1qtekZGhn7++efr//rXv8Yfc8899+grVqzQY2Njx/9+7733Xn14eHhCf1YhQpmm61Ps2hNCCCGECFDSoyOEEEKIkCWFjhBCCCFClhQ6QgghhAhZUugIIYQQImRJoSOEEEKIkCWFjhBCCCFC1oxeMNDr9dLY2IjD4TiuZeKFEEII4X+6rtPb20t6evohe/N90owudBobG8nKylIdQwghhBDHoa6u7piru8/oQsfhcADGDyo6OlpxGiGEEEJMRE9PD1lZWePv40czowudsctV0dHRUugIIYQQQWYibSfSjCyEEEKIkCWFjhBCCCFClhQ6QgghhAhZUugIIYQQImRJoSOEEEKIkCWFjhBCCCFClhQ6QgghhAhZUugIIYQQImRJoSOEEEKIkCWFjhBCCCFClhQ6QgghhAhZUugIIYQQImTN6E09fUUfHqB0fwXFqdGYTBpEpYDFpjqWEMfF298Jrl7jtTzGHgt22QhXBKehgV70/nbCrWawRUN4rOpIwoek0PGBmm1vMP/lL47fd9sTsH7mYcg/R2EqISZhuJ+213+Ja9d/yRwsO+TLelgU2uWPwdyz/Z9NiOPQM+hi/dO/JqnuVRYMb8euuQHwYGbopDuIPPO7YDIrTil8QS5d+UBr7zBDWBnSrQzrZqxDHfDk5eivfA/cQ6rjCXFUXq/O7oeuImnTL8eLnCHdOn5z6Ra04T48z9wAznrFaYU4tg17G9j084v5VOW9nODejE1z49ItuHQrZjxErv8pHQ9/GvpaVUcVPiCFjg+sOOsyTP/TyoYv7Obbc1/i0ZG1AGgf/g7vgyuh7CXQdcUphTjUkNvD7/70MMVdbzGim3gq6TY2XfYhfd9uoPGWan6zah0r9MfY6c3BPNTF4FNXQ0+T8QYhr2kRgJ56byemv36GM70f4MbC7oKbab7qHbq+Wc/rl+7g5+HfpF+3kdD6IU1/+Ax43Koji2mm6frM/e3U09NDTEwMTqeT6Gjf9Rs8vbmOt194jO+b/kKq1mUcPPcncOJNPjunEJPl8erc8Jf3ubvuerJNrVTkXU3eF39zyOOanUN850/P87ve24jWBj/+QtEFcMVf/ZhYiKN7rbSZmqdu5wbLfxkyRaJf8VfCC8446DFDbg+Pv/AKn9/5ZaK1Acpyr6Hwi7+C2g9BM8GslWrCi6OazPt3UI/oPPTQQyxcuJDo6Giio6NZtWoVL7/8supYh7j8hCyuvf5m1o7cz+Mjoz0NH/wWPCNqgwlxgN++tY9FNY+SbWplOCKVvM/ee9jHpcbYeeCrl/DLqG/TpkfjZbRJufxlGB7wY2Ihjqykrptb/76F880bALBd+vtDihwAu9XMjZedx1sFdwNQWPkY/Q8sg0fPhUc/BR0Vfs0tpl9QFzqZmZn85Cc/YcuWLWzevJkzzjiDiy66iNLSUtXRDrE8J547LzqBe0euolOPgp4G2P+G6lhCALB+fzv/evMDvmr+DwBh5/0UbI4jPj4hysY3brqF88IeJXfor/RYEsA7Ak3b/RVZiCMaGB7h5r9tZd5IGWlaJ7rNgVbwqaN+z0Wfv5F34i4FILJntLjRPbDnP76OK3wsqAudCy64gE9/+tPMnTuX/Px87r33XqKiovjwww9VRzusz6+YxWdPzOMZz6kAeDY/pjaQEIBz0M2tfy/hDss/sGluyDkFii865vclRNn4xeWLAI0NrtnGwYbNvg0rxAQ88PpeGroHuSJiCwBa4fnHXOJD0zRWffVBnrJ9lvvcn+fl5C8bXygPvKsEYnKCutA5kMfj4e9//zv9/f2sWrXqsI9xuVz09PQcdPO37326mLcijE8W2r5XoafR7xmEONCDb+8no7+Ui80foKPBOfeAph37G4FT85O49qQctnnnAOCp/ciXUYU4pl0NTh5ZX40JLxdaR1+P8y6Z0PfabOEUXPkz/ui9gB/VLjIO1m2EvjYfpRX+EPSFzs6dO4mKisJms/HVr36V5557juLi4sM+9r777iMmJmb8lpWV5ee0EB5m5uoLz2ajtxATXro/eNTvGYQYU9PRz+PrK/kfq9FErC36PKQvntRzfPfcQuoi5wEwWLVxuiMKMWFer873ntuJx6vz9bw2bENtYI+B3NMn/BxLZ8Vx1cpsmkhgrykP0GHfq74LLXwu6AudgoICSkpK2LhxIzfddBNXX301u3fvPuxj77rrLpxO5/itrq7Oz2kNa+elsjXxQgCGNz8h03KFMj99pYzLeZ3lpr3o1gg4838n/Rx2q5lzzlqLR9eIcrXgbKnxQVIhju213S1sr3cSZbNwY+Jov1jhBWAJm9TzfPvcApIcNv7rWmwcKHtpeoMKvwr6QicsLIw5c+awbNky7rvvPhYtWsSvf/3rwz7WZrONz9Aau6mgaRrnXPplhnQrySNNVJRuUpJDzGxbarrYuWs7d1meBEA7826ITj+u5zr/hHyqzTkAvPH6f6crohATpus6v3lzHwDfWuwlYpfxumb+Zyb9XNF2Kzedlsfr3mXGc1e8Be7BY3yXCFRBX+h8ktfrxeVyqY5xTHkZKeyLOgGA3e/8XXEaMRP98Z19/ML6ByI1F2SfDCu+ctzPZTZp2Gcb64107v2A1h5ZAVz415t7Wtnd1IMjDL7Y8hPwDMPccyDv0CnlE/H5FbNojZhLvZ6INjIIe+XyVbAK6kLnrrvu4r333qO6upqdO3dy11138c4773DllVeqjjYhCUuNmS1Zre9Q3d6vOI2YSSrb+rDtfYGVpjK8lgi46Hdgmtqvg/R5JwOwkH38dWPtdMQUYkJ0Xec3bxmjOb+b9R6W5hJj49kLfjPhxvpPCg8z85XT8njBs9o4xxs/kFGdIBXUhU5raytf+tKXKCgo4Mwzz2TTpk28+uqrnH12cGw0mL7CGFJdbKrgqbdktorwn7+sq+Jqs/EJ1XTyrRA/e8rPqWWtAGChVsn6DesZcnum/JxCTMS6/e2U1ndyZ9jTnFr/B+Pgp38O0WlTet4rV2bzpPUymvU4tK4qWPerqYcVfhfUhc5f/vIXqqurcblctLa28sYbbwRNkQOAI4W+xMUADOx4kfa+wL/kJoJfR5+LPVveY5lpH16TFZZdOz1PnDAXPSKRcG2YZ7y30fnnz4Crd3qeW4ij+Nf6Up4Mu5evmp5DQ4eVX4UFl0/5eSNtFi4/qYgfub9oHFh3v6yUHISCutAJBZELjdlXp2ubeWaL7AQtfO9vG2v5HMZojjbvYnCkTM8Tm0xoX3yWysTT8eoa6S3voH/48PQ8txBH0OQcZHHFQ6w0leGxRsFlj8Cnfnrcl6w+6XPLZ/EqJ/KuZ6HR9/POT6bleYX/SKGjmFb4aQBOMpXy8kelzOA9VoUfeL06L39UykXmDwDQptCAfFhpi4i/7p/cq18NQG/pK9P7/EJ8wqvvreMq0+sAmD/3BMy/dFqfPzXGzllFKfxu5GLjQMWb4PVO6zmEb0mho1pSIZ7k+dg0N9f1/J6PqjpVJxIhbENlB+f0/Rub5sabuggyl0/7OWIjwrAVG6t/R7Zug8HuaT+HEAAjHi+zt/0Mq+ahOeXU455hdSxXrsxmmz6Hft0OAx3QvMMn5xG+IYWOapqG+aLf4MHMheYN7HnzCdWJRAjb+P4r3GJ5HgDT6q9P2/D+J525agUV3jTMeBja+5ZPziFEyfsvcpr3I0YwEX+x7y4pnTwnkYyEaDZ4i4wDlW/77Fxi+kmhEwgyltG26CYALqz/BT3tTYoDiVDU09nKFdV3Y9U8dM8+HxZc5rNzLZ0VxzabsU5U05YXfXYeMbPZNv4WgB3JFxOWNs9n5zGZND6/YhbrvAuMAxVS6AQTKXQCRMoF36fKlE281kv5G4+ojiNCUMfTt5KhtdNoSiPmit/7bDQHjNW/rfnGDEhHw3uyzYmYdj0ttRQPGKvKx55xm8/Pd/HiDNbpRqGj134oa+oEESl0AoRmsdGRfS4AAzVbFacRIUfXSW02PoVuWXwPmj3G56dcdtr5DOlWEj1ttFRu9/n5xMxS9fYjmDWdUnMRuYWLfH6+1Bg7idnzadTj0TwuqPnA5+cU00MKnQCSM38VACn95bKEvphWjfWVhOuDjOgmTjzlHL+cMzM5gTL7QgD2rX/eL+cUM4Suk7j/GQBa8ya/l9XxunBxJus8o5evpE8naEihE0AS5xgry87RGni1pEpxGhFKtm0xhvjbLKkkxflvM1s97ywAImrf8ds5Rejr3LeBjJFahnQrc9Z8yW/n/dT8VDZgFDqu8jf8dl4xNVLoBJLodAatcVg0L7tKPlSdRoSQuv3GdFhPfJ5fz5t7orGf2zz3Tmqb2/x6bhG6Wt57FICN9pPISk/123njIsPQZ58GgK1jDwx2+e3c4vhJoRNINA1TmjHUb2rZSZNTmt3E1DV2DxLWbSxbHz/LdzNTDicmq5g2cwo2bYRdH7zk13OLEKXrpDQaoylDxZ/1++lPXzaPSq9RXOm1G/1+fjF5UugEGFvWEgDma9X8d4dMMxdT9/KuZnI147UUkV7k35NrGl3ppwLg3SdD/WLq2hsqiPd24tbNLD75034//1lFKWylEICusvf9fn4xeVLoBJrREZ15pmpeLW1WHEaEgpd2NpGnNRp3Eub6/fzJS4w3o+L+j2SUUkxZ2RZjAcoa62xSEuL8fv5Im4WexKUADFWu9/v5xeRJoRNoUo1pkoVaLSU17XT1DysOJIJZS88Qu2payNDajQOJ/i90YovPYgQzuaZmNmza7Pfzi9AyUGH0Lw4kL1GWIXGe0aeT4CyFEZeyHGJipNAJNPG5EBaFXXMzm0be2duqOpEIYm+XtZKjNWPSdLDFQGSS/0PYo2mLXQxA186X/X9+ETIGhkdIdBqN9UmFJynLsfKElXToDmwM01nxkbIcYmKk0Ak0JhOkGtMX52nVvLFHCh1x/N4qax3vzyFxrk9XQz6a8OK1AMzq+hDnoFtJBhH81pU3Mo9qAFKLT1GWIyUmnH02o7G/dpvs5RbopNAJRKlGn858UzXvlbfh9ngVBxLByDXiYd3+9o/7cxRcthoTu8DYzfwkbRcb9tQoyyGC255tH2DT3AyYo9ES/LtUwieNZBjrnum1shRIoJNCJxBlGI1uJ1r20usaYVNVp+JAIhh9VNXJwLCH4rAW40DCHHVhUhfQacskQnPRseU5dTlE0PJ4dYaqjOncrpQlykYnx2QuOgOA7P6dDLhklDKQSaETiGYb03GLqCSWXrl8JY7LW2XG62a+ffT1o3BEB02jL/8SAHIa/4vXK5t8isnZXt9NwUgZANFzVytOA9nzVuHCSrzWy/YS6dMJZFLoBKLodEgqxITOalMpb5W1qE4kgtDbZa2ATpq73jiQmK80T+rJXwRgpXc75ZWyxYmYnPf3trNE2w+AOWu54jSgWe3URhmzZHt3yGKYgUwKnUCVZwyLnmreRXXHAHWdA4oDiWBS2dZHdccA6WYn1pE+0EzGjD6FwlIKqLYVYNG8tH74lNIsIvhsL9tLtml0dDJjmdowo9xzzgUgtVkakgOZFDqBKvd0AM4IKwV03t/XrjaPCCrv7jX2lbo8ZXTGVVIhWGwKExnaZ18IQGrNfxQnEcHEOegmvtlYhXg4cR6Ex6oNNCrzxEsBmDeyh8bGOsVpxJFIoROock4Ck5VkTwvZWgvr9suGiGLi1u83CuMzI4yhfrLV9zQAZJzyRTy6RoF7D8NPfQnqNqmOJILAhooO1mjbAAgrOldxmo9Fp+ZSZcnFrOnUfvi86jjiCKTQCVRhkZC1EoBTTDtZv78DjzRwiglwe7x8WGnM1Js7tNM4OGuVwkQfS8vI5hnbxQCElb8AfzkLdv9bbSgR8NbtbeJUk7FQIHPXqg3zCa1pZwJgr3hFcRJxJFLoBLK8NQCssZbiHHSzq8GpNo8ICjvqu+lzjZAZPoy9Y7dxMEBGdAB2z/82a10/oTrSaORE1iERR6HrOt1l7xOtDTAcFguZJ6iOdJDoJcbl2IL+TYy4pJcyEEmhE8hyjYbkk7Rd2Bhm3X7p0xHHtn5/BwCfS2tC070QN9uYyRcgVuUlUK7P4oWRE40DXdVK84jAVt0xwPwBY/0c09yzwWRWnOhgcxeeRAvxhOOierNscRKIpNAJZOlLIGYW4foAa02beX+f9OmIYxsriNfYA6s/Z8yJuQmYNNjaG2sckEJHHMW6fW2cYTL6cyyFgdOfM8ZiMbMv2rg03L3nHbVhxGFJoRPITCZY/HkALjO/y5aaLgaGRxSHEoGs3zXCttouAOYMjvY0BFihExNuZX5GDLV6snGguwZ06T8Th7e3fDf5pga8mGHOmarjHJY1czEAlrY9aoOIw5JCJ9At+hwAJ5t3keBpZ1N1l+JAIpCVb3qdB0y/4quOddhatxsHA6zQAVidl0iDnogXDYb7YKBDdSQRgHRdJ6bmNQD6U5ZCeJziRIeXUWD0DaUOVeAa8ShOIz5JCp1AF58L2SdhQucz5nVsrJQ3BHFkMZt+xfnmjdzp/j2aZxiiUo0enQCzOi+BYay0EW8ckMtX4jD2t/Zxluc9AMIXfUZxmiPLyDf2J0zVOtm1v1ZxGvFJUugEg8VfAOBS83tS6IijcvRWAOC2OIwDBZ9Svvnh4ZyQE4fVrFHtTTIOSKEjDqN051YWmyrwYMKy8DLVcY5IC4+lw5ICQGWp7HsVaKTQCQbFF+G1hJNnaiKicT2DwzI0Kg7V29NFstdoWO+67gP48luw9v8pTnV4EWEWlsyKo9Y72qfTJXtfiUNZdz8LQH3cSohKVpzm6AbjCgDoqy1RG0QcQgqdYGBzoC25CoAbtefZWit9OuJQ5bu2AtBJDMnpsyBzGYRFKE51ZCfmJnzckCwjOuITdK+X+Z2vAuCZH7ijOWMishYCEN5VzpBbPowGEil0goR20q14MHOyuZTa7e+ojiMCUHOF0XzcFRF4PTmHsyIn/oBCp0ZtGBFwaks/IJsmBvUwMk+8XHWcY4qbvQSAfGrYXtetNow4iBQ6wSI2i5pMYwXO/L1/VBxGBCJXU5nxP0n5aoNM0JJZsTRoRl/DSIdcuhIH69v8dwBKIlYTFhmjOM2xaSnzAMjX6vmwQhZ3DSRS6AQR65pv4dE1lrk24qrfrjqOCCCDwx4cfUYjclz2AsVpJibSZiEidQ4A5t5GGBlWnEgEkqhmo6m3J/tsxUkmKGEOHs1KlDZExT5ZTyeQSKETRDLz5vOOydjos/WjpxWnEYFkW10XeTQAwVPoABTMns2AbkPDC8461XFEgNBHhklzGYV7SmFgbEh7TGYrI/FzAfA07cTt8SoOJMZIoRNENE3DmWis1zDYKJ8YxMc2V7SQrbUAoCUVKE4zcctnJ1CnyxRzcbCWihLCGKFHj6CweJHqOBMWlmF8yJjtrWF3Y4/iNGKMFDpBJjrLuA4c7tyvOIkIJHX7d2LRvLjNkeBIUx1nwpYf0JDc1yyvaWFo2L0BgJqwOdjDLIrTTNxYn06RqYbNNTI7NlBIoRNkZhUsBiBluB7viFttGBEQ3B4vw03GCJ8nYW5ALhB4JHGRYfSGZwDQWluuOI0IFO56Y6mEvoT5ipNMUtpiAJaa9rOlWhZ3DRRS6ASZ3LxCBnQbYdoIVftLVccRAWBPUw+zvPUA2NKKFKeZPGtiLgCutkrFSUSgiOk2CveI7BMUJ5mkzOV4TWGkaZ00Ve9Bl81qA4IUOkHGYrHQGpYFQF15idowIiBsrelijqkRCK7+nDFxOcZCa0nOnbKLucDZN8jsEaPozZofeBvSHlVYBGQsAyB/cDt1nYOKAwmQQicoDcbkAdBXLyM6Asorq1igjY6GJAZfoZOz+HRcuoVEbzuulr2q4wjFyndtwq656Sec+Izgez2bZp8CwErTHjbXdCpOIyDIC5377ruP5cuX43A4SE5O5uKLL6a8PPSv84enFwNg6dynOIlQyuuBl77NDyo+S66p2TiWGmQ9DUBGUjw7TcYbWlPJa4rTCNXa924EoDmiAExB+BaVczIAJ5p2s6lKCp1AEISvoo+9++673HzzzXz44Ye8/vrruN1uzjnnHPr7+1VH86nkXGOoP9VdQ2vvkOI0QpmmEvjoj9hws92by9ClT0DsLNWpJk3TNBpilwPgqXhHbRihnKnZWAx1JGWh4iTHKXM5XpOVdK2TxqrdqtMIgrzQeeWVV7jmmmuYN28eixYt4rHHHqO2tpYtW7aojuZTEaMjOnlaE1ur5RPDjNVj9OWUeHO5K/7X2BdcqDjQ8fPOPg2AlI6PwCsLrc1Ubo+XlH5jK5OYvBWK0xynsAg86UafTkrXZpyDMjtWtaAudD7J6XQCEB8ff9ivu1wuenp6DroFpfhcPJhxaIPs3S89DTNWr3G5qkWPZ1nO4V/zwSJz3kn06XaivD3oLTtVxxGKlDc5KaAWgOT8IC10AGvuqQCcaNrDjvputWFE6BQ6Xq+X2267jZNOOon58w/fp3DfffcRExMzfsvKyvJzymliCWMgKhuArhp5U5ix+oyVkFv1WJZlxykOMzULZiWySS8EwLn7TcVphCrle8uI0FyMYMGUkKs6zvEb7dNZZdrNNlk4ULmQKXRuvvlmdu3axd///vcjPuauu+7C6XSO3+rqgndvHVOy0bxp7tjL8IgM9c9EI84mwCh0ls4K7kLHbjVTFWUM9w/tfUdtGKFMW/UuAJzhWWC2Kk4zBZnL8Wpm0rROqqtk0ohqIVHo3HLLLbz44ou8/fbbZGZmHvFxNpuN6Ojog27BaqxPZ7beQHlzr+I0QoX+DmMTzwFbIlnx4YrTTN3wLONTcFzbJvCMKE4jVHA3G/053oQ5ipNMUVgErrh8APTGbbJwoGJBXejous4tt9zCc889x1tvvcXs2bNVR/IbLdXYU+Us8xZKq4J3ZEocP3e30YwcnZSFFkTbPhxJWsFyevQIbN4BkD6dGad7YJjYgWoAojKK1YaZBmGzjFWdc937qOkYUJxmZgvqQufmm2/mr3/9K08++SQOh4Pm5maam5sZHJwBq1EWnEeXPYsUrZv0bQ+oTiMUCBtsBSA1PVtxkumxNDuBLd65ALirNyhOI/ytpK6bPM0o3sODcCuTTzJnLAFgkVZBSV232jAzXFAXOg899BBOp5M1a9aQlpY2fvvHP/6hOprvWe3UnPgjAE7qfBaatisOJPzKM0KUpxuAnNl5arNMk8y4cPZYjU/yfXvXKU4j/G1bbff4ViYk5asNMx3SjUJngamKbbJCslJBXejoun7Y2zXXXKM6ml/MWn4+//GciBkvIy/eoTqO8KOu9kZM6Hh0jcK8IJ6dcgBN0+hNNob7w5o+kn2vZpi9NfUka93GnYS5SrNMi5R5eExW4rQ+mmrKVKeZ0YK60Jnp4iPDeDTqKwBYGj6C/g7FiYS/7K/cD0C3KZaYSLviNNMnavZK3LqZSFcbdNeojiP8RNd1euuNHcvdESlgD96JIuMsNjyJxgilvW0HQ26P4kAzlxQ6QS4rO5dqb4pxp2WX2jDCbxpqqwAYDEtUnGR6zctJYZc+OqmgdqPaMMJvqtr7SRk2Fgo0JwffRp5HYs0ylkwoppLSxiBdoDYESKET5BZnxbJHH93fSAqdGaOrZXSmnSNVbZBptjAzls1eoz/DVbVecRrhLzvqneSN9ueYQqE/Z5SWsRSARVolO2WFZGWk0Alyi7Ji2eM1Zt3ozTIldybQdZ2hLmMNnfD4DMVppld8ZBjVEcZmjiNVMvNqpthe//GMKxJDp9AZa0ieb6pilxQ6ykihE+SK06LZizGi426UQmcmqOscxOE2+rFiko+8QGaw8mYaO5lHOvfCoCyfPxPsrHceUOiEQCPymKRCPGY7Dm2QnrodqtPMWFLoBDm71YwrwWh4s3SUg0d2yg112+q6xmenWGLS1IbxgbzZuVSN9Z01bFUbRvjciMdLeWMn2Zqxd1tIjeiYLYxkrQbghp4HGRgaUhxoZpJCJwQkZ82hVw/H5HVDu+yrEup21js/noYbFVo9OmBcji0b6ztrK1cbRvjc/rY+kkcasWoedGskONJVR5pWtgt/SR8RLDeV43zph6rjzEhS6ISA+ZlxlOmjO7FLQ3LI29XoJGms0AmxZmSAeenRVOhG79FA427FaYSv7ah3UqgZzfVaUgGYQuxtKT6XJ5K+BUDajt9D1XuKA808IfaKmpnmZ8Qc0JAshU4o83p1ShucJNFtHIhKUZrHFyLCLPRHG6s9DzXtUZxG+NqO+m6KTdXGnbSFSrP4ylD+hfzLc6pxZ9ezasPMQFLohICiAxqSXQ3S8BbK6roGsLi6CNNGFx8LwUIHICy1EAB7937FSYSv7ax3UqyNLg6ZukBtGB9ZkBHDeo+xETMd8pr2Nyl0QoDdaqYv1nhj0OTSVUjb2XBAf054PFjClObxlaSc+QBEjHRDf7vaMMJnhke87Gnqpdg0VuiE5ojOgswYKnVj4oDetldxmplHCp0QEZG5AK+uYRtqg7421XGEj+xq6Pm40AnB/pwxhbNSqddHV32WhuSQVd7cS7SnixStGx0NkotVR/KJlGg7PZE5AGj9LTAkqyT7kxQ6IaJgVho1erJxp1kuX4Wq0kYnySHcnzOmKC2a/aMNyb31pYrTCF/ZXt9N0ehojpaQB7YoxYl8JzcznVY91rjTIbNj/UkKnRAxPyP64z2CGrepDSN8Qtd1djU4yR1dKh9H6K2hMybSZqHVlgOAs1Yux4aq0sbQ788ZMz/j48tXtEufjj9JoRMiitNi2KEbM1VcNZsVpxG+0OgcomtgmAvMHxoH8s5QG8jHPPHGCrleuXQVskobew7ozwntQmdBRgyV3tFCR0Z0/EoKnRARHmamI8Zo4NQbtyhOI3xhZ72TJdp+ZmmtYI2Ewk+rjuRTERlGv0ZUb6XiJMIX3B4vZc29B4zohGYj8pgFmTFUjI7ojLRKQ7I/SaETQsKyluDRNeyDrdDTpDqOmGaljU4uMo/u6F14HoRFqg3kY2l5iwCIH2kFV5/iNGK6VbT1YRoZJHdsj6sQH9FJibbTaTfWOxtuKVOcZmaRQieE5Gemsk8f3eSxUfYICjV76js4f+yy1cLPqg3jB/mzZ9GmRwPQVy8rJIea0oYeCrQ6zJoOkUkh3Vw/xja6PlSYsxq8XrVhZhApdELIgswYdnhzjTuyGWLIiWhYT6LWg9ueALlrVMfxudiIMOrNxtYmTRUlasOIaVfa2MMq02gBm7oANE1tID9Izc7HpVuweF3grFMdZ8aQQieEFKdFs0M3Cp3hWmlIDiUtPUOcOmzskaPNuwTMVsWJ/KM7ymhIztp0L2x+BLwexYnEdOmpKeE2yzPGnYLQ7jcbsyArnhp9dORKGpL9RgqdEBJps9ARYywzrjWVgK6rDSSmza4GJwu1CgAshecqTuM/NYVfpsybhd3dDS9+E177H9WRxDTQXb3c3P5j7Jqb3qzT4YTrVUfyiwUZMVTqxu7swy0ym9BfpNAJMRFZi3DpFqzD3dBVpTqOmCal9Z3kaM3GnaQCtWH8KDuvgPOG/x//F/Y540D5y2oDiWnR+9IPmE0jzXo89s/+KfR2LD+C5Gg7zVajj7K7TvrO/GVmvLpmkKLMRPboxgaf0qcTOlpqywnTPIyY7BCdqTqO38xLj8aDmb/0rjQO9DbLSGUI0KreBeBRx1ewOpIUp/GvsfWhPDKi4zdS6ISY+RkxbPcaCwfKCsmhY7jJmI7qis2dMZ9+AZIddpIdNpr1OOPAyCAMdSvNJKbI6yG8txoALX2J2iwK2DKM9YJinbul58xPZs5vzBliXno0O0YLHXedNCSHgo4+F3GD1QCEpRapDaPA/IwYXIThshhTzeltVhtITE1XNRbdzZBuJSNnruo0fpc2dyl9up1wbz+07lEdZ0aQQifEOOxWOmONhmRT03bwjChOJKZqV2MPc0YXVbMmz5z+nDHz040Cp9OcYBzoaVSYRkxZuzHbqFJPpzgjTnEY/yvOimer1yjw3NUfKE4zM0ihE4KiM4vp0+2YPYPQLteBg92uBid5Yxt5Js68T8DzMmIAaPCMvin2yqrfwayvwWjCrdDTKEyNVpzG/1Kj7ZRajJHZ/n3rFaeZGaTQCUFFGXEf72QuDclBr7Shm7yxZfIT89WGUWDe6IhOlcthHJBCJ6j1jq5y3RmeQ6TNojiN/2maRkf8UgCsjRsVp5kZpNAJQUVp0WwfWyFZtoIIenUNtcRq/ehokJCnOo7fZcSGExthpWmsIVn2cQtqeruxoaU3fuaNTo4xZy1nRDcROdgEznrVcUKeFDohqCjNMd6Q7KmXncyDmXPQTXi3sXu3N2YWWMMVJ/I/TdOYnx5D61ihI83IQS26z1jfK3J0d/qZaG5WKrt1Y4NPaj9UG2YGkEInBCU77NSFG02rWutuGHEpTiSOV3lz73h/jnkGNiKPmZcRTbMeb9zplWbkoNXfQZS3B6+ukZ43X3UaZYrSHGz2Gv+edSl0fE4KnRAVkzaHDt2ByeuG5l2q44jjtKepZ0b354yZnx5Di4zoBL2BRqM/p0FPpGhW6O9WfiRzkqPYphuFjrt6g+I0oU8KnRBVlH7ATubSpxO0Di50Zm5PQ1Fa9PiigXpfiyybEKRaKncCUG/OJCHKpjiNOjaLmY6E0Ybk9t0w3K84UWiTQidEFaU52KGPNq7KzKugtae5d3wNnZk8ojM7MZI+SxwjuglN90J/m+pI4jj0j04t73XMVpxEvdSMHLr0KOP13FWtOk5Ik0InRBWlRbPTa/wy0Zt3KE4jjofHq9PY3ESG1m4cSJy5PTpmk8bc1BjaiDUOSJ9OUDJ3GosFajO4aB9TlBZNnT66z1dXjdowIU4KnRCVlxRFvZYOgN5ZJRshBqHqjn7me8owaTp6fB5EJqiOpFRRarT06QS52IFqAKKz5qkNEgAOLnSqlWYJdVLohCir2YQ9eTZeXcPk7oeBDtWRxCTtaephpcnYzFPLXq04jXqFaY6PCx3ZBiLoDA8NkuJpASBz7iLFadQrSnNQpycD4O6oUpwmtEmhE8LmpCfSzOgbQ6f8Qwo2ZU29LB8tdMg+SW2YAHBgQ7KM6ASfuso9mDSdPsJJT89SHUe5hCgbTlsaAP0tlYrThDYpdEJYUVo0tfroFE4ZGg06FQ2tLNRGfwFmr1IbJgAUpn48ojPc3aA4jZis1hqjEbnVko5mkrceAHPCaB+l/H72KXm1hbCiNAe1XmNolC4Z0Qk2lqYtWDUProg0iM1WHUe52IgwXOFG4T7YUac4jZis/iajEXkgSl7LY6LTjCUjIgYapI/Sh6TQCWHFadHUjI7ouNtlaDSYOAfc5A4Ys+VMOatA0xQnCgzhCZkA6LLfVdDRO0d/B8XL1PIx6dn5eHUNm3cQ+ttVxwlZUuiEsNiIMHrDMwAYat2vOI2YjD3NPawY7c+xzj5ZcZrAEZcyCwDbYIviJGKyovprjf+mzdxlEj6pMDORltE+Sk9ntdowISyoC5333nuPCy64gPT0dDRN4/nnn1cdKeBYk4xFA03dsk5DMClv6GCpyRjql0bkj6VnGat9h3v6wNWnOI2YqI4+F2keYxQuOadIcZrAMTsxkgaMKebt9XsVpwldQV3o9Pf3s2jRIh588EHVUQJWXIZxDTjS1QruQcVpxET1VG0hXBtm0BIDSfIJeMzcWenjM6+8jSVqw4gJ29vYSaZmrGYdkTJHcZrAYTZp9NiNy7FdDfsUpwldQV3ofOpTn+Kee+7hkksuUR0lYOVkZdGjhxt3umvVhhETNtJqfLrrjyuS/pwD5CRGUaIbxXv3vg8UpxETVVe9F4vmZVizQVSq6jgBxRtjXI51tcmEEV8J6kJnslwuFz09PQfdQl1Resz4olSeDmlIDgYjHi/WHuNSY9jopUdhsJhNNEbNB2C4eqPiNGKiehrKjf+GZ4JMLT+IPdm4HDv2b15Mvxn1irvvvvuIiYkZv2Vlhf6iVTkJkdRrxsyrLrkGHBSqO/pJ141m26hUGeb/pMGUZQA42rbKlNwg4WmvAGAkVmZcfVJCpjFCGT0kq337yowqdO666y6cTuf4ra4u9NfiMJs0+iOMgq63Sa4BB4M9Tb1ka0ahY0qQN4ZPispZhls3E+nulMuxQcDj1bH3GqMVdunPOURWrtGcnaK309UrfZS+MKMKHZvNRnR09EG3mUAbXbfCK5eugsKeph5maa3GnbgcpVkCUX5mMqX66KJz9ZvUhhHHVN3RT6ZubNkRnS6N9Z8UlZiFGwtWzUNlhYy6+8KMKnRmqrHLH+H9oT+CFQoqG1pI0pzGnTgZ0fmkwlQH27zGcL/06QS+sqZecjSj0DEl5CpOE4BMZjqtRntBS2254jChKagLnb6+PkpKSigpKQGgqqqKkpISamtlOPtAKaPrViS4m8DrVZxGHEtv02g/Q1gMhMeqDROA4iLDqLQVA+Cu+VBxGnEs5U1dZI2NUMZLoXM4zmhjpCu58lnFSUJTUBc6mzdvZsmSJSxZsgSA22+/nSVLlvD9739fcbLAMjuvAJduxYabniYZGg1kXf3DRA4YhbomS+Uf0WDqUgDCO3bL+lABrqWukjDNg0ezQnSG6jgBqXXBjQAs6X4V2uR39HQL6kJnzZo16Lp+yO2xxx5THS2gOCLC2W/KAaClTD4BB7I9zT3jn37N0oh8REmZc2nTYzDpI9C0XXUccRTDo2tCDUfPApNZcZrAlFp8Eq97lmHGi/72/1MdJ+QEdaEjJq45yhjqH67bojiJOBpjxtVYI7IUOkdSlB7D1tE+Heo+UhtGHFHPkJvEfmO2pzm1WHGawJWTEMlvvJ/Fq2tou5+Dph2qI4UUKXRmiKGkhQBEtMk/oEBW3nzAjCu5dHVERakOtnmNJntdZl4FrL3NvRSZjEuxYemLFKcJXBaziZHkefzXu9I4sOUxpXlCjRQ6M4Q9+wQAUgfKwetRnEYcSXlLH7NG19CRqeVHNjsxkh2a0cDpqf1IFg4MUHuaeynSRieHpMxTGybAFaY6eMtj9JvSLn0600kKnRkifc5CBnQb4fogerssHBiIvF6dihbn+OaHcunqyCxmE67kBYzoJiz9zeCsVx1JHMa+hg7ytAbjTup8tWECXH6Kgyo9zbjTUaE2TIiRQmeGyE2JoVTPAcBZIWuPBKL6rkFihlsJ0zzoJitEp6uOFNByUpPZoxsbIsrCgYGpr2E3YZoHt8UBMaG/5c5UFKY6qNJHNzztbYThfrWBQogUOjOEzWKm1m4M9fdVyZtCICpv6WWWyejP0eKyZYbKMRSmOj5uSJZCJ+B4vTq2jj0AuJOKQdMUJwpsBakOnETRqUcZBzplJfvpIoXODNIbbwwdW5plOm4g2tvSK1s/TEL+ASsky8yrwNPQPchsTxUAtsyFitMEvrQYOw675YDLV/vVBgohUujMIOYMY9fnhN4y8LgVpxGfVN7cy0qT8QlYVpA9toIUB1t1o9DRm3fAiEtxInGgsuZeijRjM09z6gLFaQKfpmkUpDioHrt8JYXOtJFCZwZJmV1Mjx6OVR+GtjLVccQneBq2cbFpvXFn4efUhgkCKdE2um3ptOvRaJ5hWTgwwJQ19VBoGptxJY3IE1GQ6qDSOzaiI5euposUOjNIQVoMe0Z3ffY07VKcRhxo2O3hiz1/wqTpDBRcApnLVEcKeJqmUZgaM76ejvTpBJbGhhqStB68mCC5SHWcoFCQKiM6viCFzgySFRdBPcY/ImeT/CMKJG1bnuNE026GdCvhn/qR6jhBIz816uNCp0FW/Q4ozTsBGHLkQFiE2ixBoiDlgJlXnTLFfLpIoTODmEwaQ1GZAPS3VilOIw4U/tGDAPw38hK02FmK0wSPghQHu0eXTaBZRikDhWvEQ1qvUehoqbJQ4EQdNKIz0AGDXWoDhQgpdGYYc5xx6UrvqlGcRIzzenB0lwJQnXmR4jDBpSA1mlKv8ZqmYx8MD6gNJACor9jFl00vAmAvWqs4TfCIjQjDER1Dsx5nHJA+nWkhhc4ME5maB0B4f4PiJGJcZyVWr4tBPYyEWYWq0wSV/JQo2oilTY8G3Qute1RHEl4Psa/dRoTmYqd1EdriK1UnCioFqdFUeWWK+XSSQmeGSZmVD0D8SAt4RhSnEcB4L0O5nkV+WqzaLEEmNiKMlGg7e8ZGdZpl01rlPvojCR1b6dPtvDznf8AkbzOTYayQnGLckUJnWsgrcIbJmZ2HS7dgxstQl+wPFAjcjUahs8c7i4IUh+I0wSf/oD6dnUqzCGD7UwD8fOQKUrLyFYcJPgfteSUNydNCCp0ZJskRTrOWBEBTlaylEwgG6oz1X+rCckmIsilOE3wKUx3sHh/RkUJHuT5jU9ot3rnkS+E+aYUHNCTrMqIzLaTQmWE0TcNpMz4ttDfILuaBwNJmNCIPxstaI8cjP8VB6ej6ULSUgtejNtBMpuvo/Uah06HHUJAqhc5kzUmOogHjw6jeLaPu00EKnRlo2GHsIjwkU8zVG+wicqgZAFuGLJN/PApSjaH+IcLA3Q+d8rpWxtWD5jW2lzFFJRIfGaY4UPCxW82ExxofRrXBTincp4EUOjOQJT4HAK1bppgr12KM5tTrieRkpCsOE5zmJjvQNRNlXqOAl4ZkhfrbAejT7cxOTVAcJnilpmXg1TU0dGM9HTElUujMQNFpxhTzyMFGxUnE2CJ3e7zZ5Msw/3EJDzOTHR8hfTqBYLTQ6dCjpT9nCuakxtJFlHGnr1VtmBAghc4MNDbFPMXbjHNAdjFXydVgjD7s0bOYmxylOE3wMmZejfXpyArJygwYhU4n0RSkyuv5eBWmOmjXY4w7oz1P4vhJoTMDRaYYIzqpdLG3UYZFVXI3GoVOS/hcHHar4jTBS2ZeBYjxER2HjOhMQcEBhY5XRnSmzKI6gFAgMgmXZsOGi4bqvSyfk6o60czk9WDv2mv8b7LsBzQV+akOHtGNfdzobTL2CAqPUxtqBhrobiYC6NSjOTEACx2Px4PbHfij2CmRZsodeQyZeuhq7yRuaEh1JL+zWq2YzeZpeS4pdGYiTaPXnoZtsJqupv3AqaoTzUy9zVi8Lty6mbhMWVhtKgpSHPQRQaOeSLrWbmwFkb1adawZx9neRAQwbI8nyhY4by+6rtPc3Ex3d7fqKBOWfOpXqNIHGLE66K6amTMJY2NjSU1NRdO0KT1P4LwShV+NRM+CwWpcbTPzH1BA6GsBoJ0Y8lNj1WYJcjmJkVjNGnu8WaSb26F1txQ6Cgx2G6/psOhkxUkONlbkJCcnExERMeU3Tn/o6bAT7eliyOzAnpClOo5f6brOwMAAra3GZbu0tLQpPZ8UOjNUWEIOtLxHeE8luq4HxT/8UKP3taABbXqM9DNMkdVsIi8pir3tmZzJNtncUxFPr9E4GxkXOJfDPR7PeJGTkBA8U97d4eHYh7rRTTp2u111HL8LDw8HoLW1leTk5CldxpJm5BnKMfckAD6nv0p7xRbFaWamnjZj1dN2YslLjlScJvgVpDooH1tLp2W32jAzlGXImNwQnxw4a0KN9eREREQoTjI5Zoux2KLmnbmbL4/9nU21r0oKnRnKuuizbLAsx6a5iXzhenD1qo4043S2GIXOkC0Jm2V6mu5msvwUB+X6aKHTuht0XW2gGUbXdSJGugFITctUG+Ywgm3UOizMKHRM+ghe78x8LU/X35kUOjOVycRz2d+jQU8gorcaXrlLdaIZZ6CzAQDNkaI4SWgoTHVQqafhwQRD3dDbrDrSjNLiHCJOdwKQnjGzekp8wWwxlpuw4MU1IttATIUUOjNYVnomd7m/bNzZ+4raMDOQp8do3LTHTq3RThjyUxy4CBvf+ZlWuXzlT/vqGgnTjDdkW4A1IwcjzWQUOiZNxzXs2ynxOTk5/OpXv5rSc7zzzjtomhaQM9uk0JnB8lMd7PTONu70t8GIS22gGcY6aMwoiE2RT7/TISM2nMgwM2Xe0csmUuj4VUNDLQBDWjhYwxWnCQEmE97Rt+gP1q/DbDZz3nnnKQ5lWLNmDbfddttBx1avXk1TUxMxMTFqQh2FFDozWGGqgy4cDOmjK/L2NKgNNIN4vDpR7k4AUtJnKU4TGkwmjbkpDsq9oz9PmXnlV23Nxu8PV1i84iShQzcZE6P/+n+P8/Wvf5333nuPxsbA3KMwLCxsWta88QUpdGawrLgIwq0WGvXRKZdOKXT8pbajn0S6AUhJz1YbJoQUpjoo12VERwVnRxMAekTwTOEOeCYLff0D/PuF57nppps477zzeOyxx8a/PHa56M033+SEE04gIiKC1atXU15ePv6YiooKLrroIlJSUoiKimL58uW88cYbRzzlddddx/nnn3/QMbfbTXJyMn/5y1+45pprePfdd/n1r3+NpmlomkZ1dfVhL12tX7+eNWvWEBERQVxcHGvXrqWrq2vafjwTNeVCx+12U1dXR3l5OZ2dndORSfiJyaSRnxL1caEjIzp+U1HfRLg2DIBZmpGnTX6Kg73jM6/KwOtVG2iG8Hh1hpzGpdiwmMDvz9F1nYHhESU3fRKzATWzlX/+5zXmzMkjb85crrrqKh555JFDnuN73/sev/zlL9m8eTMWi4Xrrrtu/Gt9fX18+tOf5s0332Tbtm2ce+65XHDBBdTW1h72nF/+8pd55ZVXaGpqGj/24osvMjAwwBVXXMGvf/1rVq1axQ033EBTUxNNTU1kZR16+b2kpIQzzzyT4uJiNmzYwLp167jgggvwePzfWH1cCwb29vby17/+lb///e989NFHDA8Pjy86l5mZyTnnnMNXvvIVli9fPt15xTTLT3HQ1Dw2olOvNswM0lhfDcCgKZLwsOBa3yOQFaQ6qNFTGMZK2MggdNdA/GzVsUJeXecA0Z5uMIE9NvAL90G3h+Lvv6rk3Lt/tJaIsIm99ZrMVv7y1AtcdslFuEa8nHvuuTidTt59913WrFkz/rh7772X0047DYA777yT8847j6GhIex2O4sWLWLRokXjj/3xj3/Mc889x7///W9uueWWQ865evVqCgoKeOKJJ/jOd74DwKOPPsrll19OVJSxI31YWBgRERGkph55Ycif/exnnHDCCfz+978fPzZvnpo9/SY9onP//feTk5PDo48+yllnncXzzz9PSUkJe/fuZcOGDdx9992MjIxwzjnncO6557Jv3z5f5BbTpCDVQSNS6PhbR0sdAC57ouIkoaUg1YEXEzXe0VGFrmqleWaK8pZeEjRjLS5TpLymp0t5ZTUflZRy2cXnMeT2YLFYuOKKK/jLX/5y0OMWLlw4/v9j2yWMbZ/Q19fHHXfcQVFREbGxsURFRbFnz54jjuiAMarz6KOPAtDS0sLLL7980CjRRIyN6ASCSY/obNq0iffee++IldmKFSu47rrrePjhh3n00Ud5//33mTt37pSDCt8oTI3mRbl05Xf9HaM/66jA//QbTBKjbCREhlE7nMxcGqTQ8ZPy5l6ytB7jTmSS2jATEG41s/tHa5Wde6L+8sQ/GBkZYf6yk8aP6bqOzWbjd7/73fgxq9U6/v9jzcDe0cu2d9xxB6+//jq/+MUvmDNnDuHh4Vx22WUMDw8f8bxf+tKXuPPOO9mwYQMffPABs2fP5pRTTplwbvh4C4dAMOlC56mnnhr//97eXhyOw+/RY7PZ+OpXv3r8yYRf5Kd+3KPjddZLd7ofuEY86L0tYAGbrKEz7fJTHNTWyoiOP5W39LKY0UInIvBHdDRNm/DlI1VGRkb4vyef5pffv52TTz2VDmsaWfHGZe6LL76Yp556isLCwmM+z/r167nmmmu45JJLAGOEp7q6+qjfk5CQwMUXX8yjjz7Khg0buPbaaw/6elhY2DF7bRYuXMibb77JD3/4w2Nm9LUpva+dcsopNDfL6qPBLCnKRr/NGFXQu+XSlT9Utn0848oeJ4XOdCtIdVCvj44qSKHjF3ube0kYH9EJ/EInGLz44ot0dXdz/ecvYlFhLtlzCpg3bx7z58/n0ksvPeTy1ZHMnTuXZ599lpKSErZv384XvvCF8dGeo/nyl7/M448/zp49e7j66qsP+lpOTg4bN26kurqa9vb2wz7fXXfdxaZNm/ja177Gjh07KCsr46GHHqK9vX1iP4BpNKVCZ8mSJaxcuZKysrKDjpeUlPDpT396SsGEf2iaRlRyDgDm4R7Z88oP9rb0kqx1A6A5AmeX51BRkOqgVh8d0emuURtmBnCNeKhq7yd+tEdHCp3p8Ze//IWzzjyDmGgHFjzE613oHfthZJhLL72UzZs3s2PHjmM+z/33309cXByrV6/mggsuYO3atSxduvSY33fWWWeRlpbG2rVrSU8/eJPWO+64A7PZTHFxMUlJSYft98nPz+e1115j+/btrFixglWrVvHCCy9gsfh/JG1KZ3z00Ue5++67Ofnkk3n++edJTk7mf/7nf3jmmWek0Aki2ekp9DRHEK0NGGvpJB97OFQcv7LmXlaNjuhIj870y09x8Jgul678paq9nxGvl0TN2OcqGC5dBYP//Oc/4PVA8w7Mmk4qXTAMDHWzYsWK8Snm3/jGNw76vsWLFx80/TwnJ4e33nrroMfcfPPNB90/3KWs/v5+urq6uP766w/5Wn5+Phs2bDjoWE5OziHT3k877TTWr19/zD+rr025tPrhD3+IzWbj7LPPxuPxcOaZZ7JhwwZWrFgxHfmEHxSkOmjQE4xCp6deCh0f29vcy4VjbwpRgb/mSLDJT4mibqzQGeyCwW4Ij1UZKaSVN/cSTy9WRns2ZERn+mgm0MygH9AP4/Htvlder5f29nZ++ctfEhsby4UXXujT8/nDlC5dtbS0cOutt3LPPfdQXFyM1Wrlmmuu8XuR8+CDD5KTk4PdbmflypV89NFHfj1/sCtIcdAkqyP7TXlLL0mjl66IkktX081htxIXG0ebHm0ckMtXPrW3pZcFpirjTsIc2edqOmkaxM6iNyyZZj3OOOY58myp6VBbW0tKSgpPPvkkjzzyiJJLTdNtSoXO7Nmzee+993j66afZsmULzzzzDF/5ylf4+c9/Pl35jukf//gHt99+O3fffTdbt25l0aJFrF27dnwNAXFscw8odFydR15bQUxdn2uE5i7jEzAgl658pCDV8fGojly+8qny5j4WaRXGnYxlasOEovBYPBFJuMb2JPTxiM7YJai6urqAWQdnqqZU6DzyyCNs27ZtfEfVc889l7fffpsHHnjgkGuAvnL//fdzww03cO2111JcXMzDDz9MREQEjzzyiF/OHwpiwq30js686m2pVhsmxO1tMYock6YbQ9KyL5BP5KdIoeMv5S09LDJJoeNLdqsZ92inie7jEZ1QNKVC53Of+9whx5YuXcoHH3xwSPOTLwwPD7NlyxbOOuus8WMmk4mzzjrrkEYpAJfLRU9Pz0E3YdBijY0QR7rqFCcJbXube0nWRje1i0oGk6xc5AsFqVEfz7ySQsdn+l0j1HUOSKHjY2EWEyPa6CUkrxsmsV+W8NHu5Tk5OXzwwQe+eOqDtLe34/F4SEk5ePg/JSXlsOv73HfffcTExIzfDrcR2UwVmWTsoG3pazrGI8VUGP050ojsa/kpH08x16XQ8Zl9rX1kau0kaj1gskDKfNWRQpJJ0zBbrHh10MDnl69CzaQLnaPtj3GguDijcaqhIXCaW++66y6cTuf4ra5ORi/GJKTnAuAYbpFPCz60t6WXdK3DuONIP/qDxXHLS4qifrTQ8XRUqw0TwvY2937cn5MyH6x2tYFCmM1qYYQDRnXEhE260Fm+fDk33ngjmzZtOuJjnE4nf/rTn5g/fz7PPPPMlAIeTWJiImazmZaWloOOt7S0HHZXVZvNRnR09EE3YZiVMwcAm+5CH+hQnCZ0lTf3kqm1GXfistWGCWF2qxk9LgcAU0+dsR6JmHblLb1y2cpP7BYTbkb3yZI+nUmZ9Lyx3bt3c++993L22Wdjt9tZtmwZ6enp2O12urq62L17N6WlpSxdupSf/exnPl04MCwsjGXLlvHmm29y8cUXA8YaAG+++eZht58XR5aXlkC9nkim1o6zdhexRWtURwo57X0u2vuGybSOFjqxs9QGCnHxqdkM7zcT5nVDTyPEyqXq6ba3pZdzpNDxi48bkl1y6WqSJj2ik5CQwP33309TUxO/+93vmDt3Lu3t7ezbtw+AK6+8ki1btrBhwwa/rI58++2386c//Wl8T46bbrqJ/v7+QzYhE0dnt5qptuQB0Flx5NE6cfz2thhTynOtncYBKXR8am5qLA366OJ10qfjE/uaulmgja6hI4WOT9mtJoYDbOaVpmk8//zzU3qOa665ZnygwleOeyWgsa3eL7vssunMM2lXXHEFbW1tfP/736e5uZnFixfzyiuvHNKgLI6tK7oQujbiadiuOkpI2ttsFDrjl66k0PEpY8+rFGbTAu17YfYpqiOFlM7+YWL7K4mwudDDotAS56qOFJLG3t/++9//0tLSQlyMg4Xzirn7nvs46aSTVMcLChMqdF588UXeffddvva1rzF79mxfZ5q0W265RS5VTQNvynzogsiuPaqjhKTyll5sDBPjGZ1eLoWOT+WnOHhRn8Np7ECveg9t+aF79ojjt7ellwLNmJyipS4Ek1lxotB06aWXMjw8zOOPP05UVBR6axmvf7CNjg7ppZyoCV26Ov/887nuuut46aWXSE5OZmhoyNe5hAKROcaOtslDVTDiUpwm9BzUiGyLBnus0jyhLichgg9ZBIC38l1pSJ5mxgxCuQzrS93d3bz//vv89Kc/5fTTT2dWbh4rlsznzluuHd+D6v7772fBggVERkaSlZXF1772Nfr6+saf47HHHiM2NpYXX3yRgoICIiIiuOyyyxgYGODxxx8nJyeHuLg4vvGNb+DxfPxvJCcnhx//+Md8/vOfJzIykoyMDB588MGj5q2rq+Ozn/0ssbGxxMfHc9FFFx20YajH4+H2228nNjaWhIQEvvOd7xyyEagvTLhHp6ioiJtvvpmuri6cTmMdkGuuuYaBgQGfhRP+lTM7ny49Cgse9NbdquOEFF3X2dtirDkCGG8MmqY2VIizmE30JS6iVw/HPNQFTXJJdjqVN/eSPvZ6jslQG2aydB2G+9XcJvHGHhUVRVRUFM8//zwulwuL1QaASR8B3Wv8v8nEb37zG0pLS3n88cd56623+M53vnPQ8wwMDPCb3/yGv//977zyyiu88847XHLJJbz00ku89NJLPPHEE/zhD3/gX//610Hf9/Of/5xFixaxbds27rzzTm699VZef/31w2Z1u92sXbsWh8PB+++/z/r164mKiuLcc89leNjoKfrlL3/JY489xiOPPMK6devo7Ozkueeem/DP43hNukcnIyODkpIS1q5dyxNPPMHPfvYzIiIifJFN+Fl2YhSb9WxWaaV0VWwlPn2J6kgho6F7kD7XCNky48qv5qTGsqGjmHPMW6DybchYqjpSyChv7uX0sTWhYjLVhpks9wD8P0XrWP1/jRAWOaGHWiwWHnvsMW644QYefvhhFi1ewuknFPH5i85hYXIxWGzcdttt44/Pycnhnnvu4atf/Sq///3vx4+7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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# A smarter differentiation scheme.\n", "gradient_safe_sampled_expectation = tfq.layers.SampledExpectation(\n", " differentiator=tfq.differentiators.ParameterShift())\n", "\n", "with tf.GradientTape() as g:\n", " g.watch(values_tensor)\n", " imperfect_outputs = gradient_safe_sampled_expectation(\n", " my_circuit,\n", " operators=pauli_x,\n", " repetitions=500,\n", " symbol_names=['alpha'],\n", " symbol_values=values_tensor)\n", "\n", "sampled_param_shift_gradients = g.gradient(imperfect_outputs, values_tensor)\n", "\n", "plt.title('Gradient Values')\n", "plt.xlabel('$x$')\n", "plt.ylabel('$f^{\\'}(x)$')\n", "plt.plot(input_points, analytic_finite_diff_gradients, label='Analytic')\n", "plt.plot(input_points, sampled_param_shift_gradients, label='Sampled')\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "0xlUlh8wNT_z" }, "source": [ "From the above you can see that certain differentiators are best used for particular research scenarios. In general, the slower sample-based methods that are robust to device noise, etc., are great differentiators when testing or implementing algorithms in a more \"real world\" setting. Faster methods like finite difference are great for analytical calculations and you want higher throughput, but aren't yet concerned with the device viability of your algorithm." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "FaijzZ4MNT_0" }, "source": [ "## 3. Multiple observables\n", "\n", "Let's introduce a second observable and see how TensorFlow Quantum supports multiple observables for a single circuit." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:24.559653Z", "iopub.status.busy": "2025-01-10T12:22:24.559376Z", "iopub.status.idle": "2025-01-10T12:22:24.563858Z", "shell.execute_reply": "2025-01-10T12:22:24.563298Z" }, "id": "ytgB_DqDNT_3" }, "outputs": [ { "data": { "text/plain": [ "cirq.Z(cirq.GridQubit(0, 0))" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pauli_z = cirq.Z(qubit)\n", "pauli_z" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "r51TZls4NT_6" }, "source": [ "If this observable is used with the same circuit as before, then you have $f_{2}(\\alpha) = ⟨Y(\\alpha)| Z | Y(\\alpha)⟩ = \\cos(\\pi \\alpha)$ and $f_{2}^{'}(\\alpha) = -\\pi \\sin(\\pi \\alpha)$. Perform a quick check:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:24.566402Z", "iopub.status.busy": "2025-01-10T12:22:24.566189Z", "iopub.status.idle": "2025-01-10T12:22:24.572875Z", "shell.execute_reply": "2025-01-10T12:22:24.572102Z" }, "id": "19FKgu0ANT_7" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Finite difference: -0.04934072494506836\n", "Sin formula: -0.0\n" ] } ], "source": [ "test_value = 0.\n", "\n", "print('Finite difference:', my_grad(pauli_z, test_value))\n", "print('Sin formula: ', -np.pi * np.sin(np.pi * test_value))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "_33Y5mL0NT_-" }, "source": [ "It's a match (close enough).\n", "\n", "Now if you define $g(\\alpha) = f_{1}(\\alpha) + f_{2}(\\alpha)$ then $g'(\\alpha) = f_{1}^{'}(\\alpha) + f^{'}_{2}(\\alpha)$. Defining more than one observable in TensorFlow Quantum to use along with a circuit is equivalent to adding on more terms to $g$.\n", "\n", "This means that the gradient of a particular symbol in a circuit is equal to the sum of the gradients with regards to each observable for that symbol applied to that circuit. This is compatible with TensorFlow gradient taking and backpropagation (where you give the sum of the gradients over all observables as the gradient for a particular symbol)." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:24.575622Z", "iopub.status.busy": "2025-01-10T12:22:24.575031Z", "iopub.status.idle": "2025-01-10T12:22:24.590518Z", "shell.execute_reply": "2025-01-10T12:22:24.589922Z" }, "id": "3WFJfFEbNT_-" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum_of_outputs = tfq.layers.Expectation(\n", " differentiator=tfq.differentiators.ForwardDifference(grid_spacing=0.01))\n", "\n", "sum_of_outputs(my_circuit,\n", " operators=[pauli_x, pauli_z],\n", " symbol_names=['alpha'],\n", " symbol_values=[[test_value]])" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "-ujQUu3WNUAB" }, "source": [ "Here you see the first entry is the expectation w.r.t Pauli X, and the second is the expectation w.r.t Pauli Z. Now when you take the gradient:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:24.593164Z", "iopub.status.busy": "2025-01-10T12:22:24.592921Z", "iopub.status.idle": "2025-01-10T12:22:24.790418Z", "shell.execute_reply": "2025-01-10T12:22:24.789727Z" }, "id": "jcAQa9l0NUAB" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.0917350202798843\n", "[[3.0917213]]\n" ] } ], "source": [ "test_value_tensor = tf.convert_to_tensor([[test_value]])\n", "\n", "with tf.GradientTape() as g:\n", " g.watch(test_value_tensor)\n", " outputs = sum_of_outputs(my_circuit,\n", " operators=[pauli_x, pauli_z],\n", " symbol_names=['alpha'],\n", " symbol_values=test_value_tensor)\n", "\n", "sum_of_gradients = g.gradient(outputs, test_value_tensor)\n", "\n", "print(my_grad(pauli_x, test_value) + my_grad(pauli_z, test_value))\n", "print(sum_of_gradients.numpy())" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "-fZmbYGANUAE" }, "source": [ "Here you have verified that the sum of the gradients for each observable is indeed the gradient of $\\alpha$. This behavior is supported by all TensorFlow Quantum differentiators and plays a crucial role in the compatibility with the rest of TensorFlow." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "lZsGG7lWNUAF" }, "source": [ "## 4. Advanced usage\n", "All differentiators that exist inside of TensorFlow Quantum subclass `tfq.differentiators.Differentiator`. To implement a differentiator, a user must implement one of two interfaces. The standard is to implement `get_gradient_circuits`, which tells the base class which circuits to measure to obtain an estimate of the gradient. Alternatively, you can overload `differentiate_analytic` and `differentiate_sampled`; the class `tfq.differentiators.Adjoint` takes this route.\n", "\n", "The following uses TensorFlow Quantum to implement the gradient of a circuit. You will use a small example of parameter shifting." ] }, { "cell_type": "markdown", "metadata": { "id": "J1xN6Ln5mB9N" }, "source": [ "Recall the circuit you defined above, $|\\alpha⟩ = Y^{\\alpha}|0⟩$. As before, you can define a function as the expectation value of this circuit against the $X$ observable, $f(\\alpha) = ⟨\\alpha|X|\\alpha⟩$. Using [parameter shift rules](https://pennylane.ai/qml/glossary/parameter_shift.html), for this circuit, you can find that the derivative is\n", "$$\\frac{\\partial}{\\partial \\alpha} f(\\alpha) = \\frac{\\pi}{2} f\\left(\\alpha + \\frac{1}{2}\\right) - \\frac{ \\pi}{2} f\\left(\\alpha - \\frac{1}{2}\\right)$$\n", "The `get_gradient_circuits` function returns the components of this derivative." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:24.793259Z", "iopub.status.busy": "2025-01-10T12:22:24.793014Z", "iopub.status.idle": "2025-01-10T12:22:24.799389Z", "shell.execute_reply": "2025-01-10T12:22:24.798734Z" }, "id": "5iY4q6FKNUAG" }, "outputs": [], "source": [ "class MyDifferentiator(tfq.differentiators.Differentiator):\n", " \"\"\"A Toy differentiator for .\"\"\"\n", "\n", " def __init__(self):\n", " pass\n", "\n", " def get_gradient_circuits(self, programs, symbol_names, symbol_values):\n", " \"\"\"Return circuits to compute gradients for given forward pass circuits.\n", " \n", " Every gradient on a quantum computer can be computed via measurements\n", " of transformed quantum circuits. Here, you implement a custom gradient\n", " for a specific circuit. For a real differentiator, you will need to\n", " implement this function in a more general way. See the differentiator\n", " implementations in the TFQ library for examples.\n", " \"\"\"\n", "\n", " # The two terms in the derivative are the same circuit...\n", " batch_programs = tf.stack([programs, programs], axis=1)\n", "\n", " # ... with shifted parameter values.\n", " shift = tf.constant(1 / 2)\n", " forward = symbol_values + shift\n", " backward = symbol_values - shift\n", " batch_symbol_values = tf.stack([forward, backward], axis=1)\n", "\n", " # Weights are the coefficients of the terms in the derivative.\n", " num_program_copies = tf.shape(batch_programs)[0]\n", " batch_weights = tf.tile(tf.constant([[[np.pi / 2, -np.pi / 2]]]),\n", " [num_program_copies, 1, 1])\n", "\n", " # The index map simply says which weights go with which circuits.\n", " batch_mapper = tf.tile(tf.constant([[[0, 1]]]),\n", " [num_program_copies, 1, 1])\n", "\n", " return (batch_programs, symbol_names, batch_symbol_values,\n", " batch_weights, batch_mapper)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "bvEgw2m6NUAI" }, "source": [ "The `Differentiator` base class uses the components returned from `get_gradient_circuits` to calculate the derivative, as in the parameter shift formula you saw above. This new differentiator can now be used with existing `tfq.layer` objects:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:24.801839Z", "iopub.status.busy": "2025-01-10T12:22:24.801608Z", "iopub.status.idle": "2025-01-10T12:22:25.216646Z", "shell.execute_reply": "2025-01-10T12:22:25.215903Z" }, "id": "QrKnkWswNUAJ" }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, 'x')" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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q7FDFYUJHikuLsaaNWtw880345xzzhnz9Zdeeik2b96M6667Dl6vFxdffPGYvzNlyhR8/etfx7PPPovf/va3w74mV1tw6O8MZ9fOPPNMxONxrFmzxvheIpHAb37zmzHf44ILLoDX68Utt9wyZGyapg17tT4WZAtyhzw1kvDss89iy5YtQ76/dOlSzJgxAx9//DFuuOEGrFixwjBE999/P4455hhcddVV+POf/wxA95Y88cQTOP/883HWWWdh165duPvuuzFv3ryM++2TTz4Zl156Ke68805s27YNZ5xxBlRVxWuvvYaTTz4ZV199NQBg4cKF+Oc//4lf/epXmDRpEqZPnz5s/Aqg3zk/+eSTOP3003HCCSfgggsuwIknnoiioiLs378f//u//4u9e/firLPOympOzj77bDzwwAMIh8OYN28e1q5di3/+859Gmjvjhz/8IR544AGjJgZL6Z46deqY99uXXnop/vznP+Pb3/42XnrpJRx//PFIJBLYsmUL/vznP+O5557LuSjiwoULAegB0hdffDH8fj/OOeccywoKEkSuZJviDABnnXUWKisr8dhjj2H58uWoqanJ6vfuuOMO7Nq1C9/97nfxyCOP4JxzzkFNTQ1aW1vxxhtv4Kmnnsoq1gXI3q6dc845OP7443H99ddj9+7dmDdvHp544omMGLyRmDlzJn784x9j1apV2L17N8477zyUlJRg165dePLJJ3HllVfiX//1X7Mab/rfLCsrw913342SkhIUFRXhuOOOGzFuiACldIvOaCndSKYCxuNx7dhjj9Xq6uq0zs7OjN//9a9/rQHQHn30UU3T9HTsn/zkJ9rUqVO1YDCoLViwQHv66ae1yy67TJs6dWrG78bjce3222/X5s6dqwUCAa26ulpbvny5tmHDBuM1W7Zs0T7zmc9oBQUFGoCs0rs7Ozu1H/3oR9qCBQu04uJiLRAIaPX19doXvvAF7amnnhr2379+/fohf6ejo0O7/PLLtaqqKq24uFg7/fTTtS1btmhTp04dMo4PPvhAO+mkk7RQKKRNnjxZu/XWW7V77713zJRuTdO0aDSq/exnP9OOOOIILRgMauXl5drChQu1W265JSP9HIC2cuXKIeMcbjy33nqrNnnyZM3j8VB6N+Eooz1j6Rya0p3OVVddpQHQHn744ZzeOx6Pa/fdd5/22c9+Vquo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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "custom_dif = MyDifferentiator()\n", "custom_grad_expectation = tfq.layers.Expectation(differentiator=custom_dif)\n", "\n", "# Now let's get the gradients with finite diff.\n", "with tf.GradientTape() as g:\n", " g.watch(values_tensor)\n", " exact_outputs = expectation_calculation(my_circuit,\n", " operators=[pauli_x],\n", " symbol_names=['alpha'],\n", " symbol_values=values_tensor)\n", "\n", "analytic_finite_diff_gradients = g.gradient(exact_outputs, values_tensor)\n", "\n", "# Now let's get the gradients with custom diff.\n", "with tf.GradientTape() as g:\n", " g.watch(values_tensor)\n", " my_outputs = custom_grad_expectation(my_circuit,\n", " operators=[pauli_x],\n", " symbol_names=['alpha'],\n", " symbol_values=values_tensor)\n", "\n", "my_gradients = g.gradient(my_outputs, values_tensor)\n", "\n", "plt.subplot(1, 2, 1)\n", "plt.title('Exact Gradient')\n", "plt.plot(input_points, analytic_finite_diff_gradients.numpy())\n", "plt.xlabel('x')\n", "plt.ylabel('f(x)')\n", "plt.subplot(1, 2, 2)\n", "plt.title('My Gradient')\n", "plt.plot(input_points, my_gradients.numpy())\n", "plt.xlabel('x')" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "oXqcJWigNUAL" }, "source": [ "This new differentiator can now be used to generate differentiable ops.\n", "\n", "Key Point: A differentiator that has been previously attached to an op must be refreshed before attaching to a new op, because a differentiator may only be attached to one op at a time." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2025-01-10T12:22:25.219774Z", "iopub.status.busy": "2025-01-10T12:22:25.219220Z", "iopub.status.idle": "2025-01-10T12:22:25.528066Z", "shell.execute_reply": "2025-01-10T12:22:25.527418Z" }, "id": "F_WHcj3bNUAM" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "---TFQ---\n", "Foward: [[0.7776]]\n", "Gradient: [[1.757407]]\n", "---Original---\n", "Forward: 0.80901700258255\n", "Gradient: 1.8063604831695557\n" ] } ], "source": [ "# Create a noisy sample based expectation op.\n", "expectation_sampled = tfq.get_sampled_expectation_op(\n", " cirq.DensityMatrixSimulator(noise=cirq.depolarize(0.01)))\n", "\n", "# Make it differentiable with your differentiator:\n", "# Remember to refresh the differentiator before attaching the new op\n", "custom_dif.refresh()\n", "differentiable_op = custom_dif.generate_differentiable_op(\n", " sampled_op=expectation_sampled)\n", "\n", "# Prep op inputs.\n", "circuit_tensor = tfq.convert_to_tensor([my_circuit])\n", "op_tensor = tfq.convert_to_tensor([[pauli_x]])\n", "single_value = tf.convert_to_tensor([[my_alpha]])\n", "num_samples_tensor = tf.convert_to_tensor([[5000]])\n", "\n", "with tf.GradientTape() as g:\n", " g.watch(single_value)\n", " forward_output = differentiable_op(circuit_tensor, ['alpha'], single_value,\n", " op_tensor, num_samples_tensor)\n", "\n", "my_gradients = g.gradient(forward_output, single_value)\n", "\n", "print('---TFQ---')\n", "print('Foward: ', forward_output.numpy())\n", "print('Gradient:', my_gradients.numpy())\n", "print('---Original---')\n", "print('Forward: ', my_expectation(pauli_x, my_alpha))\n", "print('Gradient:', my_grad(pauli_x, my_alpha))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "OGWcpqzDNUAP" }, "source": [ "Success: Now you can use all the differentiators that TensorFlow Quantum has to offer—and define your own." ] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "gradients.ipynb", "private_outputs": true, "provenance": [], "toc_visible": true }, "kernelspec": { "display_name": "Python 3", "language": "python", "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.21" }, "vscode": { "interpreter": { "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1" } } }, "nbformat": 4, "nbformat_minor": 0 }