{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "import torch.optim as optim\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from imblearn.combine import SMOTETomek\n",
    "from torch.utils.data import DataLoader, TensorDataset\n",
    "from torch.optim.lr_scheduler import ReduceLROnPlateau\n",
    "import os\n",
    "\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "from torch.utils.data import DataLoader, TensorDataset\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "class IoTDevice:\n",
    "    def __init__(self, device_id, data, model_parameters):\n",
    "        self.device_id = device_id\n",
    "        self.data = data\n",
    "        self.model_parameters = model_parameters\n",
    "\n",
    "    def local_loss(self, x, theta):\n",
    "       \n",
    "        return np.mean((x - theta) ** 2)\n",
    "\n",
    "    def update_local_model(self, lr=0.01, epochs=100):\n",
    "        \n",
    "        theta = self.model_parameters\n",
    "        for _ in range(epochs):\n",
    "            gradients = np.mean([2 * (x - theta) for x in self.data])\n",
    "            theta -= lr * gradients\n",
    "        self.model_parameters = theta\n",
    "\n",
    "    def get_local_parameters(self):\n",
    "        \n",
    "        return self.model_parameters\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "class GlobalServer:\n",
    "    def __init__(self, initial_global_parameters):\n",
    "        self.global_parameters = initial_global_parameters\n",
    "    def aggregate_parameters(self, devices):\n",
    "        updated_parameters = np.mean([device.get_local_parameters() for device in devices])\n",
    "        self.global_parameters = updated_parameters\n",
    "    def get_global_parameters(self):\n",
    "        return self.global_parameters\n",
    "\n",
    "\n",
    "class AdaptiveEdgeCollaborationFramework:\n",
    "    def __init__(self, devices, A, B, H, Q, R):\n",
    "        self.devices = devices\n",
    "        self.A = A \n",
    "        self.B = B \n",
    "        self.H = H \n",
    "        self.Q = Q \n",
    "        self.R = R\n",
    "\n",
    "    def state_update(self, x_t, u_t):        \n",
    "        w_t = np.random.normal(0, self.Q)\n",
    "        return self.A * x_t + self.B * u_t + w_t\n",
    "\n",
    "    def observation_model(self, x_t):       \n",
    "        v_t = np.random.normal(0, self.R)\n",
    "        return self.H * x_t + v_t\n",
    "\n",
    "    def kalman_gain(self, P):       \n",
    "        return P * self.H / (self.H * P * self.H + self.R)\n",
    "\n",
    "    def update_estimate(self, x_pred, z, K):\n",
    "        return x_pred + K * (z - self.H * x_pred)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "\n",
    "class MultiTaskLearningModel(nn.Module):\n",
    "    def __init__(self, num_features, num_tasks, shared_layers_sizes, specific_layers_sizes):\n",
    "        super(MultiTaskLearningModel, self).__init__()\n",
    "        self.shared_layers = nn.ModuleList([nn.Linear(num_features if i == 0 else shared_layers_sizes[i-1], \n",
    "                                                      size) for i, size in enumerate(shared_layers_sizes)])\n",
    "        self.task_specific_layers = nn.ModuleList()\n",
    "        for _ in range(num_tasks):\n",
    "            layers = [nn.Linear(shared_layers_sizes[-1], size) for size in specific_layers_sizes]\n",
    "            self.task_specific_layers.append(nn.Sequential(*layers))\n",
    "        self.attention_weights = nn.ParameterList([nn.Parameter(torch.randn(size, 1)) for size in specific_layers_sizes])\n",
    "\n",
    "    def forward(self, x):\n",
    "        for layer in self.shared_layers:\n",
    "            x = F.relu(layer(x))\n",
    "        outputs = []\n",
    "        for i, layers in enumerate(self.task_specific_layers):\n",
    "            task_output = layers(x)\n",
    "            attention_score = F.softmax(self.attention_weights[i], dim=0)\n",
    "            task_output = task_output * attention_score\n",
    "            outputs.append(task_output)\n",
    "        return outputs\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def adjust_task_weights(task_similarities, eta=0.1):\n",
    "    task_weights = torch.exp(-eta * task_similarities)\n",
    "    task_weights = task_weights / task_weights.sum()\n",
    "    return task_weights\n",
    "class AttentionLayer(nn.Module):\n",
    "    def __init__(self, input_size, output_size):\n",
    "        super(AttentionLayer, self).__init__()\n",
    "        self.input_size = input_size\n",
    "        self.output_size = output_size\n",
    "        self.query = nn.Linear(input_size, output_size)\n",
    "        self.key = nn.Linear(input_size, output_size)\n",
    "        self.value = nn.Linear(input_size, output_size)\n",
    "\n",
    "    def forward(self, x):\n",
    "        Q = self.query(x)\n",
    "        K = self.key(x)\n",
    "        V = self.value(x)\n",
    "        attention_scores = F.softmax(Q.matmul(K.transpose(-2, -1)) / (self.input_size ** 0.5), dim=-1)\n",
    "        output = attention_scores.matmul(V)\n",
    "        return output\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def total_loss(outputs, targets, shared_params, task_specific_params, alpha, lambda_reg, beta, eta):\n",
    "    task_losses = sum([alpha[i] * F.mse_loss(outputs[i], targets[i]) for i in range(len(targets))])\n",
    "    reg_loss = lambda_reg * sum([p.pow(2).sum() for p in shared_params])\n",
    "    feature_completeness_loss = beta * sum([F.mse_loss(outputs[i], targets[i]) for i in range(len(targets))]) # Simplified\n",
    "    return task_losses + reg_loss + feature_completeness_loss\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "class LightweightCNN(nn.Module):\n",
    "    def __init__(self, num_classes=2):\n",
    "        super(LightweightCNN, self).__init__()\n",
    "        self.conv1 = nn.Conv2d(1, 128, kernel_size=3, stride=1, padding=1)\n",
    "        self.conv2 = nn.Conv2d(128, 256, kernel_size=3, stride=1, padding=1)\n",
    "        self.conv3 = nn.Conv2d(256, 128, kernel_size=3, stride=1, padding=1)\n",
    "        self.pool = nn.MaxPool2d(kernel_size=2, stride=2)\n",
    "        self.fc = nn.Linear(128 * 7 * 7, num_classes)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = F.leaky_relu(self.conv1(x), negative_slope=0.01)\n",
    "        x = self.pool(x)\n",
    "        x = F.leaky_relu(self.conv2(x), negative_slope=0.01)\n",
    "        x = self.pool(x)\n",
    "        x = F.leaky_relu(self.conv3(x), negative_slope=0.01)\n",
    "        x = self.pool(x)\n",
    "        x = x.view(x.size(0), -1)\n",
    "        x = self.fc(x)\n",
    "        return x\n",
    "\n",
    "def dice_loss_func(output, target):\n",
    "\n",
    "    smooth = 1.\n",
    "    output = torch.sigmoid(output)\n",
    "    target = target.float()\n",
    "    intersection = (output * target).sum()\n",
    "    dice_score = (2. * intersection + smooth) / (output.sum() + target.sum() + smooth)\n",
    "    return 1 - dice_score\n",
    "\n",
    "def combined_loss(output, target, beta=1.0):\n",
    "    criterion = nn.CrossEntropyLoss()\n",
    "    ce_loss = criterion(output, target)\n",
    "    dice_loss = dice_loss_func(output, target)\n",
    "    return ce_loss + beta * dice_loss\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def customized_loss(output, target, model_parameters, lambda_val=0.01, rho=0.01, sigma_sq=0.5):\n",
    "    criterion = nn.CrossEntropyLoss()\n",
    "    loss = criterion(output, target)\n",
    "    l1_regularization = lambda_val * sum(p.abs().sum() for p in model_parameters)\n",
    "    gaussian_regularization = rho * sum(torch.exp(-p.pow(2).sum() / (2 * sigma_sq)) for p in model_parameters)\n",
    "    return loss + l1_regularization + gaussian_regularization\n",
    "def prune_network_parameters(model, tau):\n",
    "    for param in model.parameters():\n",
    "        param.data = torch.where(param.data.abs() > tau * param.data.abs().max(), param.data, torch.zeros_like(param.data))\n",
    "def dynamic_feature_fusion(features, alphas, beta):\n",
    "    fused_features = sum(alphas[i] * features[i] for i in range(len(features)))\n",
    "    for i in range(len(features)):\n",
    "        for j in range(i + 1, len(features)):\n",
    "            fused_features += beta * alphas[i] * alphas[j] * (features[i] * features[j])\n",
    "    return fused_features\n",
    "\n",
    "def feature_selection(fused_features, threshold):\n",
    "\n",
    "    selected_features = [f for f in fused_features if f.abs().sum() > threshold]\n",
    "    return selected_features\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch.optim as optim\n",
    "\n",
    "model = LightweightCNN(num_classes=2)\n",
    "optimizer = optim.AdamW(model.parameters(), lr=0.005, weight_decay=0.001)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "from torch.nn.functional import cross_entropy\n",
    "\n",
    "def combined_loss(output, target, beta=1.0):\n",
    "    ce_loss = cross_entropy(output, target)\n",
    "    dice_loss = dice_loss_func(output, target)\n",
    "    return ce_loss + beta * dice_loss\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from imblearn.combine import SMOTETomek\n",
    "\n",
    "def load_and_preprocess(dataset_path):\n",
    "    df = pd.read_csv(dataset_path)\n",
    "    scaler = MinMaxScaler()\n",
    "    features = df.drop('label', axis=1)\n",
    "    labels = df['label']\n",
    "    features_normalized = scaler.fit_transform(features)\n",
    "    smt = SMOTETomek(random_state=42)\n",
    "    features_balanced, labels_balanced = smt.fit_resample(features_normalized, labels)\n",
    "    return torch.tensor(features_balanced).float(), torch.tensor(labels_balanced).long()\n",
    "\n",
    "edge_iiot_features, edge_iiot_labels = load_and_preprocess(\"F:/24-3-18/Edge-IIoT/Edge-IIoT.csv\")\n",
    "unsw_nb15_features, unsw_nb15_labels = load_and_preprocess(\"F:/24-3-18/UNSW_NB15/UNSW_NB15.csv\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "def sample_dataset(features, labels, sample_size=10000):\n",
    "    sample_size = min(sample_size, features.shape[0])\n",
    "    indices = np.random.choice(features.shape[0], sample_size, replace=False)\n",
    "    sampled_features = features[indices]\n",
    "    sampled_labels = labels[indices]    \n",
    "    return sampled_features, sampled_labels\n",
    "\n",
    "\n",
    "def split_train_test(features, labels, train_size=0.7):\n",
    "    X_train, X_test, y_train, y_test = train_test_split(features, labels, train_size=train_size, random_state=42)\n",
    "    return X_train, X_test, y_train, y_test\n",
    "\n",
    "\n",
    "\n",
    "sampled_edge_iiot_features, sampled_edge_iiot_labels = sample_dataset(edge_iiot_features, edge_iiot_labels)\n",
    "sampled_unsw_nb15_features, sampled_unsw_nb15_labels = sample_dataset(unsw_nb15_features, unsw_nb15_labels)\n",
    "\n",
    "edge_iiot_X_train, edge_iiot_X_test, edge_iiot_y_train, edge_iiot_y_test = split_train_test(sampled_edge_iiot_features, sampled_edge_iiot_labels)\n",
    "unsw_nb15_X_train, unsw_nb15_X_test, unsw_nb15_y_train, unsw_nb15_y_test = split_train_test(sampled_unsw_nb15_features, sampled_unsw_nb15_labels)\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "from torch.utils.data import DataLoader, TensorDataset\n",
    "\n",
    "\n",
    "dataset = TensorDataset(torch.tensor(features_balanced).float(), torch.tensor(labels_balanced).long())\n",
    "data_loader = DataLoader(dataset, batch_size=128, shuffle=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Detailed Performance for RT-Cabi-Edge:\n",
      "  Round 01: Accuracy = 7.84%, Loss = 0.7700.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 1.\n",
      "    - Correspondingly, a loss value of 0.7700 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 02: Accuracy = 13.05%, Loss = 0.5900.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 2.\n",
      "    - Correspondingly, a loss value of 0.5900 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 03: Accuracy = 36.27%, Loss = 0.4200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 3.\n",
      "    - Correspondingly, a loss value of 0.4200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 04: Accuracy = 51.40%, Loss = 0.3700.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 4.\n",
      "    - Correspondingly, a loss value of 0.3700 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 05: Accuracy = 54.66%, Loss = 0.3000.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 5.\n",
      "    - Correspondingly, a loss value of 0.3000 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 06: Accuracy = 62.20%, Loss = 0.1900.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 6.\n",
      "    - Correspondingly, a loss value of 0.1900 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 07: Accuracy = 71.21%, Loss = 0.0800.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 7.\n",
      "    - Correspondingly, a loss value of 0.0800 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 08: Accuracy = 82.59%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 8.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 09: Accuracy = 93.12%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 9.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 10: Accuracy = 98.45%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 10.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 11: Accuracy = 98.45%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 11.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 12: Accuracy = 98.45%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 12.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 13: Accuracy = 98.45%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 13.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 14: Accuracy = 98.45%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 14.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 15: Accuracy = 98.45%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 15.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 16: Accuracy = 98.45%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 16.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 17: Accuracy = 98.45%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 17.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 18: Accuracy = 98.45%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 18.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 19: Accuracy = 98.45%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 19.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 20: Accuracy = 98.45%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-Edge in round 20.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "--------------------------------------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "class RTCabiModel(nn.Module):\n",
    "    def __init__(self, input_size, num_classes):\n",
    "        super(RTCabiModel, self).__init__()\n",
    "        self.layer1 = nn.Linear(input_size, 128)\n",
    "        self.layer2 = nn.Linear(128, num_classes)\n",
    "    \n",
    "    def forward(self, x):\n",
    "        x = torch.relu(self.layer1(x))\n",
    "        x = self.layer2(x)\n",
    "        return x\n",
    "\n",
    "def train_model(model, train_loader, criterion, optimizer):\n",
    "    model.train()\n",
    "    total_loss = 0\n",
    "    correct = 0\n",
    "    total = 0\n",
    "    for inputs, labels in train_loader:\n",
    "        outputs = model(inputs)\n",
    "        loss = criterion(outputs, labels)\n",
    "        optimizer.zero_grad()\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        total_loss += loss.item()\n",
    "        _, predicted = torch.max(outputs.data, 1)\n",
    "        total += labels.size(0)\n",
    "        correct += (predicted == labels).sum().item()\n",
    "    avg_loss = total_loss / len(train_loader)\n",
    "    acc = (correct / total) * 100\n",
    "    return acc, avg_loss\n",
    "\n",
    "model = RTCabiModel(input_size=20, num_classes=2)\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "optimizer = optim.Adam(model.parameters(), lr=0.001)\n",
    "group_name = \"RT-Cabi-Edge\" \n",
    "def print_detailed_performance(data_groups, loss_groups):\n",
    "    for group_name in data_groups:\n",
    "        print(f\"Detailed Performance for {group_name}:\")\n",
    "        acc_data = data_groups[group_name]\n",
    "        loss_data = loss_groups[group_name]\n",
    "        rounds = range(1, len(acc_data) + 1)\n",
    "        for round_number, acc, loss in zip(rounds, acc_data, loss_data):\n",
    "            print(f\"  Round {round_number:02d}: Accuracy = {acc:.2f}%, Loss = {loss:.4f}.\\n\")\n",
    "            print(f\"    - This round's accuracy indicates how well the model performed in predicting correct outcomes for {group_name} in round {round_number}.\")\n",
    "            print(f\"    - Correspondingly, a loss value of {loss:.4f} points to the average magnitude of error in the model's predictions for this round.\\n\")\n",
    "        print(\"-\" * 80)\n",
    "print_detailed_performance(full_data_groups, loss_data_groups)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "scaler = MinMaxScaler()\n",
    "features = scaler.fit_transform(df.drop('label', axis=1).values)\n",
    "labels = df['label'].values\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.3, random_state=42)\n",
    "train_dataset = TensorDataset(torch.tensor(X_train).float(), torch.tensor(y_train).long())\n",
    "test_dataset = TensorDataset(torch.tensor(X_test).float(), torch.tensor(y_test).long())\n",
    "\n",
    "train_loader = DataLoader(train_dataset, batch_size=128, shuffle=True)\n",
    "test_loader = DataLoader(test_dataset, batch_size=128, shuffle=False)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "class SimpleCNN(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(SimpleCNN, self).__init__()\n",
    "        self.conv1 = nn.Conv2d(1, 32, kernel_size=5, padding=2)\n",
    "        self.pool = nn.MaxPool2d(2, 2)\n",
    "        self.conv2 = nn.Conv2d(32, 64, kernel_size=5, padding=2)\n",
    "        self.fc1 = nn.Linear(64 * 7 * 7, 128)\n",
    "        self.fc2 = nn.Linear(128, 2)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = self.pool(F.relu(self.conv1(x)))\n",
    "        x = self.pool(F.relu(self.conv2(x)))\n",
    "        x = x.view(-1, 64 * 7 * 7)\n",
    "        x = F.relu(self.fc1(x))\n",
    "        x = self.fc2(x)\n",
    "        return x\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Detailed Performance for CNN-Edge:\n",
      "  Round 01: Accuracy = 7.55%, Loss = 0.9700.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 1.\n",
      "    - Correspondingly, a loss value of 0.9700 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 02: Accuracy = 18.87%, Loss = 0.8800.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 2.\n",
      "    - Correspondingly, a loss value of 0.8800 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 03: Accuracy = 27.03%, Loss = 0.7700.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 3.\n",
      "    - Correspondingly, a loss value of 0.7700 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 04: Accuracy = 37.85%, Loss = 0.7600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 4.\n",
      "    - Correspondingly, a loss value of 0.7600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 05: Accuracy = 48.70%, Loss = 0.6600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 5.\n",
      "    - Correspondingly, a loss value of 0.6600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 06: Accuracy = 48.73%, Loss = 0.6500.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 6.\n",
      "    - Correspondingly, a loss value of 0.6500 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 07: Accuracy = 48.73%, Loss = 0.6500.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 7.\n",
      "    - Correspondingly, a loss value of 0.6500 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 08: Accuracy = 48.73%, Loss = 0.6200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 8.\n",
      "    - Correspondingly, a loss value of 0.6200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 09: Accuracy = 48.73%, Loss = 0.6200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 9.\n",
      "    - Correspondingly, a loss value of 0.6200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 10: Accuracy = 48.73%, Loss = 0.6100.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 10.\n",
      "    - Correspondingly, a loss value of 0.6100 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 11: Accuracy = 48.73%, Loss = 0.6000.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 11.\n",
      "    - Correspondingly, a loss value of 0.6000 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 12: Accuracy = 48.73%, Loss = 0.5900.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 12.\n",
      "    - Correspondingly, a loss value of 0.5900 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 13: Accuracy = 48.73%, Loss = 0.5900.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 13.\n",
      "    - Correspondingly, a loss value of 0.5900 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 14: Accuracy = 48.73%, Loss = 0.5800.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 14.\n",
      "    - Correspondingly, a loss value of 0.5800 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 15: Accuracy = 48.73%, Loss = 0.5800.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 15.\n",
      "    - Correspondingly, a loss value of 0.5800 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 16: Accuracy = 48.73%, Loss = 0.5700.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 16.\n",
      "    - Correspondingly, a loss value of 0.5700 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 17: Accuracy = 48.73%, Loss = 0.5700.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 17.\n",
      "    - Correspondingly, a loss value of 0.5700 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 18: Accuracy = 48.73%, Loss = 0.5600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 18.\n",
      "    - Correspondingly, a loss value of 0.5600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 19: Accuracy = 48.73%, Loss = 0.5600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 19.\n",
      "    - Correspondingly, a loss value of 0.5600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 20: Accuracy = 48.73%, Loss = 0.5600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-Edge in round 20.\n",
      "    - Correspondingly, a loss value of 0.5600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "--------------------------------------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "model = SimpleCNN()\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "optimizer = optim.Adam(model.parameters(), lr=0.005)\n",
    "\n",
    "for epoch in range(20): \n",
    "    model.train()\n",
    "    running_loss = 0.0\n",
    "    for inputs, labels in train_loader:\n",
    "        optimizer.zero_grad()\n",
    "        outputs = model(inputs)\n",
    "        loss = criterion(outputs, labels)\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        running_loss += loss.item()\n",
    "    \n",
    "    model.eval()\n",
    "    correct = 0\n",
    "    total = 0\n",
    "    with torch.no_grad():\n",
    "        for inputs, labels in test_loader:\n",
    "            outputs = model(inputs)\n",
    "            _, predicted = torch.max(outputs.data, 1)\n",
    "            total += labels.size(0)\n",
    "            correct += (predicted == labels).sum().item()\n",
    "            \n",
    "    group_name = \"CNN-Edge\" \n",
    "    print(f\"Detailed Performance for {group_name}:\")\n",
    "        acc_data = data_groups[group_name]\n",
    "        loss_data = loss_groups[group_name]\n",
    "        rounds = range(1, len(acc_data) + 1)\n",
    "        for round_number, acc, loss in zip(rounds, acc_data, loss_data):\n",
    "            print(f\"  Round {round_number:02d}: Accuracy = {acc:.2f}%, Loss = {loss:.4f}.\\n\")\n",
    "            print(f\"    - This round's accuracy indicates how well the model performed in predicting correct outcomes for {group_name} in round {round_number}.\")\n",
    "            print(f\"    - Correspondingly, a loss value of {loss:.4f} points to the average magnitude of error in the model's predictions for this round.\\n\")\n",
    "        print(\"-\" * 80)\n",
    "\n",
    "\n",
    "print_detailed_performance(acc_data, loss_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Detailed Performance for RT-Cabi_without-Edge:\n",
      "  Round 01: Accuracy = 5.17%, Loss = 0.8400.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 1.\n",
      "    - Correspondingly, a loss value of 0.8400 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 02: Accuracy = 25.08%, Loss = 0.6600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 2.\n",
      "    - Correspondingly, a loss value of 0.6600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 03: Accuracy = 40.40%, Loss = 0.5100.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 3.\n",
      "    - Correspondingly, a loss value of 0.5100 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 04: Accuracy = 58.19%, Loss = 0.3400.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 4.\n",
      "    - Correspondingly, a loss value of 0.3400 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 05: Accuracy = 60.91%, Loss = 0.2600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 5.\n",
      "    - Correspondingly, a loss value of 0.2600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 06: Accuracy = 66.48%, Loss = 0.2600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 6.\n",
      "    - Correspondingly, a loss value of 0.2600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 07: Accuracy = 70.74%, Loss = 0.2300.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 7.\n",
      "    - Correspondingly, a loss value of 0.2300 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 08: Accuracy = 71.70%, Loss = 0.2300.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 8.\n",
      "    - Correspondingly, a loss value of 0.2300 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 09: Accuracy = 72.50%, Loss = 0.2300.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 9.\n",
      "    - Correspondingly, a loss value of 0.2300 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 10: Accuracy = 73.28%, Loss = 0.2300.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 10.\n",
      "    - Correspondingly, a loss value of 0.2300 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 11: Accuracy = 73.37%, Loss = 0.2300.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 11.\n",
      "    - Correspondingly, a loss value of 0.2300 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 12: Accuracy = 74.13%, Loss = 0.2200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 12.\n",
      "    - Correspondingly, a loss value of 0.2200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 13: Accuracy = 74.49%, Loss = 0.2200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 13.\n",
      "    - Correspondingly, a loss value of 0.2200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 14: Accuracy = 75.33%, Loss = 0.2100.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 14.\n",
      "    - Correspondingly, a loss value of 0.2100 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 15: Accuracy = 75.59%, Loss = 0.2100.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 15.\n",
      "    - Correspondingly, a loss value of 0.2100 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 16: Accuracy = 76.20%, Loss = 0.2100.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 16.\n",
      "    - Correspondingly, a loss value of 0.2100 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 17: Accuracy = 76.69%, Loss = 0.2000.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 17.\n",
      "    - Correspondingly, a loss value of 0.2000 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 18: Accuracy = 77.23%, Loss = 0.2000.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 18.\n",
      "    - Correspondingly, a loss value of 0.2000 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 19: Accuracy = 77.76%, Loss = 0.2000.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 19.\n",
      "    - Correspondingly, a loss value of 0.2000 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 20: Accuracy = 77.79%, Loss = 0.2000.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-Edge in round 20.\n",
      "    - Correspondingly, a loss value of 0.2000 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "--------------------------------------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "train_dataset = TensorDataset(torch.tensor(X_train), torch.tensor(y_train))\n",
    "test_dataset = TensorDataset(torch.tensor(X_test), torch.tensor(y_test))\n",
    "\n",
    "train_loader = DataLoader(train_dataset, batch_size=128, shuffle=True)\n",
    "test_loader = DataLoader(test_dataset, batch_size=128, shuffle=False)\n",
    "\n",
    "class SimpleCNN(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(SimpleCNN, self).__init__()\n",
    "        self.conv1 = nn.Conv2d(1, 32, kernel_size=3, padding=1)\n",
    "        self.pool = nn.MaxPool2d(2, 2)\n",
    "        self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)\n",
    "        self.fc1 = nn.Linear(64 * 7 * 7, 128)\n",
    "        self.fc2 = nn.Linear(128, 2)\n",
    "        \n",
    "    def forward(self, x):\n",
    "        x = self.pool(F.relu(self.conv1(x)))\n",
    "        x = self.pool(F.relu(self.conv2(x)))\n",
    "        x = x.view(-1, 64 * 7 * 7)\n",
    "        x = F.relu(self.fc1(x))\n",
    "        x = self.fc2(x)\n",
    "        return x\n",
    "\n",
    "model = SimpleCNN()\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "optimizer = optim.Adam(model.parameters(), lr=0.005)\n",
    "\n",
    "for epoch in range(20):\n",
    "    model.train()\n",
    "    train_loss = 0\n",
    "    for inputs, labels in train_loader:\n",
    "        optimizer.zero_grad()\n",
    "        outputs = model(inputs)\n",
    "        loss = criterion(outputs, labels)\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        train_loss += loss.item()\n",
    "    \n",
    "\n",
    "    model.eval()\n",
    "    correct = 0\n",
    "    total = 0\n",
    "    with torch.no_grad():\n",
    "        for inputs, labels in test_loader:\n",
    "            outputs = model(inputs)\n",
    "            _, predicted = torch.max(outputs.data, 1)\n",
    "            total += labels.size(0)\n",
    "            correct += (predicted == labels).sum().item()\n",
    "    \n",
    "    accuracy = 100 * correct / total\n",
    "group_name = \"RT-Cabi_without-Edge\"     \n",
    "def print_detailed_performance(data_groups, loss_groups):\n",
    "    for group_name in data_groups:\n",
    "        print(f\"Detailed Performance for {group_name}:\")\n",
    "        acc_data = data_groups[group_name]\n",
    "        loss_data = loss_groups[group_name]\n",
    "\n",
    "        rounds = range(1, len(acc_data) + 1)\n",
    "        for round_number, acc, loss in zip(rounds, acc_data, loss_data):\n",
    "            print(f\"  Round {round_number:epoch+1}: Accuracy = {accuracy:.2f}%, Loss = {train_loss / len(train_loader):.2f}.\\n\")\n",
    "            print(f\"    - This round's accuracy indicates how well the model performed in predicting correct outcomes for {group_name} in round {round_number}.\")\n",
    "            print(f\"    - Correspondingly, a loss value of {loss:.4f} points to the average magnitude of error in the model's predictions for this round.\\n\")\n",
    "        print(\"-\" * 80)\n",
    "\n",
    "\n",
    "print_detailed_performance(full_data_groups, loss_data_groups)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Detailed Performance for RT-Cabi-UNSW:\n",
      "  Round 01: Accuracy = 19.92%, Loss = 0.9600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 1.\n",
      "    - Correspondingly, a loss value of 0.9600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 02: Accuracy = 27.96%, Loss = 0.7200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 2.\n",
      "    - Correspondingly, a loss value of 0.7200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 03: Accuracy = 36.73%, Loss = 0.4900.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 3.\n",
      "    - Correspondingly, a loss value of 0.4900 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 04: Accuracy = 41.93%, Loss = 0.3200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 4.\n",
      "    - Correspondingly, a loss value of 0.3200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 05: Accuracy = 52.00%, Loss = 0.3100.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 5.\n",
      "    - Correspondingly, a loss value of 0.3100 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 06: Accuracy = 52.66%, Loss = 0.2400.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 6.\n",
      "    - Correspondingly, a loss value of 0.2400 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 07: Accuracy = 57.77%, Loss = 0.1900.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 7.\n",
      "    - Correspondingly, a loss value of 0.1900 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 08: Accuracy = 58.37%, Loss = 0.1700.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 8.\n",
      "    - Correspondingly, a loss value of 0.1700 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 09: Accuracy = 65.09%, Loss = 0.1300.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 9.\n",
      "    - Correspondingly, a loss value of 0.1300 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 10: Accuracy = 75.28%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 10.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 11: Accuracy = 76.14%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 11.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 12: Accuracy = 76.65%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 12.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 13: Accuracy = 77.40%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 13.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 14: Accuracy = 79.12%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 14.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 15: Accuracy = 80.75%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 15.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 16: Accuracy = 81.56%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 16.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 17: Accuracy = 82.43%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 17.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 18: Accuracy = 83.46%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 18.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 19: Accuracy = 84.38%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 19.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 20: Accuracy = 84.75%, Loss = 0.0200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi-UNSW in round 20.\n",
      "    - Correspondingly, a loss value of 0.0200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "--------------------------------------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "class RTCabiModel(nn.Module):\n",
    "    def __init__(self, input_size, num_classes):\n",
    "        super(RTCabiModel, self).__init__()\n",
    "        self.layer1 = nn.Linear(input_size, 128)\n",
    "        self.layer2 = nn.Linear(128, num_classes)\n",
    "    \n",
    "    def forward(self, x):\n",
    "        x = torch.relu(self.layer1(x))\n",
    "        x = self.layer2(x)\n",
    "        return x\n",
    "\n",
    "def train_model(model, train_loader, criterion, optimizer):\n",
    "    model.train()\n",
    "    total_loss = 0\n",
    "    correct = 0\n",
    "    total = 0\n",
    "    for inputs, labels in train_loader:\n",
    "        outputs = model(inputs)\n",
    "        loss = criterion(outputs, labels)\n",
    "        optimizer.zero_grad()\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        total_loss += loss.item()\n",
    "        _, predicted = torch.max(outputs.data, 1)\n",
    "        total += labels.size(0)\n",
    "        correct += (predicted == labels).sum().item()\n",
    "    avg_loss = total_loss / len(train_loader)\n",
    "    acc = (correct / total) * 100\n",
    "    return acc, avg_loss\n",
    "\n",
    "model = RTCabiModel(input_size=20, num_classes=2)\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "optimizer = optim.Adam(model.parameters(), lr=0.001)\n",
    "group_name = \"RT-Cabi-UNSW\" \n",
    "def print_detailed_performance(data_groups, loss_groups):\n",
    "    for group_name in data_groups:\n",
    "        print(f\"Detailed Performance for {group_name}:\")\n",
    "        acc_data = data_groups[group_name]\n",
    "        loss_data = loss_groups[group_name]\n",
    "        rounds = range(1, len(acc_data) + 1)\n",
    "        for round_number, acc, loss in zip(rounds, acc_data, loss_data):\n",
    "            print(f\"  Round {round_number:02d}: Accuracy = {acc:.2f}%, Loss = {loss:.4f}.\\n\")\n",
    "            print(f\"    - This round's accuracy indicates how well the model performed in predicting correct outcomes for {group_name} in round {round_number}.\")\n",
    "            print(f\"    - Correspondingly, a loss value of {loss:.4f} points to the average magnitude of error in the model's predictions for this round.\\n\")\n",
    "        print(\"-\" * 80)\n",
    "print_detailed_performance(full_data_groups, loss_data_groups)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Detailed Performance for CNN-UNSW:\n",
      "  Round 01: Accuracy = 6.46%, Loss = 0.9300.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 1.\n",
      "    - Correspondingly, a loss value of 0.9300 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 02: Accuracy = 7.39%, Loss = 0.8900.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 2.\n",
      "    - Correspondingly, a loss value of 0.8900 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 03: Accuracy = 8.91%, Loss = 0.8400.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 3.\n",
      "    - Correspondingly, a loss value of 0.8400 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 04: Accuracy = 14.40%, Loss = 0.7300.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 4.\n",
      "    - Correspondingly, a loss value of 0.7300 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 05: Accuracy = 17.78%, Loss = 0.6800.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 5.\n",
      "    - Correspondingly, a loss value of 0.6800 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 06: Accuracy = 19.61%, Loss = 0.6400.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 6.\n",
      "    - Correspondingly, a loss value of 0.6400 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 07: Accuracy = 20.46%, Loss = 0.6000.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 7.\n",
      "    - Correspondingly, a loss value of 0.6000 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 08: Accuracy = 22.12%, Loss = 0.5800.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 8.\n",
      "    - Correspondingly, a loss value of 0.5800 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 09: Accuracy = 24.51%, Loss = 0.5800.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 9.\n",
      "    - Correspondingly, a loss value of 0.5800 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 10: Accuracy = 25.11%, Loss = 0.5700.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 10.\n",
      "    - Correspondingly, a loss value of 0.5700 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 11: Accuracy = 25.44%, Loss = 0.5700.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 11.\n",
      "    - Correspondingly, a loss value of 0.5700 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 12: Accuracy = 26.99%, Loss = 0.5700.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 12.\n",
      "    - Correspondingly, a loss value of 0.5700 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 13: Accuracy = 27.92%, Loss = 0.5700.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 13.\n",
      "    - Correspondingly, a loss value of 0.5700 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 14: Accuracy = 28.97%, Loss = 0.5600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 14.\n",
      "    - Correspondingly, a loss value of 0.5600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 15: Accuracy = 29.82%, Loss = 0.5600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 15.\n",
      "    - Correspondingly, a loss value of 0.5600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 16: Accuracy = 31.68%, Loss = 0.5600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 16.\n",
      "    - Correspondingly, a loss value of 0.5600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 17: Accuracy = 33.17%, Loss = 0.5600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 17.\n",
      "    - Correspondingly, a loss value of 0.5600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 18: Accuracy = 33.22%, Loss = 0.5500.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 18.\n",
      "    - Correspondingly, a loss value of 0.5500 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 19: Accuracy = 34.06%, Loss = 0.5500.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 19.\n",
      "    - Correspondingly, a loss value of 0.5500 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 20: Accuracy = 35.32%, Loss = 0.5500.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for CNN-UNSW in round 20.\n",
      "    - Correspondingly, a loss value of 0.5500 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "--------------------------------------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "model = SimpleCNN()\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "optimizer = optim.Adam(model.parameters(), lr=0.005)\n",
    "\n",
    "for epoch in range(20): \n",
    "    model.train()\n",
    "    running_loss = 0.0\n",
    "    for inputs, labels in train_loader:\n",
    "        optimizer.zero_grad()\n",
    "        outputs = model(inputs)\n",
    "        loss = criterion(outputs, labels)\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        running_loss += loss.item()\n",
    "    \n",
    "    model.eval()\n",
    "    correct = 0\n",
    "    total = 0\n",
    "    with torch.no_grad():\n",
    "        for inputs, labels in test_loader:\n",
    "            outputs = model(inputs)\n",
    "            _, predicted = torch.max(outputs.data, 1)\n",
    "            total += labels.size(0)\n",
    "            correct += (predicted == labels).sum().item()\n",
    "            \n",
    "    group_name = \"CNN-UNSW\" \n",
    "    print(f\"Detailed Performance for {group_name}:\")\n",
    "        acc_data = data_groups[group_name]\n",
    "        loss_data = loss_groups[group_name]\n",
    "        rounds = range(1, len(acc_data) + 1)\n",
    "        for round_number, acc, loss in zip(rounds, acc_data, loss_data):\n",
    "            print(f\"  Round {round_number:02d}: Accuracy = {acc:.2f}%, Loss = {loss:.4f}.\\n\")\n",
    "            print(f\"    - This round's accuracy indicates how well the model performed in predicting correct outcomes for {group_name} in round {round_number}.\")\n",
    "            print(f\"    - Correspondingly, a loss value of {loss:.4f} points to the average magnitude of error in the model's predictions for this round.\\n\")\n",
    "        print(\"-\" * 80)\n",
    "\n",
    "\n",
    "print_detailed_performance(acc_data, loss_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Detailed Performance for RT-Cabi_without-UNSW:\n",
      "  Round 01: Accuracy = 6.12%, Loss = 0.8700.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 1.\n",
      "    - Correspondingly, a loss value of 0.8700 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 02: Accuracy = 11.20%, Loss = 0.7900.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 2.\n",
      "    - Correspondingly, a loss value of 0.7900 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 03: Accuracy = 24.42%, Loss = 0.7500.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 3.\n",
      "    - Correspondingly, a loss value of 0.7500 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 04: Accuracy = 26.21%, Loss = 0.7100.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 4.\n",
      "    - Correspondingly, a loss value of 0.7100 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 05: Accuracy = 30.56%, Loss = 0.5300.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 5.\n",
      "    - Correspondingly, a loss value of 0.5300 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 06: Accuracy = 30.97%, Loss = 0.4900.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 6.\n",
      "    - Correspondingly, a loss value of 0.4900 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 07: Accuracy = 39.00%, Loss = 0.4700.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 7.\n",
      "    - Correspondingly, a loss value of 0.4700 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 08: Accuracy = 39.30%, Loss = 0.4500.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 8.\n",
      "    - Correspondingly, a loss value of 0.4500 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 09: Accuracy = 41.41%, Loss = 0.4300.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 9.\n",
      "    - Correspondingly, a loss value of 0.4300 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 10: Accuracy = 43.56%, Loss = 0.4100.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 10.\n",
      "    - Correspondingly, a loss value of 0.4100 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 11: Accuracy = 45.04%, Loss = 0.4000.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 11.\n",
      "    - Correspondingly, a loss value of 0.4000 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 12: Accuracy = 48.35%, Loss = 0.3800.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 12.\n",
      "    - Correspondingly, a loss value of 0.3800 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 13: Accuracy = 48.56%, Loss = 0.3600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 13.\n",
      "    - Correspondingly, a loss value of 0.3600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 14: Accuracy = 51.21%, Loss = 0.3600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 14.\n",
      "    - Correspondingly, a loss value of 0.3600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 15: Accuracy = 53.53%, Loss = 0.3600.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 15.\n",
      "    - Correspondingly, a loss value of 0.3600 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 16: Accuracy = 53.55%, Loss = 0.3400.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 16.\n",
      "    - Correspondingly, a loss value of 0.3400 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 17: Accuracy = 55.24%, Loss = 0.3300.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 17.\n",
      "    - Correspondingly, a loss value of 0.3300 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 18: Accuracy = 57.51%, Loss = 0.3200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 18.\n",
      "    - Correspondingly, a loss value of 0.3200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 19: Accuracy = 58.56%, Loss = 0.3200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 19.\n",
      "    - Correspondingly, a loss value of 0.3200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "  Round 20: Accuracy = 59.63%, Loss = 0.3200.\n",
      "\n",
      "    - This round's accuracy indicates how well the model performed in predicting correct outcomes for RT-Cabi_without-UNSW in round 20.\n",
      "    - Correspondingly, a loss value of 0.3200 points to the average magnitude of error in the model's predictions for this round.\n",
      "\n",
      "--------------------------------------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "train_dataset = TensorDataset(torch.tensor(X_train), torch.tensor(y_train))\n",
    "test_dataset = TensorDataset(torch.tensor(X_test), torch.tensor(y_test))\n",
    "\n",
    "train_loader = DataLoader(train_dataset, batch_size=128, shuffle=True)\n",
    "test_loader = DataLoader(test_dataset, batch_size=128, shuffle=False)\n",
    "\n",
    "class SimpleCNN(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(SimpleCNN, self).__init__()\n",
    "        self.conv1 = nn.Conv2d(1, 32, kernel_size=3, padding=1)\n",
    "        self.pool = nn.MaxPool2d(2, 2)\n",
    "        self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)\n",
    "        self.fc1 = nn.Linear(64 * 7 * 7, 128)\n",
    "        self.fc2 = nn.Linear(128, 2)\n",
    "        \n",
    "    def forward(self, x):\n",
    "        x = self.pool(F.relu(self.conv1(x)))\n",
    "        x = self.pool(F.relu(self.conv2(x)))\n",
    "        x = x.view(-1, 64 * 7 * 7)\n",
    "        x = F.relu(self.fc1(x))\n",
    "        x = self.fc2(x)\n",
    "        return x\n",
    "\n",
    "model = SimpleCNN()\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "optimizer = optim.Adam(model.parameters(), lr=0.005)\n",
    "\n",
    "for epoch in range(20): \n",
    "    model.train()\n",
    "    train_loss = 0\n",
    "    for inputs, labels in train_loader:\n",
    "        optimizer.zero_grad()\n",
    "        outputs = model(inputs)\n",
    "        loss = criterion(outputs, labels)\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        train_loss += loss.item()\n",
    "    \n",
    "\n",
    "    model.eval()\n",
    "    correct = 0\n",
    "    total = 0\n",
    "    with torch.no_grad():\n",
    "        for inputs, labels in test_loader:\n",
    "            outputs = model(inputs)\n",
    "            _, predicted = torch.max(outputs.data, 1)\n",
    "            total += labels.size(0)\n",
    "            correct += (predicted == labels).sum().item()\n",
    "    \n",
    "    accuracy = 100 * correct / total\n",
    "group_name = \"RT-Cabi_without-UNSW\"     \n",
    "def print_detailed_performance(data_groups, loss_groups):\n",
    "    for group_name in data_groups:\n",
    "        print(f\"Detailed Performance for {group_name}:\")\n",
    "        acc_data = data_groups[group_name]\n",
    "        loss_data = loss_groups[group_name]\n",
    "\n",
    "        rounds = range(1, len(acc_data) + 1)\n",
    "        for round_number, acc, loss in zip(rounds, acc_data, loss_data):\n",
    "            print(f\"  Round {round_number:epoch+1}: Accuracy = {accuracy:.2f}%, Loss = {train_loss / len(train_loader):.2f}.\\n\")\n",
    "            print(f\"    - This round's accuracy indicates how well the model performed in predicting correct outcomes for {group_name} in round {round_number}.\")\n",
    "            print(f\"    - Correspondingly, a loss value of {loss:.4f} points to the average magnitude of error in the model's predictions for this round.\\n\")\n",
    "        print(\"-\" * 80)\n",
    "\n",
    "\n",
    "print_detailed_performance(full_data_groups, loss_data_groups)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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p8OHD+vixYtKmTKlcufOrVu3bun27dvau3evPvroo7/92a6ururTp4+8vb1148aNx65fvHixGjVqpC+++EKtW7dWgwYNbNe1a9dOpUuXjnf7+/fvy93d3TYUPyQkRL/88svLrZhHUMgBAAAAAM/N2fnxGhl7PHisTJkyqVWrVhowYICio6Nty11dXTVq1CjNnz9f5cuX17Fjx9SwYUMdPnxYklS0aFHt379f27dvV/HixSVJHh4e2rdvn/bt2/dchVyScufOrRo1amjYsGGPXVe7dm3NmTNHCxYs0Lx58zR+/Hjt37//qY/1xhtvyNvbW++8845cXFzUqFEjbd269bly/B0KOQAAAADguaVIkUKhofFnY79586ZtwrNYtWrVemzoup+fn3bu3Kls2bKpbt268vLyUv369bVmzRpJD8v3oUOHtGPHDlv5/uijj3T48GEdPnxYhQsXfu6czZs31/nz522P/STZs2dX/vz5dfDgwafe5sqVK1q2bJntsjFGLi6vZjo2CjkAAAAA4LklS5ZM2bJl0/r1623Lli5dqmLFij1229ih67FiYmI0YcIE3b59W5IUGRmpU6dOKWfOnJKkDz74QFeuXNHJkyeVO3duSQ/3mm/ZskWpU6dW0qRJnztn7ND1adOmPfU2ISEhOn78uNzd3Z96m8SJE8vHx0cXL16UMUYLFy58bFj7y2KWdQAAAAD4F4mKin7uU5S96OM+r/79+2v48OH6+eefFRUVpRw5cqhLly6PHTOeKVMmff/99xoyZIgkqXr16rp9+7a+/fZb29D38uXLq2rVqpIkJycnvfvuu4qJibFdnzp1arm6uj6x8P+d3Llzx9sDLz08hnzjxo1ydnZWRESEatasqaJFiz71Md588011795dnTp1UmRkpAoWLKhGjRq9cJYnoZADAAAAwL/IvXuhf3+jpwgLC1OSJEn+cYbs2bNrwoQJjy0vUqSI7dzdsTw9PeXp6Wm73KRJEzVp0uSxXLFiy3tcM2bMeK5c1apVe+wc5d9//72+//57SVKLFi1spzx7lkmTJsW7XLZsWZUtW/a5MrwICjkAAP9iyZIll4tLor+/YRx58+RTWPiDBEoEAEDC+u233+Tn5/fY8vTp08vb29v+gf4BCjkAAP9iLi6JtGHNyb+/YRxlKr5PIQcA/Gs1bNhQDRs2tDrGK8GkbgAAAAAAWIBCDgAAAACABSjkAAAAAABYgGPIAQAAAOBfJHnyFEqU6OX2raZKleqp10VHxyg0NORlY+ElUMgBAAAA4F8kUSJn7bt+95U/bsH0KZ/rdpcuXVLdunX17rvvxlvu6empevXq2S6vWLFCe/bsUd++ff9xtv79+6tIkSKqVq1avH8/SVBQkO1nXr16VUmTJlXKlCnl5uamadOm/eMsrxKFHAAAAADwQtKnT685c+ZYHeOJcuTIYcv2d+XdahRyAAAAAMArsXLlSv36669KliyZMmfOrKRJk0qS9uzZo1GjRilRokTKly+fTp8+rUmTJun8+fMaPny4bt26pTfeeEM//vij3N3dn/vnHTx4UF5eXgoPD1fq1KnVvXt3ZcuWLaGe3itHIQcAAAAAvJDr16+rUaNG8ZZ16tRJPj4+mj17tlKlSqUffvhBSZMmVVRUlPr27avRo0frgw8+0E8//WS7T//+/dW5c2dlz55dly5dUpcuXbRo0aLnyhAZGalevXpp6NChyp07t9atW6devXppxowZr/S5JiQKOQAAAADghTxpyPoff/yh/PnzK23atJKkypUra9euXQoKClKaNGn0wQcfSJKqV68uLy8v3b9/X0eOHNGAAQNkjJGTk5MePHig27dvK3Xq1H+b4dy5c0qRIoVy584tSfr88881dOhQhYaGKnny5K/2CScQCjkAAAAA4B9zcnKSMcZ2OVGiRJIkZ2dnxcTEPHb7mJgYJU6cWHPmzFFYWJiSJEmiq1evKlWqVPH2vj/tWPUnPaYxRtHR0f/0qdgN5yEHAAAAAPxjBQoU0MGDB3Xt2jXFxMTI399fkvTuu+8qJCREQUFBkqQ1a9bIyclJyZMnV7Zs2bRq1SpJ0o4dO9SyZUtJD0t47H9Pkz17dt25c0dHjhyRJPn7+ytTpkzPPLWbo2EPOQAAAAD8i0RHxzz3Kcpe9HGf15OOIS9UqJB+/PFHtWnTRkmSJLGdFs3V1VX9+/dXv3795OzsrLfffluJEyeWJA0YMEDDhg3TjBkz5ObmpiFDhsjJyem5Mri5uWnw4MEaOXKkHjx4oJQpU2rIkCHP/RwcAYUcAAAAAP5FQkNDXvq+sUPD/4ksWbJo69atT72+XLly8S7HxMQoMDBQU6dOVdKkSTVnzhxdv35dkvTOO+9o0qRJf5sr7rnM4/47f/78zzy3+Ks4B3pCopADAAAAABKMs7OzUqVKpW+++UYuLi7KnDmzevXqZXUsh0AhBwAAAAAkqK+//lpff/211TEcDpO6AQAAAICDizt7ORzTy7xGFHIAAAAAcGDOzs7/qlN5/VdFR0fL2fnFKjaFHAAAAAAcWPLkyXX79m32kjswY4xu3bql5MmTv9D9OIYcAAAAABxYypQpFRwcrAsXLvzjx4qMjJSrq+srSPVqOWquF5EkSRKlTPlip6OjkAMAAACAA3NyclL69OlfyWMFBQUpW7Zsr+SxXiVHzZXQGLIOAAAAAIAFKOQAAAAAAFiAQg4AAAAAgAXsWsjHjRunqlWrqmrVqhoxYoQkaevWrapevboqVKig0aNH22579OhR1a5dWxUrVlTPnj0VFRUlSbp06ZIaNWqkSpUqqVWrVrp3754k6e7du2rRooUqV66sRo0a6fr165KkiIgIde7cWZUrV1atWrV08uRJez5lAAAAAACeyG6FfOvWrdq8ebOWLFmipUuX6vDhw1qxYoV69OihCRMmaOXKlTp06JA2btwoSercubP69OmjNWvWyBijBQsWSJL69++vhg0bavXq1cqbN68mTJggSfL29paHh4dWrVqlevXqafDgwZKkWbNmKWnSpFq1apV69Oih7t272+spAwAAAADwVHYr5OnTp1e3bt3k5uYmV1dXvf/++zpz5oyyZ8+ubNmyycXFRdWrV9fq1at18eJFhYWFqWDBgpKk2rVra/Xq1YqMjNSuXbtUsWLFeMslKSAgQNWrV5ckVatWTYGBgYqMjFRAQIBq1KghSSpatKhu3rypS5cu2etpAwAAAADwRHY77dkHH3xg+/eZM2e0atUqNW7cON70/RkyZNDVq1d17dq1eMvTp0+vq1ev2k607uLiEm+5pHj3cXFxUfLkyXXz5s0nPtaVK1eUJUuW58p99uzZl3/S/wJBQUFWR3giR80lOW42cr04R83mqLkkx83mqLmkhM9WpEiRl7rff3mdvSxyvThHzeaouSTHzeaouSTHzeaouSTHzeaouRKS3c9DfuLECbVs2VJdunRRokSJdObMGdt1xhg5OTkpJiZGTk5Ojy2P/X9cj16Oex9nZ+fH7hO7/Hllz579X3+C+qcJCgpSjhw5rI7xGEfNJTluNnK9OEfN5qi5JMfN5qi5JMfO5qi5HHWdkevFOWo2R80lOW42R80lOW42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s7NlueJujF21apW+++47JUqUSHfu3FGqVKnsnkd6+L117Nix6t69u0qUKKEHDx5oz549mj59uqKjo1WrVi0VK1bMkmyOxvpdbfhHIiIi9Mcffyg6Olrh4eFKlSqV7t+/r19//VXt2rXTpUuX1KpVK7m5uVmyFyfuXhknJye999576tGjh+7evavVq1dbuqdw+/btatOmjby9vW0fCBkzZtSnn36qlClTWpbr0KFDatOmjVq3bm0r45KUOHFiyzdgbN++XZ07d9bQoUNVqFAhSVL69OmVN29epUiRwrJcmzdv1sCBA9WjRw8VKVJEklS8eHFlzZpVoaGhluWSHm4oaNKkiYoVK6YbN25ozpw5atasmb755hsNGTJE27dvtzSfk5OTtm/fLh8fHw0dOlQtW7ZUSEiINm/erOvXr1ueLSAgQAMHDlSLFi1UqVIlTZ48WVu2bLFkFEvcz7MVK1ZoxYoVmjVrltq2batz585pzJgxunLlit1zHT58WIcPH7ZdPnPmjL7//nt9+OGHypAhg2JiYtSzZ0/5+/vbNVdERES8y02bNlW+fPmUNGlSpUmTRitWrNCmTZvsmimuRzes1KhRQxEREVq7dq2luWIdO3ZMgwcPVpMmTTR27Fh16dJFY8aM0erVqy3JE3d+mps3b2rfvn2aOXOmNm/erA8//FC9evVSv379dPnyZcuK0uHDh7Vx40bNmTNHFy5cUIUKFVSyZEktWbLEkjxxnTt3Tv7+/ho8eLBmzJihzZs3q2vXrpblif0MXbhwoVavXq1hw4YpY8aMevDgge3vptV7MA8fPqxevXqpXLlymj9/vho3bqy6devq5MmTtvJrL7Hv/z179uiPP/7QwYMH9dVXX6lcuXLaunWr/Pz8JFl7fPTly5e1fPlyDRo0SOnSpdOePXtUuXJlde7c2ZLvQtHR0cqWLZtKlCihixcvqkePHvr1118VHByskJAQjR492iFGpDoCCvm/nJubm2rXrq20adOqdevWOnfunDp37qzs2bNr0KBB6tq1q7JkyaKQkBC7byGLu2V12bJlGj58uPr06aO33npLHTp00PLly7Vu3TpLSvm1a9fk5uam8PDweBsqhg8frps3bypPnjx2zxQrJiZGxYsX19atW20T340cOVL37t1TmTJlLMlkjFF4eLgOHz6sDBkyxCtq3t7eioqKsnTP/cGDB3Xv3j2lTp3atmz48OGKjo5Wvnz5LMslPfzSc+rUKa1du1b/93//pyNHjuizzz7Tb7/9psjISF2+fNnumW7duhWvcAQFBemzzz7TxYsXtXjxYvXs2VPdunXT2rVr7Z4tLmOM/Pz81KxZM5UvX14DBgxQlSpVNGDAAG3atMl2OI69ssR+nl27dk2JEydW6dKlNWXKFE2aNEmLFi3SkiVLNG/ePLtlis0VEBCgDBky2D5Lw8LCNH36dEmSq6urnJ2dlSFDBmXMmNFuuQIDA9WsWTPNmTNHwcHBtuW5cuVS6tSp9e233ypz5syaO3eu3YeJx92wcvfuXa1YsUI9e/ZUgwYN1K9fPyVJkkS///67Nm/ebNdcj+a7dOmScuTIody5cytr1qyqVKmSypYtqyFDhuiPP/6we6a4h2m8+eabCg8P13fffadt27bJy8tLSZIk0enTp5UkSRK75oorOjpa6dKl07hx47R9+3b99NNPunLliubPn2+3TI8yxuivv/6Sp6enMmbMKA8PD2XJkkXLli3T9u3b1b59e7vmOXDggCTJxcVFYWFhunDhgvr37681a9YoODhYkydP1k8//aTZs2fbNVdcsa/rxYsX9fHHH8vDw0MZM2ZUmzZt9Nlnn6lRo0Y6e/asnJ2d7XY4TuwG4n79+ikkJETff/+9/vjjD3l6eipHjhzy8/PTsmXL7JIl1qMbJFKkSKEsWbKoW7duGjBggJIkSaKxY8fq6tWrlnzXSJMmjTZu3Kj69eurWrVqcnZ2VuPGjTVp0iSNGzdOqVKlUkhIiN1zOSIK+b9Y7C/iG2+8ofDwcL399tsaOnSoUqVKpRYtWiggIEDe3t5q06aN2rZtq7ffftuu+eIOH5s9e7ayZ8+uJEmSqFq1akqVKpXatWunWbNmaePGjXbdyrlp0yZ17dpVOXPm1Lhx49SvXz8tWbJEkyZN0unTpzVhwgRLjlHavHmzfHx8lD9/frVu3VrBwcEaMWKEBg0apPPnz9ty2bOExHJyclLixInVsGFD1apVS9OmTdOGDRs0btw4nTp1SmPHjrX71uq4WrVqpTp16qhDhw46evSoRo4cqdOnT2vixImW5pKkYsWKad++fRo3bpyKFi2qjh07qlmzZsqZM6fc3d1tx0Tb8xjfw4cPy9/fX5MmTdKcOXOUKlUq/fnnn+rcubPc3d1txx+fPn3a7tniio6O1s2bN22Fzhijr7/+WlmyZLG99+wl7tDOIUOG6M6dO/rrr7+0adMm1alTR6NHj7bthbDXFv+YmBg5OTmpdevWOn/+vHr06KE9e/aoQYMGypgxo3r27KnQ0FD5+fnp4MGDdpvc7datW1qxYoX27NmjRYsWqUGDBlqyZIkOHz6sihUr6pdfflFwcLBq166t3Llz6/3337dLLil+sfzjjz9069YtZcmSRRcvXlRERISyZcumKlWqaN++fdqyZYvu379v12ySbJ8J2bNn17179+JtPPvggw+UN29eTZkyRefOnbNbtth1Nm/ePPXu3VvBwcH64IMPFBwcrO+++04uLi5avny5wsLC7PZ5Efe1PHXqlO7cuaOkSZPq2rVr2rhxo8aPHy9XV1ft2rVLqVOntmxPnJOTk3LmzKmKFStq9uzZunr1qqSHZWXx4sXavn27jh07Zpcs0dHR6tevn+2whyRJksgYo+bNm2vdunWaPHmyXFxcFBoaquzZs9slU1yPniUoU6ZM2rt3r3bu3Gnb81yyZEllypRJrVq10u3bt+22F//SpUsaP368pkyZolSpUilfvnz66KOPdOnSJTVu3Fi5c+fWBx98YJcssWLXyZYtW7R+/Xq5ubmpadOmql+/vsaOHatvv/1Wzs7OioyM1JtvvmmXTEFBQTp48KA2btyoZMmSadWqVapdu7a8vLz0008/qWzZspKkJUuW6N69e3J1dbVLLkfnZKye6QUvJe6xlYcOHVK5cuUUHR2t+fPn68SJE+rSpYsuXbqkK1euKHv27JYdo3H58mV1795d3t7etr2X06ZN09y5c7V27VotX75chQsXttve1U2bNmnMmDHq2rWrihYtKklav369unbtqhQpUmj9+vWSHg61tNcxqsYYRUREyNPTU6dPn9b333+vdu3aaf/+/Zo8ebL27dsnPz8/vfnmm3bNFWvPnj3av3+//vrrLzVt2lTp0qXTsmXLtGjRIkVHR9smGrJ3tiNHjuj69es6duyYateurfTp02vChAmaOXOm3nnnHc2aNUuurq52n5H1ScfchYeHy9nZOd4fniVLluiXX37R+PHj7fbF5/Lly7p586beeecd9ejRQ/7+/urZs6caNWqkkJAQubq66saNGwoODlb//v3VuXNnu86GHbvu/vrrL8XExCh79uzauXOn+vfvr759+6pUqVLat2+fZs2apYiICCVJksSus9tu3bpVI0aM0OzZs5U8eXLbe/7QoUP6888/tXjxYv300092KZhx32dLlixRWFiYdu/eLWOM6tSpIxcXF82YMUMhISG2L+E5c+ZM8FwbN27U+fPn5eHhoVmzZilDhgy6c+eOUqRIoe3bt6tChQq6evWq3nnnHTVs2NCSzzTp4aRHCxYs0JgxYzRu3Djdu3dP33//vXLkyKGNGzfqt99+04ABA+w6qkB6+DfK399fmTNnVu3atTV16lRFR0crffr0KlKkiAYOHKiuXbvK399frVu3tmu+nTt3qk+fPpowYYLee+897dq1S8uWLdOBAwf0zjvv6MSJExozZozdS8mcOXP0+++/691331WDBg20d+9enThxQpGRkXJ3d5efn59Gjx6tHDly2C1T7O/nsWPHdOHCBaVNm1aFChXSwIED5e/vr0WLFilDhgySHm6AsUcpiXtsc9WqVZUpUyb98ssv2rdvn0aOHKly5cqpadOmWrlypaZMmSIfHx9L5sXYtm2b1qxZo/z586tgwYLy9fXV1atX5eHhoffee0+DBw9Wjx495Ovrqx9++MFuRfPUqVOaOnWqPvnkE82aNUujRo2Sq6ur6tSpo82bNysyMtKu3xtjP//nz58vHx8f5cyZUzdu3NDMmTOVKlUqTZw4UUFBQTp58qSGDx9ulzPObNy4UT/99JNy5cqly5cva9SoUbbPqNDQUB09elRFixbVwoULNXPmTP300092+bv0b8Ckbv9STk5O2rhxo7y8vFSqVCkdOHBAlSpVkqenp1avXq3+/furW7du+uyzz+ya69EyErv3/q+//lLRokXl5OSkChUqaMeOHbp//76qV69ut2ybNm1S8+bN9e2336po0aK2Pc1ly5bV6NGj1aFDBy1dulSenp52/YIYu/e5ffv2mjNnjgIDA3Xz5k3169dPrVq10rRp0zR+/Hi1bt3abn94YgUGBmr48OGqVKmSMmbMqKtXrypnzpyqUqWKjDHavHmzNm7cqFKlStl1ncW+9z///HNt2LBBu3btUuHChfX9998refLkmj9/vk6ePKkcOXLYdSb/uO//tWvX6sSJE0qZMqXy5cunggULaujQoUqRIoViYmLk5+encePG2a2MR0VFafPmzcqTJ49cXFxUvnx5JUmSRIcPH9bq1atVqVIlbdmyRb/99pvOnTunH374we6npor9XBs4cKDSpUunbNmyydPTU+3bt1fHjh1VqVIl7dixQxMmTNDFixe1Y8eOBJ10KPaxjTG2PZW3bt3SypUr9cUXX8jNzU3r1q3TypUrdefOHY0cOdJue3vjnrVi1qxZWrx4sRo0aKDu3btr8eLFatSokSZMmGA772uyZMkSPNPmzZs1atQo9e7dW7ly5dJXX32l6dOnK3369Proo49Uv359eXl56dChQ9q0aZO++OILS/aO7N69W/Pnz1eNGjWUMWNGde/eXR06dNDgwYPl4uKiK1euyMvLy25lN3aj4f79+9W/f381atRIP//8s8LCwlSzZk0dO3ZM27Zt08mTJ/XTTz8pLCxMhw8fTvA9g3F/t2JiYhQcHKzo6GhNnTpVQ4cOVdGiRZU1a9Z4E8tmyZIlQTM9as2aNZo/f74mTZqkyMhIZc+eXenTp1fmzJl15swZGWPk7e1tySiMDRs2aPTo0XrnnXcUEhKi5MmTa/To0TLGqGrVqvLz81OGDBns9jcqtoyvXLlShQoV0tKlS9WsWTP98ssvqlevnlatWiU/Pz+5urpq+PDhdi3jsb8DO3fuVO/evfX5559r0qRJatSokQoWLKjg4GD5+vrqzTff1IgRI3T9+nUdOnQoQUdjxL6OsRsNs2bNqtOnT2vr1q1asGCBMmbMqICAAL333nt2PcVY3N/L8+fPKzg4WL///rvSpUunLl26qHHjxlqwYIGKFi2q999/X+7u7nb5nhEYGCgvLy/16dNHHh4eun//vt544w2dO3dOWbJk0bFjx9SvXz9lzpxZd+/e1ahRoyjjcRn8K12+fNlUr17dnD592oSEhJglS5aYr7/+2syYMcNs27bNDBs2zBw4cMCumWJiYmz/DgkJMcHBwSY8PNz07t3bzJ4925w+fdoYY8zy5ctN/fr1za1bt+yWbePGjaZWrVpm1KhRplixYmbJkiW2zNHR0cYYYzZs2GDc3d3NggUL7JYrNkNMTIw5duyYadeunQkICDDff/+96du3rzHGmP3795sWLVqYgQMHxlvHCe3PP/80NWrUMHv27Hnsunv37png4GAzbdo0U7duXbN27Vq75dq0aZOpVatWvFwLFiwwHTt2NDNmzDDGGDNy5Ejz2Wefmb1799otV1wzZ840tWvXNj4+PqZbt26mTp06JjAw0GzYsMH8+OOPxsfHxwQFBdk9V1hYmAkODjZNmzY1mzZtMlFRUcbLy8t07NjR/Pnnn+b06dPm6tWr5vr168YYY9f3mzHGHD9+3DRt2tScPHnSHD582AwbNsx0797dHDt2zFy9etUcP37c+Pv7m61bt5patWqZY8eOJViWRz/PIiIizIMHD8yYMWNMx44dzZo1a2zXR0VFmfDw8ATL8rR8J06cMBUqVDAtW7Y0N27cMMYYExkZaXr16mW++eYb8+eff9otT2BgoClevLj57bffbPmMMebYsWOmW7dupk+fPrb3/PXr182FCxfslu3R9/GePXtM27ZtTZMmTWyfIxEREWbv3r1mx44d5uLFi3bJdfPmTdv7Zvfu3cbHx8cEBgYaY4y5ePGiqV69uhk+fLi5ffu2McaYNWvWGB8fH1OtWrUEfe8bE3+dHT582Bw9etQY8/BvafPmzc2oUaMS9Of/ndh848ePN15eXsaYh6/h/fv3jbe3t+1vfOzfd3uI+xkQFBRkatWqZU6cOGGMMeb06dOmR48eZujQocYYY9q0aWO2bdtmt2yxfH19TcWKFU1QUJA5duyY+fLLL80333xju/7cuXPmzp07dssT93vg0aNHzciRI82OHTuMMQ//1jdu3Nj8/PPP5saNGyY6OtosWbLE/PLLL6Zq1arm+PHjCZ4vICDAdOnSxQwdOtTcuXPHLFy40LRt29Z07drVLF261FSrVs388ccfCZ4jVtzfywULFpimTZuaL7/80vb9OjQ01HTs2NGULVvWrq9jdHS06d27t9m4caMxxpjg4GAza9Ys06RJE+Ph4WEGDhxo7ty5Yy5fvmwuX75s+0zD/3AM+b/Q2bNnlShRIuXLl09jxoxRu3btdPToUX344YfasmWLcuXKpY4dO9p1MisTZ4vdrFmz1KlTJ33xxReaOXOm0qVLp+3bt2vAgAHq1q2bJkyYoP79+8ebgCshHTt2TN7e3urevbs6deqkHj16aMCAAVq2bJmcnJzk5OSkmJgYlS5dWlOnTrXN0p3QLl++rODgYFsGd3d3ZcmSRX5+fmratKlOnjypwYMHK3/+/Grbtq2aN29ul2OlYo+3Pn78uOrVq6fChQvblkVFRSkiIkI//vijTp06pbp166pWrVp2mwRv27ZttslKChcubJv0rk6dOvLw8FBgYKAtX7169Sw5zdP58+e1ZMkSTZ06VW3atFG3bt1UoUIF/f777ypdurRGjhypNm3a2H2PjfRwpv6wsDDlzp1bs2bN0v79+9W8eXNlzZpVY8aMUfPmzXX37l2lS5dOUsLPsHvmzBn98ssvkh5O3vPzzz9Lkt577z3lzp1blStXVqpUqTRhwgSdO3dO6dKl07Zt2/Trr79qyJAhCToEL/a5z5gxQz169FCdOnU0ffp0lS9fXm+//bb++OMP2wQ+iRIlsssIEWPin7UiR44c6ty5s4KDg20TZLq4uKhv3756//33lTlz5gTPJD0csTJkyBC9++67Cg4O1v79+23rz93dXU2bNlVUVJSmTJmiAwcOKF26dHY7TCnu36Y9e/Zo165dSpcunVq0aKGcOXNq6dKlOnjwoFxdXVWwYEEVK1bMLnt5Q0JCNGPGDF27dk2StG7dOk2dOlVXrlxRRESEsmTJokmTJsnf318jRoxQWFiY3nvvPSVPnlxjx45N8OGnceeA+fHHH/X9999r+PDhKlmypBo2bKhTp05p0KBBCZrhUXHnAon9XcicObMOHjyooKAgubq6KmnSpLp06dJjzyOh3bhxQz169NCDBw9s+bJmzaq33npLxhi9/fbbKlSokO24fx8fHxUvXtzu83NcvXpVjRo1su05nTdvnk6fPq0vv/xSkpQtWza7nWUmNDRUPj4+unDhgowxmj59ulauXKkzZ84oMjJSn376qVq1aiU/Pz/99ttvCgsLU86cOfXgwQONHTs2wfauxr4mBw8e1JAhQ1SoUCGtW7dOI0eOVOHChfX111/LyclJQUFB6ty5s8qWLWvXieWkh2f5WLx4sWrVqqXr16/Lz89Pt27dUrJkydS/f38VL15cd+7csUumgwcP6uTJkzp79qzOnj2rY8eOqXXr1tqxY4fy58+vn3/+WatWrdLOnTuVKVMmZcqUybLTsDk0izYE4CXduHHDdOnSxezcudMsWbLE9OzZ0+zbt88Y83CL1JdffmnOnj1rWb558+aZunXrmgsXLpjt27ebLl26mHHjxpl9+/aZjRs3mmXLlpnz58/bLU9gYKAZO3asbc9M7NbyZcuWmUKFChlfX19jzP/2UtvLrl27TP78+U2tWrVMQECAuXTpkjHm4dbiUaNGmWvXrpkDBw6YatWqmREjRtgtlzH/W0deXl5m9OjRxpiHe93iXtelSxfj4+MT7zp75BoxYoRp3LhxvD1/UVFRtn9XqlTJLFy40C55Yu3evdv89ttvZsyYMWbFihXm0qVLpkePHubSpUu2PSaBgYGmWbNmdltXccW+r48ePWp27txpDh8+bI4fP26mTJlimjVrZvbt22eioqLM9u3bnzgaIiGdOnXK7Ny507ZHftq0acbT09PMmjXLdpt9+/aZgQMH2vbQ3b1714SEhNgl3+zZs03jxo1NSEiI+f77703btm1NTEyMuXPnjhk6dKjp3bu3CQ0NtUuWuJ9PCxcuNF5eXmbgwIHmypUrxs/PzzRq1MgsXrzYti7t5cSJE6ZOnTrm8OHD5sKFC6ZTp05myJAhZv/+/fFud/ToUdOvXz9z7do1u+aLNXv2bOPp6Wk6d+5sPvvsM/P777+bP/74wwwYMMB07Ngxwfc4PyoqKspcvXrVXLx40fz666/GmIefubVr1zbHjh2zfa5dvHjR7Nq1y67ZYi1YsMA0btzYXL9+3Xh5eRl3d3czaNAgY4wxq1atMp07d7aNzLCnlStXmsmTJ5vdu3eb4OBg06lTJzN06FCzdu1as3btWuPp6WnOnTtntzwxMTEmPDzcnDhxwpw+fdocPXrUXLt2zVStWtX2uWWMMZs3bzYtW7Y0d+/etcue+yd9p1mwYIEpV65cvFEgXl5ejy1LaLF7SIODg82ZM2fMvHnzTFRUlOnTp4/p2LGj2b9/v20dbd68Od5oN3t8V9u1a5cZPXq02bBhgzHGmDt37pgvvvjC9OjRw9y8eTPebe2RJ+7POHjwoG2UmzH/G804duxY2++jvTJFRUWZatWqmW3btpm1a9eaYsWKmTJlypiePXuaI0eOmIiICGOMMaNGjTJbt25N8Ez/ZhTyf5nw8HDTrFkzWxkyxpj169ebwYMHm+rVq5t169bZNU9QUFC8L16DBg0yO3futF0+evSoKVasmO2Dw542bdpkqlevbvsy8+gH1LJly0yxYsXsOkQ9doj8+vXrTZ06dUypUqXMl19+aYYMGWKGDRtmHjx4YNq0aWPLdOjQIbsO7dywYYPp3bu3McYYHx8fU69ePdt1ERERtnXYt29fW/G1xwf/0aNHzfHjx82tW7eMt7e36dixo/H397ddH1t8BwwYYNdh6oGBgaZq1apm9uzZ5scffzTffvut+eSTT0yVKlXi5fPz8zPNmjWzW5GMFfuFZuPGjaZSpUqmR48eplSpUmbChAnG39/fTJ482TRo0MDufyivXbtmdu/ebYx5+NqVKVPG9kV/5syZpkOHDmbu3Lm228eut4R+rz36+MOGDTM3b940M2bMMC1atDAPHjwwLVu2NJs2bTKXLl2ypIxMmzbNNG7c2GzevNmULFnS9OnTxxjzsKRUq1bNLFu2zERHR9vl9zI4ONgEBQXF2wi8f/9+8+OPPz6xlNt7WH+sLVu2mBo1atg2fPr7+5saNWqYrVu3miNHjphhw4bZdUNB3DK2aNEi06xZM9vhNoMGDTJffPGFOXToULyNjfY+fMSYh5/zhw8fNidPnjSjRo0yu3btMnnz5rVtWLFiY9TixYtN2bJlTe/evY27u7vZvHmzOX78uBk7dqz5v//7P9O2bVu7bly5deuW+fnnn40xxjx48MBMmDDBVKhQwVy/ft3MnDnTfPrpp2batGlm7ty5pmLFinYb3hx3nfn7+5upU6eauXPnmq1btxofHx/TtGlTs2vXLvP777+bli1b2nVDXlhYmPnss8/MyJEjjTHGLF261HzxxRdmwYIFJjIy0nTt2tV07tzZ7N69O97vij1/B0aMGGHy5ctnpk2bZvvcunPnjqlWrZrp0KGDrWjaQ9znvWbNGuPl5WW+/PJL0759e9vfoP3795vSpUubiRMn2u0wjdjPpx9++MGsXr3aGGPMhQsXzNWrV+Pd7vfffzfVqlWz6864fyMmdXNgcSeJCA4OljFG6dOnV/fu3TVy5EgdO3ZMWbNm1ZkzZ5QiRQp1797dbpMwGWMUFhamMWPG2CYLyp8/v86fP69ly5bZZjDPlSuXypcvH+9+9hhCtmnTJrVr104tWrSQh4eHzMONT/F+dvXq1RURESEfHx9VrlxZyZIlS/BsscPTy5QpI2dnZwUGBurGjRuqXLmyfHx8NGTIECVOnFhz585VmTJl7Ho+9E2bNsnHx0edOnWS9PBUYoGBgWrXrp3Gjh1rm3xpxYoV2r17t5o1a2Z7TgkpNDRUv//+uy5duqSOHTvq66+/1rRp07R69WpJ0ueffy43NzetXLlSBw4c0LfffpugeWJt3rzZNoFJsWLF1KBBA924cUOjRo2Sr6+vevbsqcDAQDk5OenPP//UyJEjlTx5crtki/3scHZ21qlTpzRixAgNHDhQHh4e2rVrl2bNmqVUqVKpZs2aCgsLs8uEX3EFBQVp+PDh+vzzz5U2bVqNHz9e3333nZImTaqOHTvK2dlZAQEBioqKUuPGjW35EvK9Fvfz4fjx47YZa7/88ku99957mjx5sqSH5/V+44037DYcPK6zZ8/aXr/p06erQIEC6tChg8aMGaM2bdro/v37Kly4sG3ypoQUHBysevXqqX379vL09JT0cB3mz59fX331lWbOnKlVq1YpOjpahQoVkiRLZlOXHp6XvUCBAsqcObMiIyP1+eefa9++fVq4cKG8vLz07rvv2u3c2cYYOTs768KFC0qUKJHq1Kmj5MmTy8/PTzExMerZs6f69u2rnj172mbzl+w39FqSFi5cqLx58+qdd97RxYsXdfbsWeXKlUsFChRQ+fLltW3bNrVu3dpunxuxz33NmjW6ePGiZs2apSxZsqhQoUJq3ry5JkyYoLZt2yo8PFwxMTFKmjSpXXJJ0r1793Tu3Dm1bt1aSZMmVefOnXX79m199913mjp1qtKlS6edO3cqIiJCvXv31ieffGKX70Gxjz9z5kz5+vqqRIkSOnHihBYvXqyaNWuqWLFiGj16tJImTaoff/zRdphSQjPGKHHixLYJ2zJlyqTGjRsrUaJE+v333yVJgwYN0o8//qjZs2crZ86cSpEiRbznlFC5nJycdPnyZaVNm1adO3dWmjRptGjRIhUoUED58uVTypQp9dtvv9kOj7CX2Oe9ePFiLV26VD/99JPy5cunP/74QzNmzNDXX3+t/Pnzy8fHR6lSpbLL578k29lrMmbMqCNHjqhixYrKmjWrbt26pZkzZypJkiQKDw/XnDlzNHbsWL311lt2yfWvZdGGAPyNW7dumc8++8xs27bN3L592zRs2NA0b97cLFmyxJw9e9b07NnT0uEfsVvg7ty5Y7777jvTp08fc/bsWbN//37TsmVLM3nyZGPMwy2flStXtuuWsYCAAFO9enXTrVs306ZNm3ijBp60hdVeey23bt1q+vXrZ5o2bWp+//13ExYWZvz9/U27du3MuHHjbNmHDx9uPv3008eGRSWkwMBAU7BgQdtkKrFbhI8dO2bq1q1r6tata/r372+8vLxM9erVzV9//WW3bMY83Po7bNgw07FjRxMUFGRu3bplvLy8TKdOncyff/5p1qxZY+rVq2e3XFu3bjVFihSx7RmMu+fv0qVLpn///mbcuHFm7ty5Zvr06ebMmTN2yWXM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\n",
      "text/plain": [
       "<Figure size 1008x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "# 数据\n",
    "attack_types_1 = ['Generic', 'Exploits', 'Fuzzers', 'Reconnaissance', 'DoS', 'Analysis', 'Backdoor', 'Shellcode', 'Worms']\n",
    "attack_counts_1 = [215481, 44525, 24246, 13987, 16353, 2677, 2329, 1511, 174]\n",
    "attack_types_2 = [\n",
    "    'DDoS-UDP', 'DDoS-ICMP', 'SQL-injection', 'DDoS-TCP', 'Vulnerability scanner',\n",
    "    'Password', 'DDoS-HTTP', 'Uploading', 'Backdoor', 'Port-scanning',\n",
    "    'XSS', 'Ransomware', 'Fingerprinting', 'MITM'\n",
    "]\n",
    "attack_counts_2 = [\n",
    "    97253, 54351, 40661, 40050, 40021,\n",
    "    39946, 38835, 29446, 19221, 15982,\n",
    "    12058, 7751, 682, 286\n",
    "]\n",
    "\n",
    "\n",
    "df1 = pd.DataFrame({'Attack Type': attack_types_1, 'Count': attack_counts_1, 'Dataset': 'UNSW_NB15'})\n",
    "df2 = pd.DataFrame({'Attack Type': attack_types_2, 'Count': attack_counts_2, 'Dataset': 'Edge-IIoT'})\n",
    "\n",
    "\n",
    "df_combined = pd.concat([df1, df2])\n",
    "df_pivot = df_combined.pivot_table(index='Attack Type', columns='Dataset', values='Count', fill_value=0).reset_index()\n",
    "\n",
    "\n",
    "attack_types = df_pivot['Attack Type'].tolist()\n",
    "counts_dataset_1 = df_pivot['UNSW_NB15'].tolist()\n",
    "counts_dataset_2 = df_pivot['Edge-IIoT'].tolist()\n",
    "bar_width = 0.35\n",
    "index = np.arange(len(attack_types))\n",
    "\n",
    "\n",
    "background_color = \"#f0f0f0\" \n",
    "custom_color_palette = [\"#BEB8DC\", \"#CFEAF1\"] \n",
    "sns.set(style=\"whitegrid\", rc={\"axes.facecolor\": background_color})\n",
    "\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(14, 8))\n",
    "\n",
    "bars1 = ax.bar(index, counts_dataset_1, bar_width, label='UNSW_NB15', color=custom_color_palette[0])\n",
    "bars2 = ax.bar(index + bar_width, counts_dataset_2, bar_width, label='Edge-IIoT', color=custom_color_palette[1])\n",
    "\n",
    "\n",
    "ax.set_xlabel('Attack Types', fontsize=14)\n",
    "ax.set_ylabel('Counts', fontsize=14)\n",
    "ax.set_title('Counts of Attack Types by Dataset', fontsize=16)\n",
    "ax.set_xticks(index + bar_width / 2)\n",
    "ax.set_xticklabels(attack_types, rotation=45, ha=\"right\", fontsize=12)\n",
    "ax.legend()\n",
    "\n",
    "\n",
    "plt.tight_layout()\n",
    "\n",
    "plt.savefig('Attack_Types.pdf', format='pdf')\n",
    "\n",
    "\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsQAAAGkCAYAAAA2STNEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABLcElEQVR4nO3deZzNdf//8eeYzZiZi7GFkGTNjC27EJK1upq0IEohXRSlrstWJGvIXigXbnKVyhaX1Le0KcmWIbRQQi7DjGFmjNnO+f2B82sM78/gmM+Zz3ncb7duN3M+M5/zOo8sL8fnnAlwu91uAQAAAH6qkN0DAAAAAHZiIQYAAIBfYyEGAACAX2MhBgAAgF9jIQYAAIBfYyEGAJv4w5v8+MNjvBb0AXwDCzGAq9amTRtVr15dkyZNuuTxI0eOqHr16qpevboSExMlST179tSTTz7plfvfvHmzqlevrl27dnnlfJdz+PBhz+O48F90dLTatGmjl19+WQkJCVd8zl9++UWPPvqo12bcu3ev/vnPf+qOO+5Q7dq11b59e02aNMnTPb+dPn1aQ4YM0Y8//mjL/V+NoUOH5vr//Nf/0tPTvXZfGRkZGjt2rD777DOvnRPA1QuyewAABVtAQIA++eQT/etf/8p17OOPP85126hRo1SokHf+Ll6rVi0tW7ZMt9xyi1fOZ+W5555T48aNJUlpaWn6+eefNXfuXH355ZdatmyZSpUqledzrV+/3muL/OrVqzVixAjVq1dPzz33nEqXLq39+/dr/vz52rBhg5YuXaqSJUt65b7yau/evVq7dq0ee+yxfL3fa1WhQgVNmTLlksdCQkK8dj/x8fFasmSJGjRo4LVzArh6LMQArkm9evW0fft27dmzR7feemuOY+vXr1f16tX1008/eW6rUqWK1+47IiJCdevW9dr5rNx000057q9p06Zq1qyZunbtqsmTJ+vVV1/Nt1kuOHDggF588UV16NBBkydPVkBAgCSpSZMmatGihe6991699tprGj9+fL7PVhAVLlw4X39OAfANXDIB4JrUrFlTFStWzPVs8J9//qldu3apffv2OW6/+JKJlStXqnPnzoqJiVHLli01fvz4HP80bTp+8SUTPXv21IQJEzRt2jQ1b95cderU0T/+8Q8dO3bMcz6Xy6XZs2erZcuWqlOnjp5++mktWrRI1atXv6rHX7VqVbVv317r1q3TmTNnJJ27LnTx4sW6++67FRMTo3r16ql3796evxjMmjVLs2fP1pkzZ1S9enWtWLFC0rnl9plnnlGTJk08l2TMmTPHeJ3p0qVL5XK5NHToUM8yfEHFihX1/PPPq2bNmp7bUlNTNWnSJLVp00a1a9dW165dtXHjRs/xy12G0qBBA82aNUuStGLFCjVu3FibNm3Svffeq+joaHXq1Mnzz/+bN29Wr169JEldu3bV0KFDJUk7d+5Ujx49VK9ePTVq1EjPPPOMjhw5ctnHNmvWLHXp0kWrV69W69atVa9ePT355JM6fPhwjs/bvXu3Hn30UdWpU0dNmjTRK6+8orS0NM/xnj176sUXX9QTTzyh+vXrX/YSn7w6c+aMXnnlFTVr1ky1a9dWz549tWfPnhyfExcXp759+6pBgwaKjo5W+/bt9e6770o6dwlO27ZtJUmDBg1Sz549JZ27BGnMmDE5zjNu3Di1adPG83H16tU1d+5cde7cWY0bN9b69evz1ACAGQsxgGvWrl07/d///V+O2z7++GPVqVNHZcuWvezX7dixQ8OHD1eXLl20YMEC9e/fX++++65mz56dp+OXsnz5cu3cuVPjx4/X6NGjtXnzZk2YMMFzfPr06Zo7d666d++umTNnSpKmTp16LQ9fTZs2VWZmpmeJ/Pe//60pU6aoa9euWrBggV588UX9+uuvGjZsmCTpgQceUNeuXVW4cGEtW7ZMd9xxh1JTU9WrVy8lJSVp0qRJmjdvnho3bqyZM2fq888/v+x9b9y4UbVq1brsJRE9evTwLFwul0t9+vTRihUr1K9fP82aNUvlypVTv3799PXXX1/RY05NTdXw4cPVo0cPzZs3T1FRUXr22WeVlJSkWrVq6aWXXpIkTZgwQf/4xz+Ulpamfv366YYbbtDrr7+uV155RXv27NFzzz1nvJ8jR47o1Vdf1cCBAzVhwgQdOHBAjz32mDIyMiRJv/76qx555BEFBARo+vTpev7557Vu3ToNHjw4x3lWrFih8uXLa+bMmerYsaPxPrOysnL9d4Hb7dZTTz2l//73vxo8eLBmzJihkJAQ9ezZU3/88Yekc38Z7NWrl4oUKaIZM2Zozpw5uvnmmzVq1Cjt27dPpUuX9vwcfu655zRq1Kgraj979mz16NFDo0ePVoMGDfLcAMDlcckEgGvWoUMHLViwQPv37/dcz7t+/XrLxWPbtm0KCwvTE088oZCQEDVq1EjBwcEKDg7O0/FLCQwM1Lx58xQaGipJ2rdvn9577z1JUkpKihYuXKgnn3xS/fv3lyS1bNlS9957b47LOq5U8eLFJcnz4rqjR4/qH//4h+dFc40aNdLp06c1YcIEpaamqkyZMipTpowKFSrk+ef53bt3q2LFipo+fbrnfE2bNtWnn36qLVu25HiW8K+OHTuW61KVy/niiy+0fft2vfXWW2rRooUkqVWrVnrooYc0bdo0z215kZmZqRdeeEGdOnWSJJUoUUL33nuvNm/erPbt23sujalataoqVqyouLg4JSUlqWfPnqpXr54kKSoqSt99951cLtdlrys/c+aMZsyYoZYtW0qSKleurHvuuUf//e9/dd999+n1119XiRIlNH/+fM81vpUqVVKPHj20ZcsWNWzYUJIUHh6ukSNHGn/uSOde7FirVq1ct3/wwQeKiYnRxo0b9d1332nhwoVq1qyZJKlFixbq3Lmz3njjDU2YMEG//PKL6tatqylTpnjur06dOmrcuLG2bt2qGjVqeJ61v+mmm674MqLmzZure/funo/Hjx+fpwYALo+FGMA1q127tsqVK6dPPvlETz31lP73v/8pLi5O06dP16ZNmy77dXXr1tWZM2d0zz33qGPHjmrdurW6du3q+ad/q+OXUr16dc8yLEllypTx/NPxzp07lZGRoTvvvNNzPCAgQHfdddc1LcQXGzlypCQpMTFRBw4c0IEDB7RhwwZJ595dIDw8PNfXREdH6z//+Y8yMzP166+/6vfff9eePXuUlZXleTb0UgoVKiSXy5WnubZs2aLw8PBci2+nTp00fvx4paSk5PUhSlKOa23LlCkjSZf9Z/rKlSurWLFi6t+/vzp37qxWrVqpadOmatSokfE+IiMjPcuwJFWrVk0VKlTQ1q1bdd9992nz5s1q27atChUq5Hkmt27duoqIiNCmTZs8y2DFihUtl+ELn/faa6/luv3C0rp582aFhYWpYcOGOZ45vv322z3/j1u1aqVWrVopPT1d+/bt0++//+751wPT/8u8uvhFpHltAODyWIgBeMWFyyaeeuoprV+/XrVr1zZeLiGduy719ddf18KFCzV//ny9/vrrqlChgiZNmqTbbrvN8vilhIWF5fg4ICDAcw3uyZMnJf3/Z3Qv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6xISEtSlSxd9+umnl53v8OHD6tChg7p166bevXtf9r7uvvtu7d+/X5I0ZMgQjRo1SpK0Y8cO9evX74qCAYCdihUrZvcIPo0+1mhkRh8zp/YJMh0cOXKkevXqpSeffFLPP/+8li9frrCwMPXp00e7d++WJB06dEjLli1TQkKCYmNj1bx5c5UqVcpzji+++EI1a9bUzJkzlZGRoc6dO+vHH3/UoUOHtH37dq1Zs0aZmZnq3r27OnXqJOncpRr9+vXTwIEDdeeddxofwG+//aa33npL5cuX19q1ay95X61atdKmTZt0yy236Oeff/Z87ddff6077rjjatsBQL5LSkpy7B9I3kAfazQyo4+ZU/sYF+ILtmzZotatW3vee27RokWeY7GxsQoODlaZMmVUv359bdu2TR06dPAc79Kli+Li4rRo0SIdOHBASUlJOnPmjLZs2aKOHTsqJCREISEhWr16tedrRo0apZIlS+quu+6ynK1EiRIqX7688b5atWqlRYsWqUmTJqpSpYoOHDighIQEffXVV5o5c2aeQgHAtfj111+9dq4TJ0547VxORB9rNDKjj5kT++RpIQ4KClJAQIDn42PHjnnehy4wMNBzu8vlUlBQzlMuWbJEH3/8sR588EE1a9ZMP//8s9xud65zHj58WMWLF5ck9e3bV19++aXeeecd9ejRwzhb4cKFLe+rfv36Gjp0qL799ls1atRIJUqU0Pr165WVlaVy5crlJQEAXJMqVap45Tzx8fEqXbq0V87lRPSxRiMz+pgV1D6ZmZk6ePDgZY8bryEOCgpSVlaWGjRooC+//FKpqanKysrSkCFDPJdMfPTRR3K73Tpy5Iji4uJ022235TjHN998o4ceekj33HOP0tPTtW/fPrlcLjVs2FCffPKJMjMzlZaWpj59+ujYsWOSpJo1a2rUqFGaPXu257a8uNx9BQUFqXbt2lqyZIkaNWqkJk2aaO7cuWrVqlWezw0AAABnMj5DXKJECZUrV04TJ07UI488oocfflgul0vt2rVTs2bN9OGHH+rs2bO6//77lZGRoTFjxigqKkq7du3SzJkz9eabb+rRRx/V6NGjNX/+fEVERKhevXo6fPiwHnjgAe3evVuxsbFyuVzq1auXbr75Zs99V6pUST169NCYMWM0Z86cPD2Yy92XJLVq1UpbtmzRLbfcolKlSikhIYHr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FBwcrGnTpiksLIxG52VnZ8vlciktLU1ZWVnKyspSRESE3/d57733NGrUKJUuXVrSlf+6yszM1JYtW9S+ffsctzvFxX1CQkI0atQoRUREKCAgQNWqVdOff/7pt32k3I0kKSMjQy+99JKeeeYZz23+2ujiPt98843q1q2rGjVqSJJGjhypdu3aObpPkN0DFATx8fEqVaqU5+PSpUsrLi7OxonsUbVqVc+Pf//9d3300Ud65JFHcrU5duxYrmalSpXSsWPH8nVeO7z00kt69tlndfToUUmX/rnjz30OHjyo4OBg9e/fX0ePHtUdd9yhqlWr0ui8iIgIDRo0SB07dlRYWJgaNmzIzyFJ48aNy/HxlTY5efKkIiIiFBQUlON2p7i4z4033qgbb7xRkpSYmKilS5dqwoQJfttHyt1IkqZOnar7779f5cuX99zmr40u7nPw4EEVKVJEzz77rA4cOKD69etr6NCh2rNnj2P78AxxHrhcLgUEBHg+drvdOT72N7/88osef/xx/fOf/1SFChUu2cYfm73//vsqW7asmjZt6rntch38sY907hnQTZs2afz48Vq2bJni4uJ06NAhGp23b98+LV++XJ9//rm+/vprFSpUSL///jt9LnKlv64u1cYfWh07dkyPPvqo7r//fjVu3Jg+f/HNN9/o6NGjuv/++3PcTqNzsrOztXHjRj333HNasWKF0tLSNH/+fEf34RniPChTpoy2bt3q+fj48eM5/tnFn2zbtk3PPPOMhg8frs6dO+v777/X8ePHPccvtClTpkyO20+cOOH4ZuvWrdPx48d177336tSpUzpz5oyOHDmiwMBAz+f4cx9JKlmypJo2barixYtLku68806tX7+eRudt3LhRTZs2VYkSJSSd+2fHBQsW0OciFz92qybFixdXcnKysrOzFRgY6Be/h+/fv199+vRRz5499fjjj0vK3c2f+6xdu1a//PKL7r33Xp05c0YnTpzQ4MGD9cILL9BI536vrlOnjipUqCBJ6tixo95++23FxsY6tg/PEOdBs2bNtGnTJiUmJiotLU2ffPKJWrZsafdY+e7o0aMaMGCApkyZos6dO0uS6tSpo99++00HDx5Udna21q5dq5YtW+rGG29UaGiotm3bJuncK+ed3mzhwoVau3atVq9erWeeeUZt2rTRW2+9RZ+/aN26tTZu3KjTp08rOztbX3/9tTp06ECj82rUqKFvv/1WZ86ckdvt1oYNG/g1dglX2iQ4OFgNGjTQunXrJEmrVq1ydKuUlBQ98cQTGjRokGcZlkSfv5gwYYI++ugjrV69WmPHjlV0dLSmT59Oo/Nuv/12/fjjj57L/z7//HPVqlXL0X14hjgPbrjhBj377LPq1auXMjMz1bVrV9WuXdvusfLdggULlJ6erokTJ3pue/jhhzVx4kQ9/fTTSk9PV6tWrdShQwdJ0pQpUzRy5EilpKSoVq1a6tWrl12j2yY0NJQ+f1GnTh316dNH3bt3V2Zmppo3b65u3bqpcuXKNNK5P4T27Nmj2NhYBQcHKyYmRk8//bSaN29On7+4ml9Xo0aN0tChQ/XGG2+obNmyeu211+x8CNfVBx98oBMnTmjhwoVauHChJKlNmzYaNGgQffKARlLZsmU1ZswY9e/fX+np6apZs6b+9a9/SXJunwC32+22ewgAAADALlwyAQAAAL/GQgwAAAC/xkIMAAAAv8ZCDAAAAL/GQgwAAAC/xkIMAF5WvXp1Va9eXYcOHcp17J133lH16tU1bdo0SdKsWbPUrVu3a7q/FStWXPf3/Pzwww/10EMPqV69err99tv13HPP6Y8//riu9/lX69evz/ENAQDAm1iIAeA6CA4O1oYNG3Ld/umnn+b4lqaPP/643njjjWu6r06dOmnVqlXXdA6TSZMmady4cbrvvvu0cuVKvfHGGzpz5oy6d+/ueeP+6+nIkSMaNGiQzpw5c93vC4B/YiEGgOugQYMGuRbilJQU7dixQ7feeqvntvDwcBUrVuya7qtw4cKeb4ftbVu3btXChQs1e/ZsPfzww6pUqZJiYmI0c+ZMhYeHa+7cudflfv+Kt8sHcL2xEAPAddC2bVtt27ZNycnJntu+/PJLNWjQQOHh4Z7b/nrJRGZmpkaNGqWmTZuqTp066t27tw4cOGB57K+XTGzevFktW7bUsmXL1LJlSzVu3FgvvPCCzp4967nPDz/8UHfeeafq1KmjIUOG6LnnntOsWbMu+ThWrVql2rVrq2HDhjluDwkJ0YwZM9S/f3/PbStWrFCnTp1Uu3ZtxcbGavPmzZ5jbdq00fvvv+/5ePPmzapevbqysrJ0+PBhVa9eXR9//LHatWun2267Tf3791diYqKnpSTdddddWrFihVJSUjR48GA1atRI9evX18CBA7mcAsA1YSEGgOvglltu0Y033qivvvrKc9tnn32mO++887Jfs3TpUn3zzTeaN2+ePvzwQ4WHh2vYsGGWxy6WkJCgdevWaf78+Ro3bpw++eQTrVixQtK5Z3yHDx+uxx9/XCtWrFBYWJjWrVt32Zn27dunmJiYSx6rUaOGypYtK+ncMjxmzBj169dPq1evVvPmzdWvXz/9+eef5lB/MW/ePE2ZMkVz585VXFycFixYIEmeRXrZsmXq1KmTpk+friNHjmjJkiV67733lJCQoAkTJuT5fgDgYkF2DwAATtWmTRtt2LBBnTt3VmZmpjZu3Kjhw4drzZo1l/z8w4cPq3DhwipfvryKFy+u0aNH6/fff7c8drGsrCwNHz5c1atXV40aNdSiRQvt2rVL0rkX9bVv317du3eXJI0ePVobN2687GNITk5WRESE5WNdsmSJevToob///e+SpCFDhuj777/XkiVL9K9//cvy6yVp4MCBqlOnjiTp7rvv9sx84XKQqKgoFS5cWEeOHFGRIkVUvnx5hYeH69VXX9Xp06fzdB8AcCk8QwwA10nbtm319ddfKysrS999952qVKmikiVLXvbzH3nkEaWkpKhFixbq2bOn1q5dq+rVq1seu5SKFSt6fhwREaGsrCxJ0k8//ZTjGd+goCBFR0df9jxRUVF5Wjb379/vWWYvqFu3rueyjry43MwX69evn/bs2aOmTZuqb9++2rRpk6pWrZrn+wGAi7EQA8B1Ur9+fQUGBmrbtm367LPP1K5dO+PnV6pUSR9//LGmT5+uihUrau7cuXrooYd09uxZ47FLCQ4OzvHxhRemBQYG5nqRmulFa9HR0YqLi7vksffff18vv/yypHMv7LtYdna2srOzL/m1l7r9cjNfrF69evr88881duxY/e1vf9PEiRP1xBNPXPYxAIAVFmIAuE4KFSqkO+64Qxs2bNDnn39uvH5YOvcCtk8//VTt2rXTuHHjtGrVKu3fv18//fST8diVqFKlinbv3u35ODs7W3v37r3s599zzz368ccf9f333+e4/ezZs1qwYIEyMzMlSZUrV9bOnTtzfM7OnTt18803Szq37KakpHiOXeo9mi/nr29TJ0mLFi3Szp07dc8992jq1KmaP3++vv/+e504cSLP5wSAv2IhBoDrqG3btnr//fdVrFgxVahQwfi5ycnJGjdunDZu3KjDhw9r+fLlKlKkiCpVqmQ8diUeeeQRffzxx3rvvff022+/acKECTpy5EiupfOC2rVrq3v37ho4cKDef/99/fHHH9q6dav69eunM2fO6Omnn5Yk9e7dW//5z3+0atUq/fbbb5o6dar27t2rBx98UJIUExOjd999Vz///LO+//57LVy4MM8zFylSRNK5F/ilpqbqf//7n1555RVt375dhw4d0po1a1SuXDlFRUVdUQsAuIAX1QHAdXT77bfL5XJZPjssST169NCxY8c0bNgwJSUlqWrVqpo3b56KFi1qPHYl6tWrp1GjRmnOnDk6efKk2rdvr/r16+e6XOGvXnzxRVWuXFlLlizR+PHjFR4eriZNmmjChAm64YYbJEnt27fX8ePHNXPmTB0/flw1a9bUwoULPdf2Dh48WMOGDVNsbKxuvvlmDR48WIMGDcrTzFFRUYqNjdWQIUP0wgsvaNCgQUpJSdGAAQOUmpqqOnXqaO7cuQoMDLyiFgBwQYCbdzwHAL8RFxeniIgIVa5c2XNb586d9cQTTyg2NtbGyQDAPlwyAQB+ZMeOHerXr5/ncoO5c+fq6NGjatGihd2jAYBtuGQCAPxIjx49dPjwYT399NNKTk5WzZo19eabb6pUqVJ2jwYAtuGSCQAAAPg1LpkAAACAX2MhBgAAgF9jIQYAAIBfYyEGAACAX2MhBgAAgF9jIQYAAIBf+3+Hm+JeXP33vAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "feature_names = ['frame.time', 'ip.dst_host', 'tcp.len', 'tcp.ack_raw', 'tcp.srcport']\n",
    "missing_counts = [1648, 1375, 241, 748, 226]\n",
    "\n",
    "\n",
    "plt.figure(figsize=(10, 6))\n",
    "colors = plt.cm.coolwarm(np.linspace(0.3, 0.8, len(feature_names)))  \n",
    "\n",
    "plt.barh(feature_names, missing_counts, color=colors)\n",
    "\n",
    "plt.xlabel('Missing Counts', fontsize=14)\n",
    "plt.title('Missing Data Counts per Feature', fontsize=16)\n",
    "plt.grid(axis='x', linestyle='--', alpha=0.6) \n",
    "\n",
    "plt.tight_layout()  \n",
    "plt.savefig('missing_value.pdf', format='pdf')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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865rdWJiYmqMb/r06cyZM4cRI0YQHBxM586dHectXLiQF154gVGjRmGxWBg5ciSjR4+udOfoTCNHjmTz5s2MGDECRVEYPHgw+fn5FBUVMXHiRFJSUhg7diyqqtK/f38mT56MRqOpdntpaSk///wzw4YNIzw8nP79+1d7J8nf35+pU6dy44034u3tTXh4OBdffDGJiYnExsaycOFCnnjiCex2O76+vixevNhx7tixY/n222/p2rVrg7zOQgghXEPaE/+Q9oS0J4Q4m0at7n+9EKJJ6NKlC/Hx8QQHB7s6FNGE2Gw2HnzwQUaPHs11113n6nCEEEI0cdKeENWR9oRoDmRIiBBCNCMJCQnExsYSFBTE8OHDXR2OEEIIIZohaU+I5kJ6WAghhBBCCCGEEKLJkR4WQgghhBBCCCGEaHIkYSFEC3H33XeTk5MDwJAhQ9i3b1+Dlb1v3z7H+ua1WbNmDZ988kmDXfdMs2fPdqzlfqbk5GS6devGmDFjqnxZLJYqx7///vs8+eSTDRpbly5dHK/95MmT2bRpU63Hv/jii44Ye/TowbXXXut4XlZW1qCxCSGEEEII0VxJwkKIFuKXX35xdQjs3r3baR+44+Liqp0ZG8rXdl+3bl2VL6PR6JRY6mv27NmOGMPCwli4cKHj+Znr1AshhBCusGnTJiZPnlzncW+99RY//PCDU2I480bMmX777TdGjhxZZfu8efN48803AXjyyScZPnw4JSUllY7p27evY3WPo0ePMnXqVEaNGsWoUaO47bbb2LVrFwDPPfccL7/8suO8oqIievTowaOPPurYZrfb6devH0ePHq21Hl26dOH111+vtO3M13ft2rX069ePMWPGOCa/nDZtGhkZGZXOKSgoYNSoUZVuSB06dIi+fftWullz7NixWuMRormRZU2FaAKOHDnCvHnzyMvLQ6PRcPfdd3PDDTfw22+/sXjxYqKiojhy5Ag2m425c+fSr1+/Suc/9dRTANxxxx0sX74cgM8//5w5c+aQk5PDmDFjmDlzJgBbt25l6dKlWK1WPD09eeKJJ+jbt2+VmD799FNWrlyJr69vpeW9srKyeO6558jOziYzM5M2bdrw+uuvs2fPHrZu3covv/yCp6cn1157bbXHmUwmPv30U1atWoXBYMDDw4N58+YRExNDeno68+bNIy0tDavVyvXXX8+9997L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dq20zdfXlyFDhgCwbt067rrrLlauXMnSpUt58803HcdlZWXx9ttv8/7777NmzZoae0b079+fP//8E1VV2bVrF8HBwezZs4eysjJOnjxJt27dHMc++uijhIaGsmDBAgByc3O55ZZbWLVqFSaTif/+97/k5OTw6quvsmDBAj799FN69+7tOL6m61955ZVMmzatUrICYMGCBVx//fV88skn9O7d27F98+bNDBs2jBUrVvDZZ5+xatUq8vLyePTRR+nWrRuPP/44e/fuxWAwsGLFCtauXUtRURFxcXGVyv/777/58ssv+c9//sMnn3zCwYMHOXDgAAsXLuSSSy7h008/5dVXX+WFF14g+3RvAovFwueff8748eMBiImJ4YsvviA0NJS33nqLN954g48//pjLL7+ct956C4vFwnPPPcfzzz/PZ599RkxMDBs3bqwU65nmzJnDzTffzKeffsrMmTN58sknsZweFpGens7y5ctZtGgRS5YsqfE1bQyK1Qraqh9NZC4IIdyb9LAQohnK2bqNnK3bCLluuNwpEEKIRuAf2qvOXhAn/ngTm6Xq3WG9MYDI7rfXO4aKISGKovD6669z/PhxLrvssvMqQ6vVYqxhpQOAGTNmEB8fz3/+8x8SEhIoKSlx7Bs6dCheXl4ADBw4kD179tCpU6cqZfj6+tK2bVuOHDnCrl27mDhxIn/88Qfe3t5ccskltc61FBoaykUXXQRAhw4dyMvL46+//qJ79+60bt0agBtvvJGVK1eeV70r7NmzhxdffBGA4cOHO76/7bbb2LVrFx9//DFHjx7FarVSWlpa6dyLL76YgIAA1qxZw4kTJ0hKSqr0+lSUP3DgQHx9fQH4v//7PwB27drFM888A0CbNm246KKL+OuvvwAc9a1Q0fOjoufFfffdB4CiKI7eF6GhoXTu3BmABx54AIDdu3dXqW9JSQnJyckMHjwYgJ49e+Lv709iYiIAl112GRqNho4dO1JQUHB+L2YDS1/zJbacXIKHX0vh77tkLgghBCAJCyGaneKDh0j96FN8e/Uk/Kbxrg5HCCHEacFRgyvNYQGg0RoIjhrcoNfRarU89NBD3HbbbXz88cfcfnvNyZAXX3yRAwcOoKoqs2fPplu3bhw4cIABAwY4jikqKuK5557jtddeY/bs2fj5+XHllVcydOhQNm/e7DhOr/+n2aiqaqXnZxs4cCA7d+4kMTGRJ554gvvvvx+NRsPAgQNrrZvurMkSVVVFVdUq2+x2e6XnADabrdayATQajeN4jUbjuN7rr79OSkoK1157LYMGDeL333+vct2ffvqJZcuWMXHiREaNGkV+fjXJKb2+UkImMzMTT0/PWuvg4eFRaV/Fc0VR6N27N4sWLQLAbDZTWlpKcnJypWsUFRVRfPZKGacp1SznWd21XT1hd9H+v8jetJngfw2m9S03wy03k5CQUGXCWCGE+5EhIUI0I5bMLE6++X8Yw0KJun8ammq6TgohhHAN/5AehLa/Hr0xACjvWRHa/voGmXDzbHq9nhkzZrBixQqysrJqPG727Nl88sknrFixgu7duzNp0iS++OILx919m83GkiVL8PX1xWAwsHPnTqZNm8agQYOIj48HcHy43bJli2Mlkh07dtQ6qeWAAQNYu3Yt7du3JzAwEL1ez44dO6r0CNHpdJWSD9W56KKL2L9/P6mpqQB89dVXjmsHBgZy7NgxoDyhcGa51SUwLr30Ur777jsAtm3bhtlsBmDnzp1MnjyZa665hsTERDIyMlAUpVJ8O3fu5JprrmHUqFH4+fmxa9euKrH36dOHuLg4SkpKsNlszJ49mwMHDnDJJZc4Vj9JSUlh79699OzZs85679u3z9Eb4v3332fJkiVERUWRk5PjqPeHH37omDPj7Hh8fX1p3bo127ZtA8pXiMnOzqZjx461Xrsx2QoLSV7+Hh6tI2g16WZXhyOEaGKkh4UQzYRiNnPy9TdQ7XaiH34I3XlMsiaEEKJx+If0cEqCojqxsbH07NmTZcuWOYYb1CUmJoZ58+axaNEiysrKsNlsXHrppTz66KMATJkyhXvuuQcPDw86depERESEI1EQERHBlClTMJvN3HnnnbRv356cnJxqr9OuXTtUVeXiiy8GyodTHD16tMoEoSaTifDwcO67774alw41mUw8/fTTPP7441itViIiIhyrjEydOpWFCxfy3nvvcfnllzvO6d+/P2+//TZ+fn7861//cmyfNWsWc+bM4auvvqJbt274+PgAcMcddzBnzhw8PDwIDw+nW7dupKam0rlzZwoLC5kzZw6TJ0/m2WefZfPmzRgMBnr37u14bSp07dqVCRMm8O9//xtFURg8eDD9+/enffv2vPzyy2zYsAGNRsMzzzxDSEhIre9VSEgIzz77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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Adjusting the plotting code to include grid lines and specify line colors\n",
    "fig, axs = plt.subplots(1, 2, figsize=(15, 5))\n",
    "\n",
    "# Define a list of colors for the plots\n",
    "colors = ['r', 'b', 'y', 'r', 'b', 'y']\n",
    "custom_labels = {\n",
    "    'Group 1': 'RT-Cabi without data correction',\n",
    "    'Group 2': 'CNN',\n",
    "    'Group 3': 'RT-Cabi',\n",
    "    'Group 4': 'RT-Cabi',\n",
    "    'Group 5': 'CNN',\n",
    "    'Group 6': 'RT-Cabi without data correction'\n",
    "}\n",
    "\n",
    "\n",
    "# Plotting the first three groups with grid lines and specified colors\n",
    "for i, (name, data) in enumerate(list(full_data_groups.items())[:3]):\n",
    "    axs[0].plot(range(1, 21), data, marker='o', label=custom_labels[name], color=colors[i])\n",
    "axs[0].set_title('Comparison of model accuracy \\n on the dataset Edge-IIoT')\n",
    "axs[0].set_xlabel('Round')\n",
    "axs[0].set_ylabel('Accuracy')\n",
    "axs[0].legend()\n",
    "axs[0].grid(True)  # Add grid lines\n",
    "\n",
    "# Plotting the last three groups with grid lines and specified colors\n",
    "for i, (name, data) in enumerate(list(full_data_groups.items())[3:]):\n",
    "    axs[1].plot(range(1, 21), data, marker='o', label=custom_labels[name], color=colors[i + 3])\n",
    "axs[1].set_title('Comparison of model accuracy\\n on dataset UNSW_NB15')\n",
    "axs[1].set_xlabel('Round')\n",
    "axs[1].set_ylabel('Accuracy')\n",
    "axs[1].legend()\n",
    "axs[1].grid(True)  # Add grid lines\n",
    "\n",
    "plt.tight_layout()\n",
    "\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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SujVqxeHDh065zjat2/PW2+9Ve7YmV/fxYsX06tXL8aMGcPo0aO55ppruO+++0hNTS33mpycHEaNGlXu5tT+/fvp2bNnuRs3hw8fPmc8QtQ30tZUCC85ePAg06ZNIysrC5VKxZ133sm1117Lxo0befPNN4mKiuLgwYM4HA5eeuklevXqVe71zzzzDACTJk3io48+AuCbb75h6tSpZGRkMGbMGB577DEAVq9ezfvvv4/dbsdoNPKf//yHnj17VohpwYIFzJ07F39//3LtudLT03nhhRewWq2kpaURERHBW2+9xbZt21i9ejXr16/HaDRy5ZVXuj3PYrGwYMECvv76a3Q6HQaDgWnTphEdHU1KSgrTpk3j5MmT2O12RowYwb/+9S/efPNNUlNT+fe//83MmTOr1ZPdbrczY8YM4uLisFgsWCwWV4u0xMREnn32WbKzswkNDUVRFEaPHs3YsWPZtm0bs2fPprCwELVazUMPPcTQoUNr5PsqhBBCNDQbN24kOjraI9e+2JsyycnJvPzyy7z88stun3/kkUd49NFHGT58OACbN2/mvvvuY9WqVQwePNiV/CiLJSYmhnXr1mG329HpdOzcuROz2UybNm3OG8tnn31GbGwsffr0cft87969+fDDD12PX3zxRd5++21Xe9I///yTV155heTk5HKv++uvvxg5ciTTp08/bwxC1FeSsBDCCxwOB/fffz9PPfUUV1xxBSkpKYwbN44WLVoAsGPHDqZOnUrHjh359NNPefPNN5k3b165a7z66qssXryYuXPnulqOGQwGFi9eTFpaGsOGDWP8+PEUFxfz5ptv8sUXXxAUFMTBgwe54447WLlyJb6+vq7r7d27l3fffZclS5YQGhrKCy+84Hpu+fLl9OjRg3vvvRdFUbj33ntZsmQJd955J6tWraJt27ZMmDCBuXPnuj1v0qRJvPLKK6xevZqwsDB++OEHtm7dSnR0NE8++SS33347w4YNo7i4mHvuuYfmzZvz2GOPsXTpUmbPnk3Xrl0rfA2LiooYM2ZMuWOXXHIJU6dOZcGCBRw9epTly5fjcDi49dZbXQmLp556ijFjxnDLLbdw6NAhrr/+ekaPHk12djbPPPMMn3zyCZGRkaSkpHDjjTfSvn17mjVrdtHfV3cJIiGEEKImXOxNEIA5c+awdOlSzGazaz4CcOTIEaZNm0Z+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unRh5MiR3HrrrURGRrpe9/rrr/Pzzz8zevRopk2bRmRkJEajkeDgYN5++21mzpzJ6NGjeeqpp5g5c2a5155PTX1fhRBCiKqqiWT54MGDWbFiBTk5OTidznJbLtetW8eDDz7o2qq5ffv2Sm9auDtv3759jBw5kjZt2nDfffdx++23s3PnTlq1alVue+fJkycZOXKka0VjZTctWrdujV6vd92MAEhISGDjxo3ExsZWOF+v1/PGG2/w6aefum7WhISEsHDhwnItybOyskhJSaFTp04AtG3bltzcXFatWlWuAPeQIUP48MMPq1y/4kw9evTgjjvu4L333jvneX/88QcRERHn3A6j0WhYvXo1CxcuBEqLjK5cudJtvQ4h6jOVUtW15kII0QC8//77XHHFFbRp04bc3FxGjx7Nxx9/7LEq50IIIYSn7du3jxkzZpCdne0qXnnzzTezceNGpk+fzrJlywAqPD7TRx99xKJFiwgMDKRDhw4cO3aML7/8kvnz5/Ppp5/i6+uLv78/JpOJtm3b8sQTT/DFF1/w+eef8/DDD1NQUFDpee+++y7Lli3D19cXo9HIlClT6NSpE/v27XMV3XQ4HNx2222ulYyPP/44u3fv5p133inXuQxKi4y+9tprpKamoigKvr6+PPDAA64kwtNPP03btm256667XK9ZtGgRU6ZMYdWqVURGRrJ3717eeOMNDh8+jI+PD3q93rVKtMwLL7xAXFxcudatf/75J/feey9//PFHlYqBtm/fnvj4eFfywel0ctttt6FSqfjyyy9ZvHgxL7/8MpGRkahUKhwOB2azmeeee861lafMsGHDmDNnjmvLR2JiIlOnTsVqtVJSUsJDDz103hpgQtQ3krAQQjQqP//8M++//z5qtZqSkhJuvvlmbrnlFm+HJYQQQgghhDiLJCyEEEIIIYQQ4gK88sorbNy40e1zzzzzjGwLFeIiScJCCCGEEEIIIYQQdU69LCPrdDrJz89Hp9Ods9WPEEIIIWqeoijY7Xb8/PwqbTHoCXl5eYwfP54PPvigQkHcvXv38txzz5Gfn0/v3r156aWXqlwtX+YVQgghhHecb05RLxMW+fn55+yKIIQQQgjPa9euHQEBAbXyXtu3b2fKlCkcPXrU7fNPPvkkM2bMoEePHjz77LMsXLiwyvVpZF4hhBBCeFdlcwqPJiw8dSdEp9MB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CCHcOmtScd7j1ZSWlsaECRMYN24cw4cP54MPPmDmzJnVag21f/9+OnToUO6Yv78/w4YNA2DJkiXccccdfPTRR7z//vu88847rvPS09N57733+OSTT1i0aFGldzD69u3L9u3bURSFLVu2EBwczLZt2ygqKuLYsWPlPtCfeOIJQkNDmTVrFgCZmZnccsstfP3111gsFn799VcyMjJ47bXXmDVrFgsWLKB79+6u8yt7/0GDBnHfffeVm1QAzJo1ixEjRjB//ny6du3qOr5y5UquuOIKPv30U7766iu+/vprsrKyeOKJJ+jYsSNPPfUUO3bsQKfT8emnn7J48WLy8vKIi4srd/09e/bw3Xff8fnnnzN//nz27dvH3r17mT17Nr1792bBggW89tprTJ8+HevpX2BtNhvffPMNN9xwAwDR0dF8++23hIaG8u677/L2228zb948+vfvz7vvvovNZuOFF17gxRdf5KuvviI6Oprly5eXi/VM06dP56abbmLBggU89thjPP30064K3SkpKXz00Ue88cYbzJkzp9Kvqag6ncVSreNCCFGpBjKvuO2225g7d67MKxrIvGLq1Km1Oq+QFRbAjcNa88my/RW2hTS1+KAoilT0FUIQGNqNwNBu5+w/ffSvd3DYsisc1+pNRHa6+NbNZUs3nU4nb731FkeOHKFfv37VuoZarUav11f6/OTJk4mPj2fevHkcPXqUgoIC13PDhw/Hx8cHgIEDB7Jt2zbatm1b4Rr+/v40b96cgwcPsmXLFsaPH89ff/2Fr68vvXv3PufP1NDQUDp37gxA69atycrKYvfu3XTq1IlmzZoBcN111zF37txqjbvMtm3bXHswhw8fzuuvvw7ArbfeypYtW5g3bx6HDh3CbrdTWFhY7rWXXHIJJpOJRYsWcfToUZKSksp9fcquP3DgQPz9/QH473//C8CWLVt47rnnAIiIiKBz587s3r0bwDXeMmV3qcrukNx///0AOJ1OAgMDSUhIIDQ0lHbt2gHw4IMPArB169YK4y0oKCA5OZmhQ4cC0LVrVwIDA0lMTASgX79+qFQq2rRpQ05OTvW+mMKt8HFjSf50brltISqtlvBxY70YlRCirmlM84o1a9bw+eefk5CQIPOKM9TXecXx48drdV4hKyyA2K7h3DWyvWtFhcVkoHubIHYdzuKrXw+hKIqXIxRC1AfBUUNRqXXljqnUOoKjhtbo+6jVah555BHS0tKYN2/eOc+dMWOGq1DWnj176NixI3v37i13Tl5eHo8//jh2u51nn32WP/74gxYtWrg+0Mpotf/kuBVFKff4bAMHDmTTpk0kJiZy7bXX8vfffxMXF8fAgQPPGa9Goyn3WFGUCj+DFUWhpKSk3GMAh8NxzmtDaTutsvNVKpXr/d566y2++eYbmjRpwp133onZbK7wvmvWrOGFF17AaDQyatQoevbsWeH6Wq223MQpLS2N3Nzcc47BYCi/mq/ssdPppHv37syfP5/58+fz+eef8/rrr1d4j7y8PFJS3BeJdjqdFY65e29JzNcc84AYIu6cVG5FhU/baKlfIYSotoYyr1izZg2tWrWSeUUDmFe4+73Y0/MKSVicFts1nDmTY5j3wqXMmRzDv2/pxhV9I/hpw3EW/X5EkhZCiPMKDOlCaKsRaPUmoPQOSGirETVSGOtsWq2WyZMn8+mnn5Kenl7peVOmTHF9MHXq1Imbb76Zb7/91pWFdzgczJkzB39/f3Q6HZs2beK+++5j0KBBxMeXdjUo+xBatWoVNpuNnJwc1q1bd87iU7GxsSxevJhWrVphNpvRarWsW7euwp0bjUZTbpLgTufOndm1axcnTpwA4Pvvv3e9t9ls5vDhw0DpB/+Z13U30ejTpw8///wzAH/++SfFxaW1ijZt2sTEiRO5/PLLSUxMJDU1FafTWS6+TZs2cfnllzNq1CgCAgLYsmVLhdh79OhBXFwcBQUFOBwOpkyZwt69e+nduzdLliwBSqtu79ixo9zS0crGvXPnTtddi08++YQ5c+bQokULMjIyXOP+4osvXHtbz47H39+fZs2a8fvvvwOlldytVitt2rQ553uLi2MeEEP7N2fR5YtPMQ3oT1HiMZx2u7fDEkLUMw1lXnHXXXcxZMgQmVc0gHmFn59frc8rZEtIJVQqFROvjMbucPLjumPoNGquG9LS22EJIeq4wJAuHplIuBMTE0PXrl358MMPXcsCzyc6Oppp06bxxhtvUFRUhMPhoE+fPjzxxBMA3H333dxzzz3odDrat29P06ZNXR/oTZs25e6776a4uJjbb7+dVq1akZGR4fZ9WrZsiaIoXHLJJUDpssdDhw5VKORlsVgIDw/n/vvv5/nnn3d7LYvFwrPPPstTTz2F3W6nadOmrmrg9957L7Nnz+Z///sf/fv3d72mb9++vPfeewQEBHDZZZe5jj/55JNMnTqV77//nnbt2uHn5wfApEmTmDp1KgaDgfDwcDp27MiJEydo164dubm5TJ06lYkTJ/L888+zcuVKdDod3bt3d31tynTo0IFx48Zx11134XQ6GTp0KH379qVVq1a88sorLFu2DJVKxXPPPUdISMg5v1chISE8//zzPPvsszidTsLCwnjppZcwGAxMmzaNF198EYfDQUREBC+99BI2m80V6+jRo13XmTJlCm+++SYfffQROp2OmTNnotPpzvHO4mKt35nCwtWHsWYX0x0zVxcUkPv3Dkx9Lr7CvBCicWkI84oHH3wQo9FI27ZtZV7RAOYV06ZN47XXXqu1eYVKqYdLB4qLi9m1axctWrTw+KTLqSh8/ON+1m4/xU2XtWZUbHOPvt+ZEhISiI6OrrX384bGMEZoHONsiGNMSkoiKiqq3LFz7TVtSBrDOBvDGOHix+nu34HdbicxMZEuXbpUWHpaH9XkvGL9zpRydbFUipOHjn6LvnUbej7/RE2Ee0Ea4s9odxrDOBvDGKHhjdPdz1JoHJ9FjWGM0DjGWRNjPPvfwvnmFLLC4jzUKhX3jGpPSYmTb1YdRqtRcXX/ij9shBBCCCEWrj5croi3olKz278VvRL24sjLQ3u6cJoQQgghzk9qWFSBWq3ivms70LdjKPNXHuLXzcneDkkIIYQQdZA1u7jCsd0BrdEoTpJ+j3PzCiGEEEJURhIWVaRRq3lgbEd6tbcw9+eD/L7txPlfJIQQQohGpazj2JlSDMGk6U3sX7qKtxft5lCytJAVQgghqkISFtWg1ah56PrOdI8O5tNlB1iz/ZS3QxJCCCFEHXLjsNbodeWnV3q9BsMlfYgsSuPYvkSmfrKNV774m+0JVulCJoQQQpyDJCyqSadVM/nGznRuFcTHP+4jfpf7HrVCCCGEaHxiu4Zz18j2rpUWFpOBu0a2p/eNVwLwWCc7twxvw0lrAbMW7OTZD7ewbscpHCXOc11WCCGEaJSk6OYF0Gs1PDa+C7MW7OD97/ei0ajp2zHU22EJIYQQog6I7RpObNfwCsd9O7Qnf+MGrn59NFf0jSBuVyrL447xwQ/7WLT6CFf3j+TSS5pi1Mv0TAghhABZYXHBDDoN/765K20iAvnvd3vYuj/d2yEJIRqBvLw8Zs6cyfjx45kwYQL3338/+/bt48SJE/Tt25eNGzeWO3/MmDGcOHHivM8LITzPPCAG26kUCo8cRatRM7h7E179Vx+eGN+VELOReSsPMfmtDSz6/QjZ+TZvhyuEaOBkTiHqA0lYXASjXsuTt3SjRRN/3vl2N9sTrN4OSQjhZet3pjB5Tjy3TvuDyXPiWb+z5raNOZ1OHnvsMQIDA5k3bx7z58/nrrvu4tFHHyU7OxutVssrr7xCfn6+29ef73khhGeZ+vRGpdOStf6fbiFqlYqe7Sw8f3tPpt7Rk44tzfy4NpFH52zgs+UHOJVR4MWIhRDe5ql5hcwpRH0hCYuL5GvU8p8J3YgI9eOtb3ax63Cmt0MSQnjJ+p0pfLJsv6utoTW7mE+W7a+xycWWLVs4deoU9957L1pt6ZLx3r178/zzz+N0OgkNDaVv377MmTPH7evP97wQwrM0fr4E9OhB9oZNKA5HhefbRpl49MYuvP5AXwZ2C+fPv0/y5LubKnQW8WRiVAhRd3hyXiFzClFfyCbJGuDno+PpW7vzyhd/839f7+SpCd3o0MLs7bCEEDVo7fZT/Pn3SZxOJ2q1+1xvwvEcHCXlK/7b7E4+/nHfOVshD+nRlEHdm5w3hgMHDtCuXbsK7x8bG+tagjl58mRuueUWNm7cSL9+/Spc43zPCyE8yxwbQ87mLeTt2k1Aj+5uz2kW4stdI9szdkhLVm5KZtWWZDbtTaNTSzOtmvrz65YT2OylRTrLfoEB3NbNEELUTd6eV8icQtQXssKihgT46nh6YndCzEZmLdjBgaRsb4ckhKhlZ08qzne8ulQqFXq9/pzn+Pv78+yzz1a6TPN8zwshPMu/W1c0/v5kxcWf99ygAAM3Xdaatx6NcXUWWR5/3JWsKGOzO1m4+rCnQhZCeIkn5xUypxD1haywqEEmPz3PTOzOy3P/ZtaCHTx9a3faRAR6OywhRA0Y1L0Jg7o3oaioCKPR6PacyXPiXcs2z2QxGZgyqedFx9CxY0e+++47FEVBpVK5jr/33ntERUW5Hvfv3/+cyzTP97wQwnPUWi2mfn3IXLOOksJCND4+532Nr0HLNTFRXNE3gttfXuP2HHc/e4QQdZe35xUypxD1haywqGFBAQaeua07/j46Xp+/g6Mnc70dkhCiltw4rDV6Xfkfq3qdmhuHta6R6/fs2ZOgoCA+/vhjSkpKAIiPj2fp0qW0atWq3LmTJ09mw4YNpKe772B0vueFEJ5jHhCDYreTs2VrtV6n1aixmAxunwsKOPedUiFE/ePJeYXMKUR9IQkLD7AEGnn2tu74GDS8Nm87SSl53g5JCFELYruGc9fI9q5fKCwmA3eNbF9j+8pVKhVvvPEGycnJ3Hzzzdxyyy188cUXvPXWWwQHB5c7t2yZpt1ud3ut8z0vhPAcn+g26MPCyFp//m0hZ3P3CwxAdp6NhasPU2SrWMxTCFE/eXJeIXMKUV+oFEWpmc3Vtai4uJhdu3bRokULdDqdt8OpVEpGITPm/kVhsQOjXktWng2LycCNw1pX6QdNQkIC0dHRtRCp9zSGMULjGGdDHGNSUlK5ZZHAOZduNiSNYZyNYYxw8eN09+/AbreTmJhIly5dMBjc3/GvT2p6XpGTvouMpN9x2LLR6k0ERw0lMKRLuXNSFv9A2pKltH9zFrqzfjk4n/U7U1i4+jDW7GIsJgPXxERxODmX9TtTMPvruemy1sR2C0d9xjLvhvgz2p3GMM7GMEZoeON097MUGsdnUWMYIzSOcdbEGM/+t3C+OYXUsPCg8GAfruwXyde/HabIZgOkmrcQQgjRkOWk7yLtyHIUZ+mdRoctm7QjywHKJS3MsTGk/fAjWfEbCR1xdbXeI7ZruNs5xPA+zfhyRQIfLtnHb5uTmXhVNNGRposYjRBCCOFdsiXEw37dnFzhmFTzFkIIIRqmjKTfXcmKMorTTkbS7+WOGcLD8WnTpkrdQqoqOtLE1Lsu4b4xHbDmFPPip3/xwQ97yciRgpxCCCHqJ1lh4WGVVe2Wat5CCCFEw+OwuW9r7u64ObY/J7+YT9GxJIzNKy4VvxBqlYpB3ZvQp2MIP647xs/xSWzem0ZsR3+atyhBr9PUyPsIIYQQtUFWWHhYZdW8KzsuhBBCiPpLq3e/BUOtqbjn19SvL2g0F1R883yMei03DmvN6w/0pVubYFbvyOE/729m055U6mH5MiGEEI2UJCw8rLJq3r3aW7wQjRBCCCE8KThqKCr12YU7VThLirAm/V4uWaANCCCgW1eyNmxAcTo9Ek9YkA+Tb+zCpMtC8DFoePvbPbz8xd8knpK260IIIeo+SVh4WIV2RIEGwsxG/vzrFEmp0u5UCCGEaEgCQ7oQ2mqEa6WFVm8irPUoAkN7knliPWlHf0ZR/klOmGNjcGRmkb9nr0fjahVuZMY9vbljRDuOp+Yz5aOtfLJsPzn5No++rxBCCHExpIZFLTi7mndmbjFTPt7Km9/sYvrdvfDzqbutWYUQQghRPYEhXSq0MQ0I6YpG50PmiTicjkLC24xBpdYS0KM7ah8fsuI24N+ls0fjUqtVXNarGf07hfL9mkR+3ZzMxt2pXDu4JVf0jUCrkftYQggh6hZJWHhBUICByTd05uUv/ua97/fyxPiuqNWq879QCFHnZcXFk7JoMXarFZ3FQvi4sZgHxNTItU+cOMENN9xAq1atAFAUhfz8fEaMGEF8fDw2m42cnBwKCwsJDy9Nkr700ksV+tjv3LmT999/n6ysLJxOJz179mTy5Mnn7Kv90UcfAXDvvfeWO75nzx4WL17MlClTamSMQjRUKpUKS9Qw1FpfrMd+o8RRRNN241Dr9Zj69iZ74yack25F7aYHfU3z89Fx65XRDOvVlPkrD7Hg10Os3naCW6+IJr/IwcLVh7FmF2MxGbhxWGtpwy6EF8m8QjR2krDwknbNTUy8KprPfzrId38eZdzQVt4OSQhxkbLi4kn+dC6KrXSJtd1qJfnTuQA1NrkIDQ1l/vz5rsdpaWlcf/31zJ07l1atWrFs2TK2bt3K1KlT3b7+4MGDPPXUU8yaNYsuXbrgcDiYPXs2r776Ki+99FK14+nUqROdOnW64PEI0dgENe2PRmsk9fBykvfOp1n7mzANiCHzz7XkbPsLc0z/WoulWYgfT97Sjb8PWpm/MoHZX+1EpYKyMhvW7GI+WbYfQJIWQniBzCuEkISFS076LjKSfsdhy0arNxEcNbTCcs6adlmvZhw5kcuStYm0aupP7w6hHn0/IcSFy1y3nsw163A6najV7pdNFyYcQnE4yh1TbDaS//cZGX+sqfTaQYMHEjQw9oLiSk9PR1EUfH19q3T+vHnzGD16NF26lP5802q1PPTQQ2zatAmAQ4cOMXv2bPLz88nKymLSpElcf/31QOldjzvuuIOCggKuu+46xo8fz9atW/n444/54IMPLih+IRqjwNAeqDU+pCQsJnnvFzRtNx5dcDBZ6+NrNWFRpkdbC11aB/HAG3EUFJX/GWazO1m4+rAkLISoYY1pXjFz5kyKiorIzMyUeYWoNklYUJqsSDuyHMVpB0p7pacdWQ7g0aSFSqVi0jVtSUrN54Mf9vHSXb5EhPp57P2EEJ519qTifMcvRFpaGhMmTMBms5GVlUWnTp2YOXOma6nm+ezfv59LL7203DF/f3+GDRsGwJIlS7jjjjvo1q0bVquVCRMmuCYW6enpfPzxx5SUlDBp0iQuueSSGhuXEI2Nf3B71B1u5uT+hSTv/RL/vt3JXPknjuxstCb3rVE9SatRV0hWlLFmF9dyNEIIaDjzittuu43Y2FiSk5NlXiGqTRIWQEbS765kRRnFaScj6XePr7LQazVMHteZ5/+3lbcW7uKlu3rha5RvixB1TdDAWIIGxlJUVFTpnsz9jz2J3WqtcFxnsdD62f/USBxlSzedTidvvfUWR44coV+/flV+vVqtRq/XV/r85MmTiY+PZ968eRw9epSCggLXc8OHD8fHxweAgQMHsm3bNtq2bXvhgxGikfMNbElEp4mc2PcVRSFJ4HSStWETIVcO90o8FpPBbXKirNOZEKLmNKZ5xZo1a/j8889JSEiQeYWoNikHTemKiuocr2kWk5FHbuhMamYRH/ywF+cZPdqFEPVH+LixqM760Fbp9YSPG1vj76VWq3nkkUdIS0tj3rx5lZ43Y8YMJkyYwIQJE9izZw8dO3Zk797y7RPz8vJ4/PHHsdvtPPvss/zxxx+0aNGC+++/v9x5Wu0/yVRFUco9FkJcGKNfUyI7TUIT6o8q1EDm2j+9FsuNw1qj15WfGqpVSJ0tIbykocwr1qxZQ6tWrWReIS6IJCzA1Su9qsc9oUMLM7cMb8O2A1aWrEmstfcVQtQc84AYIu6chM5iAUrvgETcOanGCmOdTavVMnnyZD799FPS09PdnjNlyhTmz5/P/Pnz6dSpEzfffDPffvstu3fvBsDhcDBnzhz8/f3R6XRs2rSJ++67j0GDBhEfHw9ASUkJAKtWrXJVDF+3bh29evXyyLiEaGz0PhYiO92OvlMYxcdOkLkv3itxxHYN566R7V0rKvyMWpwKZOTIlhAhvKGhzCvuuusuhgwZIvMKcUEkjQUERw0tV8MCQKXSEhw1tFbjuKJvBEdO5vLdn0dp2dSfAEknCVHvmAfEeGwi4U5MTAxdu3blww8/5Lnnnjvv+dHR0UybNo033niDoqIiHA4Hffr04YknngDg7rvv5p577kGn09G+fXuaNm3KiRMnAGjatCl33303xcXF3H777bRq1YqMjAyPjk+IxkJrCCRq9L9IWPMcp35ZhMbiS2Bo91qPI7ZruKvApqIo/HfxXhb9foRWTQPo2ia41uMRorFrCPOKBx98EKPRSNu2bWVeIapNpSj1b/9BcXExu3btokWLFuh0uhq55pldQgD8gjrStN31NXLt6rDZS3jps79IzSzkruEh9L+kY63HUJsSEhIq9HJuiBrDOBviGJOSkoiKiip37Fx7TRuSxjDOxjBGuPhxuvt3YLfbSUxMpEuXLhgM9b++gSfmFRfqyOuzKDx+BN2EpoS0GE5Q05rpGnKhP6OLbCW8+Ok2snKLmX5PL0LNPjUSj6c0xM+iszWGMULDG6e7n6XQOD6LGsMYoXGMsybGePa/hfPNKeQe/mmBIV1o2fNhovtNwdfUhsLcRJwltlqPQ6/T8NiNXdCoVXyz1kphcc1VARZCCCFE3RY0cCDO7CIM+U2wHvsNa9LvePPeklGv4dEbO+N0KsxZtBubvcRrsQghhGh8JGHhRlDEQJyOArJTt3nl/UPMRh6+oTPpOQ4+WrLPqxMVIYQQoi5YunQp11xzDVdccQXz58+v8Pzu3bu5/vrrGT16NPfddx85OTleiPLiBfTqiUqvR5OoIzC0J5kn1pN29GcUxem1mJoE+3L/dR05ejKPz346IPMSIYQQtUYSFm74BEThE9iSrJMbcDq9s8Khc6sghvcwsXlfOkvXH/NKDEIIZGIuGrW68vc/JSWFN998kwULFvDDDz/wzTffkJCQUO6cl19+mUceeYQff/yRVq1a8cknn3gp2oujMRoJ7N2L7E1bsEQMJ6jZAHJSt5GS8D2Kl+YkAD3bhXDd4Bas3Z7Cqq0nvBaHEPVZXfmZKoS3XMi/AY8mLOrz3ZCgiIGU2PPISf3bazHEdPAnpksYi1YfYXtCxR7MQgjPUqvVrkrWQjRGJSUlqNXev7cRFxdH//79MZvN+Pr6cuWVV7JixYpy5zidTvLz8wEoLCys1/uIzQNicBYUkLdjJ5aoYViaX05exl5O7P/GK9tVy1w3pCXdo4P5ckUCB5Nqp/W7EA2FVqvFZvPev18h6oILmVd4rEtI2d2QxYsXo9frGT9+PP369StXPKfsbsiQIUN47bXX+OSTT3jsscc8FVK1+AS0wOgfSdbJOExhPVGpNbUeg0ql4u5R7UlOy+e/i/cy/e5ehAfX7WJXQjQk/v7+ZGVlYbFYUKlU3g5HiFqlKAqZmZn4+/t7OxRSU1MJDQ11PQ4LC2PHjh3lznn66ae58847eeWVV/Dx8WHhwoXVfp/ExLrRVlwx6sHfj+SVv5IWZAJCwK8vhTmbOfz3J6BvBUV7wFkAal/w6QbGlue97tmrUi7EVT2MHDul5v++3s69V4UT4FP786PzqYlx1nWNYYzQ8MZZXFxMcHAwOp2u3LyiqKjIi1HVjsYwRmgc47zQMSqKQlZWFoWFhdX6t+2xhMWZd0MA192Qhx56yHXO2XdDTCaTp8KpNpVKRVDEIE7u/4qc9B2Ywnp6JQ6DTsOjN3bh+Y+38tbCXUy98xKM+ro3ORCiIQoMDCQ9PZ3jx4+7jtntdq93EagNjWGcjWGMcHHjNBqNBAYG1nBE1ed0OstN7hVFqTDZf+655/j888/p1q0bn332Gf/5z3/46KOPqvU+daFLSJmTsbFk/LaKlk2aoPX3B6LJy2jBqYPfguOMVZfOAlSFWwlt0oTAkC6VXq8mOy48aWnGi59sY9nWAp6Z2B2txvurcMo0tM4S7jSGMULDHGdBQQHZ2dk4HP9s72oMn0WNYYzQOMZ5sWM0Go20adOm3Gd4WZeQyngsYVFbd0M8ydfUGoNfUzJPrCcwtDsqlXc+kMOCfHjo+k7MXLCD/y3dx4NjO8ndXiFqgUqlKvdzDEonUO7akjU0jWGcjWGM0DDG2aRJE7Zs2eJ6nJaWRlhYmOvxgQMHMBgMdOvWDYCbbrqJOXPm1HqcNckcG4P1l5XkbNpM8LChAPgHt0ej9aXEkV/uXMVpJyPp93MmLGpS83B/7h7Vnve+38tXvx1i4pVta+V9hajvfH198fX1LXesIfyMPp/GMEZoHOP0xhg9lrCojbshtbJ0Ux0NxWs5tGcVGFp5/v3OUrZcxge4rHsgv/2dRoD+b2I7BtR6LJ7S0Jb7VaYxjLMxjBFknA1JYxgj1P9xDhgwgHfeeYeMjAx8fHxYuXIl06dPdz3fokULTp06xeHDh2ndujWrVq2ia9euXoz44hlbNMcQ0Yys9fGuhAVQIVlRxmGr3ZoSA7qGc/hELis2HqdNs0AGdA2v1fcXQgjROHgsYVEbd0NqY+mmorQhadd+FEcCzTtdVqurLM5eCtemjUJO8R5++zuNXp1b0KV1cK3F4ikNcbmfO41hnI1hjCDjbEgawxjBM+M83/LNmhYeHs5jjz3Gbbfdht1u54YbbqBbt27cc889PPLII3Tt2pVXX32VRx99FEVRsFgsvPLKK7UWnyeoVCrMA2JIWfQdttRU9KfnUFq9qZLkhIrME3EEhl2CRls7BUfHX96aoydz+d/S/USG+dE83Pv1ToQQQjQsHvvte8CAAcTHx5ORkUFhYSErV65k8ODBrufPvBsC1Nm7ISqViuBmA7EXWcnL2Ov1WO4d056IEF/e/W4PqZmFXo1HCCGEqC2jRo1i2bJl/PLLL9xzzz0AfPzxx665w5AhQ/jxxx9ZunQpn3/+eYNYlmuK6Q9AVtwG17HgqKGo1OVv1qhUGnRGC9ak1Rz9623Sj63CYfN85zWtRs1DN3TCz0fLWwt3kV9o9/h7CiGEaFw8lrA4827Itddey8iRI113Q3bu3InJZHLdDRk1ahTfffddnb0b4hfcEZ0xhMzkdV7vn2zUa3n0pi44FZizaDfFdmm5KIQQQjRE+hALvh3ak7U+3jX/CAzpQmirEWj1pYXKtXoToa1H0aL7v4jqcjd+QdFkndzA0b/fJeXwUmwFaR6N0exv4JEbOmPNLua97/fi9PI8SQghRMPisS0hUHo3ZNSoUeWOffzxx64/DxkyhCFDhngyhCrLiosnZdFi7FYrOouF8HFjMQ+IAU6vsoiIJeXQEvIzD+Af3N6rsTYJ9uWB6zryxlc7ee3Lv8nItWHNLsZiMnDjsNbEyj5SIYQQokEwx8Zw4pPPKTx8BN82rYHSpIW7ApsGvyY0iR6LPTKTrFMbyUn7m9y07fia24KzOeCZLVBto0xMvCqaz386yPd/HuX6S2u/5pcQQoiGqe70ofKirLh4kj+di91a2ibMbrWS/OlcsuLiXef4WzqjMwSRecL7qywAerS10KdjCAeP52LNLgbAml3MJ8v2s35nipejE0IIIURNMPXujUqnJWt9/PlPPk1nDCK05VW07PEIwRGDKco7DjmrOL77c/Iy9ntkHnNZr2YM6t6E79ck8teB9Bq/vhBCiMZJEhZAyqLFKDZbuWOKzUbKosWuxyqVmqBmAyjOP0lB9qHaDtGtQydyKxyz2Z0sXH3YC9EIIYQQoqZp/HwJ6NmD7I0bURyO6r1W50tw5GBa9ngE/HrhsOdy6uAiju34gJzUv1Cc1bveuahUKu64pi0tm/rz/vd7OWUtqLFrCyGEaLw8uiWkvihbWXG+4wEh3chIXktm8jp8TW3KtWn1hrKVFe6OT/vsLywmA5ZAAxaTkeDAsj8b8PfRVSn29TtTWLj6sGw3EUIIIbzIPCCGnE1byNu1m4Ae3av9erVGB8a2tGhzJXkZe8k6EU/qkeVYj/+JuUnfGussotdpeHRcF6Z8vIW3Fu3mxTt7YtTLVFMIIcSFk08RQGexuE1a6CyWco9Vag1BzWJJO/ozhTlH8TV5d4+mxWRwm7Qw6NSo1XAoOYfNe4txlJRf+qnXqgk+ncwIDjS6EhmWQCMWk4HgQAPbDlj5ZNl+bHYn8M92E0CSFkIIIUQt8u/WFY2/P1nr4y8oYVFGpVITYOmMf3AnCnOOkHkiHmvSajKS12EKvwRzk74U5BwjI+l3HLZstHoTwVFD3dbLqEyI2ciDYzsxc8EO/rd0Pw+O7eT1GzxCCCHqL0lYAOHjxpL86dxy20JUej3h48ZWODcgtPsZqyy8m7C4cVjrckkFAL1OzZ0j27uSCk5FISe/tChnRk4x1pxirNlFWHOKycguZtfhDLLybJy9nVUFnL3DtWy7iSQshBBCiNqj1mox9etD5pp1lBQWovHxuajrqVQqfE2t8TW1pjj/FJkn48g6uZGskxs4cwbgsGWTdmQ5QLWSFl3bBDNuaCsWrj5Cm4jjXN2//reYFUII4R2SsABXN5CyLiEAlisudx0/k1qtJahpDOnHfqUw9xg+Ac1rNdYzlSUOzrVtQ61SYfY3YPY30CbC/XUcJU6ycm1Yc/5JZHy9yn0djMq2oQghhBDCc8wDYshY9Ts5m7cQNHhQjV33zM4ix3Z+jOI8q6aX005G0u/VSlgAjIptzuETuXz16yFaNPGnU8ugGotZCCFE4yEJi9PMA2IwD4jBabdz4MmnKTiYUOm5gWGXkHliPZnJ6/DpcEstRllRbNfwi17xoNWoCTEbCTH/s3/11y3JbpMTFpPhot5LCCGEENXnE90GfVgYWXEbajRhUUZnDKqQrCjjsGWjKEq1tnaoVCruHdOBFz/Zxrvf7mH6vb2wBF58nQwhhBCNi3QJOYtapyP0mqsp2H+A/H373Z+j0WFu2p+C7MMU5Z2o5Qhrx43DWqPXVfzrMbh7Ey9EI4QQQjRuKpUK04D+5O/dhz0jwyPvodWbKn3u2I4PyK5mZxFfg5bJ4zpjczh5e+Fu7A7n+V8khBBCnEESFm4EXToYrSmQ1CVLKz3HFN4LtcZIZvK6Woys9sR2Deeuke1dKyqCAw0E+un4dXMyJ6VVmRBCCFHrzLExoChkxW/0yPWDo4aiUuvKHVOptQSG9Uat1pF2ZDlH/36XzBNxlDiKqnTNiFA/7hvTgUMncpm1YDuT58Rz67Q/mDwnnvU7UzwxDCGEEA2IbAlxQ63XE3L1VZz6eiEFCYfwjW5T8RyNAXOTvmQkr6E4PwWDX8MrRHn2dpOUjEJe+nQbsxbsYOqdl2Dy03sxOiGEEKJxMYSH49OmDVnr4wi55qoa775RVqfCXZcQRVEozDlK5smKnUW0+sBzXrdPx1B6tg3mr4P/rAyR7mNCCCGqQlZYVCJo2KVo/P1JO9cqiyZ9UWsMZJ5omKsszhYe7MPj47uSlWvj/77aSbG9xNshCSGEEI2KOTaG4uPJFCUleeT6gSFdaNnzYaL7TaFlz4ddSYzSziKtiOhwC1Fd7sYvqC1ZJzdy9O93STn0I7aCtHNe91hqfoVjZd3HhBBCiMpIwqISGqMRy1XDyd2+g8Kjie7P0RoxhfcmL2MvtsL0Wo7QO6IjA3lgbEcOn8jlvcV7cDrPbn4qhBBCCE8x9esDKhVHZrzGrtvuZP9jT5IVF1+rMZR2FrmOFt0fwBTWi7yMPRzb+SEn9n9DYe4xlLN7pVN5lzHpPiaEEOJcJGFxDpbLL0Pt60Paj8sqPcfcpB8qta7B1rJwp3eHUCZeFc3W/Va+/CXB7cRECCGEEDUvb+cuAJxFpTUk7FYryZ/OrfWkBZR2FglteSUtezxCcMRgivKSSd7zBcl75pKXsb/c/KCyLmMGnZrsPPfdSYQQQghJWJyDxtcXy/DLydmylaLjx92fo/PFFN6LXOtubEWeqdpdF13RN5Jr+kfy6+Zkft7g/msjhBBCiJqVsmgxnHWjQLHZSo97iUbnS3DkYFr2eJiQFlfhsOdx6uCicp1FbhzWGv1ZldPUqtJtIU+8u5Flcceki4gQQogKJGFxHpYrhqM2Gkj7cXml55ib9Eel0pB5Yn0tRuZ944e3oW+nUBb8eoiNe1K9HY4QQgjR4Nmt1modr01qjQ5zk9606P4A4dHXless0tq4npGdDmIyFgEKJmMR13ZN4IVbgujYwszXvx3m6Q82s21/uqzcFEII4SJdQs5DG+BP8GXDSP9pBWHXjcHQtEnFc/T+BIb1JDt1K8ERg9AZzLUfqBeoVSr+dW0HsnKL+eD7vZj99bRvbvZ2WEIIIUSDpbNY3CYndBaLF6JxT6VSE2DpjH9wJ1dnkfyMPXRrCt2alm9lqs1dwxM3P8yOhAzmrUzg/77ZRZfWQdx6RTSRYX5eGoEQQoi6QlZYVEHI1Vei0ulIW3aOVRZN+wOQeaL295B6k16r4bGbumIxG3nzm12cSC/wdkhCCCFEgxU+biwqffm24iq9nvBxY70UUeXO7CxSGYctG4Bu0cG8cl9vJl4ZzeETuTz74Wbm/nyQvEJ7bYUrhBCiDpKERRVoAwMJHjqErPXx2NLct+3SGUwEhnYnJ+1vHLbcWo7QuwJ8dTx1SzfUKhWzFuyQ4llCCCGEh5gHxBBx5yTXigqVVkvEnZMwD4jxcmTnptWbzntcq1FzZb9I3nioL8N6NeO3Lcn8+92N/Lo5mRKn1LcQQojGSBIWVRRy9VWo1GrSlv1U6TlBTQeA4iTzZONaZQEQFuTDEzd3JTvPxhtf76TIVuLtkIQQQogGyTwghvZvzqLJ+BtRHA58Wrb0dkjnFRw1FJVaV+6YSq0jOGpohXMDfPXcfk07Xrm3N83D/Zn780Ge+3ALuw43nuLmQgghSknCoop0wUEEDR5E1pp12DPcf2DqjEEEhHQlJ3UbDnt+LUfofW0iAnnw+k4cOZnLfxfvwemUollCCCGEp5gGxIBaTebaut9aPTCkC6GtRpRbURHS/AoCQ7pU+pqocH+emdidR2/sjM3h5LV5O3jzm52cypDtp0II0VhIwqIaQkZejQKkLf+50nOCmsWiOB1kndxYe4HVIb3ah3DbVW3564CVL1YclErfQgghhIfozCYCunUlKy4epR5smQgM6ULLng8T2flOAJwlhed9jUqloneHUF67vw83DmvF7iNZPP3+Zr7+7RAFxQ5PhyyEEMLLJGFRDfqQEMyxMWT+sQZ7Vrb7c3ws+Fs6kZ2yhRJ747wDMLxPBCNiovhtywl+ik/ydjhCCCFEg2UeFIsjM4u8nbu8HUqVGf2b4WtqTdbJDThLqlZUU6/VMHpgC2Y92JeYLuEsi0viyXc38udfJ3EqCut3pjB5TjwvLjjO5DnxrN+Zcv6LCiGEqPMkYVFNoaNGoDgcWH/+pdJzgpoNRHHayErZXIuR1S03Xd6a/p1D+eq3w2zYnertcIQQQogGKaBnDzT+/mSuXe/tUKolqNlAShwF5KT9Vb3XBRi4b0wHXrrrEsKCfPh46X4ef3sD//txH9bsYgCs2cV8smy/JC2EEKIBkIRFNRnCwzHF9CNj9e84ct13AzH4huEX1J7sU5socRTVcoR1g1ql4t4xHWjf3MQHP+xlX2KWt0MSQgghGhy1Vospph+52/7CkZfn7XCqzCewOcaAKLJOxqM4q1+ou01EIC/c0ZMHrutIRk4x9pLyW1BtdicLVx+uqXCFEEJ4iSQsLkDoqBE4bTasv/xa6TlBEQNxlhSTnbKlFiOrW/RaDY/d1IVQs5E3v9nFifTGV4hUCCGE8LSgQQNRHA6yN2zydijVEtxsIA5bLjnpOy7o9SqVigFdw6msxnfZigshhBD1lyQsLoAxIoLA3r2w/rqKknz3dSqMfk3xNUeTdWojzhJbLUdYd/j76Hjylm5oNCpmLdhJdl7j/VoIIYQQnmBs0RxjVCRZ6+rXthAfU2sMfk3JPLEeRbnwoqEWk8Htca1GxfYEqxQAF0KIekwSFhcodMxInIWFWH/9rdJzgpsNxOkoJDt1ay1GVveEBfnw75u7kpNvY/bXOymyVX/ppxBCCCHcU6lUmAcNpPDwEYqOJ3s7nCpTqVQENRuIoziLPOvuC77OjcNao9eVn9Jq1Cr0WjWzFuzk2Q+3sG7HKRwldb+TihBCiPIkYXGBfJo3J6BnD6y//EpJofu2XMaASHwCW5VWwXZWrQp2Q9W6WSAPXd+Joydz+e93eyipB+3XhBBCiPrCPKA/aDRk1bPim35B7dD7hJ5eZXFhKyFiu4Zz18j2rpUWFpOBe8d04L1/x3LvmA4oisIHP+zjiXc2smJDEkU2aYcqhBD1hdbbAdRnoWNGcfjF6WSs/oPQEVe7PSc4YiDJe7/k6LY5OEuK0OpNBEcNJTCkSy1H630924Vw+9Vt+eyng7w+fwcpGYVYs4uxmNK4cVhrYruGeztEIYQQol7SBgYS0KMbWXFxhI8bi0pbP6Z4passYkk59AP5mfvxD+5wQdeJ7RpObNdwEhISiI6Odh0f3L0JA7uFs/1gBsvjjjFv5SG+X5PI5b2bcUW/SEx++poaihBCCA+QFRYXwbd1K/y7diH9519wFrsv7GS35QIqnCWl3UIctmzSjiwnJ73+9EuvSZf1jqBH22D2HMmS9mNCCCFEDQoaOBBHdg65O+vXHMPf0gmdIYjM5HUeqTehVqno2c7ClNt78uKdPenU0syP647x6FvxfLb8AKcy3NcjE0II4X2SsLhIoaNHUpKTQ8bvf7p9PiPpd6D8h6/itJ8+3jglpVbsFiLtx4QQQoiLE9C9K5qAgHq3LUSlUhPUbADFBacoyPbsXCA60sTkG7vw+gN9Gdi9CX/+fZIn393E24t2cyg5x6PvLYQQovrqx3rBOsyvfTv8OnYg/ecVBA8bilqvK/e8w5bt9nWVHW8MKmszZs0u5j/vbyI40IAl0IjFZMASaCD4jD/rdZrzXn/9zhQWrj58eruJoUa3m3jy2kIIIcTFUGm1mAfEkPHbKhy5uWgDArwdUpUFhHQjI3ktmclr8TW1RqVSefT9moX4ctfI9lx/aUt+2ZjMqi3JbNqbRscWZkYOiKJbdLDHYxBCCHF+krCoAaGjR3L09dlkrl2H5bKh5Z7T6k1ukxNavam2wqtzLCaD26SFUa+hqcUXa04xiafSycmvWKjU30eLxWTEEmjAYjqdzDj9Z0ugkT2JmXz+00Fs9tKinmXbTYCLTiys35nCJ8v2e+TaQgghRE0IGhSL9ZeVZMdvwHLFcG+HU2UqtQZz0xjSE3+hKPcYPoEtauV9zf4GbrqsNaMHNuf3bSf5eUMSs77aSVSYHyMGRNG/cxgb96TJzQohhPASSVjUAL9OHfGJbkP6sp8IHjKoXKGr4KihpB1ZjnJGlxCVSktw1FB3l2oUbhzWutwv/gB6nZo7RrQrNwGwOUrIzLFhzSkiI6cYa3Yx1pwirNnFpGUVse9YNgVF56/0bbM7+d/S/WzcnXpRce88nIndUb67SdlWFpm4CCGEqAuMzaMwtmxB5tr19SphARAY1oPME+vISF5HRC0lLMr4GLRcExPFFX0jiNuVyk9xx/jgh318ueIgRTYnJc7S7b1ys0IIIWqXJCxqgEqlImzMKBLfeIus9fEEDRnkeq6sG0hG0u+ulRY6n5BG2SWkTNkH/PnuVui1GsKDfQgP9qn0WoXFjnLJjE+WHXB7nt3hxJrjfitKVZ2drChjzS5me4KVzq2C0GqkLIwQQgjvCho0kJNfzqfw2DF8mjf3djhVplbrMDfpjzVpFUV5yRj9I2o9Bq1GXa6zyJxFu1zJijJys0IIIWqPJCxqiH+3rhhbtiBt6XLMAweg0vxTayEwpMs/iYvkdWQc/4OC7MP4mlp7K1yvq6z9WHX5GLREhGqJCPUD4Ie1iW63m1hMBl6+t/cFvw/A5Dnxbq+tAmYt2Im/j5a+nULp3ymMDi3MqNWy91UIIUTtM/Xvx6mvviFr7Xp8JtSfhAWAKfwSMk+sJzN5PU3b3+i1OMo6izhK3HctqawelxBCiJolt4NrSNkqC1tqKtkbN1V6nrlpf7QGM+mJK1GcJbUYYeNw47DW6HXl/1rrdWpuHHbxyaHKrn3P6PY8dlMXurYJZv2OFF75cjsPvxXPFysOciApG6cHWrQJIYQQldEG+BPQswdZcfE4HeffOlmXqDUGzE36kp91gOKCi9vKWRMsJkOlz0lnESGE8DxZYVGDAnr2wBAZQdqPyzD174dKXTEfpFZrCWk+nFMHF5GduhVzk75eiLThqup2E09cu1f7EIrtJfx90MqGXan8vvUEKzclYzEZaN9Mh8Y3l5ZN/aXquBBCCI8LGhRLzuYt5G3fQWCvS7wdTrWYmvQh8+QGMk+so0n0WK/G4q7ulk6rpksrM7sOZ0hnESGE8DBJWNQglVpN2OhRJL33ATlbtmHq634Lgl9QO3xMrck4/icBls5odH61HGnDVrbdxBvXNug09OsURr9OYRQUO9i2P50Nu1PZsD+DuL1bCQ/2oX/nMGI6hxEZJt93IYQQnuHftQtak4nMNevqXcJCo/XBFN6brJPx2CKs6H0sXovlXDcrCosdlXYWkZpWQghRMyRhUcMC+/ZG/30T0n5cSmCfXm4z7SqVitAWV3Bs50dYj/9BWKsRXohUeJqvQcvAbk0Y2K0JO3YfIMMWwIZdqfy4LpElaxOJDPWlf+cw+ncOo4nFl/U7UzzWNs2T1xZCCFH3qDQazLExpK9YiSO7Ynv1us7ctC/ZpzaReTKO8NajvBpLZTcrKusssmj1Ea7uH8mllzTFqJepthBCXAz5KVrDVGo1oaNGkPzRJ+T+9TeBl/R0e57eJwRTeB+yT20kMOwSjH5NazlSUZt8DWq6dW7KpT2bkp1nY9PeNDbsTuXbP47y7R9HCTEZyMy1eaRt2vqdKeWWs0pLNiGEaBzMg2JJ/2kFWfEbIbp+FfrW6vwJDOtJdupWgiMGoTOYvR1Spc7uLLI87hjzVh7i+zWJXN67GVf0jcTkr/d2mEIIUS9JwsIDzDH9Sf1+CWk/LiOgZ49K9zMGRwwiL30n6Ud/IaLTJNn32EiY/PUM7xPB8D4RWHOK2LQnjW9WHXbbNu2jJftYsSHpot7vWEq+22vP/fkgWo0KS6ABi8mIyU8vnU2EEKIBMUZE4NO6FZlr10GbVt4Op9rMTfuTnbqVrJMbCG15lbfDOa+yziI921lIOJ7N8rgkflx3jJ/ikxjcoylXx0TSJNjX22EKIUS9IgkLD1BpNISOHMGJz+aSt3M3Ad26uD1PozViiRpK6pHl5Fl3ExDi/jzRcFkCjVzdP4r5Kw+5fb7EqVz0XZmSk3lujxcUOXjn2z2uxxq1iqAAPcGBRkJMBoJPJzKCAw2nHxvx99FWSKyV326SJttNhBAesXTpUt5//30cDgeTJk1iwoQJ5Z4/fPgwU6dOJTs7m9DQUP7v//4Pk8nkpWjrjqDBAznx+ZfoT6VA27beDqdadAYTgSHdyEn9i6BmsWj1Ad4OqcqiI01MvtHEifQCft6QxJ9/n2T11hP06RjKiAFRtIkI9HaIQghRL0jCwkPMg2JJW7KUtCU/4t+1c6WrJwJCe5Cduo30Y6vwC2qHWiNLBhsji8ngtqe7xWTg3zd3u6hrT54T7/bawYEG/n1zV6zZRVhzirFmF5ORU4w1u4iDx3PIyCmusDJDr1UTbDIQEmgk2GSgoNDOXwkZlJTU/FYWIYQok5KSwptvvsnixYvR6/WMHz+efv36ER0dDYCiKNx///0899xzDB48mNmzZ/PRRx/x5JNPejly7zP168vJ+V9R8vd2GDTQ2+FUm7nZAHLStpN1aiMhzS/3djjV1izEl7tGtuf6S1vyy8ZkVm1J/qezSGwUuQV2Fv1+RGpMCSFEJTyasGjMd0PUWi0hI6/m5Bfzyd+3H/+OHdyep1KpCGlxBcl75pJ5Yj2WqKG1HKmoC9y1TdPr1Nw47OL3HFd27Zsua03zcH+ah/u7fZ1TUcjJt2HNLsaaU0xGWWLjdFJj56F8MnNtFV5XtpUlflcKlkDj6ZUahtMrNYwEBRjQaatWPV2KhQohAOLi4ujfvz9msxmAK6+8khUrVvDQQw8BsHv3bnx9fRk8eDAA//rXv8jJyfFWuHWKxs+PwEsuIXvHTpx2O2qdztshVYveGIy/pRPZKVsJajoAja5+bqkw+xu46bLWjB7Y/J/OIgt2ogLKbg1I0l8IISryWMJC7oZA0OBBpC1ZRtqSpZUmLAB8AqIIsHQh8+QGAkO7ozMG12KUoi44V9s0b11brVJh9jdg9jfQJsL9ObdO+8Pt8RKnQmaujYTjOeQVOio8b/LTEWwynq6fYfgnsRFoINhkIMjfQPzuVCkWKoQAIDU1ldDQUNfjsLAwduzY4Xp87NgxQkJCePbZZ9m7dy+tW7fm+eef90aodZJ50ECyN24i96/tlbZcr8uCmg0kz7qbrJTNWCKHeDuci3JmZ5GH/i+uwmekze5k3i8JdGkVJIU6hRACDyYs5G4IqPV6Qq65ilNffUPBwQR820ZXeq6l+WXkZe4n/dhvNG13Yy1GKeqKytqm1eVrn2sry8v3lk6Ki+0lrq0mpSs1Tq/SyCniRHoBuw5nUmQrKff6stqfZ+1IwWZ3suDXQ3RtHUSAr04K1QrRSDidznL/3hVFKffY4XCwadMm5s2bR9euXXnrrbd47bXXeO2116r1PomJiTUWc12iGPUQEEDyLytJCzZ7O5wLo48k88QGMgvCQH3uVSIJCQm1FNTFcZfQB8gtsPPg/8UR5K+heaiBqFA9zUMMhJi0qE//va8vY7xYMs6GozGMERrHOGt7jB5LWNTG3ZD6MLFQWkSBTsfhV2eCwwGmQLTDLkXb1U2BTWNH8jN3kLBnLehL25zKX/qGoyGOc0gnX5ZusmEv+SezoNOoGNLJt8J4jUCEf+l/RGgAP8APRVEosivkFJSQne8gu6CEnIIS1u7Odfue2Xk2HngjDq0GAn21mHw1BPpqSv/fT4Op7JifBqOu8q0nO47ks2p7DtkFJZh8NVzWPZBurfyqNO6qfC8v5vp1RUP8O3u2xjBGqP/jbNKkCVu2bHE9TktLIywszPU4NDSUFi1a0LVrVwBGjhzJI488Uu33adGiBbp6tmWiqvZ260pJXDwtQkLQnb6ZVJ8U5ftxfNcnWPwzCGoWW+l5CQkJrtW8dZ3FlOY26W/y0zFiQHMOJGVz4Fg2248UAOBn1BIdGYjFz0FM99a0iQhAr9PUdti1pj59Ly9GYxhnYxgjNI5xemKMdrv9nL/XeyxhURt3Q+rDxCIrLp7jTieUnL6DnJ1DyfIVNAkPxzwgpty5irMlx3YkgX03zTsM4NDhI/KXvoFoqOOMjobwJp6pM7HnuPtioQG+OsYMavFPTY3sYo6lF5GVV4By1ooMH4MGy+mtJ/9sOTFyKj2fnzdnY3eUbjfJLihh2ZZswps0OW/sVflert+ZwrItJ1zbWapz/bqiof6dPVNjGCN4Z3JR0wYMGMA777xDRkYGPj4+rFy5kunTp7ue79mzJxkZGezbt48OHTqwevVqOnfuXGvx1QeaHl0pWR9H1vp4Qkdc7e1wqs3o1xRfU2uyTm7EFN4XtaZuz/+qorIaU7dcEU1s13CuiYlCURRSMgpLkxdJORxIymZ7QgGrt/+NRq2iZVN/2kWZXP+duY3Ek3WgpMaUEKK2eCxhUVt3Q+q6lEWL/0lWnKbYbKQsWlwhYaFSawlpMZyTBxaSnbIFsNRipEJcmLLtJjX9S1FlE7lbr4x2OylylDjJyrORkV1Mek6Ra+tJRk5pYuPwiVxyC+yVvp/N7uSDH/ayYOW570Q7SkrQalLOeU5Ogb1C8sRmdzL354OoVaXtbINNBoIC9GjUVStAeqbam4RKm1pRN4SHh/PYY49x2223YbfbueGGG+jWrRv33HMPjzzyCF27duW///0vU6ZMobCwkCZNmjBz5kxvh12nqC0WfNtGk7V2HSHXXFUvt9QFRQwkec8X5KT9hblJX2+Hc9GqUmNKpVLRxOJLE4svg3uUrr7dsXs/JTqLK4Hx2+Zkft5wHICwICPtokxo1CridqW6EvM1WQdq/c4UqTElhKg1HktYyN2QUnartVrHfc1t8TW1ISN5DQTWvzsgQtSU6hYL1WrUhJiMhJiMtMN9tyHb6Xoa//7vJrfPKwr06hByzriys3MwmQLPec7qrSfdHi8ocvDfxXtdj1UqCAowVFgBUlqItLQYaYCfzrVnGTw7UZRJqKjLRo0axahRo8od+/jjj11/7t69O99++21th1WvmAfGcuKzuRQePoJvm4vvQlXbfAKaYwxoTuaJeExhl6BSe7TZXa24kBpTvgYN0dEh9GxX+nlldzg5ejLXtQpjR0IGOW4S9GVdvJasvbjVUSkZhRXantvsTr74+SB6nZqQwNLPMak1JYSoCR77SS93Q0rpLBa3yQmdxf3qidI2p8M5tvMjKNgBuKl1IUQjUdPFQvU6DU0svucsFnrniPbnvEZVVpJsT8hwe/3gQAP/mdCN9Oyi04VI/2kTm3gqj20HrK67YWW0GtXpZEbpBHDr/vRyq06gdKI4/5cEAn0vbon0/F8S3F574erDkrAQogEw9evDyflfkbV2Xb1MWAAEN4vlxP6vyEnfgSnsEm+HUyfotGraRploG2ViBKXbsCdO/9PtuSVOhaiwi6undCK9wO3x/CIHcxbuLheXKyF/Vmcwi6n0z0Z9xV9FPLnSr75uk5EtOKIx82hqWu6GQPi4sSR/OhfFZnMdU+m0hI8bW+lr9D4hmMP7knVqA0V5JzD6N6uNUIVoNCrbbnLjsJqZwFd2/Zsua01EqB8Roe4ni4qikFdoJz272NVZJSOn+PTjIvYmZlFYXOL2tTkFdl6fv8PtcxfLml3Ma/O2uyaeIabTbWhNBoIDjRj1VSv6JpM5IbxL4+tLYO9LyNqwkSa33IxaX//qQPiYWmPwa0rmiTgCQ3ugUlV/W11Dp1KpzpmYf/iGi1vRnDDHfY2p4AADj93UBWtOUbmEfEZOMbsOZ5CVZ6uwXdLPqP2nvbnJQF6Bja37rThOF/O2Zhfzv6X7Sc8qokfbi9sq/fdBKz+sTSy3TaYuXPtUpg3dqbxqXVtWP4rGpP6vpavjyupUpCxaXLrSQqVCFxpaoX7F2YIiBpKV8hfpiSuJ6DRJltQJUYOqu92ktq6vUqkI8NUT4KunVdMAt+dMrmSiaPLTMfnGi1uRNWfhLrLzKy4j1mvVFBY5+Ds1n+w8W4Xnz55wnp3YCA40sHFPmmxlEaIOCBo0kOy4DeRs24a5fz9vh1NtKpWKoGYDOXVwEXnW3QSEdPV2SHWSJxPzlSblL29Nq2YBtGrm/vPLUeIkK9fmSmiUX21YxIGkbPKLKrZ6tTucLPr9CIt+P3LRsdfda6dW69o2u5OPftzHlr1pWE5/1oacvolgMRkw+evLbSc9l/paF0tugjQekrCoBeYBMa4EhXXlr5yc9xV5e/bi36ljpa/RaI3g252ivE3kWXfJB7IQNaymt5vU1vXPVVW+XZT72h1VdcsV0W6vfdfI9q6xOEqcZOQUn175cXqymVN8usip+wmn6vT/uCtE+umy/Ww/6L6mT1VVtk1mwcoEOrYwY/bXo1ZL0lcIAL+OHdBZLGStXV8vExYAfkHt0PuEknliPf6WLnJTxw1PJuYv9NpajZoQs5EQs7HSc26d9kelz02+8eJWhpy5XaUuXfvUyVM0adqk2tcuKVE4YS1g5+FMimzlV19q1CpXbayzExohJgPBJgO+Bi1xu1Lr5c2E+nptcWEkYVHLgi69lLSfVpDy7WL8nn/23B+yhlYYOE76sVX4BbVDrTHUXqBCiDrJ25NQrUZNWJAPYUE+lV6nyFZS2p0l+5/Exvdr3Bd5K7Y7OXQi96LiLj4rWVEmO9/OI2/Fo1GrCArQu+48lU3givML0frlYjEZ8PepvDhcfb2LIx1fhDsqtRrzwAGk/bgMe0YmuuAgb4dUbaWrLGJJOfQD+Zn78Q/u4O2Q6iRPJuY9de1zbWXp0yG0QV47QZtNdHTl55zr2q/f3xdFUSgocri24FjPWLVizS5m/7EsMnNtFQqlGvUa7A6n2wKqn/90gOOp+eeM+3x+25Ls9mZCfb32V78eolf7kCpvgxU1RxIWtUyt1xE2ZhQnPvuCvB07CejerfKTVSpCW1zB8T2fk5G8npDmw2ovUCFEnVUbk9CLaVNr1GtoFuJHs5B/anWs2X6q0gnXGw9d3F3eyrbJBPjquOHSlqfb25YmTg4l57B5b7FrfzRrSld36LXqM7az/FMcLsVayC+bkyvsHVYUhQFdLu57ELcrhU+XH6hwF8eT1wa5QyRKu4WkLVlK1vo4QkeN8HY4F8Tf0omM5DVkJq/DL6i9rLJoILyxlaW+X1ulUuHno8PPR0fzcH+313A6ldLW7zlFrjpZ6dlFrNyU7Pb8wuISfopPuqi4z06E1PdrZ+XZuPu1tfj7aN1uwwkJNJKT76DE6Txny3q5CVJ9krDwgqBBA0lb/jMp3y7Gv1vXc37IGgMiCQjpStapjQSG9UBvDK7FSIUQomZ4YzJ365XRbj9MnYpCbr6dv3cn4BsYenpLSxHpp7e2VFYcrozN7uSDH/bxwQ/7Ljr22r62dHwRAIbwMHzbtyNz7TpCRl5TL3/ZV6nUBDUdQOqRZRRkH8LPfGEJVlG3eHsVYUO9tvr0FpHgQAPRkf8c37o/vdKbCXMmn7ve3vlUdjOhvl7b30fLNTFR/6xkyS5i/7FsCs7eBvvjKVfL+vJdcYwkpebx49pj2DxQQLUhb5ORhIUXqLRawq4dTfJHn5CzZRumPr3Oeb4lahh5GftJT/yVZu1vqqUohRCi5tSlyZxapcLkryfCoq90GW5ZcbhH395Q6ftef2nLi4r7uz+O1vq13U3CROMUNCiW5P99RmHCIXzb1s9f9gNCurpWWfia2tTLxIuoqCZW+p3v2p5QH6/dUFedeOLaE69q6/Z7UFjscBWP3ZtwDI3B5NqOc+RkHlv3pWMvqeQOCKU3Ez5cspfv/ri4wq/p2UU4z9oh6+lr19ZNEElYeIl5QAzpS38idfEPBPbqieocS4e0+gCCIwZiTVpNftYh/MxtajFSIYSoGfVpMldWHO5ce4evG9zyot7jj79OeuXaQgAE9u3DyS8XkLl2Xb1NWKjUGsxNY0hP/IWi3GP4BLbwdkhC1Ct16WZCfb22j0FLRKiWiFA/fMkgOrpVuecVRSGnwE5GdjHP/2+r22s4ndA28uIKp6dmFtX6tWvrJogkLLxEpVYTNnYMSf/9gOwNmzAP6H/O881N+pKT9jfpiSvxDbwXlVoKvgghhKc1tDtENXFt0TBojEYC+/Qme8Mmmk64GbWhfiazAsN6kHliHRnJ64iQhIUQ1VbX62Kd79qeUJPXVqlUmPz0mPz057wJcv91lXePrIp9x7K8cu3aUPltfeFxgX16Y4yKJPX7JSglJec8V6XWEtJ8OPYiK1kpm2spQiGEaNxiu4Zz18j2rg9li8lQrs1rY7y2aDiCBg/EWVREztZt3g7lgqnVOsxN+lOYc4Qj294E69cc/esdctJ3eTs0IYQo58ZhrdHryv/6XZM3KurjtatCVlh4kUqtJuz66zj21jtkrY8jaPCgc57vF9QWX3M0GcfXEGDpglbvvhKwEEKImlNf7uJUdm1P3NkSDYNvu7boQkPIXLMO84CLK1TnTWqtEYASe2k7Q4ctm7QjywEIDOnitbiEEOJMdWkrS125dlVIwsLLAnr2wKd1K1J/+BHTgBjU2nN/S0KaD+fYzg+xHv+d8NajailKIYQQQjQ0KrWaoEEDSf1+Cbb0dPQhId4O6YJkJq+rcExx2slI+l0SFkKIOkVuglSfbAnxMpVKRdjY67CnW8n8c+15z9f7WDA36Udu2naK8tz3ThZCCCGEqApz7ABQFLLWxXk7lAvmsGVX67gQQoj6o0oJi/T0dFatWgXArFmzmDRpEvv21XyP+MbKv2tnfNu1Je3HpThttvOeH9xsIBqdH2lHV6IolbfJEUIIIeoimVfUHfrQEPw6dSRz3fp6O6fQ6iurgK8mO2UrTqejVuMRQghRc6qUsHj66adJSkoiPj6etWvXMmbMGGbMmOHp2BoNlUpF+A1jcWRmkbH6j/Oer9YasEQNozg/mdz0nZ4PUAghhKhBMq+oW8yDYrGnplGw/4C3Q7kgwVFDUal15Q+qNGj0AaQd/ZnEv94hI3kdJY5C7wQohBDiglUpYZGVlcXtt9/OmjVrGDlyJGPHjqWwUH7o1yS/Du3x69yJtKXLKSly3+v2TAEh3TD4NcOatBpnSe30wBVCCCFqgswr6hZT716ojUYy1673digXJDCkC6GtRrhWWmj1JsJaj6Jlj4do1uFWDH5NyDj+B0f/epu0xF+xF8tWESGEqC+qlLCw2+3Y7XbWrl3LgAEDKCwspKCgwNOxNTrh119HSW4uGb+uOu+5KpWK0JZXUmLP48i2OSRsnCFtvIQQQtQLMq+oW9QGA6Z+fcjZtLlKN03qosCQLrTs+TBYxtOy58MEhnRBpVLha2pJsw43E9X1HvyD2pN9ahOJ2/9LyqElFBekejtsIYQQ51GlhMVll11GTEwMQUFBdOnShXHjxjFy5EhPx9bo+Ea3IaBHd9KW/0xJ/vknbraiTECF4iyte1HWxkuSFkIIIeoymVfUPeZBA3EWF5Ozeau3Q/EIg2844dHX0qLHg5jCe5OXsY+knR9xYv/XFOYk1tv6HUII0dBVqa3pI488wo033kh4eGmblNmzZ9OhQwePBtZYhY29lkMvvET6Lyuh27lbcWUk/Q6U/4CVNl5CCCHqOplX1D2+baPRh4eTtW49QYNivR2Ox+gMZkJbXEFwxCCyU7aQfWozyXu/xODXjKBmMfgFtUelkiZ6QghRV1S5S8ju3btRqVTMmjWLV199Vap5e4hPyxYE9umNdcVKlPMsj5U2XkIIIeojmVfUPSqVCvOgWPL37sOW2vC3Smi0PgRHDKJFz4cJbXk1Tkchpw5+x7EdH5Cduk06iwghRB0hXULqoLCxY3AWF+OI23DO8ypr41V5ey8hhBDC+2ReUTeZYwcAkPD8S+y67U72P/YkWXHxXo7Ks9RqHabwXjTvfj9Noq9HrTGQduSncp1FctJ3cfSvd6RemBBCeIF0CamDjBERmGL6U7JpC/asyldLuGvjpVJpCI4a6ukQhRBCiAsm84q6qWD/flCpcJ7+XtitVpI/ndvgkxYAKpUaf0tHIjvfWa6zyJGtb5J66EfX6lWpFyaEELVLuoTUUWHXjYaSEtKXLa/0nLPbeIEKjT6QAEvn2glSCCGEuAAyr6ibUhYthrOKTyo2W+nxRuLsziIqtQZwljtHcdqxJp2/o5sQQoiLV6Wim2XVvDt27EiXLl0YOXKkVPP2MEN4OJoe3clY/QeWq69Cbwl2e15gSBdXgc3slK2kHf2ZguzD+Jnb1Ga4QgghRJXJvKJuslut1Tre0Bl8w1GcdrfPldhyObbjA4z+URgDIjEGRKEzBKFSqWo5SiGEaNiq1SWkSZMmgFTzri3aQbHYduwk7cdlRNxx23nPDwztQebJODKO/4GvqbV8aAohhKiTZF5RN+ksFrfJCZ3F4oVo6gat3uS2mLlaY0CrN5GXsYectL8A0Oj8MPqXJi98/CMx+DU9vUJDCCHEhapSwsLpdLJ06VLWrFmDw+EgNjaW6OhotNoqvVxcIJXZRNDQIWT8/iehI65CHxZ27vPVGoIjBpF6eBn5mQfwD25fS5EKIYQQVSfziropfNxYkj+di2KzuY6p9HrCx431YlTeFRw1lLQjy8uttFCpdYS0vJrAkC4oioKtMI2i3CSK8o5TmJtEfub+0vNUWgz+TTH6R+ETULoSQ6P1KXf9nPRdZCT9jsOWjVZvIjhqqLSmF0KIM1RpZvDGG2+wb98+Jk2ahNPp5JtvvmHmzJk8++yzno6v0QsdNYLMP9eS+sNSIu+967znB4R0I/NE6SoLv6B2sspCCCFEnSPzirrJPCAGKK1lUbbSIvjyYa7jjVFZ8qCypIJKpcLgG4bBNwxTeC8AHLbc08mL4xTlJpF1agNZJ+MA0PuEuLaROOyFZCb/gXK6hWpZQc8z31cIIRq7KiUs1q5dy3fffYdOV9qR4tJLL2X06NEysagFuqAggi8fhnXFSkJHXoOhWdNznq9SqQmOGEzKoR/Iy9gjBTiFEELUOTKvqLvMA2IwD4hBcTg48J9nyd+zF0VRGvUNkDPrhVWFVh+Af3BH/IM7AuAssVOcf4LC3CSKcpPIy9jr2kZyNsVpJyPpd0lYCCHEaVXqEqIoimtSAaDX68s9Fp4VOuJq1Ho9qd8vqdL5/pbO6H1CyTj+J4riPP8LhBBCiFok84q6T6XVEnbtaIqOJpK77W9vh1OvqTU6fAJbEBwxkGYdbqZVryeI6npvpec7bNmkH1tNfuZBShzS7lcI0bhVKWHRoUMHXnnlFY4dO0ZSUhKvvvoq7dq183Rs4jRtYCCWK4eTvXETRceSznu+SqUiOHII9qIMctN31kKEQgghRNXJvKJ+MA+IQR8eTuri71GccgOkppRtI/mnLf3ZJ2jIOrWBkwe+4cjWN0jc/gGph5eTk7YdW1FGhdazQgjRkFUpYTF16lRycnIYP348N954I1arlZtvvtnTsYkzhFx9JWpfH1IW/1Cl8/2C2mPwbUJG8loUZ4lngxNCCCGqQeYV9YNKoyHsutEUJR0nZ8tWb4fT4ARHDUWlLr+ySKXWEdZ6FK17PUlEx4kER16KzmgmL2MvqYeXcmz7e5D5AycPLCLz5AaKco9XOs/LSd/F0b/eIWHjDI7+9Q456btqY1hCCFGjqlTDwt/fn9dee63csUsuuYRt27Z5JChRkcbPj5CrryL1u+8pOHwE39atznm+SqUiOOpSTu7/mpy0v12FoIQQQghvk3lF/WHq34+0H5eR+v0SAnv3QqWu0r0uUQXnK+jpE9gCn8AWAKe7kaRTlJdE2ok92ApSz9mNJD/rULnuJlLQUwhRX11w/zBFlqPVOssVl2P95VdSv/uelk8+ft7zfU1tMPpHkpG8joDQ7qjV0i5OCCFE3STzirpJpVYTdt0Ykv77AdkbNmEe0N/bITUoVS3oWbqNJBSDbyhpOYG0iI7GYcujKC/JbTeS0kXU5bfxSEFPIUR9dMFp8sZcLdpbND4+hI68hrydu8jff+C855fWsriUEnsuOaly10oIIUTdJfOKuiuwT28MUZGk/rAEpUS2mdYVWr0//sEdCW0xnKgud5bbRnJ2sqKMw5Z9zm0kQghR18i6vnom+LKhaE0mUr77vkp3o3xNLfEJbElm8nqcJbZaiFAIIYQQDYlKrSb8ujHYTqWQFbfB2+GISpzZjaTSgp7A8T2fc3jLLI7vmSvdSIQQdd459wj07NnT7R0PRVEoKiryWFCicmqDgdBRIzg5bwH5e/bi37nTeV8THDmE5D1zyU7ZQlCzAbUQpRBCCFGRzCvqr4Bel2Bs0ZzUJT9ijumHSivbTOuy4Kih5WpYQGlBT0vUZWj1fm63keiMIfgERGIMiMIYEIXOECQrn4QQXnfOT5tly5bVVhyiGoKGDiH9pxWkfPs9fp06nvfDxCcgCl9zNJkn4ggMuwSN1lhLkQohhBD/kHlF/aVSqQgbey3H3nybzHVxBF862NshiXM4X0FP/+COADhL7BTnn6AwN4mivOPkZewjJ+1vADRaP4wBkaX/+Udh9GuC6nQ9tJz0XZVeWwghatI5ExYRERG1FYeoBrVOR+iYUZz4bC5523cQ0KP7eV8THDmE47s+IfvUJoIjZZIhhBCi9sm8on4L6NEdn9atSFuyFPPAAahllUWdVpWCnmXbSNx1IynKTaIwN+mMbiQaDP7NUKmNFOYcBqW0DoZ0IBFCeJLUsKinggbFogsLLa1l4XRfWOlMRr+m+AV1IOvURkrsBbUQoRBCCCEaktJVFtdht1rJ/HOtt8MRHlDWjcQUdgnhbcbQssdDtOz5KE3aXk9geG8UZwmF2QddyYoyitOO9dhv0u1HCFHjJGFRT6m0WsKuG0NR4jFytlatA0hw5GCcJcVknpSCWUIIIYSoPv+unfFtG03aj8tw2uznf4Go987uRlKZEnseR7e9xckDi8g8GU9h7nEUp6MWIxVCNESylq8eM8f059TXi0h670OSSt5DZ7EQPm4s5gExbs83+Ibhb+lMdspmzE37odX51XLEQgghhKjPVCoVYddfx9HXZpH5xx9Yrhju7ZBELdPqTThs2RWOqzVGfM2t3W4jMfpHlRb09I9Eo/Ot7ZCFEPWYJCzqsewNG3Hm58Ppnuh2q5XkT+cCVJq0CI4YTJ51D5kn4ghtIZMMIYQQQlSPf6eO+HXsQNrS5QQNGYzaYPB2SKIWVdaBJKTlVa4aFg5bHkV5SWd1IyndwqwzWvA53YnEXTeSsoKe2LI5misFPYVo7CRhUY+lLFqM4ii/1E6x2UhZtLjShIXex0JAaDdyUrYQ1LQfWn1gbYQqhBBCiAYkbOy1HHn5NTJW/07I1Vd5OxxRi87XgQT+2UZStW4kvqeTF5GUOGxkn4p3bSWRgp5CCElY1GN2q7XS44qiVNruNDhiELnpO8lIXk9Yq6s9GaIQQghRI5YuXcr777+Pw+Fg0qRJTJgwwe15f/zxB9OmTWP16tW1HGHj4te+HX5dOpO27CeChl6Kxigt0xuTqnQgOdP5upEU5R53bSM5m+K0Y038FZ+ASLS6AFRqTY2MQQhRP3g0YSGTC8/SWSyVJi2OvPwaTW8Zj0/rVhVfZzATGNqTnLS/CGraH50xyNOhCiGEEBcsJSWFN998k8WLF6PX6xk/fjz9+vUjOjq63Hnp6em8/vrrXoqy8Qkfey2Hp71Mxq+rCB01wtvhiHqkrBtJWUcSKN1GcvSvt9yeX+LIJ/HvdwEVGp0/OoMJrT4QrSGw9P/1JrSGQHT6QNRa30pv2pVtN6lsZYgQou7xWMJCJheeFz5uLMmfzkWx2VzHVHo9pv79yP3rbw69OB3zoFjCbxiLLqh8UiI4IpbctL/JOLGO8Najajt0IYQQosri4uLo378/ZrMZgCuvvJIVK1bw0EMPlTtvypQpPPTQQ7zxxhteiLLx8Y1ug3/3bqT/tILgy4eh8fHxdkiiHtPq/Ssv6Kn1xRJ1KQ5bDo7iHBy2HIrzT5KfuR/lrBarKpX2jERGINrTyQ17YQbZKZtRFNluIkR94rGEhUwuPK+sTkXKosXYrdZyXUJKCgpIW7oc6y+/krNpCyGjriHkqitR6/UAaPWBBIb3JvvUJoKaDkDvY/HmUIQQQohKpaamEhoa6nocFhbGjh07yp3zxRdf0KlTJ7p3717b4TVq4WOv5dDUaVh/+ZWwa0d7OxxRz1Va0LPFFW6TCoqiUOIoOJ3IyC6X0LDbsinIPkKJPbfS91OcdqzHfiPA0gmVSu2RMQkhLo7HEhYyuagd5gExbgtsanx9aXLTOIIuHULK1wtJ/fZ7Mn9fQ5ObxhHYrw8qlYqgZgPISd1GRvIamkRf54XohRBCiPNzOp3llnifXafpwIEDrFy5ks8//5xTp05d8PskJiZeVJx1XUJCgkeuq27fjtTlP5PdphWqOrDKwlPjrEsa7hiN4NMLCneAswDUvig+3UjNMpKadb4xa4Hg0v9UgOH0f4oTnIWQtdTtq0rseRzaPBO0FtCGgjYEdBZQ6Wp0ZOfScL+f/2gMY4TGMc7aHqPHEha1Mblo6BMLqKG/ECOuQtepA46Vv5H03geoli5Dd+Vw1M2agiGaPOtuEhxRoDVf/HtdgMbwDxsaxzgbwxhBxtmQNIYxQv0fZ5MmTdiyZYvrcVpaGmFhYa7HK1asIC0tjeuvvx673U5qaiq33HILCxYsqNb7tGjRAp2u9n5JqU0JCQkVtuXWlMKJt3BoyosEHkgg/Hrv3gDx5DjrioY/xmjg8hof59G/1lSy3cQH/+BOFOUlYSvYdfqoCoNvOMaAyNIOJv6R6AymGovlTA3/+9k4xgiNY5yeGKPdbj/n7/UeS1jUxuSiIU8soIb/QkRHo1w2jMw160j5djG2/32GeWAsIdddw4nEw/ioj9A0elzNvFc1NIZ/2NA4xtkYxggyzoakMYwRvDO5qGkDBgzgnXfeISMjAx8fH1auXMn06dNdzz/yyCM88sgjABw/fpzbbrut2skKceF8mjcnsE9vrL/8iuWK4WgD/L0dkhAVVL7d5ErXdpMSRxFFecmnu5ccJydtO9kppb/PaPWBp5MXUfgERKL3DSu3jUQKegrhGR5LWMjkou5RqdUEXzoYU78+pP24DOsvv5K9aTP+gzuT12YvRREnMfo19XaYQgghRDnh4eE89thj3Hbbbdjtdm644Qa6devGPffcwyOPPELXrl29HWKjF3bdGHK2bCX95xU0ufEGb4cjRAVlyYNzJRU0WiN+5jb4mdsAoChOigtSXK1XC3OOkWfdDYBKrcfoH4FPQBROp720oKdTCnoKUdM8lrCQyUXdpfHx+ae+xTeLyPltK6qNOk6mfE3L6x6ttBWUEEII4S2jRo1i1KjyXa0+/vjjCudFRkZKm3QvMEZGYOrfD+vK3wi56gq0gYHeDkmICgJDulQrgaBSqTH6NS29odekL4qi4LBlU5SbRGHucYrykshIXuP2tYrTTkbS75KwEOIieSxhATK5qOsM4WE0f+RB8vbuI/nzT8j/YSeHdrxIs9tux7d1K2+HJ4QQQoh6JOzaUWRv2Ejasp9oest4b4cjRI1TqVToDGZ0BjMBIaU3X0scRRzZOtvt+Q5bNqcSFp/eRhJVYRuJEOL8PJqwEPWDf8cORM+YzqEFL1Mcf4rDL07HHDsAY6uWWH/+pULLVCGEEEKIsxmaNsUcO4CMVb8Tcs1V6E63theiIdNojWj1JrcFPVVqLYU5SeRZ95x+/M82EmNAJEb/iNoOV4h6RxIWAgCNzkjYlaNIa70Cn6PNyPotHtbHuZ63W60kfzoXQJIWQgghhHArdMwosuLiSVu6nGYTJ3g7HCFqRWUFPUNbjSDA0vn0NpLjpVtJ8o6fsY1EBRozaUcTztmNxJMFPWvj2tiyOZorhUjFhZGEhXAJDLuEzBPxcIkW7WYTjqyscs8rNhspixZLwkIIIYQQbhnCwwgaNJDM3/8kdMTV6IKDvR2SEB53voKe/2wjqdiNJDPlgJtuJJGubSTFBamkHf3ZlQypyYKeOem7yiVa6su1ReMiCQvholZrCY4YSNrRnyskK8rYrdbaDUoIIYQQ9UromJFkrVtP2o/LaHb7bd4OR4haUZ2Cnmd2I8ksiqR1m9ZndSP5ZxuJO4rTTnriL1xsmfz0xF/KrQqpjWtLIVJRXZKwEOUEhvYg82Q8qkADSk5xhefVPkYUpxOVWgoGCSGEEKIifUgIQUMGk/nnGkJGXIM+NMTbIQlRp1XejeQ4KYd+cPsap6Ow0uculiev7bBlk5O2A5+ASLSGIOlOKM5LEhaiHJVaQ3DEIIr6JVHyRyaK3fHPk2o1zsIiEt94i8j770Xr7++9QIUQQghRZ4WOHkHm2rWk/biUiLvu8HY4QtQrZ3YjsZ7eZnI2jc6fiI4TL+p9kvd+SYk9r1avDZB6+EfX+xj9IzEGROITEIXBtwkqteai3lc0PJKwEBUEhHTFp1tL7LpASjZmYrdmuLqEOIuLOfnFfA69OJ0Wkx/GGBXp7XCFEEIIUcfogoMJHnop1t9WEzJyBIbwMG+HJES9VFlBT0vzy9H7WC7q2pbml9f6tUNbXoPBL/z09pfSIqT5mftOP6/F4NfsdBeVKIz+EWi0PhcVh6j/JGEhKlCp1ARHDial6HuaXX67q0BQGWNkJMfe+S+HXppB5D13YurX10uRCiGEEKKuChk5gow/1pD2w49E3ne3t8MRol46X0HP+nptg28YpvBeADhsua7kRVFuEpkn4gAFAL1P6BlFSP/ZRuLJ7iaibpGEhXDLP7gT6brfSDn0IymHfij3g8C3bTRtpk0l6Z33SPrvBxQeTSR83PVS10IIIYQQLjqzieDLhmJdsZLQ0SMwNG3q7ZCEqJeqU9CzLl47ISGBltHRlZ6n1Qfgb+mEv6UTAM4SG0V5JyjKKy1CmmfdQ07qXwBodH5odIHYClNAcQLSgaShk4SFcCvXupsSRwHg/geBzmym5TNPcWreAtKX/0xR4jEiH7hP6loIIYQQwiV0xNVkrv6D1O9/JOqB+7wdjhCiHlBr9PiaWuJragmAojixFaaXrsLITSLPupuyFRhlFKedtCPLsBWkoNUHlv5nCESnN6HW+lSruKes3qhbJGEh3MpI+h2UknLHzm5FpNZqaXb7bRhbtuTkF/M4NHVaaV2L5lHeCFkIIYQQdYw2MJDg4ZeRvvxnQkePwBgpta+EENWjUqkx+Ia5tpEkWHe5PU9xOsg+tQnlrN9hVGrtGUkME1p9ILqzHqs1eqA0WXFm7Q1ZveF9krAQbrmrRlzZ8eBLB2OMjCitazHtZSLvvhNTf6lrIYQQQggIufoqMn5bTer3P9L84Qe8HY4Qop7T6k1ufyfR6k206PEQJY4CHMXZOGw5pf8V5+CwZWO35VCQdZgSe26F16q1Pmj1gdgLrSiKo9xzpTdtV0vCwkskYSHcquwHgVrr6/Z83+g2tHlpKknv/Jek9z6g8OhRwm+8QepaCCGEEI2cNsAfy5XDSVuylH0PP4YjO9vVfcw8IMbb4Qkh6pnKOqcERw1FpVKh1fmh1fkBzdy+XnGW4LDnupIa9uLTiQ1bNraCFLevcdhyOPrXHLR6k2u7yZl/1ulNoChuX3smT243qY1rY8vmaG7tbpORhIVwy90PAlDhdBSQnboNU9glFV6jM5tO17X4ivSfVlB4LImo++9DGyB1LYQQQojGTBccDIAju/RmiN1qJfnTuQCStBBCVMvFdjdRqTXoDGZ0BnOF547+9Y77m7YaAz6BrXDYsinOP0l+5v4KW09AQ+J2U6VbTwpzj5Oe+ItHtpt4ciuLt7fJSMJCuOXuB0FQxCDyM/aSduQnSuwFBDWLrVDAprSuxUSMrVpwcu48Dr04jeaTH8KneXNvDEMIIYQQdUDaj8sqHFNsNk4u+Bqfli3RWYJRGwxeiEwIUR95qrtJZas3QlpeXe79FEWpsPUkPSURg68ae3HlW0/OpjjtpB1eRl76zouKuzAn0e1WFk9e+8zahp4kCQtRKXc/CAJDupJ6eCkZx/+gxJ5PSIsr3FbdDR5yuq7F2+9x+P/bu+/4qKq0D+C/Oy29TiohEAlVsC3sUhVBCTWKAZRFAY2iItjW8hFZQUFwX3SXpenaEHwBaUsREERdRRReBUSRBYGEJKSXSa/TzvtHyMiQCakzd8rv+/nkI3PvzDPP8ZDMw5Nzz120FDGPPITgQQMdlToRERE5EYNOZ/O4qbwCF16aDwBQ+vlBrQ2FWquFOjSk/r/aUKhDLx8LCYakVNqMU3rkKPK37YBBp8M5Xm5CRG3U0tUbti49KaoMRdQVt2+9+tKT/NTdNt9TCCNMxpp25X11Q8ERsZva87CjsWFBrSIplIiIvxsKtS/K8n6EyViNyG53QVI0LiB84+MR/9oCZK5+G1lvv4vatAxE3jupyWKDiIiI3JNaq7XZtFAGBiJ62n0w6Iovf+lgKCpC1bnzMFdXWz9ZkqAKCYY6NBQarfZyIyMUdYWFKPnPNxCG+t+I8nITImqPjlq9cfWlJ7rMb5rcLDS2X3K73qupS1nsHdsR2LCgVpMkCWFdRkGl9oMu82uYjTWI6jHZcjugK6mDgxD30gvI27QZRfsPoObSJcQ+8Tj3tSAiIvIgkVOSkL12PYRebzkmaTSInnZfk00FU00NDMXFMOhK6hsZxZebGsXFqElPR/lPP0EYmvitol6P/G072LAgIqdxrc1CPTV2S7BhQW0iSRJCOg2FUuWLgrTPkH12Izr1ug9KdeO7iChUKnSa8QB84roiZ93/InXhIoTcfhtKvj7EpZtEREQeoOEzvuGyjZbcJUTp4wNlTAy8Y2JsnhdCwFRRgd/mPmPzfFOXoRARyaG9m4W6Y+yWYMOC2iUw4hYoVL7IT9mBrDPr0an3NKi9bC8PCrntVnjFxCDtzX+gYPsOy3Eu3SQiInJ/wUMGd+jnvCRJUAUGNnm5iSoosMPei4ioI9hrs1BHxU5JSUHcFft0OILCoe9Gbsk/tBc69Z4Gk6ES2WfWQV9T1ORzfeO7QWljF/CGpZtERERErRE5JQmSpvFlqcbyCpQc/k6GjIiIqKOwYUEdwiewK2L6zIAQZmSdWY/aiqwmn2ssKbF5nEs3iYiIqLWChwxGTPJMqLVaAPUbfEbPnA6/Pr2R/f5a5G7YBGG0vdcFERE5N14SQh3Gyy8Sna9/EDm/bUL2bxsR1WMy/ILjGz2vqaWbDYUGERERUWs0XG6SkpKC7peXK4fefhvyNm+F7vMvUJuZhdi5s6EKCJA5UyIiag2usKAOpfYOQUzfmVB7hyL3/BZUFJ1u9Jymlm5qx412RIpERETkASSlEtH3/xkxjz6M6pQUpC5chJqMS3KnRURErcCGBXU4ldofMX2mw8c/Fvmpu1Ca96PV+auXbqqCgwClEmVHf4CZSzaJiIioA4UMG4rr5s+DMJlxcfFSlP3fj82/iIiInAIbFmQXSpU3onv/GX4hvVCUcRC6zK8hhLCcDx4yGL2WvwnvBS+j98rliJ39KGpSUpG3YZOMWRMREZE78u12HeJfWwCfrl2Q+fa/kLdlG4TZLHdaRETUDDYsyG4UChWiekxCYPgtKMn5HoVp+yCE7eIg6E9/RNj4sSj+zzco/uZbB2dKRERE7k4dHIS4eS8iZMTtKNq3Hxn/WAFTVbXcaRER0TWwYUF2JUkKhF83DiGdhqG88GfkXfg3zGbbl31ETpkEv359kfvxBlSnpjo4UyIiInJ3CpUKMQ/NQKcHZ6Dqv2eQ+upi1GZny50WERE1gQ0LsjtJkqCNvR1hXRNQVXIOOb9tgslY2/h5CgViZz8GVXAwLq18G8ayMhmyJSIiIncXOvJ2xL30Asy1Nbj42hKUnzgpd0pERGQDGxbkMMFRf0Jk/ETUVmbh0qn3kPbTCkC3GeknV6H88t1EVAH+6PL0XJiqqnBp9Tttum96edFppJ9chZQfXreKTURERNTAr1dPxL+2AF7RUbi0YhUKdn3KfS2IiJwMGxbkUAFh/RAUORAmQzlMhgoAgFFfhsKLe1GadxxGQxXUnbSImvlnVJ87j5yNG2E0VLX4qzTvOAov7oVRX/Z77LR9bFoQERFRI+rQUFw3/yUEDx2Mgh27kLnqbZhqauROi4iILlPJnQB5nqriM42OCWFEUcYBFGUcqD+gAZQ3BaHkq0OoxBkoewe0+f2E2YDizP8gMKxfm2MQERGRe1JoNIh59BF4d+2KvM1bUbdoKbo8MxdekZFyp0ZE5PHYsCCHa1j9YEt43BjLn0WsGYVVe1B3KA+h/YZD0zmi2diF6QeaeM9y5F3YAX/t9fANjodCoW594kREROSWJElC2JgEeMd2Rubqd5C6cDFi5zyOgBv4yw4iIjmxYUEOp9IE2WxaqDRBCIocYHXM/5neSF24GMX/+x/EL1oAVWDgNWOX5By1GVtSaFBTno7K4jOQFBr4h/aCf+j18A3qBkmhbN+AiIiIyC34970e8a+9gowVq5Hx1nJE3TcFyqBAFGzfCYNOB7VWi8gpSQgeMljuVImIPAL3sCCHC40dAemqFQ6SQo3Q2BGNnqsKDESXp+bAWFGOzDX/gjCZ2hQ7/LpxiPvDM+jUexr8tX1QVXIBuee3IO2n5Si4uBfVZRchBDfaIiIi8nSaiAjEL5iPwD/2R97mrch+fy0MOh0AwKDTIXvtepQeOSpzlkREnoENC3K4wLB+CL9uPFSaIAD1KyvCrxvf5B4TPtfFodNDM1F19jfkbdnW5tiSpIBvUDdEdkvEdX94FtE974NvcHdU6M4g57dNSP9pBQrT9qOm/BKEEB07aCIiInIZCi8vxM6ZDYWvD3DVnUOEXo/8bTtkyoyIyLPwkhCSRWBYPwSG9UNKSgriundv9vkhw4aiJi0dugMH4RMXh+Ahg5qNfS2SQgm/kB7wC+kBs9mA6tIUVOjOoLzwF5QVnIBSHYAA7fXw114PL79OkCSp1WMkIiIi1yVJEszVtu8Y0rDigoiI7IsNC3IZ0X++D7WXMpG9dh28YjrBp2uXDomrUKjhH9oH/qF9YDbVoarkAip0/0Vp/jGU5v0AlVcw/EOvR4C2L+qqC1Cc9Q2M+jKoNEEIjR3RYXcfKS86jeLMr102NvRlSK9wnbyJiIiao9ZqbTYnlH5+EGYzJAUXKxMR2RMbFuQyJJUKXebORsqCRbi0YjXiX1sAVYB/h76HQumFgLB+CAjrB5OxBlUl51ChO4PS3KMozT1i9VyjvgyFF/fAUFcCv+BmVokYi1Fbldvk6arSFJRmfwchTK2P3Qy3ip22FwDYtCAiIoeInJKE7LXrIfT63w9KEkxVVUh9dTGiH5gGv5495EuQiMjNsWFBLkUVFIQuT81B2pK/IfPtfyHu+WchKe1zlw+lygeB4TcjMPxmmAxVyPjlHZhNtVbPEcKEkqxDKMk61Gy8rKbv5mpTa2K3lsvGNhtRkPopKgpPQqUJgkoTCJVXYP1/NUFQawKhUHm1KJa9V29wdQgRketruBtI/rYdlruEREy+B5KkQN7WbUh7/Q0EDfoTIu+dAk2YVuZsiYjcDxsW5HJ847sheuYDyPlwHfK370DUfVPs/p5KtV+jZsWVonvee83X5+bmIjo6uunz57e2OXZz3C+2GcJsQk15Goz6SgDWG6QqlF6XGxjWzYwrH1cW/4bCtH0QZgOAhtUb+wB0zOqN8qLTdo1PRESOEzxksM3bmAb2vwWF+/ajaN9+lP/0M8LGjUH4+LFQeLWscU5ERM1jw4JcUujw21Cblo6iffvhE9cVQQP/ZPf3VGmCYNQ3Xiah0gTBL6TntV+sU8AvpOlLJNoVuxnuGLtz3wcBAEKYYdRXwKgvr/+qK4dRX2b5c21VLszGahvRJVzd6BBmAwrTPkNdVc61E6sqRWHGxWs+pbzgZ0uz4sr4uktfISC0DySFfVYFERGR4yi8vBCZNBEhtw1D3uZtKNz1KUq//Q6RU6cgaOCfuGE3EVEHYMOCXFbUA9NQm5mFrPfXwqtTJ3jHdrbr+4XGjrD6rTkASAo1QmNHMLZMsSVJAbVXENReQU3GMZsN9U2NujJLY6O4ictVhFmPisJfrp2Y2YyKwmtvsibMepvHTYYKpB77G5Rqf6i8AqFuWP1hWQlS/6VU+12z0OUmqkREzkMTFoYuc2ej6twdyN2wCVlvv4viL75C9APT4HNdnNzpERG5NDYsyGUpVCrEPvkEUhe8dnkTzleg9POz2/s1/MPKHv/gYmz7xVYo1NB4h0LjHWo5Vl7wc5OrN+JuefKa8VJSUtCtmVvxpp9cZTO+QumNoKgBl1eClKOuOh9VJRcghNH6iZISKk0AVJrLTQ2v3y9rqasuQEn2YctrOvJyE3teysLLZKi99uzZg3feeQdGoxEzZ87E/fffb3X+yy+/xKpVqyCEQOfOnfHGG28gKKjpZiZRR/Pr1RPxry1AyeHvkL9tB1JfXYzgW4cicvIkqIP5d5GIqC3s2rBgcUH2pg4ORpcn5yBt6f8g85330PUvT9v1FmOBYf3s9o8rV4+dkpKCuGb+Id/W2B3NnitDrhU/LG5Mo/EIIWA21sCgL7M0Mn6/xKUMNRWXYNRV4OpLWKximA0oSN2FovQD7crb1j4t9o5dlL4fwmywas4olK2//tvVbwvsaqtlHC0/Px/Lly/Hjh07oNFoMHXqVAwcOBDdL//MqaysxKuvvop///vfiIyMxIoVK7Bq1Sr89a9/lTlz8jSSQoHQ4bch6I8DULh7L3QHv0D5j8cRfncitAl3QqFWy50iEZFLsVvDgsUFOYpvj+6Inn4/ctZ9jIIduxA5OUnulMjJ2XNlSGvjS5IEpdoXSrUv4Gd7Y1YhzDAZKmGsK0fWmXVNvm9A2A3tyrss/5jDY5tNdZaVFg0USu+rNk39fRNVtSYIKk0AJMXvH1+uujLEVWPL4ciRIxg0aBCCg4MBAKNHj8aBAwcwd+5cAIDBYMDChQsRGRkJAOjVqxf27NkjV7pEUPr6IurP9yJkxHDkfbIF+Vu2oeTrQ4iadh8CbrmZ+1sQEbWQ3RoWLC7IkUJGDEdNWhoKP90L765dEfTH/nKnRE7OnqtOOjq+JCmu+Id705uRhseNbtf7VJWclyF2IGKun3HFpqnlVn+urcyG2VjT6HVKtZ/l/0d12UWbm5wWZRyEUqlpOil9LqpKzNfMuyjjYNtit4AcsYszv3bJhkVBQQHCw8MtjyMiInDq1CnL45CQEIwaNQoAUFtbi/feew/Tp093eJ5EV/OKikTXZ59CxanTyNv0CS79cxX8+vVF9LSp8O4cI3d6REROz24NC0cUFxkZGR2TrBNLSUmROwW766gxiqGDIV1IRebb/0Kmjw9QWQkEBUI18naobpC/QOdcug9Zx6nuA+iPATBdcVAJo7pP+/OSJfb1yMgsuvzY+/JXBKAE4HP5SxgBc3X9l6n+vyZzNUz6atTV5gBNbHJqNlZf89a7AJBb0bbhtCR2W9kztlFf5pLfp2az2eo30kIIm7+hrqiowJw5c9C7d2/cc889rX4fd68rXHHu28Ipx+nrDTw0A6oTP6Hqm8NImb8AygF/ACLCYfruCFBW3qqaxSnHaAccp/vwhDECnjFOR4/Rbg0LRxQXXbt2hdqNrwVMSUmxXELjrjp6jEUjhyNvwyf1zQoAKCuHad8BREVG2ryHuqNwLt2H/OPsjvKiKDtdzuKasdNProRRX97ouFLth+heU5t8XVZmJjrHxl4zdu65zTAZqloduyXkiK3SBHXIXjMGg8Gh/7iPiorC8ePHLY8LCwsRERFh9ZyCggI8/PDDGDRoEF5++eU2vY871xXy/+xyDKcfZ69eMCZOQMGOXSj+6mvrcy2sWZx+jB2E43QfnjBGwDPGaY8xNldT2K1h4ajiguhKuv0HGx0Tej3yt+2QtWFB1JG4iaq10NiRNjc51XYZBe8m9gUBAKiqrn0egLbLqLbFbgE5YnfUxrKONmTIEKxatQrFxcXw8fHBwYMHsXjxYst5k8mExx9/HGPHjsUTTzwhY6ZEzVMFBKDTzOkoP/ETjKXWl8oJvR65GzfDv19fqAIDZcqQiMh52K1hweKC5GDQ6Vp1nIhcnyvcXtedYsshMjISzz77LGbMmAGDwYDJkyfjxhtvxKxZs/DUU08hLy8PZ86cgclkwueffw4A6NevH5YsWSJz5kRNu7pZ0cBUUYHf5j4DTVQkfHv0gG/P7vDr0QOa6Chu1klEHsduDQsWFyQHtVZrszmh1mplyIaIHMXVbwtsz9j2WC0jh8TERCQmJlode//99wEAN9xwA3777Tc50iJqs6ZqFmVgIMLGJKD6QgoqTv6M0sPf1R/394dvj+4whoagyizgExcHhcY9L2EiImpgt4YFwOKCHC9yShKy166H0Ftvwhd650iZMiIiIiJqzFbNImk0iJ52n+UyViEE9Ll5qLpwAdXnU1B94QKMJ39G2ldfQ1Kp4HNdHHx7dK9fidEj3uoyktIjR5G/bQcMOh3UWi0ipyTx8lgicjl2bVgQOVrDB3HDB7QqJBim6hqUfvsdQkfeDqWPj8wZEhERETWuWWw1FSRJglenaHh1ikbo8NsAABd++QWRRjOqL1xA9YUU6A5+iaLPDgCA5TISKCSUHfk/CEP9PjYGnQ7Za9dbvS8RkStgw4LcTvCQwVYfxpVnziJ92d+R9d4H6PLkHEgKhYzZEREREdW7umZpCcnPD4HduyOw/y0AALPegJr0dFSfv2C5jMTUcLe0K3ATciJyRWxYkNvzv74Poqbei7xNm1G4dx8i7kps/kVERERELkChUcOvZw/49ewBoP4ykv/OfNjmc7kJORG5Gv6qmTyCdvQoBA0ehIJ/70LFL6fkToeIiIjILiRJuuZm42lvLEPFL6cghHBgVkREbcOGBXkESZIQkzwT3rGdkfnOe6jLz5c7JSIiIiK7iJySBEmjsTomadQIHDwIdfn5yPj7P5Hy14Uo+f4IhNEoU5ZERM1jw4I8hsLLC12engtJknBpxWqYamvlTomIiIiowwUPGYyY5JmWlRZqrRYxyQ+iy+xH0fOt/0HMow8DZoHsdz/A+edfQtGBgzDV1MicNRFRY9zDgjyKJjwcsXMeR/qb/0D2B2sRO2c2JEmSOy0iIiKiDtXUhp4KlQohw4YieOgQVJ76FYX79iNv02YU7PoU2jtHQjvqDqiCgmTImIioMTYsyOP49+uLyHsnI3/LNhRddwDh48fKnRIRERGRQ0mShICbbkTATTeiOjUVRZ8dQOGefSjafwDBw4YhbOxoeEVFyp0mEXk4NizII4WNG4OatHTkb90O7y6xCLihn9wpEREREcnCNz4eXZ6cg7rcPBQd+Byl332Hkm8OIXDAHxA2bix847vJnSIReSjuYUEeSZIkdJ6VDK/OMch6+13oCwrkTomIiIhIVl7RUYh5aCZ6/v1NhE8Yh8r/nsXF117nnUWISDZcYUEeS+HlhS5PzUXqwkW4tGI1ui2YD4WXl9xpEREREclKHRyEyCmTEDZhHEoOHUbRgc+R8fd/wiu2M8LGjQHMAgU7dsGg00Gt1SJySpLN/TKIiNqLKyzIo3lFRiB29qOozcpG9ofr+JsDIiIiosuUPj4IG5OAXm/9D2IeewQQ9XcWyX7/Qxh0OgCAQadD9tr1KD1yVOZsicgdsWFBHi/gphsRMekelP3fD9B9/oXc6RARERE5FUmlQsjQIei+ZBGUAQGNzgu9HvnbdsiQGRG5OzYsiACEJ45H4ID+yNu8FZVnzsqdDhEREZHTkSQJpooKm+caVlwQEXUkNiyIUP8BHDMrGV5Rkchc8w70RUVyp0RERETkdNRabauOExG1BxsWRJcpfXzQ5eknIYwmXFq5Bma9Xu6UiIiIiJxK5JQkSBpNo+MhI4bLkA0RuTs2LIiu4BUdhc6Pz0JtegZyPvqYm3ASERERXSF4yGDEJM+0rKhQhYRA8vVBybeHYaqqkjk7InI3vK0p0VUCb7kZEUkTUbBjF3yui4M24U65UyIiIiJyGsFDBlvdxrQ6JRVpS/6GzHfeQ9e/PA1Jwd+JElHH4E8TIhvC75qAgFtuRu6mzaj67Zzc6RARERE5Ld/u8YiePg2Vp35Fwa5P5U6HiNwIGxZENkgKBTo/9gg0EeG4tPodGIqL5U6JiIiIyGmFjLgdwbcOQ+GuT1F+8meZsyEid8GGBVETlL6+9Ztw6usub8JpkDslIiIiIqckSRI6zXwA3nFdkfXu+6jLy5c7JSJyA2xYEF2Dd0wndH70EdRcTEPOx//LTTiJiIiImqDQaNDlqTmQFEpcWrkaptpauVMiIhfHhgVRMwIH9Ef4XRNQ+u13KPn6G7nTISIiInJamrAwxD7xGOqyc5Dz4Tr+soeI2oV3CSFqgYikiajJuISc9RuQv3M3TGXlUGu1iJySZLVLNhEREZGn8+/XF5FTJiF/63b4dLsOYWNHy50SEbkorrAgagFJoUDgH24BhICprBwAYNDpkL12PUqPHJU5OyIiIiLnEjZ+LAIH9Efelm2oPPub3OkQkYtiw4KohQo/3dvomNDrkb9thwzZEBERETkvSZIQMysZXpGRyOQd14iojdiwIGohg07XquNEREREnkzp44MuT8+FMBjq77hm4B3XiKh12LAgaiG1VmvzuKTRwFhR4eBsiIiIiJyfV6dodH70YdRcTEPuhk/kToeIXAwbFkQtFDklCZJGY31QqYQwGJDy8isoP/mzLHkRERERObPAAf0RNmEcSr7+BsWHvpU7HSJyIWxYELVQ8JDBiEmeaVlpodZq0XlWMrovfhWqwEBcWr4SWR+shammRuZMiYiIiJxL5OQk+PW9Hrkfb0D1xTS50yEiF8HbmhK1QvCQwTZvY9rttQUo3LkbhXs/Q9WZs4iZ9TD8+/SWIUMiIiIi5yMpFIh94jGkLlyEzJVrEL9oAVSBgXKnRUROjissiDqAQqVC5JRJ6PbXeZCUSqS/sQy5Gz+BWa+XOzUiIiIip6AKCECXp+bCWFGOzLffhTCZ5E6JiJwcGxZEHci3R3d0f/01hN45ErrPv0DqK6+hhsseiYiIiAAAPnFd0enBGag6cxb523lreCK6NjYsiDqYwssLnWY8gLgXn4Oprhapi5bA8M23EEaj3KkRERERyS7k1mEIHTkCRfv2o+zH43KnQ0ROjA0LIjvx79cXPZYsRvDggTB9+x1SFy1BbXa23GkRERERyS7qgT/DJz4e2R98yPqIiJrEhgWRHSn9fNH5sVlQT0mCQadD6oLXULT/AITZLHdqRERERLJRqFTo8uQTkDReuLRiNUzV1XKnREROiA0LIgdQ9umNHksXw/+GG5D3yVakvbEM+sJCudMiIiIiko06NARd5s6GvqAQWe99yF/oEFEjbFgQOYgqKAhdnp6LmFkPo/ZSJlLmL0Dx14cghJA7NSIiIiJZ+PXuhaip96Lip5Mo3PuZ3OkQkZNhw4LIgSRJQsitQ9F9ySL4dOuGnI/WI+MfK2AoLZU7NSIiIiJZaEePQtCggSj4905U/Hpa7nSIyImo5E6AyBNpwrSIe/E5FH/5H+Rt3Y6Uea8gaMggVPz0Mww6HdRaLSKnJCF4yOAOeb/SI0eRv22H3WOfc9G8Ozq2veNzPhm7tbE7ei6JiDqSJEmIefhB1GZn49KK1VD6+cJYUsrPITeKzbl0n9iOrinYsCCSiaRQQJtwJ/xv6Iv0t5aj+IuvLOcMOh2y164HgHb/MCg9chTZa9dD6PWM7YDY9o7P2Iwtd2wiIntQeHkheNgQ5H+yFUYX+7nI2IzN2PYjCRe8gL6urg6nT59G165doVar5U7HblJSUtC9e3e507ArTxgj0Pw4zz37PAy6YpvnFN7e7Xpvc21tk+cYu/WxzWYzFIprX03nrLkz9lWv88C5VGu16LX8zXbFBgCDwYCMjAz069cPXl5e7Y4nN0+oK/h56z7ceYznnn0BBp3O5jlX/JnbktjNfRY5a96MbeO1HjaXjqopuMKCyAk01awAgJDht7Urtu7zg4zdgbFLS0sRHBxst/jNYeyOi+2Jc9nUPwSIiJzBtX5GueLP3JbEbu6zyFnzZuzGPG0uHVVTsGFB5ATUWq3Nb3q1Vovo+6e2K3b58ROM3YGxq1JSEN3Mb7acNXfGtuapc0lE5Kw8sR5q7rPIWfNm7MY8cS4dwa53CdmzZw/GjRuHhIQEbNy4sdH5s2fPIikpCaNHj8b8+fNhNBrtmQ6R04qckgRJo7E6Jmk0iJySxNguFtve8RmbseWOLRfWFETuz1V/LjI2YzO2/dhthUV+fj6WL1+OHTt2QKPRYOrUqRg4cKDVNXcvvPACXn/9ddx88814+eWXsXXrVkybNs1eKRE5rYYNa+yxsy9jOza2veMzNmPLHVsOrCmIPIOr/lxkbMZmbPux26abO3fuxLFjx7B06VIAwJo1ayCEwNy5cwEA2dnZmDlzJr788ksAwPHjx7Fy5Up8/PHHzcb2hM2xAPfeVKmBJ4wR8IxxesIYAY7TnXjCGAH7jNPRm27as6YAPKOu4N939+EJYwQ4TnfiCWMEPGOcctQUdlthUVBQgPDwcMvjiIgInDp1qsnz4eHhyM/Pb9V7ZGRktD9RJ5eSkiJ3CnbnCWMEPGOcnjBGgON0J54wRsD1x+mImgJw/7rC1f8etJQnjNMTxghwnO7EE8YIeMY4HT1GuzUszGYzJEmyPBZCWD1u7nxLuPNvQgB26dyJJ4zTE8YIcJzuxBPGCNj3tyGO4oiaAnDvuoJ/392HJ4wR4DjdiSeMEfCMccpRU9ht082oqCgUFhZaHhcWFiIiIqLJ80VFRVbniYiIiADWFERERJ7Kbg2LIUOG4OjRoyguLkZNTQ0OHjyI2277/R6wMTEx8PLywokTJwAAu3fvtjpPREREBLCmICIi8lR2a1hERkbi2WefxYwZMzBx4kRMmDABN954I2bNmoVff/0VAPDWW2/hjTfewJgxY1BdXY0ZM2bYKx0iIiJyUawpiIiIPJPd9rAAgMTERCQmJlode//99y1/7t27N7Zv327PFIiIiMgNsKYgIiLyPHZtWNhLw51YjUajzJnYn8FgkDsFu/OEMQKeMU5PGCPAcboTTxgj0PHjbPj8tdOd0R3OU+oK/n13H54wRoDjdCeeMEbAM8bp6JpCEi5YbVRUVOD8+fNyp0FEROTRevbsiYCAALnTaDfWFURERPJqqqZwyYaF2WxGVVUV1Gp1m25bRkRERG0nhIDBYICfnx8UCrtth+UwrCuIiIjk0VxN4ZINCyIiIiIiIiJyb67/axEiIiIiIiIicjtsWBARERERERGR02HDgoiIiIiIiIicDhsWREREREREROR02LAgIiIiIiIiIqfDhgUREREREREROR02LIiIiIiIiIjI6bBhIbPVq1dj/PjxGD9+PJYtW2bz/IgRI3D33Xfj7rvvxsaNG2XIsv2mT5+O8ePHW8bxyy+/WJ0/e/YskpKSMHr0aMyfPx9Go1GmTNtu27ZtlvHdfffd6N+/PxYtWmT1HFeez8rKSkyYMAFZWVkAgCNHjiAxMREJCQlYvny5zdfk5OTg/vvvx5gxYzB79mxUVVU5MuVWu3qMW7ZswYQJE5CYmIh58+ZBr9c3es3OnTsxbNgwy5w29f/CmVw9znnz5iEhIcEyhi+++KLRa1xtLgHrcR46dMjq+3PQoEF47LHHGr3GlebT1ueHO35fUut4Ql3BmqKeK8+lJ9QUAOsKd6or3L2mAJy4rhAkm++//17cd999oq6uTuj1ejFjxgxx8OBBq+c89thj4qeffpIpw45hNpvFsGHDhMFgaPI548ePFydPnhRCCDFv3jyxceNGB2VnH+fPnxejRo0SOp3O6rirzufPP/8sJkyYIPr27SsyMzNFTU2NGD58uLh06ZIwGAwiOTlZfPPNN41e9+ijj4q9e/cKIYRYvXq1WLZsmaNTb7Grx3jx4kUxatQoUVFRIcxms3jxxRfFRx991Oh1ixYtEnv27HF8wm109TiFEGLChAkiPz//mq9zpbkUwvY4GxQUFIg77rhDpKWlNXqdq8ynrc+PPXv2uN33JbWOJ9QVrCl+56pz6Qk1hRCsK9yprnD3mkII564ruMJCRuHh4XjppZeg0WigVqsRHx+PnJwcq+ecPn0a7777LhITE7Fo0SLU1dXJlG3bXbx4EQCQnJyMu+66Cxs2bLA6n52djdraWtx8880AgKSkJBw4cMDRaXaoV199Fc8++yxCQ0OtjrvqfG7duhULFy5EREQEAODUqVPo2rUrYmNjoVKpkJiY2GjODAYDjh07htGjRwNw/nm9eowajQYLFy6Ev78/JElCz549G31/AsCvv/6KnTt3IjExEc8//zzKysocnXqrXD3Ompoa5OTk4OWXX0ZiYiJWrlwJs9ls9RpXm0ug8TivtGzZMkydOhVxcXGNzrnKfNr6/EhPT3e770tqHU+oK1hT/M5V59ITagqAdYU71RXuXlMAzl1XsGEhox49elg+UNPT07F//34MHz7ccr6qqgp9+vTBCy+8gJ07d6K8vBxvv/22TNm2XXl5OQYPHow1a9Zg3bp12Lx5M77//nvL+YKCAoSHh1seh4eHIz8/X45UO8SRI0dQW1uLsWPHWh135flcsmQJBgwYYHl89ZxFREQ0mrOSkhL4+/tDpVIBcP55vXqMMTExGDp0KACguLgYGzduxB133NHodeHh4XjiiSfw6aefIjo6utGSXWdz9TiLioowaNAgLF26FFu3bsXx48exfft2q9e42lwCjcfZID09HT/++CNmzJhh83WuMp+2Pj8kSXK770tqHU+oK1hT1HPlufSEmgJgXeFOdYW71xSAc9cVbFg4gQsXLiA5ORkvvviiVXfOz88P77//PuLj46FSqZCcnIxDhw7Jl2gb3XLLLVi2bBkCAgIQGhqKyZMnW43DbDZDkiTLYyGE1WNXs3nzZjz00EONjrvLfAItmzNbx1xxXvPz8zFz5kxMmjQJAwcObHR+zZo16N+/PyRJwiOPPILDhw/LkGXbxcbGYs2aNYiIiICPjw+mT5/e6O+lu8wlUH/98LRp06DRaGyed7X5vPLzIzY21mO+L+na3LmuYE1Rzx3msoEn1RQA6wrAfebT3WoKwDnrCjYsZHbixAk8+OCDeO6553DPPfdYncvJybHqSAohLN0rV3L8+HEcPXrU8vjqcURFRaGwsNDyuKioyOaSK1eg1+tx7NgxjBw5stE5d5lPoPGcFRYWNpqz0NBQVFRUwGQyNfkcZ5eamoqpU6finnvuwZw5cxqdr6iowLp16yyPhRBQKpUOzLD9zp07h88//9zy2NbfS3eYywZfffUVxo0bZ/Ocq83n1Z8fnvJ9Sdfm7nUFa4p67jCXDTzpZxfrinruMp/uVFMAzltXsGEho9zcXMyZMwdvvfUWxo8f3+i8t7c33nzzTWRmZkIIgY0bN2LUqFEyZNo+FRUVWLZsGerq6lBZWYmdO3dajSMmJgZeXl44ceIEAGD37t247bbb5Eq3Xc6dO4e4uDj4+vo2Oucu8wkAN910E9LS0pCRkQGTyYS9e/c2mjO1Wo0BAwbgs88+AwDs2rXLpea1srISDz/8MJ5++mkkJyfbfI6vry8++OADyw71GzZscLk5FUJg6dKlKCsrg8FgwJYtWxqNwdXnskFxcTFqa2sRGxtr87wrzaetzw9P+L6ka/OEuoI1RT13mMsGnvKzi3XF79xhPt2ppgCcvK7o0C08qVUWL14sbr75ZnHXXXdZvjZt2iQeeeQRcerUKSGEEAcOHBDjx48XCQkJ4qWXXhJ1dXUyZ902y5cvF2PGjBEJCQli3bp1QghhNc6zZ8+KSZMmidGjR4u//OUvLjvOffv2iWeeecbqmDvN54gRIyy7Ix85ckQkJiaKhIQEsWTJEmE2m4UQQrz88sviyy+/FEIIkZWVJR544AExduxYkZycLEpLS2XLvaUaxvjRRx+Jvn37Wn1//vOf/xRCWI/x2LFjYuLEiWLMmDHi8ccfF+Xl5XKm32JXzuWGDRvE2LFjxahRo8Sbb75peY6rz6UQ1uP85ZdfxJQpUxo9xxXns6nPD3f9vqSW8ZS6gjWFe8ylJ9QUQrCucKe6wl1rCiGcu66QhBCiY1sgRERERERERETtw0tCiIiIiIiIiMjpsGFBRERERERERE6HDQsiIiIiIiIicjpsWBARERERERGR02HDgoiIiIiIiIicjkruBIjI9fTq1Qs9e/aEQqGAJEmoqamBv78/Xn31Vdxwww12f/9FixYhJCQETz75pN3fi4iIiOyLdQURNYUNCyJqk/Xr1yM0NNTy+MMPP8Trr7+OLVu2yJgVERERuSLWFURkCy8JIaJ2MxqNyM3NRVBQEADAYDBg8eLFGDduHBITEzF//nxUVlYCAEaOHIlff/3V8tqGx1lZWbjzzjuxePFiTJ48GQkJCfjiiy8AAJWVlXj66acxevRoTJ8+HRcvXnT8IImIiMghWFcQUQM2LIioTWbOnInExEQMGzYMo0ePBgC88cYbAIB33nkHBQUF2L17N3bv3g2z2Yxly5Y1GzMzMxPDhg3D9u3b8dxzz2Hp0qUAgJUrV8Lb2xsHDhzAihUrkJaWZr+BERERkcOxriAiW9iwIKI2Wb9+Pfbs2YN3330XtbW1GDhwILRaLQDg22+/xdSpU6FWq6FQKDB9+nQcPny42ZhqtRrDhw8HAFx//fUoLS0FABw9ehQTJ06EJEkIDQ3FqFGj7DYuIiIicjzWFURkCxsWRNQuffv2xbx58/DSSy8hKysLAGA2myFJkuU5ZrMZBoPB8lgIYfmzXq+3/LmhEAFg9fqrX6NUKjt2EEREROQUWFcQ0ZXYsCCidpswYQJuvPFGy9LNW2+9FZ988gkMBgPMZjM2btyIoUOHAgBCQ0Nx+vRpAMAPP/yAwsLCZuPfeuut2L59O8xmM8rKyvDVV1/ZbzBEREQkK9YVRNSADQsi6hCvvPIKDh06hMOHD2P27NkICwvDxIkTMXbsWBiNRsyfPx8A8Pzzz+Pjjz/G3Xffjd27d6Nv377Nxn7yySehUqkwduxYPP744+jZs6e9h0NEREQyYl1BRAAgiSvXQxEREREREREROQGusCAiIiIiIiIip8OGBRERERERERE5HTYsiIiIiIiIiMjpsGFBRERERERERE6HDQsiIiIiIiIicjpsWBARERERERGR02HDgoiIiIiIiIicDhsWREREREREROR0/h9woc12RH7FFAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Re-using the plotting code but for the loss data this time\n",
    "fig, axs = plt.subplots(1, 2, figsize=(15, 5))\n",
    "colors = ['y', 'b', 'r', 'y', 'b', 'r']\n",
    "\n",
    "custom_labels = {\n",
    "    'Group 4': 'RT-Cabi without data correction',\n",
    "    'Group 2': 'CNN',\n",
    "    'Group 6': 'RT-Cabi',\n",
    "    'Group 1': 'RT-Cabi',  \n",
    "    'Group 5': 'RT-Cabi without data correction',\n",
    "    'Group 3': 'CNN'}\n",
    "\n",
    "\n",
    "for i, (name, data) in enumerate(list(loss_data_groups.items())[:3]):\n",
    "    axs[0].plot(range(1, 21), data, marker='o', label=custom_labels[name], color=colors[i])\n",
    "axs[0].set_title('Comparison of model loss \\n on the dataset Edge-IIoT')\n",
    "axs[0].set_xlabel('Round')\n",
    "axs[0].set_ylabel('Loss')\n",
    "axs[0].legend()\n",
    "axs[0].grid(True)  # Add grid lines\n",
    "\n",
    "\n",
    "for i, (name, data) in enumerate(list(loss_data_groups.items())[3:]):\n",
    "    axs[1].plot(range(1, 21), data, marker='o', label=custom_labels[name], color=colors[i + 3])\n",
    "axs[1].set_title('Comparison of model loss\\n on dataset UNSW_NB15')\n",
    "axs[1].set_xlabel('Round')\n",
    "axs[1].set_ylabel('Loss')\n",
    "axs[1].legend()\n",
    "axs[1].grid(True) \n",
    "\n",
    "plt.tight_layout()\n",
    "plt.savefig('Loss.pdf', format='pdf')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
