diff --git a/benchmarks/build.gradle.kts b/benchmarks/build.gradle.kts deleted file mode 100644 index 4e63e02..0000000 --- a/benchmarks/build.gradle.kts +++ /dev/null @@ -1,68 +0,0 @@ -import de.undercouch.gradle.tasks.download.Download -plugins { - java - id("de.undercouch.download") version "5.6.0" -} - -val buildPath = layout.buildDirectory.get().asFile - -dependencies { - implementation(fileTree(mapOf("dir" to "/Users/aoli/repos/dacapobench/benchmarks", "include" to listOf("*.jar")))) - implementation(project(":core")) -} - - -repositories { - mavenCentral() -} - - -tasks.register("downloadDacapo") { - src("https://download.dacapobench.org/chopin/dacapo-23.11-chopin.zip") - dest(File(buildPath, "libs/dacapo.zip")) - onlyIfModified(true) -} - -tasks.register("unzipDacapo") { - dependsOn("downloadDacapo") - from(zipTree("${buildPath}/libs/dacapo.zip")) - into("${buildPath}/libs/unzipped") -} - -tasks.withType { - val agentPath: String by rootProject.extra - val jdk = project(":jdk") - val instrumentation = project(":instrumentation") - classpath = sourceSets["main"].runtimeClasspath - executable("${jdk.layout.buildDirectory.get().asFile}/java-inst/bin/java") - mainClass = "cmu.pasta.fray.core.MainKt" - jvmArgs("-agentpath:$agentPath") - jvmArgs("-javaagent:${instrumentation.layout.buildDirectory.get().asFile}/libs/${instrumentation.name}-${instrumentation.version}-all.jar") - jvmArgs("-ea") - doFirst { - // Printing the full command - println("Executing command: ${executable} ${jvmArgs!!.joinToString(" ")} -cp ${classpath.asPath} ${mainClass.get()} ${args!!.joinToString(" ")}") - } -} - - -tasks.register("run") { - val appName = properties["appName"] as String? ?: "avrora" - val extraArgs = when (val extraArgs = properties["extraArgs"]) { - is String -> extraArgs.split(" ") - else -> emptyList() - } - args = listOf("Harness", "main", "-a", - "$appName --size small", "-o", "${layout.buildDirectory.get().asFile}/$appName-report", "--logger", "csv", "--iter", "10000", "-s", "90000000") + extraArgs -} - -tasks.register("replay") { - val appName = properties["appName"] as String? ?: "avrora" - args = listOf("Harness", "main", "-o", "/tmp/report", "-a", appName, "--scheduler", "replay", "--path", "${layout.buildDirectory.get().asFile}/$appName-report/schedule_0.json") -} - -tasks.register("debug") { - val appName = properties["appName"] as String? ?: "avrora" - args = listOf("Harness", "main", "-o", "${layout.buildDirectory.get().asFile}/$appName-report", "-a", appName, "--scheduler", "fifo") - jvmArgs("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005") -} diff --git a/benchmarks/script/configs.py b/benchmarks/script/configs.py deleted file mode 100644 index 9505fac..0000000 --- a/benchmarks/script/configs.py +++ /dev/null @@ -1,5 +0,0 @@ -import os - -BASE = os.path.join(os.path.dirname(os.path.realpath(__file__)), "..", "..") -BENCHMARKS = "fop graphchi h2 h2o jme jython kafka luindex lusearch pmd spring sunflow tomcat tradebeans tradesoap xalan zxing".split(" ") -GRADLE = os.path.join(BASE, "gradlew") diff --git a/benchmarks/script/run.py b/benchmarks/script/run.py deleted file mode 100644 index d97b87e..0000000 --- a/benchmarks/script/run.py +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -import os -from configs import * -import subprocess - - - -def main(): - for bm in BENCHMARKS: - command = [GRADLE, ":benchmarks:run", f"-PappName={bm}"] - subprocess.call(command, cwd=BASE) - - -if __name__ == "__main__": - main() diff --git a/benchmarks/script/visualize.ipynb b/benchmarks/script/visualize.ipynb deleted file mode 100644 index ec9d9cc..0000000 --- a/benchmarks/script/visualize.ipynb +++ /dev/null @@ -1,123 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "\n", - "from configs import *\n", - "from visualize import *" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuoAAAHHCAYAAADpvX3TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABgbUlEQVR4nO3deXgN5///8ddJIpHIJsQSQmIJse8a2sbaWIu2tmqJpSsfe1vq09o+6IJQpbSU6mJXVYpGCKXWELRSO9EWqTVCBcn8/vDN+TmSkETIhOfjus519czcZ+Z9z5xTr3PnnjkWwzAMAQAAADAVu5wuAAAAAEBqBHUAAADAhAjqAAAAgAkR1AEAAAATIqgDAAAAJkRQBwAAAEyIoA4AAACYEEEdAAAAMCGCOgAAAGBCBHUAyAVGjBghi8XyUPbVoEEDNWjQwPo8MjJSFotFixcvfij7Dw0NlZ+f30PZV1YlJCSoV69eKlKkiCwWi/r375/TJeWo3HDOgNyIoA4AD9mcOXNksVisj7x588rHx0chISH65JNPdPny5WzZz99//60RI0YoOjo6W7aXncxcW0aMHTtWc+bM0RtvvKGvv/5aL7/88l3b37hxQ5988olq164tNzc3ubq6qnbt2vrkk09048aNh1T1/cnt5wzIjSyGYRg5XQQAPE7mzJmj7t27a9SoUfL399eNGzd0+vRpRUZGKjw8XCVKlNDy5ctVpUoV62tu3rypmzdvKm/evBnez86dO1W7dm3Nnj1boaGhGX7d9evXJUmOjo6Sbo2oN2zYUIsWLdILL7yQ4e1ktbYbN24oOTlZTk5O2bKvB+GJJ56Qg4ODNm3adM+2V65cUcuWLbVhwwa1atVKzZo1k52dnVavXq3ly5crODhYK1euVL58+R5C5VmX288ZkBs55HQBAPC4at68uWrVqmV9PnToUK1bt06tWrXSs88+q5iYGDk7O0uSHBwc5ODwYP+XffXqVbm4uFgDek7JkydPju4/I+Li4lShQoUMtR04cKA2bNigKVOmqE+fPtblb7zxhqZOnao+ffpo8ODB+uyzzx5UuWm6du2aHB0dZWd3/39czw3nLCekfKay6ubNm0pOTs7xzyRykAEAeKhmz55tSDJ27NiR5vqxY8cakozPP//cumz48OHGnf/L/vnnn4369esbHh4eRr58+YyAgABj6NChhmEYxvr16w1JqR6zZ882DMMwgoODjYoVKxo7d+40nnrqKcPZ2dno16+fdV1wcLB1Pynbmj9/vjF06FCjcOHChouLi9G6dWsjNjbWpqaSJUsa3bp1S9Wn27d5r9q6detmlCxZ0ub1CQkJxsCBA43ixYsbjo6ORkBAgPHxxx8bycnJNu0kGb179za+//57o2LFioajo6NRoUIFY9WqVWke6zudOXPG6NGjh1GoUCHDycnJqFKlijFnzpxUx+LOx7Fjx9Lc3smTJw17e3ujUaNG6e6zYcOGhoODg3Hy5MlU/fjmm2+MgIAAw8nJyahRo4axYcOGVK//888/je7duxuFChWy9nfWrFk2bVLqnjdvnjFs2DDDx8fHsFgsxoULF4xz584ZgwYNMipVqmTky5fPcHNzM5o1a2ZER0ffs98P85zFx8cb/fr1M0qWLGk4Ojoa3t7eRpMmTYyoqChrmytXrhgxMTHGP//8k+7xTrFx40bjhRdeMHx9fQ1HR0ejePHiRv/+/Y2rV69a23z88ceGJOP48eOpXj9kyBAjT548xvnz5w3DuPtn6l7vK8MwjGPHjhmSjI8//tgICwszSpUqZdjZ2Rm7d+82EhMTjffee8+oUaOG4e7ubri4uBhPPvmksW7dunv2E7kbI+oAYDIvv/yy3n33Xf3888965ZVX0mzz+++/q1WrVqpSpYpGjRolJycnHT58WJs3b5YkBQYGatSoUXr//ff16quv6qmnnpIk1atXz7qNc+fOqXnz5urUqZNeeuklFS5c+K51jRkzRhaLRe+8847i4uI0adIkNWnSRNHR0daR/4zISG23MwxDzz77rNavX6+ePXuqWrVqWrNmjd566y399ddfCgsLs2m/adMmLV26VG+++abc3Nz0ySef6Pnnn1dsbKwKFCiQbl3//vuvGjRooMOHD6tPnz7y9/fXokWLFBoaqosXL6pfv34KDAzU119/rQEDBqh48eIaNGiQJMnb2zvNba5atUpJSUnq2rVruvvt2rWr1q9fr9WrV6tXr17W5Rs2bNCCBQvUt29fOTk5adq0aWrWrJm2b9+uSpUqSZLOnDmjJ554QhaLRX369JG3t7dWrVqlnj17Kj4+PtVFrqNHj5ajo6MGDx6sxMREOTo6av/+/Vq2bJnat28vf39/nTlzRjNmzFBwcLD2798vHx8fU5yz119/XYsXL1afPn1UoUIFnTt3Tps2bVJMTIxq1KghSdq+fbsaNmyo4cOHa8SIEekec0latGiRrl69qjfeeEMFChTQ9u3bNWXKFP35559atGiRJKlDhw56++23tXDhQr311ls2r1+4cKGeeeYZ5c+f37osrc9URt5Xt5s9e7auXbumV199VU5OTvLy8lJ8fLxmzpypzp0765VXXtHly5c1a9YshYSEaPv27apWrdpd+4pcLKe/KQDA4+ZeI+qGYRgeHh5G9erVrc/vHFEPCwszJN115HDHjh02o563Cw4ONiQZ06dPT3NdWiPqxYoVM+Lj463LFy5caEgyJk+ebF2WkRH1e9V25+jssmXLDEnG//73P5t2L7zwgmGxWIzDhw9bl0kyHB0dbZbt2bPHkGRMmTIl1b5uN2nSJEOS8c0331iXXb9+3QgKCjJcXV1t+l6yZEmjZcuWd92eYRhG//79DUnG7t27022za9cuQ5IxcOBAm35IMnbu3GldduLECSNv3rxGu3btrMt69uxpFC1a1Dh79qzNNjt16mR4eHhYR4dTzmGpUqVsRowNwzCuXbtmJCUl2Sw7duyY4eTkZIwaNcq6LKfPmYeHh9G7d+9U+75dSj+HDx9+13aGYaQ6DoZhGOPGjTMsFotx4sQJ67KgoCCjZs2aNu22b99uSDLmzp1rXZbeZyqj76uUEXV3d3cjLi7OZhs3b940EhMTbZZduHDBKFy4sNGjR4979hW5F3d9AQATcnV1vevdXzw9PSVJP/zwg5KTk7O0DycnJ3Xv3j3D7bt27So3Nzfr8xdeeEFFixbVTz/9lKX9Z9RPP/0ke3t79e3b12b5oEGDZBiGVq1aZbO8SZMmKl26tPV5lSpV5O7urqNHj95zP0WKFFHnzp2ty/LkyaO+ffsqISFBGzZsyHTtKefw9uN2p5R18fHxNsuDgoJUs2ZN6/MSJUqoTZs2WrNmjZKSkmQYhpYsWaLWrVvLMAydPXvW+ggJCdGlS5e0a9cum21269Yt1V8/nJycrPPUk5KSdO7cObm6uqpcuXKpXp9RD+KceXp6atu2bfr777/T3W+DBg1kGMY9R9Ml2RyHK1eu6OzZs6pXr54Mw9Du3but6zp27KioqCgdOXLEumzBggVycnJSmzZtbLaZ1mcqs++r559/PtVfaOzt7a3z1JOTk3X+/HndvHlTtWrVyvI5Qu5AUAcAE0pISLhruOvYsaPq16+vXr16qXDhwurUqZMWLlyYqdBerFixTF2kVrZsWZvnFotFZcqU0fHjxzO8jaw4ceKEfHx8Uh2PwMBA6/rblShRItU28ufPrwsXLtxzP2XLlk11cWV6+8mIlJrv9qUrvTB/5/GWpICAAF29elX//POP/vnnH128eFGff/65vL29bR4pYTEuLs7m9f7+/qm2mZycrLCwMJUtW1ZOTk4qWLCgvL29tXfvXl26dClzHf4/D+KcffTRR/rtt9/k6+urOnXqaMSIEff88nU3sbGxCg0NlZeXl1xdXeXt7a3g4GBJsul3+/btZWdnpwULFki6Na1n0aJFat68udzd3W22mdZnKrPvq7TOkSR99dVXqlKlivLmzasCBQrI29tbK1euzPI5Qu5AUAcAk/nzzz916dIllSlTJt02zs7O2rhxo9auXauXX35Ze/fuVceOHdW0aVMlJSVlaD+ZmVeeUen9KFNGa8oO9vb2aS43cuBuxClhbO/evem2SVmX0bvIpEj5UvbSSy8pPDw8zUf9+vVtXpPWOR87dqwGDhyop59+Wt98843WrFmj8PBwVaxYMct/rcmsjJyzDh066OjRo5oyZYp8fHz08ccfq2LFiqlG5zMiKSlJTZs21cqVK/XOO+9o2bJlCg8P15w5cyTJpt8+Pj566qmntHDhQknS1q1bFRsbq44dO6babnZ8ptLaxjfffKPQ0FCVLl1as2bN0urVqxUeHq5GjRo9tHOEnMHFpABgMl9//bUkKSQk5K7t7Ozs1LhxYzVu3FgTJ07U2LFjNWzYMK1fv15NmjTJ9l8yPXTokM1zwzB0+PBhm/u958+fXxcvXkz12hMnTqhUqVLW55mprWTJklq7dq0uX75sM0L7xx9/WNdnh5IlS2rv3r1KTk62Gf28n/00b95c9vb2+vrrr9O9oHTu3LlycHBQs2bNbJbfebwl6eDBg3JxcbFOjXBzc1NSUpKaNGmS6dpSLF68WA0bNtSsWbNsll+8eFEFCxa0PjfDOStatKjefPNNvfnmm4qLi1ONGjU0ZswYNW/ePFPb2bdvnw4ePKivvvrK5ryEh4en2b5jx4568803deDAAS1YsEAuLi5q3bp1hvaVHe+rxYsXq1SpUlq6dKnNeRg+fHiGakDuxYg6AJjIunXrNHr0aPn7+6tLly7ptjt//nyqZSl3fkhMTJQk6w/opBWcs2Lu3Lk2UzgWL16sU6dO2YSk0qVLa+vWrdYfTZKkFStW6OTJkzbbykxtLVq0UFJSkj799FOb5WFhYbJYLJkOaXfbz+nTp61THKRb97GeMmWKXF1drdMiMsPX11fdu3fX2rVr07xP+vTp07Vu3Tr17NlTxYsXt1m3ZcsWm/nHJ0+e1A8//KBnnnlG9vb2sre31/PPP68lS5bot99+S7Xtf/75J0M12tvbp/prw6JFi/TXX3/ZLMvJc5aUlJRqikehQoXk4+Njfb9Lt+5b/scff+js2bN33V7KCP7t/TYMQ5MnT06z/fPPPy97e3vNmzdPixYtUqtWrTL8A1XZ8b5Kq95t27Zpy5YtGaoBuRcj6gCQQ1atWqU//vhDN2/e1JkzZ7Ru3TqFh4erZMmSWr58+V1/hXTUqFHauHGjWrZsqZIlSyouLk7Tpk1T8eLF9eSTT0q6FZo9PT01ffp0ubm5KV++fKpbt266c2DvxcvLS08++aS6d++uM2fOaNKkSSpTpozNLSR79eqlxYsXq1mzZurQoYOOHDmib775xuZCwczW1rp1azVs2FDDhg3T8ePHVbVqVf3888/64Ycf1L9//1TbzqpXX31VM2bMUGhoqKKiouTn56fFixdr8+bNmjRp0l2vGbibsLAw/fHHH3rzzTe1evVq68j5mjVr9MMPPyg4OFgTJkxI9bpKlSopJCTE5vaMkjRy5Ehrmw8++EDr169X3bp19corr6hChQo6f/68du3apbVr16b5he5OrVq10qhRo9S9e3fVq1dP+/bt07fffmvzFxApZ8/Z5cuXVbx4cb3wwguqWrWqXF1dtXbtWu3YscPm2GX09ozly5dX6dKlNXjwYP31119yd3fXkiVL0r2OoVChQmrYsKEmTpyoy5cvpzntJT3Z8b5q1aqVli5dqnbt2qlly5Y6duyYpk+frgoVKighISHDtSAXyolbzQDA4yzl9owpD0dHR6NIkSJG06ZNjcmTJ9vcBjDFnbdnjIiIMNq0aWP4+PgYjo6Oho+Pj9G5c2fj4MGDNq/74YcfjAoVKhgODg5p/uBRWtK7PeO8efOMoUOHGoUKFTKcnZ2Nli1b2tzGLsWECROMYsWKGU5OTkb9+vWNnTt3ptrm3WpL68dzLl++bAwYMMDw8fEx8uTJY5QtW/auP55zp/RuG3mnM2fOGN27dzcKFixoODo6GpUrV07zdoQZvT1jisTERCMsLMyoWbOmkS9fPsPFxcWoUaOGMWnSJOP69eup2qf045tvvjHKli1rODk5GdWrVzfWr1+fZs29e/c2fH19jTx58hhFihQxGjdubPODWSnncNGiRalef+3aNWPQoEFG0aJFDWdnZ6N+/frGli1bTHXOEhMTjbfeesuoWrWq4ebmZuTLl8+oWrWqMW3aNJvXZOb2jPv37zeaNGliuLq6GgULFjReeeUV620h0zrnX3zxhSHJcHNzM/79999U6+/2mcrI++r2Hzy6U3JysjF27FijZMmS1vfCihUr0jzueLRYDCMHrq4BAADpslgs6t27d6qpIwAeL8xRBwAAAEyIoA4AAACYEEEdAAAAMCHu+gIAgMlw+RgAiRF1AAAAwJQI6gAAAIAJMfUFyMWSk5P1999/y83NLdt/Lh4AADwYhmHo8uXL8vHxkZ1d+uPmBHUgF/v777/l6+ub02UAAIAsOHnypIoXL57ueoI6kIul/PT0yZMn5e7unsPVAACAjIiPj5evr6/13/H0ENSBXCxluou7uztBHQCAXOZe01a5mBQAAAAwIYI6AAAAYEIEdQAAAMCECOoAAACACRHUAQAAABMiqAMAAAAmxO0ZgUfA0/+dJ3sn55wuAwCAR0bUx11zugRG1AEAAAAzIqgDAAAAJkRQBwAAAEyIoA4AAACYEEEdAAAAMCGCOgAAAGBCBHUAAADAhAjqAAAAgAkR1AEAAAATIqgDAAAAJkRQBwAAAEyIoA4AAACYEEEdAAAAMCGCOgAAAGBCBHUAAADAhAjqAAAAgAkR1AEAAAATIqgDAAAAJkRQBwAAAEyIoA4AAACYEEEdAAAAMCGCOgAAAGBCBHUAAADAhAjqAAAAgAkR1AEAAAATIqgDAAAAJkRQBwAAAEyIoA4AAACYEEEdAAAAMCGCOgAAAGBCBHUAAADAhAjqj4nIyEhZLBZdvHgxR/Y/YsQIVatWLUf2/TDk9PEFAACPnhwN6qGhobJYLLJYLMqTJ4/8/f319ttv69q1aw+1DovFomXLlj20/c2ZM0eenp6pljdo0ED9+/d/aHXc6WEfhzslJSUpLCxMlStXVt68eZU/f341b95cmzdvzrGa0pLWeapXr55OnTolDw+PnCkKAAA8cnJ8RL1Zs2Y6deqUjh49qrCwMM2YMUPDhw/P6bJSuX79ek6X8EgzDEOdOnXSqFGj1K9fP8XExCgyMlK+vr5q0KDBQ/kCcePGjSy/1tHRUUWKFJHFYsnGigAAwOMsx4O6k5OTihQpIl9fX7Vt21ZNmjRReHi4JCk5OVnjxo2Tv7+/nJ2dVbVqVS1evNjm9b/99puaN28uV1dXFS5cWC+//LLOnj1rXd+gQQP17dtXb7/9try8vFSkSBGNGDHCut7Pz0+S1K5dO1ksFuvzlKkaM2fOlL+/v/LmzStJWr16tZ588kl5enqqQIECatWqlY4cOWLd3vHjx2WxWLR06VI1bNhQLi4uqlq1qrZs2SLp1hSJ7t2769KlS9a/Jtxez90sWbJEFStWlJOTk/z8/DRhwgSb9YmJiXrnnXfk6+srJycnlSlTRrNmzUpzW1evXlXz5s1Vv379DE3XSE5O1qhRo1S8eHE5OTmpWrVqWr16tU2bP//8U507d5aXl5fy5cunWrVqadu2bWlu78iRIypVqpT69OkjwzC0cOFCLV68WHPnzlWvXr3k7++vqlWr6vPPP9ezzz6rXr166cqVK5L+/7mZMWOGfH195eLiog4dOujSpUs2+5g5c6YCAwOVN29elS9fXtOmTbOuSzlPCxYsUHBwsPLmzatvv/1W586dU+fOnVWsWDG5uLiocuXKmjdvnvV1oaGh2rBhgyZPnmw9f8ePH09z6su9zpefn5/Gjh2rHj16yM3NTSVKlNDnn39+z3MBAAAeDzke1G/322+/6ddff5Wjo6Mkady4cZo7d66mT5+u33//XQMGDNBLL72kDRs2SJIuXryoRo0aqXr16tq5c6dWr16tM2fOqEOHDjbb/eqrr5QvXz5t27ZNH330kUaNGmX9MrBjxw5J0uzZs3Xq1Cnrc0k6fPiwlixZoqVLlyo6OlqSdOXKFQ0cOFA7d+5URESE7Ozs1K5dOyUnJ9vsc9iwYRo8eLCio6MVEBCgzp076+bNm6pXr54mTZokd3d3nTp1SqdOndLgwYPveWyioqLUoUMHderUSfv27dOIESP03nvvac6cOdY2Xbt21bx58/TJJ58oJiZGM2bMkKura6ptXbx4UU2bNlVycrLCw8PTnIZzp8mTJ2vChAkaP3689u7dq5CQED377LM6dOiQJCkhIUHBwcH666+/tHz5cu3Zs0dvv/12quMiSXv37tWTTz6pF198UZ9++qksFou+++47BQQEqHXr1qnaDxo0SOfOnbOeM+nWuVm4cKF+/PFHrV69Wrt379abb75pXf/tt9/q/fff15gxYxQTE6OxY8fqvffe01dffWWz7SFDhlhH8ENCQnTt2jXVrFlTK1eu1G+//aZXX31VL7/8srZv3249DkFBQXrllVes58/X1zdVzRk5X5I0YcIE1apVy1r/G2+8oQMHDqR7HhITExUfH2/zAAAAjyaHnC5gxYoVcnV11c2bN5WYmCg7Ozt9+umnSkxM1NixY7V27VoFBQVJkkqVKqVNmzZpxowZCg4O1qeffqrq1atr7Nix1u19+eWX8vX11cGDBxUQECBJqlKlinU6TdmyZfXpp58qIiJCTZs2lbe3tyTJ09NTRYoUsant+vXrmjt3rrWNJD3//PM2bb788kt5e3tr//79qlSpknX54MGD1bJlS0nSyJEjVbFiRR0+fFjly5eXh4eHLBZLqv3dzcSJE9W4cWO99957kqSAgADt379fH3/8sUJDQ3Xw4EEtXLhQ4eHhatKkifV43en06dPq2LGjypYtq++++876pehexo8fr3feeUedOnWSJH344Ydav369Jk2apKlTp+q7777TP//8ox07dsjLy0uSVKZMmVTb+fXXX9WqVSsNGzZMgwYNsi4/ePCgAgMD09x3yvKDBw9al127dk1z585VsWLFJElTpkxRy5YtNWHCBBUpUkTDhw/XhAkT9Nxzz0mS/P39tX//fs2YMUPdunWzbqd///7WNilu/+L0n//8R2vWrNHChQtVp04deXh4yNHRUS4uLnc9f/c6XylatGhh/YLxzjvvKCwsTOvXr1e5cuXS3O64ceM0cuTIdPcLAAAeHTk+ot6wYUNFR0dr27Zt6tatm7p3767nn39ehw8f1tWrV9W0aVO5urpaH3PnzrVONdmzZ4/Wr19vs758+fKSZDMdpUqVKjb7LFq0qOLi4u5ZW8mSJW1CuiQdOnRInTt3VqlSpeTu7m6dKhMbG2vT7vZ9Fi1aVJIytM/0xMTEqH79+jbL6tevr0OHDikpKUnR0dGyt7dXcHDwXbfTtGlTlSlTRgsWLMhwSI+Pj9fff/+d5v5jYmIkSdHR0apevbo1pKclNjZWTZs21fvvv28T0lMYhpGheiSpRIkS1pAuSUFBQUpOTtaBAwd05coVHTlyRD179rR5b/zvf/+zeV9IUq1atWyeJyUlafTo0apcubK8vLzk6uqqNWvWpDq/93Kv85Xi9vdJype3u71Phg4dqkuXLlkfJ0+ezFRdAAAg98jxEfV8+fJZR16//PJLVa1aVbNmzbKOTq9cudImkEm35rVLt6ZbtG7dWh9++GGq7aaEY0nKkyePzTqLxZLmlIy0artT69atVbJkSX3xxRfy8fFRcnKyKlWqlOpi09v3mXKBYUb2mVXOzs4ZateyZUstWbJE+/fvV+XKlR/q/r29veXj46N58+apR48ecnd3t64LCAiwhv47pSxP+QvJvSQkJEiSvvjiC9WtW9dmnb29vc3zO8/xxx9/rMmTJ2vSpEmqXLmy8uXLp/79+z+wi4kz+950cnKyvv8BAMCjLcdH1G9nZ2end999V//9739VoUIFOTk5KTY2VmXKlLF5pMwJrlGjhn7//Xf5+fmlapNWyE5Pnjx5bEY503Pu3DkdOHBA//3vf9W4cWMFBgbqwoULme6no6NjhvZ3u8DAwFS3Kdy8ebMCAgJkb2+vypUrKzk52Tp/Pz0ffPCBunXrpsaNG2v//v0Z2re7u7t8fHzS3H+FChUk3RoZjo6O1vnz59PdjrOzs1asWKG8efMqJCREly9ftq7r1KmTDh06pB9//DHV6yZMmKACBQqoadOm1mWxsbH6+++/rc+3bt0qOzs7lStXToULF5aPj4+OHj2a6n3h7+9/175u3rxZbdq00UsvvaSqVauqVKlSNlNupIydv3udLwAAgHsxVVCXpPbt28ve3l4zZszQ4MGDNWDAAH311Vc6cuSIdu3apSlTplgvCOzdu7fOnz+vzp07a8eOHTpy5IjWrFmj7t27ZyoI+/n5KSIiQqdPn75r8M6fP78KFCigzz//XIcPH9a6des0cODATPfRz89PCQkJioiI0NmzZ3X16lXrun/++UfR0dE2jzNnzmjQoEGKiIjQ6NGjdfDgQX311Vf69NNPrfOp/fz81K1bN/Xo0UPLli3TsWPHFBkZqYULF6ba//jx49WlSxc1atRIf/zxh826Y8eOpdr/lStX9NZbb+nDDz/UggULdODAAQ0ZMkTR0dHq16+fJKlz584qUqSI2rZtq82bN+vo0aNasmSJ9W43KfLly6eVK1fKwcFBzZs3t45+d+rUSe3atVO3bt00a9YsHT9+XHv37tVrr72m5cuXa+bMmTZfvvLmzatu3bppz549+uWXX9S3b1916NDBOm985MiRGjdunD755BMdPHhQ+/bt0+zZszVx4sS7npuyZcsqPDxcv/76q2JiYvTaa6/pzJkzqc7ftm3bdPz4cZ09ezbNEfB7nS8AAIB7MV1Qd3BwUJ8+ffTRRx9p6NCheu+99zRu3DgFBgaqWbNmWrlypXVUNGWUNykpSc8884wqV66s/v37y9PTU3Z2Ge/ahAkTFB4eLl9fX1WvXj3ddnZ2dpo/f76ioqJUqVIlDRgwQB9//HGm+1ivXj29/vrr6tixo7y9vfXRRx9Z13333XeqXr26zeOLL75QjRo1tHDhQs2fP1+VKlXS+++/r1GjRtlcmPjZZ5/phRde0Jtvvqny5cvrlVdesd7S8E5hYWHq0KGDGjVqZDNiPHDgwFT73717t/r27auBAwdq0KBBqly5slavXq3ly5erbNmykm6NMv/8888qVKiQWrRoocqVK+uDDz5Ic/TY1dVVq1atkmEYatmypa5cuSKLxaKFCxfq3XffVVhYmMqVK6ennnpKJ06cUGRkpNq2bWuzjTJlyui5555TixYt9Mwzz6hKlSo2t1/s1auXZs6cqdmzZ6ty5coKDg7WnDlz7jmi/t///lc1atRQSEiIGjRoYP3ycbvBgwfL3t5eFSpUkLe3d5rz1zNyvgAAAO7GYmTmCj7ABEaMGKFly5ZZb5n5OIuPj5eHh4eq/me67J0ydp0CAAC4t6iPuz6wbaf8+33p0iWba/buZLoRdQAAAAAEdQAAAMCUCOrIdUaMGMG0FwAA8MgjqAMAAAAmRFAHAAAATIigDgAAAJgQQR0AAAAwIYI6AAAAYEIEdQAAAMCECOoAAACACRHUAQAAABMiqAMAAAAmRFAHAAAATIigDgAAAJgQQR0AAAAwIYI6AAAAYEIEdQAAAMCECOoAAACACRHUAQAAABMiqAMAAAAmRFAHAAAATIigDgAAAJgQQR0AAAAwIYI6AAAAYEIEdQAAAMCECOoAAACACRHUAQAAABMiqAMAAAAmRFAHAAAATIigDgAAAJiQQ04XAOD+bfxfZ7m7u+d0GQAAIBsxog4AAACYEEEdAAAAMCGCOgAAAGBCBHUAAADAhAjqAAAAgAkR1AEAAAATIqgDAAAAJkRQBwAAAEyIoA4AAACYEEEdAAAAMCGCOgAAAGBCBHUAAADAhAjqAAAAgAkR1AEAAAATIqgDAAAAJkRQBwAAAEyIoA4AAACYEEEdAAAAMCGHnC4AwP17+r/zZO/knNNlADkm6uOuOV0CAGQ7RtQBAAAAEyKoAwAAACZEUAcAAABMiKAOAAAAmBBBHQAAADAhgjoAAABgQgR1AAAAwIQI6gAAAIAJEdQBAAAAEyKoAwAAACZEUAcAAABMiKAOAAAAmBBBHQAAADAhgjoAAABgQgR1AAAAwIQI6gAAAIAJEdQBAAAAEyKoAwAAACZEUAcAAABMiKAOAAAAmBBBHQAAADAhgjoAAABgQgR1AAAAwIQI6gAAAIAJEdQBAAAAEyKoAwAAACZEUAcAAABMiKAOAAAAmBBBHQAAADAhgjoAAABgQgR1E/Dz89OkSZPuu41Z5ebaM2rOnDny9PTM6TIAAMAjhKD+gJ08eVI9evSQj4+PHB0dVbJkSfXr10/nzp3L1HZ27NihV199NdvqujM8JyQkKE+ePJo/f75Nu06dOslisej48eOpXv/ee+9laF931m6xWLRs2bJU7f79918NHz5cAQEBcnJyUsGCBdW+fXv9/vvvGe7Xw5DWF4+OHTvq4MGDOVMQAAB4JBHUH6CjR4+qVq1aOnTokObNm6fDhw9r+vTpioiIUFBQkM6fP5/hbXl7e8vFxeWB1erq6qpatWopMjLSZnlkZKR8fX1tlh87dkwnTpxQo0aNMrTtjNSemJioJk2a6Msvv9T//vc/HTx4UD/99JNu3rypunXrauvWrZntUqYYhqGbN29m+fXOzs4qVKhQNlYEAAAedwT1B6h3795ydHTUzz//rODgYJUoUULNmzfX2rVr9ddff2nYsGHWtpcvX1bnzp2VL18+FStWTFOnTrXZ1p2juBcvXlSvXr3k7e0td3d3NWrUSHv27LF5zY8//qjatWsrb968KliwoNq1aydJatCggU6cOKEBAwbIYrHIYrFIkho2bGgTyGNiYnTt2jW98cYbNssjIyPl5OSkoKAgHTlyRG3atFHhwoXl6uqq2rVra+3atenW7ufnJ0lq166dLBaL9fmkSZO0ZcsWrVixQh06dFDJkiVVp04dLVmyRIGBgerZs6cMw5AkhYaGqm3btho5cqS1/6+//rquX79u3WdycrLGjRsnf39/OTs7q2rVqlq8eLFNHywWi1atWqWaNWvKyclJmzZtumd/0jt2aU19+eyzz1S6dGk5OjqqXLly+vrrr23WWywWzZw5U+3atZOLi4vKli2r5cuXCwAAQCKoPzDnz5/XmjVr9Oabb8rZ2dlmXZEiRdSlSxctWLDAGj4//vhjVa1aVbt379aQIUPUr18/hYeHp7v99u3bKy4uTqtWrVJUVJRq1Kihxo0bW0fpV65cqXbt2qlFixbavXu3IiIiVKdOHUnS0qVLVbx4cY0aNUqnTp3SqVOnJN0K6gcOHLA+X79+vZ588kk1atTIJqivX79eQUFByps3rxISEtSiRQtFRERo9+7datasmVq3bq3Y2Ng0696xY4ckafbs2Tp16pT1+XfffaemTZuqatWqNu3t7Ow0YMAA7d+/3+aLSEREhGJiYhQZGal58+Zp6dKlGjlypHX9uHHjNHfuXE2fPl2///67BgwYoJdeekkbNmyw2f6QIUP0wQcfKCYmRlWqVLlnf9I7dnf6/vvv1a9fPw0aNEi//fabXnvtNXXv3l3r16+3aTdy5Eh16NBBe/fuVYsWLdSlS5dM/aUFAAA8uhxyuoBH1aFDh2QYhgIDA9NcHxgYqAsXLuiff/6RJNWvX19DhgyRJAUEBGjz5s0KCwtT06ZNU71206ZN2r59u+Li4uTk5CRJGj9+vJYtW6bFixfr1Vdf1ZgxY9SpUyeb8JoSgr28vGRvby83NzcVKVLEur5+/fpydHRUZGSkOnfurMjISAUHB6tmzZo6e/asjh07Jn9/f23YsEE9e/a0bvP2cD169Gh9//33Wr58ufr06ZOqdm9vb0mSp6enzb4PHjyohg0bpnusUtpUq1ZNkuTo6Kgvv/xSLi4uqlixokaNGqW33npLo0eP1o0bNzR27FitXbtWQUFBkqRSpUpp06ZNmjFjhoKDg63bHjVqlM0x9vLyumt/0jt2dxo/frxCQ0P15ptvSpIGDhyorVu3avz48Tb9DA0NVefOnSVJY8eO1SeffKLt27erWbNmaW43MTFRiYmJ1ufx8fHp1gAAAHI3RtQfsJQR83tJCZS3P4+JiUmz7Z49e5SQkKACBQrI1dXV+jh27JiOHDkiSYqOjlbjxo0zVauLi4tq165tHT3fsGGDGjRoIAcHB9WrV0+RkZE6evSoYmNjrWEzISFBgwcPVmBgoDw9PeXq6qqYmJh0R9TvJqPHSrr1BeH2ee9BQUFKSEjQyZMndfjwYV29elVNmza1OT5z5861Hp8UtWrVsnmeXf2JiYlR/fr1bZbVr18/1TmtUqWK9b/z5csnd3d3xcXFpbvdcePGycPDw/rw9fXNVF0AACD3YET9ASlTpowsFotiYmKsc8NvFxMTo/z581tHmDMjISFBRYsWTXXhpyTrPOk7p9tkVMOGDbVgwQL9/vvv+vfff1WjRg1JUnBwsNavX6/k5GS5uLiobt26kqTBgwcrPDxc48ePV5kyZeTs7KwXXnjBZr54RgQEBKT7xSRleUBAQIa2lZCQIOnW9J9ixYrZrEv5C0SKfPny2TzPrv5kVJ48eWyeWywWJScnp9t+6NChGjhwoPV5fHw8YR0AgEcUI+oPSIECBdS0aVNNmzZN//77r82606dP69tvv1XHjh2tFyPeeVeTrVu3pjttpkaNGjp9+rQcHBxUpkwZm0fBggUl3RqpjYiISLc+R0dHJSUlpVresGFDHTp0SN99952efPJJ2dvbS5KefvppbdiwQZGRkdYpMpK0efNmhYaGql27dqpcubKKFCmS6laOd8qTJ0+qfXfq1Elr165NdUFscnKywsLCVKFCBZspKXv27LE5rlu3bpWrq6t8fX1VoUIFOTk5KTY2NtXxuVeozUh/0jt2twsMDNTmzZtTbbtChQp3fd29ODk5yd3d3eYBAAAeTQT1B+jTTz9VYmKiQkJCtHHjRp08eVKrV69W06ZNVaxYMY0ZM8badvPmzfroo4908OBBTZ06VYsWLVK/fv3S3G6TJk0UFBSktm3b6ueff9bx48f166+/atiwYdq5c6ckafjw4Zo3b56GDx+umJgY7du3Tx9++KF1G35+ftq4caP++usvnT171rq8Xr16cnJy0pQpU2zmctepU0dxcXH64YcfbOZYly1bVkuXLlV0dLT27NmjF1988a4jwin7joiI0OnTp3XhwgVJ0oABA1SnTh21bt1aixYtUmxsrHbs2KHnn39eMTExmjVrlvVLjSRdv35dPXv21P79+/XTTz9p+PDh6tOnj+zs7OTm5qbBgwdrwIAB+uqrr3TkyBHt2rVLU6ZM0VdffXXX2jLSn/SO3e3eeustzZkzR5999pkOHTqkiRMnaunSpRo8ePBd9w8AAJCCoP4AlS1bVjt37lSpUqXUoUMHlS5dWq+++qoaNmyoLVu2yMvLy9p20KBB2rlzp6pXr67//e9/mjhxokJCQtLcrsVi0U8//aSnn35a3bt3V0BAgDp16qQTJ06ocOHCkm7dRnDRokVavny5qlWrpkaNGmn79u3WbYwaNUrHjx9X6dKlbabf5M2bV0888YQuX76sBg0aWJc7OTlZl98e1CdOnKj8+fOrXr16at26tUJCQqzTZdIzYcIEhYeHy9fXV9WrV7fud926derataveffddlSlTRs2aNZO9vb22bt2qJ554wmYbjRs3VtmyZfX000+rY8eOevbZZzVixAjr+tGjR+u9997TuHHjFBgYqGbNmmnlypXy9/e/a20Z6U96x+52bdu21eTJkzV+/HhVrFhRM2bM0OzZs22OKQAAwN1YjMxcwYccU7RoUY0ePVq9evXK6VJyXGhoqC5evJjmr5s+buLj4+Xh4aGq/5kue6esXZcAPAqiPu6a0yUAQIal/Pt96dKlu05j5WJSk7t69ao2b96sM2fOqGLFijldDgAAAB4Spr6Y3Oeff65OnTqpf//+qW7hCAAAgEcXU1+AXIypL8AtTH0BkJtkdOoLI+oAAACACRHUAQAAABMiqAMAAAAmRFAHAAAATIigDgAAAJjQfd1H/fr164qLi0v1E+slSpS4r6IAAACAx12WgvqhQ4fUo0cP/frrrzbLDcOQxWJRUlJSthQHAAAAPK6yFNRDQ0Pl4OCgFStWqGjRorJYLNldFwAAAPBYy1JQj46OVlRUlMqXL5/d9QAAAABQFi8mrVChgs6ePZvdtQAAAAD4P1kK6h9++KHefvttRUZG6ty5c4qPj7d5AAAAALg/WZr60qRJE0lS48aNbZZzMSkAAACQPbIU1NevX5/ddQAAAAC4TZaCenBwcHbXAQAAAOA2Wf7Bo4sXL2rWrFmKiYmRJFWsWFE9evSQh4dHthUHAAAAPK6ydDHpzp07Vbp0aYWFhen8+fM6f/68Jk6cqNKlS2vXrl3ZXSMAAADw2MnSiPqAAQP07LPP6osvvpCDw61N3Lx5U7169VL//v21cePGbC0SAAAAeNxkKajv3LnTJqRLkoODg95++23VqlUr24oDAAAAHldZmvri7u6u2NjYVMtPnjwpNze3+y4KAAAAeNxlKah37NhRPXv21IIFC3Ty5EmdPHlS8+fPV69evdS5c+fsrhEAAAB47GRp6sv48eNlsVjUtWtX3bx5U5KUJ08evfHGG/rggw+ytUAAAADgcZSloO7o6KjJkydr3LhxOnLkiCSpdOnScnFxydbiAAAAgMdVlu+jLkkuLi6qXLlydtUCAAAA4P9kOKg/99xzmjNnjtzd3fXcc8/dte3SpUvvuzAAAADgcZbhoO7h4SGLxSLp1l1fUv4bAAAAQPbLcFCfPXu29b/nzJnzIGoBAAAA8H+ydHvGRo0a6eLFi6mWx8fHq1GjRvdbEwAAAPDYy1JQj4yM1PXr11Mtv3btmn755Zf7LgoAAAB43GXqri979+61/vf+/ft1+vRp6/OkpCStXr1axYoVy77qAGTIxv91lru7e06XAQAAslGmgnq1atVksVhksVjSnOLi7OysKVOmZFtxAAAAwOMqU0H92LFjMgxDpUqV0vbt2+Xt7W1d5+joqEKFCsne3j7biwQAAAAeN5kK6iVLlpQkJScnP5BiAAAAANxyX79Mun//fsXGxqa6sPTZZ5+9r6IAAACAx12WgvrRo0fVrl077du3TxaLRYZhSJL1R5CSkpKyr0IAAADgMZSl2zP269dP/v7+iouLk4uLi37//Xdt3LhRtWrVUmRkZDaXCAAAADx+sjSivmXLFq1bt04FCxaUnZ2d7Ozs9OSTT2rcuHHq27evdu/end11AgAAAI+VLI2oJyUlyc3NTZJUsGBB/f3335JuXWx64MCB7KsOAAAAeExlaUS9UqVK2rNnj/z9/VW3bl199NFHcnR01Oeff65SpUpld40AAADAYydLQf2///2vrly5IkkaNWqUWrVqpaeeekoFChTQggULsrVAAAAA4HFkMVJu2XKfzp8/r/z581vv/ALgwYuPj5eHh4cuXbokd3f3nC4HAABkQEb//c70HPUbN27IwcFBv/32m81yLy8vQjoAAACQTTId1PPkyaMSJUpwr3QAAADgAcrSXV+GDRumd999V+fPn8/uegAAAAAoixeTfvrppzp8+LB8fHxUsmRJ5cuXz2b9rl27sqU4AAAA4HGVpaDetm3bbC4DAAAAwO2y7a4vAB4+7voCAEDu88Du+pLi4sWLmjlzpoYOHWqdq75r1y799ddfWd0kAAAAgP+Tpakve/fuVZMmTeTh4aHjx4/rlVdekZeXl5YuXarY2FjNnTs3u+sEAAAAHitZGlEfOHCgQkNDdejQIeXNm9e6vEWLFtq4cWO2FQcAAAA8rrIU1Hfs2KHXXnst1fJixYrp9OnT910UAAAA8LjLUlB3cnJSfHx8quUHDx6Ut7f3fRcFAAAAPO6yFNSfffZZjRo1Sjdu3JAkWSwWxcbG6p133tHzzz+frQUCAAAAj6MsBfUJEyYoISFBhQoV0r///qvg4GCVKVNGbm5uGjNmTHbXCAAAADx2snTXFw8PD4WHh2vTpk3au3evEhISVKNGDTVp0iS76wMAAAAeS/zgEZCL8YNHAADkPg/8B48iIiLUqlUrlS5dWqVLl1arVq20du3arG4OAAAAwG2yFNSnTZumZs2ayc3NTf369VO/fv3k7u6uFi1aaOrUqdldIwAAAPDYydLUl+LFi2vIkCHq06ePzfKpU6dq7Nix+uuvv7KtQADpY+oLAAC5zwOd+nLx4kU1a9Ys1fJnnnlGly5dysomAQAAANwmy/dR//7771Mt/+GHH9SqVav7LgoAAAB43GXp9owVKlTQmDFjFBkZqaCgIEnS1q1btXnzZg0aNEiffPKJtW3fvn2zp1IAAADgMZKlOer+/v4Z27jFoqNHj2a6KAAZwxx1AAByn4z++52lEfVjx45Jks6ePStJKliwYFY2AwAAACAdmZ6jfvHiRfXu3VsFCxZU4cKFVbhwYRUsWFB9+vTRxYsXH0CJAAAAwOMnUyPq58+fV1BQkP766y916dJFgYGBkqT9+/drzpw5ioiI0K+//qr8+fM/kGIBAACAx0WmgvqoUaPk6OioI0eOqHDhwqnWPfPMMxo1apTCwsKytUgAAADgcZOpqS/Lli3T+PHjU4V0SSpSpIg++uijNG/bCAAAACBzMhXUT506pYoVK6a7vlKlSjp9+vR9FwUAAAA87jIV1AsWLKjjx4+nu/7YsWPy8vK635oAAACAx16mgnpISIiGDRum69evp1qXmJio9957T82aNcu24gAAAIDHVaZ+8OjPP/9UrVq15OTkpN69e6t8+fIyDEMxMTGaNm2aEhMTtXPnTvn6+j7ImgH8H37wCACA3OeB/OBR8eLFtWXLFr355psaOnSoUjK+xWJR06ZN9emnnxLSAQAAgGyQ6V8m9ff316pVq3ThwgUdOnRIklSmTBnmpgMAAADZKNNBPUX+/PlVp06d7KwFAAAAwP/J1MWkAAAAAB4OgjoAAABgQgR1AAAAwIQI6gAAAIAJEdQfsMjISFksFl28eDGnS7Hy8/PTpEmTcrqMR06DBg3Uv3//nC4DAAA8Igjq98Fisdz1MWLEiJwuMUP27NmjZ599VoUKFVLevHnl5+enjh07Ki4uTlL2f9mYM2eOPD0901z3+++/q0OHDvL29paTk5MCAgL0/vvv6+rVq9my7+yQ3vFYunSpRo8enTNFAQCARw5B/T6cOnXK+pg0aZLc3d1tlg0ePDhL271+/Xo2V5q+f/75R40bN5aXl5fWrFmjmJgYzZ49Wz4+Prpy5Uq27+/GjRvprtu6davq1q2r69eva+XKlTp48KDGjBmjOXPmqGnTpg/8uNzv9r28vOTm5pZN1QAAgMcdQf0+FClSxPrw8PCQxWKxWebq6mptGxUVpVq1asnFxUX16tXTgQMHrOtGjBihatWqaebMmfL391fevHklSRcvXlSvXr3k7e0td3d3NWrUSHv27LG+7siRI2rTpo0KFy4sV1dX1a5dW2vXrrWpMS4uTq1bt5azs7P8/f317bff2qzfvHmzLl26pJkzZ6p69ery9/dXw4YNFRYWJn9/fx0/flwNGzaUdOve+RaLRaGhoZKk1atX68knn5Snp6cKFCigVq1a6ciRI9ZtHz9+XBaLRQsWLFBwcLDy5s2rb7/9Vt27d9elS5ds/vJgGIZ69uypwMBALV26VHXq1FHJkiXVvn17/fjjj9qyZYvCwsKs27ZYLPrss8/UvHlzOTs7q1SpUlq8eLFN306ePKkOHTrI09NTXl5eatOmjY4fP25dHxoaqrZt22rMmDHy8fFRuXLlJElff/21atWqJTc3NxUpUkQvvvii9a8Ldzsed059uXDhgrp27ar8+fPLxcVFzZs3t/5ImPT//7KwZs0aBQYGytXVVc2aNdOpU6fufKsBAIDHEEH9IRk2bJgmTJignTt3ysHBQT169LBZf/jwYS1ZskRLly5VdHS0JKl9+/aKi4vTqlWrFBUVpRo1aqhx48Y6f/68JCkhIUEtWrRQRESEdu/erWbNmql169aKjY21bjc0NFQnT57U+vXrtXjxYk2bNs0aOqVbXzZu3ryp77//XoZhpKrb19dXS5YskSQdOHBAp06d0uTJkyVJV65c0cCBA7Vz505FRETIzs5O7dq1U3Jyss02hgwZon79+ikmJkYNGzZM9deHwYMHKzo6Wvv379fAgQNlZ2f7tqxataqaNGmiefPm2Sx/77339Pzzz2vPnj3q0qWLOnXqpJiYGEm3Ru5DQkLk5uamX375RZs3b7YG4dtHziMiInTgwAGFh4drxYoV1teOHj1ae/bs0bJly3T8+HFrGL/b8bhTaGiodu7cqeXLl2vLli0yDEMtWrSw+avC1atXNX78eH399dfauHGjYmNj7/qXmMTERMXHx9s8AADAI8pAtpg9e7bh4eGRavn69esNScbatWuty1auXGlIMv7991/DMAxj+PDhRp48eYy4uDhrm19++cVwd3c3rl27ZrO90qVLGzNmzEi3jooVKxpTpkwxDMMwDhw4YEgytm/fbl0fExNjSDLCwsKsy959913DwcHB8PLyMpo1a2Z89NFHxunTp1P14cKFC3c9Bv/8848hydi3b59hGIZx7NgxQ5IxadIkm3ZpHav58+cbkozdu3enue2+ffsazs7O1ueSjNdff92mTd26dY033njDMAzD+Prrr41y5coZycnJ1vWJiYmGs7OzsWbNGsMwDKNbt25G4cKFjcTExLv2a8eOHYYk4/Lly4ZhpH88goODjX79+hmGYRgHDx40JBmbN2+2rj979qzh7OxsLFy40HocJBmHDx+2tpk6dapRuHDhdGsZPny4ISnV49KlS3ftAwAAMI9Lly5l6N9vRtQfkipVqlj/u2jRopJkM7JdsmRJeXt7W5/v2bNHCQkJKlCggFxdXa2PY8eOWaeXJCQkaPDgwQoMDJSnp6dcXV0VExNjHVGPiYmRg4ODatasad1u+fLlU13IOWbMGJ0+fVrTp09XxYoVNX36dJUvX1779u27a58OHTqkzp07q1SpUnJ3d5efn58k2YzoS1KtWrUyeJSU5qh+eoKCglI9TxlR37Nnjw4fPiw3NzfrsfPy8tK1a9dspudUrlxZjo6ONtuJiopS69atVaJECbm5uSk4ODjNft1NyrGvW7eudVmBAgVUrlw5a42S5OLiotKlS1ufFy1a1OZ9caehQ4fq0qVL1sfJkyczXBMAAMhdHHK6gMdFnjx5rP9tsVgkyWaKSL58+WzaJyQkqGjRooqMjEy1rZSgPXjwYIWHh2v8+PEqU6aMnJ2d9cILL2TposgCBQqoffv2at++vcaOHavq1atr/Pjx+uqrr9J9TevWrVWyZEl98cUX8vHxUXJysipVqpRq/3f2LS0BAQGSbgXc6tWrp1ofExNjbZMRCQkJqlmzZqo5+ZJsvhDdWduVK1cUEhKikJAQffvtt/L29lZsbKxCQkIeyMWst78vpFvvjbt9WXFycpKTk1O21wEAAMyHoG5SNWrU0OnTp+Xg4GAdqb7T5s2bFRoaqnbt2km6FU5vv1iyfPnyunnzpqKiolS7dm1Jt+ZV3+s2i46OjipdurT1ri8pI85JSUnWNufOndOBAwf0xRdf6KmnnpIkbdq0KUN9c3R0tNmWJFWrVk3ly5dXWFiYOnXqZDNPfc+ePVq7dq3GjRtn85qtW7eqa9euNs9TQn6NGjW0YMECFSpUSO7u7hmqS5L++OMPnTt3Th988IF8fX0lSTt37kxVv6RUfbhdYGCgbt68qW3btqlevXqS/v8xq1ChQobrAQAAjy+mvphUkyZNFBQUpLZt2+rnn3/W8ePH9euvv2rYsGHW4Fi2bFnrxad79uzRiy++aDNKX65cOTVr1kyvvfaatm3bpqioKPXq1UvOzs7WNitWrNBLL72kFStW6ODBgzpw4IDGjx+vn376SW3atJF0a1qOxWLRihUr9M8//yghIUH58+dXgQIF9Pnnn+vw4cNat26dBg4cmKG++fn5KSEhQRERETp79qyuXr0qi8WiWbNmaf/+/Xr++ee1fft2xcbGatGiRWrdurWCgoJS/ZjQokWL9OWXX+rgwYMaPny4tm/frj59+kiSunTpooIFC6pNmzb65ZdfdOzYMUVGRqpv3776888/062tRIkScnR01JQpU3T06FEtX7481b3R0zoedypbtqzatGmjV155RZs2bdKePXv00ksvqVixYtbjCgAAcDcEdZOyWCz66aef9PTTT6t79+4KCAhQp06ddOLECRUuXFiSNHHiROXPn1/16tVT69atFRISoho1athsJ+We6MHBwXruuef06quvqlChQtb1FSpUkIuLiwYNGqRq1arpiSee0MKFCzVz5ky9/PLLkqRixYpp5MiRGjJkiAoXLqw+ffrIzs5O8+fPV1RUlCpVqqQBAwbo448/zlDf6tWrp9dff10dO3aUt7e3PvroI+vyrVu3yt7eXs2bN1eZMmU0dOhQdevWTeHh4ammfIwcOVLz589XlSpVNHfuXM2bN886Wu3i4qKNGzeqRIkSeu655xQYGKiePXvq2rVrdx1h9/b21pw5c7Ro0SJVqFBBH3zwgcaPH2/TJq3jkZbZs2erZs2aatWqlYKCgmQYhn766adU010AAADSYjEy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DgBANjt9+rT+85//qFSpUnJycpKvr69at26tiIiIh1pHVgMG8Li7cuWKqlatqqlTp2Z5G/369dPMmTM1fvx4/fHHH1q+fLnq1KmTqW04ZHnvAAAglePHj6t+/fry9PTUxx9/rMqVK+vGjRtas2aNevfurT/++COnSwRwD82bN1fz5s3TXZ+YmKhhw4Zp3rx5unjxoipVqqQPP/xQDRo0kCTFxMTos88+02+//aZy5cpJkvz9/TNdByPqAABkozfffFMWi0Xbt2/X888/r4CAAFWsWFEDBw7U1q1bJUmxsbFq06aNXF1d5e7urg4dOujMmTPWbYSGhqpt27Y22+3fv781BEhSgwYN1LdvX7399tvy8vJSkSJFNGLECOt6Pz8/SVK7du1ksViszwHcvz59+mjLli2aP3++9u7dq/bt26tZs2Y6dOiQJOnHH39UqVKltGLFCvn7+8vPz0+9evXS+fPnM7UfgjoAANnk/PnzWr16tXr37q18+fKlWu/p6ank5GS1adNG58+f14YNGxQeHq6jR4+qY8eOmd7fV199pXz58mnbtm366KOPNGrUKIWHh0uSduzYIUmaPXu2Tp06ZX0O4P7ExsZq9uzZWrRokZ566imVLl1agwcP1pNPPqnZs2dLko4ePaoTJ05o0aJFmjt3rubMmaOoqCi98MILmdoXU18AAMgmhw8flmEYKl++fLptIiIitG/fPh07dky+vr6SpLlz56pixYrasWOHateuneH9ValSRcOHD5cklS1bVp9++qkiIiLUtGlTeXt7S7r15aBIkSL30SsAt9u3b5+SkpIUEBBgszwxMVEFChSQJCUnJysxMVFz5861tps1a5Zq1qypAwcOWKfD3AtBHQCAbGIYxj3bxMTEyNfX1xrSJalChQry9PRUTExMpoP67YoWLaq4uLiMFwwg0xISEmRvb6+oqCjZ29vbrHN1dZV067Po4OBgE+YDAwMl3RqRJ6gDAPCQlS1bVhaL5b4vGLWzs0sV+m/cuJGqXZ48eWyeWywWJScn39e+Adxd9erVlZSUpLi4OD311FNptqlfv75u3rypI0eOqHTp0pKkgwcPSpJKliyZ4X0xRx0AgGzi5eWlkJAQTZ06VVeuXEm1/uLFiwoMDNTJkyd18uRJ6/L9+/fr4sWLqlChgiTJ29tbp06dsnltdHR0puvJkyePkpKSMv064HGXkJCg6Oho6+fu2LFjio6OVmxsrAICAtSlSxd17dpVS5cu1bFjx7R9+3aNGzdOK1eulCQ1adJENWrUUI8ePbR7925FRUXptddeU9OmTVNNmbkbgjoAANlo6tSpSkpKUp06dbRkyRIdOnRIMTEx+uSTTxQUFKQmTZqocuXK6tKli3bt2qXt27era9euCg4OVq1atSRJjRo10s6dOzV37lwdOnRIw4cP12+//ZbpWvz8/BQREaHTp0/rwoUL2d1V4JG1c+dOVa9eXdWrV5ckDRw4UNWrV9f7778v6dZF2l27dtWgQYNUrlw5tW3bVjt27FCJEiUk3fqr2I8//qiCBQvq6aefVsuWLRUYGKj58+dnqg6LkZEJdQAAIMNOnTqlMWPGaMWKFTp16pS8vb1Vs2ZNDRgwQA0aNFBsbKz+85//KCIiQnZ2dmrWrJmmTJmiwoULW7cxfPhwzZgxQ9euXVOPHj1048YN7du3T5GRkZJu3Z6xWrVqmjRpkvU1bdu2laenp+bMmSPp1i3iBg4cqOPHj6tYsWI6fvz4wzsIAO4bQR0AAAAwIaa+AAAAACZEUAcAAABMiKAOAAAAmBBBHQAAADAhgjoAAABgQgR1AAAAwIQI6gAAAIAJEdQBAAAAEyKoAwAAACZEUAcAAABMiKAOAAAAmBBBHQAAADCh/wfUjhrYTKCcdwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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bdq0SdHR0XJyctLTTz+t5ORkh32+8cYbGjhwoGJjY1W6dGm1b99e169fV506dTRx4kR5e3vr+PHjOn78uAYOHHjHsdm8ebPatGmjdu3a6ffff9fIkSP15ptvatasWfY2L730kr7++mtNmjRJcXFxmj59ury8vFL1FR8fr8aNGys5OVkrVqxIcxrOrT788EONHz9e77//vrZv367IyEi1atVKe/bskSQlJiYqIiJCR48e1X/+8x9t27ZNr7/+eqpxkaTt27erXr16+te//qUpU6bIZrPpq6++UunSpdWyZctU7QcMGKCzZ8/aj5l049gsWLBA//u//6tly5Zp69at6tmzp339l19+qeHDh+vdd99VXFycRo0apTfffFOzZ8926Pvf//63/Qx+ZGSkLl++rGrVqumHH37Qjh079PLLL+vFF1/Ub7/9Zh+H2rVrq1u3bvbjFxQUlKrmjBwvSRo/fryqV69ur79Hjx7atWvXHY8HAAB48OXJ6QK+//57eXl56fr167py5YqcnJw0ZcoUXblyRaNGjdLKlStVu3ZtSVJoaKh++eUXTZ8+XREREZoyZYqqVKmiUaNG2fv7/PPPFRQUpN27d6t06dKSpEqVKtmn05QqVUpTpkxRdHS0GjduLD8/P0mSr6+vAgICHGq7evWq5syZY28jSc8++6xDm88//1x+fn7auXOnKlasaF8+cOBANW/eXJL01ltvqUKFCtq7d6/Kli0rHx8f2Wy2VPu7nQ8++EANGzbUm2++KUkqXbq0du7cqXHjxqljx47avXu3FixYoBUrVqhRo0b28brViRMn1LZtW5UqVUpfffWV/U3Rnbz//vsaPHiw2rVrJ0l67733tHr1ak2cOFFTp07VV199pdOnT2vjxo0qUKCAJCksLCxVP+vWrVOLFi30xhtvaMCAAfblu3fvVrly5dLcd8ry3bt325ddvnxZc+bMUdGiRSVJkydPVvPmzTV+/HgFBARoxIgRGj9+vJ555hlJUkhIiHbu3Knp06erQ4cO9n769etnb5Pi5jdOr776qpYvX64FCxaoZs2a8vHxkaurqzw9PW97/O50vFI0a9bM/gZj8ODBmjBhglavXq0yZcqk2e+VK1d05coV+/OEhIR0awAAALlbjp9Rf+KJJxQbG6sNGzaoQ4cO6tSpk5599lnt3btXly5dUuPGjeXl5WV/zJkz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EdQBAAAACyKoAwAAABZEUAcAAAAsiKAOAAAAWBBBHQAAALAggjoAAABgQQR1AAAAwIII6gAAAIAFEdQBAAAACyKoAwAAABZEUAcAAAAsiKAOAAAAWBBBHQAAALAggjoAAABgQQR1AAAAwIII6gAAAIAFEdQBAAAACyKoAwAAABZEUAcAAAAsiKAOAAAAWBBBHcgGBw8elM1mU2xsbE6XAgAAHhAE9VykY8eOstlseuWVV1Kt69Wrl2w2mzp27Hj/C8tGs2fPVo0aNeTp6al8+fIpIiJC33//fU6X5aBjx4566qmnHJYFBQXp+PHjqlixYs4UBQAAHjgE9VwmKChI8+bN0z///GNfdvnyZX311VcqXrx4DlaWNmOMrl+/nqG2AwcOVPfu3dW2bVtt375dv/32m+rVq6fWrVtrypQp97hS6dq1a1ne1tnZWQEBAcqTJ082VgQAAB5mBPVcpmrVqgoKCtKiRYvsyxYtWqTixYurSpUq9mXJyckaPXq0QkJC5OHhocqVK2vhwoX29TExMbLZbFq+fLmqVKkiDw8PNWjQQKdOndLSpUtVrlw5eXt761//+pcuXbpk3+7KlSvq06ePChcuLHd3d9WrV08bN25M1e/SpUtVrVo1ubm5ae7cuXJyctKmTZscXsvEiRMVHBys5ORk/frrrxo/frzGjRungQMHKiwsTOXKldO7776rfv36qX///jpy5IgkadasWfL19dXixYtVqlQpubu7KzIy0r4+xZIlS1S1alW5u7srNDRUb731lsObBpvNpo8++kitWrVS3rx59e677yopKUldunSxj1uZMmX04Ycf2rcZOXKkZs+erSVLlshms8lmsykmJibNqS8///yzatasKTc3NxUpUkT//ve/HfZfv3599enTR6+//roKFCiggIAAjRw5MqPfCgAA4EFnkGt06NDBtG7d2nzwwQemYcOG9uUNGzY0EyZMMK1btzYdOnQwxhjzzjvvmLJly5ply5aZffv2mZkzZxo3NzcTExNjjDFm9erVRpJ59NFHzS+//GK2bNliwsLCTEREhHnyySfNli1bzJo1a0zBggXNmDFj7Pvq06ePCQwMND/++KP5448/TIcOHUz+/PnN2bNnHfqtVKmS+emnn8zevXvN2bNnTePGjU3Pnj0dXk+lSpXM8OHD7f16eXmZK1eupHrdR48eNZLMhAkTjDHGzJw507i4uJjq1aubdevWmU2bNpmaNWuaOnXq2LdZs2aN8fb2NrNmzTL79u0zP/30kylRooQZOXKkvY0kU7hwYfP555+bffv2mUOHDpmrV6+a4cOHm40bN5r9+/ebuXPnGk9PTzN//nxjjDEXLlwwbdq0MU2aNDHHjx83x48fN1euXDEHDhwwkszWrVuNMcb89ddfxtPT0/Ts2dPExcWZ7777zhQqVMiMGDHCvv+IiAjj7e1tRo4caXbv3m1mz55tbDab+emnn9L9Hrh8+bI5f/68/XHkyBEjyZw/fz7dbQAAgLWcP38+Q3+/Ceq5SEpQP3XqlHFzczMHDx40Bw8eNO7u7ub06dP2oH758mXj6elp1q1b57B9ly5dTPv27Y0x/z9Qr1y50r5+9OjRRpLZt2+ffVn37t1NZGSkMcaYxMRE4+LiYr788kv7+qtXr5rAwEAzduxYh34XL17ssO/58+eb/Pnzm8uXLxtjjNm8ebOx2WzmwIEDxhhjmjRpYipXrpzua/f29jY9evQwxtwI6pLMr7/+al8fFxdnJJkNGzYYY268eRk1apRDH1988YUpUqSI/bkk069fv3T3maJXr17m2WeftT9POQ43uzWoDx061JQpU8YkJyfb20ydOtV4eXmZpKQkY8yNoF6vXj2HfmrUqGEGDx6cbi0jRowwklI9COoAAOQeGQ3qTH3Jhfz8/NS8eXPNmjVLM2fOVPPmzVWoUCH7+r179+rSpUtq3LixvLy87I85c+Zo3759Dn1VqlTJ/rW/v788PT0VGhrqsOzUqVOSpH379unatWuqW7eufb2Li4tq1qypuLg4h36rV6/u8Pypp56Ss7OzvvvuO0k3pq888cQTKlGihL2NMSbDY5AnTx7VqFHD/rxs2bLy9fW117Ft2zZFRUU5vP5u3brp+PHjDlN5bq1TkqZOnapq1arJz89PXl5e+uSTT3T48OEM1yZJcXFxql27tmw2m31Z3bp1lZiYqL/++su+7Obxl6QiRYrYxzstQ4YM0fnz5+2PW6f7AACABwdXvuVSnTt3Vu/evSXdCJY3S0xMlCT98MMPKlq0qMM6Nzc3h+cuLi72r202m8PzlGXJycmZri9v3rwOz11dXfXSSy9p5syZeuaZZ/TVV185zP0uXbq0fvnlF129elWurq4O2x47dkwJCQkqXbp0hvefmJiot956S88880yqde7u7unWOW/ePA0cOFDjx49X7dq1lS9fPo0bN04bNmzI8L4zI7Pj7ebmluoYAgCABxNn1HOpJk2a6OrVq7p27ZoiIyMd1pUvX15ubm46fPiwwsLCHB5BQUFZ3mfJkiXl6uqqtWvX2pddu3ZNGzduVPny5e+4fdeuXbVy5UpNmzZN169fdwjR7dq1U2JioqZPn55qu/fff18uLi569tln7cuuX7/ucHHqrl27FB8fr3Llykm6cdHtrl27Ur3+sLAwOTml/22/du1a1alTRz179lSVKlUUFhaW6r8Qrq6uSkpKuu1rLVeunNavX+/wX4K1a9cqX758Klas2G23BQAAkDijnms5Ozvbp3k4Ozs7rMuXL58GDhyo1157TcnJyapXr57Onz+vtWvXytvbWx06dMjSPvPmzasePXpo0KBBKlCggIoXL66xY8fq0qVL6tKlyx23L1eunB599FENHjxYnTt3loeHh31d7dq11bdvXw0aNEhXr17VU089pWvXrmnu3Ln68MMPNXHiRIc3GS4uLnr11Vc1adIk5cmTR71799ajjz6qmjVrSpKGDx+uFi1aqHjx4nruuefk5OSkbdu2aceOHXrnnXfSrbFUqVKaM2eOli9frpCQEH3xxRfauHGjQkJC7G1KlCih5cuXa9euXSpYsKB8fHxS9dOzZ09NnDhRr776qnr37q1du3ZpxIgR6t+//23fKAAAAKQgqOdi3t7e6a57++235efnp9GjR2v//v3y9fVV1apVNXTo0Lva55gxY5ScnKwXX3xRFy5cUPXq1bV8+XLlz58/Q9t36dJF69atU+fOnVOtmzhxoipVqqRp06Zp2LBhcnZ2VtWqVbV48WK1bNnSoa2np6cGDx6sf/3rXzp69Kgee+wxzZgxw74+MjJS33//vaKiovTee+/JxcVFZcuWVdeuXW9bX/fu3bV161a1bdtWNptN7du3V8+ePbV06VJ7m27duikmJkbVq1dXYmKiVq9e7TDXXpKKFi2qH3/8UYMGDVLlypVVoEABdenSRcOGDcvQOAEAANhMZq7gA+7S22+/rW+++Ubbt2/Pch+zZs1Sv379FB8fn32F5VIJCQny8fHR+fPnb/vGDQAAWEdG/37zP3jcF4mJidqxY4emTJmiV199NafLAQAAsDyCOu6L3r17q1q1aqpfv36a014AAADgiKkv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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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P/3kfN/uHrMHHnhAr7zyim6++WYtXrxYjz32mBo3bqydO3c6+2zevFndunXTokWLyv28f+3nn3/W8OHD1bdvX82bN09t27bVgw8+qL/85S/n3W79+vWKjIzU4cOHNXPmTMXGxuqrr77SwIEDL7gweunSpWrWrJliY2P10ksvqW/fvpoxY4amTp3q7BMVFaX8/HytWbPGZduTJ0/qn//8p2655RbnTFNF9geLcncSA8pzoRkhY4zx9fU1l19+ufP5uTNCCxYsMJLO+/98v/766zL/n6wxv/y/YUlmyZIlZb5W1oxQmzZtTF5enrP93XffNZLMSy+95GyryIzQhWo7d3Zh1apVRpL505/+5NLvlltuMTabzezdu9fZJsnY7XaXtv/7v/8zkszChQtLHevXEhISjCTzzjvvONsKCwtNeHi4adasmct7b9++vbnhhhvOuz9jjJk8ebKRZLZt21Zun9TUVCPJxMbGurwPSWbLli3OtoMHDxpvb2/z+9//3tk2btw4ExQUZLKzs132efvttxtfX19z8uRJY8z/xrBjx47OthKnT582RUVFLm379+83DofDxMfHO9vcPWa+vr4mJiam1LF/reR9xsXFnbefMf/7G5g/f76zraCgwPTp08f4+/ubwsJCY0zZM0IlfY4ePepSs4eHh4mOjna2lTUjdO7nb4wx999/v2nSpIk5ffq0McaY4uJi06ZNG3PzzTe79Cv5m9u4cWOl9gdrYkYI9VqzZs3Oe/VYixYtJEmrV69WcXFxlY7hcDg0duzYCvePjo5W8+bNnc9vueUWBQUFae3atVU6fkWtXbtWnp6emjhxokv7o48+KmOMPv74Y5f2iIgIderUyfm8V69e8vHx0b59+y54nMDAQN1xxx3OtkaNGmnixIk6ceKEPv/880rXXjKGv/7czlXyWl5enkt7eHi4+vbt63zerl073Xjjjfrkk09UVFQkY4z+8Y9/aOTIkTLGKDs72/mIjIxUbm6uUlNTXfY5evRo57qzEg6Hw7lOqKioSEePHlWzZs10ySWXlNq+ompizFq0aKH//Oc/zlmqsgwZMkTGGM2cObNCdXp5een+++93Prfb7br//vt1+PBhbd26tcxtDh06pLS0NI0ZM0atWrVyqfnaa6+94N/Drz//48ePKzs7W4MGDdLJkye1a9cuSb+sS7r11lu1du1anThxwtl/xYoVatOmja6++upK7Q/WRBBCvXbixInzfnlGRUVp4MCBGj9+vAICAnT77bfr3XffrVQoatOmTaUWRnfp0sXluc1mU+fOnWv8HikHDx5UcHBwqc+jW7duztd/rV27dqX20bJlS/38888XPE6XLl1KLR4u7zgVUVLz+UJteWHp3M9bkrp27aqTJ0/qyJEjOnLkiHJycvTqq6+qdevWLo+SgHv48GGX7Tt06FBqn8XFxVqwYIG6dOkih8MhPz8/tW7dWtu3b1dubm7l3vD/VxNjNm/ePH377bcKCQnRgAEDNHPmzAuG2wsJDg4udbVe165dJancf9cltV9yySWlXuvWrZuys7OVn59f7jG/++47/f73v5evr698fHzUunVr/fGPf5Qkl887KipKp06d0ocffijpl/8mrF27VrfeeqvLFWgV3R+sh6vGUG/997//VW5urjp37lxun8aNG2vjxo3asGGD1qxZo6SkJK1YsULXXHONPv300wpdqXLuzEB1KO8S4aKiolq7eqa84xg33FGj5It/+/bt6tOnT5l9tm/fLkkVvgqtREno/eMf/6jRo0eX2efXt2CQyh7z2bNn6+mnn9Y999yjWbNmqVWrVvLw8NDkyZOrPNtYWRUZs9tuu02DBg3SBx98oE8//VTPP/+8nnvuOb3//vu6/vrra6XOi5WTk6PBgwfLx8dH8fHx6tSpk7y9vZWamqopU6a4fN5XXnmlQkND9e677+rOO+/UP//5T506dUpRUVFV2h+shyCEemvZsmWSpMjIyPP28/Dw0O9+9zv97ne/04svvqjZs2dr+vTp2rBhgyIiIqr9viXff/+9y3NjjPbu3evyZduyZUvl5OSU2vbgwYPq2LGj83llamvfvr3Wr1+v48ePu8wwlEz7t2/fvsL7utBxtm/fruLiYpdZoYs5zvXXXy9PT08tW7as3AXTb7/9try8vDRs2DCX9nM/b0nas2ePmjRp4lyc3bx5cxUVFSkiIqLStZVYuXKlhg4dqjfeeMOlPScnR35+fs7ndWHMgoKC9NBDD+mhhx7S4cOHdcUVV+jZZ5+tchD66aeflJ+f7zIrtGfPHkkq907ZJbXv3r271Gu7du2Sn59fufeESklJ0dGjR/X++++7LDTfv39/mf1vu+02vfTSS8rLy9OKFSsUGhqqK6+8ssr7g7Vwagz10meffaZZs2apQ4cOuuuuu8rtd+zYsVJtJTMOBQUFkuT8j3FZwaQq3n77bZdTPCtXrtShQ4dcvoQ6deqkf//7386bMkrSRx99pIyMDJd9Vaa24cOHq6ioqNSVQAsWLJDNZqu22YDhw4crMzNTK1ascLadPXtWCxcuVLNmzTR48OBK7zMkJERjx47V+vXry7xP0JIlS/TZZ59p3Lhxatu2rctrmzZtclmjk5GRodWrV+u6665z3p/m5ptv1j/+8Y8ybwp45MiRCtXo6elZarbsvffe048//ujS5s4xKyoqKnWax9/fX8HBwc5/75Kc62Kys7MrtN+zZ8/qz3/+s/N5YWGh/vznP6t169Yu67N+LSgoSH369NFbb73l8ll8++23+vTTTzV8+PByj1cy8/Xrz7uwsFCLFy8us39UVJQKCgr01ltvKSkpSbfddttF7Q/WwowQ6ryPP/5Yu3bt0tmzZ5WVlaXPPvtM69atU/v27fXhhx+e9yZu8fHx2rhxo2644Qa1b99ehw8f1uLFi9W2bVvnQspOnTqpRYsWWrJkiZo3b66mTZsqLCyszHUiFdGqVStdffXVGjt2rLKyspSQkKDOnTvr3nvvdfYZP368Vq5cqWHDhum2227TDz/8oHfeecdlIWxlaxs5cqSGDh2q6dOn68CBA+rdu7c+/fRTrV69WpMnTy6176q677779Oc//1ljxozR1q1bFRoaqpUrV+rLL79UQkLCeddsnc+CBQu0a9cuPfTQQ0pKSnLO/HzyySdavXq1Bg8erPnz55farkePHoqMjNTEiRPlcDicX27PPPOMs8/cuXO1YcMGhYWF6d5771X37t117Ngxpaamav369WUG5nONGDFC8fHxGjt2rK666ip98803+utf/+oygye5d8yOHz+utm3b6pZbblHv3r3VrFkzrV+/Xl9//bXLZ7d582YNHTpUcXFxFVowHRwcrOeee04HDhxQ165dtWLFCqWlpenVV189700in3/+eV1//fUKDw/XuHHjdOrUKS1cuFC+vr7nPe5VV12lli1bavTo0Zo4caJsNpuWLVtW7mnbK664Qp07d9b06dNVUFDgclqsKvuDxbjlWjWgAkouqS152O12ExgYaK699lrz0ksvuVymXeLcy+eTk5PNjTfeaIKDg43dbjfBwcHmjjvuMHv27HHZbvXq1aZ79+7Gy8urzBsqlqW8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s0dBQUGEoItQlbE4efJkqbBTElANP91Zq6rt+7ty67jrvuXLlxuHw2GWLl1qduzYYe677z7TokULk5mZaYwx5u677zZTp0519v/yyy+Nl5eXeeGFF8zOnTtNXFwcl89Xk8qOxdy5c43dbjcrV640hw4dcj6OHz/urrfQoFR2PM7FVWPVp7JjkZ6ebpo3b24mTJhgdu/ebT766CPj7+9v/vSnP7nrLTQYlR2LuLg407x5c/P3v//d7Nu3z3z66aemU6dO5rbbbnPXW2gwjh8/brZt22a2bdtmJJkXX3zRbNu2zRw8eNAYY8zUqVPN3Xff7exfcvn8448/bnbu3GkSExO5fL7EwoULTbt27YzdbjcDBgww//73v52vDR482IwePdql/7vvvmu6du1q7Ha7ueyyy8yaNWtqueKGqzJj0b59eyOp1CMuLq72C2+gKvu38WsEoepV2bH46quvTFhYmHE4HKZjx47m2WefNWfPnq3lqhumyozFmTNnzMyZM02nTp2Mt7e3CQkJMQ899JD5+eefa7/wBmbDhg1lfgeUfP6jR482gwcPLrVNnz59jN1uNx07djRvvvlmpY9rM4a5PAAAYE0Nao0QAABAZRCEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEANQJmZmZevjhh9WxY0c5HA6FhIRo5MiRpX5LqKbZbDatWrWqVo8JwH0a1K/PA6ifDhw4oIEDB6pFixZ6/vnn1bNnT505c0affPKJYmJitGvXLneXCKCB4ic2ALjd8OHDtX37du3evVtNmzZ1eS0nJ0ctWrRQenq6Hn74YSUnJ8vDw0PDhg3TwoULFRAQIEkaM2aMcnJyXGZzJk+erLS0NKWkpEiShgwZol69esnb21uvv/667Ha7HnjgAc2cOVOSFBoaqoMHDzq3b9++vQ4cOFCTbx2Am3FqDIBbHTt2TElJSYqJiSkVgiSpRYsWKi4u1o033qhjx47p888/17p167Rv3z5FRUVV+nhvvfWWmjZtqv/85z+aN2+e4uPjtW7dOknS119/LUl68803dejQIedzAA0Xp8YAuNXevXtljNGll15abp/k5GR988032r9/v0JCQiRJb7/9ti677DJ9/fXX6t+/f4WP16tXL8XFxUmSunTpokWLFik5OVnXXnutWrduLemX8BUYGHgR7wpAfcGMEAC3qsjZ+Z07dyokJMQZgiSpe/fuatGihXbu3Fmp4/Xq1cvleVBQkA4fPlypfQBoOAhCANyqS5custlsF70g2sPDo1SoOnPmTKl+jRo1cnlus9lUXFx8UccGUH8RhAC4VatWrRQZGanExETl5+eXej0nJ0fdunVTRkaGMjIynO07duxQTk6OunfvLklq3bq1Dh065LJtWlpapetp1KiRioqKKr0dgPqJIATA7RITE1VUVKQBAwboH//4h77//nvt3LlTL7/8ssLDwxUREaGePXvqrrvuUmpqqjZv3qzo6GgNHjxY/fr1kyRdc8012rJli95++219//33iouL07ffflvpWkJDQ5WcnKzMzEz9/PPP1f1WAdQxBCEAbtexY0elpqZq6NChevTRR9WjRw9de+21Sk5O1iuvvCKbzabVq1erZcuW+u1vf6uIiAh17NhRK1ascO4jMjJSTz/9tJ544gn1799fx48fV3R0dKVrmT9/vtatW6eQkBBdfvnl1fk2AdRB3EcIAABYFjNCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsv4fNkOtS5Tq4fAAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHHCAYAAABTMjf2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6QElEQVR4nO3de1xUdf7H8feAzuAN1EWuEeKtvJs3IjOzKMzU2t3KLj8vpN3EUmm3NEvKSs0y2ZRyNctum5Zr2qZhippb2Voqa+YtQ4NMUDLAS4LC9/dHD2YbAWUQGOC8no/HPB473/mecz4zX2ze+z3fc8ZmjDECAACwIC9PFwAAAOApBCEAAGBZBCEAAGBZBCEAAGBZBCEAAGBZBCEAAGBZBCEAAGBZBCEAAGBZBCEAAGBZBCHUaE8++aRsNlu1HOvqq6/W1Vdf7Xy+YcMG2Ww2LV26tFqOP3LkSLVs2bJajlVRx48f1+jRoxUUFCSbzabx48d7uiSPqg1jhv9ZtGiRbDabDhw44OlSUIMQhFBtiv8jVPzw8fFRSEiIYmJi9NJLL+nYsWOVcpyffvpJTz75pFJTUytlf5WpJtdWHtOmTdOiRYv0wAMP6K233tKwYcPO2f/06dN66aWX1KtXLzVp0kSNGzdWr1699NJLL+n06dPVVPWFqe1jBuDc6nm6AFjP1KlTFRERodOnTyszM1MbNmzQ+PHj9eKLL+rDDz9Uly5dnH0ff/xxTZw40a39//TTT3rqqafUsmVLdevWrdzbffLJJ24dpyLOVduCBQtUVFRU5TVciHXr1unyyy9XQkLCefueOHFCN954oz799FMNGjRII0eOlJeXl5KTkzVu3DgtW7ZMK1euVKNGjaqh8oqr7WMG4NwIQqh2N9xwg3r27Ol8PmnSJK1bt06DBg3SkCFDtGvXLjVo0ECSVK9ePdWrV7V/pidPnlTDhg1lt9ur9DjnU79+fY8evzwOHz6sDh06lKtvfHy8Pv30U82ZM0djx451tj/wwANKSkrS2LFj9Ze//EWvvPJKVZVbqlOnTslut8vL68InxGvDmME9xhidOnXK+d8gWIABqsnrr79uJJmvvvqq1NenTZtmJJn58+c72xISEszZf6affPKJ6dOnj/Hz8zONGjUy7dq1M5MmTTLGGLN+/XojqcTj9ddfN8YY069fP9OxY0fz9ddfm759+5oGDRqYcePGOV/r16+f8zjF+1q8eLGZNGmSCQwMNA0bNjSDBw826enpLjWFh4ebESNGlHhPv9/n+WobMWKECQ8Pd9n++PHjJj4+3lx00UXGbrebdu3ameeff94UFRW59JNk4uLizAcffGA6duxo7Ha76dChg/n4449L/azPlpWVZe6++24TEBBgHA6H6dKli1m0aFGJz+Lsx/79+0vdX0ZGhvH29jbXXHNNmcfs37+/qVevnsnIyCjxPt5++23Trl0743A4TPfu3c2nn35aYvsff/zRxMbGmoCAAOf7XbhwoUuf4rrfffddM3nyZBMSEmJsNpv55ZdfzM8//2wefvhh06lTJ9OoUSPTpEkTM2DAAJOamnre912dY5aXl2fGjRtnwsPDjd1uNy1atDDR0dFmy5Ytzj4nTpwwu3btMkeOHCnz8/69L7/80txwww2madOmpmHDhqZz584mMTHR+fp///tfM2LECBMREWEcDocJDAw0sbGxJjs72+3a9u7da/70pz+ZwMBA43A4TGhoqBk6dKjJyclx9nnttddM//79TYsWLYzdbjft27c3L7/8com6w8PDzY033mj+/e9/m169ehmHw2EiIiLMG2+8UaLvjh07TP/+/Y2Pj48JDQ01Tz/9tFm4cGGJv9vifSYnJ5sePXoYh8NhZs+e7VZdqN2YEUKNMWzYMD322GP65JNPdM8995Ta59tvv9WgQYPUpUsXTZ06VQ6HQ/v27dPnn38uSWrfvr2mTp2qKVOm6N5771Xfvn0lSVdccYVzHz///LNuuOEG3X777fq///s/BQYGnrOuZ599VjabTY8++qgOHz6sxMRERUdHKzU11a3/11ie2n7PGKMhQ4Zo/fr1GjVqlLp166bVq1frr3/9qw4ePKjZs2e79P/ss8+0bNkyjRkzRk2aNNFLL72kP//5z0pPT9cf/vCHMuv69ddfdfXVV2vfvn0aO3asIiIi9P7772vkyJHKycnRuHHj1L59e7311luaMGGCLrroIj388MOSpBYtWpS6z48//liFhYUaPnx4mccdPny41q9fr+TkZI0ePdrZ/umnn2rJkiV66KGH5HA49PLLL2vAgAHavHmzOnXqJEnKysrS5ZdfLpvNprFjx6pFixb6+OOPNWrUKOXl5ZVYxP3000/LbrfrL3/5i/Lz82W327Vz504tX75ct956qyIiIpSVlaW///3v6tevn3bu3KmQkJAaMWb333+/li5dqrFjx6pDhw76+eef9dlnn2nXrl3q3r27JGnz5s3q37+/EhIS9OSTT5b5mUvSmjVrNGjQIAUHB2vcuHEKCgrSrl279NFHH2ncuHHOPmlpaYqNjVVQUJC+/fZbzZ8/X99++62+/PJL5wUM56utoKBAMTExys/P14MPPqigoCAdPHhQH330kXJycuTn5ydJeuWVV9SxY0cNGTJE9erV07/+9S+NGTNGRUVFiouLc6l/3759uuWWWzRq1CiNGDFCr732mkaOHKkePXqoY8eOkqTMzEz1799fZ86c0cSJE9WoUSPNnz+/zH+ve/bs0R133KH77rtP99xzjy655BK360It5ukkBus434yQMcb4+fmZyy67zPn87Bmh2bNnG0nn/H++X331lcv/a/+9fv36GUlm3rx5pb5W2oxQaGioycvLc7a/9957RpL529/+5mwrz4zQ+Wo7e3Zh+fLlRpJ55plnXPrdcsstxmazmX379jnbJBm73e7S9t///tdIMnPmzClxrN9LTEw0kszbb7/tbCsoKDBRUVGmcePGLu+9+P89n8/48eONJLNt27Yy+2zdutVIMvHx8S7vQ5L5+uuvnW0//PCD8fHxMX/84x+dbaNGjTLBwcElZihuv/124+fnZ06ePGmM+d8YtmrVytlW7NSpU6awsNClbf/+/cbhcJipU6c62zw9Zn5+fiYuLq7EsX+v+H0mJCScs9+ZM2dMRESECQ8PN7/88ovLa7+fsTr7szLGmHfffddIMhs3bix3bdu2bTOSzPvvv3/Ouko7XkxMjGnVqpVLW3h4eIkaDh8+bBwOh3n44YedbcV/f//5z39c+vn5+ZU6IyTJJCcnV7gu1G5cNYYapXHjxue8eqxp06aSpBUrVlR4karD4VBsbGy5+w8fPlxNmjRxPr/lllsUHBysVatWVej45bVq1Sp5e3vroYcecml/+OGHZYzRxx9/7NIeHR2t1q1bO5936dJFvr6+SktLO+9xgoKCdMcddzjb6tevr4ceekjHjx/Xp59+6nbtxWP4+8/tbMWv5eXlubRHRUWpR48ezucXX3yxbrrpJq1evVqFhYUyxuif//ynBg8eLGOMsrOznY+YmBjl5uZq69atLvscMWJEidkAh8PhXCdUWFion3/+WY0bN9Yll1xSYvvyqoox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qlevXpo7d64kqaioSGFhYXrwwQc1ceLE825fWFioZs2aae7cuRo+fPh5++fl5cnPz0+5ubny9fW94PoBAEDVq6rvb4/OCBUUFGjLli2Kjo52tnl5eSk6OlqbNm0q1z5Onjyp06dPq3nz5qW+np+fr7y8PJcHAACA5OEglJ2drcLCQgUGBrq0BwYGKjMzs1z7ePTRRxUSEuISpn5v+vTp8vPzcz7CwsIuuG4AAFA3eHyN0IWYMWOGFi9erA8++EA+Pj6l9pk0aZJyc3Odj4yMjGquEgAA1FT1PHlwf39/eXt7Kysry6U9KytLQUFB59z2hRde0IwZM7R27Vp16dKlzH4Oh0MOh6NS6gUAAHWLR2eE7Ha7evTooZSUFGdbUVGRUlJSFBUVVeZ2M2fO1NNPP63k5GT17NmzOkoFAAB1kEdnhCQpPj5eI0aMUM+ePdW7d28lJibqxIkTio2NlSQNHz5coaGhmj59uiTpueee05QpU/SPf/xDLVu2dK4laty4sRo3buyx9wEAAGofjwehoUOH6siRI5oyZYoyMzPVrVs3JScnOxdQp6eny8vrfxNXr7zyigoKCnTLLbe47CchIUFPPvlkdZYOAABqOY/fR6i6cR8hAABqnzp5HyEAAABPIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLqhFBKCkpSS1btpSPj48iIyO1efPmc/Z///33demll8rHx0edO3fWqlWrqqlSAABQl3g8CC1Z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rbmuqshYPPHEExo2bJhGjx4tSercubNOnDihe++9V5MnT3b5kXBUrbK+v319fcs9GyTVsRkhu92uHj16KCUlxdlWVFSklJQURUVFlbpNVFSUS39JWrNmTZn9UT4VGQtJmjlzpp5++mklJyerZ8+e1VGqJbg7Hpdeeqm++eYbpaamOh9DhgxR//79lZqaqrCwsOosv06pyL+NPn36aN++fc4wKkl79+5VcHAwIegCVGQsTp48WSLsFAdUw093VqtK+/52bx13zbd48WLjcDjMokWLzM6dO829995rmjZtajIzM40xxgwbNsxMnDjR2f/zzz839erVMy+88ILZtWuXSUhI4PL5SuLuWMyYMcPY7XazdOlSc+jQIefj2LFjnnoLdYq743E2rhqrPO6ORXp6umnSpIkZO3as2bNnj/noo49MQECAeeaZZzz1FuoMd8ciISHBNGnSxLz77rsmLS3NfPLJJ6Z169bmtttu89RbqDOOHTtmtm3bZrZt22YkmRdffNFs27bN/PDDD8YYYyZOnGiGDRvm7F98+fxf//pXs2vXLpOUlMTl88XmzJljLr74YmO3203v3r3Nl19+6XytX79+ZsSIES7933vvPdOuXTtjt9tNx44dzcqVK6u54rrLnbEIDw83kko8EhISqr/wOsrdfxu/RxCqXO6OxRdffGEiIyONw+EwrVq1Ms8++6w5c+ZMNVddN7kzFqdPnzZPPvmkad26tfHx8TFhYWFmzJgx5pdffqn+wuuY9evXl/odUPz5jxgxwvTr16/ENt26dTN2u920atXKvP76624f12YMc3kAAMCa6tQaIQAAAHcQhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhADUCJmZmXrwwQfVqlUrORwOhYWFafDgwSV+S6iq2Ww2LV++vFqPCcBz6tSvzwOonQ4cOKA+ffqoadOmev7559W5c2edPn1aq1evVlxcnHbv3u3pEgHUUfzEBgCPGzhwoLZv3649e/aoUaNGLq/l5OSoadOmSk9P14MPPqiUlBR5eXlpwIABmjNnjgIDAyVJI0eOVE5Ojstszvjx45WamqoNGzZIkq6++mp16dJFPj4+evXVV2W323X//ffrySeflCS1bNlSP/zwg3P78PBwHThwoCrfOgAP49QYAI86evSokpOTFRcXVyIESVLTpk1VVFSkm266SUePHtWnn36qNWvWKC0tTUOHDnX7eG+88YYaNWqk//znP5o5c6amTp2qNWvWSJK++uorSdLrr7+uQ4cOOZ8DqLs4NQbAo/bt2ydjjC699NIy+6SkpOibb77R/v37FRYWJkl688031bFjR3311Vfq1atXuY/XpUsXJSQkSJLatm2ruXPnKiUlRdddd51atGgh6bfwFRQUdAHvCkBtwYwQAI8qz9n5Xbt2KSwszBmCJKlDhw5q2rSpdu3a5dbxunTp4vI8ODhYhw8fdmsfAOoOghAAj2rbtq1sNtsFL4j28vIqEapOnz5dol/9+vVdnttsNhUVFV3QsQHUXgQhAB7VvHlzxcTEKCkpSSdOnCjxek5Ojtq3b6+MjAxlZGQ423fu3KmcnBx16NBBktSiRQsdOnTIZdvU1FS366lfv74KCwvd3g5A7UQQAuBxSUlJKiwsVO/evfXPf/5T3333nXbt2qWXXnpJUVFRio6OVufOnXXXXXdp69at2rx5s4YPH65+/fqpZ8+ekqRrrrlGX3/9td5880199913SkhI0I4dO9yupWXLlkpJSVFmZqZ++eWXyn6rAGoYghAAj2vVqpW2bt2q/v376+GHH1anTp103XXXKSUlRa+88opsNptWrFihZs2a6aqrrlJ0dLRatWqlJUuWOPcRExOjJ554Qo888oh69eqlY8eOafjw4W7XMmvWLK1Zs0ZhYWG67LLLKvNtAqiBuI8QAACwLGaEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZf0/TjHA+Q6TAy0AAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuoAAAHHCAYAAADpvX3TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABHnklEQVR4nO3dd3RU1f7+8WcS0kijBUIgpFBDlS7tBimGLpZLUSShqFdCCUVEFIEgIE2qIAhSVBQEBJVLMzRBpRqKRHqTKmAI5RIgOb8/+GZ+jAmQhIQ5gfdrrVnL2ad9zjnBPLOzzx6LYRiGAAAAAJiKg70LAAAAAJAaQR0AAAAwIYI6AAAAYEIEdQAAAMCECOoAAACACRHUAQAAABMiqAMAAAAmRFAHAAAATIigDgAAAJgQQR0ATGzIkCGyWCyP5Fj169dX/fr1re/Xr18vi8WiRYsWPZLjR0REKDAw8JEcK7OuXr2qrl27ytfXVxaLRVFRUfYuya5ywj3LTin/RtavX29te9KvCbIWQR0AHpE5c+bIYrFYX66urvLz81NYWJgmTZqkK1euZMlxTp8+rSFDhig2NjZL9peVzFxbeowYMUJz5szRm2++qc8//1yvvvrqfde/deuWJk2apOrVq8vT01MeHh6qXr26Jk2apFu3bj2iqh9OTr9nQE6Wy94FAMCTJjo6WkFBQbp165bOnj2r9evXKyoqSh999JG+++47VaxY0brue++9pwEDBmRo/6dPn9bQoUMVGBiop556Kt3brV69OkPHyYz71fbpp58qOTk522t4GGvXrtXTTz+twYMHP3Dda9euqXnz5tqwYYNatGihiIgIOTg4aOXKlerVq5eWLFmi5cuXy93d/RFUnnk5/Z49alwTZCWCOgA8Yk2bNlW1atWs79955x2tXbtWLVq0UKtWrRQXFyc3NzdJUq5cuZQrV/b+r/r69evKnTu3nJ2ds/U4D+Lk5GTX46fH+fPnVbZs2XSt26dPH23YsEGTJ09W9+7dre1vvvmmPv74Y3Xv3l39+vXTtGnTsqvcNN24cUPOzs5ycHj4P6rnhHv2qHFNkJUY+gIAJtCgQQMNGjRIx48f1xdffGFtT2uM+po1a1S3bl3lyZNHHh4eKl26tAYOHCjpzpjZ6tWrS5I6depkHWYzZ84cSXfGoZcvX147duzQv/71L+XOndu67T/HqKdISkrSwIED5evrK3d3d7Vq1UonT560WScwMFARERGptr17nw+qLa2xvdeuXVPfvn3l7+8vFxcXlS5dWmPHjpVhGDbrWSwWde/eXUuXLlX58uXl4uKicuXKaeXKlWlf8H84f/68unTpokKFCsnV1VWVKlXS3LlzrctTxiIfPXpUy5cvt9Z+7NixNPf3559/atasWWrQoIFNSE8RGRmpZ555RjNnztSff/6Z6jy+/PJLlS5dWq6urqpatao2btyYah+nTp1S586dVahQIev5fvbZZzbrpNT99ddf67333lORIkWUO3duJSQk6NKlS+rXr58qVKggDw8PeXl5qWnTptq1a5fN9va+Z1euXFFUVJQCAwPl4uKiggULqnHjxtq5c6d1nevXr+uPP/7QhQsX0rwf/7RlyxY1adJE3t7eyp07t0JDQ7V58+Y0r3GXLl3k5+cnFxcXBQUF6c0339TNmzfvue9/XpNjx47JYrFo7NixGj9+vAICAuTm5qbQ0FDt3bvXZtuzZ8+qU6dOKlq0qFxcXFS4cGE999xzqX7OVqxYoXr16snd3V2enp5q3ry5fv/993SdO3IWetQBwCReffVVDRw4UKtXr9Zrr72W5jq///67WrRooYoVKyo6OlouLi46dOiQNWSEhIQoOjpa77//vl5//XXVq1dPklS7dm3rPi5evKimTZuqXbt26tChgwoVKnTfuoYPHy6LxaK3335b58+f14QJE9SoUSPFxsZae/7TIz213c0wDLVq1Urr1q1Tly5d9NRTT2nVqlV66623dOrUKY0fP95m/U2bNmnJkiXq1q2bPD09NWnSJL344os6ceKE8ufPf8+6/ve//6l+/fo6dOiQunfvrqCgIH3zzTeKiIhQfHy8evXqpZCQEH3++efq3bu3ihYtqr59+0qSfHx80tznihUrlJSUpI4dO97zuB07dtS6deu0cuVKde3a1dq+YcMGLViwQD179pSLi4umTp2qJk2aaOvWrSpfvrwk6dy5c3r66aetYdfHx0crVqxQly5dlJCQkOoh12HDhsnZ2Vn9+vVTYmKinJ2dtW/fPi1dulT//ve/FRQUpHPnzmn69OkKDQ3Vvn375OfnZ4p79p///EeLFi1S9+7dVbZsWV28eFGbNm1SXFycqlSpIknaunWrnnnmGQ0ePFhDhgy55zWX7gxfatq0qapWrarBgwfL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2qzz559/qn379sqXL5/c3d1VrVo1bdmyJc39HT58WMHBwerevbsMw9DChQu1aNEizZs3T127dlVQUJAqVaqkGTNmqFWrVuratauuXbsm6f/fm+nTp8vf31+5c+dWmzZtdPnyZZtjzJw5UyEhIXJ1dVWZMmU0depU67KU+7RgwQKFhobK1dVVX375pS5evKj27durSJEiyp07typUqKCvvvrKul1ERIQ2bNigiRMnWu/fsWPH0hz68qD7FRgYqBEjRqhz587y9PRUsWLFNGPGjAfeCwAA8GSwe1C/2969e/Xzzz/L2dlZkjRy5EjNmzdPn3zyiX7//Xf17t1bHTp00IYNGyRJ8fHxatCggSpXrqzt27dr5cqVOnfunNq0aWOz37lz58rd3V1btmzR6NGjFR0dbf0wsG3bNknS7NmzdebMGet7STp06JAWL16sJUuWKDY2VpJ07do19enTR9u3b1dMTIwcHBz0/PPPKzk52eaY7777rvr166fY2FiVKlVK7du31+3bt1W7dm1NmDBBXl5eOnPmjM6cOaN+/fo98Nrs2LFDbdq0Ubt27bRnzx4NGTJEgwYN0pw5c6zrdOzYUV999ZUmTZqkuLg4TZ8+XR4eHqn2FR8fr8aNGys5OVlr1qxJcxjOP02cOFHjxo3T2LFjtXv3boWFhalVq1Y6ePCgJOnq1asKDQ3VqVOn9N1332nXrl3q379/qusiSbt371bdunX18ssva8qUKbJYLJo/f75KlSqlli1bplq/b9++unjxovWeSXfuzcKFC/X9999r5cqV+u2339StWzfr8i+//FLvv/++hg8frri4OI0YMUKDBg3S3LlzbfY9YMAAaw9+WFiYbty4oapVq2r58uXau3evXn/9db366qvaunWr9TrUqlVLr732mvX++fv7p6o5PfdLksaNG6dq1apZ63/zzTe1f//+B94PAADw+Mtl7wJ++OEHeXh46Pbt20pMTJSDg4OmTJmixMREjRgxQj/++KNq1aolSQoODtamTZs0ffp0hYaGasqUKapcubJGjBhh3d9nn30mf39/HThwQKVKlZIkVaxY0TqcpmTJkpoyZYpiYmLUuHFj+fj4SJLy5MkjX19fm9pu3rypefPmWdeRpBdffNFmnc8++0w+Pj7at2+fypcvb23v16+fmjdvLkkaOnSoypUrp0OHDqlMmTLy9vaWxWJJdbz7+eijj9SwYUMNGjRIklSqVCnt27dPY8aMUUREhA4cOKCFCxdqzZo1atSokfV6/dPZs2fVtm1blSxZUvPnz7d+KHqQsWPH6u2331a7du0kSaNGjdK6des0YcIEffzxx5o/f77++usvbdu2Tfny5ZMklShRItV+fv75Z7Vo0ULvvvuu+vbta20/cOCAQkJC0jx2SvuBAwesbTdu3NC8efNUpEgRSdLkyZPVvHlzjRs3Tr6+vho8eLDGjRunF154QZIUFBSkffv2afr06QoPD7fuJyoqyrpOirs/OPXo0UOrVq3SwoULVaNGDXl7e8vZ2Vm5c+e+7/170P1K0axZM+sHjLffflvjx4/XunXrVLp06TT3m5iYqMTEROv7hISEe9YAAAByNrv3qD/zzDOKjY3Vli1bFB4erk6dOunFF1/UoUOHdP36dTVu3FgeHh7W17x586xDTXbt2qV169bZLC9Tpowk2QxHqVixos0xCxcurPPnzz+wtoCAAJuQLkkHDx5U+/btFRwcLC8vL+tQmRMnTtisd/cxCxcuLEnpOua9xMXFqU6dOjZtderU0cGDB5WUlKTY2Fg5OjoqNDT0vvtp3LixSpQooQULFqQ7pCckJOj06dNpHj8uLk6SFBsbq8qVK1tDelpOnDihxo0b6/3337cJ6SkMw0hXPZJUrFgxa0iXpFq1aik5OVn79+/XtWvXdPjwYXXp0sXmZ+ODDz6w+bmQpGrVqtm8T0pK0rBhw1ShQgXly5dPHh4eWrVqVar7+yAPul8p7v45Sfnwdr+fk5EjR8rb29v6Sqs3HwAAPB7s3qPu7u5u7Xn97LPPVKlSJc2aNcvaO718+XKbQCbdGdcu3Rlu0bJlS40aNSrVflPCsSQ5OTnZLLNYLGkOyUirtn9q2bKlAgIC9Omnn8rPz0/JyckqX758qodN7z5mygOG6TlmZrm5uaVrvebNm2vx4sXat2+fKlSo8EiP7+PjIz8/P3311Vfq3LmzvLy8rMtKlSplDf3/lNKe8heSB7l69aok6dNPP1XNmjVtljk6Otq8/+c9HjNmjCZOnKgJEyaoQoUKcnd3V1RUVLY9TJzRn8133nlHffr0sb5PSEggrAMA8Jiye4/63RwcHDRw4EC99957Klu2rFxcXHTixAmVKFHC5pUSTKpUqaLff/9dgYGBqdZJK2Tfi5OTk00v571cvHhR+/fv13vvvaeGDRsqJCREf//9d4bP09nZOV3Hu1tISEiqaQo3b96sUqVKydHRURUqVFBycrJ1/P69fPjhhwoPD1fDhg21b9++dB3by8tLfn5+aR6/bNmyku70DMfGxurSpUv33I+bm5t++OEHubq6KiwsTFeuXLEua9eunQ4ePKjvv/8+1Xbjxo1T/vz51bhxY2vbiRMndPr0aev7X3/9VQ4ODipdurQKFSokPz8/HTlyJNXPRVBQ0H3PdfPmzXruuefUoUMHVapUScHBwTZDbqT03b8H3a/McnFxkZeXl80LAAA8nkwV1CXp3//+txwdHTV9+nT169dPvXv31ty5c3X48GHt3LlTkydPtj4QGBkZqUuXLql9+/batm2bDh8+rFWrVqlTp04ZCsKBgYGKiYnR2bNn7xu88+bNq/z582vGjBk6dOiQ1q5da9O7mZHjXb16VTExMbpw4YKuX79uXfbXX38pNjbW5nXu3Dn17dtXMTExGjZsmA4cOKC5c+dqypQp1vHUgYGBCg8PV+fOnbV06VIdPXpU69ev18KFC1Mdf+zYsXrllVfUoEED/fHHHzbLjh49mur4165d01tvvaVRo0ZpwYIF2r9/vwYMGKDY2Fj16tVLktS+fXv5+vqqdevW2rx5s44cOaLFixdbZ7tJ4e7uruXLlytXrlxq2rSptfe7Xbt2ev755xUeHq5Zs2bp2LFj2r17t9544w199913mjlzps2HL1dXV4WHh2vXrl366aef1LNnT7Vp08Y6bnzo0KEaOXKkJk2apAMHDmjPnj2aPXu2Pvroo/vem5IlS2rNmjX6+eefFRcXpzfeeEPnzp1Ldf+2bNmiY8eO6cKFC2n2gD/ofgEAADyI6YJ6rly51L17d40ePVrvvPOOBg0apJEjRyokJERNmjTR8uXLrb2iKb28SUlJevbZZ1WhQgVFRUUpT548cnBI/6mNGzdOa9askb+/vypXrnzP9RwcHPT1119rx44dKl++vHr37q0xY8Zk+Bxr166t//znP2rbtq18fHw0evRo67L58+ercuXKNq9PP/1UVapU0cKFC/X111+rfPnyev/99xUdHW3zYOK0adP00ksvqVu3bipTpoxee+0165SG/zR+/Hi1adNGDRo0sOkx7tOnT6rj//bbb+rZs6f69Omjvn37qkKFClq5cqW+++47lSxZ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liwpV1dXhYWFWZenWLZsmapUqSJXV1cFBwdr6NChNh8aLBaLpk2bplatWsnd3V3Dhw9XUlKSunTpYr1upUuX1sSJE63bDBkyRHPnztWyZctksVhksVi0fv36NIe+bNiwQTVq1JCLi4sKFy6sAQMG2By/fv366tmzp/r37698+fLJ19dXQ4YMSe+PAgAAeMwR1HOgzp07a/bs2db3n332mTp16mSzzsiRIzVv3jx98skn+v3339W7d2916NBBGzZssFlvyJAhmjJlin7++WedPHlSbdq00YQJEzR//nwtX75cq1ev1uTJk63r9+/fX4sXL9bcuXO1c+dOlShRQmFhYbp06ZLNfgcMGKAPP/xQcXFxatWqlRo1amRTsyTNnj1bERERcnBw0FdffSUPDw+98cYbqc63b9++unXrlhYvXmxtu379uoYPH6558+Zp8+bNio+PV7t27azLf/rpJ3Xs2FG9evXSvn37NH36dM2ZM0fDhw9Pdf7PP/+89uzZo86dOys5OVlFixbVN998o3379un999/XwIEDtXDhQkl3ev3btGmjJk2a6MyZMzpz5oxq166dquZTp06pWbNmql69unbt2qVp06Zp1qxZ+uCDD2zWmzt3rtzd3bVlyxaNHj1a0dHRWrNmTar9pUhMTFRCQoLNCwAAPJ4I6jlQhw4dtGnTJh0/flzHjx/X5s2b1aFDB+vyxMREjRgxQp999pnCwsIUHBysiIgIdejQQdOnT7fZ1wcffKA6deqocuXK6tKlizZs2KBp06apcuXKqlevnl566SWtW7dOknTt2jVNmzZNY8aMUdOmTVW2bFl9+umncnNz06xZs2z2Gx0drcaNG6t48eLKly+funbtqq+++kqJiYmSpJ07d2rPnj3WDxgHDhxQ8eLF5ezsnOp8/fz85OXlpQMHDljbbt26pSlTpqhWrVqqWrWq5s6dq59//llbt26VJA0dOlQDBgxQeHi4goOD1bhxYw0bNizV+b/88svq1KmTgoODVaxYMTk5OWno0KGqVq2agoKC9Morr6hTp07WoO7h4SE3Nze5uLjI19dXvr6+adY8depU+fv7a8qUKSpTpoxat26toUOHaty4cUpOTrauV7FiRQ0ePFglS5ZUx44dVa1aNcXExNzz3o8cOVLe3t7Wl7+//z3XBQAAORtBPQfy8fFR8+bNNWfOHM2ePVvN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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "ename": "FileNotFoundError", - "evalue": "[Errno 2] No such file or directory: '/home/aoli/repos/sfuzz/benchmarks/script/../../benchmarks/build/fop-report/schedule_simplified_0.csv'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[5], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m bm \u001b[38;5;129;01min\u001b[39;00m BENCHMARKS:\n\u001b[0;32m----> 2\u001b[0m \u001b[43mvisualize_report\u001b[49m\u001b[43m(\u001b[49m\u001b[43mos\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpath\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mjoin\u001b[49m\u001b[43m(\u001b[49m\u001b[43mBASE\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mbenchmarks/build/\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mbm\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m-report/schedule_simplified_0.csv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbm\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/repos/sfuzz/benchmarks/script/visualize.py:6\u001b[0m, in \u001b[0;36mvisualize_report\u001b[0;34m(path, name)\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mvisualize_report\u001b[39m(path: \u001b[38;5;28mstr\u001b[39m, name: \u001b[38;5;28mstr\u001b[39m):\n\u001b[0;32m----> 6\u001b[0m df \u001b[38;5;241m=\u001b[39m \u001b[43mpandas\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread_csv\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpath\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheader\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 7\u001b[0m df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124moperation\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124moperation\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;241m.\u001b[39mapply(\u001b[38;5;28;01mlambda\u001b[39;00m x: x\u001b[38;5;241m.\u001b[39msplit(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m'\u001b[39m)[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m])\n\u001b[1;32m 8\u001b[0m sns\u001b[38;5;241m.\u001b[39mcountplot(data\u001b[38;5;241m=\u001b[39mdf, y\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124moperation\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/io/parsers/readers.py:948\u001b[0m, in \u001b[0;36mread_csv\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)\u001b[0m\n\u001b[1;32m 935\u001b[0m kwds_defaults \u001b[38;5;241m=\u001b[39m _refine_defaults_read(\n\u001b[1;32m 936\u001b[0m dialect,\n\u001b[1;32m 937\u001b[0m delimiter,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 944\u001b[0m dtype_backend\u001b[38;5;241m=\u001b[39mdtype_backend,\n\u001b[1;32m 945\u001b[0m )\n\u001b[1;32m 946\u001b[0m kwds\u001b[38;5;241m.\u001b[39mupdate(kwds_defaults)\n\u001b[0;32m--> 948\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_read\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/io/parsers/readers.py:611\u001b[0m, in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m 608\u001b[0m _validate_names(kwds\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnames\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m))\n\u001b[1;32m 610\u001b[0m \u001b[38;5;66;03m# Create the parser.\u001b[39;00m\n\u001b[0;32m--> 611\u001b[0m parser \u001b[38;5;241m=\u001b[39m \u001b[43mTextFileReader\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 613\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m chunksize \u001b[38;5;129;01mor\u001b[39;00m iterator:\n\u001b[1;32m 614\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m parser\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/io/parsers/readers.py:1448\u001b[0m, in \u001b[0;36mTextFileReader.__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m 1445\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptions[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m kwds[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 1447\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles: IOHandles \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m-> 1448\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_engine\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mengine\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/io/parsers/readers.py:1705\u001b[0m, in \u001b[0;36mTextFileReader._make_engine\u001b[0;34m(self, f, engine)\u001b[0m\n\u001b[1;32m 1703\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m mode:\n\u001b[1;32m 1704\u001b[0m mode \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m-> 1705\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;241m=\u001b[39m \u001b[43mget_handle\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1706\u001b[0m \u001b[43m \u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1707\u001b[0m \u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1708\u001b[0m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mencoding\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1709\u001b[0m \u001b[43m \u001b[49m\u001b[43mcompression\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcompression\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1710\u001b[0m \u001b[43m \u001b[49m\u001b[43mmemory_map\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmemory_map\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1711\u001b[0m \u001b[43m \u001b[49m\u001b[43mis_text\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_text\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1712\u001b[0m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mencoding_errors\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstrict\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1713\u001b[0m \u001b[43m \u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstorage_options\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1714\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1715\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 1716\u001b[0m f \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles\u001b[38;5;241m.\u001b[39mhandle\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/io/common.py:863\u001b[0m, in \u001b[0;36mget_handle\u001b[0;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[1;32m 858\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(handle, \u001b[38;5;28mstr\u001b[39m):\n\u001b[1;32m 859\u001b[0m \u001b[38;5;66;03m# Check whether the filename is to be opened in binary mode.\u001b[39;00m\n\u001b[1;32m 860\u001b[0m \u001b[38;5;66;03m# Binary mode does not support 'encoding' and 'newline'.\u001b[39;00m\n\u001b[1;32m 861\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mencoding \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mmode:\n\u001b[1;32m 862\u001b[0m \u001b[38;5;66;03m# Encoding\u001b[39;00m\n\u001b[0;32m--> 863\u001b[0m handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[1;32m 864\u001b[0m \u001b[43m \u001b[49m\u001b[43mhandle\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 865\u001b[0m \u001b[43m \u001b[49m\u001b[43mioargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 866\u001b[0m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mioargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 867\u001b[0m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43merrors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 868\u001b[0m \u001b[43m \u001b[49m\u001b[43mnewline\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 869\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 870\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 871\u001b[0m \u001b[38;5;66;03m# Binary mode\u001b[39;00m\n\u001b[1;32m 872\u001b[0m handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mopen\u001b[39m(handle, ioargs\u001b[38;5;241m.\u001b[39mmode)\n", - "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/home/aoli/repos/sfuzz/benchmarks/script/../../benchmarks/build/fop-report/schedule_simplified_0.csv'" - ] - } - ], - "source": [ - "for bm in BENCHMARKS:\n", - " visualize_report(os.path.join(BASE, f\"benchmarks/build/{bm}-report/schedule_simplified_0.csv\"), bm)" - ] - }, - { - "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.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/benchmarks/script/visualize.py b/benchmarks/script/visualize.py deleted file mode 100644 index 65c945b..0000000 --- a/benchmarks/script/visualize.py +++ /dev/null @@ -1,12 +0,0 @@ -import pandas -import seaborn as sns -import matplotlib.pyplot as plt - -def visualize_report(path: str, name: str): - df = pandas.read_csv(path, header=0) - df['operation'] = df['operation'].apply(lambda x: x.split('.')[-1]) - sns.countplot(data=df, y='operation') - plt.title(f'Distribution of Operations: {name}') - plt.xlabel('Count') - plt.ylabel('Operation') - plt.show() \ No newline at end of file diff --git a/scripts/analyze_timeline.py b/scripts/analyze_timeline.py deleted file mode 100644 index 1cc33b2..0000000 --- a/scripts/analyze_timeline.py +++ /dev/null @@ -1,14 +0,0 @@ -import json - -data = json.load(open("/home/aoli/repos/sfuzz/benchmarks/build/report/timeline.json")) - -hist_data = {} - -for timeline in data: - for item in timeline: - t = item["type"] - if t not in hist_data: - hist_data[t] = 0 - hist_data[t] += 1 - -print(hist_data) \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 7c9d1ca..adb67a9 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -8,6 +8,5 @@ include("examples") include("jvmti") include("core") include("instrumentation") -include("benchmarks") include("integration-tests") include("junit-analyzer")