{ "cells": [ { "cell_type": "markdown", "id": "442ce0b9-8ae3-466e-8e0f-664b6a4eccf1", "metadata": {}, "source": [ "### plant disease prediction\n" ] }, { "cell_type": "markdown", "id": "9588c8cf-bd96-4910-ab85-acc65f4d2cdf", "metadata": {}, "source": [ "# importing data\n" ] }, { "cell_type": "markdown", "id": "d0f0a89b-d75d-4b4d-adb1-b64e0b7e287a", "metadata": {}, "source": [ "Dataset Link: https://www.kaggle.com/datasets/vipoooool/new-plant-diseases-dataset" ] }, { "cell_type": "markdown", "id": "02aa8ccd-97af-4af3-89ff-7ba1f430a337", "metadata": {}, "source": [ "# importing libraries" ] }, { "cell_type": "code", "execution_count": 3, "id": "53fabc84-9cda-4520-a983-c07a21ce6edc", "metadata": {}, "outputs": [], "source": [ "import tensorflow as tf\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import seaborn as sns" ] }, { "cell_type": "code", "execution_count": 4, "id": "97b73cf9-aba4-4487-a9b5-d3287d61b3f9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.18.0\n" ] } ], "source": [ "import tensorflow as tf\n", "print(tf.__version__)\n" ] }, { "cell_type": "markdown", "id": "cdede3da-087e-495e-9aab-fb505fd2ab12", "metadata": {}, "source": [ "# data preprocessing" ] }, { "cell_type": "markdown", "id": "e35e66bc-2c73-467b-a38d-68b413988633", "metadata": {}, "source": [ "## train image preprocessing\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "73909875-cf29-43b3-a4ec-5197e8233b71", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 70295 files belonging to 38 classes.\n" ] } ], "source": [ "training_set = tf.keras.utils.image_dataset_from_directory(\n", " 'train', #directory name\n", " labels=\"inferred\", #directory name is same as label name\n", " label_mode=\"categorical\", # more than 2 classes\n", " class_names=None, # no class name\n", " color_mode=\"rgb\",\n", " batch_size=32, # default batch size means at a time 32 images will be feeded to the NN\n", " image_size=(128, 128),\n", " shuffle=True, #shuffle data to reduce bias of model, will randomly train to learn better\n", " seed=None,\n", " validation_split=None,\n", " subset=None,\n", " interpolation=\"bilinear\",\n", " follow_links=False,\n", " crop_to_aspect_ratio=False\n", ")" ] }, { "cell_type": "markdown", "id": "c2eaf45f-f1b2-464f-96f7-2817d8144900", "metadata": {}, "source": [ "# validation image preprocessing" ] }, { "cell_type": "code", "execution_count": 8, "id": "bb1016c9-e79f-49d3-bfa6-2835ab8d24e5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 17572 files belonging to 38 classes.\n" ] } ], "source": [ "validation_set = tf.keras.utils.image_dataset_from_directory(\n", " 'valid',\n", " labels=\"inferred\",\n", " label_mode=\"categorical\",\n", " class_names=None,\n", " color_mode=\"rgb\",\n", " batch_size=32,\n", " image_size=(128, 128),\n", " shuffle=True,\n", " seed=None,\n", " validation_split=None,\n", " subset=None,\n", " interpolation=\"bilinear\",\n", " follow_links=False,\n", " crop_to_aspect_ratio=False\n", ")" ] }, { "cell_type": "code", "execution_count": 11, "id": "20d514a8-744c-47af-8456-5d727f020e1c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<_PrefetchDataset element_spec=(TensorSpec(shape=(None, 128, 128, 3), dtype=tf.float32, name=None), TensorSpec(shape=(None, 38), dtype=tf.float32, name=None))>" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "training_set\n" ] }, { "cell_type": "code", "execution_count": 13, "id": "eea0e64f-10c6-436c-bdab-f14ef147ae0d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tf.Tensor(\n", "[[[[135. 129. 133. ]\n", " [135. 129. 133. ]\n", " [140. 134. 138. ]\n", " ...\n", " [138.25 129.25 132.25]\n", " [139.25 130.25 133.25]\n", " [146. 137. 140. ]]\n", "\n", " [[136.75 130.75 134.75]\n", " [139. 133. 137. ]\n", " [140.25 134.25 138.25]\n", " ...\n", " [144. 135. 138. ]\n", " [143.5 134.5 137.5 ]\n", " [145. 136. 139. ]]\n", "\n", " [[137.25 131.25 135.25]\n", " [140.5 134.5 138.5 ]\n", " [142.5 136.5 140.5 ]\n", " ...\n", " [146.25 137.25 140.25]\n", " [141.75 132.75 135.75]\n", " [138. 129. 132. ]]\n", "\n", " ...\n", "\n", " [[133.5 123.5 121.5 ]\n", " [132.5 122.5 120.5 ]\n", " [133.25 123.25 121.25]\n", " ...\n", " [128.25 122.25 126.25]\n", " [128.5 122.5 126.5 ]\n", " [118. 112. 116. ]]\n", "\n", " [[130.5 120.5 118.5 ]\n", " [135.25 125.25 123.25]\n", " [136.25 126.25 124.25]\n", " ...\n", " [125. 119. 123. ]\n", " [123.25 117.25 121.25]\n", " [120.75 114.75 118.75]]\n", "\n", " [[133. 123. 121. ]\n", " [132.5 122.5 120.5 ]\n", " [131.75 121.75 119.75]\n", " ...\n", " [124. 118. 122. ]\n", " [122.5 116.5 120.5 ]\n", " [119.5 113.5 117.5 ]]]\n", "\n", "\n", " [[[166.5 155.25 137.75]\n", " [155.75 143.75 130.75]\n", " [170.75 157.75 149.25]\n", " ...\n", " [193. 184. 177. ]\n", " [179. 170. 163. ]\n", " [181. 172. 165. ]]\n", "\n", " [[166.5 154.5 138.5 ]\n", " [162.5 150.5 137.5 ]\n", " [165.5 152.5 144. ]\n", " ...\n", " [179.5 170.5 163.5 ]\n", " [182.5 173.5 166.5 ]\n", " [171. 162. 155. ]]\n", "\n", " [[172.75 160.75 147.75]\n", " [163.5 151.25 140. ]\n", " [165.5 152.5 144.25]\n", " ...\n", " [177.75 168.75 161.75]\n", " [176.75 167.75 160.75]\n", " [177. 168. 161. ]]\n", "\n", " ...\n", "\n", " [[211.5 204.5 196.5 ]\n", " [221. 214.25 204.75]\n", " [168.75 162.5 149.75]\n", " ...\n", " [236.5 231.5 228.5 ]\n", " [235.5 230.5 227.5 ]\n", " [234.25 229.25 226.25]]\n", "\n", " [[216.25 209.25 200.25]\n", " [147.75 142. 126.5 ]\n", " [ 56. 52. 24.75]\n", " ...\n", " [235.5 230.5 227.5 ]\n", " [234.75 229.75 226.75]\n", " [235. 230. 227. ]]\n", "\n", " [[116.25 109.5 100. ]\n", " [ 56.5 51.25 31.5 ]\n", " [ 60.75 58.25 22.5 ]\n", " ...\n", " [234.75 229.75 226.75]\n", " [234. 229. 226. ]\n", " [235.5 230.5 227.5 ]]]\n", "\n", "\n", " [[[106. 116. 117. ]\n", " [107. 117. 118. ]\n", " [111.75 121.75 122.75]\n", " ...\n", " [113.75 122.75 121.75]\n", " [112.5 121.5 120.5 ]\n", " [116.5 125.5 124.5 ]]\n", "\n", " [[108.5 118.5 119.5 ]\n", " [110.25 120.25 121.25]\n", " [115.5 125.5 126.5 ]\n", " ...\n", " [115.75 124.75 123.75]\n", " [119.75 128.75 127.75]\n", " [116. 125. 124. ]]\n", "\n", " [[116. 126. 127. ]\n", " [114.75 124.75 125.75]\n", " [115.75 125.75 126.75]\n", " ...\n", " [116.5 125.5 124.5 ]\n", " [119.75 128.75 127.75]\n", " [115. 124. 123. ]]\n", "\n", " ...\n", "\n", " [[137.25 147.25 148.25]\n", " [141.75 151.75 152.75]\n", " [140.25 150.25 151.25]\n", " ...\n", " [142.75 151.75 150.75]\n", " [141.75 150.75 149.75]\n", " [141.25 150.25 149.25]]\n", "\n", " [[136. 146. 147. ]\n", " [139.5 149.5 150.5 ]\n", " [137. 147. 148. ]\n", " ...\n", " [145.75 154.75 153.75]\n", " [143.5 152.5 151.5 ]\n", " [144.75 153.75 152.75]]\n", "\n", " [[134.75 144.75 145.75]\n", " [133.5 143.5 144.5 ]\n", " [134. 144. 145. ]\n", " ...\n", " [148. 157. 156. ]\n", " [141.25 150.25 149.25]\n", " [144.75 153.75 152.75]]]\n", "\n", "\n", " ...\n", "\n", "\n", " [[[143.5 129.5 152.5 ]\n", " [149.75 135.75 158.75]\n", " [162.25 148.25 171.25]\n", " ...\n", " [198. 194. 209. ]\n", " [203.25 199.25 214.25]\n", " [198.5 194.5 209.5 ]]\n", "\n", " [[157.25 143.25 166.25]\n", " [170.75 156.75 179.75]\n", " [144.5 130.5 153.5 ]\n", " ...\n", " [191. 187. 202. ]\n", " [192.25 188.25 203.25]\n", " [199.5 195.5 210.5 ]]\n", "\n", " [[155.5 141.5 164.5 ]\n", " [121. 107. 130. ]\n", " [165.5 151.5 174.5 ]\n", " ...\n", " [186. 182. 197. ]\n", " [187.75 183.75 198.75]\n", " [193.25 189.25 204.25]]\n", "\n", " ...\n", "\n", " [[120. 109. 139. ]\n", " [135.5 124.5 154.5 ]\n", " [144.75 133.75 163.75]\n", " ...\n", " [156.5 150.5 178.5 ]\n", " [163. 157. 185. ]\n", " [162.25 156.25 184.25]]\n", "\n", " [[164.75 153.75 182. ]\n", " [112. 101. 131. ]\n", " [117.25 106.25 136.25]\n", " ...\n", " [165.75 159.75 187.75]\n", " [165.75 159.75 187.75]\n", " [168.75 162.75 190.75]]\n", "\n", " [[145.5 134.5 164.5 ]\n", " [131.5 120.5 150.5 ]\n", " [111. 100. 130. ]\n", " ...\n", " [163.5 157.5 185.5 ]\n", " [157.25 151.25 179.25]\n", " [160.75 154.75 182.75]]]\n", "\n", "\n", " [[[157.25 152.25 156.25]\n", " [188.75 183.75 187.75]\n", " [170.25 165.25 169.25]\n", " ...\n", " [208.5 206.5 209.5 ]\n", " [210.75 208.75 211.75]\n", " [206. 204. 207. ]]\n", "\n", " [[174.25 169.25 173.25]\n", " [167.25 162.25 166.25]\n", " [164.5 159.5 163.5 ]\n", " ...\n", " [198.75 196.75 199.75]\n", " [203.25 201.25 204.25]\n", " [213.75 211.75 214.75]]\n", "\n", " [[153.5 148.5 152.5 ]\n", " [147.5 142.5 146.5 ]\n", " [176.5 171.5 175.5 ]\n", " ...\n", " [208.25 206.25 209.25]\n", " [203.75 201.75 204.75]\n", " [201. 199. 202. ]]\n", "\n", " ...\n", "\n", " [[117.75 107.75 116.75]\n", " [141.5 131.5 140.5 ]\n", " [128.25 118.25 127.25]\n", " ...\n", " [148.75 141.75 149.75]\n", " [111.75 104.75 112.75]\n", " [130.5 123.5 131.5 ]]\n", "\n", " [[117. 107. 116. ]\n", " [119.75 109.75 118.75]\n", " [130.25 120.25 129.25]\n", " ...\n", " [128. 121. 129. ]\n", " [151.5 144.5 152.5 ]\n", " [120.25 113.25 121.25]]\n", "\n", " [[128. 118. 127. ]\n", " [120.5 110.5 119.5 ]\n", " [133.75 123.75 132.75]\n", " ...\n", " [137.75 130.75 138.75]\n", " [141.5 134.5 142.5 ]\n", " [120.75 113.75 121.75]]]\n", "\n", "\n", " [[[152. 138. 138. ]\n", " [129.75 115.75 115.75]\n", " [139. 125. 125. ]\n", " ...\n", " [ 21. 19. 24. ]\n", " [ 21. 19. 24. ]\n", " [ 21. 19. 24. ]]\n", "\n", " [[143.25 129.25 129.25]\n", " [113. 99. 99. ]\n", " [139.5 125.5 125.5 ]\n", " ...\n", " [ 21. 19. 24. ]\n", " [ 21. 19. 24. ]\n", " [ 21. 19. 24. ]]\n", "\n", " [[134.75 120.75 120.75]\n", " [127.5 113.5 113.5 ]\n", " [130.5 116.5 116.5 ]\n", " ...\n", " [ 21. 19. 24. ]\n", " [ 21. 19. 24. ]\n", " [ 21. 19. 24. ]]\n", "\n", " ...\n", "\n", " [[186.25 176.25 175.25]\n", " [189. 179. 178. ]\n", " [186.5 176.5 175.5 ]\n", " ...\n", " [158. 144. 141. ]\n", " [164.75 150.75 147.75]\n", " [159.25 145.25 142.25]]\n", "\n", " [[167.25 157.25 156.25]\n", " [183.25 173.25 172.25]\n", " [178.75 168.75 167.75]\n", " ...\n", " [159.25 145.25 142.25]\n", " [161.75 147.75 144.75]\n", " [165. 151. 148. ]]\n", "\n", " [[183. 173. 172. ]\n", " [196.5 186.5 185.5 ]\n", " [167. 157. 156. ]\n", " ...\n", " [157.75 143.75 140.75]\n", " [160.25 146.25 143.25]\n", " [163. 149. 146. ]]]], shape=(32, 128, 128, 3), dtype=float32) (32, 128, 128, 3)\n", "tf.Tensor(\n", "[[0. 0. 0. ... 1. 0. 0.]\n", " [0. 0. 0. ... 0. 0. 0.]\n", " [0. 0. 1. ... 0. 0. 0.]\n", " ...\n", " [0. 1. 0. ... 0. 0. 0.]\n", " [0. 0. 0. ... 0. 0. 0.]\n", " [0. 0. 0. ... 0. 0. 0.]], shape=(32, 38), dtype=float32) (32, 38)\n" ] } ], "source": [ "for x,y in training_set : #FOR A BATCH OF 32\n", " print(x,x.shape) # x image , x.shape (batch_size, height, width, color mode)\n", " print(y, y.shape) # y label, y.shape (batch_size, num_classes).\n", " break\n", " " ] }, { "cell_type": "markdown", "id": "67ba308f-4f8b-4a98-8c58-579e6df2bb1a", "metadata": {}, "source": [ "### to avoid overshooting \n", "1. we choose small learning rate .0001\n", "2. there may be a chance of underfitting , so increased number of neurons\n", "3. add more convolution layer to extract more features from images there may be possibility that model unable to capture relevant feature or model is confusing due to lack of feature so feed with more feature" ] }, { "cell_type": "markdown", "id": "137ae5eb-3ca0-4bd6-b819-154c78067f78", "metadata": {}, "source": [ "# building model" ] }, { "cell_type": "code", "execution_count": 49, "id": "bda0c13f-c027-4c2d-8fb7-b7ba90e25d09", "metadata": {}, "outputs": [], "source": [ "from tensorflow.keras.layers import Dense,Conv2D,Flatten,Dropout\n", "from tensorflow.keras.models import Sequential\n" ] }, { "cell_type": "markdown", "id": "b5078e0e-c1d6-400e-8963-f6cdb326af2d", "metadata": {}, "source": [ "## building a convolution layer" ] }, { "cell_type": "code", "execution_count": 17, "id": "aa10e670-c2e4-46a6-84c6-8a64217f35ff", "metadata": {}, "outputs": [], "source": [ "cnn = tf.keras.models.Sequential()\n" ] }, { "cell_type": "code", "execution_count": 19, "id": "71f7a067-94cf-403a-ba0e-83fe0912fa8d", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\ASUS\\anaconda3\\Lib\\site-packages\\keras\\src\\layers\\convolutional\\base_conv.py:107: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n", " super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n" ] } ], "source": [ "cnn.add(tf.keras.layers.Conv2D(filters=32,kernel_size=3,padding='same',activation='relu',input_shape=(128, 128, 3)))\n", "cnn.add(tf.keras.layers.Conv2D(filters=32,kernel_size=3,activation='relu'))\n", "cnn.add(tf.keras.layers.MaxPool2D(pool_size=2,strides=2))\n", "\n" ] }, { "cell_type": "code", "execution_count": 21, "id": "69895068-f3b3-417f-a585-47edf8a727de", "metadata": {}, "outputs": [], "source": [ "cnn.add(tf.keras.layers.Conv2D(filters=64,kernel_size=3,padding='same',activation='relu',input_shape=(128, 128, 3)))\n", "cnn.add(tf.keras.layers.Conv2D(filters=64,kernel_size=3,activation='relu'))\n", "cnn.add(tf.keras.layers.MaxPool2D(pool_size=2,strides=2))" ] }, { "cell_type": "code", "execution_count": 23, "id": "e6234adf-d05d-4d59-8281-16b50aec5734", "metadata": {}, "outputs": [], "source": [ "cnn.add(tf.keras.layers.Conv2D(filters=128,kernel_size=3,padding='same',activation='relu',input_shape=(128, 128, 3)))\n", "cnn.add(tf.keras.layers.Conv2D(filters=128,kernel_size=3,activation='relu'))\n", "cnn.add(tf.keras.layers.MaxPool2D(pool_size=2,strides=2))" ] }, { "cell_type": "code", "execution_count": 25, "id": "081967e6-17c5-460d-97f4-8c1d28af507f", "metadata": {}, "outputs": [], "source": [ "cnn.add(tf.keras.layers.Conv2D(filters=256,kernel_size=3,padding='same',activation='relu',input_shape=(128, 128, 3)))\n", "cnn.add(tf.keras.layers.Conv2D(filters=256,kernel_size=3,activation='relu'))\n", "cnn.add(tf.keras.layers.MaxPool2D(pool_size=2,strides=2))\n" ] }, { "cell_type": "code", "execution_count": 27, "id": "1cb91fb4-ff22-415c-89aa-db4383b25f9a", "metadata": {}, "outputs": [], "source": [ "cnn.add(tf.keras.layers.Conv2D(filters=512,kernel_size=3,padding='same',activation='relu',input_shape=(128, 128, 3)))\n", "cnn.add(tf.keras.layers.Conv2D(filters=512,kernel_size=3,activation='relu'))\n", "cnn.add(tf.keras.layers.MaxPool2D(pool_size=2,strides=2))\n" ] }, { "cell_type": "code", "execution_count": 29, "id": "e98fa900-5a21-4453-bbd3-a35aeb29e5ab", "metadata": {}, "outputs": [], "source": [ "cnn.add(tf.keras.layers.Dropout(0.25))" ] }, { "cell_type": "code", "execution_count": 31, "id": "53aecf01-e76e-4776-99e0-d1afc921ff2f", "metadata": {}, "outputs": [], "source": [ "cnn.add(tf.keras.layers.Flatten())\n" ] }, { "cell_type": "code", "execution_count": 33, "id": "2150a6cc-704e-4892-895c-cd14fd08181f", "metadata": {}, "outputs": [], "source": [ "cnn.add(tf.keras.layers.Dense(units=1500,activation='relu'))" ] }, { "cell_type": "code", "execution_count": 35, "id": "2c334542-7048-4733-8440-490f6d1426a7", "metadata": {}, "outputs": [], "source": [ "cnn.add(tf.keras.layers.Dropout(0.4)) #To avoid overfitting\n" ] }, { "cell_type": "code", "execution_count": 37, "id": "e876264d-6266-4f8b-a20a-465055b4980b", "metadata": {}, "outputs": [], "source": [ "#output layer\n", "cnn.add(Dense(units=38,activation='softmax'))\n" ] }, { "cell_type": "code", "execution_count": 39, "id": "0b9afc31-31bd-4df5-a958-bcbcc57650e8", "metadata": {}, "outputs": [], "source": [ "cnn.compile(\n", " optimizer=tf.keras.optimizers.Adam(learning_rate=0.0001),\n", " loss='categorical_crossentropy',\n", " metrics=['accuracy']\n", ")\n", "\n" ] }, { "cell_type": "markdown", "id": "0915a355-1a44-44b8-b26f-c266414fd643", "metadata": {}, "source": [ "## compiling model" ] }, { "cell_type": "code", "execution_count": 42, "id": "fd055bd2-298d-4a62-91ca-f0b750c55320", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Model: \"sequential\"\n",
"
\n"
],
"text/plain": [
"\u001b[1mModel: \"sequential\"\u001b[0m\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", "┃ Layer (type) ┃ Output Shape ┃ Param # ┃\n", "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", "│ conv2d (Conv2D) │ (None, 128, 128, 32) │ 896 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_1 (Conv2D) │ (None, 126, 126, 32) │ 9,248 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ max_pooling2d (MaxPooling2D) │ (None, 63, 63, 32) │ 0 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_2 (Conv2D) │ (None, 63, 63, 64) │ 18,496 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_3 (Conv2D) │ (None, 61, 61, 64) │ 36,928 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ max_pooling2d_1 (MaxPooling2D) │ (None, 30, 30, 64) │ 0 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_4 (Conv2D) │ (None, 30, 30, 128) │ 73,856 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_5 (Conv2D) │ (None, 28, 28, 128) │ 147,584 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ max_pooling2d_2 (MaxPooling2D) │ (None, 14, 14, 128) │ 0 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_6 (Conv2D) │ (None, 14, 14, 256) │ 295,168 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_7 (Conv2D) │ (None, 12, 12, 256) │ 590,080 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ max_pooling2d_3 (MaxPooling2D) │ (None, 6, 6, 256) │ 0 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_8 (Conv2D) │ (None, 6, 6, 512) │ 1,180,160 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_9 (Conv2D) │ (None, 4, 4, 512) │ 2,359,808 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ max_pooling2d_4 (MaxPooling2D) │ (None, 2, 2, 512) │ 0 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dropout (Dropout) │ (None, 2, 2, 512) │ 0 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ flatten (Flatten) │ (None, 2048) │ 0 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dense (Dense) │ (None, 1500) │ 3,073,500 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dropout_1 (Dropout) │ (None, 1500) │ 0 │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dense_1 (Dense) │ (None, 38) │ 57,038 │\n", "└─────────────────────────────────┴────────────────────────┴───────────────┘\n", "\n" ], "text/plain": [ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", "│ conv2d (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m, \u001b[38;5;34m128\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m896\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_1 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m126\u001b[0m, \u001b[38;5;34m126\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m9,248\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ max_pooling2d (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m63\u001b[0m, \u001b[38;5;34m63\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_2 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m63\u001b[0m, \u001b[38;5;34m63\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m18,496\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_3 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m61\u001b[0m, \u001b[38;5;34m61\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m36,928\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ max_pooling2d_1 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m30\u001b[0m, \u001b[38;5;34m30\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_4 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m30\u001b[0m, \u001b[38;5;34m30\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m73,856\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_5 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m28\u001b[0m, \u001b[38;5;34m28\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m147,584\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ max_pooling2d_2 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m14\u001b[0m, \u001b[38;5;34m14\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_6 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m14\u001b[0m, \u001b[38;5;34m14\u001b[0m, \u001b[38;5;34m256\u001b[0m) │ \u001b[38;5;34m295,168\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_7 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m12\u001b[0m, \u001b[38;5;34m12\u001b[0m, \u001b[38;5;34m256\u001b[0m) │ \u001b[38;5;34m590,080\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ max_pooling2d_3 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m6\u001b[0m, \u001b[38;5;34m6\u001b[0m, \u001b[38;5;34m256\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_8 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m6\u001b[0m, \u001b[38;5;34m6\u001b[0m, \u001b[38;5;34m512\u001b[0m) │ \u001b[38;5;34m1,180,160\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_9 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m4\u001b[0m, \u001b[38;5;34m4\u001b[0m, \u001b[38;5;34m512\u001b[0m) │ \u001b[38;5;34m2,359,808\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ max_pooling2d_4 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m2\u001b[0m, \u001b[38;5;34m2\u001b[0m, \u001b[38;5;34m512\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dropout (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m2\u001b[0m, \u001b[38;5;34m2\u001b[0m, \u001b[38;5;34m512\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ flatten (\u001b[38;5;33mFlatten\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m2048\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dense (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1500\u001b[0m) │ \u001b[38;5;34m3,073,500\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dropout_1 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1500\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dense_1 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m38\u001b[0m) │ \u001b[38;5;34m57,038\u001b[0m │\n", "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
Total params: 7,842,762 (29.92 MB)\n", "\n" ], "text/plain": [ "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m7,842,762\u001b[0m (29.92 MB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
Trainable params: 7,842,762 (29.92 MB)\n", "\n" ], "text/plain": [ "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m7,842,762\u001b[0m (29.92 MB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
Non-trainable params: 0 (0.00 B)\n", "\n" ], "text/plain": [ "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cnn.summary()\n" ] }, { "cell_type": "markdown", "id": "d6660798-93c4-42d9-9f09-ed4f78a07954", "metadata": {}, "source": [ "# Model Training" ] }, { "cell_type": "code", "execution_count": 45, "id": "21d65cb6-ed10-46a5-82ab-535a27cfd7e4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/10\n", "\u001b[1m2197/2197\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1920s\u001b[0m 872ms/step - accuracy: 0.3927 - loss: 2.1373 - val_accuracy: 0.8395 - val_loss: 0.5147\n", "Epoch 2/10\n", "\u001b[1m2197/2197\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1839s\u001b[0m 837ms/step - accuracy: 0.8343 - loss: 0.5208 - val_accuracy: 0.9132 - val_loss: 0.2738\n", "Epoch 3/10\n", "\u001b[1m2197/2197\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1688s\u001b[0m 768ms/step - accuracy: 0.9096 - loss: 0.2843 - val_accuracy: 0.9298 - val_loss: 0.2148\n", "Epoch 4/10\n", "\u001b[1m2197/2197\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1737s\u001b[0m 791ms/step - accuracy: 0.9380 - loss: 0.1902 - val_accuracy: 0.9442 - val_loss: 0.1671\n", "Epoch 5/10\n", "\u001b[1m2197/2197\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1754s\u001b[0m 798ms/step - accuracy: 0.9546 - loss: 0.1415 - val_accuracy: 0.9393 - val_loss: 0.1882\n", "Epoch 6/10\n", "\u001b[1m2197/2197\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1804s\u001b[0m 821ms/step - accuracy: 0.9625 - loss: 0.1140 - val_accuracy: 0.9531 - val_loss: 0.1651\n", "Epoch 7/10\n", "\u001b[1m2197/2197\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1726s\u001b[0m 786ms/step - accuracy: 0.9720 - loss: 0.0882 - val_accuracy: 0.9613 - val_loss: 0.1230\n", "Epoch 8/10\n", "\u001b[1m2197/2197\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1726s\u001b[0m 786ms/step - accuracy: 0.9748 - loss: 0.0762 - val_accuracy: 0.9451 - val_loss: 0.1853\n", "Epoch 9/10\n", "\u001b[1m2197/2197\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1663s\u001b[0m 757ms/step - accuracy: 0.9788 - loss: 0.0649 - val_accuracy: 0.9633 - val_loss: 0.1275\n", "Epoch 10/10\n", "\u001b[1m2197/2197\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1655s\u001b[0m 753ms/step - accuracy: 0.9813 - loss: 0.0605 - val_accuracy: 0.9672 - val_loss: 0.1087\n" ] } ], "source": [ "training_history=cnn.fit(x=training_set,validation_data=validation_set,epochs=10)" ] }, { "cell_type": "code", "execution_count": null, "id": "a5ebe86f-17e8-4893-9cf3-19161a6c4b46", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "d0d975c5-ce8b-4c30-8214-6be3025a1b64", "metadata": {}, "source": [ "## model evaluation\n", "\n" ] }, { "cell_type": "code", "execution_count": 53, "id": "143aed3b-fe1c-4686-b20c-e9d4925ce8b9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m2197/2197\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m435s\u001b[0m 198ms/step - accuracy: 0.9920 - loss: 0.0249\n" ] } ], "source": [ "#model evaluation on training set\n", "train_loss,train_acc=cnn.evaluate(training_set)" ] }, { "cell_type": "code", "execution_count": 56, "id": "2fcf654c-2d84-4670-b8b6-290cea09498c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.021998057141900063 0.9930293560028076\n" ] } ], "source": [ "print(train_loss,train_acc)" ] }, { "cell_type": "code", "execution_count": 58, "id": "ebd9c4f1-c9b8-42ec-9ab4-54c000e9aafc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m550/550\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m109s\u001b[0m 198ms/step - accuracy: 0.9683 - loss: 0.1029\n" ] } ], "source": [ "#model evaluation on validation set\n", "val_loss,val_acc=cnn.evaluate(validation_set)\n" ] }, { "cell_type": "code", "execution_count": 60, "id": "eff609c6-1dab-4850-bbe7-e50400fd5b48", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.10868757963180542 0.9672206044197083\n" ] } ], "source": [ "print(val_loss,val_acc)" ] }, { "cell_type": "markdown", "id": "ce1dff94-361c-48ef-8ee6-6447a4b61860", "metadata": {}, "source": [ "# saving model\n" ] }, { "cell_type": "code", "execution_count": 64, "id": "9d9dac16-9984-4b54-9e56-cdfd192bd318", "metadata": {}, "outputs": [], "source": [ "cnn.save('trained_plant_disease_model.keras')" ] }, { "cell_type": "code", "execution_count": 66, "id": "00ad7882-ecbd-4a80-9911-241a424eadfb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'accuracy': [0.5942385792732239,\n", " 0.8586385846138,\n", " 0.9172914028167725,\n", " 0.9438793659210205,\n", " 0.9573653936386108,\n", " 0.9653887152671814,\n", " 0.9726296067237854,\n", " 0.9761860966682434,\n", " 0.9804537892341614,\n", " 0.9816487431526184],\n", " 'loss': [1.3686121702194214,\n", " 0.44347867369651794,\n", " 0.2570914924144745,\n", " 0.17316663265228271,\n", " 0.13126106560230255,\n", " 0.10496789962053299,\n", " 0.08549622446298599,\n", " 0.07126972079277039,\n", " 0.06025422737002373,\n", " 0.056908320635557175],\n", " 'val_accuracy': [0.8394604921340942,\n", " 0.9131572842597961,\n", " 0.9297746419906616,\n", " 0.9442294836044312,\n", " 0.939335286617279,\n", " 0.9531072378158569,\n", " 0.9613020420074463,\n", " 0.94514000415802,\n", " 0.9632938504219055,\n", " 0.9672206044197083],\n", " 'val_loss': [0.5146704912185669,\n", " 0.2738073468208313,\n", " 0.21475432813167572,\n", " 0.1670544296503067,\n", " 0.18820756673812866,\n", " 0.1651061773300171,\n", " 0.1230238527059555,\n", " 0.1852666139602661,\n", " 0.12747249007225037,\n", " 0.10868765413761139]}" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "training_history.history #Return Dictionary of history" ] }, { "cell_type": "code", "execution_count": 68, "id": "1aa22dc7-bf7e-4ee9-bc5c-f4f162fa251f", "metadata": {}, "outputs": [], "source": [ "#Recording History in json\n", "import json\n", "with open('training_hist.json','w') as f:\n", " json.dump(training_history.history,f)" ] }, { "cell_type": "markdown", "id": "b17db75f-2c2e-4418-9af8-0a3be21fbadb", "metadata": {}, "source": [ "# Accuracy Visualization\n" ] }, { "cell_type": "code", "execution_count": 76, "id": "84ab5090-aabb-463b-99ee-443630c45857", "metadata": {}, "outputs": [ { "data": { "image/png": "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v67nKa1169bBwsICvXv3xoMHD/DgwQO0bt0aDRs2RFRUFHJzcwFIXV+mpqbFDuBVdtPUq1evTLUURdv7XrRoEV5//XX4+vpi27ZtOH78OE6dOoXevXurfZZ37txBnTp1YGJS/D/No0ePhqWlJVavXg1A6rqztLQsNugU1LhxY5w6dQonT57Ed999hzZt2mDu3LnYvHmzapvbt29DCAFnZ2dVuFEux48fx927dwGU/981oqJwDAsZNEtLSwwdOhRr165FcnIyIiIiYGtri5deeqnEfVu1aoXNmzdDCIE//vgDUVFRmDNnDiwtLTF9+nRYWFgAkAY5FqTty/Sbb77B8OHD8fnnn6utv3v3rlqriC7Gjx+P/fv3Y/fu3WjTpo3aawcOHMCtW7fw22+/qVpVABQ7L01pODo6Ijk5WWP9rVu3AAC1atV6puNX5HkuXryIo0ePAgAaNGigdZtffvkFffr0Qe3atZGbm4uUlJQix/Mox2rcuHFDoyWoIAsLC43fEUD62Wt7H9paOL755ht069YN4eHhausLj/GoXbs2jh49iry8vGJDi0KhwIgRI/DVV1/h7bffRmRkJF555ZVS/y5aWFjAx8cHANChQwd0794dLVq0QFhYGPr16wcbGxvUqlULMpkMR44c0XqFW8F15fl3jagobGEhgzdmzBjk5uZiwYIF2L17N15++WVYWVmVen+ZTIY2bdpg8eLFsLe3x++//w4AcHZ2hoWFBf744w+17X/88Uetxyj8j/auXbtw8+bNMrwj4IMPPkBkZCS++uortYGTBc8HQOOcX375pca2pW31AKQrTM6dO6f6DJQ2bNgAmUyG7t27l/o9lHQeZegqfB4rKyt06tRJ52MqB9uuXbsWBw8eVFt2794NMzMz1WXwyqvHCgeEgoKCgmBqalrsNoB0lVDh35GLFy/iwoULpa5d2+/PH3/8odE1FhwcjIyMDK1X0xT25ptv4u7duxg8eDAePHjwTHOoKAeU3759G8uXLwcA9OvXD0II3Lx5Ez4+PhpLq1attL7PZ/27po1cLjfYS9ep8rCFhQyej48PWrdujSVLlkAIUWJ3ECD1v69atQoDBw5Eo0aNIITADz/8gAcPHuD5558HAFX/fEREBBo3bow2bdrg5MmTWier69evH6KiotC8eXO0bt0acXFxWLBgQZm6E7777jt89tlnGDx4MJo2bap2mbBcLke7du3g7+8PBwcHTJgwAbNnz4aZmRk2btyIM2fOaBxP+cUxb948BAcHw9TUFK1bt4a5ubnGtm+99RY2bNiAvn37Ys6cOXBzc8OuXbuwatUqvP7662jatKnO70eb2bNn4+eff0b37t3x4YcfombNmti4cSN27dqF+fPnF3uFkTY5OTnYsGEDPD09MXbsWK3b9O/fHzt37sSdO3cQGBiI0NBQfPrpp7h9+zb69esHuVyO+Ph4WFlZ4Y033kDDhg3x/vvv45NPPsHTp08xdOhQKBQKnDt3Dnfv3lVNxhcaGophw4Zh4sSJGDRoEK5du4b58+erXU1Tkn79+uGTTz7B7Nmz0bVrV1y4cAFz5syBu7u72jwtQ4cORWRkJCZMmIALFy6ge/fuyMvLw4kTJ+Dp6ak2qV7Tpk3Ru3dv7NmzB507d9ZopdPV8OHDsWjRIvzvf//DpEmTEBAQgPHjx2PUqFE4ffo0unTpAmtrayQnJ+Po0aNo1aoVXn/99XL/u6ZNq1at8MMPPyA8PBze3t4wMTFRtRBRNaK34b5EOli6dKkAILy8vLS+XvjKgr///lsMHTpUNG7cWFhaWgqFQiE6duwooqKi1PZLS0sTY8eOFc7OzsLa2lr0799fXL16VePKhfv374sxY8YIJycnYWVlJTp37iyOHDmicaVIaa4Smj17tgCgdSl4JURMTIzw8/MTVlZWonbt2mLs2LHi999/1zh+ZmamGDt2rKhdu7aQyWRq59J2hcu1a9fEK6+8IhwdHYWZmZlo1qyZWLBggcjNzdV4HwsWLND4rAt/NkU5e/as6N+/v1AoFMLc3Fy0adOmyKtESrpKaMeOHQKAWLJkSZHb7N27V+2qltzcXLF48WLRsmVLYW5uLhQKhfDz8xM//fST2n4bNmwQHTp0EBYWFsLGxka0a9dOrc68vDwxf/580ahRI2FhYSF8fHzEgQMHirxK6LvvvtOoLTMzU7z99tuibt26wsLCQrRv317s2LFDjBgxQuPql6dPn4oPP/xQeHh4CHNzc+Ho6Ciee+45ERMTo3HcqKgoAUBs3ry52M+vIOVVQtrs2rVLABAff/yxal1ERITw9fUV1tbWwtLSUjRu3FgMHz5cnD59WghR/n/XtF0l9O+//4rBgwcLe3t71e84VT8yIQrNPkRERFXCoEGDcPz4cVy9ehVmZmb6LoeoQrFLiIioCsnMzMTvv/+OkydPYvv27Vi0aBHDClULbGEhIqpCrl69Cnd3d9jZ2eGVV17BihUripzxmciYMLAQERGRweNlzURERGTwdA4shw8fRv/+/VGnTh3IZDLs2LGjxH0OHToEb29vWFhYoFGjRqrZGQvatm0bvLy8IJfL4eXlxZtcERERkYrOgeXx48do06YNVqxYUartExMT0adPHwQGBiI+Ph7vv/8+3nzzTbXbwcfGxiIkJAShoaE4c+YMQkNDMWTIEJw4cULX8oiIiMgIPdMYFplMhu3bt2PgwIFFbvPee+9h586dajf4mjBhAs6cOaOa5TEkJATp6emqG5YBQO/eveHg4IBNmzaVqpa8vDzcunULtra2pbr5FxEREemfEAIPHz4s8T5aFX5Zc2xsLIKCgtTW9erVC+vWrUN2djbMzMwQGxuLt956S2ObJUuWFHnczMxMtftS3Lx5E15eXuVaOxEREVWO69evFzt7eIUHlpSUFDg7O6utc3Z2Rk5ODu7evQtXV9cit0lJSSnyuHPnzlVNnV3Q9evXYWdnVz7FExERUYVKT09H/fr1YWtrW+x2lTJxXOEuGmUvVMH12rYprmtnxowZmDp1quq58g3b2dkxsBAREVUxJQ3nqPDA4uLiotFSkpqaiho1asDR0bHYbQq3uhQkl8u13vKciIiIjE+Fz8Pi5+eH6OhotXX79u2Dj4+Pajrporbx9/ev6PKIiIioCtC5heXRo0e4fPmy6nliYiISEhJQs2ZNNGjQADNmzMDNmzexYcMGANIVQStWrMDUqVMxbtw4xMbGYt26dWpX/0yZMgVdunTBvHnzMGDAAPz444/49ddfcfTo0XJ4i0RERFTV6dzCcvr0abRr1w7t2rUDAEydOhXt2rXDhx9+CABITk5GUlKSant3d3fs3r0bv/32G9q2bYtPPvkEy5Ytw6BBg1Tb+Pv7Y/PmzYiMjETr1q0RFRWFLVu2wNfX91nfHxERERkBo7mXUHp6OhQKBdLS0jjoloiIqIoo7fc37yVEREREBo+BhYiIiAweAwsREREZPAYWIiIiMngMLERERGTwGFiIiIjI4DGwEBERkcGrlJsfEhERURWRlwdkZ+cvWVn5j+vUAfR0Hz8GFiIiooogBPD4MfDokfqXfsHHhZ+XZbvyOEbBx7m5Rb+nkyeBDh0q7zMsgIGFiIioJDk5wL//AvfuFb1oez0rS9+Vlw8zM2kpLsxUMAYWIiKqPoSQWjyKCx7aQkhaWtnPKZNJX/bm5vlf/EU9Lu/tyuPYNWpI70HPGFiIiKhqys4uudVDWwDJzi77Oe3tAUfHkpeaNfMfW1sbxBd+VcfAQkRE+qMc5/HgQf6Slib9WVIYefiw7Oe1sNAMFiUt9vZSawPpBT95IiIqu7w8ID1de+AozfO0tGcbFyGTAQ4O2ls2ilusrJ7xjVNlY2AhIqrOsrM1A0RxYaPwuvT08qmjRg0peCgUUkuGvX1+ECkuhNjbA6am5VMDGTQGFiIiY5CVBVy/Dly9Cty9W/oA8uRJ+Zzf0lI9bNjbl/y84DpLS47zoGIxsBARVQXZ2fmBRNty86bUPVNWtra6Bw7lc4VCb5OJUfXBwEJEZAiys4EbN9RDSGKiboHEwgJo2BBwcdEtcNjZcTApGTz+hhIRVYacHCmQFAwhBZcbN0ofSIpanJzYrUJGi4GFiKg8KANJUV02N26UfDWMXF58IHF2ZiChaouBhYioNHJypG4ZbWEkMbH0gcTNTTOIuLvnt5CYmFTkuyDSKisLuH9fmvqm4J+F133+OVC/vn5qZGAhIgKksFEwkBTuurl+veRAYm6uGUiUYUTZQsJAQhUkN1e6CKyk0KFtXWkvFps4kYGFiKjiZWRIQeTKFeDyZfU/ExOlVpTimJnlB5KCQUS5uLgwkNAzUd7qqCyh41ludwRIvY0KhTT9Tc2a0p8FH9esCdSrVz7vsywYWIjIuDx8KAUQbaHk+nXpG6EoBQOJtsXVlYGEdHLnDnDhQukDyP37JefmklhbawYNbeGj8DqFwrDn4GNgIaKqRQjpX/jCYeTyZWlJTS1+fxsboEkTaWncOP/Pxo2BunUN+19sqhL++QfYsUNajh0r2/Q45ualDxoF1zk4SPsaIwYWIjI8QgDJydpDyZUr0gytxalVSz2MFPyzdm2ju9ImK0saZqP8eJydgZ49pS8yqnhCAGfOANu3SyHljz/UX3d3l37tShM+lI858a8mBhYi0o+cHKmLpqhQ8vRp8fvXrasZRpSPFYrKeQ+VKDNTGmajbEi6dCn/8bVrmuOBTUyADh2A3r2lpUMHNh6Vp9xc4OjR/JaUq1fzXzM1Bbp2BQYOBAYMABo00E+NxkYmRHEdulVHeno6FAoF0tLSYGdnp+9yiAhQ/5Yt2G1TmkGupqbSeBJtrSTu7kZ5t92MDKk7QVsoSUoqvmvBykr6aBo1krb/80/11x0cgOefl8JLr15AnToV+16M0dOnwK+/Si0pP/0k3bJJydJS+lxfeAHo21e6LyOVTmm/v9nCQkTP5tEj7WNJSjPIVS6XvmG1hRI3N2kQrJF5+lQKJQXDiPJxSR9XweE3Hh75j5s0kcYDF+xCuHED+OUXaYmOlgZzbt0qLQDQqpX0Bdu7N9C5M28FVJT794Fdu6RWlL17gceP81+rWRPo318KKc8/b5QZ2qCwhYWIdJOUJI0kPHpUWs6eLf5b1ta26K6bunWN8qqbJ0+kvKYtlNy4Ufy+trbqYaTg47JOdJuTA5w8KYWXvXuBU6fUf2RWVkD37vndR02a6H4OY3LzZn5Xz2+/qTcE1q8vBZSBA4HAQN6CqTyU9vubgYWIipabK/UtFAwo169rbldwkGvh1hIjHOQKqDcsFQ4mt24Vv69CUXQoqYyP6+5dqWtj714pxKSkqL/eqFF+11H37lKIMnbnz0sBZft2KdAV1LKlFFBeeAFo184of531ioGFiHT35In0X3FlQImJAdLT1bcxNQXatwcCAqS+hIAAacI0I/TwofbxJJcuaX7JF+bgUHQocXQ0nC89IaSrWpTh5ehR6cbRSmZm0o9Z2X3UurXh1P4s8vKkYKK8sufChfzXZDLA318KKQMHssWpolVoYFm1ahUWLFiA5ORktGjRAkuWLEFgYGCR269cuRIrVqzA1atX0aBBA8ycORPDhw9XvR4VFYVRo0Zp7Pf06VNYWFiUqiYGFqIyuHNHvfUkLk5zIKyNDeDnJ31rde4M+PpKM1MZkZQU6WP4+2/1YHL7dvH7OTpqjiVRPq+qlxQ/fCh1g+zdKy3//KP+uotLfnh5/vmqNbg0K0t6b9u3Az/+KF05r2RuDvToIbWi9O9vtBncIFXYoNstW7YgLCwMq1atQkBAAL788ksEBwfj3LlzaKDl2q3w8HDMmDEDa9euRYcOHXDy5EmMGzcODg4O6N+/v2o7Ozs7XCgYcYFShxUiKgUhpG/jggHl4kXN7erUyQ8nnTtLozONqKNeCKkr58iR/OXy5aK3r11bs4XEw0Pq7XJwqLy6K4utrfSFrfzn+fLl/PBy8KAU7tavlxaZLP/S6V69gI4dDe9X5dEjYM8eqRVl1y716ettbaUregYOBIKDAf5f17Dp3MLi6+uL9u3bIzw8XLXO09MTAwcOxNy5czW29/f3R0BAABYsWKBaFxYWhtOnT+Po0aMApBaWsLAwPChpMqhisIWFqJCsLCA+XgomypBy547mdi1b5nfvdO4sXZ1jDG3+/8nNlcYFFwwohbtzZDKpq6NdO81QYoRTupRZZqb0a6QcvHv2rPrr9vbShHXKAKOv+86kpkqXHW/fLo3VyczMf83FRZobZeBAaXwOr47SvwppYcnKykJcXBymT5+utj4oKAgxMTFa98nMzNRoKbG0tMTJkyeRnZ0Ns/8uW3z06BHc3NyQm5uLtm3b4pNPPkG7du2KrCUzMxOZBX4L0wv3sxNVN2lpQGxsfkA5cUJz8jW5XPpvsDKg+PlV3b6LImRmSmMTlOEkJkbzpnDm5lLLQGCgtPj7S1+2VDy5XOo26dEDmD9fuppm3z4pvCgvnf7+e2kBgBYt8q886twZqMhG8+Kmw2/SROrqeeEFqUfTCC9MqxZ0Cix3795Fbm4unJ2d1dY7OzsjpYgRaL169cJXX32FgQMHon379oiLi0NERASys7Nx9+5duLq6onnz5oiKikKrVq2Qnp6OpUuXIiAgAGfOnIGHh4fW486dOxcff/yxLuUTGZfr19VbT/74Q/Py4po18wfGdu4MeHsb3X8p09OlUKIMKCdPqv+PGpCa/v398wNKx44V++VZXdStC4waJS25uVJQVA7ePXEC+OsvaVm4UJpYrXv3/PEvHh7P1pBX0nT43t75lx97eRlVo2G1pVOX0K1bt1C3bl3ExMTAz89Ptf6zzz7D119/jb///ltjn6dPn2LSpEn4+uuvIYSAs7Mzhg0bhvnz5+P27dtwcnLS2CcvLw/t27dHly5dsGzZMq21aGthqV+/PruEyDjl5kr/8hcMKElJmts1bqweUJo1M7r/Tt6+Lb39I0eAw4elL63CM8A6OeWHk8BAqbvH0MZWGLt796TuGGX3UcEBroA0WbEyvDz3XOkunc7JkX79i5sO/4UXpC6f+vXL8c1QhaqQLqFatWrB1NRUozUlNTVVo9VFydLSEhEREfjyyy9x+/ZtuLq6Ys2aNbC1tUWtWrW07mNiYoIOHTrg0qVLRdYil8shN7L/KRKpPH0qNRUoA4q2fg1TU2nQhTKgBARI050aESGkGfwLjj/RNk64USP1gPKs/3unZ+foCISESIsQ0ngXZXg5elT6ua5eLS01aki/vsqxL23a5OfskqbD791bakXp18/oejepkDINuvX29saqVatU67y8vDBgwACtg2616dq1K+rWrYtvv/1W6+tCCHTs2BGtWrVCREREqY7JQbdUpRW8vPjYMeny4oKTYQDqlxcHBEid8TY2+qm3guTlSfPUFQwohSdhk8mkC5cKBhTeF6dqefRIurxYGWAKX6Xl7AwEBUnTAnE6fONXYZc1T506FaGhofDx8YGfnx/WrFmDpKQkTJgwAQAwY8YM3Lx5Exs2bAAAXLx4ESdPnoSvry/u37+PRYsW4c8//8T69etVx/z444/RqVMneHh4ID09HcuWLUNCQgJWrlypa3lEBk35hfzbL5k4veMGrP+9jtp3/oLTvfNwQipq4w6ckA4nKFDTRQ7TLgH53TtG2K+RlQWcPp0fTo4dAwpfLGhmpjlA1hgvJ65ObGykFpF+/aTnV67kh5cDB6Ruv6+/zt++QYP8mWY7dza6vwZUSjr/2ENCQnDv3j3MmTMHycnJaNmyJXbv3g03NzcAQHJyMpIK9K3n5uZi4cKFuHDhAszMzNC9e3fExMSgYcOGqm0ePHiA8ePHIyUlBQqFAu3atcPhw4fRsWPHZ3+HRHqkCii/Scuh3/Lw730TAHIAjf9bumnd1yRVwPGgDE5/AU47pPlAnJykRdtje3vD7wZ5+FC6kEkZUE6ckO5QXJCNjeYAWUtL/dRLlaNxY2DiRGnJzJR6QKOjpau5/u//OB0+STg1P1E50ggoh4B//1XfxhqP0BlHEVDzb+R6tkSqXRPcMauD1AfmSE2Veofu3dP93DVqlBxqCj63san4L4E7d9S7dxISpPHDBdWuLf2vuUsXKaC0acP/QRNVJxXWJURE+UoVUEyfonPuIXTDb+iG3+DdsQbMpk8D/u8NaeCsFjk50uDCO3ekSbCUS8HnBR+np0v7JCdrXo1RFAuL4oNN4ccltXIIAVy7lh9ODh9Wvz+LUsOG6uNPmjXj/56JqGQMLEQ6KFVAsRbo3OwOuv27Hd2uRsI7Nw5myJFGCr77P2lMSgnf0DVqSDNylvZ+JpmZRYeZwo9v35auvMjIkK6M1nZ1tDY2NtrDjEIhXVp85Ahw44bmfi1bqgcUfc1+SkRVGwMLUTHy8qTpTwoGlMLdNdbWUpdGt8AcdMv4Bd4/zITZ72ekF83MgGGhwNtvS7NXVRC5XAoCpQ0Djx+XvvXmzh1pcOyjR9JS+GZ4BdWoAfj45IeTgABeakpE5YOBhagAnQJKN2nx9kiHWeQaYMkSaa5yQLqL2oQJwJtvStOBGhhra2kpMPa9SEJIXU6Fg0zB8TZNm0oBxdeXl5kSUcVgYKFqrUwBxVtqOMGtW8CyZUB4uPSNDkgTgoSFAePHG81d82Qy6a0oFNKEbERE+sDAQtVKaQKKlZV6QPHx+S+gKJ0/D/zvf9JEEcrJ3Tw9gXfeAV55xeju1UNEZAgYWMiolUtAUTp2TLpF7c6d+esCA4F33wX69DG6e/YQERkSBhYyKnl5wLlz6gGl4L1HAB0CivKAO3cCCxZIs1kBUh/JwIFSi0qBm4ASEVHFYWChKq3cA4pSRgbwzTdS149yMhG5HBg+HJg2TZo8hIiIKg0DC1UpQmh28ZRLQFF68EC6fezSpYDyruT29tKc4W+8UfqJUYiIqFwxsJDBS0+Xbi+/ezewZ4/m3XsLBxRvb+keJDq5fl26LHnNGmmyEUCa1GTqVGDsWMDW9tnfCBERlRkDCxkcZSvKnj1SSDl6VJp2XsnSUrMFReeAonT2rNTt8+23+Sdp1Uoan/Lyyzo0zRARUUViYCGD8OgRsH9/fki5fl399aZNgeBg6WKcLl2k++CUmRBSX9L8+dIJlbp3l6746dWLN7chIjIwDCykF0JIY1mV3TyHD0vTvytZWEj5oU8fKag0blwOJ83NBbZvl4LKqVPSOhMTYNAgqUWlQ4dyOAkREVUEBhaqNE+eAAcP5oeUxET11xs1kgJKnz5SV09JdwcutadPgfXrpa6fK1ekdRYWwKhR0hiVJk3K6URERFRRGFioQl2+LAWU3bulq3oyM/NfMzcHunbNDykeHuXcE/Pvv8CqVdL0+XfuSOtq1gQmT5aW2rXL8WRERFSRGFioXGVkSMNDlCHl8mX11xs0yA8o3bsDNjYVUMTVq8DixcBXX0nNOgDg5ibNnzJ6tHRzICIiqlIYWOiZJSbmd/McOCD1wCiZmUmz1ysHzHp6VuB41oQEaUbaLVuk8SoA0K6dNJB28GCgBn/diYiqKv4LTjrLzASOHMkPKX//rf563br5g2V79ADs7CqwGCGky4vmzweio/PXP/+8FFR69OAVP0RERoCBhUolKSn/kuP9+4HHj/NfMzUFAgLyu3patqyEjJCTA3z/vRRU4uPzCxkyRLrip127Ci6AiIgqEwMLaZWdLd2cWDkW5a+/1F93ccnv5unZU5q9vlJkZgJr1wILF0pjVQBpqtuxY4G33gIaNqykQoiIqDIxsJDKzZvA3r1SQImOBh4+zH/NxES6MbEypLRpI62rVE+fAv/3f9I8/QBQqxbw5pvSfX4cHSu5GCIiqkwMLNVYTg4QG5vf1XPmjPrrtWtLASU4GAgKkq4I1puMDOCFF6SwYm0tdQWNGlWOk7UQEZEhY2CpZlJS1FtRHjzIf00mAzp2zB8w6+2th1YUbTIzpdlof/lF6v7ZvVuan5+IiKoNBpZq4uBBaSxqXJz6+po1gd69pZASFGSAc6llZQEvvSSFFEtLYNcuhhUiomqIgaUauHABGDAgf0yKt3f+FT0dOkgX1xik7GwgJAT46SdpKv2ffpLm7CciomqHgcXIPXoEvPiiFFYCA4HvvgOcnfVdVSlkZwNDhwI7dgByOfDjj9KcKkREVC0ZwggFqiBCAGPGAOfOAXXqAFu3VpGwkpMDhIYC27ZJNxzavl3qryIiomqLgcWILV4shZQaNaSWFRcXfVdUCrm5wIgR0vT6ZmZSaAkO1ndVRESkZwwsRurQIWlmekAKLv7++q2nVHJzpUuVv/02P2X166fvqoiIyAAwsBihmzelGepzc4Fhw4BJk/RdUSnk5Umz1X79tTQKeMsWaaQwERERGFiMTlaWdGPi1FSgdWvgyy+rwL3/8vKA114DoqKksLJpkzRSmIiI6D9lCiyrVq2Cu7s7LCws4O3tjSNHjhS7/cqVK+Hp6QlLS0s0a9YMGzZs0Nhm27Zt8PLyglwuh5eXF7Zv316W0qq9qVOB48ele/v88IM0z5pBE0KaWv+rr6RZ6r7+Wpp3hYiIqCCho82bNwszMzOxdu1ace7cOTFlyhRhbW0trl27pnX7VatWCVtbW7F582Zx5coVsWnTJmFjYyN27typ2iYmJkaYmpqKzz//XJw/f158/vnnokaNGuL48eOlristLU0AEGlpabq+JaOxYYMQUgIQ4uef9V1NKeTlCTFpklSwTCbE11/ruyIiIqpkpf3+lgkhhC4Bx9fXF+3bt0d4eLhqnaenJwYOHIi5c+dqbO/v74+AgAAsWLBAtS4sLAynT5/G0aNHAQAhISFIT0/Hnj17VNv07t0bDg4O2LRpU6nqSk9Ph0KhQFpaGuzs7HR5S0YhIUG6OWFGBjB7NvDRR/quqARCSHdXXrpU6rOKjJSuDiIiomqltN/fOnUJZWVlIS4uDkGF5sQICgpCTEyM1n0yMzNhYWGhts7S0hInT55EdnY2ACA2NlbjmL169SrymKTu/n1pyEdGhjR77Ycf6ruiEggBvP22FFYAqTuIYYWIiIqhU2C5e/cucnNz4Vxo9jFnZ2ekpKRo3adXr1746quvEBcXByEETp8+jYiICGRnZ+Pu3bsAgJSUFJ2OCUhBKD09XW2pjvLypCuBEhMBd3dpCIhB3LCwKEIA06cDixZJz7/8Ehg9Wr81ERGRwSvTV5us0GUnQgiNdUqzZs1CcHAwOnXqBDMzMwwYMAAjR44EAJgWuImNLscEgLlz50KhUKiW+vXrl+WtVHlz5kj3BbSwkAbZ1qyp74qKIQQwcyYwf770fNUqYPx4/dZERERVgk6BpVatWjA1NdVo+UhNTdVoIVGytLREREQEnjx5gqtXryIpKQkNGzaEra0tatWqBQBwcXHR6ZgAMGPGDKSlpamW69ev6/JWjMKuXcDHH0uPv/wSaNtWr+WU7KOPAOU4p2XLgNdf12s5RERUdegUWMzNzeHt7Y3o6Gi19dHR0fAvYSpVMzMz1KtXD6ampti8eTP69esHk//6Lvz8/DSOuW/fvmKPKZfLYWdnp7ZUJ1euSF1BgHRV8PDh+q2nRHPmSAsgdQe98YZ+6yEioipF57s1T506FaGhofDx8YGfnx/WrFmDpKQkTJgwAYDU8nHz5k3VXCsXL17EyZMn4evri/v372PRokX4888/sX79etUxp0yZgi5dumDevHkYMGAAfvzxR/z666+qq4hI3ZMnwKBBwIMH0pVBixfru6ISfP65dOkSACxYIF0dREREpAOdA0tISAju3buHOXPmIDk5GS1btsTu3bvh5uYGAEhOTkZSUpJq+9zcXCxcuBAXLlyAmZkZunfvjpiYGDRs2FC1jb+/PzZv3owPPvgAs2bNQuPGjbFlyxb4+vo++zs0MkJIk8KeOQM4OUm32zE313dVxZg/Xxq3AkjdQW+/rd96iIioStJ5HhZDVV3mYVm5Epg8WZrBfv9+oGtXfVdUjEWLgGnTpMeffpofXIiIiP5TIfOwkH7FxABhYdLj+fMNPKwsW5YfVj76iGGFiIieCQNLFZGSIt3UMCdHuhOzQQ8DWbkSmDJFevzBB1VgJjsiIjJ0DCxVQHY2EBICJCcDXl7AunUGfAfm1aulPitAmiBuzhwDLpaIiKoKBpYq4L33gMOHAVtbaXI4Gxt9V1SEr77Kn1vl7belq4MYVoiIqBwwsBi4zZvzL1tevx5o1ky/9RQpMjJ/1tqwMGmQDcMKERGVEwYWA/bXX8CYMdLj6dOBF17Qbz1F+vprqVAhpAnhFi1iWCEionLFwGKg0tKkgPLkCdCzp3RVsEH69ltg5EgprLz+unQHZoYVIiIqZwwsBigvDxgxArh0CWjQANi0SZp3xeBs2QKEhkoFjx8PrFjBsEJERBWCgcUAzZsH/PijNIPt998D/90j0rBs2wa8+qoUVkaPBsLDARP+OhERUcXgN4yBiY6Wpi4BpOlMOnTQbz1abd8OvPwykJsrNQWtXcuwQkREFYrfMgbk2jVg6FCp0WLsWGkxODt3SjPX5eRILSzr1jGsEBFRheM3jYHIyJDuwHzvHuDjAyxfru+KtNi1K3+63ZdfBqKiDHRwDRERGRsGFgMxeTIQFwc4OkrjViws9F1RIb/8Arz4ojTt7ksvSZcy19D5Zt9ERERlwsBiANauze9Z2bwZcHPTd0WF/PorMGAAkJUlhZaNGxlWiIioUjGw6NmpU/m33vn0U2nOFYNy4ADQvz+QmSmFlk2bADMzfVdFRETVDAOLHt25I41bycoCBg6UZrM1KIcOSWElIwPo1w/YulW61pqIiKiSMbDoSU6OdEXQ9etA06bS+FWDmnPtyBGgb19pqt3gYGlgDcMKERHpCQOLnnzwAbB/P2BtLd2BWaHQd0UFxMQAffoAjx8Dzz8vFSiX67sqIiKqxhhY9OCHH6TZbAEgIgJo0UK/9ag5cQLo3Rt49Ah47jlpyl2Du2SJiIiqGwaWSvb339K9AgFg6lRpDjaDceoUEBQEPHwIdOsG/PQTYGmp76qIiIgYWCrTw4fSVcEPHwJdugBffKHvigr4/XcprKSnA4GBwM8/A1ZW+q6KiIgIAANLpRECGDMGOH8eqFNHuuDGYK4OTkiQrqd+8AAICJBmtLW21ndVREREKgwslWTRIuC776SQ8v33gLOzviv6z9mzUli5fx/o1AnYvRuwtdV3VURERGoYWCrBb78B770nPV68GPDz02s5+f76C+jRQ7qBUYcOwN69gJ2dvqsiIiLSwMBSwW7ckAbW5uYCoaHAxIn6rug/589LVwHduQN4ewP79hnYtdVERET5GFgqUGamdJ/AO3eANm2A1asNZHK4CxeksJKaCrRtK4UVe3t9V0VERFQkBpYK9NZbwPHjUhbYts1ALrq5dAno3h1ISQFat5ZubFizpr6rIiIiKhYDSwVZvx4ID5daVDZuBBo31ndFAK5ckcJKcjLQsqUUVhwd9V0VERFRiRhYKkB8PDBhgvR49mxplnu9u3pV6ga6eRPw8pLuC1C7tr6rIiIiKhUGlnL277/SHZgzMqSgMmuWviv6z4wZQFIS0KyZFFacnPRdERERUakxsJSjvDzg1VeBxESgUSPgm28AE0P4hIUADh2SHn/5JeDiot96iIiIdGQIX6dG4+OPpalMLCykGxw6OOi7ov/cuCGNWzE1leZbISIiqmIYWMrJzz8Dc+ZIj9eskS5jNhjHj0t/tmljIJcqERER6aZMgWXVqlVwd3eHhYUFvL29ceTIkWK337hxI9q0aQMrKyu4urpi1KhRuHfvnur1qKgoyGQyjSUjI6Ms5VW6y5eBYcOkx5MmSRPEGRRlYOnUSb91EBERlZHOgWXLli0ICwvDzJkzER8fj8DAQAQHByMpKUnr9kePHsXw4cMxZswY/PXXX/juu+9w6tQpjB07Vm07Ozs7JCcnqy0WFhZle1eV6MkTaZBtWpo05f6iRfquSAsGFiIiquJ0DiyLFi3CmDFjMHbsWHh6emLJkiWoX78+wsPDtW5//PhxNGzYEG+++Sbc3d3RuXNnvPbaazh9+rTadjKZDC4uLmqLoRMCGD8e+OMP6aKb774DzM31XVUhWVnA779LjxlYiIioitIpsGRlZSEuLg5BQUFq64OCghATE6N1H39/f9y4cQO7d++GEAK3b9/G999/j759+6pt9+jRI7i5uaFevXro168f4uPji60lMzMT6enpaktlW7lSmhTO1BTYuhWoW7fSSyjZH39I11jXrAk0aaLvaoiIiMpEp8By9+5d5ObmwtnZWW29s7MzUlJStO7j7++PjRs3IiQkBObm5nBxcYG9vT2WL1+u2qZ58+aIiorCzp07sWnTJlhYWCAgIACXLl0qspa5c+dCoVColvr16+vyVp7ZsWPS1PsAsGAB0LVrpZ6+9Ap2BxnEjYyIiIh0V6ZBt7JCX3xCCI11SufOncObb76JDz/8EHFxcdi7dy8SExMxQTkVLIBOnTph2LBhaNOmDQIDA7F161Y0bdpULdQUNmPGDKSlpamW69evl+WtlElKinRTw5wcICQECAurtFPrjuNXiIjICNTQZeNatWrB1NRUozUlNTVVo9VFae7cuQgICMA777wDAGjdujWsra0RGBiITz/9FK6urhr7mJiYoEOHDsW2sMjlcsjlcl3KLxfZ2cCQIdK0Ji1aAF99ZeANFwwsRERkBHRqYTE3N4e3tzeio6PV1kdHR8Pf31/rPk+ePIFJoeleTU1NAUgtM9oIIZCQkKA1zOjbu+8CR44AtrbS5HA2NvquqBh37kg3PJTJgI4d9V0NERFRmenUwgIAU6dORWhoKHx8fODn54c1a9YgKSlJ1cUzY8YM3Lx5Exs2bAAA9O/fH+PGjUN4eDh69eqF5ORkhIWFoWPHjqhTpw4A4OOPP0anTp3g4eGB9PR0LFu2DAkJCVi5cmU5vtVnt2kTsGSJ9HjDBqBpU72WU7ITJ6Q/PT0BhUK/tRARET0DnQNLSEgI7t27hzlz5iA5ORktW7bE7t274ebmBgBITk5Wm5Nl5MiRePjwIVasWIFp06bB3t4ezz33HObNm6fa5sGDBxg/fjxSUlKgUCjQrl07HD58GB0NqFXg7FlAOXXMjBnAwIF6Lad02B1ERERGQiaK6pepYtLT06FQKJCWlgY7O7tyPXZaGuDjI81o27OndL+g/3q1DFvPntKdmdesAcaN03c1REREGkr7/c17CZUgLw8YPlwKKw0aSN1CVSKs5OYCJ09Kj3199VsLERHRM2JgKcHcucDOnYBcDmzbBtSqpe+KSun8eeDhQ8DaWrqciYiIqApjYCnG48fA2rXS45UrpW6hKkM5fqVjxyrSJERERFQ0nQfdVifW1sCpU1I30Jgx+q5GRxxwS0RERoQtLCWoXRt48019V1EGDCxERGREGFiMUXo6cO6c9JgDbomIyAgwsBijU6cAIQB3d6CIWyYQERFVJQwsxojdQUREZGQYWIwRAwsRERkZBhZjIwQDCxERGR0GFmPzzz/A3bvSTHdt2+q7GiIionLBwGJslK0r7dsD5ub6rYWIiKicMLAYG3YHERGREWJgMTYMLEREZIQYWIzJ06dAQoL0mBPGERGREWFgMSa//w7k5AAuLkCDBvquhoiIqNwwsBiTgt1BMpl+ayEiIipHDCzGhONXiIjISDGwGBMGFiIiMlIMLMbixg1pMTEBfHz0XQ0REVG5YmAxFidOSH+2bg1YW+u3FiIionLGwGIslIGF3UFERGSEGFiMBcevEBGREWNgMQbZ2cDp09JjBhYiIjJCDCzG4OxZaZZbBwfAw0Pf1RAREZU7BhZjoOwO8vWVrhIiIiIyMvx2MwYcv0JEREaOgcUYMLAQEZGRY2Cp6u7dAy5dkh537KjfWoiIiCoIA0tVp5x/pVkzadAtERGREWJgqerYHURERNUAA0tVx8BCRETVQJkCy6pVq+Du7g4LCwt4e3vjyJEjxW6/ceNGtGnTBlZWVnB1dcWoUaNw7949tW22bdsGLy8vyOVyeHl5Yfv27WUprXrJy+OU/EREVC3oHFi2bNmCsLAwzJw5E/Hx8QgMDERwcDCSkpK0bn/06FEMHz4cY8aMwV9//YXvvvsOp06dwtixY1XbxMbGIiQkBKGhoThz5gxCQ0MxZMgQnFB+GZN2f/8NpKcDVlZAy5b6roaIiKjCyIQQQpcdfH190b59e4SHh6vWeXp6YuDAgZg7d67G9v/73/8QHh6OK1euqNYtX74c8+fPx/Xr1wEAISEhSE9Px549e1Tb9O7dGw4ODti0aVOp6kpPT4dCoUBaWhrs7Ox0eUtVV0QEMGYM0LUr8Ntv+q6GiIhIZ6X9/taphSUrKwtxcXEICgpSWx8UFISYmBit+/j7++PGjRvYvXs3hBC4ffs2vv/+e/Tt21e1TWxsrMYxe/XqVeQxASAzMxPp6elqS7XD7iAiIqomdAosd+/eRW5uLpydndXWOzs7IyUlRes+/v7+2LhxI0JCQmBubg4XFxfY29tj+fLlqm1SUlJ0OiYAzJ07FwqFQrXUr19fl7diHDjgloiIqokyDbqVyWRqz4UQGuuUzp07hzfffBMffvgh4uLisHfvXiQmJmLChAllPiYAzJgxA2lpaapF2b1UbTx8CPz5p/TY11e/tRAREVWwGrpsXKtWLZiammq0fKSmpmq0kCjNnTsXAQEBeOeddwAArVu3hrW1NQIDA/Hpp5/C1dUVLi4uOh0TAORyOeRyuS7lG5fTp6WrhNzcAFdXfVdDRERUoXRqYTE3N4e3tzeio6PV1kdHR8Pf31/rPk+ePIFJoTsIm5qaApBaUQDAz89P45j79u0r8pgEdgcREVG1olMLCwBMnToVoaGh8PHxgZ+fH9asWYOkpCRVF8+MGTNw8+ZNbNiwAQDQv39/jBs3DuHh4ejVqxeSk5MRFhaGjh07ok6dOgCAKVOmoEuXLpg3bx4GDBiAH3/8Eb/++iuOHj1ajm/VyDCwEBFRNaJzYAkJCcG9e/cwZ84cJCcno2XLlti9ezfc3NwAAMnJyWpzsowcORIPHz7EihUrMG3aNNjb2+O5557DvHnzVNv4+/tj8+bN+OCDDzBr1iw0btwYW7ZsgS/HZmgnBAMLERFVKzrPw2KoqtU8LImJQKNGgJmZNHGchYW+KyIiIiqTCpmHhQyEsnWlXTuGFSIiqhYYWKoidgcREVE1w8BSFTGwEBFRNcPAUtVkZADx8dJjBhYiIqomGFiqmvh4IDsbcHICGjbUdzVERESVgoGlqinYHVTMrQuIiIiMCQNLVcPxK0REVA0xsFQ1J05IfzKwEBFRNcLAUpUkJwPXrgEmJoCPj76rISIiqjQMLFWJsnWlZUvA1la/tRAREVUiBpaqhONXiIiommJgqUoYWIiIqJpiYKkqcnKAU6ekxwwsRERUzTCwVBV//gk8eQIoFECzZvquhoiIqFIxsFQVyu6gjh2lq4SIiIiqEX7zVRUcv0JERNUYA0tVwcBCRETVGANLVfDvv8CFC9JjX1/91kJERKQHDCxVwcmT0p8eHoCjo35rISIi0gMGlqqA3UFERFTNMbBUBQwsRERUzTGwGLq8PN6hmYiIqj0GFkN36RLw4AFgaQm0aqXvaoiIiPSCgcXQKbuDfHwAMzP91kJERKQnDCyGjuNXiIiIGFgMHgMLERERA4tBe/wY+OMP6TEDCxERVWMMLIbs9GnpKqH69YE6dfRdDRERkd4wsBgyZXcQp+MnIqJqjoHFkHH8ChEREQAGFsMlBAMLERHRfxhYDFVSEpCSAtSoAbRvr+9qiIiI9IqBxVApW1fatpVmuSUiIqrGyhRYVq1aBXd3d1hYWMDb2xtHjhwpctuRI0dCJpNpLC1atFBtExUVpXWbjIyMspRnHNgdREREpKJzYNmyZQvCwsIwc+ZMxMfHIzAwEMHBwUhKStK6/dKlS5GcnKxarl+/jpo1a+Kll15S287Ozk5tu+TkZFhYWJTtXRkDBhYiIiIVnQPLokWLMGbMGIwdOxaenp5YsmQJ6tevj/DwcK3bKxQKuLi4qJbTp0/j/v37GDVqlNp2MplMbTsXF5eyvSNjkJkJ/P679JiBhYiISLfAkpWVhbi4OAQFBamtDwoKQkxMTKmOsW7dOvTs2RNubm5q6x89egQ3NzfUq1cP/fr1Q3x8fLHHyczMRHp6utpiNBISgKwsoFYtoFEjfVdDRESkdzoFlrt37yI3NxfOzs5q652dnZGSklLi/snJydizZw/Gjh2rtr558+aIiorCzp07sWnTJlhYWCAgIACXLl0q8lhz586FQqFQLfXr19flrRi2EyekPzt1AmQy/dZCRERkAMo06FZW6EtUCKGxTpuoqCjY29tj4MCBaus7deqEYcOGoU2bNggMDMTWrVvRtGlTLF++vMhjzZgxA2lpaarl+vXrZXkrhonjV4iIiNTU0GXjWrVqwdTUVKM1JTU1VaPVpTAhBCIiIhAaGgpzc/NitzUxMUGHDh2KbWGRy+WQy+WlL74qYWAhIiJSo1MLi7m5Oby9vREdHa22Pjo6Gv7+/sXue+jQIVy+fBljxowp8TxCCCQkJMDV1VWX8ozD7dtAYqLUFdShg76rISIiMgg6tbAAwNSpUxEaGgofHx/4+flhzZo1SEpKwoQJEwBIXTU3b97Ehg0b1PZbt24dfH190bJlS41jfvzxx+jUqRM8PDyQnp6OZcuWISEhAStXrizj26rClONXWrQA7Oz0WwsREZGB0DmwhISE4N69e5gzZw6Sk5PRsmVL7N69W3XVT3JyssacLGlpadi2bRuWLl2q9ZgPHjzA+PHjkZKSAoVCgXbt2uHw4cPo2LFjGd5SFcc7NBMREWmQCSGEvosoD+np6VAoFEhLS4NdVW6ZeO454OBBYO1aoNDVVERERMamtN/fvJeQIcnNBU6elB5zwC0REZEKA4sh+esv4PFjwNYW8PTUdzVEREQGg4HFkCjHr3TsCJia6rcWIiIiA8LAYkg4/woREZFWDCyGhIGFiIhIKwYWQ/HgAXD+vPSYlzQTERGpYWAxFMqrgxo3BmrX1m8tREREBoaBxVAUvEMzERERqWFgMRQcv0JERFQkBhZDIAQDCxERUTEYWAzB5cvAv/8CFhZA69b6roaIiMjgMLAYAmXrirc3YG6u31qIiIgMEAOLIeAdmomIiIrFwGIIOH6FiIioWAws+vbkCXDmjPSYgYWIiEgrBhZ9i4sDcnOBOnWAevX0XQ0REZFBYmDRt4LdQTKZfmshIiIyUAws+sbxK0RERCViYNEnIYDYWOkxAwsREVGRGFj06cYNIDkZMDWV5mAhIiIirRhY9EnZHdSmDWBlpd9aiIiIDBgDiz5x/AoREVGpMLDo04kT0p8MLERERMViYNGXrCxpDhaAgYWIiKgEDCz68scfQEYGULMm0KSJvqshIiIyaAws+sIJ44iIiEqNgUVfOOCWiIio1BhY9EUZWHx99VsHERFRFcDAog937gBXrkiPO3bUby1ERERVAAOLPigvZ/b0BOzt9VoKERFRVcDAog8cv0JERKQTBhZ9YGAhIiLSSZkCy6pVq+Du7g4LCwt4e3vjyJEjRW47cuRIyGQyjaVFixZq223btg1eXl6Qy+Xw8vLC9u3by1Ka4cvNBU6elB4zsBAREZWKzoFly5YtCAsLw8yZMxEfH4/AwEAEBwcjKSlJ6/ZLly5FcnKyarl+/Tpq1qyJl156SbVNbGwsQkJCEBoaijNnziA0NBRDhgzBCeVYD2Ny/jzw8CFgbQ0UCm1ERESknUwIIXTZwdfXF+3bt0d4eLhqnaenJwYOHIi5c+eWuP+OHTvw4osvIjExEW5ubgCAkJAQpKenY8+ePartevfuDQcHB2zatKlUdaWnp0OhUCAtLQ12dna6vKXK9dVXwLhxQPfuwIED+q6GiIhIr0r7/a1TC0tWVhbi4uIQFBSktj4oKAgxMTGlOsa6devQs2dPVVgBpBaWwsfs1atXscfMzMxEenq62lIlcPwKERGRznQKLHfv3kVubi6cnZ3V1js7OyMlJaXE/ZOTk7Fnzx6MHTtWbX1KSorOx5w7dy4UCoVqqV+/vg7vRI8YWIiIiHRWpkG3skL3vhFCaKzTJioqCvb29hg4cOAzH3PGjBlIS0tTLdevXy9d8fqUng6cOyc95gy3REREpVZDl41r1aoFU1NTjZaP1NRUjRaSwoQQiIiIQGhoKMzNzdVec3Fx0fmYcrkccrlcl/L179QpQAjA3R0o4fMiIiKifDq1sJibm8Pb2xvR0dFq66Ojo+Hv71/svocOHcLly5cxZswYjdf8/Pw0jrlv374Sj1nlsDuIiIioTHRqYQGAqVOnIjQ0FD4+PvDz88OaNWuQlJSECRMmAJC6am7evIkNGzao7bdu3Tr4+vqiZcuWGsecMmUKunTpgnnz5mHAgAH48ccf8euvv+Lo0aNlfFsGioGFiIioTHQOLCEhIbh37x7mzJmD5ORktGzZErt371Zd9ZOcnKwxJ0taWhq2bduGpUuXaj2mv78/Nm/ejA8++ACzZs1C48aNsWXLFvga0zgPIXiHZiIiojLSeR4WQ2Xw87BcuQI0aQKYm0uDb6va+BsiIqIKUCHzsNAzULautG/PsEJERKQjBpbKwvErREREZcbAUlkYWIiIiMqMgaUyPH0KJCRIjxlYiIiIdMbAUhl+/x3IyQFcXIAGDfRdDRERUZXDwFIZCnYHleIWBkRERKSOgaUycPwKERHRM2FgqQwMLERERM+EgaWi3bwJ3LgBmJgAPj76roaIiKhKYmCpaCdOSH+2bg1YW+u3FiIioiqKgaWisTuIiIjomTGwVDQGFiIiomfGwFKRsrOB06elx7xDMxERUZkxsFSks2elWW7t7YGmTfVdDRERUZXFwFKRlN1Bvr7SVUJERERUJvwWrUgcv0JERFQuGFgqEgMLERFRuWBgqSj37gGXLkmPO3bUby1ERERVHANLRVFOGNesGVCzpn5rISIiquIYWCoKu4OIiIjKDQNLRWFgISIiKjcMLBUhLy+/S4iBhYiI6JkxsFSEv/8G0tMBKyugZUt9V0NERFTlMbBUBGXrSocOQI0a+q2FiIjICDCwVASOXyEiIipXDCwVgYGFiIioXDGwlLeHD4E//5Qe8w7NRERE5YKBpbydPi1dJdSgAeDqqu9qiIiIjAIDS3ljdxAREVG5Y2ApbwwsRERE5Y6BpTwJwcBCRERUARhYytPVq0BqKmBmBrRrp+9qiIiIjEaZAsuqVavg7u4OCwsLeHt748iRI8Vun5mZiZkzZ8LNzQ1yuRyNGzdGRESE6vWoqCjIZDKNJSMjoyzl6Y+ydaVdO8DCQr+1EBERGRGdp2HdsmULwsLCsGrVKgQEBODLL79EcHAwzp07hwYNGmjdZ8iQIbh9+zbWrVuHJk2aIDU1FTk5OWrb2NnZ4cKFC2rrLKralz67g4iIiCqEzoFl0aJFGDNmDMaOHQsAWLJkCX755ReEh4dj7ty5Gtvv3bsXhw4dwj///IOaNWsCABo2bKixnUwmg4uLi67lGBYGFiIiogqhU5dQVlYW4uLiEBQUpLY+KCgIMTExWvfZuXMnfHx8MH/+fNStWxdNmzbF22+/jadPn6pt9+jRI7i5uaFevXro168f4uPjdXwrepaRAShrZmAhIiIqVzq1sNy9exe5ublwdnZWW+/s7IyUlBSt+/zzzz84evQoLCwssH37dty9excTJ07Ev//+qxrH0rx5c0RFRaFVq1ZIT0/H0qVLERAQgDNnzsDDw0PrcTMzM5GZmal6np6erstbKX/x8UB2NuDkBGhpQSIiIqKyK9OthGUymdpzIYTGOqW8vDzIZDJs3LgRCoUCgNStNHjwYKxcuRKWlpbo1KkTOhVolQgICED79u2xfPlyLFu2TOtx586di48//rgs5VeMgt1BRXwWREREVDY6dQnVqlULpqamGq0pqampGq0uSq6urqhbt64qrACAp6cnhBC4ceOG9qJMTNChQwdcunSpyFpmzJiBtLQ01XL9+nVd3kr5O3FC+pPdQUREROVOp8Bibm4Ob29vREdHq62Pjo6Gv7+/1n0CAgJw69YtPHr0SLXu4sWLMDExQb169bTuI4RAQkICXIu5F49cLoednZ3aolcccEtERFRhdJ6HZerUqfjqq68QERGB8+fP46233kJSUhImTJgAQGr5GD58uGr7V155BY6Ojhg1ahTOnTuHw4cP45133sHo0aNhaWkJAPj444/xyy+/4J9//kFCQgLGjBmDhIQE1TENXnIycO2a1BXk46PvaoiIiIyOzmNYQkJCcO/ePcyZMwfJyclo2bIldu/eDTc3NwBAcnIykpKSVNvb2NggOjoab7zxBnx8fODo6IghQ4bg008/VW3z4MEDjB8/HikpKVAoFGjXrh0OHz6Mjh07lsNbrATK7qCWLQFbW/3WQkREZIRkQgih7yLKQ3p6OhQKBdLS0iq/e2j6dGDePGDcOGDNmso9NxERURVW2u9v3kuoPHD8ChERUYViYHlWOTnAqVPSYwYWIiKiCsHA8qz+/BN48gSwswOaN9d3NUREREaJgeVZKbuDfH0BE36cREREFYHfsM+K41eIiIgqXJmm5qcCGFiIqBzk5uYiOztb32UQlTszMzOYmpo+83EYWJ7Fv/8CFy5Ij3199VsLEVVJQgikpKTgwYMH+i6FqMLY29vDxcWlyPsOlgYDy7M4eVL608MDcHTUby1EVCUpw4qTkxOsrKye6R90IkMjhMCTJ0+QmpoKAMXecqckDCzPgt1BRPQMcnNzVWHFkf/pISOlvA1PamoqnJycytw9xEG3z4KBhYiegXLMipWVlZ4rIapYyt/xZxmnxcBSVnl5+V1CDCxE9AzYDUTGrjx+xxlYyurSJeD+fcDSEmjVSt/VEBFVad26dUNYWFipt7969SpkMhkSEhIqrCYyLAwsZaXsDvL2BszM9FsLEVElkclkxS4jR44s03F/+OEHfPLJJ6Xevn79+khOTkbLli3LdL6yCAoKgqmpKY4r//2nSsVBt2XF8StEVA0lJyerHm/ZsgUffvghLiind0D+AEul7OxsmJXiP3U1a9bUqQ5TU1O4uLjotM+zSEpKQmxsLCZPnox169ahk57/7S/t52pM2MJSVgwsRFQNubi4qBaFQgGZTKZ6npGRAXt7e2zduhXdunWDhYUFvvnmG9y7dw9Dhw5FvXr1YGVlhVatWmHTpk1qxy3cJdSwYUN8/vnnGD16NGxtbdGgQQOsWbNG9XrhLqHffvsNMpkM+/fvh4+PD6ysrODv768WpgDg008/hZOTE2xtbTF27FhMnz4dbdu2LfF9R0ZGol+/fnj99dexZcsWPH78WO31Bw8eYPz48XB2doaFhQVatmyJn3/+WfX6sWPH0LVrV1hZWcHBwQG9evXC/fv3Ve91yZIlasdr27YtPvroI9VzmUyG1atXY8CAAbC2tsann36K3NxcjBkzBu7u7rC0tESzZs2wdOlSjdojIiLQokULyOVyuLq6YvLkyQCA0aNHo1+/fmrb5uTkwMXFBRERESV+JpWNgaUsHj8G/vhDeszAQkTlSQjp35jKXoQot7fw3nvv4c0338T58+fRq1cvZGRkwNvbGz///DP+/PNPjB8/HqGhoThx4kSxx1m4cCF8fHwQHx+PiRMn4vXXX8fff/9d7D4zZ87EwoULcfr0adSoUQOjR49WvbZx40Z89tlnmDdvHuLi4tCgQQOEh4eX+H6EEIiMjMSwYcPQvHlzNG3aFFu3blW9npeXh+DgYMTExOCbb77BuXPn8MUXX6gu301ISECPHj3QokULxMbG4ujRo+jfvz9yc3NLPHdBs2fPxoABA3D27FmMHj0aeXl5qFevHrZu3Ypz587hww8/xPvvv69WW3h4OCZNmoTx48fj7Nmz2LlzJ5o0aQIAGDt2LPbu3avWarZ79248evQIQ4YM0am2SiGMRFpamgAg0tLSKv5kv/0mBCBEvXoVfy4iMlpPnz4V586dE0+fPs1f+eiR9O9LZS+PHulcf2RkpFAoFKrniYmJAoBYsmRJifv26dNHTJs2TfW8a9euYsqUKarnbm5uYtiwYarneXl5wsnJSYSHh6udKz4+XgghxMGDBwUA8euvv6r22bVrlwCg+nx9fX3FpEmT1OoICAgQbdq0KbbWffv2idq1a4vs7GwhhBCLFy8WAQEBqtd/+eUXYWJiIi5cuKB1/6FDh6ptX5ibm5tYvHix2ro2bdqI2bNnq54DEGFhYcXWKYQQEydOFIMGDVI9r1Onjpg5c2aR23t5eYl58+apng8cOFCMHDmyxPPoSuvv+n9K+/3NFpayYHcQEVGRfHx81J7n5ubis88+Q+vWreHo6AgbGxvs27cPSUlJxR6ndevWqsfKrifljKml2Uc5q6pynwsXLqBjx45q2xd+rs26desQEhKCGjWkYZ9Dhw7FiRMnVN1NCQkJqFevHpo2bap1f2ULy7Mq/LkCwOrVq+Hj44PatWvDxsYGa9euVX2uqampuHXrVrHnHjt2LCIjI1Xb79q1S61VypBw0G1ZMLAQUUWxsgIePdLPecuJtbW12vOFCxdi8eLFWLJkCVq1agVra2uEhYUhKyur2OMUHlQqk8mQl5dX6n2Uc38U3KfwfCCihK6wf//9Fzt27EB2drZa91Fubi4iIiIwb948jYHGhZX0uomJiUYd2iZYK/y5bt26FW+99RYWLlwIPz8/2NraYsGCBaqutpLOCwDDhw/H9OnTERsbi9jYWDRs2BCBgYEl7qcPDCy6EoKBhYgqjkwGFPpiquqOHDmCAQMGYNiwYQCkAHHp0iV4enpWah3NmjXDyZMnERoaqlp3+vTpYvfZuHEj6tWrhx07dqit379/P+bOnatqObpx4wYuXryotZWldevW2L9/Pz7++GOt56hdu7baOJL09HQkJiaW+H6OHDkCf39/TJw4UbXuypUrqse2trZo2LAh9u/fj+7du2s9hqOjIwYOHIjIyEjExsZi1KhRJZ5XXxhYdJWUBKSkADVqAO3b67saIiKD16RJE2zbtg0xMTFwcHDAokWLkJKSUumB5Y033sC4cePg4+MDf39/bNmyBX/88QcaNWpU5D7r1q3D4MGDNeZ7cXNzw3vvvYddu3ZhwIAB6NKlCwYNGoRFixahSZMm+PvvvyGTydC7d2/MmDEDrVq1wsSJEzFhwgSYm5vj4MGDeOmll1CrVi0899xziIqKQv/+/eHg4IBZs2aV6n47TZo0wYYNG/DLL7/A3d0dX3/9NU6dOgV3d3fVNh999BEmTJgAJycnBAcH4+HDhzh27BjeeOMN1TZjx45Fv379kJubixEjRpThk60cHMOiK2XrStu20iy3RERUrFmzZqF9+/bo1asXunXrBhcXFwwcOLDS63j11VcxY8YMvP3222jfvj0SExMxcuRIWFhYaN0+Li4OZ86cwaBBgzRes7W1RVBQENatWwcA2LZtGzp06IChQ4fCy8sL7777ruoqoKZNm2Lfvn04c+YMOnbsCD8/P/z444+qMTEzZsxAly5d0K9fP/Tp0wcDBw5E48aNS3w/EyZMwIsvvoiQkBD4+vri3r17aq0tADBixAgsWbIEq1atQosWLdCvXz9cunRJbZuePXvC1dUVvXr1Qp06dUr+IPVEJkrqwKsi0tPToVAokJaWBjs7u4o70VtvAUuWAJMnA8uXV9x5iMjoZWRkIDExEe7u7kV+aVLFev755+Hi4oKvv/5a36XozZMnT1CnTh1ERETgxRdfrJBzFPe7Xtrvb3YJ6YrjV4iIqqQnT55g9erV6NWrF0xNTbFp0yb8+uuviI6O1ndpepGXl4eUlBQsXLgQCoUC//d//6fvkorFwKKLzEzg99+lxwwsRERVikwmw+7du/Hpp58iMzMTzZo1w7Zt29CzZ099l6YXSUlJcHd3R7169RAVFaXqojJUhl2doTlzBsjKAmrVAooZpEVERIbH0tISv/76q77LMBgNGzYs8bJuQ8JBt7pQdgf5+kqXHhIREVGlYGDRBcevEBER6QUDiy4YWIiIiPSCgaW0bt8GEhOlrqAOHfRdDRERUbXCwFJaytuge3kBCoV+ayEiIqpmGFhKi91BREREesPAUloMLERE5aZbt24ICwtTPW/YsCGWLFlS7D4ymUzjJoRlUV7HocpVpsCyatUq1fS63t7eOHLkSLHbZ2ZmYubMmXBzc4NcLkfjxo0RERGhts22bdvg5eUFuVwOLy8vbN++vSylVYzcXODkSekxAwsRVWP9+/cvcqK12NhYyGQy/K6cYFMHp06dwvjx45+1PDUfffQR2rZtq7E+OTkZwcHB5Xquojx9+hQODg6oWbMmnj59WinnNFY6B5YtW7YgLCwMM2fORHx8PAIDAxEcHIykpKQi9xkyZAj279+PdevW4cKFC9i0aROaN2+uej02NhYhISEIDQ3FmTNnEBoaiiFDhuCEctyIvv31F/D4MWBrC1Ty3UWJiAzJmDFjcODAAVy7dk3jtYiICLRt2xbty3An+9q1a8PKyqo8SiyRi4sL5HJ5pZxr27ZtaNmyJby8vPDDDz9UyjmLIoRATk6OXmt4JkJHHTt2FBMmTFBb17x5czF9+nSt2+/Zs0coFApx7969Io85ZMgQ0bt3b7V1vXr1Ei+//HKp60pLSxMARFpaWqn3KbUvvxQCEKJHj/I/NhFVW0+fPhXnzp0TT58+1XcppZadnS2cnZ3FRx99pLb+8ePHwtbWVixfvlzcvXtXvPzyy6Ju3brC0tJStGzZUnz77bdq23ft2lVMmTJF9dzNzU0sXrxY9fzixYsiMDBQyOVy4enpKfbt2ycAiO3bt6u2effdd4WHh4ewtLQU7u7u4oMPPhBZWVlCCCEiIyMFALUlMjJSCCE0jvPHH3+I7t27CwsLC1GzZk0xbtw48fDhQ9XrI0aMEAMGDBALFiwQLi4uombNmmLixImqcxWnW7duYvXq1SI8PFx0795d4/U///xT9OnTR9ja2gobGxvRuXNncfnyZdXr69atE15eXsLc3Fy4uLiISZMmCSGESExMFABEfHy8atv79+8LAOLgwYNCCCEOHjwoAIi9e/cKb29vYWZmJg4cOCAuX74s/u///k84OTkJa2tr4ePjI6Kjo9XqysjIEO+8846oV6+eMDc3F02aNBFfffWVyMvLE40bNxYLFixQ2/7s2bNCJpOp1V5Qcb/rpf3+1qmFJSsrC3FxcQgKClJbHxQUhJiYGK377Ny5Ez4+Ppg/fz7q1q2Lpk2b4u2331ZrGouNjdU4Zq9evYo8JiB1M6Wnp6stFYbjV4iokgghNehW9lLaGdpr1KiB4cOHIyoqSm1a9++++w5ZWVl49dVXkZGRAW9vb/z888/4888/MX78eISGhpa61TwvLw8vvvgiTE1Ncfz4caxevRrvvfeexna2traIiorCuXPnsHTpUqxduxaLFy8GAISEhGDatGlo0aIFkpOTkZycjJCQEI1jPHnyBL1794aDgwNOnTqF7777Dr/++ismT56stt3Bgwdx5coVHDx4EOvXr0dUVBSioqKKfR9XrlxBbGwshgwZgiFDhiAmJgb//POP6vWbN2+iS5cusLCwwIEDBxAXF4fRo0erWkHCw8MxadIkjB8/HmfPnsXOnTvRpEmTUn2GBb377ruYO3cuzp8/j9atW+PRo0fo06cPfv31V8THx6NXr17o37+/Wk/J8OHDsXnzZixbtgznz5/H6tWrYWNjA5lMhtGjRyMyMlLtHBEREQgMDETjxo11rq/Uio0zhdy8eVMAEMeOHVNb/9lnn4mmTZtq3adXr15CLpeLvn37ihMnTohdu3YJNzc3MWrUKNU2ZmZmYuPGjWr7bdy4UZibmxdZy+zZszXSMyqqhcXTU2ph+emn8j82EVVb2v7X+eiR9M9NZS+PHpW+7vPnzwsA4sCBA6p1Xbp0EUOHDi1ynz59+ohp06apnhfXwvLLL78IU1NTcf36ddXre/bs0WgZKWz+/PnC29tb9Xz27NmiTZs2GtsVPM6aNWuEg4ODeFTgA9i1a5cwMTERKSkpQgiphcXNzU3k5OSotnnppZdESEhIkbUIIcT7778vBg4cqHo+YMAAMXPmTNXzGTNmCHd39yJbaurUqaO2fUG6tLDs2LGj2DqFEMLLy0ssX75cCCHEhQsXBACNVhelW7duCVNTU3HixAkhhBBZWVmidu3aIioqqsjjV3oLi5Ks0H10hBAa65Ty8vIgk8mwceNGdOzYEX369MGiRYsQFRWl1sqiyzEBYMaMGUhLS1Mt169fL8tbKdmDB8D589JjX9+KOQcRURXSvHlz+Pv7qy6euHLlCo4cOYLRo0cDAHJzc/HZZ5+hdevWcHR0hI2NDfbt21fsWMeCzp8/jwYNGqBevXqqdX5+fhrbff/99+jcuTNcXFxgY2ODWbNmlfocBc/Vpk0bWFtbq9YFBAQgLy8PFy5cUK1r0aIFTE1NVc9dXV2Rmppa5HFzc3Oxfv16DBs2TLVu2LBhWL9+PXJzcwEACQkJCAwMhJmZmcb+qampuHXrFnr06KHT+9HGx8dH7fnjx4/x7rvvwsvLC/b29rCxscHff/+t+uwSEhJgamqKrl27aj2eq6sr+vbtq/r5//zzz8jIyMBLL730zLUWR6e7NdeqVQumpqZISUlRW5+amgpnZ2et+7i6uqJu3bpQFJhszdPTE0II3LhxAx4eHnBxcdHpmAAgl8srZ9CU8uqgxo2B2rUr/nxEVK1ZWQGPHunnvLoYM2YMJk+ejJUrVyIyMhJubm6qL9eFCxdi8eLFWLJkCVq1agVra2uEhYUhKyurVMcWWvqnCv8H9vjx43j55Zfx8ccfo1evXlAoFNi8eTMWLlyo0/so7j/HBdcXDhUymQx5eXlFHveXX37BzZs3NbqhcnNzsW/fPgQHB8PS0rLI/Yt7DQBMTExU9StlZ2dr3bZgGAOAd955B7/88gv+97//oUmTJrC0tMTgwYNVP5+Szg0AY8eORWhoKBYvXozIyEiEhIRU+KBpnVpYzM3N4e3tjejoaLX10dHR8Pf317pPQEAAbt26hUcF/gZevHgRJiYmqvTs5+enccx9+/YVecxKpexzZesKEVUCmQywtq78Rdcb0A8ZMgSmpqb49ttvsX79eowaNUr1BX/kyBEMGDAAw4YNQ5s2bdCoUSNcunSp1Mf28vJCUlISbt26pVoXGxurts2xY8fg5uaGmTNnwsfHBx4eHhpXLpmbm6taM4o7V0JCAh4/fqx2bBMTEzRt2rTUNRe2bt06vPzyy0hISFBbXn31Vaxbtw4A0Lp1axw5ckRr0LC1tUXDhg2xf/9+rcev/d9/oJOTk1XrEhISSlXbkSNHMHLkSLzwwgto1aoVXFxccPXqVdXrrVq1Ql5eHg4dOlTkMfr06QNra2uEh4djz549qta1ClVix1YhmzdvFmZmZmLdunXi3LlzIiwsTFhbW4urV68KIYSYPn26CA0NVW3/8OFDUa9ePTF48GDx119/iUOHDgkPDw8xduxY1TbHjh0Tpqam4osvvhDnz58XX3zxhahRo4Y4fvx4qeuqsKuE+vSROniXLSvf4xJRtVcVrxIqaMyYMcLBwUGYmJiIa9euqdaHhYWJ+vXri2PHjolz586JsWPHCjs7OzFgwADVNsWNYcnNzRVeXl6iR48eIiEhQRw+fFh4e3urjT3ZsWOHqFGjhti0aZO4fPmyWLp0qahZs6ZQKBSqY27cuFFYW1uL+Ph4cefOHZGRkSGEUB/D8vjxY+Hq6ioGDRokzp49Kw4cOCAaNWokRowYoTqO8iqhgqZMmSK6du2q9XNJTU0VZmZmYs+ePRqv7du3T5iZmYnU1FRx9+5d4ejoKF588UVx6tQpcfHiRbFhwwbx999/CyGEiIqKEhYWFmLp0qXi4sWLIi4uTiwr8F3UqVMnERgYqPpu7dixo9YxLPfv31erYeDAgaJt27YiPj5eJCQkiP79+wtbW1u1n8fIkSNF/fr1xfbt28U///wjDh48KLZs2aJ2nPfff1+Ym5uL5s2ba/0cCiqPMSw6BxYhhFi5cqVwc3MT5ubmon379uLQoUOq10aMGKHxQzx//rzo2bOnsLS0FPXq1RNTp04VT548Udvmu+++E82aNRNmZmaiefPmYtu2bTrVVGGBpVs3IWQyIU6eLN/jElG1V9UDS0xMjAAggoKC1Nbfu3dPDBgwQNjY2AgnJyfxwQcfiOHDh5c6sAghDfzs3LmzMDc3F02bNhV79+7VGHT7zjvvCEdHR2FjYyNCQkLE4sWL1QJLRkaGGDRokLC3ty+Xy5oLKi6w/O9//xP29vZaB9NmZ2eLmjVrioULFwohhDhz5owICgoSVlZWwtbWVgQGBoorV66otl+9erXqu9HV1VW88cYbqtfOnTsnOnXqJCwtLUXbtm1Vl36XFFgSExNF9+7dhaWlpahfv75YsWKFxs/j6dOn4q233hKurq6qy5ojIiLUjnPlyhUBQMyfP1/r51BQeQQWmRClvZjNsKWnp0OhUCAtLQ12dnblfXCpg7eGTkN+iIiKlZGRgcTERNXM4URVybFjx9CtWzfcuHGj2DGnQPG/66X9/uY3cGmUdwAiIiKqojIzM3H9+nXMmjULQ4YMKTGslBfe/JCIiIhKbdOmTWjWrBnS0tIwf/78SjsvAwsRERGV2siRI5Gbm4u4uDjUrVu30s7LwEJEREQGj4GFiIiIDB4DCxGRnhnJxZpERSqP33EGFiIiPVFO9/7kyRM9V0JUsZS/49rum1RavKyZiEhPTE1NYW9vr7qJnpWVVbE3fSWqaoQQePLkCVJTU2Fvb692A0ldMbAQEemRi4sLABR751+iqs7e3l71u15WDCxERHokk8ng6uoKJyenIu+2S1SVmZmZPVPLihIDCxGRATA1NS2Xf9SJjBUH3RIREZHBY2AhIiIig8fAQkRERAbPaMawKCelSU9P13MlREREVFrK7+2SJpczmsDy8OFDAED9+vX1XAkRERHp6uHDh1AoFEW+LhNGMid0Xl4ebt26BVtbW068pEV6ejrq16+P69evw87OTt/lEPgzMTT8eRgW/jwMS0X+PIQQePjwIerUqQMTk6JHqhhNC4uJiQnq1aun7zIMnp2dHf/yGxj+TAwLfx6GhT8Pw1JRP4/iWlaUOOiWiIiIDB4DCxERERk8BpZqQi6XY/bs2ZDL5fouhf7Dn4lh4c/DsPDnYVgM4edhNINuiYiIyHixhYWIiIgMHgMLERERGTwGFiIiIjJ4DCxERERk8BhYjNzcuXPRoUMH2NrawsnJCQMHDsSFCxf0XRb9Z+7cuZDJZAgLC9N3KdXWzZs3MWzYMDg6OsLKygpt27ZFXFycvsuqtnJycvDBBx/A3d0dlpaWaNSoEebMmYO8vDx9l1YtHD58GP3790edOnUgk8mwY8cOtdeFEPjoo49Qp04dWFpaolu3bvjrr78qpTYGFiN36NAhTJo0CcePH0d0dDRycnIQFBSEx48f67u0au/UqVNYs2YNWrdure9Sqq379+8jICAAZmZm2LNnD86dO4eFCxfC3t5e36VVW/PmzcPq1auxYsUKnD9/HvPnz8eCBQuwfPlyfZdWLTx+/Bht2rTBihUrtL4+f/58LFq0CCtWrMCpU6fg4uKC559/XnU/v4rEy5qrmTt37sDJyQmHDh1Cly5d9F1OtfXo0SO0b98eq1atwqeffoq2bdtiyZIl+i6r2pk+fTqOHTuGI0eO6LsU+k+/fv3g7OyMdevWqdYNGjQIVlZW+Prrr/VYWfUjk8mwfft2DBw4EIDUulKnTh2EhYXhvffeAwBkZmbC2dkZ8+bNw2uvvVah9bCFpZpJS0sDANSsWVPPlVRvkyZNQt++fdGzZ099l1Kt7dy5Ez4+PnjppZfg5OSEdu3aYe3atfouq1rr3Lkz9u/fj4sXLwIAzpw5g6NHj6JPnz56rowSExORkpKCoKAg1Tq5XI6uXbsiJiamws9vNDc/pJIJITB16lR07twZLVu21Hc51dbmzZvx+++/49SpU/oupdr7559/EB4ejqlTp+L999/HyZMn8eabb0Iul2P48OH6Lq9aeu+995CWlobmzZvD1NQUubm5+OyzzzB06FB9l1btpaSkAACcnZ3V1js7O+PatWsVfn4Glmpk8uTJ+OOPP3D06FF9l1JtXb9+HVOmTMG+fftgYWGh73Kqvby8PPj4+ODzzz8HALRr1w5//fUXwsPDGVj0ZMuWLfjmm2/w7bffokWLFkhISEBYWBjq1KmDESNG6Ls8gtRVVJAQQmNdRWBgqSbeeOMN7Ny5E4cPH0a9evX0XU61FRcXh9TUVHh7e6vW5ebm4vDhw1ixYgUyMzNhamqqxwqrF1dXV3h5eamt8/T0xLZt2/RUEb3zzjuYPn06Xn75ZQBAq1atcO3aNcydO5eBRc9cXFwASC0trq6uqvWpqakarS4VgWNYjJwQApMnT8YPP/yAAwcOwN3dXd8lVWs9evTA2bNnkZCQoFp8fHzw6quvIiEhgWGlkgUEBGhc5n/x4kW4ubnpqSJ68uQJTEzUv5pMTU15WbMBcHd3h4uLC6Kjo1XrsrKycOjQIfj7+1f4+dnCYuQmTZqEb7/9Fj/++CNsbW1VfZAKhQKWlpZ6rq76sbW11Rg/ZG1tDUdHR44r0oO33noL/v7++PzzzzFkyBCcPHkSa9aswZo1a/RdWrXVv39/fPbZZ2jQoAFatGiB+Ph4LFq0CKNHj9Z3adXCo0ePcPnyZdXzxMREJCQkoGbNmmjQoAHCwsLw+eefw8PDAx4eHvj8889hZWWFV155peKLE2TUAGhdIiMj9V0a/adr165iypQp+i6j2vrpp59Ey5YthVwuF82bNxdr1qzRd0nVWnp6upgyZYpo0KCBsLCwEI0aNRIzZ84UmZmZ+i6tWjh48KDW74wRI0YIIYTIy8sTs2fPFi4uLkIul4suXbqIs2fPVkptnIeFiIiIDB7HsBAREZHBY2AhIiIig8fAQkRERAaPgYWIiIgMHgMLERERGTwGFiIiIjJ4DCxERERk8BhYiEhvnjx5gkGDBsHOzg4ymQwPHjzQd0lF6tatG8LCwvRdBlG1xcBCVI2MHDkSMpkMX3zxhdr6HTt2VMrdVgtbv349jhw5gpiYGCQnJ0OhUGhsExUVBZlMprHwbtdE1QvvJURUzVhYWGDevHl47bXX4ODgoNdarly5Ak9PzxLvo2RnZ6dxk0J9BCwi0h+2sBBVMz179oSLiwvmzp1b7Hbbtm1DixYtIJfL0bBhQyxcuFDncxV3jG7dumHhwoU4fPgwZDIZunXrVuRxZDIZXFxc1JaCt7Pv1q0bJk+ejMmTJ8Pe3h6Ojo744IMPUPDOI/fv38fw4cPh4OAAKysrBAcH49KlS2rnOXbsGLp27QorKys4ODigV69euH//vur1vLw8vPvuu6hZsyZcXFzw0Ucfqe3/0UcfoUGDBpDL5ahTpw7efPNNnT8zItKOgYWomjE1NcXnn3+O5cuX48aNG1q3iYuLw5AhQ/Dyyy/j7Nmz+OijjzBr1ixERUWV+jwlHeOHH37AuHHj4Ofnh+TkZPzwww/P9L7Wr1+PGjVq4MSJE1i2bBkWL16Mr776SvX6yJEjcfr0aezcuROxsbEQQqBPnz7Izs4GACQkJKBHjx5o0aIFYmNjcfToUfTv3x+5ublq57C2tsaJEycwf/58zJkzB9HR0QCA77//HosXL8aXX36JS5cuYceOHWjVqtUzvSciKqBSbrFIRAZhxIgRYsCAAUIIITp16iRGjx4thBBi+/btouA/B6+88op4/vnn1fZ95513hJeXV6nPVZpjTJkyRXTt2rXY40RGRgoAwtraWm0peOyuXbsKT09PkZeXp1r33nvvCU9PTyGEEBcvXhQAxLFjx1Sv3717V1haWoqtW7cKIYQYOnSoCAgIKLKOrl27is6dO6ut69Chg3jvvfeEEEIsXLhQNG3aVGRlZRX7foiobNjCQlRNzZs3D+vXr8e5c+c0Xjt//jwCAgLU1gUEBODSpUtqLQ7FKY9jKNna2iIhIUFtiYyMVNumU6dOauNa/Pz8VOc6f/48atSoAV9fX9Xrjo6OaNasGc6fPw8gv4WlOK1bt1Z77urqitTUVADASy+9hKdPn6JRo0YYN24ctm/fjpycHJ3eJxEVjYGFqJrq0qULevXqhffff1/jNSGExqBWUWA8SGmUxzGUTExM0KRJE7Wlbt26OtVSUo2WlpYlHsfMzEztuUwmQ15eHgCgfv36uHDhAlauXAlLS0tMnDgRXbp0UXU5EdGzYWAhqsa++OIL/PTTT4iJiVFb7+XlhaNHj6qti4mJQdOmTWFqalqqY5fHMXRx/PhxjeceHh4wNTWFl5cXcnJycOLECdXr9+7dw8WLF+Hp6QlAaj3Zv3//M9VgaWmJ//u//8OyZcvw22+/ITY2FmfPnn2mYxKRhJc1E1VjrVq1wquvvorly5errZ82bRo6dOiATz75BCEhIYiNjcWKFSuwatUq1TY9evTACy+8gMmTJ2s9dmmOUVpCCKSkpGisd3JygomJ9P+u69evY+rUqXjttdfw+++/Y/ny5aqrkjw8PDBgwACMGzcOX375JWxtbTF9+nTUrVsXAwYMAADMmDEDrVq1wsSJEzFhwgSYm5vj4MGDeOmll1CrVq0Sa4yKikJubi58fX1hZWWFr7/+GpaWlnBzc9P5/RKRJrawEFVzn3zyiUaXSfv27bF161Zs3rwZLVu2xIcffog5c+Zg5MiRqm2uXLmCu3fvFnnc0hyjtNLT0+Hq6qqxKMePAMDw4cPx9OlTdOzYEZMmTcIbb7yB8ePHq16PjIyEt7c3+vXrBz8/PwghsHv3blU3T9OmTbFv3z6cOXMGHTt2hJ+fH3788UfUqFG6/9fZ29tj7dq1CAgIULXW/PTTT3B0dNT5/RKRJpkoa6cyEZGB6NatG9q2bYslS5bouxQiqiBsYSEiIiKDx8BCREREBo9dQkRERGTw2MJCREREBo+BhYiIiAweAwsREREZPAYWIiIiMngMLERERGTwGFiIiIjI4DGwEBERkcFjYCEiIiKDx8BCREREBu//Ac6cGicGqqTNAAAAAElFTkSuQmCC", "text/plain": [ "