1340 lines (1340 with data), 110.9 kB
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"machine_shape": "hm"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "8XnVMPBXmtRa"
},
"source": [
"# TensorNetworks in Neural Networks.\n",
"\n",
"Here, we have a small toy example of how to use a TN inside of a fully connected neural network.\n",
"\n",
"First off, let's install tensornetwork"
]
},
{
"cell_type": "code",
"metadata": {
"id": "7HGRsYNAFxME"
},
"source": [
"# !pip install tensornetwork\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import tensorflow as tf\n",
"# Import tensornetwork\n",
"import tensornetwork as tn\n",
"import random\n",
"import time\n",
"# Set the backend to tesorflow\n",
"# (default is numpy)\n",
"tn.set_default_backend(\"tensorflow\")\n",
"np.random.seed(42)\n",
"random.seed(42)\n",
"tf.random.set_seed(42)"
],
"execution_count": 38,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "g1OMCo5XmrYu"
},
"source": [
"# TensorNetwork layer definition\n",
"\n",
"Here, we define the TensorNetwork layer we wish to use to replace the fully connected layer. Here, we simply use a 2 node Matrix Product Operator network to replace the normal dense weight matrix.\n",
"\n",
"We TensorNetwork's NCon API to keep the code short."
]
},
{
"cell_type": "code",
"metadata": {
"id": "wvSMKtPufnLp"
},
"source": [
"class TNLayer(tf.keras.layers.Layer):\n",
"\n",
" def __init__(self):\n",
" super(TNLayer, self).__init__()\n",
" # Create the variables for the layer.\n",
" self.a_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
" stddev=1.0/32.0),\n",
" name=\"a\", trainable=True)\n",
" self.b_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
" stddev=1.0/32.0),\n",
" name=\"b\", trainable=True)\n",
" self.bias = tf.Variable(tf.zeros(shape=(32, 32)),\n",
" name=\"bias\", trainable=True)\n",
"\n",
" def call(self, inputs):\n",
" # Define the contraction.\n",
" # We break it out so we can parallelize a batch using\n",
" # tf.vectorized_map (see below).\n",
" def f(input_vec, a_var, b_var, bias_var):\n",
" # Reshape to a matrix instead of a vector.\n",
" input_vec = tf.reshape(input_vec, (32, 32))\n",
"\n",
" # Now we create the network.\n",
" a = tn.Node(a_var)\n",
" b = tn.Node(b_var)\n",
" x_node = tn.Node(input_vec)\n",
" a[1] ^ x_node[0]\n",
" b[1] ^ x_node[1]\n",
" a[2] ^ b[2]\n",
"\n",
" # The TN should now look like this\n",
" # | |\n",
" # a --- b\n",
" # \\ /\n",
" # x\n",
"\n",
" # Now we begin the contraction.\n",
" c = a @ x_node\n",
" result = (c @ b).tensor\n",
"\n",
" # To make the code shorter, we also could've used Ncon.\n",
" # The above few lines of code is the same as this:\n",
" # result = tn.ncon([x, a_var, b_var], [[1, 2], [-1, 1, 3], [-2, 2, 3]])\n",
"\n",
" # Finally, add bias.\n",
" return result + bias_var\n",
"\n",
" # To deal with a batch of items, we can use the tf.vectorized_map\n",
" # function.\n",
" # https://www.tensorflow.org/api_docs/python/tf/vectorized_map\n",
" result = tf.vectorized_map(\n",
" lambda vec: f(vec, self.a_var, self.b_var, self.bias), inputs)\n",
" return tf.nn.relu(tf.reshape(result, (-1, 1024)))"
],
"execution_count": 39,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "V-CVqIhPnhY_"
},
"source": [
"# Smaller model\n",
"These two models are effectively the same, but notice how the TN layer has nearly 10x fewer parameters."
]
},
{
"cell_type": "code",
"metadata": {
"id": "XPBvnB95jg4b",
"outputId": "0b8df66d-ae89-4f3d-fdb1-8777334953cc",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
}
},
"source": [
"Dense = tf.keras.layers.Dense\n",
"fc_model = tf.keras.Sequential(\n",
" [\n",
" tf.keras.Input(shape=(2,)),\n",
" Dense(1024, activation=tf.nn.relu),\n",
" Dense(1024, activation=tf.nn.relu),\n",
" Dense(1, activation=None)])\n",
"fc_model.summary()"
],
"execution_count": 40,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_6\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_15 (Dense) (None, 1024) 3072 \n",
" \n",
" dense_16 (Dense) (None, 1024) 1049600 \n",
" \n",
" dense_17 (Dense) (None, 1) 1025 \n",
" \n",
"=================================================================\n",
"Total params: 1053697 (4.02 MB)\n",
"Trainable params: 1053697 (4.02 MB)\n",
"Non-trainable params: 0 (0.00 Byte)\n",
"_________________________________________________________________\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "bbKsmK8wIFTp",
"outputId": "01d5b62e-99d5-4238-b150-6190dc20c086",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
}
},
"source": [
"tn_model = tf.keras.Sequential(\n",
" [\n",
" tf.keras.Input(shape=(2,)),\n",
" Dense(1024, activation=tf.nn.relu),\n",
" # Here, we replace the dense layer with our MPS.\n",
" TNLayer(),\n",
" TNLayer(),\n",
" TNLayer(),\n",
" Dense(1, activation=None)])\n",
"tn_model.summary()"
],
"execution_count": 41,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_7\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_18 (Dense) (None, 1024) 3072 \n",
" \n",
" tn_layer_9 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_10 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_11 (TNLayer) (None, 1024) 5120 \n",
" \n",
" dense_19 (Dense) (None, 1) 1025 \n",
" \n",
"=================================================================\n",
"Total params: 19457 (76.00 KB)\n",
"Trainable params: 19457 (76.00 KB)\n",
"Non-trainable params: 0 (0.00 Byte)\n",
"_________________________________________________________________\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "GWwoYp0WnsLA"
},
"source": [
"# Training a model\n",
"\n",
"You can train the TN model just as you would a normal neural network model! Here, we give an example of how to do it in Keras."
]
},
{
"cell_type": "code",
"metadata": {
"id": "qDFzOC7sDBJ-"
},
"source": [
"X = np.concatenate([np.random.randn(20, 2) + np.array([3, 3]),\n",
" np.random.randn(20, 2) + np.array([-3, -3]),\n",
" np.random.randn(20, 2) + np.array([-3, 3]),\n",
" np.random.randn(20, 2) + np.array([3, -3])])\n",
"\n",
"Y = np.concatenate([np.ones((40)), -np.ones((40))])"
],
"execution_count": 42,
"outputs": []
},
{
"cell_type": "code",
"source": [
"seconds = time.time()\n",
"print(\"Time in seconds since beginning of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "19TWP-1eKURB",
"outputId": "beb253b3-9005-4426-bb36-584e18c27591"
},
"execution_count": 43,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710204936.9421859\n",
"Tue Mar 12 00:55:36 2024\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "crc0q1vbIyTj",
"outputId": "0091398e-419a-4586-995b-46225bb1e0b1",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
}
},
"source": [
"tn_model.compile(optimizer=\"adam\", loss=\"mean_squared_error\")\n",
"tn_model.fit(X, Y, epochs=200, verbose=2)"
],
"execution_count": 44,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/200\n",
"3/3 - 2s - loss: 1.0018 - 2s/epoch - 683ms/step\n",
"Epoch 2/200\n",
"3/3 - 0s - loss: 1.0018 - 19ms/epoch - 6ms/step\n",
"Epoch 3/200\n",
"3/3 - 0s - loss: 1.0007 - 20ms/epoch - 7ms/step\n",
"Epoch 4/200\n",
"3/3 - 0s - loss: 1.0001 - 19ms/epoch - 6ms/step\n",
"Epoch 5/200\n",
"3/3 - 0s - loss: 1.0006 - 21ms/epoch - 7ms/step\n",
"Epoch 6/200\n",
"3/3 - 0s - loss: 0.9997 - 19ms/epoch - 6ms/step\n",
"Epoch 7/200\n",
"3/3 - 0s - loss: 0.9991 - 18ms/epoch - 6ms/step\n",
"Epoch 8/200\n",
"3/3 - 0s - loss: 0.9978 - 18ms/epoch - 6ms/step\n",
"Epoch 9/200\n",
"3/3 - 0s - loss: 0.9946 - 19ms/epoch - 6ms/step\n",
"Epoch 10/200\n",
"3/3 - 0s - loss: 0.9873 - 19ms/epoch - 6ms/step\n",
"Epoch 11/200\n",
"3/3 - 0s - loss: 0.9702 - 18ms/epoch - 6ms/step\n",
"Epoch 12/200\n",
"3/3 - 0s - loss: 0.9332 - 20ms/epoch - 7ms/step\n",
"Epoch 13/200\n",
"3/3 - 0s - loss: 0.8618 - 18ms/epoch - 6ms/step\n",
"Epoch 14/200\n",
"3/3 - 0s - loss: 0.7187 - 19ms/epoch - 6ms/step\n",
"Epoch 15/200\n",
"3/3 - 0s - loss: 0.4604 - 19ms/epoch - 6ms/step\n",
"Epoch 16/200\n",
"3/3 - 0s - loss: 0.1368 - 20ms/epoch - 7ms/step\n",
"Epoch 17/200\n",
"3/3 - 0s - loss: 0.1065 - 21ms/epoch - 7ms/step\n",
"Epoch 18/200\n",
"3/3 - 0s - loss: 0.0901 - 20ms/epoch - 7ms/step\n",
"Epoch 19/200\n",
"3/3 - 0s - loss: 0.0193 - 20ms/epoch - 7ms/step\n",
"Epoch 20/200\n",
"3/3 - 0s - loss: 0.0450 - 20ms/epoch - 7ms/step\n",
"Epoch 21/200\n",
"3/3 - 0s - loss: 0.0507 - 21ms/epoch - 7ms/step\n",
"Epoch 22/200\n",
"3/3 - 0s - loss: 0.0290 - 21ms/epoch - 7ms/step\n",
"Epoch 23/200\n",
"3/3 - 0s - loss: 0.0136 - 18ms/epoch - 6ms/step\n",
"Epoch 24/200\n",
"3/3 - 0s - loss: 0.0176 - 20ms/epoch - 7ms/step\n",
"Epoch 25/200\n",
"3/3 - 0s - loss: 0.0193 - 22ms/epoch - 7ms/step\n",
"Epoch 26/200\n",
"3/3 - 0s - loss: 0.0116 - 20ms/epoch - 7ms/step\n",
"Epoch 27/200\n",
"3/3 - 0s - loss: 0.0091 - 20ms/epoch - 7ms/step\n",
"Epoch 28/200\n",
"3/3 - 0s - loss: 0.0110 - 21ms/epoch - 7ms/step\n",
"Epoch 29/200\n",
"3/3 - 0s - loss: 0.0104 - 19ms/epoch - 6ms/step\n",
"Epoch 30/200\n",
"3/3 - 0s - loss: 0.0078 - 19ms/epoch - 6ms/step\n",
"Epoch 31/200\n",
"3/3 - 0s - loss: 0.0073 - 19ms/epoch - 6ms/step\n",
"Epoch 32/200\n",
"3/3 - 0s - loss: 0.0076 - 20ms/epoch - 7ms/step\n",
"Epoch 33/200\n",
"3/3 - 0s - loss: 0.0071 - 21ms/epoch - 7ms/step\n",
"Epoch 34/200\n",
"3/3 - 0s - loss: 0.0062 - 20ms/epoch - 7ms/step\n",
"Epoch 35/200\n",
"3/3 - 0s - loss: 0.0061 - 19ms/epoch - 6ms/step\n",
"Epoch 36/200\n",
"3/3 - 0s - loss: 0.0061 - 19ms/epoch - 6ms/step\n",
"Epoch 37/200\n",
"3/3 - 0s - loss: 0.0057 - 19ms/epoch - 6ms/step\n",
"Epoch 38/200\n",
"3/3 - 0s - loss: 0.0053 - 19ms/epoch - 6ms/step\n",
"Epoch 39/200\n",
"3/3 - 0s - loss: 0.0052 - 20ms/epoch - 7ms/step\n",
"Epoch 40/200\n",
"3/3 - 0s - loss: 0.0051 - 19ms/epoch - 6ms/step\n",
"Epoch 41/200\n",
"3/3 - 0s - loss: 0.0048 - 18ms/epoch - 6ms/step\n",
"Epoch 42/200\n",
"3/3 - 0s - loss: 0.0046 - 20ms/epoch - 7ms/step\n",
"Epoch 43/200\n",
"3/3 - 0s - loss: 0.0046 - 19ms/epoch - 6ms/step\n",
"Epoch 44/200\n",
"3/3 - 0s - loss: 0.0044 - 18ms/epoch - 6ms/step\n",
"Epoch 45/200\n",
"3/3 - 0s - loss: 0.0042 - 18ms/epoch - 6ms/step\n",
"Epoch 46/200\n",
"3/3 - 0s - loss: 0.0040 - 17ms/epoch - 6ms/step\n",
"Epoch 47/200\n",
"3/3 - 0s - loss: 0.0040 - 17ms/epoch - 6ms/step\n",
"Epoch 48/200\n",
"3/3 - 0s - loss: 0.0039 - 18ms/epoch - 6ms/step\n",
"Epoch 49/200\n",
"3/3 - 0s - loss: 0.0037 - 17ms/epoch - 6ms/step\n",
"Epoch 50/200\n",
"3/3 - 0s - loss: 0.0036 - 17ms/epoch - 6ms/step\n",
"Epoch 51/200\n",
"3/3 - 0s - loss: 0.0035 - 17ms/epoch - 6ms/step\n",
"Epoch 52/200\n",
"3/3 - 0s - loss: 0.0034 - 17ms/epoch - 6ms/step\n",
"Epoch 53/200\n",
"3/3 - 0s - loss: 0.0033 - 19ms/epoch - 6ms/step\n",
"Epoch 54/200\n",
"3/3 - 0s - loss: 0.0032 - 18ms/epoch - 6ms/step\n",
"Epoch 55/200\n",
"3/3 - 0s - loss: 0.0031 - 16ms/epoch - 5ms/step\n",
"Epoch 56/200\n",
"3/3 - 0s - loss: 0.0031 - 17ms/epoch - 6ms/step\n",
"Epoch 57/200\n",
"3/3 - 0s - loss: 0.0030 - 19ms/epoch - 6ms/step\n",
"Epoch 58/200\n",
"3/3 - 0s - loss: 0.0029 - 18ms/epoch - 6ms/step\n",
"Epoch 59/200\n",
"3/3 - 0s - loss: 0.0028 - 16ms/epoch - 5ms/step\n",
"Epoch 60/200\n",
"3/3 - 0s - loss: 0.0027 - 18ms/epoch - 6ms/step\n",
"Epoch 61/200\n",
"3/3 - 0s - loss: 0.0026 - 18ms/epoch - 6ms/step\n",
"Epoch 62/200\n",
"3/3 - 0s - loss: 0.0025 - 19ms/epoch - 6ms/step\n",
"Epoch 63/200\n",
"3/3 - 0s - loss: 0.0025 - 17ms/epoch - 6ms/step\n",
"Epoch 64/200\n",
"3/3 - 0s - loss: 0.0024 - 17ms/epoch - 6ms/step\n",
"Epoch 65/200\n",
"3/3 - 0s - loss: 0.0024 - 18ms/epoch - 6ms/step\n",
"Epoch 66/200\n",
"3/3 - 0s - loss: 0.0023 - 17ms/epoch - 6ms/step\n",
"Epoch 67/200\n",
"3/3 - 0s - loss: 0.0022 - 18ms/epoch - 6ms/step\n",
"Epoch 68/200\n",
"3/3 - 0s - loss: 0.0022 - 17ms/epoch - 6ms/step\n",
"Epoch 69/200\n",
"3/3 - 0s - loss: 0.0021 - 16ms/epoch - 5ms/step\n",
"Epoch 70/200\n",
"3/3 - 0s - loss: 0.0020 - 18ms/epoch - 6ms/step\n",
"Epoch 71/200\n",
"3/3 - 0s - loss: 0.0020 - 18ms/epoch - 6ms/step\n",
"Epoch 72/200\n",
"3/3 - 0s - loss: 0.0019 - 19ms/epoch - 6ms/step\n",
"Epoch 73/200\n",
"3/3 - 0s - loss: 0.0019 - 18ms/epoch - 6ms/step\n",
"Epoch 74/200\n",
"3/3 - 0s - loss: 0.0018 - 17ms/epoch - 6ms/step\n",
"Epoch 75/200\n",
"3/3 - 0s - loss: 0.0018 - 18ms/epoch - 6ms/step\n",
"Epoch 76/200\n",
"3/3 - 0s - loss: 0.0017 - 16ms/epoch - 5ms/step\n",
"Epoch 77/200\n",
"3/3 - 0s - loss: 0.0017 - 17ms/epoch - 6ms/step\n",
"Epoch 78/200\n",
"3/3 - 0s - loss: 0.0016 - 17ms/epoch - 6ms/step\n",
"Epoch 79/200\n",
"3/3 - 0s - loss: 0.0016 - 18ms/epoch - 6ms/step\n",
"Epoch 80/200\n",
"3/3 - 0s - loss: 0.0016 - 17ms/epoch - 6ms/step\n",
"Epoch 81/200\n",
"3/3 - 0s - loss: 0.0015 - 20ms/epoch - 7ms/step\n",
"Epoch 82/200\n",
"3/3 - 0s - loss: 0.0015 - 18ms/epoch - 6ms/step\n",
"Epoch 83/200\n",
"3/3 - 0s - loss: 0.0014 - 18ms/epoch - 6ms/step\n",
"Epoch 84/200\n",
"3/3 - 0s - loss: 0.0014 - 19ms/epoch - 6ms/step\n",
"Epoch 85/200\n",
"3/3 - 0s - loss: 0.0013 - 19ms/epoch - 6ms/step\n",
"Epoch 86/200\n",
"3/3 - 0s - loss: 0.0013 - 18ms/epoch - 6ms/step\n",
"Epoch 87/200\n",
"3/3 - 0s - loss: 0.0013 - 16ms/epoch - 5ms/step\n",
"Epoch 88/200\n",
"3/3 - 0s - loss: 0.0012 - 18ms/epoch - 6ms/step\n",
"Epoch 89/200\n",
"3/3 - 0s - loss: 0.0012 - 18ms/epoch - 6ms/step\n",
"Epoch 90/200\n",
"3/3 - 0s - loss: 0.0012 - 18ms/epoch - 6ms/step\n",
"Epoch 91/200\n",
"3/3 - 0s - loss: 0.0011 - 17ms/epoch - 6ms/step\n",
"Epoch 92/200\n",
"3/3 - 0s - loss: 0.0011 - 17ms/epoch - 6ms/step\n",
"Epoch 93/200\n",
"3/3 - 0s - loss: 0.0010 - 19ms/epoch - 6ms/step\n",
"Epoch 94/200\n",
"3/3 - 0s - loss: 0.0010 - 19ms/epoch - 6ms/step\n",
"Epoch 95/200\n",
"3/3 - 0s - loss: 9.9175e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 96/200\n",
"3/3 - 0s - loss: 9.7160e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 97/200\n",
"3/3 - 0s - loss: 9.1934e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 98/200\n",
"3/3 - 0s - loss: 9.1939e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 99/200\n",
"3/3 - 0s - loss: 8.9917e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 100/200\n",
"3/3 - 0s - loss: 8.5670e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 101/200\n",
"3/3 - 0s - loss: 8.2558e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 102/200\n",
"3/3 - 0s - loss: 8.0836e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 103/200\n",
"3/3 - 0s - loss: 7.7820e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 104/200\n",
"3/3 - 0s - loss: 7.4222e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 105/200\n",
"3/3 - 0s - loss: 7.2910e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 106/200\n",
"3/3 - 0s - loss: 7.1327e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 107/200\n",
"3/3 - 0s - loss: 6.7226e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 108/200\n",
"3/3 - 0s - loss: 6.5387e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 109/200\n",
"3/3 - 0s - loss: 6.3478e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 110/200\n",
"3/3 - 0s - loss: 6.0961e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 111/200\n",
"3/3 - 0s - loss: 5.8166e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 112/200\n",
"3/3 - 0s - loss: 5.8480e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 113/200\n",
"3/3 - 0s - loss: 5.4503e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 114/200\n",
"3/3 - 0s - loss: 5.3062e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 115/200\n",
"3/3 - 0s - loss: 5.2946e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 116/200\n",
"3/3 - 0s - loss: 4.7874e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 117/200\n",
"3/3 - 0s - loss: 4.7114e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 118/200\n",
"3/3 - 0s - loss: 4.5269e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 119/200\n",
"3/3 - 0s - loss: 4.5380e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 120/200\n",
"3/3 - 0s - loss: 4.2536e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 121/200\n",
"3/3 - 0s - loss: 3.9441e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 122/200\n",
"3/3 - 0s - loss: 3.8316e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 123/200\n",
"3/3 - 0s - loss: 3.6812e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 124/200\n",
"3/3 - 0s - loss: 3.6512e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 125/200\n",
"3/3 - 0s - loss: 3.3016e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 126/200\n",
"3/3 - 0s - loss: 3.1494e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 127/200\n",
"3/3 - 0s - loss: 3.1160e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 128/200\n",
"3/3 - 0s - loss: 2.8627e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 129/200\n",
"3/3 - 0s - loss: 2.6777e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 130/200\n",
"3/3 - 0s - loss: 2.6258e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 131/200\n",
"3/3 - 0s - loss: 2.4426e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 132/200\n",
"3/3 - 0s - loss: 2.4068e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 133/200\n",
"3/3 - 0s - loss: 2.2655e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 134/200\n",
"3/3 - 0s - loss: 2.1242e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 135/200\n",
"3/3 - 0s - loss: 2.0196e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 136/200\n",
"3/3 - 0s - loss: 1.9252e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 137/200\n",
"3/3 - 0s - loss: 1.8062e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 138/200\n",
"3/3 - 0s - loss: 1.7509e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 139/200\n",
"3/3 - 0s - loss: 1.6781e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 140/200\n",
"3/3 - 0s - loss: 1.5383e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 141/200\n",
"3/3 - 0s - loss: 1.4289e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 142/200\n",
"3/3 - 0s - loss: 1.3294e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 143/200\n",
"3/3 - 0s - loss: 1.2580e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 144/200\n",
"3/3 - 0s - loss: 1.1927e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 145/200\n",
"3/3 - 0s - loss: 1.1094e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 146/200\n",
"3/3 - 0s - loss: 1.1226e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 147/200\n",
"3/3 - 0s - loss: 9.7595e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 148/200\n",
"3/3 - 0s - loss: 9.3520e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 149/200\n",
"3/3 - 0s - loss: 8.7133e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 150/200\n",
"3/3 - 0s - loss: 8.2338e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 151/200\n",
"3/3 - 0s - loss: 8.4051e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 152/200\n",
"3/3 - 0s - loss: 7.1404e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 153/200\n",
"3/3 - 0s - loss: 6.8557e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 154/200\n",
"3/3 - 0s - loss: 6.2511e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 155/200\n",
"3/3 - 0s - loss: 6.0561e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 156/200\n",
"3/3 - 0s - loss: 5.4933e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 157/200\n",
"3/3 - 0s - loss: 5.1755e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 158/200\n",
"3/3 - 0s - loss: 4.7015e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 159/200\n",
"3/3 - 0s - loss: 4.2376e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 160/200\n",
"3/3 - 0s - loss: 4.2349e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 161/200\n",
"3/3 - 0s - loss: 4.1130e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 162/200\n",
"3/3 - 0s - loss: 3.6309e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 163/200\n",
"3/3 - 0s - loss: 3.4193e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 164/200\n",
"3/3 - 0s - loss: 3.4451e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 165/200\n",
"3/3 - 0s - loss: 2.9192e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 166/200\n",
"3/3 - 0s - loss: 2.7077e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 167/200\n",
"3/3 - 0s - loss: 2.3977e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 168/200\n",
"3/3 - 0s - loss: 2.3505e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 169/200\n",
"3/3 - 0s - loss: 2.1494e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 170/200\n",
"3/3 - 0s - loss: 1.9601e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 171/200\n",
"3/3 - 0s - loss: 1.8738e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 172/200\n",
"3/3 - 0s - loss: 1.7222e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 173/200\n",
"3/3 - 0s - loss: 1.6006e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 174/200\n",
"3/3 - 0s - loss: 1.5306e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 175/200\n",
"3/3 - 0s - loss: 1.4319e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 176/200\n",
"3/3 - 0s - loss: 1.3512e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 177/200\n",
"3/3 - 0s - loss: 1.3253e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 178/200\n",
"3/3 - 0s - loss: 1.0599e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 179/200\n",
"3/3 - 0s - loss: 1.1178e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 180/200\n",
"3/3 - 0s - loss: 9.1475e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 181/200\n",
"3/3 - 0s - loss: 9.3396e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 182/200\n",
"3/3 - 0s - loss: 8.2424e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 183/200\n",
"3/3 - 0s - loss: 7.5882e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 184/200\n",
"3/3 - 0s - loss: 7.2334e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 185/200\n",
"3/3 - 0s - loss: 6.5040e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 186/200\n",
"3/3 - 0s - loss: 6.0464e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 187/200\n",
"3/3 - 0s - loss: 5.6838e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 188/200\n",
"3/3 - 0s - loss: 5.6350e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 189/200\n",
"3/3 - 0s - loss: 4.8108e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 190/200\n",
"3/3 - 0s - loss: 4.7074e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 191/200\n",
"3/3 - 0s - loss: 4.3411e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 192/200\n",
"3/3 - 0s - loss: 3.8214e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 193/200\n",
"3/3 - 0s - loss: 3.8367e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 194/200\n",
"3/3 - 0s - loss: 3.3282e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 195/200\n",
"3/3 - 0s - loss: 3.1114e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 196/200\n",
"3/3 - 0s - loss: 3.0487e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 197/200\n",
"3/3 - 0s - loss: 2.6585e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 198/200\n",
"3/3 - 0s - loss: 2.6784e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 199/200\n",
"3/3 - 0s - loss: 2.4610e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 200/200\n",
"3/3 - 0s - loss: 2.2299e-06 - 19ms/epoch - 6ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<keras.src.callbacks.History at 0x7ec19a99c130>"
]
},
"metadata": {},
"execution_count": 44
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "n-aNP4n3sqG_",
"outputId": "3d983e9d-b470-4f66-bbf9-93b6ec0b1597",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 443
}
},
"source": [
"# Plotting code, feel free to ignore.\n",
"h = 1.0\n",
"x_min, x_max = X[:, 0].min() - 5, X[:, 0].max() + 5\n",
"y_min, y_max = X[:, 1].min() - 5, X[:, 1].max() + 5\n",
"xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
" np.arange(y_min, y_max, h))\n",
"\n",
"# here \"model\" is your model's prediction (classification) function\n",
"Z = tn_model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
"\n",
"# Put the result into a color plot\n",
"Z = Z.reshape(xx.shape)\n",
"plt.contourf(xx, yy, Z)\n",
"plt.axis('off')\n",
"\n",
"# Plot also the training points\n",
"plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)"
],
"execution_count": 45,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"14/14 [==============================] - 0s 3ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7ec19aff7af0>"
]
},
"metadata": {},
"execution_count": 45
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"seconds = time.time()\n",
"print(\"Time in seconds since end of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "wfZCzuq9KY9b",
"outputId": "6b81bd06-8903-4635-e877-8ddc726794d3"
},
"execution_count": 46,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710204943.8980057\n",
"Tue Mar 12 00:55:43 2024\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"seconds = time.time()\n",
"print(\"Time in seconds since beginning of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "Ft6S13x6KuEQ",
"outputId": "6e6f525b-1358-4dfa-a582-530d31defeb5"
},
"execution_count": 47,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710204943.9082477\n",
"Tue Mar 12 00:55:43 2024\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BMxSJo5gtOmQ"
},
"source": [
"# VS Fully Connected"
]
},
{
"cell_type": "code",
"metadata": {
"id": "NKQx7stYswzU",
"outputId": "15537c88-2048-400f-9741-26f268ca3474",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 7786
}
},
"source": [
"fc_model.compile(optimizer=\"adam\", loss=\"mean_squared_error\")\n",
"fc_model.fit(X, Y, epochs=200, verbose=2)\n",
"# Plotting code, feel free to ignore.\n",
"h = 1.0\n",
"x_min, x_max = X[:, 0].min() - 5, X[:, 0].max() + 5\n",
"y_min, y_max = X[:, 1].min() - 5, X[:, 1].max() + 5\n",
"xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
" np.arange(y_min, y_max, h))\n",
"\n",
"# here \"model\" is your model's prediction (classification) function\n",
"Z = fc_model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
"\n",
"# Put the result into a color plot\n",
"Z = Z.reshape(xx.shape)\n",
"plt.contourf(xx, yy, Z)\n",
"plt.axis('off')\n",
"\n",
"# Plot also the training points\n",
"plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)"
],
"execution_count": 48,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/200\n",
"3/3 - 1s - loss: 0.5656 - 649ms/epoch - 216ms/step\n",
"Epoch 2/200\n",
"3/3 - 0s - loss: 0.1959 - 26ms/epoch - 9ms/step\n",
"Epoch 3/200\n",
"3/3 - 0s - loss: 0.1423 - 25ms/epoch - 8ms/step\n",
"Epoch 4/200\n",
"3/3 - 0s - loss: 0.0917 - 24ms/epoch - 8ms/step\n",
"Epoch 5/200\n",
"3/3 - 0s - loss: 0.0828 - 25ms/epoch - 8ms/step\n",
"Epoch 6/200\n",
"3/3 - 0s - loss: 0.0827 - 23ms/epoch - 8ms/step\n",
"Epoch 7/200\n",
"3/3 - 0s - loss: 0.0680 - 26ms/epoch - 9ms/step\n",
"Epoch 8/200\n",
"3/3 - 0s - loss: 0.0680 - 25ms/epoch - 8ms/step\n",
"Epoch 9/200\n",
"3/3 - 0s - loss: 0.0605 - 26ms/epoch - 9ms/step\n",
"Epoch 10/200\n",
"3/3 - 0s - loss: 0.0632 - 29ms/epoch - 10ms/step\n",
"Epoch 11/200\n",
"3/3 - 0s - loss: 0.0537 - 28ms/epoch - 9ms/step\n",
"Epoch 12/200\n",
"3/3 - 0s - loss: 0.0523 - 25ms/epoch - 8ms/step\n",
"Epoch 13/200\n",
"3/3 - 0s - loss: 0.0522 - 27ms/epoch - 9ms/step\n",
"Epoch 14/200\n",
"3/3 - 0s - loss: 0.0483 - 23ms/epoch - 8ms/step\n",
"Epoch 15/200\n",
"3/3 - 0s - loss: 0.0498 - 23ms/epoch - 8ms/step\n",
"Epoch 16/200\n",
"3/3 - 0s - loss: 0.0444 - 25ms/epoch - 8ms/step\n",
"Epoch 17/200\n",
"3/3 - 0s - loss: 0.0487 - 23ms/epoch - 8ms/step\n",
"Epoch 18/200\n",
"3/3 - 0s - loss: 0.0467 - 25ms/epoch - 8ms/step\n",
"Epoch 19/200\n",
"3/3 - 0s - loss: 0.0419 - 27ms/epoch - 9ms/step\n",
"Epoch 20/200\n",
"3/3 - 0s - loss: 0.0439 - 25ms/epoch - 8ms/step\n",
"Epoch 21/200\n",
"3/3 - 0s - loss: 0.0406 - 27ms/epoch - 9ms/step\n",
"Epoch 22/200\n",
"3/3 - 0s - loss: 0.0414 - 26ms/epoch - 9ms/step\n",
"Epoch 23/200\n",
"3/3 - 0s - loss: 0.0421 - 25ms/epoch - 8ms/step\n",
"Epoch 24/200\n",
"3/3 - 0s - loss: 0.0378 - 26ms/epoch - 9ms/step\n",
"Epoch 25/200\n",
"3/3 - 0s - loss: 0.0382 - 28ms/epoch - 9ms/step\n",
"Epoch 26/200\n",
"3/3 - 0s - loss: 0.0425 - 27ms/epoch - 9ms/step\n",
"Epoch 27/200\n",
"3/3 - 0s - loss: 0.0505 - 27ms/epoch - 9ms/step\n",
"Epoch 28/200\n",
"3/3 - 0s - loss: 0.0423 - 28ms/epoch - 9ms/step\n",
"Epoch 29/200\n",
"3/3 - 0s - loss: 0.0513 - 27ms/epoch - 9ms/step\n",
"Epoch 30/200\n",
"3/3 - 0s - loss: 0.0385 - 25ms/epoch - 8ms/step\n",
"Epoch 31/200\n",
"3/3 - 0s - loss: 0.0392 - 24ms/epoch - 8ms/step\n",
"Epoch 32/200\n",
"3/3 - 0s - loss: 0.0417 - 25ms/epoch - 8ms/step\n",
"Epoch 33/200\n",
"3/3 - 0s - loss: 0.0414 - 25ms/epoch - 8ms/step\n",
"Epoch 34/200\n",
"3/3 - 0s - loss: 0.0374 - 24ms/epoch - 8ms/step\n",
"Epoch 35/200\n",
"3/3 - 0s - loss: 0.0348 - 24ms/epoch - 8ms/step\n",
"Epoch 36/200\n",
"3/3 - 0s - loss: 0.0319 - 23ms/epoch - 8ms/step\n",
"Epoch 37/200\n",
"3/3 - 0s - loss: 0.0429 - 25ms/epoch - 8ms/step\n",
"Epoch 38/200\n",
"3/3 - 0s - loss: 0.0382 - 27ms/epoch - 9ms/step\n",
"Epoch 39/200\n",
"3/3 - 0s - loss: 0.0266 - 24ms/epoch - 8ms/step\n",
"Epoch 40/200\n",
"3/3 - 0s - loss: 0.0399 - 27ms/epoch - 9ms/step\n",
"Epoch 41/200\n",
"3/3 - 0s - loss: 0.0336 - 23ms/epoch - 8ms/step\n",
"Epoch 42/200\n",
"3/3 - 0s - loss: 0.0293 - 25ms/epoch - 8ms/step\n",
"Epoch 43/200\n",
"3/3 - 0s - loss: 0.0304 - 23ms/epoch - 8ms/step\n",
"Epoch 44/200\n",
"3/3 - 0s - loss: 0.0370 - 25ms/epoch - 8ms/step\n",
"Epoch 45/200\n",
"3/3 - 0s - loss: 0.0295 - 27ms/epoch - 9ms/step\n",
"Epoch 46/200\n",
"3/3 - 0s - loss: 0.0278 - 28ms/epoch - 9ms/step\n",
"Epoch 47/200\n",
"3/3 - 0s - loss: 0.0298 - 39ms/epoch - 13ms/step\n",
"Epoch 48/200\n",
"3/3 - 0s - loss: 0.0244 - 29ms/epoch - 10ms/step\n",
"Epoch 49/200\n",
"3/3 - 0s - loss: 0.0270 - 25ms/epoch - 8ms/step\n",
"Epoch 50/200\n",
"3/3 - 0s - loss: 0.0191 - 25ms/epoch - 8ms/step\n",
"Epoch 51/200\n",
"3/3 - 0s - loss: 0.0257 - 23ms/epoch - 8ms/step\n",
"Epoch 52/200\n",
"3/3 - 0s - loss: 0.0229 - 26ms/epoch - 9ms/step\n",
"Epoch 53/200\n",
"3/3 - 0s - loss: 0.0226 - 25ms/epoch - 8ms/step\n",
"Epoch 54/200\n",
"3/3 - 0s - loss: 0.0251 - 27ms/epoch - 9ms/step\n",
"Epoch 55/200\n",
"3/3 - 0s - loss: 0.0231 - 24ms/epoch - 8ms/step\n",
"Epoch 56/200\n",
"3/3 - 0s - loss: 0.0268 - 27ms/epoch - 9ms/step\n",
"Epoch 57/200\n",
"3/3 - 0s - loss: 0.0274 - 28ms/epoch - 9ms/step\n",
"Epoch 58/200\n",
"3/3 - 0s - loss: 0.0182 - 24ms/epoch - 8ms/step\n",
"Epoch 59/200\n",
"3/3 - 0s - loss: 0.0233 - 24ms/epoch - 8ms/step\n",
"Epoch 60/200\n",
"3/3 - 0s - loss: 0.0189 - 24ms/epoch - 8ms/step\n",
"Epoch 61/200\n",
"3/3 - 0s - loss: 0.0133 - 25ms/epoch - 8ms/step\n",
"Epoch 62/200\n",
"3/3 - 0s - loss: 0.0144 - 23ms/epoch - 8ms/step\n",
"Epoch 63/200\n",
"3/3 - 0s - loss: 0.0157 - 24ms/epoch - 8ms/step\n",
"Epoch 64/200\n",
"3/3 - 0s - loss: 0.0119 - 26ms/epoch - 9ms/step\n",
"Epoch 65/200\n",
"3/3 - 0s - loss: 0.0188 - 25ms/epoch - 8ms/step\n",
"Epoch 66/200\n",
"3/3 - 0s - loss: 0.0130 - 25ms/epoch - 8ms/step\n",
"Epoch 67/200\n",
"3/3 - 0s - loss: 0.0116 - 24ms/epoch - 8ms/step\n",
"Epoch 68/200\n",
"3/3 - 0s - loss: 0.0110 - 24ms/epoch - 8ms/step\n",
"Epoch 69/200\n",
"3/3 - 0s - loss: 0.0073 - 25ms/epoch - 8ms/step\n",
"Epoch 70/200\n",
"3/3 - 0s - loss: 0.0097 - 23ms/epoch - 8ms/step\n",
"Epoch 71/200\n",
"3/3 - 0s - loss: 0.0088 - 24ms/epoch - 8ms/step\n",
"Epoch 72/200\n",
"3/3 - 0s - loss: 0.0063 - 24ms/epoch - 8ms/step\n",
"Epoch 73/200\n",
"3/3 - 0s - loss: 0.0058 - 21ms/epoch - 7ms/step\n",
"Epoch 74/200\n",
"3/3 - 0s - loss: 0.0060 - 22ms/epoch - 7ms/step\n",
"Epoch 75/200\n",
"3/3 - 0s - loss: 0.0094 - 24ms/epoch - 8ms/step\n",
"Epoch 76/200\n",
"3/3 - 0s - loss: 0.0106 - 27ms/epoch - 9ms/step\n",
"Epoch 77/200\n",
"3/3 - 0s - loss: 0.0083 - 24ms/epoch - 8ms/step\n",
"Epoch 78/200\n",
"3/3 - 0s - loss: 0.0048 - 25ms/epoch - 8ms/step\n",
"Epoch 79/200\n",
"3/3 - 0s - loss: 0.0048 - 26ms/epoch - 9ms/step\n",
"Epoch 80/200\n",
"3/3 - 0s - loss: 0.0046 - 26ms/epoch - 9ms/step\n",
"Epoch 81/200\n",
"3/3 - 0s - loss: 0.0029 - 23ms/epoch - 8ms/step\n",
"Epoch 82/200\n",
"3/3 - 0s - loss: 0.0026 - 32ms/epoch - 11ms/step\n",
"Epoch 83/200\n",
"3/3 - 0s - loss: 0.0030 - 32ms/epoch - 11ms/step\n",
"Epoch 84/200\n",
"3/3 - 0s - loss: 0.0032 - 25ms/epoch - 8ms/step\n",
"Epoch 85/200\n",
"3/3 - 0s - loss: 0.0040 - 27ms/epoch - 9ms/step\n",
"Epoch 86/200\n",
"3/3 - 0s - loss: 0.0045 - 31ms/epoch - 10ms/step\n",
"Epoch 87/200\n",
"3/3 - 0s - loss: 0.0047 - 25ms/epoch - 8ms/step\n",
"Epoch 88/200\n",
"3/3 - 0s - loss: 0.0033 - 26ms/epoch - 9ms/step\n",
"Epoch 89/200\n",
"3/3 - 0s - loss: 0.0034 - 27ms/epoch - 9ms/step\n",
"Epoch 90/200\n",
"3/3 - 0s - loss: 0.0083 - 29ms/epoch - 10ms/step\n",
"Epoch 91/200\n",
"3/3 - 0s - loss: 0.0109 - 26ms/epoch - 9ms/step\n",
"Epoch 92/200\n",
"3/3 - 0s - loss: 0.0065 - 29ms/epoch - 10ms/step\n",
"Epoch 93/200\n",
"3/3 - 0s - loss: 0.0046 - 30ms/epoch - 10ms/step\n",
"Epoch 94/200\n",
"3/3 - 0s - loss: 0.0068 - 28ms/epoch - 9ms/step\n",
"Epoch 95/200\n",
"3/3 - 0s - loss: 0.0096 - 25ms/epoch - 8ms/step\n",
"Epoch 96/200\n",
"3/3 - 0s - loss: 0.0103 - 32ms/epoch - 11ms/step\n",
"Epoch 97/200\n",
"3/3 - 0s - loss: 0.0119 - 31ms/epoch - 10ms/step\n",
"Epoch 98/200\n",
"3/3 - 0s - loss: 0.0069 - 26ms/epoch - 9ms/step\n",
"Epoch 99/200\n",
"3/3 - 0s - loss: 0.0075 - 25ms/epoch - 8ms/step\n",
"Epoch 100/200\n",
"3/3 - 0s - loss: 0.0057 - 23ms/epoch - 8ms/step\n",
"Epoch 101/200\n",
"3/3 - 0s - loss: 0.0032 - 25ms/epoch - 8ms/step\n",
"Epoch 102/200\n",
"3/3 - 0s - loss: 0.0039 - 23ms/epoch - 8ms/step\n",
"Epoch 103/200\n",
"3/3 - 0s - loss: 0.0029 - 25ms/epoch - 8ms/step\n",
"Epoch 104/200\n",
"3/3 - 0s - loss: 0.0031 - 22ms/epoch - 7ms/step\n",
"Epoch 105/200\n",
"3/3 - 0s - loss: 0.0021 - 23ms/epoch - 8ms/step\n",
"Epoch 106/200\n",
"3/3 - 0s - loss: 0.0015 - 24ms/epoch - 8ms/step\n",
"Epoch 107/200\n",
"3/3 - 0s - loss: 0.0014 - 28ms/epoch - 9ms/step\n",
"Epoch 108/200\n",
"3/3 - 0s - loss: 0.0013 - 27ms/epoch - 9ms/step\n",
"Epoch 109/200\n",
"3/3 - 0s - loss: 0.0022 - 30ms/epoch - 10ms/step\n",
"Epoch 110/200\n",
"3/3 - 0s - loss: 0.0019 - 31ms/epoch - 10ms/step\n",
"Epoch 111/200\n",
"3/3 - 0s - loss: 0.0020 - 28ms/epoch - 9ms/step\n",
"Epoch 112/200\n",
"3/3 - 0s - loss: 6.9314e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 113/200\n",
"3/3 - 0s - loss: 9.3566e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 114/200\n",
"3/3 - 0s - loss: 0.0015 - 26ms/epoch - 9ms/step\n",
"Epoch 115/200\n",
"3/3 - 0s - loss: 0.0017 - 27ms/epoch - 9ms/step\n",
"Epoch 116/200\n",
"3/3 - 0s - loss: 0.0020 - 24ms/epoch - 8ms/step\n",
"Epoch 117/200\n",
"3/3 - 0s - loss: 0.0018 - 25ms/epoch - 8ms/step\n",
"Epoch 118/200\n",
"3/3 - 0s - loss: 0.0010 - 28ms/epoch - 9ms/step\n",
"Epoch 119/200\n",
"3/3 - 0s - loss: 8.8028e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 120/200\n",
"3/3 - 0s - loss: 7.2462e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 121/200\n",
"3/3 - 0s - loss: 8.0890e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 122/200\n",
"3/3 - 0s - loss: 9.8991e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 123/200\n",
"3/3 - 0s - loss: 7.1008e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 124/200\n",
"3/3 - 0s - loss: 4.9597e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 125/200\n",
"3/3 - 0s - loss: 4.7966e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 126/200\n",
"3/3 - 0s - loss: 3.0518e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 127/200\n",
"3/3 - 0s - loss: 2.7030e-04 - 31ms/epoch - 10ms/step\n",
"Epoch 128/200\n",
"3/3 - 0s - loss: 3.4302e-04 - 31ms/epoch - 10ms/step\n",
"Epoch 129/200\n",
"3/3 - 0s - loss: 3.2476e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 130/200\n",
"3/3 - 0s - loss: 1.6305e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 131/200\n",
"3/3 - 0s - loss: 1.8642e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 132/200\n",
"3/3 - 0s - loss: 8.2074e-05 - 27ms/epoch - 9ms/step\n",
"Epoch 133/200\n",
"3/3 - 0s - loss: 6.5955e-05 - 33ms/epoch - 11ms/step\n",
"Epoch 134/200\n",
"3/3 - 0s - loss: 6.8692e-05 - 27ms/epoch - 9ms/step\n",
"Epoch 135/200\n",
"3/3 - 0s - loss: 1.1016e-04 - 32ms/epoch - 11ms/step\n",
"Epoch 136/200\n",
"3/3 - 0s - loss: 1.4056e-04 - 31ms/epoch - 10ms/step\n",
"Epoch 137/200\n",
"3/3 - 0s - loss: 1.0764e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 138/200\n",
"3/3 - 0s - loss: 9.8001e-05 - 27ms/epoch - 9ms/step\n",
"Epoch 139/200\n",
"3/3 - 0s - loss: 2.1907e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 140/200\n",
"3/3 - 0s - loss: 2.4921e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 141/200\n",
"3/3 - 0s - loss: 4.0704e-04 - 33ms/epoch - 11ms/step\n",
"Epoch 142/200\n",
"3/3 - 0s - loss: 5.5095e-04 - 41ms/epoch - 14ms/step\n",
"Epoch 143/200\n",
"3/3 - 0s - loss: 8.7078e-04 - 31ms/epoch - 10ms/step\n",
"Epoch 144/200\n",
"3/3 - 0s - loss: 9.0852e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 145/200\n",
"3/3 - 0s - loss: 0.0014 - 29ms/epoch - 10ms/step\n",
"Epoch 146/200\n",
"3/3 - 0s - loss: 0.0021 - 27ms/epoch - 9ms/step\n",
"Epoch 147/200\n",
"3/3 - 0s - loss: 0.0012 - 35ms/epoch - 12ms/step\n",
"Epoch 148/200\n",
"3/3 - 0s - loss: 0.0011 - 28ms/epoch - 9ms/step\n",
"Epoch 149/200\n",
"3/3 - 0s - loss: 0.0014 - 30ms/epoch - 10ms/step\n",
"Epoch 150/200\n",
"3/3 - 0s - loss: 0.0013 - 30ms/epoch - 10ms/step\n",
"Epoch 151/200\n",
"3/3 - 0s - loss: 0.0012 - 30ms/epoch - 10ms/step\n",
"Epoch 152/200\n",
"3/3 - 0s - loss: 0.0011 - 31ms/epoch - 10ms/step\n",
"Epoch 153/200\n",
"3/3 - 0s - loss: 8.8283e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 154/200\n",
"3/3 - 0s - loss: 5.0875e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 155/200\n",
"3/3 - 0s - loss: 4.6452e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 156/200\n",
"3/3 - 0s - loss: 4.4445e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 157/200\n",
"3/3 - 0s - loss: 4.5507e-04 - 31ms/epoch - 10ms/step\n",
"Epoch 158/200\n",
"3/3 - 0s - loss: 5.0221e-04 - 31ms/epoch - 10ms/step\n",
"Epoch 159/200\n",
"3/3 - 0s - loss: 7.1127e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 160/200\n",
"3/3 - 0s - loss: 5.3585e-04 - 34ms/epoch - 11ms/step\n",
"Epoch 161/200\n",
"3/3 - 0s - loss: 3.0625e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 162/200\n",
"3/3 - 0s - loss: 3.6777e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 163/200\n",
"3/3 - 0s - loss: 2.5530e-04 - 31ms/epoch - 10ms/step\n",
"Epoch 164/200\n",
"3/3 - 0s - loss: 1.7076e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 165/200\n",
"3/3 - 0s - loss: 2.1320e-04 - 33ms/epoch - 11ms/step\n",
"Epoch 166/200\n",
"3/3 - 0s - loss: 2.7991e-04 - 33ms/epoch - 11ms/step\n",
"Epoch 167/200\n",
"3/3 - 0s - loss: 3.3069e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 168/200\n",
"3/3 - 0s - loss: 2.9444e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 169/200\n",
"3/3 - 0s - loss: 4.0663e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 170/200\n",
"3/3 - 0s - loss: 3.3016e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 171/200\n",
"3/3 - 0s - loss: 2.0864e-04 - 32ms/epoch - 11ms/step\n",
"Epoch 172/200\n",
"3/3 - 0s - loss: 3.1231e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 173/200\n",
"3/3 - 0s - loss: 2.9278e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 174/200\n",
"3/3 - 0s - loss: 3.0427e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 175/200\n",
"3/3 - 0s - loss: 4.5326e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 176/200\n",
"3/3 - 0s - loss: 3.3629e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 177/200\n",
"3/3 - 0s - loss: 2.4525e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 178/200\n",
"3/3 - 0s - loss: 2.5538e-04 - 33ms/epoch - 11ms/step\n",
"Epoch 179/200\n",
"3/3 - 0s - loss: 3.3784e-04 - 31ms/epoch - 10ms/step\n",
"Epoch 180/200\n",
"3/3 - 0s - loss: 1.9497e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 181/200\n",
"3/3 - 0s - loss: 1.9737e-04 - 33ms/epoch - 11ms/step\n",
"Epoch 182/200\n",
"3/3 - 0s - loss: 2.2758e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 183/200\n",
"3/3 - 0s - loss: 2.9136e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 184/200\n",
"3/3 - 0s - loss: 1.1060e-04 - 31ms/epoch - 10ms/step\n",
"Epoch 185/200\n",
"3/3 - 0s - loss: 5.0481e-05 - 26ms/epoch - 9ms/step\n",
"Epoch 186/200\n",
"3/3 - 0s - loss: 4.0821e-05 - 38ms/epoch - 13ms/step\n",
"Epoch 187/200\n",
"3/3 - 0s - loss: 5.7687e-05 - 30ms/epoch - 10ms/step\n",
"Epoch 188/200\n",
"3/3 - 0s - loss: 5.1819e-05 - 33ms/epoch - 11ms/step\n",
"Epoch 189/200\n",
"3/3 - 0s - loss: 4.4923e-05 - 28ms/epoch - 9ms/step\n",
"Epoch 190/200\n",
"3/3 - 0s - loss: 5.0681e-05 - 29ms/epoch - 10ms/step\n",
"Epoch 191/200\n",
"3/3 - 0s - loss: 3.9062e-05 - 29ms/epoch - 10ms/step\n",
"Epoch 192/200\n",
"3/3 - 0s - loss: 3.1511e-05 - 28ms/epoch - 9ms/step\n",
"Epoch 193/200\n",
"3/3 - 0s - loss: 3.9896e-05 - 27ms/epoch - 9ms/step\n",
"Epoch 194/200\n",
"3/3 - 0s - loss: 3.6009e-05 - 32ms/epoch - 11ms/step\n",
"Epoch 195/200\n",
"3/3 - 0s - loss: 3.8435e-05 - 32ms/epoch - 11ms/step\n",
"Epoch 196/200\n",
"3/3 - 0s - loss: 6.6916e-05 - 32ms/epoch - 11ms/step\n",
"Epoch 197/200\n",
"3/3 - 0s - loss: 1.2784e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 198/200\n",
"3/3 - 0s - loss: 8.5005e-05 - 33ms/epoch - 11ms/step\n",
"Epoch 199/200\n",
"3/3 - 0s - loss: 6.0588e-05 - 30ms/epoch - 10ms/step\n",
"Epoch 200/200\n",
"3/3 - 0s - loss: 6.8180e-05 - 27ms/epoch - 9ms/step\n",
"14/14 [==============================] - 0s 3ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7ec19b76ef50>"
]
},
"metadata": {},
"execution_count": 48
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABRBElEQVR4nO3dV3Rk130m+m+fyoVKyKnRaHTOic0m2SSbbAaJQZQojYItW7avPJbDjD1rfNd98su96z7MXXdm3bXG9ozXeDxOsiRbkqlASsxRzWbn3I3uBtDogEZOFVHx7PtQKDTQqIRChXOqvt9aEtmoQp0DEqz91d7//d9CSilBRERENUup9A0QERFRZTEMEBER1TiGASIiohrHMEBERFTjGAaIiIhqHMMAERFRjWMYICIiqnEMA0RERDXOmO8Tnz3yn0p5H0SrYu69W+lbKIvotq6KXt+7wVL01/R3i6K+XmRttKivl7JuzURJXjeX59uuVeS6VD3+bMcbOZ/DmQGqCpUeJEkbShUEiKodwwBVDQYC/Sn2rECpcFaAqh3DAFWV6LYuhgIiohViGKCqVI2BoNI/UynqBYqp2pYIOCtA5cQwQFWLswRUDJVYImAQoHJjGKCqx0CgTXqpFyCqBQwDVBP0Pkug53svh2paIuCsAFUCwwDVFL2HAiqvSu0iICo3hgGqSQwFK6P14sFqwVkBqhSGAappDASVUcx6gWpaIiCqFIYBqnlanyXQ8r1Vs3IvEXBWgCqJYYBontZDARFRqTAMED2AoYBYOEi1Ju9TC4lqTXRbV0VOQ9RaECl28SDrBZbjEgFVGsMAURapgbmUoUBrgz8R1R6GAaI8FDMUcPDXNhYOUi1iGCBagUJCAQf/0qiWJQIiLWAYICpAtnqCahr8tVwvUA04K0BawTBAVKBqGvQpibsIqFZxayER6U41LBFwVoC0hGGAiAicFaDaxjBARGXBegEi7WIYICIqMy4RkNYwDBBRWlo9trgU9QJcIqBaxzBARFRGnBUgLWIYIKKSY70AkbYxDBCRbuh9iYCzAqRVDANEREQ1jmGAiGoWZwWIkhgGiGiZYu4kYL0AkfYxDBCRLui5BTFnBUjrGAaIqCaxtwDRfQwDRERENY5hgIhKplj1AlwiICothgEiqjlcIiBaimGAiJbQ6pkEesRZAdILhgEi0rRiLxFwVoBoOYYBIiqJWu8vwFkB0hOGASIiohrHMEBENaNcSwScFSC9YRggIs3S85ZCIj1hGCCiBcXaSaDFegHOChBlxjBARFQkDAKkVwwDRERENY5hgIg0qZj1AuVYIuCsAOkZwwAREVGNYxggoqLSWvEgZwWIcmMYICLN4ZZCovJiGCAiADygqFCcFaBqwDBARFWLhxIR5YdhgIiKRmv1AqXGWQGqFgwDRKQpxaoX4KwAUf4YBoiICsBZAaomDANEREQ1jmGAiIqiGPUCelki4KwAVRuGASKiFWAQoGrEMEBEVdVjgIWDRCvHMEBElCfOClC1YhggIk1gC2KiymEYIKKqUcolAs4KUDVjGCCiVau1zoNE1YZhgIiqAgsHiQrHMEBEFaf1egEuEVC1YxggqnHVtK2QiArDMEBEusfCQaLVYRggolVh8SCR/jEMEFFFab1egKgWMAwQ1bBqqBfgEgHR6jEMEBER1TiGASKqGC4REGkDwwARFayaiwe5REC1hGGAqEaxXoCIUvIOA+beu6W8DyIizeCsANWaFc0MMBAQUbGwXoBIO7hMQES6xCUCouJZcRjg7ACR/hWjXqBaiwe5REC1qKCZAQYCIiKi6lHwMgEDAREVSqv1ApwVoFq1qpoBBgKqVopBwZptHdj08AZ0bm6HUKpzSlyvWC9AVFzG1b6Aufcuotu6inEvRJqw6eH1OPjKQ7A5rAtfC3pD+Ownp3Dr4p0K3hkRUWkUZTcBZwioWmx6eD2e+vXHYa1bWmBnd9nw7G8fxtodayp0Z8VTDc2GSoFLBFTLuLWQaJ5iUPDIFx+ClBJCLF0WSP350S8dqMStac5qdhKstl6ASwRExVe0MMDZAdK7zs3tsNZZlwWBFCEEXE1ONHc3lfnOqNQ4K0C1rqgzAwwEpGc2pzX3kwDYnbYS3wkRUXkVfZmAgYD0KugN5fe82WCJ76R09F4vwCUCotIoSc0AAwHp0XDfKEK+OUgp0z6uqipmx7yYHJou851VDy32F+ASAVEJCwgZCEhvpCpx7LWTEEIsCwSqmvzzZz85VYlbIyIqqZLuJmAgIL25dfEO3vu7jxCYXroU4Jvw4e2//gD3boxU6M60o5rOJOCsAFHSqpsO5cKmRKQ3ty7dxa3Ld9HS3Qyb04rgbAiTd6cqfVs1j/UCRKVT8jBApEsSGL9VXYNPpYsHtVYvsOJZASlhCKmQBkC1GkpzU0QVUpYwwNkBItIrkZBoPDGLplNemAIJAECw04KJQ/Xwb66r8N0RFUfZOhCyfoCIClWpJQKRkOj+lxG0fTgN43wQAAD7cATrfjSKxpOzFbkvomIraztiBgIi0oJ8lwgazvrgGJyDALC4bFLMbzZpf3cKptlY0e+PqNzKfjYBAwGRfhW6k0BL9QIrqRVoOO3N/gQBNJzzrfKOiCqvIgcVMRAQlVeliwd1SUpYpmPIGn8kYJnUTtAhKlTFTi1kICCifBSzXmBFOwiEgDTmmAkRgDSV6W1UyuT/iEqgolsLucuAiLTMu6UOnt4AhJr+cSGTzykZVaL+gh+Np7ywTkQhFcC/qQ4Tj3kw15nfwVpE+ajYzAARUTkV0m1w8lEPACDd53EpgHCjCb5SbS9UJbp+MobOX07AOhGFAKCogOtGEBv+4R7cV/yluS7VpIqHAS4XEFW31RQPFmuJoNC2w+E2C25/rQ2qWUACkAqgzr9rhpvMGPxmB2AoTXvm+gt+uK8F0+9kkEDXz8dhDMRLcm2qDl91ncVXXWfzeq4mOhByuYCodFg8uDr+jXW49ifr4Lnih3U0CmlIfi2w3gaI0p3T0JSlh4FAsnyg/oIfE4/Xl+weSL/yDQEpmggDAAMBkdbp9YCiYhxGpFoUTO93F+Fu8r2ghHUyR/8CCdhGI+W5H9KNlYaAFM2EAYCBgIjuK8YSgW5PJRTJmgSRbfOAAGSJlihIfwoNASkVrxl4EGsIiKjmCQH/RjtklrFeSMC3yV6+eyLNWm0QADQ2M5DCGQKi6lDJzoO6nRWYN/GYB86+ECSwrPGRFEDMaYRvi6MSt0YaUYwQkKK5mYEUzhAQUaH0HgQAINRlw9ArLYCSHPwlsDBTEHMaMfgb7bmbIlHVKmYQADQ6M5DCGQKi1dHrToJKnVKoNbO7nQiss6Hhgi+5k8Eo4N9kh3erg0GgRhU7BKRoOgwQVYpiULBuVxc27O+Btc4C76Qf14/3Y2xwvNK3RjlUw6zAYnGXEeNPNlT6NkgDShUEAB2EAc4OULlZ6ix46Q+eQ2NnA1RVhaIoaF7bhM0Pb8D1k/04+i/HIWusR7xetxUSVYNShoAUzdYMLMb6ASqnZ771JOrbPAAARUn+J6IYkn/d/PAG7H5mR6VuTVcKLR5czRJBtc0KEJUjCAA6CQMAAwGVR327B52b2xcG/wcJIbDzqW0ZH6fKYRAonIhLIFFbs11at5JWwsWg+WWCxbhkQKXWubl9YWkgE5vDivp2D6aGpld9PYNRQc+ebvTsXQeLzYzZcS+ufdaHybtTq35toqykhOeiH00nvLBNJGdxgmusmHjMA3+pDl+inMoZABbTVRgAGAiotIQi0h9R94BsYSFfdrcNL/3h8/C0uKGqEooi0NLdhK2PbsKlj67ixM/PrOr19bqTgMpASnT+cgIN5/1Lft3t98JY96NRjB5pwMQhnnlQbpUKAoCOlgkW45IBlcrE7cmcSwDxaByzY7Orvtbz3z4CV6MTAKAoyQK91LV3Pb0dWx/btOpr6E2h9QJcIlgZ140QGs4nj0BediIigLYPp2Ed47kH5VLuJYF0dBkGiEpl9OY4ZkZnoSbUtI+rqorrJ/oRi6zu6NjWnmY0dzVmDB5SlclCRZ0W8Vey8yDl1nDam7XVsRRAw1lf+W6ohlU6BKTobpkghcsFlA9XsxONHQ1IxBMYGRhDLJzjJDgA7/39x/jCv/88LHbzwnKAVCUggMk7Uzj1i3Orvq/OLR1QE2rmQkVFwNXohLPeAf90YNXXo+IxT0XReNoHV18QIiER6rRi6mE3gt22St9a3myjkayHIAkJ2EY4M1BKWgkBKboNAwADAWXmqK/D4V87hI5NbQtfi8fiuHr0Ok794lxycM/AO+7Da//5dWx/Yis2HVgPi90M/1QAvcdu4MbJfiTi6WcNVkJRRF69CkQNnUqnhyUCZ18Qa/91FEK9P6Xu6gvCfT2IsSfqMf6UPpoD5epeKAGoptr53SsnrYWAFF2HAYCBgJazOa145U9egM1hXfJ1o8mIXU9vh91lx0ffO7rk+c1rmwAAY7cmEAlGMOcP48yb53HmzfMlucfx25MwGA1ZnxMORhCYDpbk+ivBhkNJhmAca18bg0g8sM4+nw1bj85grsMC/ybtV+J7tzrQeMabdXbAt0X7P4feaDUIAFUQBogetOvp7bA5rGmn4IUQ2PhQDy5/0ouQN4Rnf/swWrqbk7sIAKgJFX2nB/DZT04jHl1dXUA2d3vvITAbhN1pS3ufUpW4+un1jLULVBhlLoGGi364rgWgRCXm2syY3u/GXKc15/c2nPdDJGTGMg4pgMaTXl2EgamHXWg45wNUuSwQSAEkbApmdjkrc3NVSMshIKUqwgBnB2ixLY9szLojQE2oOPjF/WjraVm2RVAxKNj08Aa4mlz45V+9m3U5YSUUg4JNB9Zj2+Ob4WpyIRaO4V7fMNbt6oYR93cRqKqEEMBw/yjOv3upKNcut3IWD65kicAyHsH67w3DEEoGLAHAOhFFw8UAwo0mhNZYMLvTmVz7F8uHfPvduazbToUE6u6GV/ojVES0wYxb32hD949HoUTlwlSHkEDcbsCtX2+Hass+c0X50UMQAKokDAAMBJQkFAGLPfv+eqEIdGxoy/i4oiho39CKdbvWYvDC7fvfJwTWbO1Az55umG0meCd8uH68H75Jf9brGYwKPvd7z6BjYxukTNYLmK0mbNy/HrFoDP1n72DNlnaYLMnXTNYmDBQtiOhBqU8pFAmJnn8egWFOTbuVzjoVg2U6hoYLAQTWWnH7a21QrQ8MhmkCwvILFe2WSy7YY8e1P1kHzyU/6obCkAoQ6LHDu60O0siNZqullxCQUjVhAGAgoOT0emQuCovNnP15UkJkeXNXVRVbHtm4EAYsdjNe+M6zaF7bBDWhQigCUpXY88xOnH7zfNZP8fs+txvtG9oghFgynigGBSazCe3rW/GD/+u1ohx+JISAxW5GPJZY9WtVBVXC2R+C57IfJn/2fyapYFB3N4yun43j9jfalzweWGeDsz+U8fulSD5HT1SLgukDbkwfcFf6VqqG3kJASlWFASIAuHGiHzue3Jr1fIFcFEVBnce+8OfnfucpNHYmK8VTr5uq9D/w4l4EpgPoPzO4/HUMCrY9vmWhqVC6x52NDnRubcdQ73DO+8rEaDZizzM7sO3QZljnCydv3RnFiTO9GBou7afuSsm1RGC7F0b3v47C5E9AIjnDn88HdyEBV38IlokoIs33Q+XMbidaP5mGElu+zp76vslHOKjWMr0GAaAKmw6xOyFd/PAqwsFw2uK7fD99SykR8s0BAJq6GtG+sS1rg6C9z+1K+5iryZlzliKRUNHS3ZzXfaVjNBvxhX//Oex5budCEACAtWta8PVXn8aWjdqeLSvFEoF5Kor13xuGMZCcDRBY2Qy+FICzf+lODkNMwrepDpBLSwdSzXuGn29EcJ0dVHu00EFwtaouDAAMBLVuzj+Hn//52xgdHF/y9XgskfbTezpCCAycTT537fbOrFX9QhHwtLrhqF9eRZ7Pur8AINXCdw3sfXYnGjrqlxdDzv/5888+DLPZVPDr61HzZ7PJyv9CV14EoMTvf7NtOIxN/+MOPFcDC8Ei9WjUbUTftzsxddCzupsmXdJ7CEjhMgEVncGooGNzOyx2C/xTAYw9MCiXQ2A6gF/+93fhbnElOxAmEhjpG0U0HMOarR2w1lly1gykgoNiNOQ1o5Cub4Bv0o/AbBB1bnvG6ykGBfeuj+T5ky0lFIGthzZnPDhJCAGjwYDtm7tx/nJ/QddYiXLtJMi6RCAlPFcCC/v/CyFUYK41WYgqEhLdPxxdtjyQ+rdpno3DcTuMcHvu7YlUPaolBKRUbRhgMWFlbH9iCx56Yc+Sin7fpB9Hf3Qcw32jZb8f77gP3vGlPdY/+8kpPPOtJzN+j5QSV4/e3+M/NTSds0FQNBxFYGZ522ApJS5+cAWHvnIw7fepCRWTQ1MYvz2Z60dJy1pnhbUu++4JVZVobHAV9Pq6JJd+ql/xtwsgXmeAf2Nyyt91PQhTMHvxYePJ2WS9QD47DkjXqi0EpFTlMkEKlwvKa+dT23DoKweXbe1zNNThhe88i9aelgrd2VI3z91C35mbaR9TVRWBmeCS3QF3rgwhHo1nnB1QVRXXPuvL2Kb46tHruHI0+Uk2FTDU+eUD36Qf7/7txwX/LPFYfo2R4vHCdheUuvtgSbYUKgIxhyHrSdRy0f+WfF0BpEHgzldagfmiT/tQGGqWd0oBwOxPwJhjt8JKKBEVjoEQnH1BGAOla35FK1OtQQCo4pmBFM4QlIfJYsKBF/emfUxRFKiqioOv7Mfrf/5WeW8sg4+/9ymm7k5j7/O7Fj5Zq6rErUt38dlrpxAO3j+k5cDL+2AwGZZN86fCgW/Sj7NvX8x6vc9eO4X+M4PY+ugmeFpciMxFcfPcLQxeuL2qsw5i4RhGBsbQ2tOccanAYFDQd3Oo4Gvo0dRDbrR+Mp2xSZAA0PftNXD1BdFw1gdTMAHVIDC7ow6Tj9Uj0mRe8uS8IlERPlqJuETbh1NoOOtbmN2QAvBuq8Pw55uRsLMRUCVUcwhIqfowQOWxblcXDKbMb1SKoqB1XTOcjQ74p7RxCt/lT3px5eg1NK9tgsFowOyYF3P+ObR0N2HrY5ugKAKzEz7seHJL2vV+IZKHDcWjibxaF0/cnsREgcsB2Zx75yJe/IPn0vZOUFUVw6NTGB6dKvp1KyWfroNTD7vh7g3AOhFdss6f2l44/rgH4XYLwu0WjB9ugIhLSAPSTvMH1tnQdNKb8VoSQKTRhLhdgaM/iLqhMACBwDobgt3W/JcOpMTa10bh7A8trU2QgLs3COt4FAO/swaqZXWpQ8RUuK8G4Lw5B5GQmOuwYHqPE4k6Dgfp1EIQAKo4DHA2oLxsLhukKnOesmd32jQTBoBktf/4reRUtc1pwxf/wwto6W6GmlAhkfxUna14UAiBpjUNcDZU7qjh4b5RfPKDY3ji648mZ2Hm79dgUDAyNo2f/fLTitxXJakWBTe/1YG2D6dRf9G/8Ck75jZi/FA9ZvYt7buf7RQ//wY7Ih4jzLPxtDMEAsDsTgc2/9VdWGbjkPNjdcunM5hrNuP219sQ8+TezeEYnIOrL31TIyEBy2QM9ed9mHrEk/O1MrFMRNHz/WGYAonklkgJuG4E0fLJNO6+2grfVkfBr036VjVhgIN/ZYW8oYXDfrIJzu/dLzYhBLq2d2LLoxvhbHAg5JtD36mbGLxwO6/DfhSDgpf+8Dm4m10Lf14Js90MTBd060XRd/om7lwdwqYDG1Df5kbAJtE3MIR7I8WficiknGcS5EO1GjD8YjNGn2mEeSYGaRSINJpWXORnmYwCcul2wtTfCwBT+51oOjkLQzj56OJdDNbJKNZ/dxh93+nK+Ym+/oIPUiDrdsiGc4WHASWqoud7wzCG5nsvpK4jASSAta+Nof/bJoTbshek1pJamRUAdB4GGAC049alu3g8GofJkv4TkKqqGL81gUCWT8+WOgvUuIpYJLaiaxuMCp7/9tNYszXZD0AxKPC0urFmSwd2Pb0Nv/yr9xCdyz5Q9ezpRn2bJ+1juToWqqpEcDZzm9pyiYSiuPxJLwDAu0H7b+ilPo8gRbUoBQ9wJl8c6787DEPk/uFGi801mxCvM8AQztyV0OSLw3PZj+mHsncnNHnjWYOAmL+fQnku+2EMJjLObkgBNJ2YxdCXWgu+BumXrsIAB3/tikfjOPn6WTz+1UeWrV2rqgqpSpz4+fKULRSBnYe3YceTWxea9ozdmsCF9y/jzpX8it4e/sJ+dGzuAHD/E32qmK6hvR6Hf+0xvPd32Sv21+/thqqqGYvwMlETKu5cHUI4oI/T6mhlmk7MwhBR0w/0AGwTMRhCvpzNjTyXAznDQNxhhBSRjK8lkdzyWChnhiWIFKEmlwyoNmk+DDAA6EfvsRtIxBM48NI+2F33D2yZHfPi0x+dwMSdpVPWQhF4/ttPo2tb55KvN69txOd+9whO/Ow0Ln3cm/WaljoLth3anLX3f/fOrpxr+ha7OWcQWBZyEiqi4RhOvl76qUR3swvORgcioQgm7k5lPUqXisdzyZ9zoDcFsy9DCWBhZiGbmV1OuK9nGYwFMLOn8H4RIiFz7ooQPN9qQS0tEQAaDAMc/PXtxskB9J2+ibb1LckOhNMBTA2lX0zffHAjurZ1LpuGTw3KB7/4EG5fGcp4RHDLumZ8/veeydkQSAiB9o2t8J/MHAZmx31o6W7Oev5AIpGA0WRc+POdq0M4+frZnEcYr0ZjZwMOfeUgWnvun13gnwrg1C/O4ub521m+s/rZhsOou5OckQl02xBuL/7SSD6D+OL6gXSkAMJNuQsI/ZvsCHZZYR8KLwsgUgAxpwHTDxUeBubaLHDcmss88yCAubbs52jUiloLAkCFwwAH/uokVYmR/rGcz9vxxJas76JSldj66CacfGP5f5iOBgde/P1ns25nXHidHMcVA8D1433Y+uimzE8QwGc/OY2R/lFY7GYEpoOYK/HSQENHPV75489DeeBseUdDHZ75rcMwmo/hxsmBZd+nh3qB1TB5Y1j72hjsw5GFQ4KEBIKdFtz5ShviruK9rUVdmXcRLJbtcSGB6X15DOKKwK1vtKPjzYnkGQiLBu1glxVDX2xBwlb4MsH0fheaj89mvc+ph3nqYi0GAaBMYYCDPqXjaXVn3YGgGJSMRX07ntwKg9GQ1xq/EAJjt7IXq03cmcLlT3qx8/C2NDUPEqMDY+g7NZDXzoRieeRLD0ExKMt+xlR/g0dffRgD524hEauduV1zNIb1Px5eKKRbPGDaRyJY/9176P+9Lqjm4jRXnd7vQtuHmZsXZZP6lpk9TgTX2bI+N0W1KBh6tRWjzzQmP8WrEqFO65KjlAsV85hw74VmrHlzYsmuhdTfT+9ywLu9drcW1moISClqGOCgTyuRiCeybuFTVRWxDM18Nuztzmv7n5pQMXpzHLNjmZvGpBz/6Wl4J3zYc2QHHA3JN8VIKILeYzdw7p2LZQ0CdR47Oje1Z3xcCAGz1YR1u7owcPZW2e6r0nbcGEpW3ad5TKjJQ4M8F/2YPlCcT7hTD7nhuRKAdTy64hMQ404DJh/xYPLgys8siLuMmN3tzP3EFZrZ70K00YSm47Nw3gwBKhBuMWPyoBuzu5w1e7ZCrQcBoMAwwEGfimHwwm1sfGh9xkFdURTcvnwn7WNGc+5fXSklAjNBfPS9o8seMxiVtG2Aez+9gd5jN+BqdEJRBHxTgbKGgJQ6z/LjkB+kJtS8nleoUp9LUIjt/bl3mNRfKl4YkGYFN3+zA20fTKHhfO5iQgmg/3/rhGpVEPWYFs430JJgtw3BbhuQaqZVowEghUEgKe8wwABAxXbpo15s2N8DVZXLdgOoCRX+mQAGL6QPAzNjXjSvbcy4TCClxPjtCbz11x8gFk72Lajz2LH7yA5sPrgBJosJ0bkorp/ox8UPr2DOv2j9X6KkRYH5yGerolDEkjMUKmmlDYcK7TFgC8eyr88DMISKu2yiWg0YfqkF03td2PR39zI+T4pkt8Jwh06OMq7xEAAwCCxW1acWkrbNjM7inb/5cOFEQDWhIjH/Kdw36cebf/Vexk/lvZ9ez1ovIITAsX89tRAE3M0ufPlPX8a2Q5sXGiOZbWbseHIrXv3Tl1HnsRf5p1sd36QfE3enFk43TEeNq7h1MX1YqlazLvtC0WA6UgDRhtyV+4UId1gxvceZtnxAiuSJh2OHG0pybSqur7rOMgg8gGGAKurejRF8///8MY7+6DhunBzAtc9u4K3/+T7+9f99HYGZzHuuB87ewq1LdyClXHJ2gJwfPM+/dwlT9+5vaXzqm4dgtpmXLUkoBgU2hxVPfv3RIv9kq3dqfheFzBAIzr13KWdnxWpzceva7F368q3cL9C9F5sxdcCVHPyBhWAScxhw69c7SrK9kYqLISA9zfUZoNoTj8Zx/Xg/rh/vz/t7pJR4/x8+SXYvPLwVjvm185mxWVz84Ar6zwwuPLehox4t3c2ZXgqKQUHnlg44GhxZ2yWX23DfKN79Xx/iia8/ijq3fWGXQywax7l3LuLiB1eWfU+1byvsW9cG/3obHIPL98unpul9m0tXRwGDwMjnmzHxeD2cfSEoURWRJjMCPTZN1gfQUgwCmTEMkG5JVeLSR1dx6eOrsDlskKqadg29saM+52sJIdDQ7tFUGACAu7338M//92vo3NwOZ4MDkVAUd3uHEIsU3qNez57ruIHbX2tHyyfTaDzjhSGaTAQJi8DUQ26MH24oy6Acdxgxk+8MhJSwD4VhDKmIuowIt5m5Xl8BDALZMQyQ/klgzp/5NMREPL+CsnyfV25SlRi6Nlzp29AMaRQYe6YR40/WwzqeXCYJt5ghTdpb9XT1BtD+3hTMiw4YCjeZMPxCc7Kin8qi2oPAj337sz7+Z3m8BsMAVb17N0aQiCeyti2ORWIYG5yAwaigqSu5S2F6ZAaRUG2tyeuJNCmY69Ru5b7nsh9dPxtfVnBomYyh5/vDGPxmBwNBiek9BOQa5IuJYYCqXiQURe+xG9jxxNa0HQ+llLj0cS92H9mOnYe3wWxLdntLxBPoPzuIEz89jWh4ZccqU20TCYn2dybTdtsWSG7xb393Ev3/trAt2yKmwj4UhpKQCLdYECtiC+ZqofUgUM6BPh/8DaKacPL1s7A5bdiwb11yu+L86TKKQcH1E/1wNjiw8aGeJW2IDUYDNj20Hk1rGvH6n7+FeIZuiFqhl+LBQnsM6ImjPwTjXOZmVUICtrEoLOMRRFpW8O9NlWg5OpM8Wnm+XkIiecjRvRebEXfyLV1LtDbgZ8PfHKoJakLFh9/9FS59dBWbDqyHzWlF0DuHvpP9MFlNeOWPX0j7fYpBQUObB9se25TzOOVK0ksQWK13R7fi+bZrlb6NnEz+eNaTDO8/L4FIS/6v2/nmBOrP+5e8rgDg7A9hw9/fQ//vrkHCXvhhRtVETwOxFjAMUE2ZvDuFybtTS7725Dceg5pQM591IICthzZrOgyQtsQdhpxBAADidfkP3NbRCBrOp++MKWQygDSdmMXYkca8X5MohWGAap6z0ZH10CMhREnPAFitUswKrORcgpW2ItYiEVXhuRKA+1oASlRFuMWC6X0uhNsK+2fr32BHwiJgiKTvkCQBROuNCLfmfxph/QU/pJI8kCkdIYGGcz6GASoIwwDVBLPNjC0HN6BnTzeMFhOmh2fQe+w6xgYnEPaHs88MIHl6oRbVyvLAYsVeKjDPxNDzT/dg8iW3lgoA9nsRNJ71YeyJeow/tfIWw9KkYPRIIzrfmlz+2PxfTd44mk56MfmIJ6/XNPnjQI4zs4xzKqBKNkCiFWMYoKrnaXXj5T/6HKx1FkAkP+l7WlzY+FAPLn10Ff1nB7F+37qM36+qKvpODpTvhvNUi0Gg6FSJdT8YgcmfWLoOPz9itx6dQaTJBO+OlR8nPP2QG1IIdLw7CSV+f4YgdR2hAu3vTSFhVvJqYBS3G5IN5LMEgoRZMAhQQbTXpYOoiIQi8MJ3noXFboZQxMJugdQswK6nt8NiN2NscDztoUhqQkUkGMGVo9oqWmMQKA7nQAiWmVjG8w6kAJqPzd4/7neFvNvrsn6vBND6yXTy03wOs7scGZcIgOS9zuwp3bkMVN0YBqiqde/sgqO+LuMSgFQldh/Zgbf+5we4fWVo4eCj1OFA0yOzeP0v3l56xDFVDcfNENQs74JCArbxKAzhHPPzGTgHQlCyNLYUAEyBBOz3cv9+hdZY4duU/tRGKYCEVcHko56C7pOIywRU1To2tiGRUGHIEAaEIlDf5oGiCLz/9x/D2eBA55Z2KAYFE3emMHFn+ZpvpXFWoHh1A9k+aS+Rxyf3dAwRNa8thoZIHjciBO58pRXtb0+i4YJ/yWxGuNWMu19qZfMhKhh/c6i65bt8Or984J8O4NpnfaW7n1ViECiuUKcFjVka1UkAMZeh4L37kQZzXr+CkQZTXq8njQqGX27B+FMNyZMb4xJzbRYenUyrxmUCqmpjgxMZZwWA5DKBd8KHSJrTDrWGQaD4vNsciFuVtFPvKVMHPQWfMhjstiLqNmZ8fSmAYJcV0Yb8txgCyVMTZ3c5MbPPxSBARcEwQFVt8MJthPxzUNVMm7OByzpoJsQgsNy7o1tX/RrSpOD219ogDWLJgJ36e9+WOkw+7C78AkJg6JUWSIFlgUAKQDUJ3HuhqfDXJyoSLhNQVVMTKt75mw/x0h8+B6PZCEVRFr6uGBT0nRpA72c3KnyX2rKShkPVILTWhr7vdKHxlBfuqwEoMRXhJjOmD7gxu8Ox6q16wW4bbv5WJ1o/noZzMHnUthSAb5MdgW4b3NeCUAdC8G2uQ7RxZTMEVLtWEob/bEfu5wgp89sz8+yR/5T3hYm0xu62YduhLVi/txsmsxHTI7O4+ul13LkyVOlby6ncswIrDQMr7UBYzIOK9HBOwWLGQByGORWWsTDW/HIShphcaEIkAHi31uHuKy2QZk7a1opizHDl8tGz/yXnczgzQEVVrIHLPVDcNfyQdw5n3jyPM2+eL+rrrhSn+4tLLwcXpcQdRjhv+ND55v1AtDh6ua4FsTY+htvfaC//zdGqlWNgLxWGAY2r1cGjVn9uvamGcwnKyTQbQ+dbySCQbv5FAHD1h2AbDmOuw1rWe6Ol9DywF4Jh4AEchIioVJpOzgIy+45XKQD31QDDQInU2iCfL82FAQ7GRLQSeloqcF0L5u47IFFwx8NaxQF+9QoKAxywiYhWTknk18kwWp9fE6JawIG+PPIOAwwARNWvHNsKbw01F3VHAaCf2YG5NgscN+dyzg7M7F75KYl6w0FeWzS3TEBElVFIELDcMRdURHhrqBlAcbcZFjK4lDtATD3khvPmXPbnPOxG3Kndt2YO4tVJu79xRFQ2q5kRKDQQAPdDAVDcYJCvQge2QkOEf5MdU3udaDzvT3uAkXdLHUY+V5qOhBzEKRuGAaIap5WOg6WYLSiVVQ2s+7dih3MI+y/fRPNMAAAw3uDE8b2b0N/TDowW6SaJVoBhgKhGlHLQX83swIMqPVtQckLgyuYuXNncBWM8AQkgYSzsVESqPot//8uJYYCoCmnl0/5q6Wm2oBBxhgDdq9TgXWwMA0Q6pqVBv5izAw+q+tkCKotqGbhLgWGASAe0NOhXWrXPFlASB+7yYhggyhMH5NxKOTvwIM4WaAMH7erAMECaxcFXn8oZCFIKHZBqKURw0KZsGAZo1Thok15xgCRKYhioMRy4qRwqMTtARIVjGNAgDthERAQkg3U5MAysEgduovQ4O0DVrFyDdLnUbBjgIE5EVF2qbYAuJ92GAQ7mRNrH2YHaxsFZPyoaBjigExGVDwdnyqQoYYCDOhFlotXZAQ6MRPflHQY44BMlaXFgK4ZSDo4ceIm0Tbc1A0S5VOugXSqRtVEO2kQ1imGAdIODOxFR/py3Zd7PZRigiuHgrj2cHSAqrpUMyJXEMEBFxQFe/xgIqJroZTCuNIYByokDPBGtFAdhfWEYqEEc3CkXzg7oFwdhKgTDQBXg4E5Ufhx0qZowDGgQB3fSAr3PDnCwJsofw0AZcHCvTuvWTJT1ereGmst6PUA/gYADP9HqMAysAgf56lHugb0Qi++xEsFAa2ohANhtFmzo6YTFYsLsrB83b49AVav/56byYxh4AAf46qCHwX01Uj9fOUKBlmYHaiEAAIAQAocP7cb+3ZsghICUEoqiIBQK460PTmHw9kilb5GqTM2EAQ7y1aPaB/qVKNdsQaUDQa2EgJQjT+zF3l0bIUTyTJjUX602C1596XH88Kcf4d7IZCVvkcrMPRAp6evrPgxwkK8uHOgLV87ZgnKotQCQ4nTYlwSBxRQhoEqJxx/ZiR/+9KPy35wGlXqQrBWaDgMc6KsPB/vSK9VsQblmB2o1BKRs2dgFKYE0WQAAoCgKujpbUGe3IhgK5/WaHDApl4qEAQ7y1YuDvbYUOxiUKhBUawAoZBB2b1EgVRVQDFmf1zwhYBzlIE/FUdQwwEG+NnDA1yetLSNoMQBo4RO0fzoIxaBkfY6aUBH0hsp0R1QL8g4DHOhrBwf76rba2YLVzg6UKwRoYWAvxM3zt/DYqwdgMBnS1g2oCRWDF+8gOsf3ZCoeTdcMUOlwwCegvLMFpQwBeh3404mFY/jsp6fx5NcfhZRySSBQEyqi4RhO/+JcBe+QqhHDQBXjgF96z7ddK8t13h3dWpbr6E01hYDFrh/vQ3QuigMv7YW72QUAkKrE3Wv3cOJnZ+CfDlT4DqnaMAxUAQ765VGugb8aabE+QOsGL9zG4IXbaGj3wGQ1wT8VQMg3V+nboirFMKATHPDLj4M/acH0yGylb4FqAMOAhnDAr5zn267BMh5B42kfnP1BCBUIrrVi6oAbobW2Zc+3TERhHwoDChBYZ0PMbSr5/ZVqqUAruwsqyWAyYP2ebrSubwEkMNw/ilsX70BNqJW+NaKyYBgoIw722pDuE7/7agBdPx0DAIj5GW339SA8vUGMPt2AicfrAQBGXxxdPxuD4879Zi8SgG9rHYZeboZqzb43nIqnWPUCzd1N+PzvHoHVYYWaUCEBbH1sE4LeEN7+6/f5yZxqAsNAkXHA155c0/0mbwxdPxsDJLB4I5eY/1DY9tE0Qp1WzLWaseEf78Hkiy/5fgHAdT2IHl8cA7/VCRgytI4jzbG77Xjx95+D0ZwMcYv399scVrz0h8/jR//PzxAJcRsfVTeGgQJwwNee1azvN5z1LQsCi0kBNJ6cxdwaK0y++MLMwWJCAvbhCFw3gvBtcyx/QkJCqBLSlL2ZDJXX9sc3w2g2QFGW/3tRDAosdgs2P7IRlz68WoG7IyofhoEMOOBrR6kL+eruhNMO8ClCAnV3w7BMxZJrAhlIAdRf9C8JA46BEJqPz6DuVhgCQLjRhKmH3Zje5wKUlc0glLJuoFb17OlOGwQWCKBn99qShQGzzQyLzYy5QBjxaDz3NxCVSE2HAQ742lDpqn2pJMf4rEOzAIyhRNbnCAkYA/ff0BtPedHxziSkuP/alqkYOt6aRN3tOdz9cmvm02goq2LVCxjN2d8ChRAwmotfHNq0pgH7X9iLrm0dEEIgEU9g4NwtnH3rAgIzwaJfjyiXqg4DHOy1odKDfS6BHjvq7oYzfuqXChDoscE6EYMhHM26nBDzJAcO83QM7e8kz5tfPOuQ+l5PbxD+TQHM7nIW54coUCE7CcpxcmG5TA/PwOawZjwLQE2omLo3XdRrtm9sxQvfeRZCiIXuggajARv396BrWyd+/l/fhH+KTYWovHQdBjjYa4fWB/xsZvY60fLpDBCX6Qd6FZg86IF9OLIwwKcjJDC9Jzm4N5zzJUf+TAFDJGcOVhoGuFRQXFePXkfXts6MjysGBb3HbhTtekIIPPXNxyEUsWx5QjEosNjMeOzLD+Odv/mwaNckyoemwwAHe+3Q82CfS9xhxK2vt2HdD0eThX7zA7icH8zvvdSMuU4rwi1m1J/3wToRXVZjIAXg32BHYIMdAGAdi+SsQ7COV2crXT2523sPvZ/dwLbHNkOqEmK+jkNVVSiKggsfXMb4reK9D3VuaYfDU5fxccWgoGtbJ+xuO0I8lZAKYO69W9D3VTQMcLDXlmod8JW5BDy9AZh8ccTrjPBuq0PcsfRXP9hjx/U/XIuGcz44B0IQCYngWhumH3Ih0pScFpcmBTe/1YGOtyfhuRpY2HqoGgWm97sweqRxoQZANYlkrUC2gkNuQSxIsc8j+PRHJzB5dwq7ntoOT6sbADAzMouLH17FwNnBol7L3eyCqkooWYpHhRBwNzsZBiijQgf8bEoaBjjYa1O1DvrpNJ6YRduHUxCJ5Nq/kED7u5OYOOTB2FMNSwr4jKFEsqPgehvmWi3wb65bNmCrVgOGvtSKkWcbYRuNAIpAqNMK1bJ0yte/qQ6uG5nfzKUCeLdm/oRI5XX9eD+uH++HyWoCJBCLxEpynVgkllfNaCxcmuuTfpRiwM9m1WGAA7521dKgn079OR863pta+LNY1Fm25dNZqEYFE0/UQ5lLYO1PxuAcnIMUySl/RQXidgV3vtKGYPf9dsS2e2E0HZ+F60YQigqEm+a3Cu5dulVwdocDrZ9MwxhILF9SSD1npxPW0QjidQbEnfn/p8i6gdIp9SB85+q95HJEhlkhKSWCsyFMFrlokbSr3IN+Jnm/A3HQ165aH/TTUiVaP57OumWw5dgMph52Yd0PR2G/l2wvLOT9qX3DnIp1PxhB/7c7EWmxpG1ZbJmMoePNSTgGQrjzb9oWAoE0Kbj5Gx3o+f4IzL54sv4AACQgDUC42Yye748s3Fug24rRI42Y67QW/R9FJjyToPzCgTCuHL2OnYe3LuwkWEwIgTNvXcjaz4L0TSuD/4M0XUBIS5Vl0FclzDPJT0fRetOKG+NohX0oDFMwkfU5Skyi6fgs6obCaR8XEoCUaP5sFiPPNWHNz9O0LJ7/q+tGCA1nfZg+4F54LNpoxo0/WgvX9SAcAyEoCYmYw4DGM17YxpZuUay7E8b6f7yHW9/sWDITQUsVu16gEk6+fgZGkwFbH9sEqUpIKaEoCqSUOPWLc+g7NVDpW6Qi0urg/yCGAQ2qyCd9NTkwNp30LgyisToDJg+6MfmoR3ehwBDO77S5utvhZC1BhqcLFXD3BhBuNkGo2RsTNZ7yLgkDQLJI0LvdAe/2ZFfCDX87BJFYXliY+nPnG+O48Udr2YyoiklV4tMfn8DFD69g66Ob0NTVgOhcDH2nb+LOlaFK3x6tkl4G/wcxDFSYJqb4pUTXT8fg7g0uGexMwQTaPpyGbTSiu2550YY8u8Zl6QWQoiQA20j2g2oEAOt0DCIhM+4SsExEYR/J/MlWSMAyG0fdnXDO2QHWDeibYlCw55md2PzIhuRygUy2Rp4d9+LDfzqKqSHWDOiFXgf/B/HUlDJ7vu3akv9pgbMvBM8DQSBFINktz9mnr21OkSYzgp2W+2v1D5ACiHiMCK3JvkYvAcQcBkhT7iCUKj7MxDydX3FaapkmGwaBwpltZtjdtoWeApXw9Dcfx5ZHNkJRlGQnwvl7cTU68YV/9zm4m10Vuzdamei2rkrfQlFwZqAMtDLoZ9Jw1pt1T7wUyef4N2t/K5yIq7Dfi0AkJMYON6D7x6NQ4nLJz5YatO99oQVRtxHNx2azvCAwvd+FSKMZ9Zcyt4iVAvCvt2ddTlGt+WXvRJ7PW41Ciwf13Ip4zdYO7H1uF9rWtwAAwqEIrh27gfPvXS7rIUGNaxqwft+6tI+l2iLveXYHPvnnz8p2T7Q60W1dup8hYBgoAa0P/g+yTsZydsuzTGl837OUaD42i6bjszDO1wtIkazShwAcg+GFmY9gtxWjT9+v3B97ugFtHy3feSAFEG4xY/IRD1SDQMRjhNm7/AhjOf9/k495st5isMuKmN2Q9cCjhEkkQwUV1eZHNuLwNx6Dqt4vDrHaLdj9zA50bunAL/7bO2ULBBv390BNqBnPQ1AMCjbs78GvfngcUuW2Ar3QeyBgGFgFvQ36mSSsCqQ3c3GcBJY11dGa9rcn0XjGt7TSXwKO22HEnEbc+M6a+d4By/f0Tzxej5jLiJajM7DMT+UnTAIze10Ye6oBqjn5s9/6Zgd6vjcMsze+0Ko4dcF7LzXn3gWgCIw93YA1v8y8TXfiiXpIs7b/WeuN1WHFE199ZKFqfzFFUdDYWY/dR7bj7NsXy3M/dZaczzEYDTCZjYiy+ZCu6DkQMAzkqVoG/nRmdzrRNjaV+Qki+RytsoxH0HTGl/YxIQGTP476ywGMHWnM+Bqzu5yY3emAaTYOJS4R9RghTUsHjmi9CTf+YC1c1wNw9YUgYhLhVjOm97oQd+X3n9LMPheUqIq2D6chEjJZtTMfKsYfr8dEjtkFgPUCK7Xp4fXAohMCH6QoCnY/swP3ro9grIjnEGQSmM1dfxMNxxCLlG/pIh1LnQWbD25Ax8Y2CEVg9OY4rh/vx5x/rqL3pXV6DQQMA2lU88CfzvQeJ5pOzMIYTNMtTwDxOsPCaXxaVH/Rn317oAQazvow9nRD9h0RQiBWn30XgjQKeHc44d1R+D+PqUc8mNnjhPtqECZ/HPE6A7zbHEjUGQp+TcrM0+IGZLb2U4DRZMQrf/IC+k7fxCc/OAYpSzc933dqAPue35XxcTWh4vqJ/pLeQy5tG1rw+d99BkazERDJZkgdm9qw77ldeP8fP+EWyBz0GAhqOgzU2qCfiWoz4Oa3OtD9w1FYp2KQ8x+IhQpEGky4/fU2qDbtDlQmXzzn9kBjWE1u+zNqY3ukajVgZj8rxsthJbUAGx/qgX/KX9IlA9+kHxfev4w9z+5c9piaUBHyzeHi+5dLdv1cbE4bPv9vn4XBpCzZcaEoCqSQePa3D+O1//wGvBPpZ+MoSW+BoCbCAAf93KINZvT9fhfqbs2h7k6yI19wrRXBdTbN9xdI2A05+wWoJsFTAufVWhviWxfvYMeT+S2tCCGw8/A2XPjgChKx7B0sV+PSR1fRtb0T9W2eheULKSXmAmG8+dfvIRyKYO2ONfC0uBCLxHH78l2EfOWZnt/62CYYTMqy+gog+c9HCIHtT2zBZz85VZb70TM9BYKqCQMc8ItACAR77Aj26KuafXanE40ZagaA5FLHzG6n5kMNlcbIwBjGBsfRvLYpYwX/YmabGc1djRi9OQ4AsNjNaOhogFRVTNydWnVIMJqNeHm+l8DiOgYhBGwOKz737SMwWUywu2xQEyqEEHjsKwdx/fgNfPaT01AT+XXXLNTaHWvSBoEUxaBg7c41DAN50ksg0FUY4IBP6YQ6LfButieL+tLUPKhmBROPeipyb8ZAHEpUIuY0LCtILASLB9PztLrRvLYJUlUx3D+KkHfpp+h3/teHeP7bT6NtfSuklBmLCVMUgwKz1YRHXz2ADft7YDAml8mi4Riu/Ooazr59oeBtf5sOrIen1Z32HhSDAnezC+r8a6fCiwCw9dHNMBgNJe8/oOTRjMmQJSzQcnoIBJoLAxzwacWEwN0vt6LjrUnUX/RDyPu7/sJNZtx9tQUxT57tiYvEMRBCyyfTqBtOth9WjQIzu50Ye6ohuaxRQ5y3S1cIV+ex4+nfeALtG1oXvqaqEjfPDeLoj04s1AtEQlG88ZfvYNPBDXjq1w5lfU01ocI74cPL/+5zqG/zLJlNMFtN2PvcTrianPjwu78q6J43HdyAbMdpJrdApjnRUBHYfHAjzr93Gb5Jf0HXzsfYrYllP/diakIty66LaqP1QFCxMMBBn4pJGhXc+0ILxp5qgONmCEpcYq7NgrkOS9mXBzyX/Fjz8/Elb/ZKXKLhnA+OwRAGfmdNzQWCUrDYzXjlj1+A3bW0v4OiCKzftw52tx1v/tV7S6ry+04OYMfjW9DQUZ92sFMTKgbODaJndzca2uvTtiwWQmDDvnXoPXYdowPjK75vuyt7K+RssxZqQsWG/etw7p1LK75uvnqP3cC2Q5szPq4YFFw5yvfvQmg5EJR0rufBPvxa68lP1SfuNGJ2jwvTD7mTHQbLHASUcAKd802F0p1MaJ6No+VXPISmGLY/sQV2ty3toK4oCjo2tmHzIxuWPfbBd3+FSCiypBuhlBJSlfBO+HD8p6ex9bFNWa+tJlRsObixoPsOzgSXXHslpJSw2HM3LVqNmZHZhXqAxfUJqb8/+/aFgkIQJWn1LINVzwxwYCe6z3MlABGXGXe0CwnUX/Bj9NlGSOPKsngx6gVWs5NAa+cSbD64MWuhm5QSh75yEPdujCIwff9cCd+kH6/9lzew48mt2PzwBljqLAh6Q7h27AZ6j91ALBJHncee9dO7YlDgbCys18T1E/1oWVfYvwdFUeCfynxGRrFcPXod0yMz2Hl4Gzo3twNCYOzmGC5/cg1D14ZLfv1qp8UZgrzDAAd9otws07GsDZAAwBCTMAYSiHlYhLUaVkf2EyeFEFAMCg68tBcf/dPRJY/N+cM4/cvzOP3L82m/NxKKwGTJXGeiJtSCO/H1nxnE1kOb0bSmYVmYSS1pZFoqUFUV/WduFnTdlRodGOcMQAlpLRDw3YioiBJmJUufu/tUnj+waiFvKGeXPiEE1u/phtm6sgLSGycHsk7lKwYF/WcGV/SaKWpCxZt/9R76zwwumYZPxBMYOHcLc/7wsu2DqZ/zxM/PIBKKFnRd0p7oti7NLBtobjcBUVFJibo7YThuJrcdhjos8G2uy3rU8Gr4ttah9ehM5tsRydMLWUC4eteO9+HgF/bnfJ5iUGB32VZ06M/Vo9ex5dFNsDmsy2oS1ESy38Cdq4W35I1FYvjkB8dw8vWzaFnbBAmJ8duTiAQjcNTX4ZEvPoTuXWsXdhX4pvw4+9YFDJy9VfA1ibJhGKCqZfLF0f0vI7CNRyGV5G6uZhWIOQy4/bU2zHVkn2YuRLg1S8+D+f8bf7J+xa/L/gLLXTvWh91Pb4fVYc3ZN2Cln6bDwQje+Mu3ceQ3n0RLd9OSGYjbl+/ik3/5rCjHC4cD4WWhIjATxPv/8AlsDiucTU7EIjHMjMyu+lqkXVpYMmAYIF0TcQnbSBgiIRFuNiNRl/yVFjEVPf90D+bZ5D5zod7f6WcMJtDzvWH0facLMXdy+tjkjcExOAehSoQ6rAi3WWCejsI5MP+1dgtCXfntTrj7pVZ0/WwM7hshSJGcDRBqsiXyvS+0ILiuMh0eq60NcSwSw5v/4318+X9/OeNzVFXFyMAY5gLhFb++fyqAN/7ybdS3e9CytgmqKjF8YwT+6dIX8AHAXCBc0H2TPqWWCyoVChgGSJ+kRPOxWTQdn4UxnFxflQLwbnNg+HNNcPYHYZlJf0CNkIASk2g87cX4Ew3o/MU43L3BheMNBIC4VcAYlslP8yL5PeEmE+58pQ2R5uxV9dKs4M7X2mEZj8B9LQglqiLSaIZ3h4O1AkU2PTyDq59ex/bHtyybHVDVZPeps29eWNFrelpc2P3MDmzY1wODyYCQL4TeYzdw+eNriEXyX2ogKkSlZgkYBkiXOt6aRMNZ35JiPSEBd28AtpEwom5T8hN5hplcIQHP5QDs9yKwD4UXXif1V0NY3v/z/GtYpmLY8A/34Ntoh/1eGEICgR4bpg64EW5dvvc70mLBeEtp94QTcPynp6HGVex4ciuEIuY7+CkIB+bw8Q+OrahbXuu6Zrz4B89BMSgLtQJ2lx37PrcbPXu68cZfvL2i2gOiQlRiloBhgHTHOhpB49n0BxOlGvuIuMwYBFIMYRV1d9NPw6ZbDBASUCJqspfA/NfqL/pRf96Pe19oxsye0hxJzHqB7KQqceLnZ3Dhgyvo3rEGJqsJ3gkfhq4Nr2hdXygCz/z2YSjG5Sf2KYoCT4sbB17ah2OvnSz2j0CUVjlnCRgGSHfqL/iz7uUXEjDOJbLODEiRPC9AJHKHhiWv/eCf1eTEQecbEwi1WxCp0pkArTUcSiccCOP6if6Cv79rWyfq3JnrORSDgs0HN+DkG2cXzjxYCaEIrN2+Bt27umAyGzEzOotrx/sR8oYKvmeqfuWaJWAYIN0xe2NAjm6uSo73aiGBhE1ZqDdYDQFAKkDjaR+GXypukV6xZgWqrXiwmDytbnTv7ELnlnaoqpq1q6HRbISryYnp4czbR9Oxu2x48Q+eQ32bJ9lDQAh07+rC3ud34bPXTqH32I3V/hhU5Uo9S8AwQLoTtxuS7bKyjOMJi4LpvU40n/AuOyBOiuRaf9ymwOyNZ+0WmC+hAo5BfsLTE5PFhCO/+QTW7liz0OQnWxBIScQSK7uQAD7/e8/A3ZxcRrrftyD5W/n4Vx+BfyaAoV62+aXsSjlLwNJm0p3ZnY6sA7gUwMxuJ0afbcTQi82Ieu5n3rhNwfiT9bj99XbM7HMXJQgsKHIfI9YKlNbz334aa7Z2AMCSgsFMpCrhm/TDO5m+XiWTzk3taOxsyHwksKpi77M7V/SaVNtK0bWQMwNUOVLCORCCqzcIQ1RFpMGE6b0uxOqzt44Ndtvg77HBcWtueWMfkZwVmHzEDQiBmf0uzOxzwuRLzgBEXUbAkBy1g2utmN1Wt7CtcMnrYPnYnuUIegBAwsqugqXm3WCBeyCy6tdpW9+Cjk1tK/oeoQicf//ywu6SfK3dsQaJhApDhjCgKAra1rfii//hRQz3j+LasRsIzARXdhGqOcVeNmAYoIowhBJY98/DsI8kuwNCBSCA5mOzGDvSgIlDWbr0CYHbX21D5y8n4LlyvwGMABBpNOHOl1sXmgmlnr/kz4u+fvdLrYjWT6PxlBeGWPJdXgKYazXD7I3f72GQY1kCAOwjEVhHIgi3r76IsJizAqwXWG793nVZB2hg/lhjCUBKKAYFZ9++gBsFFCgqxvzOq2jpbkJTVwN2P70dH/7TUQxeuL3ia1FtKeayAcMAlZ+UWPvjUdhGky1iF6bq5z9xtX04jajbCO+OzEfESrOCoVdbMXakAY6BOSgJibl2C0Kdlry6BC4wCIwdacT44/WwD0cgVIm51mQnQ5GQsI4mvxZuMmPDP96DZTKW8Y1dKkDjWS/uvdyS//WpIsw2c84BWgiBW5fuwDvhw40T/fBN+gu61vS9mazHIS+mKAqklDjyrScwMzqL2TFvQdek2lKMWQKGASo723AEjgz7+4FkJmg5OgPvdkfOgT3mNmFm/8pOpEt7TbOC4Drb0q8ZBOY6759fYAwmsg4gQgWsozxRTg98eaz7zwXCeP/vP171tfrPDOLgK/thNBnzCgVCCEhVYseTW/Hpj0+kfY7dZYPFbkHQG0J0jr9ztPpZAoYBKjtXXyh7nwAA1skYjP4E4i7t/Iqqxuxv5BKAal59FaHWCgf10GNgpa6f6Me+53dnfFxVVVwr0na/WCSGD//pKJ77nacgEzJnoSKQLGjs2tax7OttG1pw4MW9aFvfunCfty7cwalfnCvbmQmkbYXOEnA3AZWdSMi8arCU+OpPhSsm31YHZI6x3relrjw3kyfWC6QXnA3h1C/PAcCSEwmB5BHF3nEfLn50tWjXu3NlCD//r2/i1sU7SCTy28IiHtjm2LW9Ey/94fNoWXf/36miKFi3ey2+9B9fgqsp87Ia1Zbotq4V7zhgGKCym2szQ8nxfpiwKIhpaFYAACYfdkMaRNpAIAWQsCuY2b26N2StzQpUs4sfXMFH3zsK78T9JYN4NI5rx/vw+l+8jViRzyCYHJrGB9/9Ff7u//gerhy9ttDbIB01oWJ0YGzhz0IROPyNQxAQy1slGxSYrSY88qWHinq/pH8rCQTaerelmuDb4kDcNglDWE3bClgKYHqfCzLHtHy5xepNuPVr7ej+0SiUyPyZyPPHE8frDBj89Xao3F6oK/1nBtF/ZhCuJicMJgP8U4GCWg2vVO+nN7D90JaMjysGBVeOXl/489oda2BzWrM+f+22NbC7bAj55op6r6Rv+QYChgEqO2kUuPOVVqz75xFA3q8dSB0XPNdmwfiTWbYWVlCw24Zrf9IN9+UA6obmIIVAYL0tuYRgWF144axA5RS6U6BQs2NeHP3RcTzx9Uch1ft1BGpChWJQcOL1MxhfdNqiu8m58FgmQhFwNjgYBqggDANUEcF1dvR/ew2aj8/CfTUIJSERcxkw/ZA7OR1vSr7pibgKz6UA6s/7YPbFEXMYMLPHhZndTkhzZVa5VLOSbGa0vzSnFFJtuH6iH1PDM9h5eCs6t3RAABgZGMOVX13D6M3xJc+NhmN57USIRni8MhWGYYAqJtJiwdAXWzH0ikw29Hngk7USTqDn+8Owjcz3IwBgDCRgG51E4xkvbv5mJxJ11TEtX4pZgWotHixWF0ItmLw7hY++92nO592+dBeHvnIQIsPsk5QSvgk/ZkZmi3yHVCtYQEiVJ8SyIAAAHW9PwjYaTS3NJ586/z/LVAxr3hhf9j1UXFWzrVAAnZvbcfCV/Xj01QNYv29dXlv8tGIuEMbVo9eW7XxIEUIgHMzcu4MoF84MkCYZA3F4rgTSFhgCySOInf0hmGZiOc8yoNrmqK/D53/vGdS3eZLb+qTEzsPbMBcI492//WjJ2ryWzeToRtja04LOze24d2Mk6/OEImC2mhCLxLPuaKDawjBAmmQbjmQMAikCQN1QGLM6DwMsHCwdg8mAl/7oeTg8yf4Pi88isNjNePH3n8Vr//kNXTTs2fLoJkiZuSmnmlCx5bFNGcOA3WXDnud2YvPBjTCZjUjEExg4dwvn37sE30R5CyhJe/QzT0a1RVu7CnWnWusFVmr93nVwNjjSLgkoigKD0YAdh/URxlwNDihZiggVgwJ3hsZDjvo6vPqnL2HbY5thMic/AxqMBmzc34NX/+PLaOzU5u4dKh+GAdKkUKc1eVJgFhLJY4iJMunZszbjOjuQHEDX71tXvhtahUgomvVnUVUVc4H0dQOH/s1BWOusy0KRYlBgNBvw9G88UdR7Jf1hGCBNStgNye2DGT4ISQH4ttalP5pYR7hEUFpmq3lZx74HpT4pa13f6YHswUZR0H9mcNnXHfV16NrWmbFgUlEU1Ld5lrQ5ptrDMECaNfx8E4Jrkp/8U6Eg9de5VjOGXuabF2U3MzKTve2vqurmmODez/ow5w+n/XnUhIqZ0VkMnr+17DFPqxsix+mfUkrUt3mKdKekRwwDpFnSrGDwNzpw58utCKyzIdxgQrDLirtfbMHN317D1r8ZFKteoBq2FV473pd1C6GiKLi6qO2vlkWCEbzxl29jer6XgKqqUNXkTMHozXH84r+/i0R8eVCIx3K3VxZCIJHH86h66WN+jGqXQcC73QHvdkel72SBSEg4BkIwBhKIOw0IrLevuhUxlcbUvRmcf/cS9j6/C1KVC138pJSABO70DqH/7PKpda3yTwXw0//vF2jpbkJrTwukKjHcN7IQENIZvzWJcDACa50l43MS8QTuXhsuwR2TXjAMEK2A56IP7e9NwTh3/xNY3KZg5PkmzO5a2YmFrBcoj9NvnsfsuBd7nt25MBUe8s3hyq+u4dJHVyFVbR2VnY/x25MYvz2Z13PVhIoL71/GI19Mf6qhVCWufdaHSLA6ujpSYRgGiPLkueRH1+sTeHDoMMyp6Pr5OKQCeHfwTPlyWGlL4tTphDanFUJRMOeby1qMV20ufXQVNocVu45sXxJ+FIOC/rODOP6z0xW8O9IChgGifCQk2t+bgsTyFggCyW2O7e9PwbvNAeRxoEypsL9AdnP+2m3Ze/KNs+j97AY2P7wBdZ46hANh9J+5mXWJgWoHwwBRJqqEdSwKJabC5I/DGEpkfKoAYPInUHcnjOA6W86X5hIBVYJ/KoAzb12o9G2QBjEMED1IStSf86P16DRM/mQAyHdCOVtg0JNq2ElARPljGCB6QPOns2j7eHpJAMh34j/m4n9SRKQ/7DNAtIjRF0frJ9MA0geATDMEEkDEY0SoM/P2rZRSLRGwXoCICsUwQLRI/aXsp7eligUXk/MPDL/QnPlIOSIiDeOcJtEi5tkYpEDW45MfHO4jjSaMfK4JgfX2kt4bEVGpMAwQLRK3G7IGASB5PsLAtzpgDKuIOYwIt5k5I0BEusYwQLTI7A4HWo7NZnxcCsC7tQ5zXbm3D6ajh3oB7iQgqj2sGSBaJNJiwex2R9qjk6UApCIw8Xh9+W+MiKiEODNA9IChV1qQMAs0XPAj1XJQSCDmNOLuqy0It+beMUBJztu10/KXSM8YBogeII0Cwy+3YPxwA1x9QSgxiXCzGYEeG2sDiKgqMQwQZRB3GjG9312012MLYiLSKtYMEOkciweJaLUYBoiIiGocwwAREVGNYxggKgPWCxCRljEMEOkYDyciomJgGCAiIqpxDANEJaaXJQK97STwbmDzJ6JiYRggIiKqcQwDRDrFegEiKhaGASIiohrHMEBUQnqpFyCi2sYwQEQlKR7kiYVE+sEwQEREVOMYBoh0iMWDRFRMDANEJcJ6ASLSC4YBIiKiGscwQEREVOMYBoh0ptj1AnprQ0xExccwQFQCrBcgIj1hGCAiIqpxDANEpEvugUilb4GoajAMEOkI+wsQUSkwDBAVGesFiEhvGAaIalipdhLwXAIifWEYICIiqnEMA0Q6wXoBIioVhgGiImK9ABHpEcMAERFRjWMYICIiqnEMA0Q6wHoBIiolhgGiItFbvQAPKCKiFIYBIiKiGscwQEREVOMYBoiIiGocwwBREZSyXkBvxYNsRUykPwwDRERENY5hgKgGcScBES3GMECkYXpbIiAifWIYIFolvfUXICJ6EMMAERFRjTNW+gZIW77qOrvkzz/27a/QnRARUbkwDBCA5SEg3dcZDMqL9QJEVC5cJqCMQSDd8/J9bq1gvQARVQPODNSwQgd2zhboG7cVEtGDGAZqUDE/3adei6GAAHYfJNIrhoEaUsop/lqcLWALYiKqFgwDNaDc6/ycLSAi0heGgSpW6WK/ag4FLBwkomrCMFCFKh0CHlSLSwhUWu6BSKVvgaiqMAxUEa2FACpMKesFuJOAiNJhGKgCDAHlxSUCIqo2DAM6xhBARETFwA6EOqTnToB6vW8iomrGmQEd4UBaeVwiIKJqxDCgAwwBtUPPzYbYfZBIvxgGNIwhgIqJOwmIKBPWDGgUg4D2cImAiKoVZwY0hiGAiIjKjWFAIxgCSM/1AkSkbwwDFcYQoA9cIiCiasaagQpiECAiIi1gGKgAPTcNKoZa/tkrhTsJiCgbLhOUEQdByoT1AkRUSQwDZcAQoG+sFyCiasdlghJjEKBawO6DRPrGmYESYQggKg33QKTSt0BUdRgGiowhoLpwiYCIagHDQJEwBFChSl08yJ0ERJQLw8AqMQQQEZHeMQwUiCGg+nGJgIhqBXcTFIBBgIiIqglnBlaAIYCKjc2GiEgLGAbywBBQXD/27a/0LeTEJQIiqiUMA1kwBJDelWMnARsOFZe59+6yr0W3dVXgTqiWMAykwRBARJWQLghk+zpDAhULw8ADGASIqBIyDfiFfA9DAq0Uw8A8hgBKKVe9AIsHqVQYEmilaj4MMASUlx6KB4nKrZBZgdVeh8GAFqvZMMAQQERaUK4gkOm6DAUE1GAYYAigbKppS2E1nknAEwuLz9x7l4GAaicMMASQlrBegIDKzQo8iLMEVBPtiBkEiEhrtBIEFjP33tXkfVHpVfXMAEMAEWmR1gdczhTUnqoMAwwB2qT1nQTVVC9QLuw+WN0YCmpHVYUBhgAi0jqtzwqkwyLD6lcVYYAhgPSkHMWD1biToBroMQikcJagugkpJef5iIiIalhN7CYgIiKizBgGiIiIahzDABERUY1jGCAiIqpxDANEREQ1jmGAiIioxjEMEBER1TiGASIiohrHMEBERFTj/n9g9v7JoMHlVgAAAABJRU5ErkJggg==\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"seconds = time.time()\n",
"print(\"Time in seconds since end of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "YyOarWssKyjN",
"outputId": "5cc8c04d-f853-49ef-960c-c90c818a7b36"
},
"execution_count": 49,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710204950.99614\n",
"Tue Mar 12 00:55:50 2024\n"
]
}
]
}
]
}