{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## How Solutions are Represented\n", "A solution to the JSSP can be defined as a sequence of operations for each machine. The `Schedule` class maintains a list of `ScheduledOperations` for each machine, which stores the operation, the time it starts to be processed and the machine in which it is going to be processed.\n", "\n", "The `Schedule` class requires a `JobShopInstance`, which describes the JSSP you're working with. You can optionally pass a predefined schedule, a list of lists where each sublist represents the operations scheduled on a particular machine. We can create a possible solution for our instance manually as follows:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, the operations from the previous example are organized by their respective machines." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from job_shop_lib import JobShopInstance, Operation\n", "\n", "CPU = 0\n", "GPU = 1\n", "DATA_CENTER = 2\n", "\n", "job_1 = [Operation(CPU, 1), Operation(GPU, 1), Operation(DATA_CENTER, 7)]\n", "job_2 = [Operation(GPU, 5), Operation(DATA_CENTER, 1), Operation(CPU, 1)]\n", "job_3 = [Operation(DATA_CENTER, 1), Operation(CPU, 3), Operation(GPU, 2)]\n", "\n", "jobs = [job_1, job_2, job_3]\n", "\n", "instance = JobShopInstance(\n", " jobs,\n", " name=\"Example\",\n", " # Any extra parameters are stored inside the\n", " # metadata attribute as a dictionary:\n", " lower_bound=7,\n", ")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from job_shop_lib import ScheduledOperation, Schedule\n", "\n", "cpu_operations = []\n", "gpu_operations = []\n", "data_center_operations = []\n", "\n", "# Split the operations into three lists, one for each machine\n", "for job in instance.jobs:\n", " for operation in job:\n", " if operation.machine_id == CPU:\n", " cpu_operations.append(operation)\n", " elif operation.machine_id == GPU:\n", " gpu_operations.append(operation)\n", " elif operation.machine_id == DATA_CENTER:\n", " data_center_operations.append(operation)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note, that since each job does not have more than one operation for the same machine, we don't have to worry about the order of the operations in the list. However, we have to take into account the start time of each operation. In this case, we add to the last start time of the previous machine the maximum job duration of the instance. Of course, the solution will not be optimal, but it is a valid solution for the instance." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Schedule the operations as they are ordered in the instance\n", "def schedule_operations(operations, machine_id, start_time=0):\n", " machine_schedule = []\n", " for operation in operations:\n", " machine_schedule.append(\n", " ScheduledOperation(operation, start_time, machine_id)\n", " )\n", " start_time += 7\n", "\n", " return machine_schedule\n", "\n", "\n", "cpu_schedule = schedule_operations(cpu_operations, CPU)\n", "gpu_schedule = schedule_operations(gpu_operations, GPU, start_time=5)\n", "data_center_schedule = schedule_operations(\n", " data_center_operations, DATA_CENTER, start_time=10\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we can create a `Schedule` object with the instance and the solution." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "instance_schedule = [cpu_schedule, gpu_schedule, data_center_schedule]\n", "schedule = Schedule(instance, instance_schedule)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Is the schedule complete? True\n", "Makespan: 25\n" ] } ], "source": [ "print(f\"Is the schedule complete? {schedule.is_complete()}\")\n", "print(\"Makespan:\", schedule.makespan())" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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aRKysrKwcuVKODo6Aqj5OBkxYgSaN2+O+fPn4/vvv8dLL72EgIAAvPfee7jllluwYMECfPLJJ3jyySfRqVMn9OzZs8LPv/zyyzCZTHjqqaeQnp6ON954A71790Z8fDzc3d0v2eaHH34YK1euxNixYzFlyhQkJyfjrbfewu7du7Ft27YKV5ury++//46vvvoKjz76KLy9vbF06VLcddddSElJQWBgIADgkUcewdq1azF58mTExMTg/Pnz+P3333HgwAG0b98ezzzzzCXHTHZ2Nv79739j5MiReOihh5CTk4MPPvgA/fr1w44dO9C2bdsKeVavXo2cnBw8/PDDMJlMWLhwIe68804cPXq0vH179uzBjTfeCGdnZ0yYMAH169dHUlISvvvuO7z88ssAgDNnzuCGG26AyWTC5MmTERwcjB9//BHjx49HdnY2pk2bVuNjRQipgtquSonxyMrKUgDUkCFDKn0vIyNDnT17tvzrn1eFLK+OKaXUp59+qgCo3377rfyxsqso48aNq/DcoUOHqsDAwAqPeXp6qtGjR1fyvvrqq1e8OljGN998owCoxYsXX/G5Sv3fFabmzZurwsLC8seXLFmiAKi9e/eWP1ZVm+fNm6dMJpM6fvx4+WOjR49WANTTTz9d6fkDBw685NXBqqjqyt3XX3+tAKiXXnqpwuPDhg1TJpNJHTlypPwxAMrBwUHt27ev2q+HKq5QAlAPP/xwhefOmjVLOTg4qN9++02tWbNGAVBvvPFGhefUdJxMmDCh/LGSkhJVt25dZTKZ1Pz588sfz8jIUO7u7hXGSlk/1qlTp8IV4i+++EIBUEuWLCl/zPJK4X//+18FQH3yyScVcv70009VPm7Jpa4Uuri4VOiLv/76SwFQb775Zvljvr6+atKkSZf1X2rMlJSUVBizSv19bEJDQyucb2VXCgMDAytc+Sw7V7777rvyx3r27Km8vb0rjGelVIUr0OPHj1fh4eGVrvbec889ytfXt8o+J4TUnGtjwha5rsjOzgZQ9RWrXr16ITg4uPxr2bJl5d/751WXgoICnDt3DjfccAMAIC4urpLrkUceqfD/G2+8EefPny9/fV2U+WpylRAAxo4dCxcXlwr5AODo0aPlj/2zzXl5eTh37hy6desGpRR2795dyTlx4sQaZaguP/zwAxwdHTFlypQKjz/xxBNQSuHHH3+s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IgIPPPAAUlNTrc43d+5cNGvWDJ6envD390fv3r2xfft2q33/5JFHHoHJZMIbb7xhtW/MmDGVxmH//v2tznbgwAHccccd8PX1haenJzp16oSUlBSrfFWdIyaTCa+++qpVvtzcXEyePBl169aFu7s7YmJi8O6771bpqo7vzJkzGDNmDCIiIuDh4YH+/ftfcixX5z24oKAAkyZNQmBgILy8vHDXXXfhzJkzVvuWL1+OXr16wcfHByaTCZmZmZds65V8Fy5cwGOPPYbo6Gi4u7sjMjISU6ZMQVZWltX5Hn74YTRq1Aju7u4IDg7G4MGDcfDgQat9ZSilMGDAgEuO0eq4evXqVWncPfLII5c8fsS+XLNF4eeff47p06djzpw5iIuLQ5s2bdCvXz+kp6fX2JWXl4c2bdpg2bJlNufaunUrJk2ahD///BMbN25EcXEx+vbti7y8PKt8devWxfz587Fr1y7s3LkTt9xyCwYPHox9+/bZnDU2NhbvvfceWrdubZOnRYsWOH36dPnX77//brUrIyMD3bt3h7OzM3788Ufs378fixYtgr+/v1W+2NjYCtk2btwIALj77rtr7FqwYAHeeecdvPXWWzhw4AAWLFiAhQsX4s0337QqGwA8+OCD2LhxIz766CPs3bsXffv2Re/evXHq1Kkr/uyVxu3ChQuxdOlSvPvuu9i+fTs8PT3Rr18/FBQUWOXLy8tDjx49sGDBgmq17XK+/Px8xMXF4bnnnkNcXBy++uorHDp0CHfccYdVPgBo2rQp3nrrLezduxe///476tevj759++Ls2bNW+cpYt24d/vzzT0RERFz2edXx9e/fv8J4/PTTT61yJSUloUePHmjWrBm2bNmCPXv24LnnnoObm5tVvn9mOn36ND788EOYTCbcddddVvmmT5+On376CR9//DEOHDiAadOmYfLkyfj2229r7FNKYciQITh69Ci++eYb7N69G1FRUejdu3eV76vVeQ9+/PHH8d1332HNmjXYunUrUlNTceedd1aZrTq+/Px89O/fH//617+qdNTEl5qaitTUVLz22mtISEjAypUr8dNPP2H8+PFW5+vQoQNWrFiBAwcOYMOGDVBKoW/fvigtLbXKV8Ybb7wBk8lkdVvLeOihhyqMv4ULF17xOBI7oa5ROnfurCZNmlT+/9LSUhUREaHmzZtnkxeAWrdunY3p/o/09HQFQG3dulWb09/fX/373/+2yZGTk6OaNGmiNm7cqG666SY1depUqzxz5sxRbdq0sSnLP3nqqadUjx49tPksmTp1qmrUqJEym801/tmBAweqcePGVXjszjvvVKNGjbIqS35+vnJ0dFTr16+v8Hj79u3VM888UyOX5bg1m80qLCxMvfrqq+WPZWZmKldXV/Xpp5/W2PdPkpOTFQC1e/duq/NVxY4dOxQAdfz4cS2+rKwsBUD98ssvVvtOnjyp6tSpoxISElRUVJRavHjxFV2X8o0ePVoNHjy4Wj9/JdeIESPUfffdV2PXpXyWDB48WN1yyy1W+1q0aKFeeOGFCo9Vd1xb+g4dOqQAqISEhPLHSktLVXBwsHr//fev6LN8D87MzFTOzs5qzZo15c85cOCAAqD++OOPGvv+yebNmxUAlZGRcUVPdXxlfPHFF8rFxUUVFxdr8f31118KgDpy5IjVvt27d6s6deqo06dPV/v3ZlUuW37/EP1ck1cKi4qKsGvXLvTu3bv8MQcHB/Tu3Rt//PFHLSarTNklfx2bfpeWluKzzz5DXl4eunbtapNr0qRJGDhwYIVjaC2JiYmIiIhAw4YNMWrUqEvewqoO3377LTp27Ii7774bISEhaNeuHd5//32bMwJ/j5uPP/4Y48aNu+xft5eiW7du2LRpEw4fPgwA+Ouvv/D7779jwIABVuUpKSlBaWlppas77u7uNl1tBYDk5GSkpaVV6F9fX1906dJF3DlSRlZWFkwmE/z8/Gx2FRUVYfny5fD19UWbNm2scpjNZtx///2YMWMGWrRoYXMmANiyZQtCQkIQHR2NiRMn4vz581bl+v7779G0aVP069cPISEh6NKli03TXv7JmTNn8P3331/yylR16NatG7799lucOnUKSils3rwZhw8fRt++fWvsKiwsBIAK54mDgwNcXV2rdZ5Yvgfv2rULxcXFFc6NZs2aITIyslrnhs739Or6srKy4OPjAycnJ5t9eXl5WLFiBRo0aIB69epZ5cvPz8e9996LZcuWISws7IqOK2X75JNPEBQUhJYtW2LWrFnIz8+vtpPo5ZosCs+dO4fS0lKEhoZWeDw0NBRpaWm1lKoyZrMZ06ZNQ/fu3dGyZUurPXv37oWXlxdcXV3xyCOPYN26dYiJibHa99lnnyEuLg7z5s2z2lFGly5dym9vvPPOO0hOTsaNN96InJwcq3xHjx7FO++8gyZNmmDDhg2YOHEipkyZglWrVtmc9euvv0ZmZibGjBlj1c8//fTTuOeee9CsWTM4OzujXbt2mDZtGkaNGmWVz9vbG127dsWLL76I1NRUlJaW4uOPP8Yff/yB06dPW+Uso+w8kH6OlFFQUICnnnoKI0eOhI+Pj9We9evXw8vLC25ubli8eDE2btyIoKAgq1wLFiyAk5MTpkyZYnWef9K/f3/85z//waZNm7BgwQJs3boVAwYMqPIW3uVIT09Hbm4u5s+fj/79++Pnn3/G0KFDceedd2Lr1q0251y1ahW8vb0veTu1Orz55puIiYlB3bp14eLigv79+2PZsmXo2bNnjV1lBdusWbOQkZGBoqIiLFiwACdPnrzieVLVe3BaWhpcXFwq/fFRnXND13t6TXznzp3Diy++iAkTJtjke/vtt+Hl5QUvLy/8+OOP2LhxI1xcXKzyPf744+jWrRsGDx5cjVZe3nXvvffi448/xubNmzFr1ix89NFHuO+++6rtJXq58p8dxGomTZqEhIQEm6/6REdHIz4+HllZWVi7di1Gjx6NrVu3WlUYnjhxAlOnTsXGjRsvOf+oJvzzKlnr1q3RpUsXREVF4YsvvrDqSoPZbEbHjh3xyiuvAADatWuHhIQEvPvuuxg9erRNWT/44AMMGDDginPDLsUXX3yBTz75BKtXr0aLFi0QHx+PadOmISIiwupsH330EcaNG4c6derA0dER7du3x8iRI7Fr1y6rfNcixcXFGD58OJRSeOedd2xy3XzzzYiPj8e5c+fw/vvvY/jw4di+fTtCQkJq5Nm1axeWLFmCuLg4q64qV8U999xT/u9WrVqhdevWaNSoEbZs2YJbb7212h6z2QwAGDx4MB5//HEAQNu2bfG///0P7777Lm666Sabcn744YcYNWqUTe8Pb775Jv788098++23iIqKwm+//YZJkyYhIiKixncnnJ2d8dVXX2H8+PEICAiAo6MjevfujQEDBlzxQ1663oNry5ednY2BAwciJiYGc+fOtck3atQo9OnTB6dPn8Zrr72G4cOHY9u2bZft56p83377LX799Vfs3r37yg2sRrZ/FrutWrVCeHg4br31ViQlJaFRo0Y1eg2igVq+fW0VhYWFytHRsdIchgceeEDdcccdNrmhaU7hpEmTVN26ddXR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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from job_shop_lib.visualization.gantt import plot_gantt_chart\n", "\n", "_ = plot_gantt_chart(schedule, job_labels=[\"Job 1\", \"Job 2\", \"Job 3\"])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[[0, 1, 2], [0, 1, 2], [0, 1, 2]]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "job_sequences = [list(range(3)), list(range(3)), list(range(3))]\n", "job_sequences" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoUAAAHHCAYAAADJUSIuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABiEklEQVR4nO3deVxU5eLH8e+wDPu+oywKKuKC+5JmVq6ZqeWS1wyXsgxTW6zrrdQWc2lTy1tZpt7KNksrb+WWWlkqiii4JCKKioCyLwIDc35/9GNuCCpy5pznwPm+Xy9eLx2G+TzA8czjmTPnMUiSJIGIiIiIdM1G9ACIiIiISDxOComIiIiIk0IiIiIi4qSQiIiIiMBJIRERERGBk0IiIiIiAieFRERERAROComIiIgInBQSERERETgpJFLdrl27YDAYsGHDBtFDqVNlZSWeeeYZhISEwMbGBiNHjhQ9pEZv0qRJCA8Pt9rjLViwAAaDwWqPR0QEcFJIgqWlpWHGjBlo3bo1nJ2d4ezsjOjoaMTFxeHIkSOK91999VVs2rSp1u2///47FixYgPz8/Jt6vF27duHee+9FYGAgjEYj/P39MXz4cHzzzTfWGXADrF+/HsuWLav3/T/66CO89tprGD16NNatW4cnnnhCucEB6N+/PwwGQ50fUVFRirapbje7zRBR02Dg2sckyubNmzFu3DjY2dlhwoQJiImJgY2NDU6cOIFvvvkGZ8+eRVpaGsLCwhQbg6urK0aPHo21a9fWuP3111/HnDlzkJaWVu8jPPPnz8dLL72EVq1aYfz48QgLC0NOTg5++OEH7Nq1C59++in+8Y9/YNeuXbj99tvx1VdfYfTo0db/pq5y9913Izk5GWfOnKnX/e+//3789ttvOH/+vLID+3/9+/dHamoqFi1aVOtzHh4eGD58uCrjUNKkSZOwa9euev8ObqSyshKVlZVwdHS0yuNd7Wa3GSJqGuxED4D0KTU1Fffffz/CwsKwY8cOBAUF1fj8kiVL8O9//xs2No3jYPaGDRvw0ksvYfTo0Vi/fj3s7e0tn5szZw62bNkCk8mk6phKSkrg4uJy01+XnZ0NT09Pq43DbDajoqLiuhMYDw8PPPDAA1ZrNnV2dnaws+Pum4isTCISYNq0aRIAae/evfX+msOHD0uxsbFSixYtJAcHBykgIECaPHmydPny5Rr3mz9/vgRASklJkWJjYyUPDw/J3d1dmjRpklRSUmK5H4BaH7GxsZavv/ojLS3tmmOLioqSvL29pcLCwht+Hzt37pQASF988YX0yiuvSM2aNZMcHBykO+64Q0pJSalx319++UUaPXq0FBISIhmNRql58+bS7NmzpdLS0hr3i42NlVxcXKRTp05JQ4cOlVxdXaURI0ZIt912W63vIywsrM5xpaWl1fl979y5U5IkSSouLpaefPJJqXnz5pLRaJRat24tvfbaa5LZbK7xOACkuLg46ZNPPpGio6MlOzs7aePGjdf8edx2221Su3btrvszKy0tldq0aSO1adOmxveek5MjBQYGSr1795YqKyslSbr57eTPP/+UJkyYILm7u0u+vr7S888/L5nNZik9PV265557JDc3NykgIEB6/fXXa3x99e/x888/l+bOnSsFBARIzs7O0vDhw6X09PQa942Nja31c6+qqpLeeustKTo6WnJwcJD8/f2ladOmSbm5udf9Wfx97H9X/XPfuHGj1K5dO8loNErR0dHSjz/+WON+hYWF0qxZs6SwsDDJaDRKfn5+0oABA6SDBw9KkiRdd5spLy+XXnjhBalLly6Su7u75OzsLPXt21f6+eefazSqt6XXXntNev/996WWLVtKRqNR6tatm7R///5a38/x48elMWPGSL6+vpKjo6PUunVr6V//+leN+5w/f16aPHmy5O/vb/neVq9efcOfFRHVH/+rSUJs3rwZkZGR6NmzZ72/Ztu2bTh9+jQmT56MwMBAHD16FKtWrcLRo0exd+/eWifejx07Fi1atMCiRYuQkJCADz/8EP7+/liyZAkA4OOPP8ZDDz2EHj16YNq0aQCAiIgIuLi44OTJk/jss8/w1ltvwdfXFwDg5+dX57hSUlJw4sQJTJkyBW5ubvX+fhYvXgwbGxs8/fTTKCgowNKlSzFhwgTs27fPcp+vvvoKpaWlmD59Onx8fLB//368/fbbOH/+PL766qsaj1dZWYnBgwejb9++eP311+Hs7IzAwEAUFBTg/PnzeOuttwD89ZJ5Xfz8/PDxxx9j4cKFKC4utryc27ZtW0iShHvuuQc7d+7E1KlT0alTJ2zZsgVz5szBhQsXLI9d7eeff8aXX36JGTNmwNfX94YvwVdVVeHy5cu1bndycoKLiwucnJywbt069OnTB8899xzefPNNAEBcXBwKCgqwdu1a2NraArj57WTcuHFo27YtFi9ejP/+97945ZVX4O3tjffffx933HEHlixZgk8//RRPP/00unfvjn79+tX4+oULF8JgMODZZ59FdnY2li1bhgEDBiAxMRFOTk7X/J4feeQRrF27FpMnT8bMmTORlpaGd955B4cOHcKePXtqHG2ur99++w3ffPMNHnvsMbi5uWHFihW47777kJ6eDh8fHwDAo48+ig0bNmDGjBmIjo5GTk4OfvvtNxw/fhxdunTBc889d81tprCwEB9++CHGjx+Phx9+GEVFRVi9ejUGDx6M/fv3o1OnTjXGs379ehQVFeGRRx6BwWDA0qVLce+99+L06dOW7+/IkSO49dZbYW9vj2nTpiE8PBypqan4/vvvsXDhQgBAVlYWevXqBYPBgBkzZsDPzw8//vgjpk6disLCQsyePfumf1ZEVAfRs1LSn4KCAgmANHLkyFqfy8vLky5dumT5+PtRoauPjkmSJH322WcSAOmXX36x3FZ9FGXKlCk17jtq1CjJx8enxm0uLi5SbGxsrcd97bXXbnh0sNq3334rAZDeeuutG95Xkv53hKlt27ZSeXm55fbly5dLAKSkpCTLbXV9z4sWLZIMBoN09uxZy22xsbESAOmf//xnrfsPGzbsmkcH61LXkbtNmzZJAKRXXnmlxu2jR4+WDAaDdOrUKcttACQbGxvp6NGj9e6hjiOUAKRHHnmkxn3nzp0r2djYSL/88ov01VdfSQCkZcuW1bjPzW4n06ZNs9xWWVkpNW/eXDIYDNLixYstt+fl5UlOTk41tpXq32OzZs1qHCH+8ssvJQDS8uXLLbddfaTw119/lQBIn376aY1x/vTTT3XefrVrHSk0Go01fheHDx+WAEhvv/225TYPDw8pLi7uuo9/rW2msrKyxjYrSX/9bAICAmr8e6s+Uujj41PjyGf1v5Xvv//eclu/fv0kNze3GtuzJEk1jkBPnTpVCgoKqnW09/7775c8PDzq/J0T0c1rHCdsUZNSWFgIoO4jVv3794efn5/lY+XKlZbP/f2oS1lZGS5fvoxevXoBABISEmo91qOPPlrj77feeitycnIsfWupfrybOUoIAJMnT4bRaKwxPgA4ffq05ba/f88lJSW4fPkybrnlFkiShEOHDtV6zOnTp9/UGOrrhx9+gK2tLWbOnFnj9qeeegqSJOHHH3+scfttt92G6Ojoej9+eHg4tm3bVuvj6iNACxYsQLt27RAbG4vHHnsMt912W60x3ex28tBDD1n+bGtri27dukGSJEydOtVyu6enJ9q0aVPjd1PtwQcfrPG7Hz16NIKCgvDDDz9c8/v96quv4OHhgYEDB+Ly5cuWj65du8LV1RU7d+685tdez4ABAxAREWH5e8eOHeHu7l5j3J6enti3bx8yMjJu+vFtbW0t26zZbEZubi4qKyvRrVu3On+248aNg5eXl+XvV2/jly5dwi+//IIpU6YgNDS0xtdWH9GVJAlff/01hg8fDkmSavy8Bg8ejIKCgjrbRHTz+PIxqa76CbS4uLjW595//30UFRUhKyur1hsPcnNz8eKLL+Lzzz9HdnZ2jc8VFBTUeqyrn2Sqn5zy8vLg7u4u63v4u+rHKioquqmvu974qqWnp2PevHn47rvvatwO1P6e7ezs0Lx585saQ32dPXsWwcHBtSa+bdu2tXz+71q0aHFTj+/i4oIBAwbc8H5GoxEfffQRunfvDkdHR6xZs6bWy8FytxMPDw84OjpaThv4++05OTm1vr5Vq1Y1/m4wGBAZGXndd+6mpKSgoKAA/v7+dX7+6nHX19XfC/DXdvX3bWfp0qWIjY1FSEgIunbtirvuugsPPvggWrZsWa/GunXr8MYbb+DEiRM13jxV1+/8Rtt49eSwffv21+xdunQJ+fn5WLVqFVatWlXnfRr68yKimjgpJNV5eHggKCgIycnJtT5XfY5hXU+oY8eOxe+//445c+agU6dOcHV1hdlsxpAhQ2A2m2vdv/ocs6tJVr4KU/W19JKSkm7q6240vqqqKgwcOBC5ubl49tlnERUVBRcXF1y4cAGTJk2q9T07ODho5t3a1zuXTq4tW7YA+OsoYEpKSq3JiDW2E6W3HbPZDH9/f3z66ad1fv5a56/eSH3GPXbsWNx6663YuHEjtm7ditdeew1LlizBN998g6FDh1738T/55BNMmjQJI0eOxJw5c+Dv7w9bW1ssWrQIqampDRrPjVT/zh544AHExsbWeZ+OHTvW+/GI6No4KSQhhg0bhg8//BD79+9Hjx49bnj/vLw87NixAy+++CLmzZtnuT0lJUXWOK61KsTNrBbRunVrtGnTBt9++y2WL19+zTdy3KykpCScPHkS69atw4MPPmi5fdu2bTf1ONZY+SIsLAzbt29HUVFRjaOFJ06csHxeDUeOHMFLL72EyZMnIzExEQ899BCSkpLg4eEBQLnt5HqufmxJknDq1KnrTlQiIiKwfft29OnTR9EJ9LUEBQXhsccew2OPPYbs7Gx06dIFCxcutEwKr7XNbNiwAS1btsQ333xT4z7z589v0Diqj07W9R/Ean5+fnBzc0NVVVW9jiYTUcNp47AC6c4zzzwDZ2dnTJkyBVlZWbU+f/WRhOojDlffLnfVBRcXlzpXLam+vl99VzR58cUXkZOTg4ceegiVlZW1Pr9161Zs3rz5psZW1/csSRKWL19+U4/j4uJS58umN+Ouu+5CVVUV3nnnnRq3v/XWWzAYDDc8wmQNJpMJkyZNQnBwMJYvX461a9ciKyurxoorSm0n1/Of//ynxqkDGzZswMWLF6/7Mxk7diyqqqrw8ssv1/pcZWXlTa+kU19VVVW1tgV/f38EBwejvLzcctu1tpm6fr779u3DH3/80aDx+Pn5oV+/fvjoo4+Qnp5e43PVDVtbW9x33334+uuv65w8Xrp0qUFtIqqNRwpJiFatWmH9+vUYP3482rRpY1nRRJIkpKWlYf369bCxsbGcI+fu7o5+/fph6dKlMJlMaNasGbZu3Yq0tDRZ4+jatSu2b9+ON998E8HBwWjRogV69uyJrl27AgCee+453H///bC3t8fw4cOveTHocePGISkpCQsXLsShQ4dqrGjy008/YceOHVi/fv1NjS0qKgoRERF4+umnceHCBbi7u+Prr7+udW5hfb7HL774Ak8++SS6d+8OV1fXm14lZPjw4bj99tvx3HPP4cyZM4iJicHWrVvx7bffYvbs2TXe3NAQBQUF+OSTT+r8XPW5pa+88goSExOxY8cOuLm5oWPHjpg3bx6ef/55jB49GnfddZdi28n1eHt7o2/fvpg8eTKysrKwbNkyREZG4uGHH77m19x222145JFHsGjRIiQmJmLQoEGwt7dHSkoKvvrqKyxfvlyR1W6KiorQvHlzjB49GjExMXB1dcX27dsRHx+PN954w3K/a20zd999N7755huMGjUKw4YNQ1paGt577z1ER0fXeY5wfaxYsQJ9+/ZFly5dMG3aNLRo0QJnzpzBf//7XyQmJgL46/JNO3fuRM+ePfHwww8jOjoaubm5SEhIwPbt25Gbm2uNHw8RqfxuZ6IaTp06JU2fPl2KjIyUHB0dJScnJykqKkp69NFHpcTExBr3PX/+vDRq1CjJ09NT8vDwkMaMGSNlZGRIAKT58+db7ld9uY5Lly7V+Po1a9bUuszMiRMnpH79+klOTk6Wi1dXe/nll6VmzZpJNjY29b48zY4dO6QRI0ZI/v7+kp2dneTn5ycNHz5c+vbbby33qb6UyVdffVXja6sv47FmzRrLbceOHZMGDBggubq6Sr6+vtLDDz9suczI3+9XffHquhQXF0v/+Mc/JE9Pz+tevLratS4mXVRUJD3xxBNScHCwZG9vL7Vq1eq6F6+ur+tdkqZ6F3Xw4EHJzs5Oevzxx2t8bWVlpdS9e3cpODhYysvLkyRJ/nZyrZ/l1T+X6t/jZ599Js2dO1fy9/eXnJycpGHDhtW6vEpdF6+WJElatWqV1LVrV8nJyUlyc3OTOnToID3zzDNSRkbGdX9m17t49dXCwsIs23V5ebk0Z84cKSYmRnJzc5NcXFykmJgY6d///neNr7nWNmM2m6VXX31VCgsLkxwcHKTOnTtLmzdvrvX9/f3i1Ve7+vcgSZKUnJxs+Z05OjpKbdq0kV544YUa98nKypLi4uKkkJAQyd7eXgoMDJTuvPNOadWqVdf9WRFR/XHtYyKiBlB7DWsiIqXxnEIiIiIi4qSQiIiIiDgpJCIiIiIAPKeQiIiIiHikkIiIiIg4KSQiIiIiNPKLV5vNZmRkZMDNzc0qS3kRERGR8iRJQlFREYKDgzWzZjs18klhRkYGQkJCRA+DiIiIGuDcuXOWlatIvEY9KXRzcwPw10bl7u6uev/AgQPo1q2b6l222WabbbbZbsztwsJChISEWJ7HSRsa9aSw+iVjd3d3IZPCtm3bCumyzTbbbLPNdmNvA+CpXxrDF/KJiIiIiJNCOdLT09lmm2222WabbWoSOCkkIiIiosa9oklhYSE8PDxQUFAg5JyIsrIyODo6qt5lm2222Wab7cbcru/zd1VVFUwmk4oja3rs7e1ha2tbr/s26jeaiJaamop27dqxzTbbbLPNNttWJEkSMjMzkZ+fL3ooTYKnpycCAwNv+MYeTgplKC4uZpttttlmm222rax6Qujv7w9nZ2e+S7mBJElCaWkpsrOzAQBBQUHXvT8nhTI4OzuzzTbbbLPNNttWVFVVZZkQ+vj4iB5Oo+fk5AQAyM7Ohr+//3VfSuY5hTKYTCbY29ur3mWbbbbZZpvtxty+3vN3WVkZ0tLSEB4ebpnQkDxXrlzBmTNn0KJFi+ueQ8p3H8uQkJDANttss80222wrgC8ZW099f5Z8+biR+uO7A3i+9+tC2sPm9meb7Sbf7v/pKIzf95uQ9vqYcpgzJwppAx8L6hKRaDxSKIPIRbz//CWNbbbZVtDBkiJh7Wa+h4S1Re7X2NZXW+927doFg8GgqXdY80ihDHZ24n58FaUVbLPNtoLKzGZhbXvbMmFtkfs1tvXVboiBNmNUa20zf3XTXzNp0iTk5+dj06ZN1h/Q/1u1ahXWr1+PhIQEFBUVIS8vD56enlZ5bB4plOHMmTPC2h2GtGGbbbYV1MfNQ1j7TFZvcW2B+zW29dWmhiktLcWQIUPwr3/9y+qPzUkhERERkZWVl5dj5syZ8Pf3h6OjI/r27Yv4+Pha99uzZw86duwIR0dH9OrVC8nJydd93NmzZ+Of//wnevXqZfUxc1IoQ4cOHYS1d3+wn2222VbQ17mXhLXbh28S1ha5X2NbX+2m7plnnsHXX3+NdevWISEhAZGRkRg8eDByc3Nr3G/OnDl44403EB8fDz8/PwwfPlzY0n6cFMqQnp4urB09IJJtttlWUC9X9a99Wu3cpR7C2iL3a2zrq92UlZSU4N1338Vrr72GoUOHIjo6Gh988AGcnJywevXqGvedP38+Bg4ciA4dOmDdunXIysrCxo0bhYybk0IZCgoKhLX9WnizzTbbCmpmdBDWLigJFtcWuF9jW1/tpiw1NRUmkwl9+vSx3GZvb48ePXrg+PHjNe7bu/f/ziH29vZGmzZtat1HLZwUynC9q4IrrTi3lG222VZQQVWlsLajsVBcW+B+jW19tUl7OCmUoX379sLav310gG222VbQptzLwtrtwr4T1ha5X2NbX+2mLCIiAkajEXv27LHcZjKZEB8fj+jo6Br33bt3r+XPeXl5OHnyJNq2bavaWP+Ok0IZDhwQ94Q15Ol+bLPNtoJi/QKFtQ+mPCCsLXK/xra+2k2Zi4sLpk+fjjlz5uCnn37CsWPH8PDDD6O0tBRTp06tcd+XXnoJO3bsQHJyMiZNmgRfX1+MHDnymo+dmZmJxMREnDp1CgCQlJSExMTEWm9gaYjGddVKIiIiIo0ym82WC4IvXrwYZrMZEydORFFREbp164YtW7bAy8urxtcsXrwYs2bNQkpKCjp16oTvv/8eRqPxmo333nsPL774ouXv/fr99Z/nNWvWYNKkSbLGz0mhDEFBQcLap/44yzbbbCvocGmxsHaQd5K4tsD9Gtv6ajdEQ1YZUVN2djYiI/+6aoKjoyNWrFiBFStW1Hnf/v37Q5IkAMDdd99d78aCBQuwYMEC2WOtC18+lsHZ2VlYu/iSwJP/2WZbB+28SnFvNHFyyBPWFrlfY1tf7aYkLy8Pmzdvxq5duzBgwADRw2kwTgplSE1NFdbudI+Yk1DZZlsv7f7unsLapy+KO5dS5H6NbX21m5IpU6bg0UcfxVNPPYURI0aIHk6D8eVjIiIiIhlEXWza2nikUIZ27doJa/+29iDbbLOtoG/zxF2SJjpss7C2yP0a2/pqk/ZwUihDRkaGsHZk71C22WZbQTHOrsLaF3PErUcrcr/Gtr7apD2cFMqQlyfuZPDANn5ss822gsIdxK30kFccJq4tcL/Gtr7apD2cFMpgb28vrF1WVM4222wrqMRcJaxttBP3rmuR+zW29dUm7TFI1RfJaYQKCwvh4eGBgoICuLu7ix6OqgbajBE9BKImLXVZL2HtU2PfF9a2CTwprE36cb3n77KyMqSlpaFFixZcm9lK6vsz5ZFCGfbt2yesPWxuf7bZZltBU/3EXdR3/5+ThLVF7tfY1lebtIeTQiIiIiKV7dq1CwaDAfn5+aKHYsHrFMoQEBAgrH3mwHm22WZbQceulAhrB3gdF9cWuF9jW1/thmi54g3VWqdnPnXTXzNp0iTk5+dj06ZN1h8QgNzcXMyfPx9bt25Feno6/Pz8MHLkSLz88svw8PCQ/ficFMog8jzGnPR8ttlmW0EXTRXC2m5OmcLaIvdrbOurTTcvIyMDGRkZeP311xEdHY2zZ8/i0UcfRUZGBjZs2CD78fnysQwpKSnC2l3vbc8222wr6E53L2HtUxm3C2uL3K+xra92U1deXo6ZM2fC398fjo6O6Nu3L+Lj42vdb8+ePejYsSMcHR3Rq1cvJCcnX/Mx27dvj6+//hrDhw9HREQE7rjjDixcuBDff/89Kq2wXjsnhURERERW9swzz+Drr7/GunXrkJCQgMjISAwePBi5ubk17jdnzhy88cYbiI+Ph5+fH4YPHw6TyVTvTvU7uO3s5L/4y0mhDG3bthXW3vtpIttss62gH/JzhLWjQn4S1ha5X2NbX+2mrKSkBO+++y5ee+01DB06FNHR0fjggw/g5OSE1atX17jv/PnzMXDgQHTo0AHr1q1DVlZWvddSvnz5Ml5++WVMmzbNKuPmpFCG7OxsYe2QTuIul8E223pot3F0Fta+VNBaWFvkfo1tfbWbstTUVJhMJvTp08dym729PXr06IHjx2u+kax3796WP3t7e6NNmza17lOXwsJCDBs2DNHR0ViwYIFVxs1JoQw5OeKOJDRrJ+4dY2yzrYd2hKOTsHZOYUtxbYH7Nbb11aaGKyoqwpAhQ+Dm5oaNGzdabWUaTgplsLW1FdY2ldX/fAO22Wb75pVLZmFtO1tx73wWuV9jW1/tpiwiIgJGoxF79uyx3GYymRAfH4/o6Oga9927d6/lz3l5eTh58uR1X9YvLCzEoEGDYDQa8d1331l11RdekkaGbt26CWtvfWvPje/ENttsN9gnl7OEtbtErhfWFrlfY1tf7abMxcUF06dPx5w5c+Dt7Y3Q0FAsXboUpaWlmDp1ao37vvTSS/Dx8UFAQACee+45+Pr6YuTIkXU+bvWEsLS0FJ988gkKCwtRWFgIAPDz85M9yeeRQhnqemu5WobMuZVtttlWUKxvoLD2gZQHhLVF7tfY1le7KTKbzZZ3AS9evBj33XcfJk6ciC5duuDUqVPYsmULvLxqXu5q8eLFmDVrFrp27YrMzEx8//33MBqNdT5+QkIC9u3bh6SkJERGRiIoKMjyce7cOdnj55FCGcxmcS8v2doJfLmBbbZ10LYzGIS1zWZxu2aR+zW29dVuiIasMqKm7OxsREZGAgAcHR2xYsUKrFixos779u/fH5IkAQDuvvvuej3+379GCTxSKIOfn5+w9rnDF9lmm20FnSwrFdb28xB3QWGR+zW29dVuSvLy8rB582bs2rULAwYMED2cBuORQhm8vb2FtS+euMQ222wrKK28TFjby+2MsLbI/Rrb+mo3JVOmTEF8fDyeeuopjBgxQvRwGoxHCmX4888/hbV7jOvINttsK2iwh7gny5PnBwpri9yvsa2vdlOyceNGnD9/HgsXLoRB4KkncnFSSEREREScFMrRurW4VQfiv0pim222FbS1IPfGd1JI62bbxbUF7tfY1lebtIeTQhny8vKEtQNa+bDNNtsKCjVa74KwNyuvOFRcW+B+jW19tUl7OCmU4dIlcSfBh3YKZpttthUU5aTPtY9F7tfY1lebtIeTQhlEnkyq1+tasc22am0ody2wGzEYxH3fIvdrbOurTdpjkJS8CqLCCgsL4eHhgYKCAri7u4sejqoG2owRPQSiJi11WS9h7VNj3xfWtgk8KaxN+nG95++ysjKkpaWhRYsWVl3XV8/q+zMVeqRw0aJF6N69O9zc3ODv74+RI0c2qrfHHzx4UFh74Ow+bLPNtoIm+AQIayecGi+sLXK/xra+2nq3a9cuGAwG5Ofnix6KhdCLV+/evRtxcXHo3r07Kisr8a9//QuDBg3CsWPH4OLiInJo9VJZWSmsbXSyZ5ttthXkaCPu/8yVVQ7i2gL3a2zrq90Q5kz1zrdtyFHzSZMmIT8/H5s2bbL+gP7fI488gu3btyMjIwOurq645ZZbsGTJEkRFRcl+bKGTwp9++qnG39euXQt/f38cPHgQ/fr1EzSq+hN5JfiM49lss822gk6XXxHW9nZLE9fW6eoabFNj0bVrV0yYMAGhoaHIzc3FggULMGjQIKSlpcHWVt568Zp6o0lBQQGAxrORBgSIe3npzIELbLPNtoKOXSkR1g7wPC6uLXC/xra+2k1deXk5Zs6cCX9/fzg6OqJv376Ij4+vdb89e/agY8eOcHR0RK9evZCcnHzdx502bRr69euH8PBwdOnSBa+88grOnTuHM2fOyB6zZiaFZrMZs2fPRp8+fdC+ffs671NeXo7CwsIaHyIdPy5ux33LxM5ss822gu729BXWPn7uLnFtgfs1tvXVbuqeeeYZfP3111i3bh0SEhIQGRmJwYMHIze35oXx58yZgzfeeAPx8fHw8/PD8OHDYTKZ6tUoKSnBmjVr0KJFC4SEhMges2YmhXFxcUhOTsbnn39+zfssWrQIHh4elg9r/ACIiIiIrKmkpATvvvsuXnvtNQwdOhTR0dH44IMP4OTkhNWrV9e47/z58zFw4EB06NAB69atQ1ZWFjZu3Hjdx//3v/8NV1dXuLq64scff8S2bdtgNBplj1sTk8IZM2Zg8+bN2LlzJ5o3b37N+82dOxcFBQWWj3Pnzqk4ytoiIyOFtRM2HWWbbbYV9HOhuJUeIoJ3CWuL3K+xra92U5aamgqTyYQ+ff53BQV7e3v06NGj1tHZ3r17W/7s7e2NNm3a3PAI7oQJE3Do0CHs3r0brVu3xtixY1FWViZ73EInhZIkYcaMGdi4cSN+/vlntGjR4rr3d3BwgLu7e40PkYqLi4W1PYPFfe9ss62Htr+9uHc+l1zxE9YWuV9jW19tajgPDw+0atUK/fr1w4YNG3DixIkbHl2sD6GTwri4OHzyySdYv3493NzckJmZiczMTFy5Iu5dfzcjMzNTWLtlD3EvnbPNth7a7Z1chbUz89qJawvcr7Gtr3ZTFhERAaPRiD179lhuM5lMiI+PR3R0dI377t271/LnvLw8nDx5Em3btq13S5IkSJKE8vJy2eMWekmad999FwDQv3//GrevWbMGkyZNUn9ARERERDK5uLhg+vTpmDNnDry9vREaGoqlS5eitLQUU6dOrXHfl156CT4+PggICMBzzz0HX19fjBw5ss7HPX36NL744gsMGjQIfn5+OH/+PBYvXgwnJyfcdZf8N6gJnRQ24hX2AAA9evQQ1v5hyW622WZbQR9duiis3b31OmFtkfs1tvXVborMZjPs7P6aWi1evBhmsxkTJ05EUVERunXrhi1btsDLy6vG1yxevBizZs1CSkoKOnXqhO+///6abxpxdHTEr7/+imXLliEvLw8BAQHo168ffv/9d/j7+8sevybeaNJYJSYmCmv3f7Qn22yzraCx3uLO6zuSdp+wtsj9Gtv6ajeETeBJ1T4aIjs7G4GBgQD+msCtWLECly5dQllZGX777Td0797dct/+/ftDkiTcfffdSE5ORnl5Ofbt24eOHTte8/GDg4Pxww8/ICsrCxUVFTh37hw+/fRTtGnTpkHjvRonhTJUVFQIazt7iFsknG229dB2tRX3Qkq5Sdz5jCL3a2zrq92U5OXlYfPmzdi1axcGDBggejgNJvTl48bO09NTWDsr5TLbbLOtoPQK+Zd3aChPV3GX2xK5X2NbX+2mZMqUKYiPj8dTTz2FESNGiB5Og3FSKMP1rqmotJO/nWGbbbYVlFBSJKzdzCdRWFvkfo1tfbWbEmtcDkYL+PKxDDdan1BJt07uxjbbbCtopJe4cwqPnh0urC1yv8a2vtqkPZwUEhERkeY09iuUaEl9f5acFMrQsmVLYe3Dm0+wzTbbCvqlKF9Yu0Xgb8LaIvdrbOurfS32/7+aUGlpqeCRNB3VP0v7G6zUxHMKZbDGOoMN5eztxDbbbCvI3dZWWLvcJG55P5H7Nbb11b4WW1tbeHp6Ijs7GwDg7OwMg8EgeFSNkyRJKC0tRXZ2Njw9PWF7g/0aJ4UyZGRkICREzDJcrW4Jw8ndaWyzzbZCOjm74WCJmHVhM3I6orlvgpi2wP0a2/pqX0/1tf6qJ4Ykj6enp+Vnej2cFBIREZGmGAwGBAUFwd/fHyaTSfRwGjV7e/sbHiGsZpAa8ZmchYWF8PDwQEFBAdzd1X+5pbKy0rKcjdqGOt6PyooqIW07oy3bbDf5dvry3jAJ2j2euO8j2NmKeSI0+x4Ttl8TuU9lW12in7+pbnyjiQxHjx4V1r5lUhe22WZbQfd4+QhrH0+/W1hb5H6NbX21SXs4KZRB5Am6bj4ubLPNtoI8ba//Lj0lXanwENbW65se2CbipFAWkYe8L5/JY5ttthWUUVEurO3ufFFcW+B+jW19tUl7OCmUITw8XFg7eWsK22yzraDfiwuEtcP89wpri9yvsa2vNmkPJ4UyHDlyRFi7/7QebLPNtoJGe/sLayedGSWsLXK/xra+2qQ9nBQSERERESeFcoSFhQlr6/UlPbbZVssfOn35WOR+jW19tUl7OCmUoapKzPXTAMDOQdwSXGyzrYe2vcBltarMRnFtgfs1tvXVJu3hpFCG8+fPC2tH3SZuEXO22dZDu5uLuHdlnr8s7vqMIvdrbOurTdrDSSERERERcZk7OSoqKmA0inmZ5273CSgvrhDSdnA1ss12k29fXHELSs1mIe1j9/4HRrsrQtqV3snC9msi96lsq0v08zfVjUcKZTh58qSwdvcxHdhmm20FDfTwFtZOuTBAWFvkfo1tfbVJezgplKGkpERY2yPQjW222VaQr524Ze5KysStuyxyv8a2vtqkPZwUyuDq6iqsnZdRyDbbbCso2yTmZWsAcHW6JK4tcL/Gtr7apD08p1CG8vJyODg4qN4FgOEeD6CsSMzarI5uDmyz3eTbmStuQYmgcwqPjvoYDvalQtomryRh+zWR+1S21SX6+ZvqxiOFMiQmJgpr3zmjN9tss62g+30ChLUPnx4rrC1yv8a2vtqkPZwUEhEREREnhXKEhIQIax/fmco222wraH+xuPMZQ/wOiGsL3K+xra82aQ8nhTLY2Ij78ZkrxZzrxDbbumlD3OnWBoO4pcdE7tfY1lebtIdbgwxnz54V1m43sBXbbLOtoF6uHsLa6dk9hbVF7tfY1lebtIeTQiIiIiLiJWnkuHLlCpycnFTvAsBInwdRkidmGSwXLye22W7y7Utv90FhlZiXcZNHfgZHo5hzGss9Dgvbr4ncp7KtLtHP31Q3HimUIS0tTVi7w11t2GabbQX1dRP38nFa1i3i2gL3a2zrq03aw0mhDEVFRcLaPqGebLPNtoKC7MVcTBgAikoDxbUF7tfY1lebtIeTQhlEHe4HgKJLxWyzzbaC8ipNwtpODnni2gL3a2zrq03aw3MKZTCZTLC3t1e9CwB3OY+HqaxSSNve0Y5ttpt8+/zy3igXtHs8cd9a2NmKWd6vyueosP2ayH0q2+oS/fxNdeORQhkSEhKEtQc90ZdtttlW0AO+4l7CTTg1Xlxb4H6NbX21SXs4KSQiIiIiTgrlaNasmbD2yV/PsM022wpKKBF3An4zn0RxbYH7Nbb11Sbt4aRQBqPRKKxdViTmfCO22dZLu9Qsbqk5e7tSYW2R+zW29dUm7eGkUAaR13fqKPD6bWyzrYd2XzdPYe0zvE4h2zpok/ZwUkhEREREvCSNHKWlpXB2dla9CwD3BkxC0aUSIW03Pxe22W7y7dy3+yKvSszlcI6M+BLOgq5VWOaeKGy/JnKfyra6RD9/U914pFCGc+fOCWtH3d6SbbbZVlB3Vzdh7fOXugpri9yvsa2vNmkPJ4Uy5OfnC2v7R/iwzTbbCgoxOgpr55c0F9cWuF9jW19t0h5OCmVwcBC3NmpJ3hW22WZbQYWCXjoGAAejuMvhiNyvsa2vNmkPzymUwWw2w8ZGzLx6sP1YmKvE/OpsbA1ss93k22nLesEspAycHP0BbGwE1f1PCNuvidynsq0u0c/fVDceKZQhPj5eWHvoM7exzTbbCprsFySsfSDlQWFtkfs1tvXVJu3hpJCIiIiIOCmUIzAwUFj79L50ttlmW0FJpcXC2oHeyeLaAvdrbOurTdrDSaEMLi4uwtoFmeKesNhmWw/ty5UmYW0XhxxxbYH7Nbb11Sbt4aRQhtTUVGHtziOi2WabbQXd7u4lrJ16Udy5lCL3a2zrq03aYyd6ANQwve/phtkL44S09+3bxzbbumg/N/4fwto2gf8S0sbZfWK6RCQcL0kjQ1FREdzcxKx6wDbbbLPNNtuNtS36+ZvqxpePZcjMzGSbbbbZZptttqlJ4KRQhtzcXLbZZpttttlmm5oETgplsLe3Z5ttttlmm222qUngOYVERESkKj5/axOPFMqwb5+4d+mxzTbbbLPNdmNuk/ZwUkhEREREnBTK4e/vzzbbbLPNNttsU5PASaEMHh4ebLPNNttss802NQmcFMqQkpLCNttss80222xTk8BJIRERERHxkjRyjG85DZfP5KneBYArK/shw1QhpB1sb2RbR+1DsQ8Je4mpoKCAbbabfDsvtT88XDKEtAtKgoW0C4uq4NX6NC9JozE8UihDs/YBwtqRjk5ss62Ky5cvs8022wrKKWypyzZpDyeFMjTvECis3crRmW22VaHXJ2q22VatXRipyzZpDyeFMlRWVAprmyQz22yrwsZG3G6Cbbb10La1MemyTdrDcwplGGgzRvVmtdRlvYS1SV9Oz3xK9BCImjRzZmvRQ1AdzynUJh4plGHwU32FtR/0FXc+I9v6asfHx7PNNtsKOpgyQZdt0h5OCmWwM9oJa9sbxP3q2NZX22wW99I122zroV1lttdlm7SHk0IZzidlCmunlJWyzbYqfH192WabbSXb7qd02Sbt4aRQhgvJWcLap8qusM22KnT7RM022yrxcT+tyzZpDyeFMvQcHyOsPdTTh222VXHixAm22WZbQX+eH6TLNmkPJ4VERERExEmhHAc2JAlrbyvIZZttVbRq1YptttlWst1shy7bpD2cFMrg29JbWLu50YFttlVRUFDANttsK9kuaabLNmkPJ4UyhHcR94+prZML22yrIjs7m2222VaynR+lyzZpDyeFMohcDEYC22wTUZNgEPjvW2SbNIfL3MnAZe5ID7jMHZGyuMwdl7nTCh4plGHAzN7C2v/w8WebbVUkJCSwzTbbCjqUOk6XbdIeTgplcHARd/K/k40t22yrwmQysc0220q2K5102Sbt4aRQhosnxJ2YnFYuboULtvXV9vYW9y57ttnWRdvtjC7bpD2cFMpwev95Ye3k0hK22VZFYGAg22yzraAAr6O6bJP2cFIoQ58HuwhrD/cSt04n2/pqHzt2jG222VbQ8fRhumyT9nBSSEREREScFMpx6Ftx/7PcWZjHNtuqiIiIYJtttpVsB+3WZZu0h5NCGTwCXYW1fe3s2WZbFSUl4s5nZJttXbTLfXTZJu3hpFCGlj1DhbU7OIubkLKtr3ZmZibbbLOtZDu3vS7bpD0NmhSeO3cO58//7523+/fvx+zZs7Fq1SqrDYyIiIiI1NOgZe5uvfVWTJs2DRMnTkRmZibatGmDdu3aISUlBY8//jjmzZunxFhrEb3M3WD7sTBXiVklMG1ZL5iFlP/6nwTb+mmfmvEEbGzEvKhgNpvZZrvJtyszomBjI+ZfuNlsI6TNZe60qUH/ApKTk9GjRw8AwJdffon27dvj999/x6effoq1a9dac3ya1u/hHsLa93n7sc22Ko4cOcI222wrKOnsKF22SXsaNCk0mUxwcPhribft27fjnnvuAQBERUXh4sWL1hudxrl4iVseyN3Wjm22VVFeXs4222wr2a5w02WbtKdBk8J27drhvffew6+//opt27ZhyJAhAICMjAz4+OjnnUzZqTnC2ucqythmWxWenp5ss822km0XcatjiWyT9jRoUrhkyRK8//776N+/P8aPH4+YmBgAwHfffWd5WVkPTuw8LawdX1zENtuqCAkJYZttthXU3O+gLtukPQ2aFPbv3x+XL1/G5cuX8dFHH1lunzZtGt577z2rDU7r+j3UXVj7XoHnmLGtr3ZSUhLbbLOtoOQzI3TZJu1p8FutJEnCwYMH8f7776Oo6K+jGEajEc7OzlYbHBERERGpo0Fnr589exZDhgxBeno6ysvLMXDgQLi5uWHJkiUoLy/XzdHCIz/8Kaz9W1E+22yrokWLFmyzzbaCwgN+12WbtKdBRwpnzZqFbt26IS8vD05O/3sH7qhRo7Bjxw6rDU7rHN0chLWdbWzZZlsVFRUVbLPNtoJMleJeYRPZJu1p0KTw119/xfPPPw+j0Vjj9vDwcFy4cMEqA2sMWt8aLqzdxUXcZQTY1ldb5L9pttnWRTunky7bpD0NmhSazWZUVVXVuv38+fNwc+M1j4iIiIgamwYtczdu3Dh4eHhg1apVcHNzw5EjR+Dn54cRI0YgNDQUa9asUWKstYhe5u4u5/EwlVWq3gWA88t7o/zmf3VW4WAwsK2j9p/TZ8Le3l5I22Qysc12k29XXOgAO1sxF8+urHIQ0uYyd9rUoCOFb7zxBvbs2YPo6GiUlZXhH//4h+Wl4yVLllh7jJrV+4FOwtrDPMVdJJxtfbWPHz/ONttsK9k+N0SXbdKeBr37uHnz5jh8+DA+//xzHDlyBMXFxZg6dSomTJhQ440nTZ2bn6uwtpedmP/Rsq2/9pUrV9hmm20l2+VeumyT9jR4QVU7Ozs88MAD1hxLo5OTni+sfdEkbp1OtvXVFnmeMNts66LtnKnLNmlPgyeFKSkp2LlzJ7Kzs2E2m2t8bt68ebIH1hgkCb1OYQHbbKtCr9eOY5tt1doCrxUosk3a06BzCj/44AO0bdsW8+bNw4YNG7Bx40bLx6ZNm6w8RO3q/2hPYe0x3v5ss62KI0eOsM0220q20+7VZZu0p0FHCl955RUsXLgQzz77rLXHQ0REREQCNOhIYV5eHsaMGSM7/ssvv2D48OEIDg6GwWBodEcZj25LEdbeWyzu5US29dUOCwtjm222FRTqv0+XbdKeBk0Kx4wZg61bt8qOl5SUICYmBitXrpT9WCLY2DXox2edNgxss62Kq88ZZptttq1LksQtYymyTdrToJePIyMj8cILL2Dv3r3o0KFDrQt+zpw5s16PM3ToUAwdOrQhQ9CEtrdH4PTec0LaPVzdkXSlhG22FXfu3DkEBwezzTbbSrUvdUOQd7Lu2qQ9DZoUrlq1Cq6urti9ezd2795d43MGg6Hek8KbVV5ejvLy/12ao7CwUJEOERERkd40aJk7JRgMBmzcuBEjR4685n0WLFiAF198sdbtopbJGe7xAMqKxFw/LnPFLSgR9HKHi40N2zpqH39kBhwcHIS0y8vL2Wa7ybevnOsEB/tSIe1yk7OQNpe50yZxJ8U1wNy5c1FQUGD5OHdOzEu31brc205Y+w53cVehZ1tf7VOnTrHNNtsKSr14uy7bpD31fvn4ySefxMsvvwwXFxc8+eST173vm2++KXtgdXFwcBD2P7m6eAWL+9+Nv72RbbZVUVxczDbbbCvZvuKnyzZpT70nhYcOHYLJZLL8+VoMBnHvklRbQWaRsPblShPbbKvCxcWFbbbZVrLtmKPLNmmP0HMKi4uLLYfsO3fujDfffBO33347vL29ERoaesOvLywshIeHh7BzEu52n4Dy4grVuwBwccUtKBV0jpmzjQ3bOmqfePRxGI1ijlRWVFSwzXaTb5edj4HR7oqQdkWlk5A2zynUJqHnFB44cACdO3dG586dAfz1EnXnzp0bzdrJAx6/RVh7vE8A22yr4nqvDLDNNtvyJaaO02WbtKdBl6QpKSnB4sWLsWPHDmRnZ9e66Ofp06fr9Tj9+/eHRt78TERERKRrDZoUPvTQQ9i9ezcmTpyIoKAgXZ1H+Hcndtdv8quEAyXirtHItr7azZs3Z5tttpVs+ybosk3a06BJ4Y8//oj//ve/6NOnj7XH06hUllcJa5sEHmFlW19tW1txy2CxzbYu2jZizk0X3SbtadA5hV5eXvD29rb2WBqd9oNaCWv3dvVgm21VnD17lm222Vaynd1Ll23SngZNCl9++WXMmzcPpaVirsBORERERNZV70vSdO7cuca5g6dOnYIkSQgPD4e9vX2N+yYkqHOOguhL0oz0i0VJjpiJ8eW3+6CgSszL1x62tmzrqH304cfg5OQkpH3lyhW22W7y7ZKz3eHkUCCkfaXcQ0ibl6TRpnqfU3i9NYn1qv2gVtj32WEh7VtcPfBjQS7bbCvuzJkzaNu2Ldtss62Qs9m9EBWyRXdt0p56Twrnz5+v5DgaJd9wcevRBhvFLffHtr7ahYXi3vnMNtu6aJcG6bJN2tOgcwrj4+Oxb9++Wrfv27cPBw4ckD2oxqIop0RYO79K3LJnbOur7ejoyDbbbCvIySjmpWPRbdKeBk0K4+LicO7cuVq3X7hwAXFxcbIH1Vj8vlbc9Z2+yxO3XiXb+mq3a9eObbbZVlDb0M26bJP2NGhSeOzYMXTp0qXW7Z07d8axY8dkD6qxGPzUrcLaD/oGss22Kg4ePMg222wrKOHUBF22SXsaNCl0cHBAVlZWrdsvXrwIO7sGXQ+biIiIiARq0KRw0KBBmDt3LgoK/ncuQn5+Pv71r39h4MCBVhuc1qX8Lu5ip4mlRWyzrYrg4GC22WZbybbPEV22SXsadFjv9ddfR79+/RAWFobOnTsDABITExEQEICPP/7YqgPUstLcK8LahYKuWce2/tp6PfmfbbbV4mAv7p3PItukPQ06UtisWTMcOXIES5cuRXR0NLp27Yrly5cjKSkJISEh1h6jZsXcHSWs3c/Nk222VXH69Gm22WZbQWmZfXXZJu1p8AmALi4umDZtmjXHQkRERESC1HuZu7ocO3YM6enpqKioqHH7PffcI3tg9SF6mbv7giejMLNY9S4A5L/TFzmVlULaPnZ2bOuonTT1Ubi4uAhpl5SUsM12k28XnekNF0cxl50qKfMR0uYyd9rUoJePT58+jZiYGLRv3x7Dhg3DyJEjMXLkSIwaNQqjRo2y9hg1q3XfcGHtLi5ubLOtivPnz7PNNtsKupDTSZdt0p4GTQpnzZqFFi1aIDs7G87Ozjh69Ch++eUXdOvWDbt27bLyELUroJWvsHaoUdxJ0Wzrq52fn88222wr2S4Wdy6+yDZpT4POKfzjjz/w888/w9fXFzY2NrCxsUHfvn2xaNEizJw5E4cOHbL2ODWptKBMWLu4SsxLiWzrr200Gtlmm20FOdiLOQ1JdJu0p0HnFHp5eSEhIQEtWrRAREQEPvzwQ9x+++1ITU1Fhw4dUFpaqsRYaxF9TuEgu7GQzA0+JVOW08t6QUwZMABs66id+viTMBgMQtqSJLHNdpNvV11sA4NBzL9wSTIIafOcQm1q0MvH7du3x+HDhwEAPXv2xNKlS7Fnzx689NJLaNmypVUHqGV3PXubsPYUvyC22VbF/v372WabbQXFn4zVZZu0p0EvHz///PMoKSkBALz44osYPnw4br31Vvj4+ODzzz+36gCJiIiISHkNmhQOHjzY8udWrVrhxIkTyM3NhZeXl7DD7yKc3n9OWDv5irjzQNjWVzswMJBtttlWsu11VJdt0p6bmhROmTKlXvf76KOPGjSYxiY/Q9zyQNkmE9tsq8LV1ZVtttlWkIvTJV22SXtu6pzCtWvXYufOncjPz0deXt41P/Siy8h2wtp3uHuxzbYqTp06xTbbbCsoNaO/LtukPTd1pHD69On47LPPkJaWhsmTJ+OBBx6At7e3UmMjIiIiIpXc1JHClStX4uLFi3jmmWfw/fffIyQkBGPHjsWWLVsgY7W8Ruv3j8Vdj3Fz/mW22VZF27Zt2WabbSXbIT/osk3ac9OXpHFwcMD48eOxbds2HDt2DO3atcNjjz2G8PBwFBfr6yKY4d2aCWtHO4lZo5Nt/bWzsrLYZpttJdv54iakItukPQ26TqHli21sYDAYIEkSqqqqrDWmRiO4rb+wdksHJ7bZVkVubi7bbLOtZLuohS7bpD03PSksLy/HZ599hoEDB6J169ZISkrCO++8g/T0dKHv3hKh4oq4d4SWmc1ss60KO7sGXbmKbbbZrm/btlyXbdKem1rm7rHHHsPnn3+OkJAQTJkyBRMmTICvr6+S47su0cvcDbQZo3qzWuqyXsLapC+nZz4leghETZo5s7XoIaiOy9xp000dKXzvvffg7u6Oli1bYvfu3Zg2bRruvffeWh96MfTZfsLak/3EXWiVbX219br0GNtsqyX+5IO6bJP23NTx8gcffFBXK5bciI2NrFMy5bUh7vfAtr7aIq8swDbb+miLey4R2SbtualJ4dq1axUaRuOUnpghrH3iSinbbKvCz8+PbbbZVrLtcVKXbdIe/hdBhqyUHGHt9IoyttlWhZeXuNVU2GZbF23XdF22SXs4KZSh+5gOwtqDPMStJMO2vtonT4o7ksA227poXxigyzZpDyeFRERERMRJoRz7vzgirL2lQNyFVtnWV7tNmzZss822glo336bLNmkPJ4UyBEWJOzG5hYMj22yrQrerTLDNtkryisJ12Sbt4aRQhpCYIGHt1o7ObLOtikuXLrHNNttKtgta6bJN2sNJoQxVleLWe64UeE0ttvXVFno9TrbZ1kW7Updt0p6bWuZOa7jMHZHyuMwdkbK4zB2XudMKHimUYdATfYS1H/ANYJttVRw4cIBtttlWUMKpf+iyTdrDSaEM9o72wtoOBnG/Orb11a6qEneaBNts66FdWWXUZZu0h5NCGS4czRLWTi27wjbbqvDx8WGbbbaVbLuf1mWbtIeTQhnOJV4U1v6zTNxauGzrq+3v788222wriGsfk1ZwUihDrwmdhLXv8hT3v1q29dU+fvw422yzraAT54bosk3aw0khEREREXFSKMfBb5KFtXcU5rHNtipatRJ3cVu22dZDOzJ4py7bpD2cFMrgE+oprB1kL+4dY2zrq11YWMg222wrqOhKoC7bpD2cFMoQ3q25sHa0kwvbbKsiK0vcu+zZZlsX7by2umyT9nBSSERERERc5k4OLnNHesBl7oiUxWXuuMydVtiJHkBjtuTAXHTp0kVIOyEhgW222Wab7SbQTsz4XHfft41zIQAP1bt0fXz5WAaTycQ222yzzTbbbFOTwEmhDF5eXmyzzTbbbLPNNjUJnBTKEBwczDbbbLPNNttsU5PASaEMR48eZZttttlmm222qUngpJCIiIiIOCmUIyIigm222WabbbbZpiaBk0IZSktL2WabbbbZZpttahI4KZTh4sWLbLPNNttss802NQmcFBIRERERl7mTo6qqCra2tqp32WabbbbZZrsxt0U/f1PdmsQydyM8HoSdwV717uuHnkdMTIzqXQBITk5mm222m2h77mefYkPuJSHtb7pfQscW3whpJ6Xdq8t2ctZXutzOSXv48rEMZWVlbLPNNttW52Er7v/rZRXijtrotq3T7Zy0h5NCGTw8xC3mzTbbbDfd9oWKcmFtD5cMttVu63Q7J+3hpFCG0NBQttlmm22r21tcKKwd4refbZXpdTsn7eGkUIakpCS22Wabbau7z9tPWDv5zEi2VabX7Zy0h5NCIiIiIuKkUI7w8HC22WabbavbU1QgrB0e8Afbard1up2T9nBSKENlZSXbbLPNttU52ojbNZuqHNlWmV63c9IeTgplOH/+PNtss8221XV1cRPWvnC5M9sq0+t2TtrDSSERERERNY1l7vpjhJAVTX4oXw97e/W7AGAymdhmm+0m2o5++y2USWYh7eP3roO9nZgLGpsqHXXZrvI5qrvtnMvcaROPFMpw4sQJttlmm22rG+LpLaz954VBbKtMr9s5aQ8nhTKUlpayzTbbbFudj52Yo0YAUFombkKq27ZOt3PSHk4KZXB1dWWbbbbZtrosU4WwtqtTNttqt3W6nZP2cFIoQ0REBNtss8221e0qzBfWjgj6hW212zrdzkl7OCmU4fDhw2yzzTbbVjfOx19Y+/Dp0Wyr3dbpdk7aw0khEREREXFSKEdoaCjbbLPNttXtKy4U1g7xi2dbZXrdzkl7OCkkIiIiIk4K5UhPT2ebbbbZtrqeruIu5nvuUne2VabX7Zy0h5NCIiIiIuIyd3J8X/oxHB0dVe8CQFlZGdtss91E2x3fWYZic5WQ9tFRn8LBvlhIu9zkqst2hecR3W3nXOZOm3ikUIbU1FS22Wabbavr7+4prJ16sR/bard1up2T9nBSKENxsZj/VbLNNttNux1gbxTWLr4i7hqJum3rdDsn7eGkUAZnZ2e22WabbavLqTQJazs75rKtdlun2zlpD88plOGH8vWwtxezcL3JZGKbbbabaDv67bdQJpmFtI/fuw72dmVC2qZKR122q3yO6m475zmF2sQjhTIkJCSwzTbbbFvdBN8AYe1DqfezrTK9buekPZwUEhEREREnhXI0b96cbbbZZtvqDpYUCWs38z3Etsr0up2T9nBSKIOdnR3bbLPNttWVmcWcTwgA9rZizqvTc1uv2zlpDyeFMpw5c4Ztttlm2+r6uHkIa5/J6s222m2dbuekPZwUEhEREREvSSPHt8XrhF3jqbS0lG222W6i7S4rlyO/qlJI+8iIL+DskC+kXVruqct2mXui7rZzXpJGm3ikUIb09HS22Wabbavr5SruSfLcpR5sq0yv2zlpDyeFMhQUFLDNNttsW10zo4OwdkFJMNtqt3W6nZP2cFIog6OjI9tss8221RUIeukYAByNhWyr3dbpdk7aw3MKZfjJ9DlsbW1V7wJAVVUV22yz3UTbrVe8iUqI2TX/OXo1bG3ETEqrzHa6bEt+x3W3nfOcQm3ikUIZDhw4wDbbbLNtdbF+gcLaB1MeYFtlet3OSXs4KSQiIiIiTgrlCAoKYpttttm2usOlxcLaQd5JbKvd1ul2TtrDSaEMoq4rxTbbbDftdl6luDeaODnksa0yvW7npD2cFMqQmprKNttss211/d09hbVPX+zHtsr0up2T9nBSSEREREScFMrRrl07ttlmm22r+zbvsrB2dNhmtlWm1+2ctEcTk8KVK1ciPDwcjo6O6NmzJ/bv3y96SPWSkZHBNttss211Mc6uwtoXczqwrTK9buekPcInhV988QWefPJJzJ8/HwkJCYiJicHgwYORnZ0temg3lJcn7sRkttlmu+m2wx3ErTKRVxzGttptnW7npD3CJ4VvvvkmHn74YUyePBnR0dF477334OzsjI8++kj00G7I3l79VVTYZpvtpt8uMVcJaxvtStlWmV63c9IeocvcVVRUwNnZGRs2bMDIkSMtt8fGxiI/Px/ffvttjfuXl5ejvLzc8vfCwkKEhIQIW+Zum/kr1ZtE1PS1XPGGsPapse8La+uVTeBJ0UNQHZe50yahRwovX76MqqoqBAQE1Lg9ICAAmZmZte6/aNEieHh4WD5CQkLUGmqd9u3bxzbbbLNtdVP9xF1QeP+fk9hWmV63c9Ie4S8f34y5c+eioKDA8nHu3DnRQyIiIiJqEuxExn19fWFra4usrKwat2dlZSEwsPaC8A4ODnBwcFBreDd09RFOttlmm21rOHalRFg7wOs422q3dbqdk/YIPVJoNBrRtWtX7Nixw3Kb2WzGjh070Lt3b4Ejqx+R50GwzTbbTbd90VQhrO3mVPvUHbaVpdftnLRH+MvHTz75JD744AOsW7cOx48fx/Tp01FSUoLJkyeLHtoNpaSksM0222xb3Z3uXsLapzJuZ1tlet3OSXuEvnwMAOPGjcOlS5cwb948ZGZmolOnTvjpp594SJuIiIhIRUIvSSNX9VvaRV2S5uv81cIOvRcWFrLNNttNtN3n3beFvYSccPe3cHcW81JqYWmgLtvFzgd0t53zkjTaJPzl48ZM5KorbLPNdtNtt3F0Fta+VNCabZXpdTsn7eGkUIacnBy22WabbauLcHQS1s4pbMm22m2dbuekPZwUymBra8s222yzbXXlkllY285W3Duf9drW63ZO2sNzCmXgMndEpAQuc6cvXOaO5xRqBY8UyhAfH88222yzbXWxvrUv3q+WAykPsK0yvW7npD2cFMpgNot7iYdtttluum07g0FY22wWd6Uy/bb1uZ2T9nBSKIOfnx/bbLPNttWdLCsV1vbzEHcxY922dbqdk/ZwUiiDt7c322yzzbbVpZWXCWt7uZ1hW2V63c5JezgplOHPP/9km2222ba6wR7inqhPnh/Itsr0up2T9nBSSEREREScFMrRurW4K+CzzTbbTbe9tSBXWLt1s+1sq93W6XZO2sNJoQx5eXlss80221YXanQU1s4rDmVb7bZOt3PSHk4KZbh06RLbbLPNttVFOXHtY121dbqdk/ZwUiiDQeC1xNhmm+2m2zZD3EJTBoO469bpt63P7Zy0h8vcycBl7ohICVzmTl+4zB2XudMKHimU4eDBg2yzzTbbVjfBJ0BYO+HUeLZVptftnLSHk0IZKisr2WabbbatztFG3K65ssqBbbXbOt3OSXs4KZRBr1ehZ5tttpV1uvyKsLa3Wxrbard1up2T9nBSKENAgLiXeNhmm+2m2z52pURYO8DzONtqt3W6nZP2cFIow/Hj4nYibLPNdtNt3+3pK6x9/NxdbKvd1ul2TtrDSSERERERcVIoR2RkJNtss8221f1cKG6ViYjgXWyrTK/bOWkPJ4UyFBcXs80222xbnb+9+tddrVZyxY9tlel1Oyft4aRQhszMTLbZZpttq2vv5CqsnZnXjm212zrdzkl7OCkkIiIiIi5zJ8fWqi+FrRspSRLbbLPdRNsRK94QtvpxyphVMBjE1CXJoMu2IeBP3W3nXOZOm3ikUIbExES22Wabbasb6y3u/LYjafexrTK9buekPZwUylBRUcE222yzbXWutnbC2uUmcecz6rWt1+2ctIeTQhk8PT3ZZptttq0uvaJMWNvT9Rzbard1up2T9nBSKEPz5s3ZZptttq0uoaRIWLuZTyLbKtPrdk7aw0mhDMnJyWyzzTbbVjfSS9w5hUfPDmdbZXrdzkl7OCkkIiIiIk4K5WjZsiXbbLPNttX9UpQvrN0i8De2VabX7Zy0h5NCGcrKxJ0MzjbbbDfdtrutrbB2uUncNeP02tbrdk7aw0mhDBkZGWyzzTbbVtfJ2U1YOyOnI9tqt3W6nZP2cFJIRERERFzmTo4fKz6DnZ2Yi8xWVlayzTbbTbTd5u03YRK0az5x30ewszUJaVdW2euybfY9prvtnMvcaROPFMpw9OhRttlmm22ru8fLR1j7ePrdbKtMr9s5aQ8nhTLo9eRgttlmW1metuq/8lHtSoUH2yrT63ZO2sNJoQwiD3mzzTbbTbedUVEurO3ufJFttds63c5JezgplCE8PJxtttlm2+p+Ly4Q1g7z38u2yvS6nZP2cFIow5EjR9hmm222rW60t7+wdtKZUWyrTK/bOWkPJ4VERERExEmhHGFhYWyzzTbbVvcHXz7WV1un2zlpDyeFMlRVVbHNNttsW529wSCsXWU2sq12W6fbOWkPJ4UynD9/nm222Wbb6rq5iHtH6PnLXdhWu63T7Zy0h5NCIiIiIuIyd3L8t+xTGI1iXnKoqKhgm222m2i7/TtvodRsFtI+du9/YLS7IqRdUemky3ald7LutnMuc6dNPFIow8mTJ9lmm222rW6gh7ewdsqFAWyrTK/bOWkPJ4UylJSUsM0222xbna+duGXuSsrErbus27ZOt3PSHk4KZXB1dWWbbbbZtrpsU4WwtqvTJbbVbut0Oyft4aRQhsjISLbZZpttq/u5ME9YOyJoJ9sq0+t2TtrDSaEMiYmJbLPNNttWd79PgLD24dNj2VaZXrdz0h470QOwhm8L/iPk3Uv79u1TvUlETd+AlhF4bvw/hLT37dsHm8B/CWkbzuqzjbN8LiFt4JFCGUJCQthmm2222WabbWoSOCmUwcZG3I+PbbbZZpttthtzm7SHW4MMZ8+eZZttttlmm222qUngpJCIiIiImsYyd6KWybly5QqcnJxU77LNNttss812Y26Lfv6muvFIoQxpaWlss80222yzzTY1CZwUylBUVMQ222yzzTbbbFOTwEmhDKIO97PNNttss812Y2+T9vCcQhlMJhPs7cUsXM8222yzzTbbjbUt+vmb6sYjhTIkJCSwzTbbbLPNNtvUJDTqZe6qD3IWFhYK6ZeUlLDNNttss8022zeputmIX6xskhr1pDAnJwcAl+khIiJqjHJycuDh4SF6GPT/GvWk0NvbGwCQnp6u+kZVWFiIkJAQnDt3TvXzIdhmm2222Wa7MbcLCgoQGhpqeR4nbWjUk8LqNRs9PDyEnajq7u7ONttss80222w3ANde1hb+NoiIiIiIk0IiIiIiauSTQgcHB8yfPx8ODg5ss80222yzzTbbJEOjvng1EREREVlHoz5SSERERETWwUkhEREREXFSSEREREScFBIRERERGvmkcOXKlQgPD4ejoyN69uyJ/fv3K9785ZdfMHz4cAQHB8NgMGDTpk2KN6stWrQI3bt3h5ubG/z9/TFy5Ej8+eefqrTfffdddOzY0XKR0969e+PHH39Upf13ixcvhsFgwOzZs1XpLViwAAaDocZHVFSUKm0AuHDhAh544AH4+PjAyckJHTp0wIEDBxTvhoeH1/q+DQYD4uLiFG9XVVXhhRdeQIsWLeDk5ISIiAi8/PLLqq2RWlRUhNmzZyMsLAxOTk645ZZbEB8fb/XOjfYlkiRh3rx5CAoKgpOTEwYMGICUlBRV2t988w0GDRoEHx8fGAwGJCYmWqV7o7bJZMKzzz6LDh06wMXFBcHBwXjwwQeRkZGheBv46997VFQUXFxc4OXlhQEDBmDfvn2qtP/u0UcfhcFgwLJly1RpT5o0qda/9SFDhqjSBoDjx4/jnnvugYeHB1xcXNC9e3ekp6dbpU83p9FOCr/44gs8+eSTmD9/PhISEhATE4PBgwcjOztb0W5JSQliYmKwcuVKRTt12b17N+Li4rB3715s27YNJpMJgwYNQklJieLt5s2bY/HixTh48CAOHDiAO+64AyNGjMDRo0cVb1eLj4/H+++/j44dO6rWBIB27drh4sWLlo/ffvtNlW5eXh769OkDe3t7/Pjjjzh27BjeeOMNeHl5Kd6Oj4+v8T1v27YNADBmzBjF20uWLMG7776Ld955B8ePH8eSJUuwdOlSvP3224q3AeChhx7Ctm3b8PHHHyMpKQmDBg3CgAEDcOHCBat2brQvWbp0KVasWIH33nsP+/btg4uLCwYPHoyysjLF2yUlJejbty+WLFkiu3Uz7dLSUiQkJOCFF15AQkICvvnmG/z555+45557FG8DQOvWrfHOO+8gKSkJv/32G8LDwzFo0CBcunRJ8Xa1jRs3Yu/evQgODpbdvJn2kCFDavyb/+yzz1Rpp6amom/fvoiKisKuXbtw5MgRvPDCC3B0dLRKn26S1Ej16NFDiouLs/y9qqpKCg4OlhYtWqTaGABIGzduVK13tezsbAmAtHv3biF9Ly8v6cMPP1SlVVRUJLVq1Uratm2bdNttt0mzZs1SpTt//nwpJiZGldbVnn32Walv375C2lebNWuWFBERIZnNZsVbw4YNk6ZMmVLjtnvvvVeaMGGC4u3S0lLJ1tZW2rx5c43bu3TpIj333HOKda/el5jNZikwMFB67bXXLLfl5+dLDg4O0meffaZo++/S0tIkANKhQ4es2qxPu9r+/fslANLZs2dVbxcUFEgApO3bt6vSPn/+vNSsWTMpOTlZCgsLk9566y2rdq/Vjo2NlUaMGGH1Vn3a48aNkx544AHF21Q/jfJIYUVFBQ4ePIgBAwZYbrOxscGAAQPwxx9/CByZugoKCgBA9QXFq6qq8Pnnn6OkpAS9e/dWpRkXF4dhw4bV+J2rJSUlBcHBwWjZsiUmTJig2ssa3333Hbp164YxY8bA398fnTt3xgcffKBK++8qKirwySefYMqUKTAYDIr3brnlFuzYsQMnT54EABw+fBi//fYbhg4dqni7srISVVVVtY5SODk5qXaEGADS0tKQmZlZY3v38PBAz549dbWPA/7azxkMBnh6eqraraiowKpVq+Dh4YGYmBjFe2azGRMnTsScOXPQrl07xXtX27VrF/z9/dGmTRtMnz4dOTk5ijfNZjP++9//onXr1hg8eDD8/f3Rs2dPVU/Lopoa5aTw8uXLqKqqQkBAQI3bAwICkJmZKWhU6jKbzZg9ezb69OmD9u3bq9JMSkqCq6srHBwc8Oijj2Ljxo2Ijo5WvPv5558jISEBixYtUrx1tZ49e2Lt2rX46aef8O677yItLQ233norioqKFG+fPn0a7777Llq1aoUtW7Zg+vTpmDlzJtatW6d4++82bdqE/Px8TJo0SZXeP//5T9x///2IioqCvb09OnfujNmzZ2PChAmKt93c3NC7d2+8/PLLyMjIQFVVFT755BP88ccfuHjxouL9atX7MT3v4wCgrKwMzz77LMaPHw93d3dVmps3b4arqyscHR3x1ltvYdu2bfD19VW8u2TJEtjZ2WHmzJmKt642ZMgQ/Oc//8GOHTuwZMkS7N69G0OHDkVVVZWi3ezsbBQXF2Px4sUYMmQItm7dilGjRuHee+/F7t27FW1T3exED4AaJi4uDsnJyaoevWjTpg0SExNRUFCADRs2IDY2Frt371Z0Ynju3DnMmjUL27ZtE3KOyd+PTnXs2BE9e/ZEWFgYvvzyS0ydOlXRttlsRrdu3fDqq68CADp37ozk5GS89957iI2NVbT9d6tXr8bQoUOteo7T9Xz55Zf49NNPsX79erRr1w6JiYmYPXs2goODVfm+P/74Y0yZMgXNmjWDra0tunTpgvHjx+PgwYOKt+l/TCYTxo4dC0mS8O6776rWvf3225GYmIjLly/jgw8+wNixY7Fv3z74+/sr1jx48CCWL1+OhIQEVY7GX+3++++3/LlDhw7o2LEjIiIisGvXLtx5552Kdc1mMwBgxIgReOKJJwAAnTp1wu+//4733nsPt912m2JtqlujPFLo6+sLW1tbZGVl1bg9KysLgYGBgkalnhkzZmDz5s3YuXMnmjdvrlrXaDQiMjISXbt2xaJFixATE4Ply5cr2jx48CCys7PRpUsX2NnZwc7ODrt378aKFStgZ2en+P9kr+bp6YnWrVvj1KlTireCgoJqTbjbtm2r6rvyzp49i+3bt+Ohhx5SrTlnzhzL0cIOHTpg4sSJeOKJJ1Q7UhwREYHdu3ejuLgY586dw/79+2EymdCyZUtV+gAs+zG97uOqJ4Rnz57Ftm3bVDtKCAAuLi6IjIxEr169sHr1atjZ2WH16tWKNn/99VdkZ2cjNDTUsp87e/YsnnrqKYSHhyvarkvLli3h6+ur+H7O19cXdnZ2wvdz9D+NclJoNBrRtWtX7Nixw3Kb2WzGjh07VDvHTQRJkjBjxgxs3LgRP//8M1q0aCF0PGazGeXl5Yo27rzzTiQlJSExMdHy0a1bN0yYMAGJiYmwtbVVtH+14uJipKamIigoSPFWnz59al1y6OTJkwgLC1O8XW3NmjXw9/fHsGHDVGuWlpbCxqbmrsnW1tZyVEEtLi4uCAoKQl5eHrZs2YIRI0ao1m7RogUCAwNr7OMKCwuxb9++Jr2PA/43IUxJScH27dvh4+MjdDxq7OcmTpyII0eO1NjPBQcHY86cOdiyZYui7bqcP38eOTk5iu/njEYjunfvLnw/R//TaF8+fvLJJxEbG4tu3bqhR48eWLZsGUpKSjB58mRFu8XFxTX+95SWlobExER4e3sjNDRU0XZcXBzWr1+Pb7/9Fm5ubpZzizw8PODk5KRoe+7cuRg6dChCQ0NRVFSE9evXY9euXYrvsNzc3GqdM+ni4gIfHx9VzqV8+umnMXz4cISFhSEjIwPz58+Hra0txo8fr3j7iSeewC233IJXX30VY8eOxf79+7Fq1SqsWrVK8Tbw15PhmjVrEBsbCzs79XYVw4cPx8KFCxEaGop27drh0KFDePPNNzFlyhRV+lu2bIEkSWjTpg1OnTqFOXPmICoqyur7lhvtS2bPno1XXnkFrVq1QosWLfDCCy8gODgYI0eOVLydm5uL9PR0y/UBq5+0AwMDZR+pvF47KCgIo0ePRkJCAjZv3oyqqirLfs7b2xtGo1Gxto+PDxYuXIh77rkHQUFBuHz5MlauXIkLFy5Y5VJMN/qZXz35tbe3R2BgINq0aaNo29vbGy+++CLuu+8+BAYGIjU1Fc888wwiIyMxePBgRduhoaGYM2cOxo0bh379+uH222/HTz/9hO+//x67du2S3aYGEPzuZ1nefvttKTQ0VDIajVKPHj2kvXv3Kt7cuXOnBKDWR2xsrOLturoApDVr1ijenjJlihQWFiYZjUbJz89PuvPOO6WtW7cq3q2LmpekGTdunBQUFCQZjUapWbNm0rhx46RTp06p0pYkSfr++++l9u3bSw4ODlJUVJS0atUq1dpbtmyRAEh//vmnak1JkqTCwkJp1qxZUmhoqOTo6Ci1bNlSeu6556Ty8nJV+l988YXUsmVLyWg0SoGBgVJcXJyUn59v9c6N9iVms1l64YUXpICAAMnBwUG68847rfa7uFF7zZo1dX5+/vz5irarL4FT18fOnTsVbV+5ckUaNWqUFBwcLBmNRikoKEi65557pP3798vu3qhdF2tekuZ67dLSUmnQoEGSn5+fZG9vL4WFhUkPP/ywlJmZqXi72urVq6XIyEjJ0dFRiomJkTZt2mSVNt08gySptEwAEREREWlWozynkIiIiIisi5NCIiIiIuKkkIiIiIg4KSQiIiIicFJIREREROCkkIiIiIjASSERERERgZNCIrpJkyZNssqqGqKEh4dj2bJloodBRKQ5vHg1EVkYDIbrfn7+/Pl44oknIEkSPD091RmUlV26dAkuLi5wdnYG8Nf3vHHjxkY90SUisoZGu/YxEVnfxYsXLX/+4osvMG/evBqL1bu6usLV1VXE0KzGz89P9BCIiDSJLx8TkUVgYKDlw8PDAwaDocZtrq6utV4+7t+/Px5//HHMnj0bXl5eCAgIwAcffICSkhJMnjwZbm5uiIyMxI8//lijlZycjKFDh8LV1RUBAQGYOHEiLl++fM2xLViwAJ06dapx27JlyxAeHm75e/XYXn/9dQQFBcHHxwdxcXEwmUyW+/z95ePqrx01ahQMBoPl74cPH8btt98ONzc3uLu7o2vXrjhw4MBN/zyJiBoTTgqJSLZ169bB19cX+/fvx+OPP47p06djzJgxuOWWW5CQkIBBgwZh4sSJKC0tBQDk5+fjjjvuQOfOnXHgwAH89NNPyMrKwtixY2WPZefOnUhNTcXOnTuxbt06rF27FmvXrq3zvvHx8QCANWvW4OLFi5a/T5gwAc2bN0d8fDwOHjyIf/7zn7C3t5c9NiIiLeOkkIhki4mJwfPPP49WrVph7ty5cHR0hK+vLx5++GG0atUK8+bNQ05ODo4cOQIAeOedd9C5c2e8+uqriIqKQufOnfHRRx9h586dOHnypKyxeHl54Z133kFUVBTuvvtuDBs2DDt27KjzvtUvJXt6eiIwMNDy9/T0dAwYMABRUVFo1aoVxowZg5iYGFnjIiLSOk4KiUi2jh07Wv5sa2sLHx8fdOjQwXJbQEAAACA7OxvAXy/P7ty503KOoqurK6KiogAAqampssbSrl072NraWv4eFBRk6dbXk08+iYceeggDBgzA4sWLZY+JiKgx4KSQiGS7+qVVg8FQ47bqdzWbzWYAQHFxMYYPH47ExMQaHykpKejXr1+dDRsbG1x9sYS/nyt4vbFUd+trwYIFOHr0KIYNG4aff/4Z0dHR2Lhx4009BhFRY8N3HxOR6rp06YKvv/4a4eHhsLOr327Iz88PmZmZkCTJMslMTEyUPRZ7e3tUVVXVur1169Zo3bo1nnjiCYwfPx5r1qzBqFGjZPeIiLSKRwqJSHVxcXHIzc3F+PHjER8fj9TUVGzZsgWTJ0+uc4IG/PUu50uXLmHp0qVITU3FypUra72juSHCw8OxY8cOZGZmIi8vD1euXMGMGTOwa9cunD17Fnv27EF8fDzatm0ru0VEpGWcFBKR6oKDg7Fnzx5UVVVh0KBB6NChA2bPng1PT0/Y2NS9W2rbti3+/e9/Y+XKlYiJicH+/fvx9NNPyx7LG2+8gW3btiEkJASdO3eGra0tcnJy8OCDD6J169YYO3Yshg4dihdffFF2i4hIy7iiCRERERHxSCERERERcVJIREREROCkkIiIiIjASSERERERgZNCIiIiIgInhUREREQETgqJiIiICJwUEhERERE4KSQiIiIicFJIREREROCkkIiIiIjASSERERERAfg/iXFYbEAjhyMAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "optimized_schedule = Schedule.from_job_sequences(instance, job_sequences)\n", "_ = plot_gantt_chart(\n", " optimized_schedule, job_labels=[\"Job 1\", \"Job 2\", \"Job 3\"]\n", ")" ] } ], "metadata": { "kernelspec": { "display_name": "job-shop-lib-gOF0HMZJ-py3.12", "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.12.3" } }, "nbformat": 4, "nbformat_minor": 2 }