{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "kkK5yOtaEOWL"
},
"source": [
"# SNR Result"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "kCzmRkwxler6"
},
"source": [
"**Experiment of Residual Networks**"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "scrFZBY5ErKc",
"outputId": "6e55dc88-b560-4108-d874-7a74704d2b40"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[?25l\r",
"\u001b[K |██▏ | 10kB 31.5MB/s eta 0:00:01\r",
"\u001b[K |████▎ | 20kB 34.3MB/s eta 0:00:01\r",
"\u001b[K |██████▍ | 30kB 39.2MB/s eta 0:00:01\r",
"\u001b[K |████████▌ | 40kB 28.0MB/s eta 0:00:01\r",
"\u001b[K |██████████▋ | 51kB 30.6MB/s eta 0:00:01\r",
"\u001b[K |████████████▊ | 61kB 26.3MB/s eta 0:00:01\r",
"\u001b[K |██████████████▉ | 71kB 24.5MB/s eta 0:00:01\r",
"\u001b[K |█████████████████ | 81kB 23.6MB/s eta 0:00:01\r",
"\u001b[K |███████████████████ | 92kB 25.2MB/s eta 0:00:01\r",
"\u001b[K |█████████████████████▏ | 102kB 22.5MB/s eta 0:00:01\r",
"\u001b[K |███████████████████████▎ | 112kB 22.5MB/s eta 0:00:01\r",
"\u001b[K |█████████████████████████▍ | 122kB 22.5MB/s eta 0:00:01\r",
"\u001b[K |███████████████████████████▌ | 133kB 22.5MB/s eta 0:00:01\r",
"\u001b[K |█████████████████████████████▋ | 143kB 22.5MB/s eta 0:00:01\r",
"\u001b[K |███████████████████████████████▊| 153kB 22.5MB/s eta 0:00:01\r",
"\u001b[K |████████████████████████████████| 163kB 22.5MB/s \n",
"\u001b[?25h\u001b[?25l\r",
"\u001b[K |████████ | 10kB 35.3MB/s eta 0:00:01\r",
"\u001b[K |███████████████▉ | 20kB 39.4MB/s eta 0:00:01\r",
"\u001b[K |███████████████████████▊ | 30kB 43.7MB/s eta 0:00:01\r",
"\u001b[K |███████████████████████████████▊| 40kB 46.9MB/s eta 0:00:01\r",
"\u001b[K |████████████████████████████████| 51kB 9.3MB/s \n",
"\u001b[?25h"
]
}
],
"source": [
"!pip install -qq -e git+http://github.com/tensorflow/cleverhans.git#egg=cleverhans\n",
"import sys\n",
"sys.path.append('/content/src/cleverhans')\n",
"import cleverhans\n",
"folder_name = \"./adversarial_examples_parseval_net/src/logs/saved_models/\"\n",
"folder_name = \"\""
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "P3Ic_pclEOWd",
"outputId": "508c4768-c6b7-44f5-b875-9bc30b7e33b6"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Tensorflow Version: 2.4.0\n"
]
}
],
"source": [
"import tensorflow as tf\n",
"from cleverhans.future.tf2.attacks import fast_gradient_method\n",
"from tensorflow.keras.optimizers import SGD\n",
"from tensorflow.keras.callbacks import Callback, LearningRateScheduler, EarlyStopping\n",
"from sklearn.model_selection import train_test_split\n",
"import pandas as pd\n",
"import numpy as np\n",
"from sklearn.preprocessing import LabelEncoder\n",
"from tensorflow.keras.utils import to_categorical\n",
"\n",
"from sklearn.model_selection import KFold\n",
"import gzip\n",
"import pickle\n",
"import numpy as np\n",
"\n",
"import warnings\n",
"warnings.filterwarnings(\"ignore\")\n",
"\n",
"print(\"\\nTensorflow Version: \" + tf.__version__)\n",
"\n",
"\n",
"# defined utility functions\n",
"#from preprocessing import preprocessing_data\n",
"\n",
"from _utility import lrate, get_adversarial_examples, print_test\n",
"#from wresnet import WideResidualNetwork\n",
"#from parsevalnet import ParsevalNetwork\n",
"#import pandas as pd\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"id": "PDl5l5VOPrDj"
},
"outputs": [],
"source": [
"!cp drive/MyDrive/ARAS/* models/"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"id": "7NJdmKEXQ7wY"
},
"outputs": [],
"source": [
"!cp drive/MyDrive/adversarial_examples_parseval_net/data.pz models/"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "hcPFBUjdPrcD",
"outputId": "588c52dd-a9fc-4eb7-e789-3adf3b434788"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mounted at /content/drive\n"
]
}
],
"source": [
"from google.colab import drive\n",
"drive.mount('/content/drive')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Psk-FZmvP6m_"
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"id": "sPqR9xN9EOWp"
},
"outputs": [],
"source": [
"epsilon_list = [i/1000 for i in range(0,40)]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "gLczK1jwhP4L"
},
"outputs": [],
"source": [
"epsilon_list"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "3A8qMxGap02K",
"outputId": "34500939-0786-4d2e-949b-94ffe0d95ed3"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting hickle\n",
"\u001b[?25l Downloading https://files.pythonhosted.org/packages/24/c8/af2d17ea98d7eb60ad05689c0509c5c3538a603344818c3d5f0f5c004f1e/hickle-4.0.3-py3-none-any.whl (48kB)\n",
"\r",
"\u001b[K |██████▊ | 10kB 25.5MB/s eta 0:00:01\r",
"\u001b[K |█████████████▌ | 20kB 16.2MB/s eta 0:00:01\r",
"\u001b[K |████████████████████▏ | 30kB 14.9MB/s eta 0:00:01\r",
"\u001b[K |███████████████████████████ | 40kB 14.8MB/s eta 0:00:01\r",
"\u001b[K |████████████████████████████████| 51kB 6.4MB/s \n",
"\u001b[?25hRequirement already satisfied: h5py<3.0.0,>=2.8.0 in /usr/local/lib/python3.6/dist-packages (from hickle) (2.10.0)\n",
"Requirement already satisfied: numpy>=1.8 in /usr/local/lib/python3.6/dist-packages (from hickle) (1.19.4)\n",
"Requirement already satisfied: dill>=0.3.0 in /usr/local/lib/python3.6/dist-packages (from hickle) (0.3.3)\n",
"Requirement already satisfied: six>=1.11.0 in /usr/local/lib/python3.6/dist-packages (from hickle) (1.15.0)\n",
"Installing collected packages: hickle\n",
"Successfully installed hickle-4.0.3\n"
]
}
],
"source": [
"!pip install hickle\n",
"import hickle as hkl"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"id": "tYtYNWlmE-yj"
},
"outputs": [],
"source": [
"data = hkl.load(\"data.hkl\")\n",
"X_train, X_test, Y_train, y_test = data['xtrain'], data['xtest'], data['ytrain'], data['ytest']"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"id": "R69Nc9UkRrti"
},
"outputs": [],
"source": [
"\n",
"BS = 64\n",
"init = (32, 32,1)\n",
"opt = SGD(lr=0.1, momentum=0.9)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "lxrpq-u_cSEd"
},
"outputs": [],
"source": [
"\n",
"parseval = ParsevalNetwork(init, 0.0001, 0.9, nb_classes=4, N=2, k=1, dropout=0.0)\n",
"resnet = WideResidualNetwork(init, 0.0001, 0.9, nb_classes=4, N=2, k=1, dropout=0.0)\n",
"parseval_model = parseval.create_wide_residual_network()\n",
"parseval_model_da = parseval.create_wide_residual_network()\n",
"resnet_model = resnet.create_wide_residual_network()\n",
"resnet_model_da = resnet.create_wide_residual_network()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "YA4uSa__VoEe"
},
"outputs": [],
"source": [
"def evaluation_result(frame, model, model_da, index):\n",
" for i, epsilon in enumerate(epsilon_list):\n",
" x_adv = get_adversarial_examples(model,X_test, y_test, epsilon)\n",
" SNR = 20*np.log10(np.linalg.norm(X_test)/np.linalg.norm(X_test-x_adv))\n",
" test = model.evaluate(x_adv, y_test, verbose = 0.0)\n",
" test_da = model_da.evaluate(x_adv, y_test, verbose = 0.0)\n",
" row = {\"acc\":test[1], \"acc_da\": test_da[1],\"SNR\":SNR}\n",
" frame = frame.append(row, ignore_index=True)\n",
" return frame"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "azXld8ReZcGG"
},
"outputs": [],
"source": [
"df_parseval_1 = pd.DataFrame()\n",
"df_parseval_2 = pd.DataFrame()\n",
"df_parseval_3 = pd.DataFrame()\n",
"df_parseval_4 = pd.DataFrame()\n",
"df_parseval_5 = pd.DataFrame()\n",
"df_parseval_6 = pd.DataFrame()\n",
"df_parseval_7 = pd.DataFrame()\n",
"df_parseval_8 = pd.DataFrame()\n",
"df_parseval_9 = pd.DataFrame()\n",
"df_parseval_0 = pd.DataFrame()\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "-87OuDRbtLbW"
},
"outputs": [],
"source": [
"list_df = []\n",
"list_df.append(df_parseval_0)\n",
"list_df.append(df_parseval_1)\n",
"list_df.append(df_parseval_2)\n",
"list_df.append(df_parseval_3)\n",
"list_df.append(df_parseval_4)\n",
"list_df.append(df_parseval_5)\n",
"list_df.append(df_parseval_6)\n",
"list_df.append(df_parseval_7)\n",
"list_df.append(df_parseval_8)\n",
"list_df.append(df_parseval_9)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "tx9dfUCwUoU9"
},
"outputs": [],
"source": [
"column_name = \"test_\"\n",
"column_name_da = \"test_da_\"\n",
"\n",
"for i in range(10):\n",
" model_name = \"Parseval_\"+str(i)+\".h5\"\n",
" model_name_da = \"Parseval_da_\"+str(i)+\".h5\"\n",
" parseval_model.load_weights(model_name)\n",
" parseval_model_da.load_weights(model_name_da)\n",
" parseval_model.compile(loss=\"categorical_crossentropy\", optimizer=opt, metrics=[\"acc\"])\n",
" parseval_model_da.compile(loss=\"categorical_crossentropy\", optimizer=opt, metrics=[\"acc\"])\n",
" list_df[i] = evaluation_result(list_df[i], parseval_model, parseval_model_da, i)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "TB2Qf4h-uCEW"
},
"outputs": [],
"source": [
"mean_acc = (list_df[0][\"acc\"]+list_df[1][\"acc\"]+list_df[2][\"acc\"]+list_df[3][\"acc\"]+list_df[4][\"acc\"]+list_df[5][\"acc\"]+list_df[6][\"acc\"]+list_df[7][\"acc\"]+list_df[8][\"acc\"]+list_df[9][\"acc\"])/10"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Ih9SU1Q91zP9"
},
"outputs": [],
"source": [
"mean_acc_da = (list_df[0][\"acc_da\"]+list_df[1][\"acc_da\"]+list_df[2][\"acc_da\"]+list_df[3][\"acc_da\"]+list_df[4][\"acc_da\"]+list_df[5][\"acc_da\"]+list_df[6][\"acc_da\"]+list_df[7][\"acc_da\"]+list_df[8][\"acc_da\"]+list_df[9][\"acc_da\"])/10"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "I3H-GhGMy88S"
},
"outputs": [],
"source": [
"df_resnet_1 = pd.DataFrame()\n",
"df_resnet_2 = pd.DataFrame()\n",
"df_resnet_3 = pd.DataFrame()\n",
"df_resnet_4 = pd.DataFrame()\n",
"df_resnet_5 = pd.DataFrame()\n",
"df_resnet_6 = pd.DataFrame()\n",
"df_resnet_7 = pd.DataFrame()\n",
"df_resnet_8 = pd.DataFrame()\n",
"df_resnet_9 = pd.DataFrame()\n",
"df_resnet_0 = pd.DataFrame()\n",
"list_df_r = []\n",
"list_df_r.append(df_resnet_0)\n",
"list_df_r.append(df_resnet_1)\n",
"list_df_r.append(df_resnet_2)\n",
"list_df_r.append(df_resnet_3)\n",
"list_df_r.append(df_resnet_4)\n",
"list_df_r.append(df_resnet_5)\n",
"list_df_r.append(df_resnet_6)\n",
"list_df_r.append(df_resnet_7)\n",
"list_df_r.append(df_resnet_8)\n",
"list_df_r.append(df_resnet_9)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "CDrVZvnMfyGe"
},
"outputs": [],
"source": [
"column_name = \"test_\"\n",
"column_name_da = \"test_da_\"\n",
"\n",
"for i in range(10):\n",
" model_name = \"ResNet_\"+str(i)+\".h5\"\n",
" model_name_da = \"ResNet_da_\"+str(i)+\".h5\"\n",
" resnet_model.load_weights(model_name)\n",
" resnet_model_da.load_weights(model_name_da)\n",
" resnet_model.compile(loss=\"categorical_crossentropy\", optimizer=opt, metrics=[\"acc\"])\n",
" resnet_model_da.compile(loss=\"categorical_crossentropy\", optimizer=opt, metrics=[\"acc\"])\n",
" list_df_r[i] = evaluation_result(list_df_r[i], resnet_model, resnet_model_da, i)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "okr0CEf36OCR"
},
"outputs": [],
"source": [
"list_df[9]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Bi3ArlH7hFMr"
},
"outputs": [],
"source": [
"mean_acc_r = (list_df_r[0][\"acc\"]+list_df_r[1][\"acc\"]+list_df_r[2][\"acc\"]+list_df_r[3][\"acc\"]+list_df_r[4][\"acc\"]+list_df_r[5][\"acc\"]+list_df_r[6][\"acc\"]+list_df_r[7][\"acc\"]+list_df_r[8][\"acc\"]+list_df_r[9][\"acc\"])/10"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "-UMhh1Wv44Y7"
},
"outputs": [],
"source": [
"mean_acc_da_r = (list_df_r[0][\"acc_da\"]+list_df_r[1][\"acc_da\"]+list_df_r[2][\"acc_da\"]+list_df_r[3][\"acc_da\"]+list_df_r[4][\"acc_da\"]+list_df_r[5][\"acc_da\"]+list_df_r[6][\"acc_da\"]+list_df_r[7][\"acc_da\"]+list_df_r[8][\"acc_da\"]+list_df_r[9][\"acc_da\"])/10"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "eGssN3tQ8CMA",
"outputId": "f66aafe2-fbe5-4673-f150-4f5218093b7e"
},
"outputs": [
{
"data": {
"text/plain": [
"0.6956369936466217"
]
},
"execution_count": 61,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"mean_acc_r[0]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "_ew1CSd783Vf",
"outputId": "be0f983b-48d3-4c35-b5d3-4703d9d5cfdc"
},
"outputs": [
{
"data": {
"text/plain": [
"40"
]
},
"execution_count": 60,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"len(mean_acc_da_r)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 325
},
"id": "6sdUdzSCEOW7",
"outputId": "0a2bed53-afb1-425a-8d56-491578e2a7c8"
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAE0CAYAAADQYm9sAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydeXxU1fn/38/MJCSBkLCHhFVBUJHNKHWtxQLiLi5Vu6j1q11c0LauuKDVSl1qtdqf1Vax7gJqpai4UFxwqaBIWQRkUSABwpKEbGQy8/z+uDfJZDKTTJLJ/rxfr3nNveece+4zN3A+95zznOeIqmIYhmEYseBpbQMMwzCM9oOJhmEYhhEzJhqGYRhGzJhoGIZhGDFjomEYhmHEjImGYRiGETMmGkZURGSmiDzb2naEIw5PicheEflva9vTFhCRu0Rkl4hsj7F8m/zbhiMiF4vIRzGWnS0idzW3TZ0dE41OjIgUhXyCIlIacv7jON9rtoiUu3XvEZF3RGRkI6s7FpgEDFDVI+NoZrtERAYBvwUOUdWMCPkniMjWlrfM6IiYaHRiVLVb5Qf4DjgtJO25Zrjlve69BgA7gdkNrUBEfMBgYLOqFjfy+o7GIGC3qu5sbUOMjo+JhlEfiSLyTxHZJyKrRCS7MkNEMkVknojkicgmEbk6lgpVtQR4HhhVXz3uMMpcEXlWRAqBS4G/A0e5vZY73HKXicg3bi/mdRHJDKlDReQKEVkPrK988xaR60Vkp4jkisiZInKyiKxz67g55PojReQTEcl3yz4iIolh9f9SRNa7ZR4VEQnJv0xE1rjPcLWIjG/o8xORNPfvkCci34rILSLiEZEfAu8Ame7zmB12XVfgzZD8opBnE5e/rduL/KuIvOnWv0REMkTkz+4Q4tciMi6k/MEisth9VqtE5PSQvF7u369QnKHHA8PuNdLtpe4RkbUicl4Um3qLyL/de+wRkQ9FxNq7eKCq9rEPwGbgh2FpM4Ey4GTAC9wDfOrmeYBlwG1AInAAsBGYEqX+2cBd7nE3HNH4sL56XBv8wJlu2WTgYuCjkLonAruA8UAX4C/AByH5itOw9nSvPwGocO+ZAFwG5Lk2pQKHAqXAUPf6w4HvAT5gCLAGuCas/n8D6Thv/XnASW7eucA24AhAgGE4PaWGPr9/Av9y7RsCrAMudfNOALbW8betld8Mf9td7nNKAhYBm4CfuXXfBfzHLZsAfAPc7NY9EdgHjHDzXwReBrrivFRsq/xbu2lbgEvcv8U4976HRPg3dg/wmHu/BOA4QFr7/1lH+LS6AfZpGx+ii8a7IeeHAKXu8QTgu7DyNwFPRal/tttI5QPbgddx3iLrrMe14YOw/IupKRr/wBn6qjzvhiM0Q9xzBSaG5J+AIwpe9zzVLTMhpMwy4Mwov+Ua4NWQcwWODTl/GbjRPV4ITI9QR8zPz214yysbRzftF8DikN/TGNGI59/2iZDzq4A1IeeHAfnu8XHu398Tkv+Ca4/X/buNDMn7A9Wi8SPgw7B7/w24PcSOStG4E0dkh7X2/62O9umI47tGfAn1xikBkkLmFTJFJD8k34vTe4jG/ap6S2iCiBweQz1b6rExE/ii8kRVi0RkN5CFI4aR6titqgH3uNT93hGSX4ojPojIQcCfgGwgBectd1lYfeHPqZt7PBDYEMHmhjy/3jhvy9+GpH2L8/uaQjz/tuHPLuKzxPlbbVHVYEh+5W/pg/Nst4TlVTIYmBBmlw94JoI99+EI0dvuSOHjqjqrDvuNGDHRMBrLFmCTqg5vgXrqC8Wcg9OgAFXj+L1whjZiraMu/h/wJXCBqu4TkWuAc2K8dgth4/Ih6bE+v104b+CDgdVu2iBq/r66aOhvj9ffNhI5wEAR8YQIxyCc4bY8nGHDgcDXIXmhdr2vqpPqu4mq7sPxKPutiIwCFonI56r6Xpx+R6fFJoaMxvJfYJ+I3CAiySLiFZFRInJEK9TzAnCJiIwVkS44QxqfqermBtoSjVSgECgSx034Vw249u/A70TkcHEYJiKDacDvdntELwN3i0iqe/1vgFjXWewAeolIWozl4/W3jcRnOL2a60UkQUROAE4DXnR/5yvATBFJEZFDgItCrv03cJCI/NS9NkFEjhCRg8NvIiKnus9agAIgAATDyxkNx0TDaBTuf/BTgbE4k567cBrIWBumuNWjqu8CtwLzgFycN/vzG2JHPfwOuBBnwvYJ4KUG2DYHuBtnkn0f8BrQsxG/+yqgGGdC+iO3vidjtOFrHGHd6HoTZdZTPi5/2yh1l+OIxFS33r8CP3NtBLgSZyhrO84cxVMh1+4DJuP8bXPcMn/EcX4IZzjwLlAEfAL8VVX/01T7DdebwDAMwzBiwXoahmEYRsyYaBiGYRgxY6JhGIZhxIyJhmEYhhEzJhpGqyAix4gTq6lIRM5sbXvCce06oLXtaA5E5DERuTWO9VlI8k6ELe4zWos7gUdU9aHWNiQS6kTj7ZCo6i8rj911Es+q6oDWs8hoT1hPw2gtBgOrGnOhNGN48+as2zA6AiYaRosjIhtwIqfOd4eBurihuF93w1h/IyKXhZQPD49+cVh9E0Rku4h4Q9LOEpEV7nEsoc2rQqeHpA1zjyOGJXfzhonI+yJSIM7OeREX/onIELfOS0Rkizghw3/prmhe4dr2SEj5A0VkkYjsdut9TkTSQ/LHi8iX4oQ1nyMiL1UOEUl16PffSnXo90tCrp0tzk5/EcOmhw83SdgmTiIyTkS+cO/9Ek5k29DfeqqILHd/08ciMjok7wYR2eZeu1ZEToz0vIy2i4mG0eKo6oHU3PRpP05I7K04Ae3OAf4gIhNDLjsDmIsTfvy5sPo+w1ktHVr+QpxV0+CEkLgWJ/DfUcCJwK/DzDoTJ7rrIRFM/gvOaugDgO/jhPyubIR/D7wN9MDZXOov9fz8CTirlX8E/BmYAfwQJxz7eSLyfbec4IT3zgQOxonHNBPAFbxXcVZM98RZ7X1W2H0yXJuzcPYgeVREeoQWUGcTq6lAjlZvvpVTl/HuvV/DCRLYE5gDnB2SPw5npfovcOJ//Q143X0xGIGz4vsIVU0FplAdUNJoJ5hoGK2OiAwEjgFuUNUyVV2OE7biZyHFPlHV11Q1qKqlEap5AbjArS8VZ5+IFwBUdZmqfqqqFW48qr/hNP6h3KOqe8Lrdnsv5wM3qeo+9/oHgJ+6RSoDCWa6tte3n/Xv3XJv4wjdC6q6U1W34USRHefa/I2qvqOq+1U1DyfKbqXNlXt7PKyqflV9BSdeVCh+4E43/w2ccBoj6rEtFr6HE3H3z27dc4HPQ/IvB/6mqp+pakBVnwb2u9cFcEJ+HCIiCaq6WVUjRQA22jAmGkZbIBPY48YWqiQ89Hd94dGfB6aJE7BwGvCFqn4LTmhzcXZx2+4Ob/0Bp9cRSrT66wtLfj1Or+C/4uxC9/N67IwphLiI9BORF92hnEKc4ISVNmcC27RmDKBIod8rQs5Dw7U3hUj3Dg9f/lt3aCpfnDDmA3FE9RucvUhmAjvd31dnHCyj7WGiYbQFcoCebg+hkvDQ33UGSVPV1TiN11RqDk2BE9r8a2C4qnbH2TVOwquIUnVoWPJatqnqdlW9TFUzcYZk/lo5F9JE/uDadJhr809CbM4FskQk9DcMbOR9Iv3uYpx9QyrJCDmOdO/w8OV3q2p6yCdFVSt7fc+r6rE4z1NxAg4a7QgTDaPVUdUtwMfAPSKS5E6cXkrsob8reR6YDhyPM9ZeSaNDm9cXllxEzhWRSnfVvTgNYTxCcKfiDCkViEgWcF1I3ic4Qz1XiohPRM4AjmzkfSKFTV8OnCwiPUUkA6d3EHrvCuBqcUKTTwu79xPAL8VxThAR6Soip7jPboSITHR7g2U4PSsLV97OMNEw2goX4Ox9nYMzyXu7G/K8IbyAM+6/SFV3haQ3OrS5S11hyY8APhORIpwtbKer6sYG1h+JO3D2PC8AFuDsMwFUhRefhiOs+Ti9kH/jzB00iChh058BvsKZpH6bkOcVcu+LgT04E/qhti3F2XP9ERwR/YZqb7cuwCyc3tt2oC/ONrJGO8JCoxtGB0BEPgMeU9Wn6i1sGE3AehqG0Q4Rke+LSIY7PHURMBp4q7XtMjo+tvrVMNonI3DmWrriDJudo6q5rWuS0Rmw4SnDMAwjZmx4yjAMw4gZEw2jwxMeO6mtIiI3i8jfYyzbLOHIG2KD0TmxOQ3DaCOo6h/MBqOtYz0Nw2gkEscw6vGsyzCaExMNo10iIg+5IcYLRWSZiBwXkpfsDt/sFZHVOAvwKvNuEJG5Eep62D1OE5F/uOHEt7khxL1u3sUiskREHhSR3cBMqSM0ej021gr37qY9G1Jmjhsvq0BEPhCRQ2N8NheLyEcicr/7DDaJyNSQ/PrC0Feudk9y7dvtLvz7XET61fecjI6NiYbRXvkcGIsTnvt5YI6IVO7rcDtwoPuZAlwUct2LOCEyUqEqiu15VMeqmo0TJmMYTsTZycD/hVw/AcfFtR9wN3WHRq/LRqgj3LvLmzhh1PsCX0QpE40JwFqcIIf3Av8IiRdVXxj6Si7CCa8+ECfM+S9xQn9A/c/J6KCYaBjtElV9VlV3u+HOH8AJUVEZ+vs8nKB5e9y4Vg+HXPctTgNcuf/ERKBEVT9136JPBq5R1WJV3Qk8iBMavZIcVf2Le99S6giNXo+NUE+4d1V90g3Hvh8nMuyYsBhRdfGtqj7hxs56GugP9JPYwtBX4scRi2FumPNlqloY43MyOigmGka7RER+JyJr3KGbfJw34tDQ4aGhwr8Nu/x53L03qBkRdzBOGPRcqQ7r/TecN/1KwkOQRw2NXo+NkeoK/X1eEZklIhvc4avNblZ4SPdobK88UNUS97AbsYWhr+QZYCHwoojkiMi9IpJAbM/J6KDY5JvR7nDnBq7H2YFvlaoGRWQvNUOHD6R6D/JBYVXMAR4QJzrtWTi7+YHTiO8HeoftRRFKjdWwqrodJ0AfInIs8K6IfIDzZl+XjbXqCuNCnOGrH+IIRhpOAMDwkO4NpSoMfYhwhIehd4xT9eMETrxDRIYAb+AMeb1B/c/J6KBYT8Noj6TijKfnAT4RuQ3oHpL/MnCTiPRwheGq0IvdnfAWA08Bm1R1jZueizM/8YCIdBcRjzh7dYfv8leFRA+NXp+NsfzG/cBunL0t4uIK25Aw9CLyAxE5zJ33KcQZrgo25jkZHQcTDaM9shAnON86nKGVMmoO9dzhpm/CadyeiVDH8zhv8c+Hpf8MSARW44jAXJxeQzSihUavz8b6+Kd73TbXlk8bcG19xBqGPgPn9xcCa4D3qX6WDX1ORgfBYk8ZhmEYMWM9DcMwDCNmTDQMwzCMmDHRMAzDMGLGRMMwDMOImQ6/TqN37946ZMiQ1jbDMAyj3bBs2bJdqtonUl6HF40hQ4awdOnS1jbDMAyj3SAi4VEUqrDhKcMwDCNmTDQMwzCMmDHRMAzDMGLGRMMwDMOIGRMNwzAMI2ZMNAzDMDoQBfPns37iiaw5+BDWTzyRgvnz41p/mxENETlJRNa6exbfGCH/QRFZ7n7WuRu/GIZhxExzN6itTcH8+eTeehsVOTmgSkVODrm33hbX39km1mm48fofBSbh7F38uYi8rqqrK8uo6rUh5a/C2ZfYMIw4UDB/Pjsf/DMVubn4+ven77XXkHbaae2m/lhtyL31NrSsDKCqQQXiZosGg1BRgQYCaCAIAeeYQMBJqwhA0P0OVKDBIFpRUZVPaJlAwMkLBqvLB4JooKJmuYqAmxZk12OPVf2+KpvKytj54J/j9hvbhGgARwLfuPsQICIv4uxatjpK+QuA21vINsNos8SjMW7uxrQh9WswiJaX1/oEy8tRv989d7/9IWWq8tyyNco53wXz50dsUHNn3EL+y3Pcht5pfDUQcBr/UBEIBqAiUFMEQo6paLubGFbk5satrrYiGlnU3KBmKzAhUkERGQwMBRZFq0xELgcuBxg0KHynT8NoOzSl0W9sY6+qTkNaWkqwtJSd990fsTHd8Yd7AEErKpwG2u93GlC/3/2EHIemV/iry5b7Kf70U3T//lr159x4Ezvuvbe6cS8vh0CgAU+vHrxeJDERSUhAEhPR0tLIz6O8HADpkojHkww+L+L1IV4PeH2I1wtej5Pm84LH66T5vIjH66RVlXeurVXe53XyIpX3+cBTu7xz38rvmuXF4wGfr0YZ8XpZedIPScirPXLv75MWt8faVkSjIZwPzFXVqP+6VPVx4HGA7Oxs22XKaDEaIgJ1Nfrdp04lWFpKsKQULS0hWFLinpcQLCklWFrCjntmRX5zvvU2Cv+9wClfVlYlDqHHBIP1/pbA3r3kXHdd3YUSEpxGOSHBacwiHIcLRvUNAqSe8AOnYQ9p3J2Pc+yJlJeQWKOcp9a17sfrrXG79RNPdMb6w/BlZjL4mX/W+zzaCkENsrt0N9uKtpFTmENOcQ45Rc7Hc9Q+LnsDkkI6PWU+ePl4D6PjdP+2IhrbgIEh5wOIsNG9y/nAFc1ukdHhiaWBb7IIzLiF0pWrSDp4JMF9RQSL9hHYV0Rw376owyU5111PznXXN/p3aVkZFXl5SEoy3u7d8fTriyQn40lKxpOcjCQnOccpyUhSEnl/epBAfu23U2+fPgx++mmnAY8gCPh8iEi99tTVWPf//Z2N/p0Npe+115A7YwZa7q9Kk8QE+l57TYvZEAtBDZJXkkdOcQ7biraRW5TrCESRIxC5RbmUB8trXNOjSw8yu2Wy6lAhiHDhYqVXIezuDs+fIHw8vJB74mRfWxGNz4HhIjIURyzOBy4MLyQiI4EewCcta57R0YhlaKcuEegydAgVebuo2OV+8vIoW7USAjXf4LW8nL1PP10jTbp0wZOaWkswQul91ZV4klPwpKQ4jXtysnOcnIKnawqe5GS+/enPqNixo9a1vsxMhr4yL+Zn4UlOrvE7ASQpiX7XX0eXA4bGXE802kpjnTa4FI7Yy84vk6go8eJLCdB3XJGTHg+CQdAABCsgGHCPAyHHTnogWE5eyS62FW8np2Q7OaU7ySnZybbSXeSU5ZFbtoeKsIGUnr5uZHVJZ0RiGhN7Z5OZ2J3MhFQyfd3I9HYlxeOFYIDJO/7HkkO9LDm0pmn9A/EbcGkToqGqFSJyJbAQ8AJPquoqEbkTWKqqr7tFzwdeVNvYvNNTXw+gvvydD/wp8tDO7bez7+13CBQUUPLFF7UmN2uIgAjenj3x9e6Nr3fvWoJRhQgHvvUmntRUvN26IYmJQN1v4H2uqL8z3fd3v41LY5x22mnw3afsfOoVKooUXzeh7yUnx83bpsmNdTAIFWXOx19a/e0vhYpS8JfV/vaX1C6/ch5pA0tIG1hYs/5/XQGfPRbWwLuNvAac+1cdV6YHw8pU/zupAHb6vGzz+cjx+cjxed1vH9t8Pnb4vFSE9dB6VwTIrKhgVEUFkyoqyHLPMysq6F8RIDnGJm961xRm9u5Jmad6NUVSMMj03Xtje9Yx0CZEA0BV3wDeCEu7Lex8ZkvaZLQu0Rr++noJ+a+9xvbbZ1aNpVfk5JBz403sfvppCATxb91KcN++iPfUklLKN2/Gm5YW3RtGhGGLF+Pr2cMZpnGJKgL9+5M4eHCt9Ka+gcflzTkYhOXPk7b3H6SdGnLd3ifg/XQ4cKL7hhz6CUQ590fO//BB0gYW1m6s50+H1f+q2bBHEoZAlDmRWPAlOZ+EZEdIIhEoh6R08PjA4wXxhBx73WNP1bFfhB3qJye4n21aRk6g1P2UkFNRzI5ACQFqNvJ9fV3JTExjTGI6mYnpZHbpQVZSDzKTetO/S0+6+JKc+4jHua/H597PG2JH/emn/O042LWHh3qks93nJaMiwPS9+Zzi69X4ZxiGdPSX9uzsbLX9NNousQoDuEMmt9xC3kMPEcjLq12Zz4e3a1cCBQWRb+bz0fWYo0nMGkDBv/9NsLCwdpHMTIYveg+ouydQWSb8t0QSgf533x35rX3FyxQ89NuwRr+MtOkPwOjznDKqULEfyovBX+x8l5c4x3MugZJdtetNTIXDznEb3RL3U+rW4TbE/uLq/Nak7yHVjXpCcvVx+HdCMviSISGp9ndCSuTrfElOY1/Jg6NYULE7coN67cqqYuWBcrYXb6+aYK6aT3DnFHaW7CSo1b1KQeib0pesbllkdsukf9f+VcdZ3bLI6JpBojexRR7n56//jVHLbiFZquc8SjWRlYffxRGn/yLmekRkmapmR8wz0TDiSV0iEJ4O1BaGLl3oeeml5L/wAoG9De9S97jwAvY+/0LkTBEOXrO6ys5IotT/93fWnNOIhwj87GoYNAHKCmF/YfX3koehPEKPx+ODlN7VQqH1ezrVomsfpzFNSHEa0cSubuMbmuYev//HKJUIXPhy9ZtsjU94Wh3njx4BBVtrV582sEZj3dwsWHwrMze9SpmnemgoQZVj0w4iuddwcoudCee8kjw0pKfgEQ/9UvpViUCoKGR2yyQjJYMEb0KkWzYLqkphaQVb80vIyS8jJ7+UnPxStuWXsnDVdqbqh1zve5lM2U2O9uLeivNY1n0SS26cGPM9TDRMNJqFcCHo9v3jKXj1tVoNcdpZZ9ZKx+cDEfD7I9RcN94ePSIKSmUPINYeQsGjM8LG8aeRdsXd1RdEFYGroP8YKNoB+3Y430U7YN1bzlBHPBh/kdPQJ3Z1GvYax92cBn/uz537htPQxvjBUVCwpXZ6vBr1FS/D/Kudnk0lCclw2sPVPapmQFXZXryddXvXsW7vOh5f8ThlgcjOB1Ui0DWzSgwq0/qm9CXB03KiUF4RZEdhGdtcMXAEoVoccvJLKS6vOVGe6PWQmZ7E5t2Re44CbJp1Ssw21CUabWZOw2jb1CcQFTk55L/wYq3rtKwsYnp9q2e9vXsT2FV76MWXmVnvXEDfs79H7l/noYHqN0rxKn3P/l51RV+9VHscf8/jMHc7pA2A0j2wYg5pA0trj8X/5+6a50npkJpRh2AIXDQfkrpDl+6QlAZdUuHhcdEb69MfjlJXCJPvitwYn3hb9GsiceJt8aknGpXC8N6dTo8jbYBTdxwFo8Rfwjf531QJROVnX6SeXBiC8NbZb8XNlrpQVQpK/a4gVAvB1hBB2LlvP+Hv8r26JpKZnswBfbpy7PDeZKUnk1n1SaJ31y54PMIxsxaxLb/2nFZmenLcfoOJhlGLxgpEvKhPGKJOAA8qgX07SCt9GY7Yx84VqdX5o/eRtucJeOQdKNkdeS4gUA4r54InAVJ6OZ44ERH4v3ehWz/o1hd8XZzkqG/sA2DocbXTm9pYx6sxboFGndHnxaW+oAbJKcph3d51rN27lvV717Nu7zq+K/yuakgpxZfCQT0OYuqQqRzU4yAO6nkQw9OHM+31aeQW1w6nkdE1o8l2VVJeEWR7Qc1eQk5BzZ5CSXgvwechMy2JrB7JHD+8D5npySGikET/tGSSE71R7liT66aM4KZX/kepv/oeyQlerpsyIm6/0YanOhnR5hYq07xpaQSKiuIbR8frjRgewpueTrCkOPKcweDSyENDV9wNi+6KPCwTC4ec4QjC0iejFBC4fa8zdNbQYZvGDMOseLl5G+t2TLG/uEoU1u1dx9o9a1mfv55ifzHg9BAGpg6sEoaDejifrG5ZeKR2AO8FGxdw60e349dqb6wE6cLvj72DUw6of+hGVckv8YcJQrVAbNtbSl5R7V5C725OLyEzrVoIQnsKvbom4vHUv0gyVl77chv3LVxLTn4pmenJXDdlBGeOy2pQHTY81YkJFYlwQajIySH35hmoalVapJXBTaFqTmPevFri0O+nE+GLf9buMQzcB+/cEdlN8/Wr6r7hyffD4lmRexJpA+E8N1zE+nei9woqfegb2hNozBt7nN7A2zoLNi7goS8eYnvxdjK6ZjB9/PSqhjqoQbbu21rVe1i3xxGJrUXVk+epCakM7zGc0w44rUoghqcPJyUhJWYb/AVjKcudhvR8E0nIR/3plO2Zir9gLFCzl1BzPqHyuKzGGzw4vYQsVwhOGNGnSggqRaF/WhJJCbH1EuLFmeOyGiwSDcF6Gh2MukSiuZGkJNKOH0XRx0trTi4fNyZyr2EYjhdRQ0np5QwxhVPZA4jljT/WXoH1BJrMgo0LmPnxzBqT0D6Pj/F9x1NWUcb6/PWUukOBHvEwKHUQB/U4iBE9R1T1Hvp37R9TyJK6OHrWe+Tk154IT/AKPVISo/QSupCVnhQyf5Bc47xX18Qm29UWMe+pDi4aVUIRwWOouYgoEKeNJs33fs2G2JfkzBHEMCFZg+SezmR0OGkDo/cAwkWhvsbeBKFFmPjyRPJKa6+rEYTsjOwqYRjRYwQHpB9Asq/pk7YFpX7Wbt/H19sL+Xr7Pr7OLeSL76L3os/LHlAlBAPc74xW6CW0FUw0OphotHRvQhITSDthTP0CES9iEQZr8Ns0mws2s3DzQhZ+u5D1e9dHLCMIKy5a0aT7+ANBNu0qrhKGr7fvY+32fTU8iNKSExiRkcqqbQW1XFUBstKTG7SGoTNgcxodgGi9iabOQYjP68xphMRNEo+CN4j6Pc5Q0thC0nq9CaeGrKnQHGj4EouaJPd0YwVFmDOob36gk8wFtCe+K/zOEYrNC1m7dy0A4/qOo3tidwrLaw9DNsRrSVXJK9rP17mhvYd9fLOziHL3367PIxzYpxvZQ3rwk4zBjMxIZWT/VDK6JyEivPbltmb3LOoMmGi0ISK5uha9/0Fch50iCQIKO79KqemeOiSsB9GUDmk0cZjqrkQ2YWi3bNm3hbc3v83CzQtZs2cNAGP6jOH6I65n0uBJZHTNiOq1NH389Ih1lpYHWL9znysQ1SKxp7h6HUy/7l0YmdGd4w7q7YhDRncO7NONRF9tr6lKKieHm+pZ1Nkx0WhlovUg4rUWQrwCPkX3K76UIH1HF9YWBCBtcFGT7+XekRoKE6s4GO2GnKKcqh7Fqt2rABjdezS/y/4dkwdPpn+3/jXKR/NaKt87hu92l1T3HNzvzbuKCbr/hJITvByUkcqkg/sxsr8jDiMzUunRtXGxnJrbs6gzYHMarUDzT1w7f9OovYa4EUEgxmXKe8MAACAASURBVFwI69+2uYYORm5RLm9/+zZvb36bFbuceYhRvUYxZcgUJg2ZRFa36A1xtFXKof96RGBQz5SqXsPB/VMZkdGdQT1T8MZxDYMRGzan0UYomD+fHXf/If5rIcKHnOItFN5EJ9pqMGQSwwSiQxFpHcXh/Q7nnW/fYeHmhXyV9xUAB/c8mGvGX8PkIZMZmDqwzjq37Cnhw/W7IgoGOIJxz7TDGJmRykH9UunaxZqj9oD9lZqZ5utVxKk3EUkQvIlOULzSvdViAOat1EEJX0eRW5zLTR/eVBWWY2TPkUwfP53JgyczqPugqPUUlPr5ZMNuPvomjw/X7+JbN3ieR6gabgolKz2ZC46MXp/RNjHRaAbavFCI1wm33VBBMJHokDz0xUO1or8qSmpCKs+f8jxD0oZEvM4fCLJ8Sz4frsvjw2928dWWfIIKXRO9fO+AXlxy9BCOHd6H/23N5+ZXV5rXUgfBRCOOxGf4qVoYuvUvoyg3qW6vpoYSLRaSCUKnY0vhFuaunxsxiB9Akb+ohmCoKht3FfPhujw++mYXn27cQ9H+CjwCYwamc+UPhnHs8D6MG5ROgrfai2lY326IiHktdRBMNJpIfHoVdfUgGhFmo3KKMW0gDJ9s8w5GFf6gn/989x/mrpvLJ7mf4BUvXbxd2B9hS9WMrhnsKS7no2928dH6PD5av4ucAqdHMrhXCmeMzeS44b056oDepKXUvd+EeS11HEw0Gkm8ehWSEKT/4ZHdYGMm0hyECYMRwtZ9W5m3fh6vrn+V3WW7yeiawRVjr+CsYWfx2GdvM+fbBxFP9byWBhPI33oih9/1DqrQPcnHMcN6c8XE3hw3rA+DesUeKNDoWJhoNJCmi0W83GFDehMmEkYE/EE/7295nznr5vBJzieICMcPOJ5zDzqXYzKPwetx4iq9+VkmZTqNLn0WVq2j2J83hfLi0fzmh8M4dnhvRg9IN9dXAzDRiImmD0GZUBjNQyRX2bF9xzJv3Txe++Y18krz6JfSj1+N+RVnDT+rKnTHlj0lvL16BwtXbWd7QRkwjorCcTXqFoJcdeLwVvhVRlvGRKMO4tGraPjwk81HGLERyVX25o9uJqhBPOLhuKzjOPegczk261g84mHtjn28/Ol6Fq7azqocZ65sZEYqqUk+9pXVDngZzy1CjY6DiUYEmiYWjelVWA/CaDiRXGWDGqRbQjdePeNV+ib348ste/njW+tYuGo73+4uQQTGD+rBzSePZPIhGQzp3dUC+RkNwkQjjIL588m99baq/bBjp5GT2sk9ndhMJhRGA9hdursOV9liHn47j3dWryRv334SvMJRB/bm8uMPYNIh/eibmlSjvAXyMxqCiUYYOx/8cwMFo6FiYb0Ko/HsKt3FUyuf4uW1L0ctEyxP47Uvt3HCiD5MOTSDH4zsS/ckc4k14oOJRhgVuZHf3mrS0CEoEwqjaeSV5PHkyieZs24O/qCfqUNO5o0vhGDaW7VcZX2Fp/DZrZM67a5zRvNiohGGr3//OrykGjEEZcNPRhPYWbKTJ1c+ydx1c6kIVnBkn0kk7pvEG4uUwrIKfCUptVxlA4WHmWAYzYaJRhh9r72G3Bkz0PLQbekaIhbWqzCazo7iHfxj5T+Yt24eFRpgcOLx5H57NG+vTqVrYpApozJ4f20euwtru8pmmdeT0YyYaISRNrgUjtjLzi8bEfPJehVGA7lj0TPM2/QEQe9ePIEeTB34I1K772Xe+lcIBIN0KT2Swm3HsSbYixNG9OWMqZmcOLIfyYle83oyWgUTjXDeu5O0gYWkDWxAzCcTC6MR3LHoGSd8h8/v9E99e1mQ8xiSA+X5R+LfcwKHDBjGb0/LYuqo/rXiO5nXk9EamGiEU7A1hkI2BGU0nXmbnkB8/hppIhD0d+d342dw6pj+9E+re6jJvJ6MlsZEI5y0AVCwJXq+9SqMOLAx/1uC3r1EiuYkvkIuO/6AFrfJMGLBRCOcE2+D+VeDP2wOw8TCiANf797A7e8/zOrCxVHLeAI9Ws4gw2ggbUY0ROQk4CHAC/xdVWdFKHMeMBNnocRXqnph3A2pFAXb2tSII19tX8vMD/7CNyUfoOqjV3AiQ9MGsnTfs7XWWZwz9LJWtNQw6qZNiIaIeIFHgUnAVuBzEXldVVeHlBkO3AQco6p7RaRvsxk0+jwTCaNRhHtDHdv3dL4tWs+3+z8B9dFfpnDjMb/gxIOGueX71Ch/ztDLuH3iT1v5VxhGdEQ1wo7vLW2EyFHATFWd4p7fBKCq94SUuRdYp6p/b0jd2dnZunTp0niaaxgRqfKGCu05KKBehiZM5Zbjf8mEQYNbz0DDiBERWaaq2ZHy2kRPA8gCQmeftwITwsocBCAiS3CGsGaq6luRKhORy4HLAQYNGhR3Yw0jEtG8oSTQjfk/uSfKVYbRvvDUX6TN4AOGAycAFwBPiEh6pIKq+riqZqtqdp8+fVrQRKOzoqoEvXsj5gW9BS1sjWE0H21FNLYBA0POB7hpoWwFXldVv6puAtbhiIhhtCpb9xbww6evRaLshmreUEZHoq2IxufAcBEZKiKJwPnA62FlXsPpZSAivXGGqza2pJGGEYqq8sSnHzN17rnslPfoKYehwZqrtjWYwNnmDWV0INqEaKhqBXAlsBBYA7ysqqtE5E4ROd0tthDYLSKrgf8A16nq7tax2Ojs7NpXxrRnH+ChNVfiTSji1uw/8f7PnufcwdciFT1QBanowbmDrzVvKKND0Sa8p5oT854y4s0ry9cx85OZaMr/GJA0hqdO+RMZ3ZrPA9wwWpr24D1lGG2S8HUXPYJHsUuW4Eku4qcHXcnvvncZHmkTHXbDaBFMNAwjCpGi0O7WN0iUVGZPfYYxfQ9rbRMNo8WxVyTDiMK8TU/UWKgHzrqLQIXXBMPotJhoGEYUoq+7yG9hSwyj7WCiYRhhBIPKo4tXgCZEzLd1F0ZnxuY0DCOEnYVl/GLuHNYFH8fj86PqQSRYlW9RaI3OjvU0DMNl4aqtTJp9A+s999ErJZnnTnmOcwf9ztZdGEYI1tMwOi2h7rQEuqNBD560fCYNOI27j7+FlIQURk8cze2YSBhGJSYaRqck3J0WXyEoTOh5Jg+e+PvWNs8w2iw2PGV0SqK50/535/utZJFhtA9MNIxORyBYVxjzyOmGYTjY8JTRqSgsLeeCl+6Lmm/utIZRN9bTMDoNq3JzmfjsJXwnL9JdhlgYc8NoBCYaRqfg+S8/4vw3zmd/wkrOHXoFS372uoUxN4xGYKHRjQ5JqDutBJNRTxneYDr3HX8fk4eFbz9vGEYoFhrd6FTUcqf1loIKU7IuNMEwjCZiw1NGhyOyO63y1tbnW8kiw+g4mGgYHYoyf4W50xpGM2KiYXQY3v/mO4596ueIRM43d1rDaDo2p2G0S177chv3LVxLTn4pGWlJZPTJY50+hidxL4MSj+bbss9rDFFZdFrDiA9xEw0ROReYr6pl8arTMCLx2pfbuPntp5Feb9I1I5/CQDL7PGV0kXQe+eE/OHpAdq29vc8Zepm50xpGHIgqGiJyrqrOEZGhqrophrouBB4VkYXAC8BCVQ3Ey1DDqOTu95/D03duVU9CfKWoCp6CH3L0AMdL8PaJP7XotIbRDNQ1p3GT+z0vlopU9SxgGPAucBWwVUQeE5HvN81Ew6hJSdf5Eb2jSlPeaSWLDKPzUNfw1G4ReRsYKiKvh2eq6ukR0gqBp4GnRaQXcA7wsIj0VNWB8TLa6Lzk7duPJETeo9sTJd0wjPhRl2icAowHngEeaEilItIDmAb8COgJzG2sgYZRybe7ijn3xVnQLXJ+WmLfljXIMDohUUVDVcuBT0XkaFXNE5FubnpRpPJu/lnABcA44HXg98Bi7eixSoxmIdRDqleqh7K0l5DUZRyQOpKtRZvw6/6qsgnShZu+95tWtNYwOgexeE/1c4epegIiInnARaq6MqzcZuAt4K84k+B+DKORhHtIlakX8QQ4Mv18njj9Jt7c9CYPffEQ24u3k9E1g+njp3PKAae0ttmG0eGJRTQeB36jqv8BEJET3LSjw8qNB1JVdVVooogcAuSpal7TzTU6C+EeUkgADXpZsSkBj3g45YBTTCQMoxWIZUV410rBAFDVxUDXCOXuBXpFSO8FPNQo64xOS0QPKU+Akq7zW8kiwzAgNtHYKCK3isgQ93MLsDFCuWGq+kF4oqp+CIxuqqFG50FVo3pCmYeUYbQusYjGz4E+wCs4azZ6u2nhpNZRR0IdeYZRhT/g59I3fgdR4keZh5RhtC71zmmo6l7g6hjq+kZETlbVN0ITRWQqkXsmhsGCjQuqJrT7pvRFA4ns3L+FFP9YyhPXUGEeUobRpohnwMJrgAUich6wzE3LBo4CTo3jfYwOwoKNC7j1o9urXGd3lOxAFbrtP56FP/0zH21/2zykDKONETfRUNX1InIYTgyqUW7y+8AvLIihEYl7Pv1TjbUWACLg7baGtJQE85AyjDZIXEOjq+p+4KnGXCsiJ+F4WXmBv6vqrLD8i4H7gG1u0iOq+vfGW2u0NgXlOyPOXRT6zTvbMNoq9U6Ei8jTIpIect5DRJ6MpxEi4gUeBaYChwAXuOs7wnlJVce6HxOMdk4wEDkeSNCfHjHdMIzWJxbvqdGqWuXn6E6Mj4uzHUcC36jqRjd8yYvAGXG+h9GGWL5zOR5PKeEBZjSYQErxaa1jlGEY9RLL8JRHRHq4YoGI9IzxusrAhQNVdUU9RbOALSHnW4EJEcqdLSLHA+uAa1V1S4QyiMjlwOUAgwYNisVUo5kJ9ZLqldSLgv0FaEUP9u8+msReHyAJ+ag/Hd0zlRmTf9za5hqGEYVYGv8HgE9EZI57fi5wd7TCIrIYON2texmwU0SWqGpTfSXnAy+o6n4R+QVOCPaJkQqq6uM4oU7Izs62YImtzIKNC5j58UzKAo4/xK6yXaCQUHw804++iNkfn0hOfimZ6clcN2UEZ47LamWLDcOIRizrNP4pIkupbqCnqerqOi5JU9VCEfk/4J+qeruI1NfT2AaE7rcxgOoJ70o7doec/h0nbInRDnjoi4eqBKMKgR79P+ay4+/gsuMPaB3DDMNoMLFMhH8P2KKqj6jqIzg78kUaOqrEJyL9gfOAf8dox+fAcBEZKiKJwPk4odVD7egfcno6sCbGuo1WJrd4e8T0vLIdLWyJYRhNJZaJ8P8HhO6hUeSmReNOYCHOxPbnInIAsL6uG6hqBXCle90a4GVVXSUid4pI5Q6BV4vIKhH5CmeF+sUx2G60ASQQOcKMVJiXlGG0N2KZ05DQTZRUNSgidW3eNAeYE3K+ETi7vpu44UfeCEu7LeT4Jqr3LTfaCWv3rCVIKaizcK8SDSZQtmNy6xlmGEajiEU0NorI1VT3Ln5NhFhSIvIXIOqks6rGEr/KaOfU8JJK7kXR/mI0mEx53mQSey6p8pLanzeFfp7wLVkMw2jrxCIavwQeBm7BEYX3cN1Zw1jqfh+Ds0DvJff8XKCuiXOjgxAeS2pX6S5UwVNwIp59x1O897iqsskJXq6bNqK1TDUMo5FIvLfvFpFPgWPdeQpEJAH4UFW/F9cbxUh2drYuXbq0/oJGkzn2+RMp8O+slZ7q7cP1hz5Ttd+3udYaRttGRJapanakvHp7GiKSBFwKHAokVaaraqQ9NQB6AN2BPe55NzfN6OBEiyW1ryKPM8dlmUgYRgcgFu+pZ4AMYApO1NoBwL46ys8CvhSR2SLyNPAF8IemGmq0fYIVaZHTLZaUYXQYYpnTGKaq54rIGar6tIg8D3wYrbCqPiUib1IdBuQGVY3sqG90GMoD5Xi0CxrBS8piSRlGxyEW0fC73/kiMgrYDtTac1NExoclVcaFyhSRTFX9ovFmGm2RUE+pBE8iJO7Hv+d7+Lp9bbGkDKODEotoPO4GHrwFZ5V2N+DWCOUeqKMOJUqcKKN9Eu4pVR7cD+rljJFHs+SrC2zC2zA6KHH3nmprmPdU8xDNUyotoS8fXfheK1hkGEa8aJL3VCNulgD8CjjeTVoM/E1V/VEvMtod0TylCsprC4lhGB2HWLynGsr/Aw4H/up+DqfuWFVGO0NV0WCXiHnmKWUYHZu49zSAI1R1TMj5IjfIoNGOCZ30TvYlI979qHoQCVaVMU8pw+j4xLoD39HAkNDyqvrPKMUDInKgqm5wrz0ACDTRTqMVCd9EqaSiBFUPgfwj8XQ1TynD6EzEsiL8GeBAYDnVjb8C0UTjOuA/IrIRZ9R7MHBJ0001WotImyiJBOnVdyP63R3mKWUYnYhYehrZwCFaj5uViPhUtUJV3xOR4UBlNLq1qq5fptEuibaJUoE/j//daJ7UhtGZiGUifCVOGJH6+G/I8f2qusL9mGC0cySQEjndNlEyjE5HLD2N3sBqEfkvUCUAqnp6WLlQB8xj4mCb0QZYuWslQSkBFUSqO5u2iZJhdE5iEY2ZMdbVsVcJdiJCPaVEBNEUynZMIrHXYttEyTA6OfWKhqq+H2NdI0VkBU6P40D3GPdcVXV0I200WpBwTylVRWU/BLtQvOHGqnK2iZJhdE5i8Z76HvAX4GAgEfACxaraPazowfE3z2hpInpKeSroM3gRsuVo85QyjE5OLMNTjwDnA3NwPKl+BhwUXkhVv42vaUZrEM1Tal/FLvOUMgwjtjAiqvoN4FXVgKo+BZzUvGYZrYUEUiOnm6eUYRjE1tMoEZFEYLmI3Avk0jwxq4xWpjxQTiDgQTy1N1IyTynDMCC2xv+nbrkrgWJgIHB2XReISE8R6dl084yWYMHGBUyeO5nDnz0cT2I+FUUHESxPRxWC5emU5U6jr3lKGYZBbN5T34pIMtBfVe+IVk5EBgH3AicC+U6SdAcWATeq6ub4mGzEk3BvKQBf102U5U6jonAcYJ5ShmFUU29PQ0ROw4k79ZZ7PlZEXo9Q9CXgVSBDVYer6jCgP/Aa8GL8TDbiSWRvKT8p/d5GgKz0ZO6Zdph5ShmGAcS+uO9InM2UUNXlIjI0QrneqvpSaIKqBoAXReT3TbTTaCaieUupL59Ns05pYWsMw2jrxCIaflUtEKmxTVuk1d/LROSvwNPAFjdtIHAR8GWTrDSahaAGIegDT+1NFc1byjCMSMQiGqtE5ELA60avvRr4OEK5nwGXAncAlWMZW4H5wD/iYKsRB0JDhHRN6AoePxr0Ip7qLU/MW8owjGjEIhpXATNwghW+ACwEag03qWo5zrautrVrGyV80rvIXwTqwZ+fja/bWosrZRhGvcTiPVWCIxozGnsTEblNVe9s7PVGfIg06Y0E8aWupfgbiytlGEb9xOI9lS0ir4jIFyKyovLTwPv8XyPtM+JItElvT0I+WenJ5i1lGEa9xDI89RzOFq7/A4LRColIYbQsILnhphnxRirSUd/eCOk9WGJxpQzDiIFYRCNPVSOtywgnHzhCVXeEZ4jIlgjljRambPeRJPZdaCFCDMNoNLGIxu0i8nfgPWru3PdKWLl/AoOBWqIBPB+LMSJyEvAQTvj1v6vqrCjlzgbm4ojU0ljq7qyEekt16eshqF60ohviK7BJb8MwGkwsonEJMBJIoHp4SoEaoqGqt0SrQFVvqO8mIuIFHgUm4bjqfi4ir6vq6rByqcB04LMYbO/ULNi4gFs/uh1/5TbtEkDUS9nOkyxEiGEYjSIW0ThCVVuiVTkS+EZVNwKIyIvAGcDqsHK/B/6IM89i1ME9n/6pWjBcxBMgud9CigrH2WZKhmE0mFhE42MROST8jb8ZyKJ6JTk4vY0JoQVEZDwwUFUXiEhU0RCRy4HLAQYNGtQMprYPCsp3Om4I4XgtRIhhGI0jFtH4Hs5eGptw5jRaZc9vEfEAfwIurq+sqj4OPA6QnZ0dKeRJhyV0DkMRJELEl6DfQoQYhtE4YhGNltqlbxtOrKpKBrhplaQCo4DFbhysDOB1ETndJsMdwld8i4Bq7Q2VUopPayULDcNo78S0n0ZLGAJ8Dgx3I+huw9mX/MIQOwqA3pXnIrIY+J0JRjURw5wLqAqgqD8d3TOVGZN/3DoGGobR7omlp9EiqGqFiFyJE9vKCzypqqtE5E5gaYxrRTo10VZ8C0rR17Ns4tswjCbTZkQDQFXfAN4IS7stStkTWsKm9kDlPIYzFlU7XwI9bOLbMIy40KZEw2g4NeYxIgiGrfg2DCOemGi0cyJGrsXpdNiKb8Mw4o2JRjsn2jwGQPGGG23Ft9Eu8Pv9bN26lbKy2i9ARvORlJTEgAEDSEhIiPkaE412jgRSUW/tAMPqTyfLJr6NdsLWrVtJTU1lyJAhhG0tbTQTqsru3bvZunUrQ4cOjfk6E412SOgCvqAHiLAWozxvCktutnDnRvugrKzMBKOFERF69epFXl5eg64z0WhnhAchdNZheAhWdEG8pTaPYbRbTDBansY8cxONdkbEIIQSRINdKFp/O2CRaw3DaD7q3e7VaFsUlO+MmC4J+bZdq9FpeO3LbRwzaxFDb1zAMbMW8dqX2+q/qB68Xi9jx45l1KhRnHbaaeTn5ze4jsWLFyMizJ8/vyrt1FNPZfHixXVeN3v2bHJychp8v9bARKOdsGDjAibPnRwh/KCD+tPZNOsUltw40QTD6NC89uU2bnrlf2zLL0WBbfml3PTK/5osHMnJySxfvpyVK1fSs2dPHn300UbVM2DAAO6+++4GXdOeRMOGp9oBoQv4Ig1BWhBCoyNxx/xVrM6p7RFYyZff5VMeCNZIK/UHuH7uCl7473cRrzkkszu3n3ZozDYcddRRrFixAoANGzZwxRVXkJeXR0pKCk888QQjR45kzpw53HHHHXi9XtLS0vjggw8AGDNmDH6/n3feeYdJkybVqHfZsmX85je/oaioiN69ezN79myWLFnC0qVL+fGPf0xycjKffPIJycnJMdva0lhPox1Q1wK+YHk6wZ3nMOP7FoTQ6ByEC0Z96Q0lEAjw3nvvcfrppwNw+eWX85e//IVly5Zx//338+tf/xqAO++8k4ULF/LVV1/x+us1Q+PNmDGDu+66q0aa3+/nqquuYu7cuSxbtoyf//znzJgxg3POOYfs7Gyee+45li9f3qYFA6yn0S7YXscCvvTdd9haDKNDUV+P4JhZi9iWX1orPSs9mZd+cVSj71taWsrYsWPZtm0bBx98MJMmTaKoqIiPP/6Yc889t6rc/v2OI8oxxxzDxRdfzHnnnce0adNq1HX88ccD8NFHH1WlrV27lpUrV1b1PgKBAP3792+0va2FiUYbpnI9hkaZyUhP7MtHN9paDKNzcd2UEdz0yv8o9Qeq0pITvFw3pWkeg5VzGiUlJUyZMoVHH32Uiy++mPT0dJYvX16r/GOPPcZnn33GggULOPzww1m2bFmN/Mrehs/nNLOqyqGHHsonn3zSJDtbGxueaqNUzmPkFudGzNdgAvt3Tmlhqwyj9TlzXBb3TDuMrPTkZvEYTElJ4eGHH+aBBx4gJSWFoUOHMmfOHMBp+L/66ivAmeuYMGECd955J3369GHLli016pk8eTJ79+6tmhsZMWIEeXl5VaLh9/tZtWoVAKmpqezbty8u9jc31tNoo8QSiLC4MPaJPcPoSJw5LqtZh2THjRvH6NGjeeGFF3juuef41a9+xV133YXf7+f8889nzJgxXHfddaxfvx5V5cQTT2TMmDG8//77NeqZMWMGZ5xxBgCJiYnMnTuXq6++moKCAioqKrjmmms49NBDufjii/nlL3/ZLibCRbVjb6GdnZ2tS5e2v839Rj89OuKwlCoUfT0LcN6wltjwlNEBWLNmDQcffHBrm9EpifTsRWSZqmZHKm89jTZEaEyputZjQHzGcA3DMBqKiUYbocZmSi4aIRDh/rwpFr3WMIxWw0SjjRBpDsMJRiiAVs1jBArHsWSWDUkZhtE6mGi0EaKvxdCqOQxw5jEMwzBaC3O5bWWqY0pFnsWonMMAm8cwDKP1sZ5GKxJpHiMUDSbgLTgZATJtHsMwjDaAiUYrEstajH6eCaywOQzDqMmKl+G9O6FgK6QNgBNvg9HntbZVnQIbnmpF6oopVbzhRioKx5ETIcaOYXRqVrwM86+Ggi2AOt/zr3bSm0B72k9j8eLFnHrqqQ22Lx5YT6MVqC+mVOg8RqZNfBudjTdvhO3/i56/9XMI1Ny9En8p/OtKWPZ05GsyDoOpsyLnuVTGngK46KKLePTRR5kxY0ZDLAeq99M47bTYtyuYPXs2o0aNIjMzs8H3a2msp9HCxBRTKs+JKWUT34YRgXDBqC+9ERx11FFs2+Zs6rRhwwZOOukkDj/8cI477ji+/vprAObMmcOoUaMYM2ZMVVRbcPbTSEtL45133qlV77Jly/j+97/P4YcfzpQpU8jNzWXu3LlV+2mMHTuW0tLIowtvvfUWI0eOZPz48bzyyitV6f/973856qijGDduHEcffTRr166N23OIhPU0WphY5jEqCsfZAj6j81JPj4AHR7lDU2GkDYRLFjT59pX7aVx66aWAs5/GY489xvDhw/nss8/49a9/zaJFi6r208jKyqo1lDVjxgxuvfXWGpswVe6n8a9//Ys+ffrw0ksvMWPGDJ588kkeeeQR7r//frKzI0buoKysjMsuu4xFixYxbNgwfvSjH1XljRw5kg8//BCfz8e7777LzTffzLx585r8HKJhotHC1DePASBgMaUMIxon3ubMYfhD3sgTkp30JtCW99P4+uuvGTp0KMOHDwfgJz/5CY8//jgABQUFXHTRRaxfvx4Rwe/3N/IJxIaJRguyYOMCRIRIQSJtHsMwYqTSSyrO3lPtdT+NW2+9lR/84Ae8+uqrbN68mRNOOCGu9YdjcxotROVcRlBrb0lp8xiG0UBGnwfXroSZ+c53HN1t2+J+GiNHjmTz5s1s2LABgBdeeKEqr6CggKwsZxh79uzZcXgCdWOi0UJEn8sQSfkrSwAAELVJREFUynKnVc1jxHMzGcMwGkf4fhr/+Mc/GDNmDIceeij/+te/ALjuuus47LDDGDVqFEcffTRjxoypVc+MGTOqxKRyP40bbriBMWPGMHbsWD7++GOAqv00ok2EJyUl8fjjj3PKKacwfvx4+vbtW5V3/fXXc9NNNzFu3DgqKiqa43HUwPbTaCHq2x9DgE2zTml5wwyjDWD7abQeDd1Pw3oazUyssaVsHsMwjPaATYQ3I7HEltqfN8XmMQzDqOKss85i06ZNNdL++Mc/MmXKlFayqCZtSjRE5CTgIcAL/F1VZ4Xl/xK4AggARcDlqrq6xQ2NkVjXZNz/I5vHMAzD4dVXX21tE+qkzQxPiYgXeBSYChwCXCAih4QVe15VD1PVscC9wJ9a2MwGkRtDbKms9GQTDMMw2g1tRjSAI4FvVHWjqpYDLwJnhBZQ1cKQ064QdSvtVqVyHoMoTga2z7dhGO2VtjQ8lQWEOjpvBSaEFxKRK4DfAIlAxGXTInI5cDnAoEGD4m5oXSzYuIBbP7odv+53lnaHYft8G4bRnmlLPY2YUNVHVfVA4AbglihlHlfVbFXN7tOnT4vad8+nf3IEo5ZNECxPpyx3Gv08R7PkxokmGIbRSCp786OfHs3kuZNZsLHpMadCQ6Ofe+65lJSUxMHS+DBkyBB27drV2mYAbUs0tgEDQ84HuGnReBE4s1ktagQF5Tuj5hVvuJGE0mwbkjKMJhAaKVpRcotzmfnxzCYLR2UYkZUrV5KYmMhjjz0W03UtsaCuLdGWhqc+B4aLyFAcsTgfuDC0gIgMV9X17ukpwHraEHcsegZFkEiL+PzpNiRlGDHwx//+ka/3fB01f0XeCsqD5TXSygJl3LbkNuaumxvxmpE9R3LDkTfEbMNxxx3HihUrmD9/PnfddRfl5eX06tWL5557jn79+jFz5kw2bNjAxo0bGTRoELfccguXXHIJ5eXlBINB5s2bx/Dhw3n22Wd5+OGHKS8vZ8KECfz1r3/liSeeYMOGDdx3332AE/pj6dKlPPLII5x55pls2bKFsrIypk+fzuWXXx6zzS1Fm+lpqGoFcCWwEFgDvKyqq0TkThE53S12pYisEpHlOPMaF7WSubW4Y9EzzPn2QUQiCEYwgZTi02xIyjDiQLhg1JfeUCoqKnjzzTc57LDDOPbYY/n000/58ssvOf/887n33nuryq1evZp3332XF154gccee4zp06ezfPlyli5dyoABA1izZg0vvfQSS5YsYfny5Xi9Xp577jnOPvvsGm61L730Eueffz4ATz75JMuWLWPp0qU8/PDD7N69Oy6/KZ60pZ4GqvoG8EZY2m0hx9Nb3KgYmbfpCcRXOySxqhDceQ4zJv+4FawyjPZHfT2CyXMnR9zErH/X/jx10lONvm9laHRwehqXXnopa9eu5Uc/+hG5ubmUl5czdOjQqvKnn346yclOJIejjjqKu+++m61btzJt2jSGDx/Oe++9x7JlyzjiiCOq6u/bty99+vThgAMO4NNPP2X48OF8/fXXHHPMMQA8/PDDVYKyZcsW1q9fT69evRr9m5qDNiUa7ZE7Fj3DvE1PEPTujeQsBSh/mHyR9TAMI05MHz+9VqSFJG8S08c37Z0ydLvXSq666ip+85vfcPrpp7N48WJmzpxZlde1a9eq4wsvvJAJEyawYMECTj75ZP72t7+hqlx00UX/v727D46qvOI4/j1KNMR2JIAvcdJBaJEEKQlJeRNETBChaBWD1Rkaa8dBOhZ8m7EioMQRtLUw6h/WjEDFohVSOkIjHauCGXFGbaUi5c1iUUYkEozAQAeEJE//uHfjmuxuNskudzf5fWYy2b27N3tyZuHkPvfuOTz22GOtXuvmm2+mqqqKvLw8pk6diplRU1PDG2+8wTvvvENWVhbjx4/nxInI3SSClDLLU+kotCTlehzCIlcMzmjMVsEQSaApA6ZQcVkFOefkYBg55+RQcVkFUwYkvuFneNvx55+PMn8c2LNnDwMGDODOO+/kuuuuY+vWrZSWlrJmzRrq6ryLY7766iv27t0LeK1C1q1bx0svvdS8NHXkyBGys7PJyspi165dvPvuuwn/fRJBRxqdEG1JKsQ1ZTCt/4zTGJFI9zBlwJSkFImWKioquPHGG8nOzqakpKRVT6iQqqoqVq5cSUZGBhdeeCFz586ld+/eLFy4kIkTJ9LU1ERGRgZPP/00/fr1Izs7m/z8fHbs2MGIESMAmDRpEpWVleTn5zNo0CBGjRqV9N+vI9QavROGrPhhxCMM57wjjLL+M1hQUp6U1xbpStQaPTjtbY2uI40OenjjSryPfLcuumc0ZrP1trdOe0wiIsmmcxod0NbltWVakhKRLkpFowP+8slS7IzIl9fe2O8eLUmJSJelotFO6/esp+nMQ1EedSoYItKlqWi0Q6iDbazLa0VEujKdCI/D+j3reepfT0X8FGqILq8Vke5ARxptCB1dxCwYDp3LEDmNjlRXs7uklJ35g9ldUsqR6uqgQ+o2VDTaEG0+Rjh3qpcKhshpcqS6mtoHH6Jh/35wjob9+6l98KFOF46uMk+joqKCxYsXJy0WLU/FsH7Pem8+RpRzGPBNB1sRSYwvHn2Ur3dGb41+/MMPcSe/3dHWnThB7bz5HK76c8R9zs7P48K5c2O+bnjvqenTp1NZWcm9997bZrwNDQ306NF9/ivVkUYUoWWpaAUjNImvqW4a865QB1uR06VlwWhre0dcfvnlfPzxx1RXVzNy5EiGDRvGhAkTOHDgAOD9NV9eXs6YMWMoLy9n+/btjBgxgsLCQoYOHcru3d6onxdeeKF5+8yZM2lsbKSyspL77ruv+bVWrFjBrFmzALj++uspLi7m0ksv5dlnn4073kWLFnHJJZcwduxYPvroo+btS5cuZfjw4RQUFFBWVpaQo6fuUx7bKdaylGvKaB7bqqFKIonV1hHB7pJSb2mqhR4XXUS/lX/s9OuH5mlMmjSpeZ6GmbFs2TIef/xxlixZAnjzNN5++2169uzJ7Nmzueuuu5g+fTonT56ksbHxW/M0MjIyuOOOO5rnaYwePbp5CNPq1auZN28e4M3T6N27N8ePH2f48OGUlZW12Rp98+bNrFq1ii1bttDQ0EBRURHFxcUA3HDDDcyY4V2gM3/+fJYvX87s2bM7lR8VjSiiLUs5B01101g8We3ORYJw/j13U/vgQ7iwtuGWmcn599zdqZ+brvM0Nm3axNSpU8nKymqOK2Tbtm3Mnz+fw4cPc+zYMa6++upO5QhUNCJqa2yr5mOIBOfca71ziHVPPElDbS09cnI4/567m7d3VFecp3Hrrbeydu1aCgoKWLFiBTU1NZ36eaBzGq3EM7ZVBUMkWOdeey0DN24gf+cOBm7c0OmCEU06zNMYN24ca9eu5fjx4xw9epTqsKvIjh49Sk5ODqdOneLFF1/sUA5aUtFoIVZfKZ30FuleQvM0iouL6du3b9TnVVVVMWTIEAoLC9m2bRu33HILgwcPbp6nMXToUK666ipqa73Pe4Xmaezdu/db8zQaGhrIz89nzpw5cc/TKCoq4qabbqKgoIDJkyc3L4cBPPLII4wcOZIxY8aQl5fXiUx8Q/M0Wog1I2Nhwas6yhBJAs3TCE5752noSKOFaP2jNLZVREQnwlsp6z/DO6cRtkSlvlIiErT6+npKS0tbbd+wYUObV1glkopGCwtKymGjd26j6cxDnNGYzTSNbRVJOuccFq2FtNCnT59WV3d1VkdOT6hoRLCgpJwFqEiInC6ZmZnU19fTp08fFY7TxDlHfX09mZmZ7dpPRUNEApebm8u+ffs4ePBg0KF0K5mZmeTm5rZrHxUNEQlcRkbGtz5tLalLV0+JiEjcVDRERCRuKhoiIhK3Lv+JcDM7COwNOg5fXyC+8VupJ51jB8UfNMUfrPbG3885d16kB7p80UglZvZ+tI/mp7p0jh0Uf9AUf7ASGb+Wp0REJG4qGiIiEjcVjdMr/qG/qSedYwfFHzTFH6yExa9zGiIiEjcdaYiISNxUNEREJG4qGklgZplm9g8z+9DMtpvZw/72/mb2npl9bGarzeysoGONJEb8K8zsEzPb4n8VBh1rNGZ2ppl9YGav+PfTIvchEeJPp9x/amb/9uN839/W28xeN7Pd/vfI085SQJT4K8zs87D8/zjoOKMxs15mtsbMdpnZTjMbncj8q2gkx9dAiXOuACgEJpnZKOC3wBPOuR8Ah4DbAowxlmjxA9znnCv0vxLb3D+x7gJ2ht1Pl9yHtIwf0if3AFf6cYY+GzAH2OCcGwhs8O+nspbxg/f+CeX/b4FF1rangFedc3lAAd77KGH5V9FIAuc55t/N8L8cUAKs8bc/D1wfQHhtihF/WjCzXGAKsMy/b6RJ7qF1/F3EdXh5hxTPfzozs3OBccByAOfcSefcYRKYfxWNJPGXF7YAdcDrwH+Bw865Bv8p+4CUHTreMn7n3Hv+Q4vMbKuZPWFmZwcYYixPAr8Gmvz7fUij3NM6/pB0yD14f2C8Zmabzex2f9sFzrla//YXwAXBhBaXSPEDzPLz/4cUXl7rDxwEnvOXN5eZ2TkkMP8qGkninGt0zhUCucAIIC/gkNqlZfxmNgR4AO/3GA70Bu4PMMSIzOwaoM45tznoWDoiRvwpn/swY51zRcBk4FdmNi78Qedd55/KR66R4n8G+D7ecm0tsCTA+GLpARQBzzjnhgH/o8VSVGfzr6KRZP6h4ZvAaKCXmYUGX+UCnwcWWJzC4p/knKv1l66+Bp7DK4apZgzwEzP7FFiFtyz1FOmT+1bxm9kLaZJ7AJxzn/vf64CX8WI9YGY5AP73uuAijC1S/M65A/4fUk3AUlI3//uAfWErA2vwikjC8q+ikQRmdp6Z9fJv9wSuwjsZ9SYwzX/az4F1wUQYW5T4d4W96QxvTXRbcFFG5px7wDmX65y7GLgZ2Oicm06a5D5K/D9Lh9wDmNk5Zvbd0G1gIl6sf8XLO6Rw/qPFH8q/byopmn/n3BfAZ2Y2yN9UCuwggfnXuNfkyAGeN7Mz8QpzlXPuFTPbAawys4XAB/gnq1JQtPg3mtl5gAFbgF8GGWQ73U965D6aF9Mk9xcAL3u1jR7An5xzr5rZP4EqM7sNb1TBTwOMMZZo8a/0L3N2wKfAzOBCbNNsvPfLWcAe4Bf4/44TkX+1ERERkbhpeUpEROKmoiEiInFT0RARkbipaIiISNxUNEREJG4qGiJJYGbzzOsQvNXvijrSzGpCXVP95/zIzGr82+PN7Ij/3F1mtjiw4EViUNEQSTAzGw1cAxQ554YCE4DP/IfPN7PJUXbd5LduGQZcY2Zjkh+tSPuoaIgkXg7wpd/yA+fcl865/f5jvwPmxdrZOXcc7wN8qdxUUbopFQ2RxHsN+J6Z/cfMfm9mV4Q99g5w0syujLaz30F1IPBWkuMUaTcVDZEE82eRFAO347WpXm1mt4Y9ZSEwP8Kul5vZh3jNFP/u9xESSSkqGiJJ4HdErXHOLQBmAWVhj20EegKjWuy2yZ+WeClwm6XwSFfpvlQ0RBLMzAaZ2cCwTYV4TeLCLcQbtNSKc+4T4Dek9swM6aZUNEQS7zt4XYJ3mNlWYDBQEf4Ef8b0wRg/oxIYZ2YXJylGkQ5Rl1sREYmbjjRERCRuKhoiIhI3FQ0REYmbioaIiMRNRUNEROKmoiEiInFT0RARkbj9H/rZ4c1G8bjBAAAAAElFTkSuQmCC\n",
"text/plain": [
"